vuestic-ui
Version:
Vue 3 UI Framework
1 lines • 3.72 kB
Source Map (JSON)
{"version":3,"file":"use-component-config-props.mjs","sources":["../../../../../../src/services/component-config/utils/use-component-config-props.ts"],"sourcesContent":["import { VuesticComponentName, Props, VuesticComponent } from '../types'\nimport { useLocalConfig } from '../../../composables/useLocalConfig'\nimport { useGlobalConfig } from '../../global-config/global-config'\nimport { computed } from 'vue'\nimport { injectChildPropsFromParent } from '../../../composables/useChildComponents'\nimport { ComponentPresetProp, PresetPropValue } from '../../../composables'\nimport { notNil } from '../../../utils/isNilValue'\n\nconst withPresetProp = <P extends Props>(props: P): props is P & ComponentPresetProp => 'preset' in props\nconst getPresetProp = <P extends Props>(props: P) => withPresetProp(props) ? props.preset : undefined\n\nexport const useComponentConfigProps = <T extends VuesticComponent>(component: T, originalProps: Props) => {\n const localConfig = useLocalConfig()\n const { globalConfig } = useGlobalConfig()\n\n const componentName = component.name as VuesticComponentName\n\n const getPresetProps = (presetPropValue: PresetPropValue): Props => {\n return (presetPropValue instanceof Array ? presetPropValue : [presetPropValue]).reduce<Props>((acc, presetName) => {\n const presetProps = globalConfig.value.components?.presets?.[componentName]?.[presetName]\n\n if (!presetProps) {\n return acc\n }\n\n const extendedPresets = getPresetProp(presetProps)\n\n return {\n ...acc,\n ...(extendedPresets ? getPresetProps(extendedPresets) : undefined),\n ...presetProps,\n }\n }, {})\n }\n const parentInjectedProps = injectChildPropsFromParent()\n\n return computed(() => {\n const globalConfigProps: Props = {\n ...globalConfig.value.components?.all,\n ...globalConfig.value.components?.[componentName],\n }\n\n const localConfigProps = localConfig.value\n .reduce<Props>((finalConfig, config) => {\n const componentConfigProps = config[componentName]\n\n return componentConfigProps\n ? { ...finalConfig, ...componentConfigProps }\n : finalConfig\n }, {})\n\n const presetProp = [\n originalProps,\n parentInjectedProps?.value,\n localConfigProps,\n globalConfigProps,\n ]\n .filter(notNil)\n .map(getPresetProp)\n .filter(notNil)\n .at(0)\n\n const presetProps = presetProp ? getPresetProps(presetProp) : undefined\n\n return { ...globalConfigProps, ...localConfigProps, ...presetProps }\n })\n}\n"],"names":[],"mappings":";;;;;AAQA,MAAM,iBAAiB,CAAkB,UAA+C,YAAY;AACpG,MAAM,gBAAgB,CAAkB,UAAa,eAAe,KAAK,IAAI,MAAM,SAAS;AAE/E,MAAA,0BAA0B,CAA6B,WAAc,kBAAyB;AACzG,QAAM,cAAc;AACd,QAAA,EAAE,iBAAiB;AAEzB,QAAM,gBAAgB,UAAU;AAE1B,QAAA,iBAAiB,CAAC,oBAA4C;AAC1D,YAAA,2BAA2B,QAAQ,kBAAkB,CAAC,eAAe,GAAG,OAAc,CAAC,KAAK,eAAe;;AACjH,YAAM,eAAc,8BAAa,MAAM,eAAnB,mBAA+B,YAA/B,mBAAyC,mBAAzC,mBAA0D;AAE9E,UAAI,CAAC,aAAa;AACT,eAAA;AAAA,MACT;AAEM,YAAA,kBAAkB,cAAc,WAAW;AAE1C,aAAA;AAAA,QACL,GAAG;AAAA,QACH,GAAI,kBAAkB,eAAe,eAAe,IAAI;AAAA,QACxD,GAAG;AAAA,MAAA;AAAA,IAEP,GAAG,CAAE,CAAA;AAAA,EAAA;AAEP,QAAM,sBAAsB;AAE5B,SAAO,SAAS,MAAM;;AACpB,UAAM,oBAA2B;AAAA,MAC/B,IAAG,kBAAa,MAAM,eAAnB,mBAA+B;AAAA,MAClC,IAAG,kBAAa,MAAM,eAAnB,mBAAgC;AAAA,IAAa;AAGlD,UAAM,mBAAmB,YAAY,MAClC,OAAc,CAAC,aAAa,WAAW;AAChC,YAAA,uBAAuB,OAAO,aAAa;AAEjD,aAAO,uBACH,EAAE,GAAG,aAAa,GAAG,yBACrB;AAAA,IACN,GAAG,CAAE,CAAA;AAEP,UAAM,aAAa;AAAA,MACjB;AAAA,MACA,2DAAqB;AAAA,MACrB;AAAA,MACA;AAAA,IACF,EACG,OAAO,MAAM,EACb,IAAI,aAAa,EACjB,OAAO,MAAM,EACb,GAAG,CAAC;AAEP,UAAM,cAAc,aAAa,eAAe,UAAU,IAAI;AAE9D,WAAO,EAAE,GAAG,mBAAmB,GAAG,kBAAkB,GAAG,YAAY;AAAA,EAAA,CACpE;AACH;"}