@rowsncolumns/utils 9.2.35

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 (154) hide show
  1. package/LICENSE.md +100 -0
  2. package/dist/cjs/array.d.ts +3 -0
  3. package/dist/cjs/array.d.ts.map +1 -0
  4. package/dist/cjs/array.js +19 -0
  5. package/dist/cjs/cell-data-helpers.d.ts +19 -0
  6. package/dist/cjs/cell-data-helpers.d.ts.map +1 -0
  7. package/dist/cjs/cell-data-helpers.js +64 -0
  8. package/dist/cjs/color.d.ts +20 -0
  9. package/dist/cjs/color.d.ts.map +1 -0
  10. package/dist/cjs/color.js +168 -0
  11. package/dist/cjs/colors.d.ts +2 -0
  12. package/dist/cjs/colors.d.ts.map +1 -0
  13. package/dist/cjs/colors.js +78 -0
  14. package/dist/cjs/conditional-format.d.ts +49 -0
  15. package/dist/cjs/conditional-format.d.ts.map +1 -0
  16. package/dist/cjs/conditional-format.js +227 -0
  17. package/dist/cjs/content-hash.d.ts +16 -0
  18. package/dist/cjs/content-hash.d.ts.map +1 -0
  19. package/dist/cjs/content-hash.js +72 -0
  20. package/dist/cjs/data-validation.d.ts +54 -0
  21. package/dist/cjs/data-validation.d.ts.map +1 -0
  22. package/dist/cjs/data-validation.js +249 -0
  23. package/dist/cjs/date.d.ts +15 -0
  24. package/dist/cjs/date.d.ts.map +1 -0
  25. package/dist/cjs/date.js +56 -0
  26. package/dist/cjs/dom.d.ts +10 -0
  27. package/dist/cjs/dom.d.ts.map +1 -0
  28. package/dist/cjs/dom.js +97 -0
  29. package/dist/cjs/formatter.d.ts +22 -0
  30. package/dist/cjs/formatter.d.ts.map +1 -0
  31. package/dist/cjs/formatter.js +264 -0
  32. package/dist/cjs/formula-refs.d.ts +7 -0
  33. package/dist/cjs/formula-refs.d.ts.map +1 -0
  34. package/dist/cjs/formula-refs.js +54 -0
  35. package/dist/cjs/formula.d.ts +80 -0
  36. package/dist/cjs/formula.d.ts.map +1 -0
  37. package/dist/cjs/formula.js +401 -0
  38. package/dist/cjs/index.d.ts +24 -0
  39. package/dist/cjs/index.d.ts.map +1 -0
  40. package/dist/cjs/index.js +26 -0
  41. package/dist/cjs/locale.d.ts +34 -0
  42. package/dist/cjs/locale.d.ts.map +1 -0
  43. package/dist/cjs/locale.js +260 -0
  44. package/dist/cjs/log.d.ts +4 -0
  45. package/dist/cjs/log.d.ts.map +1 -0
  46. package/dist/cjs/log.js +28 -0
  47. package/dist/cjs/memoize.d.ts +18 -0
  48. package/dist/cjs/memoize.d.ts.map +1 -0
  49. package/dist/cjs/memoize.js +128 -0
  50. package/dist/cjs/numbers.d.ts +19 -0
  51. package/dist/cjs/numbers.d.ts.map +1 -0
  52. package/dist/cjs/numbers.js +47 -0
  53. package/dist/cjs/selection.d.ts +88 -0
  54. package/dist/cjs/selection.d.ts.map +1 -0
  55. package/dist/cjs/selection.js +368 -0
  56. package/dist/cjs/shared-string-canonical.d.ts +18 -0
  57. package/dist/cjs/shared-string-canonical.d.ts.map +1 -0
  58. package/dist/cjs/shared-string-canonical.js +74 -0
  59. package/dist/cjs/sort.d.ts +15 -0
  60. package/dist/cjs/sort.d.ts.map +1 -0
  61. package/dist/cjs/sort.js +44 -0
  62. package/dist/cjs/string.d.ts +74 -0
  63. package/dist/cjs/string.d.ts.map +1 -0
  64. package/dist/cjs/string.js +237 -0
  65. package/dist/cjs/table-styles.d.ts +56 -0
  66. package/dist/cjs/table-styles.d.ts.map +1 -0
  67. package/dist/cjs/table-styles.js +362 -0
  68. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -0
  69. package/dist/cjs/typeguards.d.ts +4 -0
  70. package/dist/cjs/typeguards.d.ts.map +1 -0
  71. package/dist/cjs/typeguards.js +15 -0
  72. package/dist/cjs/uuid.d.ts +8 -0
  73. package/dist/cjs/uuid.d.ts.map +1 -0
  74. package/dist/cjs/uuid.js +30 -0
  75. package/dist/cjs/vitest.config.d.ts +3 -0
  76. package/dist/cjs/vitest.config.d.ts.map +1 -0
  77. package/dist/cjs/vitest.config.js +9 -0
  78. package/dist/esm/array.d.ts +3 -0
  79. package/dist/esm/array.d.ts.map +1 -0
  80. package/dist/esm/array.js +14 -0
  81. package/dist/esm/cell-data-helpers.d.ts +19 -0
  82. package/dist/esm/cell-data-helpers.d.ts.map +1 -0
  83. package/dist/esm/cell-data-helpers.js +39 -0
  84. package/dist/esm/color.d.ts +20 -0
  85. package/dist/esm/color.d.ts.map +1 -0
  86. package/dist/esm/color.js +152 -0
  87. package/dist/esm/colors.d.ts +2 -0
  88. package/dist/esm/colors.d.ts.map +1 -0
  89. package/dist/esm/colors.js +75 -0
  90. package/dist/esm/conditional-format.d.ts +49 -0
  91. package/dist/esm/conditional-format.d.ts.map +1 -0
  92. package/dist/esm/conditional-format.js +219 -0
  93. package/dist/esm/content-hash.d.ts +16 -0
  94. package/dist/esm/content-hash.d.ts.map +1 -0
  95. package/dist/esm/content-hash.js +68 -0
  96. package/dist/esm/data-validation.d.ts +54 -0
  97. package/dist/esm/data-validation.d.ts.map +1 -0
  98. package/dist/esm/data-validation.js +237 -0
  99. package/dist/esm/date.d.ts +15 -0
  100. package/dist/esm/date.d.ts.map +1 -0
  101. package/dist/esm/date.js +46 -0
  102. package/dist/esm/dom.d.ts +10 -0
  103. package/dist/esm/dom.d.ts.map +1 -0
  104. package/dist/esm/dom.js +90 -0
  105. package/dist/esm/formatter.d.ts +22 -0
  106. package/dist/esm/formatter.d.ts.map +1 -0
  107. package/dist/esm/formatter.js +253 -0
  108. package/dist/esm/formula-refs.d.ts +7 -0
  109. package/dist/esm/formula-refs.d.ts.map +1 -0
  110. package/dist/esm/formula-refs.js +49 -0
  111. package/dist/esm/formula.d.ts +80 -0
  112. package/dist/esm/formula.d.ts.map +1 -0
  113. package/dist/esm/formula.js +298 -0
  114. package/dist/esm/index.d.ts +24 -0
  115. package/dist/esm/index.d.ts.map +1 -0
  116. package/dist/esm/index.js +23 -0
  117. package/dist/esm/locale.d.ts +34 -0
  118. package/dist/esm/locale.d.ts.map +1 -0
  119. package/dist/esm/locale.js +223 -0
  120. package/dist/esm/log.d.ts +4 -0
  121. package/dist/esm/log.d.ts.map +1 -0
  122. package/dist/esm/log.js +3 -0
  123. package/dist/esm/memoize.d.ts +18 -0
  124. package/dist/esm/memoize.d.ts.map +1 -0
  125. package/dist/esm/memoize.js +95 -0
  126. package/dist/esm/numbers.d.ts +19 -0
  127. package/dist/esm/numbers.d.ts.map +1 -0
  128. package/dist/esm/numbers.js +40 -0
  129. package/dist/esm/selection.d.ts +88 -0
  130. package/dist/esm/selection.d.ts.map +1 -0
  131. package/dist/esm/selection.js +311 -0
  132. package/dist/esm/shared-string-canonical.d.ts +18 -0
  133. package/dist/esm/shared-string-canonical.d.ts.map +1 -0
  134. package/dist/esm/shared-string-canonical.js +68 -0
  135. package/dist/esm/sort.d.ts +15 -0
  136. package/dist/esm/sort.d.ts.map +1 -0
  137. package/dist/esm/sort.js +39 -0
  138. package/dist/esm/string.d.ts +74 -0
  139. package/dist/esm/string.d.ts.map +1 -0
  140. package/dist/esm/string.js +213 -0
  141. package/dist/esm/table-styles.d.ts +56 -0
  142. package/dist/esm/table-styles.d.ts.map +1 -0
  143. package/dist/esm/table-styles.js +367 -0
  144. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -0
  145. package/dist/esm/typeguards.d.ts +4 -0
  146. package/dist/esm/typeguards.d.ts.map +1 -0
  147. package/dist/esm/typeguards.js +7 -0
  148. package/dist/esm/uuid.d.ts +8 -0
  149. package/dist/esm/uuid.d.ts.map +1 -0
  150. package/dist/esm/uuid.js +25 -0
  151. package/dist/esm/vitest.config.d.ts +3 -0
  152. package/dist/esm/vitest.config.d.ts.map +1 -0
  153. package/dist/esm/vitest.config.js +7 -0
  154. package/package.json +49 -0
@@ -0,0 +1,401 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.iterateSelections = exports.iterateCellsInRange = exports.iterateCells = exports.isAnArrowKey = exports.isValidFormula = exports.isAlternateFormula = exports.isBareFormulaExpression = exports.isAFormula = exports.setDefaultEnableAtFormula = exports.looksLikeMarkdown = exports.isBalancedParenthesis = exports.balanceFormula = exports.balanceQuotes = exports.balanceParentheses = void 0;
4
+ exports.combineIterators = combineIterators;
5
+ var tslib_1 = require("tslib");
6
+ var selection_1 = require("./selection");
7
+ /* Close parenthesis mapping */
8
+ var inverseParenMap = {
9
+ "(": ")",
10
+ "[": "]",
11
+ };
12
+ /* Check if a str is function parenthesis */
13
+ var isParen = function (char) { return "()[]".indexOf(char) !== -1; };
14
+ /* Check if a str is open parenthesis */
15
+ var isOpenParen = function (char) { return "(" === char || "[" === char; };
16
+ /**
17
+ * Add/remove parenthesis in formulas
18
+ * @param str
19
+ * @returns
20
+ */
21
+ var balanceParentheses = function (str) {
22
+ var chars = str.split("");
23
+ var stack = [];
24
+ for (var i = 0; i < chars.length; i++) {
25
+ var char = chars[i];
26
+ if (isParen(char)) {
27
+ if (isOpenParen(char)) {
28
+ stack.push(char);
29
+ }
30
+ else {
31
+ if (stack.length !== 0)
32
+ stack.pop();
33
+ }
34
+ }
35
+ }
36
+ return str + stack.map(function (item) { return inverseParenMap[item]; }).join("");
37
+ };
38
+ exports.balanceParentheses = balanceParentheses;
39
+ /**
40
+ * Add closing quotes in formulas when a string is unterminated.
41
+ * Handles escaped quotes ("") inside strings.
42
+ */
43
+ var balanceQuotes = function (str) {
44
+ var inString = false;
45
+ var openScopeCount = 0;
46
+ var stringStartScopeCount = 0;
47
+ for (var i = 0; i < str.length; i++) {
48
+ var char = str[i];
49
+ if (char === '"') {
50
+ if (inString && str[i + 1] === '"') {
51
+ i += 1;
52
+ continue;
53
+ }
54
+ inString = !inString;
55
+ if (inString) {
56
+ stringStartScopeCount = openScopeCount;
57
+ }
58
+ continue;
59
+ }
60
+ if (!inString) {
61
+ if (isOpenParen(char)) {
62
+ openScopeCount++;
63
+ }
64
+ else if (char === ")" || char === "]") {
65
+ if (openScopeCount > 0)
66
+ openScopeCount--;
67
+ }
68
+ }
69
+ }
70
+ if (!inString) {
71
+ return str;
72
+ }
73
+ var insertIndex = str.length;
74
+ while (insertIndex > 0 && /\s/.test(str[insertIndex - 1])) {
75
+ insertIndex -= 1;
76
+ }
77
+ var closeStart = insertIndex;
78
+ while (closeStart > 0) {
79
+ var char = str[closeStart - 1];
80
+ if (char !== ")" && char !== "]")
81
+ break;
82
+ closeStart -= 1;
83
+ }
84
+ var trailingParensCount = insertIndex - closeStart;
85
+ var parensToKeepOutside = Math.min(stringStartScopeCount, trailingParensCount);
86
+ var insertionPos = insertIndex - parensToKeepOutside;
87
+ return "".concat(str.slice(0, insertionPos), "\"").concat(str.slice(insertionPos));
88
+ };
89
+ exports.balanceQuotes = balanceQuotes;
90
+ /**
91
+ * Add/remove parenthesis and add closing quotes in formulas.
92
+ */
93
+ var balanceFormula = function (str) {
94
+ return (0, exports.balanceParentheses)(str);
95
+ };
96
+ exports.balanceFormula = balanceFormula;
97
+ /**
98
+ * Check if parenthesis is balanced
99
+ * @param str
100
+ * @returns
101
+ */
102
+ var isBalancedParenthesis = function (str) {
103
+ return (0, exports.balanceParentheses)(str).length === str.length;
104
+ };
105
+ exports.isBalancedParenthesis = isBalancedParenthesis;
106
+ var looksLikeMarkdown = function (text) {
107
+ var normalizedText = text.replace(/\\n/g, "\n").replace(/\\r/g, "\r");
108
+ var trimmedStart = normalizedText.trimStart();
109
+ if (!trimmedStart) {
110
+ return false;
111
+ }
112
+ var firstLine = trimmedStart.split("\n", 1)[0];
113
+ // Text starting with `---` is considered markdown (horizontal rule or front matter)
114
+ if (firstLine.startsWith("--")) {
115
+ return true;
116
+ }
117
+ // Front matter: starts with --- and another --- appears within a few lines.
118
+ if (/^---\s*$/.test(firstLine)) {
119
+ var lines = trimmedStart.split("\n").slice(1, 20);
120
+ if (lines.some(function (line) { return /^---\s*$/.test(line); })) {
121
+ return true;
122
+ }
123
+ // Heuristic: if a front-matter-like start is followed by markdown markers,
124
+ // treat it as markdown even without a closing ---.
125
+ if (lines.some(function (line) {
126
+ return /^(#{1,6}\s|>\s|[-*]\s|\d+\.\s|\|)/.test(line.trimStart());
127
+ })) {
128
+ return true;
129
+ }
130
+ }
131
+ // Common markdown markers.
132
+ if (/^(#{1,6}\s|>\s|[-*]\s|\d+\.\s|\|)/.test(trimmedStart)) {
133
+ return true;
134
+ }
135
+ // Horizontal rule only (line with ---/***/___).
136
+ return /^(?:---|\*\*\*|___)\s*$/.test(firstLine);
137
+ };
138
+ exports.looksLikeMarkdown = looksLikeMarkdown;
139
+ var defaultEnableAtFormula = false;
140
+ var setDefaultEnableAtFormula = function (enable) {
141
+ defaultEnableAtFormula = enable !== null && enable !== void 0 ? enable : false;
142
+ };
143
+ exports.setDefaultEnableAtFormula = setDefaultEnableAtFormula;
144
+ /**
145
+ * Check if text is a formula
146
+ * @param text
147
+ * @returns
148
+ */
149
+ var isAFormula = function (text) {
150
+ var textStr = String(text);
151
+ if ((0, exports.looksLikeMarkdown)(textStr)) {
152
+ return false;
153
+ }
154
+ // A formula's expression can never legitimately begin with a second "="
155
+ // right after the leading one — neither Excel nor Google Sheets has a token
156
+ // that starts an expression with "=". So "==", "===", "=== heading ===" and
157
+ // similar are decorative/label text, not a (broken) formula. Treat them as
158
+ // plain text instead of routing them through the calculator.
159
+ if (textStr.startsWith("==")) {
160
+ return false;
161
+ }
162
+ return !!textStr.startsWith("=") || (0, exports.isAlternateFormula)(textStr);
163
+ };
164
+ exports.isAFormula = isAFormula;
165
+ /* Quoted string literal, e.g. `"North Region"` (with `""` escapes). */
166
+ var STRING_LITERAL_ONLY = /^"(?:[^"]|"")*"$/;
167
+ /* Numeric literal, e.g. `42`, `-1.5`, `.5`, `1e3`, `12%`. */
168
+ var NUMERIC_LITERAL_ONLY = /^[+-]?(?:\d+(?:\.\d+)?|\.\d+)(?:[eE][+-]?\d+)?%?$/;
169
+ /* Boolean literal. */
170
+ var BOOLEAN_LITERAL_ONLY = /^(?:TRUE|FALSE)$/i;
171
+ /* Formula operators that can only appear in an expression that needs
172
+ * the calculator (scanned outside quoted segments). */
173
+ var FORMULA_OPERATOR = /[+\-*/^&<>=]/;
174
+ /**
175
+ * Check if text is a formula-shaped expression stored WITHOUT the
176
+ * leading "=". OOXML defined names (`<definedName>` in workbook.xml)
177
+ * store their expressions bare — `OFFSET(Sheet1!$A$1,0,0,10)` rather
178
+ * than `=OFFSET(...)` — so `isAFormula` can't classify them.
179
+ *
180
+ * Returns false for anything that already resolves as a static value
181
+ * or plain reference today: quoted string / numeric / boolean
182
+ * literals, single-area range references (including external-workbook
183
+ * references like `'[1]Revenue'!$A$17`), and broken `#REF!`
184
+ * expressions. Returns true only for expressions that need the
185
+ * calculator: function calls and operator expressions.
186
+ * @param text
187
+ * @returns
188
+ */
189
+ var isBareFormulaExpression = function (text) {
190
+ if (typeof text !== "string") {
191
+ return false;
192
+ }
193
+ var trimmed = text.trim();
194
+ if (!trimmed || trimmed.startsWith("=")) {
195
+ return false;
196
+ }
197
+ if (trimmed.includes("#REF!")) {
198
+ return false;
199
+ }
200
+ if (STRING_LITERAL_ONLY.test(trimmed) ||
201
+ NUMERIC_LITERAL_ONLY.test(trimmed) ||
202
+ BOOLEAN_LITERAL_ONLY.test(trimmed)) {
203
+ return false;
204
+ }
205
+ if ((0, selection_1.checkIfStringIsReference)(trimmed)) {
206
+ return false;
207
+ }
208
+ // Function call or parenthesized sub-expression.
209
+ if (trimmed.includes("(")) {
210
+ return true;
211
+ }
212
+ // Operator expression like `Sheet1!$A$1*2`. Strip string literals
213
+ // and quoted sheet names first so `'My-Sheet'!$A$1` isn't misread
214
+ // as subtraction.
215
+ var scannable = trimmed
216
+ .replace(/"(?:[^"]|"")*"/g, "")
217
+ .replace(/'[^']*'/g, "");
218
+ return FORMULA_OPERATOR.test(scannable);
219
+ };
220
+ exports.isBareFormulaExpression = isBareFormulaExpression;
221
+ // Pre-compiled `\p{Sc}` (Unicode currency-symbol category) check. Used to
222
+ // distinguish currency input like `-$100` / `+€50` from formula-prefixed
223
+ // input like `-A1` / `+SUM(A1:B2)`. Wrapped in try/catch because some
224
+ // older JS engines don't support Unicode property escapes.
225
+ var CURRENCY_SYMBOL_START = (function () {
226
+ try {
227
+ return new RegExp("^\\p{Sc}", "u");
228
+ }
229
+ catch (_a) {
230
+ return /^[£$€¥₹₽₩₪₫₴₸₺₼₾₿]/;
231
+ }
232
+ })();
233
+ // Check if its alternate formula
234
+ // ie the text starts with +
235
+ var isAlternateFormula = function (text) {
236
+ // @ can be treated as formula in Excel (even if invalid), but is disabled by default here
237
+ if (text.startsWith("@"))
238
+ return defaultEnableAtFormula;
239
+ if (!text.startsWith("+") && !text.startsWith("-"))
240
+ return false;
241
+ // Remove the leading + and check if what remains is just a number
242
+ var afterSign = text.slice(1).trim();
243
+ // If it's empty or just a number literal, it's not a formula
244
+ // Also check with common thousands separators removed (comma and period)
245
+ // to handle locale-formatted numbers like "1,234" or "1.234"
246
+ if (!afterSign || !isNaN(Number(afterSign))) {
247
+ return false;
248
+ }
249
+ // Excel parity: a leading sign followed by a currency symbol is the start
250
+ // of a (possibly in-progress) currency negative / positive — `-$100`,
251
+ // `+€50`, `-£1,234.56`. Excel treats these as currency, not formulas,
252
+ // even mid-type (the bare `-$` shows as text until digits are added).
253
+ if (CURRENCY_SYMBOL_START.test(afterSign)) {
254
+ return false;
255
+ }
256
+ // Check for numbers with thousands separators (e.g., "1,234" or "1.234,56")
257
+ // Strip commas and periods that look like thousands separators
258
+ var withoutThousandsSeparators = afterSign.replace(/[,.]/g, "");
259
+ if (/^\d+$/.test(withoutThousandsSeparators)) {
260
+ return false;
261
+ }
262
+ // If there is whitespace with no letters, treat it as text unless it uses
263
+ // non-hyphen operators (phone numbers like "+1 224-535-1764").
264
+ var hasLetters = /[A-Za-z]/.test(afterSign);
265
+ if (/\s/.test(afterSign) && !hasLetters) {
266
+ return /[+*/^=<>]/.test(afterSign);
267
+ }
268
+ // Otherwise, it's a formula like +A1, +SUM(A1:B2), +1-2, etc.
269
+ return true;
270
+ };
271
+ exports.isAlternateFormula = isAlternateFormula;
272
+ // Check if its a valid formula
273
+ var isValidFormula = function (text) {
274
+ var str = String(text);
275
+ return str[0] === "=" && str.length > 1;
276
+ };
277
+ exports.isValidFormula = isValidFormula;
278
+ /**
279
+ * Check if a key is an Arrow key
280
+ * @param code
281
+ * @returns
282
+ */
283
+ var isAnArrowKey = function (code) { return code.startsWith("Arrow"); };
284
+ exports.isAnArrowKey = isAnArrowKey;
285
+ /**
286
+ * Iterate over all cells in a bound
287
+ * @param bounds
288
+ * @param callback
289
+ */
290
+ var iterateCells = function (top, right, bottom, left) {
291
+ var rowIndex, rightBound, columnIndex;
292
+ return tslib_1.__generator(this, function (_a) {
293
+ switch (_a.label) {
294
+ case 0:
295
+ rowIndex = top;
296
+ _a.label = 1;
297
+ case 1:
298
+ if (!(rowIndex <= bottom)) return [3 /*break*/, 6];
299
+ rightBound = typeof right === "function" ? right(rowIndex) : right;
300
+ columnIndex = left;
301
+ _a.label = 2;
302
+ case 2:
303
+ if (!(columnIndex <= rightBound)) return [3 /*break*/, 5];
304
+ return [4 /*yield*/, [rowIndex, columnIndex]];
305
+ case 3:
306
+ _a.sent();
307
+ _a.label = 4;
308
+ case 4:
309
+ columnIndex++;
310
+ return [3 /*break*/, 2];
311
+ case 5:
312
+ rowIndex++;
313
+ return [3 /*break*/, 1];
314
+ case 6: return [2 /*return*/];
315
+ }
316
+ });
317
+ };
318
+ exports.iterateCells = iterateCells;
319
+ function combineIterators() {
320
+ var _i, generators_1, generators_1_1, generator, e_1_1;
321
+ var e_1, _a;
322
+ var generators = [];
323
+ for (_i = 0; _i < arguments.length; _i++) {
324
+ generators[_i] = arguments[_i];
325
+ }
326
+ return tslib_1.__generator(this, function (_b) {
327
+ switch (_b.label) {
328
+ case 0:
329
+ _b.trys.push([0, 5, 6, 7]);
330
+ generators_1 = tslib_1.__values(generators), generators_1_1 = generators_1.next();
331
+ _b.label = 1;
332
+ case 1:
333
+ if (!!generators_1_1.done) return [3 /*break*/, 4];
334
+ generator = generators_1_1.value;
335
+ if (!generator) return [3 /*break*/, 3];
336
+ return [5 /*yield**/, tslib_1.__values(generator)];
337
+ case 2:
338
+ _b.sent();
339
+ _b.label = 3;
340
+ case 3:
341
+ generators_1_1 = generators_1.next();
342
+ return [3 /*break*/, 1];
343
+ case 4: return [3 /*break*/, 7];
344
+ case 5:
345
+ e_1_1 = _b.sent();
346
+ e_1 = { error: e_1_1 };
347
+ return [3 /*break*/, 7];
348
+ case 6:
349
+ try {
350
+ if (generators_1_1 && !generators_1_1.done && (_a = generators_1.return)) _a.call(generators_1);
351
+ }
352
+ finally { if (e_1) throw e_1.error; }
353
+ return [7 /*endfinally*/];
354
+ case 7: return [2 /*return*/];
355
+ }
356
+ });
357
+ }
358
+ var iterateCellsInRange = function (range) {
359
+ return (0, exports.iterateCells)(range.startRowIndex, range.endColumnIndex, range.endRowIndex, range.startColumnIndex);
360
+ };
361
+ exports.iterateCellsInRange = iterateCellsInRange;
362
+ /**
363
+ * Iterate all cells in multiple selections
364
+ * @param selections
365
+ * @returns
366
+ */
367
+ var iterateSelections = function (selections) {
368
+ var selections_1, selections_1_1, selection, e_2_1;
369
+ var e_2, _a;
370
+ return tslib_1.__generator(this, function (_b) {
371
+ switch (_b.label) {
372
+ case 0:
373
+ _b.trys.push([0, 5, 6, 7]);
374
+ selections_1 = tslib_1.__values(selections), selections_1_1 = selections_1.next();
375
+ _b.label = 1;
376
+ case 1:
377
+ if (!!selections_1_1.done) return [3 /*break*/, 4];
378
+ selection = selections_1_1.value;
379
+ return [4 /*yield*/, (0, exports.iterateCellsInRange)(selection.range)];
380
+ case 2:
381
+ _b.sent();
382
+ _b.label = 3;
383
+ case 3:
384
+ selections_1_1 = selections_1.next();
385
+ return [3 /*break*/, 1];
386
+ case 4: return [3 /*break*/, 7];
387
+ case 5:
388
+ e_2_1 = _b.sent();
389
+ e_2 = { error: e_2_1 };
390
+ return [3 /*break*/, 7];
391
+ case 6:
392
+ try {
393
+ if (selections_1_1 && !selections_1_1.done && (_a = selections_1.return)) _a.call(selections_1);
394
+ }
395
+ finally { if (e_2) throw e_2.error; }
396
+ return [7 /*endfinally*/];
397
+ case 7: return [2 /*return*/];
398
+ }
399
+ });
400
+ };
401
+ exports.iterateSelections = iterateSelections;
@@ -0,0 +1,24 @@
1
+ export * from "./numbers";
2
+ export * from "./uuid";
3
+ export * from "./typeguards";
4
+ export * from "./string";
5
+ export * from "./formula";
6
+ export * from "./color";
7
+ export * from "./dom";
8
+ export * from "./locale";
9
+ export * from "./date";
10
+ export * from "./log";
11
+ export * from "./array";
12
+ export * from "./formatter";
13
+ export * from "./memoize";
14
+ export * from "./cell-data-helpers";
15
+ export * from "./selection";
16
+ export * from "./colors";
17
+ export * from "./formula-refs";
18
+ export * from "./sort";
19
+ export * from "./table-styles";
20
+ export * from "./conditional-format";
21
+ export * from "./data-validation";
22
+ export * from "./content-hash";
23
+ export * from "./shared-string-canonical";
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,QAAQ,CAAC;AACvB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,2BAA2B,CAAC"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./numbers"), exports);
5
+ tslib_1.__exportStar(require("./uuid"), exports);
6
+ tslib_1.__exportStar(require("./typeguards"), exports);
7
+ tslib_1.__exportStar(require("./string"), exports);
8
+ tslib_1.__exportStar(require("./formula"), exports);
9
+ tslib_1.__exportStar(require("./color"), exports);
10
+ tslib_1.__exportStar(require("./dom"), exports);
11
+ tslib_1.__exportStar(require("./locale"), exports);
12
+ tslib_1.__exportStar(require("./date"), exports);
13
+ tslib_1.__exportStar(require("./log"), exports);
14
+ tslib_1.__exportStar(require("./array"), exports);
15
+ tslib_1.__exportStar(require("./formatter"), exports);
16
+ tslib_1.__exportStar(require("./memoize"), exports);
17
+ tslib_1.__exportStar(require("./cell-data-helpers"), exports);
18
+ tslib_1.__exportStar(require("./selection"), exports);
19
+ tslib_1.__exportStar(require("./colors"), exports);
20
+ tslib_1.__exportStar(require("./formula-refs"), exports);
21
+ tslib_1.__exportStar(require("./sort"), exports);
22
+ tslib_1.__exportStar(require("./table-styles"), exports);
23
+ tslib_1.__exportStar(require("./conditional-format"), exports);
24
+ tslib_1.__exportStar(require("./data-validation"), exports);
25
+ tslib_1.__exportStar(require("./content-hash"), exports);
26
+ tslib_1.__exportStar(require("./shared-string-canonical"), exports);
@@ -0,0 +1,34 @@
1
+ export declare const getCurrentLocale: () => string;
2
+ export type DatePartType = "month" | "day" | "year";
3
+ /**
4
+ * PARSER metadata only: relative day/month order for a locale, with the
5
+ * year deliberately moved last so the date-parser's regex can use fixed
6
+ * capture-group positions. This ordering is WRONG for display in
7
+ * year-first locales (ja-JP, hu-HU, sv-SE, …) — formatting helpers must
8
+ * use the `formatToParts`-driven builders below instead.
9
+ */
10
+ export declare const getLocaleDatePartsNotMemoized: (locale: string) => [DatePartType, string, string][];
11
+ export declare const getLocaleDateParts: (locale: string) => [DatePartType, string, string][];
12
+ /**
13
+ * Default numeric (short) date pattern for a locale, preserving the
14
+ * locale's field order, separators, literal text and zero-padding as
15
+ * reported by `Intl.DateTimeFormat(...).formatToParts()` — e.g.
16
+ * de-DE → `d.m.yyyy`, hu-HU → `yyyy. mm. dd.`, en-CA → `yyyy-mm-dd`.
17
+ */
18
+ export declare const getDefaultDateFormat: (locale?: string) => string;
19
+ /**
20
+ * Default time pattern for a locale, honoring its 12/24-hour convention,
21
+ * separators and hour padding — e.g. en-US → `h:mm:ss AM/PM`,
22
+ * de-DE → `hh:mm:ss`, fi-FI → `h.mm.ss`.
23
+ */
24
+ export declare const getDefaultTimeFormat: (locale?: string, precision?: "minute" | "second") => string;
25
+ export declare const getDefaultDateTimeFormat: (locale?: string) => string;
26
+ /**
27
+ * Long (full) date pattern for a locale, following the locale's own
28
+ * field placement and literal text — e.g. de-DE →
29
+ * `[$-de-DE]dddd, d. mmmm yyyy`, ja-JP → `[$-ja-JP]yyyy"年"m"月"d"日"dddd`.
30
+ * Localized weekday/month names are best-effort: they render through the
31
+ * spreadsheet formatter's own locale data via the `[$-locale]` tag.
32
+ */
33
+ export declare const getLongDateFormat: (locale?: string) => string;
34
+ //# sourceMappingURL=locale.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locale.d.ts","sourceRoot":"","sources":["../../locale.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,gBAAgB,cAU5B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;AAEpD;;;;;;GAMG;AACH,eAAO,MAAM,6BAA6B,GAAI,QAAQ,MAAM,qCAkC3D,CAAC;AAEF,eAAO,MAAM,kBAAkB,sDAAyC,CAAC;AAqFzE;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,GAAI,SAAQ,MAA2B,WAClC,CAAC;AAuCvC;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,GAC/B,SAAQ,MAA2B,EACnC,YAAW,QAAQ,GAAG,QAAmB,WACS,CAAC;AAErD,eAAO,MAAM,wBAAwB,GAAI,SAAS,MAAM,WAEvD,CAAC;AA2CF;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAAI,SAAQ,MAA2B,WAClC,CAAC"}