@coolon/angular-ui-powerups 12.0.7 → 12.1.0

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 (50) hide show
  1. package/bundles/coolon-angular-ui-powerups.umd.js +300 -300
  2. package/bundles/coolon-angular-ui-powerups.umd.js.map +1 -1
  3. package/coolon-angular-ui-powerups.metadata.json +1 -1
  4. package/esm2015/lib/components/exports.js +1 -1
  5. package/esm2015/lib/components/exports.js.map +1 -1
  6. package/esm2015/lib/components/exports.metadata.json +1 -1
  7. package/esm2015/lib/components/tables/abstract-table-model.js +11 -6
  8. package/esm2015/lib/components/tables/abstract-table-model.js.map +1 -1
  9. package/esm2015/lib/components/tables/abstract-table-model.metadata.json +1 -1
  10. package/esm2015/lib/components/tables/abstract-table.component.js.map +1 -1
  11. package/esm2015/lib/components/tables/table/table-model.js +18 -12
  12. package/esm2015/lib/components/tables/table/table-model.js.map +1 -1
  13. package/esm2015/lib/components/tables/table/table-model.metadata.json +1 -1
  14. package/esm2015/lib/components/tables/tree-table/decorated-tree-node.js +151 -146
  15. package/esm2015/lib/components/tables/tree-table/decorated-tree-node.js.map +1 -1
  16. package/esm2015/lib/components/tables/tree-table/decorated-tree-node.metadata.json +1 -1
  17. package/esm2015/lib/components/tables/tree-table/flattened-tree-list-model.js +29 -0
  18. package/esm2015/lib/components/tables/tree-table/flattened-tree-list-model.js.map +1 -0
  19. package/esm2015/lib/components/tables/tree-table/flattened-tree-list-model.metadata.json +1 -0
  20. package/esm2015/lib/components/tables/tree-table/tree-expansion-model.js +9 -8
  21. package/esm2015/lib/components/tables/tree-table/tree-expansion-model.js.map +1 -1
  22. package/esm2015/lib/components/tables/tree-table/tree-inheritance-icon/tree-inheritance-icon.component.js.map +1 -1
  23. package/esm2015/lib/components/tables/tree-table/tree-inheritance-icon/tree-inheritance-icon.component.metadata.json +1 -1
  24. package/esm2015/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.js +9 -9
  25. package/esm2015/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.js.map +1 -1
  26. package/esm2015/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.metadata.json +1 -1
  27. package/esm2015/lib/components/tables/tree-table/tree-label-column-model.js.map +1 -1
  28. package/esm2015/lib/components/tables/tree-table/tree-label-column-model.metadata.json +1 -1
  29. package/esm2015/lib/components/tables/tree-table/tree-table-component.js.map +1 -1
  30. package/esm2015/lib/components/tables/tree-table/tree-table-component.metadata.json +1 -1
  31. package/esm2015/lib/components/tables/tree-table/tree-table-model.js +9 -20
  32. package/esm2015/lib/components/tables/tree-table/tree-table-model.js.map +1 -1
  33. package/esm2015/lib/components/tables/tree-table/tree-table-model.metadata.json +1 -1
  34. package/fesm2015/coolon-angular-ui-powerups.js +240 -228
  35. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  36. package/lib/components/exports.d.ts +1 -1
  37. package/lib/components/tables/abstract-table-model.d.ts +6 -5
  38. package/lib/components/tables/table/table-model.d.ts +12 -7
  39. package/lib/components/tables/tree-table/decorated-tree-node.d.ts +26 -40
  40. package/lib/components/tables/tree-table/{tree-to-list-model.d.ts → flattened-tree-list-model.d.ts} +4 -4
  41. package/lib/components/tables/tree-table/tree-expansion-model.d.ts +10 -11
  42. package/lib/components/tables/tree-table/tree-inheritance-icon/tree-inheritance-icon.component.d.ts +1 -2
  43. package/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.d.ts +5 -5
  44. package/lib/components/tables/tree-table/tree-label-column-model.d.ts +4 -6
  45. package/lib/components/tables/tree-table/tree-table-component.d.ts +2 -3
  46. package/lib/components/tables/tree-table/tree-table-model.d.ts +9 -8
  47. package/package.json +1 -1
  48. package/esm2015/lib/components/tables/tree-table/tree-to-list-model.js +0 -25
  49. package/esm2015/lib/components/tables/tree-table/tree-to-list-model.js.map +0 -1
  50. package/esm2015/lib/components/tables/tree-table/tree-to-list-model.metadata.json +0 -1
@@ -1,166 +1,171 @@
1
+ import { __decorate, __metadata } from "tslib";
1
2
  import { assert } from '@coolon/pectin';
2
- import { Mixin } from '@coolon/typescript-utilities';
3
- import * as _ from 'lodash';
4
- import { SelfAndDescendantsVisitor } from './visitable.class';
5
- class DecoratedTreeNodeMixin {
6
- constructor(parent, node) {
7
- this.parent = parent;
8
- this.node = node;
9
- }
10
- get decoratedSelf() {
11
- return this.memoize('decoratedSelf', () => {
12
- return this.parent ? this.parent.children.find(child => child.node === this.node) : DecoratedTreeNode.createRoot(this.node);
13
- });
14
- }
15
- get children() {
16
- return this.memoize('children', () => {
17
- return this.node.children ? this.node.children.map(child => {
18
- return Mixin.createProxy(child, new DecoratedTreeNodeMixin(this.decoratedSelf, child));
19
- }) : [];
20
- });
21
- }
22
- descendants() {
23
- return this.memoize('descendants', () => {
24
- const result = [];
25
- this.visitDescendants(child => result.push(child));
26
- return result;
27
- });
28
- }
29
- selfAndDescendants() {
30
- return this.memoize('selfAndDescendants', () => {
31
- const result = [];
32
- this.visitSelfAndDescendants(child => result.push(child));
33
- return result;
34
- });
35
- }
36
- siblingsBefore() {
37
- return this.memoize('siblingsBefore', () => {
3
+ import { Memoize } from '@typescript-plus/fast-memoize-decorator/dist/src';
4
+ export const treeNodeDecorator = Symbol('TreeDecorator');
5
+ export var DecoratedTreeNode;
6
+ (function (DecoratedTreeNode) {
7
+ function decorateRoot(node, extractChildren) {
8
+ return new Decorator(undefined, node, extractChildren).decoratedNode;
9
+ }
10
+ DecoratedTreeNode.decorateRoot = decorateRoot;
11
+ function getDecorator(node) {
12
+ assert.notNil(node[treeNodeDecorator]);
13
+ return node[treeNodeDecorator];
14
+ }
15
+ DecoratedTreeNode.getDecorator = getDecorator;
16
+ class Decorator {
17
+ constructor(parent, node, extractChildren) {
18
+ this.parent = parent;
19
+ this.node = node;
20
+ this.extractChildren = extractChildren;
21
+ node[treeNodeDecorator] = this; // inject our decorator.
22
+ }
23
+ get children() {
24
+ return this.extractChildren(this.node)
25
+ .map(child => { var _a; return (_a = child[treeNodeDecorator]) !== null && _a !== void 0 ? _a : new Decorator(this.decoratedNode, child, this.extractChildren); })
26
+ .map(d => d.decoratedNode);
27
+ }
28
+ get decoratedNode() {
29
+ return this.node;
30
+ }
31
+ siblingsBefore() {
38
32
  if (this.parent) {
39
- return this.parent.children.slice(0, this.myIndex());
33
+ return this.parent[treeNodeDecorator].children.slice(0, this.myIndex());
40
34
  }
41
35
  else {
42
36
  return [];
43
37
  }
44
- });
45
- }
46
- siblingsAfter() {
47
- return this.memoize('siblingsAfter', () => {
38
+ }
39
+ siblingsAfter() {
48
40
  if (this.parent) {
49
- return this.parent.children.slice(1 + this.myIndex());
41
+ return this.parent[treeNodeDecorator].children.slice(1 + this.myIndex());
50
42
  }
51
43
  else {
52
44
  return [];
53
45
  }
54
- });
55
- }
56
- siblings() {
57
- return this.memoize('siblings', () => [].concat(this.siblingsBefore(), this.siblingsAfter()));
58
- }
59
- isFirstChild() {
60
- return this.memoize('isFirstChild', () => this.parent ? this.myIndex() === 0 : false);
61
- }
62
- myIndex() {
63
- return this.memoize('myIndex', () => {
64
- const myIndex = this.parent.children.findIndex(child => child.node === this.node);
46
+ }
47
+ siblings() {
48
+ return [].concat(this.siblingsBefore(), this.siblingsAfter());
49
+ }
50
+ isFirstChild() {
51
+ return this.parent ? this.myIndex() === 0 : false;
52
+ }
53
+ myIndex() {
54
+ const myIndex = this.parent[treeNodeDecorator].children.findIndex(child => this.node === child);
65
55
  assert.isTruthy(myIndex >= 0, 'illegal state, expected index to be >= 0');
66
56
  return myIndex;
67
- });
68
- }
69
- isLastChild() {
70
- return this.memoize('isLastChild', () => {
71
- return this.parent ? this.myIndex() === this.parent.children.length - 1 : false;
72
- });
73
- }
74
- hasSiblings() {
75
- return this.parent ? this.node.children.length > 1 : false;
76
- }
77
- find(predicate) {
78
- return _.find(this.descendants(), predicate);
79
- }
80
- select(predicate) {
81
- return _.filter(this.descendants(), predicate);
82
- }
83
- flattenInto(array) {
84
- this.visitSelfAndDescendants(child => array.push(child));
85
- return array;
86
- }
87
- ancestors() {
88
- return this.memoize('ancestors', () => {
89
- return this.parent ? this.parent.ancestors().concat([this.parent]) : [];
90
- });
91
- }
92
- ancestorsAndSelf() {
93
- return this.memoize('ancestorsAndSelf', () => {
94
- return this.ancestors().concat([(this.decoratedSelf)]);
95
- });
96
- }
97
- pathToParent(parent) {
98
- if (this.node === parent.node) {
99
- return [];
100
57
  }
101
- else if (this.parent) {
102
- const pathToParent = this.parent.pathToParent(parent);
103
- return pathToParent.concat([this.parent]);
58
+ isLastChild() {
59
+ return this.parent ? this.myIndex() === this.parent[treeNodeDecorator].children.length - 1 : false;
104
60
  }
105
- else {
106
- throw new Error('parent is not an ancestor');
61
+ hasSiblings() {
62
+ return this.parent ? this.parent[treeNodeDecorator].children.length > 1 : false;
107
63
  }
108
- }
109
- pathToParentAndSelf(parent) {
110
- return this.pathToParent(parent).concat([this.decoratedSelf]);
111
- }
112
- isRoot() {
113
- return !this.parent;
114
- }
115
- get depth() {
116
- return this.isRoot() ? 0 : this.parent.depth + 1;
117
- }
118
- isLeaf() {
119
- return !this.isRoot() && this.node.children.length < 1;
120
- }
121
- hasChildren() {
122
- return this.node.children && this.node.children.length > 0;
123
- }
124
- depthFromParent(parent) {
125
- return this.pathToParent(parent).length;
126
- }
127
- treeDepth() {
128
- return this.memoize('treeDepth', () => {
129
- return 1 + this.descendants().map(child => child.depthFromParent(this)).reduce((prev, current) => Math.max(prev, current));
130
- });
131
- }
132
- flatten() {
133
- return this.memoize('flatten', () => {
134
- return this.flattenInto([]);
135
- });
136
- }
137
- visit(visitor) {
138
- visitor.visit(this);
139
- return visitor;
140
- }
141
- visitChildren(visitor) {
142
- _.each(this.children, child => child.visit(visitor));
143
- return visitor;
144
- }
145
- visitSelfAndDescendants(callback) {
146
- this.visit(new SelfAndDescendantsVisitor.Each(callback));
147
- }
148
- visitDescendants(callback) {
149
- this.visitChildren(new SelfAndDescendantsVisitor.Each(callback));
150
- }
151
- memoize(property, factory) {
152
- const key = `__${property}`;
153
- if (_.isNil(this[key])) {
154
- this[key] = factory();
64
+ // find(predicate: Predicate<T>): T {
65
+ // return _.find(this.descendants(), predicate);
66
+ // }
67
+ //
68
+ // select(predicate: Predicate<T>): T[] {
69
+ // return _.filter(this.descendants(), predicate);
70
+ // }
71
+ //
72
+ // flattenInto(array: T[]): T[] {
73
+ // this.visitSelfAndDescendants(child => array.push(child));
74
+ // return array;
75
+ // }
76
+ ancestors() {
77
+ return this.parent ? this.parent[treeNodeDecorator].ancestors().concat([this.parent]) : [];
78
+ }
79
+ // ancestorsAndSelf(): T[] {
80
+ // return this.memoize('ancestorsAndSelf', () => {
81
+ // return this.ancestors().concat([(this.decoratedSelf)]);
82
+ // });
83
+ // }
84
+ // pathToParent(parent: T): T[] {
85
+ // if (this.node === parent.node) {
86
+ // return [];
87
+ // } else if (this.parent) {
88
+ // const pathToParent = this.parent.pathToParent(parent);
89
+ // return pathToParent.concat([this.parent]);
90
+ // } else {
91
+ // throw new Error('parent is not an ancestor');
92
+ // }
93
+ // }
94
+ //
95
+ // pathToParentAndSelf(parent): T[] {
96
+ // return this.pathToParent(parent).concat([this.decoratedSelf]);
97
+ // }
98
+ isRoot() {
99
+ return !this.parent;
100
+ }
101
+ get depth() {
102
+ return this.isRoot() ? 0 : this.parent[treeNodeDecorator].depth + 1;
103
+ }
104
+ isLeaf() {
105
+ return !this.isRoot() && this.children.length < 1;
106
+ }
107
+ hasChildren() {
108
+ return this.children.length > 0;
155
109
  }
156
- return this[key];
157
- }
158
- }
159
- export var DecoratedTreeNode;
160
- (function (DecoratedTreeNode) {
161
- function createRoot(node) {
162
- return Mixin.createProxy(node, new DecoratedTreeNodeMixin(undefined, node));
163
110
  }
164
- DecoratedTreeNode.createRoot = createRoot;
111
+ __decorate([
112
+ Memoize(),
113
+ __metadata("design:type", Array),
114
+ __metadata("design:paramtypes", [])
115
+ ], Decorator.prototype, "children", null);
116
+ __decorate([
117
+ Memoize(),
118
+ __metadata("design:type", Function),
119
+ __metadata("design:paramtypes", []),
120
+ __metadata("design:returntype", Array)
121
+ ], Decorator.prototype, "siblingsBefore", null);
122
+ __decorate([
123
+ Memoize(),
124
+ __metadata("design:type", Function),
125
+ __metadata("design:paramtypes", []),
126
+ __metadata("design:returntype", Array)
127
+ ], Decorator.prototype, "siblingsAfter", null);
128
+ __decorate([
129
+ Memoize(),
130
+ __metadata("design:type", Function),
131
+ __metadata("design:paramtypes", []),
132
+ __metadata("design:returntype", Array)
133
+ ], Decorator.prototype, "siblings", null);
134
+ __decorate([
135
+ Memoize(),
136
+ __metadata("design:type", Function),
137
+ __metadata("design:paramtypes", []),
138
+ __metadata("design:returntype", Boolean)
139
+ ], Decorator.prototype, "isFirstChild", null);
140
+ __decorate([
141
+ Memoize(),
142
+ __metadata("design:type", Function),
143
+ __metadata("design:paramtypes", []),
144
+ __metadata("design:returntype", void 0)
145
+ ], Decorator.prototype, "myIndex", null);
146
+ __decorate([
147
+ Memoize(),
148
+ __metadata("design:type", Function),
149
+ __metadata("design:paramtypes", []),
150
+ __metadata("design:returntype", Boolean)
151
+ ], Decorator.prototype, "isLastChild", null);
152
+ __decorate([
153
+ Memoize(),
154
+ __metadata("design:type", Function),
155
+ __metadata("design:paramtypes", []),
156
+ __metadata("design:returntype", Boolean)
157
+ ], Decorator.prototype, "hasSiblings", null);
158
+ __decorate([
159
+ Memoize(),
160
+ __metadata("design:type", Function),
161
+ __metadata("design:paramtypes", []),
162
+ __metadata("design:returntype", Array)
163
+ ], Decorator.prototype, "ancestors", null);
164
+ __decorate([
165
+ Memoize(),
166
+ __metadata("design:type", Number),
167
+ __metadata("design:paramtypes", [])
168
+ ], Decorator.prototype, "depth", null);
169
+ DecoratedTreeNode.Decorator = Decorator;
165
170
  })(DecoratedTreeNode || (DecoratedTreeNode = {}));
166
171
  //# sourceMappingURL=decorated-tree-node.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"decorated-tree-node.js","sourceRoot":"","sources":["../../../../../../../../libs/angular-ui-powerups/src/lib/components/tables/tree-table/decorated-tree-node.ts"],"names":[],"mappings":"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","sourcesContent":["import { assert, Predicate } from '@coolon/pectin';\nimport { Mixin } from '@coolon/typescript-utilities';\nimport * as _ from 'lodash';\nimport { TreeNode } from './tree-node';\nimport { SelfAndDescendantsVisitor, Visitor } from './visitable.class';\n\nclass DecoratedTreeNodeMixin<T extends TreeNode<T>> {\n\n constructor(readonly parent: DecoratedTreeNode<T> | undefined, readonly node: T) {\n }\n\n get decoratedSelf(): DecoratedTreeNode<T> {\n return this.memoize('decoratedSelf', () => {\n return this.parent ? this.parent.children.find(child => child.node === this.node) : DecoratedTreeNode.createRoot(this.node);\n });\n }\n\n get children(): DecoratedTreeNode<T>[] {\n return this.memoize('children', () => {\n return this.node.children ? this.node.children.map(child => {\n return Mixin.createProxy(child, new DecoratedTreeNodeMixin<T>(this.decoratedSelf, child));\n }) : [];\n });\n }\n\n descendants(): DecoratedTreeNode<T>[] {\n return this.memoize('descendants', () => {\n const result = [];\n this.visitDescendants(child => result.push(child));\n return result;\n });\n }\n\n selfAndDescendants(): DecoratedTreeNode<T>[] {\n return this.memoize('selfAndDescendants', () => {\n const result = [];\n this.visitSelfAndDescendants(child => result.push(child));\n return result;\n });\n }\n\n siblingsBefore(): DecoratedTreeNode<T>[] {\n return this.memoize('siblingsBefore', () => {\n if (this.parent) {\n return this.parent.children.slice(0, this.myIndex());\n } else {\n return [];\n }\n });\n }\n\n siblingsAfter(): DecoratedTreeNode<T>[] {\n return this.memoize('siblingsAfter', () => {\n if (this.parent) {\n return this.parent.children.slice(1 + this.myIndex());\n } else {\n return [];\n }\n });\n }\n\n siblings(): DecoratedTreeNode<T>[] {\n return this.memoize('siblings', () => [].concat(this.siblingsBefore(), this.siblingsAfter()));\n }\n\n isFirstChild(): boolean {\n return this.memoize('isFirstChild', () => this.parent ? this.myIndex() === 0 : false);\n }\n\n protected myIndex() {\n return this.memoize('myIndex', () => {\n const myIndex = this.parent.children.findIndex(child => child.node === this.node);\n assert.isTruthy(myIndex >= 0, 'illegal state, expected index to be >= 0');\n return myIndex;\n });\n }\n\n isLastChild(): boolean {\n return this.memoize('isLastChild', () => {\n return this.parent ? this.myIndex() === this.parent.children.length - 1 : false;\n });\n }\n\n hasSiblings(): boolean {\n return this.parent ? this.node.children.length > 1 : false;\n }\n\n find(predicate: Predicate<DecoratedTreeNode<T>>): DecoratedTreeNode<T> {\n return _.find(this.descendants(), predicate);\n }\n\n select(predicate: Predicate<DecoratedTreeNode<T>>): DecoratedTreeNode<T>[] {\n return _.filter(this.descendants(), predicate);\n }\n\n flattenInto(array: DecoratedTreeNode<T>[]): DecoratedTreeNode<T>[] {\n this.visitSelfAndDescendants(child => array.push(child));\n return array;\n }\n\n ancestors(): DecoratedTreeNode<T>[] {\n return this.memoize('ancestors', () => {\n return this.parent ? this.parent.ancestors().concat([this.parent]) : [];\n });\n }\n\n ancestorsAndSelf(): DecoratedTreeNode<T>[] {\n return this.memoize('ancestorsAndSelf', () => {\n return this.ancestors().concat([(this.decoratedSelf)]);\n });\n }\n\n pathToParent(parent: DecoratedTreeNode<T>): DecoratedTreeNode<T>[] {\n if (this.node === parent.node) {\n return [];\n } else if (this.parent) {\n const pathToParent = this.parent.pathToParent(parent);\n return pathToParent.concat([this.parent]);\n } else {\n throw new Error('parent is not an ancestor');\n }\n }\n\n pathToParentAndSelf(parent): DecoratedTreeNode<T>[] {\n return this.pathToParent(parent).concat([this.decoratedSelf]);\n }\n\n isRoot(): boolean {\n return !this.parent;\n }\n\n get depth(): number {\n return this.isRoot() ? 0 : this.parent.depth + 1;\n }\n\n isLeaf(): boolean {\n return !this.isRoot() && this.node.children.length < 1;\n }\n\n hasChildren(): boolean {\n return this.node.children && this.node.children.length > 0;\n }\n\n depthFromParent(parent): number {\n return this.pathToParent(parent).length;\n }\n\n treeDepth(): number {\n return this.memoize('treeDepth', () => {\n return 1 + this.descendants().map(child => child.depthFromParent(this)).reduce((prev, current) => Math.max(prev, current));\n });\n }\n\n flatten(): DecoratedTreeNode<T>[] {\n return this.memoize('flatten', () => {\n return this.flattenInto([]);\n });\n }\n\n visit<V extends Visitor<DecoratedTreeNode<T>>>(visitor: V): V {\n visitor.visit(this as any as DecoratedTreeNode<T>);\n return visitor;\n }\n\n visitChildren<V extends Visitor<DecoratedTreeNode<T>>>(visitor: V): V {\n _.each(this.children, child => child.visit(visitor));\n return visitor;\n }\n\n visitSelfAndDescendants(callback: (it: DecoratedTreeNode<T>) => void) {\n this.visit(new SelfAndDescendantsVisitor.Each<DecoratedTreeNode<T>>(callback));\n }\n\n visitDescendants(callback: (it: DecoratedTreeNode<T>) => void) {\n this.visitChildren(new SelfAndDescendantsVisitor.Each<DecoratedTreeNode<T>>(callback));\n }\n\n\n protected memoize<V>(property: string, factory: () => V) {\n const key = `__${property}`;\n if (_.isNil(this[key])) {\n this[key] = factory();\n }\n return this[key];\n }\n\n}\n\nexport type DecoratedTreeNode<T extends TreeNode<T>> = Omit<T, 'children'> & DecoratedTreeNodeMixin<T>;\n\nexport namespace DecoratedTreeNode {\n export function createRoot<T extends TreeNode<T>>(node: T): DecoratedTreeNode<T> {\n return Mixin.createProxy(node, new DecoratedTreeNodeMixin<T>(undefined, node));\n }\n}\n"]}
1
+ {"version":3,"file":"decorated-tree-node.js","sourceRoot":"","sources":["../../../../../../../../libs/angular-ui-powerups/src/lib/components/tables/tree-table/decorated-tree-node.ts"],"names":[],"mappings":"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","sourcesContent":["import { assert } from '@coolon/pectin';\nimport { Memoize } from '@typescript-plus/fast-memoize-decorator/dist/src';\n\nexport const treeNodeDecorator = Symbol('TreeDecorator');\n\nexport interface HasTreeNodeDecorator<T> {\n [treeNodeDecorator]: DecoratedTreeNode.Decorator<T>\n}\n\nexport type DecoratedTreeNode<T> = T & HasTreeNodeDecorator<T>\n\nexport namespace DecoratedTreeNode {\n\n export function decorateRoot<T>(node: T, extractChildren: (node: T) => T[]):DecoratedTreeNode<T> {\n return new Decorator<T>(undefined, node, extractChildren).decoratedNode;\n }\n\n export function getDecorator<T>(node:T):Decorator<T> {\n assert.notNil(node[treeNodeDecorator]);\n return node[treeNodeDecorator];\n }\n\n export class Decorator<T> {\n\n constructor(readonly parent: DecoratedTreeNode<T> | undefined, private readonly node: T, private readonly extractChildren: (node: T) => T[]) {\n node[treeNodeDecorator] = this; // inject our decorator.\n }\n\n @Memoize()\n get children(): DecoratedTreeNode<T>[] {\n return this.extractChildren(this.node)\n .map(child => child[treeNodeDecorator] ?? new Decorator(this.decoratedNode, child, this.extractChildren))\n .map(d => d.decoratedNode)\n }\n\n get decoratedNode(): DecoratedTreeNode<T> {\n return this.node as DecoratedTreeNode<T>\n }\n\n @Memoize()\n siblingsBefore(): T[] {\n if (this.parent) {\n return this.parent[treeNodeDecorator].children.slice(0, this.myIndex());\n } else {\n return [];\n }\n }\n\n @Memoize()\n siblingsAfter(): T[] {\n if (this.parent) {\n return this.parent[treeNodeDecorator].children.slice(1 + this.myIndex());\n } else {\n return [];\n }\n }\n\n @Memoize()\n siblings(): T[] {\n return [].concat(this.siblingsBefore(), this.siblingsAfter());\n }\n\n @Memoize()\n isFirstChild(): boolean {\n return this.parent ? this.myIndex() === 0 : false;\n }\n\n @Memoize()\n protected myIndex() {\n const myIndex = this.parent[treeNodeDecorator].children.findIndex(child => this.node === child);\n assert.isTruthy(myIndex >= 0, 'illegal state, expected index to be >= 0');\n return myIndex;\n }\n\n @Memoize()\n isLastChild(): boolean {\n return this.parent ? this.myIndex() === this.parent[treeNodeDecorator].children.length - 1 : false;\n }\n\n @Memoize()\n hasSiblings(): boolean {\n return this.parent ? this.parent[treeNodeDecorator].children.length > 1 : false;\n }\n\n // find(predicate: Predicate<T>): T {\n // return _.find(this.descendants(), predicate);\n // }\n //\n // select(predicate: Predicate<T>): T[] {\n // return _.filter(this.descendants(), predicate);\n // }\n //\n // flattenInto(array: T[]): T[] {\n // this.visitSelfAndDescendants(child => array.push(child));\n // return array;\n // }\n\n @Memoize()\n ancestors(): T[] {\n return this.parent ? this.parent[treeNodeDecorator].ancestors().concat([this.parent]) : [];\n }\n\n // ancestorsAndSelf(): T[] {\n // return this.memoize('ancestorsAndSelf', () => {\n // return this.ancestors().concat([(this.decoratedSelf)]);\n // });\n // }\n\n // pathToParent(parent: T): T[] {\n // if (this.node === parent.node) {\n // return [];\n // } else if (this.parent) {\n // const pathToParent = this.parent.pathToParent(parent);\n // return pathToParent.concat([this.parent]);\n // } else {\n // throw new Error('parent is not an ancestor');\n // }\n // }\n //\n // pathToParentAndSelf(parent): T[] {\n // return this.pathToParent(parent).concat([this.decoratedSelf]);\n // }\n\n isRoot(): boolean {\n return !this.parent;\n }\n\n @Memoize()\n get depth(): number {\n return this.isRoot() ? 0 : this.parent[treeNodeDecorator].depth + 1;\n }\n\n isLeaf(): boolean {\n return !this.isRoot() && this.children.length < 1;\n }\n\n hasChildren(): boolean {\n return this.children.length > 0;\n }\n\n // depthFromParent(parent): number {\n // return this.pathToParent(parent).length;\n // }\n //\n // treeDepth(): number {\n // return this.memoize('treeDepth', () => {\n // return 1 + this.descendants().map(child => child.depthFromParent(this)).reduce((prev, current) => Math.max(prev, current));\n // });\n // }\n\n // flatten(): T[] {\n // return this.memoize('flatten', () => {\n // return this.flattenInto([]);\n // });\n // }\n //\n // visit<V extends Visitor<T>>(visitor: V): V {\n // visitor.visit(this as any as T);\n // return visitor;\n // }\n //\n // visitChildren<V extends Visitor<T>>(visitor: V): V {\n // _.each(this.decoratedChildren, child => child.visit(visitor));\n // return visitor;\n // }\n //\n // visitSelfAndDescendants(callback: (it: T) => void) {\n // this.visit(new SelfAndDescendantsVisitor.Each<T>(callback));\n // }\n //\n // visitDescendants(callback: (it: T) => void) {\n // this.visitChildren(new SelfAndDescendantsVisitor.Each<T>(callback));\n // }\n //\n\n }\n\n}\n"]}
@@ -1 +1 @@
1
- [{"__symbolic":"module","version":4,"metadata":{"DecoratedTreeNode":{"__symbolic":"interface"}}}]
1
+ [{"__symbolic":"module","version":4,"metadata":{"treeNodeDecorator":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"Symbol"},"arguments":["TreeDecorator"]},"HasTreeNodeDecorator":{"__symbolic":"interface"},"DecoratedTreeNode":{"__symbolic":"interface"}}}]
@@ -0,0 +1,29 @@
1
+ import { ComputedListModel } from '@coolon/pectin';
2
+ import { DecoratedTreeNode, treeNodeDecorator } from './decorated-tree-node';
3
+ export class FlattenedTreeListModel extends ComputedListModel {
4
+ constructor(source, childRef, expansionModel) {
5
+ super(source);
6
+ this.source = source;
7
+ this.childRef = childRef;
8
+ this.expansionModel = expansionModel;
9
+ this.trackSource(expansionModel.isExpandedPredicate);
10
+ }
11
+ getIdentityOf(item) {
12
+ return this.source.identityOf(item);
13
+ }
14
+ compute(values) {
15
+ const result = [];
16
+ values.forEach(rootNode => {
17
+ return this.addNodeAndVisibleChildren(DecoratedTreeNode.decorateRoot(rootNode, this.childRef), result);
18
+ });
19
+ return result;
20
+ }
21
+ addNodeAndVisibleChildren(node, result) {
22
+ result.push(node);
23
+ const decorator = node[treeNodeDecorator];
24
+ if (decorator.hasChildren() && !this.expansionModel.isCollapsed(node)) {
25
+ decorator.children.forEach(child => this.addNodeAndVisibleChildren(child, result));
26
+ }
27
+ }
28
+ }
29
+ //# sourceMappingURL=flattened-tree-list-model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flattened-tree-list-model.js","sourceRoot":"","sources":["../../../../../../../../libs/angular-ui-powerups/src/lib/components/tables/tree-table/flattened-tree-list-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAa,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG7E,MAAM,OAAO,sBAA0B,SAAQ,iBAA4C;IAEzF,YAA6B,MAAoB,EAAmB,QAA0B,EAAW,cAAwD;QAC/J,KAAK,CAAC,MAAM,CAAC,CAAC;QADa,WAAM,GAAN,MAAM,CAAc;QAAmB,aAAQ,GAAR,QAAQ,CAAkB;QAAW,mBAAc,GAAd,cAAc,CAA0C;QAE/J,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAA;IACtD,CAAC;IAED,aAAa,CAAC,IAA0B;QACtC,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,OAAO,CAAC,MAAW;QACjB,MAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YACxB,OAAO,IAAI,CAAC,yBAAyB,CAAC,iBAAiB,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;QACzG,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IAGO,yBAAyB,CAAC,IAA0B,EAAE,MAA8B;QAC1F,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC1C,IAAI,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;YACrE,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;SACpF;IACH,CAAC;CAEF","sourcesContent":["import { ComputedListModel, ListModel } from '@coolon/pectin';\nimport { DecoratedTreeNode, treeNodeDecorator } from './decorated-tree-node';\nimport { TreeExpansionModel } from './tree-expansion-model';\n\nexport class FlattenedTreeListModel<T> extends ComputedListModel<DecoratedTreeNode<T>, T[]> {\n\n constructor(private readonly source: ListModel<T>, private readonly childRef: (node: T) => T[], readonly expansionModel: TreeExpansionModel<DecoratedTreeNode<T>>) {\n super(source);\n this.trackSource(expansionModel.isExpandedPredicate)\n }\n\n getIdentityOf(item: DecoratedTreeNode<T>): any {\n return this.source.identityOf(item);\n }\n\n compute(values: T[]): DecoratedTreeNode<T>[] {\n const result: DecoratedTreeNode<T>[] = [];\n values.forEach(rootNode => {\n return this.addNodeAndVisibleChildren(DecoratedTreeNode.decorateRoot(rootNode, this.childRef), result);\n });\n return result;\n }\n\n\n private addNodeAndVisibleChildren(node: DecoratedTreeNode<T>, result: DecoratedTreeNode<T>[]) {\n result.push(node);\n const decorator = node[treeNodeDecorator];\n if (decorator.hasChildren() && !this.expansionModel.isCollapsed(node)) {\n decorator.children.forEach(child => this.addNodeAndVisibleChildren(child, result));\n }\n }\n\n}\n"]}
@@ -0,0 +1 @@
1
+ [{"__symbolic":"module","version":4,"metadata":{"FlattenedTreeListModel":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@coolon/pectin","name":"ComputedListModel","line":4,"character":47},"arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@coolon/pectin","name":"ListModel","line":6,"character":39,"arguments":[{"__symbolic":"error","message":"Could not resolve type","line":6,"character":49,"context":{"typeName":"T"}}]},{"__symbolic":"error","message":"Expression form not supported","line":6,"character":80},{"__symbolic":"reference","module":"./tree-expansion-model","name":"TreeExpansionModel","line":6,"character":123,"arguments":[{"__symbolic":"reference","module":"./decorated-tree-node","name":"DecoratedTreeNode","line":6,"character":142,"arguments":[{"__symbolic":"error","message":"Could not resolve type","line":6,"character":160,"context":{"typeName":"T"}}]}]}]}],"getIdentityOf":[{"__symbolic":"method"}],"compute":[{"__symbolic":"method"}],"addNodeAndVisibleChildren":[{"__symbolic":"method"}]}}}}]
@@ -1,4 +1,5 @@
1
1
  import { MutableValueModel } from '@coolon/pectin';
2
+ import { DecoratedTreeNode } from './decorated-tree-node';
2
3
  export class TreeExpansionModel {
3
4
  constructor(identityOf) {
4
5
  this.identityOf = identityOf;
@@ -12,37 +13,37 @@ export class TreeExpansionModel {
12
13
  // @Trace()
13
14
  expand(node) {
14
15
  if (this.isCollapsed(node)) {
15
- this.collapsedIds.delete(this.identityOf(node.node));
16
+ this.collapsedIds.delete(this.identityOf(node));
16
17
  this.updatePredicate();
17
18
  }
18
19
  }
19
20
  // @Trace()
20
21
  collapse(node) {
21
22
  if (!this.isCollapsed(node)) {
22
- this.collapsedIds.add(this.identityOf(node.node));
23
+ this.collapsedIds.add(this.identityOf(node));
23
24
  this.updatePredicate();
24
25
  }
25
26
  }
26
27
  canExpand(node) {
27
- return node.hasChildren() && this.isCollapsed(node);
28
+ return DecoratedTreeNode.getDecorator(node).hasChildren() && this.isCollapsed(node);
28
29
  }
29
30
  canCollapse(node) {
30
- return node.hasChildren() && !this.isCollapsed(node);
31
+ return DecoratedTreeNode.getDecorator(node).hasChildren() && !this.isCollapsed(node);
31
32
  }
32
33
  isCollapsed(node) {
33
- return this.collapsedIds.has(this.identityOf(node.node));
34
+ return this.collapsedIds.has(this.identityOf(node));
34
35
  }
35
36
  isExpanded(node) {
36
37
  return !this.isCollapsed(node);
37
38
  }
38
39
  ensureAncestorsAndSelfVisible(node) {
39
- node.ancestors()
40
- .map(a => this.identityOf(node.node))
40
+ DecoratedTreeNode.getDecorator(node).ancestors()
41
+ .map(a => this.identityOf(node))
41
42
  .forEach(id => this.collapsedIds.delete(id));
42
43
  this.updatePredicate();
43
44
  }
44
45
  updatePredicate() {
45
- this._isExpandedPredicate.value = (node) => !this.collapsedIds.has(this.identityOf(node.node));
46
+ this._isExpandedPredicate.value = (node) => !this.collapsedIds.has(this.identityOf(node));
46
47
  }
47
48
  }
48
49
  //# sourceMappingURL=tree-expansion-model.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tree-expansion-model.js","sourceRoot":"","sources":["../../../../../../../../libs/angular-ui-powerups/src/lib/components/tables/tree-table/tree-expansion-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGnD,MAAM,OAAO,kBAAkB;IAK7B,YAA6B,UAAoC;QAApC,eAAU,GAAV,UAAU,CAA0B;QAJhD,iBAAY,GAAG,IAAI,GAAG,EAAO,CAAC;QAE9B,yBAAoB,GAAG,IAAI,iBAAiB,CAAuB,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QAG9F,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAED,IAAI,mBAAmB;QACrB,OAAO,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC;IAC5C,CAAC;IAED,WAAW;IACX,MAAM,CAAC,IAAO;QACZ,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;YAC1B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACrD,IAAI,CAAC,eAAe,EAAE,CAAC;SACxB;IACH,CAAC;IAED,WAAW;IACX,QAAQ,CAAC,IAAO;QACd,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;YAC3B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAClD,IAAI,CAAC,eAAe,EAAE,CAAC;SACxB;IACH,CAAC;IAGD,SAAS,CAAC,IAAO;QACf,OAAO,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;IAED,WAAW,CAAC,IAAO;QACjB,OAAO,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;IAED,WAAW,CAAC,IAAO;QACjB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,UAAU,CAAC,IAAO;QAChB,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;IAChC,CAAC;IAED,6BAA6B,CAAC,IAAO;QACnC,IAAI,CAAC,SAAS,EAAE;aACb,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACpC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC,eAAe,EAAE,CAAC;IAEzB,CAAC;IAEO,eAAe;QACrB,IAAI,CAAC,oBAAoB,CAAC,KAAK,GAAG,CAAC,IAAO,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACpG,CAAC;CAGF","sourcesContent":["import { MutableValueModel } from '@coolon/pectin';\nimport { DecoratedTreeNode } from './decorated-tree-node';\n\nexport class TreeExpansionModel<N extends DecoratedTreeNode<any>> {\n private readonly collapsedIds = new Set<any>();\n\n private readonly _isExpandedPredicate = new MutableValueModel<(node: N) => boolean>(() => true);\n\n constructor(private readonly identityOf: (node: N['node']) => any) {\n this.updatePredicate();\n }\n\n get isExpandedPredicate() {\n return this._isExpandedPredicate.readonly;\n }\n\n // @Trace()\n expand(node: N) { // TODO: add DecoratedTreeNode.isDecorated(node) to allow using the raw node type as well.\n if (this.isCollapsed(node)) {\n this.collapsedIds.delete(this.identityOf(node.node));\n this.updatePredicate();\n }\n }\n\n // @Trace()\n collapse(node: N) {\n if (!this.isCollapsed(node)) {\n this.collapsedIds.add(this.identityOf(node.node));\n this.updatePredicate();\n }\n }\n\n\n canExpand(node: N): boolean {\n return node.hasChildren() && this.isCollapsed(node);\n }\n\n canCollapse(node: N): boolean {\n return node.hasChildren() && !this.isCollapsed(node);\n }\n\n isCollapsed(node: N): boolean {\n return this.collapsedIds.has(this.identityOf(node.node));\n }\n\n isExpanded(node: N): boolean {\n return !this.isCollapsed(node)\n }\n\n ensureAncestorsAndSelfVisible(node: N) {\n node.ancestors()\n .map(a => this.identityOf(node.node))\n .forEach(id => this.collapsedIds.delete(id));\n this.updatePredicate();\n\n }\n\n private updatePredicate() {\n this._isExpandedPredicate.value = (node: N) => !this.collapsedIds.has(this.identityOf(node.node));\n }\n\n\n}\n\nexport namespace TreeExpansionModel {\n}\n"]}
1
+ {"version":3,"file":"tree-expansion-model.js","sourceRoot":"","sources":["../../../../../../../../libs/angular-ui-powerups/src/lib/components/tables/tree-table/tree-expansion-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAC,MAAM,uBAAuB,CAAC;AAEzD,MAAM,OAAO,kBAAkB;IAK7B,YAA6B,UAA4B;QAA5B,eAAU,GAAV,UAAU,CAAkB;QAJxC,iBAAY,GAAG,IAAI,GAAG,EAAO,CAAC;QAE9B,yBAAoB,GAAG,IAAI,iBAAiB,CAAuB,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QAG9F,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAED,IAAI,mBAAmB;QACrB,OAAO,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC;IAC5C,CAAC;IAED,WAAW;IACX,MAAM,CAAC,IAAO;QACZ,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;YAC1B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;YAChD,IAAI,CAAC,eAAe,EAAE,CAAC;SACxB;IACH,CAAC;IAED,WAAW;IACX,QAAQ,CAAC,IAAO;QACd,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;YAC3B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7C,IAAI,CAAC,eAAe,EAAE,CAAC;SACxB;IACH,CAAC;IAED,SAAS,CAAC,IAAO;QACf,OAAO,iBAAiB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACtF,CAAC;IAED,WAAW,CAAC,IAAO;QACjB,OAAO,iBAAiB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACvF,CAAC;IAED,WAAW,CAAC,IAAO;QACjB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,UAAU,CAAC,IAAO;QAChB,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,6BAA6B,CAAC,IAAO;QACnC,iBAAiB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE;aAC7C,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;aAC/B,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAEO,eAAe;QACrB,IAAI,CAAC,oBAAoB,CAAC,KAAK,GAAG,CAAC,IAAO,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/F,CAAC;CAEF","sourcesContent":["import { MutableValueModel } from '@coolon/pectin';\nimport { DecoratedTreeNode} from './decorated-tree-node';\n\nexport class TreeExpansionModel<T> {\n private readonly collapsedIds = new Set<any>();\n\n private readonly _isExpandedPredicate = new MutableValueModel<(node: T) => boolean>(() => true);\n\n constructor(private readonly identityOf: (node: T) => any) {\n this.updatePredicate();\n }\n\n get isExpandedPredicate() {\n return this._isExpandedPredicate.readonly;\n }\n\n // @Trace()\n expand(node: T) { // TODO: add DecoratedTreeNode.isDecorated(node) to allow using the raw node type as well.\n if (this.isCollapsed(node)) {\n this.collapsedIds.delete(this.identityOf(node));\n this.updatePredicate();\n }\n }\n\n // @Trace()\n collapse(node: T) {\n if (!this.isCollapsed(node)) {\n this.collapsedIds.add(this.identityOf(node));\n this.updatePredicate();\n }\n }\n\n canExpand(node: T): boolean {\n return DecoratedTreeNode.getDecorator(node).hasChildren() && this.isCollapsed(node);\n }\n\n canCollapse(node: T): boolean {\n return DecoratedTreeNode.getDecorator(node).hasChildren() && !this.isCollapsed(node);\n }\n\n isCollapsed(node: T): boolean {\n return this.collapsedIds.has(this.identityOf(node));\n }\n\n isExpanded(node: T): boolean {\n return !this.isCollapsed(node);\n }\n\n ensureAncestorsAndSelfVisible(node: T) {\n DecoratedTreeNode.getDecorator(node).ancestors()\n .map(a => this.identityOf(node))\n .forEach(id => this.collapsedIds.delete(id));\n this.updatePredicate();\n }\n\n private updatePredicate() {\n this._isExpandedPredicate.value = (node: T) => !this.collapsedIds.has(this.identityOf(node));\n }\n\n}\n\nexport namespace TreeExpansionModel {\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"tree-inheritance-icon.component.js","sourceRoot":"","sources":["../../../../../../../../../libs/angular-ui-powerups/src/lib/components/tables/tree-table/tree-inheritance-icon/tree-inheritance-icon.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAG/C,MAAM,UAAU,GAAG,EAAE,CAAC;AAOtB,MAAM,OAAO,4BAA4B;IAYvC;QALA,eAAU,GAAG,EAAE,CAAC;QAGhB,gBAAW,GAAG,EAAE,CAAC;IAGjB,CAAC;IAED,IAAI,YAAY;QACd,OAAO,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;IACvC,CAAC;IAED,IAAI,OAAO;QACT,OAAO,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA;IAC/F,CAAC;IAED,OAAO;QACL,OAAO,4BAA4B,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAClE,CAAC;IAED,WAAW;QACT,OAAO,4BAA4B,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACtE,CAAC;IAED,SAAS;QACP,OAAO,4BAA4B,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACrE,CAAC;IAED,OAAO;QACL,OAAO,4BAA4B,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAClE,CAAC;;;YA1CF,SAAS,SAAC;gBACT,QAAQ,EAAE,2BAA2B;gBACrC,ylBAAoD;;aAErD;;;;mBAGE,KAAK,YACL,WAAW,SAAC,OAAO;yBAGnB,KAAK;0BAGL,KAAK;;AAgCR,WAAiB,4BAA4B;IAC9B,iCAAI,GAAG,IAAI,CAAC;QACvB,UAAU,EAAE,OAAO;QACnB,WAAW,EAAE,QAAQ;QACrB,uBAAuB,EAAE,oBAAoB;QAC7C,+BAA+B,EAAE,4BAA4B;QAC7D,YAAY,EAAE,SAAS,CAAC,IAAI;KAC7B,CAAC,CAAC;IAGU,wCAAW,GAAG;QACzB,4BAA4B,CAAC,IAAI,CAAC,WAAW;KAC9C,CAAC;IAEW,yCAAY,GAAG;QAC1B,4BAA4B,CAAC,IAAI,CAAC,uBAAuB;QACzD,4BAA4B,CAAC,IAAI,CAAC,+BAA+B;QACjE,4BAA4B,CAAC,IAAI,CAAC,WAAW;KAC9C,CAAC;IAEW,qCAAQ,GAAG;QACtB,4BAA4B,CAAC,IAAI,CAAC,YAAY;QAC9C,4BAA4B,CAAC,IAAI,CAAC,uBAAuB;QACzD,4BAA4B,CAAC,IAAI,CAAC,+BAA+B;KAClE,CAAC;IAEW,qCAAQ,GAAG;QACtB,4BAA4B,CAAC,IAAI,CAAC,WAAW;QAC7C,4BAA4B,CAAC,IAAI,CAAC,YAAY;QAC9C,4BAA4B,CAAC,IAAI,CAAC,+BAA+B;KAClE,CAAC;AAGJ,CAAC,EAjCgB,4BAA4B,KAA5B,4BAA4B,QAiC5C","sourcesContent":["import { Component, HostBinding, Input } from '@angular/core';\nimport { Enum } from 'typescript-string-enums';\nimport { DecoratedTreeNode } from '../decorated-tree-node';\n\nconst SVG_HEIGHT = 60;\n\n@Component({\n selector: 'aup-tree-inheritance-icon',\n templateUrl: './tree-inheritance-icon.component.svg',\n styleUrls: ['./tree-inheritance-icon.component.scss']\n})\nexport class TreeInheritanceIconComponent<T extends DecoratedTreeNode<any>> {\n\n @Input()\n @HostBinding(\"class\")\n type: TreeInheritanceIconComponent.Type;\n\n @Input()\n pixelWidth = 24;\n\n @Input()\n pixelHeight = 48;\n\n constructor() {\n }\n\n get heightOffset() {\n return SVG_HEIGHT - this.pixelHeight;\n }\n\n get viewBox() {\n return `${0} ${this.heightOffset} ${this.pixelWidth} ${this.pixelHeight - this.heightOffset}`\n }\n\n hasHead() {\n return TreeInheritanceIconComponent.HAS_HEAD.includes(this.type)\n }\n\n hasTerminal() {\n return TreeInheritanceIconComponent.HAS_TERMINAL.includes(this.type)\n }\n\n hasLeadIn() {\n return TreeInheritanceIconComponent.HAS_LEAD_IN.includes(this.type)\n }\n\n hasTail() {\n return TreeInheritanceIconComponent.HAS_TAIL.includes(this.type)\n }\n\n}\n\nexport namespace TreeInheritanceIconComponent {\n export const Type = Enum({\n ICON_BLANK: 'blank',\n ICON_PARENT: 'parent', // ┬\n ICON_INHERITED_TERMINAL: 'inherited_terminal', // ˪\n ICON_INHERITED_THROUGH_TERMINAL: 'inherited_through_terminal', // ˫\n ICON_THROUGH: 'through' // |\n });\n export type Type = Enum<typeof Type>;\n\n export const HAS_LEAD_IN = [\n TreeInheritanceIconComponent.Type.ICON_PARENT\n ];\n\n export const HAS_TERMINAL = [\n TreeInheritanceIconComponent.Type.ICON_INHERITED_TERMINAL,\n TreeInheritanceIconComponent.Type.ICON_INHERITED_THROUGH_TERMINAL,\n TreeInheritanceIconComponent.Type.ICON_PARENT\n ];\n\n export const HAS_HEAD = [\n TreeInheritanceIconComponent.Type.ICON_THROUGH,\n TreeInheritanceIconComponent.Type.ICON_INHERITED_TERMINAL,\n TreeInheritanceIconComponent.Type.ICON_INHERITED_THROUGH_TERMINAL\n ];\n\n export const HAS_TAIL = [\n TreeInheritanceIconComponent.Type.ICON_PARENT,\n TreeInheritanceIconComponent.Type.ICON_THROUGH,\n TreeInheritanceIconComponent.Type.ICON_INHERITED_THROUGH_TERMINAL\n ];\n\n\n}\n"]}
1
+ {"version":3,"file":"tree-inheritance-icon.component.js","sourceRoot":"","sources":["../../../../../../../../../libs/angular-ui-powerups/src/lib/components/tables/tree-table/tree-inheritance-icon/tree-inheritance-icon.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAE/C,MAAM,UAAU,GAAG,EAAE,CAAC;AAOtB,MAAM,OAAO,4BAA4B;IAYvC;QALA,eAAU,GAAG,EAAE,CAAC;QAGhB,gBAAW,GAAG,EAAE,CAAC;IAGjB,CAAC;IAED,IAAI,YAAY;QACd,OAAO,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;IACvC,CAAC;IAED,IAAI,OAAO;QACT,OAAO,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA;IAC/F,CAAC;IAED,OAAO;QACL,OAAO,4BAA4B,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAClE,CAAC;IAED,WAAW;QACT,OAAO,4BAA4B,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACtE,CAAC;IAED,SAAS;QACP,OAAO,4BAA4B,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACrE,CAAC;IAED,OAAO;QACL,OAAO,4BAA4B,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAClE,CAAC;;;YA1CF,SAAS,SAAC;gBACT,QAAQ,EAAE,2BAA2B;gBACrC,ylBAAoD;;aAErD;;;;mBAGE,KAAK,YACL,WAAW,SAAC,OAAO;yBAGnB,KAAK;0BAGL,KAAK;;AAgCR,WAAiB,4BAA4B;IAC9B,iCAAI,GAAG,IAAI,CAAC;QACvB,UAAU,EAAE,OAAO;QACnB,WAAW,EAAE,QAAQ;QACrB,uBAAuB,EAAE,oBAAoB;QAC7C,+BAA+B,EAAE,4BAA4B;QAC7D,YAAY,EAAE,SAAS,CAAC,IAAI;KAC7B,CAAC,CAAC;IAGU,wCAAW,GAAG;QACzB,4BAA4B,CAAC,IAAI,CAAC,WAAW;KAC9C,CAAC;IAEW,yCAAY,GAAG;QAC1B,4BAA4B,CAAC,IAAI,CAAC,uBAAuB;QACzD,4BAA4B,CAAC,IAAI,CAAC,+BAA+B;QACjE,4BAA4B,CAAC,IAAI,CAAC,WAAW;KAC9C,CAAC;IAEW,qCAAQ,GAAG;QACtB,4BAA4B,CAAC,IAAI,CAAC,YAAY;QAC9C,4BAA4B,CAAC,IAAI,CAAC,uBAAuB;QACzD,4BAA4B,CAAC,IAAI,CAAC,+BAA+B;KAClE,CAAC;IAEW,qCAAQ,GAAG;QACtB,4BAA4B,CAAC,IAAI,CAAC,WAAW;QAC7C,4BAA4B,CAAC,IAAI,CAAC,YAAY;QAC9C,4BAA4B,CAAC,IAAI,CAAC,+BAA+B;KAClE,CAAC;AAGJ,CAAC,EAjCgB,4BAA4B,KAA5B,4BAA4B,QAiC5C","sourcesContent":["import { Component, HostBinding, Input } from '@angular/core';\nimport { Enum } from 'typescript-string-enums';\n\nconst SVG_HEIGHT = 60;\n\n@Component({\n selector: 'aup-tree-inheritance-icon',\n templateUrl: './tree-inheritance-icon.component.svg',\n styleUrls: ['./tree-inheritance-icon.component.scss']\n})\nexport class TreeInheritanceIconComponent<T> {\n\n @Input()\n @HostBinding(\"class\")\n type: TreeInheritanceIconComponent.Type;\n\n @Input()\n pixelWidth = 24;\n\n @Input()\n pixelHeight = 48;\n\n constructor() {\n }\n\n get heightOffset() {\n return SVG_HEIGHT - this.pixelHeight;\n }\n\n get viewBox() {\n return `${0} ${this.heightOffset} ${this.pixelWidth} ${this.pixelHeight - this.heightOffset}`\n }\n\n hasHead() {\n return TreeInheritanceIconComponent.HAS_HEAD.includes(this.type)\n }\n\n hasTerminal() {\n return TreeInheritanceIconComponent.HAS_TERMINAL.includes(this.type)\n }\n\n hasLeadIn() {\n return TreeInheritanceIconComponent.HAS_LEAD_IN.includes(this.type)\n }\n\n hasTail() {\n return TreeInheritanceIconComponent.HAS_TAIL.includes(this.type)\n }\n\n}\n\nexport namespace TreeInheritanceIconComponent {\n export const Type = Enum({\n ICON_BLANK: 'blank',\n ICON_PARENT: 'parent', // ┬\n ICON_INHERITED_TERMINAL: 'inherited_terminal', // ˪\n ICON_INHERITED_THROUGH_TERMINAL: 'inherited_through_terminal', // ˫\n ICON_THROUGH: 'through' // |\n });\n export type Type = Enum<typeof Type>;\n\n export const HAS_LEAD_IN = [\n TreeInheritanceIconComponent.Type.ICON_PARENT\n ];\n\n export const HAS_TERMINAL = [\n TreeInheritanceIconComponent.Type.ICON_INHERITED_TERMINAL,\n TreeInheritanceIconComponent.Type.ICON_INHERITED_THROUGH_TERMINAL,\n TreeInheritanceIconComponent.Type.ICON_PARENT\n ];\n\n export const HAS_HEAD = [\n TreeInheritanceIconComponent.Type.ICON_THROUGH,\n TreeInheritanceIconComponent.Type.ICON_INHERITED_TERMINAL,\n TreeInheritanceIconComponent.Type.ICON_INHERITED_THROUGH_TERMINAL\n ];\n\n export const HAS_TAIL = [\n TreeInheritanceIconComponent.Type.ICON_PARENT,\n TreeInheritanceIconComponent.Type.ICON_THROUGH,\n TreeInheritanceIconComponent.Type.ICON_INHERITED_THROUGH_TERMINAL\n ];\n\n\n}\n"]}
@@ -1 +1 @@
1
- [{"__symbolic":"module","version":4,"metadata":{"TreeInheritanceIconComponent":{"__symbolic":"class","arity":1,"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"aup-tree-inheritance-icon","template":"<svg xmlns=\"http://www.w3.org/2000/svg\" [attr.width]=\"pixelWidth\" [attr.height]=\"pixelHeight\" [attr.viewBox]=\"viewBox\">\n <g fill=\"none\" fill-rule=\"evenodd\">\n <rect *ngIf=\"hasHead()\" width=\"1\" height=\"32.5\" x=\"11.5\" fill=\"currentColor\"/>\n <rect *ngIf=\"hasTail()\" width=\"1\" height=\"32.5\" x=\"11.5\" y=\"31.5\" fill=\"currentColor\"/>\n\n <rect *ngIf=\"hasLeadIn()\" width=\"12\" height=\"1\" y=\"31.5\" fill=\"currentColor\"/>\n <rect *ngIf=\"hasTerminal()\" width=\"12\" height=\"1\" x=\"12\" y=\"31.5\" fill=\"currentColor\"/>\n </g>\n</svg>\n","styles":[":host{position:relative;color:inherit}svg{color:var(--line-color);display:block}"]}]}],"members":{"type":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":14,"character":3},"arguments":["class"]}]}],"pixelWidth":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":3}}]}],"pixelHeight":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":20,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"hasHead":[{"__symbolic":"method"}],"hasTerminal":[{"__symbolic":"method"}],"hasLeadIn":[{"__symbolic":"method"}],"hasTail":[{"__symbolic":"method"}]}}}}]
1
+ [{"__symbolic":"module","version":4,"metadata":{"TreeInheritanceIconComponent":{"__symbolic":"class","arity":1,"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"selector":"aup-tree-inheritance-icon","template":"<svg xmlns=\"http://www.w3.org/2000/svg\" [attr.width]=\"pixelWidth\" [attr.height]=\"pixelHeight\" [attr.viewBox]=\"viewBox\">\n <g fill=\"none\" fill-rule=\"evenodd\">\n <rect *ngIf=\"hasHead()\" width=\"1\" height=\"32.5\" x=\"11.5\" fill=\"currentColor\"/>\n <rect *ngIf=\"hasTail()\" width=\"1\" height=\"32.5\" x=\"11.5\" y=\"31.5\" fill=\"currentColor\"/>\n\n <rect *ngIf=\"hasLeadIn()\" width=\"12\" height=\"1\" y=\"31.5\" fill=\"currentColor\"/>\n <rect *ngIf=\"hasTerminal()\" width=\"12\" height=\"1\" x=\"12\" y=\"31.5\" fill=\"currentColor\"/>\n </g>\n</svg>\n","styles":[":host{position:relative;color:inherit}svg{color:var(--line-color);display:block}"]}]}],"members":{"type":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":12,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":13,"character":3},"arguments":["class"]}]}],"pixelWidth":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":3}}]}],"pixelHeight":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":19,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"hasHead":[{"__symbolic":"method"}],"hasTerminal":[{"__symbolic":"method"}],"hasLeadIn":[{"__symbolic":"method"}],"hasTail":[{"__symbolic":"method"}]}}}}]
@@ -13,11 +13,11 @@ export class TreeLabelCellRendererComponent extends DisposableComponent {
13
13
  this.nodeModel = new MutableValueModel();
14
14
  const { chain } = Dsl.disposeWith(this);
15
15
  this.iconList = chain(this.nodeModel).mapToList(node => {
16
- const icons = node.ancestors().slice(1).map(ancestor => {
17
- return ancestor.isLastChild() ? TreeInheritanceIconComponent.Type.ICON_BLANK : TreeInheritanceIconComponent.Type.ICON_THROUGH;
16
+ const icons = DecoratedTreeNode.getDecorator(node).ancestors().slice(1).map(ancestor => {
17
+ return DecoratedTreeNode.getDecorator(ancestor).isLastChild() ? TreeInheritanceIconComponent.Type.ICON_BLANK : TreeInheritanceIconComponent.Type.ICON_THROUGH;
18
18
  });
19
- if (!node.isRoot()) {
20
- icons.push(node.isLastChild() ? TreeInheritanceIconComponent.Type.ICON_INHERITED_TERMINAL : TreeInheritanceIconComponent.Type.ICON_INHERITED_THROUGH_TERMINAL);
19
+ if (!DecoratedTreeNode.getDecorator(node).isRoot()) {
20
+ icons.push(DecoratedTreeNode.getDecorator(node).isLastChild() ? TreeInheritanceIconComponent.Type.ICON_INHERITED_TERMINAL : TreeInheritanceIconComponent.Type.ICON_INHERITED_THROUGH_TERMINAL);
21
21
  }
22
22
  return icons;
23
23
  });
@@ -25,20 +25,20 @@ export class TreeLabelCellRendererComponent extends DisposableComponent {
25
25
  ngOnInit() {
26
26
  const { chain } = Dsl.disposeWith(this);
27
27
  this.canExpand = chain(this.nodeModel).map(node => {
28
- return node.hasChildren() && this.expansionModel.isCollapsed(node);
28
+ return DecoratedTreeNode.getDecorator(node).hasChildren() && this.expansionModel.isCollapsed(node);
29
29
  }, { dependsOn: this.expansionModel.isExpandedPredicate });
30
30
  this.canCollapse = chain(this.nodeModel).map(node => {
31
- return node.hasChildren() && !this.expansionModel.isCollapsed(node);
31
+ return DecoratedTreeNode.getDecorator(node).hasChildren() && !this.expansionModel.isCollapsed(node);
32
32
  }, { dependsOn: this.expansionModel.isExpandedPredicate });
33
33
  this.iconModel = chain(this.nodeModel).map(node => {
34
- return this.node.isLeaf() ? undefined : this.iconFactory(node, this.expansionModel.isExpanded(this.node));
34
+ return DecoratedTreeNode.getDecorator(this.node).isLeaf() ? undefined : this.iconFactory(node, this.expansionModel.isExpanded(this.node));
35
35
  }, { dependsOn: this.expansionModel.isExpandedPredicate });
36
36
  }
37
37
  get isRoot() {
38
- return this.node.isRoot();
38
+ return DecoratedTreeNode.getDecorator(this.node).isRoot();
39
39
  }
40
40
  get isLeaf() {
41
- return this.node.isLeaf();
41
+ return DecoratedTreeNode.getDecorator(this.node).isLeaf();
42
42
  }
43
43
  get node() {
44
44
  return this.nodeModel.value;
@@ -1 +1 @@
1
- {"version":3,"file":"tree-label-cell-renderer.component.js","sourceRoot":"","sources":["../../../../../../../../../libs/angular-ui-powerups/src/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, HostBinding, Input, OnInit } from '@angular/core';\nimport { Dsl, ListModelChain, MutableValueModel, StoreInValueModel, ValueModelChain } from '@coolon/pectin';\nimport { DisposableComponent } from '../../../disposable-component';\nimport { DecoratedTreeNode } from '../decorated-tree-node';\nimport { TreeExpansionModel } from '../tree-expansion-model';\nimport { TreeInheritanceIconComponent } from '../tree-inheritance-icon/tree-inheritance-icon.component';\nimport { TreeLabelColumnModel } from '../tree-label-column-model';\nimport { TreeNode } from '../tree-node';\n\n@Component({\n selector: 'aup-tree-label-cell-renderer',\n templateUrl: './tree-label-cell-renderer.component.html',\n styleUrls: ['./tree-label-cell-renderer.component.scss']\n})\nexport class TreeLabelCellRendererComponent<T extends TreeNode<any>> extends DisposableComponent implements OnInit {\n\n iconTypes: string[] = [];\n\n private nodeModel = new MutableValueModel<DecoratedTreeNode<T>>();\n\n @Input()\n @StoreInValueModel('nodeModel')\n value: DecoratedTreeNode<T>;\n\n @Input()\n label: string;\n\n @Input()\n iconFactory: TreeLabelColumnModel.LabelFactory<T>;\n\n // TODO: Make this have a proper delegate so I can safely use it here..\n @Input()\n expansionModel: TreeExpansionModel<DecoratedTreeNode<T>>;\n\n readonly iconList: ListModelChain<string>;\n\n canExpand: ValueModelChain<boolean>;\n canCollapse: ValueModelChain<boolean>;\n iconModel: ValueModelChain<string>;\n\n constructor() {\n super();\n const { chain } = Dsl.disposeWith(this);\n this.iconList = chain(this.nodeModel).mapToList(node => {\n const icons: string[] = node.ancestors().slice(1).map(ancestor => {\n return ancestor.isLastChild() ? TreeInheritanceIconComponent.Type.ICON_BLANK : TreeInheritanceIconComponent.Type.ICON_THROUGH;\n });\n if (!node.isRoot()) {\n icons.push(node.isLastChild() ? TreeInheritanceIconComponent.Type.ICON_INHERITED_TERMINAL : TreeInheritanceIconComponent.Type.ICON_INHERITED_THROUGH_TERMINAL);\n }\n return icons;\n });\n }\n\n ngOnInit(): void {\n const { chain } = Dsl.disposeWith(this);\n this.canExpand = chain(this.nodeModel).map(node => {\n return node.hasChildren() && this.expansionModel.isCollapsed(node);\n }, { dependsOn: this.expansionModel.isExpandedPredicate });\n\n this.canCollapse = chain(this.nodeModel).map(node => {\n return node.hasChildren() && !this.expansionModel.isCollapsed(node);\n }, { dependsOn: this.expansionModel.isExpandedPredicate });\n\n this.iconModel = chain(this.nodeModel).map(node => {\n return this.node.isLeaf() ? undefined : this.iconFactory(node, this.expansionModel.isExpanded(this.node))\n }, {dependsOn: this.expansionModel.isExpandedPredicate});\n }\n\n @HostBinding('class.root')\n get isRoot() {\n return this.node.isRoot();\n }\n\n @HostBinding('class.leaf')\n get isLeaf() {\n return this.node.isLeaf();\n }\n\n get node() {\n return this.nodeModel.value;\n }\n\n // @Trace()\n expandOrCollapse(node: DecoratedTreeNode<T>) {\n this.expansionModel.isCollapsed(node) ? this.expansionModel.expand(node) : this.expansionModel.collapse(node);\n }\n}\n"]}
1
+ {"version":3,"file":"tree-label-cell-renderer.component.js","sourceRoot":"","sources":["../../../../../../../../../libs/angular-ui-powerups/src/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, HostBinding, Input, OnInit } from '@angular/core';\nimport { Dsl, ListModelChain, MutableValueModel, StoreInValueModel, ValueModelChain } from '@coolon/pectin';\nimport { DisposableComponent } from '../../../disposable-component';\nimport { CellRenderer } from '../../table/cell-renderer';\nimport { DecoratedTreeNode } from '../decorated-tree-node';\nimport { TreeExpansionModel } from '../tree-expansion-model';\nimport { TreeInheritanceIconComponent } from '../tree-inheritance-icon/tree-inheritance-icon.component';\nimport { TreeLabelColumnModel } from '../tree-label-column-model';\n\n@Component({\n selector: 'aup-tree-label-cell-renderer',\n templateUrl: './tree-label-cell-renderer.component.html',\n styleUrls: ['./tree-label-cell-renderer.component.scss']\n})\nexport class TreeLabelCellRendererComponent<T> extends DisposableComponent implements CellRenderer<T>, OnInit {\n\n iconTypes: string[] = [];\n\n private nodeModel = new MutableValueModel<T>();\n\n @Input()\n @StoreInValueModel('nodeModel')\n value: T;\n\n @Input()\n label: string;\n\n @Input()\n iconFactory: TreeLabelColumnModel.LabelFactory<T>;\n\n // TODO: Make this have a proper delegate so I can safely use it here..\n @Input()\n expansionModel: TreeExpansionModel<T>;\n\n readonly iconList: ListModelChain<string>;\n\n canExpand: ValueModelChain<boolean>;\n canCollapse: ValueModelChain<boolean>;\n iconModel: ValueModelChain<string>;\n\n constructor() {\n super();\n const { chain } = Dsl.disposeWith(this);\n this.iconList = chain(this.nodeModel).mapToList(node => {\n const icons: string[] = DecoratedTreeNode.getDecorator(node).ancestors().slice(1).map(ancestor => {\n return DecoratedTreeNode.getDecorator(ancestor).isLastChild() ? TreeInheritanceIconComponent.Type.ICON_BLANK : TreeInheritanceIconComponent.Type.ICON_THROUGH;\n });\n if (!DecoratedTreeNode.getDecorator(node).isRoot()) {\n icons.push(DecoratedTreeNode.getDecorator(node).isLastChild() ? TreeInheritanceIconComponent.Type.ICON_INHERITED_TERMINAL : TreeInheritanceIconComponent.Type.ICON_INHERITED_THROUGH_TERMINAL);\n }\n return icons;\n });\n }\n\n ngOnInit(): void {\n const { chain } = Dsl.disposeWith(this);\n this.canExpand = chain(this.nodeModel).map(node => {\n return DecoratedTreeNode.getDecorator(node).hasChildren() && this.expansionModel.isCollapsed(node);\n }, { dependsOn: this.expansionModel.isExpandedPredicate });\n\n this.canCollapse = chain(this.nodeModel).map(node => {\n return DecoratedTreeNode.getDecorator(node).hasChildren() && !this.expansionModel.isCollapsed(node);\n }, { dependsOn: this.expansionModel.isExpandedPredicate });\n\n this.iconModel = chain(this.nodeModel).map(node => {\n return DecoratedTreeNode.getDecorator(this.node).isLeaf() ? undefined : this.iconFactory(node, this.expansionModel.isExpanded(this.node));\n }, { dependsOn: this.expansionModel.isExpandedPredicate });\n }\n\n @HostBinding('class.root')\n get isRoot() {\n return DecoratedTreeNode.getDecorator(this.node).isRoot();\n }\n\n @HostBinding('class.leaf')\n get isLeaf() {\n return DecoratedTreeNode.getDecorator(this.node).isLeaf();\n }\n\n get node() {\n return this.nodeModel.value;\n }\n\n // @Trace()\n expandOrCollapse(node: DecoratedTreeNode<T>) {\n this.expansionModel.isCollapsed(node) ? this.expansionModel.expand(node) : this.expansionModel.collapse(node);\n }\n}\n"]}