{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/ui/skeleton/index.ts"],"sourcesContent":["/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-27 15:54:13\n * @LastEditTime: 2022-03-05 11:05:59\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\ui\\skeleton\\index.ts\n */\nimport { h, defineComponent, computed, VNode, ComponentPublicInstance } from 'vue'\n\nimport type { PropType } from 'vue'\n\nimport useDark, { useDarkProps } from '@vue-cesium/composables/private/use-dark'\n\nimport { hSlot } from '@vue-cesium/utils/private/render'\n\nexport const skeletonTypes = [\n  'text',\n  'rect',\n  'circle',\n  'VcBtn',\n  'VcBadge',\n  'VcChip',\n  'VcToolbar',\n  'VcCheckbox',\n  'VcRadio',\n  'VcToggle',\n  'VcSlider',\n  'VcRange',\n  'VcInput',\n  'VcAvatar'\n]\n\nexport const skeletonAnimations = ['wave', 'pulse', 'pulse-x', 'pulse-y', 'fade', 'blink', 'none']\nexport const skeletonProps = {\n  ...useDarkProps,\n\n  tag: {\n    type: String,\n    default: 'div'\n  },\n\n  type: {\n    type: String,\n    validator: (v: string) => skeletonTypes.includes(v),\n    default: 'rect'\n  },\n\n  animation: {\n    type: String as PropType<'wave' | 'pulse' | 'pulse-x' | 'pulse-y' | 'fade' | 'blink' | 'none'>,\n    validator: (v: string) => skeletonAnimations.includes(v),\n    default: 'wave'\n  },\n\n  square: Boolean,\n  bordered: Boolean,\n\n  size: String as PropType<string>,\n  width: String,\n  height: String\n}\nexport default defineComponent({\n  name: 'VcSkeleton',\n\n  props: skeletonProps,\n\n  setup(props, { slots }) {\n    const isDark = useDark(props)\n\n    const style = computed(() => (props.size !== void 0 ? { width: props.size, height: props.size } : { width: props.width, height: props.height }))\n\n    const classes = computed(\n      () =>\n        `vc-skeleton vc-skeleton--${isDark.value === true ? 'dark' : 'light'} vc-skeleton--type-${props.type}` +\n        (props.animation !== 'none' ? ` vc-skeleton--anim vc-skeleton--anim-${props.animation}` : '') +\n        (props.square === true ? ' vc-skeleton--square' : '') +\n        (props.bordered === true ? ' vc-skeleton--bordered' : '')\n    )\n\n    return () =>\n      h(\n        props.tag,\n        {\n          class: classes.value,\n          style: style.value\n        },\n        hSlot(slots.default)\n      )\n  }\n})\n\n// export type VcSkeletonProps = ExtractPropTypes<typeof skeletonProps>\nexport interface VcSkeletonProps {\n  /**\n   * Notify the component that the background is a dark color.\n   */\n  dark?: boolean | undefined\n  /**\n   * Type of skeleton placeholder.\n   * Default value: rect\n   */\n  type?:\n    | 'text'\n    | 'rect'\n    | 'circle'\n    | 'VcBtn'\n    | 'VcBadge'\n    | 'VcChip'\n    | 'VcToolbar'\n    | 'VcCheckbox'\n    | 'VcRadio'\n    | 'VcToggle'\n    | 'VcSlider'\n    | 'VcRange'\n    | 'VcInput'\n    | 'VcAvatar'\n    | undefined\n  /**\n   * The animation effect of the skeleton placeholder.\n   * Default value: wave\n   */\n  animation?: 'wave' | 'pulse' | 'pulse-x' | 'pulse-y' | 'fade' | 'blink' | 'none' | undefined\n  /**\n   * Animation speed (in milliseconds, without unit).\n   * Default value: 300\n   */\n  animationSpeed?: string | number | undefined\n  /**\n   * Removes border-radius so borders are squared.\n   */\n  square?: boolean | undefined\n  /**\n   * Applies a default border to the component.\n   */\n  bordered?: boolean | undefined\n  /**\n   * Size in CSS units, including unit name; Overrides 'height' and 'width' props and applies the value to both height and width.\n   */\n  size?: string | undefined\n  /**\n   * Width in CSS units, including unit name; Apply custom width; Use this prop or through CSS; Overridden by 'size' prop if used.\n   */\n  width?: string | undefined\n  /**\n   * Height in CSS units, including unit name; Apply custom height; Use this prop or through CSS; Overridden by 'size' prop if used.\n   */\n  height?: string | undefined\n  /**\n   * HTML tag to use.\n   * Default value: div\n   */\n  tag?: string | undefined\n  color?: string\n}\n\nexport interface VcSkeletonSlots {\n  /**\n   * Default slot in the devland unslotted content of the component\n   */\n  default: () => VNode[]\n}\n\nexport type VcSkeletonRef = ComponentPublicInstance<VcSkeletonProps>\n"],"names":[],"mappings":";;;;;AAgBO,MAAM,aAAgB,GAAA;AAAA,EAC3B,MAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,SAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,UAAA;AACF,EAAA;AAEa,MAAA,kBAAA,GAAqB,CAAC,MAAQ,EAAA,OAAA,EAAS,WAAW,SAAW,EAAA,MAAA,EAAQ,SAAS,MAAM,EAAA;AAC1F,MAAM,aAAgB,GAAA;AAAA,EAC3B,GAAG,YAAA;AAAA,EAEH,GAAK,EAAA;AAAA,IACH,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,KAAA;AAAA,GACX;AAAA,EAEA,IAAM,EAAA;AAAA,IACJ,IAAM,EAAA,MAAA;AAAA,IACN,SAAW,EAAA,CAAC,CAAc,KAAA,aAAA,CAAc,SAAS,CAAC,CAAA;AAAA,IAClD,OAAS,EAAA,MAAA;AAAA,GACX;AAAA,EAEA,SAAW,EAAA;AAAA,IACT,IAAM,EAAA,MAAA;AAAA,IACN,SAAW,EAAA,CAAC,CAAc,KAAA,kBAAA,CAAmB,SAAS,CAAC,CAAA;AAAA,IACvD,OAAS,EAAA,MAAA;AAAA,GACX;AAAA,EAEA,MAAQ,EAAA,OAAA;AAAA,EACR,QAAU,EAAA,OAAA;AAAA,EAEV,IAAM,EAAA,MAAA;AAAA,EACN,KAAO,EAAA,MAAA;AAAA,EACP,MAAQ,EAAA,MAAA;AACV,EAAA;AACA,eAAe,eAAgB,CAAA;AAAA,EAC7B,IAAM,EAAA,YAAA;AAAA,EAEN,KAAO,EAAA,aAAA;AAAA,EAEP,KAAM,CAAA,KAAA,EAAO,EAAE,KAAA,EAAS,EAAA;AACtB,IAAM,MAAA,MAAA,GAAS,QAAQ,KAAK,CAAA,CAAA;AAE5B,IAAM,MAAA,KAAA,GAAQ,SAAS,MAAO,KAAA,CAAM,SAAS,KAAS,CAAA,GAAA,EAAE,OAAO,KAAM,CAAA,IAAA,EAAM,QAAQ,KAAM,CAAA,IAAA,KAAS,EAAE,KAAA,EAAO,MAAM,KAAO,EAAA,MAAA,EAAQ,KAAM,CAAA,MAAA,EAAS,CAAA,CAAA;AAE/I,IAAA,MAAM,OAAU,GAAA,QAAA;AAAA,MACd,MACE,CAA4B,yBAAA,EAAA,MAAA,CAAO,KAAU,KAAA,IAAA,GAAO,MAAS,GAAA,OAAO,CAAsB,mBAAA,EAAA,KAAA,CAAM,IAAI,CAAA,CAAA,IACnG,KAAM,CAAA,SAAA,KAAc,MAAS,GAAA,CAAA,qCAAA,EAAwC,KAAM,CAAA,SAAS,CAAK,CAAA,GAAA,EAAA,CAAA,IACzF,KAAM,CAAA,MAAA,KAAW,IAAO,GAAA,sBAAA,GAAyB,EACjD,CAAA,IAAA,KAAA,CAAM,QAAa,KAAA,IAAA,GAAO,wBAA2B,GAAA,EAAA,CAAA;AAAA,KAC1D,CAAA;AAEA,IAAA,OAAO,MACL,CAAA;AAAA,MACE,KAAM,CAAA,GAAA;AAAA,MACN;AAAA,QACE,OAAO,OAAQ,CAAA,KAAA;AAAA,QACf,OAAO,KAAM,CAAA,KAAA;AAAA,OACf;AAAA,MACA,KAAA,CAAM,MAAM,OAAO,CAAA;AAAA,KACrB,CAAA;AAAA,GACJ;AACF,CAAC,CAAA;;;;"}