{"version":3,"file":"framework.mjs","names":["createIcons","IconSymbol","createDefaults","DefaultsSymbol","createUntitled","options","arguments","length","undefined","components","defaults","icons","install","app","key","component","provide","__VUE_OPTIONS_API__","mixin","computed","$untitled","reactive","inject","call","_vm$parent$provides","_vm$parent","_vm$vnode$appContext","vm","$","provides","parent","vnode","appContext"],"sources":["../src/framework.ts"],"sourcesContent":["import type { App, ComponentPublicInstance, InjectionKey, reactive } from 'vue'\n\n// Plugins\n// import { Notification } from '@/components/UNotification/notification'\n\n// Composables\nimport { createIcons, IconSymbol } from '@/composables/icons'\nimport { createDefaults, DefaultsSymbol } from '@/composables/defaults'\n\n// Types\nimport type { DefaultsOptions } from '@/composables/defaults'\nimport type { IconOptions } from '@/composables/icons'\n\nexport interface UntitledOptions {\n  components?: Record<string, any>\n  defaults?: DefaultsOptions\n  icons?: IconOptions\n}\n\nexport function createUntitled(options: UntitledOptions = {}) {\n  const { components } = options\n\n  const defaults = createDefaults(options.defaults)\n  const icons = createIcons(options.icons)\n\n  return {\n    install(app: App) {\n      // Auto import all components\n      for (const key in components) {\n        app.component(key, (components as any)[key])\n      }\n\n      app.provide(DefaultsSymbol, defaults)\n      app.provide(IconSymbol, icons)\n\n      // app.use(Notification)\n\n      if (typeof __VUE_OPTIONS_API__ !== 'boolean' || __VUE_OPTIONS_API__) {\n        app.mixin({\n          computed: {\n            $untitled() {\n              // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n              // @ts-ignore\n              return reactive({\n                defaults: inject.call(this, DefaultsSymbol),\n                icons: inject.call(this, IconSymbol),\n              })\n            },\n          },\n        })\n      }\n    },\n    defaults,\n    icons,\n  }\n}\n\n// Vue's inject() can only be used in setup\nfunction inject(\n  this: ComponentPublicInstance,\n  key: InjectionKey<any> | string\n) {\n  const vm = this.$\n\n  // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n  // @ts-ignore\n  const provides = vm.parent?.provides ?? vm.vnode.appContext?.provides\n\n  if (provides && (key as any) in provides) {\n    return provides[key as string]\n  }\n}\n"],"mappings":"AAEA;AACA;AAEA;AAAA,SACSA,WAAW,EAAEC,UAAU;AAAA,SACvBC,cAAc,EAAEC,cAAc,sCAEvC;AAUA,OAAO,SAASC,cAAcA,CAAA,EAAgC;EAAA,IAA/BC,OAAwB,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAC1D,IAAQG,UAAU,GAAKJ,OAAO,CAAtBI,UAAU;EAElB,IAAMC,QAAQ,GAAGR,cAAc,CAACG,OAAO,CAACK,QAAQ,CAAC;EACjD,IAAMC,KAAK,GAAGX,WAAW,CAACK,OAAO,CAACM,KAAK,CAAC;EAExC,OAAO;IACLC,OAAO,WAAAA,QAACC,GAAQ,EAAE;MAChB;MACA,KAAK,IAAMC,GAAG,IAAIL,UAAU,EAAE;QAC5BI,GAAG,CAACE,SAAS,CAACD,GAAG,EAAGL,UAAU,CAASK,GAAG,CAAC,CAAC;MAC9C;MAEAD,GAAG,CAACG,OAAO,CAACb,cAAc,EAAEO,QAAQ,CAAC;MACrCG,GAAG,CAACG,OAAO,CAACf,UAAU,EAAEU,KAAK,CAAC;;MAE9B;;MAEA,IAAI,OAAOM,mBAAmB,KAAK,SAAS,IAAIA,mBAAmB,EAAE;QACnEJ,GAAG,CAACK,KAAK,CAAC;UACRC,QAAQ,EAAE;YACRC,SAAS,WAAAA,UAAA,EAAG;cACV;cACA;cACA,OAAOC,QAAQ,CAAC;gBACdX,QAAQ,EAAEY,MAAM,CAACC,IAAI,CAAC,IAAI,EAAEpB,cAAc,CAAC;gBAC3CQ,KAAK,EAAEW,MAAM,CAACC,IAAI,CAAC,IAAI,EAAEtB,UAAU;cACrC,CAAC,CAAC;YACJ;UACF;QACF,CAAC,CAAC;MACJ;IACF,CAAC;IACDS,QAAQ,EAARA,QAAQ;IACRC,KAAK,EAALA;EACF,CAAC;AACH;;AAEA;AACA,SAASW,MAAMA,CAEbR,GAA+B,EAC/B;EAAA,IAAAU,mBAAA,EAAAC,UAAA,EAAAC,oBAAA;EACA,IAAMC,EAAE,GAAG,IAAI,CAACC,CAAC;;EAEjB;EACA;EACA,IAAMC,QAAQ,IAAAL,mBAAA,IAAAC,UAAA,GAAGE,EAAE,CAACG,MAAM,qBAATL,UAAA,CAAWI,QAAQ,YAAAL,mBAAA,IAAAE,oBAAA,GAAIC,EAAE,CAACI,KAAK,CAACC,UAAU,qBAAnBN,oBAAA,CAAqBG,QAAQ;EAErE,IAAIA,QAAQ,IAAKf,GAAG,IAAYe,QAAQ,EAAE;IACxC,OAAOA,QAAQ,CAACf,GAAG,CAAW;EAChC;AACF"}