UNPKG

vexip-ui

Version:

A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good

1 lines 6.78 kB
{"version":3,"file":"skeleton.mjs","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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"}