{"version":3,"file":"cascader.vue2.mjs","sources":["../../../../../../packages/components/cascader/src/cascader.vue"],"sourcesContent":["<script lang=\"ts\">\n  import { computed, defineComponent, reactive, ref, watch, provide, toRefs } from 'vue'\n  import { getComponentNamespace, getNamespace } from '../../../utils/global-config'\n\n  import Trigger from '../../trigger/src/trigger'\n\n  import { useFormItem } from '../../form/src/hooks/use-form-item'\n  import { NOOP } from '../../../shared/utils'\n  import SelectTrigger from '../../common/select-trigger.vue'\n  import { isFunction } from '../../../utils/is'\n  import BasePanel from './base-panel'\n\n  import { cascaderProps } from './props'\n  import {\n    transDataToNodes,\n    formatModelValue,\n    getLeafNodes,\n    getNodeKey,\n    getAllLeafNodesByQuery\n  } from './utils'\n\n  import type { CascaderData, CascaderNode, QueryData } from './type'\n  import { useSelectedPath } from './use-selected-path'\n  import { cascaderInjectionKey } from './context'\n  import QueryPanel from './query-panel.vue'\n\n  export default defineComponent({\n    name: getComponentNamespace('Cascader'),\n    components: {\n      Trigger,\n      BasePanel,\n      QueryPanel,\n      SelectTrigger\n    },\n    props: cascaderProps,\n    emits: ['update:modelValue', 'change'],\n    setup(props, { slots, emit }) {\n      const ns = getNamespace('cascader')\n      const { formItem } = useFormItem()\n      const popupVisible = ref(false)\n      const totalLevel = ref(1)\n      const popupRef = ref()\n      // TODO 从表单合并 disabled 属性\n      const mergeDisabled = computed(() => props.disabled)\n      const mergeSize = computed(() => props.size)\n      const nodesData = ref<CascaderNode[]>([])\n      const nodesMap = reactive(new Map<string, CascaderNode>())\n      const selfModel = ref<string[] | string[][]>([])\n      // filterable\n      const queryDataList = ref<QueryData[]>([])\n      const isQueryPattern = ref(false)\n\n      const computedModelValue = computed(() => {\n        return props.modelValue || selfModel.value\n      })\n\n      const pathValueToNodeKeys = computed(() => {\n        // 多选时 二维数据处理 [[1,2,3],[4,5,6]] => ['1-2-3','4-5-6']\n        // 单选 [1,2,3] => ['1-2-3']\n        const values = formatModelValue(computedModelValue.value, {\n          multiple: props.multiple\n        })\n\n        return values\n      })\n\n      const { expandChild } = toRefs(props)\n      const { renderColumns, selectedPath, setSelectedPath, activeKey, setActiveKey } =\n        useSelectedPath(nodesData, { nodesMap, expandChild })\n\n      const currentTagLabel = computed(() => {\n        if (!props.multiple && pathValueToNodeKeys.value.length) {\n          const node = nodesMap.get(pathValueToNodeKeys.value[0])\n          let label = node?.pathLabel?.join(props.separator)\n          if (!props.showAllLevels) {\n            label = node?.pathLabel?.[node!.pathLabel.length - 1]\n          }\n          if (props.inputLabelFormat && node?.pathLabel) {\n            label = props.inputLabelFormat(node?.pathLabel)\n          }\n          return label\n        }\n        return ''\n      })\n\n      const multipleTags = computed(() => {\n        if (!props.multiple) return []\n        const tagLabels = pathValueToNodeKeys.value.map((nodeKey) => {\n          const node = nodesMap.get(nodeKey)\n          const key = node?.key\n          const label = props.showAllLevels\n            ? node?.pathLabel?.[node.pathLabel?.length - 1]\n            : node?.pathLabel?.join(props.separator)\n          return {\n            label,\n            key\n          }\n        })\n        return tagLabels\n      })\n\n      watch(\n        () => popupVisible.value,\n        (value) => {\n          if (value) {\n            const nodeKeys = pathValueToNodeKeys.value\n            if (nodeKeys.length > 0) {\n              // 默认选中最后一个nodeKey\n              const lastNodeKey = nodeKeys[nodeKeys.length - 1]\n              setSelectedPath(lastNodeKey)\n              setActiveKey(lastNodeKey)\n            }\n          }\n        }\n      )\n\n      watch(\n        () => props.data,\n        (newData: CascaderData[]) => {\n          nodesMap.clear()\n          nodesData.value = transDataToNodes(newData, { nodesMap, totalLevel })\n        },\n        { immediate: true, deep: true }\n      )\n\n      const handlePopupVisibleChange = (visible: boolean) => {\n        popupVisible.value = visible\n      }\n\n      const updatePathValue = (pathValue: string[] | string[][]) => {\n        emit('update:modelValue', pathValue)\n        emit('change', pathValue)\n        selfModel.value = pathValue\n\n        // 表单验证\n        if (props.validateEvent) {\n          formItem?.validate?.('change').catch(NOOP)\n        }\n      }\n\n      // 清空事件\n      const handleClear = () => {\n        updatePathValue([])\n        setActiveKey()\n        setSelectedPath()\n        handlePopupVisibleChange(false)\n\n        if (props.filterable) {\n          queryDataList.value = []\n          isQueryPattern.value = false\n        }\n      }\n\n      // 过滤事件\n      const handleFilter = (query: string) => {\n        isQueryPattern.value = !!query\n        if (!isQueryPattern.value) {\n          queryDataList.value = []\n          return\n        }\n        const leafNodes = getAllLeafNodesByQuery(nodesData.value, (node) => {\n          let ret\n          if (isFunction(props.filterMethod)) {\n            ret = props.filterMethod(node, query)\n          } else {\n            ret = node.label && new RegExp(`${query}`, 'i').test(node.label)\n          }\n          return ret\n        })\n        // 从root到leaf依次向下查找\n        const RE = new RegExp(`(${query})`, 'i')\n        queryDataList.value = leafNodes.map((node) => {\n          const isSelected = pathValueToNodeKeys.value.includes(node.key)\n          return {\n            key: node.key,\n            label: node.pathLabel\n              ?.join('/')\n              .replace(RE, `<span style=\"color:var(--bn-danger)\">$1</span>`),\n            isSelected,\n            node\n          }\n        }) as QueryData[]\n      }\n\n      const handleQueryTag = (queryData: QueryData) => {\n        if (props.multiple) {\n          queryData.isSelected = !queryData.isSelected\n          if (queryData.isSelected) {\n            selectMultiple(queryData.node, true)\n          } else {\n            selectMultiple(queryData.node, false)\n          }\n          return\n        }\n        const prevSelectTag = queryDataList.value.find((item) => item.isSelected)\n        if (prevSelectTag) {\n          prevSelectTag.isSelected = false\n        }\n        queryData.isSelected = !queryData.isSelected\n        selectSingle(queryData.node)\n      }\n\n      // 删除多选时的标签\n      const handleTagClose = (tag: Record<string, any>) => {\n        const originPathValue = computedModelValue.value.map((m) => m.slice(0)) as string[][]\n        const index = originPathValue.findIndex((path) => getNodeKey(path) === tag.key && tag.key)\n        if (index < 0) return\n        originPathValue.splice(index, 1)\n        updatePathValue(originPathValue)\n\n        if (props.filterable) {\n          const keys = originPathValue.map((path) => getNodeKey(path))\n          queryDataList.value.forEach((tag) => {\n            tag.isSelected = keys.includes(tag.key)\n          })\n        }\n      }\n\n      const selectSingle = (node: CascaderNode) => {\n        const pathValue: string[] = node.pathValue!.slice(0)\n        handlePopupVisibleChange(false)\n        // 当前node已被选中 就不会出发更新行为\n        if (pathValueToNodeKeys.value.includes(node.key)) {\n          return\n        }\n        setActiveKey(node.key)\n        updatePathValue(pathValue)\n      }\n\n      // check:当前选中还是取消\n      const selectMultiple = (node: CascaderNode, checked: boolean) => {\n        const originPathValue = computedModelValue.value.slice() as string[][]\n        const nodes: CascaderNode[] = props.checkStrictly ? [node] : getLeafNodes(node)\n        if (checked) {\n          nodes.forEach((n) => {\n            if (n.pathValue) {\n              originPathValue.push(n.pathValue.slice(0))\n            }\n          })\n          updatePathValue(originPathValue)\n        } else {\n          const keys = nodes.map((n) => n.key)\n          const pathValues: string[][] = originPathValue.filter(\n            (value) => !keys.includes(value.join('-'))\n          )\n          updatePathValue(pathValues)\n        }\n      }\n\n      const footerOps = {\n        handleCancel() {\n          handleClear()\n          handlePopupVisibleChange(false)\n        },\n        handleOk() {\n          handlePopupVisibleChange(false)\n        }\n      }\n\n      const emitPath = (node: CascaderNode, checked?: boolean) => {\n        if (!props.multiple) {\n          selectSingle(node)\n        } else {\n          selectMultiple(node, checked ?? true)\n        }\n      }\n\n      provide(\n        cascaderInjectionKey,\n        reactive({\n          slots,\n          setSelectedPath,\n          emitPath,\n          setActiveKey,\n          nodeKeys: pathValueToNodeKeys,\n          footer: footerOps\n        })\n      )\n\n      return {\n        ns,\n        popupVisible,\n        mergeDisabled,\n        mergeSize,\n        currentTagLabel,\n        renderColumns,\n        selectedPath,\n        activeKey,\n        multipleTags,\n        totalLevel,\n        popupRef,\n        queryDataList,\n        isQueryPattern,\n        handleFilter,\n        handleClear,\n        handleTagClose,\n        handleQueryTag,\n        handlePopupVisibleChange\n      }\n    }\n  })\n</script>\n\n<template>\n  <div :class=\"[ns]\">\n    <Trigger\n      v-model:popup-visible=\"popupVisible\"\n      position=\"bl\"\n      trigger=\"click\"\n      :unmount-on-close=\"false\"\n      animation-name=\"bn-slide-dynamic-origin\"\n      :popup-offset=\"8\"\n      :disabled=\"mergeDisabled\"\n    >\n      <template #default>\n        <slot name=\"trigger\" :show=\"popupVisible\">\n          <SelectTrigger\n            :input-value=\"currentTagLabel\"\n            :disabled=\"mergeDisabled\"\n            :size=\"mergeSize\"\n            :placeholder=\"placeholder\"\n            :clearable=\"clearable\"\n            :popup-visible=\"popupVisible\"\n            :multiple=\"multiple\"\n            :multiple-tags=\"multipleTags\"\n            :filterable=\"filterable\"\n            :popup-ref=\"popupRef\"\n            :card=\"card\"\n            @clear=\"handleClear\"\n            @filter=\"handleFilter\"\n            @tag-close=\"handleTagClose\"\n            @show=\"handlePopupVisibleChange(true)\"\n          />\n        </slot>\n      </template>\n\n      <template #content>\n        <BasePanel\n          v-if=\"!isQueryPattern\"\n          ref=\"popupRef\"\n          :render-columns=\"renderColumns\"\n          :selected-path=\"selectedPath\"\n          :active-key=\"activeKey\"\n          :multiple=\"multiple\"\n          :check-strictly=\"checkStrictly\"\n          :total-level=\"totalLevel\"\n          :show-footer=\"showFooter\"\n        />\n\n        <QueryPanel\n          v-if=\"isQueryPattern\"\n          ref=\"popupRef\"\n          :query-data-list=\"queryDataList\"\n          @on-tag=\"handleQueryTag\"\n        />\n      </template>\n    </Trigger>\n  </div>\n</template>\n"],"names":["tag"],"mappings":"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"}