@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,237 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.normalizeExternalUrl = exports.supplant = exports.selectionBoundsFromCells = exports.escapeCharacters = exports.desanitizeSheetName = exports.sanitizeSheetName = exports.cellRangeToAddress = exports.cellToAddress = exports.getRowIndexFromAddress = exports.getColumnNameFromAddress = exports.addressToCell = exports.convertCellToRange = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var typeguards_1 = require("./typeguards");
6
+ var numbers_1 = require("./numbers");
7
+ var selection_1 = require("./selection");
8
+ /**
9
+ * Convert cell to bounds.
10
+ * Its better to use gridref.current.getCellBounds() instead as it caters
11
+ * to merged cells
12
+ * @param cell
13
+ * @returns
14
+ */
15
+ var convertCellToRange = function (cell) { return ({
16
+ startRowIndex: cell.rowIndex,
17
+ startColumnIndex: cell.columnIndex,
18
+ endRowIndex: cell.rowIndex,
19
+ endColumnIndex: cell.columnIndex,
20
+ }); };
21
+ exports.convertCellToRange = convertCellToRange;
22
+ /**
23
+ * Converts address string to CellInterface
24
+ * @param address
25
+ */
26
+ var addressToCell = function (address, options) {
27
+ if (options === void 0) { options = {}; }
28
+ var position = options.position, rowCount = options.rowCount, columnCount = options.columnCount;
29
+ var maxRow = typeof rowCount === "number"
30
+ ? Math.min(rowCount, selection_1.MAX_ROW_COUNT)
31
+ : selection_1.MAX_ROW_COUNT;
32
+ var maxColumn = typeof columnCount === "number"
33
+ ? Math.min(columnCount, selection_1.MAX_COLUMN_COUNT)
34
+ : selection_1.MAX_COLUMN_COUNT;
35
+ var regex = /\$?([A-Z]+)\$?(\d+)/gim;
36
+ var m;
37
+ var matches = [];
38
+ while ((m = regex.exec(address)) !== null) {
39
+ // This is necessary to avoid infinite loops with zero-width matches
40
+ if (m.index === regex.lastIndex) {
41
+ regex.lastIndex++;
42
+ }
43
+ // The result can be accessed through the `m`-variable.
44
+ m.forEach(function (match, groupIndex) {
45
+ if (groupIndex > 0)
46
+ matches.push(match);
47
+ });
48
+ }
49
+ if (matches.length) {
50
+ var _a = tslib_1.__read(matches, 2), columnAlpha = _a[0], rowIndex = _a[1];
51
+ return {
52
+ rowIndex: Math.min(parseInt(rowIndex), maxRow),
53
+ columnIndex: Math.min((0, numbers_1.alpha2number)(columnAlpha), maxColumn),
54
+ };
55
+ }
56
+ // Column range
57
+ if (/^\$?([A-Z]+)$/gim.test(address) && rowCount !== undefined) {
58
+ var column = (0, exports.getColumnNameFromAddress)(address);
59
+ if (!column) {
60
+ return null;
61
+ }
62
+ return {
63
+ rowIndex: position === "start" ? 1 : maxRow,
64
+ columnIndex: Math.min((0, numbers_1.alpha2number)(column), maxColumn),
65
+ };
66
+ }
67
+ // Row range
68
+ if (/^\$?(\d+)$/gim.test(address) && columnCount !== undefined) {
69
+ var rowIndexString = (0, exports.getRowIndexFromAddress)(address);
70
+ return {
71
+ rowIndex: Math.min(Number(rowIndexString), maxRow),
72
+ columnIndex: position === "start" ? 1 : maxColumn,
73
+ };
74
+ }
75
+ return null;
76
+ };
77
+ exports.addressToCell = addressToCell;
78
+ /**
79
+ * Gets column from address $G => G
80
+ * @param address
81
+ */
82
+ var getColumnNameFromAddress = function (address) {
83
+ var _a;
84
+ return (_a = /^\$?([A-Z]+)$/gim.exec(address)) === null || _a === void 0 ? void 0 : _a[1];
85
+ };
86
+ exports.getColumnNameFromAddress = getColumnNameFromAddress;
87
+ /**
88
+ * Gets rowIndex from address $1 => 1
89
+ * @param address
90
+ */
91
+ var getRowIndexFromAddress = function (address) {
92
+ var _a;
93
+ return (_a = /^\$?(\d+)$/gim.exec(address)) === null || _a === void 0 ? void 0 : _a[1];
94
+ };
95
+ exports.getRowIndexFromAddress = getRowIndexFromAddress;
96
+ /**
97
+ * Convert cellInterface to address string
98
+ * @param cell
99
+ */
100
+ var cellToAddress = function (cell, isAbsoluteColumn, isAbsoluteRow, isFullColumn, isFullRow) {
101
+ if (isAbsoluteColumn === void 0) { isAbsoluteColumn = false; }
102
+ if (isAbsoluteRow === void 0) { isAbsoluteRow = false; }
103
+ if (isFullColumn === void 0) { isFullColumn = false; }
104
+ if (isFullRow === void 0) { isFullRow = false; }
105
+ if (!cell)
106
+ return null;
107
+ if (cell.columnIndex <= 0) {
108
+ // return null;
109
+ }
110
+ var columnAlpha = (0, numbers_1.number2Alpha)(Math.max(0, cell.columnIndex - 1));
111
+ var rowNumber = Math.max(0, cell.rowIndex);
112
+ if (isFullColumn) {
113
+ return columnAlpha;
114
+ }
115
+ if (isFullRow) {
116
+ return String(rowNumber);
117
+ }
118
+ return "".concat(isAbsoluteColumn ? "$" : "").concat(columnAlpha).concat(isAbsoluteRow ? "$" : "").concat(rowNumber);
119
+ };
120
+ exports.cellToAddress = cellToAddress;
121
+ /**
122
+ * Convert a cell range to address
123
+ * @param sheetName
124
+ * @param range
125
+ * @returns
126
+ */
127
+ var cellRangeToAddress = function (sheetName, range) {
128
+ var sheetNameStr = sheetName ? (0, exports.sanitizeSheetName)(sheetName) + "!" : "";
129
+ return "".concat(sheetNameStr).concat((0, exports.cellToAddress)({
130
+ rowIndex: range.startRowIndex,
131
+ columnIndex: range.startColumnIndex,
132
+ }), ":").concat((0, exports.cellToAddress)({
133
+ rowIndex: range.endRowIndex,
134
+ columnIndex: range.endColumnIndex,
135
+ }));
136
+ };
137
+ exports.cellRangeToAddress = cellRangeToAddress;
138
+ /* Sanitize sheet names */
139
+ var sanitizeSheetName = function (name) {
140
+ if (name === void 0)
141
+ return void 0;
142
+ if (typeof name === "number")
143
+ return name;
144
+ if (/\s+|[^a-z|A-Z|0-9]/.test(name)) {
145
+ // Escape single quotes by doubling them for valid sheet references.
146
+ var escaped = name.replace(/'/g, "''");
147
+ return "'".concat(escaped, "'");
148
+ }
149
+ return name;
150
+ };
151
+ exports.sanitizeSheetName = sanitizeSheetName;
152
+ /**
153
+ * Remove single quotes from sheetname
154
+ * 'Sheet Space!A4' => Sheet Space
155
+ * @param name
156
+ * @returns
157
+ */
158
+ var desanitizeSheetName = function (name) {
159
+ if ((0, typeguards_1.isNil)(name)) {
160
+ return undefined;
161
+ }
162
+ if (typeof name === "number") {
163
+ return name;
164
+ }
165
+ var result = name;
166
+ var hasTrailingBang = result.endsWith("!");
167
+ if (hasTrailingBang) {
168
+ result = result.slice(0, -1);
169
+ }
170
+ if (result.startsWith("'") && result.endsWith("'")) {
171
+ result = result.slice(1, -1).replace(/''/g, "'");
172
+ }
173
+ return hasTrailingBang ? "".concat(result, "!") : result;
174
+ };
175
+ exports.desanitizeSheetName = desanitizeSheetName;
176
+ // Special character
177
+ var SPECIAL_CHARACTERS = /([\\^$.*+?()[\]{}|])/gm;
178
+ /**
179
+ * Escape special characters
180
+ * @param str
181
+ * @returns
182
+ */
183
+ var escapeCharacters = function (str) {
184
+ return SPECIAL_CHARACTERS.test(str)
185
+ ? str.replace(SPECIAL_CHARACTERS, "\\$1")
186
+ : str || "";
187
+ };
188
+ exports.escapeCharacters = escapeCharacters;
189
+ /**
190
+ * Get selection from start and end cell
191
+ * @param start
192
+ * @param end
193
+ * @param sheetName
194
+ * @returns
195
+ */
196
+ var selectionBoundsFromCells = function (start, end) {
197
+ if (end === void 0) { end = start; }
198
+ if (!end)
199
+ end = start;
200
+ return {
201
+ startRowIndex: Math.min(start.rowIndex, end.rowIndex),
202
+ startColumnIndex: Math.min(start.columnIndex, end.columnIndex),
203
+ endColumnIndex: Math.max(start.columnIndex, end.columnIndex),
204
+ endRowIndex: Math.max(start.rowIndex, end.rowIndex),
205
+ };
206
+ };
207
+ exports.selectionBoundsFromCells = selectionBoundsFromCells;
208
+ var supplant = function (s, o) {
209
+ return s.replace(/{([^{}]*)}/g, function (a, b) {
210
+ var r = o[b];
211
+ return typeof r === "string" ? r : a;
212
+ });
213
+ };
214
+ exports.supplant = supplant;
215
+ // RFC 3986 scheme: ALPHA *( ALPHA / DIGIT / "+" / "-" / "." ) ":"
216
+ var URL_SCHEME = /^[a-zA-Z][a-zA-Z0-9+.-]*:/;
217
+ /**
218
+ * Normalize an external hyperlink target for the browser. A stored URL
219
+ * without a scheme ("paradigm.xyz") would otherwise be resolved relative to
220
+ * the current page. Prefixes https:// unless the URL already has a scheme
221
+ * (https:, mailto:, tel:, …), is protocol-relative ("//host"), or is a
222
+ * fragment/path reference.
223
+ * @param url
224
+ * @returns
225
+ */
226
+ var normalizeExternalUrl = function (url) {
227
+ var trimmed = url.trim();
228
+ if (!trimmed ||
229
+ URL_SCHEME.test(trimmed) ||
230
+ trimmed.startsWith("//") ||
231
+ trimmed.startsWith("#") ||
232
+ trimmed.startsWith("/")) {
233
+ return trimmed;
234
+ }
235
+ return "https://".concat(trimmed);
236
+ };
237
+ exports.normalizeExternalUrl = normalizeExternalUrl;
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Table styles and banded range utilities
3
+ * Shared between toolkit (import) and app (rendering)
4
+ */
5
+ import type { ColorIndex } from "@rowsncolumns/common-types";
6
+ export type Maybe<T> = T | null | undefined;
7
+ export type ColorTheme = {
8
+ theme: ColorIndex;
9
+ tint?: Maybe<number>;
10
+ };
11
+ export type Color = string | ColorTheme;
12
+ export type BorderStyle = "dotted" | "dashed" | "solid" | "thin" | "solid_medium" | "solid_thick" | "double";
13
+ export type Border = {
14
+ style: BorderStyle;
15
+ width: number;
16
+ color?: Maybe<Color>;
17
+ };
18
+ export type Borders = {
19
+ top?: Maybe<Border>;
20
+ bottom?: Maybe<Border>;
21
+ left?: Maybe<Border>;
22
+ right?: Maybe<Border>;
23
+ };
24
+ export type BandingProperties = {
25
+ headerColor?: Maybe<Color>;
26
+ footerColor?: Maybe<Color>;
27
+ firstBandColor?: Maybe<Color>;
28
+ secondBandColor?: Maybe<Color>;
29
+ headerBorder?: Maybe<Borders>;
30
+ footerBorder?: Maybe<Borders>;
31
+ firstBandBorder?: Maybe<Borders>;
32
+ secondBandBorder?: Maybe<Borders>;
33
+ totalRowColor?: Maybe<Color>;
34
+ totalRowBorder?: Maybe<Borders>;
35
+ };
36
+ export type BandedDefinition = {
37
+ rowProperties?: Maybe<BandingProperties>;
38
+ columnProperties?: Maybe<BandingProperties>;
39
+ };
40
+ export type TableTheme = "None" | "TableStyleLight1" | "TableStyleLight2" | "TableStyleLight3" | "TableStyleLight4" | "TableStyleLight5" | "TableStyleLight6" | "TableStyleLight7" | "TableStyleLight8" | "TableStyleLight9" | "TableStyleLight10" | "TableStyleLight11" | "TableStyleLight12" | "TableStyleLight13" | "TableStyleLight14" | "TableStyleLight15" | "TableStyleLight16" | "TableStyleLight17" | "TableStyleLight18" | "TableStyleLight19" | "TableStyleLight20" | "TableStyleLight21" | "TableStyleMedium1" | "TableStyleMedium2" | "TableStyleMedium3" | "TableStyleMedium4" | "TableStyleMedium5" | "TableStyleMedium6" | "TableStyleMedium7" | "TableStyleMedium8" | "TableStyleMedium9" | "TableStyleMedium10" | "TableStyleMedium11" | "TableStyleMedium12" | "TableStyleMedium13" | "TableStyleMedium14" | "TableStyleMedium15" | "TableStyleMedium16" | "TableStyleMedium17" | "TableStyleMedium18" | "TableStyleMedium19" | "TableStyleMedium20" | "TableStyleMedium21" | "TableStyleMedium22" | "TableStyleMedium23" | "TableStyleMedium24" | "TableStyleMedium25" | "TableStyleMedium26" | "TableStyleMedium27" | "TableStyleMedium28" | "TableStyleDark1" | "TableStyleDark2" | "TableStyleDark3" | "TableStyleDark4" | "TableStyleDark5" | "TableStyleDark6" | "TableStyleDark7" | "TableStyleDark8" | "TableStyleDark9" | "TableStyleDark10" | "TableStyleDark11";
41
+ type TableStyleEntry = [
42
+ theme: TableTheme,
43
+ firstBandStripeTint: number | undefined,
44
+ secondBandTint: number | undefined,
45
+ bandDefinition: BandedDefinition | undefined
46
+ ];
47
+ /**
48
+ * Get table border styles map with all table themes and their banded definitions
49
+ */
50
+ export declare const getTableBorderStyles: (showRowStripes: boolean | undefined, showColumnStripes: boolean | undefined) => Map<string, TableStyleEntry[]>;
51
+ /**
52
+ * Find the banded definition for a given table theme
53
+ */
54
+ export declare const findMatchingBandProperty: (tableTheme: TableTheme, showRowStripes: boolean | undefined, showColumnStripes: boolean | undefined) => BandedDefinition | undefined;
55
+ export {};
56
+ //# sourceMappingURL=table-styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-styles.d.ts","sourceRoot":"","sources":["../../table-styles.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,362 @@
1
+ "use strict";
2
+ /**
3
+ * Table styles and banded range utilities
4
+ * Shared between toolkit (import) and app (rendering)
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.findMatchingBandProperty = exports.getTableBorderStyles = void 0;
8
+ var tslib_1 = require("tslib");
9
+ var stripeTint = 0.8;
10
+ var colorIndexes = [1, 4, 5, 6, 7, 8, 9];
11
+ /**
12
+ * Get table border styles map with all table themes and their banded definitions
13
+ */
14
+ var getTableBorderStyles = function (showRowStripes, showColumnStripes) {
15
+ var runningLightIndex = 1;
16
+ var runningMediumIndex = 1;
17
+ var runningDarkIndex = 1;
18
+ return new Map([
19
+ [
20
+ "Light",
21
+ tslib_1.__spreadArray(tslib_1.__spreadArray(tslib_1.__spreadArray([
22
+ ["None", 0, 0, undefined]
23
+ ], tslib_1.__read(colorIndexes.map(function (value) {
24
+ return [
25
+ ("TableStyleLight" + runningLightIndex++),
26
+ stripeTint,
27
+ 1,
28
+ {
29
+ rowProperties: {
30
+ firstBandColor: {
31
+ theme: value,
32
+ tint: showRowStripes ? stripeTint : 1,
33
+ },
34
+ secondBandColor: showRowStripes
35
+ ? {
36
+ theme: 0,
37
+ }
38
+ : undefined,
39
+ headerBorder: {
40
+ top: {
41
+ width: 1,
42
+ style: "solid",
43
+ color: { theme: value },
44
+ },
45
+ bottom: {
46
+ width: 1,
47
+ style: "solid",
48
+ color: { theme: value },
49
+ },
50
+ },
51
+ footerBorder: {
52
+ bottom: {
53
+ width: 1,
54
+ style: "solid",
55
+ color: { theme: value },
56
+ },
57
+ },
58
+ },
59
+ columnProperties: showColumnStripes
60
+ ? {
61
+ firstBandColor: {
62
+ theme: value,
63
+ tint: showColumnStripes ? stripeTint : 1,
64
+ },
65
+ }
66
+ : undefined,
67
+ },
68
+ ];
69
+ })), false), tslib_1.__read(colorIndexes.map(function (value) {
70
+ return [
71
+ ("TableStyleLight" + runningLightIndex++),
72
+ undefined,
73
+ undefined,
74
+ {
75
+ rowProperties: {
76
+ headerColor: { theme: value },
77
+ },
78
+ },
79
+ ];
80
+ })), false), tslib_1.__read(colorIndexes.map(function (value) {
81
+ var border = {
82
+ width: 1,
83
+ style: "solid",
84
+ color: { theme: value },
85
+ };
86
+ return [
87
+ ("TableStyleLight" + runningLightIndex++),
88
+ stripeTint,
89
+ 1,
90
+ {
91
+ rowProperties: {
92
+ firstBandColor: {
93
+ theme: value,
94
+ tint: showRowStripes ? stripeTint : 1,
95
+ },
96
+ secondBandColor: showRowStripes
97
+ ? {
98
+ theme: 0,
99
+ }
100
+ : undefined,
101
+ firstBandBorder: {
102
+ top: border,
103
+ left: border,
104
+ right: border,
105
+ bottom: border,
106
+ },
107
+ headerBorder: {
108
+ top: border,
109
+ left: border,
110
+ right: border,
111
+ bottom: border,
112
+ },
113
+ },
114
+ columnProperties: showColumnStripes
115
+ ? {
116
+ firstBandColor: {
117
+ theme: value,
118
+ tint: showColumnStripes ? stripeTint : 1,
119
+ },
120
+ }
121
+ : undefined,
122
+ },
123
+ ];
124
+ })), false),
125
+ ],
126
+ [
127
+ "Medium",
128
+ tslib_1.__spreadArray(tslib_1.__spreadArray(tslib_1.__spreadArray(tslib_1.__spreadArray([], tslib_1.__read(colorIndexes.map(function (value) {
129
+ return [
130
+ ("TableStyleMedium" + runningMediumIndex++),
131
+ stripeTint,
132
+ 1,
133
+ {
134
+ rowProperties: {
135
+ headerColor: { theme: value },
136
+ firstBandColor: {
137
+ theme: value,
138
+ tint: showRowStripes ? stripeTint : 1,
139
+ },
140
+ secondBandColor: showRowStripes
141
+ ? {
142
+ theme: 0,
143
+ }
144
+ : undefined,
145
+ firstBandBorder: {
146
+ bottom: {
147
+ width: 1,
148
+ style: "solid",
149
+ color: { theme: value },
150
+ },
151
+ },
152
+ },
153
+ columnProperties: showColumnStripes
154
+ ? {
155
+ firstBandColor: {
156
+ theme: value,
157
+ tint: showColumnStripes ? stripeTint : 1,
158
+ },
159
+ }
160
+ : undefined,
161
+ },
162
+ ];
163
+ })), false), tslib_1.__read(colorIndexes.map(function (value) {
164
+ return [
165
+ ("TableStyleMedium" + runningMediumIndex++),
166
+ 0.6,
167
+ 0.8,
168
+ {
169
+ rowProperties: {
170
+ headerColor: { theme: value },
171
+ firstBandColor: {
172
+ theme: value,
173
+ tint: showRowStripes ? 0.6 : 0.8,
174
+ },
175
+ secondBandColor: {
176
+ theme: value,
177
+ tint: 0.8,
178
+ },
179
+ },
180
+ columnProperties: showColumnStripes
181
+ ? {
182
+ firstBandColor: {
183
+ theme: value,
184
+ tint: showColumnStripes ? 0.6 : 0.8,
185
+ },
186
+ }
187
+ : undefined,
188
+ },
189
+ ];
190
+ })), false), tslib_1.__read(colorIndexes.map(function (value) {
191
+ var border = {
192
+ width: 2,
193
+ style: "solid",
194
+ color: { theme: 1 },
195
+ };
196
+ return [
197
+ ("TableStyleMedium" + runningMediumIndex++),
198
+ -0.15,
199
+ 1,
200
+ {
201
+ rowProperties: {
202
+ headerColor: { theme: value },
203
+ firstBandColor: {
204
+ theme: 0,
205
+ tint: showRowStripes ? -0.15 : 1,
206
+ },
207
+ secondBandColor: showRowStripes
208
+ ? {
209
+ theme: 0,
210
+ }
211
+ : undefined,
212
+ headerBorder: {
213
+ top: border,
214
+ },
215
+ footerBorder: {
216
+ bottom: border,
217
+ },
218
+ },
219
+ columnProperties: showColumnStripes
220
+ ? {
221
+ firstBandColor: {
222
+ theme: 0,
223
+ tint: showColumnStripes ? -0.15 : 1,
224
+ },
225
+ }
226
+ : undefined,
227
+ },
228
+ ];
229
+ })), false), tslib_1.__read(colorIndexes.map(function (value) {
230
+ var border = {
231
+ width: 1,
232
+ style: "solid",
233
+ color: { theme: value },
234
+ };
235
+ return [
236
+ ("TableStyleMedium" + runningMediumIndex++),
237
+ stripeTint,
238
+ 0.9,
239
+ {
240
+ rowProperties: {
241
+ headerColor: {
242
+ theme: value,
243
+ tint: 0.9,
244
+ },
245
+ firstBandColor: {
246
+ theme: value,
247
+ tint: showRowStripes ? stripeTint : 0.9,
248
+ },
249
+ secondBandColor: {
250
+ theme: value,
251
+ tint: 0.9,
252
+ },
253
+ firstBandBorder: {
254
+ top: border,
255
+ left: border,
256
+ right: border,
257
+ bottom: border,
258
+ },
259
+ headerBorder: {
260
+ top: border,
261
+ left: border,
262
+ right: border,
263
+ bottom: border,
264
+ },
265
+ },
266
+ columnProperties: showColumnStripes
267
+ ? {
268
+ firstBandColor: {
269
+ theme: value,
270
+ tint: showColumnStripes ? stripeTint : 0.9,
271
+ },
272
+ }
273
+ : undefined,
274
+ },
275
+ ];
276
+ })), false),
277
+ ],
278
+ [
279
+ "Dark",
280
+ tslib_1.__spreadArray(tslib_1.__spreadArray([], tslib_1.__read(colorIndexes.map(function (value) {
281
+ var firstTint = value - 1 === 0 ? 0.25 : -0.25;
282
+ var secondTint = value - 1 === 0 ? 0.5 : 0;
283
+ return [
284
+ ("TableStyleDark" + runningDarkIndex++),
285
+ firstTint,
286
+ secondTint,
287
+ {
288
+ rowProperties: {
289
+ headerColor: { theme: 1 },
290
+ firstBandColor: {
291
+ theme: value,
292
+ tint: showRowStripes ? firstTint : secondTint,
293
+ },
294
+ secondBandColor: {
295
+ theme: value,
296
+ tint: secondTint,
297
+ },
298
+ },
299
+ columnProperties: showColumnStripes
300
+ ? {
301
+ firstBandColor: {
302
+ theme: value,
303
+ tint: showColumnStripes ? firstTint : secondTint,
304
+ },
305
+ }
306
+ : undefined,
307
+ },
308
+ ];
309
+ })), false), tslib_1.__read([1, 5, 7, 9].map(function (value) {
310
+ var firstTint = value - 1 === 0 ? -0.35 : 0.6;
311
+ var secondTint = value - 1 === 0 ? -0.15 : 0.8;
312
+ return [
313
+ ("TableStyleDark" + runningDarkIndex++),
314
+ firstTint,
315
+ secondTint,
316
+ {
317
+ rowProperties: {
318
+ headerColor: { theme: value },
319
+ firstBandColor: {
320
+ theme: value - 1,
321
+ tint: showRowStripes ? firstTint : secondTint,
322
+ },
323
+ secondBandColor: {
324
+ theme: value - 1,
325
+ tint: secondTint,
326
+ },
327
+ },
328
+ columnProperties: showColumnStripes
329
+ ? {
330
+ firstBandColor: {
331
+ theme: value - 1,
332
+ tint: showColumnStripes ? firstTint : secondTint,
333
+ },
334
+ }
335
+ : undefined,
336
+ },
337
+ ];
338
+ })), false),
339
+ ],
340
+ ]);
341
+ };
342
+ exports.getTableBorderStyles = getTableBorderStyles;
343
+ /**
344
+ * Find the banded definition for a given table theme
345
+ */
346
+ var findMatchingBandProperty = function (tableTheme, showRowStripes, showColumnStripes) {
347
+ var bandProperties = (0, exports.getTableBorderStyles)(showRowStripes, showColumnStripes);
348
+ var result;
349
+ bandProperties.forEach(function (tableStyles) {
350
+ if (result)
351
+ return;
352
+ for (var i = 0; i < tableStyles.length; i++) {
353
+ var _a = tslib_1.__read(tableStyles[i], 4), themeName = _a[0], bandDefinition = _a[3];
354
+ if (themeName === tableTheme) {
355
+ result = bandDefinition ? tslib_1.__assign({}, bandDefinition) : undefined;
356
+ return;
357
+ }
358
+ }
359
+ });
360
+ return result;
361
+ };
362
+ exports.findMatchingBandProperty = findMatchingBandProperty;
@@ -0,0 +1 @@
1
+ {"root":["../../array.ts","../../cell-data-helpers.ts","../../color.ts","../../colors.ts","../../conditional-format.ts","../../content-hash.ts","../../data-validation.ts","../../date.ts","../../dom.ts","../../formatter.ts","../../formula-refs.ts","../../formula.ts","../../index.ts","../../locale.ts","../../log.ts","../../memoize.ts","../../numbers.ts","../../selection.ts","../../shared-string-canonical.ts","../../sort.ts","../../string.ts","../../table-styles.ts","../../typeguards.ts","../../uuid.ts","../../vitest.config.ts"],"version":"5.8.3"}
@@ -0,0 +1,4 @@
1
+ export declare const isDefined: <T>(val: T | undefined | null) => val is T;
2
+ export declare const isNil: <T>(value: T | undefined | null) => value is undefined | null;
3
+ export declare const isNilOrBlank: (value: string | undefined | null) => value is "" | null | undefined;
4
+ //# sourceMappingURL=typeguards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typeguards.d.ts","sourceRoot":"","sources":["../../typeguards.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,SAAS,GAAI,CAAC,EAAE,KAAK,CAAC,GAAG,SAAS,GAAG,IAAI,KAAG,GAAG,IAAI,CAC7B,CAAC;AAGpC,eAAO,MAAM,KAAK,GAAI,CAAC,EACrB,OAAO,CAAC,GAAG,SAAS,GAAG,IAAI,KAC1B,KAAK,IAAI,SAAS,GAAG,IAAyB,CAAC;AAElD,eAAO,MAAM,YAAY,GACvB,OAAO,MAAM,GAAG,SAAS,GAAG,IAAI,KAC/B,KAAK,IAAI,EAAE,GAAG,IAAI,GAAG,SAEvB,CAAC"}