@rowsncolumns/spreadsheet 10.5.17 → 10.6.4

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 (202) hide show
  1. package/dist/cjs/api/cf-data-bar.d.ts +73 -0
  2. package/dist/cjs/api/cf-data-bar.d.ts.map +1 -0
  3. package/dist/cjs/api/cf-data-bar.js +182 -0
  4. package/dist/cjs/api/cf-icons.d.ts +73 -0
  5. package/dist/cjs/api/cf-icons.d.ts.map +1 -0
  6. package/dist/cjs/api/cf-icons.js +322 -0
  7. package/dist/cjs/api/cf-overlays.d.ts +89 -3
  8. package/dist/cjs/api/cf-overlays.d.ts.map +1 -1
  9. package/dist/cjs/api/cf-overlays.js +256 -80
  10. package/dist/cjs/api/cf-priority.d.ts +34 -0
  11. package/dist/cjs/api/cf-priority.d.ts.map +1 -0
  12. package/dist/cjs/api/cf-priority.js +94 -0
  13. package/dist/cjs/api/heatmap.d.ts +7 -1
  14. package/dist/cjs/api/heatmap.d.ts.map +1 -1
  15. package/dist/cjs/api/heatmap.js +27 -11
  16. package/dist/cjs/api/selections.d.ts +2 -2
  17. package/dist/cjs/api/validation.d.ts +6 -0
  18. package/dist/cjs/api/validation.d.ts.map +1 -1
  19. package/dist/cjs/api/validation.js +10 -1
  20. package/dist/cjs/atoms/goal-seek-dialog.atom.d.ts +8 -3
  21. package/dist/cjs/atoms/goal-seek-dialog.atom.d.ts.map +1 -1
  22. package/dist/cjs/atoms/index.d.ts +4 -0
  23. package/dist/cjs/atoms/index.d.ts.map +1 -1
  24. package/dist/cjs/atoms/index.js +4 -0
  25. package/dist/cjs/components/canvas-grid/index.d.ts.map +1 -1
  26. package/dist/cjs/components/canvas-grid/index.js +194 -51
  27. package/dist/cjs/components/canvas-grid/overflow.d.ts +37 -0
  28. package/dist/cjs/components/canvas-grid/overflow.d.ts.map +1 -0
  29. package/dist/cjs/components/canvas-grid/overflow.js +49 -0
  30. package/dist/cjs/components/canvas-grid/page-breaks.d.ts +15 -0
  31. package/dist/cjs/components/canvas-grid/page-breaks.d.ts.map +1 -0
  32. package/dist/cjs/components/canvas-grid/page-breaks.js +77 -0
  33. package/dist/cjs/components/canvas-grid/typings.d.ts +32 -3
  34. package/dist/cjs/components/canvas-grid/typings.d.ts.map +1 -1
  35. package/dist/cjs/components/cell/alignment.d.ts +58 -1
  36. package/dist/cjs/components/cell/alignment.d.ts.map +1 -1
  37. package/dist/cjs/components/cell/alignment.js +144 -1
  38. package/dist/cjs/components/cell/cell-background.d.ts +2 -0
  39. package/dist/cjs/components/cell/cell-background.d.ts.map +1 -1
  40. package/dist/cjs/components/cell/cell-background.js +5 -6
  41. package/dist/cjs/components/cell/cell-backgrounds.d.ts.map +1 -1
  42. package/dist/cjs/components/cell/cell-backgrounds.js +5 -1
  43. package/dist/cjs/components/cell/cell-text-runs.js +1 -1
  44. package/dist/cjs/components/cell/index.d.ts.map +1 -1
  45. package/dist/cjs/components/cell/index.js +378 -37
  46. package/dist/cjs/components/cell/number-format-layout.d.ts +35 -0
  47. package/dist/cjs/components/cell/number-format-layout.d.ts.map +1 -0
  48. package/dist/cjs/components/cell/number-format-layout.js +106 -0
  49. package/dist/cjs/components/cell/typings.d.ts +22 -0
  50. package/dist/cjs/components/cell/typings.d.ts.map +1 -1
  51. package/dist/cjs/components/cell-editor/index.js +2 -2
  52. package/dist/cjs/components/cell-filter/index.d.ts.map +1 -1
  53. package/dist/cjs/components/cell-filter/index.js +3 -3
  54. package/dist/cjs/components/cell-overlay/index.d.ts +20 -0
  55. package/dist/cjs/components/cell-overlay/index.d.ts.map +1 -1
  56. package/dist/cjs/components/cell-overlay/index.js +155 -28
  57. package/dist/cjs/components/cf-icon-preview/index.d.ts +16 -0
  58. package/dist/cjs/components/cf-icon-preview/index.d.ts.map +1 -0
  59. package/dist/cjs/components/cf-icon-preview/index.js +48 -0
  60. package/dist/cjs/components/context-menu/index.d.ts.map +1 -1
  61. package/dist/cjs/components/context-menu/index.js +11 -3
  62. package/dist/cjs/components/embeds/embed-component.d.ts.map +1 -1
  63. package/dist/cjs/components/embeds/embed-component.js +3 -2
  64. package/dist/cjs/components/goal-seek-dialog/index.d.ts +15 -5
  65. package/dist/cjs/components/goal-seek-dialog/index.d.ts.map +1 -1
  66. package/dist/cjs/components/goal-seek-dialog/index.js +145 -42
  67. package/dist/cjs/components/hidden-markers/index.d.ts.map +1 -1
  68. package/dist/cjs/components/hidden-markers/index.js +8 -7
  69. package/dist/cjs/components/hidden-markers/style.d.ts +7 -0
  70. package/dist/cjs/components/hidden-markers/style.d.ts.map +1 -1
  71. package/dist/cjs/components/hidden-markers/style.js +13 -2
  72. package/dist/cjs/components/protect-sheet-dialog/index.d.ts +67 -0
  73. package/dist/cjs/components/protect-sheet-dialog/index.d.ts.map +1 -0
  74. package/dist/cjs/components/protect-sheet-dialog/index.js +196 -0
  75. package/dist/cjs/components/toolbar/types.d.ts +1 -1
  76. package/dist/cjs/components/toolbar/types.d.ts.map +1 -1
  77. package/dist/cjs/config.d.ts +13 -1
  78. package/dist/cjs/config.d.ts.map +1 -1
  79. package/dist/cjs/config.js +15 -3
  80. package/dist/cjs/helpers.d.ts +10 -5
  81. package/dist/cjs/helpers.d.ts.map +1 -1
  82. package/dist/cjs/helpers.js +43 -31
  83. package/dist/cjs/hooks/use-border-styles.d.ts.map +1 -1
  84. package/dist/cjs/hooks/use-border-styles.js +5 -28
  85. package/dist/cjs/hooks/use-cell-renderer.d.ts +35 -3
  86. package/dist/cjs/hooks/use-cell-renderer.d.ts.map +1 -1
  87. package/dist/cjs/hooks/use-cell-renderer.js +85 -47
  88. package/dist/cjs/hooks/use-conditional-formatting.d.ts +13 -1
  89. package/dist/cjs/hooks/use-conditional-formatting.d.ts.map +1 -1
  90. package/dist/cjs/hooks/use-conditional-formatting.js +281 -230
  91. package/dist/cjs/index.d.ts +7 -0
  92. package/dist/cjs/index.d.ts.map +1 -1
  93. package/dist/cjs/index.js +13 -1
  94. package/dist/cjs/release-date.js +1 -1
  95. package/dist/cjs/themes.d.ts +8 -0
  96. package/dist/cjs/themes.d.ts.map +1 -1
  97. package/dist/cjs/themes.js +21 -3
  98. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  99. package/dist/cjs/types.d.ts +115 -5
  100. package/dist/cjs/types.d.ts.map +1 -1
  101. package/dist/esm/api/cf-data-bar.d.ts +73 -0
  102. package/dist/esm/api/cf-data-bar.d.ts.map +1 -0
  103. package/dist/esm/api/cf-data-bar.js +178 -0
  104. package/dist/esm/api/cf-icons.d.ts +73 -0
  105. package/dist/esm/api/cf-icons.d.ts.map +1 -0
  106. package/dist/esm/api/cf-icons.js +306 -0
  107. package/dist/esm/api/cf-overlays.d.ts +89 -3
  108. package/dist/esm/api/cf-overlays.d.ts.map +1 -1
  109. package/dist/esm/api/cf-overlays.js +223 -67
  110. package/dist/esm/api/cf-priority.d.ts +34 -0
  111. package/dist/esm/api/cf-priority.d.ts.map +1 -0
  112. package/dist/esm/api/cf-priority.js +61 -0
  113. package/dist/esm/api/heatmap.d.ts +7 -1
  114. package/dist/esm/api/heatmap.d.ts.map +1 -1
  115. package/dist/esm/api/heatmap.js +24 -9
  116. package/dist/esm/api/selections.d.ts +2 -2
  117. package/dist/esm/api/validation.d.ts +6 -0
  118. package/dist/esm/api/validation.d.ts.map +1 -1
  119. package/dist/esm/api/validation.js +6 -0
  120. package/dist/esm/atoms/goal-seek-dialog.atom.d.ts +8 -3
  121. package/dist/esm/atoms/goal-seek-dialog.atom.d.ts.map +1 -1
  122. package/dist/esm/atoms/index.d.ts +4 -0
  123. package/dist/esm/atoms/index.d.ts.map +1 -1
  124. package/dist/esm/atoms/index.js +4 -0
  125. package/dist/esm/components/canvas-grid/index.d.ts.map +1 -1
  126. package/dist/esm/components/canvas-grid/index.js +163 -47
  127. package/dist/esm/components/canvas-grid/overflow.d.ts +37 -0
  128. package/dist/esm/components/canvas-grid/overflow.d.ts.map +1 -0
  129. package/dist/esm/components/canvas-grid/overflow.js +39 -0
  130. package/dist/esm/components/canvas-grid/page-breaks.d.ts +15 -0
  131. package/dist/esm/components/canvas-grid/page-breaks.d.ts.map +1 -0
  132. package/dist/esm/components/canvas-grid/page-breaks.js +50 -0
  133. package/dist/esm/components/canvas-grid/typings.d.ts +32 -3
  134. package/dist/esm/components/canvas-grid/typings.d.ts.map +1 -1
  135. package/dist/esm/components/cell/alignment.d.ts +58 -1
  136. package/dist/esm/components/cell/alignment.d.ts.map +1 -1
  137. package/dist/esm/components/cell/alignment.js +110 -1
  138. package/dist/esm/components/cell/cell-background.d.ts +2 -0
  139. package/dist/esm/components/cell/cell-background.d.ts.map +1 -1
  140. package/dist/esm/components/cell/cell-background.js +4 -5
  141. package/dist/esm/components/cell/cell-backgrounds.d.ts.map +1 -1
  142. package/dist/esm/components/cell/cell-backgrounds.js +5 -1
  143. package/dist/esm/components/cell/cell-text-runs.js +2 -2
  144. package/dist/esm/components/cell/index.d.ts.map +1 -1
  145. package/dist/esm/components/cell/index.js +339 -39
  146. package/dist/esm/components/cell/number-format-layout.d.ts +35 -0
  147. package/dist/esm/components/cell/number-format-layout.d.ts.map +1 -0
  148. package/dist/esm/components/cell/number-format-layout.js +99 -0
  149. package/dist/esm/components/cell/typings.d.ts +22 -0
  150. package/dist/esm/components/cell/typings.d.ts.map +1 -1
  151. package/dist/esm/components/cell-editor/index.js +2 -2
  152. package/dist/esm/components/cell-filter/index.d.ts.map +1 -1
  153. package/dist/esm/components/cell-filter/index.js +4 -4
  154. package/dist/esm/components/cell-overlay/index.d.ts +20 -0
  155. package/dist/esm/components/cell-overlay/index.d.ts.map +1 -1
  156. package/dist/esm/components/cell-overlay/index.js +111 -25
  157. package/dist/esm/components/cf-icon-preview/index.d.ts +16 -0
  158. package/dist/esm/components/cf-icon-preview/index.d.ts.map +1 -0
  159. package/dist/esm/components/cf-icon-preview/index.js +41 -0
  160. package/dist/esm/components/context-menu/index.d.ts.map +1 -1
  161. package/dist/esm/components/context-menu/index.js +11 -3
  162. package/dist/esm/components/embeds/embed-component.d.ts.map +1 -1
  163. package/dist/esm/components/embeds/embed-component.js +4 -3
  164. package/dist/esm/components/goal-seek-dialog/index.d.ts +15 -5
  165. package/dist/esm/components/goal-seek-dialog/index.d.ts.map +1 -1
  166. package/dist/esm/components/goal-seek-dialog/index.js +126 -29
  167. package/dist/esm/components/hidden-markers/index.d.ts.map +1 -1
  168. package/dist/esm/components/hidden-markers/index.js +9 -8
  169. package/dist/esm/components/hidden-markers/style.d.ts +7 -0
  170. package/dist/esm/components/hidden-markers/style.d.ts.map +1 -1
  171. package/dist/esm/components/hidden-markers/style.js +8 -1
  172. package/dist/esm/components/protect-sheet-dialog/index.d.ts +67 -0
  173. package/dist/esm/components/protect-sheet-dialog/index.d.ts.map +1 -0
  174. package/dist/esm/components/protect-sheet-dialog/index.js +154 -0
  175. package/dist/esm/components/toolbar/types.d.ts +1 -1
  176. package/dist/esm/components/toolbar/types.d.ts.map +1 -1
  177. package/dist/esm/config.d.ts +13 -1
  178. package/dist/esm/config.d.ts.map +1 -1
  179. package/dist/esm/config.js +13 -1
  180. package/dist/esm/helpers.d.ts +10 -5
  181. package/dist/esm/helpers.d.ts.map +1 -1
  182. package/dist/esm/helpers.js +40 -28
  183. package/dist/esm/hooks/use-border-styles.d.ts.map +1 -1
  184. package/dist/esm/hooks/use-border-styles.js +5 -26
  185. package/dist/esm/hooks/use-cell-renderer.d.ts +35 -3
  186. package/dist/esm/hooks/use-cell-renderer.d.ts.map +1 -1
  187. package/dist/esm/hooks/use-cell-renderer.js +83 -42
  188. package/dist/esm/hooks/use-conditional-formatting.d.ts +13 -1
  189. package/dist/esm/hooks/use-conditional-formatting.d.ts.map +1 -1
  190. package/dist/esm/hooks/use-conditional-formatting.js +215 -120
  191. package/dist/esm/index.d.ts +7 -0
  192. package/dist/esm/index.d.ts.map +1 -1
  193. package/dist/esm/index.js +7 -0
  194. package/dist/esm/release-date.js +1 -1
  195. package/dist/esm/themes.d.ts +8 -0
  196. package/dist/esm/themes.d.ts.map +1 -1
  197. package/dist/esm/themes.js +20 -3
  198. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  199. package/dist/esm/types.d.ts +115 -5
  200. package/dist/esm/types.d.ts.map +1 -1
  201. package/dist/spreadsheet.min.css +1 -1
  202. package/package.json +4 -4
@@ -3,7 +3,7 @@
3
3
  // (scale font down when text overflows) and textRotation (numeric degrees
4
4
  // or stacked "vertical" layout).
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getRotatedTextLayout = exports.stackTextVertically = exports.getKonvaRotationDegrees = exports.computeShrinkToFitFontSize = exports.fillCellText = exports.isFillAlignment = exports.alignmentImpliesWrap = exports.resolveCanvasTextAlign = void 0;
6
+ exports.layoutDistributedLines = exports.getRotatedTextLayout = exports.stackTextVertically = exports.getKonvaRotationDegrees = exports.computeShrinkToFitFontSize = exports.fillCellText = exports.isFillAlignment = exports.getUnderlineStrokes = exports.resolveReadingOrderAlignment = exports.getVerticalSpreadLineHeight = exports.resolveCanvasVerticalAlign = exports.verticalAlignmentImpliesWrap = exports.alignmentImpliesWrap = exports.resolveCanvasTextAlign = void 0;
7
7
  var tslib_1 = require("tslib");
8
8
  /**
9
9
  * Map a cell's `horizontalAlignment` onto the canvas text alignment. Excel's
@@ -36,6 +36,74 @@ exports.resolveCanvasTextAlign = resolveCanvasTextAlign;
36
36
  */
37
37
  var utils_1 = require("@rowsncolumns/utils");
38
38
  Object.defineProperty(exports, "alignmentImpliesWrap", { enumerable: true, get: function () { return utils_1.alignmentImpliesWrap; } });
39
+ Object.defineProperty(exports, "verticalAlignmentImpliesWrap", { enumerable: true, get: function () { return utils_1.verticalAlignmentImpliesWrap; } });
40
+ /**
41
+ * Map a cell's `verticalAlignment` onto the canvas text node. Excel's
42
+ * vertical `justify` spreads wrapped lines from the top edge to the bottom
43
+ * one and `distributed` does the same with the free space split above and
44
+ * below — so a single line sits at the top (justify) or the middle
45
+ * (distributed). {@link getVerticalSpreadLineHeight} spreads the lines.
46
+ */
47
+ var resolveCanvasVerticalAlign = function (align) {
48
+ switch (align) {
49
+ case "top":
50
+ case "justify":
51
+ return "top";
52
+ case "middle":
53
+ case "distributed":
54
+ return "middle";
55
+ default:
56
+ return "bottom";
57
+ }
58
+ };
59
+ exports.resolveCanvasVerticalAlign = resolveCanvasVerticalAlign;
60
+ /**
61
+ * Line-height multiplier that spreads `lineCount` wrapped lines over
62
+ * `availableHeight` (Excel's vertical justify / distributed). Never tighter
63
+ * than the font's own `baseLineHeight`; one line keeps it.
64
+ */
65
+ var getVerticalSpreadLineHeight = function (lineCount, availableHeight, fontSize, baseLineHeight) {
66
+ if (lineCount < 2 || fontSize <= 0)
67
+ return baseLineHeight;
68
+ var spread = availableHeight / (lineCount * fontSize);
69
+ return Math.max(baseLineHeight, spread);
70
+ };
71
+ exports.getVerticalSpreadLineHeight = getVerticalSpreadLineHeight;
72
+ /**
73
+ * The default horizontal alignment of a cell with no explicit one, under
74
+ * its text direction (Format Cells → Alignment → Text direction). A
75
+ * right-to-left reading order starts text at the right edge, as Excel does;
76
+ * the value-driven default (numbers right) otherwise stands.
77
+ */
78
+ var resolveReadingOrderAlignment = function (readingOrder, defaultAlignment) {
79
+ return readingOrder === "rtl" && (!defaultAlignment || defaultAlignment === "left")
80
+ ? "right"
81
+ : defaultAlignment;
82
+ };
83
+ exports.resolveReadingOrderAlignment = resolveReadingOrderAlignment;
84
+ /**
85
+ * The strokes Excel draws for an underline type (Format Cells → Font →
86
+ * Underline). `single` / `double` run under the text; the accounting types
87
+ * run the width of the cell, lower, clear of the descenders. `baselineY` is
88
+ * the text baseline, `fontSize` in canvas pixels.
89
+ */
90
+ var getUnderlineStrokes = function (_a) {
91
+ var style = _a.style, textX = _a.textX, textWidth = _a.textWidth, cellX = _a.cellX, cellWidth = _a.cellWidth, baselineY = _a.baselineY, fontSize = _a.fontSize, scale = _a.scale;
92
+ var gap = Math.max(2 * scale, Math.round(fontSize * 0.12));
93
+ var accounting = style === "singleAccounting" || style === "doubleAccounting";
94
+ var _b = tslib_1.__read(accounting
95
+ ? [cellX + scale, cellX + cellWidth - scale]
96
+ : [textX, textX + textWidth], 2), x1 = _b[0], x2 = _b[1];
97
+ var y = accounting
98
+ ? baselineY + Math.round(fontSize * 0.22)
99
+ : baselineY + Math.max(scale, Math.round(fontSize * 0.1));
100
+ var strokes = [{ x1: x1, x2: x2, y: y }];
101
+ if (style === "double" || style === "doubleAccounting") {
102
+ strokes.push({ x1: x1, x2: x2, y: y + gap });
103
+ }
104
+ return strokes;
105
+ };
106
+ exports.getUnderlineStrokes = getUnderlineStrokes;
39
107
  /**
40
108
  * Excel's `fill` alignment keeps the text inside the cell too: the value is
41
109
  * repeated to the cell edge and never spills into the neighbour.
@@ -190,3 +258,78 @@ var getRotatedTextLayout = function (_a) {
190
258
  };
191
259
  };
192
260
  exports.getRotatedTextLayout = getRotatedTextLayout;
261
+ /**
262
+ * Excel's horizontal `distributed` alignment: the text wraps at word
263
+ * boundaries and every line — the last one too — spreads its words from the
264
+ * left edge to the right one; a line holding a single word is centred
265
+ * (Format Cells ▸ Alignment ▸ Horizontal ▸ Distributed (Indent)). Returns
266
+ * the words of each line with their x inside `width`.
267
+ */
268
+ var layoutDistributedLines = function (text, width, measure) {
269
+ var e_1, _a;
270
+ var spaceWidth = measure(" ");
271
+ var lines = [];
272
+ var _loop_1 = function (paragraph) {
273
+ var e_2, _d;
274
+ var words = paragraph.split(/\s+/).filter(Boolean);
275
+ var line = [];
276
+ var lineWidth = 0;
277
+ var flush = function () {
278
+ if (!line.length) {
279
+ lines.push([]);
280
+ return;
281
+ }
282
+ var used = line.reduce(function (total, word) { return total + word.width; }, 0);
283
+ if (line.length === 1) {
284
+ lines.push([
285
+ { text: line[0].text, x: Math.max(0, (width - used) / 2) },
286
+ ]);
287
+ }
288
+ else {
289
+ var gap_1 = Math.max(spaceWidth, (width - used) / (line.length - 1));
290
+ var cursor_1 = 0;
291
+ lines.push(line.map(function (word) {
292
+ var placed = { text: word.text, x: cursor_1 };
293
+ cursor_1 += word.width + gap_1;
294
+ return placed;
295
+ }));
296
+ }
297
+ line = [];
298
+ lineWidth = 0;
299
+ };
300
+ try {
301
+ for (var words_1 = (e_2 = void 0, tslib_1.__values(words)), words_1_1 = words_1.next(); !words_1_1.done; words_1_1 = words_1.next()) {
302
+ var word = words_1_1.value;
303
+ var wordWidth = measure(word);
304
+ var next = line.length === 0 ? wordWidth : lineWidth + spaceWidth + wordWidth;
305
+ if (line.length > 0 && next > width)
306
+ flush();
307
+ lineWidth = line.length === 0 ? wordWidth : lineWidth + spaceWidth + wordWidth;
308
+ line.push({ text: word, width: wordWidth });
309
+ }
310
+ }
311
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
312
+ finally {
313
+ try {
314
+ if (words_1_1 && !words_1_1.done && (_d = words_1.return)) _d.call(words_1);
315
+ }
316
+ finally { if (e_2) throw e_2.error; }
317
+ }
318
+ flush();
319
+ };
320
+ try {
321
+ for (var _b = tslib_1.__values(text.split("\n")), _c = _b.next(); !_c.done; _c = _b.next()) {
322
+ var paragraph = _c.value;
323
+ _loop_1(paragraph);
324
+ }
325
+ }
326
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
327
+ finally {
328
+ try {
329
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
330
+ }
331
+ finally { if (e_1) throw e_1.error; }
332
+ }
333
+ return lines;
334
+ };
335
+ exports.layoutDistributedLines = layoutDistributedLines;
@@ -1,6 +1,8 @@
1
1
  import type { RendererProps } from "@rowsncolumns/grid";
2
2
  import React from "react";
3
3
  import type { FillPattern, GradientFill } from "../../types";
4
+ /** Excel's Automatic pattern colour: a pattern with no colour of its own. */
5
+ export declare const AUTOMATIC_PATTERN_COLOR = "#000000";
4
6
  type CellBackgroundProps = RendererProps & {
5
7
  backgroundColor?: string;
6
8
  defaultBackgroundColor: string;
@@ -1 +1 @@
1
- {"version":3,"file":"cell-background.d.ts","sourceRoot":"","sources":["../../../../components/cell/cell-background.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAIxD,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE7D,KAAK,mBAAmB,GAAG,aAAa,GAAG;IACzC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC/B,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACjC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;CAChC,CAAC;AAmFF,eAAO,MAAM,cAAc,GAAI,+IAa5B,mBAAmB,sBA2FrB,CAAC"}
1
+ {"version":3,"file":"cell-background.d.ts","sourceRoot":"","sources":["../../../../components/cell/cell-background.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAIxD,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE7D,6EAA6E;AAC7E,eAAO,MAAM,uBAAuB,YAAY,CAAC;AAEjD,KAAK,mBAAmB,GAAG,aAAa,GAAG;IACzC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC/B,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACjC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;CAChC,CAAC;AAmFF,eAAO,MAAM,cAAc,GAAI,+IAa5B,mBAAmB,sBAwFrB,CAAC"}
@@ -1,11 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CellBackground = void 0;
3
+ exports.CellBackground = exports.AUTOMATIC_PATTERN_COLOR = void 0;
4
4
  var tslib_1 = require("tslib");
5
5
  var utils_1 = require("@rowsncolumns/utils");
6
6
  var react_1 = tslib_1.__importDefault(require("react"));
7
7
  var react_konva_1 = require("react-konva");
8
8
  var fill_patterns_1 = require("../../api/fill-patterns");
9
+ /** Excel's Automatic pattern colour: a pattern with no colour of its own. */
10
+ exports.AUTOMATIC_PATTERN_COLOR = "#000000";
9
11
  // Build a CanvasGradient matching the OOXML <gradientFill> spec.
10
12
  // linear: `degree` rotates the axis (0 = left→right, 90 = top→bottom,
11
13
  // 180 = right→left, 270 = bottom→top). Excel's axis runs through the
@@ -119,10 +121,7 @@ var CellBackground = function (_a) {
119
121
  // bgColor is ignored when pattern=solid). For "none" or absent, fall
120
122
  // back to the regular backgroundColor path.
121
123
  var useSolid = fillPattern === "solid" && foregroundColor;
122
- var useTile = fillPattern &&
123
- fillPattern !== "solid" &&
124
- fillPattern !== "none" &&
125
- foregroundColor;
124
+ var useTile = fillPattern && fillPattern !== "solid" && fillPattern !== "none";
126
125
  var useGradient = !!gradient && ((_c = (_b = gradient.stops) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0) > 0;
127
126
  var native = context._context;
128
127
  if (useGradient && native) {
@@ -138,7 +137,7 @@ var CellBackground = function (_a) {
138
137
  context.setAttr("fillStyle", foregroundColor);
139
138
  }
140
139
  else if (useTile) {
141
- var tile = (0, fill_patterns_1.getPatternCanvas)(fillPattern, foregroundColor, backgroundColor);
140
+ var tile = (0, fill_patterns_1.getPatternCanvas)(fillPattern, foregroundColor !== null && foregroundColor !== void 0 ? foregroundColor : exports.AUTOMATIC_PATTERN_COLOR, backgroundColor);
142
141
  var ctxPattern = tile && (native === null || native === void 0 ? void 0 : native.createPattern(tile, "repeat"));
143
142
  if (ctxPattern) {
144
143
  context.setAttr("fillStyle", ctxPattern);
@@ -1 +1 @@
1
- {"version":3,"file":"cell-backgrounds.d.ts","sourceRoot":"","sources":["../../../../components/cell/cell-backgrounds.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD,OAAO,KAAkB,MAAM,OAAO,CAAC;AAkBvC,MAAM,WAAW,oBAAoB;IACnC,mGAAmG;IACnG,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,uFAAuF;IACvF,SAAS,EAAE,CACT,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,KAChB,UAAU,GAAG,IAAI,GAAG,SAAS,CAAC;IACnC,8FAA8F;IAC9F,YAAY,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,iBAAiB,CAAC,KAAK,MAAM,GAAG,SAAS,CAAC;IAC3E,sBAAsB,EAAE,MAAM,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAChC;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,eAAe,GAAI,mFAO7B,oBAAoB,sBAiHtB,CAAC"}
1
+ {"version":3,"file":"cell-backgrounds.d.ts","sourceRoot":"","sources":["../../../../components/cell/cell-backgrounds.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD,OAAO,KAAkB,MAAM,OAAO,CAAC;AAkBvC,MAAM,WAAW,oBAAoB;IACnC,mGAAmG;IACnG,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,uFAAuF;IACvF,SAAS,EAAE,CACT,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,KAChB,UAAU,GAAG,IAAI,GAAG,SAAS,CAAC;IACnC,8FAA8F;IAC9F,YAAY,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,iBAAiB,CAAC,KAAK,MAAM,GAAG,SAAS,CAAC;IAC3E,sBAAsB,EAAE,MAAM,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAChC;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,eAAe,GAAI,mFAO7B,oBAAoB,sBAqHtB,CAAC"}
@@ -35,7 +35,11 @@ var CellBackgrounds = function (_a) {
35
35
  var fillPattern = (_b = format === null || format === void 0 ? void 0 : format.fillPattern) !== null && _b !== void 0 ? _b : null;
36
36
  var gradient = (_c = format === null || format === void 0 ? void 0 : format.gradient) !== null && _c !== void 0 ? _c : null;
37
37
  var foregroundColor = resolveColor(format === null || format === void 0 ? void 0 : format.foregroundColor);
38
- var hasPaintedPattern = fillPattern && fillPattern !== "none" ? !!foregroundColor : false;
38
+ // A pattern with no colour of its own paints in Excel's Automatic
39
+ // (black); a solid pattern needs its foreground.
40
+ var hasPaintedPattern = fillPattern === "solid"
41
+ ? !!foregroundColor
42
+ : !!fillPattern && fillPattern !== "none";
39
43
  var hasGradient = !!gradient && ((_e = (_d = gradient.stops) === null || _d === void 0 ? void 0 : _d.length) !== null && _e !== void 0 ? _e : 0) > 0;
40
44
  var backgroundColor = resolveColor(format === null || format === void 0 ? void 0 : format.backgroundColor);
41
45
  var isMergedCell = !!cell.isMergedCell;
@@ -60,7 +60,7 @@ var resolveSegmentStyle = function (seg, base, theme) {
60
60
  color: f.color != null
61
61
  ? (0, themes_1.getStringifiedColor)(f.color, theme) || base.color
62
62
  : base.color,
63
- fontFamily: (_f = f.fontFamily) !== null && _f !== void 0 ? _f : base.fontFamily,
63
+ fontFamily: (_f = (0, themes_1.resolveThemeFontFamily)(f.fontFamily, theme)) !== null && _f !== void 0 ? _f : base.fontFamily,
64
64
  // f.fontSize is in points to mirror the editor's TextFormat type,
65
65
  // but at this paint layer everything is in pixels — scale ratio is
66
66
  // applied by the caller via baseFontSize. For per-segment override
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/cell/index.tsx"],"names":[],"mappings":"AAQA,OAAO,KAA4B,MAAM,OAAO,CAAC;AA4CjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAU3C,eAAO,MAAM,IAAI,oCAAgB,SAAS,uBA0oBxC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/cell/index.tsx"],"names":[],"mappings":"AAQA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAsDjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAO3C,eAAO,MAAM,IAAI,oCAAgB,SAAS,uBA6hCxC,CAAC"}