element-plus
Version:
A Component Library for Vue 3
1 lines • 5.37 kB
Source Map (JSON)
{"version":3,"file":"store.mjs","sources":["../../../../../../packages/components/cascader-panel/src/store.ts"],"sourcesContent":["import { isEqual } from 'lodash-unified'\nimport { isPropAbsent } from '@element-plus/utils'\nimport Node from './node'\n\nimport type { Nullable } from '@element-plus/utils'\nimport type {\n CascaderConfig,\n CascaderNodePathValue,\n CascaderNodeValue,\n CascaderOption,\n} from './types'\n\nconst flatNodes = (nodes: Node[], leafOnly: boolean) => {\n return nodes.reduce((res, node) => {\n if (node.isLeaf) {\n res.push(node)\n } else {\n !leafOnly && res.push(node)\n res = res.concat(flatNodes(node.children, leafOnly))\n }\n return res\n }, [] as Node[])\n}\n\nexport default class Store {\n readonly nodes: Node[]\n readonly allNodes: Node[]\n readonly leafNodes: Node[]\n\n constructor(\n data: CascaderOption[],\n readonly config: CascaderConfig\n ) {\n const nodes = (data || []).map(\n (nodeData) => new Node(nodeData, this.config)\n )\n this.nodes = nodes\n this.allNodes = flatNodes(nodes, false)\n this.leafNodes = flatNodes(nodes, true)\n }\n\n getNodes() {\n return this.nodes\n }\n\n getFlattedNodes(leafOnly: boolean) {\n return leafOnly ? this.leafNodes : this.allNodes\n }\n\n appendNode(nodeData: CascaderOption, parentNode?: Node) {\n const node = parentNode\n ? parentNode.appendChild(nodeData)\n : new Node(nodeData, this.config)\n\n if (!parentNode) this.nodes.push(node)\n\n this.appendAllNodesAndLeafNodes(node)\n }\n\n appendNodes(nodeDataList: CascaderOption[], parentNode: Node) {\n if (nodeDataList.length > 0) {\n nodeDataList.forEach((nodeData) => this.appendNode(nodeData, parentNode))\n } else {\n parentNode && parentNode.isLeaf && this.leafNodes.push(parentNode)\n }\n }\n\n appendAllNodesAndLeafNodes(node: Node) {\n this.allNodes.push(node)\n node.isLeaf && this.leafNodes.push(node)\n if (node.children) {\n node.children.forEach((subNode) => {\n this.appendAllNodesAndLeafNodes(subNode)\n })\n }\n }\n\n // when checkStrictly, leaf node first\n getNodeByValue(\n value: CascaderNodeValue | CascaderNodePathValue,\n leafOnly = false\n ): Nullable<Node> {\n if (isPropAbsent(value)) return null\n\n const node = this.getFlattedNodes(leafOnly).find(\n (node) => isEqual(node.value, value) || isEqual(node.pathValues, value)\n )\n\n return node || null\n }\n\n getSameNode(node: Node): Nullable<Node> {\n if (!node) return null\n\n const node_ = this.getFlattedNodes(false).find(\n ({ value, level }) => isEqual(node.value, value) && node.level === level\n )\n\n return node_ || null\n }\n}\n"],"names":["node"],"mappings":"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"}