{"version":3,"file":"spin.vue2.mjs","sources":["../../../components/spin/spin.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { Icon } from '@/components/icon'\r\nimport { Renderer } from '@/components/renderer'\r\n\r\nimport { computed, ref, watch } from 'vue'\r\n\r\nimport { createIconProp, emitEvent, useIcons, useNameHelper, useProps } from '@vexip-ui/config'\r\nimport { toNumber } from '@vexip-ui/utils'\r\nimport { spinProps } from './props'\r\n\r\nimport type { SpinSlots } from './symbol'\r\n\r\ndefineOptions({ name: 'Spin' })\r\n\r\nconst nh = useNameHelper('spin')\r\nconst _props = defineProps(spinProps)\r\nconst props = useProps('spin', _props, {\r\n  active: {\r\n    default: false,\r\n    static: true,\r\n  },\r\n  icon: createIconProp(),\r\n  inner: false,\r\n  delay: false,\r\n  tip: '',\r\n  hideMask: false,\r\n  maskColor: '',\r\n  maskClass: null,\r\n  transitionName: () => nh.ns('fade'),\r\n  iconEffect: null,\r\n  slots: () => ({}),\r\n})\r\n\r\nconst slots = defineSlots<SpinSlots>()\r\n\r\nconst icons = useIcons()\r\n\r\nconst currentActive = ref(props.active)\r\n\r\nconst hasTip = computed(() => !!(props.tip || slots.tip))\r\nconst maskStyle = computed(() => {\r\n  const style = {} as any\r\n\r\n  if (props.maskColor) {\r\n    style[nh.cv('mask-bg-color')] = props.maskColor\r\n  }\r\n\r\n  return style\r\n})\r\nconst delayTime = computed(() => {\r\n  if (props.delay) {\r\n    if (props.delay === true) {\r\n      return { enter: 500, leave: 500 }\r\n    }\r\n\r\n    if (typeof props.delay === 'number') {\r\n      return { enter: props.delay, leave: props.delay }\r\n    }\r\n\r\n    if (Array.isArray(props.delay)) {\r\n      return { enter: toNumber(props.delay[0]), leave: toNumber(props.delay[1]) }\r\n    }\r\n  }\r\n\r\n  return { enter: 0, leave: 0 }\r\n})\r\n\r\nlet timer: ReturnType<typeof setTimeout>\r\n\r\nwatch(\r\n  () => props.active,\r\n  value => {\r\n    clearTimeout(timer)\r\n\r\n    const delay = value ? delayTime.value.enter : delayTime.value.leave\r\n\r\n    if (delay) {\r\n      timer = setTimeout(() => {\r\n        currentActive.value = value\r\n      }, delay)\r\n    } else {\r\n      currentActive.value = value\r\n    }\r\n  },\r\n)\r\n\r\ndefineExpose({\r\n  currentActive,\r\n  hasTip,\r\n  handleShow,\r\n  handleHide,\r\n})\r\n\r\nfunction handleMaskClick(event: MouseEvent) {\r\n  emitEvent(props.onMaskClick, event)\r\n}\r\n\r\nfunction handleShow() {\r\n  emitEvent(props.onShow)\r\n}\r\n\r\nfunction handleHide() {\r\n  emitEvent(props.onHide)\r\n}\r\n</script>\r\n\r\n<template>\r\n  <div\r\n    v-if=\"!props.inner\"\r\n    :class=\"[nh.b(), nh.bs('vars'), props.inherit && nh.bm('inherit')]\"\r\n    :aria-busy=\"currentActive ? 'true' : undefined\"\r\n  >\r\n    <slot>\r\n      <Renderer :renderer=\"props.slots.default\"></Renderer>\r\n    </slot>\r\n    <Transition\r\n      appear\r\n      :name=\"props.transitionName\"\r\n      @after-enter=\"handleShow\"\r\n      @after-leave=\"handleHide\"\r\n    >\r\n      <div v-if=\"currentActive\" :class=\"nh.be('loading')\">\r\n        <div\r\n          v-if=\"!props.hideMask\"\r\n          :class=\"[nh.be('mask'), props.maskClass]\"\r\n          :style=\"maskStyle\"\r\n          @click=\"handleMaskClick\"\r\n        ></div>\r\n        <slot name=\"content\">\r\n          <Renderer :renderer=\"props.slots.content\">\r\n            <div :class=\"nh.be('icon')\">\r\n              <slot name=\"icon\">\r\n                <Renderer :renderer=\"props.slots.icon\">\r\n                  <Icon\r\n                    v-bind=\"icons.loading\"\r\n                    :icon=\"props.icon || icons.loading.icon\"\r\n                    :effect=\"props.iconEffect || icons.loading.effect\"\r\n                    label=\"loading\"\r\n                  ></Icon>\r\n                </Renderer>\r\n              </slot>\r\n            </div>\r\n            <div v-if=\"hasTip\" :class=\"nh.be('tip')\">\r\n              <slot name=\"tip\">\r\n                <Renderer :renderer=\"props.slots.tip\">\r\n                  {{ props.tip }}\r\n                </Renderer>\r\n              </slot>\r\n            </div>\r\n          </Renderer>\r\n        </slot>\r\n      </div>\r\n    </Transition>\r\n  </div>\r\n  <Transition\r\n    v-else\r\n    appear\r\n    :name=\"props.transitionName\"\r\n    @after-enter=\"handleShow\"\r\n    @after-leave=\"handleHide\"\r\n  >\r\n    <div v-if=\"currentActive\" :class=\"[nh.b(), nh.bs('vars'), nh.bm('inner')]\">\r\n      <div\r\n        v-if=\"!props.hideMask\"\r\n        :class=\"[nh.be('mask'), props.maskClass]\"\r\n        :style=\"maskStyle\"\r\n        @click=\"handleMaskClick\"\r\n      ></div>\r\n      <slot name=\"content\">\r\n        <Renderer :renderer=\"props.slots.content\">\r\n          <div :class=\"nh.be('icon')\">\r\n            <slot name=\"icon\">\r\n              <Renderer :renderer=\"props.slots.icon\">\r\n                <Icon\r\n                  v-bind=\"icons.loading\"\r\n                  :icon=\"props.icon || icons.loading.icon\"\r\n                  :effect=\"props.iconEffect || icons.loading.effect\"\r\n                  label=\"loading\"\r\n                ></Icon>\r\n              </Renderer>\r\n            </slot>\r\n          </div>\r\n          <div v-if=\"hasTip\" :class=\"nh.be('tip')\">\r\n            <slot name=\"tip\">\r\n              <Renderer :renderer=\"props.slots.tip\">\r\n                {{ props.tip }}\r\n              </Renderer>\r\n            </slot>\r\n          </div>\r\n        </Renderer>\r\n      </slot>\r\n    </div>\r\n  </Transition>\r\n</template>\r\n"],"names":["nh","useNameHelper","props","useProps","__props","createIconProp","slots","_useSlots","icons","useIcons","currentActive","ref","hasTip","computed","maskStyle","style","delayTime","toNumber","timer","watch","value","delay","__expose","handleShow","handleHide","handleMaskClick","event","emitEvent","_unref","_createBlock","_Transition","_createElementBlock","_normalizeClass","_renderSlot","_ctx","_createVNode","Renderer","_createElementVNode","Icon","_mergeProps","_createTextVNode","_toDisplayString"],"mappings":"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"}