{"version":3,"file":"install.mjs","sources":["../../../../utils/install.ts"],"sourcesContent":["import type { App, AppContext, Plugin } from 'vue'\nimport { NOOP } from '@vue/shared'\n\nexport type SFCWithInstall<T> = T & Plugin\n\nexport type SFCInstallWithContext<T> = SFCWithInstall<T> & {\n  _context: AppContext | null\n}\n\nexport const withInstall = <T, E extends Record<string, any>>(\n  main: T,\n  extra?: E,\n) => {\n  (main as SFCWithInstall<T>).install = (app): void => {\n    for (const comp of [main, ...Object.values(extra ?? {})])\n      app.component(comp.__name, comp)\n  }\n\n  if (extra) {\n    for (const [key, comp] of Object.entries(extra))\n      (main as any)[key] = comp\n  }\n  return main as SFCWithInstall<T> & E\n}\n\nexport const makeInstaller = (components: Plugin[] = []) => {\n  const install = (app: App) => {\n    components.forEach(c => app.use(c))\n  }\n  return {\n    install,\n    version: '__VERSION__',\n  }\n}\n\nexport const withNoopInstall = <T>(component: T) => {\n  (component as SFCWithInstall<T>).install = NOOP\n\n  return component as SFCWithInstall<T>\n}\n"],"names":[],"mappings":";;AASa,MAAA,WAAA,GAAc,CACzB,IAAA,EACA,KACG,KAAA;AACH,EAAC,IAAA,CAA2B,OAAU,GAAA,CAAC,GAAc,KAAA;AACnD,IAAW,KAAA,MAAA,IAAA,IAAQ,CAAC,IAAM,EAAA,GAAG,OAAO,MAAO,CAAA,KAAA,IAAA,IAAA,GAAA,KAAA,GAAS,EAAE,CAAC,CAAA;AACrD,MAAI,GAAA,CAAA,SAAA,CAAU,IAAK,CAAA,MAAA,EAAQ,IAAI,CAAA,CAAA;AAAA,GACnC,CAAA;AAEA,EAAA,IAAI,KAAO,EAAA;AACT,IAAA,KAAA,MAAW,CAAC,GAAK,EAAA,IAAI,CAAK,IAAA,MAAA,CAAO,QAAQ,KAAK,CAAA;AAC5C,MAAC,IAAA,CAAa,GAAG,CAAI,GAAA,IAAA,CAAA;AAAA,GACzB;AACA,EAAO,OAAA,IAAA,CAAA;AACT,EAAA;AAEO,MAAM,aAAgB,GAAA,CAAC,UAAuB,GAAA,EAAO,KAAA;AAC1D,EAAM,MAAA,OAAA,GAAU,CAAC,GAAa,KAAA;AAC5B,IAAA,UAAA,CAAW,OAAQ,CAAA,CAAA,CAAA,KAAK,GAAI,CAAA,GAAA,CAAI,CAAC,CAAC,CAAA,CAAA;AAAA,GACpC,CAAA;AACA,EAAO,OAAA;AAAA,IACL,OAAA;AAAA,IACA,OAAS,EAAA,aAAA;AAAA,GACX,CAAA;AACF,EAAA;AAEa,MAAA,eAAA,GAAkB,CAAI,SAAiB,KAAA;AAClD,EAAC,UAAgC,OAAU,GAAA,IAAA,CAAA;AAE3C,EAAO,OAAA,SAAA,CAAA;AACT;;;;"}