{"version":3,"file":"password-input.vue2.mjs","sources":["../../../../../../packages/components/input/src/password-input.vue"],"sourcesContent":["<template>\r\n  <div\r\n    :class=\"[bem.b(), bem.is(isGray ? 'gray-input-password' : '')]\"\r\n    v-bind=\"containerAttrs\"\r\n  >\r\n    <a-input-password\r\n      v-bind=\"componentAttrs\"\r\n      ref=\"inputPasswordRef\"\r\n      v-model:value=\"newValue\"\r\n      :visible=\"trigger === 'hold' ? holdVisibleValue : clickVisibleValue\"\r\n      :class=\"bem.e('input')\"\r\n      :maxlength=\"newMaxlength\"\r\n      @update:visible=\"(v) => (clickVisibleValue = v)\"\r\n    >\r\n      <template\r\n        v-for=\"item in Object.keys($slots).filter(\r\n          (key) => key !== 'iconRender'\r\n        )\"\r\n        :key=\"item\"\r\n        #[item]=\"data\"\r\n      >\r\n        <slot :name=\"item\" v-bind=\"data || {}\"></slot>\r\n      </template>\r\n\r\n      <template #iconRender>\r\n        <!-- 修改图标容器，添加鼠标事件 -->\r\n        <span\r\n          v-if=\"trigger === 'hold'\"\r\n          :class=\"bem.e('icon-wrapper')\"\r\n          @mousedown.stop=\"handleMouseDown\"\r\n          @mouseup=\"handleMouseUp\"\r\n          @mouseleave=\"handleMouseUp\"\r\n          @touchstart.stop=\"handleMouseDown\"\r\n          @touchend=\"handleMouseUp\"\r\n          @click.stop=\"handleMouseUp\"\r\n        >\r\n          <ll-icon\r\n            :icon-name=\"holdVisibleValue ? 'icon-pwd-look' : 'icon-pwd-hide'\"\r\n          />\r\n        </span>\r\n\r\n        <ll-icon\r\n          v-else\r\n          :icon-name=\"clickVisibleValue ? 'icon-pwd-look' : 'icon-pwd-hide'\"\r\n        />\r\n      </template>\r\n    </a-input-password>\r\n\r\n    <!-- 进度条 -->\r\n    <div v-if=\"pwdStrength && rules.length > 0\" :class=\"bem.e('strength')\">\r\n      <a-progress\r\n        :class=\"bem.m('progress')\"\r\n        :percent=\"percent\"\r\n        :show-info=\"false\"\r\n        :stroke-color=\"color\"\r\n      />\r\n      <ll-tooltip is-white-bg :overlay-class-name=\"bem.b('tooltip')\">\r\n        <template #title>\r\n          <div class=\"title\">{{ tipTitle }}</div>\r\n          <template v-for=\"(item, idx) in rules\" :key=\"idx\">\r\n            <div\r\n              class=\"rule-item\"\r\n              :style=\"{\r\n                color: checkResults[idx]\r\n                  ? 'var(--color-success)'\r\n                  : 'var(--color-text-tertiary)',\r\n              }\"\r\n            >\r\n              <ll-icon\r\n                :icon-name=\"checkResults[idx] ? 'icon-check' : 'icon-close2'\"\r\n                :size=\"14\"\r\n              />\r\n              {{ item.label }}\r\n            </div>\r\n          </template>\r\n        </template>\r\n      </ll-tooltip>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { computed, ref, useAttrs, watch } from 'vue'\r\n\r\nimport { createNamespace } from '@ll-plus/utils'\r\nimport { omit } from 'lodash-es'\r\nimport { passwordInputEmits, passwordInputProps } from './input'\r\n\r\ndefineOptions({ name: 'LlPasswordInput', inheritAttrs: false })\r\n\r\nconst props = defineProps(passwordInputProps)\r\nconst emits = defineEmits(passwordInputEmits)\r\n\r\nconst bem = createNamespace('password-input')\r\n\r\nconst attrs = useAttrs()\r\n\r\nconst inputPasswordRef = ref()\r\n\r\nconst clickVisible = ref(false) // 点击切换时的显示状态\r\nconst holdVisible = ref(false) // 按住时临时显示状态\r\n\r\n// 容器样式\r\nconst containerAttrs = computed(() => ({\r\n  class: attrs.class as any,\r\n  style: attrs.style as any,\r\n}))\r\n\r\n// 组件功能相关的属性\r\nconst componentAttrs = computed(() => omit(attrs, ['class', 'style']))\r\n\r\n// 使用计算属性实现双向绑定\r\nconst newValue = computed({\r\n  get() {\r\n    return props.value\r\n  },\r\n  set(value) {\r\n    emits('update:value', value)\r\n    emits('change', value)\r\n  },\r\n})\r\n\r\n// 按住显示状态值\r\nconst holdVisibleValue = computed({\r\n  get() {\r\n    return props.visible || holdVisible.value\r\n  },\r\n  set(value) {\r\n    holdVisible.value = value\r\n    emits('update:visible', value)\r\n  },\r\n})\r\n\r\n// 点击切换显示状态值\r\nconst clickVisibleValue = computed({\r\n  get() {\r\n    return props.visible || clickVisible.value\r\n  },\r\n  set(value) {\r\n    clickVisible.value = value\r\n    emits('update:visible', value)\r\n  },\r\n})\r\n\r\n// 最大输入限制\r\nconst newMaxlength = computed(() => {\r\n  // 处理 maxlength 最大长度为 0 则不限制\r\n  if (typeof props.maxlength === 'number') {\r\n    return props.maxlength <= 0 ? null : props.maxlength\r\n  }\r\n  return props.maxlength\r\n})\r\n\r\nconst checkResults = computed(() => {\r\n  return props.rules.map((rule) => {\r\n    // 去除正则表达式字符串首尾的引号（如果存在）\r\n    const regexPattern = rule.regex.replace(/^['\"]|['\"]$/g, '')\r\n    // 创建正则表达式对象并测试值\r\n    const regex = new RegExp(regexPattern)\r\n    return regex.test(props.value)\r\n  })\r\n})\r\n\r\n// 进度条\r\nconst percent = computed(() => {\r\n  return (100 / props.rules.length) * checkResults.value.filter(Boolean).length\r\n})\r\n\r\n// 进度条颜色\r\nconst color = computed(() => {\r\n  if (percent.value < 50) {\r\n    return props.weakColor\r\n  } else if (percent.value < 100) {\r\n    return props.mediumColor\r\n  } else {\r\n    return props.strongColor\r\n  }\r\n})\r\n\r\nconst focus = () => {\r\n  inputPasswordRef.value.focus()\r\n}\r\nconst select = () => {\r\n  inputPasswordRef.value.select()\r\n}\r\n\r\n// 鼠标按下事件\r\nconst handleMouseDown = () => {\r\n  holdVisible.value = true\r\n}\r\n\r\n// 鼠标松开事件\r\nconst handleMouseUp = () => {\r\n  holdVisible.value = false\r\n}\r\n\r\nwatch(\r\n  () => percent.value,\r\n  (v) => {\r\n    emits('state', v === 100)\r\n  },\r\n  {\r\n    immediate: true,\r\n  }\r\n)\r\n\r\nwatch(\r\n  () => props.trigger,\r\n  (v) => {\r\n    if (v === 'hold') {\r\n      holdVisible.value = false\r\n    }\r\n  },\r\n  {\r\n    immediate: true,\r\n  }\r\n)\r\n\r\n// 公开focus方法\r\ndefineExpose({\r\n  focus,\r\n  select,\r\n})\r\n</script>\r\n"],"names":["_openBlock","_createElementBlock","_mergeProps","_unref","isGray","_createVNode","trigger","_createCommentVNode","_normalizeClass","_createBlock","_renderList","$slots","_withCtx","_renderSlot","_normalizeProps","_guardReactiveProps","pwdStrength","rules","_createElementVNode","_toDisplayString","tipTitle","_Fragment","_normalizeStyle"],"mappings":"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"}