{"version":3,"file":"captcha.mjs","sources":["../../../../../../packages/components/captcha/src/captcha.vue"],"sourcesContent":["<template>\n  <LtTooltip\n    v-if=\"useTrigger\"\n    :class=\"ns.b('wrapper')\"\n    :visible=\"visible\"\n    trigger=\"click\"\n    effect=\"light\"\n    :append-to=\"appendTo\"\n    teleported\n  >\n    <slot name=\"trigger\" :visible=\"visible\" :success=\"isSuccess\">\n      <LtButton\n        block\n        :class=\"[ns.e('button'), isSuccess && ns.em('button', 'success')]\"\n        :type=\"isSuccess ? 'success' : 'primary'\"\n        :size=\"triggerSize\"\n        :loading=\"visible && !isSuccess\"\n        :icon=\"isSuccess ? Check : null\"\n        style=\"display: flex; align-items: center\"\n        @click=\"handleTrigger\"\n      >\n        {{ triggerText ?? (isSuccess ? textInfo.completed : textInfo.trigger) }}\n      </LtButton>\n    </slot>\n\n    <template #content>\n      <panel\n        ref=\"panelRef\"\n        :type=\"type\"\n        :slide-target=\"slideTarget\"\n        :title=\"title\"\n        :tip=\"tip\"\n        :success-tip=\"successTip\"\n        :fail-tip=\"failTip\"\n        :image=\"image\"\n        :tolerance=\"tolerance\"\n        :canvas-size=\"canvasSize\"\n        :disabled=\"disabled\"\n        :loading=\"loading\"\n        :on-before-test=\"onBeforeTest\"\n        :texts=\"texts\"\n        :fail-limit=\"failLimit\"\n        :remote-point=\"remotePoint\"\n        :use-trigger=\"useTrigger\"\n        :visible=\"visible\"\n        :hollow-shape=\"hollowShape\"\n        :hide-delay=\"hideDelay\"\n        :is-refresh=\"isRefresh\"\n        @success-change=\"successChange\"\n        @refresh=\"emits('refresh')\"\n        @drag=\"emits('drag')\"\n        @drag-start=\"emits('drag-start')\"\n        @drag-end=\"emits('drag-end')\"\n        @fail=\"emits('fail')\"\n        @success=\"emits('success')\"\n      />\n    </template>\n  </LtTooltip>\n\n  <panel\n    v-else\n    ref=\"panelRef\"\n    :type=\"type\"\n    :slide-target=\"slideTarget\"\n    :title=\"title\"\n    :tip=\"tip\"\n    :success-tip=\"successTip\"\n    :fail-tip=\"failTip\"\n    :image=\"image\"\n    :tolerance=\"tolerance\"\n    :canvas-size=\"canvasSize\"\n    :disabled=\"disabled\"\n    :loading=\"loading\"\n    :on-before-test=\"onBeforeTest\"\n    :texts=\"texts\"\n    :fail-limit=\"failLimit\"\n    :remote-point=\"remotePoint\"\n    :use-trigger=\"useTrigger\"\n    :visible=\"visible\"\n    :hollow-shape=\"hollowShape\"\n    :hide-delay=\"hideDelay\"\n    :is-refresh=\"isRefresh\"\n    @success-change=\"successChange\"\n    @refresh=\"emits('refresh')\"\n    @drag=\"emits('drag')\"\n    @drag-start=\"emits('drag-start')\"\n    @drag-end=\"emits('drag-end')\"\n    @fail=\"emits('fail')\"\n    @success=\"emits('success')\"\n  />\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watch } from 'vue'\nimport { LtButton } from '@lit-element/components/button'\nimport { LtTooltip } from '@lit-element/components/tooltip'\nimport { useNamespace } from '@lit-element/hooks'\nimport { Check } from '@inte-cloud/icons-vue'\nimport panel from './panel.vue'\nimport { useSetTimeout } from './hooks/useSetTimeout'\nimport { captchaProps, textInfo } from './data'\n\ndefineOptions({ name: 'LtCaptcha' })\n\nconst props = defineProps(captchaProps)\n\nconst emits = defineEmits([\n  'refresh',\n  'drag',\n  'drag-start',\n  'drag-end',\n  'fail',\n  'success',\n])\n\nconst ns = useNamespace('captcha')\n\nconst { timer } = useSetTimeout()\n\nconst visible = ref(false)\nconst panelRef = ref()\nconst isSuccess = ref(false)\n\nfunction successChange(value: boolean) {\n  isSuccess.value = value\n  if (value && props.useTrigger && visible.value) {\n    clearTimeout(timer.hideTrigger)\n    timer.hideTrigger = setTimeout(() => {\n      visible.value = false\n    }, props.hideDelay)\n  }\n}\n\nwatch(\n  [() => props.type, () => props.remotePoint],\n  () => {\n    if (\n      props.type !== 'slide' &&\n      props.remotePoint &&\n      typeof props.onBeforeTest !== 'function'\n    ) {\n      // console.warn(\n      //   \"[lit-element:Captcha] You should specify 'on-before-test' prop to valid the captcha \" +\n      //     \"if you are using the 'point' type in remote\"\n      // )\n    }\n  },\n  { immediate: true }\n)\n\nfunction reset(newImage?: string | (() => Promise<string>)) {\n  isSuccess.value = false\n  return panelRef.value?.reset(newImage)\n}\n\nfunction handleTrigger() {\n  if (!isSuccess.value) {\n    visible.value = true\n  }\n}\n\ndefineExpose({\n  reset,\n})\n</script>\n"],"names":["DO_defineComponent","_openBlock","_createBlock","_unref"],"mappings":";;;;;;;;;;;AAsGc,MAAA,WAAA,GAAAA,eAAA,CAAA,EAAE,IAAM,EAAA,WAAA,EAAY,CAAA,CAAA;;;;;;;;;;;;;;AAalC,IAAM,MAAA,EAAA,GAAK,aAAa,SAAS,CAAA,CAAA;AAEjC,IAAM,MAAA,EAAE,KAAM,EAAA,GAAI,aAAc,EAAA,CAAA;AAEhC,IAAM,MAAA,OAAA,GAAU,IAAI,KAAK,CAAA,CAAA;AACzB,IAAA,MAAM,WAAW,GAAI,EAAA,CAAA;AACrB,IAAM,MAAA,SAAA,GAAY,IAAI,KAAK,CAAA,CAAA;AAE3B,IAAA,SAAS,cAAc,KAAgB,EAAA;AACrC,MAAA,SAAA,CAAU,KAAQ,GAAA,KAAA,CAAA;AAClB,MAAA,IAAI,KAAS,IAAA,KAAA,CAAM,UAAc,IAAA,OAAA,CAAQ,KAAO,EAAA;AAC9C,QAAA,YAAA,CAAa,MAAM,WAAW,CAAA,CAAA;AAC9B,QAAM,KAAA,CAAA,WAAA,GAAc,WAAW,MAAM;AACnC,UAAA,OAAA,CAAQ,KAAQ,GAAA,KAAA,CAAA;AAAA,SAClB,EAAG,MAAM,SAAS,CAAA,CAAA;AAAA,OACpB;AAAA,KACF;AAEA,IAAA,KAAA,CAAA,CAAA,MAAA,KAAA,CAAA,IAAA,EAAA,MAAA,KAAA,CAAA,WAAA,CAAA,EAAA,MAAA;AAAA,MACE,IAAO,KAAA,CAAA,IAAY,KAAA,gBAAuB,CAAA,WAAA,IAAA,OAAA,KAAA,CAAA,YAAA,KAAA,UAAA,EAAA;AAAA,OACpC;AACJ,KACE,EAAA,EAAA,SAAM,SAAS,CACf;AAEA,IAKF,SAAA,KAAA,CAAA,QAAA,EAAA;AAAA,MACF,IAAA,EAAA,CAAA;AAAA,MACA,eAAkB,GAAA,KAAA,CAAA;AAAA,MACpB,OAAA,CAAA,EAAA,GAAA,QAAA,CAAA,KAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAA,CAAA,QAAA,CAAA,CAAA;AAEA,KAAA;AACE,IAAA,SAAA,aAAkB,GAAA;AAClB,MAAO,IAAA,CAAA,SAAA,CAAA,KAAgB,EAAA;AAAc,QACvC,OAAA,CAAA,KAAA,GAAA,IAAA,CAAA;AAEA,OAAA;AACE,KAAI;AACF,IAAA,MAAA,CAAA;AAAgB,MAClB,KAAA;AAAA,KACF,CAAA,CAAA;AAEA,IAAa,OAAA,CAAA,IAAA,EAAA,MAAA,KAAA;AAAA,MACX,OAAA,IAAA,CAAA,UAAA,IAAAC,SAAA,EAAA,EAAAC,WAAA,CAAAC,KAAA,CAAA,SAAA,CAAA,EAAA;AAAA,QACD,GAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}