@omegagrid/tree 0.10.0 → 0.10.2

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.
Files changed (85) hide show
  1. package/package.json +3 -3
  2. package/dist/adapters/dateAdapter.d.ts +0 -35
  3. package/dist/adapters/dateAdapter.d.ts.map +0 -1
  4. package/dist/adapters/dateAdapter.js +0 -222
  5. package/dist/adapters/dateAdapter.js.map +0 -1
  6. package/dist/adapters/index.d.ts +0 -2
  7. package/dist/adapters/index.d.ts.map +0 -1
  8. package/dist/adapters/index.js +0 -2
  9. package/dist/adapters/index.js.map +0 -1
  10. package/dist/constants.d.ts +0 -53
  11. package/dist/constants.d.ts.map +0 -1
  12. package/dist/constants.js +0 -11
  13. package/dist/constants.js.map +0 -1
  14. package/dist/index.d.ts +0 -6
  15. package/dist/index.d.ts.map +0 -1
  16. package/dist/index.js +0 -5
  17. package/dist/index.js.map +0 -1
  18. package/dist/model/filterModel.d.ts +0 -17
  19. package/dist/model/filterModel.d.ts.map +0 -1
  20. package/dist/model/filterModel.js +0 -60
  21. package/dist/model/filterModel.js.map +0 -1
  22. package/dist/model/index.d.ts +0 -5
  23. package/dist/model/index.d.ts.map +0 -1
  24. package/dist/model/index.js +0 -5
  25. package/dist/model/index.js.map +0 -1
  26. package/dist/model/nodeModel.d.ts +0 -100
  27. package/dist/model/nodeModel.d.ts.map +0 -1
  28. package/dist/model/nodeModel.js +0 -59
  29. package/dist/model/nodeModel.js.map +0 -1
  30. package/dist/model/selectionModel.d.ts +0 -39
  31. package/dist/model/selectionModel.d.ts.map +0 -1
  32. package/dist/model/selectionModel.js +0 -199
  33. package/dist/model/selectionModel.js.map +0 -1
  34. package/dist/model/treeAdapter.d.ts +0 -10
  35. package/dist/model/treeAdapter.d.ts.map +0 -1
  36. package/dist/model/treeAdapter.js +0 -10
  37. package/dist/model/treeAdapter.js.map +0 -1
  38. package/dist/model/treeModel.d.ts +0 -27
  39. package/dist/model/treeModel.d.ts.map +0 -1
  40. package/dist/model/treeModel.js +0 -97
  41. package/dist/model/treeModel.js.map +0 -1
  42. package/dist/options.d.ts +0 -35
  43. package/dist/options.d.ts.map +0 -1
  44. package/dist/options.js +0 -30
  45. package/dist/options.js.map +0 -1
  46. package/dist/types.d.ts +0 -42
  47. package/dist/types.d.ts.map +0 -1
  48. package/dist/types.js +0 -15
  49. package/dist/types.js.map +0 -1
  50. package/dist/ui/dropdown.d.ts +0 -68
  51. package/dist/ui/dropdown.d.ts.map +0 -1
  52. package/dist/ui/dropdown.js +0 -383
  53. package/dist/ui/dropdown.js.map +0 -1
  54. package/dist/ui/dropdown.style.d.ts +0 -2
  55. package/dist/ui/dropdown.style.d.ts.map +0 -1
  56. package/dist/ui/dropdown.style.js +0 -68
  57. package/dist/ui/dropdown.style.js.map +0 -1
  58. package/dist/ui/index.d.ts +0 -6
  59. package/dist/ui/index.d.ts.map +0 -1
  60. package/dist/ui/index.js +0 -6
  61. package/dist/ui/index.js.map +0 -1
  62. package/dist/ui/levels.d.ts +0 -13
  63. package/dist/ui/levels.d.ts.map +0 -1
  64. package/dist/ui/levels.js +0 -64
  65. package/dist/ui/levels.js.map +0 -1
  66. package/dist/ui/menu.d.ts +0 -14
  67. package/dist/ui/menu.d.ts.map +0 -1
  68. package/dist/ui/menu.js +0 -89
  69. package/dist/ui/menu.js.map +0 -1
  70. package/dist/ui/search.d.ts +0 -18
  71. package/dist/ui/search.d.ts.map +0 -1
  72. package/dist/ui/search.js +0 -82
  73. package/dist/ui/search.js.map +0 -1
  74. package/dist/ui/tree.d.ts +0 -86
  75. package/dist/ui/tree.d.ts.map +0 -1
  76. package/dist/ui/tree.js +0 -482
  77. package/dist/ui/tree.js.map +0 -1
  78. package/dist/ui/tree.renderer.d.ts +0 -7
  79. package/dist/ui/tree.renderer.d.ts.map +0 -1
  80. package/dist/ui/tree.renderer.js +0 -114
  81. package/dist/ui/tree.renderer.js.map +0 -1
  82. package/dist/ui/tree.style.d.ts +0 -3
  83. package/dist/ui/tree.style.d.ts.map +0 -1
  84. package/dist/ui/tree.style.js +0 -147
  85. package/dist/ui/tree.style.js.map +0 -1
@@ -1,100 +0,0 @@
1
- import { CustomProperties, IconSpec, tree } from '@omegagrid/core';
2
- import { FolderOptions, TreeNodeRenderer } from '../types';
3
- import { TreeModel } from './treeModel';
4
- export type NodeSource = {
5
- k?: string;
6
- v?: string;
7
- key?: string;
8
- value?: string;
9
- t?: string;
10
- s?: boolean;
11
- ch?: boolean;
12
- icon?: IconSpec | string;
13
- folder?: FolderOptions;
14
- props?: CustomProperties;
15
- renderer?: TreeNodeRenderer;
16
- } & tree.TreeNodeSource;
17
- declare const NodeModel_base: (new (...input: any[]) => {
18
- index: number;
19
- parentIndex: number;
20
- level: number;
21
- visibleIndex: number;
22
- _children: any[];
23
- _count: number;
24
- _parent: any;
25
- _collapsed: boolean;
26
- _hidden: boolean;
27
- _filterState: tree.FilterState;
28
- _filterable: boolean;
29
- _sortable: boolean;
30
- populate(source: tree.TreeNodeSource): void;
31
- getSourceData(): tree.TreeNodeSource;
32
- get filterable(): boolean;
33
- get sortable(): boolean;
34
- get filterState(): tree.FilterState;
35
- set filterState(v: tree.FilterState): any;
36
- get hidden(): boolean;
37
- set hidden(value: boolean): any;
38
- get visible(): boolean;
39
- get collapsed(): boolean;
40
- set collapsed(value: boolean): any;
41
- get parent(): any;
42
- set parent(parent: any): any;
43
- get children(): any[];
44
- set children(value: any[]): any;
45
- get hasChildren(): boolean;
46
- set count(value: number): any;
47
- get isLoaded(): boolean;
48
- get isPartialyLoaded(): boolean;
49
- get hasParent(): boolean;
50
- get firstChild(): any;
51
- get lastChild(): any;
52
- addChild(child: any): void;
53
- insertChildren(children: any[], index: number): void;
54
- deleteChildren(index: number | any[], count?: number): void;
55
- expand(unhide?: boolean): void;
56
- collapse(): void;
57
- toggleCollapse(recursive?: boolean, unhide?: boolean): void;
58
- clearChildren(): void;
59
- walk(cb: (m: any) => unknown | void): void;
60
- walkVisible(cb: (m: any) => unknown | void): void;
61
- walkUp(cb: (m: any) => unknown | void): void;
62
- _sort(comparer: (a: any, b: any) => number): void;
63
- sort(comparer: (a: any, b: any) => number): void;
64
- }) & tree.Constructor<import("@omegagrid/core").Populatable>;
65
- export declare class NodeModel extends NodeModel_base {
66
- model: TreeModel;
67
- subLevels: number;
68
- private _type;
69
- get type(): string;
70
- set type(v: string);
71
- private _checkbox;
72
- get checkbox(): boolean;
73
- set checkbox(v: boolean);
74
- private _key;
75
- get key(): string;
76
- private set key(value);
77
- private _value;
78
- get value(): string;
79
- set value(v: string);
80
- private _htmlValue;
81
- get htmlValue(): string;
82
- set htmlValue(v: string);
83
- private _icon;
84
- get icon(): IconSpec | string;
85
- set icon(v: IconSpec | string);
86
- private _folder;
87
- get folder(): FolderOptions;
88
- set folder(v: FolderOptions);
89
- private _renderer;
90
- get renderer(): TreeNodeRenderer;
91
- set renderer(v: TreeNodeRenderer);
92
- protected _properties: CustomProperties;
93
- get properties(): CustomProperties;
94
- set properties(v: CustomProperties);
95
- constructor(model: TreeModel, source: NodeSource);
96
- populate(source: NodeSource): void;
97
- getSourceData(): NodeSource;
98
- }
99
- export {};
100
- //# sourceMappingURL=nodeModel.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nodeModel.d.ts","sourceRoot":"","sources":["../../src/model/nodeModel.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,MAAM,UAAU,GAAG;IACxB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,OAAO,CAAC;IACZ,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,IAAI,CAAC,EAAE,QAAQ,GAAC,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,QAAQ,CAAC,EAAE,gBAAgB,CAAA;CAC3B,GAAG,IAAI,CAAC,cAAc,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+CA0DZ,CAAC;iBACmB,CAAC;;4BAEX,CAAC,iBACrB,CAAA;;;;;;;;AA5DF,qBAAa,SAAU,SAAQ,cAAoB;IAuC/B,KAAK,EAAE,SAAS;IAtC5B,SAAS,EAAE,MAAM,CAAQ;IAEhC,OAAO,CAAC,KAAK,CAAS;IACtB,IAAI,IAAI,IAAI,MAAM,CAAsB;IACxC,IAAI,IAAI,CAAC,CAAC,EAAE,MAAM,EAAoB;IAEtC,OAAO,CAAC,SAAS,CAAiB;IAClC,IAAI,QAAQ,IAAI,OAAO,CAA0B;IACjD,IAAI,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAwB;IAE/C,OAAO,CAAC,IAAI,CAAS;IACrB,IAAI,GAAG,IAAI,MAAM,CAAqB;IACtC,OAAO,KAAK,GAAG,QAA6B;IAE5C,OAAO,CAAC,MAAM,CAAS;IACvB,IAAI,KAAK,IAAI,MAAM,CAAuB;IAC1C,IAAI,KAAK,CAAC,CAAC,EAAE,MAAM,EAAoB;IAEvC,OAAO,CAAC,UAAU,CAAS;IAC3B,IAAI,SAAS,IACI,MAAM,CADmB;IAC1C,IAAI,SAAS,CAAC,CAAC,EAAE,MAAM,EAAyB;IAEhD,OAAO,CAAC,KAAK,CAAkB;IAC/B,IAAI,IAAI,IAAI,QAAQ,GAAC,MAAM,CAAsB;IACjD,IAAI,IAAI,CAAC,CAAC,EAAE,QAAQ,GAAC,MAAM,EAAoB;IAE/C,OAAO,CAAC,OAAO,CAAgB;IAC/B,IAAI,MAAM,IAAI,aAAa,CAAwB;IACnD,IAAI,MAAM,CAAC,CAAC,EAAE,aAAa,EAAsB;IAEjD,OAAO,CAAC,SAAS,CAAmB;IACpC,IAAI,QAAQ,IAAI,gBAAgB,CAA6D;IAC7F,IAAI,QAAQ,CAAC,CAAC,EAAE,gBAAgB,EAAwB;IAExD,SAAS,CAAC,WAAW,EAAE,gBAAgB,CAAC;IACxC,IAAI,UAAU,IACI,gBAAgB,CADU;IAC5C,IAAI,UAAU,CAAC,CAAC,EAAE,gBAAgB,EAA0B;gBAEzC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU;IAKvD,QAAQ,CAAC,MAAM,EAAE,UAAU;IAY3B,aAAa;CAYb"}
@@ -1,59 +0,0 @@
1
- /* eslint-disable no-prototype-builtins */
2
- import { tree } from '@omegagrid/core';
3
- export class NodeModel extends tree.TreeNodeMixin() {
4
- get type() { return this._type; }
5
- set type(v) { this._type = v; }
6
- get checkbox() { return this._checkbox; }
7
- set checkbox(v) { this._checkbox = v; }
8
- get key() { return this._key; }
9
- set key(v) { this._key = v; }
10
- get value() { return this._value; }
11
- set value(v) { this._value = v; }
12
- get htmlValue() { return this._htmlValue; }
13
- set htmlValue(v) { this._htmlValue = v; }
14
- get icon() { return this._icon; }
15
- set icon(v) { this._icon = v; }
16
- get folder() { return this._folder; }
17
- set folder(v) { this._folder = v; }
18
- get renderer() { return this._renderer || this.model.options.nodeRenderer; }
19
- set renderer(v) { this._renderer = v; }
20
- get properties() { return this._properties; }
21
- set properties(v) { this._properties = v; }
22
- constructor(model, source) {
23
- super();
24
- this.model = model;
25
- this.subLevels = null;
26
- this._checkbox = null;
27
- this.populate(source);
28
- }
29
- populate(source) {
30
- super.populate(source);
31
- this.key = source.hasOwnProperty('key') ? source.key : source.k;
32
- this.value = ((source.hasOwnProperty('value') ? source.value : source.v) ?? '').toString();
33
- this.type = source.t;
34
- this.icon = source.icon;
35
- this.folder = source.folder;
36
- this.checkbox = source.ch ?? null;
37
- this.renderer = source.renderer;
38
- this._properties = source.props;
39
- }
40
- getSourceData() {
41
- const data = super.getSourceData();
42
- if (this.key)
43
- data.k = this.key;
44
- if (this.value)
45
- data.v = this.value;
46
- if (this.type)
47
- data.t = this.type;
48
- if (this.icon)
49
- data.icon = this.icon;
50
- if (this.folder)
51
- data.folder = this.folder;
52
- if (this.checkbox != null)
53
- data.ch = this.checkbox;
54
- if (this.properties)
55
- data.props = this.properties;
56
- return data;
57
- }
58
- }
59
- //# sourceMappingURL=nodeModel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nodeModel.js","sourceRoot":"","sources":["../../src/model/nodeModel.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable no-prototype-builtins */\n\nimport { CustomProperties, IconSpec, tree } from '@omegagrid/core';\nimport { FolderOptions, TreeNodeRenderer } from '../types';\nimport { TreeModel } from './treeModel';\n\nexport type NodeSource = {\n\tk?: string,\n\tv?: string,\n\tkey?: string,\n\tvalue?: string,\n\tt?: string,\n\ts?: boolean,\n\tch?: boolean,\n\ticon?: IconSpec|string,\n\tfolder?: FolderOptions,\n\tprops?: CustomProperties,\n\trenderer?: TreeNodeRenderer\n} & tree.TreeNodeSource;\n\nexport class NodeModel extends tree.TreeNodeMixin() {\n\tpublic subLevels: number = null;\n\t\n\tprivate _type: string;\n\tget type(): string { return this._type }\n\tset type(v: string) { this._type = v }\n\t\n\tprivate _checkbox: boolean = null;\n\tget checkbox(): boolean { return this._checkbox }\n\tset checkbox(v: boolean) { this._checkbox = v }\n\t\n\tprivate _key: string;\n\tget key(): string { return this._key }\n\tprivate set key(v: string) { this._key = v }\n\t\n\tprivate _value: string;\n\tget value(): string { return this._value }\n\tset value(v: string) { this._value = v}\n\t\n\tprivate _htmlValue: string;\n\tget htmlValue() { return this._htmlValue }\n\tset htmlValue(v: string) { this._htmlValue = v }\n\n\tprivate _icon: IconSpec|string;\n\tget icon(): IconSpec|string { return this._icon }\n\tset icon(v: IconSpec|string) { this._icon = v }\n\n\tprivate _folder: FolderOptions;\n\tget folder(): FolderOptions { return this._folder }\n\tset folder(v: FolderOptions) { this._folder = v }\n\n\tprivate _renderer: TreeNodeRenderer;\n\tget renderer(): TreeNodeRenderer { return this._renderer || this.model.options.nodeRenderer }\n\tset renderer(v: TreeNodeRenderer) { this._renderer = v }\n\n\tprotected _properties: CustomProperties;\n\tget properties() { return this._properties }\n\tset properties(v: CustomProperties) { this._properties = v }\n\n\tconstructor(public model: TreeModel, source: NodeSource) {\n\t\tsuper();\n\t\tthis.populate(source);\n\t}\n\n\tpopulate(source: NodeSource) {\n\t\tsuper.populate(source);\n\t\tthis.key = source.hasOwnProperty('key') ? source.key : source.k;\n\t\tthis.value = ((source.hasOwnProperty('value') ? source.value : source.v) ?? '').toString();\n\t\tthis.type = source.t;\n\t\tthis.icon = source.icon;\n\t\tthis.folder = source.folder;\n\t\tthis.checkbox = source.ch ?? null;\n\t\tthis.renderer = source.renderer;\n\t\tthis._properties = source.props;\n\t}\n\n\tgetSourceData() {\n\t\tconst data = super.getSourceData() as NodeSource;\n\t\tif (this.key) data.k = this.key;\n\t\tif (this.value) data.v = this.value;\n\t\tif (this.type) data.t = this.type;\n\t\tif (this.icon) data.icon = this.icon;\n\t\tif (this.folder) data.folder = this.folder;\n\t\tif (this.checkbox != null) data.ch = this.checkbox;\n\t\tif (this.properties) data.props = this.properties;\n\t\treturn data;\n\t}\n\n}"]}
@@ -1,39 +0,0 @@
1
- import { NodeModel, NodeSource } from "./nodeModel";
2
- import { Options } from "../options";
3
- import { TreeModel } from ".";
4
- export declare enum NodeSelectionStatus {
5
- None = 0,
6
- Checked = 1,
7
- CheckedByParent = 2,
8
- Unchecked = 3
9
- }
10
- export type SerializedValue = [string, number?, (0 | 1)?, Partial<NodeSource>?];
11
- export declare function normalizeSerializedValues(data: (string | number | SerializedValue)[]): SerializedValue[];
12
- export type SelectedItemParams = {
13
- levels: Map<number, boolean>;
14
- value?: string;
15
- };
16
- export declare class TreeSelectionModel {
17
- options: Options;
18
- items: Map<string, SelectedItemParams>;
19
- model: TreeModel;
20
- get count(): number;
21
- constructor(options: Options, sourceData?: SerializedValue[]);
22
- ensureItem(key: string, value?: string): SelectedItemParams;
23
- setItems(items: SerializedValue[]): void;
24
- populate(sourceData: SerializedValue[]): void;
25
- getPropertySerializer(serializedProps?: (keyof NodeSource)[]): (nodeKey: string, params: SelectedItemParams) => Record<string, unknown>;
26
- serialize(serializedProps?: (keyof NodeSource)[]): SerializedValue[];
27
- clear(): void;
28
- validateChange(node: NodeModel, level: number, value: boolean): boolean;
29
- toggle(node: NodeModel, level: number): this;
30
- select(node: NodeModel, level: number, value?: boolean | null): this;
31
- deselect(node: NodeModel, level: number): this;
32
- clearItemSelection(node: NodeModel): void;
33
- getLevelSelection(node: NodeModel): Map<number, boolean>;
34
- getValue(node: NodeModel, level: number, defaultValue?: boolean): boolean;
35
- isSelectedByParent(node: NodeModel): boolean;
36
- getSelectionStatus(node: NodeModel): NodeSelectionStatus;
37
- toggleChildNodes(node: NodeModel, level: number): void;
38
- }
39
- //# sourceMappingURL=selectionModel.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"selectionModel.d.ts","sourceRoot":"","sources":["../../src/model/selectionModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC;AAK9B,oBAAY,mBAAmB;IAC9B,IAAI,IAAI;IACR,OAAO,IAAI;IACX,eAAe,IAAI;IACnB,SAAS,IAAI;CACb;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAE9E,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,CAAC,MAAM,GAAC,MAAM,GAAC,eAAe,CAAC,EAAE,qBAKhF;AAED,MAAM,MAAM,kBAAkB,GAAG;IAChC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAA;CACd,CAAC;AAEF,qBAAa,kBAAkB;IASX,OAAO,EAAE,OAAO;IAPnC,KAAK,kCAAyC;IAC9C,KAAK,EAAE,SAAS,CAAC;IAEjB,IAAI,KAAK,WAER;gBAEkB,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,eAAe,EAAE;IAMnE,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;IAOtC,QAAQ,CAAC,KAAK,EAAE,eAAe,EAAE;IAIjC,QAAQ,CAAC,UAAU,EAAE,eAAe,EAAE;IAWtC,qBAAqB,CAAC,eAAe,CAAC,EAAE,CAAC,MAAM,UAAU,CAAC,EAAE,IACnD,SAAS,MAAM,EAAE,QAAQ,kBAAkB;IAUpD,SAAS,CAAC,eAAe,CAAC,EAAE,CAAC,MAAM,UAAU,CAAC,EAAE;IAahD,KAAK;IAIL,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;IAS7D,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM;IAmCrC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,OAAO,GAAC,IAAW;IAgBjE,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM;IAUvC,kBAAkB,CAAC,IAAI,EAAE,SAAS;IAIlC,iBAAiB,CAAC,IAAI,EAAE,SAAS;IAMjC,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,GAAE,OAAc;IAOrE,kBAAkB,CAAC,IAAI,EAAE,SAAS;IAYlC,kBAAkB,CAAC,IAAI,EAAE,SAAS,GAAG,mBAAmB;IAaxD,gBAAgB,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM;CAgB/C"}
@@ -1,199 +0,0 @@
1
- import { SelectMode } from "../types";
2
- const getMapValue = (map, key, defaultValue = null) => map.has(key) ? map.get(key) : defaultValue;
3
- export var NodeSelectionStatus;
4
- (function (NodeSelectionStatus) {
5
- NodeSelectionStatus[NodeSelectionStatus["None"] = 0] = "None";
6
- NodeSelectionStatus[NodeSelectionStatus["Checked"] = 1] = "Checked";
7
- NodeSelectionStatus[NodeSelectionStatus["CheckedByParent"] = 2] = "CheckedByParent";
8
- NodeSelectionStatus[NodeSelectionStatus["Unchecked"] = 3] = "Unchecked";
9
- })(NodeSelectionStatus || (NodeSelectionStatus = {}));
10
- export function normalizeSerializedValues(data) {
11
- return data.map(item => {
12
- if (Array.isArray(item))
13
- return item;
14
- return [item.toString(), 0, 1];
15
- });
16
- }
17
- export class TreeSelectionModel {
18
- get count() {
19
- return this.items.size;
20
- }
21
- constructor(options, sourceData) {
22
- this.options = options;
23
- this.items = new Map();
24
- if (sourceData) {
25
- this.populate(sourceData);
26
- }
27
- }
28
- ensureItem(key, value) {
29
- if (!this.items.has(key))
30
- this.items.set(key, { levels: new Map() });
31
- const item = this.items.get(key);
32
- if (value != null)
33
- item.value = value;
34
- return item;
35
- }
36
- setItems(items) {
37
- this.populate(items ?? []);
38
- }
39
- populate(sourceData) {
40
- const oldItems = this.items;
41
- this.items = new Map();
42
- sourceData.forEach(sourceItem => {
43
- const value = sourceItem[3]?.v ?? sourceItem[3]?.value ?? oldItems.get(sourceItem[0])?.value;
44
- const item = this.ensureItem(sourceItem[0], value);
45
- item.levels.set(sourceItem[1] ?? 0, (sourceItem[2] ?? 1) == 1);
46
- if (sourceItem[3])
47
- Object.assign(item, sourceItem[3]);
48
- });
49
- }
50
- getPropertySerializer(serializedProps) {
51
- return (nodeKey, params) => serializedProps.reduce((acc, key) => {
52
- if (key == 'v' || key == 'value') {
53
- acc[key] = params.value ?? this.model?.nodeMap.get(nodeKey)?.value;
54
- }
55
- else {
56
- acc[key] = this.model?.nodeMap.get(nodeKey)?.value;
57
- }
58
- return acc;
59
- }, {});
60
- }
61
- serialize(serializedProps) {
62
- const items = [];
63
- const propertySerializer = serializedProps?.length ? this.getPropertySerializer(serializedProps) : null;
64
- this.items.forEach((item, key) => {
65
- const props = propertySerializer ? propertySerializer(key, item) : null;
66
- item.levels.forEach((value, level) => items.push(props
67
- ? [key, level, value ? 1 : 0, props]
68
- : [key, level, value ? 1 : 0]));
69
- });
70
- return items;
71
- }
72
- clear() {
73
- this.items.clear();
74
- }
75
- validateChange(node, level, value) {
76
- if (this.options.selectMode == SelectMode.Single) {
77
- if (value === false && this.items.size == 1) {
78
- return false;
79
- }
80
- }
81
- return true;
82
- }
83
- toggle(node, level) {
84
- let item = this.ensureItem(node.key, node.value);
85
- const currentValue = item.levels.has(level) ? item.levels.get(level) : null;
86
- if (!this.validateChange(node, level, item.levels.has(level) ? !item.levels.get(level) : true))
87
- return this;
88
- if (currentValue) {
89
- item.levels.delete(level);
90
- }
91
- else if (this.options.selectMode == SelectMode.MultipleLevels) {
92
- if (level == 0 && this.isSelectedByParent(node)) {
93
- if (currentValue === false) {
94
- item.levels.delete(0);
95
- }
96
- else {
97
- item.levels.set(0, false);
98
- }
99
- }
100
- else {
101
- item.levels.set(level, true);
102
- }
103
- }
104
- else {
105
- if (this.options.selectMode == SelectMode.Single) {
106
- this.clear();
107
- item = this.ensureItem(node.key, node.value);
108
- }
109
- if (level == 0) {
110
- item.levels.set(0, true);
111
- }
112
- else {
113
- this.toggleChildNodes(node, level);
114
- }
115
- }
116
- if (item.levels.size == 0)
117
- this.clearItemSelection(node);
118
- return this;
119
- }
120
- select(node, level, value = true) {
121
- const item = this.ensureItem(node.key, node.value);
122
- if (!this.validateChange(node, level, value === null ? (item.levels.has(level) ? item.levels.get(level) : false) : value))
123
- return this;
124
- if (value === true) {
125
- item.levels.set(level, true);
126
- }
127
- else if (value === false && this.options.selectMode == SelectMode.MultipleLevels) {
128
- item.levels.set(level, false);
129
- }
130
- else {
131
- item.levels.delete(level);
132
- }
133
- if (item.levels.size == 0)
134
- this.clearItemSelection(node);
135
- return this;
136
- }
137
- deselect(node, level) {
138
- if (!this.validateChange(node, level, false))
139
- return this;
140
- if (this.items.has(node.key)) {
141
- this.items.get(node.key).levels.delete(level);
142
- if (this.items.get(node.key).levels.size == 0)
143
- this.clearItemSelection(node);
144
- }
145
- return this;
146
- }
147
- clearItemSelection(node) {
148
- this.items.delete(node.key);
149
- }
150
- getLevelSelection(node) {
151
- return this.items.has(node.key)
152
- ? this.items.get(node.key).levels
153
- : new Map();
154
- }
155
- getValue(node, level, defaultValue = null) {
156
- if (this.items.has(node.key)) {
157
- return getMapValue(this.items.get(node.key).levels, level, defaultValue);
158
- }
159
- return defaultValue;
160
- }
161
- isSelectedByParent(node) {
162
- let parent = node.parent;
163
- let levelSpan = 0;
164
- while (parent) {
165
- if (this.getValue(parent, ++levelSpan, false)) {
166
- return true;
167
- }
168
- parent = parent.parent;
169
- }
170
- return false;
171
- }
172
- getSelectionStatus(node) {
173
- const value = this.getValue(node, 0, null);
174
- if (value === true) {
175
- return NodeSelectionStatus.Checked;
176
- }
177
- else if (value === false) {
178
- return NodeSelectionStatus.Unchecked;
179
- }
180
- else if (this.options.selectMode == SelectMode.MultipleLevels && this.isSelectedByParent(node)) {
181
- return NodeSelectionStatus.CheckedByParent;
182
- }
183
- return NodeSelectionStatus.None;
184
- }
185
- toggleChildNodes(node, level) {
186
- const parentLevel = node.level;
187
- let value = null;
188
- node.walk((n) => {
189
- if (n.level - parentLevel == level) {
190
- if (value === null) {
191
- value = this.getSelectionStatus(n) != NodeSelectionStatus.Checked;
192
- }
193
- this.select(n, 0, value ? true : null);
194
- return false;
195
- }
196
- });
197
- }
198
- }
199
- //# sourceMappingURL=selectionModel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"selectionModel.js","sourceRoot":"","sources":["../../src/model/selectionModel.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeModel, NodeSource } from \"./nodeModel\";\nimport { Options } from \"../options\";\nimport { SelectMode } from \"../types\";\nimport { TreeModel } from \".\";\n\nconst getMapValue = <TKey, TValue>(map: Map<TKey, TValue>, key: TKey, defaultValue: TValue = null) =>\n\tmap.has(key) ? map.get(key) : defaultValue;\n\nexport enum NodeSelectionStatus {\n\tNone = 0,\n\tChecked = 1,\n\tCheckedByParent = 2,\n\tUnchecked = 3\n}\n\nexport type SerializedValue = [string, number?, (0|1)?, Partial<NodeSource>?];\n\nexport function normalizeSerializedValues(data: (string|number|SerializedValue)[]) {\n\treturn data.map<SerializedValue>(item => {\n\t\tif (Array.isArray(item)) return item;\n\t\treturn [item.toString(), 0, 1];\n\t});\n}\n\nexport type SelectedItemParams = {\n\tlevels: Map<number, boolean>,\n\tvalue?: string\n};\n\nexport class TreeSelectionModel {\n\n\titems = new Map<string, SelectedItemParams>();\n\tmodel: TreeModel;\n\n\tget count() {\n\t\treturn this.items.size;\n\t}\n\n\tconstructor(public options: Options, sourceData?: SerializedValue[]) {\n\t\tif (sourceData) {\n\t\t\tthis.populate(sourceData);\n\t\t}\n\t}\n\n\tensureItem(key: string, value?: string) {\n\t\tif (!this.items.has(key)) this.items.set(key, {levels: new Map<number, boolean>()});\n\t\tconst item = this.items.get(key);\n\t\tif (value != null) item.value = value;\n\t\treturn item;\t\n\t}\n\n\tsetItems(items: SerializedValue[]) {\n\t\tthis.populate(items ?? []);\n\t}\n\n\tpopulate(sourceData: SerializedValue[]) {\n\t\tconst oldItems = this.items;\n\t\tthis.items = new Map();\n\t\tsourceData.forEach(sourceItem => {\n\t\t\tconst value = sourceItem[3]?.v ?? sourceItem[3]?.value ?? oldItems.get(sourceItem[0])?.value;\n\t\t\tconst item = this.ensureItem(sourceItem[0], value);\n\t\t\titem.levels.set(sourceItem[1] ?? 0, (sourceItem[2] ?? 1) == 1);\n\t\t\tif (sourceItem[3]) Object.assign(item, sourceItem[3]);\n\t\t});\n\t}\n\n\tgetPropertySerializer(serializedProps?: (keyof NodeSource)[]) {\n\t\treturn (nodeKey: string, params: SelectedItemParams) => serializedProps.reduce((acc, key) => {\n\t\t\tif (key == 'v' || key == 'value') {\n\t\t\t\tacc[key] = params.value ?? this.model?.nodeMap.get(nodeKey)?.value;\n\t\t\t} else {\n\t\t\t\tacc[key] = this.model?.nodeMap.get(nodeKey)?.value;\n\t\t\t}\n\t\t\treturn acc;\n\t\t}, {} as Record<string, unknown>);\n\t}\n\n\tserialize(serializedProps?: (keyof NodeSource)[]) {\n\t\tconst items: SerializedValue[] = [];\n\t\tconst propertySerializer = serializedProps?.length ? this.getPropertySerializer(serializedProps) : null;\n\t\tthis.items.forEach((item, key) => {\n\t\t\tconst props = propertySerializer ? propertySerializer(key, item) : null;\n\t\t\titem.levels.forEach((value, level) => items.push(props \n\t\t\t\t? [key, level, value ? 1 : 0, props] \n\t\t\t\t: [key, level, value ? 1 : 0]\n\t\t\t));\n\t\t});\n\t\treturn items;\n\t}\n\n\tclear() {\n\t\tthis.items.clear();\n\t}\n\n\tvalidateChange(node: NodeModel, level: number, value: boolean) {\n\t\tif (this.options.selectMode == SelectMode.Single) {\n\t\t\tif (value === false && this.items.size == 1) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\ttoggle(node: NodeModel, level: number) {\n\t\tlet item = this.ensureItem(node.key, node.value);\n\t\tconst currentValue = item.levels.has(level) ? item.levels.get(level) : null;\n\t\t\n\t\tif (!this.validateChange(node, level, item.levels.has(level) ? !item.levels.get(level) : true)) return this;\n\n\t\tif (currentValue) {\n\t\t\titem.levels.delete(level);\n\t\t} else if (this.options.selectMode == SelectMode.MultipleLevels) {\n\t\t\tif (level == 0 && this.isSelectedByParent(node)) {\n\t\t\t\tif (currentValue === false) {\n\t\t\t\t\titem.levels.delete(0);\n\t\t\t\t} else {\n\t\t\t\t\titem.levels.set(0, false);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\titem.levels.set(level, true);\n\t\t\t}\n\t\t} else {\n\t\t\tif (this.options.selectMode == SelectMode.Single) {\n\t\t\t\tthis.clear();\n\t\t\t\titem = this.ensureItem(node.key, node.value);\n\t\t\t}\n\n\t\t\tif (level == 0) {\n\t\t\t\titem.levels.set(0, true);\n\t\t\t} else {\n\t\t\t\tthis.toggleChildNodes(node, level);\n\t\t\t}\n\t\t}\n\n\t\tif (item.levels.size == 0) this.clearItemSelection(node);\n\t\treturn this;\n\t}\n\t\n\tselect(node: NodeModel, level: number, value: boolean|null = true) {\n\t\tconst item = this.ensureItem(node.key, node.value);\n\n\t\tif (!this.validateChange(node, level, value === null ? (item.levels.has(level) ? item.levels.get(level) : false) : value)) return this;\n\n\t\tif (value === true) {\n\t\t\titem.levels.set(level, true);\n\t\t} else if (value === false && this.options.selectMode == SelectMode.MultipleLevels) {\n\t\t\titem.levels.set(level, false);\n\t\t} else {\n\t\t\titem.levels.delete(level);\n\t\t}\n\t\tif (item.levels.size == 0) this.clearItemSelection(node);\n\t\treturn this;\n\t}\n\n\tdeselect(node: NodeModel, level: number) {\n\t\tif (!this.validateChange(node, level, false)) return this;\n\n\t\tif (this.items.has(node.key)) {\n\t\t\tthis.items.get(node.key).levels.delete(level);\n\t\t\tif (this.items.get(node.key).levels.size == 0) this.clearItemSelection(node);\n\t\t}\n\t\treturn this;\n\t}\n\t\n\tclearItemSelection(node: NodeModel) {\n\t\tthis.items.delete(node.key);\n\t}\n\n\tgetLevelSelection(node: NodeModel) {\n\t\treturn this.items.has(node.key)\n\t\t\t? this.items.get(node.key).levels\n\t\t\t: new Map<number, boolean>()\n\t}\n\n\tgetValue(node: NodeModel, level: number, defaultValue: boolean = null) {\n\t\tif (this.items.has(node.key)) {\n\t\t\treturn getMapValue(this.items.get(node.key).levels, level, defaultValue);\n\t\t}\n\t\treturn defaultValue;\n\t}\n\n\tisSelectedByParent(node: NodeModel) {\n\t\tlet parent = node.parent as NodeModel;\n\t\tlet levelSpan = 0;\n\t\twhile (parent) {\n\t\t\tif (this.getValue(parent, ++levelSpan, false)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tparent = parent.parent as NodeModel;\n\t\t}\n\t\treturn false;\n\t}\n\n\tgetSelectionStatus(node: NodeModel): NodeSelectionStatus {\n\t\tconst value = this.getValue(node, 0, null);\n\n\t\tif (value === true) {\n\t\t\treturn NodeSelectionStatus.Checked;\n\t\t} else if (value === false) {\n\t\t\treturn NodeSelectionStatus.Unchecked;\n\t\t} else if (this.options.selectMode == SelectMode.MultipleLevels && this.isSelectedByParent(node)) {\n\t\t\treturn NodeSelectionStatus.CheckedByParent;\n\t\t}\n\t\treturn NodeSelectionStatus.None;\n\t}\n\n\ttoggleChildNodes(node: NodeModel, level: number) {\n\t\tconst parentLevel = node.level;\n\t\tlet value: boolean = null;\n\n\t\tnode.walk((n: NodeModel) => {\n\t\t\tif (n.level - parentLevel == level) {\n\t\t\t\tif (value === null) {\n\t\t\t\t\tvalue = this.getSelectionStatus(n) != NodeSelectionStatus.Checked;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.select(n, 0, value ? true : null)\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t}\n\n}"]}
@@ -1,10 +0,0 @@
1
- import { Options } from '../options';
2
- import { TreeSource } from './treeModel';
3
- import { ComponentAdapter } from '@omegagrid/core';
4
- import { Tree } from '../ui';
5
- import { TreeAdapterParams } from '../types';
6
- export declare abstract class TreeAdapter extends ComponentAdapter<Tree> {
7
- abstract getTree(params?: TreeAdapterParams): TreeSource | Promise<TreeSource>;
8
- getOptions(): Partial<Options> | Promise<Partial<Options>>;
9
- }
10
- //# sourceMappingURL=treeAdapter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"treeAdapter.d.ts","sourceRoot":"","sources":["../../src/model/treeAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,8BAAsB,WAAY,SAAQ,gBAAgB,CAAC,IAAI,CAAC;IAE/D,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,UAAU,GAAC,OAAO,CAAC,UAAU,CAAC;IAM5E,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,GAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;CAIxD"}
@@ -1,10 +0,0 @@
1
- import { ComponentAdapter } from '@omegagrid/core';
2
- export class TreeAdapter extends ComponentAdapter {
3
- // getItems(_keys: string[]): NodeSource[]|Promise<NodeSource[]> {
4
- // return [];
5
- // }
6
- getOptions() {
7
- return null;
8
- }
9
- }
10
- //# sourceMappingURL=treeAdapter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"treeAdapter.js","sourceRoot":"","sources":["../../src/model/treeAdapter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAInD,MAAM,OAAgB,WAAY,SAAQ,gBAAsB;IAI/D,kEAAkE;IAClE,cAAc;IACd,IAAI;IAEJ,UAAU;QACT,OAAO,IAAI,CAAC;IACb,CAAC;CAED","sourcesContent":["import { Options } from '../options';\nimport { TreeSource } from './treeModel';\nimport { ComponentAdapter } from '@omegagrid/core';\nimport { Tree } from '../ui';\nimport { TreeAdapterParams } from '../types';\n\nexport abstract class TreeAdapter extends ComponentAdapter<Tree> {\n\n\tabstract getTree(params?: TreeAdapterParams): TreeSource|Promise<TreeSource>;\n\n\t// getItems(_keys: string[]): NodeSource[]|Promise<NodeSource[]> {\n\t// \treturn [];\n\t// }\n\n\tgetOptions(): Partial<Options>|Promise<Partial<Options>> {\n\t\treturn null;\n\t}\n\n}"]}
@@ -1,27 +0,0 @@
1
- import { NodeModel, NodeSource } from "./nodeModel";
2
- import { Options } from "../options";
3
- import { NodePlaceholder } from "../types";
4
- export type TreeSource = NodeSource[];
5
- export declare class TreeModel {
6
- options: Options;
7
- readonly nodeMap: Map<string, NodeModel>;
8
- private _root;
9
- private _nodes;
10
- private _visibleNodes;
11
- private _maxLevel;
12
- get maxLevel(): number;
13
- get root(): NodeModel;
14
- get nodes(): NodeModel[];
15
- get visibleNodes(): (NodeModel | NodePlaceholder)[];
16
- getNodeByViewIndex(index: number): NodeModel | NodePlaceholder;
17
- constructor(source: TreeSource, options: Options);
18
- populate(source: TreeSource): void;
19
- insertNodes(index: number, nodes: number | NodeModel[]): NodeModel[];
20
- deleteNodes(index: number, count: number): NodeModel[];
21
- calculateNodeLevels(node: NodeModel): void;
22
- indexNodes(calculateSubLevels?: boolean): void;
23
- indexNodesByTree(calculateSubLevels?: boolean): void;
24
- indexVisibleNodes(): void;
25
- getSourceData(): NodeSource[];
26
- }
27
- //# sourceMappingURL=treeModel.d.ts.map
@@ -1 +0,0 @@
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;IAe3C,iBAAiB;IAoBjB,aAAa;CAIb"}
@@ -1,97 +0,0 @@
1
- import { NodeModel } from "./nodeModel";
2
- import { tree } from '@omegagrid/core';
3
- export class TreeModel {
4
- get maxLevel() { return this._maxLevel; }
5
- get root() { return this._root; }
6
- get nodes() { return this._nodes; }
7
- get visibleNodes() { return this._visibleNodes; }
8
- getNodeByViewIndex(index) { return this.visibleNodes[index]; }
9
- constructor(source, options) {
10
- this.options = options;
11
- this.nodeMap = new Map();
12
- this._maxLevel = -1;
13
- this.populate(source);
14
- }
15
- populate(source) {
16
- this._root = new NodeModel(this, { k: null, v: null, i: -1 });
17
- this._root.level = -1;
18
- this._nodes = source.map((nodeSource, i) => new NodeModel(this, { ...nodeSource, i: i }));
19
- this._maxLevel = tree.buildTree(this._nodes, this._root);
20
- this.indexNodes(true);
21
- this.indexVisibleNodes();
22
- }
23
- insertNodes(index, nodes) {
24
- const parent = this.nodes[index].parent;
25
- const count = isNaN(nodes) ? nodes.length : nodes;
26
- const newNodes = isNaN(nodes) ? nodes : (new Array(count)).fill(null).map(() => new NodeModel(this, {}));
27
- this.nodes.splice(index, 0, ...newNodes);
28
- if (this.maxLevel > 0)
29
- parent.insertChildren(newNodes, index - (parent.index || -1) - 1);
30
- this.indexNodes();
31
- this.indexVisibleNodes();
32
- return newNodes;
33
- }
34
- deleteNodes(index, count) {
35
- const parent = this.nodes[index].parent;
36
- const deletedNodes = this.nodes.splice(index, count);
37
- parent?.deleteChildren(deletedNodes);
38
- this.indexNodes(true);
39
- this.indexVisibleNodes();
40
- return deletedNodes;
41
- }
42
- calculateNodeLevels(node) {
43
- let parent = node.parent;
44
- while (parent) {
45
- parent.subLevels = Math.max(parent.subLevels, node.level - parent.level + (node.hasChildren ? 1 : 0));
46
- parent = parent.parent;
47
- }
48
- }
49
- indexNodes(calculateSubLevels = false) {
50
- this.nodeMap.clear();
51
- this._nodes.forEach((node, i) => {
52
- node.index = i;
53
- this.nodeMap.set(node.key, node);
54
- if (calculateSubLevels)
55
- this.calculateNodeLevels(node);
56
- });
57
- }
58
- indexNodesByTree(calculateSubLevels = false) {
59
- this.nodeMap.clear();
60
- this._nodes = [];
61
- let n = 0;
62
- this.root.walk((node) => {
63
- node.index = n++;
64
- node.visibleIndex = null;
65
- this._nodes.push(node);
66
- this.nodeMap.set(node.key, node);
67
- if (calculateSubLevels)
68
- this.calculateNodeLevels(node);
69
- });
70
- this._maxLevel = this.root.subLevels - 1;
71
- this.indexVisibleNodes();
72
- }
73
- indexVisibleNodes() {
74
- this._visibleNodes = [];
75
- // perf optimization by distinguishing between paged and non-paged trees
76
- const pageSize = this.options?.pageSize;
77
- if (pageSize > 0) {
78
- this.root.walkVisible((node) => {
79
- node.visibleIndex = this._visibleNodes.length;
80
- this._visibleNodes.push(node);
81
- if (node.parent && node.parent.lastChild === node && node.parent.isPartialyLoaded) {
82
- this._visibleNodes.push({ placeholder: true, parent: node.parent });
83
- }
84
- });
85
- }
86
- else {
87
- this.root.walkVisible((node) => {
88
- node.visibleIndex = this._visibleNodes.length;
89
- this._visibleNodes.push(node);
90
- });
91
- }
92
- }
93
- getSourceData() {
94
- return this.nodes.map(node => node.getSourceData());
95
- }
96
- }
97
- //# sourceMappingURL=treeModel.js.map
@@ -1 +0,0 @@
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._maxLevel = this.root.subLevels - 1;\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}"]}