{"version":3,"file":"spin.vue2.cjs","sources":["../../../components/spin/spin.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { Icon } from '@/components/icon'\nimport { Renderer } from '@/components/renderer'\n\nimport { computed, ref, watch } from 'vue'\n\nimport { createIconProp, emitEvent, useIcons, useNameHelper, useProps } from '@vexip-ui/config'\nimport { toNumber } from '@vexip-ui/utils'\nimport { spinProps } from './props'\n\nimport type { SpinSlots } from './symbol'\n\ndefineOptions({ name: 'Spin' })\n\nconst nh = useNameHelper('spin')\nconst _props = defineProps(spinProps)\nconst props = useProps('spin', _props, {\n  active: {\n    default: false,\n    static: true,\n  },\n  icon: createIconProp(),\n  inner: false,\n  delay: false,\n  tip: '',\n  hideMask: false,\n  maskColor: '',\n  maskClass: null,\n  transitionName: () => nh.ns('fade'),\n  iconEffect: null,\n  slots: () => ({}),\n})\n\nconst slots = defineSlots<SpinSlots>()\n\nconst icons = useIcons()\n\nconst currentActive = ref(props.active)\n\nconst hasTip = computed(() => !!(props.tip || slots.tip))\nconst maskStyle = computed(() => {\n  const style = {} as any\n\n  if (props.maskColor) {\n    style[nh.cv('mask-bg-color')] = props.maskColor\n  }\n\n  return style\n})\nconst delayTime = computed(() => {\n  if (props.delay) {\n    if (props.delay === true) {\n      return { enter: 500, leave: 500 }\n    }\n\n    if (typeof props.delay === 'number') {\n      return { enter: props.delay, leave: props.delay }\n    }\n\n    if (Array.isArray(props.delay)) {\n      return { enter: toNumber(props.delay[0]), leave: toNumber(props.delay[1]) }\n    }\n  }\n\n  return { enter: 0, leave: 0 }\n})\n\nlet timer: ReturnType<typeof setTimeout>\n\nwatch(\n  () => props.active,\n  value => {\n    clearTimeout(timer)\n\n    const delay = value ? delayTime.value.enter : delayTime.value.leave\n\n    if (delay) {\n      timer = setTimeout(() => {\n        currentActive.value = value\n      }, delay)\n    } else {\n      currentActive.value = value\n    }\n  },\n)\n\ndefineExpose({\n  currentActive,\n  hasTip,\n  handleShow,\n  handleHide,\n})\n\nfunction handleMaskClick(event: MouseEvent) {\n  emitEvent(props.onMaskClick, event)\n}\n\nfunction handleShow() {\n  emitEvent(props.onShow)\n}\n\nfunction handleHide() {\n  emitEvent(props.onHide)\n}\n</script>\n\n<template>\n  <div\n    v-if=\"!props.inner\"\n    :class=\"[nh.b(), nh.bs('vars'), props.inherit && nh.bm('inherit')]\"\n    :aria-busy=\"currentActive ? 'true' : undefined\"\n  >\n    <slot>\n      <Renderer :renderer=\"props.slots.default\"></Renderer>\n    </slot>\n    <Transition\n      appear\n      :name=\"props.transitionName\"\n      @after-enter=\"handleShow\"\n      @after-leave=\"handleHide\"\n    >\n      <div v-if=\"currentActive\" :class=\"nh.be('loading')\">\n        <div\n          v-if=\"!props.hideMask\"\n          :class=\"[nh.be('mask'), props.maskClass]\"\n          :style=\"maskStyle\"\n          @click=\"handleMaskClick\"\n        ></div>\n        <slot name=\"content\">\n          <Renderer :renderer=\"props.slots.content\">\n            <div :class=\"nh.be('icon')\">\n              <slot name=\"icon\">\n                <Renderer :renderer=\"props.slots.icon\">\n                  <Icon\n                    v-bind=\"icons.loading\"\n                    :icon=\"props.icon || icons.loading.icon\"\n                    :effect=\"props.iconEffect || icons.loading.effect\"\n                    label=\"loading\"\n                  ></Icon>\n                </Renderer>\n              </slot>\n            </div>\n            <div v-if=\"hasTip\" :class=\"nh.be('tip')\">\n              <slot name=\"tip\">\n                <Renderer :renderer=\"props.slots.tip\">\n                  {{ props.tip }}\n                </Renderer>\n              </slot>\n            </div>\n          </Renderer>\n        </slot>\n      </div>\n    </Transition>\n  </div>\n  <Transition\n    v-else\n    appear\n    :name=\"props.transitionName\"\n    @after-enter=\"handleShow\"\n    @after-leave=\"handleHide\"\n  >\n    <div v-if=\"currentActive\" :class=\"[nh.b(), nh.bs('vars'), nh.bm('inner')]\">\n      <div\n        v-if=\"!props.hideMask\"\n        :class=\"[nh.be('mask'), props.maskClass]\"\n        :style=\"maskStyle\"\n        @click=\"handleMaskClick\"\n      ></div>\n      <slot name=\"content\">\n        <Renderer :renderer=\"props.slots.content\">\n          <div :class=\"nh.be('icon')\">\n            <slot name=\"icon\">\n              <Renderer :renderer=\"props.slots.icon\">\n                <Icon\n                  v-bind=\"icons.loading\"\n                  :icon=\"props.icon || icons.loading.icon\"\n                  :effect=\"props.iconEffect || icons.loading.effect\"\n                  label=\"loading\"\n                ></Icon>\n              </Renderer>\n            </slot>\n          </div>\n          <div v-if=\"hasTip\" :class=\"nh.be('tip')\">\n            <slot name=\"tip\">\n              <Renderer :renderer=\"props.slots.tip\">\n                {{ props.tip }}\n              </Renderer>\n            </slot>\n          </div>\n        </Renderer>\n      </slot>\n    </div>\n  </Transition>\n</template>\n"],"names":["nh","useNameHelper","_props","__props","props","useProps","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":"qWAcM,MAAAA,EAAKC,gBAAc,MAAM,EACzBC,EAASC,EACTC,EAAQC,EAAAA,SAAS,OAAQH,EAAQ,CACrC,OAAQ,CACN,QAAS,GACT,OAAQ,EACV,EACA,KAAMI,EAAAA,eAAe,EACrB,MAAO,GACP,MAAO,GACP,IAAK,GACL,SAAU,GACV,UAAW,GACX,UAAW,KACX,eAAgB,IAAMN,EAAG,GAAG,MAAM,EAClC,WAAY,KACZ,MAAO,KAAO,CAAC,EAAA,CAChB,EAEKO,EAAQC,EAAAA,SAAA,EAERC,EAAQC,EAAAA,SAAS,EAEjBC,EAAgBC,EAAAA,IAAIR,EAAM,MAAM,EAEhCS,EAASC,WAAS,IAAM,CAAC,EAAEV,EAAM,KAAOG,EAAM,IAAI,EAClDQ,EAAYD,EAAAA,SAAS,IAAM,CAC/B,MAAME,EAAQ,CAAC,EAEf,OAAIZ,EAAM,YACRY,EAAMhB,EAAG,GAAG,eAAe,CAAC,EAAII,EAAM,WAGjCY,CAAA,CACR,EACKC,EAAYH,EAAAA,SAAS,IAAM,CAC/B,GAAIV,EAAM,MAAO,CACX,GAAAA,EAAM,QAAU,GAClB,MAAO,CAAE,MAAO,IAAK,MAAO,GAAI,EAG9B,GAAA,OAAOA,EAAM,OAAU,SACzB,MAAO,CAAE,MAAOA,EAAM,MAAO,MAAOA,EAAM,KAAM,EAGlD,GAAI,MAAM,QAAQA,EAAM,KAAK,EAC3B,MAAO,CAAE,MAAOc,EAAAA,SAASd,EAAM,MAAM,CAAC,CAAC,EAAG,MAAOc,EAAAA,SAASd,EAAM,MAAM,CAAC,CAAC,CAAE,CAC5E,CAGF,MAAO,CAAE,MAAO,EAAG,MAAO,CAAE,CAAA,CAC7B,EAEG,IAAAe,EAEJC,EAAA,MACE,IAAMhB,EAAM,OACHiB,GAAA,CACP,aAAaF,CAAK,EAElB,MAAMG,EAAQD,EAAQJ,EAAU,MAAM,MAAQA,EAAU,MAAM,MAE1DK,EACFH,EAAQ,WAAW,IAAM,CACvBR,EAAc,MAAQU,GACrBC,CAAK,EAERX,EAAc,MAAQU,CACxB,CAEJ,EAEaE,EAAA,CACX,cAAAZ,EACA,OAAAE,EACA,WAAAW,EACA,WAAAC,CAAA,CACD,EAED,SAASC,EAAgBC,EAAmB,CAChCC,YAAAxB,EAAM,YAAauB,CAAK,CAAA,CAGpC,SAASH,GAAa,CACpBI,EAAA,UAAUxB,EAAM,MAAM,CAAA,CAGxB,SAASqB,GAAa,CACpBG,EAAA,UAAUxB,EAAM,MAAM,CAAA,cAMbyB,QAAAzB,CAAA,EAAM,qBA8Cf0B,EAAAA,YAsCaC,EAAAA,WAAA,OApCX,OAAA,GACC,KAAMF,EAAAA,MAAKzB,CAAA,EAAC,eACZ,aAAaoB,EACb,aAAaC,CAAA,qBAEd,IA8BM,CA9BKd,EAAa,qBAAxBqB,EAAAA,mBA8BM,MAAA,OA9BqB,MAAKC,iBAAA,CAAGJ,EAAA,MAAE7B,CAAA,EAAC,IAAK6B,QAAE7B,CAAA,EAAC,GAAE,MAAA,EAAU6B,EAAE,MAAA7B,CAAA,EAAC,GAAE,OAAA,CAAA,CAAA,CAAA,GAEpD6B,EAAAA,MAAAzB,CAAA,EAAM,oDADf4B,qBAKO,MAAA,OAHJ,wBAAQH,EAAA,MAAE7B,CAAA,EAAC,GAAY,MAAA,EAAA6B,EAAA,MAAAzB,CAAA,EAAM,SAAS,CAAA,EACtC,uBAAOW,EAAS,KAAA,EAChB,QAAOW,YAEVQ,EAAAA,WAsBOC,sBAtBP,IAsBO,CArBLC,cAoBWP,EAAAA,MAAAQ,CAAA,EAAA,CApBA,SAAUR,EAAA,MAAAzB,CAAA,EAAM,MAAM,OAAA,qBAC/B,IAWM,CAXNkC,EAAAA,mBAWM,MAAA,CAXA,MAAKL,EAAE,eAAAJ,EAAA,MAAE7B,CAAA,EAAC,GAAE,MAAA,CAAA,CAAA,GAChBkC,EAAAA,WASOC,mBATP,IASO,CARLC,cAOWP,EAAAA,MAAAQ,CAAA,EAAA,CAPA,SAAUR,EAAA,MAAAzB,CAAA,EAAM,MAAM,IAAA,qBAC/B,IAKQ,CALRgC,EAAA,YAKQP,QALRU,CAAA,EAAAC,aACUX,QAIFpB,CAAA,EAJQ,QAAO,CACpB,KAAMoB,EAAAA,SAAM,MAAQA,EAAAA,MAAKpB,CAAA,EAAC,QAAQ,KAClC,OAAQoB,EAAAA,SAAM,YAAcA,EAAAA,MAAKpB,CAAA,EAAC,QAAQ,OAC3C,MAAM,oEAKHI,EAAM,qBAAjBmB,EAAAA,mBAMM,MAAA,OANc,MAAKC,EAAE,eAAAJ,EAAA,MAAE7B,CAAA,EAAC,GAAE,KAAA,CAAA,CAAA,GAC9BkC,EAAAA,WAIOC,kBAJP,IAIO,CAHLC,cAEWP,EAAAA,MAAAQ,CAAA,EAAA,CAFA,SAAUR,EAAA,MAAAzB,CAAA,EAAM,MAAM,GAAA,qBAC/B,IAAe,CAAZqC,kBAAAC,EAAA,gBAAAb,EAAA,MAAAzB,CAAA,EAAM,GAAG,EAAA,CAAA,CAAA,wJA9E1B4B,qBA8CM,MAAA,OA5CH,MAAQC,EAAAA,eAAA,CAAAJ,EAAAA,MAAA7B,CAAA,EAAG,IAAK6B,EAAAA,MAAE7B,CAAA,EAAC,GAAE,MAAA,EAAU6B,EAAA,SAAM,SAAWA,EAAAA,MAAA7B,CAAA,EAAG,GAAE,SAAA,CAAA,CAAA,EACrD,YAAWW,EAAa,MAAA,OAAY,MAAA,GAErCuB,EAAAA,WAEOC,sBAFP,IAEO,CADLC,cAAqDP,EAAAA,MAAAQ,CAAA,EAAA,CAA1C,SAAUR,EAAA,MAAAzB,CAAA,EAAM,MAAM,OAAA,yBAEnCgC,EAAAA,YAqCaL,EAAAA,WAAA,CApCX,OAAA,GACC,KAAMF,EAAAA,MAAKzB,CAAA,EAAC,eACZ,aAAaoB,EACb,aAAaC,CAAA,qBAEd,IA8BM,CA9BKd,EAAa,qBAAxBqB,EAAAA,mBA8BM,MAAA,OA9BqB,MAAKC,EAAE,eAAAJ,EAAA,MAAE7B,CAAA,EAAC,GAAE,SAAA,CAAA,CAAA,GAE5B6B,EAAAA,MAAAzB,CAAA,EAAM,oDADf4B,qBAKO,MAAA,OAHJ,wBAAQH,EAAA,MAAE7B,CAAA,EAAC,GAAY,MAAA,EAAA6B,EAAA,MAAAzB,CAAA,EAAM,SAAS,CAAA,EACtC,uBAAOW,EAAS,KAAA,EAChB,QAAOW,YAEVQ,EAAAA,WAsBOC,sBAtBP,IAsBO,CArBLC,cAoBWP,EAAAA,MAAAQ,CAAA,EAAA,CApBA,SAAUR,EAAA,MAAAzB,CAAA,EAAM,MAAM,OAAA,qBAC/B,IAWM,CAXNkC,EAAAA,mBAWM,MAAA,CAXA,MAAKL,EAAE,eAAAJ,EAAA,MAAE7B,CAAA,EAAC,GAAE,MAAA,CAAA,CAAA,GAChBkC,EAAAA,WASOC,mBATP,IASO,CARLC,cAOWP,EAAAA,MAAAQ,CAAA,EAAA,CAPA,SAAUR,EAAA,MAAAzB,CAAA,EAAM,MAAM,IAAA,qBAC/B,IAKQ,CALRgC,EAAA,YAKQP,QALRU,CAAA,EAAAC,aACUX,QAIFpB,CAAA,EAJQ,QAAO,CACpB,KAAMoB,EAAAA,SAAM,MAAQA,EAAAA,MAAKpB,CAAA,EAAC,QAAQ,KAClC,OAAQoB,EAAAA,SAAM,YAAcA,EAAAA,MAAKpB,CAAA,EAAC,QAAQ,OAC3C,MAAM,oEAKHI,EAAM,qBAAjBmB,EAAAA,mBAMM,MAAA,OANc,MAAKC,EAAE,eAAAJ,EAAA,MAAE7B,CAAA,EAAC,GAAE,KAAA,CAAA,CAAA,GAC9BkC,EAAAA,WAIOC,kBAJP,IAIO,CAHLC,cAEWP,EAAAA,MAAAQ,CAAA,EAAA,CAFA,SAAUR,EAAA,MAAAzB,CAAA,EAAM,MAAM,GAAA,qBAC/B,IAAe,CAAZqC,kBAAAC,EAAA,gBAAAb,EAAA,MAAAzB,CAAA,EAAM,GAAG,EAAA,CAAA,CAAA"}