UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 5.35 kB
{"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":";;;;;;;AAYA,MAAM,SAAA,GAAY,CAAC,KAAA,EAAe,QAAA,KAAsB;AACtD,EAAA,OAAO,KAAA,CAAM,MAAA,CAAO,CAAC,GAAA,EAAK,IAAA,KAAS;AACjC,IAAA,IAAI,KAAK,MAAA,EAAQ;AACf,MAAA,GAAA,CAAI,KAAK,IAAI,CAAA;AAAA,IACf,CAAA,MAAO;AACL,MAAA,CAAC,QAAA,IAAY,GAAA,CAAI,IAAA,CAAK,IAAI,CAAA;AAC1B,MAAA,GAAA,GAAM,IAAI,MAAA,CAAO,SAAA,CAAU,IAAA,CAAK,QAAA,EAAU,QAAQ,CAAC,CAAA;AAAA,IACrD;AACA,IAAA,OAAO,GAAA;AAAA,EACT,CAAA,EAAG,EAAY,CAAA;AACjB,CAAA;AAEA,MAAqB,KAAA,CAAM;AAAA,EAKzB,WAAA,CACE,MACS,MAAA,EACT;AADS,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AANX,IAAA,aAAA,CAAA,IAAA,EAAS,OAAA,CAAA;AACT,IAAA,aAAA,CAAA,IAAA,EAAS,UAAA,CAAA;AACT,IAAA,aAAA,CAAA,IAAA,EAAS,WAAA,CAAA;AAMP,IAAA,MAAM,KAAA,GAAA,CAAS,IAAA,IAAQ,EAAC,EAAG,GAAA;AAAA,MACzB,CAAC,QAAA,KAAa,IAAI,IAAA,CAAK,QAAA,EAAU,KAAK,MAAM;AAAA,KAC9C;AACA,IAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AACb,IAAA,IAAA,CAAK,QAAA,GAAW,SAAA,CAAU,KAAA,EAAO,KAAK,CAAA;AACtC,IAAA,IAAA,CAAK,SAAA,GAAY,SAAA,CAAU,KAAA,EAAO,IAAI,CAAA;AAAA,EACxC;AAAA,EAEA,QAAA,GAAW;AACT,IAAA,OAAO,IAAA,CAAK,KAAA;AAAA,EACd;AAAA,EAEA,gBAAgB,QAAA,EAAmB;AACjC,IAAA,OAAO,QAAA,GAAW,IAAA,CAAK,SAAA,GAAY,IAAA,CAAK,QAAA;AAAA,EAC1C;AAAA,EAEA,UAAA,CAAW,UAA0B,UAAA,EAAmB;AACtD,IAAA,MAAM,IAAA,GAAO,UAAA,GACT,UAAA,CAAW,WAAA,CAAY,QAAQ,IAC/B,IAAI,IAAA,CAAK,QAAA,EAAU,IAAA,CAAK,MAAM,CAAA;AAElC,IAAA,IAAI,CAAC,UAAA,EAAY,IAAA,CAAK,KAAA,CAAM,KAAK,IAAI,CAAA;AAErC,IAAA,IAAA,CAAK,2BAA2B,IAAI,CAAA;AAAA,EACtC;AAAA,EAEA,WAAA,CAAY,cAAgC,UAAA,EAAkB;AAC5D,IAAA,IAAI,YAAA,CAAa,SAAS,CAAA,EAAG;AAC3B,MAAA,YAAA,CAAa,QAAQ,CAAC,QAAA,KAAa,KAAK,UAAA,CAAW,QAAA,EAAU,UAAU,CAAC,CAAA;AAAA,IAC1E,CAAA,MAAO;AACL,MAAA,UAAA,IAAc,UAAA,CAAW,MAAA,IAAU,IAAA,CAAK,SAAA,CAAU,KAAK,UAAU,CAAA;AAAA,IACnE;AAAA,EACF;AAAA,EAEA,2BAA2B,IAAA,EAAY;AACrC,IAAA,IAAA,CAAK,QAAA,CAAS,KAAK,IAAI,CAAA;AACvB,IAAA,IAAA,CAAK,MAAA,IAAU,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,IAAI,CAAA;AACvC,IAAA,IAAI,KAAK,QAAA,EAAU;AACjB,MAAA,IAAA,CAAK,QAAA,CAAS,OAAA,CAAQ,CAAC,OAAA,KAAY;AACjC,QAAA,IAAA,CAAK,2BAA2B,OAAO,CAAA;AAAA,MACzC,CAAC,CAAA;AAAA,IACH;AAAA,EACF;AAAA;AAAA,EAGA,cAAA,CACE,KAAA,EACA,QAAA,GAAW,KAAA,EACK;AAChB,IAAA,IAAI,YAAA,CAAa,KAAK,CAAA,EAAG,OAAO,IAAA;AAEhC,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,eAAA,CAAgB,QAAQ,CAAA,CAAE,IAAA;AAAA,MAC1C,CAACA,KAAAA,KAAS,OAAA,CAAQA,KAAAA,CAAK,KAAA,EAAO,KAAK,CAAA,IAAK,OAAA,CAAQA,KAAAA,CAAK,UAAA,EAAY,KAAK;AAAA,KACxE;AAEA,IAAA,OAAO,IAAA,IAAQ,IAAA;AAAA,EACjB;AAAA,EAEA,YAAY,IAAA,EAA4B;AACtC,IAAA,IAAI,CAAC,MAAM,OAAO,IAAA;AAElB,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,eAAA,CAAgB,KAAK,CAAA,CAAE,IAAA;AAAA,MACxC,CAAC,EAAE,KAAA,EAAO,KAAA,EAAM,KAAM,OAAA,CAAQ,IAAA,CAAK,KAAA,EAAO,KAAK,CAAA,IAAK,IAAA,CAAK,KAAA,KAAU;AAAA,KACrE;AAEA,IAAA,OAAO,KAAA,IAAS,IAAA;AAAA,EAClB;AACF;;;;"}