{"version":3,"file":"skeleton.cjs","sources":["../../../components/skeleton/skeleton.tsx"],"sourcesContent":["import { Icon } from '@/components/icon'\n\nimport { computed, defineComponent, inject, renderSlot } from 'vue'\n\nimport { createIconProp, useIcons, useNameHelper, useProps } from '@vexip-ui/config'\nimport { skeletonProps } from './props'\nimport { GROUP_STATE } from './symbol'\n\nexport default defineComponent({\n  name: 'Skeleton',\n  inheritAttrs: false,\n  props: skeletonProps,\n  setup(_props, { attrs, slots }) {\n    const props = useProps('skeleton', _props, {\n      size: null,\n      width: null,\n      height: null,\n      repeat: {\n        default: 1,\n        validator: (value: number) => value > 0,\n      },\n      tag: 'div',\n      activated: null,\n      image: false,\n      imageIcon: createIconProp(),\n      iconScale: 4,\n      round: null,\n      circle: null,\n      block: null,\n      spread: 0,\n      loading: null,\n    })\n\n    const groupState = inject(GROUP_STATE, {} as any)\n\n    const nh = useNameHelper('skeleton')\n    const icons = useIcons()\n\n    const activated = computed(() => {\n      return props.activated ?? groupState.activated ?? false\n    })\n    const round = computed(() => {\n      return props.round ?? groupState.round ?? false\n    })\n    const circle = computed(() => {\n      return props.circle ?? groupState.circle ?? false\n    })\n    const block = computed(() => {\n      return props.block ?? groupState.block ?? false\n    })\n    const loading = computed(() => {\n      return props.loading ?? groupState.loading ?? true\n    })\n    const tag = computed(() => {\n      return props.tag || groupState.itemTag || 'div'\n    })\n    const className = computed(() => {\n      return {\n        [nh.b()]: true,\n        [nh.bs('vars')]: true,\n        [nh.bm('inherit')]: Object.keys(groupState).length || props.inherit,\n        [nh.bm(props.size)]: props.size ?? groupState?.size,\n        [nh.bm('block')]: block.value,\n        [nh.bm('image')]: props.image,\n        [nh.bm('round')]: round.value && !circle.value,\n        [nh.bm('circle')]: circle.value,\n        [nh.bm('activated')]: activated.value,\n      }\n    })\n    const style = computed(() => {\n      const style: Record<string, string> = {}\n\n      if (props.width !== null) {\n        style[nh.cv('width')] = parseSize(props.width)\n      }\n\n      if (props.height !== null) {\n        style[nh.cv('height')] = parseSize(props.height)\n      }\n\n      if (props.spread) {\n        style[nh.cv('spread')] = parseSize(props.spread)\n      }\n\n      return style\n    })\n\n    function parseSize(value: string | number) {\n      if (typeof value === 'number') {\n        return `${value}px`\n      }\n\n      value = value.trim()\n\n      if (/\\d$/.test(value)) {\n        return `${value}px`\n      }\n\n      return value\n    }\n\n    function renderSkeleton() {\n      const Wrapper = tag.value || 'div'\n\n      return (\n        <Wrapper\n          {...attrs}\n          class={[className.value, attrs.class]}\n          style={[style.value, attrs.style]}\n        >\n          {props.image ? (\n            <Icon\n              {...icons.value.image}\n              icon={props.imageIcon || icons.value.image.icon}\n              scale={props.iconScale}\n            ></Icon>\n          ) : null}\n        </Wrapper>\n      )\n    }\n\n    return () => {\n      if (!loading.value) {\n        return renderSlot(slots, 'default')\n      }\n\n      if (props.repeat > 1) {\n        return Array.from({ length: props.repeat }, () => renderSkeleton())\n      }\n\n      return renderSkeleton()\n    }\n  },\n})\n"],"names":["defineComponent","name","inheritAttrs","props","skeletonProps","setup","_props","attrs","slots","useProps","size","width","height","repeat","default","validator","value","tag","activated","image","imageIcon","createIconProp","iconScale","round","circle","block","spread","loading","groupState","inject","GROUP_STATE","nh","useNameHelper","icons","useIcons","computed","itemTag","className","b","bs","bm","Object","keys","length","inherit","style","cv","parseSize","trim","test","renderSkeleton","Wrapper","_createVNode","_mergeProps","class","Icon","icon","Array","from","renderSlot"],"mappings":"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"}