reamkit 1.32.0 → 1.33.0
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/README.md +5 -4
- package/dist/esm/core/bidi/algorithm.js +2 -2
- package/dist/esm/core/bidi/char-types.js +1 -1
- package/dist/esm/core/bidi/index.js +3 -3
- package/dist/esm/core/bytes.js +1 -1
- package/dist/esm/core/converter/facade.js +3 -2
- package/dist/esm/core/converter/ream.js +12 -5
- package/dist/esm/core/crypto/asn1.js +2 -2
- package/dist/esm/core/crypto/cms.js +5 -3
- package/dist/esm/core/crypto/index.js +2 -1
- package/dist/esm/core/crypto/offcrypto.js +64 -19
- package/dist/esm/core/crypto/primitives.js +16 -16
- package/dist/esm/core/document-model/index.d.ts +1 -1
- package/dist/esm/core/document-model/types.d.ts +174 -2
- package/dist/esm/core/drawingml/chart-geometry.d.ts +45 -17
- package/dist/esm/core/drawingml/chart-geometry.js +1090 -257
- package/dist/esm/core/drawingml/chart-parser.d.ts +24 -1
- package/dist/esm/core/drawingml/chart-parser.js +334 -41
- package/dist/esm/core/drawingml/chart-text.d.ts +41 -0
- package/dist/esm/core/drawingml/chart-text.js +93 -0
- package/dist/esm/core/drawingml/colors.js +5 -5
- package/dist/esm/core/drawingml/diagram/layout-engine.js +1 -4
- package/dist/esm/core/drawingml/diagram/run.js +2 -1
- package/dist/esm/core/drawingml/preset-geometry.js +4 -6
- package/dist/esm/core/drawingml/shape-render.js +1 -1
- package/dist/esm/core/drawingml/text-warp.js +4 -16
- package/dist/esm/core/drawingml/theme-parser.js +14 -8
- package/dist/esm/core/font/arabic-joining.js +2 -2
- package/dist/esm/core/font/binary-reader.js +2 -0
- package/dist/esm/core/font/font-registry.js +1 -0
- package/dist/esm/core/font/ligatures.js +1 -1
- package/dist/esm/core/font/opentype-layout.js +11 -5
- package/dist/esm/core/font/ttf-build.js +6 -10
- package/dist/esm/core/font/ttf-parser.js +2 -1
- package/dist/esm/core/font/ttf-subset.js +8 -8
- package/dist/esm/core/fonts/families.js +1 -1
- package/dist/esm/core/fonts/remote-fonts.js +4 -4
- package/dist/esm/core/hyphenation/index.js +1 -1
- package/dist/esm/core/images.js +8 -8
- package/dist/esm/core/ir/loss.js +1 -0
- package/dist/esm/core/line-breaker/cjk.js +1 -1
- package/dist/esm/core/line-breaker/index.js +4 -3
- package/dist/esm/core/links.js +1 -1
- package/dist/esm/core/lzw.js +1 -1
- package/dist/esm/core/metafile/blit.js +1 -1
- package/dist/esm/core/metafile/emf.js +5 -7
- package/dist/esm/core/metafile/picture.js +1 -1
- package/dist/esm/core/metafile/symbol-fonts.js +7 -7
- package/dist/esm/core/metafile/wmf.js +5 -7
- package/dist/esm/core/number-format.d.ts +40 -15
- package/dist/esm/core/number-format.js +284 -79
- package/dist/esm/core/numbering/index.js +3 -2
- package/dist/esm/core/ole/cfb.js +4 -4
- package/dist/esm/core/ole/escher-blip.js +1 -1
- package/dist/esm/core/opc/index.js +5 -4
- package/dist/esm/core/opc/package.js +3 -1
- package/dist/esm/core/opc/tag-scan.d.ts +15 -0
- package/dist/esm/core/opc/tag-scan.js +41 -0
- package/dist/esm/core/opc/xml-entities.js +40 -3
- package/dist/esm/core/outline.js +1 -1
- package/dist/esm/core/png-encode.js +3 -3
- package/dist/esm/core/po-helpers.js +1 -1
- package/dist/esm/core/spreadsheet-model/types.d.ts +6 -0
- package/dist/esm/core/style-cascade/index.js +4 -3
- package/dist/esm/core/tiff.js +3 -1
- package/dist/esm/excel/activex-parser.js +1 -1
- package/dist/esm/excel/conditional-format.js +7 -7
- package/dist/esm/excel/formula/functions.js +45 -18
- package/dist/esm/excel/formula/index.js +3 -3
- package/dist/esm/excel/formula/lexer.js +2 -2
- package/dist/esm/excel/formula/parser.js +4 -3
- package/dist/esm/excel/formula/value.js +1 -1
- package/dist/esm/excel/index.js +7 -6
- package/dist/esm/excel/print-model.js +18 -7
- package/dist/esm/excel/printer-settings.js +6 -7
- package/dist/esm/excel/rich-value.js +1 -1
- package/dist/esm/excel/sheet-shape-parser.js +4 -2
- package/dist/esm/excel/sheet-to-flow.js +13 -11
- package/dist/esm/excel/styles-parser.js +5 -3
- package/dist/esm/excel/tint.js +5 -5
- package/dist/esm/excel/vml-drawing.js +3 -3
- package/dist/esm/excel/worksheet-parser.js +5 -5
- package/dist/esm/excel/xls/biff-chart.js +1 -3
- package/dist/esm/excel/xls/biff-reader.js +10 -11
- package/dist/esm/excel/xls/xls-reader.js +1 -1
- package/dist/esm/excel/xlsx-reader.js +56 -9
- package/dist/esm/excel/xlsx-to-pdf.js +1 -1
- package/dist/esm/excel/xlsx-writer.js +2 -2
- package/dist/esm/html/html-writer.js +18 -10
- package/dist/esm/layout/line-paint.js +1 -1
- package/dist/esm/layout/math-layout.js +5 -8
- package/dist/esm/layout/styled-layout.js +104 -32
- package/dist/esm/layout/turned-section.js +2 -2
- package/dist/esm/markdown/markdown-writer.js +59 -8
- package/dist/esm/pdf/encryption.js +9 -9
- package/dist/esm/pdf/icc-profile.js +2 -2
- package/dist/esm/pdf/index.js +3 -2
- package/dist/esm/pdf/objects.js +7 -0
- package/dist/esm/pdf/serialize.js +1 -1
- package/dist/esm/pdf/struct-tree.js +3 -1
- package/dist/esm/pdf/styled-page-emitter.js +23 -15
- package/dist/esm/pdf/styled-page-renderer.js +9 -5
- package/dist/esm/pdf-reader/annot-draw.js +5 -5
- package/dist/esm/pdf-reader/annots.js +3 -1
- package/dist/esm/pdf-reader/ccitt.js +2 -1
- package/dist/esm/pdf-reader/cff-outline.js +1 -4
- package/dist/esm/pdf-reader/content.js +13 -15
- package/dist/esm/pdf-reader/decrypt.js +5 -4
- package/dist/esm/pdf-reader/document.js +6 -2
- package/dist/esm/pdf-reader/encodings.js +1 -1
- package/dist/esm/pdf-reader/flow-build.js +4 -6
- package/dist/esm/pdf-reader/font.js +4 -4
- package/dist/esm/pdf-reader/function.js +8 -7
- package/dist/esm/pdf-reader/icc.js +1 -1
- package/dist/esm/pdf-reader/images.js +1 -1
- package/dist/esm/pdf-reader/jbig2.js +36 -38
- package/dist/esm/pdf-reader/jpeg.js +14 -13
- package/dist/esm/pdf-reader/layout.js +13 -10
- package/dist/esm/pdf-reader/lexer.js +2 -1
- package/dist/esm/pdf-reader/math-rows.js +2 -2
- package/dist/esm/pdf-reader/optional-content.js +1 -1
- package/dist/esm/pdf-reader/page-numbers.js +1 -1
- package/dist/esm/pdf-reader/pattern-tint.js +1 -2
- package/dist/esm/pdf-reader/reader.js +2 -2
- package/dist/esm/pdf-reader/struct-tree.js +1 -1
- package/dist/esm/pdf-reader/tagged.js +3 -2
- package/dist/esm/pdf-reader/text.js +2 -2
- package/dist/esm/pdf-reader/type1-outline.js +1 -3
- package/dist/esm/pptx/embedded-fonts.js +3 -5
- package/dist/esm/pptx/placeholder-cascade.js +1 -1
- package/dist/esm/pptx/ppt/ppt-reader.js +5 -4
- package/dist/esm/pptx/ppt/ppt-text.js +9 -10
- package/dist/esm/pptx/pptx-reader.js +6 -5
- package/dist/esm/pptx/preset-table-styles.js +1 -1
- package/dist/esm/pptx/slide-parser.js +6 -4
- package/dist/esm/pptx/sp-helpers.js +1 -1
- package/dist/esm/pptx/table-style.js +2 -1
- package/dist/esm/svg/svg-writer.js +1 -1
- package/dist/esm/word/doc/doc-reader.js +2 -2
- package/dist/esm/word/doc/doc-text.js +20 -22
- package/dist/esm/word/document-parser.js +27 -22
- package/dist/esm/word/docx-reader.js +15 -10
- package/dist/esm/word/docx-to-pdf.js +6 -6
- package/dist/esm/word/docx-writer.js +10 -6
- package/dist/esm/word/drawing-parser.js +18 -18
- package/dist/esm/word/font-table.js +90 -11
- package/dist/esm/word/index.js +6 -5
- package/dist/esm/word/numbering-parser.js +5 -4
- package/dist/esm/word/omml-parser.js +1 -1
- package/dist/esm/word/paragraph-properties.js +11 -10
- package/dist/esm/word/run-properties.js +4 -4
- package/dist/esm/word/settings-parser.js +2 -1
- package/dist/esm/word/shading.js +1 -1
- package/dist/esm/word/styles-parser.js +5 -4
- package/dist/esm/word/table-parser.js +4 -4
- package/dist/esm/word/theme-fonts.js +1 -1
- package/package.json +10 -4
|
@@ -65,12 +65,13 @@ function reconstructByLayout(file, mode = "flow") {
|
|
|
65
65
|
const art = pages.map((page, i) => {
|
|
66
66
|
const raw = collectPageImages(file, page);
|
|
67
67
|
const images = placeImages(raw.images, shown[i]);
|
|
68
|
-
const
|
|
68
|
+
const covered = images.map((img) => ({
|
|
69
69
|
minX: img.x,
|
|
70
70
|
minY: img.y,
|
|
71
71
|
maxX: img.x + img.widthPt,
|
|
72
72
|
maxY: img.y + img.heightPt
|
|
73
|
-
}))
|
|
73
|
+
}));
|
|
74
|
+
const lifted = collectPageVectors(file, page, covered);
|
|
74
75
|
return {
|
|
75
76
|
images,
|
|
76
77
|
imageLosses: raw.losses,
|
|
@@ -252,7 +253,8 @@ function reconstructByLayout(file, mode = "flow") {
|
|
|
252
253
|
};
|
|
253
254
|
/** A figure's parts in the order the page painted them, its words over its drawing. */
|
|
254
255
|
const figureMembers = (figure) => {
|
|
255
|
-
const
|
|
256
|
+
const painted = [...figure.vectors].sort((a, b) => compareOrder(a.orderKey, b.orderKey));
|
|
257
|
+
const drawn = [...joinLetters(painted).map((v) => ({
|
|
256
258
|
key: v.orderKey,
|
|
257
259
|
member: vectorMember(v)
|
|
258
260
|
})), ...figure.images.map((img) => ({
|
|
@@ -366,7 +368,7 @@ function reconstructByLayout(file, mode = "flow") {
|
|
|
366
368
|
if (cells.some((c) => c.lines.length === 0)) return void 0;
|
|
367
369
|
const top = Math.max(...cells.map((c) => c.lines[0].y));
|
|
368
370
|
const edge = above ?? {
|
|
369
|
-
y: Math.max(...cells.map((c) => c.lines[0].y + .
|
|
371
|
+
y: Math.max(...cells.map((c) => c.lines[0].y + .96 * c.lines[0].fontSize)),
|
|
370
372
|
lineHeight: 0
|
|
371
373
|
};
|
|
372
374
|
const starts = cells.map((c, k) => k === 0 ? left : c.cell.from);
|
|
@@ -1585,7 +1587,7 @@ function inkSpan(runs) {
|
|
|
1585
1587
|
const last = marked[marked.length - 1];
|
|
1586
1588
|
const space = (r) => r.spaceWidthPt !== void 0 && r.spaceWidthPt > 0 ? r.spaceWidthPt : (r.fontSizePt || 10) * .25;
|
|
1587
1589
|
const lead = (/^\s*/u.exec(first.text)?.[0].length ?? 0) * space(first);
|
|
1588
|
-
const trail = (
|
|
1590
|
+
const trail = (last.text.length - last.text.trimEnd().length) * space(last);
|
|
1589
1591
|
const x = first.x + lead;
|
|
1590
1592
|
return {
|
|
1591
1593
|
x,
|
|
@@ -1850,7 +1852,7 @@ function continuesLeader(prev, run, fontSize) {
|
|
|
1850
1852
|
const dots = prev.text.endsWith(".") && run.text.startsWith(".");
|
|
1851
1853
|
return (isLeader(prev.text) && prev.text === run.text || dots) && run.x - prev.endX < (run.fontSizePt || fontSize) * CELL_GAP_EM;
|
|
1852
1854
|
}
|
|
1853
|
-
var LEADER_CHARS = new Set([
|
|
1855
|
+
var LEADER_CHARS = /* @__PURE__ */ new Set([
|
|
1854
1856
|
".",
|
|
1855
1857
|
"·",
|
|
1856
1858
|
"_",
|
|
@@ -2332,13 +2334,13 @@ function joinLines(lines) {
|
|
|
2332
2334
|
/** §17.3.3.29 — the hyphen that is a PLACE a word may break, not a hyphen. */
|
|
2333
2335
|
var SOFT_HYPHEN = "";
|
|
2334
2336
|
/** The hyphens that belong to the word they end. */
|
|
2335
|
-
var HYPHENS = new Set([
|
|
2337
|
+
var HYPHENS = /* @__PURE__ */ new Set([
|
|
2336
2338
|
"-",
|
|
2337
2339
|
"‐",
|
|
2338
2340
|
"‑"
|
|
2339
2341
|
]);
|
|
2340
2342
|
/** The dashes, en and em, that belong to the words either side where closed up to them. */
|
|
2341
|
-
var DASHES = new Set(["–", "—"]);
|
|
2343
|
+
var DASHES = /* @__PURE__ */ new Set(["–", "—"]);
|
|
2342
2344
|
/** How many lines' worth of indent still reads as a first line, not a placement. */
|
|
2343
2345
|
var INDENT_LINES = 3;
|
|
2344
2346
|
/** Where in the run of line starts the column's own left edge is looked for. */
|
|
@@ -3917,8 +3919,9 @@ function tableFrom(runs, gutters, edges, stepped) {
|
|
|
3917
3919
|
};
|
|
3918
3920
|
return [...above.map((row) => {
|
|
3919
3921
|
const y = Math.max(...row.map((r) => r.y));
|
|
3922
|
+
const size = Math.max(...row.map((r) => r.fontSizePt || fontSize));
|
|
3920
3923
|
return {
|
|
3921
|
-
el: paragraphFromRuns(lineOf(row, y,
|
|
3924
|
+
el: paragraphFromRuns(lineOf(row, y, size, stepped).spans),
|
|
3922
3925
|
top: y
|
|
3923
3926
|
};
|
|
3924
3927
|
}), {
|
|
@@ -4002,4 +4005,4 @@ var TABLE_ALIGNED_SHARE = .6;
|
|
|
4002
4005
|
*/
|
|
4003
4006
|
var TABLE_CELL_FILL = .65;
|
|
4004
4007
|
//#endregion
|
|
4005
|
-
export { FOOTER_PART, HEADER_PART, endedParagraph, footerBand, numberedFrom, numberingOf, pageTextEdges, reconstructByLayout, runningFoot, stepsBetweenWords };
|
|
4008
|
+
export { EVEN_FOOTER_PART, FOOTER_PART, HEADER_PART, drawnWords, endedParagraph, footerBand, numberedFrom, numberingOf, pageTextEdges, reconstructByLayout, runningFoot, stepsBetweenWords };
|
|
@@ -21,6 +21,7 @@ function hexVal(b) {
|
|
|
21
21
|
* read and assign it directly.
|
|
22
22
|
*/
|
|
23
23
|
var Lexer = class {
|
|
24
|
+
buf;
|
|
24
25
|
pos;
|
|
25
26
|
/**
|
|
26
27
|
* @param buf The PDF byte buffer to tokenize.
|
|
@@ -306,4 +307,4 @@ function latin1(bytes) {
|
|
|
306
307
|
return s;
|
|
307
308
|
}
|
|
308
309
|
//#endregion
|
|
309
|
-
export { Lexer };
|
|
310
|
+
export { Lexer, latin1 };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
//#region src/pdf-reader/math-rows.ts
|
|
2
2
|
/** The brackets a matrix may be written in, opening → closing. */
|
|
3
|
-
var BRACKETS = new Map([
|
|
3
|
+
var BRACKETS = /* @__PURE__ */ new Map([
|
|
4
4
|
["(", ")"],
|
|
5
5
|
["[", "]"],
|
|
6
6
|
["{", "}"],
|
|
@@ -94,7 +94,7 @@ function matrixFrom(cluster) {
|
|
|
94
94
|
endChr: pair.close.text.trim(),
|
|
95
95
|
children: [inside.matrix]
|
|
96
96
|
});
|
|
97
|
-
used = new Set([
|
|
97
|
+
used = /* @__PURE__ */ new Set([
|
|
98
98
|
...used,
|
|
99
99
|
...inside.used,
|
|
100
100
|
pair.open,
|
|
@@ -106,7 +106,7 @@ function sample(marks, cell) {
|
|
|
106
106
|
if (flat.some((m) => covers(m, px, py))) hit++;
|
|
107
107
|
}
|
|
108
108
|
}
|
|
109
|
-
return hit /
|
|
109
|
+
return hit / 2304;
|
|
110
110
|
}
|
|
111
111
|
/** Whether one mark paints the point — inside its outline, or under its pen. */
|
|
112
112
|
function covers(mark, px, py) {
|
|
@@ -182,7 +182,6 @@ function flatten(segs) {
|
|
|
182
182
|
]);
|
|
183
183
|
cx = sx;
|
|
184
184
|
cy = sy;
|
|
185
|
-
break;
|
|
186
185
|
}
|
|
187
186
|
return out;
|
|
188
187
|
}
|
|
@@ -151,7 +151,7 @@ function readingOf(file) {
|
|
|
151
151
|
var pdfReader = {
|
|
152
152
|
id: "pdf",
|
|
153
153
|
produces: "flow",
|
|
154
|
-
supports: new Set([
|
|
154
|
+
supports: /* @__PURE__ */ new Set([
|
|
155
155
|
FEATURES.text,
|
|
156
156
|
FEATURES.tables,
|
|
157
157
|
FEATURES.lists,
|
|
@@ -165,4 +165,4 @@ function isFilters(value) {
|
|
|
165
165
|
return typeof value === "object" && value !== null;
|
|
166
166
|
}
|
|
167
167
|
//#endregion
|
|
168
|
-
export { pdfReader };
|
|
168
|
+
export { pdfReader, readPdf };
|
|
@@ -123,7 +123,7 @@ function allMcids(node) {
|
|
|
123
123
|
* `Sub`), a formula (§14.8.4.5.5, which is set in a line as often as out of
|
|
124
124
|
* one), and a list label, which is the start of its item's line.
|
|
125
125
|
*/
|
|
126
|
-
var INLINE = new Set([
|
|
126
|
+
var INLINE = /* @__PURE__ */ new Set([
|
|
127
127
|
"Span",
|
|
128
128
|
"Quote",
|
|
129
129
|
"Reference",
|
|
@@ -43,12 +43,13 @@ function reconstructTaggedPdf(file) {
|
|
|
43
43
|
const placedRuns = turned ? extracted.map((runs, i) => placeRuns(runs, shown[i])) : onSheets;
|
|
44
44
|
const vectorLosses = [];
|
|
45
45
|
const pageVectors = pages.map((page, i) => {
|
|
46
|
-
const
|
|
46
|
+
const covered = collectPageImages(file, page).images.map((img) => ({
|
|
47
47
|
minX: img.x,
|
|
48
48
|
minY: img.y,
|
|
49
49
|
maxX: img.x + img.widthPt,
|
|
50
50
|
maxY: img.y + img.heightPt
|
|
51
|
-
}))
|
|
51
|
+
}));
|
|
52
|
+
const lifted = collectPageVectors(file, page, covered);
|
|
52
53
|
vectorLosses.push(...lifted.losses);
|
|
53
54
|
return placeVectors(lifted.vectors, shown[i]);
|
|
54
55
|
});
|
|
@@ -26,7 +26,7 @@ function extractPageText(file, page, painted) {
|
|
|
26
26
|
const runs = [];
|
|
27
27
|
collectRuns(file, page.resources, file.pageContent(page), IDENTITY, 0, /* @__PURE__ */ new Set(), runs, painted);
|
|
28
28
|
const own = runs.length;
|
|
29
|
-
for (const appearance of collectPageAppearances(file, page)) collectRuns(file, appearance.resources ?? page.resources, appearanceContent(file, appearance), appearance.ctm, 1, new Set([appearance.stream]), runs, painted);
|
|
29
|
+
for (const appearance of collectPageAppearances(file, page)) collectRuns(file, appearance.resources ?? page.resources, appearanceContent(file, appearance), appearance.ctm, 1, /* @__PURE__ */ new Set([appearance.stream]), runs, painted);
|
|
30
30
|
for (let i = own; i < runs.length; i++) runs[i] = {
|
|
31
31
|
...runs[i],
|
|
32
32
|
annotation: true
|
|
@@ -238,7 +238,7 @@ var ACCENT_LIFT_EM = .6;
|
|
|
238
238
|
/** How far, in ems, an accent must overlap its letter to stand over it. */
|
|
239
239
|
var ACCENT_OVERLAP_EM = .05;
|
|
240
240
|
/** The spacing accents TeX strikes over a letter, and the combining marks they are. */
|
|
241
|
-
var ACCENTS = new Map([
|
|
241
|
+
var ACCENTS = /* @__PURE__ */ new Map([
|
|
242
242
|
["`", "̀"],
|
|
243
243
|
["´", "́"],
|
|
244
244
|
["ˆ", "̂"],
|
|
@@ -9,13 +9,11 @@ var VARIANTS = [
|
|
|
9
9
|
["p:italic", "italic"],
|
|
10
10
|
["p:boldItalic", "boldItalic"]
|
|
11
11
|
];
|
|
12
|
-
var EOT_VERSIONS = new Set([
|
|
12
|
+
var EOT_VERSIONS = /* @__PURE__ */ new Set([
|
|
13
13
|
65536,
|
|
14
14
|
131073,
|
|
15
15
|
131074
|
|
16
16
|
]);
|
|
17
|
-
var TTEMBED_TTCOMPRESSED = 4;
|
|
18
|
-
var TTEMBED_XORENCRYPTDATA = 268435456;
|
|
19
17
|
/**
|
|
20
18
|
* Read one `fntdata` part: the font itself when the container stores it
|
|
21
19
|
* plainly, and what stopped it otherwise.
|
|
@@ -33,7 +31,7 @@ function readFntData(data) {
|
|
|
33
31
|
const version = v.getUint32(8, true);
|
|
34
32
|
const flags = v.getUint32(12, true);
|
|
35
33
|
if (eotSize !== data.length || !EOT_VERSIONS.has(version)) return { kind: "unreadable" };
|
|
36
|
-
if ((flags &
|
|
34
|
+
if ((flags & 268435460) !== 0) return { kind: "compressed" };
|
|
37
35
|
let at = 82;
|
|
38
36
|
for (let i = 0; i < 4; i++) {
|
|
39
37
|
if (at + 2 > data.length) return { kind: "unreadable" };
|
|
@@ -101,4 +99,4 @@ function isSfnt(data) {
|
|
|
101
99
|
return sig === 65536 || sig === 1330926671 || sig === 1953658213 || sig === 1953784678;
|
|
102
100
|
}
|
|
103
101
|
//#endregion
|
|
104
|
-
export { loadPptxEmbeddedFonts };
|
|
102
|
+
export { loadPptxEmbeddedFonts, readFntData };
|
|
@@ -317,4 +317,4 @@ function collectTxStyles(masterTree, colors, themeFonts) {
|
|
|
317
317
|
};
|
|
318
318
|
}
|
|
319
319
|
//#endregion
|
|
320
|
-
export { buildPlaceholderCascade, lineSpacing, parseBullet, parseLevelStyles, spacingFractions, spacingFromLineFraction };
|
|
320
|
+
export { buildPlaceholderCascade, lineSpacing, pPrToParagraphProps, parseBullet, parseLevelStyles, spacingFractions, spacingFromLineFraction };
|
|
@@ -48,10 +48,11 @@ function readPpt(bytes) {
|
|
|
48
48
|
const width = pt(content.slideWidthPt ?? DEFAULT_SLIDE_W);
|
|
49
49
|
const height = pt(content.slideHeightPt ?? DEFAULT_SLIDE_H);
|
|
50
50
|
const resources = new ResourceStore();
|
|
51
|
+
const body = buildBody(content, resources, width, height);
|
|
51
52
|
return {
|
|
52
53
|
doc: {
|
|
53
54
|
kind: "flow",
|
|
54
|
-
body: resolveBodyStyles(
|
|
55
|
+
body: resolveBodyStyles(body, EMPTY_STYLE_SHEET),
|
|
55
56
|
sections: [],
|
|
56
57
|
section: {
|
|
57
58
|
pageSize: {
|
|
@@ -249,7 +250,7 @@ function positionedImage(rect, image, resources) {
|
|
|
249
250
|
}
|
|
250
251
|
};
|
|
251
252
|
}
|
|
252
|
-
var SHAPE_PRESETS = new Map([
|
|
253
|
+
var SHAPE_PRESETS = /* @__PURE__ */ new Map([
|
|
253
254
|
[1, "rect"],
|
|
254
255
|
[2, "roundRect"],
|
|
255
256
|
[3, "ellipse"],
|
|
@@ -523,9 +524,9 @@ function anchorParagraph(breakBefore) {
|
|
|
523
524
|
var pptReader = {
|
|
524
525
|
id: "ppt",
|
|
525
526
|
produces: "flow",
|
|
526
|
-
supports: new Set([FEATURES.text]),
|
|
527
|
+
supports: /* @__PURE__ */ new Set([FEATURES.text]),
|
|
527
528
|
sniff: looksLikePpt,
|
|
528
529
|
read: (bytes) => readPpt(bytes)
|
|
529
530
|
};
|
|
530
531
|
//#endregion
|
|
531
|
-
export { pptReader };
|
|
532
|
+
export { pptReader, readPpt };
|
|
@@ -84,7 +84,6 @@ var SLIDE_FLAG_MASTER_SCHEME = 2;
|
|
|
84
84
|
var COLORREF_SCHEME_INDEX = 8;
|
|
85
85
|
var COLORREF_SYS_INDEX = 16;
|
|
86
86
|
var FBSE_FODELAY_OFFSET = 28;
|
|
87
|
-
var FSP_FLAG_PATRIARCH = 4;
|
|
88
87
|
var FSP_FLAG_BACKGROUND = 1024;
|
|
89
88
|
var TOKEN_ENCRYPTED = 4090610911;
|
|
90
89
|
var SLWT_INSTANCE_SLIDES = 0;
|
|
@@ -157,7 +156,7 @@ function extractPptContent(bytes) {
|
|
|
157
156
|
const docRec = docOffset !== void 0 ? recordAt(stream, docOffset) : findDocument(stream);
|
|
158
157
|
const noImages = {
|
|
159
158
|
foDelays: [],
|
|
160
|
-
pictures: new Uint8Array(0)
|
|
159
|
+
pictures: /* @__PURE__ */ new Uint8Array(0)
|
|
161
160
|
};
|
|
162
161
|
if (!docRec || docRec.type !== RT_DOCUMENT) return {
|
|
163
162
|
slides: slidesByScan(stream, noImages),
|
|
@@ -165,7 +164,7 @@ function extractPptContent(bytes) {
|
|
|
165
164
|
};
|
|
166
165
|
const img = {
|
|
167
166
|
foDelays: parseFbseStore(docRec.data),
|
|
168
|
-
pictures: cfb.readStream("Pictures") ?? new Uint8Array(0)
|
|
167
|
+
pictures: cfb.readStream("Pictures") ?? /* @__PURE__ */ new Uint8Array(0)
|
|
169
168
|
};
|
|
170
169
|
const slides = readSlideList(stream, docRec.data, persist, img);
|
|
171
170
|
const hasContent = slides.some(slideHasContent);
|
|
@@ -369,7 +368,7 @@ function parseFbseStore(docData) {
|
|
|
369
368
|
const store = findDescendantContainer(group, FBT_BSTORE_CONTAINER, 0);
|
|
370
369
|
if (!store) return [];
|
|
371
370
|
const foDelays = [];
|
|
372
|
-
for (const r of records(store)) if (r.type === FBT_BSE) foDelays.push(r.data.length >=
|
|
371
|
+
for (const r of records(store)) if (r.type === FBT_BSE) foDelays.push(r.data.length >= 32 ? u32(r.data, FBSE_FODELAY_OFFSET) : 0);
|
|
373
372
|
return foDelays;
|
|
374
373
|
}
|
|
375
374
|
function findDescendantContainer(d, type, depth) {
|
|
@@ -464,7 +463,7 @@ function collectShapeContainers(d, img, out, depth, env, outline, defaults, grou
|
|
|
464
463
|
...pictureTransparentHex !== void 0 ? { transparentHex: pictureTransparentHex } : {}
|
|
465
464
|
} : void 0;
|
|
466
465
|
const textParas = gtext ?? (paragraphs?.some((p) => paragraphText(p).length > 0) === true ? paragraphs : void 0) ? gtext ? [gtext] : paragraphs : void 0;
|
|
467
|
-
const decorative = (fspFlags &
|
|
466
|
+
const decorative = (fspFlags & 1029) === 0;
|
|
468
467
|
const autoShape = !gtext && !image && rectPt && (shapeType > 0 || geometry) && decorative && (fillColorHex || lineColorHex || fillImage) ? {
|
|
469
468
|
shapeType,
|
|
470
469
|
...fillColorHex ? { fillColorHex } : {},
|
|
@@ -567,7 +566,7 @@ function readMasterLevels(d, levels, prefix, fonts) {
|
|
|
567
566
|
off
|
|
568
567
|
};
|
|
569
568
|
}
|
|
570
|
-
var TEXT_TYPE_FALLBACK = new Map([
|
|
569
|
+
var TEXT_TYPE_FALLBACK = /* @__PURE__ */ new Map([
|
|
571
570
|
[5, 1],
|
|
572
571
|
[6, 0],
|
|
573
572
|
[7, 1],
|
|
@@ -813,8 +812,8 @@ function inlineBlip(blob) {
|
|
|
813
812
|
return bytes ? { bytes } : void 0;
|
|
814
813
|
}
|
|
815
814
|
var PATTERN_TILE_PT = {
|
|
816
|
-
widthPt:
|
|
817
|
-
heightPt:
|
|
815
|
+
widthPt: 6,
|
|
816
|
+
heightPt: 6
|
|
818
817
|
};
|
|
819
818
|
/**
|
|
820
819
|
* §2.3.7.1 MSOFILLTYPE 1 — the picture a PATTERN fill repeats.
|
|
@@ -952,7 +951,7 @@ function optComplex(d, count, wantId) {
|
|
|
952
951
|
offset += len;
|
|
953
952
|
}
|
|
954
953
|
}
|
|
955
|
-
var ARRAY_PROPS = new Set([
|
|
954
|
+
var ARRAY_PROPS = /* @__PURE__ */ new Set([
|
|
956
955
|
325,
|
|
957
956
|
326,
|
|
958
957
|
327,
|
|
@@ -1077,7 +1076,7 @@ function parseFreeformGeometry(d, count) {
|
|
|
1077
1076
|
commands
|
|
1078
1077
|
} : void 0;
|
|
1079
1078
|
}
|
|
1080
|
-
var SYS_COLORS = new Map([
|
|
1079
|
+
var SYS_COLORS = /* @__PURE__ */ new Map([
|
|
1081
1080
|
[5, "FFFFFF"],
|
|
1082
1081
|
[6, "000000"],
|
|
1083
1082
|
[7, "000000"],
|
|
@@ -6,9 +6,9 @@ import "../core/style-cascade/index.js";
|
|
|
6
6
|
import { poAttr, poChildren, poFindDescendant, poIntAttr, poIs } from "../core/po-helpers.js";
|
|
7
7
|
import { cachedDiagramTree, laidOutDiagramTree } from "../core/drawingml/diagram/run.js";
|
|
8
8
|
import { packageHasPart } from "../core/bytes.js";
|
|
9
|
+
import { parseTheme, parseThemeBgFillStyles, parseThemeFillStyles, parseThemeFonts, parseThemeLineWidths } from "../core/drawingml/theme-parser.js";
|
|
9
10
|
import { DEFAULT_SCHEME_ALIAS, DEFAULT_THEME_PALETTE, defaultColorResolver, makeColorResolver } from "../core/drawingml/colors.js";
|
|
10
11
|
import { parseChart, withChartColorStyle } from "../core/drawingml/chart-parser.js";
|
|
11
|
-
import { parseTheme, parseThemeBgFillStyles, parseThemeFillStyles, parseThemeFonts, parseThemeLineWidths } from "../core/drawingml/theme-parser.js";
|
|
12
12
|
import { OpcPackage } from "../core/opc/package.js";
|
|
13
13
|
import "../core/opc/index.js";
|
|
14
14
|
import { loadPptxEmbeddedFonts } from "./embedded-fonts.js";
|
|
@@ -497,7 +497,7 @@ function partShapes(pkg, path, tree, root, deps) {
|
|
|
497
497
|
const cSld = part ? poChildren(part).find((c) => poIs(c, "p:cSld")) : void 0;
|
|
498
498
|
const spTree = cSld ? poChildren(cSld).find((c) => poIs(c, "p:spTree")) : void 0;
|
|
499
499
|
if (!spTree) return [];
|
|
500
|
-
|
|
500
|
+
const ctx = {
|
|
501
501
|
colors: deps.colors,
|
|
502
502
|
...deps.themeFills ? { themeFills: deps.themeFills } : {},
|
|
503
503
|
...deps.themeLineWidths ? { themeLineWidths: deps.themeLineWidths } : {},
|
|
@@ -508,7 +508,8 @@ function partShapes(pkg, path, tree, root, deps) {
|
|
|
508
508
|
resolveHyperlink: makeHyperlinkResolver(pkg, path),
|
|
509
509
|
resolveDiagram: makeSlideDiagramResolver(pkg, path),
|
|
510
510
|
onLoss: deps.onLoss
|
|
511
|
-
}
|
|
511
|
+
};
|
|
512
|
+
return parseSlideShapes(spTree, ctx, void 0, true);
|
|
512
513
|
}
|
|
513
514
|
/**
|
|
514
515
|
* §19.3.1.38/§19.3.1.39 `@showMasterSp` — whether this part draws the shapes it
|
|
@@ -574,7 +575,7 @@ function themePart(pkg, masterPath) {
|
|
|
574
575
|
var pptxReader = {
|
|
575
576
|
id: "pptx",
|
|
576
577
|
produces: "flow",
|
|
577
|
-
supports: new Set([
|
|
578
|
+
supports: /* @__PURE__ */ new Set([
|
|
578
579
|
FEATURES.text,
|
|
579
580
|
FEATURES.images,
|
|
580
581
|
FEATURES.shapes,
|
|
@@ -585,4 +586,4 @@ var pptxReader = {
|
|
|
585
586
|
read: (bytes) => readPptx(bytes)
|
|
586
587
|
};
|
|
587
588
|
//#endregion
|
|
588
|
-
export { parseXml, pptxReader };
|
|
589
|
+
export { parseXml, pptxReader, readPptx };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { poAttr, poIs } from "../core/po-helpers.js";
|
|
2
2
|
//#region src/pptx/preset-table-styles.ts
|
|
3
3
|
/** The gallery styles this reader knows, by the GUID a table names. */
|
|
4
|
-
var PRESETS = new Map([
|
|
4
|
+
var PRESETS = /* @__PURE__ */ new Map([
|
|
5
5
|
["{5C22544A-7EE6-4342-B048-85BDC9FD1C3A}", "<a:tblStyle styleId=\"{5C22544A-7EE6-4342-B048-85BDC9FD1C3A}\" styleName=\"Medium Style 2 - Accent 1\"><a:wholeTbl><a:tcTxStyle><a:fontRef idx=\"minor\"><a:prstClr val=\"black\"/></a:fontRef><a:schemeClr val=\"dk1\"/></a:tcTxStyle><a:tcStyle><a:tcBdr><a:left><a:ln w=\"12700\" cmpd=\"sng\"><a:solidFill><a:schemeClr val=\"lt1\"/></a:solidFill></a:ln></a:left><a:right><a:ln w=\"12700\" cmpd=\"sng\"><a:solidFill><a:schemeClr val=\"lt1\"/></a:solidFill></a:ln></a:right><a:top><a:ln w=\"12700\" cmpd=\"sng\"><a:solidFill><a:schemeClr val=\"lt1\"/></a:solidFill></a:ln></a:top><a:bottom><a:ln w=\"12700\" cmpd=\"sng\"><a:solidFill><a:schemeClr val=\"lt1\"/></a:solidFill></a:ln></a:bottom><a:insideH><a:ln w=\"12700\" cmpd=\"sng\"><a:solidFill><a:schemeClr val=\"lt1\"/></a:solidFill></a:ln></a:insideH><a:insideV><a:ln w=\"12700\" cmpd=\"sng\"><a:solidFill><a:schemeClr val=\"lt1\"/></a:solidFill></a:ln></a:insideV></a:tcBdr><a:fill><a:solidFill><a:schemeClr val=\"accent1\"><a:tint val=\"20000\"/></a:schemeClr></a:solidFill></a:fill></a:tcStyle></a:wholeTbl><a:band1H><a:tcStyle><a:tcBdr/><a:fill><a:solidFill><a:schemeClr val=\"accent1\"><a:tint val=\"40000\"/></a:schemeClr></a:solidFill></a:fill></a:tcStyle></a:band1H><a:band2H><a:tcStyle><a:tcBdr/></a:tcStyle></a:band2H><a:band1V><a:tcStyle><a:tcBdr/><a:fill><a:solidFill><a:schemeClr val=\"accent1\"><a:tint val=\"40000\"/></a:schemeClr></a:solidFill></a:fill></a:tcStyle></a:band1V><a:band2V><a:tcStyle><a:tcBdr/></a:tcStyle></a:band2V><a:lastCol><a:tcTxStyle b=\"on\"><a:fontRef idx=\"minor\"><a:prstClr val=\"black\"/></a:fontRef><a:schemeClr val=\"lt1\"/></a:tcTxStyle><a:tcStyle><a:tcBdr/><a:fill><a:solidFill><a:schemeClr val=\"accent1\"/></a:solidFill></a:fill></a:tcStyle></a:lastCol><a:firstCol><a:tcTxStyle b=\"on\"><a:fontRef idx=\"minor\"><a:prstClr val=\"black\"/></a:fontRef><a:schemeClr val=\"lt1\"/></a:tcTxStyle><a:tcStyle><a:tcBdr/><a:fill><a:solidFill><a:schemeClr val=\"accent1\"/></a:solidFill></a:fill></a:tcStyle></a:firstCol><a:lastRow><a:tcTxStyle b=\"on\"><a:fontRef idx=\"minor\"><a:prstClr val=\"black\"/></a:fontRef><a:schemeClr val=\"lt1\"/></a:tcTxStyle><a:tcStyle><a:tcBdr><a:top><a:ln w=\"38100\" cmpd=\"sng\"><a:solidFill><a:schemeClr val=\"lt1\"/></a:solidFill></a:ln></a:top></a:tcBdr><a:fill><a:solidFill><a:schemeClr val=\"accent1\"/></a:solidFill></a:fill></a:tcStyle></a:lastRow><a:firstRow><a:tcTxStyle b=\"on\"><a:fontRef idx=\"minor\"><a:prstClr val=\"black\"/></a:fontRef><a:schemeClr val=\"lt1\"/></a:tcTxStyle><a:tcStyle><a:tcBdr><a:bottom><a:ln w=\"38100\" cmpd=\"sng\"><a:solidFill><a:schemeClr val=\"lt1\"/></a:solidFill></a:ln></a:bottom></a:tcBdr><a:fill><a:solidFill><a:schemeClr val=\"accent1\"/></a:solidFill></a:fill></a:tcStyle></a:firstRow></a:tblStyle>"],
|
|
6
6
|
["{073A0DAA-6AF3-43AB-8588-CEC1D06C72B9}", "<a:tblStyle styleId=\"{073A0DAA-6AF3-43AB-8588-CEC1D06C72B9}\" styleName=\"Medium Style 2\"><a:wholeTbl><a:tcTxStyle><a:fontRef idx=\"minor\"><a:prstClr val=\"black\"/></a:fontRef><a:schemeClr val=\"dk1\"/></a:tcTxStyle><a:tcStyle><a:tcBdr><a:left><a:ln w=\"12700\" cmpd=\"sng\"><a:solidFill><a:schemeClr val=\"lt1\"/></a:solidFill></a:ln></a:left><a:right><a:ln w=\"12700\" cmpd=\"sng\"><a:solidFill><a:schemeClr val=\"lt1\"/></a:solidFill></a:ln></a:right><a:top><a:ln w=\"12700\" cmpd=\"sng\"><a:solidFill><a:schemeClr val=\"lt1\"/></a:solidFill></a:ln></a:top><a:bottom><a:ln w=\"12700\" cmpd=\"sng\"><a:solidFill><a:schemeClr val=\"lt1\"/></a:solidFill></a:ln></a:bottom><a:insideH><a:ln w=\"12700\" cmpd=\"sng\"><a:solidFill><a:schemeClr val=\"lt1\"/></a:solidFill></a:ln></a:insideH><a:insideV><a:ln w=\"12700\" cmpd=\"sng\"><a:solidFill><a:schemeClr val=\"lt1\"/></a:solidFill></a:ln></a:insideV></a:tcBdr><a:fill><a:solidFill><a:schemeClr val=\"dk1\"><a:tint val=\"20000\"/></a:schemeClr></a:solidFill></a:fill></a:tcStyle></a:wholeTbl><a:band1H><a:tcStyle><a:tcBdr/><a:fill><a:solidFill><a:schemeClr val=\"dk1\"><a:tint val=\"40000\"/></a:schemeClr></a:solidFill></a:fill></a:tcStyle></a:band1H><a:band2H><a:tcStyle><a:tcBdr/></a:tcStyle></a:band2H><a:band1V><a:tcStyle><a:tcBdr/><a:fill><a:solidFill><a:schemeClr val=\"dk1\"><a:tint val=\"40000\"/></a:schemeClr></a:solidFill></a:fill></a:tcStyle></a:band1V><a:band2V><a:tcStyle><a:tcBdr/></a:tcStyle></a:band2V><a:lastCol><a:tcTxStyle b=\"on\"><a:fontRef idx=\"minor\"><a:prstClr val=\"black\"/></a:fontRef><a:schemeClr val=\"lt1\"/></a:tcTxStyle><a:tcStyle><a:tcBdr/><a:fill><a:solidFill><a:schemeClr val=\"dk1\"/></a:solidFill></a:fill></a:tcStyle></a:lastCol><a:firstCol><a:tcTxStyle b=\"on\"><a:fontRef idx=\"minor\"><a:prstClr val=\"black\"/></a:fontRef><a:schemeClr val=\"lt1\"/></a:tcTxStyle><a:tcStyle><a:tcBdr/><a:fill><a:solidFill><a:schemeClr val=\"dk1\"/></a:solidFill></a:fill></a:tcStyle></a:firstCol><a:lastRow><a:tcTxStyle b=\"on\"><a:fontRef idx=\"minor\"><a:prstClr val=\"black\"/></a:fontRef><a:schemeClr val=\"lt1\"/></a:tcTxStyle><a:tcStyle><a:tcBdr><a:top><a:ln w=\"38100\" cmpd=\"sng\"><a:solidFill><a:schemeClr val=\"lt1\"/></a:solidFill></a:ln></a:top></a:tcBdr><a:fill><a:solidFill><a:schemeClr val=\"dk1\"/></a:solidFill></a:fill></a:tcStyle></a:lastRow><a:firstRow><a:tcTxStyle b=\"on\"><a:fontRef idx=\"minor\"><a:prstClr val=\"black\"/></a:fontRef><a:schemeClr val=\"lt1\"/></a:tcTxStyle><a:tcStyle><a:tcBdr><a:bottom><a:ln w=\"38100\" cmpd=\"sng\"><a:solidFill><a:schemeClr val=\"lt1\"/></a:solidFill></a:ln></a:bottom></a:tcBdr><a:fill><a:solidFill><a:schemeClr val=\"dk1\"/></a:solidFill></a:fill></a:tcStyle></a:firstRow></a:tblStyle>"],
|
|
7
7
|
["{5940675A-B579-460E-94D1-54222C63F5DA}", "<a:tblStyle styleId=\"{5940675A-B579-460E-94D1-54222C63F5DA}\" styleName=\"No Style, Table Grid\"><a:wholeTbl><a:tcTxStyle><a:fontRef idx=\"minor\"><a:scrgbClr r=\"0\" g=\"0\" b=\"0\"/></a:fontRef><a:schemeClr val=\"tx1\"/></a:tcTxStyle><a:tcStyle><a:tcBdr><a:left><a:ln w=\"12700\" cmpd=\"sng\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill></a:ln></a:left><a:right><a:ln w=\"12700\" cmpd=\"sng\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill></a:ln></a:right><a:top><a:ln w=\"12700\" cmpd=\"sng\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill></a:ln></a:top><a:bottom><a:ln w=\"12700\" cmpd=\"sng\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill></a:ln></a:bottom><a:insideH><a:ln w=\"12700\" cmpd=\"sng\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill></a:ln></a:insideH><a:insideV><a:ln w=\"12700\" cmpd=\"sng\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill></a:ln></a:insideV></a:tcBdr><a:fill><a:noFill/></a:fill></a:tcStyle></a:wholeTbl></a:tblStyle>"],
|
|
@@ -165,7 +165,8 @@ function parseSp(sp, ctx, transform) {
|
|
|
165
165
|
const ownFill = stated(statesFill);
|
|
166
166
|
const styleFill = style ? styleRefFill(style, colors, themeStyles) : void 0;
|
|
167
167
|
const lentFill = lent(statesFill);
|
|
168
|
-
const
|
|
168
|
+
const resolved = useBgFill ? backgroundThrough(ctx.backgroundFill, box, ctx.slideSize) : ownFill ? parseFill(ownFill, colors, ctx.resolveImage) : styleFill && styleFill.kind !== "none" ? styleFill : lentFill ? parseFill(lentFill, colors, ctx.resolveImage) : spPr ? parseFill(spPr, colors, ctx.resolveImage) : { kind: "none" };
|
|
169
|
+
const styled = withStatedDirection(resolved, spPr);
|
|
169
170
|
const lineFrom = from((n) => poChildren(n).some((c) => poIs(c, "a:ln")));
|
|
170
171
|
let line = lineFrom ? parseLine(lineFrom, colors) : void 0;
|
|
171
172
|
if (style) {
|
|
@@ -894,12 +895,13 @@ function parseTable(tbl, colors, resolveTableStyle, theme) {
|
|
|
894
895
|
rows: rows.map((row, r) => ({
|
|
895
896
|
...row,
|
|
896
897
|
cells: row.cells.map((cell, c) => {
|
|
897
|
-
const
|
|
898
|
+
const at = {
|
|
898
899
|
row: r,
|
|
899
900
|
rowCount: rows.length,
|
|
900
901
|
col: c,
|
|
901
902
|
colCount: grid.length
|
|
902
|
-
}
|
|
903
|
+
};
|
|
904
|
+
const part = cellStyle(style, flags, at, colors, theme);
|
|
903
905
|
const tc = sources[r]?.[c];
|
|
904
906
|
return withCellStyle(cell, tc && cellSaysNoFill(tc) ? withoutFill(part) : part);
|
|
905
907
|
})
|
|
@@ -968,4 +970,4 @@ function cellFillHex(tcPr, colors) {
|
|
|
968
970
|
}
|
|
969
971
|
}
|
|
970
972
|
//#endregion
|
|
971
|
-
export { asBackdrop, backdropElement, diagramTransform, noDiagramOverrideLoss, parseBackgroundFill, parseDiagramNodes, parseGeometry, parseSlideShapes, parseTxBody };
|
|
973
|
+
export { asBackdrop, backdropElement, diagramTransform, noDiagramOverrideLoss, parseBackgroundFill, parseDiagramDrawing, parseDiagramNodes, parseGeometry, parseSlideShapes, parseTxBody };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { pt } from "../core/ir/units.js";
|
|
2
2
|
import { poAttr, poChildren, poIntAttr, poIs } from "../core/po-helpers.js";
|
|
3
|
-
import { resolveColorNode } from "../core/drawingml/colors.js";
|
|
4
3
|
import { resolveThemeFont } from "../core/drawingml/theme-parser.js";
|
|
4
|
+
import { resolveColorNode } from "../core/drawingml/colors.js";
|
|
5
5
|
//#region src/pptx/sp-helpers.ts
|
|
6
6
|
var isTrue = (v) => v === "1" || v === "true" || v === "on";
|
|
7
7
|
var NON_VISUAL = [
|
|
@@ -172,10 +172,11 @@ function refBorder(ref, colors, theme) {
|
|
|
172
172
|
const colorHex = colorOf(ref, colors);
|
|
173
173
|
if (colorHex === void 0) return void 0;
|
|
174
174
|
const idx = poIntAttr(ref, "idx");
|
|
175
|
+
const width = idx !== void 0 && idx > 0 ? theme?.lineWidths?.[idx - 1] : void 0;
|
|
175
176
|
return {
|
|
176
177
|
style: "single",
|
|
177
178
|
colorHex,
|
|
178
|
-
width: pt(
|
|
179
|
+
width: pt(width ?? .75)
|
|
179
180
|
};
|
|
180
181
|
}
|
|
181
182
|
/**
|
|
@@ -439,9 +439,9 @@ function alignmentFromJc(jc) {
|
|
|
439
439
|
var docReader = {
|
|
440
440
|
id: "doc",
|
|
441
441
|
produces: "flow",
|
|
442
|
-
supports: new Set([FEATURES.text]),
|
|
442
|
+
supports: /* @__PURE__ */ new Set([FEATURES.text]),
|
|
443
443
|
sniff: looksLikeDoc,
|
|
444
444
|
read: (bytes) => readDoc(bytes)
|
|
445
445
|
};
|
|
446
446
|
//#endregion
|
|
447
|
-
export { docReader };
|
|
447
|
+
export { docReader, readDoc };
|
|
@@ -61,7 +61,7 @@ var SPRA_LEN = [
|
|
|
61
61
|
0,
|
|
62
62
|
3
|
|
63
63
|
];
|
|
64
|
-
var SPRM_LONG_OPERAND = new Set([54792, 50701]);
|
|
64
|
+
var SPRM_LONG_OPERAND = /* @__PURE__ */ new Set([54792, 50701]);
|
|
65
65
|
var CELL_MARK = 7;
|
|
66
66
|
var FIELD_BEGIN = 19;
|
|
67
67
|
var FIELD_SEPARATOR = 20;
|
|
@@ -105,7 +105,7 @@ function readSectionPageSize(wd, table) {
|
|
|
105
105
|
function extractDocContent(bytes) {
|
|
106
106
|
const cfb = openCfb(bytes);
|
|
107
107
|
const wd = cfb.readStream("WordDocument");
|
|
108
|
-
if (!wd || wd.length <
|
|
108
|
+
if (!wd || wd.length < 426) return EMPTY;
|
|
109
109
|
if (u16(wd, 0) !== WIDENT) return EMPTY;
|
|
110
110
|
const flags = u16(wd, OFF_FLAGS1);
|
|
111
111
|
if ((flags & FLAG_ENCRYPTED) !== 0) return {
|
|
@@ -343,8 +343,8 @@ function parsePlcBte(wd, table, fcOff, lcbOff, parsePage) {
|
|
|
343
343
|
return out;
|
|
344
344
|
}
|
|
345
345
|
function parseChpxFkp(page, out) {
|
|
346
|
-
const crun = page[
|
|
347
|
-
if (crun === 0 || (crun + 1) * 4 + crun >
|
|
346
|
+
const crun = page[511];
|
|
347
|
+
if (crun === 0 || (crun + 1) * 4 + crun > 511) return;
|
|
348
348
|
for (let i = 0; i < crun; i++) {
|
|
349
349
|
const fcStart = u32(page, i * 4);
|
|
350
350
|
const fcEnd = u32(page, (i + 1) * 4);
|
|
@@ -364,8 +364,8 @@ function parseChpxFkp(page, out) {
|
|
|
364
364
|
}
|
|
365
365
|
}
|
|
366
366
|
function parsePapxFkp(page, out) {
|
|
367
|
-
const cpara = page[
|
|
368
|
-
if (cpara === 0 || (cpara + 1) * 4 + cpara * 13 >
|
|
367
|
+
const cpara = page[511];
|
|
368
|
+
if (cpara === 0 || (cpara + 1) * 4 + cpara * 13 > 511) return;
|
|
369
369
|
const bxBase = (cpara + 1) * 4;
|
|
370
370
|
for (let i = 0; i < cpara; i++) {
|
|
371
371
|
const fcStart = u32(page, i * 4);
|
|
@@ -409,9 +409,7 @@ function decodeChpxGrpprl(d) {
|
|
|
409
409
|
case SPRM_C_FSPEC:
|
|
410
410
|
fSpec = d[s.op] !== 0;
|
|
411
411
|
break;
|
|
412
|
-
case SPRM_C_PIC_LOCATION:
|
|
413
|
-
picOffset = u32(d, s.op);
|
|
414
|
-
break;
|
|
412
|
+
case SPRM_C_PIC_LOCATION: picOffset = u32(d, s.op);
|
|
415
413
|
}
|
|
416
414
|
return {
|
|
417
415
|
...bold !== void 0 ? { bold } : {},
|
|
@@ -496,9 +494,7 @@ function decodePapxGrpprl(d) {
|
|
|
496
494
|
if (shd.length > 0) cellShadings = shd;
|
|
497
495
|
break;
|
|
498
496
|
}
|
|
499
|
-
case SPRM_P_ILFO:
|
|
500
|
-
listIlfo = u16(d, s.op);
|
|
501
|
-
break;
|
|
497
|
+
case SPRM_P_ILFO: listIlfo = u16(d, s.op);
|
|
502
498
|
}
|
|
503
499
|
return {
|
|
504
500
|
...jc !== void 0 ? { jc } : {},
|
|
@@ -527,16 +523,18 @@ function* sprms(d) {
|
|
|
527
523
|
const spra = sprm >> 13;
|
|
528
524
|
let op = p;
|
|
529
525
|
let len = SPRA_LEN[spra];
|
|
530
|
-
if (spra === 6)
|
|
531
|
-
if (
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
526
|
+
if (spra === 6) {
|
|
527
|
+
if (SPRM_LONG_OPERAND.has(sprm)) {
|
|
528
|
+
if (p + 2 > d.length) break;
|
|
529
|
+
const cb = u16(d, p);
|
|
530
|
+
if (cb < 1) break;
|
|
531
|
+
len = cb - 1;
|
|
532
|
+
op = p + 2;
|
|
533
|
+
} else {
|
|
534
|
+
if (p >= d.length) break;
|
|
535
|
+
len = d[p];
|
|
536
|
+
op = p + 1;
|
|
537
|
+
}
|
|
540
538
|
}
|
|
541
539
|
if (op + len > d.length) break;
|
|
542
540
|
yield {
|