{"version":3,"file":"email-input.vue2.mjs","sources":["../../../../../../packages/components/email-input/src/email-input.vue"],"sourcesContent":["<template>\r\n  <a-form-item-rest>\r\n    <a-space-compact block :class=\"bem.b()\" :size=\"size\" v-bind=\"attrs\">\r\n      <ll-input\r\n        v-model:value=\"inputV\"\r\n        :class=\"bem.e('input')\"\r\n        :placeholder=\"placeholder\"\r\n        :disabled=\"disabled\"\r\n        :allow-clear=\"allowClear\"\r\n        @change=\"handleChange\"\r\n      />\r\n\r\n      <ll-select\r\n        v-if=\"showSelect\"\r\n        v-model:value=\"selectV\"\r\n        :class=\"bem.e('select')\"\r\n        :options=\"processedOptions\"\r\n        :style=\"{ minWidth: selectMinW }\"\r\n        placeholder=\"请选择\"\r\n        :disabled=\"disabled\"\r\n        @change=\"handleChange\"\r\n      />\r\n    </a-space-compact>\r\n  </a-form-item-rest>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { computed, onMounted, ref, useAttrs, watch } from 'vue'\r\n\r\nimport { createNamespace } from '@ll-plus/utils'\r\nimport { uniqBy } from 'lodash-es'\r\nimport { emailInputEmits, emailInputProps } from './email-input'\r\n\r\ndefineOptions({ name: 'LlEmailInput', inheritAttrs: false })\r\n\r\nconst bem = createNamespace('email-input')\r\n\r\nconst props = defineProps(emailInputProps)\r\nconst emit = defineEmits(emailInputEmits)\r\nconst attrs = useAttrs()\r\n\r\nconst inputV = ref('')\r\nconst selectV = ref()\r\n\r\n// 处理选项，确保以@开头\r\nconst processedOptions = computed(() => {\r\n  return uniqBy(\r\n    props.options.map((option) => {\r\n      const processedValue = option.startsWith('@') ? option : `@${option}`\r\n      return {\r\n        label: processedValue,\r\n        value: processedValue,\r\n      }\r\n    }),\r\n    'value', // 根据 value 属性去重\r\n  )\r\n})\r\n\r\n// 拆分邮箱值\r\nconst splitEmailValue = (value: string) => {\r\n  if (!props.showSelect || !value) {\r\n    return { prefix: value, suffix: null }\r\n  }\r\n\r\n  // 尝试匹配选项\r\n  for (const option of processedOptions.value) {\r\n    const suffix = option.value\r\n    if (value.endsWith(suffix)) {\r\n      return {\r\n        prefix: value.slice(0, value.length - suffix.length),\r\n        suffix,\r\n      }\r\n    }\r\n  }\r\n\r\n  // 没有匹配项\r\n  return { prefix: value, suffix: null }\r\n}\r\n\r\n// 初始化拆分值\r\nconst initSplitValues = () => {\r\n  const { prefix, suffix } = splitEmailValue(props.value)\r\n  inputV.value = prefix\r\n  selectV.value = suffix\r\n}\r\n\r\n// 更新值\r\nconst handleChange = () => {\r\n  let newValue = inputV.value\r\n\r\n  if (props.showSelect && selectV.value) {\r\n    newValue += selectV.value\r\n  }\r\n\r\n  emit('update:value', newValue)\r\n  emit('change', newValue)\r\n}\r\n\r\n// 监听props.value变化\r\nwatch(\r\n  () => props.value,\r\n  (newValue) => {\r\n    const { prefix, suffix } = splitEmailValue(newValue)\r\n\r\n    // 只有当拆分结果不同时才更新内部状态\r\n    if (prefix !== inputV.value || suffix !== selectV.value) {\r\n      inputV.value = prefix\r\n      selectV.value = suffix\r\n    }\r\n  },\r\n)\r\n\r\n// 监听showSelect变化\r\nwatch(\r\n  () => props.showSelect,\r\n  (newShowSelect, oldShowSelect) => {\r\n    // 从显示下拉框变为隐藏下拉框\r\n    if (oldShowSelect && !newShowSelect) {\r\n      // 将下拉框的值合并到输入框\r\n      if (selectV.value) {\r\n        inputV.value += selectV.value\r\n        selectV.value = null\r\n      }\r\n      // 触发更新事件\r\n      emit('update:value', inputV.value)\r\n      emit('change', inputV.value)\r\n    }\r\n    // 从隐藏下拉框变为显示下拉框\r\n    else if (!oldShowSelect && newShowSelect) {\r\n      // 重新拆分当前值\r\n      initSplitValues()\r\n    }\r\n  },\r\n)\r\n\r\n// 初始化组件\r\nonMounted(() => {\r\n  initSplitValues()\r\n})\r\n</script>\r\n"],"names":["_createBlock","_createVNode","_mergeProps","_unref","size","_normalizeClass","placeholder","disabled","allowClear","showSelect","selectMinW"],"mappings":"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"}