{"version":3,"file":"dsh-cascader2.mjs","sources":["../../../../../../packages/components/dsh-cascader/src/dsh-cascader.vue"],"sourcesContent":["<template>\n  <el-tooltip\n    ref=\"tooltipRef\"\n    :visible=\"popperVisible\"\n    :teleported=\"teleported\"\n    :popper-class=\"[nsCascader.e('dropdown'), popperClass]\"\n    :popper-options=\"popperOptions\"\n    :fallback-placements=\"[\n      'bottom-start',\n      'bottom',\n      'top-start',\n      'top',\n      'right',\n      'left',\n    ]\"\n    :stop-popper-mouse-event=\"false\"\n    :gpu-acceleration=\"false\"\n    placement=\"bottom-start\"\n    :transition=\"`${nsCascader.namespace.value}-zoom-in-top`\"\n    effect=\"light\"\n    pure\n    persistent\n    @hide=\"hideSuggestionPanel\"\n  >\n    <template #default>\n      <div\n        v-clickoutside:[contentRef]=\"handleCancel\"\n        :class=\"cascaderKls\"\n        :style=\"cascaderStyle\"\n        @click=\"() => togglePopperVisible(readonly ? undefined : true)\"\n        @keydown=\"handleKeyDown\"\n        @mouseenter=\"inputHover = true\"\n        @mouseleave=\"inputHover = false\"\n      >\n        <el-input\n          ref=\"input\"\n          v-model=\"inputValue\"\n          :placeholder=\"currentPlaceholder\"\n          :readonly=\"readonly\"\n          :disabled=\"isDisabled\"\n          :validate-event=\"false\"\n          :size=\"realSize\"\n          :class=\"inputClass\"\n          :style=\"{\n            width:\n              popperVisible || filterFocus\n                ? focusWidth || width\n                : inputHover && hasValue\n                ? `calc(${width} + 30px)`\n                : hasValue\n                ? width\n                : emptyWidth || width,\n            transition: 'width 0.3s',\n          }\"\n          :tabindex=\"multiple && filterable && !isDisabled ? -1 : undefined\"\n          @compositionstart=\"handleComposition\"\n          @compositionupdate=\"handleComposition\"\n          @compositionend=\"handleComposition\"\n          @focus=\"handleFocus\"\n          @blur=\"handleBlur\"\n          @input=\"handleInput\"\n        >\n          <template #suffix>\n            <el-icon\n              v-if=\"clearBtnVisible\"\n              key=\"clear\"\n              :class=\"[nsInput.e('icon'), 'icon-circle-close']\"\n              @click.stop=\"handleClear\"\n            >\n              <circle-close />\n            </el-icon>\n            <el-icon\n              v-else\n              key=\"arrow-down\"\n              :class=\"cascaderIconKls\"\n              @click.stop=\"togglePopperVisible()\"\n            >\n              <arrow-down />\n            </el-icon>\n          </template>\n        </el-input>\n\n        <div v-if=\"multiple\" ref=\"tagWrapper\" :class=\"nsCascader.e('tags')\">\n          <el-tag\n            v-for=\"tag in presentTags\"\n            :key=\"tag.key\"\n            :type=\"tagType\"\n            :size=\"tagSize\"\n            :hit=\"tag.hitState\"\n            :closable=\"tag.closable\"\n            :style=\"{\n              maxWidth:\n                collapseTags && presentTags.length > maxCollapseTags\n                  ? tagSize === 'small'\n                    ? 'calc(100% - 57px)'\n                    : 'calc(100% - 67px)'\n                  : 'calc(100% - 17px)',\n            }\"\n            disable-transitions\n            @close=\"deleteTag(tag)\"\n          >\n            <template v-if=\"tag.isCollapseTag === false\">\n              <span>{{ tag.text }}</span>\n            </template>\n            <template v-else>\n              <el-tooltip\n                :disabled=\"popperVisible || !collapseTagsTooltip\"\n                :fallback-placements=\"['bottom', 'top', 'right', 'left']\"\n                placement=\"bottom\"\n                effect=\"light\"\n              >\n                <template #default>\n                  <span>{{ tag.text }}</span>\n                </template>\n                <template #content>\n                  <div :class=\"nsCascader.e('collapse-tags')\">\n                    <div\n                      v-for=\"(tag2, idx) in allPresentTags.slice(\n                        maxCollapseTags\n                      )\"\n                      :key=\"idx\"\n                      :class=\"nsCascader.e('collapse-tag')\"\n                    >\n                      <el-tag\n                        :key=\"tag2.key\"\n                        class=\"in-tooltip\"\n                        :type=\"tagType\"\n                        :size=\"tagSize\"\n                        :hit=\"tag2.hitState\"\n                        :closable=\"tag2.closable\"\n                        disable-transitions\n                        @close=\"deleteTag(tag2)\"\n                      >\n                        <span>{{ tag2.text }}</span>\n                      </el-tag>\n                    </div>\n                  </div>\n                </template>\n              </el-tooltip>\n            </template>\n          </el-tag>\n          <input\n            v-if=\"filterable && !isDisabled\"\n            v-show=\"popperVisible\"\n            ref=\"searchInput\"\n            v-model=\"searchInputValue\"\n            type=\"text\"\n            :class=\"cascaderInputKls\"\n            :placeholder=\"presentText ? '' : inputPlaceholder\"\n            @input=\"\n              (e) =>\n                handleInput(\n                  (e.target as HTMLInputElement).value,\n                  e as KeyboardEvent\n                )\n            \"\n            @click.stop=\"togglePopperVisible(true)\"\n            @keydown.delete=\"handleDelete\"\n            @compositionstart=\"handleComposition\"\n            @compositionupdate=\"handleComposition\"\n            @compositionend=\"handleComposition\"\n            @focus=\"handleFocus\"\n            @blur=\"handleBlur\"\n          />\n        </div>\n      </div>\n    </template>\n\n    <template #content>\n      <el-dsh-cascader-panel\n        v-show=\"!filtering\"\n        ref=\"cascaderPanelRef\"\n        v-model=\"checkedValue\"\n        :options=\"options\"\n        :props=\"props.props\"\n        :border=\"false\"\n        :render-label=\"$slots.default\"\n        @confirm=\"handleConfirm\"\n        @expand-change=\"handleExpandChange\"\n        @close=\"$nextTick(() => togglePopperVisible(false))\"\n      />\n      <el-scrollbar\n        v-if=\"filterable\"\n        v-show=\"filtering\"\n        ref=\"suggestionPanel\"\n        tag=\"ul\"\n        :class=\"nsCascader.e('suggestion-panel')\"\n        :view-class=\"nsCascader.e('suggestion-list')\"\n        @keydown=\"handleSuggestionKeyDown\"\n      >\n        <template v-if=\"suggestions.length\">\n          <li v-if=\"multiple\" :class=\"nsCascader.e('suggestion-all')\">\n            <el-checkbox\n              v-model=\"checkedAllSuggestions\"\n              :label=\"DSH_CASCADER_ALL_NODE_LABEL\"\n              :class=\"nsCascader.e('suggestion-checkbox')\"\n              @change=\"handleChangeAllSuggestions\"\n            />\n          </li>\n          <li\n            v-for=\"item in suggestions\"\n            :key=\"item.uid\"\n            :class=\"[\n              nsCascader.e('suggestion-item'),\n              nsCascader.is('checked', item.checked),\n            ]\"\n            :tabindex=\"-1\"\n            @click=\"handleSuggestionClick(item)\"\n          >\n            <span>{{ item.text }}</span>\n            <el-icon v-if=\"item.checked\">\n              <check />\n            </el-icon>\n          </li>\n        </template>\n        <slot v-else name=\"empty\">\n          <li :class=\"nsCascader.e('empty-text')\">\n            {{ t('el.cascader.noMatch') }}\n          </li>\n        </slot>\n      </el-scrollbar>\n      <div v-if=\"showFoot\" :class=\"nsCascader.e('footer')\">\n        <el-button size=\"small\" plain @click=\"handleCancel\">取消</el-button>\n        <el-button size=\"small\" type=\"primary\" plain @click=\"handleConfirm\"\n          >确定</el-button\n        >\n      </div>\n    </template>\n  </el-tooltip>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, nextTick, onMounted, ref, useAttrs, watch } from 'vue'\nimport { isPromise } from '@vue/shared'\nimport { cloneDeep, debounce } from 'lodash-unified'\nimport { useCssVar, useResizeObserver } from '@vueuse/core'\nimport { ArrowDown, Check, CircleClose } from '@element-plus/icons-vue'\nimport ElDshCascaderPanel, {\n  DSH_CASCADER_ALL_NODE_LABEL,\n  DSH_CASCADER_ALL_NODE_VALUE,\n  DshDefaultProps,\n} from '@code-monkey-ui/components/dsh-cascader-panel'\nimport { ElButton } from '@code-monkey-ui/components/button'\nimport ElInput from '@code-monkey-ui/components/input'\nimport ElTooltip from '@code-monkey-ui/components/tooltip'\nimport ElScrollbar from '@code-monkey-ui/components/scrollbar'\nimport ElTag from '@code-monkey-ui/components/tag'\nimport ElIcon from '@code-monkey-ui/components/icon'\nimport ElCheckbox from '@code-monkey-ui/components/checkbox'\nimport { useFormItem, useFormSize } from '@code-monkey-ui/components/form'\nimport { ClickOutside as vClickoutside } from '@code-monkey-ui/directives'\nimport { useLocale, useNamespace } from '@code-monkey-ui/hooks'\nimport {\n  debugWarn,\n  focusNode,\n  getSibling,\n  isClient,\n  isKorean,\n} from '@code-monkey-ui/utils'\nimport {\n  CHANGE_EVENT,\n  EVENT_CODE,\n  UPDATE_MODEL_EVENT,\n} from '@code-monkey-ui/constants'\nimport { dshCascaderEmits, dshCascaderProps } from './dsh-cascader'\n\nimport type { Options } from '@code-monkey-ui/components/popper'\nimport type { ComputedRef, Ref, StyleValue } from 'vue'\nimport type { TooltipInstance } from '@code-monkey-ui/components/tooltip'\nimport type { InputInstance } from '@code-monkey-ui/components/input'\nimport type { ScrollbarInstance } from '@code-monkey-ui/components/scrollbar'\nimport type {\n  DshCascaderNode,\n  DshCascaderPanelInstance,\n  DshCascaderValue,\n  DshTag,\n} from '@code-monkey-ui/components/dsh-cascader-panel'\nimport type { CheckboxValueType } from '@code-monkey-ui/components/checkbox'\n\nconst popperOptions: Partial<Options> = {\n  modifiers: [\n    {\n      name: 'arrowPosition',\n      enabled: true,\n      phase: 'main',\n      fn: ({ state }) => {\n        const { modifiersData, placement } = state as any\n        if (['right', 'left', 'bottom', 'top'].includes(placement)) return\n        modifiersData.arrow.x = 35\n      },\n      requires: ['arrow'],\n    },\n  ],\n}\nconst COMPONENT_NAME = 'ElDshCascader'\n\ndefineOptions({\n  name: COMPONENT_NAME,\n})\n\nconst props = defineProps(dshCascaderProps)\nconst emit = defineEmits(dshCascaderEmits)\nconst attrs = useAttrs()\n\nlet inputInitialHeight = 0\nlet pressDeleteCount = 0\n\nconst nsCascader = useNamespace('dsh-cascader')\nconst nsInput = useNamespace('input')\n\nconst { t } = useLocale()\nconst { form, formItem } = useFormItem()\n\nconst checkedAllSuggestions = ref<boolean>(false)\nconst tooltipRef: Ref<TooltipInstance | null> = ref(null)\nconst input: Ref<InputInstance | null> = ref(null)\nconst searchInput: Ref<InputInstance | null> = ref(null)\nconst tagWrapper = ref(null)\nconst cascaderPanelRef: Ref<DshCascaderPanelInstance | null> = ref(null)\nconst suggestionPanel: Ref<ScrollbarInstance | null> = ref(null)\nconst popperVisible = ref(false)\nconst inputHover = ref(false)\nconst filtering = ref(false)\nconst filterFocus = ref(false)\nconst inputValue = ref('')\nconst searchInputValue = ref('')\nconst presentTags: Ref<DshTag[]> = ref([])\nconst allPresentTags: Ref<DshTag[]> = ref([])\nconst suggestions: Ref<DshCascaderNode[]> = ref([])\n// 临时存储值，用于取消按钮点击时恢复原值\nconst tempCheckedNodes: Ref<DshCascaderNode[]> = ref([])\nconst isOnComposition = ref(false)\n\nconst cascaderStyle = computed<StyleValue>(() => {\n  return attrs.style as StyleValue\n})\n\nconst isDisabled = computed(() => props.disabled || form?.disabled)\nconst inputPlaceholder = computed(\n  () => props.placeholder || t('el.cascader.placeholder')\n)\nconst currentPlaceholder = computed(() =>\n  searchInputValue.value ||\n  presentTags.value.length > 0 ||\n  isOnComposition.value\n    ? ''\n    : popperVisible.value || filterFocus.value\n    ? '搜索内容'\n    : inputPlaceholder.value\n)\nconst realSize = useFormSize()\nconst tagSize = computed(() =>\n  ['small'].includes(realSize.value) ? 'small' : 'default'\n)\nconst multiple = computed(() => !!props.props.multiple)\nconst readonly = computed(() => !props.filterable || multiple.value)\nconst searchKeyword = computed(() =>\n  multiple.value ? searchInputValue.value : inputValue.value\n)\nconst checkedNodes: ComputedRef<DshCascaderNode[]> = computed(\n  () => cascaderPanelRef.value?.checkedNodes || []\n)\nconst clearBtnVisible = computed(() => {\n  if (\n    !props.clearable ||\n    isDisabled.value ||\n    filtering.value ||\n    !inputHover.value\n  )\n    return false\n\n  return !!checkedNodes.value.length\n})\nconst presentText = computed(() => {\n  const { showAllLevels, separator } = props\n  const nodes = checkedNodes.value\n  return nodes.length\n    ? multiple.value\n      ? ''\n      : nodes[0].calcText(showAllLevels, separator)\n    : ''\n})\n\nconst checkedValue = computed<DshCascaderValue>({\n  get() {\n    return cloneDeep(props.modelValue) as DshCascaderValue\n  },\n  set(val) {\n    emit(UPDATE_MODEL_EVENT, val)\n    emit(CHANGE_EVENT, val)\n    if (props.validateEvent) {\n      formItem?.validate('change').catch((err) => debugWarn(err))\n    }\n  },\n})\n\nconst hasValue = computed(() => {\n  return multiple.value\n    ? Array.isArray(checkedValue.value) && checkedValue.value.length > 0\n    : checkedValue.value !== undefined &&\n        checkedValue.value !== null &&\n        checkedValue.value !== ''\n})\n\nconst cascaderKls = computed(() => {\n  return [\n    nsCascader.b(),\n    nsCascader.m(realSize.value),\n    nsCascader.is('disabled', isDisabled.value),\n    attrs.class,\n  ]\n})\n\nconst cascaderInputKls = computed(() => {\n  return [\n    nsCascader.e('search-input'),\n    nsCascader.em('search-input', realSize.value),\n  ]\n})\n\nconst cascaderIconKls = computed(() => {\n  return [\n    nsInput.e('icon'),\n    'icon-arrow-down',\n    nsCascader.is('reverse', popperVisible.value),\n  ]\n})\n\nconst inputClass = computed(() => {\n  return nsCascader.is('focus', popperVisible.value || filterFocus.value)\n})\n\nconst contentRef = computed(() => {\n  return tooltipRef.value?.popperRef?.contentRef\n})\n\nconst togglePopperVisible = (visible?: boolean) => {\n  if (isDisabled.value) return\n  visible = visible ?? !popperVisible.value\n\n  if (visible !== popperVisible.value) {\n    popperVisible.value = visible\n    input.value?.input?.setAttribute('aria-expanded', `${visible}`)\n\n    if (visible) {\n      if (multiple.value) {\n        nextTick(() => {\n          searchInput?.value?.focus()\n        })\n      }\n      updatePopperPosition()\n      nextTick(cascaderPanelRef.value?.scrollToExpandingNode)\n    } else if (props.filterable) {\n      syncPresentTextValue()\n    }\n\n    emit('visibleChange', visible)\n  }\n}\n\nconst tempSaveMultipleValues = (visible?: boolean) => {\n  if (visible) {\n    tempCheckedNodes.value = cloneDeep(checkedNodes.value)\n  }\n}\n\nconst updatePopperPosition = () => {\n  nextTick(() => {\n    tooltipRef.value?.updatePopper()\n  })\n}\n\nconst hideSuggestionPanel = () => {\n  filtering.value = false\n  suggestions.value = []\n  checkedAllSuggestions.value = false\n}\n\nconst genTag = (node: DshCascaderNode): DshTag => {\n  const { showAllLevels, separator } = props\n  return {\n    node,\n    key: node.uid,\n    text: node.calcText(showAllLevels, separator),\n    hitState: false,\n    closable: !isDisabled.value && !node.DshIsDisabled,\n    isCollapseTag: false,\n  }\n}\n\nconst syncCheckedAllSuggestions = () => {\n  checkedAllSuggestions.value =\n    multiple.value &&\n    suggestions.value.length > 0 &&\n    suggestions.value.every((node) => node.checked)\n}\n\nconst deleteTag = (tag: DshTag) => {\n  const node = tag.node as DshCascaderNode\n  node.doCheck(false)\n  cascaderPanelRef.value?.calculateCheckedValue()\n  emit('removeTag', node.valueByOption)\n  syncCheckedAllSuggestions()\n  handleConfirm()\n}\n\nconst handleChangeAllSuggestions = (val: CheckboxValueType) => {\n  const checked = !!val\n  suggestions.value.forEach((node) => {\n    cascaderPanelRef.value?.handleCheckChange(node, checked, false)\n  })\n  syncCheckedAllSuggestions()\n}\n\nconst calculatePresentTags = () => {\n  if (!multiple.value) return\n  const nodes = checkedNodes.value\n  const tags: DshTag[] = []\n\n  const allTags: DshTag[] = []\n  nodes.forEach((node) => allTags.push(genTag(node)))\n  allPresentTags.value = allTags\n\n  if (nodes.length) {\n    nodes\n      .slice(0, props.maxCollapseTags)\n      .forEach((node) => tags.push(genTag(node)))\n    const rest = nodes.slice(props.maxCollapseTags)\n    const restCount = rest.length\n\n    if (restCount) {\n      if (props.collapseTags) {\n        tags.push({\n          key: -1,\n          text: `+ ${restCount}`,\n          closable: false,\n          isCollapseTag: true,\n        })\n      } else {\n        rest.forEach((node) => tags.push(genTag(node)))\n      }\n    }\n  }\n\n  presentTags.value = tags\n}\n\nconst calculateSuggestions = () => {\n  const { filterMethod, showAllLevels, separator } = props\n  const valueKey = props.props.value ?? DshDefaultProps.value\n  const res = cascaderPanelRef.value\n    ?.getFlattedNodes(!props.props.checkStrictly)\n    ?.filter((node) => {\n      if (\n        node.DshIsDisabled ||\n        node.data![valueKey] === DSH_CASCADER_ALL_NODE_VALUE\n      )\n        return false\n      node.calcText(showAllLevels, separator)\n      return filterMethod(node, searchKeyword.value)\n    })\n\n  if (multiple.value) {\n    presentTags.value.forEach((tag) => {\n      tag.hitState = false\n    })\n    allPresentTags.value.forEach((tag) => {\n      tag.hitState = false\n    })\n  }\n\n  filtering.value = true\n  suggestions.value = res!\n  syncCheckedAllSuggestions()\n  updatePopperPosition()\n}\n\nconst focusFirstNode = () => {\n  let firstNode!: HTMLElement\n\n  if (filtering.value && suggestionPanel.value) {\n    firstNode = suggestionPanel.value.$el.querySelector(\n      `.${nsCascader.e('suggestion-item')}`\n    )\n  } else {\n    firstNode = cascaderPanelRef.value?.$el.querySelector(\n      `.${nsCascader.b('node')}[tabindex=\"-1\"]`\n    )\n  }\n\n  if (firstNode) {\n    firstNode.focus()\n    !filtering.value && firstNode.click()\n  }\n}\n\nconst updateStyle = () => {\n  const inputInner = input.value?.input\n  const tagWrapperEl = tagWrapper.value\n  const suggestionPanelEl = suggestionPanel.value?.$el\n\n  if (!isClient || !inputInner) return\n\n  if (suggestionPanelEl) {\n    const suggestionList = suggestionPanelEl.querySelector(\n      `.${nsCascader.e('suggestion-list')}`\n    )\n    suggestionList.style.minWidth = `${inputInner.offsetWidth}px`\n  }\n\n  if (tagWrapperEl) {\n    const { offsetHeight } = tagWrapperEl\n    const height =\n      presentTags.value.length > 0\n        ? `${Math.max(offsetHeight + 6, inputInitialHeight)}px`\n        : `${inputInitialHeight}px`\n    inputInner.style.height = height\n    updatePopperPosition()\n  }\n}\n\nconst getCheckedNodes = (leafOnly: boolean) => {\n  return cascaderPanelRef.value?.getCheckedNodes(leafOnly)\n}\n\nconst handleExpandChange = (value: DshCascaderValue) => {\n  updatePopperPosition()\n  emit('expandChange', value)\n}\n\nconst handleComposition = (event: CompositionEvent) => {\n  const text = (event.target as HTMLInputElement)?.value\n  if (event.type === 'compositionend') {\n    isOnComposition.value = false\n    nextTick(() => handleInput(text))\n  } else {\n    const lastCharacter = text[text.length - 1] || ''\n    isOnComposition.value = !isKorean(lastCharacter)\n  }\n}\n\nconst handleKeyDown = (e: KeyboardEvent) => {\n  if (isOnComposition.value) return\n\n  switch (e.code) {\n    case EVENT_CODE.enter:\n      togglePopperVisible()\n      break\n    case EVENT_CODE.down:\n      togglePopperVisible(true)\n      nextTick(focusFirstNode)\n      e.preventDefault()\n      break\n    case EVENT_CODE.esc:\n      if (popperVisible.value === true) {\n        e.preventDefault()\n        e.stopPropagation()\n        togglePopperVisible(false)\n      }\n      break\n    case EVENT_CODE.tab:\n      togglePopperVisible(false)\n      break\n  }\n}\n\nconst handleClear = () => {\n  cascaderPanelRef.value?.clearCheckedNodes()\n  syncCheckedAllSuggestions()\n  if (!popperVisible.value && props.filterable) {\n    syncPresentTextValue()\n  }\n  handleConfirm()\n}\n\nconst syncPresentTextValue = () => {\n  const { value } = presentText\n  inputValue.value = value\n  searchInputValue.value = value\n}\n\nconst handleSuggestionClick = (node: DshCascaderNode) => {\n  const { checked } = node\n\n  if (multiple.value) {\n    cascaderPanelRef.value?.handleCheckChange(node, !checked, false)\n    syncCheckedAllSuggestions()\n  } else {\n    !checked && cascaderPanelRef.value?.handleCheckChange(node, true, false)\n    togglePopperVisible(false)\n  }\n}\n\nconst handleSuggestionKeyDown = (e: KeyboardEvent) => {\n  const target = e.target as HTMLElement\n  const { code } = e\n\n  switch (code) {\n    case EVENT_CODE.up:\n    case EVENT_CODE.down: {\n      const distance = code === EVENT_CODE.up ? -1 : 1\n      focusNode(\n        getSibling(\n          target,\n          distance,\n          `.${nsCascader.e('suggestion-item')}[tabindex=\"-1\"]`\n        ) as HTMLElement\n      )\n      break\n    }\n    case EVENT_CODE.enter:\n      target.click()\n      break\n  }\n}\n\nconst handleDelete = () => {\n  const tags = presentTags.value\n  const lastTag = tags[tags.length - 1]\n  pressDeleteCount = searchInputValue.value ? 0 : pressDeleteCount + 1\n\n  if (!lastTag || !pressDeleteCount || (props.collapseTags && tags.length > 1))\n    return\n\n  if (lastTag.hitState) {\n    deleteTag(lastTag)\n  } else {\n    lastTag.hitState = true\n  }\n}\n\nconst handleFocus = (e: FocusEvent) => {\n  const el = e.target as HTMLInputElement\n  const name = nsCascader.e('search-input')\n  if (el.className === name) {\n    filterFocus.value = true\n  }\n  emit('focus', e)\n}\n\nconst handleBlur = (e: FocusEvent) => {\n  filterFocus.value = false\n  emit('blur', e)\n}\n\n// 确定按钮回调\nconst handleConfirm = () => {\n  setTimeout(() => {\n    emit('confirm', checkedValue.value)\n  })\n  togglePopperVisible(false)\n}\n\n// 取消按钮回调\nconst handleCancel = () => {\n  if (isDisabled.value || !popperVisible.value) return\n  cascaderPanelRef.value?.clearCheckedNodes()\n  const length = cascaderPanelRef.value?.getFlattedNodes(true)?.length || 0\n  if (length - 1 === tempCheckedNodes.value.length) {\n    cascaderPanelRef.value\n      ?.getFlattedNodes(true)\n      ?.forEach((node: DshCascaderNode) => {\n        node.doCheck(true)\n        cascaderPanelRef.value?.expandParentNode(node)\n      })\n  } else {\n    tempCheckedNodes.value.forEach((tempNode: DshCascaderNode) => {\n      cascaderPanelRef.value\n        ?.getFlattedNodes(true)\n        // eslint-disable-next-line array-callback-return\n        ?.some((node: DshCascaderNode) => {\n          if (tempNode.uid === node.uid) {\n            node.doCheck(true)\n            cascaderPanelRef.value?.expandParentNode(node)\n            return true\n          }\n        })\n    })\n  }\n  cascaderPanelRef.value?.calculateCheckedValue()\n  syncCheckedAllSuggestions()\n  updatePopperPosition()\n  togglePopperVisible(false)\n  setTimeout(() => {\n    emit('cancel', checkedValue.value)\n  })\n}\n\nconst handleFilter = debounce(() => {\n  const { value } = searchKeyword\n\n  if (!value) return\n\n  const passed = props.beforeFilter(value)\n\n  if (isPromise(passed)) {\n    passed.then(calculateSuggestions).catch(() => {\n      /* prevent log error */\n    })\n  } else if (passed !== false) {\n    calculateSuggestions()\n  } else {\n    hideSuggestionPanel()\n  }\n}, props.debounce)\n\nconst handleInput = (val: string, e?: KeyboardEvent) => {\n  !popperVisible.value && togglePopperVisible(true)\n\n  if (e?.isComposing) return\n\n  if (val) {\n    handleFilter()\n  } else {\n    hideSuggestionPanel()\n  }\n}\n\nconst getInputInnerHeight = (inputInner: HTMLElement): number =>\n  Number.parseFloat(\n    useCssVar(nsInput.cssVarName('input-height'), inputInner).value\n  ) - 2\n\nwatch(filtering, updatePopperPosition)\n\nwatch([checkedNodes, isDisabled], calculatePresentTags)\n\nwatch(presentTags, () => {\n  nextTick(() => updateStyle())\n})\n\nwatch(popperVisible, tempSaveMultipleValues, { immediate: true })\n\nwatch(realSize, async () => {\n  await nextTick()\n  const inputInner = input.value!.input!\n  inputInitialHeight = getInputInnerHeight(inputInner) || inputInitialHeight\n  updateStyle()\n})\n\nwatch(presentText, syncPresentTextValue, { immediate: true })\n\nonMounted(() => {\n  const inputInner = input.value!.input!\n\n  const inputInnerHeight = getInputInnerHeight(inputInner)\n\n  inputInitialHeight = inputInner.offsetHeight || inputInnerHeight\n  useResizeObserver(inputInner, updateStyle)\n})\n\ndefineExpose({\n  /**\n   * @description get an array of currently selected node,(leafOnly) whether only return the leaf checked nodes, default is `false`\n   */\n  getCheckedNodes,\n  /**\n   * @description cascader panel ref\n   */\n  cascaderPanelRef,\n  /**\n   * @description toggle the visible of popper\n   */\n  togglePopperVisible,\n  /**\n   * @description cascader content ref\n   */\n  contentRef,\n})\n</script>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mCAwSc,CAAA;AAAA,EACZ,IAAM,EAAA,cAAA;AACR;;;;;;;AAnBA,IAAA,MAAM,aAAkC,GAAA;AAAA,MACtC,SAAW,EAAA;AAAA,QACT;AAAA,UACE,IAAM,EAAA,eAAA;AAAA,UACN,OAAS,EAAA,IAAA;AAAA,UACT,KAAO,EAAA,MAAA;AAAA,UACP,EAAA,EAAI,CAAC,EAAE,KAAY,EAAA,KAAA;AACjB,YAAM,MAAA,EAAE,eAAe,SAAc,EAAA,GAAA,KAAA,CAAA;AACrC,YAAA,IAAI,CAAC,OAAS,EAAA,MAAA,EAAQ,UAAU,KAAK,CAAA,CAAE,SAAS,SAAS,CAAA;AAAG,cAAA,OAAA;AAC5D,YAAA,aAAA,CAAc,MAAM,CAAI,GAAA,EAAA,CAAA;AAAA,WAC1B;AAAA,UACA,QAAA,EAAU,CAAC,OAAO,CAAA;AAAA,SACpB;AAAA,OACF;AAAA,KACF,CAAA;AASA,IAAA,MAAM,QAAQ,QAAS,EAAA,CAAA;AAEvB,IAAA,IAAI,kBAAqB,GAAA,CAAA,CAAA;AACzB,IAAA,IAAI,gBAAmB,GAAA,CAAA,CAAA;AAEvB,IAAM,MAAA,UAAA,GAAa,aAAa,cAAc,CAAA,CAAA;AAC9C,IAAM,MAAA,OAAA,GAAU,aAAa,OAAO,CAAA,CAAA;AAEpC,IAAM,MAAA,EAAE,MAAM,SAAU,EAAA,CAAA;AACxB,IAAM,MAAA,EAAE,IAAM,EAAA,QAAA,EAAA,GAAa,WAAY,EAAA,CAAA;AAEvC,IAAM,MAAA,qBAAA,GAAwB,IAAa,KAAK,CAAA,CAAA;AAChD,IAAM,MAAA,UAAA,GAA0C,IAAI,IAAI,CAAA,CAAA;AACxD,IAAM,MAAA,KAAA,GAAmC,IAAI,IAAI,CAAA,CAAA;AACjD,IAAM,MAAA,WAAA,GAAyC,IAAI,IAAI,CAAA,CAAA;AACvD,IAAM,MAAA,UAAA,GAAa,IAAI,IAAI,CAAA,CAAA;AAC3B,IAAM,MAAA,gBAAA,GAAyD,IAAI,IAAI,CAAA,CAAA;AACvE,IAAM,MAAA,eAAA,GAAiD,IAAI,IAAI,CAAA,CAAA;AAC/D,IAAM,MAAA,aAAA,GAAgB,IAAI,KAAK,CAAA,CAAA;AAC/B,IAAM,MAAA,UAAA,GAAa,IAAI,KAAK,CAAA,CAAA;AAC5B,IAAM,MAAA,SAAA,GAAY,IAAI,KAAK,CAAA,CAAA;AAC3B,IAAM,MAAA,WAAA,GAAc,IAAI,KAAK,CAAA,CAAA;AAC7B,IAAM,MAAA,UAAA,GAAa,IAAI,EAAE,CAAA,CAAA;AACzB,IAAM,MAAA,gBAAA,GAAmB,IAAI,EAAE,CAAA,CAAA;AAC/B,IAAM,MAAA,WAAA,GAA6B,GAAI,CAAA,EAAE,CAAA,CAAA;AACzC,IAAM,MAAA,cAAA,GAAgC,GAAI,CAAA,EAAE,CAAA,CAAA;AAC5C,IAAM,MAAA,WAAA,GAAsC,GAAI,CAAA,EAAE,CAAA,CAAA;AAElD,IAAM,MAAA,gBAAA,GAA2C,GAAI,CAAA,EAAE,CAAA,CAAA;AACvD,IAAM,MAAA,eAAA,GAAkB,IAAI,KAAK,CAAA,CAAA;AAEjC,IAAM,MAAA,aAAA,GAAgB,SAAqB,MAAM;AAC/C,MAAA,OAAO,KAAM,CAAA,KAAA,CAAA;AAAA,KACd,CAAA,CAAA;AAED,IAAA,MAAM,aAAa,QAAS,CAAA,MAAM,KAAM,CAAA,QAAA,aAA0B,IAAA,GAAA,KAAA,CAAA,GAAA,IAAA,CAAA,QAAA,CAAA,CAAA,CAAA;AAClE,IAAA,MAAM,mBAAmB,QACvB,CAAA,MAAM,MAAM,WAAe,IAAA,CAAA,CAAE,yBAAyB,CACxD,CAAA,CAAA;AACA,IAAA,MAAM,qBAAqB,QAAS,CAAA,MAClC,iBAAiB,KACjB,IAAA,WAAA,CAAY,MAAM,MAAS,GAAA,CAAA,IAC3B,eAAgB,CAAA,KAAA,GACZ,KACA,aAAc,CAAA,KAAA,IAAS,YAAY,KACnC,GAAA,0BAAA,GACA,iBAAiB,KACvB,CAAA,CAAA;AACA,IAAA,MAAM,WAAW,WAAY,EAAA,CAAA;AAC7B,IAAM,MAAA,OAAA,GAAU,QAAS,CAAA,MACvB,CAAC,OAAO,CAAE,CAAA,QAAA,CAAS,QAAS,CAAA,KAAK,CAAI,GAAA,OAAA,GAAU,SACjD,CAAA,CAAA;AACA,IAAA,MAAM,WAAW,QAAS,CAAA,MAAM,CAAC,CAAC,KAAA,CAAM,MAAM,QAAQ,CAAA,CAAA;AACtD,IAAA,MAAM,WAAW,QAAS,CAAA,MAAM,CAAC,KAAM,CAAA,UAAA,IAAc,SAAS,KAAK,CAAA,CAAA;AACnE,IAAM,MAAA,aAAA,GAAgB,SAAS,MAC7B,QAAA,CAAS,QAAQ,gBAAiB,CAAA,KAAA,GAAQ,WAAW,KACvD,CAAA,CAAA;AACA,IAAA,MAAM,eAA+C,QACnD,CAAA,MAAM;AAER,MAAM,IAAA,EAAA,CAAA;AACJ,MACE,WAAO,GACP,gBAAA,CAAA,cACU,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,YACE,KAAA,EAAA,CAAA;AAEZ,KAAO,CAAA,CAAA;AAET,IAAO,MAAA,eAAE,GAAa,QAAM,CAAA,MAAA;AAAA,MAC7B,IAAA,CAAA,KAAA,CAAA,SAAA,IAAA,UAAA,CAAA,KAAA,IAAA,SAAA,CAAA,KAAA,IAAA,CAAA,UAAA,CAAA,KAAA;AACD,QAAM,OAAA,KAAA,CAAA;AACJ,MAAM,OAAA,CAAE,mBAA6B,CAAA,MAAA,CAAA;AACrC,KAAA,CAAA,CAAA;AACA,IAAO,MAAA,WACH,GAAA,QAAA,CAAA,MACE;AAEF,MACL,MAAA,EAAA,aAAA,EAAA,SAAA,EAAA,GAAA,KAAA,CAAA;AAED,MAAA,0BAAgD,CAAA,KAAA,CAAA;AAAA,MAC9C,OAAM,KAAA,CAAA,MAAA,GAAA,QAAA,CAAA,KAAA,GAAA,EAAA,GAAA,KAAA,CAAA,CAAA,CAAA,CAAA,QAAA,CAAA,aAAA,EAAA,SAAA,CAAA,GAAA,EAAA,CAAA;AACJ,KAAO,CAAA,CAAA;AAA0B,IACnC,MAAA,YAAA,GAAA,QAAA,CAAA;AAAA,MACA,MAAS;AACP,QAAA,iCAA4B,CAAA,CAAA;AAC5B,OAAA;AACA,MAAA,GAAA,CAAA;AACE,QAAU,IAAA,CAAA,wBAAiB,CAAE;AAA6B,QAC5D,IAAA,CAAA,YAAA,EAAA,GAAA,CAAA,CAAA;AAAA,QACF,IAAA,KAAA,CAAA,aAAA,EAAA;AAAA,UACD,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAA,QAAA,CAAA,QAAA,CAAA,CAAA,KAAA,CAAA,CAAA,GAAA,KAAA,SAAA,CAAA,GAAA,CAAA,CAAA,CAAA;AAED,SAAM;AACJ,OAAA;AAI6B,KAC9B,CAAA,CAAA;AAED,IAAM,MAAA,QAAA,GAAA,eAA6B;AACjC,MAAO,OAAA,QAAA,CAAA,KAAA,GAAA,KAAA,CAAA,OAAA,CAAA,YAAA,CAAA,KAAA,CAAA,IAAA,YAAA,CAAA,KAAA,CAAA,MAAA,GAAA,CAAA,GAAA,YAAA,CAAA,KAAA,KAAA,KAAA,CAAA,IAAA,YAAA,CAAA,KAAA,KAAA,IAAA,IAAA,YAAA,CAAA,KAAA,KAAA,EAAA,CAAA;AAAA,KAAA,CAAA,CAAA;AACQ,IACb,MAAA,WAAa,GAAA,QAAc,CAAA,MAAA;AAAA,MAAA,OAChB;AAA+B,QAC1C,UAAM,CAAA,CAAA,EAAA;AAAA,QACR,UAAA,CAAA,CAAA,CAAA,QAAA,CAAA,KAAA,CAAA;AAAA,QACD,UAAA,CAAA,EAAA,CAAA,UAAA,EAAA,UAAA,CAAA,KAAA,CAAA;AAED,QAAM,KAAA,CAAA,KAAA;AACJ,OAAO,CAAA;AAAA,KACL,CAAA,CAAA;AAA2B,IAAA,MAChB,gBAAmB,GAAA,QAAA,CAAA,MAAA;AAAc,MAC9C,OAAA;AAAA,QACD,UAAA,CAAA,CAAA,CAAA,cAAA,CAAA;AAED,QAAM,UAAA,CAAA,EAAA,CAAA,gBAAiC,QAAA,CAAA,KAAA,CAAA;AACrC,OAAO,CAAA;AAAA,KACL,CAAA,CAAA;AAAgB,IAChB,MAAA,eAAA,GAAA,QAAA,CAAA,MAAA;AAAA,MAAA,OACW;AAAiC,QAC9C,OAAA,CAAA,CAAA,CAAA,MAAA,CAAA;AAAA,QACD,iBAAA;AAED,QAAM,UAAA,CAAA,EAAA,CAAA,WAA4B,aAAA,CAAA,KAAA,CAAA;AAChC,OAAA,CAAA;AAAsE,KACvE,CAAA,CAAA;AAED,IAAM,MAAA,UAAA,GAAa,SAAS,MAAM;AAChC,MAAO,OAAA,UAAA,CAAW,UAAkB,EAAA,aAAA,CAAA,KAAA,IAAA,WAAA,CAAA,KAAA,CAAA,CAAA;AAAA,KACrC,CAAA,CAAA;AAED,IAAM,MAAA,UAAA,GAAA,QAAA,CAAsB,MAAuB;AACjD,MAAA,IAAI,EAAW,EAAA,EAAA,CAAA;AAAO,MAAA,OAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,UAAA,CAAA,KAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,SAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAA,CAAA;AACtB,KAAU,CAAA,CAAA;AAEV,IAAI,MAAA,8BAAiC,KAAA;AACnC,MAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AACA,MAAA,IAAA,UAAa,CAAA,KAAA;AAEb,QAAA,OAAa;AACX,MAAA,OAAA,UAAa,IAAO,IAAA,GAAA,OAAA,GAAA,CAAA,aAAA,CAAA,KAAA,CAAA;AAClB,MAAA,IAAA,OAAA,KAAe,aAAA,CAAA,KAAA,EAAA;AACb,QAAA,aAAA,CAAA,KAAa,UAAa,CAAA;AAAA,QAAA,CAAA,EAAA,GAC3B,CAAA,EAAA,GAAA,KAAA,CAAA,KAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,YAAA,CAAA,eAAA,EAAA,CAAA,EAAA,OAAA,CAAA,CAAA,CAAA,CAAA;AAAA,QACH,IAAA,OAAA,EAAA;AACA,UAAqB,IAAA,QAAA,CAAA,KAAA,EAAA;AACrB,YAAS,QAAA,CAAA,MAAA;AAA6C,cACxD,IAAA;AACE,cAAqB,CAAA,GAAA,GAAA,WAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,WAAA,CAAA,KAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,GAAA,CAAA,KAAA,EAAA,CAAA;AAAA,aACvB,CAAA,CAAA;AAEA,WAAA;AAA6B,UAC/B,oBAAA,EAAA,CAAA;AAAA,UACF,QAAA,CAAA,CAAA,EAAA,GAAA,gBAAA,CAAA,KAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,CAAA;AAEA,SAAM,MAAA,IAAA,KAAA,CAAA,UAAyB,EAAuB;AACpD,UAAI,oBAAS,EAAA,CAAA;AACX,SAAiB;AAAoC,QACvD,IAAA,CAAA,eAAA,EAAA,OAAA,CAAA,CAAA;AAAA,OACF;AAEA,KAAA,CAAA;AACE,IAAA,MAAA,sBAAe,GAAA,CAAA,OAAA,KAAA;AACb,MAAA,IAAA,OAAA,EAAW;AAAoB,QAChC,gBAAA,CAAA,KAAA,GAAA,SAAA,CAAA,YAAA,CAAA,KAAA,CAAA,CAAA;AAAA,OACH;AAEA,KAAA,CAAA;AACE,IAAA,MAAA,oBAAkB,GAAA,MAAA;AAClB,MAAA,QAAA,CAAA;AACA,QAAA,IAAA,EAAA,CAAA;AAA8B,QAChC,CAAA,EAAA,GAAA,UAAA,CAAA,KAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,YAAA,EAAA,CAAA;AAEA,OAAM,CAAA,CAAA;AACJ,KAAM,CAAA;AACN,IAAO,MAAA,mBAAA,GAAA,MAAA;AAAA,MACL,SAAA,CAAA,KAAA,GAAA,KAAA,CAAA;AAAA,MAAA,WACU,CAAA,KAAA,GAAA,EAAA,CAAA;AAAA,MAAA,qBACU,CAAA,KAAA,GAAA,KAAA,CAAA;AAAwB,KAAA,CAAA;AAClC,IAAA,MACA,MAAA,GAAC,CAAW,IAAA,KAAA;AAAe,MAAA,MACtB,EAAA,aAAA,EAAA,SAAA,EAAA,GAAA,KAAA,CAAA;AAAA,MACjB,OAAA;AAAA,QACF,IAAA;AAEA,QAAA;AACE,QAAA,IAAA,EAAA,IAAA,CAAA,QAAA,CAAsB,aACpB,EAAA,SACA,CAAA;AAC8C,QAClD,QAAA,EAAA,KAAA;AAEA,QAAM,QAAA,EAAA,CAAA,UAA6B,CAAA,KAAA,IAAA,CAAA,IAAA,CAAA,aAAA;AACjC,QAAA,aAAiB,EAAA,KAAA;AACjB,OAAA,CAAA;AACA,KAAA,CAAA;AACA,IAAK,MAAA,yBAA+B,GAAA,MAAA;AACpC,MAA0B,qBAAA,CAAA,KAAA,GAAA,QAAA,CAAA,KAAA,IAAA,WAAA,CAAA,KAAA,CAAA,MAAA,GAAA,CAAA,IAAA,WAAA,CAAA,KAAA,CAAA,KAAA,CAAA,CAAA,IAAA,KAAA,IAAA,CAAA,OAAA,CAAA,CAAA;AAC1B,KAAc,CAAA;AAAA,IAChB,MAAA,SAAA,GAAA,CAAA,GAAA,KAAA;AAEA,MAAM,IAAA,EAAA,CAAA;AACJ,MAAM,MAAA,IAAA,GAAA,GAAU,CAAC,IAAC,CAAA;AAClB,MAAY,IAAA,CAAA,OAAA,CAAA,KAAM,CAAQ,CAAA;AACxB,MAAA,CAAA,EAAA,GAAA,gBAAwB,CAAA,KAAA,KAAA,IAAA,GAAA,KAAwB,CAAA,GAAA,EAAA,CAAA,qBAAc,EAAA,CAAA;AAAA,MAChE,IAAC,CAAA,WAAA,EAAA,IAAA,CAAA,aAAA,CAAA,CAAA;AACD,MAA0B,yBAAA,EAAA,CAAA;AAAA,MAC5B,aAAA,EAAA,CAAA;AAEA,KAAA,CAAA;AACE,IAAA,MAAI,0BAAU,GAAA,CAAA,GAAA,KAAA;AAAO,MAAA,MAAA,OAAA,GAAA,CAAA,CAAA,GAAA,CAAA;AACrB,MAAA,iBAA2B,CAAA,OAAA,CAAA,CAAA,IAAA,KAAA;AAC3B,QAAA,IAAM;AAEN,QAAA,CAAA,EAAA,mBAA2B,CAAA,KAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,OAAA,EAAA,KAAA,CAAA,CAAA;AAC3B,OAAM,CAAA,CAAA;AACN,MAAA,yBAAuB,EAAA,CAAA;AAEvB,KAAA,CAAA;AACE,IAAA,MAAA,oBACkB,GAAA,MAAA;AAElB,MAAA,IAAA,CAAA,QAAa,CAAA,KAAA;AACb,QAAA;AAEA,MAAA,MAAI,KAAW,GAAA,YAAA,CAAA,KAAA,CAAA;AACb,MAAA,MAAA,SAAwB,CAAA;AACtB,MAAA,MAAA,OAAU,GAAA,EAAA,CAAA;AAAA,MAAA,KAAA,CAAA,OACH,CAAA,CAAA,IAAA,KAAA,OAAA,CAAA,IAAA,CAAA,MAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA;AAAA,MAAA,cACC,CAAK,KAAA,GAAA,OAAA,CAAA;AAAA,MAAA,IAAA,KACD,CAAA,MAAA,EAAA;AAAA,QAAA,KAAA,CACV,KAAe,CAAA,CAAA,EAAA,KAAA,CAAA,eAAA,CAAA,CAAA,OAAA,CAAA,CAAA,IAAA,KAAA,IAAA,CAAA,IAAA,CAAA,MAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA;AAAA,QAAA,MAChB,IAAA,GAAA,KAAA,CAAA,KAAA,CAAA,KAAA,CAAA,eAAA,CAAA,CAAA;AAAA,QAAA,MACI,SAAA,GAAA,IAAA,CAAA,MAAA,CAAA;AACL,QAAK,IAAA,SAAA,EAAA;AAAyC,UAChD,IAAA,KAAA,CAAA,YAAA,EAAA;AAAA,YACF,IAAA,CAAA,IAAA,CAAA;AAAA,cACF,GAAA,EAAA,CAAA,CAAA;AAEA,cAAA,IAAY,EAAQ,CAAA,EAAA,EAAA,SAAA,CAAA,CAAA;AAAA,cACtB,QAAA,EAAA,KAAA;AAEA,iCAA6B;AAC3B,aAAM,CAAE,CAAc;AACtB,WAAA,MAAiB;AACjB,YAAM,IAAA,CAAA,OAAuB,CAAA,CAAA,IAAA,KAAA,IAAA,CAAA,IACT,CAAA,MAAA,CAAA,IAAA,CAAA,CAAA,CAAC,CAAM;AAEvB,WAAA;AAIE,SAAO;AACT,OAAK;AACL,MAAO,WAAA,CAAA,KAAA,GAAA,IAAmB,CAAA;AAAmB,KAAA,CAC/C;AAEF,IAAA,MAAI,oBAAgB,GAAA,MAAA;AAClB,MAAY,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AACV,MAAA,MAAA,EAAI,YAAW,EAAA,aAAA,EAAA,SAAA,EAAA,GAAA,KAAA,CAAA;AAAA,MAAA,MAChB,QAAA,GAAA,CAAA,EAAA,GAAA,KAAA,CAAA,KAAA,CAAA,KAAA,KAAA,IAAA,GAAA,EAAA,GAAA,eAAA,CAAA,KAAA,CAAA;AACD,MAAe,MAAA,GAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAc,gBAAS,CAAA,KAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,eAAA,CAAA,CAAA,KAAA,CAAA,KAAA,CAAA,aAAA,CAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAA,CAAA,CAAA,IAAA,KAAA;AACpC,QAAA,IAAA,IAAe,CAAA,aAAA,IAAA,IAAA,CAAA,IAAA,CAAA,QAAA,CAAA,KAAA,2BAAA;AAAA,UAChB,OAAA,KAAA,CAAA;AAAA,QACH,IAAA,CAAA,QAAA,CAAA,aAAA,EAAA,SAAA,CAAA,CAAA;AAEA,QAAA,OAAA,YAAkB,CAAA,IAAA,EAAA,aAAA,CAAA,KAAA,CAAA,CAAA;AAClB,OAAA,CAAA,CAAA;AACA,MAA0B,IAAA,QAAA,CAAA,KAAA,EAAA;AAC1B,QAAqB,WAAA,CAAA,KAAA,CAAA,OAAA,CAAA,CAAA,GAAA,KAAA;AAAA,UACvB,GAAA,CAAA,QAAA,GAAA,KAAA,CAAA;AAEA,SAAA,CAAM;AACJ,QAAI,cAAA,CAAA,KAAA,CAAA,OAAA,CAAA,CAAA,GAAA,KAAA;AAEJ,UAAI,GAAA,CAAA,QAAmB,GAAA,KAAA,CAAA;AACrB,SAAY,CAAA,CAAA;AAEZ,OACK;AACL,MAAY,SAAA,CAAA,KAAA,GAAA,IAAA,CAAA;AAEZ,MACF,WAAA,CAAA,KAAA,GAAA,GAAA,CAAA;AAEA,MAAA,yBAAe,EAAA,CAAA;AACb,MAAA,oBAAgB,EAAA,CAAA;AAChB,KAAC,CAAA;AAAmC,IACtC,MAAA,cAAA,GAAA,MAAA;AAAA,MACF,IAAA,EAAA,CAAA;AAEA,MAAA,IAAM;AACJ,MAAM,IAAA,SAAA,CAAA,KAAa,mBAAa,CAAA,KAAA,EAAA;AAChC,QAAA,2BAAgC,CAAA,KAAA,CAAA,GAAA,CAAA,aAAA,CAAA,CAAA,CAAA,EAAA,UAAA,CAAA,CAAA,CAAA,iBAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAChC,OAAM,MAAA;AAEN,QAAI,eAAa,GAAC,gBAAA,CAAA,KAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAA,CAAA,aAAA,CAAA,CAAA,CAAA,EAAA,UAAA,CAAA,CAAA,CAAA,MAAA,CAAA,CAAA,eAAA,CAAA,CAAA,CAAA;AAAY,OAAA;AAE9B,MAAA,IAAI,SAAmB,EAAA;AACrB,QAAA;AAGA,QAAe,CAAA,SAAA,CAAA,KAAA,IAAA,SAAiB,CAAA,KAAG,EAAW,CAAA;AAAA,OAChD;AAEA,KAAA,CAAA;AACE,IAAA,MAAA,WAAyB,GAAA,MAAA;AACzB,MAAA,IAAA,EAAA,EAAM,EACJ,CAAA;AAGF,MAAA,MAAA,aAAiB,CAAS,EAAA,GAAA,KAAA,CAAA,KAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAA,CAAA;AAC1B,MAAqB,MAAA,YAAA,GAAA,UAAA,CAAA,KAAA,CAAA;AAAA,MACvB,MAAA,iBAAA,GAAA,CAAA,EAAA,GAAA,eAAA,CAAA,KAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAA,CAAA;AAAA,MACF,IAAA,CAAA,QAAA,IAAA,CAAA,UAAA;AAEA,QAAM,OAAA;AACJ,MAAO,IAAA,iBAAA,EAAA;AAAgD,QACzD,MAAA,cAAA,GAAA,iBAAA,CAAA,aAAA,CAAA,CAAA,CAAA,EAAA,UAAA,CAAA,CAAA,CAAA,iBAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,QAAM,cAAA,CAAA,KAAA,CAAA,QAAkD,GAAA,CAAA,EAAA,UAAA,CAAA,WAAA,CAAA,EAAA,CAAA,CAAA;AACtD,OAAqB;AACrB,MAAA,IAAA;AAA0B,QAC5B,MAAA,EAAA,YAAA,EAAA,GAAA,YAAA,CAAA;AAEA,QAAM,MAAA,MAAA,GAAA,WAAiD,CAAA,KAAA,CAAA,MAAA,GAAA,CAAA,GAAA,CAAA,EAAA,IAAA,CAAA,GAAA,CAAA,YAAA,GAAA,CAAA,EAAA,kBAAA,CAAA,CAAA,EAAA,CAAA,GAAA,CAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,CAAA;AACrD,QAAM,UAAA,CAAQ,MAAM,MAA6B,GAAA,MAAA,CAAA;AACjD,QAAI,oBAAiC,EAAA,CAAA;AACnC,OAAA;AACA,KAAS,CAAA;AAAuB,IAAA,MAC3B,eAAA,GAAA,CAAA,QAAA,KAAA;AACL,MAAA,IAAA,EAAA,CAAA;AACA,MAAgB,OAAA,CAAA,EAAA,GAAA,gBAAS,CAAA,KAAA,KAAsB,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,eAAA,CAAA,QAAA,CAAA,CAAA;AAAA,KACjD,CAAA;AAAA,IACF,MAAA,kBAAA,GAAA,CAAA,KAAA,KAAA;AAEA,MAAM,oBAAgB,EAAsB,CAAA;AAC1C,MAAA,IAAI,CAAgB,cAAA,EAAA,KAAA,CAAA,CAAA;AAAO,KAAA,CAAA;AAE3B,IAAA,MAAA,iBAAU,GAAA,CAAA,KAAA,KAAA;AAAA,MAAA,IAAA,EAAA,CACH;AACH,MAAoB,MAAA,IAAA,GAAA,CAAA,EAAA,GAAA,KAAA,CAAA,MAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAA,CAAA;AACpB,MAAA,IAAA,KAAA,CAAA,IAAA,KAAA,gBAAA,EAAA;AAAA,QAAA,eACc,CAAA,KAAA,GAAA,KAAA,CAAA;AACd,QAAA,QAAA,CAAA,MAAA,WAAwB,CAAA,IAAA,CAAA,CAAA,CAAA;AACxB,OAAA,MAAA;AACA,QAAA,MAAiB,aAAA,GAAA,IAAA,CAAA,IAAA,CAAA,MAAA,GAAA,CAAA,CAAA,IAAA,EAAA,CAAA;AACjB,QAAA,eAAA,CAAA,KAAA,GAAA,CAAA,QAAA,CAAA,aAAA,CAAA,CAAA;AAAA,OAAA;AAEA,KAAI,CAAA;AACF,IAAA,MAAA,aAAiB,GAAA,CAAA,CAAA,KAAA;AACjB,MAAA,IAAA,eAAkB,CAAA,KAAA;AAClB,QAAA,OAAA;AAAyB,MAC3B,QAAA,CAAA,CAAA,IAAA;AACA,QAAA,KAAA,UAAA,CAAA,KAAA;AAAA,UAAA,mBACc,EAAA,CAAA;AACd,UAAA,MAAA;AACA,QAAA,KAAA,UAAA,CAAA,IAAA;AAAA,UAAA,mBAAA,CAAA,IAAA,CAAA,CAAA;AAAA,UAEN,QAAA,CAAA,cAAA,CAAA,CAAA;AAEA,UAAM,gBAAoB,EAAA,CAAA;AACxB,UAAA,MAAA;AACA,QAA0B,KAAA,UAAA,CAAA,GAAA;AAC1B,UAAI,IAAC,aAAuB,CAAA,KAAA,KAAA,IAAkB,EAAA;AAC5C,YAAqB,CAAA,CAAA,cAAA,EAAA,CAAA;AAAA,YACvB,CAAA,CAAA,eAAA,EAAA,CAAA;AACA,YAAc,mBAAA,CAAA,KAAA,CAAA,CAAA;AAAA,WAChB;AAEA,UAAM;AACJ,QAAA,eAAkB,CAAA,GAAA;AAClB,UAAA,mBAAmB,CAAA,KAAA,CAAA,CAAA;AACnB,UAAA,MAAA;AAAyB,OAC3B;AAEA,KAAM,CAAA;AACJ,IAAA,MAAA,WAAoB,GAAA,MAAA;AAEpB,MAAA,IAAI;AACF,MAAA,CAAA,EAAA,GAAA,gBAAwB,CAAA,KAAA,KAAA,IAAA,GAAA,KAAwB,CAAA,GAAA,EAAC,kBAAc,EAAA,CAAA;AAC/D,MAA0B,yBAAA,EAAA,CAAA;AAAA,MAC5B,IAAO,CAAA,aAAA,CAAA,KAAA,IAAA,KAAA,CAAA,UAAA,EAAA;AACL,QAAA,oBAA6B,EAAA,CAAA;AAC7B,OAAA;AAAyB,MAC3B,aAAA,EAAA,CAAA;AAAA,KACF,CAAA;AAEA,IAAM,MAAA,oBAAA,GAAA,MAAgD;AACpD,MAAA,MAAM,SAAS,GAAE,WAAA,CAAA;AACjB,MAAA,UAAiB,CAAA,KAAA,GAAA,KAAA,CAAA;AAEjB,MAAQ,gBAAA,CAAA,KAAA,GAAA,KAAA,CAAA;AAAA,KAAA,CAAA;AACU,IAAA,MAAA,qBACM,GAAA,CAAA,IAAA,KAAA;AACpB,MAAA,IAAA,EAAA,EAAA,EAAM,CAAW;AACjB,MACE,MAAA,EAAA,OAAA,EAAA,GAAA,IAAA,CACE;AAKJ,MAAA,IAAA,QAAA,CAAA,KAAA,EAAA;AAAA,QACF,CAAA,EAAA,GAAA,gBAAA,CAAA,KAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,OAAA,EAAA,KAAA,CAAA,CAAA;AAAA,QAAA,yBACgB,EAAA,CAAA;AACd,OAAA,MAAA;AACA,QAAA,CAAA,OAAA,KAAA,CAAA,EAAA,GAAA,gBAAA,CAAA,KAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,IAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAAA,QAAA,mBAAA,CAAA,KAAA,CAAA,CAAA;AAAA,OAEN;AAEA,KAAA,CAAA;AACE,IAAA,MAAA,uBAAyB,GAAA,CAAA,CAAA,KAAA;AACzB,MAAM,MAAA,MAAA,GAAA,CAAU,CAAK,MAAA,CAAA;AACrB,MAAmB,MAAA,EAAA,IAAA,EAAA,GAAA,CAAA,CAAA;AAEnB,MAAA,QAAgB,IAAA;AACd,QAAA,KAAA,UAAA,CAAA,EAAA,CAAA;AAEF,QAAA,eAAsB,CAAA,IAAA,EAAA;AACpB,UAAA,MAAA,QAAiB,GAAA,IAAA,KAAA,UAAA,CAAA,EAAA,GAAA,CAAA,CAAA,GAAA,CAAA,CAAA;AAAA,UACZ,SAAA,CAAA,UAAA,CAAA,MAAA,EAAA,QAAA,EAAA,CAAA,CAAA,EAAA,UAAA,CAAA,CAAA,CAAA,iBAAA,CAAA,CAAA,eAAA,CAAA,CAAA,CAAA,CAAA;AACL,UAAA,MAAQ;AAAW,SACrB;AAAA,QACF,KAAA,UAAA,CAAA,KAAA;AAEA,UAAM,MAAA,CAAA,KAAA,EAAc,CAAC;AACnB,UAAA;AACA,OAAM;AACN,KAAI,CAAA;AACF,IAAA,MAAA,YAAoB,GAAA,MAAA;AAAA,MACtB,MAAA,IAAA,GAAA,WAAA,CAAA,KAAA,CAAA;AACA,MAAA,gBAAe,IAAA,CAAA,IAAA,CAAA,MAAA,GAAA,CAAA,CAAA,CAAA;AAAA,MACjB,gBAAA,GAAA,gBAAA,CAAA,KAAA,GAAA,CAAA,GAAA,gBAAA,GAAA,CAAA,CAAA;AAEA,MAAM,IAAA,CAAA,OAAA,IAAA,CAAa,gBAAmB,IAAA,KAAA,CAAA,YAAA,IAAA,IAAA,CAAA,MAAA,GAAA,CAAA;AACpC,QAAA,OAAA;AACA,MAAA,IAAA,gBAAc,EAAA;AAAA,QAChB,SAAA,CAAA,OAAA,CAAA,CAAA;AAGA,OAAA;AACE,QAAA,OAAA,CAAA,QAAiB,GAAA,IAAA,CAAA;AACf,OAAK;AAA6B,KAAA,CACpC;AACA,IAAA,MAAA,WAAA,GAAA,CAAA,CAAoB,KAAK;AAAA,MAC3B,MAAA,EAAA,GAAA,CAAA,CAAA,MAAA,CAAA;AAGA,MAAA,uBAA2B,CAAA,CAAA,CAAA,cAAA,CAAA,CAAA;AACzB,MAAI,IAAA,EAAA,CAAA,SAAoB,KAAA,IAAC,EAAc;AAAO,QAAA,WAAA,CAAA,KAAA,GAAA,IAAA,CAAA;AAC9C,OAAA;AACA,MAAA,IAAA,CAAA,UAAe,CAAiB,CAAA;AAChC,KAAA,CAAA;AACE,IAAA,MAAA,UAAA,GAAA,CAAA,CAAiB;AAGb,MAAA,iBAAa,GAAI,KAAA,CAAA;AACjB,MAAiB,IAAA,CAAA,MAAA,EAAA,CAAA,CAAA,CAAA;AAA4B,KAAA,CAAA;AAC9C,IAAA,MACE,aAAA,GAAA,MAAA;AACL,MAAiB,UAAA,CAAA,MAAA;AACf,QAAA,IAAA,CAAA,SAAA,EAAA,YACoB,CAAA,KAAA,CAAA,CAAA;AAGhB,OAAI,CAAA,CAAA;AACF,MAAA,yBAAiB,CAAA,CAAA;AACjB,KAAiB,CAAA;AACjB,IAAO,MAAA,YAAA,GAAA,MAAA;AAAA,MACT,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AAAA,MAAA,IACF,UAAC,CAAA,KAAA,IAAA,CAAA,aAAA,CAAA,KAAA;AAAA,QACL,OAAC;AAAA,MACH,CAAA,EAAA,GAAA,gBAAA,CAAA,KAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,iBAAA,EAAA,CAAA;AACA,MAAA,MAAA,MAAA,GAAA,CAAA,CAAiB,QAA6B,GAAA,gBAAA,CAAA,KAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,eAAA,CAAA,IAAA,CAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAA,KAAA,CAAA,CAAA;AAC9C,MAA0B,IAAA,MAAA,GAAA,CAAA,KAAA,gBAAA,CAAA,KAAA,CAAA,MAAA,EAAA;AAC1B,QAAqB,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,gBAAA,CAAA,KAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,eAAA,CAAA,IAAA,CAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAA,CAAA,CAAA,IAAA,KAAA;AACrB,UAAA,IAAA,GAAA,CAAA;AACA,UAAA,IAAA,CAAA,OAAiB,CAAA,IAAA,CAAA,CAAA;AACf,UAAK,CAAA,GAAA,GAAA,sBAA4B,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,GAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,CAAA;AAAA,SAClC,CAAA,CAAA;AAAA,OACH,MAAA;AAEA,QAAM,gBAAA,CAAe,aAAe,CAAA,CAAA,QAAA,KAAA;AAClC,UAAA,IAAQ,GAAU,EAAA,GAAA,CAAA;AAElB,UAAI,CAAC,GAAA,GAAA,CAAA,GAAA,GAAA,gBAAA,CAAA,KAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,GAAA,CAAA,eAAA,CAAA,IAAA,CAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,GAAA,CAAA,IAAA,CAAA,CAAA,IAAA,KAAA;AAAO,YAAA,IAAA,GAAA,CAAA;AAEZ,YAAM,IAAA,QAAe,CAAA,GAAA,KAAA,IAAA,CAAA,GAAkB,EAAA;AAEvC,cAAI,IAAA,CAAA,OAAgB,CAAG,IAAA,CAAA,CAAA;AACrB,cAAA,CAAO,GAAK,GAAA,gBAAA,CAAA,KAAsB,KAAM,IAAM,GAAA,KAAA,CAAA,GAAA,GAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,CAAA;AAAA,cAE7C,OAAA,IAAA,CAAA;AAAA,aACH;AACE,WAAqB,CAAA,CAAA;AAAA,SAChB,CAAA,CAAA;AACL,OAAoB;AAAA,MACtB,CAAA,EAAA,GAAA,gBAAA,CAAA,KAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,qBAAA,EAAA,CAAA;AAAA,MACF,yBAAiB,EAAA,CAAA;AAEjB,MAAM,oBAAe,EAAA,CAAA;AACnB,MAAC,mBAAuB,CAAA,KAAA,CAAA,CAAA;AAExB,MAAA,UAAO,CAAA,MAAA;AAAa,QAAA,IAAA,CAAA,QAAA,EAAA,YAAA,CAAA,KAAA,CAAA,CAAA;AAEpB,OAAA,CAAA,CAAA;AACE,KAAa,CAAA;AAAA,IAAA,MACR,YAAA,GAAA,QAAA,CAAA,MAAA;AACL,MAAoB,MAAA,EAAA,KAAA,EAAA,GAAA,aAAA,CAAA;AAAA,MACtB,IAAA,CAAA,KAAA;AAAA,QACF,OAAA;AAEA,MAAA,MAA4B,MAAA,GAAA,KAAA,CAAA,YAC1B,CAAA,KAAA,CAAA,CAAA;AAIF,MAAA,IAAM,gBAA+B,CAAA,EAAA;AAErC,QAAA,MAAO,CAAA,IAAA,CAAA,oBAA+C,CAAA,CAAA,KAAA,CAAA,MAAA;AAEtD,SAAA,CAAM;AACJ,OAAS,MAAA,IAAA,gBAAkB,EAAC;AAAA,QAC7B,oBAAA,EAAA,CAAA;AAED,OAAA,MAAqB;AAErB,QAAA,mBAA4B,EAAA,CAAA;AAC1B,OAAA;AACA,KAAM,EAAA,KAAA,CAAA,QAAA,CAAA,CAAA;AACN,IAAqB,MAAA,WAAA,GAAA,CAAA,GAAA,EAAA,CAAA,KAAA;AACrB,MAAY,CAAA,aAAA,CAAA,KAAA,IAAA,mBAAA,CAAA,IAAA,CAAA,CAAA;AAAA,MACb,IAAA,CAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,CAAA,CAAA,WAAA;AAED,QAAA,OAAmB;AAEnB,MAAA,IAAA,GAAA,EAAgB;AACd,QAAM,YAAA,EAAA,CAAA;AAEN,OAAM,MAAA;AAEN,QAAA,mBAAqB;AACrB,OAAA;AAAyC,KAC1C,CAAA;AAED,IAAa,MAAA,mBAAA,GAAA,CAAA,UAAA,KAAA,MAAA,CAAA,UAAA,CAAA,SAAA,CAAA,OAAA,CAAA,UAAA,CAAA,cAAA,CAAA,EAAA,UAAA,CAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA;AAAA,IAIX,KAAA,CAAA,SAAA,EAAA,oBAAA,CAAA,CAAA;AAAA,IAIA,KAAA,CAAA,CAAA,YAAA,EAAA,UAAA,CAAA,EAAA,oBAAA,CAAA,CAAA;AAAA,IAIA,KAAA,CAAA,WAAA,EAAA,MAAA;AAAA,MAIA,QAAA,CAAA,MAAA,WAAA,EAAA,CAAA,CAAA;AAAA,KACD,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}