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