{"version":3,"file":"install.mjs","sources":["../../../../../../packages/utils/vue/install.ts"],"sourcesContent":["import { createApp } from 'vue'\nimport { NOOP } from '../functions'\n\nimport type { App, Component, ComponentPublicInstance, Directive } from 'vue'\nimport type { SFCInstallWithContext, SFCWithInstall } from './typescript'\n\nexport const withInstall = <T, E extends Record<string, any>>(\n  main: T,\n  extra?: E\n) => {\n  ;(main as SFCWithInstall<T>).install = (app: any): void => {\n    for (const comp of [main, ...Object.values(extra ?? {})]) {\n      app.component(comp.name, comp)\n    }\n  }\n\n  if (extra) {\n    for (const [key, comp] of Object.entries(extra)) {\n      ;(main as any)[key] = comp\n    }\n  }\n  return main as SFCWithInstall<T> & E\n}\n\nexport const withInstallFunction = <T>(fn: T, name: string) => {\n  ;(fn as SFCWithInstall<T>).install = (app: App) => {\n    ;(fn as SFCInstallWithContext<T>)._context = app._context\n    app.config.globalProperties[name] = fn\n  }\n\n  return fn as SFCInstallWithContext<T>\n}\n\nexport const withInstallDirective = <T extends Directive>(\n  directive: T,\n  name: string\n) => {\n  ;(directive as SFCWithInstall<T>).install = (app: App): void => {\n    app.directive(name, directive)\n  }\n\n  return directive as SFCWithInstall<T>\n}\n\nexport const withNoopInstall = <T>(component: T) => {\n  ;(component as SFCWithInstall<T>).install = NOOP\n\n  return component as SFCWithInstall<T>\n}\n\nexport type MountConponentResult<T, B> = {\n  instance: ComponentPublicInstance<T, B>\n  unmount: () => void\n} | null\n\nexport function mountComponent(RootComponent: Component, rootProps?: any) {\n  const app = createApp(RootComponent, rootProps)\n  const root = document.createElement('div')\n\n  document.body.appendChild(root)\n\n  return {\n    instance: app.mount(root),\n    unmount() {\n      app.unmount()\n      document.body.removeChild(root)\n    },\n  }\n}\n"],"names":[],"mappings":";;;;AAMa,MAAA,WAAA,GAAc,CACzB,IAAA,EACA,KACG,KAAA;AACH,EAAA,CAAA;AAAC,EAAC,IAAA,CAA2B,OAAU,GAAA,CAAC,GAAmB,KAAA;AACzD,IAAW,KAAA,MAAA,IAAA,IAAQ,CAAC,IAAA,EAAM,GAAG,MAAA,CAAO,OAAO,KAAS,IAAA,IAAA,GAAA,KAAA,GAAA,EAAE,CAAC,CAAG,EAAA;AACxD,MAAI,GAAA,CAAA,SAAA,CAAU,IAAK,CAAA,IAAA,EAAM,IAAI,CAAA,CAAA;AAAA,KAC/B;AAAA,GACF,CAAA;AAEA,EAAA,IAAI,KAAO,EAAA;AACT,IAAA,KAAA,MAAW,CAAC,GAAK,EAAA,IAAI,KAAK,MAAO,CAAA,OAAA,CAAQ,KAAK,CAAG,EAAA;AAC/C,MAAA,CAAA;AAAC,MAAC,KAAa,GAAO,CAAA,GAAA,IAAA,CAAA;AAAA,KACxB;AAAA,GACF;AACA,EAAO,OAAA,IAAA,CAAA;AACT,EAAA;AAEa,MAAA,mBAAA,GAAsB,CAAI,EAAA,EAAO,IAAiB,KAAA;AAC7D,EAAA,CAAA;AAAC,EAAC,EAAA,CAAyB,OAAU,GAAA,CAAC,GAAa,KAAA;AACjD,IAAA,CAAA;AAAC,IAAC,EAAA,CAAgC,WAAW,GAAI,CAAA,QAAA,CAAA;AACjD,IAAI,GAAA,CAAA,MAAA,CAAO,iBAAiB,IAAQ,CAAA,GAAA,EAAA,CAAA;AAAA,GACtC,CAAA;AAEA,EAAO,OAAA,EAAA,CAAA;AACT,EAAA;AAEa,MAAA,oBAAA,GAAuB,CAClC,SAAA,EACA,IACG,KAAA;AACH,EAAA,CAAA;AAAC,EAAC,SAAA,CAAgC,OAAU,GAAA,CAAC,GAAmB,KAAA;AAC9D,IAAI,GAAA,CAAA,SAAA,CAAU,MAAM,SAAS,CAAA,CAAA;AAAA,GAC/B,CAAA;AAEA,EAAO,OAAA,SAAA,CAAA;AACT,EAAA;AAEa,MAAA,eAAA,GAAkB,CAAI,SAAiB,KAAA;AAClD,EAAA,CAAA;AAAC,EAAC,UAAgC,OAAU,GAAA,IAAA,CAAA;AAE5C,EAAO,OAAA,SAAA,CAAA;AACT,EAAA;AAOgB,SAAA,cAAA,CAAe,eAA0B,SAAiB,EAAA;AACxE,EAAM,MAAA,GAAA,GAAM,SAAU,CAAA,aAAA,EAAe,SAAS,CAAA,CAAA;AAC9C,EAAM,MAAA,IAAA,GAAO,QAAS,CAAA,aAAA,CAAc,KAAK,CAAA,CAAA;AAEzC,EAAS,QAAA,CAAA,IAAA,CAAK,YAAY,IAAI,CAAA,CAAA;AAE9B,EAAO,OAAA;AAAA,IACL,QAAA,EAAU,GAAI,CAAA,KAAA,CAAM,IAAI,CAAA;AAAA,IACxB,OAAU,GAAA;AACR,MAAA,GAAA,CAAI,OAAQ,EAAA,CAAA;AACZ,MAAS,QAAA,CAAA,IAAA,CAAK,YAAY,IAAI,CAAA,CAAA;AAAA,KAChC;AAAA,GACF,CAAA;AACF;;;;"}