{"version":3,"file":"useTagList.mjs","sources":["../../../../components/tag-input/hooks/useTagList.tsx"],"sourcesContent":["import { ref, toRefs } from 'vue';\nimport { TagInputValue, TagInputChangeContext } from '../type';\nimport { TagInputProps } from '../types';\nimport { InputValue } from '../../input';\nimport Tag from '../../tag';\nimport useVModel from '../../hooks/useVModel';\nimport { usePrefixClass } from '../../hooks/useConfig';\nimport { useTNodeJSX } from '../../hooks/tnode';\nimport { useDisabled } from '../../hooks/useDisabled';\nimport { useReadonly } from '../../hooks/useReadonly';\n\nexport type ChangeParams = [TagInputChangeContext];\n\n// handle tag add and remove\nexport function useTagList(props: TagInputProps) {\n  const renderTNode = useTNodeJSX();\n  const classPrefix = usePrefixClass();\n  const { value, modelValue, onRemove, max, minCollapsedNum, size, tagProps, getDragProps } = toRefs(props);\n  // handle controlled property and uncontrolled property\n  const [tagValue, setTagValue] = useVModel(value, modelValue, props.defaultValue || [], props.onChange);\n  const oldInputValue = ref<InputValue>();\n\n  const isDisabled = useDisabled();\n  const isReadonly = useReadonly();\n\n  // 点击标签关闭按钮，删除标签\n  const onClose = (p: { e?: MouseEvent; index: number }) => {\n    const arr = [...tagValue.value];\n    const [item] = arr.splice(p.index, 1); // 当前删除的item无需参数传递\n    setTagValue(arr, { trigger: 'tag-remove', ...p, item });\n    onRemove.value?.({ ...p, item, trigger: 'tag-remove', value: arr });\n  };\n\n  const clearAll = (context: { e: MouseEvent }) => {\n    setTagValue([], { trigger: 'clear', e: context.e });\n  };\n\n  // 按下 Enter 键，新增标签\n  const onInnerEnter = (value: string, context: { e: KeyboardEvent }) => {\n    const valueStr = value ? String(value).trim() : '';\n    const isLimitExceeded = max && tagValue.value?.length >= max.value;\n    let newValue: TagInputValue = tagValue.value;\n    if (!isLimitExceeded && valueStr) {\n      newValue = tagValue.value instanceof Array ? tagValue.value.concat(String(valueStr)) : [valueStr];\n      setTagValue(newValue, {\n        trigger: 'enter',\n        index: newValue.length - 1,\n        item: valueStr,\n        e: context.e,\n      });\n    }\n    props?.onEnter?.(newValue, { ...context, inputValue: value });\n  };\n\n  // 按下回退键，删除标签\n  const onInputBackspaceKeyUp = (value: InputValue) => {\n    if (!tagValue.value || !tagValue.value.length) return;\n    oldInputValue.value = value;\n  };\n  // 按下回退键，删除标签\n  const onInputBackspaceKeyDown = (value: InputValue, context: { e: KeyboardEvent }) => {\n    const { e } = context;\n    if (!tagValue.value || !tagValue.value.length || e.key === 'Process' || isReadonly.value) return;\n    // 回车键删除，输入框值为空时，才允许 Backspace 删除标签\n    const isDelete = /(Backspace|NumpadDelete)/i.test(e.code) || /(Backspace|NumpadDelete)/i.test(e.key);\n    if (!value && isDelete) {\n      const index = tagValue.value.length - 1;\n      const item = tagValue.value[index];\n      const trigger = 'backspace';\n      const newValue = tagValue.value.slice(0, -1);\n      setTagValue(newValue, { e, index, item, trigger });\n      onRemove.value?.({ e, index, item, trigger, value: newValue });\n    }\n    oldInputValue.value = value;\n  };\n\n  const renderLabel = ({ displayNode, label }: { displayNode: any; label: any }) => {\n    const newList = minCollapsedNum.value ? tagValue.value.slice(0, minCollapsedNum.value) : tagValue.value;\n    const list = displayNode\n      ? [displayNode]\n      : newList?.map?.((item, index) => {\n          const tagContent = renderTNode('tag', { params: { value: item } });\n          return (\n            <Tag\n              key={`${item}${index}`}\n              size={size.value}\n              disabled={isDisabled.value}\n              onClose={(context: { e: MouseEvent }) => onClose({ e: context.e, index })}\n              closable={!isReadonly.value && !isDisabled.value}\n              {...getDragProps.value?.(index, item)}\n              {...tagProps.value}\n            >\n              {tagContent ?? item}\n            </Tag>\n          );\n        }) || [];\n    if (![null, undefined, ''].includes(label)) {\n      list.unshift(\n        <div class={`${classPrefix.value}-tag-input__prefix`} key=\"label\">\n          {label}\n        </div>,\n      );\n    }\n    // 超出省略\n    if (newList.length !== (tagValue.value || []).length) {\n      const len = tagValue.value.length - newList.length;\n      const more = renderTNode('collapsedItems', {\n        params: {\n          value: tagValue.value,\n          count: tagValue.value.length - minCollapsedNum.value,\n          collapsedTags: tagValue.value.slice(minCollapsedNum.value, tagValue.value.length),\n          collapsedSelectedItems: tagValue.value.slice(minCollapsedNum.value, tagValue.value.length),\n          onClose,\n        },\n      });\n      list.push(\n        more ?? (\n          <Tag key=\"more\" size={size.value} {...tagProps.value}>\n            +{len}\n          </Tag>\n        ),\n      );\n    }\n    return list;\n  };\n\n  return {\n    tagValue,\n    clearAll,\n    onClose,\n    onInnerEnter,\n    onInputBackspaceKeyUp,\n    onInputBackspaceKeyDown,\n    renderLabel,\n  };\n}\n"],"names":["useTagList","props","renderTNode","useTNodeJSX","classPrefix","usePrefixClass","_toRefs","toRefs","value","modelValue","onRemove","max","minCollapsedNum","size","tagProps","getDragProps","_useVModel","useVModel","defaultValue","onChange","_useVModel2","_slicedToArray","tagValue","setTagValue","oldInputValue","ref","isDisabled","useDisabled","isReadonly","useReadonly","onClose","p","_onRemove$value","arr","_toConsumableArray","_arr$splice","splice","index","_arr$splice2","item","trigger","call","_objectSpread","clearAll","context","e","onInnerEnter","_tagValue$value","_props$onEnter","valueStr","String","trim","isLimitExceeded","length","newValue","Array","concat","onEnter","inputValue","onInputBackspaceKeyUp","onInputBackspaceKeyDown","key","isDelete","test","code","_onRemove$value2","slice","renderLabel","_ref","_newList$map","displayNode","label","newList","list","map","_getDragProps$value","tagContent","params","_createVNode","Tag","_mergeProps","_default","includes","unshift","len","more","count","collapsedTags","collapsedSelectedItems","push"],"mappings":"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"}