{"version":3,"file":"cascader.vue2.cjs","sources":["../../../components/cascader/cascader.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { Icon } from '@/components/icon'\nimport { NativeScroll } from '@/components/native-scroll'\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 { useFieldStore } from '@/components/form'\n\nimport { computed, nextTick, onBeforeUpdate, reactive, ref, toRef, watch, watchEffect } from 'vue'\n\nimport CascaderPanel from './cascader-panel.vue'\nimport {\n  createIconProp,\n  createSizeProp,\n  createStateProp,\n  emitEvent,\n  useIcons,\n  useLocale,\n  useNameHelper,\n  useProps,\n} from '@vexip-ui/config'\nimport { placementWhileList, useClickOutside, useHover, usePopper } from '@vexip-ui/hooks'\nimport { flatTree, getLast, isNull, isPromise, toAttrValue, transformTree } from '@vexip-ui/utils'\nimport { cascaderProps } from './props'\n\nimport type { PopperExposed } from '@/components/popper'\nimport type {\n  CascaderKeyConfig,\n  CascaderOptionState,\n  CascaderSlots,\n  CascaderValue,\n  Data,\n} from './symbol'\n\ntype ChangeListener = (value: CascaderValue, data: Data[] | Data[][]) => void\n\nconst ID_KEY = Symbol('ID_KEY')\nconst PARENT_KEY = Symbol('PARENT_KEY')\n\nconst defaultKeyConfig: Required<CascaderKeyConfig> = {\n  value: 'value',\n  label: 'label',\n  children: 'children',\n  disabled: 'disabled',\n  hasChild: 'hasChild',\n}\n\ndefineOptions({ name: 'Cascader' })\n\nconst {\n  idFor,\n  labelId,\n  state,\n  disabled,\n  loading,\n  size,\n  validateField,\n  clearField,\n  getFieldValue,\n  setFieldValue,\n} = useFieldStore<CascaderValue>(() => reference.value?.focus())\n\nconst _props = defineProps(cascaderProps)\nconst nh = useNameHelper('cascader')\nconst props = useProps('cascader', _props, {\n  size: createSizeProp(size),\n  state: createStateProp(state),\n  locale: null,\n  value: {\n    default: () => getFieldValue(),\n    static: true,\n  },\n  visible: {\n    default: false,\n    static: true,\n  },\n  options: {\n    default: () => [],\n    static: true,\n  },\n  placeholder: null,\n  prefix: createIconProp(),\n  prefixColor: '',\n  suffix: createIconProp(),\n  suffixColor: '',\n  noCascaded: false,\n  multiple: false,\n  disabled: () => disabled.value,\n  clearable: false,\n  placement: {\n    default: 'bottom-start',\n    validator: value => placementWhileList.includes(value),\n  },\n  transfer: false,\n  staticSuffix: false,\n  noSuffix: false,\n  transitionName: () => nh.ns('drop'),\n  outsideClose: true,\n  keyConfig: () => ({}),\n  separator: {\n    default: '/',\n    validator: value => value.length === 1,\n  },\n  hoverTrigger: false,\n  maxTagCount: 0,\n  briefLabel: false,\n  noRestTip: false,\n  onAsyncLoad: {\n    default: null,\n    isFunc: true,\n  },\n  mergeTags: false,\n  tagType: null,\n  emptyText: null,\n  loading: () => loading.value,\n  loadingIcon: createIconProp(),\n  loadingLock: false,\n  loadingEffect: null,\n  transparent: false,\n  popperAlive: null,\n  slots: () => ({}),\n})\n\nconst emit = defineEmits(['update:visible', 'update:value'])\n\nconst slots = defineSlots<CascaderSlots>()\n\nconst icons = useIcons()\nconst locale = useLocale('select', toRef(props, 'locale'))\n\nconst currentVisible = ref(props.visible)\nconst currentValues = ref<string[]>([])\nconst currentLabels = ref<string[]>([])\nconst mergedValues = ref<string[]>([])\nconst mergedLabels = ref<string[]>([])\nconst isPopperShow = ref(false)\nconst placement = toRef(props, 'placement')\nconst transfer = toRef(props, 'transfer')\n\nconst emittedValue = ref<CascaderValue | null>(null)\nconst optionTree = ref<CascaderOptionState[]>(null!)\nconst isAsyncLoad = computed(() => typeof props.onAsyncLoad === 'function')\nconst usingMerged = computed(() => props.mergeTags && !props.noCascaded)\nconst templateValues = computed(() =>\n  usingMerged.value ? mergedValues.value : currentValues.value,\n)\nconst templateLabels = computed(() =>\n  usingMerged.value ? mergedLabels.value : currentLabels.value,\n)\n\nlet optionList: CascaderOptionState[] = null!\nlet optionIdMap: Map<number, CascaderOptionState> = null!\nlet optionValueMap: Map<string, CascaderOptionState> = null!\nlet outsideClosed = false\nlet prevClosedId = -1\nlet flattedOptions: Record<any, any>[]\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.hasChild\n  props.separator\n  isAsyncLoad.value\n  /* eslint-enable */\n\n  flattedOptions = flatTree(props.options as Record<any, any>[], {\n    keyField: ID_KEY,\n    parentField: PARENT_KEY,\n    childField: props.keyConfig.children ?? defaultKeyConfig.children,\n    forceInject: true,\n  })\n\n  updateTrigger.value++\n})\n\nwatch(updateTrigger, initOptionStates, { immediate: true })\n\nfunction initOptionStates() {\n  const separator = props.separator\n  const isAsync = isAsyncLoad.value\n\n  optionList = createOptionStates(flattedOptions)\n  optionIdMap = new Map()\n  optionValueMap = new Map()\n\n  for (let i = 0, len = optionList.length; i < len; ++i) {\n    const option = optionList[i]\n\n    initOptionFull(option, separator)\n    optionIdMap.set(option.id, option)\n    optionValueMap.set(option.fullValue, option)\n\n    if (isAsync) {\n      option.childrenLoaded = queryChildrenLoaded(option)\n    }\n  }\n\n  optionTree.value = transformTree(optionList)\n  initValueAndLabel(emittedValue.value)\n}\n\nconst openedIds = ref<number[]>([])\nconst optionsList = computed(() => {\n  return [\n    optionTree.value,\n    ...openedIds.value.map(id => optionIdMap.get(id)?.children).filter(Boolean),\n  ]\n})\n\nconst wrapper = useClickOutside(handleClickOutside)\nconst popper = ref<PopperExposed>()\nconst { reference, transferTo, updatePopper } = usePopper({\n  placement,\n  transfer,\n  wrapper,\n  popper: computed(() => popper.value?.wrapper),\n  isDrop: true,\n})\nconst { isHover } = useHover(reference)\n\nconst panelElList = ref<InstanceType<typeof CascaderPanel>[]>([])\nconst restTagCount = ref(0)\nconst restTipShow = ref(false)\nconst selectorWidth = ref(0)\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('responsive')]: props.multiple && props.maxTagCount <= 0,\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 hasPrefix = computed(() => {\n  return !!(slots.prefix || props.slots.prefix || props.prefix)\n})\nconst hasValue = computed(() => !!templateValues.value[0])\nconst usingHover = computed(() => props.hoverTrigger && !isAsyncLoad.value)\nconst showClear = computed(() => {\n  return !props.disabled && !readonly.value && props.clearable && isHover.value && hasValue.value\n})\n\nwatch(\n  () => props.visible,\n  value => {\n    currentVisible.value = value\n  },\n)\nwatch(currentVisible, async value => {\n  if (value) {\n    restTipShow.value = false\n    selectorWidth.value = wrapper.value?.offsetWidth || 0\n\n    await updatePopper()\n    nextTick(() => {\n      getLast(panelElList.value)?.$el?.focus()\n    })\n  } else {\n    isPopperShow.value = false\n\n    if (reference.value && !outsideClosed) {\n      reference.value.focus()\n    }\n  }\n\n  outsideClosed = false\n})\n\nlet outsideChanged = false\n\nwatch(emittedValue, () => {\n  outsideChanged = true\n})\nwatch(\n  () => props.value,\n  value => {\n    if (value !== emittedValue.value || outsideChanged) {\n      emittedValue.value = value\n      initValueAndLabel(value)\n      nextTick(() => {\n        outsideChanged = false\n      })\n    }\n  },\n  { immediate: true },\n)\nwatch(\n  () => props.briefLabel,\n  brief => {\n    currentLabels.value = currentValues.value\n      .map(value => optionValueMap.get(value)?.[brief ? 'label' : 'fullLabel'] as string)\n      .filter(Boolean)\n\n    // nextTick(computeTagsOverflow)\n  },\n)\nwatch(isAsyncLoad, value => {\n  if (value) {\n    for (const option of optionIdMap.values()) {\n      option.childrenLoaded = queryChildrenLoaded(option)\n    }\n  }\n})\nwatch(usingMerged, value => {\n  if (value) {\n    mergedValues.value.length = 0\n    mergedLabels.value.length = 0\n\n    updateMergedProps()\n  }\n\n  if (isAsyncLoad.value) {\n    const originalOptions: CascaderOptionState[] = []\n\n    for (const option of optionIdMap.values()) {\n      if (option.checked) {\n        originalOptions.push(option)\n      }\n\n      if (option.hasChild && !option.children.length && !option.loaded) {\n        option.checked = false\n      }\n    }\n\n    for (let i = 0, len = originalOptions.length; i < len; ++i) {\n      const option = originalOptions[i]\n\n      updateCheckedUpward(option)\n      updateCheckedDown(option)\n    }\n  }\n\n  emitMultipleChange()\n})\nwatch(\n  () => optionsList.value.length,\n  () => {\n    updatePopper()\n    nextTick(() => {\n      getLast(panelElList.value)?.$el?.focus()\n      prevClosedId = -1\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})\n\nonBeforeUpdate(() => {\n  panelElList.value.length = 0\n})\n\ndefineExpose({\n  idFor,\n  labelId,\n  currentVisible,\n  currentValues,\n  currentLabels,\n  isHover,\n  openedIds,\n  restTagCount,\n  restTipShow,\n  optionsList,\n  hasValue,\n  templateValues,\n  templateLabels,\n  showClear,\n  wrapper,\n  reference,\n  popper,\n  panelElList,\n  handlePanelOpen,\n  handleOptionSelect,\n  handleOptionCheck,\n  toggleVisible,\n  handleClear,\n  handlePanelBack,\n  focus: (options?: FocusOptions) => reference.value?.focus(options),\n  blur: () => reference.value?.blur(),\n})\n\nfunction createOptionStates(rawOptions: Record<string | symbol, any>[]) {\n  const {\n    value: valueKey,\n    label: labelKey,\n    disabled: disabledKey,\n    hasChild: hasChildKey,\n  } = { ...defaultKeyConfig, ...props.keyConfig }\n\n  return rawOptions.map(rawOption => {\n    const {\n      [ID_KEY]: id,\n      [PARENT_KEY]: parent,\n      [valueKey]: value,\n      [labelKey]: label,\n      [disabledKey]: disabled,\n      [hasChildKey]: hasChild,\n    } = rawOption\n\n    return reactive<CascaderOptionState>({\n      id,\n      parent,\n      value,\n      disabled,\n      hasChild,\n      label: label || String(value),\n      fullValue: '',\n      fullLabel: '',\n      children: [],\n      checked: false,\n      partial: false,\n      loading: false,\n      loaded: false,\n      error: false,\n      childrenLoaded: false,\n      data: rawOption,\n    })\n  })\n}\n\nfunction initOptionFull(option: CascaderOptionState, separator: string) {\n  let value = option.value as string\n  let label = option.label\n  let parent = optionIdMap.get(option.parent)\n\n  while (parent) {\n    value = `${parent.value}${separator}${value}`\n    label = `${parent.label}${separator}${label}`\n    parent = optionIdMap.get(parent.parent)\n  }\n\n  option.fullValue = value\n  option.fullLabel = label\n}\n\nfunction queryChildrenLoaded(option: CascaderOptionState) {\n  if (option.hasChild && !option.children?.length) {\n    return option.loaded\n  }\n\n  const loop: CascaderOptionState[] = [...option.children]\n\n  while (loop.length) {\n    const child = loop.shift()!\n\n    if (child.childrenLoaded) continue\n\n    if (child.hasChild && !child.children?.length) {\n      child.childrenLoaded = child.loaded\n\n      if (!child.loaded) return false\n    }\n\n    loop.push(...child.children)\n  }\n\n  return true\n}\n\nfunction updateMergedProps() {\n  const baseValues = isAsyncLoad.value\n    ? currentValues.value.concat(mergedValues.value)\n    : currentValues.value\n  const values = new Set(baseValues)\n  const loop = [...baseValues]\n\n  while (loop.length) {\n    const value = loop.shift()!\n\n    const option = optionValueMap.get(value)\n\n    if (option) {\n      const parent = optionIdMap.get(option.parent)\n\n      if (parent?.checked) {\n        values.delete(value)\n        values.add(parent.fullValue)\n        loop.push(parent.fullValue)\n      }\n    }\n  }\n\n  const briefLabel = props.briefLabel\n\n  mergedValues.value = Array.from(values).filter(value => optionValueMap.has(value))\n  mergedLabels.value = mergedValues.value\n    .map(value => {\n      const option = optionValueMap.get(value)!\n\n      return briefLabel ? option.label : option.fullLabel\n    })\n    .filter(Boolean)\n}\n\nfunction isFlatArray<T extends string | number>(value: T[] | T[][]): value is T[] {\n  return !!value.length && !Array.isArray(value[0])\n}\n\nfunction isComplexArray<T extends string | number>(value: T[] | T[][]): value is T[][] {\n  return !!value.length && Array.isArray(value[0])\n}\n\nfunction initValueAndLabel(value: CascaderValue | null) {\n  const processMerged = () => {\n    if (usingMerged.value) {\n      if (isAsyncLoad.value) {\n        mergedValues.value = Array.from(optionIdMap.values())\n          .filter(option => option.checked)\n          .map(option => option.fullValue)\n      }\n\n      updateMergedProps()\n    }\n  }\n\n  for (const option of optionList) {\n    option.checked = false\n    option.partial = false\n  }\n\n  if (!value?.length) {\n    currentValues.value = []\n    currentLabels.value = []\n    processMerged()\n    return\n  }\n\n  const briefLabel = props.briefLabel\n\n  if (props.multiple) {\n    const normalizedValue = isFlatArray(value) ? [value] : value\n    const valueSet = new Set<string>(normalizedValue.map(v => v.join(props.separator)))\n    const selectedValues: string[] = []\n    const selectedLabels: string[] = []\n    const selectedOptions: CascaderOptionState[] = []\n\n    valueSet.forEach(value => {\n      const option = optionValueMap.get(value)\n\n      if (option) {\n        option.checked = true\n        option.partial = false\n\n        selectedValues.push(value)\n        selectedLabels.push(briefLabel ? option.label : option.fullLabel)\n        selectedOptions.push(option)\n      }\n    })\n\n    if (!props.noCascaded) {\n      const originalOptions = selectedOptions.concat(\n        Array.from(optionIdMap.values()).filter(option => option.disabled && option.checked),\n      )\n\n      for (let i = 0, len = originalOptions.length; i < len; ++i) {\n        const option = originalOptions[i]\n\n        updateCheckedUpward(option)\n        updateCheckedDown(option)\n      }\n    }\n\n    currentValues.value = selectedValues\n    currentLabels.value = selectedLabels\n  } else {\n    const normalizedValue = isComplexArray(value) ? value[0] : value\n    const stringValue = normalizedValue.join(props.separator)\n    const option = optionValueMap.get(stringValue)\n\n    if (option) {\n      currentValues.value = [stringValue]\n      currentLabels.value = [briefLabel ? option.label : option.fullLabel]\n\n      if (props.noCascaded) {\n        option.checked = true\n        option.partial = false\n      }\n    } else {\n      currentValues.value = []\n      currentLabels.value = []\n    }\n  }\n\n  processMerged()\n\n  if (openedIds.value.length) return\n\n  const firstValue = currentValues.value[0]\n\n  if (firstValue) {\n    const option = optionValueMap.get(firstValue)!\n    const ids = [option.id]\n\n    let parent = optionIdMap.get(option.parent)\n\n    while (parent) {\n      ids.push(parent.id)\n      parent = optionIdMap.get(parent.parent)\n    }\n\n    openedIds.value = ids.reverse().slice(0, -1)\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\nasync function handlePanelOpen(option: CascaderOptionState, depth: number) {\n  if (!option.hasChild && !option.children?.length) return\n\n  if (isAsyncLoad.value && !option.children?.length && !option.loaded) {\n    option.loading = true\n\n    let result: ReturnType<typeof props.onAsyncLoad>\n\n    try {\n      result = props.onAsyncLoad(option.data)\n      result = isPromise(result) ? await result : result\n    } catch (e) {\n      option.error = true\n      option.loading = false\n      return\n    }\n\n    const rawOptions = result as any[]\n\n    if (!Array.isArray(rawOptions) || !rawOptions.length) {\n      option.hasChild = false\n    } else {\n      const options = createOptionStates(rawOptions)\n      const parentId = option.id\n      const separator = props.separator\n\n      option.children.push(...options)\n\n      let idCount = Math.max(...Array.from(optionIdMap.keys()).map(Number)) + 1\n\n      options.forEach(option => {\n        option.id = idCount++\n        option.parent = parentId\n\n        initOptionFull(option, separator)\n\n        optionIdMap.set(option.id, option)\n        optionValueMap.set(option.fullValue, option)\n      })\n\n      optionList.push(...options)\n    }\n\n    option.loaded = true\n    option.loading = false\n\n    const upstream = queryUpstreamOptions(option)\n    upstream.forEach(option => {\n      option.childrenLoaded = queryChildrenLoaded(option)\n    })\n  }\n\n  if (depth < openedIds.value.length) {\n    openedIds.value = openedIds.value.slice(0, depth)\n  }\n\n  openedIds.value.push(option.id)\n  requestAnimationFrame(() => {\n    getLast(panelElList.value)?.$el?.focus()\n  })\n}\n\nfunction handleOptionSelect(option: CascaderOptionState, depth: number) {\n  if (!option) return\n\n  if (option.hasChild || option.children?.length) {\n    handlePanelOpen(option, depth)\n  } else {\n    handleSingleSelect(option.fullValue)\n  }\n}\n\nfunction queryUpstreamOptions(option: CascaderOptionState) {\n  const options = [option]\n  let parent = optionIdMap.get(option.parent)\n\n  while (parent) {\n    options.push(parent)\n    parent = optionIdMap.get(parent.parent)\n  }\n\n  return options\n}\n\nfunction updateCheckedUpward(originalOption: CascaderOptionState) {\n  let option = originalOption\n\n  while (!isNull(option.parent)) {\n    const parent = optionIdMap.get(option.parent)\n\n    if (!parent) break\n\n    if (option.checked === parent.checked && option.partial === parent.partial) {\n      break\n    }\n\n    if (option.checked) {\n      parent.checked = parent.children.every(item => item.disabled || item.checked)\n      parent.partial = !parent.checked\n    } else {\n      parent.checked = false\n      parent.partial = parent.children.some(item => item.checked || item.partial)\n    }\n\n    option = parent\n  }\n}\n\nfunction updateCheckedDown(originalOption: CascaderOptionState) {\n  const checked = originalOption.checked\n  const partial = originalOption.partial\n\n  const loop = [...originalOption.children]\n\n  let option\n\n  while (loop.length) {\n    option = loop.shift()!\n\n    if (option.disabled) continue\n\n    option.checked = checked\n    option.partial = partial\n\n    if (option.children?.length) {\n      loop.push(...option.children)\n    }\n  }\n}\n\nfunction handleOptionCheck(option: CascaderOptionState) {\n  if (!option) return\n\n  const options = Array.from(optionIdMap.values())\n  const checked = !option.checked\n\n  if (!props.multiple) {\n    for (let i = 0, len = options.length; i < len; ++i) {\n      options[i].checked = false\n    }\n\n    option.checked = checked\n    option.partial = false\n\n    return handleSingleSelect(option.fullValue)\n  }\n\n  option.checked = checked\n  option.partial = false\n\n  if (!props.noCascaded) {\n    const originalOptions = [option].concat(\n      options.filter(option => option.disabled && option.checked),\n    )\n\n    for (let i = 0, len = originalOptions.length; i < len; ++i) {\n      const option = originalOptions[i]\n\n      updateCheckedUpward(option)\n      updateCheckedDown(option)\n    }\n  }\n\n  emitEvent(props[checked ? 'onSelect' : 'onCancel'], option.fullValue, option.data)\n  emitMultipleChange()\n}\n\nfunction emitMultipleChange() {\n  const options = Array.from(optionIdMap.values())\n  const selectedOptions = props.noCascaded\n    ? options.filter(option => option.checked)\n    : options.filter(option => option.checked && !(option.hasChild || option.children?.length))\n\n  const selectedValues: string[] = []\n  const selectedLabels: string[] = []\n\n  const values: (string | number)[][] = []\n  const dataList: Data[][] = []\n  const briefLabel = props.briefLabel\n\n  selectedOptions.forEach(option => {\n    selectedValues.push(option.fullValue)\n    selectedLabels.push(briefLabel ? option.label : option.fullLabel)\n\n    const { value, data } = queryArrayMeta(option.fullValue)\n\n    values.push(value)\n    dataList.push(data)\n  })\n\n  currentValues.value = selectedValues\n  currentLabels.value = selectedLabels\n\n  if (usingMerged.value) {\n    if (isAsyncLoad.value) {\n      mergedValues.value = options.filter(option => option.checked).map(option => option.fullValue)\n    }\n\n    updateMergedProps()\n  }\n\n  if (usingMerged.value && isAsyncLoad.value) {\n    values.length = 0\n    dataList.length = 0\n\n    mergedValues.value.forEach(fullValue => {\n      const option = optionValueMap.get(fullValue)\n\n      if (option) {\n        const { value, data } = queryArrayMeta(option.fullValue)\n\n        values.push(value)\n        dataList.push(data)\n      }\n    })\n  }\n\n  emitChangeEvent(values, dataList)\n  nextTick(updatePopper)\n}\n\nfunction handleSingleSelect(fullValue: string) {\n  const option = optionValueMap.get(fullValue)\n\n  if (!option) return\n\n  emitEvent(props.onSelect, fullValue, option.data)\n\n  if (fullValue) {\n    currentValues.value[0] = fullValue\n    currentLabels.value[0] = props.briefLabel ? option.label : option.fullLabel\n  } else {\n    currentValues.value.length = 0\n    currentLabels.value.length = 0\n  }\n\n  const { value, data } = queryArrayMeta(fullValue)\n\n  emitChangeEvent(value, data)\n  setVisible(false)\n}\n\nfunction emitChangeEvent(value: CascaderValue, data: Data[] | Data[][]) {\n  emittedValue.value = value\n\n  nextTick(() => {\n    outsideChanged = false\n\n    emit('update:value', value)\n    setFieldValue(value)\n    emitEvent(props.onChange as ChangeListener, value, data)\n    validateField()\n  })\n}\n\nfunction queryArrayMeta(fullValue: string) {\n  let option = optionValueMap.get(fullValue)!\n\n  if (!option) return { value: [], data: [] }\n\n  const value = [option.value]\n  const data = [option.data]\n\n  while (option.parent) {\n    const parent = optionIdMap.get(option.parent)\n\n    if (!parent) break\n\n    value.push(parent.value)\n    data.push(parent.data)\n    option = parent\n  }\n\n  return {\n    value: value.reverse(),\n    data: data.reverse(),\n  }\n}\n\nfunction toggleVisible(visible = !currentVisible.value) {\n  if (props.disabled || readonly.value) return\n\n  setVisible(visible)\n}\n\nfunction handleClickOutside() {\n  restTipShow.value = false\n  emitEvent(props.onClickOutside)\n\n  if (props.outsideClose && currentVisible.value) {\n    setVisible(false)\n    outsideClosed = true\n    emitEvent(props.onOutsideClose)\n  }\n}\n\nfunction handleClear() {\n  if (props.disabled || readonly.value) return\n\n  if (props.clearable) {\n    const prev = emittedValue.value\n\n    currentValues.value.length = 0\n    currentLabels.value.length = 0\n    mergedValues.value.length = 0\n    mergedLabels.value.length = 0\n    openedIds.value.length = 0\n    emittedValue.value = prev?.length === 0 ? prev : []\n    restTipShow.value = false\n\n    for (const option of optionIdMap.values()) {\n      option.checked = false\n      option.partial = false\n    }\n\n    if (prev?.length !== 0) {\n      emit('update:value', emittedValue.value)\n      emitEvent(props.onChange as ChangeListener, emittedValue.value, [])\n    }\n\n    emitEvent(props.onClear)\n    clearField(emittedValue.value)\n  }\n}\n\nfunction toggleShowRestTip() {\n  if (!currentVisible.value) {\n    restTipShow.value = !restTipShow.value\n  } else {\n    restTipShow.value = false\n  }\n}\n\nfunction handleTipClose(fullValue: string) {\n  if (props.disabled || readonly.value) return\n\n  if (props.multiple) {\n    handleOptionCheck(optionValueMap.get(fullValue)!)\n  } else {\n    handleSingleSelect(fullValue)\n  }\n}\n\nfunction handlePanelKeyOpen(option: CascaderOptionState, depth: number) {\n  handlePanelOpen(option, depth)\n\n  requestAnimationFrame(() => {\n    const panel = getLast(panelElList.value)\n\n    if (panel && panel.currentHitting < 0) {\n      panel.currentHitting = panel.options.findIndex(option => option.id === prevClosedId)\n\n      if (panel.currentHitting < 0) {\n        panel.currentHitting = 0\n      }\n    }\n  })\n}\n\nfunction handlePanelBack() {\n  prevClosedId = openedIds.value.pop()!\n}\n\nfunction handlePanelsEnter() {\n  requestAnimationFrame(() => {\n    isPopperShow.value = true\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=\"dialog\"\n    :aria-labelledby=\"labelId\"\n    @click=\"toggleVisible()\"\n  >\n    <div\n      ref=\"reference\"\n      :class=\"selectorClass\"\n      tabindex=\"0\"\n      @keydown.space.prevent=\"toggleVisible()\"\n      @keydown.tab=\"toggleVisible(false)\"\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            <Overflow\n              v-if=\"props.multiple\"\n              inherit\n              :class=\"[nh.be('tags')]\"\n              :items=\"templateValues\"\n              :max-count=\"props.maxTagCount\"\n              @rest-change=\"restTagCount = $event\"\n            >\n              <template #default=\"{ item, index }\">\n                <Tag\n                  inherit\n                  :class=\"nh.be('tag')\"\n                  :type=\"props.tagType\"\n                  closable\n                  :disabled=\"props.disabled\"\n                  @click.stop=\"toggleVisible()\"\n                  @close=\"handleTipClose(item)\"\n                >\n                  {{ templateLabels[index] }}\n                </Tag>\n              </template>\n              <template #counter=\"{ count }\">\n                <Tag\n                  v-if=\"props.noRestTip\"\n                  inherit\n                  :class=\"[nh.be('tag'), nh.be('counter')]\"\n                  :type=\"props.tagType\"\n                  :disabled=\"props.disabled\"\n                >\n                  {{ `+${count}` }}\n                </Tag>\n                <span v-else>\n                  <Tooltip\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                      <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                    </template>\n                    <NativeScroll inherit use-y-bar>\n                      <template v-for=\"(item, index) in templateValues\" :key=\"index\">\n                        <Tag\n                          v-if=\"index >= templateValues.length - restTagCount\"\n                          inherit\n                          :class=\"nh.be('tag')\"\n                          closable\n                          :type=\"props.tagType\"\n                          :disabled=\"props.disabled\"\n                          @close=\"handleTipClose(item)\"\n                        >\n                          {{ templateLabels[index] }}\n                        </Tag>\n                      </template>\n                    </NativeScroll>\n                  </Tooltip>\n                </span>\n              </template>\n            </Overflow>\n            <template v-else>\n              {{ currentLabels[0] }}\n            </template>\n            <span\n              v-if=\"(props.placeholder ?? locale.placeholder) && !hasValue\"\n              :class=\"nh.be('placeholder')\"\n            >\n              {{ props.placeholder ?? locale.placeholder }}\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\"></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          ></Icon>\n        </div>\n      </Transition>\n    </div>\n    <Popper\n      ref=\"popper\"\n      :class=\"[nh.be('popper'), nh.ns('input-vars'), nh.bs('vars')]\"\n      :visible=\"currentVisible\"\n      :to=\"transferTo\"\n      :transition=\"props.transitionName\"\n      :alive=\"props.popperAlive ?? !transferTo\"\n      @click.stop\n      @enter=\"handlePanelsEnter\"\n    >\n      <div\n        :class=\"{\n          [nh.be('panels')]: true,\n          [nh.bem('panels', 'empty')]: !optionsList[0] || !optionsList[0].length\n        }\"\n      >\n        <template v-if=\"optionsList[0] && optionsList[0].length\">\n          <CascaderPanel\n            v-for=\"(items, index) in optionsList\"\n            :key=\"index\"\n            :ref=\"(panel: any) => panel && panelElList.push(panel)\"\n            :options=\"items\"\n            :opened-id=\"openedIds[index]\"\n            :values=\"currentValues\"\n            :ready=\"isPopperShow\"\n            :multiple=\"props.multiple\"\n            :is-async=\"isAsyncLoad\"\n            :merged=\"usingMerged\"\n            :no-cascaded=\"props.noCascaded\"\n            :labeled-by=\"labelId\"\n            @select=\"handleOptionSelect($event, index)\"\n            @hover=\"usingHover && handlePanelOpen($event, index)\"\n            @check=\"handleOptionCheck($event)\"\n            @open=\"handlePanelKeyOpen($event, index)\"\n            @back=\"handlePanelBack\"\n            @close=\"currentVisible = false\"\n          >\n            <template v-if=\"slots.default || props.slots.default\" #default=\"payload\">\n              <slot v-bind=\"payload\">\n                <Renderer :renderer=\"props.slots.default\" :data=\"payload\"></Renderer>\n              </slot>\n            </template>\n            <template v-if=\"slots.label || props.slots.label\" #label=\"payload\">\n              <slot name=\"label\" v-bind=\"payload\">\n                <Renderer :renderer=\"props.slots.label\" :data=\"payload\"></Renderer>\n              </slot>\n            </template>\n          </CascaderPanel>\n        </template>\n        <div v-else :class=\"nh.be('empty')\" :style=\"{ width: `${selectorWidth}px` }\">\n          <slot name=\"empty\">\n            <Renderer :renderer=\"props.slots.empty\">\n              {{ props.emptyText ?? locale.empty }}\n            </Renderer>\n          </slot>\n        </div>\n      </div>\n    </Popper>\n  </div>\n</template>\n"],"names":["ID_KEY","PARENT_KEY","defaultKeyConfig","idFor","labelId","state","disabled","loading","size","validateField","clearField","getFieldValue","setFieldValue","useFieldStore","_a","reference","_props","__props","nh","useNameHelper","props","useProps","createSizeProp","createStateProp","createIconProp","value","placementWhileList","emit","__emit","slots","_useSlots","icons","useIcons","locale","useLocale","toRef","currentVisible","ref","currentValues","currentLabels","mergedValues","mergedLabels","isPopperShow","placement","transfer","emittedValue","optionTree","isAsyncLoad","computed","usingMerged","templateValues","templateLabels","optionList","optionIdMap","optionValueMap","outsideClosed","prevClosedId","flattedOptions","updateTrigger","watchEffect","flatTree","watch","initOptionStates","separator","isAsync","createOptionStates","i","len","option","initOptionFull","queryChildrenLoaded","transformTree","initValueAndLabel","openedIds","optionsList","id","wrapper","useClickOutside","handleClickOutside","popper","transferTo","updatePopper","usePopper","isHover","useHover","panelElList","restTagCount","restTipShow","selectorWidth","className","readonly","selectorClass","baseCls","hasPrefix","hasValue","usingHover","showClear","nextTick","getLast","outsideChanged","brief","updateMergedProps","originalOptions","updateCheckedUpward","updateCheckedDown","emitMultipleChange","setVisible","onBeforeUpdate","__expose","handlePanelOpen","handleOptionSelect","handleOptionCheck","toggleVisible","handleClear","handlePanelBack","options","rawOptions","valueKey","labelKey","disabledKey","hasChildKey","rawOption","parent","label","hasChild","reactive","loop","child","_b","baseValues","values","briefLabel","isFlatArray","isComplexArray","processMerged","normalizedValue","valueSet","v","selectedValues","selectedLabels","selectedOptions","stringValue","firstValue","ids","visible","emitEvent","depth","result","isPromise","parentId","idCount","queryUpstreamOptions","handleSingleSelect","originalOption","isNull","item","checked","partial","dataList","data","queryArrayMeta","fullValue","emitChangeEvent","prev","toggleShowRestTip","handleTipClose","handlePanelKeyOpen","panel","handlePanelsEnter","_createElementBlock","_unref","toAttrValue","_createElementVNode","_normalizeStyle","_renderSlot","_ctx","_createVNode","Renderer","Icon","_normalizeClass","_createBlock","Overflow","_cache","$event","_withCtx","index","Tag","_createTextVNode","_toDisplayString","count","_hoisted_2","Tooltip","NativeScroll","_openBlock","_Fragment","_renderList","_mergeProps","_Transition","_normalizeProps","_guardReactiveProps","Popper","items","CascaderPanel","payload"],"mappings":"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"}