{"version":3,"file":"Spin.mjs","sources":["../../../../../../packages/components/spin/src/Spin.tsx"],"sourcesContent":["import type { VNode } from 'vue';\nimport { filterEmpty, getPropsSlot, initDefaultProps } from '@antdv/utils';\nimport { debounce } from 'lodash-es';\nimport {\n  cloneVNode,\n  defineComponent,\n  isVNode,\n  onBeforeUnmount,\n  shallowRef,\n  watch,\n} from 'vue';\nimport useConfigInject from '../../config-provider/src/hooks/useConfigInject';\nimport useStyle from '../style';\nimport { spinProps } from './props';\n\n// Render indicator\nlet defaultIndicator: () => VNode = null;\n\nfunction shouldDelay(spinning?: boolean, delay?: number): boolean {\n  return !!spinning && !!delay && !Number.isNaN(Number(delay));\n}\n\nexport function setDefaultIndicator(Content: any) {\n  const Indicator = Content.indicator;\n  defaultIndicator = typeof Indicator === 'function' ? Indicator : () => <Indicator />;\n}\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ASpin',\n  inheritAttrs: false,\n  props: initDefaultProps(spinProps(), {\n    size: 'default',\n    spinning: true,\n    wrapperClassName: '',\n  }),\n  setDefaultIndicator,\n  setup(props, { attrs, slots }) {\n    const { prefixCls, size, direction } = useConfigInject('spin', props);\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n    const sSpinning = shallowRef(props.spinning && !shouldDelay(props.spinning, props.delay));\n    let updateSpinning: any;\n    watch(\n      [() => props.spinning, () => props.delay],\n      () => {\n        updateSpinning?.cancel();\n        updateSpinning = debounce(() => {\n          sSpinning.value = props.spinning;\n        }, props.delay);\n        updateSpinning?.();\n      },\n      {\n        immediate: true,\n        flush: 'post',\n      },\n    );\n    onBeforeUnmount(() => {\n      updateSpinning?.cancel();\n    });\n    return () => {\n      const { class: cls, ...divProps } = attrs;\n      const { tip = slots.tip?.() } = props;\n      const children = slots.default?.();\n      const spinClassName = {\n        [hashId.value]: true,\n        [prefixCls.value]: true,\n        [`${prefixCls.value}-sm`]: size.value === 'small',\n        [`${prefixCls.value}-lg`]: size.value === 'large',\n        [`${prefixCls.value}-spinning`]: sSpinning.value,\n        [`${prefixCls.value}-show-text`]: !!tip,\n        [`${prefixCls.value}-rtl`]: direction.value === 'rtl',\n        [cls as string]: !!cls,\n      };\n\n      function renderIndicator(prefixCls: string) {\n        const dotClassName = `${prefixCls}-dot`;\n        let indicator = getPropsSlot(slots, props, 'indicator');\n        // should not be render default indicator when indicator value is null\n        if (indicator === null)\n          return null;\n\n        if (Array.isArray(indicator))\n          indicator = indicator.length === 1 ? indicator[0] : indicator;\n\n        if (isVNode(indicator))\n          return cloneVNode(indicator, { class: dotClassName });\n\n        if (defaultIndicator && isVNode(defaultIndicator()))\n          return cloneVNode(defaultIndicator(), { class: dotClassName });\n\n        return (\n          <span class={`${dotClassName} ${prefixCls}-dot-spin`}>\n            <i class={`${prefixCls}-dot-item`} />\n            <i class={`${prefixCls}-dot-item`} />\n            <i class={`${prefixCls}-dot-item`} />\n            <i class={`${prefixCls}-dot-item`} />\n          </span>\n        );\n      }\n      const spinElement = (\n        <div {...divProps} class={spinClassName} aria-live=\"polite\" aria-busy={sSpinning.value}>\n          {renderIndicator(prefixCls.value)}\n          {tip ? <div class={`${prefixCls.value}-text`}>{tip}</div> : null}\n        </div>\n      );\n      if (children && filterEmpty(children).length) {\n        const containerClassName = {\n          [`${prefixCls.value}-container`]: true,\n          [`${prefixCls.value}-blur`]: sSpinning.value,\n        };\n        return wrapSSR(\n          <div class={[`${prefixCls.value}-nested-loading`, props.wrapperClassName, hashId.value]}>\n            {sSpinning.value && <div key=\"loading\">{spinElement}</div>}\n            <div class={containerClassName} key=\"container\">\n              {children}\n            </div>\n          </div>,\n        );\n      }\n      return wrapSSR(spinElement);\n    };\n  },\n});\n"],"names":["defaultIndicator","shouldDelay","spinning","delay","Number","isNaN","setDefaultIndicator","Content","Indicator","indicator","_createVNode","compatConfig","MODE","name","inheritAttrs","props","initDefaultProps","spinProps","size","wrapperClassName","setup","attrs","slots","prefixCls","direction","useConfigInject","wrapSSR","hashId","useStyle","sSpinning","shallowRef","updateSpinning","watch","cancel","debounce","value","immediate","flush","onBeforeUnmount","class","cls","divProps","tip","children","default","spinClassName","renderIndicator","dotClassName","getPropsSlot","Array","isArray","length","isVNode","cloneVNode","spinElement","filterEmpty","containerClassName"],"mappings":"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"}