vexip-ui
Version:
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
1 lines • 4.28 kB
Source Map (JSON)
{"version":3,"file":"create.mjs","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":";;;;AA0BO,SAASA,EAAaC,IAAoB,CAAC,GAAGC,GAA8B;AACjF,SAAO,SAAiBC,GAAUC,IAA0B,CAAA,GAAI;AACxD,UAAA;AAAA,MACJ,QAAAC,IAAS;AAAA,MACT,WAAAC,IAAY;AAAA,MACZ,OAAAC,IAAQ,CAAC;AAAA,MACT,QAAAC,IAASN;AAAA,MACT,QAAAO;AAAA,MACA,OAAAC,IAAQ,CAAC;AAAA,MACT,YAAAC,IAAa;AAAA,IAAA,IACXP,GAEEQ,IAAoBC,EAAS,OAC1B,EAAE,GAAGX,GAAe,GAAGY,EAAMN,CAAM,EAAE,EAC7C;AAED,IAAAO,EAAgBT,GAAWH,CAAG,GAC9Ba,EAAYT,GAAOJ,CAAG,GACtBc,EAAaL,GAAmBT,CAAG,GACnCe,EAAYR,GAAOP,CAAG,GACtBgB,EAAiBR,GAAYR,CAAG,GAE5B,OAAOW,EAAML,CAAM,KAAM,YAC3BW,EAAaX,GAASN,CAAG;AAGrB,UAAAkB,IAAmBC,EAAcjB,KAAU,EAAE;AAEnD,IAAAJ,EAAW,QAAQ,CAAasB,MAAA;AAC9B,MAAI,OAAOA,KAAc,cAAc,OAAOA,EAAU,WAAY,aAClEpB,EAAI,IAAIoB,CAAS,IAEjBpB,EAAI,UAAU,GAAGkB,CAAgB,GAAGE,EAAU,IAAI,IAAIA,CAAS;AAAA,IACjE,CACD;AAAA,EACH;AACF;AAQA,SAASC,EAAiBjB,GAA+BJ,GAAW;AAClE,GAACsB,EAAQlB,CAAK,KAAKS,EAAYT,GAAOJ,CAAG;AAC3C;AAQO,SAASuB,EACdC,IAAuD,CAAC,GACxDxB,GACA;AACM,QAAA,EAAE,OAAAI,IAAQ,CAAA,GAAI,QAAAC,IAAS,CAAC,GAAG,QAAAC,GAAQ,OAAAC,IAAQ,CAAC,EAAA,IAAMiB;AAExD,EAAAH,EAAiBjB,GAAOJ,CAAG,GAC3B,CAACsB,EAAQjB,CAAM,KAAKS,EAAaT,GAAQL,CAAG,GAC5C,CAACsB,EAAQf,CAAK,KAAKQ,EAAYR,GAAOP,CAAG,GAErC,OAAOW,EAAML,CAAM,KAAM,YAC3BW,EAAaX,GAASN,CAAG;AAE7B;"}