{"version":3,"file":"select.vue2.cjs","sources":["../../../components/select/select.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { Icon } from '@/components/icon'\nimport { Input } from '@/components/input'\nimport { NativeScroll } from '@/components/native-scroll'\nimport { Option } from '@/components/option'\nimport { Overflow } from '@/components/overflow'\nimport { Popper } from '@/components/popper'\nimport { Renderer } from '@/components/renderer'\nimport { Tag } from '@/components/tag'\nimport { Tooltip } from '@/components/tooltip'\nimport { VirtualList } from '@/components/virtual-list'\nimport { useFieldStore } from '@/components/form'\n\nimport { computed, nextTick, onMounted, reactive, ref, toRef, watch, watchEffect } from 'vue'\n\nimport {\n  placementWhileList,\n  useClickOutside,\n  useHover,\n  useModifier,\n  useMounted,\n  usePopper,\n} from '@vexip-ui/hooks'\nimport {\n  createIconProp,\n  createSizeProp,\n  createStateProp,\n  emitEvent,\n  useIcons,\n  useLocale,\n  useNameHelper,\n  useProps,\n} from '@vexip-ui/config'\nimport {\n  decide,\n  getLast,\n  getRangeWidth,\n  isNull,\n  removeArrayItem,\n  toAttrValue,\n} from '@vexip-ui/utils'\nimport { selectProps } from './props'\nimport { defaultKeyConfig } from './symbol'\n\nimport type { InputExposed } from '@/components/input'\nimport type { PopperExposed } from '@/components/popper'\nimport type { TooltipExposed } from '@/components/tooltip'\nimport type { VirtualListExposed } from '@/components/virtual-list'\nimport type {\n  ChangeEvent,\n  SelectBaseValue,\n  SelectEvent,\n  SelectOptionState,\n  SelectSlots,\n  SelectValue,\n} from './symbol'\n\nfunction isSameValue(newValue: SelectValue, oldValue: SelectValue) {\n  const isNewArray = Array.isArray(newValue)\n  const isOldArray = Array.isArray(oldValue)\n\n  if (isNewArray !== isOldArray) return false\n\n  if (isNewArray && isOldArray) {\n    if (newValue.length !== oldValue.length) return false\n\n    for (let i = 0, len = newValue.length; i < len; ++i) {\n      if (newValue[i] !== oldValue[i]) return false\n    }\n\n    return true\n  }\n\n  if (isNull(newValue)) return isNull(oldValue)\n\n  return newValue === oldValue\n}\n\ndefineOptions({ name: 'Select' })\n\nconst {\n  idFor,\n  labelId,\n  state,\n  disabled,\n  loading,\n  size,\n  validateField,\n  clearField,\n  getFieldValue,\n  setFieldValue,\n} = useFieldStore<SelectValue>(focus)\n\nconst nh = useNameHelper('select')\n\nconst _props = defineProps(selectProps)\nconst props = useProps('select', _props, {\n  size: createSizeProp(size),\n  state: createStateProp(state),\n  locale: null,\n  visible: {\n    default: false,\n    static: true,\n  },\n  options: {\n    default: () => [],\n    static: true,\n  },\n  disabled: () => disabled.value,\n  transitionName: () => nh.ns('drop'),\n  outsideClose: true,\n  placeholder: null,\n  prefix: createIconProp(),\n  prefixColor: '',\n  suffix: createIconProp(),\n  suffixColor: '',\n  noSuffix: false,\n  value: {\n    default: () => getFieldValue()!,\n    static: true,\n  },\n  multiple: false,\n  clearable: false,\n  maxListHeight: 300,\n  listClass: null,\n  placement: {\n    default: 'bottom',\n    validator: value => placementWhileList.includes(value),\n  },\n  transfer: false,\n  optionCheck: false,\n  emptyText: null,\n  staticSuffix: false,\n  loading: () => loading.value,\n  loadingIcon: createIconProp(),\n  loadingLock: false,\n  loadingEffect: null,\n  keyConfig: () => ({}),\n  filter: false,\n  ignoreCase: false,\n  creatable: false,\n  transparent: false,\n  maxTagCount: 0,\n  noRestTip: false,\n  tagType: null,\n  noPreview: false,\n  remote: false,\n  fitPopper: false,\n  name: {\n    default: '',\n    static: true,\n  },\n  popperAlive: null,\n  countLimit: 0,\n  filterPosition: 'in-control',\n  slots: () => ({}),\n  shift: true,\n})\n\nconst emit = defineEmits(['update:value', 'update:visible', 'update:label'])\n\nconst slots = defineSlots<SelectSlots>()\n\nconst locale = useLocale('select', toRef(props, 'locale'))\nconst icons = useIcons()\n\nconst currentVisible = ref(props.visible)\nconst currentLabels = ref<string[]>([])\nconst currentValues = ref<SelectBaseValue[]>([])\nconst currentIndex = ref(-1)\nconst placement = toRef(props, 'placement')\nconst transfer = toRef(props, 'transfer')\n// const listHeight = ref<string>()\nconst baseOptions = ref<SelectOptionState[]>([])\nconst currentFilter = ref('')\nconst anchorWidth = ref(0)\nconst userOptions = ref<SelectOptionState[]>([])\nconst restTagCount = ref(0)\nconst restTipShow = ref(false)\nconst composing = ref(false)\n\nconst { isMounted } = useMounted()\n\nconst dynamicOption = reactive<SelectOptionState>({\n  disabled: false,\n  divided: false,\n  title: '',\n  value: '',\n  label: '',\n  group: false,\n  depth: 0,\n  parent: null,\n  hidden: false,\n  hitting: true,\n  data: '',\n})\n\nconst optionValues = reactive(new Set<string | number>())\nconst hittingOption = ref<SelectOptionState>()\nconst optionStates = computed(() => userOptions.value.concat(baseOptions.value))\nconst visibleOptions = computed(() => optionStates.value.filter(state => !state.hidden))\n\nconst keyConfig = computed(() => ({ ...defaultKeyConfig, ...props.keyConfig }))\n\nconst wrapper = useClickOutside(handleClickOutside)\nconst nativeInput = ref<HTMLInputElement>()\nconst filterInput = ref<InputExposed>()\nconst device = ref<HTMLElement>()\nconst virtualList = ref<VirtualListExposed>()\nconst popper = ref<PopperExposed>()\nconst restTip = ref<TooltipExposed>()\n\nconst input = computed(() => filterInput.value?.input ?? nativeInput.value)\n\nconst { reference, transferTo, updatePopper } = usePopper({\n  placement,\n  transfer,\n  wrapper,\n  popper: computed(() => popper.value?.wrapper),\n  isDrop: true,\n  shift: toRef(props, 'shift'),\n})\nconst { isHover } = useHover(reference)\n\nconst cachedSelected = reactive(new Map<SelectBaseValue, SelectOptionState>())\nconst optionValueMap = ref(new Map<SelectBaseValue, SelectOptionState>())\n\nlet emittedValue: typeof props.value | null = props.value\n\nconst updateTrigger = ref(0)\n\nwatchEffect(() => {\n  /* eslint-disable @typescript-eslint/no-unused-expressions */\n  props.keyConfig.value\n  props.keyConfig.label\n  props.keyConfig.disabled\n  props.keyConfig.divided\n  props.keyConfig.title\n  props.keyConfig.group\n  props.keyConfig.children\n\n  // If we only read the `props.options`, when user use Array native methods to\n  // change options, Vue will not trigger the watch callback\n  for (let i = 0, len = props.options.length; i < len; ++i) {\n    props.options[i]\n  }\n  /* eslint-enable */\n\n  updateTrigger.value++\n})\n\nwatch(updateTrigger, initOptionState, { immediate: true })\n\nfunction initOptionState() {\n  const {\n    value: valueKey,\n    label: labelKey,\n    disabled: disabledKey,\n    divided: dividedKey,\n    title: titleKey,\n    group: groupKey,\n    children: childrenKey,\n  } = keyConfig.value\n  const oldMap = optionValueMap.value\n  const map = new Map<string | number, SelectOptionState>()\n  const states: SelectOptionState[] = []\n  const loop = props.options\n    .map(option => ({ option, depth: 0, parent: null as SelectOptionState | null }))\n    .reverse()\n\n  optionValues.clear()\n\n  for (const option of userOptions.value) {\n    map.set(option.value, option)\n    optionValues.add(option.value)\n  }\n\n  while (loop.length) {\n    const { option, depth, parent } = loop.pop()!\n    const rawOption = typeof option === 'string' ? { [valueKey]: option } : option\n    const group = !!rawOption[groupKey]\n    const value = rawOption[valueKey]\n\n    if (!group && isNull(value)) continue\n\n    const label = rawOption[labelKey] || String(value)\n    const {\n      [disabledKey]: disabled = false,\n      [dividedKey]: divided = false,\n      [titleKey]: title = '',\n      [childrenKey]: children = null,\n    } = rawOption\n    const oldState = oldMap.get(rawOption.value)\n    const optionState = reactive({\n      disabled,\n      divided,\n      title,\n      value,\n      label,\n      group,\n      depth,\n      parent,\n      hidden: oldState?.hidden ?? false,\n      hitting: oldState?.hitting ?? false,\n      data: option,\n    }) as SelectOptionState\n\n    states.push(optionState)\n\n    if (!group) {\n      map.set(value, optionState)\n      optionValues.add(String(value))\n    }\n\n    if (Array.isArray(children) && children.length) {\n      loop.push(\n        ...children\n          .map(child => {\n            return { option: child, depth: depth + 1, parent: optionState }\n          })\n          .reverse(),\n      )\n    }\n  }\n\n  optionValueMap.value = map\n  baseOptions.value = states\n\n  initValueAndLabel(emittedValue)\n}\n\nuseModifier({\n  target: wrapper,\n  passive: false,\n  onKeyDown: (event, modifier) => {\n    if (composing.value) {\n      event.stopPropagation()\n      return\n    }\n\n    if (!currentVisible.value) {\n      if (modifier.space || modifier.enter) {\n        event.preventDefault()\n        event.stopPropagation()\n        toggleVisible()\n      }\n\n      return\n    }\n\n    if (modifier.tab || modifier.escape) {\n      setVisible(false)\n      modifier.resetAll()\n\n      return\n    }\n\n    decide(\n      [\n        [\n          () => modifier.up || modifier.down,\n          () => {\n            const options = visibleOptions.value\n            const length = options.length\n\n            if (!length) return\n\n            const step = modifier.down ? 1 : -1\n\n            let index = (Math.max(-1, currentIndex.value + step) + length) % length\n            let option = options[index]\n\n            for (let i = 0; (option.disabled || option.group) && i < length; ++i) {\n              index += step\n              index = (index + length) % length\n              option = options[index]\n            }\n\n            updateHitting(index)\n          },\n        ],\n        [\n          () => modifier.enter || (!props.filter && modifier.space),\n          () => {\n            if (currentIndex.value >= 0) {\n              handleSelect(totalOptions.value[currentIndex.value])\n            } else if (showDynamic.value) {\n              handleSelect(dynamicOption)\n            } else {\n              setVisible(false)\n            }\n          },\n        ],\n      ],\n      {\n        beforeMatchAny: () => {\n          event.preventDefault()\n          event.stopPropagation()\n        },\n        afterMatchAny: modifier.resetAll,\n      },\n    )\n  },\n})\n\nconst className = computed(() => {\n  return {\n    [nh.b()]: true,\n    [nh.ns('input-vars')]: true,\n    [nh.bs('vars')]: true,\n    [nh.bm('inherit')]: props.inherit,\n    [nh.bm('multiple')]: props.multiple,\n    [nh.bm('filter')]: props.filter,\n    [nh.bm('responsive')]: props.multiple && props.maxTagCount <= 0,\n    [nh.bm('disabled')]: props.disabled,\n  }\n})\nconst readonly = computed(() => props.loading && props.loadingLock)\nconst selectorClass = computed(() => {\n  const baseCls = nh.be('selector')\n\n  return {\n    [baseCls]: true,\n    [`${baseCls}--focused`]: !props.disabled && currentVisible.value,\n    [`${baseCls}--disabled`]: props.disabled,\n    [`${baseCls}--readonly`]: readonly.value,\n    [`${baseCls}--loading`]: props.loading,\n    [`${baseCls}--${props.size}`]: props.size !== 'default',\n    [`${baseCls}--${props.state}`]: props.state !== 'default',\n    [`${baseCls}--has-prefix`]: hasPrefix.value,\n    [`${baseCls}--has-suffix`]: !props.noSuffix,\n    [`${baseCls}--transparent`]: props.transparent,\n  }\n})\nconst hasValue = computed(\n  () => !isNull(currentValues.value[0]) && (props.multiple || currentValues.value[0] !== ''),\n)\nconst hasPrefix = computed(() => !!(slots.prefix || props.prefix || props.slots.prefix))\nconst showDynamic = computed(() => {\n  return !!(\n    props.filter &&\n    props.creatable &&\n    dynamicOption.value &&\n    !optionValues.has(dynamicOption.value)\n  )\n})\nconst totalOptions = computed(() => {\n  return showDynamic.value ? [dynamicOption].concat(visibleOptions.value) : visibleOptions.value\n})\nconst normalOptions = computed(() => optionStates.value.filter(option => !option.group))\nconst optionParentMap = computed(() => {\n  const options = normalOptions.value\n  const map = new Map<string | number, SelectOptionState>()\n\n  for (let i = 0, len = options.length; i < len; ++i) {\n    const option = options[i]\n\n    if (option.parent) {\n      map.set(option.value, option.parent)\n    }\n  }\n\n  return map\n})\nconst showClear = computed(() => {\n  return !props.disabled && !readonly.value && props.clearable && isHover.value && hasValue.value\n})\nconst previewOption = computed(() => {\n  return !props.noPreview && currentVisible.value ? hittingOption.value : undefined\n})\nconst limited = computed(() => {\n  return props.multiple && props.countLimit > 0 && currentValues.value.length >= props.countLimit\n})\nconst showPlaceholder = computed(() => {\n  if (props.filterPosition !== 'in-control') {\n    return (\n      !hasValue.value && !previewOption.value && !!(props.placeholder ?? locale.value.placeholder)\n    )\n  }\n\n  // 采用反推，出现下列情况时不显示：\n  // 1. 开始组合（如输入了任意拼音）\n  // 2. 有值且 未开预览/多选模式/未打开列表\n  // 3. 没有预览选项且没有合法的占位值\n  // 4. 打开列表且输入了过滤值\n  return (\n    !composing.value &&\n    !(hasValue.value && (props.noPreview || props.multiple || !currentVisible.value)) &&\n    !(!previewOption.value && !(props.placeholder ?? locale.value.placeholder)) &&\n    !(currentVisible.value && currentFilter.value)\n  )\n})\n\nfunction getOptionFromMap(value?: SelectBaseValue | null) {\n  if (isNull(value)) return null\n\n  return optionValueMap.value.get(value) ?? cachedSelected.get(value) ?? null\n}\n\nfunction fitPopperWidth() {\n  requestAnimationFrame(() => {\n    updatePopper()\n\n    if (wrapper.value && popper.value?.wrapper) {\n      if (typeof props.fitPopper === 'number') {\n        popper.value.wrapper.style.width = `${props.fitPopper}px`\n      } else if (props.fitPopper) {\n        popper.value.wrapper.style.width = `${wrapper.value.offsetWidth}px`\n      } else {\n        popper.value.wrapper.style.minWidth = `${wrapper.value.offsetWidth}px`\n      }\n    }\n  })\n}\n\nwatch(\n  () => props.visible,\n  value => {\n    currentVisible.value = value\n  },\n)\nwatch(currentVisible, value => {\n  if (value) {\n    restTipShow.value = false\n    initHittingIndex()\n    fitPopperWidth()\n  }\n\n  if (props.filterPosition !== 'in-control') {\n    requestAnimationFrame(syncInputValue)\n  } else {\n    syncInputValue()\n  }\n})\nwatch(\n  () => props.value,\n  value => {\n    if (!emittedValue || !isSameValue(value, emittedValue)) {\n      emittedValue = value\n      initValueAndLabel(value)\n      syncInputValue()\n    }\n  },\n)\nwatch(\n  () => props.disabled,\n  value => {\n    if (value) {\n      setVisible(false)\n    }\n  },\n)\nwatch(readonly, value => {\n  if (value) {\n    setVisible(false)\n  }\n})\nwatch(currentFilter, value => {\n  dynamicOption.value = value\n  dynamicOption.label = value\n  dynamicOption.data = value\n\n  filterOptions(value)\n})\n\ndefineExpose({\n  idFor,\n  labelId,\n  currentVisible,\n  currentValues,\n  currentLabels,\n  optionStates,\n  isHover,\n  currentFilter,\n  composing,\n  visibleOptions,\n  totalOptions,\n\n  wrapper,\n  reference,\n  popper,\n  input,\n  device,\n  virtualList,\n  restTip,\n\n  updatePopper,\n  isSelected,\n  getOptionFromMap,\n  updateHitting,\n  handleClear,\n  focus,\n  blur: () => {\n    input.value?.blur()\n    reference.value?.blur()\n  },\n})\n\nonMounted(() => {\n  syncInputValue()\n\n  if (props.visible) {\n    restTipShow.value = false\n    initHittingIndex()\n    fitPopperWidth()\n  }\n})\n\nfunction initValueAndLabel(value: SelectValue | null) {\n  if (isNull(value)) {\n    currentValues.value = []\n    currentLabels.value = []\n    return\n  }\n\n  const normalizedValue = !Array.isArray(value) ? [value] : value\n\n  const valueSet = new Set(normalizedValue)\n  const selectedValues: SelectBaseValue[] = []\n  const selectedLabels: string[] = []\n\n  valueSet.forEach(value => {\n    let option = getOptionFromMap(value)\n\n    if (option) {\n      selectedValues.push(option.value)\n      selectedLabels.push(option.label)\n\n      if (!cachedSelected.has(option.value)) {\n        cachedSelected.set(option.value, option)\n      }\n    } else if (props.remote) {\n      option = reactive({\n        value,\n        disabled: false,\n        divided: false,\n        title: '',\n        label: String(value),\n        group: false,\n        depth: -1,\n        parent: null,\n        hidden: true,\n        hitting: false,\n        data: value,\n      }) as SelectOptionState\n\n      cachedSelected.set(value, option)\n      selectedValues.push(value)\n      selectedLabels.push(option.label)\n    }\n  })\n\n  for (const cachedValue of Array.from(cachedSelected.keys())) {\n    if (!valueSet.has(cachedValue)) {\n      cachedSelected.delete(cachedValue)\n    }\n  }\n\n  currentValues.value = selectedValues\n  currentLabels.value = selectedLabels\n\n  initHittingIndex()\n  filterOptions(currentFilter.value)\n}\n\nfunction initHittingIndex() {\n  const value = currentValues.value[0]\n\n  if (isNull(value)) {\n    updateHitting(-1)\n  } else {\n    if (!isMounted.value) return\n\n    updateHitting(visibleOptions.value.findIndex(option => option.value === value))\n  }\n}\n\nfunction setVisible(visible: boolean) {\n  if (currentVisible.value === visible) return\n\n  currentVisible.value = visible\n\n  emit('update:visible', visible)\n  emitEvent(props.onToggle, visible)\n}\n\nfunction updateHitting(hitting: number, ensureInView = true) {\n  currentIndex.value = hitting\n  hittingOption.value = undefined\n\n  let index = -1\n\n  optionStates.value.forEach(option => {\n    if (!option.hidden) {\n      index += 1\n      option.hitting = hitting === index\n\n      if (option.hitting) {\n        hittingOption.value = option\n      }\n    } else {\n      option.hitting = false\n    }\n  })\n\n  if (ensureInView && currentVisible.value && virtualList.value) {\n    virtualList.value.ensureIndexInView(hitting)\n  }\n}\n\nfunction isSelected(option: SelectOptionState) {\n  if (props.multiple) {\n    return currentValues.value.includes(option.value)\n  }\n\n  return currentValues.value[0] === option.value\n}\n\nfunction filterOptions(inputValue: string) {\n  const filter = props.filter\n\n  if (!filter || props.remote) return\n\n  if (!inputValue) {\n    optionStates.value.forEach(state => {\n      state.hidden = false\n    })\n  } else {\n    optionStates.value.forEach(state => {\n      state.hidden = true\n    })\n\n    if (typeof filter === 'function') {\n      normalOptions.value.forEach(state => {\n        state.hidden = !filter(inputValue, state)\n      })\n    } else {\n      if (props.ignoreCase) {\n        const ignoreCaseValue = inputValue.toString().toLocaleLowerCase()\n\n        normalOptions.value.forEach(state => {\n          state.hidden = !state.label?.toString().toLocaleLowerCase().includes(ignoreCaseValue)\n        })\n      } else {\n        normalOptions.value.forEach(state => {\n          state.hidden = !state.label?.toString().includes(inputValue?.toString())\n        })\n      }\n    }\n\n    const parentMap = optionParentMap.value\n\n    normalOptions.value.forEach(option => {\n      if (!option.hidden && option.parent) {\n        let parent = parentMap.get(option.value) || null\n\n        while (parent && parent.hidden) {\n          parent.hidden = false\n          parent = parent.parent\n        }\n      }\n    })\n  }\n\n  updateHitting(currentIndex.value)\n}\n\nfunction handleTagClose(value?: SelectBaseValue | null) {\n  if (props.disabled || readonly.value) return\n\n  !isNull(value) && handleSelect(getOptionFromMap(value))\n}\n\nfunction handleRestTagClose(value?: SelectBaseValue | null) {\n  handleTagClose(value)\n\n  if (restTipShow.value) {\n    restTip.value?.updatePopper()\n  }\n}\n\nfunction handleSelect(option?: SelectOptionState | null) {\n  if (!option) return\n\n  const selected = isSelected(option)\n  const value = option.value\n\n  if (selected) {\n    if (userOptions.value.find(item => item.value === value)) {\n      removeArrayItem(userOptions.value, item => item.value === value)\n      optionValueMap.value.delete(value)\n    }\n\n    cachedSelected.delete(value)\n  } else {\n    if (!props.multiple) {\n      userOptions.value.length = 0\n    }\n\n    if (limited.value) return\n\n    if (dynamicOption.value && value === dynamicOption.value) {\n      const newOption = { ...dynamicOption }\n\n      userOptions.value.push(newOption)\n      optionValueMap.value.set(value, newOption)\n    }\n\n    cachedSelected.set(option.value, option)\n  }\n\n  emitEvent(\n    props[props.multiple && selected ? 'onCancel' : 'onSelect'] as SelectEvent,\n    value,\n    option.data,\n  )\n  handleChange(option)\n\n  if (props.multiple) {\n    if (props.filterPosition === 'in-control') {\n      currentFilter.value = ''\n      syncInputValue()\n    }\n\n    requestAnimationFrame(updatePopper)\n  } else {\n    setVisible(false)\n  }\n\n  anchorWidth.value = 0\n}\n\nfunction handleChange(option: SelectOptionState) {\n  if (props.multiple) {\n    if (isSelected(option)) {\n      const index = currentValues.value.findIndex(v => v === option.value)\n\n      if (~index) {\n        currentValues.value.splice(index, 1)\n        currentLabels.value.splice(index, 1)\n      }\n    } else {\n      currentValues.value.push(option.value)\n      currentLabels.value.push(option.label)\n    }\n\n    emittedValue = Array.from(currentValues.value)\n\n    emit('update:value', emittedValue)\n    emit('update:label', currentLabels.value)\n    setFieldValue(emittedValue)\n    emitEvent(\n      props.onChange as ChangeEvent,\n      emittedValue,\n      emittedValue.map(value => getOptionFromMap(value)?.data ?? value),\n    )\n    validateField()\n  } else {\n    const prevValue = currentValues.value[0]\n\n    currentValues.value.length = 0\n    currentLabels.value.length = 0\n    currentValues.value.push(option.value)\n    currentLabels.value.push(option.label)\n\n    if (prevValue !== option.value) {\n      emittedValue = option.value\n\n      emit('update:value', emittedValue)\n      emit('update:label', currentLabels.value[0])\n      setFieldValue(emittedValue)\n      emitEvent(props.onChange as ChangeEvent, emittedValue, option.data)\n      validateField()\n    }\n  }\n}\n\nfunction toggleVisible() {\n  if (props.disabled || readonly.value) return\n\n  setVisible(!currentVisible.value)\n}\n\nfunction handleClickOutside() {\n  restTipShow.value = false\n  emitEvent(props.onClickOutside)\n\n  if (props.outsideClose && currentVisible.value) {\n    setVisible(false)\n    emitEvent(props.onOutsideClose)\n  }\n}\n\nfunction handleClear() {\n  if (props.disabled || readonly.value) return\n\n  if (props.clearable) {\n    for (const option of userOptions.value) {\n      optionValueMap.value.delete(option.value)\n    }\n\n    cachedSelected.clear()\n\n    userOptions.value.length = 0\n    currentValues.value.length = 0\n    currentLabels.value.length = 0\n    restTipShow.value = false\n\n    emittedValue = props.multiple ? [] : ''\n\n    syncInputValue()\n    emit('update:value', emittedValue)\n    emitEvent(props.onChange as ChangeEvent, emittedValue, props.multiple ? [] : '')\n    emitEvent(props.onClear)\n    clearField(emittedValue!)\n    updatePopper()\n  }\n}\n\nlet focused = false\n\nfunction handleFocus(event: FocusEvent) {\n  if (!focused) {\n    focused = true\n    emitEvent(props.onFocus, event)\n  }\n}\n\nfunction handleBlur(event: FocusEvent) {\n  if (focused) {\n    focused = false\n\n    setTimeout(() => {\n      if (!focused) {\n        emitEvent(props.onBlur, event)\n      }\n    }, 120)\n  }\n}\n\nfunction syncInputValue() {\n  if (!input.value) return\n\n  const visible = currentVisible.value\n\n  if (props.multiple) {\n    input.value.value = ''\n  } else {\n    input.value.value = visible ? '' : currentLabels.value[0] || ''\n  }\n\n  visible ? input.value.focus() : input.value.blur()\n}\n\nfunction handleFilterInput() {\n  if (!input.value || composing.value) return\n\n  let hittingIndex: number\n\n  currentFilter.value = input.value.value\n\n  if (!currentFilter.value) {\n    hittingIndex = -1\n  } else if (showDynamic.value || currentIndex.value !== -1) {\n    hittingIndex = 0\n  } else {\n    hittingIndex = visibleOptions.value.findIndex(\n      option => String(option.label) === currentFilter.value,\n    )\n    hittingIndex = hittingIndex === -1 ? 0 : hittingIndex\n  }\n\n  requestAnimationFrame(() => {\n    if (!hittingIndex) {\n      hittingIndex = visibleOptions.value.findIndex(\n        option => !currentValues.value.includes(option.value),\n      )\n    }\n\n    if (hittingIndex !== currentIndex.value) {\n      updateHitting(hittingIndex)\n    }\n\n    if (props.multiple && device.value) {\n      anchorWidth.value = getRangeWidth(device.value)\n    }\n\n    updatePopper()\n  })\n\n  emitEvent(props.onFilterInput, currentFilter.value)\n}\n\nfunction handleCompositionEnd() {\n  if (!composing.value) return\n\n  composing.value = false\n\n  if (input.value) {\n    input.value.dispatchEvent(new Event('input'))\n  }\n}\n\nfunction handleFilterKeyDown(event: KeyboardEvent) {\n  if (!input.value) return\n\n  if (\n    props.filterPosition !== 'in-list' &&\n    event.key === 'Backspace' &&\n    !input.value.value &&\n    !isNull(getLast(currentValues.value))\n  ) {\n    event.stopPropagation()\n    handleTagClose(getLast(currentValues.value))\n  }\n}\n\nfunction toggleShowRestTip() {\n  if (!currentVisible.value) {\n    restTipShow.value = !restTipShow.value\n\n    if (restTipShow.value) {\n      nextTick(() => {\n        restTip.value?.updatePopper()\n      })\n    }\n  } else {\n    toggleVisible()\n    restTipShow.value = false\n  }\n}\n\nfunction focus(options?: FocusOptions) {\n  if (currentVisible.value) {\n    ;(input.value || reference.value)?.focus(options)\n  } else {\n    reference.value?.focus(options)\n  }\n}\n</script>\n\n<template>\n  <div\n    :id=\"idFor\"\n    ref=\"wrapper\"\n    :class=\"className\"\n    role=\"group\"\n    :aria-disabled=\"toAttrValue(props.disabled)\"\n    :aria-expanded=\"toAttrValue(currentVisible)\"\n    aria-haspopup=\"listbox\"\n    :aria-labelledby=\"labelId\"\n    @click=\"toggleVisible\"\n  >\n    <div\n      ref=\"reference\"\n      :class=\"selectorClass\"\n      tabindex=\"0\"\n      @focus=\"handleFocus\"\n      @blur=\";(!props.filter || !currentVisible) && handleBlur($event)\"\n    >\n      <div\n        v-if=\"hasPrefix\"\n        :class=\"[nh.be('icon'), nh.be('prefix')]\"\n        :style=\"{ color: props.prefixColor }\"\n      >\n        <slot name=\"prefix\">\n          <Renderer :renderer=\"props.slots.prefix\">\n            <Icon :icon=\"props.prefix\"></Icon>\n          </Renderer>\n        </slot>\n      </div>\n      <div :class=\"nh.be('control')\">\n        <slot name=\"control\">\n          <Renderer :renderer=\"props.slots.control\">\n            <template v-if=\"props.multiple\">\n              <Overflow\n                inherit\n                :class=\"[nh.be('tags')]\"\n                :items=\"currentValues\"\n                :max-count=\"props.maxTagCount\"\n                :style=\"{\n                  maxWidth: props.maxTagCount <= 0 && `calc(100% - ${anchorWidth}px)`\n                }\"\n                @rest-change=\"restTagCount = $event\"\n                @click.stop=\"toggleVisible\"\n              >\n                <template #default=\"{ item: value, index }\">\n                  <slot\n                    name=\"tag\"\n                    :value=\"value\"\n                    :option=\"getOptionFromMap(value)\"\n                    :handle-close=\"handleTagClose.bind(null, value)\"\n                  >\n                    <Renderer\n                      :renderer=\"props.slots.tag\"\n                      :data=\"{\n                        value,\n                        option: getOptionFromMap(value),\n                        handleClose: handleTagClose.bind(null, value)\n                      }\"\n                    >\n                      <Tag\n                        inherit\n                        :class=\"nh.be('tag')\"\n                        :type=\"props.tagType\"\n                        closable\n                        :disabled=\"props.disabled\"\n                        @close=\"handleTagClose(value)\"\n                      >\n                        <span :class=\"nh.be('label')\">\n                          <slot name=\"selected\" :value=\"value\" :option=\"getOptionFromMap(value)\">\n                            <Renderer\n                              :renderer=\"props.slots.selected\"\n                              :data=\"{ value, option: getOptionFromMap(value) }\"\n                            >\n                              {{ currentLabels[index] }}\n                            </Renderer>\n                          </slot>\n                        </span>\n                      </Tag>\n                    </Renderer>\n                  </slot>\n                </template>\n                <template #counter=\"{ count }\">\n                  <slot v-if=\"props.noRestTip\" name=\"restTag\" :rest-count=\"count\">\n                    <Renderer :renderer=\"props.slots.restTag\" :data=\"{ restCount: count }\">\n                      <Tag\n                        inherit\n                        :class=\"[nh.be('tag'), nh.be('counter')]\"\n                        :type=\"props.tagType\"\n                        :disabled=\"props.disabled\"\n                      >\n                        {{ `+${count}` }}\n                      </Tag>\n                    </Renderer>\n                  </slot>\n                  <span v-else>\n                    <Tooltip\n                      ref=\"restTip\"\n                      inherit\n                      :transfer=\"false\"\n                      :visible=\"restTipShow\"\n                      trigger=\"custom\"\n                      placement=\"top-end\"\n                      :tip-class=\"nh.be('rest-tip')\"\n                      @click.stop=\"toggleShowRestTip\"\n                    >\n                      <template #trigger>\n                        <slot name=\"restTag\" :rest-count=\"count\">\n                          <Renderer :renderer=\"props.slots.restTag\" :data=\"{ restCount: count }\">\n                            <Tag\n                              inherit\n                              :class=\"[nh.be('tag'), nh.be('counter')]\"\n                              :type=\"props.tagType\"\n                              :disabled=\"props.disabled\"\n                            >\n                              {{ `+${count}` }}\n                            </Tag>\n                          </Renderer>\n                        </slot>\n                      </template>\n                      <NativeScroll inherit use-y-bar>\n                        <template v-for=\"(value, index) in currentValues\" :key=\"index\">\n                          <slot\n                            v-if=\"index >= currentValues.length - restTagCount\"\n                            name=\"tag\"\n                            :value=\"value\"\n                            :option=\"getOptionFromMap(value)\"\n                            :handle-close=\"handleRestTagClose.bind(null, value)\"\n                          >\n                            <Renderer\n                              :renderer=\"props.slots.tag\"\n                              :data=\"{\n                                value,\n                                option: getOptionFromMap(value),\n                                handleClose: handleRestTagClose.bind(null, value)\n                              }\"\n                            >\n                              <Tag\n                                inherit\n                                :class=\"nh.be('tag')\"\n                                closable\n                                :type=\"props.tagType\"\n                                :disabled=\"props.disabled\"\n                                @close=\"handleRestTagClose(value)\"\n                              >\n                                <span :class=\"nh.be('label')\">\n                                  <slot\n                                    name=\"selected\"\n                                    :value=\"value\"\n                                    :option=\"getOptionFromMap(value)\"\n                                  >\n                                    <Renderer\n                                      :renderer=\"props.slots.selected\"\n                                      :data=\"{ value, option: getOptionFromMap(value) }\"\n                                    >\n                                      {{ currentLabels[index] }}\n                                    </Renderer>\n                                  </slot>\n                                </span>\n                              </Tag>\n                            </Renderer>\n                          </slot>\n                        </template>\n                      </NativeScroll>\n                    </Tooltip>\n                  </span>\n                </template>\n              </Overflow>\n              <div\n                v-if=\"props.filter && props.filterPosition === 'in-control'\"\n                :class=\"nh.be('anchor')\"\n                :style=\"{\n                  width: `${anchorWidth}px`\n                }\"\n              >\n                <input\n                  ref=\"nativeInput\"\n                  :class=\"[\n                    nh.be('input'),\n                    nh.bem('input', 'multiple'),\n                    currentVisible && nh.bem('input', 'visible')\n                  ]\"\n                  :disabled=\"props.disabled\"\n                  autocomplete=\"off\"\n                  tabindex=\"-1\"\n                  role=\"combobox\"\n                  aria-autocomplete=\"list\"\n                  :name=\"props.name\"\n                  @submit.prevent\n                  @input=\"handleFilterInput\"\n                  @keydown=\"handleFilterKeyDown\"\n                  @focus=\"handleFocus($event)\"\n                  @blur=\"handleBlur($event)\"\n                  @compositionstart=\"composing = true\"\n                  @compositionend=\"handleCompositionEnd\"\n                  @change=\"handleCompositionEnd\"\n                />\n                <span ref=\"device\" :class=\"nh.be('device')\" aria-hidden=\"true\">\n                  {{ currentFilter }}\n                </span>\n              </div>\n            </template>\n            <template v-else>\n              <input\n                v-if=\"props.filter && props.filterPosition === 'in-control'\"\n                ref=\"nativeInput\"\n                :class=\"[nh.be('input'), currentVisible && nh.bem('input', 'visible')]\"\n                :disabled=\"props.disabled\"\n                autocomplete=\"off\"\n                tabindex=\"-1\"\n                role=\"combobox\"\n                aria-autocomplete=\"list\"\n                :name=\"props.name\"\n                :style=\"{\n                  opacity: currentVisible ? undefined : '0%'\n                }\"\n                @submit.prevent\n                @input=\"handleFilterInput\"\n                @focus=\"handleFocus($event)\"\n                @blur=\"handleBlur($event)\"\n                @compositionstart=\"composing = true\"\n                @compositionend=\"handleCompositionEnd\"\n                @change=\"handleCompositionEnd\"\n              />\n              <span\n                v-if=\"\n                  (props.noPreview || !currentVisible) &&\n                    hasValue &&\n                    (props.filterPosition !== 'in-control' || !currentFilter)\n                \"\n                :class=\"{\n                  [nh.be('selected')]: true,\n                  [nh.bem('selected', 'placeholder')]: props.filter && currentVisible && hasValue\n                }\"\n              >\n                <slot\n                  v-if=\"getOptionFromMap(currentValues[0])\"\n                  name=\"selected\"\n                  :value=\"currentValues[0]\"\n                  :option=\"getOptionFromMap(currentValues[0])\"\n                >\n                  <Renderer\n                    :renderer=\"props.slots.selected\"\n                    :data=\"{ value: currentValues[0], option: getOptionFromMap(currentValues[0]) }\"\n                  >\n                    {{ currentLabels[0] }}\n                  </Renderer>\n                </slot>\n                <template v-else>\n                  {{ currentLabels[0] }}\n                </template>\n              </span>\n            </template>\n            <span v-if=\"showPlaceholder\" :class=\"nh.be('placeholder')\">\n              <slot\n                v-if=\"previewOption\"\n                name=\"selected\"\n                :preview=\"true\"\n                :value=\"previewOption.value\"\n                :option=\"previewOption\"\n              >\n                <Renderer\n                  :renderer=\"props.slots.selected\"\n                  :data=\"{ value: previewOption.value, preview: true, option: previewOption }\"\n                >\n                  {{ previewOption.label }}\n                </Renderer>\n              </slot>\n              <template v-else>\n                {{ props.placeholder ?? locale.placeholder }}\n              </template>\n            </span>\n          </Renderer>\n        </slot>\n      </div>\n      <div\n        v-if=\"!props.noSuffix\"\n        :class=\"[nh.be('icon'), nh.be('suffix')]\"\n        :style=\"{\n          color: props.suffixColor,\n          opacity: showClear || props.loading ? '0%' : ''\n        }\"\n      >\n        <slot name=\"suffix\">\n          <Renderer :renderer=\"props.slots.suffix\">\n            <Icon\n              v-if=\"props.suffix\"\n              :icon=\"props.suffix\"\n              :class=\"{\n                [nh.be('arrow')]: !props.staticSuffix\n              }\"\n            ></Icon>\n            <Icon v-else v-bind=\"icons.angleDown\" :class=\"nh.be('arrow')\"></Icon>\n          </Renderer>\n        </slot>\n      </div>\n      <div\n        v-else-if=\"props.clearable || props.loading\"\n        :class=\"[nh.be('icon'), nh.bem('icon', 'placeholder'), nh.be('suffix')]\"\n      ></div>\n      <Transition :name=\"nh.ns('fade')\" appear>\n        <button\n          v-if=\"showClear\"\n          :class=\"[nh.be('icon'), nh.be('clear')]\"\n          type=\"button\"\n          tabindex=\"-1\"\n          :aria-label=\"locale.ariaLabel.clear\"\n          @click.stop=\"handleClear\"\n        >\n          <Icon v-bind=\"icons.clear\" label=\"clear\"></Icon>\n        </button>\n        <div v-else-if=\"props.loading\" :class=\"[nh.be('icon'), nh.be('loading')]\">\n          <Icon\n            v-bind=\"icons.loading\"\n            :effect=\"props.loadingEffect || icons.loading.effect\"\n            :icon=\"props.loadingIcon || icons.loading.icon\"\n            label=\"loading\"\n          ></Icon>\n        </div>\n      </Transition>\n    </div>\n    <Popper\n      ref=\"popper\"\n      :class=\"[nh.be('popper'), nh.bs('vars')]\"\n      :visible=\"currentVisible\"\n      :to=\"transferTo\"\n      :transition=\"props.transitionName\"\n      :alive=\"props.popperAlive ?? !transferTo\"\n      @click.stop=\"focus\"\n      @after-leave=\"currentFilter = ''\"\n    >\n      <slot\n        name=\"list\"\n        :options=\"totalOptions\"\n        :is-selected=\"isSelected\"\n        :handle-select=\"handleSelect\"\n      >\n        <Renderer\n          :renderer=\"props.slots.list\"\n          :data=\"{ options: totalOptions, isSelected, handleSelect }\"\n        >\n          <div\n            :class=\"[\n              nh.be('list'),\n              (slots.prepend || slots.append) && nh.bem('list', 'with-extra'),\n              props.listClass\n            ]\"\n          >\n            <div v-if=\"props.filter && props.filterPosition === 'in-list'\" :class=\"nh.be('filter')\">\n              <Input\n                ref=\"filterInput\"\n                :class=\"nh.be('filter-input')\"\n                transparent\n                :disabled=\"props.disabled\"\n                :placeholder=\"locale.search\"\n                :autocomplete=\"false\"\n                :tabindex=\"-1\"\n                role=\"combobox\"\n                aria-autocomplete=\"list\"\n                @input=\"handleFilterInput\"\n                @keydown=\"handleFilterKeyDown\"\n                @focus=\"handleFocus\"\n                @blur=\"handleBlur\"\n                @compositionstart=\"composing = true\"\n                @compositionend=\"handleCompositionEnd\"\n                @change=\"handleCompositionEnd\"\n              >\n                <template #suffix>\n                  <Icon v-bind=\"icons.search\"></Icon>\n                </template>\n              </Input>\n            </div>\n            <slot v-if=\"slots.prepend || props.slots.prepend\" name=\"prepend\">\n              <Renderer :renderer=\"props.slots.prepend\"></Renderer>\n            </slot>\n            <VirtualList\n              ref=\"virtualList\"\n              inherit\n              :style=\"{\n                height: undefined,\n                maxHeight: `${props.maxListHeight}px`\n              }\"\n              :items=\"totalOptions\"\n              :item-size=\"32\"\n              use-y-bar\n              :height=\"'100%'\"\n              id-key=\"value\"\n              :items-attrs=\"{\n                class: [nh.be('options'), props.optionCheck ? nh.bem('options', 'has-check') : ''],\n                role: 'listbox',\n                ariaLabel: 'options',\n                ariaMultiselectable: props.multiple\n              }\"\n            >\n              <template #default=\"{ item: option, index }\">\n                <li\n                  v-if=\"option.group\"\n                  :class=\"[nh.ns('option-vars'), nh.be('group')]\"\n                  :title=\"option.label\"\n                >\n                  <slot name=\"group\" :option=\"option\" :index=\"index\">\n                    <Renderer :renderer=\"props.slots.group\" :data=\"{ option, index }\">\n                      <div\n                        :class=\"[nh.be('label'), nh.bem('label', 'group')]\"\n                        :style=\"{ paddingInlineStart: `${option.depth * 6}px` }\"\n                      >\n                        {{ option.label }}\n                      </div>\n                    </Renderer>\n                  </slot>\n                </li>\n                <Option\n                  v-else\n                  :label=\"option.label\"\n                  :value=\"option.value\"\n                  :disabled=\"option.disabled || (limited && !isSelected(option))\"\n                  :divided=\"option.divided\"\n                  :no-title=\"option.title\"\n                  :hitting=\"option.hitting\"\n                  :selected=\"isSelected(option)\"\n                  no-hover\n                  @select=\"handleSelect(option)\"\n                  @mousemove=\"updateHitting(index, false)\"\n                >\n                  <slot :option=\"option\" :index=\"index\" :selected=\"isSelected(option)\">\n                    <Renderer\n                      :renderer=\"props.slots.default\"\n                      :data=\"{ option, index, selected: isSelected(option) }\"\n                    >\n                      <span\n                        :class=\"nh.be('label')\"\n                        :style=\"{ paddingInlineStart: `${option.depth * 6}px` }\"\n                      >\n                        {{ option.label }}\n                      </span>\n                      <Transition v-if=\"props.optionCheck\" :name=\"nh.ns('fade')\" appear>\n                        <Icon\n                          v-if=\"isSelected(option)\"\n                          v-bind=\"icons.check\"\n                          :class=\"nh.be('check')\"\n                        ></Icon>\n                      </Transition>\n                    </Renderer>\n                  </slot>\n                </Option>\n              </template>\n              <template #empty>\n                <div :class=\"nh.be('empty')\">\n                  <slot name=\"empty\">\n                    <Renderer :renderer=\"props.slots.empty\">\n                      {{ props.emptyText ?? locale.empty }}\n                    </Renderer>\n                  </slot>\n                </div>\n              </template>\n            </VirtualList>\n            <slot v-if=\"slots.append || props.slots.append\" name=\"append\">\n              <Renderer :renderer=\"props.slots.append\"></Renderer>\n            </slot>\n          </div>\n        </Renderer>\n      </slot>\n    </Popper>\n  </div>\n</template>\n"],"names":["isSameValue","newValue","oldValue","isNewArray","isOldArray","len","isNull","idFor","labelId","state","disabled","loading","size","validateField","clearField","getFieldValue","setFieldValue","useFieldStore","focus","nh","useNameHelper","_props","__props","props","useProps","createSizeProp","createStateProp","createIconProp","value","placementWhileList","emit","__emit","slots","_useSlots","locale","useLocale","toRef","icons","useIcons","currentVisible","ref","currentLabels","currentValues","currentIndex","placement","transfer","baseOptions","currentFilter","anchorWidth","userOptions","restTagCount","restTipShow","composing","isMounted","useMounted","dynamicOption","reactive","optionValues","hittingOption","optionStates","computed","visibleOptions","keyConfig","defaultKeyConfig","wrapper","useClickOutside","handleClickOutside","nativeInput","filterInput","device","virtualList","popper","restTip","input","_a","reference","transferTo","updatePopper","usePopper","isHover","useHover","cachedSelected","optionValueMap","emittedValue","updateTrigger","watchEffect","i","watch","initOptionState","valueKey","labelKey","disabledKey","dividedKey","titleKey","groupKey","childrenKey","oldMap","map","states","loop","option","depth","parent","rawOption","group","label","divided","title","children","oldState","optionState","child","initValueAndLabel","useModifier","event","modifier","toggleVisible","setVisible","decide","options","length","step","index","updateHitting","handleSelect","totalOptions","showDynamic","className","readonly","selectorClass","baseCls","hasPrefix","hasValue","normalOptions","optionParentMap","showClear","previewOption","limited","showPlaceholder","getOptionFromMap","fitPopperWidth","initHittingIndex","syncInputValue","filterOptions","__expose","isSelected","handleClear","_b","onMounted","normalizedValue","valueSet","selectedValues","selectedLabels","cachedValue","visible","emitEvent","hitting","ensureInView","inputValue","filter","ignoreCaseValue","parentMap","handleTagClose","handleRestTagClose","selected","item","removeArrayItem","newOption","handleChange","v","prevValue","focused","handleFocus","handleBlur","handleFilterInput","hittingIndex","getRangeWidth","handleCompositionEnd","handleFilterKeyDown","getLast","toggleShowRestTip","nextTick","_createElementBlock","_unref","toAttrValue","_createElementVNode","_cache","$event","_normalizeStyle","_renderSlot","_ctx","_createVNode","Renderer","Icon","_normalizeClass","_Fragment","Overflow","_withCtx","Tag","_createTextVNode","_toDisplayString","count","_hoisted_2","Tooltip","NativeScroll","_openBlock","_renderList","_createBlock","_mergeProps","_Transition","Popper","Input","_normalizeProps","_guardReactiveProps","VirtualList","Option"],"mappings":"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"}