{"version":3,"file":"captcha-slider.vue2.mjs","sources":["../../../components/captcha/captcha-slider.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { Icon } from '@/components/icon'\r\nimport { useFieldStore } from '@/components/form'\r\nimport { Renderer } from '@/components/renderer'\r\n\r\nimport { computed, nextTick, ref, watch } from 'vue'\r\n\r\nimport {\r\n  createIconProp,\r\n  createSizeProp,\r\n  emitEvent,\r\n  useIcons,\r\n  useLocale,\r\n  useNameHelper,\r\n  useProps,\r\n} from '@vexip-ui/config'\r\nimport { useMoving, useSetTimeout } from '@vexip-ui/hooks'\r\nimport { boundRange, toFixed } from '@vexip-ui/utils'\r\nimport { captchaSliderProps } from './props'\r\n\r\nimport type { CaptchaSliderSlots } from './symbol'\r\n\r\ndefineOptions({ name: 'CaptchaSlider' })\r\n\r\nconst { idFor, labelId, disabled, loading, size, validateField, getFieldValue, setFieldValue } =\r\n  useFieldStore<boolean>(focus)\r\n\r\nconst _props = defineProps(captchaSliderProps)\r\nconst props = useProps('captcha', _props, {\r\n  size: createSizeProp(size),\r\n  target: {\r\n    default: 100,\r\n    validator: value => value >= 0 && value <= 100,\r\n  },\r\n  tip: null,\r\n  successTip: null,\r\n  tolerance: {\r\n    default: 1,\r\n    validator: value => value >= 0,\r\n  },\r\n  disabled: () => disabled.value,\r\n  loading: () => loading.value,\r\n  loadingIcon: createIconProp(),\r\n  loadingLock: false,\r\n  loadingEffect: null,\r\n  onBeforeTest: {\r\n    default: null,\r\n    isFunc: true,\r\n  },\r\n  slots: () => ({}),\r\n})\r\n\r\ndefineSlots<CaptchaSliderSlots>()\r\n\r\nconst nh = useNameHelper('captcha')\r\nconst locale = useLocale('captcha')\r\nconst icons = useIcons()\r\n\r\nconst { timer } = useSetTimeout()\r\n\r\nconst currentLeft = ref(0)\r\nconst testing = ref(false)\r\nconst resetting = ref(false)\r\nconst isSuccess = ref(false)\r\nconst testLoading = ref(false)\r\n\r\nconst track = ref<HTMLElement>()\r\n\r\nconst readonly = computed(() => props.disabled || (props.loading && props.loadingLock))\r\n\r\nlet widthLimit: number\r\n\r\nconst { target: trigger, moving: dragging } = useMoving({\r\n  onStart: (_, event) => {\r\n    if (\r\n      testing.value ||\r\n      readonly.value ||\r\n      !track.value ||\r\n      !trigger.value ||\r\n      isSuccess.value ||\r\n      resetting.value ||\r\n      event.button > 0\r\n    ) {\r\n      return false\r\n    }\r\n\r\n    widthLimit = track.value.getBoundingClientRect().width\r\n    currentLeft.value = 0\r\n    verifyPosition()\r\n    trigger.value.focus()\r\n    emitEvent(props.onDragStart, currentLeft.value)\r\n  },\r\n  onMove: state => {\r\n    if (testing.value || readonly.value || isSuccess.value || resetting.value) {\r\n      return false\r\n    }\r\n\r\n    currentLeft.value = (state.deltaX / widthLimit) * 100\r\n    verifyPosition()\r\n    emitEvent(props.onDrag, currentLeft.value)\r\n  },\r\n  onEnd: async () => {\r\n    if (testing.value || readonly.value) return\r\n\r\n    testing.value = true\r\n\r\n    const matched = matchTarget(currentLeft.value)\r\n    let customResult: unknown\r\n\r\n    if (typeof props.onBeforeTest === 'function') {\r\n      nextTick(() => {\r\n        testLoading.value = true\r\n      })\r\n      customResult = await props.onBeforeTest(currentLeft.value, matched)\r\n      nextTick(() => {\r\n        testLoading.value = false\r\n      })\r\n    }\r\n\r\n    if (currentLeft.value && (customResult === false || (!matched && customResult !== true))) {\r\n      resetting.value = true\r\n      currentLeft.value = 0\r\n      isSuccess.value = false\r\n\r\n      setFieldValue(false)\r\n      emitEvent(props.onFail)\r\n    } else if (matched || customResult === true) {\r\n      isSuccess.value = true\r\n\r\n      if (customResult && !matched) {\r\n        resetting.value = true\r\n        currentLeft.value = props.target\r\n      }\r\n\r\n      setFieldValue(true)\r\n      emitEvent(props.onSuccess, currentLeft.value)\r\n    }\r\n\r\n    validateField()\r\n    trigger.value?.blur()\r\n    emitEvent(props.onDragEnd, currentLeft.value)\r\n\r\n    clearTimeout(timer.testing)\r\n    testing.value = false\r\n  },\r\n})\r\n\r\nconst isLoading = computed(() => props.loading || testLoading.value)\r\nconst className = computed(() => {\r\n  const baseCls = nh.be('slider')\r\n\r\n  return {\r\n    [baseCls]: true,\r\n    [nh.bs('vars')]: true,\r\n    [`${baseCls}--success`]: isSuccess.value,\r\n    [`${baseCls}--disabled`]: props.disabled,\r\n    [`${baseCls}--loading`]: isLoading.value,\r\n    [`${baseCls}--${props.size}`]: props.size !== 'default',\r\n  }\r\n})\r\nconst fillerStyle = computed(() => {\r\n  return {\r\n    [nh.cv('filler-transition')]: resetting.value ? 'transform 250ms ease' : undefined,\r\n    transform: `scaleX(${currentLeft.value / 100})`,\r\n  }\r\n})\r\nconst tipStyle = computed(() => {\r\n  return {\r\n    [nh.cv('tip-transition')]: resetting.value ? 'background-position 250ms ease' : undefined,\r\n    backgroundPosition: `-${currentLeft.value}%`,\r\n  }\r\n})\r\nconst triggerStyle = computed(() => {\r\n  return {\r\n    left: `${currentLeft.value}%`,\r\n    [nh.cv('trigger-transition')]: resetting.value ? 'left 250ms ease' : undefined,\r\n  }\r\n})\r\n\r\nwatch(\r\n  () => getFieldValue(),\r\n  value => {\r\n    if (!value) {\r\n      reset()\r\n    } else {\r\n      if (!matchTarget(currentLeft.value)) {\r\n        resetting.value = true\r\n        currentLeft.value = props.target\r\n      }\r\n\r\n      isSuccess.value = true\r\n    }\r\n  },\r\n)\r\nwatch(readonly, value => value && reset())\r\n\r\ndefineExpose({\r\n  idFor,\r\n  currentLeft,\r\n  resetting,\r\n  isSuccess,\r\n  dragging,\r\n  isLoading,\r\n  track,\r\n  trigger,\r\n  focus,\r\n  reset,\r\n})\r\n\r\nfunction verifyPosition() {\r\n  currentLeft.value = toFixed(boundRange(currentLeft.value, 0, 100), 3)\r\n}\r\n\r\nfunction reset() {\r\n  resetting.value = true\r\n  currentLeft.value = 0\r\n  isSuccess.value = false\r\n}\r\n\r\nfunction afterReset() {\r\n  resetting.value = false\r\n}\r\n\r\nfunction matchTarget(value: number) {\r\n  return Math.abs(props.target - value) <= props.tolerance\r\n}\r\n\r\nfunction focus(options?: FocusOptions) {\r\n  trigger.value?.focus(options)\r\n}\r\n</script>\r\n\r\n<template>\r\n  <div\r\n    :id=\"idFor\"\r\n    ref=\"wrapper\"\r\n    :class=\"className\"\r\n    tabindex=\"-1\"\r\n    role=\"group\"\r\n    :aria-labelledby=\"labelId\"\r\n  >\r\n    <div\r\n      :class=\"{\r\n        [nh.be('filler')]: true,\r\n        [nh.bem('filler', 'loading')]: isLoading,\r\n        [nh.bem('filler', 'success')]: isSuccess\r\n      }\"\r\n      :style=\"fillerStyle\"\r\n    ></div>\r\n    <div\r\n      :class=\"{\r\n        [nh.be('tip')]: true,\r\n        [nh.bem('tip', 'focused')]: dragging,\r\n        [nh.bem('tip', 'loading')]: isLoading,\r\n        [nh.bem('tip', 'success')]: isSuccess\r\n      }\"\r\n      :style=\"tipStyle\"\r\n    >\r\n      <slot name=\"tip\" :success=\"isSuccess\">\r\n        <Renderer :renderer=\"props.slots.tip\" :data=\"{ success: isSuccess }\">\r\n          {{ isSuccess ? (props.successTip ?? locale.success) : (props.tip ?? locale.slideEnd) }}\r\n        </Renderer>\r\n      </slot>\r\n    </div>\r\n    <div ref=\"track\" :class=\"nh.be('track')\">\r\n      <div\r\n        ref=\"trigger\"\r\n        :class=\"{\r\n          [nh.be('trigger')]: true,\r\n          [nh.bem('trigger', 'focused')]: dragging,\r\n          [nh.bem('trigger', 'loading')]: isLoading,\r\n          [nh.bem('trigger', 'success')]: isSuccess\r\n        }\"\r\n        tabindex=\"0\"\r\n        :style=\"triggerStyle\"\r\n        @transitionend=\"afterReset\"\r\n      >\r\n        <slot name=\"trigger\" :success=\"isSuccess\">\r\n          <Renderer :renderer=\"props.slots.trigger\" :data=\"{ success: isSuccess }\">\r\n            <Icon v-if=\"isSuccess\" v-bind=\"icons.check\"></Icon>\r\n            <Icon\r\n              v-else-if=\"isLoading\"\r\n              v-bind=\"icons.loading\"\r\n              :effect=\"props.loadingEffect || icons.loading.effect\"\r\n              :icon=\"props.loadingIcon || icons.loading.icon\"\r\n            ></Icon>\r\n            <Icon v-else v-bind=\"icons.anglesRight\"></Icon>\r\n          </Renderer>\r\n        </slot>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n"],"names":["idFor","labelId","disabled","loading","size","validateField","getFieldValue","setFieldValue","useFieldStore","focus","props","useProps","__props","createSizeProp","value","createIconProp","nh","useNameHelper","locale","useLocale","icons","useIcons","timer","useSetTimeout","currentLeft","ref","testing","resetting","isSuccess","testLoading","track","readonly","computed","widthLimit","trigger","dragging","useMoving","_","event","verifyPosition","emitEvent","state","matched","matchTarget","customResult","nextTick","_a","isLoading","className","baseCls","fillerStyle","tipStyle","triggerStyle","watch","reset","__expose","toFixed","boundRange","afterReset","options","_createElementBlock","_unref","_createElementVNode","_normalizeClass","_renderSlot","_ctx","_createVNode","Renderer","_createTextVNode","_toDisplayString","_createBlock","Icon","_normalizeProps","_mergeProps","_openBlock"],"mappings":"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"}