@omegagrid/grid-core 0.10.1 → 0.10.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (201) hide show
  1. package/package.json +3 -3
  2. package/dist/__generated/functions.d.ts +0 -4
  3. package/dist/__generated/functions.d.ts.map +0 -1
  4. package/dist/__generated/functions.js +0 -45
  5. package/dist/__generated/functions.js.map +0 -1
  6. package/dist/calculations/autofill.d.ts +0 -7
  7. package/dist/calculations/autofill.d.ts.map +0 -1
  8. package/dist/calculations/autofill.js +0 -84
  9. package/dist/calculations/autofill.js.map +0 -1
  10. package/dist/calculations/conditions.d.ts +0 -4
  11. package/dist/calculations/conditions.d.ts.map +0 -1
  12. package/dist/calculations/conditions.js +0 -41
  13. package/dist/calculations/conditions.js.map +0 -1
  14. package/dist/calculations/context.d.ts +0 -53
  15. package/dist/calculations/context.d.ts.map +0 -1
  16. package/dist/calculations/context.js +0 -85
  17. package/dist/calculations/context.js.map +0 -1
  18. package/dist/calculations/formula.d.ts +0 -89
  19. package/dist/calculations/formula.d.ts.map +0 -1
  20. package/dist/calculations/formula.js +0 -443
  21. package/dist/calculations/formula.js.map +0 -1
  22. package/dist/calculations/functions/dates.d.ts +0 -13
  23. package/dist/calculations/functions/dates.d.ts.map +0 -1
  24. package/dist/calculations/functions/dates.js +0 -58
  25. package/dist/calculations/functions/dates.js.map +0 -1
  26. package/dist/calculations/functions/index.d.ts +0 -11
  27. package/dist/calculations/functions/index.d.ts.map +0 -1
  28. package/dist/calculations/functions/index.js +0 -21
  29. package/dist/calculations/functions/index.js.map +0 -1
  30. package/dist/calculations/functions/logical.d.ts +0 -11
  31. package/dist/calculations/functions/logical.d.ts.map +0 -1
  32. package/dist/calculations/functions/logical.js +0 -50
  33. package/dist/calculations/functions/logical.js.map +0 -1
  34. package/dist/calculations/functions/lookup.d.ts +0 -18
  35. package/dist/calculations/functions/lookup.d.ts.map +0 -1
  36. package/dist/calculations/functions/lookup.js +0 -169
  37. package/dist/calculations/functions/lookup.js.map +0 -1
  38. package/dist/calculations/functions/math.d.ts +0 -72
  39. package/dist/calculations/functions/math.d.ts.map +0 -1
  40. package/dist/calculations/functions/math.js +0 -182
  41. package/dist/calculations/functions/math.js.map +0 -1
  42. package/dist/calculations/functions/special.d.ts +0 -2
  43. package/dist/calculations/functions/special.d.ts.map +0 -1
  44. package/dist/calculations/functions/special.js +0 -51
  45. package/dist/calculations/functions/special.js.map +0 -1
  46. package/dist/calculations/functions/statistical.d.ts +0 -7
  47. package/dist/calculations/functions/statistical.d.ts.map +0 -1
  48. package/dist/calculations/functions/statistical.js +0 -47
  49. package/dist/calculations/functions/statistical.js.map +0 -1
  50. package/dist/calculations/functions/text.d.ts +0 -29
  51. package/dist/calculations/functions/text.d.ts.map +0 -1
  52. package/dist/calculations/functions/text.js +0 -58
  53. package/dist/calculations/functions/text.js.map +0 -1
  54. package/dist/calculations/helpers.d.ts +0 -13
  55. package/dist/calculations/helpers.d.ts.map +0 -1
  56. package/dist/calculations/helpers.js +0 -32
  57. package/dist/calculations/helpers.js.map +0 -1
  58. package/dist/calculations/index.d.ts +0 -7
  59. package/dist/calculations/index.d.ts.map +0 -1
  60. package/dist/calculations/index.js +0 -7
  61. package/dist/calculations/index.js.map +0 -1
  62. package/dist/calculations/operators.d.ts +0 -19
  63. package/dist/calculations/operators.d.ts.map +0 -1
  64. package/dist/calculations/operators.js +0 -58
  65. package/dist/calculations/operators.js.map +0 -1
  66. package/dist/calculations/tokenization.d.ts +0 -36
  67. package/dist/calculations/tokenization.d.ts.map +0 -1
  68. package/dist/calculations/tokenization.js +0 -203
  69. package/dist/calculations/tokenization.js.map +0 -1
  70. package/dist/common/index.d.ts +0 -2
  71. package/dist/common/index.d.ts.map +0 -1
  72. package/dist/common/index.js +0 -2
  73. package/dist/common/index.js.map +0 -1
  74. package/dist/common/range.d.ts +0 -66
  75. package/dist/common/range.d.ts.map +0 -1
  76. package/dist/common/range.js +0 -222
  77. package/dist/common/range.js.map +0 -1
  78. package/dist/constants.d.ts +0 -68
  79. package/dist/constants.d.ts.map +0 -1
  80. package/dist/constants.js +0 -127
  81. package/dist/constants.js.map +0 -1
  82. package/dist/index.d.ts +0 -8
  83. package/dist/index.d.ts.map +0 -1
  84. package/dist/index.js +0 -8
  85. package/dist/index.js.map +0 -1
  86. package/dist/model/calculationModel.d.ts +0 -30
  87. package/dist/model/calculationModel.d.ts.map +0 -1
  88. package/dist/model/calculationModel.js +0 -206
  89. package/dist/model/calculationModel.js.map +0 -1
  90. package/dist/model/cellModel.d.ts +0 -134
  91. package/dist/model/cellModel.d.ts.map +0 -1
  92. package/dist/model/cellModel.js +0 -371
  93. package/dist/model/cellModel.js.map +0 -1
  94. package/dist/model/columnModel.d.ts +0 -160
  95. package/dist/model/columnModel.d.ts.map +0 -1
  96. package/dist/model/columnModel.js +0 -159
  97. package/dist/model/columnModel.js.map +0 -1
  98. package/dist/model/commentModel.d.ts +0 -58
  99. package/dist/model/commentModel.d.ts.map +0 -1
  100. package/dist/model/commentModel.js +0 -81
  101. package/dist/model/commentModel.js.map +0 -1
  102. package/dist/model/conditionalFormats.d.ts +0 -104
  103. package/dist/model/conditionalFormats.d.ts.map +0 -1
  104. package/dist/model/conditionalFormats.js +0 -414
  105. package/dist/model/conditionalFormats.js.map +0 -1
  106. package/dist/model/cssStyle.d.ts +0 -20
  107. package/dist/model/cssStyle.d.ts.map +0 -1
  108. package/dist/model/cssStyle.js +0 -301
  109. package/dist/model/cssStyle.js.map +0 -1
  110. package/dist/model/dependencies.d.ts +0 -30
  111. package/dist/model/dependencies.d.ts.map +0 -1
  112. package/dist/model/dependencies.js +0 -139
  113. package/dist/model/dependencies.js.map +0 -1
  114. package/dist/model/dependencyModel.d.ts +0 -9
  115. package/dist/model/dependencyModel.d.ts.map +0 -1
  116. package/dist/model/dependencyModel.js +0 -9
  117. package/dist/model/dependencyModel.js.map +0 -1
  118. package/dist/model/elementModel.d.ts +0 -103
  119. package/dist/model/elementModel.d.ts.map +0 -1
  120. package/dist/model/elementModel.js +0 -181
  121. package/dist/model/elementModel.js.map +0 -1
  122. package/dist/model/filterModel.d.ts +0 -35
  123. package/dist/model/filterModel.d.ts.map +0 -1
  124. package/dist/model/filterModel.js +0 -153
  125. package/dist/model/filterModel.js.map +0 -1
  126. package/dist/model/gridModel.d.ts +0 -181
  127. package/dist/model/gridModel.d.ts.map +0 -1
  128. package/dist/model/gridModel.js +0 -797
  129. package/dist/model/gridModel.js.map +0 -1
  130. package/dist/model/groupModel.d.ts +0 -26
  131. package/dist/model/groupModel.d.ts.map +0 -1
  132. package/dist/model/groupModel.js +0 -112
  133. package/dist/model/groupModel.js.map +0 -1
  134. package/dist/model/history.d.ts +0 -24
  135. package/dist/model/history.d.ts.map +0 -1
  136. package/dist/model/history.js +0 -35
  137. package/dist/model/history.js.map +0 -1
  138. package/dist/model/index.d.ts +0 -23
  139. package/dist/model/index.d.ts.map +0 -1
  140. package/dist/model/index.js +0 -23
  141. package/dist/model/index.js.map +0 -1
  142. package/dist/model/iterableRange.d.ts +0 -49
  143. package/dist/model/iterableRange.d.ts.map +0 -1
  144. package/dist/model/iterableRange.js +0 -108
  145. package/dist/model/iterableRange.js.map +0 -1
  146. package/dist/model/merges.d.ts +0 -34
  147. package/dist/model/merges.d.ts.map +0 -1
  148. package/dist/model/merges.js +0 -123
  149. package/dist/model/merges.js.map +0 -1
  150. package/dist/model/namingModel.d.ts +0 -25
  151. package/dist/model/namingModel.d.ts.map +0 -1
  152. package/dist/model/namingModel.js +0 -77
  153. package/dist/model/namingModel.js.map +0 -1
  154. package/dist/model/options.d.ts +0 -257
  155. package/dist/model/options.d.ts.map +0 -1
  156. package/dist/model/options.js +0 -35
  157. package/dist/model/options.js.map +0 -1
  158. package/dist/model/rowModel.d.ts +0 -104
  159. package/dist/model/rowModel.d.ts.map +0 -1
  160. package/dist/model/rowModel.js +0 -155
  161. package/dist/model/rowModel.js.map +0 -1
  162. package/dist/model/selectionModel.d.ts +0 -19
  163. package/dist/model/selectionModel.d.ts.map +0 -1
  164. package/dist/model/selectionModel.js +0 -40
  165. package/dist/model/selectionModel.js.map +0 -1
  166. package/dist/model/sortingModel.d.ts +0 -46
  167. package/dist/model/sortingModel.d.ts.map +0 -1
  168. package/dist/model/sortingModel.js +0 -157
  169. package/dist/model/sortingModel.js.map +0 -1
  170. package/dist/model/style.d.ts +0 -90
  171. package/dist/model/style.d.ts.map +0 -1
  172. package/dist/model/style.js +0 -34
  173. package/dist/model/style.js.map +0 -1
  174. package/dist/model/styleModel.d.ts +0 -22
  175. package/dist/model/styleModel.d.ts.map +0 -1
  176. package/dist/model/styleModel.js +0 -91
  177. package/dist/model/styleModel.js.map +0 -1
  178. package/dist/model/tableTheme.d.ts +0 -46
  179. package/dist/model/tableTheme.d.ts.map +0 -1
  180. package/dist/model/tableTheme.js +0 -93
  181. package/dist/model/tableTheme.js.map +0 -1
  182. package/dist/model/validations.d.ts +0 -5
  183. package/dist/model/validations.d.ts.map +0 -1
  184. package/dist/model/validations.js +0 -24
  185. package/dist/model/validations.js.map +0 -1
  186. package/dist/sparklines/index.d.ts +0 -2
  187. package/dist/sparklines/index.d.ts.map +0 -1
  188. package/dist/sparklines/index.js +0 -2
  189. package/dist/sparklines/index.js.map +0 -1
  190. package/dist/sparklines/sparklines.d.ts +0 -59
  191. package/dist/sparklines/sparklines.d.ts.map +0 -1
  192. package/dist/sparklines/sparklines.js +0 -176
  193. package/dist/sparklines/sparklines.js.map +0 -1
  194. package/dist/types.d.ts +0 -103
  195. package/dist/types.d.ts.map +0 -1
  196. package/dist/types.js +0 -2
  197. package/dist/types.js.map +0 -1
  198. package/dist/utils.d.ts +0 -4
  199. package/dist/utils.d.ts.map +0 -1
  200. package/dist/utils.js +0 -11
  201. package/dist/utils.js.map +0 -1
@@ -1,176 +0,0 @@
1
- import { utils } from "@omegagrid/core";
2
- import { CellRange } from "../common";
3
- import constants from "../constants";
4
- import { DependencyModel } from "../model/dependencyModel";
5
- export class Sparklines extends DependencyModel {
6
- constructor(model, sourceData) {
7
- super(model, 'sparklines');
8
- this.model = model;
9
- this.map = new Map();
10
- this.groups = new Map();
11
- this.extremes = new Map();
12
- this.maxIndex = 0;
13
- this.updateRangeMap = false;
14
- this.populate(sourceData);
15
- }
16
- populate(sourceData) {
17
- sourceData?.forEach(item => {
18
- try {
19
- this.add(CellRange.fromA1(item.location), Array.isArray(item.data)
20
- ? item.data.map(addr => [CellRange.fromA1(addr)])
21
- : item.data.split(',').map(addr => [CellRange.fromA1(addr)]), utils.mergeDeep({}, constants.DEFAULT_SPARKLINE_OPTIONS, item.options));
22
- }
23
- catch (error) {
24
- this.model.logger.error(`sparkline error: ${JSON.stringify(item)}`, error);
25
- }
26
- });
27
- }
28
- getSourceData() {
29
- const data = [];
30
- this.groups.forEach(group => {
31
- data.push({
32
- location: group.locRange.A1,
33
- data: group.dataRanges.map(r => r[0].A1).join(','),
34
- options: {
35
- minValue: group.minValue,
36
- maxValue: group.maxValue,
37
- type: group.type,
38
- style: group.style,
39
- marker: group.marker
40
- }
41
- });
42
- });
43
- return data;
44
- }
45
- has(address) {
46
- return this.map.has(address);
47
- }
48
- get(address) {
49
- return this.map.get(address);
50
- }
51
- createDependencies(address) {
52
- const item = this.map.get(address);
53
- item[1].forEach(dataRange => this._dependencies.add(address, dataRange[0].A1, dataRange[1]));
54
- }
55
- updateRangeMaps() {
56
- this.dependencies.clear();
57
- this.map.clear();
58
- this.groups.forEach((group, groupIndex) => this.createRangeMap(groupIndex, group.locRange, group.dataRanges));
59
- }
60
- getValues(address) {
61
- if (this.updateRangeMap)
62
- this.updateRangeMaps();
63
- const item = this.map.get(address);
64
- const model = item[1][0][1] ? this.model.getConnectedModel(item[1][0][1]) : this.model;
65
- if (!this._dependencies.has(address))
66
- this.createDependencies(address);
67
- return item[1].flatMap(dataRange => model.getValuesInRange(dataRange[0])[0]);
68
- }
69
- getExtremes(address) {
70
- const item = this.map.get(address);
71
- const model = item[1][0][1] ? this.model.getConnectedModel(item[1][0][1]) : this.model;
72
- const group = this.groups.get(item[0]);
73
- let localExtremes;
74
- let commonExtremes;
75
- let min, max;
76
- if (group.minValue == null || utils.isString(group.minValue)) {
77
- if ((group.minValue || 'auto') == 'auto') {
78
- localExtremes = localExtremes ?? utils.minmax2d(...item[1].map(itm => model.getValuesInRange(itm[0])));
79
- min = localExtremes[0];
80
- }
81
- else {
82
- if (!this.extremes.has(item[0])) {
83
- this.extremes.set(item[0], utils.minmax2d(...group.dataRanges.map(dr => model.getValuesInRange(dr[0]))));
84
- }
85
- commonExtremes = this.extremes.get(item[0]);
86
- min = commonExtremes[0];
87
- }
88
- }
89
- else {
90
- min = group.minValue;
91
- }
92
- if (group.maxValue == null || utils.isString(group.maxValue)) {
93
- if ((group.maxValue || 'auto') == 'auto') {
94
- localExtremes = localExtremes ?? utils.minmax2d(...item[1].map(itm => model.getValuesInRange(itm[0])));
95
- max = localExtremes[1];
96
- }
97
- else {
98
- if (!this.extremes.has(item[0])) {
99
- this.extremes.set(item[0], utils.minmax2d(...group.dataRanges.map(dr => model.getValuesInRange(dr[0]))));
100
- }
101
- commonExtremes = this.extremes.get(item[0]);
102
- max = commonExtremes[1];
103
- }
104
- }
105
- else {
106
- max = group.maxValue;
107
- }
108
- return [min, max];
109
- }
110
- createRangeMap(groupIndex, locRange, dataRanges) {
111
- locRange = locRange.intersect(this.model.gridRange);
112
- const dataSize = dataRanges[0][0].size;
113
- const locSize = locRange.size;
114
- if (locSize.columns > 1 && locSize.rows > 1) {
115
- this.model.logger?.error(`invalid sparkline location range: ${locRange.A1}`);
116
- return;
117
- }
118
- let vertical = false;
119
- if (locSize.columns == 1 && locSize.rows == 1)
120
- vertical = dataSize.rows > 1;
121
- else
122
- vertical = locSize.columns > 1;
123
- if (vertical) {
124
- for (let c = locRange.c1; c <= locRange.c2; c++) {
125
- this.map.set((new CellRange(c, locRange.r1).A1), [groupIndex,
126
- dataRanges.map(([dr, sheet]) => [new CellRange(dr.c1 + c - locRange.c1, dr.r1, dr.c1 + c - locRange.c1, dr.r2), sheet])
127
- ]);
128
- }
129
- }
130
- else {
131
- for (let r = locRange.r1; r <= locRange.r2; r++) {
132
- this.map.set((new CellRange(locRange.c1, r).A1), [groupIndex,
133
- dataRanges.map(([dr, sheet]) => [new CellRange(dr.c1, dr.r1 + r - locRange.r1, dr.c2, dr.r1 + r - locRange.r1), sheet])
134
- ]);
135
- }
136
- }
137
- }
138
- add(locRange, dataRanges, options) {
139
- // if ((vertical && locSize.columns != dataSize.columns) || (!vertical && locSize.rows != dataSize.rows)) {
140
- // this.model.logger?.error(`invalid sparkline data range: ${dataRanges[0][0].A1}`);
141
- // return;
142
- // }
143
- const groupIndex = ++this.maxIndex;
144
- if (locRange && dataRanges)
145
- this.createRangeMap(groupIndex, locRange, dataRanges);
146
- this.groups.set(groupIndex, Object.assign({ dataRanges, locRange }, JSON.parse(JSON.stringify(constants.DEFAULT_SPARKLINE_OPTIONS)), options));
147
- }
148
- update(groupIndex, locRange, dataRanges, options) {
149
- const group = this.groups.get(groupIndex);
150
- Object.assign(group, { dataRanges, locRange }, options);
151
- this.updateRangeMap = true;
152
- }
153
- delete(groupIndex) {
154
- this.groups.delete(groupIndex);
155
- this.updateRangeMap = true;
156
- }
157
- shift(options) {
158
- // TODO - tady je nekde chyba, workaround updateRangeMaps updatuje uplne vsechno
159
- // Array.from(this.map.keys()).forEach((addr) => {
160
- // const keyRange = CellRange.fromA1(addr);
161
- // this.map.get(addr)[1].forEach(([r]) => r.shift(index, offset, direction));
162
- // keyRange.shift(index, offset, direction);
163
- // if (keyRange.A1 != addr) {
164
- // this.map.set(keyRange.A1, this.map.get(addr));
165
- // this.map.delete(addr);
166
- // }
167
- // });
168
- // this.dependencies.clear();
169
- this.groups.forEach(g => {
170
- g.dataRanges.forEach(([r]) => r.shift(options));
171
- g.locRange.shift(options);
172
- });
173
- this.updateRangeMaps();
174
- }
175
- }
176
- //# sourceMappingURL=sparklines.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sparklines.js","sourceRoot":"","sources":["../../src/sparklines/sparklines.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAe,SAAS,EAAgB,MAAM,WAAW,CAAC;AACjE,OAAO,SAAS,MAAM,cAAc,CAAC;AAErC,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAqC3D,MAAM,OAAO,UAAW,SAAQ,eAAe;IAS9C,YAA4B,KAAgB,EAAE,UAA8B;QAC3E,KAAK,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QADA,UAAK,GAAL,KAAK,CAAW;QAP5C,QAAG,GAAG,IAAI,GAAG,EAA8B,CAAC;QAC5C,WAAM,GAAG,IAAI,GAAG,EAA6B,CAAC;QAC9C,aAAQ,GAAG,IAAI,GAAG,EAA4B,CAAC;QAE/C,aAAQ,GAAG,CAAC,CAAC;QACb,mBAAc,GAAG,KAAK,CAAC;QAItB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC3B,CAAC;IAED,QAAQ,CAAC,UAA6B;QACrC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE;YAC1B,IAAI,CAAC;gBACJ,IAAI,CAAC,GAAG,CACP,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAC/B,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;oBACvB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;oBACjD,CAAC,CAAE,IAAI,CAAC,IAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EACzE,KAAK,CAAC,SAAS,CAA4B,EAAE,EAAE,SAAS,CAAC,yBAAyB,EAAE,IAAI,CAAC,OAAO,CAAqB,CACrH,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAC5E,CAAC;QACF,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,aAAa;QACZ,MAAM,IAAI,GAAsB,EAAE,CAAC;QACnC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC3B,IAAI,CAAC,IAAI,CAAC;gBACT,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE;gBAC3B,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;gBAClD,OAAO,EAAE;oBACR,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,MAAM,EAAE,KAAK,CAAC,MAAM;iBACpB;aACD,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACb,CAAC;IAED,GAAG,CAAC,OAAoB;QACvB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,GAAG,CAAC,OAAoB;QACvB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,kBAAkB,CAAC,OAAoB;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9F,CAAC;IAED,eAAe;QACd,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;QACjB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;IAC/G,CAAC;IAED,SAAS,CAAC,OAAoB;QAC7B,IAAI,IAAI,CAAC,cAAc;YAAE,IAAI,CAAC,eAAe,EAAE,CAAC;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QACvF,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACvE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAa,CAAC,CAAC;IAC1F,CAAC;IAED,WAAW,CAAC,OAAoB;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QACvF,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACvC,IAAI,aAA+B,CAAC;QACpC,IAAI,cAAgC,CAAC;QACrC,IAAI,GAAW,EAAE,GAAW,CAAC;QAE7B,IAAI,KAAK,CAAC,QAAQ,IAAI,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9D,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;gBAC1C,aAAa,GAAG,aAAa,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAmB,CAAC,CAAC,CAAC;gBACzH,GAAG,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACjC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAChB,IAAI,CAAC,CAAC,CAAC,EACP,KAAK,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAmB,CAAC,CAAC,CAC9F,CAAC;gBACH,CAAC;gBACD,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5C,GAAG,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;YACzB,CAAC;QACF,CAAC;aAAM,CAAC;YACP,GAAG,GAAG,KAAK,CAAC,QAAkB,CAAC;QAChC,CAAC;QAED,IAAI,KAAK,CAAC,QAAQ,IAAI,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9D,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;gBAC1C,aAAa,GAAG,aAAa,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAmB,CAAC,CAAC,CAAC;gBACzH,GAAG,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACjC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAChB,IAAI,CAAC,CAAC,CAAC,EACP,KAAK,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAmB,CAAC,CAAC,CAC9F,CAAC;gBACH,CAAC;gBACD,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5C,GAAG,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;YACzB,CAAC;QACF,CAAC;aAAM,CAAC;YACP,GAAG,GAAG,KAAK,CAAC,QAAkB,CAAC;QAChC,CAAC;QAED,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACnB,CAAC;IAED,cAAc,CAAC,UAAkB,EAAE,QAAmB,EAAE,UAA+B;QACtF,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAEpD,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACvC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC;QAE9B,IAAI,OAAO,CAAC,OAAO,GAAG,CAAC,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,qCAAqC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;YAC7E,OAAO;QACR,CAAC;QAED,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,OAAO,CAAC,OAAO,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,IAAI,CAAC;YAAE,QAAQ,GAAG,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;;YACvE,QAAQ,GAAG,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC;QAEpC,IAAI,QAAQ,EAAE,CAAC;YACd,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,EAAE,EAAE,CAAC,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;gBACjD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU;oBAC3D,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,SAAS,CAC7C,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,QAAQ,CAAC,EAAE,EACvB,EAAE,CAAC,EAAE,EACL,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,QAAQ,CAAC,EAAE,EACvB,EAAE,CAAC,EAAE,CACL,EAAE,KAAK,CAAC,CAAC;iBACV,CAAC,CAAC;YACJ,CAAC;QACF,CAAC;aAAM,CAAC;YACP,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,EAAE,EAAE,CAAC,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;gBACjD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU;oBAC3D,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,SAAS,CAC7C,EAAE,CAAC,EAAE,EACL,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,QAAQ,CAAC,EAAE,EACvB,EAAE,CAAC,EAAE,EACL,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,QAAQ,CAAC,EAAE,CACvB,EAAE,KAAK,CAAC,CAAC;iBACV,CAAC,CAAC;YACJ,CAAC;QACF,CAAC;IACF,CAAC;IAED,GAAG,CAAC,QAAmB,EAAE,UAA+B,EAAE,OAA0B;QACnF,2GAA2G;QAC3G,qFAAqF;QACrF,WAAW;QACX,IAAI;QAEJ,MAAM,UAAU,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC;QACnC,IAAI,QAAQ,IAAI,UAAU;YAAE,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;QAClF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IAChJ,CAAC;IAED,MAAM,CAAC,UAAkB,EAAE,QAAmB,EAAE,UAA+B,EAAE,OAA0B;QAC1G,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC1C,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC;QACxD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED,MAAM,CAAC,UAAkB;QACxB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC/B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,OAAqB;QAC1B,gFAAgF;QAChF,kDAAkD;QAClD,4CAA4C;QAC5C,8EAA8E;QAC9E,6CAA6C;QAC7C,8BAA8B;QAC9B,mDAAmD;QACnD,2BAA2B;QAC3B,KAAK;QACL,MAAM;QACN,6BAA6B;QAE7B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACvB,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YAChD,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,eAAe,EAAE,CAAA;IACvB,CAAC;CAED","sourcesContent":["import { Matrix, utils } from \"@omegagrid/core\";\nimport { CellAddress, CellRange, RangeAddress } from \"../common\";\nimport constants from \"../constants\";\nimport { GridModel } from \"../model\";\nimport { DependencyModel } from \"../model/dependencyModel\";\nimport { ShiftOptions } from \"../types\";\n\nexport type SparklineType = 'line'|'column';\nexport type SparklineExtremeValue = 'auto'|'common'|number;\nexport type SparklineOptions = {\n\t/** Minimum value of sparkline (absolute value, \"auto\", \"common\") */\n\tminValue: SparklineExtremeValue,\n\t/** Maximum value of sparkline (bsolute value, \"auto\", \"common\") */\n\tmaxValue: SparklineExtremeValue,\n\t/** Chart type (\"line\", \"column\") */\n\ttype: SparklineType,\n\tstyle: {\n\t\tcolor: string,\n\t\tweight: number\n\t},\n\tmarker?: {\n\t\tcolor: string\n\t}\n};\n\n/** Source object type for sparkline definition */\nexport type SparklineSource = {\n\t/** Cell range containing sparklines */\n\tlocation: RangeAddress,\n\t/** Cell ranges of sparkline data sources. Array or comma separated string. */\n\tdata: RangeAddress|RangeAddress[],\n\t/** Sparkline options */\n\toptions?: Partial<SparklineOptions>\n}\n\nexport type SparklineDataRanges = [CellRange, string?][];\n\n// [group_index, range, sheet]\nexport type SparklineItem = [number, SparklineDataRanges];\nexport type SparklineGroupDef = SparklineOptions & {dataRanges: SparklineDataRanges, locRange: CellRange};\n\nexport class Sparklines extends DependencyModel {\n\n\tmap = new Map<CellAddress, SparklineItem>();\n\tgroups = new Map<number, SparklineGroupDef>();\n\textremes = new Map<number, [number, number]>();\n\n\tmaxIndex = 0;\n\tupdateRangeMap = false;\n\n\tconstructor(public readonly model: GridModel, sourceData?: SparklineSource[]) {\n\t\tsuper(model, 'sparklines');\n\t\tthis.populate(sourceData);\n\t}\n\n\tpopulate(sourceData: SparklineSource[]) {\n\t\tsourceData?.forEach(item => {\n\t\t\ttry {\n\t\t\t\tthis.add(\n\t\t\t\t\tCellRange.fromA1(item.location), \n\t\t\t\t\tArray.isArray(item.data) \n\t\t\t\t\t\t? item.data.map(addr => [CellRange.fromA1(addr)])\n\t\t\t\t\t\t: (item.data as string).split(',').map(addr => [CellRange.fromA1(addr)]),\n\t\t\t\t\tutils.mergeDeep<Partial<SparklineOptions>>({}, constants.DEFAULT_SPARKLINE_OPTIONS, item.options) as SparklineOptions\n\t\t\t\t);\n\t\t\t} catch (error) {\n\t\t\t\tthis.model.logger.error(`sparkline error: ${JSON.stringify(item)}`, error);\n\t\t\t}\n\t\t});\n\t}\n\n\tgetSourceData() {\n\t\tconst data: SparklineSource[] = [];\n\t\tthis.groups.forEach(group => {\n\t\t\tdata.push({\n\t\t\t\tlocation: group.locRange.A1,\n\t\t\t\tdata: group.dataRanges.map(r => r[0].A1).join(','),\n\t\t\t\toptions: {\n\t\t\t\t\tminValue: group.minValue,\n\t\t\t\t\tmaxValue: group.maxValue,\n\t\t\t\t\ttype: group.type,\n\t\t\t\t\tstyle: group.style,\n\t\t\t\t\tmarker: group.marker\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\treturn data;\n\t}\n\n\thas(address: CellAddress) {\n\t\treturn this.map.has(address);\n\t}\n\n\tget(address: CellAddress): SparklineItem {\n\t\treturn this.map.get(address);\n\t}\n\n\tcreateDependencies(address: CellAddress) {\n\t\tconst item = this.map.get(address);\n\t\titem[1].forEach(dataRange => this._dependencies.add(address, dataRange[0].A1, dataRange[1]));\n\t}\n\n\tupdateRangeMaps() {\n\t\tthis.dependencies.clear();\n\t\tthis.map.clear();\n\t\tthis.groups.forEach((group, groupIndex) => this.createRangeMap(groupIndex, group.locRange, group.dataRanges));\n\t}\n\n\tgetValues(address: CellAddress) {\n\t\tif (this.updateRangeMap) this.updateRangeMaps();\n\t\tconst item = this.map.get(address);\n\t\tconst model = item[1][0][1] ? this.model.getConnectedModel(item[1][0][1]) : this.model;\n\t\tif (!this._dependencies.has(address)) this.createDependencies(address);\n\t\treturn item[1].flatMap(dataRange => model.getValuesInRange(dataRange[0])[0] as number[]);\n\t}\n\n\tgetExtremes(address: CellAddress): [number, number] {\n\t\tconst item = this.map.get(address);\n\t\tconst model = item[1][0][1] ? this.model.getConnectedModel(item[1][0][1]) : this.model;\n\t\tconst group = this.groups.get(item[0]);\n\t\tlet localExtremes: [number, number];\n\t\tlet commonExtremes: [number, number];\n\t\tlet min: number, max: number;\n\t\t\n\t\tif (group.minValue == null || utils.isString(group.minValue)) {\n\t\t\tif ((group.minValue || 'auto') == 'auto') {\n\t\t\t\tlocalExtremes = localExtremes ?? utils.minmax2d(...item[1].map(itm => model.getValuesInRange(itm[0]) as Matrix<number>));\n\t\t\t\tmin = localExtremes[0];\n\t\t\t} else {\n\t\t\t\tif (!this.extremes.has(item[0])) {\n\t\t\t\t\tthis.extremes.set(\n\t\t\t\t\t\titem[0],\n\t\t\t\t\t\tutils.minmax2d(...group.dataRanges.map(dr => model.getValuesInRange(dr[0]) as Matrix<number>))\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tcommonExtremes = this.extremes.get(item[0]);\n\t\t\t\tmin = commonExtremes[0];\n\t\t\t}\n\t\t} else {\n\t\t\tmin = group.minValue as number;\n\t\t}\n\t\t\n\t\tif (group.maxValue == null || utils.isString(group.maxValue)) {\n\t\t\tif ((group.maxValue || 'auto') == 'auto') {\n\t\t\t\tlocalExtremes = localExtremes ?? utils.minmax2d(...item[1].map(itm => model.getValuesInRange(itm[0]) as Matrix<number>));\n\t\t\t\tmax = localExtremes[1];\n\t\t\t} else {\n\t\t\t\tif (!this.extremes.has(item[0])) {\n\t\t\t\t\tthis.extremes.set(\n\t\t\t\t\t\titem[0], \n\t\t\t\t\t\tutils.minmax2d(...group.dataRanges.map(dr => model.getValuesInRange(dr[0]) as Matrix<number>))\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tcommonExtremes = this.extremes.get(item[0]);\n\t\t\t\tmax = commonExtremes[1];\n\t\t\t}\n\t\t} else {\n\t\t\tmax = group.maxValue as number;\n\t\t}\n\n\t\treturn [min, max];\n\t}\n\n\tcreateRangeMap(groupIndex: number, locRange: CellRange, dataRanges: SparklineDataRanges) {\n\t\tlocRange = locRange.intersect(this.model.gridRange);\n\t\t\n\t\tconst dataSize = dataRanges[0][0].size;\n\t\tconst locSize = locRange.size;\n\n\t\tif (locSize.columns > 1 && locSize.rows > 1) {\n\t\t\tthis.model.logger?.error(`invalid sparkline location range: ${locRange.A1}`);\n\t\t\treturn;\n\t\t}\n\n\t\tlet vertical = false;\n\t\tif (locSize.columns == 1 && locSize.rows == 1) vertical = dataSize.rows > 1;\n\t\telse vertical = locSize.columns > 1;\n\n\t\tif (vertical) {\n\t\t\tfor (let c = locRange.c1; c <= locRange.c2; c++) {\n\t\t\t\tthis.map.set((new CellRange(c, locRange.r1).A1), [groupIndex, \n\t\t\t\t\tdataRanges.map(([dr, sheet]) => [new CellRange(\n\t\t\t\t\t\tdr.c1 + c - locRange.c1,\n\t\t\t\t\t\tdr.r1,\n\t\t\t\t\t\tdr.c1 + c - locRange.c1,\n\t\t\t\t\t\tdr.r2\n\t\t\t\t\t), sheet])\n\t\t\t\t]);\n\t\t\t}\n\t\t} else {\n\t\t\tfor (let r = locRange.r1; r <= locRange.r2; r++) {\n\t\t\t\tthis.map.set((new CellRange(locRange.c1, r).A1), [groupIndex, \n\t\t\t\t\tdataRanges.map(([dr, sheet]) => [new CellRange(\n\t\t\t\t\t\tdr.c1,\n\t\t\t\t\t\tdr.r1 + r - locRange.r1,\n\t\t\t\t\t\tdr.c2,\n\t\t\t\t\t\tdr.r1 + r - locRange.r1,\n\t\t\t\t\t), sheet])\n\t\t\t\t]);\n\t\t\t}\n\t\t}\n\t}\n\n\tadd(locRange: CellRange, dataRanges: SparklineDataRanges, options?: SparklineOptions) {\n\t\t// if ((vertical && locSize.columns != dataSize.columns) || (!vertical && locSize.rows != dataSize.rows)) {\n\t\t// \tthis.model.logger?.error(`invalid sparkline data range: ${dataRanges[0][0].A1}`);\n\t\t// \treturn;\n\t\t// }\n\n\t\tconst groupIndex = ++this.maxIndex;\n\t\tif (locRange && dataRanges) this.createRangeMap(groupIndex, locRange, dataRanges);\n\t\tthis.groups.set(groupIndex, Object.assign({ dataRanges, locRange }, JSON.parse(JSON.stringify(constants.DEFAULT_SPARKLINE_OPTIONS)), options));\n\t}\n\n\tupdate(groupIndex: number, locRange: CellRange, dataRanges: SparklineDataRanges, options?: SparklineOptions) {\n\t\tconst group = this.groups.get(groupIndex);\n\t\tObject.assign(group, { dataRanges, locRange }, options);\n\t\tthis.updateRangeMap = true;\n\t}\n\n\tdelete(groupIndex: number) {\n\t\tthis.groups.delete(groupIndex);\n\t\tthis.updateRangeMap = true;\n\t}\n\n\tshift(options: ShiftOptions) {\n\t\t// TODO - tady je nekde chyba, workaround updateRangeMaps updatuje uplne vsechno\n\t\t// Array.from(this.map.keys()).forEach((addr) => {\n\t\t// \tconst keyRange = CellRange.fromA1(addr);\n\t\t// \tthis.map.get(addr)[1].forEach(([r]) => r.shift(index, offset, direction));\n\t\t// \tkeyRange.shift(index, offset, direction);\n\t\t// \tif (keyRange.A1 != addr) {\n\t\t// \t\tthis.map.set(keyRange.A1, this.map.get(addr));\n\t\t// \t\tthis.map.delete(addr);\n\t\t// \t}\n\t\t// });\n\t\t// this.dependencies.clear();\n\n\t\tthis.groups.forEach(g => {\n\t\t\tg.dataRanges.forEach(([r]) => r.shift(options));\n\t\t\tg.locRange.shift(options);\n\t\t});\n\t\tthis.updateRangeMaps()\n\t}\n\n}"]}
package/dist/types.d.ts DELETED
@@ -1,103 +0,0 @@
1
- import { ColorTypes, Direction, Size, Location, UIValueType, Matrix, KeyValue, MenuItem } from "@omegagrid/core";
2
- import { CSSStyle, CellModel, GridSource, Style, CommentItem, TableTheme } from "./model";
3
- import { CellRange } from "./common";
4
- export type Renderer = (div: HTMLDivElement, cell: CellModel) => HTMLDivElement;
5
- export type CommentRenderer = (div: HTMLDivElement, comment: CommentItem, cell: CellModel) => HTMLDivElement;
6
- export type Comparer = (a: CellModel, b: CellModel) => number;
7
- export type FormulaFunction = (...args: unknown[]) => unknown;
8
- export type BaseGroupModelSource = {
9
- models: GridSource[];
10
- themes?: TableTheme[];
11
- };
12
- export type EditType = 'value' | 'style' | 'insert_row' | 'insert_column' | 'delete_row' | 'delete_column' | 'move_row' | 'move_column' | 'autofill';
13
- export type CellValueType = unknown;
14
- export type FilterValue = string | number | boolean | KeyValue[];
15
- /**
16
- * Actions = 'a',
17
- * Html = 'h'
18
- */
19
- export type AditionalUIValueType = 'a' | 'h';
20
- export type CellType = UIValueType | AditionalUIValueType;
21
- export type StyleSource = number | string | Style | CSSStyle;
22
- export type CellAction = {
23
- action: string;
24
- icon?: string;
25
- text?: string;
26
- title?: string;
27
- color?: ColorTypes;
28
- type?: 'button' | 'menu';
29
- items?: MenuItem[];
30
- };
31
- export type CellValidationSource = {
32
- /** Allow invalid cell values */
33
- allowInvalid?: boolean;
34
- /** Validation pattern */
35
- pattern?: string | RegExp;
36
- /** Validation function */
37
- validate?: (cell: CellModel, value: unknown) => boolean;
38
- };
39
- export type CellValidation = Omit<CellValidationSource, 'pattern'> & {
40
- /** Validation pattern */
41
- pattern?: RegExp;
42
- };
43
- export type ShiftOptions = {
44
- /** Index of the first shifted row/column */
45
- index: number;
46
- /** Number of rows/columns to shift */
47
- offset: number;
48
- /** Shift direction up/down for rows, left/right for columns */
49
- direction: Direction;
50
- /** Name of the sheet where the shift occured */
51
- sheet?: string;
52
- /** Force shift on all references */
53
- allSheets?: boolean;
54
- /** Maximum affected index */
55
- maxIndex?: number;
56
- /** Shift anchored coords */
57
- ignoreAnchors?: boolean;
58
- };
59
- export type FormulaFuncParamDescription = {
60
- name: string;
61
- type: string;
62
- description: string;
63
- optional: boolean;
64
- default?: string;
65
- };
66
- export type FormulaFuncDescription = {
67
- name: string;
68
- params: FormulaFuncParamDescription[];
69
- returns: string;
70
- description: string;
71
- links: string[];
72
- };
73
- export type FormulaFuncGroupDescription = {
74
- name: string;
75
- functions: FormulaFuncDescription[];
76
- };
77
- export type TabOptions = {
78
- color?: string;
79
- hidden?: boolean;
80
- };
81
- export type ObjectModel = {
82
- location: Location;
83
- size: Size;
84
- zIndex?: number;
85
- };
86
- export type SpillOptions = {
87
- cell: CellModel;
88
- values: Matrix;
89
- propertyCell?: CellModel;
90
- displayValues?: Matrix<string>;
91
- };
92
- export type SpillResult = {
93
- cells: CellModel[];
94
- oldValues: CellValueType[];
95
- range: CellRange;
96
- };
97
- export type AutofitOptions = {
98
- visibleOnly?: boolean;
99
- };
100
- export type CellSerializationOptions = {
101
- displayValue?: boolean;
102
- };
103
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js DELETED
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
package/dist/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"","sourcesContent":["import { ColorTypes, Direction, Size, Location, UIValueType, Matrix, KeyValue, MenuItem } from \"@omegagrid/core\";\nimport { CSSStyle, CellModel, GridSource, Style, CommentItem, TableTheme } from \"./model\";\nimport { CellRange } from \"./common\";\n\nexport type Renderer = (div: HTMLDivElement, cell: CellModel) => HTMLDivElement;\nexport type CommentRenderer = (div: HTMLDivElement, comment: CommentItem, cell: CellModel) => HTMLDivElement;\n\nexport type Comparer = (a: CellModel, b: CellModel) => number;\n\nexport type FormulaFunction = (...args: unknown[]) => unknown;\n\nexport type BaseGroupModelSource = {\n\tmodels: GridSource[],\n\tthemes?: TableTheme[]\n\t//layout: TabSplitContainerModel\n}\n\nexport type EditType = 'value'|'style'|'insert_row'|'insert_column'|'delete_row'|'delete_column'|'move_row'|'move_column'|'autofill';\nexport type CellValueType = unknown; //number|string|boolean|object|null;\nexport type FilterValue = string|number|boolean|KeyValue[];\n\n/**\n * Actions = 'a',\n * Html = 'h'\n */\nexport type AditionalUIValueType = 'a'|'h';\n\nexport type CellType = UIValueType | AditionalUIValueType;\n\nexport type StyleSource = number|string|Style|CSSStyle;\n\nexport type CellAction = {\n\taction: string,\n\ticon?: string,\n\ttext?: string,\n\ttitle?: string,\n\tcolor?: ColorTypes,\n\ttype?: 'button'|'menu',\n\titems?: MenuItem[]\n}\n\nexport type CellValidationSource = {\n\t/** Allow invalid cell values */\n\tallowInvalid?: boolean,\n\n\t/** Validation pattern */\n\tpattern?: string|RegExp,\n\n\t/** Validation function */\n\tvalidate?: (cell: CellModel, value: unknown) => boolean,\n}\n\nexport type CellValidation = Omit<CellValidationSource, 'pattern'> & {\n\t/** Validation pattern */\n\tpattern?: RegExp,\n}\n\nexport type ShiftOptions = {\n\t/** Index of the first shifted row/column */\n\tindex: number;\n\t/** Number of rows/columns to shift */\n\toffset: number;\n\t/** Shift direction up/down for rows, left/right for columns */\n\tdirection: Direction;\n\t/** Name of the sheet where the shift occured */\n\tsheet?: string;\n\t/** Force shift on all references */\n\tallSheets?: boolean;\n\t/** Maximum affected index */\n\tmaxIndex?: number;\n\t/** Shift anchored coords */\n\tignoreAnchors?: boolean;\n}\n\nexport type FormulaFuncParamDescription = {\n\tname: string,\n\ttype: string,\n\tdescription: string,\n\toptional: boolean,\n\tdefault?: string\n}\n\nexport type FormulaFuncDescription = {\n\tname: string,\n\tparams: FormulaFuncParamDescription[],\n\treturns: string,\n\tdescription: string,\n\tlinks: string[]\n}\n\nexport type FormulaFuncGroupDescription = {\n\tname: string,\n\tfunctions: FormulaFuncDescription[]\n}\n\nexport type TabOptions = {\n\tcolor?: string,\n\thidden?: boolean,\n}\n\nexport type ObjectModel = {\n\tlocation: Location;\n\tsize: Size;\n\tzIndex?: number;\n}\n\nexport type SpillOptions = {\n\tcell: CellModel; \n\tvalues: Matrix;\n\tpropertyCell?: CellModel;\n\tdisplayValues?: Matrix<string>;\n}\n\nexport type SpillResult = {\n\tcells: CellModel[];\n\toldValues: CellValueType[];\n\trange: CellRange;\n}\n\nexport type AutofitOptions = {\n\tvisibleOnly?: boolean;\n}\n\nexport type CellSerializationOptions = {\n\tdisplayValue?: boolean;\n}\n"]}
package/dist/utils.d.ts DELETED
@@ -1,4 +0,0 @@
1
- export declare const SHEET_NAME_REGEX: RegExp;
2
- export declare function isSheetNameValid(name: string): boolean;
3
- export declare function sanitizeSheetName(name: string): string;
4
- //# sourceMappingURL=utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,gBAAgB,QAAuC,CAAC;AAErE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,WAE5C;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAItD"}
package/dist/utils.js DELETED
@@ -1,11 +0,0 @@
1
- /* eslint-disable no-useless-escape */
2
- export const SHEET_NAME_REGEX = /^(?!.*[\\\/\*\[\]\:\?"])(.{1,31})$/;
3
- export function isSheetNameValid(name) {
4
- return SHEET_NAME_REGEX.test(name);
5
- }
6
- export function sanitizeSheetName(name) {
7
- const invalidChars = ['\\', '/', '*', '[', ']', ':', '?', '"'];
8
- invalidChars.forEach(char => name = name.replace(new RegExp(`\\${char}`, 'g'), ''));
9
- return name;
10
- }
11
- //# sourceMappingURL=utils.js.map
package/dist/utils.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC,MAAM,CAAC,MAAM,gBAAgB,GAAG,oCAAoC,CAAC;AAErE,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC5C,OAAO,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC7C,MAAM,YAAY,GAAa,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACzE,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACpF,OAAO,IAAI,CAAC;AACb,CAAC","sourcesContent":["/* eslint-disable no-useless-escape */\n\nexport const SHEET_NAME_REGEX = /^(?!.*[\\\\\\/\\*\\[\\]\\:\\?\"])(.{1,31})$/;\n\nexport function isSheetNameValid(name: string) {\n\treturn SHEET_NAME_REGEX.test(name);\n}\n\nexport function sanitizeSheetName(name: string): string {\n\tconst invalidChars: string[] = ['\\\\', '/', '*', '[', ']', ':', '?', '\"'];\n\tinvalidChars.forEach(char => name = name.replace(new RegExp(`\\\\${char}`, 'g'), ''));\n\treturn name;\n}\n"]}