{"version":3,"file":"useTagList.mjs","sources":["../../../../components/tag-input/hooks/useTagList.tsx"],"sourcesContent":["import { computed, ComputedRef, ref, toRefs } from 'vue';\nimport { TagInputValue, TagInputChangeContext } from '../type';\nimport { TagInputProps } from '../types';\nimport { InputValue } from '../../input';\nimport Tag from '../../tag';\nimport {\n  useVModel,\n  useTNodeJSX,\n  useDisabled,\n  useReadonly,\n  usePrefixClass,\n  useEventForward,\n} from '@tdesign/shared-hooks';\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 tagValue = computed(() => _tagValue.value || []);\n  const oldInputValue = ref<InputValue>();\n\n  const isDisabled = useDisabled() as ComputedRef<boolean>;\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.concat(String(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.length) return;\n    oldInputValue.value = value;\n  };\n  // 按下回退键，删除标签\n  const onInputBackspaceKeyDown = (value: InputValue, context: { e: KeyboardEvent }) => {\n    const { e } = context;\n    if (!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          const tagEvents = useEventForward(tagProps.value, {\n            onClose: (context: { e: MouseEvent }) => onClose({ e: context.e, index }),\n          });\n          return (\n            <Tag\n              key={index}\n              size={size.value}\n              disabled={isDisabled.value}\n              closable={!isReadonly.value && !isDisabled.value}\n              {...getDragProps.value?.(index, item)}\n              {...tagEvents.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","tagValue","computed","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","_props$onEnter","valueStr","String","trim","isLimitExceeded","length","newValue","concat","onEnter","inputValue","onInputBackspaceKeyUp","onInputBackspaceKeyDown","key","isDelete","test","code","_onRemove$value2","slice","renderLabel","_ref","displayNode","label","newList","list","map","_getDragProps$value","tagContent","params","tagEvents","useEventForward","_createVNode","Tag","_mergeProps","_default","includes","unshift","len","more","count","collapsedTags","collapsedSelectedItems","push"],"mappings":"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"}