@omegagrid/tree 0.6.97 → 0.6.99

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"treeModel.d.ts","sourceRoot":"","sources":["../../src/model/treeModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,MAAM,MAAM,UAAU,GAAG,UAAU,EAAE,CAAC;AAEtC,qBAAa,SAAS;IAgBkB,OAAO,EAAE,OAAO;IAdvD,SAAgB,OAAO,yBAAgC;IAEvD,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,aAAa,CAAgC;IACrD,OAAO,CAAC,SAAS,CAAM;IAEvB,IAAI,QAAQ,WAA4B;IACxC,IAAI,IAAI,cAAwB;IAChC,IAAI,KAAK,gBAAyB;IAClC,IAAI,YAAY,oCAAgC;IAEhD,kBAAkB,CAAC,KAAK,EAAE,MAAM;gBAEpB,MAAM,EAAE,UAAU,EAAS,OAAO,EAAE,OAAO;IAIvD,QAAQ,CAAC,MAAM,EAAE,UAAU;IAS3B,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAC,SAAS,EAAE;IAWpD,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IASxC,mBAAmB,CAAC,IAAI,EAAE,SAAS;IAQnC,UAAU,CAAC,kBAAkB,UAAQ;IASrC,gBAAgB,CAAC,kBAAkB,UAAQ;IAc3C,iBAAiB;IAiBjB,aAAa;CAIb"}
1
+ {"version":3,"file":"treeModel.d.ts","sourceRoot":"","sources":["../../src/model/treeModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,MAAM,MAAM,UAAU,GAAG,UAAU,EAAE,CAAC;AAEtC,qBAAa,SAAS;IAgBkB,OAAO,EAAE,OAAO;IAdvD,SAAgB,OAAO,yBAAgC;IAEvD,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,aAAa,CAAgC;IACrD,OAAO,CAAC,SAAS,CAAM;IAEvB,IAAI,QAAQ,WAA4B;IACxC,IAAI,IAAI,cAAwB;IAChC,IAAI,KAAK,gBAAyB;IAClC,IAAI,YAAY,oCAAgC;IAEhD,kBAAkB,CAAC,KAAK,EAAE,MAAM;gBAEpB,MAAM,EAAE,UAAU,EAAS,OAAO,EAAE,OAAO;IAIvD,QAAQ,CAAC,MAAM,EAAE,UAAU;IAS3B,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAC,SAAS,EAAE;IAWpD,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IASxC,mBAAmB,CAAC,IAAI,EAAE,SAAS;IAQnC,UAAU,CAAC,kBAAkB,UAAQ;IASrC,gBAAgB,CAAC,kBAAkB,UAAQ;IAc3C,iBAAiB;IAoBjB,aAAa;CAIb"}
@@ -83,7 +83,10 @@ export class TreeModel {
83
83
  });
84
84
  }
85
85
  else {
86
- this.root.walkVisible((node) => this._visibleNodes.push(node));
86
+ this.root.walkVisible((node) => {
87
+ node.visibleIndex = this._visibleNodes.length;
88
+ this._visibleNodes.push(node);
89
+ });
87
90
  }
88
91
  }
89
92
  getSourceData() {
@@ -1 +1 @@
1
- {"version":3,"file":"treeModel.js","sourceRoot":"","sources":["../../src/model/treeModel.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeModel, NodeSource } from \"./nodeModel\";\nimport { Options } from \"../options\";\nimport { tree } from '@omegagrid/core';\nimport { NodePlaceholder } from \"../types\";\n\nexport type TreeSource = NodeSource[];\n\nexport class TreeModel {\n\n\tpublic readonly nodeMap = new Map<string, NodeModel>();\n\n\tprivate _root: NodeModel;\n\tprivate _nodes: NodeModel[];\n\tprivate _visibleNodes: (NodeModel|NodePlaceholder)[];\n\tprivate _maxLevel = -1;\n\t\n\tget maxLevel() { return this._maxLevel }\n\tget root() { return this._root }\n\tget nodes() { return this._nodes }\n\tget visibleNodes() { return this._visibleNodes }\n\n\tgetNodeByViewIndex(index: number) { return this.visibleNodes[index] }\n\n\tconstructor(source: TreeSource, public options: Options) {\n\t\tthis.populate(source);\n\t}\n\n\tpopulate(source: TreeSource) {\n\t\tthis._root = new NodeModel(this, {k: null, v: null, i: -1});\n\t\tthis._root.level = -1;\n\t\tthis._nodes = source.map((nodeSource, i) => new NodeModel(this, {...nodeSource, i: i}));\n\t\tthis._maxLevel = tree.buildTree(this._nodes, this._root);\n\t\tthis.indexNodes(true);\n\t\tthis.indexVisibleNodes();\n\t}\n\n\tinsertNodes(index: number, nodes: number|NodeModel[]) {\n\t\tconst parent = this.nodes[index].parent;\n\t\tconst count = isNaN(nodes as number) ? (nodes as NodeModel[]).length : nodes as number;\n\t\tconst newNodes = isNaN(nodes as number) ? (nodes as NodeModel[]) : (new Array(count)).fill(null).map(() => new NodeModel(this, {}));\n\t\tthis.nodes.splice(index, 0, ...newNodes);\n\t\tif (this.maxLevel > 0) parent.insertChildren(newNodes, index - (parent.index || -1) - 1);\n\t\tthis.indexNodes();\n\t\tthis.indexVisibleNodes();\n\t\treturn newNodes;\n\t}\n\n\tdeleteNodes(index: number, count: number) {\n\t\tconst parent = this.nodes[index].parent;\n\t\tconst deletedNodes = this.nodes.splice(index, count);\n\t\tparent?.deleteChildren(deletedNodes);\n\t\tthis.indexNodes(true);\n\t\tthis.indexVisibleNodes();\n\t\treturn deletedNodes;\n\t}\n\n\tcalculateNodeLevels(node: NodeModel) {\n\t\tlet parent = node.parent as NodeModel;\n\t\twhile (parent) {\n\t\t\tparent.subLevels = Math.max(parent.subLevels, node.level - parent.level + (node.hasChildren ? 1 : 0));\n\t\t\tparent = parent.parent as NodeModel;\n\t\t}\n\t}\n\n\tindexNodes(calculateSubLevels = false) {\n\t\tthis.nodeMap.clear();\n\t\tthis._nodes.forEach((node, i) => {\n\t\t\tnode.index = i;\n\t\t\tthis.nodeMap.set(node.key, node);\n\t\t\tif (calculateSubLevels) this.calculateNodeLevels(node);\n\t\t});\n\t}\n\n\tindexNodesByTree(calculateSubLevels = false) {\n\t\tthis.nodeMap.clear();\n\t\tthis._nodes = [];\n\t\tlet n = 0;\n\t\tthis.root.walk((node: NodeModel) => {\n\t\t\tnode.index = n++;\n\t\t\tnode.visibleIndex = null;\n\t\t\tthis._nodes.push(node);\n\t\t\tthis.nodeMap.set(node.key, node);\n\t\t\tif (calculateSubLevels) this.calculateNodeLevels(node);\n\t\t});\n\t\tthis.indexVisibleNodes();\n\t}\n\n\tindexVisibleNodes() {\n\t\tthis._visibleNodes = [];\n\t\t// perf optimization by distinguishing between paged and non-paged trees\n\t\tconst pageSize = this.options?.pageSize;\n\t\tif (pageSize > 0) {\n\t\t\tthis.root.walkVisible((node: NodeModel) => {\n\t\t\t\tnode.visibleIndex = this._visibleNodes.length;\n\t\t\t\tthis._visibleNodes.push(node);\n\t\t\t\tif (node.parent && node.parent.lastChild === node && node.parent.isPartialyLoaded) {\n\t\t\t\t\tthis._visibleNodes.push({placeholder: true, parent: node.parent} as NodePlaceholder);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tthis.root.walkVisible((node: NodeModel) => this._visibleNodes.push(node));\n\t\t}\n\t}\n\n\tgetSourceData() {\n\t\treturn this.nodes.map(node => node.getSourceData());\n\t}\n\n}"]}
1
+ {"version":3,"file":"treeModel.js","sourceRoot":"","sources":["../../src/model/treeModel.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeModel, NodeSource } from \"./nodeModel\";\nimport { Options } from \"../options\";\nimport { tree } from '@omegagrid/core';\nimport { NodePlaceholder } from \"../types\";\n\nexport type TreeSource = NodeSource[];\n\nexport class TreeModel {\n\n\tpublic readonly nodeMap = new Map<string, NodeModel>();\n\n\tprivate _root: NodeModel;\n\tprivate _nodes: NodeModel[];\n\tprivate _visibleNodes: (NodeModel|NodePlaceholder)[];\n\tprivate _maxLevel = -1;\n\t\n\tget maxLevel() { return this._maxLevel }\n\tget root() { return this._root }\n\tget nodes() { return this._nodes }\n\tget visibleNodes() { return this._visibleNodes }\n\n\tgetNodeByViewIndex(index: number) { return this.visibleNodes[index] }\n\n\tconstructor(source: TreeSource, public options: Options) {\n\t\tthis.populate(source);\n\t}\n\n\tpopulate(source: TreeSource) {\n\t\tthis._root = new NodeModel(this, {k: null, v: null, i: -1});\n\t\tthis._root.level = -1;\n\t\tthis._nodes = source.map((nodeSource, i) => new NodeModel(this, {...nodeSource, i: i}));\n\t\tthis._maxLevel = tree.buildTree(this._nodes, this._root);\n\t\tthis.indexNodes(true);\n\t\tthis.indexVisibleNodes();\n\t}\n\n\tinsertNodes(index: number, nodes: number|NodeModel[]) {\n\t\tconst parent = this.nodes[index].parent;\n\t\tconst count = isNaN(nodes as number) ? (nodes as NodeModel[]).length : nodes as number;\n\t\tconst newNodes = isNaN(nodes as number) ? (nodes as NodeModel[]) : (new Array(count)).fill(null).map(() => new NodeModel(this, {}));\n\t\tthis.nodes.splice(index, 0, ...newNodes);\n\t\tif (this.maxLevel > 0) parent.insertChildren(newNodes, index - (parent.index || -1) - 1);\n\t\tthis.indexNodes();\n\t\tthis.indexVisibleNodes();\n\t\treturn newNodes;\n\t}\n\n\tdeleteNodes(index: number, count: number) {\n\t\tconst parent = this.nodes[index].parent;\n\t\tconst deletedNodes = this.nodes.splice(index, count);\n\t\tparent?.deleteChildren(deletedNodes);\n\t\tthis.indexNodes(true);\n\t\tthis.indexVisibleNodes();\n\t\treturn deletedNodes;\n\t}\n\n\tcalculateNodeLevels(node: NodeModel) {\n\t\tlet parent = node.parent as NodeModel;\n\t\twhile (parent) {\n\t\t\tparent.subLevels = Math.max(parent.subLevels, node.level - parent.level + (node.hasChildren ? 1 : 0));\n\t\t\tparent = parent.parent as NodeModel;\n\t\t}\n\t}\n\n\tindexNodes(calculateSubLevels = false) {\n\t\tthis.nodeMap.clear();\n\t\tthis._nodes.forEach((node, i) => {\n\t\t\tnode.index = i;\n\t\t\tthis.nodeMap.set(node.key, node);\n\t\t\tif (calculateSubLevels) this.calculateNodeLevels(node);\n\t\t});\n\t}\n\n\tindexNodesByTree(calculateSubLevels = false) {\n\t\tthis.nodeMap.clear();\n\t\tthis._nodes = [];\n\t\tlet n = 0;\n\t\tthis.root.walk((node: NodeModel) => {\n\t\t\tnode.index = n++;\n\t\t\tnode.visibleIndex = null;\n\t\t\tthis._nodes.push(node);\n\t\t\tthis.nodeMap.set(node.key, node);\n\t\t\tif (calculateSubLevels) this.calculateNodeLevels(node);\n\t\t});\n\t\tthis.indexVisibleNodes();\n\t}\n\n\tindexVisibleNodes() {\n\t\tthis._visibleNodes = [];\n\t\t// perf optimization by distinguishing between paged and non-paged trees\n\t\tconst pageSize = this.options?.pageSize;\n\t\tif (pageSize > 0) {\n\t\t\tthis.root.walkVisible((node: NodeModel) => {\n\t\t\t\tnode.visibleIndex = this._visibleNodes.length;\n\t\t\t\tthis._visibleNodes.push(node);\n\t\t\t\tif (node.parent && node.parent.lastChild === node && node.parent.isPartialyLoaded) {\n\t\t\t\t\tthis._visibleNodes.push({placeholder: true, parent: node.parent} as NodePlaceholder);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tthis.root.walkVisible((node: NodeModel) => {\n\t\t\t\tnode.visibleIndex = this._visibleNodes.length;\n\t\t\t\tthis._visibleNodes.push(node);\n\t\t\t});\n\t\t}\n\t}\n\n\tgetSourceData() {\n\t\treturn this.nodes.map(node => node.getSourceData());\n\t}\n\n}"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@omegagrid/tree",
3
- "version": "0.6.97",
3
+ "version": "0.6.99",
4
4
  "license": "UNLICENSED",
5
5
  "description": "Universal treeview component",
6
6
  "main": "./dist/index.js",
@@ -27,8 +27,8 @@
27
27
  "_prepublish": "yarn test && yarn lint"
28
28
  },
29
29
  "dependencies": {
30
- "@omegagrid/core": "^0.6.97",
31
- "@omegagrid/localize": "^0.6.97",
30
+ "@omegagrid/core": "^0.6.99",
31
+ "@omegagrid/localize": "^0.6.99",
32
32
  "date-fns": "^3.2.0",
33
33
  "lit": "^3.1.1",
34
34
  "lit-html": "^3.1.1",