@guiexpert/table 1.0.11 → 1.0.13

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 (145) hide show
  1. package/README.md +3 -3
  2. package/index.cjs +314 -0
  3. package/index.js +3721 -0
  4. package/lib/table/data/tablemodel/areamodel/async-area-model-object-array.d.ts +28 -0
  5. package/package.json +14 -13
  6. package/esm2022/guiexpert-table.mjs +0 -5
  7. package/esm2022/index.mjs +0 -140
  8. package/esm2022/lib/table/action/action-id.type.mjs +0 -20
  9. package/esm2022/lib/table/action/on-action-triggered.if.mjs +0 -2
  10. package/esm2022/lib/table/action/osx-shortcut-actionId-mapping.mjs +0 -21
  11. package/esm2022/lib/table/action/shortcut-actionid-mapping.type.mjs +0 -2
  12. package/esm2022/lib/table/action/shortcut.service.mjs +0 -114
  13. package/esm2022/lib/table/action/windows-shortcut-actionId-mapping.mjs +0 -19
  14. package/esm2022/lib/table/checkbox/checkbox-model.if.mjs +0 -2
  15. package/esm2022/lib/table/checkbox/checkbox-model.mjs +0 -50
  16. package/esm2022/lib/table/checkbox/tree-checkbox-model.mjs +0 -107
  17. package/esm2022/lib/table/color/color-rgb.if.mjs +0 -2
  18. package/esm2022/lib/table/color/color-rgb.mjs +0 -11
  19. package/esm2022/lib/table/color/ge-css-color-util.mjs +0 -26
  20. package/esm2022/lib/table/color/three-color-gradient-arg.if.mjs +0 -2
  21. package/esm2022/lib/table/color/three-color-gradient-arg.mjs +0 -17
  22. package/esm2022/lib/table/color/two-color-gradient-arg.if.mjs +0 -2
  23. package/esm2022/lib/table/color/two-color-gradient-arg.mjs +0 -13
  24. package/esm2022/lib/table/css-vars.mjs +0 -238
  25. package/esm2022/lib/table/data/chunk/chunk.data-event.if.mjs +0 -2
  26. package/esm2022/lib/table/data/chunk/chunk.data-event.mjs +0 -12
  27. package/esm2022/lib/table/data/chunk/request-chunk.if.mjs +0 -2
  28. package/esm2022/lib/table/data/chunk/request-chunk.mjs +0 -22
  29. package/esm2022/lib/table/data/common/aligns.mjs +0 -19
  30. package/esm2022/lib/table/data/common/area-map-factory.mjs +0 -7
  31. package/esm2022/lib/table/data/common/area-map.mjs +0 -11
  32. package/esm2022/lib/table/data/common/area-map.type.mjs +0 -2
  33. package/esm2022/lib/table/data/common/args-adjust-columns-to-row-parent-params.mjs +0 -2
  34. package/esm2022/lib/table/data/common/args-render-cell-div.mjs +0 -2
  35. package/esm2022/lib/table/data/common/boolean-function.mjs +0 -3
  36. package/esm2022/lib/table/data/common/cell-range.mjs +0 -36
  37. package/esm2022/lib/table/data/common/checkbox-column-def.mjs +0 -13
  38. package/esm2022/lib/table/data/common/checked-type.mjs +0 -2
  39. package/esm2022/lib/table/data/common/event/ge-cell-indices.mjs +0 -9
  40. package/esm2022/lib/table/data/common/event/ge-key-event.mjs +0 -9
  41. package/esm2022/lib/table/data/common/event/ge-model-change-event.mjs +0 -11
  42. package/esm2022/lib/table/data/common/event/ge-mouse-event.mjs +0 -30
  43. package/esm2022/lib/table/data/common/event/input/table-cell-update-event.if.mjs +0 -2
  44. package/esm2022/lib/table/data/common/event/input/table-cell-update-event.mjs +0 -13
  45. package/esm2022/lib/table/data/common/filter-function.mjs +0 -2
  46. package/esm2022/lib/table/data/common/get-t.mjs +0 -2
  47. package/esm2022/lib/table/data/common/index-and-px.mjs +0 -9
  48. package/esm2022/lib/table/data/common/size.if.mjs +0 -2
  49. package/esm2022/lib/table/data/common/size.mjs +0 -9
  50. package/esm2022/lib/table/data/common/sizes.mjs +0 -33
  51. package/esm2022/lib/table/data/common/sort-item.mjs +0 -9
  52. package/esm2022/lib/table/data/common/sort-state.type.mjs +0 -2
  53. package/esm2022/lib/table/data/common/tree-arrow.type.mjs +0 -2
  54. package/esm2022/lib/table/data/common/tree-row-if.mjs +0 -2
  55. package/esm2022/lib/table/data/common/tree-row.mjs +0 -19
  56. package/esm2022/lib/table/data/common/value-label.if.mjs +0 -2
  57. package/esm2022/lib/table/data/common/value-label.mjs +0 -9
  58. package/esm2022/lib/table/data/div-scope.type.mjs +0 -2
  59. package/esm2022/lib/table/data/event/mouse-target-data.mjs +0 -36
  60. package/esm2022/lib/table/data/geo-data.mjs +0 -15
  61. package/esm2022/lib/table/data/options/auto-restore-options.if.mjs +0 -2
  62. package/esm2022/lib/table/data/options/auto-restore-options.mjs +0 -40
  63. package/esm2022/lib/table/data/options/default-row-heights.if.mjs +0 -2
  64. package/esm2022/lib/table/data/options/default-row-heights.mjs +0 -11
  65. package/esm2022/lib/table/data/options/icon.if.mjs +0 -2
  66. package/esm2022/lib/table/data/options/icon.mjs +0 -11
  67. package/esm2022/lib/table/data/options/sorted-options.if.mjs +0 -2
  68. package/esm2022/lib/table/data/options/sorted-options.mjs +0 -12
  69. package/esm2022/lib/table/data/options/table-options.if.mjs +0 -2
  70. package/esm2022/lib/table/data/options/table-options.mjs +0 -44
  71. package/esm2022/lib/table/data/options/tree-options.if.mjs +0 -2
  72. package/esm2022/lib/table/data/options/tree-options.mjs +0 -14
  73. package/esm2022/lib/table/data/side-ident.type.mjs +0 -2
  74. package/esm2022/lib/table/data/table-model-and-options.if.mjs +0 -2
  75. package/esm2022/lib/table/data/table-model-and-options.mjs +0 -9
  76. package/esm2022/lib/table/data/tablemodel/area-ident.type.mjs +0 -14
  77. package/esm2022/lib/table/data/tablemodel/areamodel/abstract-area-model.mjs +0 -137
  78. package/esm2022/lib/table/data/tablemodel/areamodel/area-model-array-of-arrays.mjs +0 -47
  79. package/esm2022/lib/table/data/tablemodel/areamodel/area-model-cell-groups.mjs +0 -163
  80. package/esm2022/lib/table/data/tablemodel/areamodel/area-model-hidden.mjs +0 -84
  81. package/esm2022/lib/table/data/tablemodel/areamodel/area-model-object-array-with-columndefs.mjs +0 -15
  82. package/esm2022/lib/table/data/tablemodel/areamodel/area-model-object-array.mjs +0 -88
  83. package/esm2022/lib/table/data/tablemodel/areamodel/area-model-tree.mjs +0 -181
  84. package/esm2022/lib/table/data/tablemodel/areamodel/area-model.if.mjs +0 -2
  85. package/esm2022/lib/table/data/tablemodel/areamodel/area-model.mjs +0 -76
  86. package/esm2022/lib/table/data/tablemodel/areamodel/col-and-rowspan-model.mjs +0 -51
  87. package/esm2022/lib/table/data/tablemodel/areamodel/has-default-row-height-if.mjs +0 -2
  88. package/esm2022/lib/table/data/tablemodel/cellgroup/cell-group-ext.mjs +0 -133
  89. package/esm2022/lib/table/data/tablemodel/cellgroup/cell-group.if.mjs +0 -2
  90. package/esm2022/lib/table/data/tablemodel/cellgroup/cell-group.mjs +0 -18
  91. package/esm2022/lib/table/data/tablemodel/cellgroup/cellgroup-factory.mjs +0 -110
  92. package/esm2022/lib/table/data/tablemodel/column/column-def.if.mjs +0 -2
  93. package/esm2022/lib/table/data/tablemodel/column/column-def.mjs +0 -52
  94. package/esm2022/lib/table/data/tablemodel/padding.mjs +0 -13
  95. package/esm2022/lib/table/data/tablemodel/table-model.if.mjs +0 -2
  96. package/esm2022/lib/table/data/tablemodel/table-model.mjs +0 -308
  97. package/esm2022/lib/table/ele-scope.mjs +0 -199
  98. package/esm2022/lib/table/event-adapter.mjs +0 -17
  99. package/esm2022/lib/table/event-listener.if.mjs +0 -2
  100. package/esm2022/lib/table/factory/table-factory.mjs +0 -186
  101. package/esm2022/lib/table/factory/tree-factory.mjs +0 -32
  102. package/esm2022/lib/table/focus/focus-model.if.mjs +0 -2
  103. package/esm2022/lib/table/focus/focus-model.mjs +0 -33
  104. package/esm2022/lib/table/focus/focus.type.mjs +0 -2
  105. package/esm2022/lib/table/input-handler.mjs +0 -25
  106. package/esm2022/lib/table/mouse-handler.mjs +0 -196
  107. package/esm2022/lib/table/render-scope.mjs +0 -719
  108. package/esm2022/lib/table/renderer/cell-group-ext-cell-renderer.mjs +0 -8
  109. package/esm2022/lib/table/renderer/cell-render.if.mjs +0 -2
  110. package/esm2022/lib/table/renderer/checkbox-boolean-property-cell-renderer.mjs +0 -47
  111. package/esm2022/lib/table/renderer/checkbox-cell-renderer.mjs +0 -22
  112. package/esm2022/lib/table/renderer/date-to-int-date-cell-renderer.mjs +0 -24
  113. package/esm2022/lib/table/renderer/date-to-iso-cell-renderer.mjs +0 -9
  114. package/esm2022/lib/table/renderer/date-to-locale-date-cell-renderer.mjs +0 -9
  115. package/esm2022/lib/table/renderer/date-to-tec-cell-renderer.mjs +0 -12
  116. package/esm2022/lib/table/renderer/edit/edit-cell-renderer.type.mjs +0 -2
  117. package/esm2022/lib/table/renderer/edit/edit-input-pipe-for-number.mjs +0 -4
  118. package/esm2022/lib/table/renderer/edit/edit-input-pipe.if.mjs +0 -2
  119. package/esm2022/lib/table/renderer/edit/input-cell-renderer.mjs +0 -23
  120. package/esm2022/lib/table/renderer/edit/select-cell-renderer.mjs +0 -36
  121. package/esm2022/lib/table/renderer/male-female-to-icon-cell-renderer.mjs +0 -12
  122. package/esm2022/lib/table/renderer/number-cell-renderer.mjs +0 -21
  123. package/esm2022/lib/table/renderer/progress-bar-cell-renderer.mjs +0 -44
  124. package/esm2022/lib/table/renderer/renderer-cleanup-fn.type.mjs +0 -2
  125. package/esm2022/lib/table/renderer/renderer.mjs +0 -7
  126. package/esm2022/lib/table/renderer/star-rating-cell-renderer.mjs +0 -27
  127. package/esm2022/lib/table/renderer/true-false-cell-renderer.mjs +0 -15
  128. package/esm2022/lib/table/selection/selection-model.if.mjs +0 -2
  129. package/esm2022/lib/table/selection/selection-model.mjs +0 -99
  130. package/esm2022/lib/table/selection/selection-service.mjs +0 -101
  131. package/esm2022/lib/table/selection/selection.type.mjs +0 -2
  132. package/esm2022/lib/table/service/abstract-store-state.service.mjs +0 -50
  133. package/esm2022/lib/table/service/convenience-dom.service.mjs +0 -405
  134. package/esm2022/lib/table/service/data/collapsed-expanded.data.mjs +0 -13
  135. package/esm2022/lib/table/service/data/html-style.type.mjs +0 -2
  136. package/esm2022/lib/table/service/dom-service.if.mjs +0 -2
  137. package/esm2022/lib/table/service/ge-filter.service.mjs +0 -98
  138. package/esm2022/lib/table/service/simple-dom-service.mjs +0 -34
  139. package/esm2022/lib/table/service/sorter.service.mjs +0 -27
  140. package/esm2022/lib/table/service/store-state-collapsed-expand.service.mjs +0 -57
  141. package/esm2022/lib/table/service/store-state-scroll-pos.service.mjs +0 -29
  142. package/esm2022/lib/table/service/store-state-sorting.service.mjs +0 -29
  143. package/esm2022/lib/table/service/tree-row.service.mjs +0 -23
  144. package/esm2022/lib/table/table-api.mjs +0 -42
  145. package/esm2022/lib/table/table-scope.mjs +0 -364
@@ -1,110 +0,0 @@
1
- import { ColumnDef } from "../column/column-def";
2
- import { CellGroupExt } from "./cell-group-ext";
3
- export class CellgroupFactory {
4
- static buildColumnDefs(cellGroups, ret = []) {
5
- for (const cellGroup of cellGroups) {
6
- if (cellGroup.property) {
7
- ret.push(ColumnDef.create({
8
- property: cellGroup.property,
9
- headerLabel: cellGroup.data ? cellGroup.data : cellGroup.property,
10
- isVisible: () => {
11
- // @ts-ignore
12
- if (typeof cellGroup["isVisible"] === "function") {
13
- const cge = cellGroup;
14
- return cge.isVisible();
15
- }
16
- return true;
17
- }
18
- }));
19
- }
20
- if (cellGroup.children) {
21
- CellgroupFactory.buildColumnDefs(cellGroup.children, ret);
22
- }
23
- }
24
- return ret;
25
- }
26
- /*
27
- static buildDeepMap(
28
- cellGroups: CellGroupIf[],
29
- ret: { [key: string]: number } = {},
30
- deep = 0
31
- ): { [key: string]: number } {
32
-
33
- for (const cellGroup of cellGroups) {
34
- //if (cellGroup.property) {
35
- ret[cellGroup.data] = deep;
36
- //}
37
- if (cellGroup.children) {
38
- CellgroupFactory.buildDeepMap(cellGroup.children, ret, deep + 1);
39
- }
40
- }
41
- return ret;
42
- }
43
- */
44
- static buildGroupExts(cellGroups, ret = [], deep = 0, parent) {
45
- let last = undefined;
46
- for (let i = 0; i < cellGroups.length; i++) {
47
- const cellGroup = cellGroups[i];
48
- const cge = new CellGroupExt(cellGroup, deep, i, parent);
49
- if (last) {
50
- cge.leftNeighbour = last;
51
- last.rightNeighbour = cge;
52
- }
53
- ret.push(cge);
54
- if (cellGroup.children) {
55
- cge.children = CellgroupFactory.buildGroupExts(cellGroup.children, [], deep + 1, cge);
56
- }
57
- last = cge;
58
- }
59
- return ret;
60
- }
61
- static flattenGroupExts(cellGroups, ret = []) {
62
- for (const cellGroup of cellGroups) {
63
- ret.push(cellGroup);
64
- if (cellGroup.children) {
65
- CellgroupFactory.flattenGroupExts(cellGroup.children, ret);
66
- }
67
- }
68
- return ret;
69
- }
70
- /*
71
-
72
- Gold Hohenwarte
73
- Gold AB Gold CD HOH AB HOH CD
74
- . Gold A Gold B Gold C Gold D Gold Sum . HOH Loc HOH A HOH B HOH C HOH D
75
-
76
- */
77
- static buildArrayOfArrays(flatten, arrs) {
78
- let col = -1;
79
- let lastRowIdx = 99999;
80
- for (const cellGroup of flatten) {
81
- if (cellGroup.rowIndex <= lastRowIdx) {
82
- col++;
83
- for (let r = 0; r < arrs.length; r++) {
84
- arrs[r][col] = null;
85
- }
86
- }
87
- arrs[cellGroup.rowIndex][col] = cellGroup;
88
- lastRowIdx = cellGroup.rowIndex;
89
- if (cellGroup.ownColumn() && cellGroup.children?.length) {
90
- for (let r = cellGroup.rowIndex + 1; r < arrs.length; r++) {
91
- arrs[r][col] = undefined;
92
- }
93
- col++;
94
- for (let r = 0; r < arrs.length; r++) {
95
- arrs[r][col] = null;
96
- }
97
- }
98
- }
99
- return arrs;
100
- }
101
- static iterateThrowColumns(sb = [], cellGroups) {
102
- for (const cellGroup of cellGroups) {
103
- sb.push(cellGroup.data + " rowIndex:" + cellGroup.rowIndex);
104
- if (cellGroup.children?.length) {
105
- CellgroupFactory.iterateThrowColumns(sb, cellGroup.children);
106
- }
107
- }
108
- }
109
- }
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VsbGdyb3VwLWZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3RhYmxlL3NyYy9saWIvdGFibGUvZGF0YS90YWJsZW1vZGVsL2NlbGxncm91cC9jZWxsZ3JvdXAtZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWhELE1BQU0sT0FBTyxnQkFBZ0I7SUFHM0IsTUFBTSxDQUFDLGVBQWUsQ0FDcEIsVUFBeUIsRUFDekIsTUFBcUIsRUFBRTtRQUd2QixLQUFLLE1BQU0sU0FBUyxJQUFJLFVBQVUsRUFBRTtZQUNsQyxJQUFJLFNBQVMsQ0FBQyxRQUFRLEVBQUU7Z0JBQ3RCLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztvQkFDdEIsUUFBUSxFQUFFLFNBQVMsQ0FBQyxRQUFRO29CQUM1QixXQUFXLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVE7b0JBQ2pFLFNBQVMsRUFBRSxHQUFHLEVBQUU7d0JBQ2QsYUFBYTt3QkFDYixJQUFJLE9BQU8sU0FBUyxDQUFDLFdBQVcsQ0FBQyxLQUFLLFVBQVUsRUFBRTs0QkFDaEQsTUFBTSxHQUFHLEdBQUcsU0FBeUIsQ0FBQzs0QkFDdEMsT0FBTyxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUM7eUJBQ3hCO3dCQUNELE9BQU8sSUFBSSxDQUFDO29CQUNkLENBQUM7aUJBQ0YsQ0FBQyxDQUNILENBQUM7YUFDSDtZQUNELElBQUksU0FBUyxDQUFDLFFBQVEsRUFBRTtnQkFDdEIsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxD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TUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO29CQUNwQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO2lCQUNyQjthQUNGO1NBQ0Y7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFHRCxNQUFNLENBQUMsbUJBQW1CLENBQ3hCLEtBQWUsRUFBRSxFQUNqQixVQUEwQjtRQUcxQixLQUFLLE1BQU0sU0FBUyxJQUFJLFVBQVUsRUFBRTtZQUNsQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsZUFBZSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMvRCxJQUFJLFNBQVMsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFO2dCQUM5QixnQkFBZ0IsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzlEO1NBQ0Y7SUFDSCxDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZWxsR3JvdXBJZiB9IGZyb20gXCIuL2NlbGwtZ3JvdXAuaWZcIjtcbmltcG9ydCB7IENvbHVtbkRlZklmIH0gZnJvbSBcIi4uL2NvbHVtbi9jb2x1bW4tZGVmLmlmXCI7XG5pbXBvcnQgeyBDb2x1bW5EZWYgfSBmcm9tIFwiLi4vY29sdW1uL2NvbHVtbi1kZWZcIjtcbmltcG9ydCB7IENlbGxHcm91cEV4dCB9IGZyb20gXCIuL2NlbGwtZ3JvdXAtZXh0XCI7XG5cbmV4cG9ydCBjbGFzcyBDZWxsZ3JvdXBGYWN0b3J5IHtcblxuXG4gIHN0YXRpYyBidWlsZENvbHVtbkRlZnMoXG4gICAgY2VsbEdyb3VwczogQ2VsbEdyb3VwSWZbXSxcbiAgICByZXQ6IENvbHVtbkRlZklmW10gPSBbXVxuICApOiBDb2x1bW5EZWZJZltdIHtcblxuICAgIGZvciAoY29uc3QgY2VsbEdyb3VwIG9mIGNlbGxHcm91cHMpIHtcbiAgICAgIGlmIChjZWxsR3JvdXAucHJvcGVydHkpIHtcbiAgICAgICAgcmV0LnB1c2goQ29sdW1uRGVmLmNyZWF0ZSh7XG4gICAgICAgICAgICBwcm9wZXJ0eTogY2VsbEdyb3VwLnByb3BlcnR5LFxuICAgICAgICAgICAgaGVhZGVyTGFiZWw6IGNlbGxHcm91cC5kYXRhID8gY2VsbEdyb3VwLmRhdGEgOiBjZWxsR3JvdXAucHJvcGVydHksXG4gICAgICAgICAgICBpc1Zpc2libGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICBpZiAodHlwZW9mIGNlbGxHcm91cFtcImlzVmlzaWJsZVwiXSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2dlID0gY2VsbEdyb3VwIGFzIENlbGxHcm91cEV4dDtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2dlLmlzVmlzaWJsZSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoY2VsbEdyb3VwLmNoaWxkcmVuKSB7XG4gICAgICAgIENlbGxncm91cEZhY3RvcnkuYnVpbGRDb2x1bW5EZWZzKGNlbGxHcm91cC5jaGlsZHJlbiwgcmV0KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfVxuLypcbiAgc3RhdGljIGJ1aWxkRGVlcE1hcChcbiAgICBjZWxsR3JvdXBzOiBDZWxsR3JvdXBJZltdLFxuICAgIHJldDogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHt9LFxuICAgIGRlZXAgPSAwXG4gICk6IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH0ge1xuXG4gICAgZm9yIChjb25zdCBjZWxsR3JvdXAgb2YgY2VsbEdyb3Vwcykge1xuICAgICAgLy9pZiAoY2VsbEdyb3VwLnByb3BlcnR5KSB7XG4gICAgICByZXRbY2VsbEdyb3VwLmRhdGFdID0gZGVlcDtcbiAgICAgIC8vfVxuICAgICAgaWYgKGNlbGxHcm91cC5jaGlsZHJlbikge1xuICAgICAgICBDZWxsZ3JvdXBGYWN0b3J5LmJ1aWxkRGVlcE1hcChjZWxsR3JvdXAuY2hpbGRyZW4sIHJldCwgZGVlcCArIDEpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmV0O1xuICB9XG4qL1xuICBzdGF0aWMgYnVpbGRHcm91cEV4dHMoXG4gICAgY2VsbEdyb3VwczogQ2VsbEdyb3VwSWZbXSxcbiAgICByZXQ6IENlbGxHcm91cEV4dFtdID0gW10sXG4gICAgZGVlcCA9IDAsXG4gICAgcGFyZW50PzogQ2VsbEdyb3VwRXh0XG4gICk6IENlbGxHcm91cEV4dFtdIHtcblxuICAgIGxldCBsYXN0OiBDZWxsR3JvdXBFeHQgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjZWxsR3JvdXBzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBjZWxsR3JvdXAgPSBjZWxsR3JvdXBzW2ldO1xuICAgICAgY29uc3QgY2dlID0gbmV3IENlbGxHcm91cEV4dChjZWxsR3JvdXAsIGRlZXAsIGksIHBhcmVudCk7XG5cbiAgICAgIGlmIChsYXN0KSB7XG4gICAgICAgIGNnZS5sZWZ0TmVpZ2hib3VyID0gbGFzdDtcbiAgICAgICAgbGFzdC5yaWdodE5laWdoYm91ciA9IGNnZTtcbiAgICAgIH1cbiAgICAgIHJldC5wdXNoKGNnZSk7XG4gICAgICBpZiAoY2VsbEdyb3VwLmNoaWxkcmVuKSB7XG4gICAgICAgIGNnZS5jaGlsZHJlbiA9IENlbGxncm91cEZhY3RvcnkuYnVpbGRHcm91cEV4dHMoY2VsbEdyb3VwLmNoaWxkcmVuLCBbXSwgZGVlcCArIDEsIGNnZSk7XG4gICAgICB9XG4gICAgICBsYXN0ID0gY2dlO1xuICAgIH1cbiAgICByZXR1cm4gcmV0O1xuICB9XG5cblxuICBzdGF0aWMgZmxhdHRlbkdyb3VwRXh0cyhcbiAgICBjZWxsR3JvdXBzOiBDZWxsR3JvdXBFeHRbXSxcbiAgICByZXQ6IENlbGxHcm91cEV4dFtdID0gW11cbiAgKTogQ2VsbEdyb3VwRXh0W10ge1xuXG4gICAgZm9yIChjb25zdCBjZWxsR3JvdXAgb2YgY2VsbEdyb3Vwcykge1xuICAgICAgcmV0LnB1c2goY2VsbEdyb3VwKTtcbiAgICAgIGlmIChjZWxsR3JvdXAuY2hpbGRyZW4pIHtcbiAgICAgICAgQ2VsbGdyb3VwRmFjdG9yeS5mbGF0dGVuR3JvdXBFeHRzKGNlbGxHcm91cC5jaGlsZHJlbiwgcmV0KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIC8qXG5cbiAgR29sZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSG9oZW53YXJ0ZVxuICBHb2xkIEFCICAgICAgICAgICAgICAgICAgICAgICAgIEdvbGQgQ0QgICAgICAgICAgICAgICAgICAgICAgICBIT0ggQUIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSE9IIENEXG4gIC4gICAgICAgICAgR29sZCBBICAgICBHb2xkIEIgICAgR29sZCBDICAgR29sZCBEICAgIEdvbGQgU3VtICAgIC4gICAgICAgICAgIEhPSCBMb2MgICAgSE9IIEEgICAgSE9IIEIgICBIT0ggQyAgICBIT0ggRFxuXG4gICovXG5cbiAgc3RhdGljIGJ1aWxkQXJyYXlPZkFycmF5cyhcbiAgICBmbGF0dGVuOiBDZWxsR3JvdXBFeHRbXSxcbiAgICBhcnJzOiAoQ2VsbEdyb3VwRXh0IHwgbnVsbCB8IHVuZGVmaW5lZClbXVtdXG4gICk6IChDZWxsR3JvdXBFeHQgfCBudWxsIHwgdW5kZWZpbmVkKVtdW10ge1xuXG4gICAgbGV0IGNvbCA9IC0xO1xuICAgIGxldCBsYXN0Um93SWR4ID0gOTk5OTk7XG4gICAgZm9yIChjb25zdCBjZWxsR3JvdXAgb2YgZmxhdHRlbikge1xuICAgICAgaWYgKGNlbGxHcm91cC5yb3dJbmRleCA8PSBsYXN0Um93SWR4KSB7XG4gICAgICAgIGNvbCsrO1xuICAgICAgICBmb3IgKGxldCByID0gMDsgciA8IGFycnMubGVuZ3RoOyByKyspIHtcbiAgICAgICAgICBhcnJzW3JdW2NvbF0gPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGFycnNbY2VsbEdyb3VwLnJvd0luZGV4XVtjb2xdID0gY2VsbEdyb3VwO1xuICAgICAgbGFzdFJvd0lkeCA9IGNlbGxHcm91cC5yb3dJbmRleDtcblxuICAgICAgaWYgKGNlbGxHcm91cC5vd25Db2x1bW4oKSAmJiBjZWxsR3JvdXAuY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICBmb3IgKGxldCByID0gY2VsbEdyb3VwLnJvd0luZGV4ICsgMTsgciA8IGFycnMubGVuZ3RoOyByKyspIHtcbiAgICAgICAgICBhcnJzW3JdW2NvbF0gPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29sKys7XG4gICAgICAgIGZvciAobGV0IHIgPSAwOyByIDwgYXJycy5sZW5ndGg7IHIrKykge1xuICAgICAgICAgIGFycnNbcl1bY29sXSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFycnM7XG4gIH1cblxuXG4gIHN0YXRpYyBpdGVyYXRlVGhyb3dDb2x1bW5zKFxuICAgIHNiOiBzdHJpbmdbXSA9IFtdLFxuICAgIGNlbGxHcm91cHM6IENlbGxHcm91cEV4dFtdXG4gICkge1xuXG4gICAgZm9yIChjb25zdCBjZWxsR3JvdXAgb2YgY2VsbEdyb3Vwcykge1xuICAgICAgc2IucHVzaChjZWxsR3JvdXAuZGF0YSArIFwiICAgIHJvd0luZGV4OlwiICsgY2VsbEdyb3VwLnJvd0luZGV4KTtcbiAgICAgIGlmIChjZWxsR3JvdXAuY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICBDZWxsZ3JvdXBGYWN0b3J5Lml0ZXJhdGVUaHJvd0NvbHVtbnMoc2IsIGNlbGxHcm91cC5jaGlsZHJlbik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbn1cblxuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLWRlZi5pZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdGFibGUvc3JjL2xpYi90YWJsZS9kYXRhL3RhYmxlbW9kZWwvY29sdW1uL2NvbHVtbi1kZWYuaWYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNpemVJZiB9IGZyb20gXCIuLi8uLi9jb21tb24vc2l6ZS5pZlwiO1xuaW1wb3J0IHsgQ2VsbFJlbmRlcmVySWYgfSBmcm9tIFwiLi4vLi4vLi4vcmVuZGVyZXIvY2VsbC1yZW5kZXIuaWZcIjtcbmltcG9ydCB7IEFyZWFPYmplY3RNYXBUeXBlIH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9hcmVhLW1hcC50eXBlXCI7XG5pbXBvcnQgeyBCb29sZWFuRnVuY3Rpb24gfSBmcm9tIFwiLi4vLi4vY29tbW9uL2Jvb2xlYW4tZnVuY3Rpb25cIjtcbmltcG9ydCB7IFNvcnRTdGF0ZSB9IGZyb20gXCIuLi8uLi9jb21tb24vc29ydC1zdGF0ZS50eXBlXCI7XG5pbXBvcnQgeyBHZXRFZGl0UmVuZGVyZXIgfSBmcm9tIFwiLi4vLi4vLi4vcmVuZGVyZXIvZWRpdC9lZGl0LWNlbGwtcmVuZGVyZXIudHlwZVwiO1xuaW1wb3J0IHsgZWRpdElucHV0UGlwZSB9IGZyb20gXCIuLi8uLi8uLi9yZW5kZXJlci9lZGl0L2VkaXQtaW5wdXQtcGlwZS5pZlwiO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29sdW1uRGVmSWYge1xuICBwcm9wZXJ0eTogc3RyaW5nO1xuICBoZWFkZXJMYWJlbDogc3RyaW5nO1xuICB3aWR0aDogU2l6ZUlmO1xuICBtaW5XaWR0aDogU2l6ZUlmO1xuICBtYXhXaWR0aDogU2l6ZUlmO1xuICByZW5kZXJlck1hcDogQXJlYU9iamVjdE1hcFR5cGU8Q2VsbFJlbmRlcmVySWY+O1xuICBjbGFzc2VzOiBBcmVhT2JqZWN0TWFwVHlwZTxzdHJpbmdbXT47XG4gIHNvcnRhYmxlPzogQm9vbGVhbkZ1bmN0aW9uLFxuICBzb3J0SWNvblZpc2libGU/OiBCb29sZWFuRnVuY3Rpb24sXG4gIHNvcnRDb21wYXJhdG9yPzogPFQ+KGE6IFQsIGI6IFQpID0+IG51bWJlcixcbiAgc29ydFN0YXRlPzogU29ydFN0YXRlLFxuICBzb3J0U3RhdGVzT3JkZXI/OiBTb3J0U3RhdGVbXSxcbiAgZWRpdGFibGU/OiBCb29sZWFuRnVuY3Rpb24sXG4gIGlzVmlzaWJsZT86IEJvb2xlYW5GdW5jdGlvbixcbiAgZ2V0RWRpdFJlbmRlcmVyPzogR2V0RWRpdFJlbmRlcmVyLFxuICBlZGl0SW5wdXRQaXBlPzogZWRpdElucHV0UGlwZVxufVxuXG4iXX0=
@@ -1,52 +0,0 @@
1
- import { Size } from "../../common/size";
2
- import { AreaObjectMap } from "../../common/area-map";
3
- import { FalseFn, TrueFn } from "../../common/boolean-function";
4
- export class ColumnDef {
5
- property;
6
- headerLabel;
7
- width;
8
- classes;
9
- rendererMap;
10
- minWidth;
11
- maxWidth;
12
- sortable;
13
- sortComparator;
14
- sortState;
15
- sortStatesOrder;
16
- sortIconVisible;
17
- editable;
18
- getEditRenderer;
19
- editInputPipe;
20
- isVisible;
21
- visible = true;
22
- constructor(property, headerLabel, width = new Size(100, "px"), classes = new AreaObjectMap(), rendererMap = new AreaObjectMap(), minWidth = new Size(100, "px"), maxWidth = new Size(100, "px"), sortable, sortComparator, sortState, sortStatesOrder, sortIconVisible, editable, getEditRenderer, editInputPipe, isVisible = () => this.visible) {
23
- this.property = property;
24
- this.headerLabel = headerLabel;
25
- this.width = width;
26
- this.classes = classes;
27
- this.rendererMap = rendererMap;
28
- this.minWidth = minWidth;
29
- this.maxWidth = maxWidth;
30
- this.sortable = sortable;
31
- this.sortComparator = sortComparator;
32
- this.sortState = sortState;
33
- this.sortStatesOrder = sortStatesOrder;
34
- this.sortIconVisible = sortIconVisible;
35
- this.editable = editable;
36
- this.getEditRenderer = getEditRenderer;
37
- this.editInputPipe = editInputPipe;
38
- this.isVisible = isVisible;
39
- }
40
- static bodyRenderer(bodyRenderer) {
41
- return new AreaObjectMap(undefined, bodyRenderer, undefined);
42
- }
43
- static create(param) {
44
- const am = new AreaObjectMap(param.headerRenderer, param.bodyRenderer, param.footerRenderer);
45
- const cm = new AreaObjectMap(param.headerClasses, param.bodyClasses, param.footerClasses);
46
- const sortIconVisible = param.sortIconVisible ?? param.sortable ?? FalseFn;
47
- const editable = param.editable ?? param.editable ?? FalseFn;
48
- const isVisible = param.isVisible ?? param.isVisible ?? TrueFn;
49
- return new ColumnDef(param.property ?? "", param.headerLabel ?? "", param.width ?? new Size(100, "px"), cm, am, param.minWidth ?? new Size(100, "px"), param.maxWidth ?? new Size(100, "px"), param.sortable, param.sortComparator, param.sortState, param.sortStatesOrder, sortIconVisible, editable, param.getEditRenderer, param.editInputPipe, isVisible);
50
- }
51
- }
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLWRlZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdGFibGUvc3JjL2xpYi90YWJsZS9kYXRhL3RhYmxlbW9kZWwvY29sdW1uL2NvbHVtbi1kZWYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBS3pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQW1CLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQU1qRixNQUFNLE9BQU8sU0FBUztJQUtYO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBbEJGLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFFdEIsWUFDUyxRQUFnQixFQUNoQixXQUFtQixFQUNuQixRQUFnQixJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQ25DLFVBQXVDLElBQUksYUFBYSxFQUFZLEVBQ3BFLGNBQWlELElBQUksYUFBYSxFQUFrQixFQUNwRixXQUFtQixJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQ3RDLFdBQW1CLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFDdEMsUUFBMEIsRUFDMUIsY0FBMEMsRUFDMUMsU0FBcUIsRUFDckIsZUFBNkIsRUFDN0IsZUFBaUMsRUFDakMsUUFBMEIsRUFDMUIsZUFBaUMsRUFDakMsYUFBNkIsRUFDN0IsWUFBNkIsR0FBRSxFQUFFLENBQUEsSUFBSSxDQUFDLE9BQU87UUFmN0MsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUNoQixnQkFBVyxHQUFYLFdBQVcsQ0FBUTtRQUNuQixVQUFLLEdBQUwsS0FBSyxDQUE4QjtRQUNuQyxZQUFPLEdBQVAsT0FBTyxDQUE2RDtRQUNwRSxnQkFBVyxHQUFYLFdBQVcsQ0FBeUU7UUFDcEYsYUFBUSxHQUFSLFFBQVEsQ0FBOEI7UUFDdEMsYUFBUSxHQUFSLFFBQVEsQ0FBOEI7UUFDdEMsYUFBUSxHQUFSLFFBQVEsQ0FBa0I7UUFDMUIsbUJBQWMsR0FBZCxjQUFjLENBQTRCO1FBQzFDLGNBQVMsR0FBVCxTQUFTLENBQVk7UUFDckIsb0JBQWUsR0FBZixlQUFlLENBQWM7UUFDN0Isb0JBQWUsR0FBZixlQUFlLENBQWtCO1FBQ2pDLGFBQVEsR0FBUixRQUFRLENBQWtCO1FBQzFCLG9CQUFlLEdBQWYsZUFBZSxDQUFrQjtRQUNqQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZ0I7UUFDN0IsY0FBUyxHQUFULFNBQVMsQ0FBb0M7SUFFdEQsQ0FBQztJQUVELE1BQU0sQ0FBQyxZQUFZLENBQUMsWUFBNEI7UUFDOUMsT0FBTyxJQUFJLGFBQWEsQ0FDdEIsU0FBUyxFQUNULFlBQVksRUFDWixTQUFTLENBQ1YsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLEtBcUJiO1FBRUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxhQUFhLENBQzFCLEtBQUssQ0FBQyxjQUFjLEVBQ3BCLEtBQUssQ0FBQyxZQUFZLEVBQ2xCLEtBQUssQ0FBQyxjQUFjLENBQ3JCLENBQUM7UUFFRixNQUFNLEVBQUUsR0FBRyxJQUFJLGFBQWEsQ0FDMUIsS0FBSyxDQUFDLGFBQWEsRUFDbkIsS0FBSyxDQUFDLFdBQVcsRUFDakIsS0FBSyxDQUFDLGFBQWEsQ0FDcEIsQ0FBQztRQUVGLE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxlQUFlLElBQUksS0FBSyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUM7UUFDM0UsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQztRQUM3RCxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxJQUFJLEtBQUssQ0FBQyxTQUFTLElBQUksTUFBTSxDQUFDO1FBRS9ELE9BQU8sSUFBSSxTQUFTLENBQ2xCLEtBQUssQ0FBQyxRQUFRLElBQUksRUFBRSxFQUNwQixLQUFLLENBQUMsV0FBVyxJQUFJLEVBQUUsRUFDdkIsS0FBSyxDQUFDLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQ2xDLEVBQUUsRUFDRixFQUFFLEVBQ0YsS0FBSyxDQUFDLFFBQVEsSUFBSSxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQ3JDLEtBQUssQ0FBQyxRQUFRLElBQUksSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUNyQyxLQUFLLENBQUMsUUFBUSxFQUNkLEtBQUssQ0FBQyxjQUFjLEVBQ3BCLEtBQUssQ0FBQyxTQUFTLEVBQ2YsS0FBSyxDQUFDLGVBQWUsRUFDckIsZUFBZSxFQUNmLFFBQVEsRUFDUixLQUFLLENBQUMsZUFBZSxFQUNyQixLQUFLLENBQUMsYUFBYSxFQUNuQixTQUFTLENBQ1YsQ0FBQztJQUNKLENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNpemUgfSBmcm9tIFwiLi4vLi4vY29tbW9uL3NpemVcIjtcbmltcG9ydCB7IFNpemVJZiB9IGZyb20gXCIuLi8uLi9jb21tb24vc2l6ZS5pZlwiO1xuaW1wb3J0IHsgQ29sdW1uRGVmSWYgfSBmcm9tIFwiLi9jb2x1bW4tZGVmLmlmXCI7XG5pbXBvcnQgeyBDZWxsUmVuZGVyZXJJZiB9IGZyb20gXCIuLi8uLi8uLi9yZW5kZXJlci9jZWxsLXJlbmRlci5pZlwiO1xuaW1wb3J0IHsgQXJlYU9iamVjdE1hcFR5cGUgfSBmcm9tIFwiLi4vLi4vY29tbW9uL2FyZWEtbWFwLnR5cGVcIjtcbmltcG9ydCB7IEFyZWFPYmplY3RNYXAgfSBmcm9tIFwiLi4vLi4vY29tbW9uL2FyZWEtbWFwXCI7XG5pbXBvcnQgeyBCb29sZWFuRnVuY3Rpb24sIEZhbHNlRm4sIFRydWVGbiB9IGZyb20gXCIuLi8uLi9jb21tb24vYm9vbGVhbi1mdW5jdGlvblwiO1xuaW1wb3J0IHsgU29ydFN0YXRlIH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9zb3J0LXN0YXRlLnR5cGVcIjtcbmltcG9ydCB7IEdldEVkaXRSZW5kZXJlciB9IGZyb20gXCIuLi8uLi8uLi9yZW5kZXJlci9lZGl0L2VkaXQtY2VsbC1yZW5kZXJlci50eXBlXCI7XG5pbXBvcnQgeyBlZGl0SW5wdXRQaXBlIH0gZnJvbSBcIi4uLy4uLy4uL3JlbmRlcmVyL2VkaXQvZWRpdC1pbnB1dC1waXBlLmlmXCI7XG5cblxuZXhwb3J0IGNsYXNzIENvbHVtbkRlZiBpbXBsZW1lbnRzIENvbHVtbkRlZklmIHtcblxuICBwdWJsaWMgdmlzaWJsZSA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHByb3BlcnR5OiBzdHJpbmcsXG4gICAgcHVibGljIGhlYWRlckxhYmVsOiBzdHJpbmcsXG4gICAgcHVibGljIHdpZHRoOiBTaXplSWYgPSBuZXcgU2l6ZSgxMDAsIFwicHhcIiksXG4gICAgcHVibGljIGNsYXNzZXM6IEFyZWFPYmplY3RNYXBUeXBlPHN0cmluZ1tdPiA9IG5ldyBBcmVhT2JqZWN0TWFwPHN0cmluZ1tdPigpLFxuICAgIHB1YmxpYyByZW5kZXJlck1hcDogQXJlYU9iamVjdE1hcFR5cGU8Q2VsbFJlbmRlcmVySWY+ID0gbmV3IEFyZWFPYmplY3RNYXA8Q2VsbFJlbmRlcmVySWY+KCksXG4gICAgcHVibGljIG1pbldpZHRoOiBTaXplSWYgPSBuZXcgU2l6ZSgxMDAsIFwicHhcIiksXG4gICAgcHVibGljIG1heFdpZHRoOiBTaXplSWYgPSBuZXcgU2l6ZSgxMDAsIFwicHhcIiksXG4gICAgcHVibGljIHNvcnRhYmxlPzogQm9vbGVhbkZ1bmN0aW9uLFxuICAgIHB1YmxpYyBzb3J0Q29tcGFyYXRvcj86IDxUPihhOiBULCBiOiBUKSA9PiBudW1iZXIsXG4gICAgcHVibGljIHNvcnRTdGF0ZT86IFNvcnRTdGF0ZSxcbiAgICBwdWJsaWMgc29ydFN0YXRlc09yZGVyPzogU29ydFN0YXRlW10sXG4gICAgcHVibGljIHNvcnRJY29uVmlzaWJsZT86IEJvb2xlYW5GdW5jdGlvbixcbiAgICBwdWJsaWMgZWRpdGFibGU/OiBCb29sZWFuRnVuY3Rpb24sXG4gICAgcHVibGljIGdldEVkaXRSZW5kZXJlcj86IEdldEVkaXRSZW5kZXJlcixcbiAgICBwdWJsaWMgZWRpdElucHV0UGlwZT86IGVkaXRJbnB1dFBpcGUsXG4gICAgcHVibGljIGlzVmlzaWJsZTogQm9vbGVhbkZ1bmN0aW9uID0gKCk9PnRoaXMudmlzaWJsZVxuICApIHtcbiAgfVxuXG4gIHN0YXRpYyBib2R5UmVuZGVyZXIoYm9keVJlbmRlcmVyOiBDZWxsUmVuZGVyZXJJZikge1xuICAgIHJldHVybiBuZXcgQXJlYU9iamVjdE1hcDxDZWxsUmVuZGVyZXJJZj4oXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBib2R5UmVuZGVyZXIsXG4gICAgICB1bmRlZmluZWRcbiAgICApO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZShwYXJhbToge1xuICAgIHByb3BlcnR5Pzogc3RyaW5nLFxuICAgIGhlYWRlckxhYmVsPzogc3RyaW5nLFxuICAgIHdpZHRoPzogU2l6ZUlmLFxuICAgIG1pbldpZHRoPzogU2l6ZUlmLFxuICAgIG1heFdpZHRoPzogU2l6ZUlmLFxuICAgIGhlYWRlclJlbmRlcmVyPzogQ2VsbFJlbmRlcmVySWYsXG4gICAgYm9keVJlbmRlcmVyPzogQ2VsbFJlbmRlcmVySWYsXG4gICAgZm9vdGVyUmVuZGVyZXI/OiBDZWxsUmVuZGVyZXJJZixcbiAgICBoZWFkZXJDbGFzc2VzPzogc3RyaW5nW11cbiAgICBib2R5Q2xhc3Nlcz86IHN0cmluZ1tdXG4gICAgZm9vdGVyQ2xhc3Nlcz86IHN0cmluZ1tdLFxuICAgIHNvcnRhYmxlPzogQm9vbGVhbkZ1bmN0aW9uLFxuICAgIHNvcnRJY29uVmlzaWJsZT86IEJvb2xlYW5GdW5jdGlvbixcbiAgICBzb3J0Q29tcGFyYXRvcj86IDxUPihhOiBULCBiOiBUKSA9PiBudW1iZXIsXG4gICAgc29ydFN0YXRlPzogU29ydFN0YXRlLFxuICAgIHNvcnRTdGF0ZXNPcmRlcj86IFNvcnRTdGF0ZVtdLFxuICAgIGVkaXRhYmxlPzogQm9vbGVhbkZ1bmN0aW9uLFxuICAgIGlzVmlzaWJsZT86IEJvb2xlYW5GdW5jdGlvbixcbiAgICBnZXRFZGl0UmVuZGVyZXI/OiBHZXRFZGl0UmVuZGVyZXIsXG4gICAgZWRpdElucHV0UGlwZT86IGVkaXRJbnB1dFBpcGUsXG4gIH0pOiBDb2x1bW5EZWZJZiB7XG5cbiAgICBjb25zdCBhbSA9IG5ldyBBcmVhT2JqZWN0TWFwPENlbGxSZW5kZXJlcklmPihcbiAgICAgIHBhcmFtLmhlYWRlclJlbmRlcmVyLFxuICAgICAgcGFyYW0uYm9keVJlbmRlcmVyLFxuICAgICAgcGFyYW0uZm9vdGVyUmVuZGVyZXJcbiAgICApO1xuXG4gICAgY29uc3QgY20gPSBuZXcgQXJlYU9iamVjdE1hcDxzdHJpbmdbXT4oXG4gICAgICBwYXJhbS5oZWFkZXJDbGFzc2VzLFxuICAgICAgcGFyYW0uYm9keUNsYXNzZXMsXG4gICAgICBwYXJhbS5mb290ZXJDbGFzc2VzXG4gICAgKTtcblxuICAgIGNvbnN0IHNvcnRJY29uVmlzaWJsZSA9IHBhcmFtLnNvcnRJY29uVmlzaWJsZSA/PyBwYXJhbS5zb3J0YWJsZSA/PyBGYWxzZUZuO1xuICAgIGNvbnN0IGVkaXRhYmxlID0gcGFyYW0uZWRpdGFibGUgPz8gcGFyYW0uZWRpdGFibGUgPz8gRmFsc2VGbjtcbiAgICBjb25zdCBpc1Zpc2libGUgPSBwYXJhbS5pc1Zpc2libGUgPz8gcGFyYW0uaXNWaXNpYmxlID8/IFRydWVGbjtcblxuICAgIHJldHVybiBuZXcgQ29sdW1uRGVmKFxuICAgICAgcGFyYW0ucHJvcGVydHkgPz8gXCJcIixcbiAgICAgIHBhcmFtLmhlYWRlckxhYmVsID8/IFwiXCIsXG4gICAgICBwYXJhbS53aWR0aCA/PyBuZXcgU2l6ZSgxMDAsIFwicHhcIiksXG4gICAgICBjbSxcbiAgICAgIGFtLFxuICAgICAgcGFyYW0ubWluV2lkdGggPz8gbmV3IFNpemUoMTAwLCBcInB4XCIpLFxuICAgICAgcGFyYW0ubWF4V2lkdGggPz8gbmV3IFNpemUoMTAwLCBcInB4XCIpLFxuICAgICAgcGFyYW0uc29ydGFibGUsXG4gICAgICBwYXJhbS5zb3J0Q29tcGFyYXRvcixcbiAgICAgIHBhcmFtLnNvcnRTdGF0ZSxcbiAgICAgIHBhcmFtLnNvcnRTdGF0ZXNPcmRlcixcbiAgICAgIHNvcnRJY29uVmlzaWJsZSxcbiAgICAgIGVkaXRhYmxlLFxuICAgICAgcGFyYW0uZ2V0RWRpdFJlbmRlcmVyLFxuICAgICAgcGFyYW0uZWRpdElucHV0UGlwZSxcbiAgICAgIGlzVmlzaWJsZSxcbiAgICApO1xuICB9XG5cbn1cbiJdfQ==
@@ -1,13 +0,0 @@
1
- export class Padding {
2
- top;
3
- right;
4
- bottom;
5
- left;
6
- constructor(top = 0, right = 0, bottom = 0, left = 0) {
7
- this.top = top;
8
- this.right = right;
9
- this.bottom = bottom;
10
- this.left = left;
11
- }
12
- }
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFkZGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdGFibGUvc3JjL2xpYi90YWJsZS9kYXRhL3RhYmxlbW9kZWwvcGFkZGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sT0FBTztJQUVUO0lBQ0E7SUFDQTtJQUNBO0lBSlQsWUFDUyxNQUFjLENBQUMsRUFDZixRQUFnQixDQUFDLEVBQ2pCLFNBQWlCLENBQUMsRUFDbEIsT0FBZSxDQUFDO1FBSGhCLFFBQUcsR0FBSCxHQUFHLENBQVk7UUFDZixVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQ2pCLFdBQU0sR0FBTixNQUFNLENBQVk7UUFDbEIsU0FBSSxHQUFKLElBQUksQ0FBWTtJQUV6QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgUGFkZGluZyB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyB0b3A6IG51bWJlciA9IDAsXG4gICAgcHVibGljIHJpZ2h0OiBudW1iZXIgPSAwLFxuICAgIHB1YmxpYyBib3R0b206IG51bWJlciA9IDAsXG4gICAgcHVibGljIGxlZnQ6IG51bWJlciA9IDBcbiAgKSB7XG4gIH1cbn1cbiJdfQ==
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtbW9kZWwuaWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3RhYmxlL3NyYy9saWIvdGFibGUvZGF0YS90YWJsZW1vZGVsL3RhYmxlLW1vZGVsLmlmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYWRkaW5nIH0gZnJvbSBcIi4vcGFkZGluZ1wiO1xuaW1wb3J0IHsgQXJlYUlkZW50IH0gZnJvbSBcIi4vYXJlYS1pZGVudC50eXBlXCI7XG5pbXBvcnQgeyBDb2x1bW5EZWZJZiB9IGZyb20gXCIuL2NvbHVtbi9jb2x1bW4tZGVmLmlmXCI7XG5pbXBvcnQgeyBBcmVhTW9kZWxJZiB9IGZyb20gXCIuL2FyZWFtb2RlbC9hcmVhLW1vZGVsLmlmXCI7XG5pbXBvcnQgeyBGaWx0ZXJGdW5jdGlvbiB9IGZyb20gXCIuLi9jb21tb24vZmlsdGVyLWZ1bmN0aW9uXCI7XG5pbXBvcnQgeyBTb3J0SXRlbSB9IGZyb20gXCIuLi9jb21tb24vc29ydC1pdGVtXCI7XG5pbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbElmIH0gZnJvbSBcIi4uLy4uL3NlbGVjdGlvbi9zZWxlY3Rpb24tbW9kZWwuaWZcIjtcblxuLyoqXG4gKiBUaGUgVGFibGVNb2RlbElmIGlzIG9uIG9uZSBoYW5kIGEgY29udGFpbmVyIGZvciB0aGUgaGVhZGVyLCBib2R5LCBhbmQgZm9vdGVyIG1vZGVsc1xuICogKHNlZSA6ICNnZXRBcmVhTW9kZWwsIGFuZCAjQXJlYU1vZGVsSWYpLCBhbmQgb24gdGhlIG90aGVyIGhhbmQgdGhlIG1hc3RlciBvZlxuICogdGhlIGNvbHVtbiBpbmZvcm1hdGlvbiAoI2dldENvbHVtbkNvdW50KCksICNnZXRDb2x1bW5XaWR0aChjb2x1bW5JbmRleDogbnVtYmVyKSkuXG4gKlxuICogSWYgZ2V0Rml4ZWRMZWZ0Q29sdW1uQ291bnQoKSByZXR1cm5zIGEgdmFsdWUgZ3JlYXRlciB0aGFuIDAsIGEgZml4ZWQgd2VzdCBhcmVhIHdpbGwgYmUgcmVuZGVyZWQgaW4gdGhlXG4gKiBoZWFkZXIsIGJvZHksIGFuZCBmb290ZXIuIEEgdmFsdWUgZ3JlYXRlciB0aGFuIDAgZm9yIGdldEZpeGVkTGVmdENvbHVtbkNvdW50KClcbiAqIHdpbGwgcmVzdWx0IGluIHRoZSBwcmVzZW5jZSBvZiBhbiBlYXN0IGFyZWEuXG4gKiA8cHJlPlxuICogICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rXG4gKiAgfCAgaGVhZGVyL3dlc3QgICB8ICBoZWFkZXIvY2VudGVyICAgIHwgaGVhZGVyL2Vhc3QgIHxcbiAqICArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tK1xuICogIHwgIGJvZHkvd2VzdCAgICAgfCAgYm9keS9jZW50ZXIgICAgICB8IGJvZHkvZWFzdCAgICB8XG4gKiAgKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLStcbiAqICB8ICBmb290ZXIvd2VzdCAgIHwgIGZvb3Rlci9jZW50ZXIgICAgfCBmb290ZXIvZWFzdCAgfFxuICogICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rPC9wcmU+XG4gKlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlTW9kZWxJZiB7XG5cbiAgY2hhbmdlQ29sdW1uT3JkZXIoc291cmNlQ29sdW1uSW5kZXg6IG51bWJlciwgdGFyZ2V0Q29sdW1uSW5kZXg6IG51bWJlcik6IHZvaWQ7XG5cbiAgaXNTb3J0YWJsZShjb2xJZHg6IG51bWJlcik6IGJvb2xlYW47XG5cbiAgaW5pdCgpOiB2b2lkO1xuXG4gIGdldENvbHVtbkNvdW50KCk6IG51bWJlcjtcblxuICBnZXRDb2x1bW5XaWR0aChjb2x1bW5JbmRleDogbnVtYmVyKTogbnVtYmVyO1xuXG4gIGdldFhQb3NCeUNvbHVtbkluZGV4KGNvbHVtbkluZGV4OiBudW1iZXIpOiBudW1iZXI7XG5cbiAgZ2V0QXJlYU1vZGVsKHJvd0FyZWFJZGVudDogQXJlYUlkZW50KTogQXJlYU1vZGVsSWY7XG5cbiAgZ2V0Qm9keU1vZGVsKCk6IEFyZWFNb2RlbElmO1xuXG4gIGdldEZpeGVkTGVmdENvbHVtbkNvdW50KCk6IG51bWJlcjtcblxuICBnZXRGaXhlZFJpZ2h0Q29sdW1uQ291bnQoKTogbnVtYmVyO1xuXG4gIGlzSGVhZGVyVmlzaWJlKCk6IGJvb2xlYW47XG5cbiAgaXNGb290ZXJWaXNpYmUoKTogYm9vbGVhbjtcblxuICBpc1Jvd0NoZWNrYm94VmlzaWJsZSgpOiBib29sZWFuO1xuXG4gIGdldFJvd0hlaWdodChyb3dBcmVhSWRlbnQ6IEFyZWFJZGVudCwgcm93SW5kZXg6IG51bWJlcik6IG51bWJlcjtcblxuICBnZXRDb2x1bW5EZWYoaW5kZXg6IG51bWJlcik6IENvbHVtbkRlZklmIHwgdW5kZWZpbmVkO1xuXG4gIGdldENvbHVtbkRlZnMoKTogQ29sdW1uRGVmSWZbXSB8IHVuZGVmaW5lZDtcblxuICBnZXRDb2x1bW5Qcm9wZXJ0eShjb2x1bW5JbmRleDogbnVtYmVyKTogc3RyaW5nO1xuXG4gIGdldEJvZHlSb3dCeUluZGV4KHJvd0luZGV4OiBudW1iZXIpOiBhbnk7XG5cbiAgZ2V0Q29sdW1uV2lkdGgoY29sdW1uSW5kZXg6IG51bWJlcik6IG51bWJlcjtcblxuICBzZXRDb2x1bW5XaWR0aChjb2x1bW5JbmRleDogbnVtYmVyLCB3aWR0aDogbnVtYmVyKTogdm9pZDtcblxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgcmVjYWxjU2l6ZShjbGllbnRXaWR0aDogbnVtYmVyKTogdm9pZDtcblxuICByZWNhbGNQYWRkaW5nKCk6IHZvaWQ7XG5cbiAgcmVjYWxjSGVpZ2h0QW5kUGFkZGluZygpOiB2b2lkO1xuXG4gIGdldFBhZGRpbmcoKTogUGFkZGluZztcblxuICBnZXRDb250ZW50SGVpZ2h0SW5QaXhlbCgpOiBudW1iZXI7XG5cbiAgZ2V0Q29udGVudFdpZHRoSW5QaXhlbCgpOiBudW1iZXI7XG5cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIGV4dGVybmFsRmlsdGVyQ2hhbmdlZDxUPihwcmVkaWN0Rm46IEZpbHRlckZ1bmN0aW9uPFQ+KTogdm9pZDtcblxuICBkb1NvcnQoc29ydEl0ZW1zOiBTb3J0SXRlbVtdKTogYm9vbGVhbjtcblxuICBnZXRTZWxlY3Rpb25Nb2RlbCgpOiBTZWxlY3Rpb25Nb2RlbElmfHVuZGVmaW5lZDtcbn1cbiJdfQ==
@@ -1,308 +0,0 @@
1
- import { Padding } from "./padding";
2
- import { DefaultRowHeights } from "../options/default-row-heights";
3
- import { CheckboxColumnDef } from "../common/checkbox-column-def";
4
- import { CheckboxModel } from "../../checkbox/checkbox-model";
5
- /**
6
- * This is a default implementation of TableModelIf.
7
- * Ths TableModel is on one hand a container for the header, body, and footer models
8
- * (see : #getAreaModel, and #AreaModelIf), and on the other hand the master of
9
- * the column information (#getColumnCount(), #getColumnWidth(columnIndex: number)).
10
- *
11
- * If getFixedLeftColumnCount() returns a value greater than 0, a fixed west area will be rendered in the
12
- * header, body, and footer. A value greater than 0 for getFixedLeftColumnCount()
13
- * will result in the presence of an east area.
14
- *
15
- * <pre>
16
- * +----------------+-------------------+--------------+
17
- * | header/west | header/center | header/east |
18
- * +----------------+-------------------+--------------+
19
- * | body/west | body/center | body/east |
20
- * +----------------+-------------------+--------------+
21
- * | footer/west | footer/center | footer/east |
22
- * +----------------+-------------------+--------------+ </pre>
23
- *
24
- */
25
- export class TableModel {
26
- headerAreaModel;
27
- bodyAreaModel;
28
- footerAreaModel;
29
- fixedLeftColumnCount;
30
- fixedRightColumnCount;
31
- rowCheckboxVisible;
32
- defaultRowHeights;
33
- columnDefs;
34
- columnSizes;
35
- overridingColumnWidth;
36
- columnCount;
37
- parentSize;
38
- getSelectionModel;
39
- rowCount = 0;
40
- contentHeightInPx = 0;
41
- contentWidthInPx = 0;
42
- // in case of a fixed header, left or right column, footer:
43
- padding = new Padding(0, 0, 0, 0); // the dimension of the 'body/center'
44
- xPositions = [];
45
- constructor(headerAreaModel, bodyAreaModel, footerAreaModel, fixedLeftColumnCount = 0, fixedRightColumnCount = 0, rowCheckboxVisible = false, defaultRowHeights = new DefaultRowHeights(), columnDefs = [], columnSizes = [], overridingColumnWidth = -1, columnCount = 0, parentSize = 400, // can be important when we have percentage widthes,
46
- getSelectionModel = () => undefined) {
47
- this.headerAreaModel = headerAreaModel;
48
- this.bodyAreaModel = bodyAreaModel;
49
- this.footerAreaModel = footerAreaModel;
50
- this.fixedLeftColumnCount = fixedLeftColumnCount;
51
- this.fixedRightColumnCount = fixedRightColumnCount;
52
- this.rowCheckboxVisible = rowCheckboxVisible;
53
- this.defaultRowHeights = defaultRowHeights;
54
- this.columnDefs = columnDefs;
55
- this.columnSizes = columnSizes;
56
- this.overridingColumnWidth = overridingColumnWidth;
57
- this.columnCount = columnCount;
58
- this.parentSize = parentSize;
59
- this.getSelectionModel = getSelectionModel;
60
- headerAreaModel.areaIdent = "header";
61
- bodyAreaModel.areaIdent = "body";
62
- footerAreaModel.areaIdent = "footer";
63
- if (!this.columnCount) {
64
- if (this.columnDefs?.length) {
65
- this.columnCount = this.columnDefs.length;
66
- }
67
- else if (this.columnSizes?.length) {
68
- this.columnCount = this.columnSizes?.length;
69
- }
70
- }
71
- if (this.columnDefs?.length
72
- && this.columnDefs[0] instanceof CheckboxColumnDef
73
- && !bodyAreaModel.rowSelectionModel) {
74
- bodyAreaModel.rowSelectionModel = new CheckboxModel();
75
- }
76
- }
77
- init() {
78
- this.recalcSize(this.parentSize);
79
- if (this.overridingColumnWidth === -1) {
80
- this.calcXPositions();
81
- }
82
- if (this.headerAreaModel) {
83
- this.headerAreaModel.init();
84
- }
85
- if (this.bodyAreaModel) {
86
- this.bodyAreaModel.init();
87
- }
88
- if (this.footerAreaModel) {
89
- this.footerAreaModel.init();
90
- }
91
- }
92
- getColumnCount() {
93
- return this.columnCount;
94
- }
95
- ;
96
- setColumnWidth(columnIndex, width) {
97
- width = Math.max(0, width);
98
- if (this.overridingColumnWidth !== -1) {
99
- this.overridingColumnWidth = width;
100
- }
101
- if (columnIndex > -1 && columnIndex < this.columnSizes?.length) {
102
- this.columnSizes[columnIndex] = width;
103
- }
104
- this.recalcContentWidthInPx();
105
- }
106
- getColumnWidth(columnIndex) {
107
- const cd = this.getColumnDef(columnIndex);
108
- if (cd && cd.isVisible && !cd.isVisible()) {
109
- return 0;
110
- }
111
- if (this.overridingColumnWidth !== -1) {
112
- return this.overridingColumnWidth;
113
- }
114
- if (columnIndex > -1 && columnIndex < this.columnSizes?.length) {
115
- return this.columnSizes[columnIndex];
116
- }
117
- return 0;
118
- }
119
- ;
120
- getXPosByColumnIndex(columnIndex) {
121
- if (columnIndex === 0) {
122
- return 0;
123
- }
124
- if (this.overridingColumnWidth > -1) {
125
- return this.overridingColumnWidth * columnIndex;
126
- }
127
- return this.xPositions[columnIndex];
128
- }
129
- recalcSize(clientWidth) {
130
- this.recalcColumnWidthes(clientWidth);
131
- this.recalcHeightAndPadding();
132
- }
133
- recalcHeightAndPadding() {
134
- const bodyModel = this.getAreaModel("body");
135
- this.rowCount = bodyModel.getRowCount();
136
- this.contentHeightInPx = this.getAreaHeight("body");
137
- this.recalcContentWidthInPx();
138
- this.recalcPadding();
139
- }
140
- recalcPadding() {
141
- const westWidth = this.getSideAreaWidth("west");
142
- const eastWidth = this.getSideAreaWidth("east");
143
- const headerHeight = this.getAreaHeight("header");
144
- const footerHeight = this.getAreaHeight("footer");
145
- this.padding = new Padding(headerHeight, eastWidth, footerHeight, westWidth);
146
- }
147
- getPadding() {
148
- return this.padding;
149
- }
150
- getContentHeightInPixel() {
151
- return this.contentHeightInPx;
152
- }
153
- getContentWidthInPixel() {
154
- return this.contentWidthInPx;
155
- }
156
- getRowHeight(rowAreaIdent, rowIndex) {
157
- return this.getAreaModel(rowAreaIdent).getRowHeight(rowIndex);
158
- }
159
- getModel(rowAreaIdent) {
160
- return this.getAreaModel(rowAreaIdent);
161
- }
162
- getAreaHeight(areaIdent) {
163
- const model = this.getModel(areaIdent);
164
- const rowCount = model.getRowCount();
165
- if (this.defaultRowHeights[areaIdent]) {
166
- return rowCount * this.defaultRowHeights[areaIdent];
167
- }
168
- let ret = 0;
169
- for (let i = 0; i < rowCount; i++) {
170
- ret = ret + model.getRowHeight(i);
171
- }
172
- return ret;
173
- }
174
- getSideAreaWidth(sideIdent) {
175
- const [cStart, cEnd] = this.getSideStartAndEndColumnIndex(sideIdent);
176
- let ret = 0;
177
- for (let i = cStart; i <= cEnd; i++) {
178
- ret = ret + this.getColumnWidth(i);
179
- }
180
- return ret;
181
- }
182
- getSideStartAndEndColumnIndex(sideIdent) {
183
- const c1 = this.getFixedLeftColumnCount();
184
- const c2 = this.getFixedRightColumnCount();
185
- let cStart = 0;
186
- let cEnd = this.columnCount - 1;
187
- if (sideIdent === "west") {
188
- cEnd = c1 - 1;
189
- }
190
- else if (sideIdent === "east") {
191
- cStart = this.columnCount - c2;
192
- }
193
- else {
194
- // center:
195
- cStart = c1;
196
- cEnd = this.columnCount - c2 - 1;
197
- }
198
- return [cStart, cEnd];
199
- }
200
- getColumnDef(index) {
201
- if (index < this.columnDefs.length) {
202
- return this.columnDefs[index];
203
- }
204
- return undefined;
205
- }
206
- getFixedLeftColumnCount() {
207
- return this.fixedLeftColumnCount;
208
- }
209
- getFixedRightColumnCount() {
210
- return this.fixedRightColumnCount;
211
- }
212
- getAreaModel(area) {
213
- if (area === "header") {
214
- return this.headerAreaModel;
215
- }
216
- if (area === "body") {
217
- return this.bodyAreaModel;
218
- }
219
- if (area === "footer") {
220
- return this.footerAreaModel;
221
- }
222
- throw new Error("Wrong ident.");
223
- }
224
- getBodyModel() {
225
- return this.bodyAreaModel;
226
- }
227
- isFooterVisibe() {
228
- return (this.footerAreaModel?.getRowCount() ?? 0) > 0;
229
- }
230
- isHeaderVisibe() {
231
- return (this.headerAreaModel?.getRowCount() ?? 0) > 0;
232
- }
233
- isRowCheckboxVisible() {
234
- return this.rowCheckboxVisible;
235
- }
236
- externalFilterChanged(predictFn) {
237
- this.getAreaModel("body").externalFilterChanged(predictFn);
238
- }
239
- doSort(sortItems) {
240
- return this.getAreaModel("body").doSort(sortItems);
241
- }
242
- getColumnDefs() {
243
- return this.columnDefs;
244
- }
245
- getColumnProperty(columnIndex) {
246
- return this.columnDefs[columnIndex].property;
247
- }
248
- getBodyRowByIndex(rowIndex) {
249
- return this.getBodyModel().getRowByIndex(rowIndex);
250
- }
251
- isSortable(columnIndex) {
252
- if (this.columnDefs
253
- && columnIndex < this.columnDefs.length
254
- && this.columnDefs[columnIndex].sortable) {
255
- // @ts-ignore
256
- return this.columnDefs[columnIndex].sortable();
257
- }
258
- return false;
259
- }
260
- changeColumnOrder(sourceColumnIndex, targetColumnIndex) {
261
- this.arrayMove(this.columnDefs, sourceColumnIndex, targetColumnIndex);
262
- this.arrayMove(this.columnSizes, sourceColumnIndex, targetColumnIndex);
263
- this.headerAreaModel?.changeColumnOrder(sourceColumnIndex, targetColumnIndex);
264
- this.bodyAreaModel?.changeColumnOrder(sourceColumnIndex, targetColumnIndex);
265
- this.footerAreaModel?.changeColumnOrder(sourceColumnIndex, targetColumnIndex);
266
- this.calcXPositions();
267
- }
268
- recalcColumnWidthes(clientWidth) {
269
- if (!this.columnDefs?.length && !this.columnSizes?.length) {
270
- this.columnSizes = new Array(this.getColumnCount()).fill(this.overridingColumnWidth);
271
- }
272
- if (this.columnDefs?.length) {
273
- this.columnSizes = this.columnDefs.map(def => {
274
- if (def.width.unit === "%" && clientWidth) {
275
- // only for a % value we have to check min and max:
276
- let px = Math.floor(def.width.value * clientWidth / 100);
277
- if (def.minWidth) {
278
- let pxMin = def.minWidth.unit === "px" ? def.minWidth.value : Math.floor(def.minWidth.value * clientWidth / 100);
279
- px = Math.max(pxMin, px);
280
- }
281
- if (def.maxWidth) {
282
- let pxMax = def.maxWidth.unit === "px" ? def.maxWidth.value : Math.floor(def.maxWidth.value * clientWidth / 100);
283
- px = Math.min(pxMax, px);
284
- }
285
- return px;
286
- }
287
- return def.width.value;
288
- });
289
- }
290
- }
291
- arrayMove(arr, fromIndex, toIndex) {
292
- const element = arr.splice(fromIndex, 1)[0];
293
- arr.splice(toIndex, 0, element);
294
- return arr;
295
- }
296
- recalcContentWidthInPx() {
297
- this.contentWidthInPx = this.getSideAreaWidth("center");
298
- }
299
- calcXPositions() {
300
- const columnCount = this.getColumnCount();
301
- this.xPositions = new Array(columnCount + 1);
302
- this.xPositions[0] = 0;
303
- for (let i = 0; i < columnCount; i++) {
304
- this.xPositions[i + 1] = this.getColumnWidth(i) + this.xPositions[i];
305
- }
306
- }
307
- }
308
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtbW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3RhYmxlL3NyYy9saWIvdGFibGUvZGF0YS90YWJsZW1vZGVsL3RhYmxlLW1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFLcEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFNbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRzlEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBQ0gsTUFBTSxPQUFPLFVBQVU7SUFXSDtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNUO0lBQ0E7SUFDRztJQUNBO0lBQ0E7SUFDTTtJQXJCUixRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBQ2IsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLGdCQUFnQixHQUFHLENBQUMsQ0FBQztJQUUvQiwyREFBMkQ7SUFDakQsT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMscUNBQXFDO0lBQ3hFLFVBQVUsR0FBYSxFQUFFLENBQUM7SUFFcEMsWUFDa0IsZUFBNEIsRUFDNUIsYUFBMEIsRUFDMUIsZUFBNEIsRUFDNUIsdUJBQStCLENBQUMsRUFDaEMsd0JBQWdDLENBQUMsRUFDakMscUJBQThCLEtBQUssRUFDbkMsb0JBQXlDLElBQUksaUJBQWlCLEVBQUUsRUFDekUsYUFBNEIsRUFBRSxFQUM5QixjQUF3QixFQUFFLEVBQ3ZCLHdCQUFnQyxDQUFDLENBQUMsRUFDbEMsY0FBc0IsQ0FBQyxFQUN2QixhQUFxQixHQUFHLEVBQUUsb0RBQW9EO0lBQ3hF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Z0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRU8sY0FBYztRQUNwQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDMUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLEtBQUssQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFdBQVcsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNwQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdEU7SUFDSCxDQUFDO0NBR0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUYWJsZU1vZGVsSWYgfSBmcm9tIFwiLi90YWJsZS1tb2RlbC5pZlwiO1xuaW1wb3J0IHsgUGFkZGluZyB9IGZyb20gXCIuL3BhZGRpbmdcIjtcbmltcG9ydCB7IEFyZWFJZGVudCB9IGZyb20gXCIuL2FyZWEtaWRlbnQudHlwZVwiO1xuaW1wb3J0IHsgQXJlYU1vZGVsSWYgfSBmcm9tIFwiLi9hcmVhbW9kZWwvYXJlYS1tb2RlbC5pZlwiO1xuaW1wb3J0IHsgU2lkZUlkZW50IH0gZnJvbSBcIi4uL3NpZGUtaWRlbnQudHlwZVwiO1xuaW1wb3J0IHsgRGVmYXVsdFJvd0hlaWdodHNJZiB9IGZyb20gXCIuLi9vcHRpb25zL2RlZmF1bHQtcm93LWhlaWdodHMuaWZcIjtcbmltcG9ydCB7IERlZmF1bHRSb3dIZWlnaHRzIH0gZnJvbSBcIi4uL29wdGlvbnMvZGVmYXVsdC1yb3ctaGVpZ2h0c1wiO1xuaW1wb3J0IHsgQ29sdW1uRGVmSWYgfSBmcm9tIFwiLi9jb2x1bW4vY29sdW1uLWRlZi5pZlwiO1xuaW1wb3J0IHsgRmlsdGVyRnVuY3Rpb24gfSBmcm9tIFwiLi4vY29tbW9uL2ZpbHRlci1mdW5jdGlvblwiO1xuaW1wb3J0IHsgU29ydEl0ZW0gfSBmcm9tIFwiLi4vY29tbW9uL3NvcnQtaXRlbVwiO1xuaW1wb3J0IHsgU2VsZWN0aW9uTW9kZWxJZiB9IGZyb20gXCIuLi8uLi9zZWxlY3Rpb24vc2VsZWN0aW9uLW1vZGVsLmlmXCI7XG5pbXBvcnQgeyBHZXRUIH0gZnJvbSBcIi4uL2NvbW1vbi9nZXQtdFwiO1xuaW1wb3J0IHsgQ2hlY2tib3hDb2x1bW5EZWYgfSBmcm9tIFwiLi4vY29tbW9uL2NoZWNrYm94LWNvbHVtbi1kZWZcIjtcbmltcG9ydCB7IENoZWNrYm94TW9kZWwgfSBmcm9tIFwiLi4vLi4vY2hlY2tib3gvY2hlY2tib3gtbW9kZWxcIjtcblxuXG4vKipcbiAqIFRoaXMgaXMgYSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIFRhYmxlTW9kZWxJZi5cbiAqIFRocyBUYWJsZU1vZGVsIGlzIG9uIG9uZSBoYW5kIGEgY29udGFpbmVyIGZvciB0aGUgaGVhZGVyLCBib2R5LCBhbmQgZm9vdGVyIG1vZGVsc1xuICogKHNlZSA6ICNnZXRBcmVhTW9kZWwsIGFuZCAjQXJlYU1vZGVsSWYpLCBhbmQgb24gdGhlIG90aGVyIGhhbmQgdGhlIG1hc3RlciBvZlxuICogdGhlIGNvbHVtbiBpbmZvcm1hdGlvbiAoI2dldENvbHVtbkNvdW50KCksICNnZXRDb2x1bW5XaWR0aChjb2x1bW5JbmRleDogbnVtYmVyKSkuXG4gKlxuICogSWYgZ2V0Rml4ZWRMZWZ0Q29sdW1uQ291bnQoKSByZXR1cm5zIGEgdmFsdWUgZ3JlYXRlciB0aGFuIDAsIGEgZml4ZWQgd2VzdCBhcmVhIHdpbGwgYmUgcmVuZGVyZWQgaW4gdGhlXG4gKiBoZWFkZXIsIGJvZHksIGFuZCBmb290ZXIuIEEgdmFsdWUgZ3JlYXRlciB0aGFuIDAgZm9yIGdldEZpeGVkTGVmdENvbHVtbkNvdW50KClcbiAqIHdpbGwgcmVzdWx0IGluIHRoZSBwcmVzZW5jZSBvZiBhbiBlYXN0IGFyZWEuXG4gKlxuICogPHByZT5cbiAqICArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tK1xuICogIHwgIGhlYWRlci93ZXN0ICAgfCAgaGVhZGVyL2NlbnRlciAgICB8IGhlYWRlci9lYXN0ICB8XG4gKiAgKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLStcbiAqICB8ICBib2R5L3dlc3QgICAgIHwgIGJvZHkvY2VudGVyICAgICAgfCBib2R5L2Vhc3QgICAgfFxuICogICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rXG4gKiAgfCAgZm9vdGVyL3dlc3QgICB8ICBmb290ZXIvY2VudGVyICAgIHwgZm9vdGVyL2Vhc3QgIHxcbiAqICArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKyA8L3ByZT5cbiAqXG4gKi9cbmV4cG9ydCBjbGFzcyBUYWJsZU1vZGVsIGltcGxlbWVudHMgVGFibGVNb2RlbElmIHtcblxuICBwcm90ZWN0ZWQgcm93Q291bnQgPSAwO1xuICBwcm90ZWN0ZWQgY29udGVudEhlaWdodEluUHggPSAwO1xuICBwcm90ZWN0ZWQgY29udGVudFdpZHRoSW5QeCA9IDA7XG5cbiAgLy8gaW4gY2FzZSBvZiBhIGZpeGVkIGhlYWRlciwgbGVmdCBvciByaWdodCBjb2x1bW4sIGZvb3RlcjpcbiAgcHJvdGVjdGVkIHBhZGRpbmcgPSBuZXcgUGFkZGluZygwLCAwLCAwLCAwKTsgLy8gdGhlIGRpbWVuc2lvbiBvZiB0aGUgJ2JvZHkvY2VudGVyJ1xuICBwcm90ZWN0ZWQgeFBvc2l0aW9uczogbnVtYmVyW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgaGVhZGVyQXJlYU1vZGVsOiBBcmVhTW9kZWxJZixcbiAgICBwdWJsaWMgcmVhZG9ubHkgYm9keUFyZWFNb2RlbDogQXJlYU1vZGVsSWYsXG4gICAgcHVibGljIHJlYWRvbmx5IGZvb3RlckFyZWFNb2RlbDogQXJlYU1vZGVsSWYsXG4gICAgcHVibGljIHJlYWRvbmx5IGZpeGVkTGVmdENvbHVtbkNvdW50OiBudW1iZXIgPSAwLFxuICAgIHB1YmxpYyByZWFkb25seSBmaXhlZFJpZ2h0Q29sdW1uQ291bnQ6IG51bWJlciA9IDAsXG4gICAgcHVibGljIHJlYWRvbmx5IHJvd0NoZWNrYm94VmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlLFxuICAgIHB1YmxpYyByZWFkb25seSBkZWZhdWx0Um93SGVpZ2h0czogRGVmYXVsdFJvd0hlaWdodHNJZiA9IG5ldyBEZWZhdWx0Um93SGVpZ2h0cygpLFxuICAgIHB1YmxpYyBjb2x1bW5EZWZzOiBDb2x1bW5EZWZJZltdID0gW10sXG4gICAgcHVibGljIGNvbHVtblNpemVzOiBudW1iZXJbXSA9IFtdLFxuICAgIHByb3RlY3RlZCBvdmVycmlkaW5nQ29sdW1uV2lkdGg6IG51bWJlciA9IC0xLFxuICAgIHByb3RlY3RlZCBjb2x1bW5Db3VudDogbnVtYmVyID0gMCxcbiAgICBwcm90ZWN0ZWQgcGFyZW50U2l6ZTogbnVtYmVyID0gNDAwLCAvLyBjYW4gYmUgaW1wb3J0YW50IHdoZW4gd2UgaGF2ZSBwZXJjZW50YWdlIHdpZHRoZXMsXG4gICAgcHVibGljIHJlYWRvbmx5IGdldFNlbGVjdGlvbk1vZGVsOiBHZXRUPFNlbGVjdGlvbk1vZGVsSWY+ID0gKCkgPT4gdW5kZWZpbmVkXG4gICkge1xuICAgIGhlYWRlckFyZWFNb2RlbC5hcmVhSWRlbnQgPSBcImhlYWRlclwiO1xuICAgIGJvZHlBcmVhTW9kZWwuYXJlYUlkZW50ID0gXCJib2R5XCI7XG4gICAgZm9vdGVyQXJlYU1vZGVsLmFyZWFJZGVudCA9IFwiZm9vdGVyXCI7XG4gICAgaWYgKCF0aGlzLmNvbHVtbkNvdW50KSB7XG4gICAgICBpZiAodGhpcy5jb2x1bW5EZWZzPy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5jb2x1bW5Db3VudCA9IHRoaXMuY29sdW1uRGVmcy5sZW5ndGg7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuY29sdW1uU2l6ZXM/Lmxlbmd0aCkge1xuICAgICAgICB0aGlzLmNvbHVtbkNvdW50ID0gdGhpcy5jb2x1bW5TaXplcz8ubGVuZ3RoO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5jb2x1bW5EZWZzPy5sZW5ndGhcbiAgICAgICYmIHRoaXMuY29sdW1uRGVmc1swXSBpbnN0YW5jZW9mIENoZWNrYm94Q29sdW1uRGVmXG4gICAgICAmJiAhYm9keUFyZWFNb2RlbC5yb3dTZWxlY3Rpb25Nb2RlbCkge1xuICAgICAgYm9keUFyZWFNb2RlbC5yb3dTZWxlY3Rpb25Nb2RlbCA9IG5ldyBDaGVja2JveE1vZGVsKCk7XG4gICAgfVxuICB9XG5cbiAgaW5pdCgpIHtcbiAgICB0aGlzLnJlY2FsY1NpemUodGhpcy5wYXJlbnRTaXplKTtcbiAgICBpZiAodGhpcy5vdmVycmlkaW5nQ29sdW1uV2lkdGggPT09IC0xKSB7XG4gICAgICB0aGlzLmNhbGNYUG9zaXRpb25zKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmhlYWRlckFyZWFNb2RlbCkge1xuICAgICAgdGhpcy5oZWFkZXJBcmVhTW9kZWwuaW5pdCgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5ib2R5QXJlYU1vZGVsKSB7XG4gICAgICB0aGlzLmJvZHlBcmVhTW9kZWwuaW5pdCgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5mb290ZXJBcmVhTW9kZWwpIHtcbiAgICAgIHRoaXMuZm9vdGVyQXJlYU1vZGVsLmluaXQoKTtcbiAgICB9XG4gIH1cblxuICBnZXRDb2x1bW5Db3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbkNvdW50O1xuICB9O1xuXG4gIHNldENvbHVtbldpZHRoKGNvbHVtbkluZGV4OiBudW1iZXIsIHdpZHRoOiBudW1iZXIpOiB2b2lkIHtcbiAgICB3aWR0aCA9IE1hdGgubWF4KDAsIHdpZHRoKTtcbiAgICBpZiAodGhpcy5vdmVycmlkaW5nQ29sdW1uV2lkdGggIT09IC0xKSB7XG4gICAgICB0aGlzLm92ZXJyaWRpbmdDb2x1bW5XaWR0aCA9IHdpZHRoO1xuICAgIH1cbiAgICBpZiAoY29sdW1uSW5kZXggPiAtMSAmJiBjb2x1bW5JbmRleCA8IHRoaXMuY29sdW1uU2l6ZXM/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5jb2x1bW5TaXplc1tjb2x1bW5JbmRleF0gPSB3aWR0aDtcbiAgICB9XG4gICAgdGhpcy5yZWNhbGNDb250ZW50V2lkdGhJblB4KCk7XG4gIH1cblxuICBnZXRDb2x1bW5XaWR0aChjb2x1bW5JbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCBjZCA9IHRoaXMuZ2V0Q29sdW1uRGVmKGNvbHVtbkluZGV4KTtcbiAgICBpZiAoY2QgJiYgY2QuaXNWaXNpYmxlICYmICFjZC5pc1Zpc2libGUoKSkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIGlmICh0aGlzLm92ZXJyaWRpbmdDb2x1bW5XaWR0aCAhPT0gLTEpIHtcbiAgICAgIHJldHVybiB0aGlzLm92ZXJyaWRpbmdDb2x1bW5XaWR0aDtcbiAgICB9XG4gICAgaWYgKGNvbHVtbkluZGV4ID4gLTEgJiYgY29sdW1uSW5kZXggPCB0aGlzLmNvbHVtblNpemVzPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbHVtblNpemVzW2NvbHVtbkluZGV4XTtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH07XG5cbiAgZ2V0WFBvc0J5Q29sdW1uSW5kZXgoY29sdW1uSW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgaWYgKGNvbHVtbkluZGV4ID09PSAwKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgaWYgKHRoaXMub3ZlcnJpZGluZ0NvbHVtbldpZHRoID4gLTEpIHtcbiAgICAgIHJldHVybiB0aGlzLm92ZXJyaWRpbmdDb2x1bW5XaWR0aCAqIGNvbHVtbkluZGV4O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy54UG9zaXRpb25zW2NvbHVtbkluZGV4XTtcbiAgfVxuXG4gIHJlY2FsY1NpemUoY2xpZW50V2lkdGg6IG51bWJlcikge1xuICAgIHRoaXMucmVjYWxjQ29sdW1uV2lkdGhlcyhjbGllbnRXaWR0aCk7XG4gICAgdGhpcy5yZWNhbGNIZWlnaHRBbmRQYWRkaW5nKCk7XG4gIH1cblxuICByZWNhbGNIZWlnaHRBbmRQYWRkaW5nKCkge1xuICAgIGNvbnN0IGJvZHlNb2RlbCA9IHRoaXMuZ2V0QXJlYU1vZGVsKFwiYm9keVwiKTtcbiAgICB0aGlzLnJvd0NvdW50ID0gYm9keU1vZGVsLmdldFJvd0NvdW50KCk7XG4gICAgdGhpcy5jb250ZW50SGVpZ2h0SW5QeCA9IHRoaXMuZ2V0QXJlYUhlaWdodChcImJvZHlcIik7XG4gICAgdGhpcy5yZWNhbGNDb250ZW50V2lkdGhJblB4KCk7XG5cbiAgICB0aGlzLnJlY2FsY1BhZGRpbmcoKTtcbiAgfVxuXG4gIHJlY2FsY1BhZGRpbmcoKSB7XG4gICAgY29uc3Qgd2VzdFdpZHRoID0gdGhpcy5nZXRTaWRlQXJlYVdpZHRoKFwid2VzdFwiKTtcbiAgICBjb25zdCBlYXN0V2lkdGggPSB0aGlzLmdldFNpZGVBcmVhV2lkdGgoXCJlYXN0XCIpO1xuICAgIGNvbnN0IGhlYWRlckhlaWdodCA9IHRoaXMuZ2V0QXJlYUhlaWdodChcImhlYWRlclwiKTtcbiAgICBjb25zdCBmb290ZXJIZWlnaHQgPSB0aGlzLmdldEFyZWFIZWlnaHQoXCJmb290ZXJcIik7XG5cbiAgICB0aGlzLnBhZGRpbmcgPSBuZXcgUGFkZGluZyhcbiAgICAgIGhlYWRlckhlaWdodCxcbiAgICAgIGVhc3RXaWR0aCxcbiAgICAgIGZvb3RlckhlaWdodCxcbiAgICAgIHdlc3RXaWR0aCk7XG4gIH1cblxuICBnZXRQYWRkaW5nKCk6IFBhZGRpbmcge1xuICAgIHJldHVybiB0aGlzLnBhZGRpbmc7XG4gIH1cblxuICBnZXRDb250ZW50SGVpZ2h0SW5QaXhlbCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmNvbnRlbnRIZWlnaHRJblB4O1xuICB9XG5cbiAgZ2V0Q29udGVudFdpZHRoSW5QaXhlbCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmNvbnRlbnRXaWR0aEluUHg7XG4gIH1cblxuICBnZXRSb3dIZWlnaHQocm93QXJlYUlkZW50OiBBcmVhSWRlbnQsIHJvd0luZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmdldEFyZWFNb2RlbChyb3dBcmVhSWRlbnQpLmdldFJvd0hlaWdodChyb3dJbmRleCk7XG4gIH1cblxuICBnZXRNb2RlbChyb3dBcmVhSWRlbnQ6IEFyZWFJZGVudCk6IEFyZWFNb2RlbElmIHtcbiAgICByZXR1cm4gdGhpcy5nZXRBcmVhTW9kZWwocm93QXJlYUlkZW50KTtcbiAgfVxuXG4gIGdldEFyZWFIZWlnaHQoYXJlYUlkZW50OiBBcmVhSWRlbnQpOiBudW1iZXIge1xuICAgIGNvbnN0IG1vZGVsID0gdGhpcy5nZXRNb2RlbChhcmVhSWRlbnQpO1xuICAgIGNvbnN0IHJvd0NvdW50ID0gbW9kZWwuZ2V0Um93Q291bnQoKTtcbiAgICBpZiAodGhpcy5kZWZhdWx0Um93SGVpZ2h0c1thcmVhSWRlbnRdKSB7XG4gICAgICByZXR1cm4gcm93Q291bnQgKiB0aGlzLmRlZmF1bHRSb3dIZWlnaHRzW2FyZWFJZGVudF07XG4gICAgfVxuXG4gICAgbGV0IHJldCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3dDb3VudDsgaSsrKSB7XG4gICAgICByZXQgPSByZXQgKyBtb2RlbC5nZXRSb3dIZWlnaHQoaSk7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICBnZXRTaWRlQXJlYVdpZHRoKHNpZGVJZGVudDogU2lkZUlkZW50KTogbnVtYmVyIHtcbiAgICBjb25zdCBbY1N0YXJ0LCBjRW5kXSA9IHRoaXMuZ2V0U2lkZVN0YXJ0QW5kRW5kQ29sdW1uSW5kZXgoc2lkZUlkZW50KTtcbiAgICBsZXQgcmV0ID0gMDtcbiAgICBmb3IgKGxldCBpID0gY1N0YXJ0OyBpIDw9IGNFbmQ7IGkrKykge1xuICAgICAgcmV0ID0gcmV0ICsgdGhpcy5nZXRDb2x1bW5XaWR0aChpKTtcbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIGdldFNpZGVTdGFydEFuZEVuZENvbHVtbkluZGV4KHNpZGVJZGVudDogU2lkZUlkZW50KTogW251bWJlciwgbnVtYmVyXSB7XG4gICAgY29uc3QgYzEgPSB0aGlzLmdldEZpeGVkTGVmdENvbHVtbkNvdW50KCk7XG4gICAgY29uc3QgYzIgPSB0aGlzLmdldEZpeGVkUmlnaHRDb2x1bW5Db3VudCgpO1xuXG4gICAgbGV0IGNTdGFydCA9IDA7XG4gICAgbGV0IGNFbmQgPSB0aGlzLmNvbHVtbkNvdW50IC0gMTtcbiAgICBpZiAoc2lkZUlkZW50ID09PSBcIndlc3RcIikge1xuICAgICAgY0VuZCA9IGMxIC0gMTtcbiAgICB9IGVsc2UgaWYgKHNpZGVJZGVudCA9PT0gXCJlYXN0XCIpIHtcbiAgICAgIGNTdGFydCA9IHRoaXMuY29sdW1uQ291bnQgLSBjMjtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gY2VudGVyOlxuICAgICAgY1N0YXJ0ID0gYzE7XG4gICAgICBjRW5kID0gdGhpcy5jb2x1bW5Db3VudCAtIGMyIC0gMTtcbiAgICB9XG4gICAgcmV0dXJuIFtjU3RhcnQsIGNFbmRdO1xuICB9XG5cbiAgZ2V0Q29sdW1uRGVmKGluZGV4OiBudW1iZXIpOiBDb2x1bW5EZWZJZiB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKGluZGV4IDwgdGhpcy5jb2x1bW5EZWZzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRoaXMuY29sdW1uRGVmc1tpbmRleF07XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXRGaXhlZExlZnRDb2x1bW5Db3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmZpeGVkTGVmdENvbHVtbkNvdW50O1xuICB9XG5cbiAgZ2V0Rml4ZWRSaWdodENvbHVtbkNvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZml4ZWRSaWdodENvbHVtbkNvdW50O1xuICB9XG5cbiAgZ2V0QXJlYU1vZGVsKGFyZWE6IEFyZWFJZGVudCk6IEFyZWFNb2RlbElmIHtcbiAgICBpZiAoYXJlYSA9PT0gXCJoZWFkZXJcIikge1xuICAgICAgcmV0dXJuIHRoaXMuaGVhZGVyQXJlYU1vZGVsO1xuICAgIH1cbiAgICBpZiAoYXJlYSA9PT0gXCJib2R5XCIpIHtcbiAgICAgIHJldHVybiB0aGlzLmJvZHlBcmVhTW9kZWw7XG4gICAgfVxuICAgIGlmIChhcmVhID09PSBcImZvb3RlclwiKSB7XG4gICAgICByZXR1cm4gdGhpcy5mb290ZXJBcmVhTW9kZWw7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihcIldyb25nIGlkZW50LlwiKTtcbiAgfVxuXG4gIGdldEJvZHlNb2RlbCgpOiBBcmVhTW9kZWxJZiB7XG4gICAgcmV0dXJuIHRoaXMuYm9keUFyZWFNb2RlbDtcbiAgfVxuXG4gIGlzRm9vdGVyVmlzaWJlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5mb290ZXJBcmVhTW9kZWw/LmdldFJvd0NvdW50KCkgPz8gMCkgPiAwO1xuICB9XG5cbiAgaXNIZWFkZXJWaXNpYmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLmhlYWRlckFyZWFNb2RlbD8uZ2V0Um93Q291bnQoKSA/PyAwKSA+IDA7XG4gIH1cblxuICBpc1Jvd0NoZWNrYm94VmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5yb3dDaGVja2JveFZpc2libGU7XG4gIH1cblxuICBleHRlcm5hbEZpbHRlckNoYW5nZWQ8VD4ocHJlZGljdEZuOiBGaWx0ZXJGdW5jdGlvbjxUPik6IHZvaWQge1xuICAgIHRoaXMuZ2V0QXJlYU1vZGVsKFwiYm9keVwiKS5leHRlcm5hbEZpbHRlckNoYW5nZWQocHJlZGljdEZuKTtcbiAgfVxuXG4gIGRvU29ydChzb3J0SXRlbXM6IFNvcnRJdGVtW10pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5nZXRBcmVhTW9kZWwoXCJib2R5XCIpLmRvU29ydChzb3J0SXRlbXMpO1xuICB9XG5cbiAgZ2V0Q29sdW1uRGVmcygpOiBDb2x1bW5EZWZJZltdIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5EZWZzO1xuICB9XG5cbiAgZ2V0Q29sdW1uUHJvcGVydHkoY29sdW1uSW5kZXg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1uRGVmc1tjb2x1bW5JbmRleF0ucHJvcGVydHk7XG4gIH1cblxuICBnZXRCb2R5Um93QnlJbmRleChyb3dJbmRleDogbnVtYmVyKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5nZXRCb2R5TW9kZWwoKS5nZXRSb3dCeUluZGV4KHJvd0luZGV4KTtcbiAgfVxuXG4gIGlzU29ydGFibGUoY29sdW1uSW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmNvbHVtbkRlZnNcbiAgICAgICYmIGNvbHVtbkluZGV4IDwgdGhpcy5jb2x1bW5EZWZzLmxlbmd0aFxuICAgICAgJiYgdGhpcy5jb2x1bW5EZWZzW2NvbHVtbkluZGV4XS5zb3J0YWJsZSkge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcmV0dXJuIHRoaXMuY29sdW1uRGVmc1tjb2x1bW5JbmRleF0uc29ydGFibGUoKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY2hhbmdlQ29sdW1uT3JkZXIoc291cmNlQ29sdW1uSW5kZXg6IG51bWJlciwgdGFyZ2V0Q29sdW1uSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuYXJyYXlNb3ZlKHRoaXMuY29sdW1uRGVmcywgc291cmNlQ29sdW1uSW5kZXgsIHRhcmdldENvbHVtbkluZGV4KTtcbiAgICB0aGlzLmFycmF5TW92ZSh0aGlzLmNvbHVtblNpemVzLCBzb3VyY2VDb2x1bW5JbmRleCwgdGFyZ2V0Q29sdW1uSW5kZXgpO1xuICAgIHRoaXMuaGVhZGVyQXJlYU1vZGVsPy5jaGFuZ2VDb2x1bW5PcmRlcihzb3VyY2VDb2x1bW5JbmRleCwgdGFyZ2V0Q29sdW1uSW5kZXgpO1xuICAgIHRoaXMuYm9keUFyZWFNb2RlbD8uY2hhbmdlQ29sdW1uT3JkZXIoc291cmNlQ29sdW1uSW5kZXgsIHRhcmdldENvbHVtbkluZGV4KTtcbiAgICB0aGlzLmZvb3RlckFyZWFNb2RlbD8uY2hhbmdlQ29sdW1uT3JkZXIoc291cmNlQ29sdW1uSW5kZXgsIHRhcmdldENvbHVtbkluZGV4KTtcbiAgICB0aGlzLmNhbGNYUG9zaXRpb25zKCk7XG4gIH1cblxuXG4gIHByaXZhdGUgcmVjYWxjQ29sdW1uV2lkdGhlcyhjbGllbnRXaWR0aDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmNvbHVtbkRlZnM/Lmxlbmd0aCAmJiAhdGhpcy5jb2x1bW5TaXplcz8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLmNvbHVtblNpemVzID0gbmV3IEFycmF5KHRoaXMuZ2V0Q29sdW1uQ291bnQoKSkuZmlsbCh0aGlzLm92ZXJyaWRpbmdDb2x1bW5XaWR0aCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbHVtbkRlZnM/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5jb2x1bW5TaXplcyA9IHRoaXMuY29sdW1uRGVmcy5tYXAoZGVmID0+IHtcbiAgICAgICAgaWYgKGRlZi53aWR0aC51bml0ID09PSBcIiVcIiAmJiBjbGllbnRXaWR0aCkge1xuICAgICAgICAgIC8vIG9ubHkgZm9yIGEgJSB2YWx1ZSB3ZSBoYXZlIHRvIGNoZWNrIG1pbiBhbmQgbWF4OlxuICAgICAgICAgIGxldCBweCA9IE1hdGguZmxvb3IoZGVmLndpZHRoLnZhbHVlICogY2xpZW50V2lkdGggLyAxMDApO1xuICAgICAgICAgIGlmIChkZWYubWluV2lkdGgpIHtcbiAgICAgICAgICAgIGxldCBweE1pbiA9IGRlZi5taW5XaWR0aC51bml0ID09PSBcInB4XCIgPyBkZWYubWluV2lkdGgudmFsdWUgOiBNYXRoLmZsb29yKGRlZi5taW5XaWR0aC52YWx1ZSAqIGNsaWVudFdpZHRoIC8gMTAwKTtcbiAgICAgICAgICAgIHB4ID0gTWF0aC5tYXgocHhNaW4sIHB4KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGRlZi5tYXhXaWR0aCkge1xuICAgICAgICAgICAgbGV0IHB4TWF4ID0gZGVmLm1heFdpZHRoLnVuaXQgPT09IFwicHhcIiA/IGRlZi5tYXhXaWR0aC52YWx1ZSA6IE1hdGguZmxvb3IoZGVmLm1heFdpZHRoLnZhbHVlICogY2xpZW50V2lkdGggLyAxMDApO1xuICAgICAgICAgICAgcHggPSBNYXRoLm1pbihweE1heCwgcHgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcHg7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRlZi53aWR0aC52YWx1ZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXJyYXlNb3ZlKGFycjogYW55W10sIGZyb21JbmRleDogbnVtYmVyLCB0b0luZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyLnNwbGljZShmcm9tSW5kZXgsIDEpWzBdO1xuICAgIGFyci5zcGxpY2UodG9JbmRleCwgMCwgZWxlbWVudCk7XG4gICAgcmV0dXJuIGFycjtcbiAgfVxuXG4gIHByaXZhdGUgcmVjYWxjQ29udGVudFdpZHRoSW5QeCgpIHtcbiAgICB0aGlzLmNvbnRlbnRXaWR0aEluUHggPSB0aGlzLmdldFNpZGVBcmVhV2lkdGgoXCJjZW50ZXJcIik7XG4gIH1cblxuICBwcml2YXRlIGNhbGNYUG9zaXRpb25zKCkge1xuICAgIGNvbnN0IGNvbHVtbkNvdW50ID0gdGhpcy5nZXRDb2x1bW5Db3VudCgpO1xuICAgIHRoaXMueFBvc2l0aW9ucyA9IG5ldyBBcnJheShjb2x1bW5Db3VudCArIDEpO1xuICAgIHRoaXMueFBvc2l0aW9uc1swXSA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2x1bW5Db3VudDsgaSsrKSB7XG4gICAgICB0aGlzLnhQb3NpdGlvbnNbaSArIDFdID0gdGhpcy5nZXRDb2x1bW5XaWR0aChpKSArIHRoaXMueFBvc2l0aW9uc1tpXTtcbiAgICB9XG4gIH1cblxuXG59XG5cblxuIl19