{"version":3,"file":"grid-input.vue2.mjs","sources":["../../../../../packages/components/grid-input/src/grid-input.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as __MACROS_defineComponent } from \"vue\";\nexport default /*#__PURE__*/ __MACROS_defineComponent({\n  name: 'ElGridInput'\n});\n</script>\n<template>\n  <ul :class=\"[ns.b(), ns.m(gridInputSize)]\">\n    <li\n      v-for=\"(_, index) in max\"\n      :key=\"index\"\n      tabindex=\"0\"\n      @keydown=\"handleKeyDown($event, valueArray[index], index)\"\n      @focus=\"focus(index)\"\n      @blur=\"index === position && (blur = true)\"\n      :ref=\"getRef\"\n      :class=\"{\n        [ns.e('item')]: true,\n        [ns.m('focus')]: index === position && !blur\n      }\"\n    >\n      <span :class=\"ns.e('text')\" v-if=\"valueArray[index]\">\n        {{ valueArray[index] }}\n      </span>\n\n      <span :class=\"ns.e('cursor')\" v-else-if=\"index === position\"></span>\n    </li>\n  </ul>\n</template>\n<script lang=\"ts\" setup>\nimport { useNamespace, useRefs, useSize } from '@element-ultra/hooks'\nimport { computed } from '@vue/reactivity'\nimport { shallowRef, watch } from 'vue'\nimport { gridInputProps } from './grid-input'\n\n\n\nconst [items, getRef] = useRefs()\n\nconst ns = useNamespace('grid-input')\nconst props = defineProps(gridInputProps)\n\nconst emit = defineEmits([\"update:modelValue\"])\n\nconst gridInputSize = useSize({\n  props\n})\n\nlet valueArray = shallowRef<string[]>([])\n/** 光标位置 */\nlet position = shallowRef(0)\nlet blur = shallowRef(false)\n\nconst numberReg = computed(() => {\n  return props.zero ? /^[0-9]$/ : /^[1-9]$/\n})\n\nconst focus = async (index?: number) => {\n  if (index === undefined) {\n    focus(position.value)\n    return\n  }\n\n  // 可以聚焦有值的输入框和其下一个输入框\n  if (index !== 0 && index > valueArray.value.length) {\n    position.value = valueArray.value.length\n  } else {\n    position.value = index\n  }\n  let dom = items.value[position.value]\n  dom?.focus()\n  blur.value = false\n}\n\n/** 设置值数组 */\nconst setValueArray = () => {\n  if (props.modelValue) {\n    valueArray.value = props.modelValue.split(props.separator)\n  }\n}\n\nwatch(\n  () => props.modelValue,\n  () => {\n    setValueArray()\n  }\n)\n\nconst emitModelValue = () => {\n  emit(\n    'update:modelValue',\n    valueArray.value.filter(v => v).join(props.separator)\n  )\n}\n\n/** 更改值 */\nconst changeValue = (value: string, index: number) => {\n  const currentValue = valueArray.value[index]\n\n  if (currentValue) {\n    valueArray.value.splice(index, 1, value)\n  } else if (index === valueArray.value.length) {\n    valueArray.value.push(value)\n  } else {\n    return\n  }\n\n  if (position.value < props.max - 1) {\n    position.value++\n  }\n\n  focus()\n\n  emitModelValue()\n}\n\nconst KeyEventMethods = {\n  /** 删除 */\n  Backspace(value: string, index: number) {\n    if (value) {\n      valueArray.value.splice(index, 1)\n    } else if (index - 1 >= 0) {\n      valueArray.value.splice(index - 1, 1)\n    }\n\n    if (index !== 0) {\n      focus(index - 1)\n    }\n\n    emitModelValue()\n  },\n\n  ArrowLeft(value: string, index: number) {\n    if (index === 0) return\n    focus(index - 1)\n  },\n\n  ArrowRight(value: string, index: number) {\n    if (index === valueArray.value.length) return\n    focus(index + 1)\n  }\n}\n\n/** 按键事件 */\nconst handleKeyDown = (e: any, value: string, index: number) => {\n  if (numberReg.value.test(e.key)) {\n    changeValue(e.key, index)\n    return\n  }\n\n  let handler = KeyEventMethods[e.key as keyof typeof KeyEventMethods]\n  handler && handler(value, index)\n}\n</script>\n"],"names":["__MACROS_defineComponent"],"mappings":"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"}