js.documents 14.4.56 → 14.4.57

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 (163) hide show
  1. package/dist/codecs/read.cjs +2 -2
  2. package/dist/codecs/read.js +1 -1
  3. package/dist/composition-plan-CfvhXeOC.cjs +627 -0
  4. package/dist/composition-plan-DU9nPPN7.d.cts +102 -0
  5. package/dist/composition-plan-f0zaExUW.js +508 -0
  6. package/dist/composition-plan-l6QPO4FX.d.ts +102 -0
  7. package/dist/convert/composition-plan.cjs +7 -0
  8. package/dist/convert/composition-plan.d.cts +2 -0
  9. package/dist/convert/composition-plan.d.ts +2 -0
  10. package/dist/convert/composition-plan.js +2 -0
  11. package/dist/convert/composition-to-pdf.cjs +12 -12
  12. package/dist/convert/composition-to-pdf.d.cts +1 -1
  13. package/dist/convert/composition-to-pdf.d.ts +1 -1
  14. package/dist/convert/composition-to-pdf.js +2 -2
  15. package/dist/convert/composition.cjs +16 -511
  16. package/dist/convert/composition.d.cts +2 -85
  17. package/dist/convert/composition.d.ts +2 -85
  18. package/dist/convert/composition.js +2 -502
  19. package/dist/convert/convert.cjs +2 -2
  20. package/dist/convert/convert.js +1 -1
  21. package/dist/convert/from-package.cjs +3 -3
  22. package/dist/convert/from-package.js +2 -2
  23. package/dist/convert/from-pdf.cjs +18 -18
  24. package/dist/convert/from-pdf.js +2 -2
  25. package/dist/convert/local.cjs +3 -3
  26. package/dist/convert/local.js +1 -1
  27. package/dist/edit/odp/slide.cjs +4 -4
  28. package/dist/edit/odp/slide.d.cts +1 -1
  29. package/dist/edit/odp/slide.d.ts +1 -1
  30. package/dist/edit/odp/slide.js +1 -1
  31. package/dist/edit/odt/content.d.cts +1 -1
  32. package/dist/edit/odt/content.d.ts +1 -1
  33. package/dist/edit/odt/editor.cjs +4 -4
  34. package/dist/edit/odt/editor.d.cts +1 -1
  35. package/dist/edit/odt/editor.d.ts +1 -1
  36. package/dist/edit/odt/editor.js +1 -1
  37. package/dist/edit/odt/table-grid.cjs +23 -0
  38. package/dist/edit/odt/table-grid.d.cts +54 -0
  39. package/dist/edit/odt/table-grid.d.ts +54 -0
  40. package/dist/edit/odt/table-grid.js +2 -0
  41. package/dist/edit/odt/table.cjs +12 -653
  42. package/dist/edit/odt/table.d.cts +2 -2
  43. package/dist/edit/odt/table.d.ts +2 -2
  44. package/dist/edit/odt/table.js +2 -647
  45. package/dist/{evaluate-BbOsgdmN.d.cts → evaluate-BSEUxiUK.d.cts} +3 -1
  46. package/dist/evaluate-CEzsBx3w.cjs +564 -0
  47. package/dist/{evaluate-C7fmk69X.d.ts → evaluate-D8fG2ZeB.d.ts} +3 -1
  48. package/dist/evaluate-IK-3aMv5.js +445 -0
  49. package/dist/evaluate-columns-CyqKHkIW.d.cts +41 -0
  50. package/dist/evaluate-columns-cOo8fOfT.d.ts +41 -0
  51. package/dist/index.cjs +24 -24
  52. package/dist/index.d.cts +6 -5
  53. package/dist/index.d.ts +6 -5
  54. package/dist/index.js +8 -8
  55. package/dist/latex/lint.cjs +2 -2
  56. package/dist/latex/lint.js +1 -1
  57. package/dist/latex/lower-fold.cjs +6 -0
  58. package/dist/latex/lower-fold.d.cts +17 -0
  59. package/dist/latex/lower-fold.d.ts +17 -0
  60. package/dist/latex/lower-fold.js +2 -0
  61. package/dist/latex/lower.cjs +11 -617
  62. package/dist/latex/lower.d.cts +18 -1
  63. package/dist/latex/lower.d.ts +18 -1
  64. package/dist/latex/lower.js +2 -616
  65. package/dist/latex/symbols.d.cts +1 -15
  66. package/dist/latex/symbols.d.ts +1 -15
  67. package/dist/latex/temml.d.cts +1 -24
  68. package/dist/latex/temml.d.ts +1 -24
  69. package/dist/layout/engine.cjs +2 -2
  70. package/dist/layout/engine.js +1 -1
  71. package/dist/layout/reconstruct-lines.cjs +315 -0
  72. package/dist/layout/reconstruct-lines.d.cts +2 -0
  73. package/dist/layout/reconstruct-lines.d.ts +2 -0
  74. package/dist/layout/reconstruct-lines.js +297 -0
  75. package/dist/layout/reconstruct-presentations-prod.cjs +9 -0
  76. package/dist/layout/reconstruct-presentations-prod.d.cts +26 -0
  77. package/dist/layout/reconstruct-presentations-prod.d.ts +26 -0
  78. package/dist/layout/reconstruct-presentations-prod.js +2 -0
  79. package/dist/layout/reconstruct-tables.cjs +5 -0
  80. package/dist/layout/reconstruct-tables.d.cts +22 -0
  81. package/dist/layout/reconstruct-tables.d.ts +22 -0
  82. package/dist/layout/reconstruct-tables.js +2 -0
  83. package/dist/layout/reconstruct.cjs +11 -1545
  84. package/dist/layout/reconstruct.d.cts +2 -14
  85. package/dist/layout/reconstruct.d.ts +2 -14
  86. package/dist/layout/reconstruct.js +2 -1542
  87. package/dist/layout/shared.cjs +2 -2
  88. package/dist/layout/shared.js +1 -1
  89. package/dist/layout/sheets-render.cjs +19 -0
  90. package/dist/layout/sheets-render.d.cts +41 -0
  91. package/dist/layout/sheets-render.d.ts +41 -0
  92. package/dist/layout/sheets-render.js +2 -0
  93. package/dist/layout/sheets.cjs +10 -544
  94. package/dist/layout/sheets.d.cts +13 -2
  95. package/dist/layout/sheets.d.ts +13 -2
  96. package/dist/layout/sheets.js +2 -543
  97. package/dist/layout/slides.cjs +2 -2
  98. package/dist/layout/slides.js +1 -1
  99. package/dist/layout-DIJzJk4x.js +526 -0
  100. package/dist/layout-iuiyl_Fk.cjs +621 -0
  101. package/dist/layout-types-oSbHvZid.d.cts +13 -0
  102. package/dist/layout-types-oSbHvZid.d.ts +13 -0
  103. package/dist/lower-DCs3rWI7.js +618 -0
  104. package/dist/lower-DzOb13w4.cjs +701 -0
  105. package/dist/markdown/math.cjs +2 -2
  106. package/dist/markdown/math.js +1 -1
  107. package/dist/mathml/layout-stretch.cjs +16 -0
  108. package/dist/mathml/layout-stretch.d.cts +24 -0
  109. package/dist/mathml/layout-stretch.d.ts +24 -0
  110. package/dist/mathml/layout-stretch.js +2 -0
  111. package/dist/mathml/layout-types.d.cts +1 -12
  112. package/dist/mathml/layout-types.d.ts +1 -12
  113. package/dist/mathml/layout.cjs +3 -525
  114. package/dist/mathml/layout.d.cts +2 -2
  115. package/dist/mathml/layout.d.ts +2 -2
  116. package/dist/mathml/layout.js +1 -523
  117. package/dist/odb/formula/evaluate.d.cts +1 -1
  118. package/dist/odb/formula/evaluate.d.ts +1 -1
  119. package/dist/odb/report/render.d.cts +1 -1
  120. package/dist/odb/report/render.d.ts +1 -1
  121. package/dist/odb/report/source.cjs +2 -2
  122. package/dist/odb/report/source.d.cts +1 -1
  123. package/dist/odb/report/source.d.ts +1 -1
  124. package/dist/odb/report/source.js +1 -1
  125. package/dist/odb/sql/evaluate-columns.cjs +122 -0
  126. package/dist/odb/sql/evaluate-columns.d.cts +2 -0
  127. package/dist/odb/sql/evaluate-columns.d.ts +2 -0
  128. package/dist/odb/sql/evaluate-columns.js +114 -0
  129. package/dist/odb/sql/evaluate-predicates.cjs +16 -0
  130. package/dist/odb/sql/evaluate-predicates.d.cts +23 -0
  131. package/dist/odb/sql/evaluate-predicates.d.ts +23 -0
  132. package/dist/odb/sql/evaluate-predicates.js +2 -0
  133. package/dist/odb/sql/evaluate.cjs +7 -556
  134. package/dist/odb/sql/evaluate.d.cts +2 -2
  135. package/dist/odb/sql/evaluate.d.ts +2 -2
  136. package/dist/odb/sql/evaluate.js +2 -552
  137. package/dist/read-BSH--XB4.js +682 -0
  138. package/dist/read-CahCZMwG.cjs +759 -0
  139. package/dist/reconstruct-BKOCAedo.d.ts +29 -0
  140. package/dist/reconstruct-D4TEteZ6.d.cts +29 -0
  141. package/dist/reconstruct-lines-B7t66ICm.d.cts +33 -0
  142. package/dist/reconstruct-lines-B7t66ICm.d.ts +33 -0
  143. package/dist/reconstruct-presentations-prod-B5fkPiRZ.js +1256 -0
  144. package/dist/reconstruct-presentations-prod-X315aBmI.cjs +1375 -0
  145. package/dist/sheets-BQCpNXsE.cjs +700 -0
  146. package/dist/sheets-DWDvGN-g.js +545 -0
  147. package/dist/svg/read-geometry.cjs +10 -0
  148. package/dist/svg/read-geometry.d.cts +24 -0
  149. package/dist/svg/read-geometry.d.ts +24 -0
  150. package/dist/svg/read-geometry.js +2 -0
  151. package/dist/svg/read.cjs +6 -680
  152. package/dist/svg/read.d.cts +17 -2
  153. package/dist/svg/read.d.ts +17 -2
  154. package/dist/svg/read.js +2 -679
  155. package/dist/symbols-BlzXfLEe.d.cts +16 -0
  156. package/dist/symbols-CKm2r4D0.d.ts +16 -0
  157. package/dist/table-B5gSMY7w.js +649 -0
  158. package/dist/{table-DrE6jEWv.d.cts → table-BK_Ao-Y6.d.cts} +9 -1
  159. package/dist/{table-B5htMG3g.d.ts → table-CxY85YUj.d.ts} +9 -1
  160. package/dist/table-DqUIOSPV.cjs +840 -0
  161. package/dist/temml-1-I9N9DD.d.cts +25 -0
  162. package/dist/temml-1-I9N9DD.d.ts +25 -0
  163. package/package.json +1 -1
@@ -1,545 +1,11 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_model_geometry = require("../model/geometry.cjs");
3
- const require_mathml_layout = require("../mathml/layout.cjs");
4
- const require_layout_text_layout = require("./text-layout.cjs");
5
- const require_layout_shared = require("./shared.cjs");
6
- const require_ports_abort = require("../ports/abort.cjs");
7
- let document_schema_js = require("document-schema.js");
8
- //#region src/layout/sheets.ts
9
- const PERCENT_SCALE = 100;
10
- function anchoredFormulas(sheet) {
11
- const resolved = [];
12
- for (const object of sheet.embeddedObjects ?? []) {
13
- const anchored = resolveAnchoredFormula(object);
14
- if (anchored !== void 0) resolved.push(anchored);
15
- }
16
- return resolved;
17
- }
18
- function resolveAnchoredFormula(object) {
19
- if (object.objectKind !== "formula" || object.document.kind !== "formula" || object.document.formula.mathml.length === 0) return;
20
- const { anchorRow, anchorColumn, offsetXPt, offsetYPt } = object;
21
- if (anchorRow === void 0 || anchorColumn === void 0 || offsetXPt === void 0 || offsetYPt === void 0) return;
22
- return {
23
- formula: object.document.formula,
24
- anchorRow,
25
- anchorColumn,
26
- offsetXPt,
27
- offsetYPt,
28
- frame: object.frame
29
- };
30
- }
31
- const DEFAULT_COLUMN_WIDTH_PT = 64;
32
- const DEFAULT_ROW_HEIGHT_PT = 15;
33
- const NOMINAL_CELL_TEXT_SIZE_PT = 10;
34
- const HEADER_LABEL_SIZE_PT = 8;
35
- const CELL_TEXT_PADDING_PT = 2;
36
- const HEADER_LABEL_PADDING_PT = 2;
37
- const MINIMUM_SCALE = .01;
38
- const NUMERIC_OVERFLOW_TEXT = "###";
39
- const GRIDLINE_COLOR = (0, document_schema_js.rgbHexToColor)("#D0D0D0");
40
- const GRIDLINE_WIDTH_PT = .5;
41
- const HEADER_LABEL_COLOR = (0, document_schema_js.rgbHexToColor)("#606060");
42
- function resolvePrintRange(sheet, formulas) {
43
- if (sheet.printSettings.printRange !== void 0) return sheet.printSettings.printRange;
44
- if (sheet.cells.length === 0 && formulas.length === 0 && sheet.images.length === 0) return;
45
- let startRow = Number.POSITIVE_INFINITY;
46
- let startColumn = Number.POSITIVE_INFINITY;
47
- let endRow = Number.NEGATIVE_INFINITY;
48
- let endColumn = Number.NEGATIVE_INFINITY;
49
- for (const cell of sheet.cells) {
50
- startRow = Math.min(startRow, cell.row);
51
- startColumn = Math.min(startColumn, cell.column);
52
- endRow = Math.max(endRow, cell.row + (cell.rowSpan ?? 1) - 1);
53
- endColumn = Math.max(endColumn, cell.column + (cell.colSpan ?? 1) - 1);
54
- }
55
- for (const formula of formulas) {
56
- startRow = Math.min(startRow, formula.anchorRow);
57
- startColumn = Math.min(startColumn, formula.anchorColumn);
58
- endRow = Math.max(endRow, formula.anchorRow);
59
- endColumn = Math.max(endColumn, formula.anchorColumn);
60
- }
61
- for (const image of sheet.images) {
62
- startRow = Math.min(startRow, image.anchorRow);
63
- startColumn = Math.min(startColumn, image.anchorColumn);
64
- endRow = Math.max(endRow, image.anchorRow);
65
- endColumn = Math.max(endColumn, image.anchorColumn);
66
- }
67
- return {
68
- startRow,
69
- startColumn,
70
- endRow,
71
- endColumn
72
- };
73
- }
74
- function resolveAxis(entries, start, end, defaultSizePt) {
75
- const sorted = [...entries].sort((a, b) => a.index - b.index);
76
- const resolved = [];
77
- let pointer = 0;
78
- let currentSizePt = defaultSizePt;
79
- let currentHidden = false;
80
- for (let index = start; index <= end; index++) {
81
- while (pointer < sorted.length && sorted[pointer].index <= index) {
82
- currentSizePt = sorted[pointer].sizePt ?? defaultSizePt;
83
- currentHidden = sorted[pointer].hidden ?? false;
84
- pointer++;
85
- }
86
- resolved.push({
87
- index,
88
- sizePt: currentHidden ? 0 : currentSizePt,
89
- hidden: currentHidden
90
- });
91
- }
92
- return resolved;
93
- }
94
- function computeHeaderGutter(printSettings, range, measurer) {
95
- if (!printSettings.headers) return {
96
- widthPt: 0,
97
- heightPt: 0
98
- };
99
- const widestRowLabel = String(range.endRow + 1);
100
- return {
101
- widthPt: measurer.widthOfTextAtSize(widestRowLabel, document_schema_js.DEFAULT_LAYOUT_FONT, HEADER_LABEL_SIZE_PT) + 4,
102
- heightPt: measurer.lineHeightAtSize(document_schema_js.DEFAULT_LAYOUT_FONT, HEADER_LABEL_SIZE_PT)
103
- };
104
- }
105
- function resolveScale(printSettings, availableWidthPt, availableHeightPt, totalContentWidthPt, totalContentHeightPt) {
106
- if (printSettings.scalePercent !== void 0) return Math.max(printSettings.scalePercent / PERCENT_SCALE, MINIMUM_SCALE);
107
- if (printSettings.fitToPages !== void 0) {
108
- const budgetWidthPt = availableWidthPt * printSettings.fitToPages.width;
109
- const budgetHeightPt = availableHeightPt * printSettings.fitToPages.height;
110
- const widthRatio = totalContentWidthPt > 0 ? budgetWidthPt / totalContentWidthPt : 1;
111
- const heightRatio = totalContentHeightPt > 0 ? budgetHeightPt / totalContentHeightPt : 1;
112
- return Math.max(Math.min(widthRatio, heightRatio, 1), MINIMUM_SCALE);
113
- }
114
- return 1;
115
- }
116
- function partitionIndices(indices, sizeOf, availablePt, manualBreaks) {
117
- const bands = [];
118
- let current = [];
119
- let currentSizePt = 0;
120
- for (const index of indices) {
121
- if (manualBreaks.has(index) && current.length > 0) {
122
- bands.push(current);
123
- current = [];
124
- currentSizePt = 0;
125
- }
126
- const sizePt = sizeOf(index);
127
- if (current.length > 0 && currentSizePt + sizePt > availablePt) {
128
- bands.push(current);
129
- current = [];
130
- currentSizePt = 0;
131
- }
132
- current.push(index);
133
- currentSizePt += sizePt;
134
- }
135
- if (current.length > 0) bands.push(current);
136
- return bands;
137
- }
138
- function cellStyledRuns(cell) {
139
- if (cell.runs !== void 0 && cell.runs.length > 0) {
140
- const runsWithNominalSize = cell.runs.map((run) => run.sizePt === void 0 ? {
141
- ...run,
142
- sizePt: 10
143
- } : run);
144
- return require_layout_shared.toStyledRuns(runsWithNominalSize);
145
- }
146
- return [{
147
- text: cell.displayText,
148
- font: document_schema_js.DEFAULT_LAYOUT_FONT,
149
- sizePt: 10,
150
- color: document_schema_js.COLOR_BLACK
151
- }];
152
- }
153
- function isNumericLikeValue(kind) {
154
- return kind === "number" || kind === "percentage" || kind === "currency" || kind === "date" || kind === "time" || kind === "dateTime";
155
- }
156
- function defaultAlignmentForValue(kind) {
157
- if (isNumericLikeValue(kind)) return "right";
158
- if (kind === "boolean" || kind === "error") return "center";
159
- return "left";
160
- }
161
- function isCellVisuallyEmpty(cell) {
162
- return cell === void 0 || cell.value.kind === "empty" && cell.displayText.length === 0;
163
- }
164
- function truncateFragmentsToWidth(fragments, measurer, maxWidthPt) {
165
- const result = [];
166
- for (const fragment of fragments) {
167
- if (fragment.xOffsetPt >= maxWidthPt) break;
168
- const remainingWidthPt = maxWidthPt - fragment.xOffsetPt;
169
- if (measurer.widthOfTextAtSize(fragment.text, fragment.font, fragment.sizePt) <= remainingWidthPt) {
170
- result.push(fragment);
171
- continue;
172
- }
173
- const chars = Array.from(fragment.text);
174
- let width = 0;
175
- let fitCount = 0;
176
- for (const char of chars) {
177
- const charWidthPt = measurer.widthOfTextAtSize(char, fragment.font, fragment.sizePt);
178
- if (width + charWidthPt > remainingWidthPt) break;
179
- width += charWidthPt;
180
- fitCount++;
181
- }
182
- if (fitCount > 0) result.push({
183
- ...fragment,
184
- text: chars.slice(0, fitCount).join("")
185
- });
186
- break;
187
- }
188
- return result;
189
- }
190
- function buildPositionedAxis(repeatIndices, repeatSizePtOf, bandIndices, bandSizePtOf) {
191
- const indices = [...repeatIndices, ...bandIndices];
192
- const sizesPt = [...repeatIndices.map(repeatSizePtOf), ...bandIndices.map(bandSizePtOf)];
193
- const offsetsPt = [0];
194
- let running = 0;
195
- for (const size of sizesPt) {
196
- running += size;
197
- offsetsPt.push(running);
198
- }
199
- return {
200
- indices,
201
- sizesPt,
202
- offsetsPt,
203
- positionByIndex: new Map(indices.map((index, position) => [index, position]))
204
- };
205
- }
206
- function axisSpanSizePt(axis, startIndex, span) {
207
- const startPosition = axis.positionByIndex.get(startIndex);
208
- if (startPosition === void 0) return 0;
209
- return require_layout_shared.sumColumnWidthsPt(axis.sizesPt, startPosition, span);
210
- }
211
- function resolveCellFrame(cell, columnAxis, rowAxis, gridLeftXPt, gridTopYDownPt) {
212
- const columnPosition = columnAxis.positionByIndex.get(cell.column);
213
- const rowPosition = rowAxis.positionByIndex.get(cell.row);
214
- if (columnPosition === void 0 || rowPosition === void 0) return;
215
- return {
216
- xPt: gridLeftXPt + columnAxis.offsetsPt[columnPosition],
217
- yPt: gridTopYDownPt + rowAxis.offsetsPt[rowPosition],
218
- widthPt: axisSpanSizePt(columnAxis, cell.column, cell.colSpan ?? 1),
219
- heightPt: axisSpanSizePt(rowAxis, cell.row, cell.rowSpan ?? 1)
220
- };
221
- }
222
- function renderCellBackground(cell, frameYDown, pageHeightPt, out) {
223
- if (cell.background === void 0) return;
224
- const fill = (0, document_schema_js.resolveCellFillColor)(cell.background);
225
- if (fill === void 0) return;
226
- const flipped = require_model_geometry.flipY(frameYDown, pageHeightPt);
227
- out.push({
228
- kind: "rect",
229
- xPt: flipped.xPt,
230
- yPt: flipped.yPt,
231
- widthPt: flipped.widthPt,
232
- heightPt: flipped.heightPt,
233
- fill,
234
- sourcePath: cell.sourcePath
235
- });
236
- }
237
- const DEFAULT_CELL_VERTICAL_ALIGNMENT = "bottom";
238
- function verticalLineTopYDownPt(verticalAlignment, cellTopYDownPt, cellHeightPt, lineHeightPt) {
239
- if (verticalAlignment === "top") return cellTopYDownPt + CELL_TEXT_PADDING_PT;
240
- if (verticalAlignment === "middle") return cellTopYDownPt + Math.max(CELL_TEXT_PADDING_PT, (cellHeightPt - lineHeightPt) / 2);
241
- return cellTopYDownPt + Math.max(CELL_TEXT_PADDING_PT, cellHeightPt - CELL_TEXT_PADDING_PT - lineHeightPt);
242
- }
243
- function renderCellText(cell, frameYDown, pageIndex, rowCells, columnAxis, pageHeightPt, measurer, out) {
244
- const { xPt: xLeftPt, yPt: yTopDownPt, widthPt: ownWidthPt, heightPt } = frameYDown;
245
- const alignment = cell.alignment ?? defaultAlignmentForValue(cell.value.kind);
246
- const numericLike = isNumericLikeValue(cell.value.kind);
247
- const styledRuns = cellStyledRuns(cell);
248
- const lines = require_layout_text_layout.wrapRunsToWidth(styledRuns, measurer, Number.POSITIVE_INFINITY);
249
- const naturalLine = lines[0];
250
- let availableWidthPt = Math.max(0, ownWidthPt - 4);
251
- let fragments = naturalLine.fragments;
252
- let lineWidthPt = naturalLine.widthPt;
253
- let overflowed = false;
254
- if (lineWidthPt > availableWidthPt) {
255
- overflowed = true;
256
- if (numericLike) {
257
- const overflowRuns = [{
258
- text: NUMERIC_OVERFLOW_TEXT,
259
- font: styledRuns[0].font,
260
- sizePt: styledRuns[0].sizePt,
261
- color: styledRuns[0].color
262
- }];
263
- const overflowLine = require_layout_text_layout.wrapRunsToWidth(overflowRuns, measurer, Number.POSITIVE_INFINITY)[0];
264
- fragments = overflowLine.fragments;
265
- lineWidthPt = overflowLine.widthPt;
266
- } else if (cell.value.kind === "string") {
267
- let spillColumn = cell.column + (cell.colSpan ?? 1);
268
- while (lineWidthPt > availableWidthPt) {
269
- const neighborPosition = columnAxis.positionByIndex.get(spillColumn);
270
- if (neighborPosition === void 0 || !isCellVisuallyEmpty(rowCells?.get(spillColumn))) break;
271
- availableWidthPt += columnAxis.sizesPt[neighborPosition];
272
- spillColumn++;
273
- }
274
- if (lineWidthPt > availableWidthPt) fragments = truncateFragmentsToWidth(fragments, measurer, availableWidthPt);
275
- } else fragments = truncateFragmentsToWidth(fragments, measurer, availableWidthPt);
276
- }
277
- const alignOffsetPt = require_layout_shared.alignmentOffsetPt(alignment, availableWidthPt, lineWidthPt);
278
- const textStartXPt = xLeftPt + CELL_TEXT_PADDING_PT + alignOffsetPt;
279
- const lineHeightPt = require_layout_shared.lineNaturalHeightPt(naturalLine, measurer, styledRuns[0]);
280
- const baselineYDownPt = verticalLineTopYDownPt(cell.verticalAlignment ?? DEFAULT_CELL_VERTICAL_ALIGNMENT, yTopDownPt, heightPt, lineHeightPt) + naturalLine.ascentPt;
281
- const justifyGapsPt = alignment === "justify" && !overflowed && lines.length > 1 ? require_layout_shared.justifyLineGapsPt(naturalLine, availableWidthPt, measurer) : void 0;
282
- fragments.forEach((fragment, fragmentIndex) => {
283
- const textItem = {
284
- kind: "text",
285
- text: fragment.text,
286
- xPt: textStartXPt + fragment.xOffsetPt + (justifyGapsPt?.[fragmentIndex] ?? 0),
287
- yPt: pageHeightPt - baselineYDownPt,
288
- font: fragment.font,
289
- sizePt: fragment.sizePt,
290
- color: fragment.color,
291
- underline: fragment.underline,
292
- sourcePath: fragment.sourcePath
293
- };
294
- out.push(textItem);
295
- require_layout_shared.stampFragmentFrame(cell.runs ?? [], fragment, pageIndex, textItem, measurer, naturalLine);
296
- });
297
- }
298
- function renderHeaderLabels(gutter, columnAxis, rowAxis, gridLeftXPt, gridTopYDownPt, pageHeightPt, measurer, out) {
299
- const lineHeightPt = measurer.lineHeightAtSize(document_schema_js.DEFAULT_LAYOUT_FONT, HEADER_LABEL_SIZE_PT);
300
- const ascentPt = measurer.ascenderAtSize(document_schema_js.DEFAULT_LAYOUT_FONT, HEADER_LABEL_SIZE_PT);
301
- columnAxis.indices.forEach((columnIndex, position) => {
302
- const label = (0, document_schema_js.columnIndexToLetters)(columnIndex);
303
- const widthPt = columnAxis.sizesPt[position];
304
- const labelWidthPt = measurer.widthOfTextAtSize(label, document_schema_js.DEFAULT_LAYOUT_FONT, HEADER_LABEL_SIZE_PT);
305
- const xPt = gridLeftXPt + columnAxis.offsetsPt[position] + require_layout_shared.alignmentOffsetPt("center", widthPt, labelWidthPt);
306
- const baselineYDownPt = gridTopYDownPt - gutter.heightPt + (gutter.heightPt - lineHeightPt) / 2 + ascentPt;
307
- out.push({
308
- kind: "text",
309
- text: label,
310
- xPt,
311
- yPt: pageHeightPt - baselineYDownPt,
312
- font: document_schema_js.DEFAULT_LAYOUT_FONT,
313
- sizePt: HEADER_LABEL_SIZE_PT,
314
- color: HEADER_LABEL_COLOR
315
- });
316
- });
317
- rowAxis.indices.forEach((rowIndex, position) => {
318
- const label = String(rowIndex + 1);
319
- const heightPt = rowAxis.sizesPt[position];
320
- const labelWidthPt = measurer.widthOfTextAtSize(label, document_schema_js.DEFAULT_LAYOUT_FONT, HEADER_LABEL_SIZE_PT);
321
- const xPt = gridLeftXPt - gutter.widthPt + Math.max(HEADER_LABEL_PADDING_PT, gutter.widthPt - HEADER_LABEL_PADDING_PT - labelWidthPt);
322
- const baselineYDownPt = gridTopYDownPt + rowAxis.offsetsPt[position] + Math.max(0, (heightPt - lineHeightPt) / 2) + ascentPt;
323
- out.push({
324
- kind: "text",
325
- text: label,
326
- xPt,
327
- yPt: pageHeightPt - baselineYDownPt,
328
- font: document_schema_js.DEFAULT_LAYOUT_FONT,
329
- sizePt: HEADER_LABEL_SIZE_PT,
330
- color: HEADER_LABEL_COLOR
331
- });
332
- });
333
- }
334
- function renderGridlines(gridLeftXPt, gridTopYDownPt, gridWidthPt, gridHeightPt, columnOffsetsPt, rowOffsetsPt, pageHeightPt, out) {
335
- for (const offsetPt of columnOffsetsPt) {
336
- const xPt = gridLeftXPt + offsetPt;
337
- const line = {
338
- kind: "line",
339
- x1Pt: xPt,
340
- y1Pt: pageHeightPt - gridTopYDownPt,
341
- x2Pt: xPt,
342
- y2Pt: pageHeightPt - (gridTopYDownPt + gridHeightPt),
343
- color: GRIDLINE_COLOR,
344
- widthPt: GRIDLINE_WIDTH_PT
345
- };
346
- out.push(line);
347
- }
348
- for (const offsetPt of rowOffsetsPt) {
349
- const yDownPt = gridTopYDownPt + offsetPt;
350
- const line = {
351
- kind: "line",
352
- x1Pt: gridLeftXPt,
353
- y1Pt: pageHeightPt - yDownPt,
354
- x2Pt: gridLeftXPt + gridWidthPt,
355
- y2Pt: pageHeightPt - yDownPt,
356
- color: GRIDLINE_COLOR,
357
- widthPt: GRIDLINE_WIDTH_PT
358
- };
359
- out.push(line);
360
- }
361
- }
362
- function renderAnchoredFormulas(formulas, columnAxis, rowAxis, gridLeftXPt, gridTopYDownPt, pageHeightPt, pageIndex, hiddenColumnIndices, hiddenRowIndices, out, mathMetricsAt) {
363
- for (const anchored of formulas) {
364
- const columnPosition = columnAxis.positionByIndex.get(anchored.anchorColumn);
365
- const rowPosition = rowAxis.positionByIndex.get(anchored.anchorRow);
366
- if (columnPosition === void 0 || rowPosition === void 0 || hiddenColumnIndices.has(anchored.anchorColumn) || hiddenRowIndices.has(anchored.anchorRow)) continue;
367
- const sizePt = require_layout_shared.formulaSizePtForFrame(anchored.formula.mathml, anchored.frame, mathMetricsAt);
368
- const metrics = mathMetricsAt(sizePt);
369
- const { box } = require_mathml_layout.layoutFormula(anchored.formula.mathml, {
370
- metrics,
371
- sizePt,
372
- color: document_schema_js.COLOR_BLACK
373
- });
374
- const boxYDown = {
375
- xPt: gridLeftXPt + columnAxis.offsetsPt[columnPosition] + anchored.offsetXPt,
376
- yPt: gridTopYDownPt + rowAxis.offsetsPt[rowPosition] + anchored.offsetYPt,
377
- widthPt: box.widthPt,
378
- heightPt: box.heightPt
379
- };
380
- const flipped = require_model_geometry.flipY(boxYDown, pageHeightPt);
381
- out.push({
382
- pageIndex,
383
- xPt: flipped.xPt,
384
- yPt: flipped.yPt,
385
- box
386
- });
387
- }
388
- }
389
- function renderAnchoredImages(sheetImages, columnAxis, rowAxis, gridLeftXPt, gridTopYDownPt, pageHeightPt, pageIndex, hiddenColumnIndices, hiddenRowIndices, out, images) {
390
- for (const image of sheetImages) {
391
- const columnPosition = columnAxis.positionByIndex.get(image.anchorColumn);
392
- const rowPosition = rowAxis.positionByIndex.get(image.anchorRow);
393
- if (columnPosition === void 0 || rowPosition === void 0 || hiddenColumnIndices.has(image.anchorColumn) || hiddenRowIndices.has(image.anchorRow)) continue;
394
- const imageId = require_layout_shared.registerImage(image, images);
395
- const boxYDown = {
396
- xPt: gridLeftXPt + columnAxis.offsetsPt[columnPosition] + image.offsetXPt,
397
- yPt: gridTopYDownPt + rowAxis.offsetsPt[rowPosition] + image.offsetYPt,
398
- widthPt: image.widthPt,
399
- heightPt: image.heightPt
400
- };
401
- const flipped = require_model_geometry.flipY(boxYDown, pageHeightPt);
402
- const imageItem = {
403
- kind: "image",
404
- imageId,
405
- xPt: flipped.xPt,
406
- yPt: flipped.yPt,
407
- widthPt: image.widthPt,
408
- heightPt: image.heightPt,
409
- sourcePath: image.sourcePath
410
- };
411
- out.push(imageItem);
412
- require_layout_shared.stampFrame(image, pageIndex, {
413
- xPt: imageItem.xPt,
414
- yPt: imageItem.yPt,
415
- widthPt: imageItem.widthPt,
416
- heightPt: imageItem.heightPt
417
- });
418
- }
419
- }
420
- function bandableIndices(start, end, repeat) {
421
- const indices = [];
422
- for (let i = start; i <= end; i++) {
423
- if (repeat !== void 0 && i >= repeat.start && i <= repeat.end) continue;
424
- indices.push(i);
425
- }
426
- return indices;
427
- }
428
- function rangeIndices(start, end) {
429
- const indices = [];
430
- for (let i = start; i <= end; i++) indices.push(i);
431
- return indices;
432
- }
433
- function convertSheetToPages(sheet, measurer, signal, out, formulasOut, images, mathMetricsAt) {
434
- require_ports_abort.throwIfAborted(signal);
435
- const formulas = anchoredFormulas(sheet);
436
- const range = resolvePrintRange(sheet, formulas);
437
- if (range === void 0) return;
438
- const { printSettings } = sheet;
439
- const { pageSize, margins } = printSettings;
440
- const pageContentWidthPt = Math.max(0, pageSize.widthPt - margins.leftPt - margins.rightPt);
441
- const pageContentHeightPt = Math.max(0, pageSize.heightPt - margins.topPt - margins.bottomPt);
442
- const columnEntries = resolveAxis(sheet.columns.map((c) => ({
443
- index: c.index,
444
- sizePt: c.widthPt,
445
- hidden: c.hidden
446
- })), range.startColumn, range.endColumn, DEFAULT_COLUMN_WIDTH_PT);
447
- const rowEntries = resolveAxis(sheet.rows.map((r) => ({
448
- index: r.index,
449
- sizePt: r.heightPt,
450
- hidden: r.hidden
451
- })), range.startRow, range.endRow, DEFAULT_ROW_HEIGHT_PT);
452
- const columnSizeByIndex = new Map(columnEntries.map((e) => [e.index, e.sizePt]));
453
- const rowSizeByIndex = new Map(rowEntries.map((e) => [e.index, e.sizePt]));
454
- const hiddenColumnIndices = new Set(columnEntries.filter((e) => e.hidden).map((e) => e.index));
455
- const hiddenRowIndices = new Set(rowEntries.filter((e) => e.hidden).map((e) => e.index));
456
- const gutter = computeHeaderGutter(printSettings, range, measurer);
457
- const repeatColumns = printSettings.repeatColumns;
458
- const repeatRows = printSettings.repeatRows;
459
- const repeatColumnIndices = repeatColumns === void 0 ? [] : rangeIndices(repeatColumns.start, repeatColumns.end);
460
- const repeatRowIndices = repeatRows === void 0 ? [] : rangeIndices(repeatRows.start, repeatRows.end);
461
- const repeatColumnsWidthPt = repeatColumnIndices.reduce((sum, i) => sum + (columnSizeByIndex.get(i) ?? 0), 0);
462
- const repeatRowsHeightPt = repeatRowIndices.reduce((sum, i) => sum + (rowSizeByIndex.get(i) ?? 0), 0);
463
- const bandableColumnIndices = bandableIndices(range.startColumn, range.endColumn, repeatColumns);
464
- const bandableRowIndices = bandableIndices(range.startRow, range.endRow, repeatRows);
465
- const availableWidthPt = Math.max(0, pageContentWidthPt - gutter.widthPt - repeatColumnsWidthPt);
466
- const availableHeightPt = Math.max(0, pageContentHeightPt - gutter.heightPt - repeatRowsHeightPt);
467
- const scale = resolveScale(printSettings, availableWidthPt, availableHeightPt, bandableColumnIndices.reduce((sum, i) => sum + (columnSizeByIndex.get(i) ?? 0), 0), bandableRowIndices.reduce((sum, i) => sum + (rowSizeByIndex.get(i) ?? 0), 0));
468
- const descaledAvailableWidthPt = availableWidthPt / scale;
469
- const descaledAvailableHeightPt = availableHeightPt / scale;
470
- const manualBreakColumns = new Set(printSettings.manualBreaks?.columns ?? []);
471
- const manualBreakRows = new Set(printSettings.manualBreaks?.rows ?? []);
472
- require_ports_abort.throwIfAborted(signal);
473
- const columnBands = partitionIndices(bandableColumnIndices, (i) => columnSizeByIndex.get(i) ?? 0, descaledAvailableWidthPt, manualBreakColumns);
474
- const rowBands = partitionIndices(bandableRowIndices, (i) => rowSizeByIndex.get(i) ?? 0, descaledAvailableHeightPt, manualBreakRows);
475
- const cellsByRow = /* @__PURE__ */ new Map();
476
- for (const cell of sheet.cells) {
477
- let row = cellsByRow.get(cell.row);
478
- if (row === void 0) {
479
- row = /* @__PURE__ */ new Map();
480
- cellsByRow.set(cell.row, row);
481
- }
482
- row.set(cell.column, cell);
483
- }
484
- const scaledSizeOf = (sizeByIndex) => (index) => (sizeByIndex.get(index) ?? 0) * scale;
485
- const unscaledSizeOf = (sizeByIndex) => (index) => sizeByIndex.get(index) ?? 0;
486
- const bandPairs = printSettings.pageOrder === "overThenDown" ? rowBands.flatMap((rowBand) => columnBands.map((columnBand) => ({
487
- columnBand,
488
- rowBand
489
- }))) : columnBands.flatMap((columnBand) => rowBands.map((rowBand) => ({
490
- columnBand,
491
- rowBand
492
- })));
493
- for (const { columnBand, rowBand } of bandPairs) {
494
- require_ports_abort.throwIfAborted(signal);
495
- const columnAxis = buildPositionedAxis(repeatColumnIndices, unscaledSizeOf(columnSizeByIndex), columnBand, scaledSizeOf(columnSizeByIndex));
496
- const rowAxis = buildPositionedAxis(repeatRowIndices, unscaledSizeOf(rowSizeByIndex), rowBand, scaledSizeOf(rowSizeByIndex));
497
- const gridLeftXPt = margins.leftPt + gutter.widthPt;
498
- const gridTopYDownPt = margins.topPt + gutter.heightPt;
499
- const gridWidthPt = columnAxis.offsetsPt[columnAxis.offsetsPt.length - 1];
500
- const gridHeightPt = rowAxis.offsetsPt[rowAxis.offsetsPt.length - 1];
501
- const backgroundItems = [];
502
- const borderItems = [];
503
- const textItems = [];
504
- for (const rowIndex of rowAxis.indices) {
505
- const rowCells = cellsByRow.get(rowIndex);
506
- if (rowCells === void 0) continue;
507
- for (const [columnIndex, cell] of rowCells) {
508
- require_ports_abort.throwIfAborted(signal);
509
- if (!columnAxis.positionByIndex.has(columnIndex) || hiddenColumnIndices.has(columnIndex) || hiddenRowIndices.has(cell.row)) continue;
510
- const cellFrame = resolveCellFrame(cell, columnAxis, rowAxis, gridLeftXPt, gridTopYDownPt);
511
- if (cellFrame === void 0) continue;
512
- require_layout_shared.stampFrame(cell, out.length, require_model_geometry.flipY(cellFrame, pageSize.heightPt));
513
- renderCellBackground(cell, cellFrame, pageSize.heightPt, backgroundItems);
514
- if (cell.borders !== void 0) require_layout_shared.pushCellBorderLines(cell.borders, cellFrame, pageSize.heightPt, cell.sourcePath, borderItems);
515
- renderCellText(cell, cellFrame, out.length, rowCells, columnAxis, pageSize.heightPt, measurer, textItems);
516
- }
517
- }
518
- const items = [...backgroundItems];
519
- if (printSettings.gridlines) renderGridlines(gridLeftXPt, gridTopYDownPt, gridWidthPt, gridHeightPt, columnAxis.offsetsPt, rowAxis.offsetsPt, pageSize.heightPt, items);
520
- items.push(...borderItems);
521
- if (printSettings.headers) renderHeaderLabels(gutter, columnAxis, rowAxis, gridLeftXPt, gridTopYDownPt, pageSize.heightPt, measurer, items);
522
- items.push(...textItems);
523
- renderAnchoredFormulas(formulas, columnAxis, rowAxis, gridLeftXPt, gridTopYDownPt, pageSize.heightPt, out.length, hiddenColumnIndices, hiddenRowIndices, formulasOut, mathMetricsAt);
524
- renderAnchoredImages(sheet.images, columnAxis, rowAxis, gridLeftXPt, gridTopYDownPt, pageSize.heightPt, out.length, hiddenColumnIndices, hiddenRowIndices, items, images);
525
- out.push({
526
- widthPt: pageSize.widthPt,
527
- heightPt: pageSize.heightPt,
528
- items
529
- });
530
- }
531
- }
532
- function convertSpreadsheetToLayout(doc, options) {
533
- const pages = [];
534
- const formulas = [];
535
- const images = {};
536
- for (const sheet of doc.sheets) convertSheetToPages(sheet, options.measurer, options.signal, pages, formulas, images, options.mathMetricsAt);
537
- return {
538
- document: require_layout_shared.layoutDocumentOf(doc.metadata, pages, images),
539
- formulas,
540
- pages: require_layout_shared.packagePagesOf(pages)
541
- };
542
- }
543
- //#endregion
544
- exports.NOMINAL_CELL_TEXT_SIZE_PT = NOMINAL_CELL_TEXT_SIZE_PT;
545
- exports.convertSpreadsheetToLayout = convertSpreadsheetToLayout;
2
+ const require_sheets = require("../sheets-BQCpNXsE.cjs");
3
+ exports.CELL_TEXT_PADDING_PT = require_sheets.CELL_TEXT_PADDING_PT;
4
+ exports.GRIDLINE_COLOR = require_sheets.GRIDLINE_COLOR;
5
+ exports.GRIDLINE_WIDTH_PT = require_sheets.GRIDLINE_WIDTH_PT;
6
+ exports.HEADER_LABEL_COLOR = require_sheets.HEADER_LABEL_COLOR;
7
+ exports.HEADER_LABEL_PADDING_PT = require_sheets.HEADER_LABEL_PADDING_PT;
8
+ exports.HEADER_LABEL_SIZE_PT = require_sheets.HEADER_LABEL_SIZE_PT;
9
+ exports.NOMINAL_CELL_TEXT_SIZE_PT = require_sheets.NOMINAL_CELL_TEXT_SIZE_PT;
10
+ exports.NUMERIC_OVERFLOW_TEXT = require_sheets.NUMERIC_OVERFLOW_TEXT;
11
+ exports.convertSpreadsheetToLayout = require_sheets.convertSpreadsheetToLayout;
@@ -1,4 +1,4 @@
1
- import { ContentDocument, MathFontMetrics, PageSize, PositionedFormula, TextMeasurer } from "document-schema.js";
1
+ import { Color, ContentDocument, MathFontMetrics, PageSize, PositionedFormula, TextMeasurer } from "document-schema.js";
2
2
  import { LayoutDocument } from "pdf-codec";
3
3
  //#region src/layout/sheets.d.ts
4
4
  interface SheetsLayoutOptions {
@@ -15,6 +15,17 @@ type SpreadsheetContentDocument = Extract<ContentDocument, {
15
15
  kind: "spreadsheet";
16
16
  }>;
17
17
  declare const NOMINAL_CELL_TEXT_SIZE_PT = 10;
18
+ declare const HEADER_LABEL_SIZE_PT = 8;
19
+ declare const CELL_TEXT_PADDING_PT = 2;
20
+ declare const HEADER_LABEL_PADDING_PT = 2;
21
+ declare const NUMERIC_OVERFLOW_TEXT = "###";
22
+ declare const GRIDLINE_COLOR: Color;
23
+ declare const GRIDLINE_WIDTH_PT = 0.5;
24
+ declare const HEADER_LABEL_COLOR: Color;
25
+ interface HeaderGutter {
26
+ readonly widthPt: number;
27
+ readonly heightPt: number;
28
+ }
18
29
  declare function convertSpreadsheetToLayout(doc: SpreadsheetContentDocument, options: SheetsLayoutOptions): SpreadsheetLayoutResult;
19
30
  //#endregion
20
- export { NOMINAL_CELL_TEXT_SIZE_PT, SheetsLayoutOptions, SpreadsheetLayoutResult, convertSpreadsheetToLayout };
31
+ export { CELL_TEXT_PADDING_PT, GRIDLINE_COLOR, GRIDLINE_WIDTH_PT, HEADER_LABEL_COLOR, HEADER_LABEL_PADDING_PT, HEADER_LABEL_SIZE_PT, HeaderGutter, NOMINAL_CELL_TEXT_SIZE_PT, NUMERIC_OVERFLOW_TEXT, SheetsLayoutOptions, SpreadsheetLayoutResult, convertSpreadsheetToLayout };
@@ -1,4 +1,4 @@
1
- import { ContentDocument, MathFontMetrics, PageSize, PositionedFormula, TextMeasurer } from "document-schema.js";
1
+ import { Color, ContentDocument, MathFontMetrics, PageSize, PositionedFormula, TextMeasurer } from "document-schema.js";
2
2
  import { LayoutDocument } from "pdf-codec";
3
3
  //#region src/layout/sheets.d.ts
4
4
  interface SheetsLayoutOptions {
@@ -15,6 +15,17 @@ type SpreadsheetContentDocument = Extract<ContentDocument, {
15
15
  kind: "spreadsheet";
16
16
  }>;
17
17
  declare const NOMINAL_CELL_TEXT_SIZE_PT = 10;
18
+ declare const HEADER_LABEL_SIZE_PT = 8;
19
+ declare const CELL_TEXT_PADDING_PT = 2;
20
+ declare const HEADER_LABEL_PADDING_PT = 2;
21
+ declare const NUMERIC_OVERFLOW_TEXT = "###";
22
+ declare const GRIDLINE_COLOR: Color;
23
+ declare const GRIDLINE_WIDTH_PT = 0.5;
24
+ declare const HEADER_LABEL_COLOR: Color;
25
+ interface HeaderGutter {
26
+ readonly widthPt: number;
27
+ readonly heightPt: number;
28
+ }
18
29
  declare function convertSpreadsheetToLayout(doc: SpreadsheetContentDocument, options: SheetsLayoutOptions): SpreadsheetLayoutResult;
19
30
  //#endregion
20
- export { NOMINAL_CELL_TEXT_SIZE_PT, SheetsLayoutOptions, SpreadsheetLayoutResult, convertSpreadsheetToLayout };
31
+ export { CELL_TEXT_PADDING_PT, GRIDLINE_COLOR, GRIDLINE_WIDTH_PT, HEADER_LABEL_COLOR, HEADER_LABEL_PADDING_PT, HEADER_LABEL_SIZE_PT, HeaderGutter, NOMINAL_CELL_TEXT_SIZE_PT, NUMERIC_OVERFLOW_TEXT, SheetsLayoutOptions, SpreadsheetLayoutResult, convertSpreadsheetToLayout };