@rowsncolumns/spreadsheet 10.6.0 → 10.6.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.
- package/dist/cjs/api/cf-data-bar.d.ts +73 -0
- package/dist/cjs/api/cf-data-bar.d.ts.map +1 -0
- package/dist/cjs/api/cf-data-bar.js +182 -0
- package/dist/cjs/api/cf-icons.d.ts +73 -0
- package/dist/cjs/api/cf-icons.d.ts.map +1 -0
- package/dist/cjs/api/cf-icons.js +322 -0
- package/dist/cjs/api/cf-overlays.d.ts +89 -3
- package/dist/cjs/api/cf-overlays.d.ts.map +1 -1
- package/dist/cjs/api/cf-overlays.js +256 -80
- package/dist/cjs/api/cf-priority.d.ts +34 -0
- package/dist/cjs/api/cf-priority.d.ts.map +1 -0
- package/dist/cjs/api/cf-priority.js +94 -0
- package/dist/cjs/api/heatmap.d.ts +7 -1
- package/dist/cjs/api/heatmap.d.ts.map +1 -1
- package/dist/cjs/api/heatmap.js +27 -11
- package/dist/cjs/api/selections.d.ts +2 -2
- package/dist/cjs/api/validation.d.ts +6 -0
- package/dist/cjs/api/validation.d.ts.map +1 -1
- package/dist/cjs/api/validation.js +10 -1
- package/dist/cjs/components/canvas-grid/index.d.ts.map +1 -1
- package/dist/cjs/components/canvas-grid/index.js +194 -51
- package/dist/cjs/components/canvas-grid/overflow.d.ts +37 -0
- package/dist/cjs/components/canvas-grid/overflow.d.ts.map +1 -0
- package/dist/cjs/components/canvas-grid/overflow.js +49 -0
- package/dist/cjs/components/canvas-grid/page-breaks.d.ts +15 -0
- package/dist/cjs/components/canvas-grid/page-breaks.d.ts.map +1 -0
- package/dist/cjs/components/canvas-grid/page-breaks.js +77 -0
- package/dist/cjs/components/canvas-grid/typings.d.ts +25 -0
- package/dist/cjs/components/canvas-grid/typings.d.ts.map +1 -1
- package/dist/cjs/components/cell/alignment.d.ts +83 -1
- package/dist/cjs/components/cell/alignment.d.ts.map +1 -1
- package/dist/cjs/components/cell/alignment.js +182 -1
- package/dist/cjs/components/cell/cell-background.d.ts +18 -0
- package/dist/cjs/components/cell/cell-background.d.ts.map +1 -1
- package/dist/cjs/components/cell/cell-background.js +145 -59
- package/dist/cjs/components/cell/cell-backgrounds.d.ts.map +1 -1
- package/dist/cjs/components/cell/cell-backgrounds.js +5 -1
- package/dist/cjs/components/cell/cell-text-runs.d.ts +12 -5
- package/dist/cjs/components/cell/cell-text-runs.d.ts.map +1 -1
- package/dist/cjs/components/cell/cell-text-runs.js +19 -21
- package/dist/cjs/components/cell/index.d.ts.map +1 -1
- package/dist/cjs/components/cell/index.js +392 -45
- package/dist/cjs/components/cell/number-format-layout.d.ts +35 -0
- package/dist/cjs/components/cell/number-format-layout.d.ts.map +1 -0
- package/dist/cjs/components/cell/number-format-layout.js +106 -0
- package/dist/cjs/components/cell/typings.d.ts +22 -0
- package/dist/cjs/components/cell/typings.d.ts.map +1 -1
- package/dist/cjs/components/cell-editor/index.js +2 -2
- package/dist/cjs/components/cell-filter/index.d.ts.map +1 -1
- package/dist/cjs/components/cell-filter/index.js +3 -3
- package/dist/cjs/components/cell-overlay/index.d.ts +20 -0
- package/dist/cjs/components/cell-overlay/index.d.ts.map +1 -1
- package/dist/cjs/components/cell-overlay/index.js +155 -28
- package/dist/cjs/components/cf-icon-preview/index.d.ts +16 -0
- package/dist/cjs/components/cf-icon-preview/index.d.ts.map +1 -0
- package/dist/cjs/components/cf-icon-preview/index.js +48 -0
- package/dist/cjs/components/embeds/embed-component.d.ts.map +1 -1
- package/dist/cjs/components/embeds/embed-component.js +3 -2
- package/dist/cjs/components/hidden-markers/index.d.ts.map +1 -1
- package/dist/cjs/components/hidden-markers/index.js +8 -7
- package/dist/cjs/components/hidden-markers/style.d.ts +7 -0
- package/dist/cjs/components/hidden-markers/style.d.ts.map +1 -1
- package/dist/cjs/components/hidden-markers/style.js +13 -2
- package/dist/cjs/components/protect-sheet-dialog/index.d.ts +67 -0
- package/dist/cjs/components/protect-sheet-dialog/index.d.ts.map +1 -0
- package/dist/cjs/components/protect-sheet-dialog/index.js +196 -0
- package/dist/cjs/components/toolbar/types.d.ts +1 -1
- package/dist/cjs/components/toolbar/types.d.ts.map +1 -1
- package/dist/cjs/config.d.ts +13 -1
- package/dist/cjs/config.d.ts.map +1 -1
- package/dist/cjs/config.js +15 -3
- package/dist/cjs/helpers.d.ts +15 -5
- package/dist/cjs/helpers.d.ts.map +1 -1
- package/dist/cjs/helpers.js +51 -35
- package/dist/cjs/hooks/use-border-styles.d.ts.map +1 -1
- package/dist/cjs/hooks/use-border-styles.js +5 -28
- package/dist/cjs/hooks/use-cell-renderer.d.ts +35 -3
- package/dist/cjs/hooks/use-cell-renderer.d.ts.map +1 -1
- package/dist/cjs/hooks/use-cell-renderer.js +85 -47
- package/dist/cjs/hooks/use-conditional-formatting.d.ts +13 -1
- package/dist/cjs/hooks/use-conditional-formatting.d.ts.map +1 -1
- package/dist/cjs/hooks/use-conditional-formatting.js +281 -230
- package/dist/cjs/index.d.ts +5 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +5 -0
- package/dist/cjs/release-date.js +1 -1
- package/dist/cjs/themes.d.ts +8 -0
- package/dist/cjs/themes.d.ts.map +1 -1
- package/dist/cjs/themes.js +21 -3
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/cjs/types.d.ts +81 -4
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/esm/api/cf-data-bar.d.ts +73 -0
- package/dist/esm/api/cf-data-bar.d.ts.map +1 -0
- package/dist/esm/api/cf-data-bar.js +178 -0
- package/dist/esm/api/cf-icons.d.ts +73 -0
- package/dist/esm/api/cf-icons.d.ts.map +1 -0
- package/dist/esm/api/cf-icons.js +306 -0
- package/dist/esm/api/cf-overlays.d.ts +89 -3
- package/dist/esm/api/cf-overlays.d.ts.map +1 -1
- package/dist/esm/api/cf-overlays.js +223 -67
- package/dist/esm/api/cf-priority.d.ts +34 -0
- package/dist/esm/api/cf-priority.d.ts.map +1 -0
- package/dist/esm/api/cf-priority.js +61 -0
- package/dist/esm/api/heatmap.d.ts +7 -1
- package/dist/esm/api/heatmap.d.ts.map +1 -1
- package/dist/esm/api/heatmap.js +24 -9
- package/dist/esm/api/selections.d.ts +2 -2
- package/dist/esm/api/validation.d.ts +6 -0
- package/dist/esm/api/validation.d.ts.map +1 -1
- package/dist/esm/api/validation.js +6 -0
- package/dist/esm/components/canvas-grid/index.d.ts.map +1 -1
- package/dist/esm/components/canvas-grid/index.js +163 -47
- package/dist/esm/components/canvas-grid/overflow.d.ts +37 -0
- package/dist/esm/components/canvas-grid/overflow.d.ts.map +1 -0
- package/dist/esm/components/canvas-grid/overflow.js +39 -0
- package/dist/esm/components/canvas-grid/page-breaks.d.ts +15 -0
- package/dist/esm/components/canvas-grid/page-breaks.d.ts.map +1 -0
- package/dist/esm/components/canvas-grid/page-breaks.js +50 -0
- package/dist/esm/components/canvas-grid/typings.d.ts +25 -0
- package/dist/esm/components/canvas-grid/typings.d.ts.map +1 -1
- package/dist/esm/components/cell/alignment.d.ts +83 -1
- package/dist/esm/components/cell/alignment.d.ts.map +1 -1
- package/dist/esm/components/cell/alignment.js +143 -1
- package/dist/esm/components/cell/cell-background.d.ts +18 -0
- package/dist/esm/components/cell/cell-background.d.ts.map +1 -1
- package/dist/esm/components/cell/cell-background.js +110 -41
- package/dist/esm/components/cell/cell-backgrounds.d.ts.map +1 -1
- package/dist/esm/components/cell/cell-backgrounds.js +5 -1
- package/dist/esm/components/cell/cell-text-runs.d.ts +12 -5
- package/dist/esm/components/cell/cell-text-runs.d.ts.map +1 -1
- package/dist/esm/components/cell/cell-text-runs.js +19 -24
- package/dist/esm/components/cell/index.d.ts.map +1 -1
- package/dist/esm/components/cell/index.js +352 -46
- package/dist/esm/components/cell/number-format-layout.d.ts +35 -0
- package/dist/esm/components/cell/number-format-layout.d.ts.map +1 -0
- package/dist/esm/components/cell/number-format-layout.js +99 -0
- package/dist/esm/components/cell/typings.d.ts +22 -0
- package/dist/esm/components/cell/typings.d.ts.map +1 -1
- package/dist/esm/components/cell-editor/index.js +2 -2
- package/dist/esm/components/cell-filter/index.d.ts.map +1 -1
- package/dist/esm/components/cell-filter/index.js +4 -4
- package/dist/esm/components/cell-overlay/index.d.ts +20 -0
- package/dist/esm/components/cell-overlay/index.d.ts.map +1 -1
- package/dist/esm/components/cell-overlay/index.js +111 -25
- package/dist/esm/components/cf-icon-preview/index.d.ts +16 -0
- package/dist/esm/components/cf-icon-preview/index.d.ts.map +1 -0
- package/dist/esm/components/cf-icon-preview/index.js +41 -0
- package/dist/esm/components/embeds/embed-component.d.ts.map +1 -1
- package/dist/esm/components/embeds/embed-component.js +4 -3
- package/dist/esm/components/hidden-markers/index.d.ts.map +1 -1
- package/dist/esm/components/hidden-markers/index.js +9 -8
- package/dist/esm/components/hidden-markers/style.d.ts +7 -0
- package/dist/esm/components/hidden-markers/style.d.ts.map +1 -1
- package/dist/esm/components/hidden-markers/style.js +8 -1
- package/dist/esm/components/protect-sheet-dialog/index.d.ts +67 -0
- package/dist/esm/components/protect-sheet-dialog/index.d.ts.map +1 -0
- package/dist/esm/components/protect-sheet-dialog/index.js +154 -0
- package/dist/esm/components/toolbar/types.d.ts +1 -1
- package/dist/esm/components/toolbar/types.d.ts.map +1 -1
- package/dist/esm/config.d.ts +13 -1
- package/dist/esm/config.d.ts.map +1 -1
- package/dist/esm/config.js +13 -1
- package/dist/esm/helpers.d.ts +15 -5
- package/dist/esm/helpers.d.ts.map +1 -1
- package/dist/esm/helpers.js +48 -32
- package/dist/esm/hooks/use-border-styles.d.ts.map +1 -1
- package/dist/esm/hooks/use-border-styles.js +5 -26
- package/dist/esm/hooks/use-cell-renderer.d.ts +35 -3
- package/dist/esm/hooks/use-cell-renderer.d.ts.map +1 -1
- package/dist/esm/hooks/use-cell-renderer.js +83 -42
- package/dist/esm/hooks/use-conditional-formatting.d.ts +13 -1
- package/dist/esm/hooks/use-conditional-formatting.d.ts.map +1 -1
- package/dist/esm/hooks/use-conditional-formatting.js +215 -120
- package/dist/esm/index.d.ts +5 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +5 -0
- package/dist/esm/release-date.js +1 -1
- package/dist/esm/themes.d.ts +8 -0
- package/dist/esm/themes.d.ts.map +1 -1
- package/dist/esm/themes.js +20 -3
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/esm/types.d.ts +81 -4
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/spreadsheet.min.css +1 -1
- 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.getScriptTextOffsetY = exports.getScriptBaselineShift = exports.SUBSCRIPT_DROP_EM = exports.SUPERSCRIPT_RISE_EM = 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,116 @@ 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;
|
|
336
|
+
/**
|
|
337
|
+
* Excel's superscript sits on a baseline raised by a third of the line's
|
|
338
|
+
* font size, subscript on one dropped by about a seventh (Format Cells ▸
|
|
339
|
+
* Font ▸ Effects): a true baseline shift, not the glyphs pushed to the top
|
|
340
|
+
* or bottom of the cell.
|
|
341
|
+
*/
|
|
342
|
+
exports.SUPERSCRIPT_RISE_EM = 0.33;
|
|
343
|
+
exports.SUBSCRIPT_DROP_EM = 0.14;
|
|
344
|
+
/** Baseline shift (px, down positive) of a sup/sub run on a `lineFontSize` line. */
|
|
345
|
+
var getScriptBaselineShift = function (baselineOffset, lineFontSize) {
|
|
346
|
+
return baselineOffset === "superscript"
|
|
347
|
+
? -exports.SUPERSCRIPT_RISE_EM * lineFontSize
|
|
348
|
+
: baselineOffset === "subscript"
|
|
349
|
+
? exports.SUBSCRIPT_DROP_EM * lineFontSize
|
|
350
|
+
: 0;
|
|
351
|
+
};
|
|
352
|
+
exports.getScriptBaselineShift = getScriptBaselineShift;
|
|
353
|
+
/** Distance from a Konva line box's top to its alphabetic baseline, ≈. */
|
|
354
|
+
var BASELINE_BELOW_CENTRE_EM = 0.35;
|
|
355
|
+
/**
|
|
356
|
+
* Konva `offsetY` (up positive) for a cell whose whole text is superscript /
|
|
357
|
+
* subscript: the text node draws the smaller script font aligned like the
|
|
358
|
+
* cell, and this moves its baseline to where Excel puts it — the base
|
|
359
|
+
* font's baseline in that alignment, shifted by
|
|
360
|
+
* {@link getScriptBaselineShift}.
|
|
361
|
+
*/
|
|
362
|
+
var getScriptTextOffsetY = function (_a) {
|
|
363
|
+
var baselineOffset = _a.baselineOffset, verticalAlign = _a.verticalAlign, baseFontSize = _a.baseFontSize, scriptFontSize = _a.scriptFontSize, lineHeight = _a.lineHeight;
|
|
364
|
+
if (baselineOffset !== "superscript" && baselineOffset !== "subscript") {
|
|
365
|
+
return 0;
|
|
366
|
+
}
|
|
367
|
+
var boxDelta = ((baseFontSize - scriptFontSize) * lineHeight) / 2;
|
|
368
|
+
var centreDelta = BASELINE_BELOW_CENTRE_EM * (baseFontSize - scriptFontSize);
|
|
369
|
+
var alignDelta = verticalAlign === "top" ? boxDelta : verticalAlign === "bottom" ? -boxDelta : 0;
|
|
370
|
+
var down = alignDelta + centreDelta + (0, exports.getScriptBaselineShift)(baselineOffset, baseFontSize);
|
|
371
|
+
return -down;
|
|
372
|
+
};
|
|
373
|
+
exports.getScriptTextOffsetY = getScriptTextOffsetY;
|
|
@@ -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;
|
|
@@ -10,6 +12,22 @@ type CellBackgroundProps = RendererProps & {
|
|
|
10
12
|
foregroundColor?: string;
|
|
11
13
|
gradient?: GradientFill | null;
|
|
12
14
|
};
|
|
15
|
+
export type PathGradientRegion = {
|
|
16
|
+
/** Polygon to fill, in shape coordinates. */
|
|
17
|
+
points: [number, number][];
|
|
18
|
+
/** Gradient axis: inner stop at (x0, y0), outer stop at (x1, y1). */
|
|
19
|
+
axis: [number, number, number, number];
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Excel's path gradient over the rectangle `[x0, y0]–[x1, y1]`: the core
|
|
23
|
+
* rectangle (inner stop colour) and four trapezoids cut along the
|
|
24
|
+
* core-to-corner diagonals, each a linear gradient from the core edge out
|
|
25
|
+
* to its cell edge — together, concentric rectangles of colour.
|
|
26
|
+
*/
|
|
27
|
+
export declare const getPathGradientRegions: (gradient: Pick<GradientFill, "left" | "right" | "top" | "bottom">, x0: number, y0: number, x1: number, y1: number) => {
|
|
28
|
+
core: [number, number, number, number];
|
|
29
|
+
regions: PathGradientRegion[];
|
|
30
|
+
};
|
|
13
31
|
export declare const CellBackground: ({ x, y, width, height, backgroundColor, defaultBackgroundColor, scale, showGridLines, isMergedCell, fillPattern, foregroundColor, gradient, }: CellBackgroundProps) => React.JSX.Element;
|
|
14
32
|
export {};
|
|
15
33
|
//# sourceMappingURL=cell-background.d.ts.map
|
|
@@ -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;
|
|
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;AAWF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,6CAA6C;IAC7C,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IAC3B,qEAAqE;IACrE,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,GACjC,UAAU,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC,EACjE,IAAI,MAAM,EACV,IAAI,MAAM,EACV,IAAI,MAAM,EACV,IAAI,MAAM,KACT;IAAE,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,OAAO,EAAE,kBAAkB,EAAE,CAAA;CAoDzE,CAAC;AAkFF,eAAO,MAAM,cAAc,GAAI,+IAa5B,mBAAmB,sBAmGrB,CAAC"}
|
|
@@ -1,40 +1,139 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CellBackground = void 0;
|
|
3
|
+
exports.CellBackground = exports.getPathGradientRegions = 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
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
9
|
+
/** Excel's Automatic pattern colour: a pattern with no colour of its own. */
|
|
10
|
+
exports.AUTOMATIC_PATTERN_COLOR = "#000000";
|
|
11
|
+
/**
|
|
12
|
+
* Excel's path gradient over the rectangle `[x0, y0]–[x1, y1]`: the core
|
|
13
|
+
* rectangle (inner stop colour) and four trapezoids cut along the
|
|
14
|
+
* core-to-corner diagonals, each a linear gradient from the core edge out
|
|
15
|
+
* to its cell edge — together, concentric rectangles of colour.
|
|
16
|
+
*/
|
|
17
|
+
var getPathGradientRegions = function (gradient, x0, y0, x1, y1) {
|
|
18
|
+
var _a, _b, _c, _d;
|
|
19
|
+
var width = x1 - x0;
|
|
20
|
+
var height = y1 - y0;
|
|
21
|
+
var cl = x0 + ((_a = gradient.left) !== null && _a !== void 0 ? _a : 0) * width;
|
|
22
|
+
var cr = x1 - ((_b = gradient.right) !== null && _b !== void 0 ? _b : 0) * width;
|
|
23
|
+
var ct = y0 + ((_c = gradient.top) !== null && _c !== void 0 ? _c : 0) * height;
|
|
24
|
+
var cb = y1 - ((_d = gradient.bottom) !== null && _d !== void 0 ? _d : 0) * height;
|
|
25
|
+
var coreLeft = Math.min(cl, cr);
|
|
26
|
+
var coreRight = Math.max(cl, cr);
|
|
27
|
+
var coreTop = Math.min(ct, cb);
|
|
28
|
+
var coreBottom = Math.max(ct, cb);
|
|
29
|
+
return {
|
|
30
|
+
core: [coreLeft, coreTop, coreRight, coreBottom],
|
|
31
|
+
regions: [
|
|
32
|
+
{
|
|
33
|
+
points: [
|
|
34
|
+
[x0, y0],
|
|
35
|
+
[x1, y0],
|
|
36
|
+
[coreRight, coreTop],
|
|
37
|
+
[coreLeft, coreTop],
|
|
38
|
+
],
|
|
39
|
+
axis: [coreLeft, coreTop, coreLeft, y0],
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
points: [
|
|
43
|
+
[x1, y0],
|
|
44
|
+
[x1, y1],
|
|
45
|
+
[coreRight, coreBottom],
|
|
46
|
+
[coreRight, coreTop],
|
|
47
|
+
],
|
|
48
|
+
axis: [coreRight, coreTop, x1, coreTop],
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
points: [
|
|
52
|
+
[x1, y1],
|
|
53
|
+
[x0, y1],
|
|
54
|
+
[coreLeft, coreBottom],
|
|
55
|
+
[coreRight, coreBottom],
|
|
56
|
+
],
|
|
57
|
+
axis: [coreLeft, coreBottom, coreLeft, y1],
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
points: [
|
|
61
|
+
[x0, y1],
|
|
62
|
+
[x0, y0],
|
|
63
|
+
[coreLeft, coreTop],
|
|
64
|
+
[coreLeft, coreBottom],
|
|
65
|
+
],
|
|
66
|
+
axis: [coreLeft, coreTop, x0, coreTop],
|
|
67
|
+
},
|
|
68
|
+
],
|
|
69
|
+
};
|
|
70
|
+
};
|
|
71
|
+
exports.getPathGradientRegions = getPathGradientRegions;
|
|
72
|
+
var addStops = function (canvasGrad, gradient) {
|
|
73
|
+
var e_1, _a;
|
|
74
|
+
try {
|
|
75
|
+
for (var _b = tslib_1.__values(gradient.stops), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
76
|
+
var stop_1 = _c.value;
|
|
77
|
+
// Clamp position to [0,1] — Canvas API rejects out-of-range values.
|
|
78
|
+
var pos = Math.max(0, Math.min(1, stop_1.position));
|
|
79
|
+
try {
|
|
80
|
+
canvasGrad.addColorStop(pos, stop_1.color);
|
|
81
|
+
}
|
|
82
|
+
catch (_d) {
|
|
83
|
+
// Invalid color string — skip rather than blow up the render.
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
88
|
+
finally {
|
|
89
|
+
try {
|
|
90
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
91
|
+
}
|
|
92
|
+
finally { if (e_1) throw e_1.error; }
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
var paintPathGradient = function (context, native, gradient, rect) {
|
|
96
|
+
var e_2, _a;
|
|
97
|
+
var _b = exports.getPathGradientRegions.apply(void 0, tslib_1.__spreadArray([gradient], tslib_1.__read(rect), false)), core = _b.core, regions = _b.regions;
|
|
98
|
+
var sorted = tslib_1.__spreadArray([], tslib_1.__read(gradient.stops), false).sort(function (a, b) { return a.position - b.position; });
|
|
99
|
+
context.setAttr("fillStyle", sorted[0].color);
|
|
100
|
+
context.fillRect(core[0], core[1], core[2] - core[0], core[3] - core[1]);
|
|
101
|
+
try {
|
|
102
|
+
for (var regions_1 = tslib_1.__values(regions), regions_1_1 = regions_1.next(); !regions_1_1.done; regions_1_1 = regions_1.next()) {
|
|
103
|
+
var region = regions_1_1.value;
|
|
104
|
+
var _c = tslib_1.__read(region.axis, 4), ax0 = _c[0], ay0 = _c[1], ax1 = _c[2], ay1 = _c[3];
|
|
105
|
+
if (ax0 === ax1 && ay0 === ay1)
|
|
106
|
+
continue;
|
|
107
|
+
var canvasGrad = native.createLinearGradient(ax0, ay0, ax1, ay1);
|
|
108
|
+
addStops(canvasGrad, gradient);
|
|
109
|
+
context.beginPath();
|
|
110
|
+
region.points.forEach(function (_a, index) {
|
|
111
|
+
var _b = tslib_1.__read(_a, 2), px = _b[0], py = _b[1];
|
|
112
|
+
return index ? context.lineTo(px, py) : context.moveTo(px, py);
|
|
113
|
+
});
|
|
114
|
+
context.closePath();
|
|
115
|
+
context.setAttr("fillStyle", canvasGrad);
|
|
116
|
+
context.fill();
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
120
|
+
finally {
|
|
121
|
+
try {
|
|
122
|
+
if (regions_1_1 && !regions_1_1.done && (_a = regions_1.return)) _a.call(regions_1);
|
|
123
|
+
}
|
|
124
|
+
finally { if (e_2) throw e_2.error; }
|
|
125
|
+
}
|
|
126
|
+
};
|
|
18
127
|
var buildCanvasGradient = function (native, gradient, width, height) {
|
|
19
|
-
var
|
|
20
|
-
var
|
|
21
|
-
if (!((
|
|
128
|
+
var e_3, _a;
|
|
129
|
+
var _b, _c;
|
|
130
|
+
if (!((_b = gradient.stops) === null || _b === void 0 ? void 0 : _b.length))
|
|
22
131
|
return null;
|
|
23
132
|
var canvasGrad;
|
|
24
|
-
|
|
25
|
-
var left = (_d = gradient.left) !== null && _d !== void 0 ? _d : 0;
|
|
26
|
-
var right = (_e = gradient.right) !== null && _e !== void 0 ? _e : 0;
|
|
27
|
-
var top_1 = (_f = gradient.top) !== null && _f !== void 0 ? _f : 0;
|
|
28
|
-
var bottom = (_g = gradient.bottom) !== null && _g !== void 0 ? _g : 0;
|
|
29
|
-
var cx = ((left + (1 - right)) / 2) * width;
|
|
30
|
-
var cy = ((top_1 + (1 - bottom)) / 2) * height;
|
|
31
|
-
var farthestCorner = Math.max(Math.hypot(cx, cy), Math.hypot(width - cx, cy), Math.hypot(cx, height - cy), Math.hypot(width - cx, height - cy));
|
|
32
|
-
canvasGrad = native.createRadialGradient(cx, cy, 0, cx, cy, farthestCorner || 1);
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
133
|
+
{
|
|
35
134
|
// Linear. Map degrees → axis vector. Excel: degree=0 runs the
|
|
36
135
|
// gradient from LEFT to RIGHT. degree increases clockwise.
|
|
37
|
-
var deg = ((((
|
|
136
|
+
var deg = ((((_c = gradient.degree) !== null && _c !== void 0 ? _c : 0) % 360) + 360) % 360;
|
|
38
137
|
var rad = (deg * Math.PI) / 180;
|
|
39
138
|
// Project the axis through the rect's center; the start/end points
|
|
40
139
|
// are where that axis exits the bounding box (handled by computing
|
|
@@ -53,7 +152,7 @@ var buildCanvasGradient = function (native, gradient, width, height) {
|
|
|
53
152
|
var maxProj = -Infinity;
|
|
54
153
|
try {
|
|
55
154
|
for (var corners_1 = tslib_1.__values(corners), corners_1_1 = corners_1.next(); !corners_1_1.done; corners_1_1 = corners_1.next()) {
|
|
56
|
-
var
|
|
155
|
+
var _d = tslib_1.__read(corners_1_1.value, 2), px = _d[0], py = _d[1];
|
|
57
156
|
var proj = (px - cx) * dx + (py - cy) * dy;
|
|
58
157
|
if (proj < minProj)
|
|
59
158
|
minProj = proj;
|
|
@@ -61,12 +160,12 @@ var buildCanvasGradient = function (native, gradient, width, height) {
|
|
|
61
160
|
maxProj = proj;
|
|
62
161
|
}
|
|
63
162
|
}
|
|
64
|
-
catch (
|
|
163
|
+
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
65
164
|
finally {
|
|
66
165
|
try {
|
|
67
166
|
if (corners_1_1 && !corners_1_1.done && (_a = corners_1.return)) _a.call(corners_1);
|
|
68
167
|
}
|
|
69
|
-
finally { if (
|
|
168
|
+
finally { if (e_3) throw e_3.error; }
|
|
70
169
|
}
|
|
71
170
|
var x0 = cx + dx * minProj;
|
|
72
171
|
var y0 = cy + dy * minProj;
|
|
@@ -74,26 +173,7 @@ var buildCanvasGradient = function (native, gradient, width, height) {
|
|
|
74
173
|
var y1 = cy + dy * maxProj;
|
|
75
174
|
canvasGrad = native.createLinearGradient(x0, y0, x1, y1);
|
|
76
175
|
}
|
|
77
|
-
|
|
78
|
-
for (var _k = tslib_1.__values(gradient.stops), _l = _k.next(); !_l.done; _l = _k.next()) {
|
|
79
|
-
var stop_1 = _l.value;
|
|
80
|
-
// Clamp position to [0,1] — Canvas API rejects out-of-range values.
|
|
81
|
-
var pos = Math.max(0, Math.min(1, stop_1.position));
|
|
82
|
-
try {
|
|
83
|
-
canvasGrad.addColorStop(pos, stop_1.color);
|
|
84
|
-
}
|
|
85
|
-
catch (_m) {
|
|
86
|
-
// Invalid color string — skip rather than blow up the render.
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
91
|
-
finally {
|
|
92
|
-
try {
|
|
93
|
-
if (_l && !_l.done && (_b = _k.return)) _b.call(_k);
|
|
94
|
-
}
|
|
95
|
-
finally { if (e_2) throw e_2.error; }
|
|
96
|
-
}
|
|
176
|
+
addStops(canvasGrad, gradient);
|
|
97
177
|
return canvasGrad;
|
|
98
178
|
};
|
|
99
179
|
var CellBackground = function (_a) {
|
|
@@ -119,13 +199,17 @@ var CellBackground = function (_a) {
|
|
|
119
199
|
// bgColor is ignored when pattern=solid). For "none" or absent, fall
|
|
120
200
|
// back to the regular backgroundColor path.
|
|
121
201
|
var useSolid = fillPattern === "solid" && foregroundColor;
|
|
122
|
-
var useTile = fillPattern &&
|
|
123
|
-
fillPattern !== "solid" &&
|
|
124
|
-
fillPattern !== "none" &&
|
|
125
|
-
foregroundColor;
|
|
202
|
+
var useTile = fillPattern && fillPattern !== "solid" && fillPattern !== "none";
|
|
126
203
|
var useGradient = !!gradient && ((_c = (_b = gradient.stops) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0) > 0;
|
|
127
204
|
var native = context._context;
|
|
128
|
-
|
|
205
|
+
var fillRectArea = (isMergedCell || !showFaintBorder) && showGridLines
|
|
206
|
+
? [1, 1, shape.width(), shape.height()]
|
|
207
|
+
: [0, 0, shape.width() + 1, shape.height() + 1];
|
|
208
|
+
var usePathGradient = useGradient && native && gradient.type === "path";
|
|
209
|
+
if (usePathGradient) {
|
|
210
|
+
paintPathGradient(context, native, gradient, fillRectArea);
|
|
211
|
+
}
|
|
212
|
+
else if (useGradient && native) {
|
|
129
213
|
var canvasGrad = buildCanvasGradient(native, gradient, shape.width(), shape.height());
|
|
130
214
|
if (canvasGrad) {
|
|
131
215
|
context.setAttr("fillStyle", canvasGrad);
|
|
@@ -138,7 +222,7 @@ var CellBackground = function (_a) {
|
|
|
138
222
|
context.setAttr("fillStyle", foregroundColor);
|
|
139
223
|
}
|
|
140
224
|
else if (useTile) {
|
|
141
|
-
var tile = (0, fill_patterns_1.getPatternCanvas)(fillPattern, foregroundColor, backgroundColor);
|
|
225
|
+
var tile = (0, fill_patterns_1.getPatternCanvas)(fillPattern, foregroundColor !== null && foregroundColor !== void 0 ? foregroundColor : exports.AUTOMATIC_PATTERN_COLOR, backgroundColor);
|
|
142
226
|
var ctxPattern = tile && (native === null || native === void 0 ? void 0 : native.createPattern(tile, "repeat"));
|
|
143
227
|
if (ctxPattern) {
|
|
144
228
|
context.setAttr("fillStyle", ctxPattern);
|
|
@@ -150,11 +234,13 @@ var CellBackground = function (_a) {
|
|
|
150
234
|
else {
|
|
151
235
|
context.setAttr("fillStyle", finalBackgroundColor);
|
|
152
236
|
}
|
|
153
|
-
if (
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
237
|
+
if (!usePathGradient) {
|
|
238
|
+
if ((isMergedCell || !showFaintBorder) && showGridLines) {
|
|
239
|
+
context.fillRect(1, 1, shape.width() - 1, shape.height() - 1);
|
|
240
|
+
}
|
|
241
|
+
else {
|
|
242
|
+
context.fillRect(0, 0, shape.width() + 1, shape.height() + 1);
|
|
243
|
+
}
|
|
158
244
|
}
|
|
159
245
|
if (showFaintBorder) {
|
|
160
246
|
var lightColor = (0, utils_1.lightenColor)(-0.1, backgroundColor);
|
|
@@ -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,
|
|
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
|
-
|
|
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;
|
|
@@ -46,6 +46,13 @@ export type CellTextRunsProps = {
|
|
|
46
46
|
wrap: boolean;
|
|
47
47
|
/** Theme — used to resolve segment `color` objects to CSS strings. */
|
|
48
48
|
theme: SpreadsheetTheme;
|
|
49
|
+
/**
|
|
50
|
+
* Multiplier for run font sizes given in points (zoom × shrink-to-fit),
|
|
51
|
+
* so a run's own size follows the cell's.
|
|
52
|
+
*/
|
|
53
|
+
fontScale?: number;
|
|
54
|
+
/** Konva rotation (degrees, clockwise) of the whole block — rotated text. */
|
|
55
|
+
rotation?: number;
|
|
49
56
|
};
|
|
50
57
|
export type Resolved = {
|
|
51
58
|
bold: boolean;
|
|
@@ -64,7 +71,7 @@ export type Resolved = {
|
|
|
64
71
|
* merged style carries a `baselineOffset` (own or inherited from the
|
|
65
72
|
* base) the sup/sub font scale is applied here, exactly once.
|
|
66
73
|
*/
|
|
67
|
-
export declare const resolveSegmentStyle: (seg: RichTextSegment, base: Resolved, theme: SpreadsheetTheme) => Resolved;
|
|
74
|
+
export declare const resolveSegmentStyle: (seg: RichTextSegment, base: Resolved, theme: SpreadsheetTheme, fontScale?: number) => Resolved;
|
|
68
75
|
/** A segment paired with its fully-resolved paint style. */
|
|
69
76
|
export type ResolvedSegment = {
|
|
70
77
|
seg: RichTextSegment;
|
|
@@ -83,10 +90,10 @@ export declare const computeLineMetrics: (resolvedLines: ResolvedSegment[][], ba
|
|
|
83
90
|
};
|
|
84
91
|
/**
|
|
85
92
|
* Vertical draw position (textBaseline="top") for one segment within
|
|
86
|
-
* its line box.
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
*
|
|
93
|
+
* its line box. Every run shares the line's alphabetic baseline (smaller
|
|
94
|
+
* runs shift down); superscript / subscript runs then move that baseline
|
|
95
|
+
* up / down by Excel's shift ({@link getScriptBaselineShift}). Exported
|
|
96
|
+
* for unit tests.
|
|
90
97
|
*/
|
|
91
98
|
export declare const computeSegmentTop: (lineTop: number, lineFontSize: number, segFontSize: number, baselineOffset: "superscript" | "subscript" | undefined) => number;
|
|
92
99
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cell-text-runs.d.ts","sourceRoot":"","sources":["../../../../components/cell/cell-text-runs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGzD,OAAO,KAAsB,MAAM,OAAO,CAAC;AAG3C,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAElE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"cell-text-runs.d.ts","sourceRoot":"","sources":["../../../../components/cell/cell-text-runs.tsx"],"names":[],"mappings":"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"}
|