{"version":3,"file":"hooks.mjs","sources":["../../node_modules/lodash/isEqual.js","../../src/cascader/hooks.ts"],"sourcesContent":["var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n  return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","import { Ref, reactive, computed, toRefs, watch, nextTick } from 'vue';\nimport isEqual from 'lodash/isEqual';\nimport isFunction from 'lodash/isFunction';\nimport isString from 'lodash/isString';\n\nimport TreeStore from '../_common/js/tree/tree-store';\nimport { useFormDisabled } from '../form/hooks';\nimport useVModel from '../hooks/useVModel';\nimport useDefaultValue from '../hooks/useDefaultValue';\nimport { getTreeValue, getCascaderValue, isEmptyValues, isValueInvalid } from './core/helper';\nimport { treeNodesEffect, treeStoreExpendEffect } from './core/effect';\n\nimport {\n  TreeNode,\n  TreeNodeValue,\n  TdCascaderProps,\n  TreeNodeModel,\n  CascaderChangeSource,\n  CascaderValue,\n} from './interface';\n\n// 全局状态\nexport const useContext = (\n  props: TdCascaderProps,\n  setInnerValue: TdCascaderProps['onChange'],\n  innerPopupVisible: Ref<TdCascaderProps['popupVisible']>,\n  setPopupVisible: TdCascaderProps['onPopupVisibleChange'],\n) => {\n  const statusContext = reactive({\n    treeStore: null,\n    inputVal: null,\n    scopeVal: undefined,\n    treeNodes: [],\n    expend: [],\n  });\n\n  return {\n    statusContext,\n    cascaderContext: computed(() => {\n      const {\n        size,\n        checkStrictly,\n        lazy,\n        multiple,\n        filterable,\n        clearable,\n        checkProps,\n        max,\n        disabled,\n        showAllLevels,\n        minCollapsedNum,\n        valueType,\n      } = props;\n      return {\n        value: statusContext.scopeVal,\n        size,\n        checkStrictly,\n        lazy,\n        multiple,\n        filterable,\n        clearable,\n        checkProps,\n        max,\n        disabled,\n        showAllLevels,\n        minCollapsedNum,\n        valueType,\n        visible: innerPopupVisible.value,\n        ...statusContext,\n        setTreeNodes: (nodes: TreeNode[]) => {\n          statusContext.treeNodes = nodes;\n        },\n        setValue: (val: CascaderValue, source: CascaderChangeSource, node?: TreeNodeModel) => {\n          if (isEqual(val, statusContext.scopeVal)) return;\n          setInnerValue(val, { source, node });\n        },\n        setVisible: setPopupVisible,\n        setInputVal: (val: string) => {\n          statusContext.inputVal = val;\n        },\n        setExpend: (val: TreeNodeValue[]) => {\n          statusContext.expend = val;\n        },\n      };\n    }),\n  };\n};\n\n// 内聚组件核心的副作用与状态处理\nexport const useCascaderContext = (props: TdCascaderProps) => {\n  const disabled = useFormDisabled();\n  const { value, modelValue, popupVisible } = toRefs(props);\n  const [innerValue, setInnerValue] = useVModel(value, modelValue, props.defaultValue, props.onChange);\n  const [innerPopupVisible, setPopupVisible] = useDefaultValue(\n    popupVisible,\n    false,\n    props.onPopupVisibleChange,\n    'popupVisible',\n  );\n  const { cascaderContext, statusContext } = useContext(props, setInnerValue, innerPopupVisible, setPopupVisible);\n\n  const isFilterable = computed(() => {\n    return Boolean(props.filterable || isFunction(props.filter));\n  });\n\n  // 更新treeNodes\n  const updatedTreeNodes = () => {\n    const { inputVal, treeStore, setTreeNodes } = cascaderContext.value;\n    treeNodesEffect(inputVal, treeStore, setTreeNodes, props.filter);\n  };\n\n  // 更新节点展开状态\n  const updateExpend = () => {\n    const { value, treeStore } = cascaderContext.value;\n    const { expend } = statusContext;\n    treeStoreExpendEffect(treeStore, value, expend);\n    treeStore.replaceChecked(getTreeValue(value));\n  };\n\n  watch(\n    () => props.options,\n    () => {\n      const { options, keys = {}, checkStrictly, lazy, load, valueMode } = props;\n      const { treeStore } = statusContext;\n\n      if (!options.length && !treeStore) return;\n\n      if (!treeStore) {\n        const store = new TreeStore({\n          keys: {\n            ...keys,\n            children: isString(keys.children) ? keys.children : 'children',\n          },\n          checkable: true,\n          expandMutex: true,\n          expandParent: true,\n          lazy,\n          load,\n          valueMode,\n          checkStrictly,\n          onLoad: () => {\n            nextTick(() => {\n              store.refreshNodes();\n              updatedTreeNodes();\n            });\n          },\n        });\n        store.append(options);\n        statusContext.treeStore = store;\n      } else {\n        treeStore.reload(options);\n        treeStore.refreshNodes();\n      }\n      updateExpend();\n      updatedTreeNodes();\n    },\n    { immediate: true, deep: true },\n  );\n\n  // tree插件配置变化\n  watch(\n    () => {\n      const { checkStrictly, lazy, load, valueMode } = props;\n      return JSON.stringify({\n        valueMode,\n        checkStrictly,\n        lazy,\n        load,\n      });\n    },\n    () => {\n      const { treeStore } = statusContext;\n      if (!treeStore) return;\n      const { checkStrictly, lazy, load, valueMode } = props;\n      const treeProps = {\n        checkStrictly,\n        disabled,\n        load,\n        lazy,\n        valueMode,\n      };\n      treeStore.setConfig(treeProps);\n    },\n    { immediate: true },\n  );\n\n  watch(\n    innerValue,\n    () => {\n      // 初始化判断 value 逻辑\n      const { setValue, multiple, valueType } = cascaderContext.value;\n\n      if (isValueInvalid(innerValue.value, cascaderContext.value)) {\n        setValue(multiple ? [] : '', 'invalid-value');\n      } else {\n        statusContext.scopeVal = multiple ? [] : '';\n      }\n\n      if (!isEmptyValues(innerValue)) {\n        statusContext.scopeVal = getCascaderValue(innerValue.value, valueType, multiple);\n      }\n\n      if (!statusContext.treeStore) return;\n      updateExpend();\n      updatedTreeNodes();\n    },\n    { immediate: true },\n  );\n\n  watch(\n    () => innerPopupVisible.value && isFilterable.value,\n    (visible) => {\n      const { setInputVal } = cascaderContext.value;\n      if (visible) {\n        setInputVal('');\n      }\n    },\n  );\n\n  watch(\n    () => statusContext.inputVal,\n    () => {\n      updatedTreeNodes();\n    },\n  );\n\n  return {\n    cascaderContext,\n    isFilterable,\n  };\n};\n"],"names":["baseIsEqual","require$$0","isEqual","value","other","isEqual_1","treeStore","inputVal","treeNodes","expend","statusContext","size","checkStrictly","lazy","multiple","filterable","clearable","checkProps","max","disabled","showAllLevels","minCollapsedNum","valueType","setTreeNodes","source","node","setVisible","setInputVal","setExpend","innerValue","setInnerValue","innerPopupVisible","setPopupVisible","isFunction","treeStoreExpendEffect","watch","keys","checkable","expandMutex","expandParent","load","valueMode","nextTick","updatedTreeNodes","store","updateExpend","immediate","deep","cascaderContext","isFilterable"],"mappings":"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"}