{"version":3,"file":"create.cjs","sources":["../../components/create.ts"],"sourcesContent":["import { computed, unref } from 'vue'\n\nimport {\n  configHoverDelay,\n  configIcons,\n  configLocale,\n  configNamespace,\n  configProps,\n  configZIndex,\n} from '@vexip-ui/config'\nimport { isEmpty, toCapitalCase } from '@vexip-ui/utils'\n\nimport type { App, MaybeRef } from 'vue'\nimport type { IconsOptions, LocaleConfig, LocaleOptions } from '@vexip-ui/config'\nimport type { PropsOptions } from './props'\n\nexport interface InstallOptions {\n  prefix?: string,\n  namespace?: MaybeRef<string>,\n  props?: MaybeRef<PropsOptions>,\n  locale?: MaybeRef<LocaleOptions>,\n  zIndex?: MaybeRef<number>,\n  icons?: MaybeRef<IconsOptions>,\n  hoverDelay?: MaybeRef<number>\n}\n\nexport function buildInstall(components: any[] = [], defaultLocale?: LocaleConfig) {\n  return function install(app: App, options: InstallOptions = {}) {\n    const {\n      prefix = '',\n      namespace = '',\n      props = {},\n      locale = defaultLocale,\n      zIndex,\n      icons = {},\n      hoverDelay = 100,\n    } = options\n\n    const withDefaultLocale = computed(() => {\n      return { ...defaultLocale, ...unref(locale) }\n    })\n\n    configNamespace(namespace, app)\n    configProps(props, app)\n    configLocale(withDefaultLocale, app)\n    configIcons(icons, app)\n    configHoverDelay(hoverDelay, app)\n\n    if (typeof unref(zIndex) === 'number') {\n      configZIndex(zIndex!, app)\n    }\n\n    const normalizedPrefix = toCapitalCase(prefix || '')\n\n    components.forEach(component => {\n      if (typeof component === 'function' || typeof component.install === 'function') {\n        app.use(component)\n      } else {\n        app.component(`${normalizedPrefix}${component.name}`, component)\n      }\n    })\n  }\n}\n\n/**\n * Provide a props config for under components.\n *\n * @param props props config\n * @param app the app of Vue, will use app.provide if specify\n */\nfunction proxyConfigProps(props: MaybeRef<PropsOptions>, app?: App) {\n  !isEmpty(props) && configProps(props, app)\n}\n\n/**\n * Provide supported config for under components.\n *\n * @param config supported config\n * @param app the app of Vue, will use app.provide if specify\n */\nexport function provideConfig(\n  config: Omit<InstallOptions, 'prefix' | 'namespace'> = {},\n  app?: App,\n) {\n  const { props = {}, locale = {}, zIndex, icons = {} } = config\n\n  proxyConfigProps(props, app)\n  !isEmpty(locale) && configLocale(locale, app)\n  !isEmpty(icons) && configIcons(icons, app)\n\n  if (typeof unref(zIndex) === 'number') {\n    configZIndex(zIndex!, app)\n  }\n}\n\nexport { proxyConfigProps as configProps, configLocale, configZIndex, configIcons }\n"],"names":["buildInstall","components","defaultLocale","app","options","prefix","namespace","props","locale","zIndex","icons","hoverDelay","withDefaultLocale","computed","unref","configNamespace","configProps","configLocale","configIcons","configHoverDelay","configZIndex","normalizedPrefix","toCapitalCase","component","proxyConfigProps","isEmpty","provideConfig","config"],"mappings":"kKA0BO,SAASA,EAAaC,EAAoB,CAAC,EAAGC,EAA8B,CACjF,OAAO,SAAiBC,EAAUC,EAA0B,CAAA,EAAI,CACxD,KAAA,CACJ,OAAAC,EAAS,GACT,UAAAC,EAAY,GACZ,MAAAC,EAAQ,CAAC,EACT,OAAAC,EAASN,EACT,OAAAO,EACA,MAAAC,EAAQ,CAAC,EACT,WAAAC,EAAa,GAAA,EACXP,EAEEQ,EAAoBC,EAAAA,SAAS,KAC1B,CAAE,GAAGX,EAAe,GAAGY,EAAA,MAAMN,CAAM,CAAE,EAC7C,EAEDO,EAAA,gBAAgBT,EAAWH,CAAG,EAC9Ba,EAAA,YAAYT,EAAOJ,CAAG,EACtBc,EAAA,aAAaL,EAAmBT,CAAG,EACnCe,EAAA,YAAYR,EAAOP,CAAG,EACtBgB,EAAA,iBAAiBR,EAAYR,CAAG,EAE5B,OAAOW,EAAA,MAAML,CAAM,GAAM,UAC3BW,EAAA,aAAaX,EAASN,CAAG,EAGrB,MAAAkB,EAAmBC,EAAAA,cAAcjB,GAAU,EAAE,EAEnDJ,EAAW,QAAqBsB,GAAA,CAC1B,OAAOA,GAAc,YAAc,OAAOA,EAAU,SAAY,WAClEpB,EAAI,IAAIoB,CAAS,EAEjBpB,EAAI,UAAU,GAAGkB,CAAgB,GAAGE,EAAU,IAAI,GAAIA,CAAS,CACjE,CACD,CACH,CACF,CAQA,SAASC,EAAiBjB,EAA+BJ,EAAW,CAClE,CAACsB,EAAQ,QAAAlB,CAAK,GAAKS,EAAAA,YAAYT,EAAOJ,CAAG,CAC3C,CAQO,SAASuB,EACdC,EAAuD,CAAC,EACxDxB,EACA,CACM,KAAA,CAAE,MAAAI,EAAQ,CAAA,EAAI,OAAAC,EAAS,CAAC,EAAG,OAAAC,EAAQ,MAAAC,EAAQ,CAAC,CAAA,EAAMiB,EAExDH,EAAiBjB,EAAOJ,CAAG,EAC3B,CAACsB,EAAQ,QAAAjB,CAAM,GAAKS,EAAAA,aAAaT,EAAQL,CAAG,EAC5C,CAACsB,EAAQ,QAAAf,CAAK,GAAKQ,EAAAA,YAAYR,EAAOP,CAAG,EAErC,OAAOW,EAAA,MAAML,CAAM,GAAM,UAC3BW,EAAA,aAAaX,EAASN,CAAG,CAE7B"}