{"version":3,"file":"index.cjs","sources":["../../../../../packages/utils/vue/install/index.ts"],"sourcesContent":["import type { App, AppContext, Directive, Plugin } from 'vue'\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)) (main as any)[key] = comp\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 = () => ({})\n\n  return component as SFCWithInstall<T>\n}\n"],"names":[],"mappings":";;AAOa,MAAA,cAAc,CACzB,MACA,UACG;AACF,OAA2B,UAAU,CAAC,QAAc;AACxC,eAAA,QAAQ,CAAC,MAAM,GAAG,OAAO,OAAO,SAAS,CAAA,CAAE,CAAC;AACjD,UAAA,UAAU,KAAK,MAAM,IAAI;AAAA,EAAA;AAG7B,MAAA;AACF,eAAW,CAAC,KAAK,IAAI,KAAK,OAAO,QAAQ,KAAK;AAAI,WAAa,GAAG,IAAI;AAEjE,SAAA;AACT;AAEa,MAAA,sBAAsB,CAAI,IAAO,SAAiB;AAC5D,KAAyB,UAAU,CAAC,QAAa;AAC/C,OAAgC,WAAW,IAAI;AAC5C,QAAA,OAAO,iBAAiB,IAAI,IAAI;AAAA,EAAA;AAG/B,SAAA;AACT;AAEa,MAAA,uBAAuB,CAClC,WACA,SACG;AACF,YAAgC,UAAU,CAAC,QAAmB;AACzD,QAAA,UAAU,MAAM,SAAS;AAAA,EAAA;AAGxB,SAAA;AACT;AAEa,MAAA,kBAAkB,CAAI,cAAiB;AACjD,YAAgC,UAAU,OAAO,CAAA;AAE3C,SAAA;AACT;;;;;"}