@omegagrid/grid-core 0.2.5

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 (185) hide show
  1. package/dist/calculations/autofill.d.ts +7 -0
  2. package/dist/calculations/autofill.d.ts.map +1 -0
  3. package/dist/calculations/autofill.js +81 -0
  4. package/dist/calculations/autofill.js.map +1 -0
  5. package/dist/calculations/calculationModel.d.ts +35 -0
  6. package/dist/calculations/calculationModel.d.ts.map +1 -0
  7. package/dist/calculations/calculationModel.js +199 -0
  8. package/dist/calculations/calculationModel.js.map +1 -0
  9. package/dist/calculations/conditions.d.ts +4 -0
  10. package/dist/calculations/conditions.d.ts.map +1 -0
  11. package/dist/calculations/conditions.js +46 -0
  12. package/dist/calculations/conditions.js.map +1 -0
  13. package/dist/calculations/context.d.ts +53 -0
  14. package/dist/calculations/context.d.ts.map +1 -0
  15. package/dist/calculations/context.js +83 -0
  16. package/dist/calculations/context.js.map +1 -0
  17. package/dist/calculations/formula.d.ts +69 -0
  18. package/dist/calculations/formula.d.ts.map +1 -0
  19. package/dist/calculations/formula.js +360 -0
  20. package/dist/calculations/formula.js.map +1 -0
  21. package/dist/calculations/functions/dates.d.ts +6 -0
  22. package/dist/calculations/functions/dates.d.ts.map +1 -0
  23. package/dist/calculations/functions/dates.js +28 -0
  24. package/dist/calculations/functions/dates.js.map +1 -0
  25. package/dist/calculations/functions/helpers.d.ts +11 -0
  26. package/dist/calculations/functions/helpers.d.ts.map +1 -0
  27. package/dist/calculations/functions/helpers.js +38 -0
  28. package/dist/calculations/functions/helpers.js.map +1 -0
  29. package/dist/calculations/functions/index.d.ts +5 -0
  30. package/dist/calculations/functions/index.d.ts.map +1 -0
  31. package/dist/calculations/functions/index.js +73 -0
  32. package/dist/calculations/functions/index.js.map +1 -0
  33. package/dist/calculations/functions/logical.d.ts +10 -0
  34. package/dist/calculations/functions/logical.d.ts.map +1 -0
  35. package/dist/calculations/functions/logical.js +49 -0
  36. package/dist/calculations/functions/logical.js.map +1 -0
  37. package/dist/calculations/functions/lookup.d.ts +17 -0
  38. package/dist/calculations/functions/lookup.d.ts.map +1 -0
  39. package/dist/calculations/functions/lookup.js +167 -0
  40. package/dist/calculations/functions/lookup.js.map +1 -0
  41. package/dist/calculations/functions/math.d.ts +62 -0
  42. package/dist/calculations/functions/math.d.ts.map +1 -0
  43. package/dist/calculations/functions/math.js +228 -0
  44. package/dist/calculations/functions/math.js.map +1 -0
  45. package/dist/calculations/functions/special.d.ts +2 -0
  46. package/dist/calculations/functions/special.d.ts.map +1 -0
  47. package/dist/calculations/functions/special.js +55 -0
  48. package/dist/calculations/functions/special.js.map +1 -0
  49. package/dist/calculations/functions/statistical.d.ts +5 -0
  50. package/dist/calculations/functions/statistical.d.ts.map +1 -0
  51. package/dist/calculations/functions/statistical.js +47 -0
  52. package/dist/calculations/functions/statistical.js.map +1 -0
  53. package/dist/calculations/functions/text.d.ts +5 -0
  54. package/dist/calculations/functions/text.d.ts.map +1 -0
  55. package/dist/calculations/functions/text.js +23 -0
  56. package/dist/calculations/functions/text.js.map +1 -0
  57. package/dist/calculations/index.d.ts +6 -0
  58. package/dist/calculations/index.d.ts.map +1 -0
  59. package/dist/calculations/index.js +22 -0
  60. package/dist/calculations/index.js.map +1 -0
  61. package/dist/calculations/operators.d.ts +19 -0
  62. package/dist/calculations/operators.d.ts.map +1 -0
  63. package/dist/calculations/operators.js +66 -0
  64. package/dist/calculations/operators.js.map +1 -0
  65. package/dist/calculations/tokenization.d.ts +34 -0
  66. package/dist/calculations/tokenization.d.ts.map +1 -0
  67. package/dist/calculations/tokenization.js +192 -0
  68. package/dist/calculations/tokenization.js.map +1 -0
  69. package/dist/comments/comments.d.ts +37 -0
  70. package/dist/comments/comments.d.ts.map +1 -0
  71. package/dist/comments/comments.js +39 -0
  72. package/dist/comments/comments.js.map +1 -0
  73. package/dist/comments/index.d.ts +2 -0
  74. package/dist/comments/index.d.ts.map +1 -0
  75. package/dist/comments/index.js +18 -0
  76. package/dist/comments/index.js.map +1 -0
  77. package/dist/common/index.d.ts +2 -0
  78. package/dist/common/index.d.ts.map +1 -0
  79. package/dist/common/index.js +18 -0
  80. package/dist/common/index.js.map +1 -0
  81. package/dist/common/range.d.ts +65 -0
  82. package/dist/common/range.d.ts.map +1 -0
  83. package/dist/common/range.js +220 -0
  84. package/dist/common/range.js.map +1 -0
  85. package/dist/constants.d.ts +60 -0
  86. package/dist/constants.d.ts.map +1 -0
  87. package/dist/constants.js +75 -0
  88. package/dist/constants.js.map +1 -0
  89. package/dist/formatting/conditionalFormats.d.ts +34 -0
  90. package/dist/formatting/conditionalFormats.d.ts.map +1 -0
  91. package/dist/formatting/conditionalFormats.js +107 -0
  92. package/dist/formatting/conditionalFormats.js.map +1 -0
  93. package/dist/formatting/index.d.ts +2 -0
  94. package/dist/formatting/index.d.ts.map +1 -0
  95. package/dist/formatting/index.js +18 -0
  96. package/dist/formatting/index.js.map +1 -0
  97. package/dist/index.d.ts +9 -0
  98. package/dist/index.d.ts.map +1 -0
  99. package/dist/index.js +30 -0
  100. package/dist/index.js.map +1 -0
  101. package/dist/model/cellModel.d.ts +105 -0
  102. package/dist/model/cellModel.d.ts.map +1 -0
  103. package/dist/model/cellModel.js +251 -0
  104. package/dist/model/cellModel.js.map +1 -0
  105. package/dist/model/columnModel.d.ts +132 -0
  106. package/dist/model/columnModel.d.ts.map +1 -0
  107. package/dist/model/columnModel.js +147 -0
  108. package/dist/model/columnModel.js.map +1 -0
  109. package/dist/model/columnSorting.d.ts +50 -0
  110. package/dist/model/columnSorting.d.ts.map +1 -0
  111. package/dist/model/columnSorting.js +164 -0
  112. package/dist/model/columnSorting.js.map +1 -0
  113. package/dist/model/cssStyle.d.ts +18 -0
  114. package/dist/model/cssStyle.d.ts.map +1 -0
  115. package/dist/model/cssStyle.js +197 -0
  116. package/dist/model/cssStyle.js.map +1 -0
  117. package/dist/model/dependencies.d.ts +28 -0
  118. package/dist/model/dependencies.d.ts.map +1 -0
  119. package/dist/model/dependencies.js +129 -0
  120. package/dist/model/dependencies.js.map +1 -0
  121. package/dist/model/elementModel.d.ts +98 -0
  122. package/dist/model/elementModel.d.ts.map +1 -0
  123. package/dist/model/elementModel.js +109 -0
  124. package/dist/model/elementModel.js.map +1 -0
  125. package/dist/model/filterModel.d.ts +22 -0
  126. package/dist/model/filterModel.d.ts.map +1 -0
  127. package/dist/model/filterModel.js +83 -0
  128. package/dist/model/filterModel.js.map +1 -0
  129. package/dist/model/gridModel.d.ts +172 -0
  130. package/dist/model/gridModel.d.ts.map +1 -0
  131. package/dist/model/gridModel.js +639 -0
  132. package/dist/model/gridModel.js.map +1 -0
  133. package/dist/model/groupModel.d.ts +23 -0
  134. package/dist/model/groupModel.d.ts.map +1 -0
  135. package/dist/model/groupModel.js +102 -0
  136. package/dist/model/groupModel.js.map +1 -0
  137. package/dist/model/history.d.ts +21 -0
  138. package/dist/model/history.d.ts.map +1 -0
  139. package/dist/model/history.js +39 -0
  140. package/dist/model/history.js.map +1 -0
  141. package/dist/model/index.d.ts +17 -0
  142. package/dist/model/index.d.ts.map +1 -0
  143. package/dist/model/index.js +33 -0
  144. package/dist/model/index.js.map +1 -0
  145. package/dist/model/iterableRange.d.ts +32 -0
  146. package/dist/model/iterableRange.d.ts.map +1 -0
  147. package/dist/model/iterableRange.js +79 -0
  148. package/dist/model/iterableRange.js.map +1 -0
  149. package/dist/model/namingModel.d.ts +24 -0
  150. package/dist/model/namingModel.d.ts.map +1 -0
  151. package/dist/model/namingModel.js +75 -0
  152. package/dist/model/namingModel.js.map +1 -0
  153. package/dist/model/options.d.ts +56 -0
  154. package/dist/model/options.d.ts.map +1 -0
  155. package/dist/model/options.js +27 -0
  156. package/dist/model/options.js.map +1 -0
  157. package/dist/model/rowModel.d.ts +91 -0
  158. package/dist/model/rowModel.d.ts.map +1 -0
  159. package/dist/model/rowModel.js +137 -0
  160. package/dist/model/rowModel.js.map +1 -0
  161. package/dist/model/selectionModel.d.ts +20 -0
  162. package/dist/model/selectionModel.d.ts.map +1 -0
  163. package/dist/model/selectionModel.js +45 -0
  164. package/dist/model/selectionModel.js.map +1 -0
  165. package/dist/model/style.d.ts +73 -0
  166. package/dist/model/style.d.ts.map +1 -0
  167. package/dist/model/style.js +38 -0
  168. package/dist/model/style.js.map +1 -0
  169. package/dist/model/styleModel.d.ts +20 -0
  170. package/dist/model/styleModel.d.ts.map +1 -0
  171. package/dist/model/styleModel.js +85 -0
  172. package/dist/model/styleModel.js.map +1 -0
  173. package/dist/sparklines/index.d.ts +2 -0
  174. package/dist/sparklines/index.d.ts.map +1 -0
  175. package/dist/sparklines/index.js +18 -0
  176. package/dist/sparklines/index.js.map +1 -0
  177. package/dist/sparklines/sparklines.d.ts +61 -0
  178. package/dist/sparklines/sparklines.d.ts.map +1 -0
  179. package/dist/sparklines/sparklines.js +185 -0
  180. package/dist/sparklines/sparklines.js.map +1 -0
  181. package/dist/types.d.ts +27 -0
  182. package/dist/types.d.ts.map +1 -0
  183. package/dist/types.js +9 -0
  184. package/dist/types.js.map +1 -0
  185. package/package.json +56 -0
@@ -0,0 +1,360 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Formula = exports.stripFormulaPrefix = exports.prefixFormula = exports.isFormula = void 0;
4
+ const tokenization_1 = require("./tokenization");
5
+ const common_1 = require("../common");
6
+ const operators_1 = require("./operators");
7
+ const functions_1 = require("./functions");
8
+ const isFormula = (value) => value && value.length > 0 && value.charAt(0) == '=' ? true : false;
9
+ exports.isFormula = isFormula;
10
+ const prefixFormula = (value) => (0, exports.isFormula)(value) ? value : ('=' + (value !== null && value !== void 0 ? value : ''));
11
+ exports.prefixFormula = prefixFormula;
12
+ const stripFormulaPrefix = (value) => (0, exports.isFormula)(value) ? value.substring(1) : value;
13
+ exports.stripFormulaPrefix = stripFormulaPrefix;
14
+ const colors = ['#5B97FF', '#FF616B', '#B77CFF', '#00B02C', '#FC58BE', '#FF9000', '#2EB0B3'];
15
+ const getColor = (index) => colors[index % colors.length];
16
+ const getTokenSize = (token) => token[0].length + (token[1] == tokenization_1.TokenType.Sheet ? 3 : 0);
17
+ class Formula {
18
+ get fn() { var _a; return (_a = this._fn) !== null && _a !== void 0 ? _a : (this._fn = (new Function('t', 'ctx', 'return ' + this.compile()))); }
19
+ get tokens() { return this._tokens; }
20
+ get variables() { return this._variables; }
21
+ get cells() { return this._cells; }
22
+ get ranges() { return this._ranges; }
23
+ get colors() {
24
+ const colormap = new Map();
25
+ for (let i = 0; i < this._tokens.length; i++) {
26
+ const t = this._tokens[i];
27
+ if ([tokenization_1.TokenType.Variable, tokenization_1.TokenType.Cell, tokenization_1.TokenType.Range].includes(t[1])) {
28
+ const sheet = i > 0 && this._tokens[i - 1][1] == tokenization_1.TokenType.Sheet ? this._tokens[i - 1][0] : null;
29
+ const key = (sheet ? ('\'' + sheet + '\'!') : '') + t[0];
30
+ colormap.set(key, { color: getColor(colormap.size), address: t[0], sheet: sheet, type: t[1], tokenIndex: i });
31
+ }
32
+ }
33
+ return colormap;
34
+ }
35
+ constructor(expression, tokenizer) {
36
+ this.expression = expression;
37
+ this.tokenizer = tokenizer;
38
+ this._tokens = tokenizer.tokenize(this.expression);
39
+ this.updateDependecies();
40
+ }
41
+ findTokenIndexAtPosition(pos) {
42
+ let i = 0;
43
+ return this._tokens.findIndex(token => {
44
+ const size = getTokenSize(token);
45
+ if (pos >= i && pos <= i + size)
46
+ return true;
47
+ i += size;
48
+ });
49
+ }
50
+ getTokenPosition(index) {
51
+ let min = 0;
52
+ for (let i = 0; i < index; i++) {
53
+ min += getTokenSize(this._tokens[i]);
54
+ }
55
+ return { min: min, max: min + getTokenSize(this._tokens[index]) };
56
+ }
57
+ updateToken(index, newValue) {
58
+ this._fn = null;
59
+ this._formula = null;
60
+ this._tokens[index][0] = newValue;
61
+ }
62
+ removeToken(index) {
63
+ this._fn = null;
64
+ this._formula = null;
65
+ this._tokens.splice(index, 1);
66
+ }
67
+ insertToken(index, value, type) {
68
+ this._fn = null;
69
+ this._formula = null;
70
+ this._tokens.splice(index, 0, [value, type]);
71
+ }
72
+ clone() {
73
+ return new Formula(this.createFormulaString(), this.tokenizer);
74
+ }
75
+ updateDependecies() {
76
+ this._variables = [];
77
+ this._cells = [];
78
+ this._ranges = [];
79
+ let sheet;
80
+ this._tokens.forEach((t, i) => {
81
+ switch (t[1]) {
82
+ case tokenization_1.TokenType.Sheet:
83
+ sheet = t[0];
84
+ break;
85
+ case tokenization_1.TokenType.Variable:
86
+ this._variables.push([i, t[0], sheet]);
87
+ sheet = undefined;
88
+ break;
89
+ case tokenization_1.TokenType.Cell:
90
+ this._cells.push([i, common_1.CellRange.fromA1(t[0]), sheet]);
91
+ sheet = undefined;
92
+ break;
93
+ case tokenization_1.TokenType.Range:
94
+ this._ranges.push([i, common_1.CellRange.fromA1(t[0]), sheet]);
95
+ sheet = undefined;
96
+ break;
97
+ }
98
+ });
99
+ }
100
+ getNamedColor(name) {
101
+ var _a, _b;
102
+ return (_b = (_a = this.colors.get(name)) === null || _a === void 0 ? void 0 : _a.color) !== null && _b !== void 0 ? _b : 'inherit';
103
+ }
104
+ createFormulaString(html = false, fnPrefix = null) {
105
+ const opts = this.tokenizer.options;
106
+ let formula = '';
107
+ let token;
108
+ for (let i = 0; i < this._tokens.length; i++) {
109
+ token = this._tokens[i];
110
+ switch (token[1]) {
111
+ case tokenization_1.TokenType.SheetQuote:
112
+ formula += '\'';
113
+ break;
114
+ case tokenization_1.TokenType.SheetSeparator:
115
+ formula += '!';
116
+ break;
117
+ case tokenization_1.TokenType.Sheet:
118
+ formula += html ? `<span style="font-style:italic">${token[0]}</span>` : token[0];
119
+ break;
120
+ case tokenization_1.TokenType.Variable:
121
+ formula += token[0];
122
+ break;
123
+ case tokenization_1.TokenType.Range:
124
+ case tokenization_1.TokenType.Cell:
125
+ formula += html ? `<span style="color:${this.getNamedColor(token[0])}">${token[0]}</span>` : token[0];
126
+ break;
127
+ case tokenization_1.TokenType.StringQuote:
128
+ formula += opts.stringQuote;
129
+ break;
130
+ case tokenization_1.TokenType.String:
131
+ formula += token[0].replace(new RegExp(opts.stringQuote, 'g'), '\\' + opts.stringQuote);
132
+ break;
133
+ case tokenization_1.TokenType.ArgumentSeparator:
134
+ formula += opts.argumentSeparator;
135
+ break;
136
+ case tokenization_1.TokenType.Function:
137
+ formula += (fnPrefix ? (fnPrefix + '.') : '') + token[0];
138
+ break;
139
+ case tokenization_1.TokenType.Unknown:
140
+ formula += html
141
+ ? `<span style="background:#f00;color:#fff">${token[0]}</span>`
142
+ : token[0];
143
+ break;
144
+ default:
145
+ formula += token[0];
146
+ break;
147
+ }
148
+ }
149
+ return formula;
150
+ }
151
+ createExpressionTree() {
152
+ const nodeStack = [];
153
+ const operatorStack = [];
154
+ const tokens = this.tokens;
155
+ let token, operator;
156
+ let op1, op2;
157
+ let sheet = null;
158
+ let nodes;
159
+ for (let i = 0; i < tokens.length; i++) {
160
+ token = tokens[i];
161
+ switch (token[1]) {
162
+ case tokenization_1.TokenType.Sheet:
163
+ sheet = token[0];
164
+ break;
165
+ case tokenization_1.TokenType.Cell:
166
+ case tokenization_1.TokenType.Range:
167
+ nodeStack.push({ t: token[0], tt: token[1], s: sheet });
168
+ sheet = null;
169
+ break;
170
+ case tokenization_1.TokenType.Number:
171
+ case tokenization_1.TokenType.String:
172
+ case tokenization_1.TokenType.Boolean:
173
+ case tokenization_1.TokenType.Variable:
174
+ nodeStack.push({ t: token[0], tt: token[1] });
175
+ break;
176
+ case tokenization_1.TokenType.Operator:
177
+ op1 = operators_1.operatorMap.get(token[0]);
178
+ while (operatorStack.length > 0) {
179
+ op2 = operators_1.operatorMap.get(operatorStack[operatorStack.length - 1][0]);
180
+ if (!op2)
181
+ break;
182
+ // operators with higher precedence or equal precedence and left associativity
183
+ if (!(op1[2] === 0 && op1[1] <= op2[1]) && !(op1[2] === 1 && op1[1] < op2[1]))
184
+ break;
185
+ operator = operatorStack.pop();
186
+ nodes = [nodeStack.pop(), nodeStack.pop()].reverse();
187
+ nodeStack.push({ t: operator[0], tt: operator[1], c: nodes });
188
+ }
189
+ operatorStack.push(token);
190
+ break;
191
+ case tokenization_1.TokenType.Function:
192
+ operatorStack.push(token);
193
+ break;
194
+ case tokenization_1.TokenType.OpenBracket:
195
+ operatorStack.push(token);
196
+ break;
197
+ case tokenization_1.TokenType.ArgumentSeparator:
198
+ while (operatorStack.length > 0) {
199
+ // evaluate expression until previous argument separator or open bracket
200
+ operator = operatorStack[operatorStack.length - 1];
201
+ if ([tokenization_1.TokenType.OpenBracket, tokenization_1.TokenType.ArgumentSeparator].includes(operator[1])) {
202
+ break;
203
+ }
204
+ operator = operatorStack.pop();
205
+ nodes = [nodeStack.pop(), nodeStack.pop()].reverse();
206
+ nodeStack.push({ t: operator[0], tt: operator[1], c: nodes });
207
+ }
208
+ operatorStack.push(token);
209
+ break;
210
+ case tokenization_1.TokenType.CloseBracket:
211
+ nodes = [];
212
+ while (operatorStack.length > 0) {
213
+ if (operatorStack[operatorStack.length - 1][1] === tokenization_1.TokenType.OpenBracket) {
214
+ break;
215
+ }
216
+ operator = operatorStack.pop();
217
+ if (operator[1] == tokenization_1.TokenType.Operator) {
218
+ // nodes array contains operands for the current operator
219
+ nodes.push({ t: operator[0], tt: operator[1], c: [nodeStack.pop(), nodeStack.pop()].reverse() });
220
+ }
221
+ else if (operator[1] == tokenization_1.TokenType.ArgumentSeparator) {
222
+ // nodes array contains arguments of the function
223
+ if (nodeStack.length > 0)
224
+ nodes.push(nodeStack.pop());
225
+ }
226
+ }
227
+ operatorStack.pop(); // pop the open bracket
228
+ if (operatorStack.length > 0 && operatorStack[operatorStack.length - 1][1] === tokenization_1.TokenType.Function) {
229
+ // current token is closing bracket of a function
230
+ operator = operatorStack.pop(); // pop function from operator stack
231
+ nodes = nodes.reverse();
232
+ if (nodeStack.length > 0 && tokens[i - 1][1] !== tokenization_1.TokenType.OpenBracket) {
233
+ nodes.unshift(nodeStack.pop()); // prepend first argument unless the function has zero arguments
234
+ }
235
+ nodeStack.push({ t: operator[0], tt: operator[1], c: nodes });
236
+ }
237
+ else {
238
+ // current token is closing bracket of an expression
239
+ nodeStack.push(...nodes);
240
+ }
241
+ break;
242
+ }
243
+ }
244
+ while (operatorStack.length > 0) {
245
+ operator = operatorStack.pop();
246
+ nodeStack.push({ t: operator[0], tt: operator[1], c: [nodeStack.pop(), nodeStack.pop()].reverse() });
247
+ }
248
+ return nodeStack.pop();
249
+ }
250
+ createExpressionJSCode(node, parent, arrayMode) {
251
+ let args;
252
+ switch (node.tt) {
253
+ case tokenization_1.TokenType.Range:
254
+ return 't.rn(\'' + node.t + '\'' + (node.s ? (',\'' + node.s + '\'') : '') + ')';
255
+ case tokenization_1.TokenType.Cell:
256
+ return 't.cl(\'' + node.t + '\'' + (node.s ? (',\'' + node.s + '\'') : '') + ')';
257
+ case tokenization_1.TokenType.Variable:
258
+ if (arrayMode || (parent === null || parent === void 0 ? void 0 : parent.tt) === tokenization_1.TokenType.Function) {
259
+ return 't.nr(\'' + node.t + '\'' + (node.s ? (',\'' + node.s + '\'') : '') + ')';
260
+ }
261
+ else {
262
+ return 't.nv(\'' + node.t + '\'' + (node.s ? (',\'' + node.s + '\'') : '') + ')';
263
+ }
264
+ case tokenization_1.TokenType.String:
265
+ return '\'' + node.t.replace(/'/g, "\\'") + '\'';
266
+ case tokenization_1.TokenType.Boolean:
267
+ return node.t[0].toUpperCase() == 'T' ? '1' : '0';
268
+ case tokenization_1.TokenType.Function:
269
+ args = node.c.map(n => this.createExpressionJSCode(n, node, arrayMode || (0, functions_1.isArrayFunction)(node.t)));
270
+ return 't.fn(\'' + node.t + '\').call(ctx' + (args.length > 0 ? (',' + args.join(',')) : '') + ')';
271
+ case tokenization_1.TokenType.Operator:
272
+ if (arrayMode) {
273
+ args = node.c.map(n => this.createExpressionJSCode(n, node, arrayMode || (0, functions_1.isArrayFunction)(node.t)));
274
+ return 't.op(' + args[0] + ',' + args[1] + ',\'' + node.t + '\')';
275
+ }
276
+ else {
277
+ return '(' + node.c.map(n => this.createExpressionJSCode(n, node, arrayMode)).join(node.t) + ')';
278
+ }
279
+ default:
280
+ return node.t;
281
+ }
282
+ }
283
+ compile() {
284
+ const tree = this.createExpressionTree();
285
+ return this.createExpressionJSCode(tree);
286
+ }
287
+ toString(prefix = false) {
288
+ var _a;
289
+ return (prefix ? '=' : '') + ((_a = this._formula) !== null && _a !== void 0 ? _a : (this._formula = this.createFormulaString()));
290
+ }
291
+ toExcelString() {
292
+ var _a;
293
+ return ((_a = this._formula) !== null && _a !== void 0 ? _a : (this._formula = this.createFormulaString(false, '_xlfn')));
294
+ }
295
+ shift(index, offset, direction, maxIndex = null) {
296
+ if (this._cells)
297
+ this._cells.forEach(cell => {
298
+ //if (cell[2] != sheet) return;
299
+ switch (direction) {
300
+ case 'up':
301
+ cell[1].shiftUp(index, offset, maxIndex);
302
+ break;
303
+ case 'right':
304
+ cell[1].shiftRight(index, offset, maxIndex);
305
+ break;
306
+ case 'down':
307
+ cell[1].shiftDown(index, offset, maxIndex);
308
+ break;
309
+ case 'left':
310
+ cell[1].shiftLeft(index, offset, maxIndex);
311
+ break;
312
+ }
313
+ this._tokens[cell[0]][0] = cell[1].A1;
314
+ });
315
+ if (this._ranges)
316
+ this._ranges.forEach(range => {
317
+ //if (range[2] != sheet) return;
318
+ switch (direction) {
319
+ case 'up':
320
+ range[1].shiftUp(index, offset, maxIndex);
321
+ break;
322
+ case 'right':
323
+ range[1].shiftRight(index, offset, maxIndex);
324
+ break;
325
+ case 'down':
326
+ range[1].shiftDown(index, offset, maxIndex);
327
+ break;
328
+ case 'left':
329
+ range[1].shiftLeft(index, offset, maxIndex);
330
+ break;
331
+ }
332
+ this._tokens[range[0]][0] = range[1].A1;
333
+ });
334
+ return this;
335
+ }
336
+ hasSheetReference(sheet) {
337
+ for (const cell of this._cells)
338
+ if (cell[2] == sheet)
339
+ return true;
340
+ for (const range of this._ranges)
341
+ if (range[2] == sheet)
342
+ return true;
343
+ for (const variable of this._variables)
344
+ if (variable[2] == sheet)
345
+ return true;
346
+ return false;
347
+ }
348
+ renameSheet(oldName, newName) {
349
+ let renamed = false;
350
+ this._tokens.forEach(t => {
351
+ if (t[1] == tokenization_1.TokenType.Sheet && t[0] == oldName) {
352
+ t[0] = newName;
353
+ renamed = true;
354
+ }
355
+ });
356
+ return renamed;
357
+ }
358
+ }
359
+ exports.Formula = Formula;
360
+ //# sourceMappingURL=formula.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formula.js","sourceRoot":"","sources":["../../src/calculations/formula.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { Arg } from "./helpers";
2
+ export declare function weekday(sn: number, returnType?: number): number;
3
+ export declare function workday(sn: Arg<number>, count: number, _holidays?: number[]): number;
4
+ export declare function today(): number;
5
+ export declare function isBlank(value: Arg): boolean;
6
+ //# sourceMappingURL=dates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dates.d.ts","sourceRoot":"","sources":["../../../src/calculations/functions/dates.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAU,MAAM,WAAW,CAAC;AAExC,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,UAOtD;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,UAE3E;AAED,wBAAgB,KAAK,WAEpB;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,GAAG,WAGjC"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isBlank = exports.today = exports.workday = exports.weekday = void 0;
4
+ const core_1 = require("@omegagrid/core");
5
+ const helpers_1 = require("./helpers");
6
+ function weekday(sn, returnType) {
7
+ const d = core_1.dates.serialDateToDate(sn).getDay();
8
+ switch (returnType) {
9
+ case 2: return d;
10
+ case 3: return d - 1;
11
+ default: return (d % 7) + 1; // 1
12
+ }
13
+ }
14
+ exports.weekday = weekday;
15
+ function workday(sn, count, _holidays) {
16
+ return core_1.dates.workday((0, helpers_1.scalar)(sn), count);
17
+ }
18
+ exports.workday = workday;
19
+ function today() {
20
+ return core_1.dates.dateToSerialDate(new Date());
21
+ }
22
+ exports.today = today;
23
+ function isBlank(value) {
24
+ value = (0, helpers_1.scalar)(value);
25
+ return value == null || value === '';
26
+ }
27
+ exports.isBlank = isBlank;
28
+ //# sourceMappingURL=dates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dates.js","sourceRoot":"","sources":["../../../src/calculations/functions/dates.ts"],"names":[],"mappings":";;;AAAA,0CAAwC;AACxC,uCAAwC;AAExC,SAAgB,OAAO,CAAC,EAAU,EAAE,UAAmB;IACtD,MAAM,CAAC,GAAG,YAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;IAC9C,QAAQ,UAAU,EAAE,CAAC;QACpB,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACjB,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACrB,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;IAClC,CAAC;AACF,CAAC;AAPD,0BAOC;AAED,SAAgB,OAAO,CAAC,EAAe,EAAE,KAAa,EAAE,SAAoB;IAC3E,OAAO,YAAK,CAAC,OAAO,CAAC,IAAA,gBAAM,EAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AACzC,CAAC;AAFD,0BAEC;AAED,SAAgB,KAAK;IACpB,OAAO,YAAK,CAAC,gBAAgB,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;AAC3C,CAAC;AAFD,sBAEC;AAED,SAAgB,OAAO,CAAC,KAAU;IACjC,KAAK,GAAG,IAAA,gBAAM,EAAC,KAAK,CAAC,CAAC;IACtB,OAAO,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;AACtC,CAAC;AAHD,0BAGC"}
@@ -0,0 +1,11 @@
1
+ import { Matrix } from "@omegagrid/core";
2
+ import { FormulaContext } from "..";
3
+ export type Value = number | string | boolean | null;
4
+ export type ArrayArg<T = Value> = Matrix<T> | Matrix<T>[];
5
+ export type Arg<T = Value> = T | ArrayArg<T>;
6
+ export declare function getFormulaCells(ctx: FormulaContext): import("../..").CellModel[];
7
+ export declare function scalar<T>(value: Arg<T>): T;
8
+ export declare function matrix<T>(value: Arg<T>): Matrix<T>;
9
+ export declare function eachValue<T>(values: Arg<T>, callback: (value: T, r: number, c: number) => unknown | undefined | boolean, r?: number, c?: number): unknown | undefined | boolean;
10
+ export declare function valuesToArray<T>(values: Arg<T>): T[];
11
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/calculations/functions/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,IAAI,CAAC;AAEpC,MAAM,MAAM,KAAK,GAAG,MAAM,GAAC,MAAM,GAAC,OAAO,GAAC,IAAI,CAAC;AAC/C,MAAM,MAAM,QAAQ,CAAC,CAAC,GAAG,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,GAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;AACxD,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,GAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAE3C,wBAAgB,eAAe,CAAC,GAAG,EAAE,cAAc,+BAElD;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAM1C;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAElD;AAED,wBAAgB,SAAS,CAAC,CAAC,EAC1B,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EACd,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,OAAO,GAAC,SAAS,GAAC,OAAO,EACvE,CAAC,CAAC,EAAE,MAAM,EACV,CAAC,CAAC,EAAE,MAAM,GACR,OAAO,GAAC,SAAS,GAAC,OAAO,CAS3B;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,OAI9C"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.valuesToArray = exports.eachValue = exports.matrix = exports.scalar = exports.getFormulaCells = void 0;
4
+ function getFormulaCells(ctx) {
5
+ return ctx.formula.cells.map(item => ctx.cell.model.getCellByRange(item[1]));
6
+ }
7
+ exports.getFormulaCells = getFormulaCells;
8
+ function scalar(value) {
9
+ let result = value;
10
+ while (Array.isArray(result)) {
11
+ result = result.length > 0 ? result[0] : null;
12
+ }
13
+ return result;
14
+ }
15
+ exports.scalar = scalar;
16
+ function matrix(value) {
17
+ return (Array.isArray(value) ? value : [[value]]);
18
+ }
19
+ exports.matrix = matrix;
20
+ function eachValue(values, callback, r, c) {
21
+ if (Array.isArray(values)) {
22
+ for (let i = 0; i < values.length; i++) {
23
+ if (eachValue(values[i], callback, r == null ? i : r, r == null ? undefined : i) === false)
24
+ return false;
25
+ }
26
+ }
27
+ else {
28
+ return callback(values, r, c);
29
+ }
30
+ }
31
+ exports.eachValue = eachValue;
32
+ function valuesToArray(values) {
33
+ const arr = [];
34
+ eachValue(values, v => arr.push(v));
35
+ return arr;
36
+ }
37
+ exports.valuesToArray = valuesToArray;
38
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/calculations/functions/helpers.ts"],"names":[],"mappings":";;;AAOA,SAAgB,eAAe,CAAC,GAAmB;IAClD,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9E,CAAC;AAFD,0CAEC;AAED,SAAgB,MAAM,CAAI,KAAa;IACtC,IAAI,MAAM,GAAY,KAAK,CAAC;IAC5B,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/C,CAAC;IACD,OAAO,MAAW,CAAC;AACpB,CAAC;AAND,wBAMC;AAED,SAAgB,MAAM,CAAI,KAAa;IACtC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAc,CAAC;AAChE,CAAC;AAFD,wBAEC;AAED,SAAgB,SAAS,CACxB,MAAc,EACd,QAAuE,EACvE,CAAU,EACV,CAAU;IAEV,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAW,EAAE,QAAQ,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK;gBACnG,OAAO,KAAK,CAAC;QACf,CAAC;IACF,CAAC;SAAM,CAAC;QACP,OAAO,QAAQ,CAAC,MAAW,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACpC,CAAC;AACF,CAAC;AAdD,8BAcC;AAED,SAAgB,aAAa,CAAI,MAAc;IAC9C,MAAM,GAAG,GAAQ,EAAE,CAAC;IACpB,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,OAAO,GAAG,CAAC;AACZ,CAAC;AAJD,sCAIC"}
@@ -0,0 +1,5 @@
1
+ import { FormulaFunction } from '../../types';
2
+ declare const functions: Map<string, FormulaFunction>;
3
+ declare const isArrayFunction: (name: string) => boolean;
4
+ export { functions, isArrayFunction };
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/calculations/functions/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAU9C,QAAA,MAAM,SAAS,8BAAqC,CAAC;AAUrD,QAAA,MAAM,eAAe,SAAU,MAAM,YAA0B,CAAC;AAEhE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC"}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.isArrayFunction = exports.functions = void 0;
27
+ const textFunctions = __importStar(require("./text"));
28
+ const dateFunctions = __importStar(require("./dates"));
29
+ const mathFunctions = __importStar(require("./math"));
30
+ const lookupFunctions = __importStar(require("./lookup"));
31
+ const specialFunctions = __importStar(require("./special"));
32
+ const logicalFunctions = __importStar(require("./logical"));
33
+ const statisticalFunctions = __importStar(require("./statistical"));
34
+ const core_1 = require("@omegagrid/core");
35
+ function addModuleFunctions(map, module) {
36
+ Object.keys(module).forEach(name => map.set(core_1.utils.trim(name, '_').replace(/_/g, '.').toUpperCase(), module[name]));
37
+ }
38
+ const functions = new Map();
39
+ exports.functions = functions;
40
+ addModuleFunctions(functions, textFunctions);
41
+ addModuleFunctions(functions, dateFunctions);
42
+ addModuleFunctions(functions, mathFunctions);
43
+ addModuleFunctions(functions, lookupFunctions);
44
+ addModuleFunctions(functions, logicalFunctions);
45
+ addModuleFunctions(functions, specialFunctions);
46
+ addModuleFunctions(functions, statisticalFunctions);
47
+ const isArrayFunction = (name) => name === 'SUMPRODUCT';
48
+ exports.isArrayFunction = isArrayFunction;
49
+ /*
50
+ function dec1(value: boolean) {
51
+ return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {
52
+ descriptor.enumerable = value;
53
+ };
54
+ }
55
+ class MyClass {
56
+ @dec1(true)
57
+ static myMethod(arg1: number, arg2: string) {
58
+ console.log('myMethod');
59
+ }
60
+ }
61
+
62
+ function callStaticMethods(classObj: any) {
63
+ Object.getOwnPropertyNames(classObj)
64
+ .filter(name => typeof classObj[name] === 'function')
65
+ .forEach(methodName => {
66
+ console.log(`Calling ${methodName}`);
67
+ classObj[methodName]();
68
+ });
69
+ }
70
+
71
+ callStaticMethods(MyClass);
72
+ */
73
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/calculations/functions/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sDAAwC;AACxC,uDAAyC;AACzC,sDAAwC;AACxC,0DAA4C;AAC5C,4DAA8C;AAC9C,4DAA8C;AAC9C,oEAAsD;AAEtD,0CAAwC;AAExC,SAAS,kBAAkB,CAAC,GAAiC,EAAE,MAAc;IAC5E,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAC1C,YAAK,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,EACrD,MAA0C,CAAC,IAAI,CAAC,CAAC,CAClD,CAAC;AACH,CAAC;AAED,MAAM,SAAS,GAAG,IAAI,GAAG,EAA2B,CAAC;AAY5C,8BAAS;AAXlB,kBAAkB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;AAC7C,kBAAkB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;AAC7C,kBAAkB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;AAC7C,kBAAkB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;AAC/C,kBAAkB,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;AAChD,kBAAkB,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;AAChD,kBAAkB,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;AAGpD,MAAM,eAAe,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,KAAK,YAAY,CAAC;AAE5C,0CAAe;AAEnC;;;;;;;;;;;;;;;;;;;;;;;EAuBE"}
@@ -0,0 +1,10 @@
1
+ import { ArrayArg } from "./helpers";
2
+ export declare function and(...args: ArrayArg): boolean;
3
+ export declare function or(...args: ArrayArg): boolean;
4
+ export declare function xor(...args: ArrayArg): boolean;
5
+ export declare function _switch(...args: unknown[]): unknown;
6
+ export declare function _if(condition: unknown, ifTrue: unknown, ifFalse: unknown): unknown;
7
+ export declare function not(value: unknown): boolean;
8
+ export declare function _false(): boolean;
9
+ export declare function _true(): boolean;
10
+ //# sourceMappingURL=logical.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logical.d.ts","sourceRoot":"","sources":["../../../src/calculations/functions/logical.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAa,MAAM,WAAW,CAAC;AAEhD,wBAAgB,GAAG,CAAC,GAAG,IAAI,EAAE,QAAQ,WAIpC;AAED,wBAAgB,EAAE,CAAC,GAAG,IAAI,EAAE,QAAQ,WAInC;AAED,wBAAgB,GAAG,CAAC,GAAG,IAAI,EAAE,QAAQ,WAOpC;AAED,wBAAgB,OAAO,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,WAOzC;AAED,wBAAgB,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,WAAyC;AAClH,wBAAgB,GAAG,CAAC,KAAK,EAAE,OAAO,WAAmB;AACrD,wBAAgB,MAAM,YAAmB;AACzC,wBAAgB,KAAK,YAAkB"}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports._true = exports._false = exports.not = exports._if = exports._switch = exports.xor = exports.or = exports.and = void 0;
4
+ const helpers_1 = require("./helpers");
5
+ function and(...args) {
6
+ let result = true;
7
+ (0, helpers_1.eachValue)(args, v => { if (!v)
8
+ return (result = false); });
9
+ return result;
10
+ }
11
+ exports.and = and;
12
+ function or(...args) {
13
+ let result = false;
14
+ (0, helpers_1.eachValue)(args, v => { if (v)
15
+ return (result = true); });
16
+ return result;
17
+ }
18
+ exports.or = or;
19
+ function xor(...args) {
20
+ let result = null;
21
+ (0, helpers_1.eachValue)(args, v => {
22
+ if (result === null)
23
+ result = !!v;
24
+ else
25
+ result = (!!v != result);
26
+ });
27
+ return result;
28
+ }
29
+ exports.xor = xor;
30
+ function _switch(...args) {
31
+ const expression = args[0];
32
+ for (let i = 1; i < args.length; i += 2) {
33
+ if (i == args.length - 1)
34
+ return args[i];
35
+ else if (expression == args[i])
36
+ return args[i + 1];
37
+ }
38
+ return null;
39
+ }
40
+ exports._switch = _switch;
41
+ function _if(condition, ifTrue, ifFalse) { return condition ? ifTrue : ifFalse; }
42
+ exports._if = _if;
43
+ function not(value) { return !value; }
44
+ exports.not = not;
45
+ function _false() { return false; }
46
+ exports._false = _false;
47
+ function _true() { return true; }
48
+ exports._true = _true;
49
+ //# sourceMappingURL=logical.js.map