{"version":3,"file":"tag-group.vue2.mjs","sources":["../../../../../../packages/components/tag-group/src/tag-group.vue"],"sourcesContent":["<script lang=\"ts\">\nconst itemHeight = 36\n</script>\n<template>\r\n  <a-spin :spinning=\"loading\">\r\n    <div\r\n      ref=\"tagsTypeRef\"\r\n      :class=\"[\r\n        bem.b(),\r\n        props.size ? bem.m(props.size) : '',\r\n        props.overflowDisplay === 'wrap' ? bem.is('wrap') : '',\r\n      ]\"\r\n    >\r\n      <div ref=\"tagContainerRef\" :class=\"[bem.e('tag-container')]\">\r\n        <template v-for=\"(item, i) in sortedValue\" :key=\"i\">\r\n          <div\r\n            :ref=\"getTagRefs(i)\"\r\n            :class=\"[\r\n              bem.m('item'),\r\n              !shownArr.includes(item) ? bem.is('hidden') : '',\r\n            ]\"\r\n          >\r\n            <div :class=\"bem.m('text')\">\r\n              {{ item }}\r\n            </div>\r\n            <span\r\n              :class=\"[bem.m('close'), props.disabled ? bem.m('disabled') : '']\"\r\n              @click=\"handleDelByValue(item)\"\r\n            >\r\n              <ll-icon\r\n                icon-name=\"icon-close2\"\r\n                :class-name=\"bem.m('close-icon')\"\r\n              />\r\n            </span>\r\n          </div>\r\n        </template>\r\n        <div\r\n          v-if=\"more > 0\"\r\n          ref=\"moreRef\"\r\n          :class=\"bem.m('more')\"\r\n          @mouseenter=\"handleMoreMouseEnter\"\r\n          @mouseleave=\"handleMoreMouseLeave\"\r\n        >\r\n          +{{ more }}\r\n        </div>\r\n        <Teleport to=\"body\">\r\n          <div\r\n            v-if=\"moreVisible\"\r\n            ref=\"morePopoverRef\"\r\n            :class=\"bem.e('more-popover')\"\r\n            :style=\"morePopoverStyle\"\r\n            @mouseenter=\"handleMorePopoverEnter\"\r\n            @mouseleave=\"handleMorePopoverLeave\"\r\n          >\r\n            <div :class=\"bem.e('arrow')\" :style=\"moreArrowStyle\"></div>\r\n            <div :class=\"bem.e('more-list')\">\r\n              <div\r\n                v-for=\"(item, i) in hiddenTags\"\r\n                :key=\"i\"\r\n                :class=\"bem.e('more-item')\"\r\n              >\r\n                <span>{{ item }}</span>\r\n                <ll-icon\r\n                  icon-name=\"icon-delete\"\r\n                  @click.stop=\"handleDelByValue(item)\"\r\n                />\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </Teleport>\r\n        <div :class=\"bem.e('add-container')\">\r\n          <div\r\n            ref=\"btnRef\"\r\n            :class=\"[\r\n              mouseMove || visible ? bem.is('active') : '',\r\n              bem.m('add-item'),\r\n              props.disabled ? bem.m('disabled') : '',\r\n            ]\"\r\n            @click.stop=\"toggleVisible\"\r\n            @mouseover=\"mouseMove = true\"\r\n            @mouseleave=\"mouseMove = false\"\r\n          >\r\n            <ll-icon\r\n              :icon-name=\"addIcon || 'icon-add'\"\r\n              :color=\"'#666'\"\r\n              :class-name=\"bem.m('add-icon')\"\r\n            />\r\n            <span v-if=\"addText\" :class=\"bem.m('add-text')\">{{ addText }}</span>\r\n          </div>\r\n          <Teleport to=\"body\">\r\n            <div\r\n              v-if=\"visible\"\r\n              ref=\"popoverRef\"\r\n              :class=\"[\r\n                bem.e('popover'),\r\n                exceededMaxTagCount ? bem.m('exceeded') : '',\r\n              ]\"\r\n              :style=\"popoverStyle\"\r\n              @click.stop\r\n              @mousedown.stop\r\n            >\r\n              <div :class=\"bem.e('arrow')\" :style=\"arrowStyle\"></div>\r\n              <ll-input\r\n                ref=\"inputRef\"\r\n                v-model:value=\"inputValue\"\r\n                :size=\"props.size\"\r\n                :class=\"bem.e('search')\"\r\n                :is-gray=\"props.isGray\"\r\n                :placeholder=\"props.placeholder\"\r\n                :prefix-icon=\"`icon-search`\"\r\n                @press-enter.prevent=\"handleEnter\"\r\n              />\r\n              <template\r\n                v-if=\"filterOptionsValue.length > 0 || props.listLoading\"\r\n              >\r\n                <div\r\n                  :class=\"bem.m('select-box-container')\"\r\n                  :style=\"{\r\n                    paddingRight: scrollbarVisible ? '6px' : '12px',\r\n                  }\"\r\n                >\r\n                  <div\r\n                    v-if=\"props.virtual\"\r\n                    ref=\"selectBoxRef\"\r\n                    :class=\"[\r\n                      bem.m('select-box'),\r\n                      !scrollbarVisible ? bem.is('scrollbar-hidden') : '',\r\n                    ]\"\r\n                    style=\"position: relative\"\r\n                    @scroll=\"handleScroll\"\r\n                    @mouseenter=\"handleMouseEnterList\"\r\n                    @mouseleave=\"handleMouseLeaveList\"\r\n                  >\r\n                    <div\r\n                      :style=\"{\r\n                        height: `${totalHeight}px`,\r\n                        width: '100%',\r\n                      }\"\r\n                    />\r\n                    <ul\r\n                      :style=\"{\r\n                        transform: `translateY(${offsetTop}px)`,\r\n                        position: 'absolute',\r\n                        top: 0,\r\n                        left: 0,\r\n                        width: '100%',\r\n                      }\"\r\n                    >\r\n                      <li\r\n                        v-for=\"item in visibleData\"\r\n                        :key=\"item.index\"\r\n                        :class=\"[\r\n                          bem.m('select-item'),\r\n                          value.indexOf(item.value) >= 0 && item.value\r\n                            ? bem.m('select-check')\r\n                            : '',\r\n                        ]\"\r\n                        :style=\"\r\n                          item.isLoader\r\n                            ? 'justify-content: center; margin: 0; width: 100%'\r\n                            : ''\r\n                        \"\r\n                        @click=\"!item.isLoader && handleClickFilter(item.value)\"\r\n                      >\r\n                        <span :class=\"bem.m('select-text')\">\r\n                          {{ item.value }}\r\n                        </span>\r\n                        <ll-icon icon-name=\"icon-check\" color=\"#1890FF\" />\r\n                      </li>\r\n                    </ul>\r\n                    <li\r\n                      v-if=\"props.listLoading\"\r\n                      :class=\"bem.m('select-item')\"\r\n                      style=\"justify-content: center; margin: 0; width: 100%\"\r\n                    >\r\n                      <a-spin />\r\n                    </li>\r\n                  </div>\r\n                  <ul\r\n                    v-else\r\n                    ref=\"selectBoxRef\"\r\n                    :class=\"[\r\n                      bem.m('select-box'),\r\n                      !scrollbarVisible ? bem.is('scrollbar-hidden') : '',\r\n                    ]\"\r\n                    @scroll=\"handleScroll\"\r\n                    @mouseenter=\"handleMouseEnterList\"\r\n                    @mouseleave=\"handleMouseLeaveList\"\r\n                  >\r\n                    <li\r\n                      v-for=\"(item, i) in filterOptionsValue\"\r\n                      :key=\"i\"\r\n                      :class=\"[\r\n                        bem.m('select-item'),\r\n                        value.indexOf(item) >= 0 && item\r\n                          ? bem.m('select-check')\r\n                          : '',\r\n                      ]\"\r\n                      @click=\"handleClickFilter(item)\"\r\n                    >\r\n                      <span :class=\"bem.m('select-text')\">\r\n                        {{ item }}\r\n                      </span>\r\n                      <ll-icon icon-name=\"icon-check\" color=\"#1890FF\" />\r\n                    </li>\r\n                    <li\r\n                      v-if=\"props.listLoading\"\r\n                      :class=\"bem.m('select-item')\"\r\n                      style=\"justify-content: center; margin: 0; width: 100%\"\r\n                    >\r\n                      <a-spin />\r\n                    </li>\r\n                  </ul>\r\n                </div>\r\n              </template>\r\n\r\n              <div v-else :class=\"bem.e('empty')\">\r\n                <ll-empty :title=\"props.emptyText\" />\r\n              </div>\r\n            </div>\r\n          </Teleport>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </a-spin>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { createNamespace } from '@ll-plus/utils'\r\nimport { Form } from 'ant-design-vue'\r\nimport {\r\n  computed,\r\n  nextTick,\r\n  onMounted,\r\n  onUnmounted,\r\n  reactive,\r\n  ref,\r\n  toRef,\r\n  watch,\r\n} from 'vue'\r\nimport { tagGroupEmits, tagGroupProps } from './tag-group'\r\n\r\nimport LlEmpty from '@ll-plus/components/empty'\r\nimport type { Ref } from 'vue'\r\n\r\ndefineOptions({ name: 'LlTagGroup' })\r\n\r\nconst props = defineProps(tagGroupProps)\r\nconst emits = defineEmits(tagGroupEmits)\r\nconst bem = createNamespace('tag-group')\r\n// 获取表单项上下文，用于触发表单验证\r\nconst formItemContext = Form.useInjectFormItemContext()\r\n\r\nconst loading = ref(false)\r\nconst inputValue = ref('')\r\nconst visible = ref(false)\r\nconst inputRef = ref()\r\nconst more = ref(0) // 超过宽度的标签数量\r\nconst mouseMove = ref(false) // 鼠标是否移入添加按钮\r\nconst tagsTypeRef = ref<HTMLDivElement | null>(null) // 容器 DOM\r\nconst tagContainerRef = ref<HTMLDivElement | null>(null) // 标签容器 DOM\r\nconst tagRefs: Ref<HTMLDivElement>[] = reactive([]) // 标签 DOM 数组\r\nconst filterOptionsValue = ref<string[]>([]) // 当前展示的选项（会话快照 + 搜索过滤）\r\nconst sessionBaseOptions = ref<string[]>([]) // 会话快照：每次打开时初始化，selected 置顶，会话期间保持稳定\r\nconst customOptions = ref<string[]>([]) // 自定义过滤后的选项列表\r\nconst tagsTypeWidth = ref(0) // 容器宽度\r\nconst shownArr = ref<string[]>([]) // 当前显示的标签列表\r\nconst btnRef = ref() // 添加按钮 DOM\r\nconst popoverRef = ref<HTMLElement>() // 弹窗 DOM\r\nconst selectBoxRef = ref<HTMLElement | null>(null) // 选项滚动容器 DOM\r\nconst popoverStyle = ref({}) // 弹窗样式\r\nconst arrowStyle = ref({}) // 箭头样式\r\nconst moreRef = ref<HTMLElement>() // 更多按钮 DOM\r\nconst morePopoverRef = ref<HTMLElement>() // 更多弹窗 DOM\r\nconst morePopoverStyle = ref({}) // 更多弹窗样式\r\nconst moreArrowStyle = ref({}) // 更多箭头样式\r\nconst moreVisible = ref(false)\r\nconst moreIsHovering = ref(false)\r\nlet moreHideTimer: ReturnType<typeof setTimeout> | null = null\r\nlet animationFrameId: number | null = null // 动画帧 ID\r\nlet moreAnimationFrameId: number | null = null\r\n\r\n// 双向绑定值处理，将逗号分隔字符串转换为数组\r\nconst value = computed({\r\n  get: () => {\r\n    return props.value\r\n  },\r\n  set: (val: string[]) => {\r\n    emits('update:value', val)\r\n    emits('change', val)\r\n  },\r\n})\r\n\r\nconst exceededMaxTagCount = computed(() => {\r\n  return props.maxTagCount > 0 && value.value.length >= props.maxTagCount\r\n})\r\n\r\nconst innerOptions = computed(() => {\r\n  return props.options || []\r\n})\r\n\r\nconst concatOptions = computed(() => {\r\n  // 自定义新增项置顶，已有选项保持原始顺序不变，value.value 兜底外部已选值\r\n  const set = new Set([\r\n    ...customOptions.value,\r\n    ...innerOptions.value,\r\n    ...value.value,\r\n  ])\r\n  return Array.from(set)\r\n})\r\n\r\n// 排序函数，支持中文拼音排序\r\nconst sortTags = (tags: string[]) => {\r\n  if (props.sortBy === 'alphabetical') {\r\n    return [...tags].sort((a, b) => {\r\n      // 使用 localeCompare 进行排序，支持中文拼音\r\n      return a.localeCompare(b, 'zh-CN', { sensitivity: 'base' })\r\n    })\r\n  }\r\n  // 默认按添加顺序\r\n  return tags\r\n}\r\n\r\n// 排序后的值\r\nconst sortedValue = computed(() => {\r\n  return sortTags(value.value)\r\n})\r\n\r\nconst hiddenTags = computed(() => {\r\n  if (props.overflowDisplay !== 'collapse') return []\r\n  if (shownArr.value.length === 0) return sortedValue.value\r\n  return sortedValue.value.filter((item) => !shownArr.value.includes(item))\r\n})\r\n\r\n//获取标签的 DOM 引用\r\nconst getTagRefs = (i: number) => {\r\n  return (el: any) => {\r\n    if (el) {\r\n      tagRefs[i] = toRef(el)\r\n    } else {\r\n      tagRefs.splice(i, 1)\r\n    }\r\n  }\r\n}\r\n\r\nlet resizeObserver: ResizeObserver | null = null\r\n\r\n// 计算容器可视宽度\r\nconst getWidth = () => {\r\n  if (tagsTypeRef.value) {\r\n    // 减去预留给添加按钮和更多提示的宽度\r\n    tagsTypeWidth.value = tagsTypeRef.value.offsetWidth - 90\r\n  }\r\n}\r\n\r\n// 处理回车添加标签\r\nconst handleEnter = () => {\r\n  const val = inputValue.value.trim()\r\n  if (!val) return\r\n\r\n  // 已达最大标签数：不清空输入、不触发筛选，静默返回\r\n  if (exceededMaxTagCount.value) return\r\n\r\n  // 不允许创建且选项中不存在该值：无法添加，不清空输入、不触发筛选\r\n  if (!props.allowCreate && !concatOptions.value.includes(val)) return\r\n\r\n  // allowCreate 模式下，若选项中不存在则先添加到选项列表\r\n  if (props.allowCreate && !concatOptions.value.includes(val)) {\r\n    customOptions.value.push(val)\r\n    emits('update:options', concatOptions.value)\r\n    // 直接插入到会话快照头部，不重建列表，滚动位置自然保持\r\n    const prevScrollTop = selectBoxRef.value?.scrollTop ?? 0\r\n    sessionBaseOptions.value = [val, ...sessionBaseOptions.value]\r\n    filterOptionsValue.value = [val, ...filterOptionsValue.value]\r\n    if (prevScrollTop > 0) {\r\n      nextTick(() => {\r\n        const box = selectBoxRef.value\r\n        if (box) {\r\n          box.scrollTop = prevScrollTop + itemHeight\r\n          scrollTop.value = prevScrollTop + itemHeight\r\n        }\r\n      })\r\n    }\r\n  }\r\n\r\n  // 切换选中状态\r\n  if (concatOptions.value.includes(val)) {\r\n    const arr = [...value.value]\r\n    const idx = arr.indexOf(val)\r\n    if (idx < 0) {\r\n      arr.push(val)\r\n    } else {\r\n      arr.splice(idx, 1)\r\n    }\r\n    value.value = arr\r\n  }\r\n\r\n  inputValue.value = ''\r\n}\r\nconst handleFilter = () => {\r\n  // 基于会话快照过滤，保持列表稳定不重排\r\n  if (props.filter && typeof props.filter === 'function' && inputValue.value) {\r\n    filterOptionsValue.value = props.filter(\r\n      inputValue.value,\r\n      sessionBaseOptions.value,\r\n    )\r\n  } else {\r\n    filterOptionsValue.value = sessionBaseOptions.value\r\n  }\r\n}\r\n\r\n// 删除标签\r\n// 移除自定义选项（同步从 customOptions / sessionBaseOptions / filterOptionsValue 中删除）\r\nconst removeCustomOption = (item: string) => {\r\n  if (!customOptions.value.includes(item)) return\r\n  customOptions.value = customOptions.value.filter((o) => o !== item)\r\n  sessionBaseOptions.value = sessionBaseOptions.value.filter((o) => o !== item)\r\n  filterOptionsValue.value = filterOptionsValue.value.filter((o) => o !== item)\r\n  emits('update:options', concatOptions.value)\r\n}\r\n\r\nconst handleDelByValue = (tag: string) => {\r\n  if (!tag) return\r\n  removeCustomOption(tag)\r\n  value.value = value.value.filter((e) => e !== tag)\r\n}\r\n\r\n// 点击下拉选项过滤\r\nconst handleClickFilter = (item: string) => {\r\n  let arr = [...value.value]\r\n  if (arr.indexOf(item) >= 0) {\r\n    arr = arr.filter((e) => e !== item)\r\n    value.value = arr\r\n    removeCustomOption(item)\r\n  } else {\r\n    // 检查是否超过最大标签数\r\n    if (exceededMaxTagCount.value) {\r\n      return\r\n    }\r\n    arr.push(item)\r\n    value.value = arr\r\n  }\r\n  inputValue.value = ''\r\n}\r\n\r\n// 虚拟列表相关\r\n\r\nconst scrollTop = ref(0) // 记录滚动高度\r\nconst totalHeight = computed(() => {\r\n  return (\r\n    filterOptionsValue.value.length * itemHeight +\r\n    (props.listLoading ? itemHeight : 0)\r\n  )\r\n})\r\nconst visibleData = computed(() => {\r\n  const totalCount =\r\n    filterOptionsValue.value.length + (props.listLoading ? 1 : 0)\r\n  const visibleCount = Math.ceil(180 / itemHeight) + 4 // 可见行数 + 缓冲区\r\n\r\n  // 防止异步数据更新后 scrollTop 过时导致 start 超出范围（此时 visibleData 会变成空数组）\r\n  let start = Math.floor(scrollTop.value / itemHeight)\r\n  if (totalCount > 0 && start >= totalCount) {\r\n    start = Math.max(0, totalCount - visibleCount)\r\n  }\r\n\r\n  const end = Math.min(start + visibleCount, totalCount)\r\n  const result: any[] = []\r\n  for (let i = start; i < end; i++) {\r\n    const isLoader = i === filterOptionsValue.value.length && props.listLoading\r\n    result.push({\r\n      index: i,\r\n      value: isLoader ? '' : filterOptionsValue.value[i],\r\n      isLoader,\r\n    })\r\n  }\r\n  return result\r\n})\r\nconst offsetTop = computed(() => {\r\n  if (visibleData.value.length === 0) return 0\r\n  return visibleData.value[0].index * itemHeight\r\n})\r\n\r\nconst scrollbarVisible = ref(false)\r\nconst isHovering = ref(false)\r\nlet scrollTimer: any = null\r\n\r\nconst showScrollbar = () => {\r\n  scrollbarVisible.value = true\r\n  if (scrollTimer) clearTimeout(scrollTimer)\r\n}\r\n\r\nconst hideScrollbarWithDelay = () => {\r\n  if (scrollTimer) clearTimeout(scrollTimer)\r\n  scrollTimer = setTimeout(() => {\r\n    if (!isHovering.value) {\r\n      scrollbarVisible.value = false\r\n    }\r\n  }, 3000)\r\n}\r\n\r\nconst handleMouseEnterList = () => {\r\n  isHovering.value = true\r\n  showScrollbar()\r\n}\r\n\r\nconst handleMouseLeaveList = () => {\r\n  isHovering.value = false\r\n  hideScrollbarWithDelay()\r\n}\r\n\r\nconst handleScroll = (e: Event) => {\r\n  const target = e.target as HTMLElement\r\n  scrollTop.value = target.scrollTop\r\n  const { clientHeight, scrollHeight } = target\r\n  // 滚动到离底部 triggerDistance 高度时触发 scroll-bottom\r\n  if (target.scrollTop + clientHeight >= scrollHeight - props.triggerDistance) {\r\n    emits('scroll-bottom')\r\n  }\r\n  showScrollbar()\r\n  hideScrollbarWithDelay()\r\n}\r\n\r\n// 更新弹窗位置\r\nconst updatePosition = () => {\r\n  if (!visible.value || !btnRef.value || !popoverRef.value) {\r\n    if (animationFrameId !== null) {\r\n      // 如果不再显示，可以停止循环，但通常 watch 会处理\r\n    }\r\n    // 如果没有显示或者没有 ref，尝试下一帧（如果在显示中的话）\r\n    if (visible.value) animationFrameId = requestAnimationFrame(updatePosition)\r\n    return\r\n  }\r\n  const rect = btnRef.value.getBoundingClientRect()\r\n  const popRect = popoverRef.value.getBoundingClientRect()\r\n\r\n  // 计算位置，使得弹窗中心对齐按钮中心\r\n  let left = rect.left + rect.width / 2 - popRect.width / 2\r\n  const top = rect.bottom + 12\r\n\r\n  // 简单的边界处理\r\n  if (left < 10) left = 10\r\n  if (left + popRect.width > window.innerWidth - 10) {\r\n    left = window.innerWidth - popRect.width - 10\r\n  }\r\n  // 防止超出底部 (可选)\r\n  // if (top + popRect.height > window.innerHeight) top = rect.top - popRect.height - 12\r\n\r\n  popoverStyle.value = {\r\n    position: 'fixed',\r\n    left: `${left}px`,\r\n    top: `${top}px`,\r\n    zIndex: 2000,\r\n  }\r\n  // 箭头位置计算\r\n  const btnCenter = rect.left + rect.width / 2\r\n  const arrowLeft = btnCenter - left\r\n  arrowStyle.value = {\r\n    left: `${arrowLeft}px`,\r\n  }\r\n  animationFrameId = requestAnimationFrame(updatePosition)\r\n}\r\n\r\nconst updateMorePosition = () => {\r\n  if (!moreVisible.value || !moreRef.value || !morePopoverRef.value) {\r\n    if (moreVisible.value) {\r\n      moreAnimationFrameId = requestAnimationFrame(updateMorePosition)\r\n    }\r\n    return\r\n  }\r\n  const rect = moreRef.value.getBoundingClientRect()\r\n  const popRect = morePopoverRef.value.getBoundingClientRect()\r\n\r\n  let left = rect.left + rect.width / 2 - popRect.width / 2\r\n  const top = rect.bottom + 12\r\n\r\n  if (left < 10) left = 10\r\n  if (left + popRect.width > window.innerWidth - 10) {\r\n    left = window.innerWidth - popRect.width - 10\r\n  }\r\n\r\n  morePopoverStyle.value = {\r\n    position: 'fixed',\r\n    left: `${left}px`,\r\n    top: `${top}px`,\r\n    zIndex: 2000,\r\n  }\r\n  const btnCenter = rect.left + rect.width / 2\r\n  const arrowLeft = btnCenter - left\r\n  moreArrowStyle.value = {\r\n    left: `${arrowLeft}px`,\r\n  }\r\n  moreAnimationFrameId = requestAnimationFrame(updateMorePosition)\r\n}\r\n\r\nconst toggleVisible = () => {\r\n  visible.value = !visible.value\r\n}\r\n\r\nconst handleClickOutside = (e: Event) => {\r\n  if (!visible.value) return\r\n  const target = e.target as HTMLElement\r\n  // 判断点击是否在弹窗内部或按钮上\r\n  if (\r\n    (popoverRef.value && popoverRef.value.contains(target)) ||\r\n    (btnRef.value && btnRef.value.contains(target))\r\n  ) {\r\n    return\r\n  }\r\n  visible.value = false\r\n}\r\n\r\nconst showMorePopover = () => {\r\n  if (props.overflowDisplay !== 'collapse') return\r\n  if (hiddenTags.value.length === 0) return\r\n  moreVisible.value = true\r\n  if (moreHideTimer) {\r\n    clearTimeout(moreHideTimer)\r\n    moreHideTimer = null\r\n  }\r\n  nextTick(() => {\r\n    updateMorePosition()\r\n  })\r\n}\r\n\r\nconst hideMorePopoverImmediate = () => {\r\n  moreVisible.value = false\r\n  if (moreHideTimer) {\r\n    clearTimeout(moreHideTimer)\r\n    moreHideTimer = null\r\n  }\r\n  if (moreAnimationFrameId !== null) {\r\n    cancelAnimationFrame(moreAnimationFrameId)\r\n    moreAnimationFrameId = null\r\n  }\r\n}\r\n\r\nconst hideMorePopoverWithDelay = () => {\r\n  if (moreHideTimer) clearTimeout(moreHideTimer)\r\n  moreHideTimer = setTimeout(() => {\r\n    if (!moreIsHovering.value) {\r\n      moreVisible.value = false\r\n      if (moreAnimationFrameId !== null) {\r\n        cancelAnimationFrame(moreAnimationFrameId)\r\n        moreAnimationFrameId = null\r\n      }\r\n    }\r\n  }, 150)\r\n}\r\n\r\nconst handleMoreMouseEnter = () => {\r\n  moreIsHovering.value = true\r\n  showMorePopover()\r\n}\r\n\r\nconst handleMoreMouseLeave = () => {\r\n  moreIsHovering.value = false\r\n  hideMorePopoverWithDelay()\r\n}\r\n\r\nconst handleMorePopoverEnter = () => {\r\n  moreIsHovering.value = true\r\n  showMorePopover()\r\n}\r\n\r\nconst handleMorePopoverLeave = () => {\r\n  moreIsHovering.value = false\r\n  hideMorePopoverWithDelay()\r\n}\r\n\r\n// 监听 Popover 显示状态：打开时初始化会话快照（已选项置顶），关闭时清理\r\nwatch(visible, (val) => {\r\n  if (val) {\r\n    scrollTop.value = 0\r\n    // 构建会话快照：已选项（排序后）置顶，其余选项保持原始顺序\r\n    const all = concatOptions.value\r\n    const selectedSet = new Set(value.value)\r\n    const selected = sortTags(all.filter((i) => selectedSet.has(i)))\r\n    const unselected = all.filter((i) => !selectedSet.has(i))\r\n    sessionBaseOptions.value = [...selected, ...unselected]\r\n    filterOptionsValue.value = sessionBaseOptions.value\r\n    window.addEventListener('mousedown', handleClickOutside)\r\n    nextTick(() => {\r\n      updatePosition()\r\n      if (selectBoxRef.value) {\r\n        selectBoxRef.value.scrollTop = 0\r\n      }\r\n      setTimeout(() => {\r\n        inputRef.value?.focus()\r\n      }, 100)\r\n    })\r\n  } else {\r\n    inputValue.value = ''\r\n    window.removeEventListener('mousedown', handleClickOutside)\r\n    if (animationFrameId !== null) {\r\n      cancelAnimationFrame(animationFrameId)\r\n      animationFrameId = null\r\n    }\r\n  }\r\n})\r\n\r\nwatch(\r\n  [filterOptionsValue, () => props.listLoading],\r\n  () => {\r\n    if (!visible.value) return\r\n    // 立即用数据长度修正 scrollTop.value，保证 visibleData 能在当前 tick 计算出有效结果\r\n    const maxScrollTopByData = Math.max(\r\n      0,\r\n      (filterOptionsValue.value.length + (props.listLoading ? 1 : 0) - 1) *\r\n        itemHeight,\r\n    )\r\n    if (scrollTop.value > maxScrollTopByData) {\r\n      scrollTop.value = maxScrollTopByData\r\n    }\r\n    // nextTick 后再与 DOM 实际 scrollTop 对齐\r\n    nextTick(() => {\r\n      const box = selectBoxRef.value\r\n      if (!box) return\r\n      const maxScrollTop = Math.max(0, box.scrollHeight - box.clientHeight)\r\n      if (box.scrollTop > maxScrollTop) {\r\n        box.scrollTop = maxScrollTop\r\n      }\r\n      scrollTop.value = box.scrollTop\r\n    })\r\n  },\r\n  { deep: true },\r\n)\r\n\r\nwatch(\r\n  [\r\n    () => props.overflowDisplay,\r\n    () => more.value,\r\n    () => hiddenTags.value.length,\r\n  ],\r\n  () => {\r\n    if (props.overflowDisplay !== 'collapse' || more.value <= 0) {\r\n      hideMorePopoverImmediate()\r\n      return\r\n    }\r\n    if (hiddenTags.value.length === 0) {\r\n      hideMorePopoverImmediate()\r\n    }\r\n  },\r\n)\r\n\r\n// 监听外部选项变化（异步加载场景）：弹窗打开期间合并新数据到会话快照并重新过滤\r\nwatch(\r\n  () => props.options,\r\n  (newOpts) => {\r\n    if (!visible.value) return\r\n    const incoming = newOpts || []\r\n    // 用 Set 构建最终快照，彻底避免任何来源的重复：\r\n    // 1. 保留旧快照中仍然有效的项（已选 / 自定义 / 仍在新选项中）\r\n    // 2. 追加新增项（incoming 中快照里没有的）\r\n    // 全部通过 Set 去重后转回数组\r\n    const allKnown = new Set([\r\n      ...value.value,\r\n      ...customOptions.value,\r\n      ...incoming,\r\n    ])\r\n    const kept = sessionBaseOptions.value.filter((item) => allKnown.has(item))\r\n    const keptSet = new Set(kept)\r\n    // 用 Set 对 added 自身也去重，防止 incoming 本身含重复项\r\n    const addedSet = new Set(incoming.filter((item) => !keptSet.has(item)))\r\n    sessionBaseOptions.value = [...kept, ...addedSet]\r\n    handleFilter()\r\n  },\r\n  { deep: true },\r\n)\r\n\r\n// 监听值变化和容器宽度变化，计算需要折叠的标签\r\nwatch(\r\n  [\r\n    () => value.value.length,\r\n    tagsTypeWidth,\r\n    () => props.sortBy,\r\n    () => props.overflowDisplay,\r\n    () => props.collapseThreshold,\r\n  ],\r\n  async (n, o) => {\r\n    await nextTick()\r\n\r\n    // 触发 FormItem 的校验\r\n    const checkValidate = () => {\r\n      if (o && o[0]) {\r\n        if (n[0] !== o[0]) {\r\n          formItemContext.onFieldChange()\r\n          formItemContext.onFieldBlur()\r\n        }\r\n      }\r\n    }\r\n\r\n    if (props.overflowDisplay === 'wrap') {\r\n      shownArr.value = sortedValue.value\r\n      more.value = 0\r\n      checkValidate()\r\n      return\r\n    }\r\n\r\n    if (props.overflowDisplay === 'collapse' && props.collapseThreshold > 0) {\r\n      const sorted = sortedValue.value\r\n      shownArr.value = sorted.slice(0, props.collapseThreshold)\r\n      const diff = sorted.length - props.collapseThreshold\r\n      more.value = diff > 0 ? diff : 0\r\n      checkValidate()\r\n      return\r\n    }\r\n\r\n    const arr: string[] = []\r\n    let moreLeftValue = 0\r\n    const sorted = sortedValue.value\r\n    // 遍历计算每个标签的宽度是否超出容器\r\n    for (let i = 0; i < sorted.length; i++) {\r\n      // 边界检查：元素可能未挂载\r\n      const tagEl = tagRefs[i]?.value\r\n      if (!tagEl) continue\r\n\r\n      const targetWidth = tagEl.offsetWidth + 10 // 加上间距\r\n\r\n      if (moreLeftValue + targetWidth >= n[1]) {\r\n        break\r\n      } else {\r\n        moreLeftValue += targetWidth\r\n        arr.push(sorted[i])\r\n      }\r\n    }\r\n\r\n    // 更新剩余数量\r\n    const diff = n[0] - arr.length\r\n    more.value = diff > 0 ? diff : 0\r\n\r\n    shownArr.value = arr\r\n\r\n    checkValidate()\r\n  },\r\n  {\r\n    deep: true,\r\n    immediate: true,\r\n  },\r\n)\r\n\r\nwatch(inputValue, () => {\r\n  emits('input', inputValue.value)\r\n  handleFilter()\r\n})\r\n\r\n// 生命周期：挂载 ResizeObserver\r\nonMounted(() => {\r\n  nextTick(() => {\r\n    // 确保初始计算正确，尤其是在组件初始时可能存在的布局变化\r\n    getWidth()\r\n  })\r\n  if (tagsTypeRef.value) {\r\n    resizeObserver = new ResizeObserver(getWidth)\r\n    resizeObserver.observe(tagsTypeRef.value)\r\n  }\r\n})\r\n\r\n// 生命周期：清理 ResizeObserver\r\nonUnmounted(() => {\r\n  resizeObserver?.disconnect()\r\n  resizeObserver = null\r\n  window.removeEventListener('mousedown', handleClickOutside)\r\n  if (animationFrameId !== null) {\r\n    cancelAnimationFrame(animationFrameId)\r\n    animationFrameId = null\r\n  }\r\n  hideMorePopoverImmediate()\r\n})\r\n</script>\r\n"],"names":["sorted","diff","_createBlock","_createElementVNode","_normalizeClass","_unref","_openBlock","_createElementBlock","_Fragment","_renderList","_createVNode","_Teleport","_withModifiers","addIcon","addText","_normalizeStyle","_toDisplayString"],"mappings":"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"}