{"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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"}