{"version":3,"file":"index.vue.mjs","sources":["../../../../../packages/components/cascade/src/index.vue"],"sourcesContent":["<template>\n  <el-tooltip\n    ref=\"tooltipRef\"\n    v-model:visible=\"popperVisible\"\n    :teleported=\"compatTeleported\"\n    :popper-class=\"`el-cascade__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=\"el-zoom-in-top\"\n    effect=\"light\"\n    pure\n    persistent\n    @hide=\"hideSuggestionPanel\"\n  >\n    <template #default>\n      <div\n        v-clickoutside:[popperPaneRef]=\"() => togglePopperVisible(false)\"\n        :class=\"[\n          'el-cascade',\n          realSize && `el-cascade--${realSize}`,\n          { 'is-disabled': isDisabled },\n          $attrs.class\n        ]\"\n        :style=\"$attrs.style\"\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=\"placeholder\"\n          :readonly=\"readonly\"\n          :disabled=\"isDisabled\"\n          :validate-event=\"false\"\n          :size=\"realSize\"\n          :class=\"{ 'is-focus': popperVisible }\"\n          @compositionstart=\"handleComposition\"\n          @compositionupdate=\"handleComposition\"\n          @compositionend=\"handleComposition\"\n          @focus=\"e => $emit('focus', e)\"\n          @blur=\"e => $emit('blur', e)\"\n          @input=\"handleInput\"\n        >\n          <template #suffix>\n            <el-icon\n              v-if=\"clearBtnVisible\"\n              key=\"clear\"\n              class=\"el-input__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=\"[\n                'el-input__icon',\n                'icon-arrow-down',\n                popperVisible && 'is-reverse'\n              ]\"\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=\"el-cascade__tags\">\n          <el-tag\n            v-for=\"tag in presentTags\"\n            :key=\"tag.key\"\n            type=\"info\"\n            :size=\"tagSize\"\n            :hit=\"tag.hitState\"\n            :closable=\"tag.closable\"\n            disable-transitions\n            @close=\"deleteTag(tag)\"\n          >\n            <span>{{ tag.text }}</span>\n          </el-tag>\n          <input\n            v-if=\"filterable && !isDisabled\"\n            v-model=\"searchInputValue\"\n            text\n            class=\"el-cascade__search-input\"\n            :placeholder=\"presentText ? '' : placeholder\"\n            @input=\"e => handleInput(searchInputValue, e)\"\n            @click.stop=\"togglePopperVisible(true)\"\n            @keydown.delete=\"handleDelete\"\n            @compositionstart=\"handleComposition\"\n            @compositionupdate=\"handleComposition\"\n            @compositionend=\"handleComposition\"\n          />\n        </div>\n      </div>\n    </template>\n\n    <template #content>\n      <el-cascade-panel\n        v-show=\"!filtering\"\n        ref=\"panel\"\n        v-model=\"checkedValue\"\n        :options=\"options\"\n        :props=\"props\"\n        :border=\"false\"\n        :render-label=\"$slots.default\"\n        @expand-change=\"handleExpandChange\"\n        @change=\"handlePanelValueChange\"\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=\"el-cascade__suggestion-panel\"\n        view-class=\"el-cascade__suggestion-list\"\n        @keydown=\"handleSuggestionKeyDown\"\n      >\n        <template v-if=\"suggestions.length\">\n          <li\n            v-for=\"item in suggestions\"\n            :key=\"item.uid\"\n            :class=\"[\n              'el-cascade__suggestion-item',\n              item.checked && 'is-checked'\n            ]\"\n            :tabindex=\"-1\"\n            @click=\"handleSuggestionClick(item)\"\n          >\n            <span>{{ item.text }}</span>\n            <el-icon v-if=\"item.checked\"><check /></el-icon>\n          </li>\n        </template>\n        <slot v-else name=\"empty\">\n          <li class=\"el-cascade__empty-text\">没有数据</li>\n        </slot>\n      </el-scrollbar>\n    </template>\n  </el-tooltip>\n</template>\n\n<script lang=\"ts\">\nimport {\n  computed,\n  defineComponent,\n  nextTick,\n  onMounted,\n  onBeforeUnmount,\n  ref,\n  watch\n} from 'vue'\nimport { isPromise } from '@vue/shared'\nimport { debounce } from 'lodash-unified'\n\nimport { isClient } from '@vueuse/core'\nimport ElCascadePanel, {\n  CommonProps\n} from '@element-ultra/components/cascade-panel'\nimport ElInput from '@element-ultra/components/input'\nimport ElTooltip, {\n  useTooltipContentProps\n} from '@element-ultra/components/tooltip'\nimport { useDeprecateAppendToBody } from '@element-ultra/components/popper'\nimport ElScrollbar from '@element-ultra/components/scrollbar'\nimport ElTag from '@element-ultra/components/tag'\nimport ElIcon from '@element-ultra/components/icon'\n\nimport { ClickOutside as Clickoutside } from '@element-ultra/directives'\nimport { useFormItem, useSize } from '@element-ultra/hooks'\n\nimport {\n  focusNode,\n  getSibling,\n  addResizeListener,\n  removeResizeListener,\n  isValidComponentSize\n} from '@element-ultra/utils'\nimport {\n  EVENT_CODE,\n  UPDATE_MODEL_EVENT,\n  CHANGE_EVENT,\n  FORM_COMPONENT_PROPS\n} from '@element-ultra/shared'\nimport { CircleClose, Check, ArrowDown } from 'icon-ultra'\n\nimport type { Options } from '@element-ultra/components/popper'\nimport type { ComputedRef, PropType, Ref } from 'vue'\nimport type {\n  CascadeValue,\n  CascadeNode,\n  Tag\n} from '@element-ultra/components/cascade-panel'\nimport type { ComponentSize } from '@element-ultra/shared'\n\ntype cascadePanelType = InstanceType<typeof ElCascadePanel>\ntype tooltipType = InstanceType<typeof ElTooltip>\ntype inputType = InstanceType<typeof ElInput>\ntype suggestionPanelType = InstanceType<typeof ElScrollbar>\n\nconst DEFAULT_INPUT_HEIGHT = 40\n\nconst INPUT_HEIGHT_MAP = {\n  large: 36,\n  default: 32,\n  small: 28\n}\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 = 'ElCascade'\nexport default defineComponent({\n  name: COMPONENT_NAME,\n\n  components: {\n    ElCascadePanel,\n    ElInput,\n    ElTooltip,\n    ElScrollbar,\n    ElTag,\n    ElIcon,\n    CircleClose,\n    Check,\n    ArrowDown\n  },\n\n  directives: {\n    Clickoutside\n  },\n\n  props: {\n    ...FORM_COMPONENT_PROPS,\n    ...CommonProps,\n    size: {\n      type: String as PropType<ComponentSize>,\n      validator: isValidComponentSize\n    },\n    placeholder: {\n      type: String,\n      default: '请选择'\n    },\n    disabled: {\n      type: Boolean,\n      default: undefined\n    },\n    clearable: Boolean,\n    filterable: Boolean,\n    filterMethod: {\n      type: Function as PropType<\n        (node: CascadeNode, keyword: string) => boolean\n      >,\n      default: (node: CascadeNode, keyword: string) =>\n        node.text.includes(keyword)\n    },\n    separator: {\n      type: String,\n      default: ' / '\n    },\n    showAllLevels: {\n      type: Boolean,\n      default: true\n    },\n    collapseTags: Boolean,\n    debounce: {\n      type: Number,\n      default: 300\n    },\n    beforeFilter: {\n      type: Function as PropType<(value: string) => boolean | Promise<any>>,\n      default: () => true\n    },\n    popperClass: {\n      type: String,\n      default: ''\n    },\n    popperAppendToBody: {\n      type: Boolean,\n      default: undefined\n    },\n    teleported: useTooltipContentProps.teleported\n  },\n\n  emits: [\n    UPDATE_MODEL_EVENT,\n    CHANGE_EVENT,\n    'focus',\n    'blur',\n    'visible-change',\n    'expand-change',\n    'remove-tag'\n  ],\n\n  setup(props, { emit }) {\n    let inputInitialHeight = 0\n    let pressDeleteCount = 0\n\n    const { compatTeleported } = useDeprecateAppendToBody(\n      COMPONENT_NAME,\n      'popperAppendToBody'\n    )\n    const { formItem, form } = useFormItem()\n\n    const tooltipRef: Ref<tooltipType | null> = ref(null)\n    const input: Ref<inputType | null> = ref(null)\n    const tagWrapper = ref(null)\n    const panel: Ref<cascadePanelType | null> = ref(null)\n    const suggestionPanel: Ref<suggestionPanelType | null> = ref(null)\n    const popperVisible = ref(false)\n    const inputHover = ref(false)\n    const filtering = ref(false)\n    const inputValue = ref('')\n    const searchInputValue = ref('')\n    const presentTags: Ref<Tag[]> = ref([])\n    const suggestions: Ref<CascadeNode[]> = ref([])\n    const isOnComposition = ref(false)\n\n    const isDisabled = computed(() => props.disabled ?? form?.props.disabled)\n\n    const realSize = useSize({\n      props\n    })\n    const tagSize = computed(() =>\n      ['small'].includes(realSize.value) ? 'small' : 'default'\n    )\n    const multiple = computed(() => !!props.props.multiple)\n    const readonly = computed(() => !props.filterable || multiple.value)\n    const searchKeyword = computed(() =>\n      multiple.value ? searchInputValue.value : inputValue.value\n    )\n    const checkedNodes: ComputedRef<CascadeNode[]> = computed(\n      () => panel.value?.checkedNodes || []\n    )\n    const 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    })\n    const 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\n    const checkedValue = computed<CascadeValue | undefined>({\n      get() {\n        return props.modelValue\n      },\n      set(val) {\n        emit(UPDATE_MODEL_EVENT, val)\n        formItem?.validate()\n      }\n    })\n\n    const popperPaneRef = computed(() => {\n      return tooltipRef.value?.popperRef?.contentRef\n    })\n\n    const togglePopperVisible = (visible?: boolean) => {\n      if (isDisabled.value) return\n\n      visible = visible ?? !popperVisible.value\n\n      if (visible !== popperVisible.value) {\n        popperVisible.value = visible\n        input.value?.inputRef?.setAttribute('aria-expanded', `${visible}`)\n\n        if (visible) {\n          updatePopperPosition()\n          nextTick(panel.value?.scrollToExpandingNode)\n        } else if (props.filterable) {\n          const { value } = presentText\n          inputValue.value = value\n          searchInputValue.value = value\n        }\n\n        emit('visible-change', visible)\n      }\n    }\n\n    const updatePopperPosition = () => {\n      nextTick(() => {\n        tooltipRef.value?.updatePopper()\n      })\n    }\n\n    const hideSuggestionPanel = () => {\n      filtering.value = false\n    }\n\n    const genTag = (node: CascadeNode): Tag => {\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.isDisabled\n      }\n    }\n\n    const deleteTag = (tag: Tag) => {\n      const node = tag.node as CascadeNode\n      node.doCheck(false)\n      panel.value?.calculateCheckedValue()\n      emit('remove-tag', node.valueByOption)\n    }\n\n    const calculatePresentTags = () => {\n      if (!multiple.value) return\n\n      const nodes = checkedNodes.value\n      const tags: Tag[] = []\n\n      if (nodes.length) {\n        const [first, ...rest] = nodes\n        const restCount = rest.length\n\n        tags.push(genTag(first))\n\n        if (restCount) {\n          if (props.collapseTags) {\n            tags.push({\n              key: -1,\n              text: `+ ${restCount}`,\n              closable: false\n            })\n          } else {\n            rest.forEach(node => tags.push(genTag(node)))\n          }\n        }\n      }\n\n      presentTags.value = tags\n    }\n\n    const calculateSuggestions = () => {\n      const { filterMethod, showAllLevels, separator } = props\n      const res = panel.value\n        ?.getFlattedNodes(!props.props.checkStrictly)\n        ?.filter(node => {\n          if (node.isDisabled) 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      }\n\n      filtering.value = true\n      suggestions.value = res!\n      updatePopperPosition()\n    }\n\n    const focusFirstNode = () => {\n      let firstNode!: HTMLElement\n\n      if (filtering.value && suggestionPanel.value) {\n        firstNode = suggestionPanel.value.$el.querySelector(\n          '.el-cascade__suggestion-item'\n        )\n      } else {\n        firstNode = panel.value?.$el.querySelector(\n          '.el-cascade-node[tabindex=\"-1\"]'\n        )\n      }\n\n      if (firstNode) {\n        firstNode.focus()\n        !filtering.value && firstNode.click()\n      }\n    }\n\n    const updateStyle = () => {\n      const inputInner = input.value?.inputRef\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          '.el-cascade__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\n    const getCheckedNodes = (leafOnly: boolean) => {\n      return panel.value?.getCheckedNodes(leafOnly)\n    }\n\n    const handleExpandChange = (value: CascadeValue) => {\n      updatePopperPosition()\n      emit('expand-change', value)\n    }\n\n    const handlePanelValueChange = (val: any, label: any, data: any) => {\n      emit(CHANGE_EVENT, val, label, data)\n    }\n\n    const 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        isOnComposition.value = true\n      }\n    }\n\n    const 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        case EVENT_CODE.tab:\n          togglePopperVisible(false)\n          break\n      }\n    }\n\n    const handleClear = () => {\n      panel.value?.clearCheckedNodes()\n      togglePopperVisible(false)\n    }\n\n    const handleSuggestionClick = (node: CascadeNode) => {\n      const { checked } = node\n\n      if (multiple.value) {\n        panel.value?.handleCheckChange(node, !checked, false)\n      } else {\n        !checked && panel.value?.handleCheckChange(node, true, false)\n        togglePopperVisible(false)\n      }\n    }\n\n    const 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              '.el-cascade__suggestion-item[tabindex=\"-1\"]'\n            )\n          )\n          break\n        }\n        case EVENT_CODE.enter:\n          target.click()\n          break\n        case EVENT_CODE.esc:\n        case EVENT_CODE.tab:\n          togglePopperVisible(false)\n          break\n      }\n    }\n\n    const 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) return\n\n      if (lastTag.hitState) {\n        deleteTag(lastTag)\n      } else {\n        lastTag.hitState = true\n      }\n    }\n\n    const 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\n    const handleInput = (val: string, e?: KeyboardEvent) => {\n      !popperVisible.value && togglePopperVisible(true)\n\n      if (e?.isComposing) return\n\n      val ? handleFilter() : hideSuggestionPanel()\n    }\n\n    watch(filtering, updatePopperPosition)\n\n    watch([checkedNodes, isDisabled], calculatePresentTags)\n\n    watch(presentTags, () => {\n      nextTick(() => updateStyle())\n    })\n\n    watch(presentText, val => (inputValue.value = val), { immediate: true })\n\n    onMounted(() => {\n      const inputEl = input.value?.$el\n      inputInitialHeight =\n        inputEl?.offsetHeight ||\n        INPUT_HEIGHT_MAP[realSize.value] ||\n        DEFAULT_INPUT_HEIGHT\n      addResizeListener(inputEl, updateStyle)\n    })\n\n    onBeforeUnmount(() => {\n      removeResizeListener(input.value?.$el, updateStyle)\n    })\n\n    return {\n      popperOptions,\n      tooltipRef,\n      popperPaneRef,\n      input,\n      tagWrapper,\n      panel,\n      suggestionPanel,\n      popperVisible,\n      inputHover,\n      filtering,\n      presentText,\n      checkedValue,\n      inputValue,\n      searchInputValue,\n      presentTags,\n      suggestions,\n      isDisabled,\n      isOnComposition,\n      realSize,\n      tagSize,\n      multiple,\n      readonly,\n      clearBtnVisible,\n      // deprecation in ver 2.1.0\n      compatTeleported,\n\n      togglePopperVisible,\n      hideSuggestionPanel,\n      deleteTag,\n      focusFirstNode,\n      getCheckedNodes,\n      handleExpandChange,\n      handlePanelValueChange,\n      handleKeyDown,\n      handleComposition,\n      handleClear,\n      handleSuggestionClick,\n      handleSuggestionKeyDown,\n      handleDelete,\n      handleInput\n    }\n  }\n})\n</script>\n"],"names":["_resolveDirective","_openBlock","_createBlock","_withCtx","_withDirectives","_createElementBlock","_normalizeClass","_normalizeStyle","_createVNode","_withModifiers","_Fragment","_renderList","_createCommentVNode","_vShow","_createElementVNode","_toDisplayString","_renderSlot"],"mappings":"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"}