123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- import { isEqual } from 'lodash-unified';
- import Node from './node.mjs';
- const flatNodes = (nodes, leafOnly) => {
- return nodes.reduce((res, node) => {
- if (node.isLeaf) {
- res.push(node);
- } else {
- !leafOnly && res.push(node);
- res = res.concat(flatNodes(node.children, leafOnly));
- }
- return res;
- }, []);
- };
- class Store {
- constructor(data, config) {
- this.config = config;
- const nodes = (data || []).map((nodeData) => new Node(nodeData, this.config));
- this.nodes = nodes;
- this.allNodes = flatNodes(nodes, false);
- this.leafNodes = flatNodes(nodes, true);
- }
- getNodes() {
- return this.nodes;
- }
- getFlattedNodes(leafOnly) {
- return leafOnly ? this.leafNodes : this.allNodes;
- }
- appendNode(nodeData, parentNode) {
- const node = parentNode ? parentNode.appendChild(nodeData) : new Node(nodeData, this.config);
- if (!parentNode)
- this.nodes.push(node);
- this.allNodes.push(node);
- node.isLeaf && this.leafNodes.push(node);
- }
- appendNodes(nodeDataList, parentNode) {
- nodeDataList.forEach((nodeData) => this.appendNode(nodeData, parentNode));
- }
- getNodeByValue(value, leafOnly = false) {
- if (!value && value !== 0)
- return null;
- const node = this.getFlattedNodes(leafOnly).find((node2) => isEqual(node2.value, value) || isEqual(node2.pathValues, value));
- return node || null;
- }
- getSameNode(node) {
- if (!node)
- return null;
- const node_ = this.getFlattedNodes(false).find(({ value, level }) => isEqual(node.value, value) && node.level === level);
- return node_ || null;
- }
- }
- export { Store as default };
- //# sourceMappingURL=store.mjs.map
|