reamkit 1.32.1 → 1.33.1

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 (165) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +16 -11
  3. package/dist/esm/core/bidi/algorithm.js +2 -2
  4. package/dist/esm/core/bidi/char-types.js +1 -1
  5. package/dist/esm/core/bidi/index.js +3 -3
  6. package/dist/esm/core/bytes.js +1 -1
  7. package/dist/esm/core/converter/facade.js +10 -5
  8. package/dist/esm/core/converter/ream.d.ts +9 -0
  9. package/dist/esm/core/converter/ream.js +40 -10
  10. package/dist/esm/core/crypto/asn1.js +2 -2
  11. package/dist/esm/core/crypto/cms.js +5 -3
  12. package/dist/esm/core/crypto/index.js +2 -1
  13. package/dist/esm/core/crypto/offcrypto.d.ts +2 -5
  14. package/dist/esm/core/crypto/offcrypto.js +9 -15
  15. package/dist/esm/core/crypto/password-error.d.ts +8 -0
  16. package/dist/esm/core/crypto/password-error.js +14 -0
  17. package/dist/esm/core/crypto/primitives.js +16 -16
  18. package/dist/esm/core/document-model/index.d.ts +1 -1
  19. package/dist/esm/core/document-model/types.d.ts +174 -2
  20. package/dist/esm/core/drawingml/chart-geometry.d.ts +24 -6
  21. package/dist/esm/core/drawingml/chart-geometry.js +905 -208
  22. package/dist/esm/core/drawingml/chart-parser.d.ts +5 -1
  23. package/dist/esm/core/drawingml/chart-parser.js +275 -19
  24. package/dist/esm/core/drawingml/chart-text.d.ts +41 -0
  25. package/dist/esm/core/drawingml/chart-text.js +93 -0
  26. package/dist/esm/core/drawingml/colors.js +5 -5
  27. package/dist/esm/core/drawingml/diagram/layout-engine.js +1 -4
  28. package/dist/esm/core/drawingml/diagram/run.js +2 -1
  29. package/dist/esm/core/drawingml/preset-geometry.js +4 -6
  30. package/dist/esm/core/drawingml/shape-render.js +1 -1
  31. package/dist/esm/core/drawingml/text-warp.js +4 -16
  32. package/dist/esm/core/drawingml/theme-parser.js +14 -8
  33. package/dist/esm/core/font/arabic-joining.js +2 -2
  34. package/dist/esm/core/font/binary-reader.js +2 -0
  35. package/dist/esm/core/font/font-registry.js +1 -0
  36. package/dist/esm/core/font/ligatures.js +1 -1
  37. package/dist/esm/core/font/opentype-layout.js +11 -5
  38. package/dist/esm/core/font/ttf-build.js +6 -10
  39. package/dist/esm/core/font/ttf-parser.js +2 -1
  40. package/dist/esm/core/font/ttf-subset.js +8 -8
  41. package/dist/esm/core/fonts/families.js +1 -1
  42. package/dist/esm/core/fonts/remote-fonts.js +4 -4
  43. package/dist/esm/core/hyphenation/index.js +1 -1
  44. package/dist/esm/core/images.js +8 -8
  45. package/dist/esm/core/ir/adapters.d.ts +9 -0
  46. package/dist/esm/core/ir/loss.js +1 -0
  47. package/dist/esm/core/line-breaker/cjk.js +1 -1
  48. package/dist/esm/core/line-breaker/index.js +4 -3
  49. package/dist/esm/core/links.js +1 -1
  50. package/dist/esm/core/lzw.js +1 -1
  51. package/dist/esm/core/metafile/blit.js +1 -1
  52. package/dist/esm/core/metafile/emf.js +5 -7
  53. package/dist/esm/core/metafile/picture.js +1 -1
  54. package/dist/esm/core/metafile/symbol-fonts.js +7 -7
  55. package/dist/esm/core/metafile/wmf.js +5 -7
  56. package/dist/esm/core/number-format.js +4 -6
  57. package/dist/esm/core/numbering/index.js +3 -2
  58. package/dist/esm/core/ole/cfb.js +4 -4
  59. package/dist/esm/core/ole/escher-blip.js +1 -1
  60. package/dist/esm/core/opc/index.js +5 -4
  61. package/dist/esm/core/opc/package.js +3 -1
  62. package/dist/esm/core/opc/xml-entities.js +1 -1
  63. package/dist/esm/core/outline.js +1 -1
  64. package/dist/esm/core/png-encode.js +3 -3
  65. package/dist/esm/core/po-helpers.js +1 -1
  66. package/dist/esm/core/spreadsheet-model/types.d.ts +6 -0
  67. package/dist/esm/core/style-cascade/index.js +4 -3
  68. package/dist/esm/core/tiff.js +3 -1
  69. package/dist/esm/excel/activex-parser.js +1 -1
  70. package/dist/esm/excel/conditional-format.js +7 -7
  71. package/dist/esm/excel/formula/functions.js +8 -4
  72. package/dist/esm/excel/formula/index.js +3 -3
  73. package/dist/esm/excel/formula/lexer.js +2 -2
  74. package/dist/esm/excel/formula/parser.js +4 -3
  75. package/dist/esm/excel/formula/value.js +1 -1
  76. package/dist/esm/excel/index.js +7 -6
  77. package/dist/esm/excel/print-model.d.ts +1 -0
  78. package/dist/esm/excel/print-model.js +7 -32
  79. package/dist/esm/excel/printer-settings.js +6 -7
  80. package/dist/esm/excel/rich-value.js +1 -1
  81. package/dist/esm/excel/sheet-shape-parser.js +4 -2
  82. package/dist/esm/excel/sheet-to-flow.d.ts +8 -0
  83. package/dist/esm/excel/sheet-to-flow.js +14 -11
  84. package/dist/esm/excel/styles-parser.js +5 -3
  85. package/dist/esm/excel/tint.js +5 -5
  86. package/dist/esm/excel/vml-drawing.js +2 -2
  87. package/dist/esm/excel/worksheet-parser.js +5 -5
  88. package/dist/esm/excel/xls/biff-chart.js +1 -3
  89. package/dist/esm/excel/xls/biff-reader.js +10 -11
  90. package/dist/esm/excel/xls/xls-reader.js +1 -1
  91. package/dist/esm/excel/xlsx-reader.js +17 -4
  92. package/dist/esm/excel/xlsx-to-pdf.js +1 -1
  93. package/dist/esm/excel/xlsx-writer.js +2 -2
  94. package/dist/esm/html/html-writer.js +18 -10
  95. package/dist/esm/index.js +2 -1
  96. package/dist/esm/layout/line-paint.js +1 -1
  97. package/dist/esm/layout/math-layout.js +5 -8
  98. package/dist/esm/layout/styled-layout.js +133 -75
  99. package/dist/esm/layout/turned-section.js +2 -2
  100. package/dist/esm/markdown/markdown-writer.js +50 -9
  101. package/dist/esm/pdf/encryption.js +9 -9
  102. package/dist/esm/pdf/icc-profile.js +2 -2
  103. package/dist/esm/pdf/index.js +3 -2
  104. package/dist/esm/pdf/objects.js +7 -0
  105. package/dist/esm/pdf/serialize.js +1 -1
  106. package/dist/esm/pdf/struct-tree.js +3 -1
  107. package/dist/esm/pdf/styled-page-emitter.js +23 -15
  108. package/dist/esm/pdf/styled-page-renderer.js +9 -5
  109. package/dist/esm/pdf-reader/annot-draw.js +3 -3
  110. package/dist/esm/pdf-reader/ccitt.js +2 -1
  111. package/dist/esm/pdf-reader/cff-outline.js +1 -4
  112. package/dist/esm/pdf-reader/content.js +13 -15
  113. package/dist/esm/pdf-reader/decrypt.d.ts +18 -6
  114. package/dist/esm/pdf-reader/decrypt.js +90 -45
  115. package/dist/esm/pdf-reader/document.d.ts +7 -1
  116. package/dist/esm/pdf-reader/document.js +18 -4
  117. package/dist/esm/pdf-reader/encodings.js +1 -1
  118. package/dist/esm/pdf-reader/flow-build.js +4 -6
  119. package/dist/esm/pdf-reader/font.js +3 -3
  120. package/dist/esm/pdf-reader/function.js +8 -7
  121. package/dist/esm/pdf-reader/icc.js +1 -1
  122. package/dist/esm/pdf-reader/images.js +1 -1
  123. package/dist/esm/pdf-reader/jbig2.js +36 -38
  124. package/dist/esm/pdf-reader/jpeg.js +14 -13
  125. package/dist/esm/pdf-reader/layout.js +12 -9
  126. package/dist/esm/pdf-reader/lexer.js +2 -1
  127. package/dist/esm/pdf-reader/math-rows.js +2 -2
  128. package/dist/esm/pdf-reader/optional-content.js +1 -1
  129. package/dist/esm/pdf-reader/page-numbers.js +1 -1
  130. package/dist/esm/pdf-reader/pattern-tint.js +1 -2
  131. package/dist/esm/pdf-reader/reader.d.ts +5 -1
  132. package/dist/esm/pdf-reader/reader.js +83 -16
  133. package/dist/esm/pdf-reader/struct-tree.js +1 -1
  134. package/dist/esm/pdf-reader/tagged.js +3 -2
  135. package/dist/esm/pdf-reader/text.js +2 -2
  136. package/dist/esm/pdf-reader/type1-outline.js +1 -3
  137. package/dist/esm/pptx/embedded-fonts.js +3 -5
  138. package/dist/esm/pptx/placeholder-cascade.js +1 -1
  139. package/dist/esm/pptx/ppt/ppt-reader.js +5 -4
  140. package/dist/esm/pptx/ppt/ppt-text.js +9 -10
  141. package/dist/esm/pptx/pptx-reader.js +6 -5
  142. package/dist/esm/pptx/preset-table-styles.js +1 -1
  143. package/dist/esm/pptx/slide-parser.js +6 -4
  144. package/dist/esm/pptx/sp-helpers.js +1 -1
  145. package/dist/esm/pptx/table-style.js +2 -1
  146. package/dist/esm/svg/svg-writer.js +1 -1
  147. package/dist/esm/word/doc/doc-reader.js +2 -2
  148. package/dist/esm/word/doc/doc-text.js +20 -22
  149. package/dist/esm/word/document-parser.js +26 -21
  150. package/dist/esm/word/docx-reader.js +2 -2
  151. package/dist/esm/word/docx-to-pdf.js +3 -3
  152. package/dist/esm/word/docx-writer.js +10 -6
  153. package/dist/esm/word/drawing-parser.js +18 -18
  154. package/dist/esm/word/font-table.js +1 -1
  155. package/dist/esm/word/index.js +6 -5
  156. package/dist/esm/word/numbering-parser.js +4 -3
  157. package/dist/esm/word/omml-parser.js +1 -1
  158. package/dist/esm/word/paragraph-properties.js +11 -10
  159. package/dist/esm/word/run-properties.js +4 -4
  160. package/dist/esm/word/settings-parser.js +2 -1
  161. package/dist/esm/word/shading.js +1 -1
  162. package/dist/esm/word/styles-parser.js +5 -4
  163. package/dist/esm/word/table-parser.js +4 -4
  164. package/dist/esm/word/theme-fonts.js +1 -1
  165. package/package.json +9 -3
@@ -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
  ["ˆ", "̂"],
@@ -446,9 +446,7 @@ function runGlyph(font, program, depth) {
446
446
  stack.length = 0;
447
447
  break;
448
448
  }
449
- default:
450
- stack.length = 0;
451
- break;
449
+ default: stack.length = 0;
452
450
  }
453
451
  }
454
452
  return true;
@@ -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 & (TTEMBED_TTCOMPRESSED | TTEMBED_XORENCRYPTDATA)) !== 0) return { kind: "compressed" };
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(buildBody(content, resources, width, height), EMPTY_STYLE_SHEET),
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 >= FBSE_FODELAY_OFFSET + 4 ? u32(r.data, FBSE_FODELAY_OFFSET) : 0);
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 & (FSP_FLAG_PATRIARCH | 1025)) === 0;
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: 576 / 96,
817
- heightPt: 576 / 96
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
- return parseSlideShapes(spTree, {
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
- }, void 0, true);
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 styled = withStatedDirection(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" }, spPr);
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 part = cellStyle(style, flags, {
898
+ const at = {
898
899
  row: r,
899
900
  rowCount: rows.length,
900
901
  col: c,
901
902
  colCount: grid.length
902
- }, colors, theme);
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((idx !== void 0 && idx > 0 ? theme?.lineWidths?.[idx - 1] : void 0) ?? .75)
179
+ width: pt(width ?? .75)
179
180
  };
180
181
  }
181
182
  /**
@@ -56,7 +56,7 @@ function writeSvg(laid, opts = {}) {
56
56
  var svgWriter = {
57
57
  id: "svg",
58
58
  consumes: "page",
59
- supports: new Set([
59
+ supports: /* @__PURE__ */ new Set([
60
60
  FEATURES.text,
61
61
  FEATURES.tables,
62
62
  FEATURES.images,
@@ -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 < OFF_LCBCLX + 4) return EMPTY;
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[FKP_SIZE - 1];
347
- if (crun === 0 || (crun + 1) * 4 + crun > FKP_SIZE - 1) return;
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[FKP_SIZE - 1];
368
- if (cpara === 0 || (cpara + 1) * 4 + cpara * 13 > FKP_SIZE - 1) return;
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) if (SPRM_LONG_OPERAND.has(sprm)) {
531
- if (p + 2 > d.length) break;
532
- const cb = u16(d, p);
533
- if (cb < 1) break;
534
- len = cb - 1;
535
- op = p + 2;
536
- } else {
537
- if (p >= d.length) break;
538
- len = d[p];
539
- op = p + 1;
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 {
@@ -24,7 +24,7 @@ var parser = new XMLParser({
24
24
  trimValues: false,
25
25
  maxNestedTags: 1e3
26
26
  });
27
- var RUN_CONTAINER_TAGS = new Set([
27
+ var RUN_CONTAINER_TAGS = /* @__PURE__ */ new Set([
28
28
  "w:hyperlink",
29
29
  "w:sdt",
30
30
  "w:sdtContent",
@@ -102,7 +102,8 @@ function parseBackgroundFill(documentXml, resolveImage) {
102
102
  return fill.kind === "gradient" || fill.kind === "picture" ? fill : void 0;
103
103
  }
104
104
  function backgroundNode(documentXml) {
105
- const doc = poFindByPath(parser.parse(resolveInternalEntities(decoder.decode(documentXml))), ["w:document"]);
105
+ const tree = parser.parse(resolveInternalEntities(decoder.decode(documentXml)));
106
+ const doc = poFindByPath(tree, ["w:document"]);
106
107
  return doc ? poChildren(doc).find((c) => poIs(c, "w:background")) : void 0;
107
108
  }
108
109
  /** A fresh {@link BlockCounter}. */
@@ -125,7 +126,7 @@ function bodyIndexForBlock(blocks, blockEnd) {
125
126
  while (n < blocks.index.length && blocks.index[n] < blockEnd) n++;
126
127
  return n;
127
128
  }
128
- var HF_TYPES = new Set([
129
+ var HF_TYPES = /* @__PURE__ */ new Set([
129
130
  "default",
130
131
  "first",
131
132
  "even"
@@ -400,7 +401,7 @@ function parseBodyElements(children, ctx = DEFAULT_PARSE_CONTEXT, blocks, sdtRun
400
401
  }
401
402
  return out;
402
403
  }
403
- var COLLAPSE_TRANSPARENT_TAGS = new Set([
404
+ var COLLAPSE_TRANSPARENT_TAGS = /* @__PURE__ */ new Set([
404
405
  "w:ins",
405
406
  "w:moveTo",
406
407
  "w:sdt",
@@ -560,7 +561,8 @@ function parseParagraph(p, ctx, extraBookmarks, anchored, sdtRunProps) {
560
561
  const mathPara = poChildren(p).find((c) => poIs(c, "m:oMathPara"));
561
562
  if (mathPara && properties.alignment === void 0) {
562
563
  const paraPr = poChildren(mathPara).find((c) => poIs(c, "m:oMathParaPr"));
563
- const jcVal = poAttr(paraPr ? poChildren(paraPr).find((c) => poIs(c, "m:jc")) : void 0, "val");
564
+ const jcNode = paraPr ? poChildren(paraPr).find((c) => poIs(c, "m:jc")) : void 0;
565
+ const jcVal = poAttr(jcNode, "val");
564
566
  const alignment = jcVal === "left" ? "left" : jcVal === "right" ? "right" : "center";
565
567
  properties = {
566
568
  ...properties,
@@ -632,7 +634,7 @@ function fieldKeyword(instr) {
632
634
  }
633
635
  var CHECKBOX_CLEAR = "☐";
634
636
  var CHECKBOX_CHECKED = "☒";
635
- var SILENT_FIELDS = new Set([
637
+ var SILENT_FIELDS = /* @__PURE__ */ new Set([
636
638
  "SET",
637
639
  "ASK",
638
640
  "XE",
@@ -655,17 +657,18 @@ function applyFieldFsm(collected) {
655
657
  let st = null;
656
658
  for (const c of collected) {
657
659
  if (c.fldChar === "begin") {
658
- if (st) if (st.phase === "instr") st.depth++;
659
- else {
660
- out.push(...st.result);
661
- st = {
662
- phase: "instr",
663
- instr: "",
664
- result: [],
665
- depth: 0
666
- };
667
- }
668
- else st = {
660
+ if (st) {
661
+ if (st.phase === "instr") st.depth++;
662
+ else {
663
+ out.push(...st.result);
664
+ st = {
665
+ phase: "instr",
666
+ instr: "",
667
+ result: [],
668
+ depth: 0
669
+ };
670
+ }
671
+ } else st = {
669
672
  phase: "instr",
670
673
  instr: "",
671
674
  result: [],
@@ -808,7 +811,7 @@ function sdtRunProperties(sdt, themeFonts) {
808
811
  const props = parseRunProperties(poElementToFlat(rPr), themeFonts);
809
812
  return Object.keys(props).length > 0 ? props : void 0;
810
813
  }
811
- var WINGDINGS_TO_UNICODE = new Map([
814
+ var WINGDINGS_TO_UNICODE = /* @__PURE__ */ new Map([
812
815
  [108, "●"],
813
816
  [109, "❍"],
814
817
  [110, "■"],
@@ -835,7 +838,7 @@ var WINGDINGS_TO_UNICODE = new Map([
835
838
  [237, "↙"],
836
839
  [238, "↘"]
837
840
  ]);
838
- var SYMBOL_TO_UNICODE = new Map([
841
+ var SYMBOL_TO_UNICODE = /* @__PURE__ */ new Map([
839
842
  [34, "∀"],
840
843
  [36, "∃"],
841
844
  [64, "≅"],
@@ -1031,7 +1034,8 @@ function elementTag(node) {
1031
1034
  */
1032
1035
  function parseNotes(notesXml, rootTag, noteTag, ctx = DEFAULT_PARSE_CONTEXT) {
1033
1036
  const xml = resolveInternalEntities(decoder.decode(notesXml));
1034
- const root = poFindByPath(parser.parse(xml), [rootTag]);
1037
+ const tree = parser.parse(xml);
1038
+ const root = poFindByPath(tree, [rootTag]);
1035
1039
  const out = /* @__PURE__ */ new Map();
1036
1040
  if (!root) return out;
1037
1041
  for (const note of poChildren(root)) {
@@ -1046,7 +1050,8 @@ function parseNotes(notesXml, rootTag, noteTag, ctx = DEFAULT_PARSE_CONTEXT) {
1046
1050
  }
1047
1051
  function parseCommentsRaw(commentsXml, ctx) {
1048
1052
  const xml = resolveInternalEntities(decoder.decode(commentsXml));
1049
- const root = poFindByPath(parser.parse(xml), ["w:comments"]);
1053
+ const tree = parser.parse(xml);
1054
+ const root = poFindByPath(tree, ["w:comments"]);
1050
1055
  const comments = /* @__PURE__ */ new Map();
1051
1056
  const paraIds = /* @__PURE__ */ new Map();
1052
1057
  if (!root) return {
@@ -7,9 +7,9 @@ import { applyNumbering, applyNumberingToHeadersFooters } from "../core/numberin
7
7
  import "../core/numbering/index.js";
8
8
  import { cachedDiagramTree, laidOutDiagramTree } from "../core/drawingml/diagram/run.js";
9
9
  import { packageHasPart } from "../core/bytes.js";
10
+ import { parseTheme, parseThemeBgFillStyles, parseThemeEffectStyles, parseThemeFillStyles, parseThemeFonts, parseThemeLineWidths } from "../core/drawingml/theme-parser.js";
10
11
  import { DEFAULT_THEME_PALETTE, makeColorResolver } from "../core/drawingml/colors.js";
11
12
  import { parseChart, withChartColorStyle } from "../core/drawingml/chart-parser.js";
12
- import { parseTheme, parseThemeBgFillStyles, parseThemeEffectStyles, parseThemeFillStyles, parseThemeFonts, parseThemeLineWidths } from "../core/drawingml/theme-parser.js";
13
13
  import { isOoxmlRel } from "../core/opc/relationship-types.js";
14
14
  import { OpcPackage } from "../core/opc/package.js";
15
15
  import { parseCoreProperties } from "../core/opc/core-properties.js";
@@ -157,7 +157,7 @@ function readDocx(docx) {
157
157
  var docxReader = {
158
158
  id: "docx",
159
159
  produces: "flow",
160
- supports: new Set([
160
+ supports: /* @__PURE__ */ new Set([
161
161
  FEATURES.text,
162
162
  FEATURES.tables,
163
163
  FEATURES.tablesNested,
@@ -65,7 +65,7 @@ function prepareDocxStyledRender(docx, options) {
65
65
  * cannot be opened.
66
66
  */
67
67
  function detectDocxFamilyKeys(docx) {
68
- const keys = new Set(["arimo"]);
68
+ const keys = /* @__PURE__ */ new Set(["arimo"]);
69
69
  let pkg;
70
70
  try {
71
71
  pkg = OpcPackage.open(docx);
@@ -134,7 +134,7 @@ async function buildUnsignedDocxPdf(docx, options) {
134
134
  */
135
135
  async function resolveDocxAutoFonts(docx, options = {}) {
136
136
  const fetchOpt = options.fontFetch ? { fetch: options.fontFetch } : {};
137
- const keys = options.fontFamily ? new Set([resolveFamilyKey(options.fontFamily)]) : detectDocxFamilyKeys(docx);
137
+ const keys = options.fontFamily ? /* @__PURE__ */ new Set([resolveFamilyKey(options.fontFamily)]) : detectDocxFamilyKeys(docx);
138
138
  if (keys.size <= 1) {
139
139
  const family = keys.values().next().value;
140
140
  return { fonts: await fetchFontSet({
@@ -158,4 +158,4 @@ async function resolveDocxAutoFonts(docx, options = {}) {
158
158
  };
159
159
  }
160
160
  //#endregion
161
- export { convertDocxToPdf };
161
+ export { convertDocxToPdf, convertDocxToPdfSync, detectDocxFamilyKeys, resolveDocxAutoFonts };
@@ -531,7 +531,7 @@ function emitHeadersFooters(flow, section, state, docScope, extraParts, extraPar
531
531
  var docxWriter = {
532
532
  id: "docx",
533
533
  consumes: "flow",
534
- supports: new Set([FEATURES.text, FEATURES.fontsEmbedding]),
534
+ supports: /* @__PURE__ */ new Set([FEATURES.text, FEATURES.fontsEmbedding]),
535
535
  write: (doc) => writeDocx(doc)
536
536
  };
537
537
  /**
@@ -1177,7 +1177,7 @@ function pPrWithSect(p, closingSectPr) {
1177
1177
  */
1178
1178
  var stated = (pt) => Number.isFinite(pt);
1179
1179
  /** §17.18.44 ST_Jc — the tokens the attribute admits, so nothing else is written. */
1180
- var JC = new Set([
1180
+ var JC = /* @__PURE__ */ new Set([
1181
1181
  "left",
1182
1182
  "right",
1183
1183
  "center",
@@ -1188,8 +1188,10 @@ function indXml(p) {
1188
1188
  const attrs = [];
1189
1189
  if (stated(p.indentLeft) && p.indentLeft !== DEFAULT_PARA.indentLeft) attrs.push(`w:left="${twips(p.indentLeft)}"`);
1190
1190
  if (stated(p.indentRight) && p.indentRight !== DEFAULT_PARA.indentRight) attrs.push(`w:right="${twips(p.indentRight)}"`);
1191
- if (stated(p.indentFirstLine) && p.indentFirstLine !== DEFAULT_PARA.indentFirstLine) if (p.indentFirstLine < 0) attrs.push(`w:hanging="${twips(-p.indentFirstLine)}"`);
1192
- else attrs.push(`w:firstLine="${twips(p.indentFirstLine)}"`);
1191
+ if (stated(p.indentFirstLine) && p.indentFirstLine !== DEFAULT_PARA.indentFirstLine) {
1192
+ if (p.indentFirstLine < 0) attrs.push(`w:hanging="${twips(-p.indentFirstLine)}"`);
1193
+ else attrs.push(`w:firstLine="${twips(p.indentFirstLine)}"`);
1194
+ }
1193
1195
  return attrs.length > 0 ? `<w:ind ${attrs.join(" ")}/>` : "";
1194
1196
  }
1195
1197
  function spacingXml(p) {
@@ -1248,8 +1250,10 @@ function rawParaPrXml(p) {
1248
1250
  const attrs = [];
1249
1251
  if (p.indentLeft !== void 0 && stated(p.indentLeft)) attrs.push(`w:left="${twips(p.indentLeft)}"`);
1250
1252
  if (p.indentRight !== void 0 && stated(p.indentRight)) attrs.push(`w:right="${twips(p.indentRight)}"`);
1251
- if (p.indentFirstLine !== void 0 && stated(p.indentFirstLine)) if (p.indentFirstLine < 0) attrs.push(`w:hanging="${twips(-p.indentFirstLine)}"`);
1252
- else attrs.push(`w:firstLine="${twips(p.indentFirstLine)}"`);
1253
+ if (p.indentFirstLine !== void 0 && stated(p.indentFirstLine)) {
1254
+ if (p.indentFirstLine < 0) attrs.push(`w:hanging="${twips(-p.indentFirstLine)}"`);
1255
+ else attrs.push(`w:firstLine="${twips(p.indentFirstLine)}"`);
1256
+ }
1253
1257
  const ind = attrs.length > 0 ? `<w:ind ${attrs.join(" ")}/>` : "";
1254
1258
  const jc = p.alignment !== void 0 && JC.has(p.alignment) ? `<w:jc w:val="${p.alignment}"/>` : "";
1255
1259
  return ind || jc ? `<w:pPr>${jc}${ind}</w:pPr>` : "";