{"version":3,"file":"store.mjs","sources":["../../../../../../packages/components/dsh-cascader-panel/src/store.ts"],"sourcesContent":["import { isEqual } from 'lodash-unified'\nimport {\n  DSH_CASCADER_ALL_NODE_LABEL,\n  DSH_CASCADER_ALL_NODE_VALUE,\n} from './config'\nimport DshNode from './node'\n\nimport type { Nullable } from '@code-monkey-ui/utils'\nimport type {\n  DshCascaderConfig,\n  DshCascaderNodePathValue,\n  DshCascaderNodeValue,\n  DshCascaderOption,\n} from './node'\n\nconst flatNodes = (nodes: DshNode[], leafOnly: boolean) => {\n  return nodes.reduce((res, node) => {\n    if (node.DshIsLeaf) {\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 DshNode[])\n}\n\nexport default class Store {\n  readonly nodes: DshNode[]\n  readonly allNodes: DshNode[]\n  readonly leafNodes: DshNode[]\n\n  constructor(data: DshCascaderOption[], readonly config: DshCascaderConfig) {\n    const nodes = (data || []).map(\n      (nodeData) => new DshNode(nodeData, this.config)\n    )\n    const node = {\n      [config.label]: DSH_CASCADER_ALL_NODE_LABEL,\n      [config.value]: DSH_CASCADER_ALL_NODE_VALUE,\n    }\n    nodes.unshift(new DshNode(node, this.config))\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: DshCascaderOption, parentNode?: DshNode) {\n    const node = parentNode\n      ? parentNode.appendChild(nodeData)\n      : new DshNode(nodeData, this.config)\n\n    if (!parentNode) this.nodes.push(node)\n\n    this.allNodes.push(node)\n    node.DshIsLeaf && this.leafNodes.push(node)\n  }\n\n  appendNodes(nodeDataList: DshCascaderOption[], parentNode: DshNode) {\n    nodeDataList.forEach((nodeData) => this.appendNode(nodeData, parentNode))\n  }\n\n  // when checkStrictly, leaf node first\n  getNodeByValue(\n    value: DshCascaderNodeValue | DshCascaderNodePathValue,\n    leafOnly = false\n  ): Nullable<DshNode> {\n    if (!value && value !== 0) 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: DshNode): Nullable<DshNode> {\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":[],"mappings":"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"}