element-plus
Version:
A Component Library for Vue 3
1 lines • 24 kB
Source Map (JSON)
{"version":3,"file":"tree-store.mjs","sources":["../../../../../../../packages/components/tree/src/model/tree-store.ts"],"sourcesContent":["import { nextTick } from 'vue'\nimport { isNil } from 'lodash-unified'\nimport { NOOP, hasOwn, isObject, isPropAbsent } from '@element-plus/utils'\nimport Node from './node'\nimport { getNodeKey } from './util'\n\nimport type {\n FilterNodeMethodFunction,\n FilterValue,\n LoadFunction,\n TreeData,\n TreeKey,\n TreeNodeData,\n TreeOptionProps,\n TreeStoreNodesMap,\n TreeStoreOptions,\n} from '../tree.type'\n\nexport default class TreeStore {\n currentNode: Node | null\n currentNodeKey: TreeKey | null\n nodesMap: TreeStoreNodesMap\n root!: Node\n data!: TreeData\n lazy = false\n load?: LoadFunction\n filterNodeMethod?: FilterNodeMethodFunction\n key!: TreeKey\n defaultCheckedKeys?: TreeKey[]\n checkStrictly = false\n defaultExpandedKeys?: TreeKey[]\n autoExpandParent = false\n defaultExpandAll = false\n checkDescendants = false\n props!: TreeOptionProps\n\n constructor(options: TreeStoreOptions) {\n this.currentNode = null\n this.currentNodeKey = null\n\n for (const option in options) {\n if (hasOwn(options, option)) {\n this[option] = options[option]\n }\n }\n\n this.nodesMap = {}\n }\n\n initialize() {\n this.root = new Node({\n data: this.data,\n store: this,\n })\n this.root.initialize()\n\n if (this.lazy && this.load) {\n const loadFn = this.load\n loadFn(\n this.root,\n (data) => {\n this.root.doCreateChildren(data)\n this._initDefaultCheckedNodes()\n },\n NOOP\n )\n } else {\n this._initDefaultCheckedNodes()\n }\n }\n\n filter(value: FilterValue): void {\n const filterNodeMethod = this.filterNodeMethod\n const lazy = this.lazy\n const traverse = async function (node: TreeStore | Node) {\n const childNodes = (node as TreeStore).root\n ? (node as TreeStore).root.childNodes\n : (node as Node).childNodes\n\n for (const [index, child] of childNodes.entries()) {\n child.visible = !!filterNodeMethod?.call(\n child,\n value,\n child.data,\n child\n )\n\n if (index % 80 === 0 && index > 0) {\n await nextTick()\n }\n await traverse(child)\n }\n\n if (!(node as Node).visible && childNodes.length) {\n let allHidden = true\n allHidden = !childNodes.some((child) => child.visible)\n\n if ((node as TreeStore).root) {\n ;(node as TreeStore).root.visible = allHidden === false\n } else {\n ;(node as Node).visible = allHidden === false\n }\n }\n if (!value) return\n\n if ((node as Node).visible && !(node as Node).isLeaf) {\n if (!lazy || (node as Node).loaded) {\n ;(node as Node).expand()\n }\n }\n }\n\n traverse(this)\n }\n\n setData(newVal: TreeData): void {\n const instanceChanged = newVal !== this.root.data\n if (instanceChanged) {\n this.nodesMap = {}\n this.root.setData(newVal)\n this._initDefaultCheckedNodes()\n this.setCurrentNodeKey(this.currentNodeKey)\n } else {\n this.root.updateChildren()\n }\n }\n\n getNode(data: TreeKey | TreeNodeData | Node): Node {\n if (data instanceof Node) return data\n const key = isObject(data) ? getNodeKey(this.key, data) : data\n return this.nodesMap[key] || null\n }\n\n insertBefore(\n data: TreeNodeData,\n refData: TreeKey | TreeNodeData | Node\n ): void {\n const refNode = this.getNode(refData)\n refNode.parent?.insertBefore({ data }, refNode)\n }\n\n insertAfter(\n data: TreeNodeData,\n refData: TreeKey | TreeNodeData | Node\n ): void {\n const refNode = this.getNode(refData)\n refNode.parent?.insertAfter({ data }, refNode)\n }\n\n remove(data: TreeNodeData | Node): void {\n const node = this.getNode(data)\n\n if (node && node.parent) {\n if (node === this.currentNode) {\n this.currentNode = null\n }\n node.parent.removeChild(node)\n }\n }\n\n append(data: TreeNodeData, parentData: TreeNodeData | TreeKey | Node): void {\n const parentNode = !isPropAbsent(parentData)\n ? this.getNode(parentData)\n : this.root\n\n if (parentNode) {\n parentNode.insertChild({ data })\n }\n }\n\n _initDefaultCheckedNodes(): void {\n const defaultCheckedKeys = this.defaultCheckedKeys || []\n const nodesMap = this.nodesMap\n\n defaultCheckedKeys.forEach((checkedKey) => {\n const node = nodesMap[checkedKey]\n\n if (node) {\n node.setChecked(true, !this.checkStrictly)\n }\n })\n }\n\n _initDefaultCheckedNode(node: Node): void {\n const defaultCheckedKeys = this.defaultCheckedKeys || []\n\n if (!isNil(node.key) && defaultCheckedKeys.includes(node.key)) {\n node.setChecked(true, !this.checkStrictly)\n }\n }\n\n setDefaultCheckedKey(newVal: TreeKey[]): void {\n if (newVal !== this.defaultCheckedKeys) {\n this.defaultCheckedKeys = newVal\n this._initDefaultCheckedNodes()\n }\n }\n\n registerNode(node: Node): void {\n const key = this.key\n if (!node || !node.data) return\n\n if (!key) {\n this.nodesMap[node.id] = node\n } else {\n const nodeKey = node.key\n if (!isNil(nodeKey)) this.nodesMap[nodeKey] = node\n }\n }\n\n deregisterNode(node: Node): void {\n const key = this.key\n if (!key || !node || !node.data) return\n\n node.childNodes.forEach((child) => {\n this.deregisterNode(child)\n })\n\n delete this.nodesMap[node.key!]\n }\n\n getCheckedNodes(\n leafOnly = false,\n includeHalfChecked = false\n ): TreeNodeData[] {\n const checkedNodes: TreeNodeData[] = []\n const traverse = function (node: TreeStore | Node) {\n const childNodes = (node as TreeStore).root\n ? (node as TreeStore).root.childNodes\n : (node as Node).childNodes\n\n childNodes.forEach((child) => {\n if (\n (child.checked || (includeHalfChecked && child.indeterminate)) &&\n (!leafOnly || (leafOnly && child.isLeaf))\n ) {\n checkedNodes.push(child.data)\n }\n\n traverse(child)\n })\n }\n\n traverse(this)\n\n return checkedNodes\n }\n\n getCheckedKeys(leafOnly = false): TreeKey[] {\n return this.getCheckedNodes(leafOnly).map((data) => (data || {})[this.key])\n }\n\n getHalfCheckedNodes(): TreeNodeData[] {\n const nodes: TreeNodeData[] = []\n const traverse = function (node: TreeStore | Node) {\n const childNodes = (node as TreeStore).root\n ? (node as TreeStore).root.childNodes\n : (node as Node).childNodes\n\n childNodes.forEach((child) => {\n if (child.indeterminate) {\n nodes.push(child.data)\n }\n\n traverse(child)\n })\n }\n\n traverse(this)\n\n return nodes\n }\n\n getHalfCheckedKeys(): TreeKey[] {\n return this.getHalfCheckedNodes().map((data) => (data || {})[this.key])\n }\n\n _getAllNodes(): Node[] {\n const allNodes: Node[] = []\n const nodesMap = this.nodesMap\n for (const nodeKey in nodesMap) {\n if (hasOwn(nodesMap, nodeKey)) {\n allNodes.push(nodesMap[nodeKey])\n }\n }\n\n return allNodes\n }\n\n updateChildren(key: TreeKey, data: TreeData): void {\n const node = this.nodesMap[key]\n if (!node) return\n const childNodes = node.childNodes\n for (let i = childNodes.length - 1; i >= 0; i--) {\n const child = childNodes[i]\n this.remove(child.data)\n }\n for (let i = 0, j = data.length; i < j; i++) {\n const child = data[i]\n this.append(child, node.data)\n }\n }\n\n _setCheckedKeys(\n key: TreeKey,\n leafOnly = false,\n checkedKeys: { [key: string]: boolean }\n ) {\n const allNodes = this._getAllNodes().sort((a, b) => a.level - b.level)\n const cache: Record<TreeKey, boolean> = Object.create(null)\n const keys = Object.keys(checkedKeys)\n allNodes.forEach((node) => node.setChecked(false, false))\n const cacheCheckedChild = (node: Node) => {\n node.childNodes.forEach((child) => {\n cache[child.data[key]] = true\n if (child.childNodes?.length) {\n cacheCheckedChild(child)\n }\n })\n }\n for (let i = 0, j = allNodes.length; i < j; i++) {\n const node = allNodes[i]\n const nodeKey: string = node.data[key].toString()\n const checked = keys.includes(nodeKey)\n if (!checked) {\n if (node.checked && !cache[nodeKey]) {\n node.setChecked(false, false)\n }\n continue\n }\n\n if (node.childNodes.length) {\n cacheCheckedChild(node)\n }\n\n if (node.isLeaf || this.checkStrictly) {\n node.setChecked(true, false)\n continue\n }\n node.setChecked(true, true)\n\n if (leafOnly) {\n node.setChecked(false, false)\n const traverse = function (node: Node): void {\n const childNodes = node.childNodes\n childNodes.forEach((child) => {\n if (!child.isLeaf) {\n child.setChecked(false, false)\n }\n traverse(child)\n })\n }\n traverse(node)\n }\n }\n }\n\n setCheckedNodes(array: Node[], leafOnly = false): void {\n const key = this.key\n const checkedKeys: Record<TreeKey, boolean> = {}\n array.forEach((item) => {\n checkedKeys[((item || {}) as any)[key]] = true\n })\n\n this._setCheckedKeys(key, leafOnly, checkedKeys)\n }\n\n setCheckedKeys(keys: TreeKey[], leafOnly = false): void {\n this.defaultCheckedKeys = keys\n const key = this.key\n const checkedKeys: Record<TreeKey, boolean> = {}\n keys.forEach((key) => {\n checkedKeys[key] = true\n })\n\n this._setCheckedKeys(key, leafOnly, checkedKeys)\n }\n\n setDefaultExpandedKeys(keys: TreeKey[]) {\n keys = keys || []\n this.defaultExpandedKeys = keys\n keys.forEach((key) => {\n const node = this.getNode(key)\n if (node) node.expand(null, this.autoExpandParent)\n })\n }\n\n setChecked(\n data: TreeKey | TreeNodeData,\n checked: boolean,\n deep: boolean\n ): void {\n const node = this.getNode(data)\n\n if (node) {\n node.setChecked(!!checked, deep)\n }\n }\n\n getCurrentNode() {\n return this.currentNode\n }\n\n setCurrentNode(currentNode: Node): void {\n const prevCurrentNode = this.currentNode\n if (prevCurrentNode) {\n prevCurrentNode.isCurrent = false\n }\n this.currentNode = currentNode\n this.currentNode.isCurrent = true\n }\n\n setUserCurrentNode(node: Node, shouldAutoExpandParent = true): void {\n const key = (node as any)[this.key]\n const currNode = this.nodesMap[key]\n this.setCurrentNode(currNode)\n if (\n shouldAutoExpandParent &&\n this.currentNode &&\n this.currentNode.level > 1\n ) {\n this.currentNode.parent?.expand(null, true)\n }\n }\n\n setCurrentNodeKey(key: TreeKey | null, shouldAutoExpandParent = true): void {\n this.currentNodeKey = key\n if (isPropAbsent(key)) {\n this.currentNode && (this.currentNode.isCurrent = false)\n this.currentNode = null\n return\n }\n const node = this.getNode(key)\n if (node) {\n this.setCurrentNode(node)\n if (\n shouldAutoExpandParent &&\n this.currentNode &&\n this.currentNode.level > 1\n ) {\n this.currentNode.parent?.expand(null, true)\n }\n }\n }\n}\n"],"names":["node","key"],"mappings":"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"}