{"version":3,"file":"tree-select.mjs","sources":["../../../common/js/tree-select/utils.ts","../../../components/tree-select/tree-select.tsx"],"sourcesContent":["import { TreeOptionData } from '../common';\n\ntype TargetValue = string | number | object;\n\n/**\n * 递归查找指定节点的所有父节点的 value\n * @param options 树形数据\n * @param targetValue 目标节点的 value\n * @param realChildren 子节点的 key (别名)\n * @param realValue 节点的 value 的 key (别名)\n */\nexport function findParentValues(\n  options: TreeOptionData[],\n  targetValue: TargetValue,\n  realValue: string,\n  realChildren: string\n): TargetValue[] {\n  let currentTargetValue = targetValue;\n  if (currentTargetValue != null && typeof currentTargetValue === 'object') {\n    currentTargetValue = (currentTargetValue as { [key: string]: string | number })?.[realValue];\n  }\n  if (currentTargetValue == null) return [];\n\n  function findPath(nodes: TreeOptionData[], parentPath: TargetValue[]): TargetValue[] | null {\n    let result: TargetValue[] | null = null;\n    nodes.some((node) => {\n      const newPath = [...parentPath, node[realValue]];\n      if (node[realValue] === currentTargetValue) {\n        result = parentPath;\n        return true;\n      }\n      if (Array.isArray(node[realChildren]) && node[realChildren].length) {\n        result = findPath(node[realChildren], newPath);\n        if (result !== null) {\n          return true;\n        }\n      }\n      return false;\n    });\n    return result;\n  }\n\n  return findPath(options, []) || [];\n}\n","import { defineComponent, ref, computed, watch, onMounted, toRefs, ComputedRef } from 'vue';\nimport { isNil, isArray, isEmpty, isBoolean, isFunction } from 'lodash-es';\n\nimport { findParentValues } from '@tdesign/common-js/tree-select/utils';\n\nimport Tree, { TreeProps, TreeNodeModel, TreeNodeValue } from '../tree';\nimport SelectInput, { TdSelectInputProps } from '../select-input';\nimport FakeArrow from '../common-components/fake-arrow';\nimport { PopupVisibleChangeContext } from '../popup';\n\nimport { INodeOptions } from './types';\nimport { TreeSelectValue, TdTreeSelectProps, TreeSelectValueChangeTrigger } from './type';\nimport { TreeOptionData } from '../common';\nimport props from './props';\n\n// hooks\nimport {\n  useConfig,\n  useVModel,\n  useDisabled,\n  useReadonly,\n  useTNodeJSX,\n  usePrefixClass,\n  useTNodeDefault,\n  useDefaultValue,\n  useEventForward,\n} from '@tdesign/shared-hooks';\n\nexport default defineComponent({\n  name: 'TTreeSelect',\n  props,\n  setup(props: TdTreeSelectProps, { slots, expose }) {\n    const renderTNodeJSX = useTNodeJSX();\n    const renderDefaultTNode = useTNodeDefault();\n    const classPrefix = usePrefixClass();\n    const { globalConfig } = useConfig('treeSelect');\n    const formDisabled = useDisabled() as ComputedRef<boolean>;\n    const isReadonly = useReadonly();\n\n    // ref\n    const treeRef = ref(null);\n\n    // data\n    const actived = ref([]);\n    const expanded = ref([]);\n    const nodeInfo = ref(null);\n    const treeKey = ref(0);\n\n    // model\n    const { value, modelValue, popupVisible, inputValue } = toRefs(props);\n    const [treeSelectValue, setTreeSelectValue] = useVModel(value, modelValue, props.defaultValue, props.onChange);\n    const [innerVisible, setInnerVisible] = useDefaultValue(\n      popupVisible,\n      false,\n      props.onPopupVisibleChange,\n      'popupVisible',\n    );\n    const [innerInputValue, setInnerInputValue] = useDefaultValue(\n      inputValue,\n      props.defaultInputValue,\n      props.onInputChange,\n      'inputValue',\n    );\n\n    /**\n     * 设置树的所有父节点展开\n     */\n    const setTreeParentsExpanded = () => {\n      const getParents = (value: TreeSelectValue) =>\n        findParentValues(props.data, value, realValue.value, realChildren.value);\n\n      let treeParents: TreeSelectValue[] = [];\n      if (treeSelectValue.value) {\n        if (Array.isArray(treeSelectValue.value) && props.multiple) {\n          treeParents = treeSelectValue.value.flatMap(getParents);\n        } else if (!Array.isArray(treeSelectValue.value) && !props.multiple) {\n          treeParents = getParents(treeSelectValue.value);\n        }\n      }\n      expanded.value = Array.from(new Set([...expanded.value, ...treeParents]));\n    };\n\n    // watch\n    watch(treeSelectValue, async () => {\n      await changeNodeInfo();\n      if (!props.multiple) {\n        actived.value = nodeInfo.value ? [nodeInfo.value.value] : [];\n      }\n    });\n\n    watch(\n      () => props.data,\n      async () => {\n        await changeNodeInfo();\n        treeRerender();\n      },\n      {\n        deep: true,\n      },\n    );\n\n    // computed\n    /** filterByText keep pace with innerInputValue */\n    const filterByText = computed(() => {\n      const value = innerInputValue.value || '';\n      if (value === '') {\n        return null;\n      }\n      return (node: TreeNodeModel<TreeOptionData>) => {\n        if (isFunction(props.filter)) {\n          const filter: boolean | Promise<boolean> = props.filter(String(value), node);\n          if (isBoolean(filter)) {\n            return filter;\n          }\n        }\n        return node.data[realLabel.value].indexOf(value) >= 0;\n      };\n    });\n    const tDisabled = computed(() => {\n      return formDisabled.value || props.disabled;\n    });\n\n    const inputPlaceholder = computed(\n      () => (innerVisible.value && nodeInfo.value?.label) || props.placeholder || globalConfig.value.placeholder,\n    );\n\n    const popupClass = computed(() => {\n      return [`${classPrefix.value}-select__dropdown`, 'narrow-scrollbar'];\n    });\n\n    const dropdownInnerSize = computed(() => {\n      return {\n        small: 's',\n        medium: 'm',\n        large: 'l',\n      }[props.size];\n    });\n\n    const isObjectValue = computed(() => props.valueType === 'object');\n\n    const checked = computed((): Array<TreeNodeValue> => {\n      if (props.multiple) {\n        if (isObjectValue.value) {\n          return isArray(treeSelectValue.value)\n            ? (treeSelectValue.value as Array<TreeSelectValue>).map((item) => (item as INodeOptions).value)\n            : [];\n        }\n        return isArray(treeSelectValue.value)\n          ? (treeSelectValue.value as Array<TreeSelectValue>).map((item) => item as TreeNodeValue)\n          : [];\n      }\n      return [];\n    });\n\n    const multiLimitDisabled = computed(() => {\n      return (\n        props.multiple &&\n        !!props.max &&\n        isArray(treeSelectValue.value) &&\n        props.max <= (treeSelectValue.value as Array<TreeSelectValue>).length\n      );\n    });\n\n    const realLabel = computed(() => {\n      if (!isEmpty(props.treeProps) && !isEmpty((props.treeProps as TreeProps).keys)) {\n        return (props.treeProps as TreeProps).keys.label || 'label';\n      }\n      return props.keys?.label || 'label';\n    });\n\n    const realValue = computed(() => {\n      if (!isEmpty(props.treeProps) && !isEmpty((props.treeProps as TreeProps).keys)) {\n        return (props.treeProps as TreeProps).keys.value || 'value';\n      }\n      return props.keys?.value || 'value';\n    });\n\n    const realChildren = computed(() => {\n      if (!isEmpty(props.treeProps) && !isEmpty((props.treeProps as TreeProps).keys)) {\n        return (props.treeProps as TreeProps).keys.children || 'children';\n      }\n      return props.keys?.children || 'children';\n    });\n\n    onMounted(async () => {\n      setTreeParentsExpanded();\n      if (!treeSelectValue.value && props.defaultValue) {\n        change(props.defaultValue, null, 'uncheck');\n      }\n      if (isObjectValue.value) {\n        actived.value = isArray(treeSelectValue.value)\n          ? (treeSelectValue.value as Array<TreeSelectValue>).map((item) => (item as INodeOptions)?.value)\n          : [(treeSelectValue.value as INodeOptions)?.value];\n      } else {\n        (actived.value as TreeSelectValue) = isArray(treeSelectValue.value)\n          ? treeSelectValue.value\n          : [treeSelectValue.value];\n      }\n      changeNodeInfo();\n    });\n\n    const change = (\n      valueParam: TreeSelectValue,\n      node: TreeNodeModel<TreeOptionData>,\n      trigger: TreeSelectValueChangeTrigger,\n    ) => {\n      setTreeSelectValue(valueParam, { node, trigger });\n      changeNodeInfo();\n    };\n\n    const clear = (content: { e: MouseEvent }) => {\n      const defaultValue: TreeSelectValue = props.multiple ? [] : '';\n      actived.value = [];\n      change(defaultValue, null, 'clear');\n      props.onClear?.({ e: content.e });\n    };\n\n    const treeNodeChange = (\n      valueParam: Array<TreeNodeValue>,\n      context: { node: TreeNodeModel<TreeOptionData>; e?: MouseEvent },\n    ) => {\n      let current: TreeSelectValue = valueParam;\n      if (isObjectValue.value) {\n        current = valueParam.map(getNodeItem);\n      }\n      change(current, context.node, 'check');\n    };\n\n    const treeNodeActive = (\n      valueParam: Array<TreeNodeValue>,\n      context: { node: TreeNodeModel<TreeOptionData>; e?: MouseEvent },\n    ) => {\n      if (!props.multiple) {\n        setInnerVisible(false, context);\n      }\n      // 多选模式屏蔽 Active 事件和取消选中状态改变\n      if (props.multiple || !context.node.actived) {\n        return;\n      }\n      // 单选模式重复选择不清空\n      if (treeSelectValue.value === context.node.data[realValue.value]) {\n        return;\n      }\n      let current: TreeSelectValue = valueParam;\n      if (isObjectValue.value) {\n        const nodeValue = isEmpty(valueParam) ? '' : valueParam[0];\n        current = getNodeItem(nodeValue);\n      } else {\n        current = isEmpty(valueParam) ? '' : valueParam[0];\n      }\n      change(current, context.node, 'check');\n      actived.value = valueParam;\n    };\n\n    const treeNodeExpand = (valueParam: Array<TreeNodeValue>) => {\n      expanded.value = valueParam;\n    };\n\n    const treeNodeLoad = () => {\n      changeNodeInfo();\n    };\n\n    const inputChange = (value: string): boolean => {\n      // 未打开状态不处理输入框输入\n      if (!innerVisible.value) {\n        props.onSearch?.(String(value));\n        return;\n      }\n      setInnerInputValue(value);\n      props.onSearch?.(String(value));\n    };\n\n    const tagChange: TdSelectInputProps['onTagChange'] = (value, context) => {\n      const { trigger, index } = context;\n      if (['tag-remove', 'backspace'].includes(trigger)) {\n        isArray(treeSelectValue.value) && (treeSelectValue.value as Array<TreeSelectValue>).splice(index, 1);\n      }\n      props.onRemove?.({ value, data: null, e: context && (context.e as MouseEvent) });\n      change(treeSelectValue.value, null, trigger as 'tag-remove' | 'backspace');\n    };\n\n    const handlePopupVisibleChange = (visible: boolean, context: PopupVisibleChangeContext) => {\n      setInnerVisible(visible, context);\n      // 在通过点击选择器打开弹窗时 清空此前的输入内容 避免在关闭时就清空引起的闪烁问题\n      if (visible && context.trigger === 'trigger-element-click') setInnerInputValue('');\n    };\n    const changeNodeInfo = async () => {\n      if (!props.multiple) {\n        if (treeSelectValue.value || treeSelectValue.value === 0) {\n          nodeInfo.value = getSingleNodeInfo();\n        } else {\n          nodeInfo.value = '';\n        }\n      } else if (props.multiple) {\n        if (isArray(treeSelectValue.value)) {\n          nodeInfo.value = getMultipleNodeInfo();\n        } else {\n          nodeInfo.value = [];\n        }\n      } else {\n        nodeInfo.value = null;\n      }\n    };\n\n    const getSingleNodeInfo = () => {\n      const nodeValue = isObjectValue.value ? (treeSelectValue.value as INodeOptions).value : treeSelectValue.value;\n      return getNodeItem(nodeValue);\n    };\n\n    const getMultipleNodeInfo = () => {\n      return (treeSelectValue.value as Array<TreeSelectValue>).map((value) => {\n        const nodeValue = isObjectValue.value ? (value as INodeOptions).value : value;\n        return getNodeItem(nodeValue);\n      });\n    };\n\n    const getNodeItem = (targetValue: TreeSelectValue) => {\n      if (treeRef.value) {\n        const node = treeRef.value.getItem(targetValue);\n        if (node) {\n          return {\n            ...node.data,\n            label: node.data[realLabel.value],\n            value: node.data[realValue.value],\n          };\n        }\n      }\n      const node = getTreeNode(props.data, targetValue);\n      if (node) {\n        return node;\n      }\n      return {\n        label: targetValue,\n        value: targetValue,\n      };\n    };\n\n    const getTreeNode = (data: Array<TreeOptionData>, targetValue: TreeSelectValue): TreeSelectValue | null => {\n      for (let i = 0, len = data.length; i < len; i++) {\n        const item = data[i];\n        if (item[realValue.value] === targetValue) {\n          return {\n            ...item,\n            label: item[realLabel.value],\n            value: item[realValue.value],\n          };\n        }\n        if (item?.[realChildren.value]) {\n          const result = getTreeNode(item?.[realChildren.value], targetValue);\n          if (!isNil(result)) {\n            return result;\n          }\n        }\n      }\n      return null;\n    };\n\n    const treeRerender = () => {\n      treeKey.value += 1;\n    };\n\n    const renderTree = () => {\n      const treeEvents = useEventForward(props.treeProps as TdTreeSelectProps['treeProps'], {\n        onChange: treeNodeChange,\n        onActive: treeNodeActive,\n        onExpand: treeNodeExpand,\n        onLoad: treeNodeLoad,\n      });\n      return (\n        <Tree\n          ref={treeRef}\n          v-show={!props.loading}\n          key={treeKey.value}\n          value={[...checked.value]}\n          hover\n          keys={props.keys}\n          data={props.data}\n          activable={!props.multiple}\n          checkable={props.multiple}\n          disabled={tDisabled.value || multiLimitDisabled.value}\n          filter={filterByText.value}\n          actived={actived.value}\n          expanded={expanded.value}\n          activeMultiple={props.multiple}\n          expandOnClickNode={false}\n          v-slots={{\n            empty: () =>\n              renderDefaultTNode('empty', {\n                defaultNode: <div class={`${classPrefix.value}-select__empty`}>{globalConfig.value.empty}</div>,\n              }),\n          }}\n          {...treeEvents.value}\n        />\n      );\n    };\n\n    const renderSuffixIcon = () => (\n      <FakeArrow\n        isActive={innerVisible.value}\n        overlayClassName={{\n          [`${classPrefix.value}-fake-arrow--highlight`]: innerVisible.value,\n          [`${classPrefix.value}-fake-arrow--disable`]: props.disabled,\n        }}\n      />\n    );\n\n    expose({\n      treeRef,\n    });\n\n    const selectInputEvent = useEventForward(props.selectInputProps as TdTreeSelectProps['selectInputProps'], {\n      onInputChange: inputChange,\n      onTagChange: tagChange,\n      onPopupVisibleChange: handlePopupVisibleChange,\n      onClear: clear,\n      onBlur: (_: any, context) => {\n        props.onBlur?.({ value: treeSelectValue.value, e: context.e as FocusEvent });\n      },\n      onFocus: (_: any, context: { e: FocusEvent }) => {\n        props.onFocus?.({ value: treeSelectValue.value, e: context.e });\n      },\n    });\n\n    return () => (\n      <SelectInput\n        class={`${classPrefix.value}-tree-select`}\n        value={nodeInfo.value}\n        inputValue={innerVisible.value ? innerInputValue.value : ''}\n        popupVisible={innerVisible.value}\n        disabled={tDisabled.value}\n        multiple={props.multiple}\n        loading={props.loading}\n        clearable={props.clearable}\n        autoWidth={props.autoWidth}\n        borderless={props.borderless}\n        readonly={isReadonly.value}\n        placeholder={inputPlaceholder.value}\n        allowInput={props.filterable || isFunction(props.filter)}\n        minCollapsedNum={props.minCollapsedNum}\n        collapsed-items={props.collapsedItems}\n        popupProps={{\n          overlayClassName: popupClass.value,\n          ...(props.popupProps as TdTreeSelectProps['popupProps']),\n        }}\n        inputProps={{\n          size: props.size,\n          ...(props.inputProps as TdTreeSelectProps['inputProps']),\n        }}\n        tagInputProps={{\n          size: props.size,\n        }}\n        tagProps={{\n          maxWidth: 300,\n          ...(props.tagProps as TdTreeSelectProps['tagProps']),\n        }}\n        label={() => renderTNodeJSX('label') || renderTNodeJSX('prefixIcon')}\n        suffix={props.suffix}\n        suffixIcon={() => {\n          if (props.suffixIcon || slots.suffixIcon) {\n            return renderTNodeJSX('suffixIcon');\n          }\n\n          return renderSuffixIcon();\n        }}\n        valueDisplay={() =>\n          renderTNodeJSX('valueDisplay', {\n            params: props.multiple\n              ? {\n                  value: nodeInfo.value,\n                  onClose: (index: number) => {\n                    const value = nodeInfo.value.map((node: TreeOptionData) => node.value);\n                    tagChange(value, {\n                      trigger: 'tag-remove',\n                      index,\n                      item: value[index],\n                    });\n                  },\n                }\n              : {\n                  value: nodeInfo.value || { [realLabel.value]: '', [realValue.value]: undefined },\n                },\n          })\n        }\n        v-slots={{\n          suffix: slots.suffix,\n          panel: () => (\n            <div\n              class={[\n                `${classPrefix.value}-select__dropdown-inner`,\n                `${classPrefix.value}-select__dropdown-inner--size-${dropdownInnerSize.value}`,\n              ]}\n            >\n              {renderTNodeJSX('panelTopContent')}\n              <p\n                v-show={props.loading && !tDisabled.value}\n                class={[`${classPrefix.value}-select-loading-tips`, `${classPrefix.value}-select__right-icon-polyfill`]}\n              >\n                {renderDefaultTNode('loadingText', {\n                  defaultNode: <div class={`${classPrefix.value}-select__empty`}>{globalConfig.value.loadingText}</div>,\n                })}\n              </p>\n              {renderTree()}\n              {renderTNodeJSX('panelBottomContent')}\n            </div>\n          ),\n          collapsedItems: slots.collapsedItems,\n        }}\n        {...selectInputEvent.value}\n      />\n    );\n  },\n});\n"],"names":["findParentValues","options","targetValue","realValue","realChildren","currentTargetValue","_typeof","_currentTargetValue","findPath","nodes","parentPath","result","some","node","newPath","concat","_toConsumableArray","Array","isArray","length","defineComponent","name","props","setup","slots","_ref","expose","renderTNodeJSX","useTNodeJSX","renderDefaultTNode","useTNodeDefault","classPrefix","usePrefixClass","_useConfig","useConfig","globalConfig","formDisabled","useDisabled","isReadonly","useReadonly","treeRef","ref","actived","expanded","nodeInfo","treeKey","_toRefs","toRefs","value","modelValue","popupVisible","inputValue","_useVModel","useVModel","defaultValue","onChange","_useVModel2","_slicedToArray","treeSelectValue","setTreeSelectValue","_useDefaultValue","useDefaultValue","onPopupVisibleChange","_useDefaultValue2","innerVisible","setInnerVisible","_useDefaultValue3","defaultInputValue","onInputChange","_useDefaultValue4","innerInputValue","setInnerInputValue","setTreeParentsExpanded","getParents","data","treeParents","multiple","flatMap","from","Set","watch","_callee","_regeneratorRuntime","wrap","_context","prev","next","changeNodeInfo","stop","_asyncToGenerator","mark","_callee2","_context2","treeRerender","deep","filterByText","computed","isFunction","filter","String","isBoolean","realLabel","indexOf","tDisabled","disabled","inputPlaceholder","_nodeInfo$value","label","placeholder","popupClass","dropdownInnerSize","small","medium","large","size","isObjectValue","valueType","checked","map","item","multiLimitDisabled","max","_props2$keys","isEmpty","treeProps","keys","_props2$keys2","_props2$keys3","children","onMounted","_callee3","_treeSelectValue$valu","_context3","change","valueParam","trigger","clear","content","_props2$onClear","onClear","e","treeNodeChange","context","current","getNodeItem","treeNodeActive","nodeValue","treeNodeExpand","treeNodeLoad","inputChange","_props2$onSearch2","_props2$onSearch","onSearch","tagChange","_props2$onRemove","index","includes","splice","onRemove","handlePopupVisibleChange","visible","_callee4","_context4","getSingleNodeInfo","getMultipleNodeInfo","getItem","_objectSpread","getTreeNode","i","len","isNil","renderTree","treeEvents","useEventForward","onActive","onExpand","onLoad","_withDirectives","_createVNode","Tree","_mergeProps","empty","defaultNode","_vShow","loading","renderSuffixIcon","selectInputEvent","selectInputProps","onTagChange","onBlur","_","_props2$onBlur","onFocus","_props2$onFocus","SelectInput","clearable","autoWidth","borderless","filterable","minCollapsedNum","collapsedItems","overlayClassName","popupProps","inputProps","maxWidth","tagProps","suffix","suffixIcon","valueDisplay","params","onClose","_defineProperty","panel","loadingText"],"mappings":"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"}