pptx-react-viewer 1.25.1 → 1.25.3

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 (90) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/dist/{Model3DScene-AWSM6CYB.js → Model3DScene-F2GUSTZI.js} +3 -3
  3. package/dist/Model3DScene-F2GUSTZI.js.br +0 -0
  4. package/dist/Model3DScene-F2GUSTZI.js.gz +0 -0
  5. package/dist/{Model3DScene-2QZ7CADN.mjs → Model3DScene-IQLE5JLL.mjs} +2 -2
  6. package/dist/Model3DScene-IQLE5JLL.mjs.br +0 -0
  7. package/dist/Model3DScene-IQLE5JLL.mjs.gz +0 -0
  8. package/dist/{SurfaceChart3DScene-PJ36HRGC.js → SurfaceChart3DScene-4OMD7LWR.js} +3 -3
  9. package/dist/SurfaceChart3DScene-4OMD7LWR.js.br +0 -0
  10. package/dist/SurfaceChart3DScene-4OMD7LWR.js.gz +0 -0
  11. package/dist/{SurfaceChart3DScene-IW4WGZHH.mjs → SurfaceChart3DScene-JG26PJ7O.mjs} +2 -2
  12. package/dist/SurfaceChart3DScene-JG26PJ7O.mjs.br +0 -0
  13. package/dist/SurfaceChart3DScene-JG26PJ7O.mjs.gz +0 -0
  14. package/dist/{chunk-CYZLRYJV.js → chunk-2V6BD4JQ.js} +130 -39
  15. package/dist/chunk-2V6BD4JQ.js.br +0 -0
  16. package/dist/chunk-2V6BD4JQ.js.gz +0 -0
  17. package/dist/{chunk-ASN2DZSP.js → chunk-5G3SPYQE.js} +812 -810
  18. package/dist/chunk-5G3SPYQE.js.br +0 -0
  19. package/dist/chunk-5G3SPYQE.js.gz +0 -0
  20. package/dist/{chunk-M7JHZV3P.mjs → chunk-DAI4KM5W.mjs} +130 -39
  21. package/dist/chunk-DAI4KM5W.mjs.br +0 -0
  22. package/dist/chunk-DAI4KM5W.mjs.gz +0 -0
  23. package/dist/{chunk-PMGLZ7N4.mjs → chunk-DVM75RMN.mjs} +63 -6
  24. package/dist/chunk-DVM75RMN.mjs.br +0 -0
  25. package/dist/chunk-DVM75RMN.mjs.gz +0 -0
  26. package/dist/{chunk-RVKPHAK5.mjs → chunk-GNXWU7UG.mjs} +10 -8
  27. package/dist/chunk-GNXWU7UG.mjs.br +0 -0
  28. package/dist/chunk-GNXWU7UG.mjs.gz +0 -0
  29. package/dist/{chunk-QTIJWFJX.mjs → chunk-NYBERTS7.mjs} +12 -4
  30. package/dist/chunk-NYBERTS7.mjs.br +0 -0
  31. package/dist/chunk-NYBERTS7.mjs.gz +0 -0
  32. package/dist/{chunk-NIWO2WYI.js → chunk-UXVFNGJH.js} +96 -39
  33. package/dist/chunk-UXVFNGJH.js.br +0 -0
  34. package/dist/chunk-UXVFNGJH.js.gz +0 -0
  35. package/dist/{chunk-NT5FIWWU.js → chunk-ZUJHFLOR.js} +472 -464
  36. package/dist/chunk-ZUJHFLOR.js.br +0 -0
  37. package/dist/chunk-ZUJHFLOR.js.gz +0 -0
  38. package/dist/{dist-RHAXXX2R.mjs → dist-E3IHM3OU.mjs} +1 -1
  39. package/dist/dist-E3IHM3OU.mjs.br +0 -0
  40. package/dist/dist-E3IHM3OU.mjs.gz +0 -0
  41. package/dist/{dist-AFRACFHO.js → dist-ZA77P2O5.js} +562 -562
  42. package/dist/dist-ZA77P2O5.js.br +0 -0
  43. package/dist/dist-ZA77P2O5.js.gz +0 -0
  44. package/dist/hooks-unstable.js +78 -78
  45. package/dist/hooks-unstable.js.br +0 -0
  46. package/dist/hooks-unstable.js.gz +0 -0
  47. package/dist/hooks-unstable.mjs +3 -3
  48. package/dist/hooks-unstable.mjs.br +0 -0
  49. package/dist/hooks-unstable.mjs.gz +0 -0
  50. package/dist/index.js +33 -33
  51. package/dist/index.js.br +0 -0
  52. package/dist/index.js.gz +0 -0
  53. package/dist/index.mjs +4 -4
  54. package/dist/index.mjs.br +0 -0
  55. package/dist/index.mjs.gz +0 -0
  56. package/dist/viewer/index.js +20 -20
  57. package/dist/viewer/index.js.br +0 -0
  58. package/dist/viewer/index.js.gz +0 -0
  59. package/dist/viewer/index.mjs +4 -4
  60. package/dist/viewer/index.mjs.br +0 -0
  61. package/dist/viewer/index.mjs.gz +0 -0
  62. package/package.json +1 -1
  63. package/dist/Model3DScene-2QZ7CADN.mjs.br +0 -0
  64. package/dist/Model3DScene-2QZ7CADN.mjs.gz +0 -0
  65. package/dist/Model3DScene-AWSM6CYB.js.br +0 -0
  66. package/dist/Model3DScene-AWSM6CYB.js.gz +0 -0
  67. package/dist/SurfaceChart3DScene-IW4WGZHH.mjs.br +0 -0
  68. package/dist/SurfaceChart3DScene-IW4WGZHH.mjs.gz +0 -0
  69. package/dist/SurfaceChart3DScene-PJ36HRGC.js.br +0 -0
  70. package/dist/SurfaceChart3DScene-PJ36HRGC.js.gz +0 -0
  71. package/dist/chunk-ASN2DZSP.js.br +0 -0
  72. package/dist/chunk-ASN2DZSP.js.gz +0 -0
  73. package/dist/chunk-CYZLRYJV.js.br +0 -0
  74. package/dist/chunk-CYZLRYJV.js.gz +0 -0
  75. package/dist/chunk-M7JHZV3P.mjs.br +0 -0
  76. package/dist/chunk-M7JHZV3P.mjs.gz +0 -0
  77. package/dist/chunk-NIWO2WYI.js.br +0 -0
  78. package/dist/chunk-NIWO2WYI.js.gz +0 -0
  79. package/dist/chunk-NT5FIWWU.js.br +0 -0
  80. package/dist/chunk-NT5FIWWU.js.gz +0 -0
  81. package/dist/chunk-PMGLZ7N4.mjs.br +0 -0
  82. package/dist/chunk-PMGLZ7N4.mjs.gz +0 -0
  83. package/dist/chunk-QTIJWFJX.mjs.br +0 -0
  84. package/dist/chunk-QTIJWFJX.mjs.gz +0 -0
  85. package/dist/chunk-RVKPHAK5.mjs.br +0 -0
  86. package/dist/chunk-RVKPHAK5.mjs.gz +0 -0
  87. package/dist/dist-AFRACFHO.js.br +0 -0
  88. package/dist/dist-AFRACFHO.js.gz +0 -0
  89. package/dist/dist-RHAXXX2R.mjs.br +0 -0
  90. package/dist/dist-RHAXXX2R.mjs.gz +0 -0
package/CHANGELOG.md CHANGED
@@ -4,6 +4,10 @@ All notable changes to this project are documented here.
4
4
  This file is generated from [Conventional Commits](https://www.conventionalcommits.org)
5
5
  by [git-cliff](https://git-cliff.org); do not edit it by hand.
6
6
 
7
+ ## [1.25.2](https://github.com/ChristopherVR/pptx-viewer/releases/tag/pptx-react-viewer@1.25.2) - 2026-07-19
8
+
9
+ ## [1.25.1](https://github.com/ChristopherVR/pptx-viewer/releases/tag/pptx-react-viewer@1.25.1) - 2026-07-18
10
+
7
11
  ## [1.25.0](https://github.com/ChristopherVR/pptx-viewer/releases/tag/pptx-react-viewer@1.25.0) - 2026-07-18
8
12
 
9
13
  ## [1.24.1](https://github.com/ChristopherVR/pptx-viewer/releases/tag/pptx-react-viewer@1.24.1) - 2026-07-18
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var chunkNIWO2WYI_js = require('./chunk-NIWO2WYI.js');
4
- require('./chunk-CYZLRYJV.js');
3
+ var chunkUXVFNGJH_js = require('./chunk-UXVFNGJH.js');
4
+ require('./chunk-2V6BD4JQ.js');
5
5
  require('./chunk-QGM4M3NI.js');
6
6
  var react = require('react');
7
7
  var jsxRuntime = require('react/jsx-runtime');
@@ -15,7 +15,7 @@ function Model3DScene({ modelUrl, interactive, width, height }) {
15
15
  return;
16
16
  }
17
17
  let disposed = false;
18
- void chunkNIWO2WYI_js.mountModel3D(container, modelUrl, { width, height, interactive }).then((handle) => {
18
+ void chunkUXVFNGJH_js.mountModel3D(container, modelUrl, { width, height, interactive }).then((handle) => {
19
19
  if (disposed) {
20
20
  handle.dispose();
21
21
  } else {
Binary file
Binary file
@@ -1,5 +1,5 @@
1
- import { mountModel3D } from './chunk-PMGLZ7N4.mjs';
2
- import './chunk-M7JHZV3P.mjs';
1
+ import { mountModel3D } from './chunk-DVM75RMN.mjs';
2
+ import './chunk-DAI4KM5W.mjs';
3
3
  import './chunk-6DZX6EAA.mjs';
4
4
  import { useRef, useEffect } from 'react';
5
5
  import { jsx } from 'react/jsx-runtime';
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var chunkNIWO2WYI_js = require('./chunk-NIWO2WYI.js');
4
- require('./chunk-CYZLRYJV.js');
3
+ var chunkUXVFNGJH_js = require('./chunk-UXVFNGJH.js');
4
+ require('./chunk-2V6BD4JQ.js');
5
5
  require('./chunk-QGM4M3NI.js');
6
6
  var react = require('react');
7
7
  var jsxRuntime = require('react/jsx-runtime');
@@ -26,7 +26,7 @@ function SurfaceChart3DScene({
26
26
  return;
27
27
  }
28
28
  let disposed = false;
29
- void chunkNIWO2WYI_js.mountSurfaceChart3D(container, {
29
+ void chunkUXVFNGJH_js.mountSurfaceChart3D(container, {
30
30
  cols,
31
31
  rows,
32
32
  heightMap,
@@ -1,5 +1,5 @@
1
- import { mountSurfaceChart3D } from './chunk-PMGLZ7N4.mjs';
2
- import './chunk-M7JHZV3P.mjs';
1
+ import { mountSurfaceChart3D } from './chunk-DVM75RMN.mjs';
2
+ import './chunk-DAI4KM5W.mjs';
3
3
  import './chunk-6DZX6EAA.mjs';
4
4
  import { useRef, useEffect } from 'react';
5
5
  import { jsxs, jsx } from 'react/jsx-runtime';
@@ -7104,14 +7104,52 @@ function extractSourceOrders(xml) {
7104
7104
  }
7105
7105
  return orders;
7106
7106
  }
7107
+ function ensureArrayLocal(value) {
7108
+ return Array.isArray(value) ? value : value === void 0 ? [] : [value];
7109
+ }
7110
+ function countsSignature(counts) {
7111
+ return [...counts.entries()].sort((a, b) => a[0] < b[0] ? -1 : 1).map(([name, count]) => `${name}:${count}`).join(",");
7112
+ }
7113
+ function pathSignature(path) {
7114
+ const counts = /* @__PURE__ */ new Map();
7115
+ for (const key of Object.keys(path)) {
7116
+ const name = localName(key);
7117
+ if (!PATH_COMMANDS.has(name)) {
7118
+ continue;
7119
+ }
7120
+ counts.set(name, (counts.get(name) ?? 0) + ensureArrayLocal(path[key]).length);
7121
+ }
7122
+ return countsSignature(counts);
7123
+ }
7124
+ function orderSignature(order) {
7125
+ const counts = /* @__PURE__ */ new Map();
7126
+ for (const name of order) {
7127
+ counts.set(name, (counts.get(name) ?? 0) + 1);
7128
+ }
7129
+ return countsSignature(counts);
7130
+ }
7107
7131
  function annotateCustomGeometryCommandOrder(xml, parsed) {
7108
7132
  const orders = extractSourceOrders(xml);
7109
7133
  if (orders.length === 0) {
7110
7134
  return;
7111
7135
  }
7112
7136
  const paths = collectParsedPaths(parsed);
7113
- for (let index = 0; index < Math.min(paths.length, orders.length); index++) {
7114
- commandOrder.set(paths[index], orders[index]);
7137
+ const ordersBySignature = /* @__PURE__ */ new Map();
7138
+ for (const order of orders) {
7139
+ const signature = orderSignature(order);
7140
+ const bucket = ordersBySignature.get(signature);
7141
+ if (bucket) {
7142
+ bucket.push(order);
7143
+ } else {
7144
+ ordersBySignature.set(signature, [order]);
7145
+ }
7146
+ }
7147
+ for (const path of paths) {
7148
+ const bucket = ordersBySignature.get(pathSignature(path));
7149
+ const order = bucket?.shift();
7150
+ if (order) {
7151
+ commandOrder.set(path, order);
7152
+ }
7115
7153
  }
7116
7154
  }
7117
7155
  function orderedPathCommandEntries(path, ensureArray16) {
@@ -29493,15 +29531,15 @@ function getConnectorPathGeometry(element) {
29493
29531
  }
29494
29532
  function getElementTransform(element) {
29495
29533
  const transforms = [];
29534
+ if (element.rotation) {
29535
+ transforms.push(`rotate(${element.rotation}deg)`);
29536
+ }
29496
29537
  if (element.flipHorizontal) {
29497
29538
  transforms.push("scaleX(-1)");
29498
29539
  }
29499
29540
  if (element.flipVertical) {
29500
29541
  transforms.push("scaleY(-1)");
29501
29542
  }
29502
- if (element.rotation) {
29503
- transforms.push(`rotate(${element.rotation}deg)`);
29504
- }
29505
29543
  return transforms.length > 0 ? transforms.join(" ") : void 0;
29506
29544
  }
29507
29545
  function getTextCompensationTransform(element) {
@@ -67603,7 +67641,7 @@ var PptxHandlerRuntime59 = class extends PptxHandlerRuntime58 {
67603
67641
  pointsToPixels(points3) {
67604
67642
  return points3 * (96 / 72);
67605
67643
  }
67606
- parseParagraphSpacingPx(spacingNode) {
67644
+ parseParagraphSpacingPx(spacingNode, basisFontSizePx) {
67607
67645
  if (!spacingNode) {
67608
67646
  return void 0;
67609
67647
  }
@@ -67614,6 +67652,13 @@ var PptxHandlerRuntime59 = class extends PptxHandlerRuntime58 {
67614
67652
  if (Number.isFinite(spacingPointsRaw)) {
67615
67653
  return this.pointsToPixels(spacingPointsRaw / 100);
67616
67654
  }
67655
+ const spacingPercentRaw = Number.parseInt(
67656
+ String(spacingNode["a:spcPct"]?.["@_val"] || ""),
67657
+ 10
67658
+ );
67659
+ if (Number.isFinite(spacingPercentRaw) && typeof basisFontSizePx === "number" && basisFontSizePx > 0) {
67660
+ return spacingPercentRaw / 1e5 * basisFontSizePx;
67661
+ }
67617
67662
  return void 0;
67618
67663
  }
67619
67664
  parseLineSpacingMultiplier(lineSpacingNode) {
@@ -67691,7 +67736,7 @@ var PptxHandlerRuntime59 = class extends PptxHandlerRuntime58 {
67691
67736
  }
67692
67737
  };
67693
67738
  var PptxHandlerRuntime60 = class extends PptxHandlerRuntime59 {
67694
- resolveParagraphBulletInfo(paragraph, paragraphIndex, txBody, inheritedTxBody, isBodyPlaceholder = false, slidePath) {
67739
+ resolveParagraphBulletInfo(paragraph, paragraphIndex, txBody, inheritedTxBody, isBodyPlaceholder = false, slidePath, effectiveLevelStyles) {
67695
67740
  if (!paragraph) {
67696
67741
  return null;
67697
67742
  }
@@ -67727,11 +67772,8 @@ var PptxHandlerRuntime60 = class extends PptxHandlerRuntime59 {
67727
67772
  }
67728
67773
  }
67729
67774
  if (!resolvedBulletProps) {
67730
- if (isBodyPlaceholder) {
67731
- const presentationLevelStyle = this.presentationDefaultTextStyle?.levelStyles?.[normalizedLevel - 1] ?? this.presentationDefaultTextStyle?.levelStyles?.[-1];
67732
- return this.createBulletInfoFromLevelStyle(presentationLevelStyle, paragraphIndex);
67733
- }
67734
- return null;
67775
+ const fallbackLevelStyle = effectiveLevelStyles?.[normalizedLevel - 1] ?? effectiveLevelStyles?.[-1] ?? (isBodyPlaceholder ? this.presentationDefaultTextStyle?.levelStyles?.[normalizedLevel - 1] ?? this.presentationDefaultTextStyle?.levelStyles?.[-1] : void 0);
67776
+ return this.createBulletInfoFromLevelStyle(fallbackLevelStyle, paragraphIndex);
67735
67777
  }
67736
67778
  const buFont = resolvedBulletProps["a:buFont"];
67737
67779
  const fontFamily = buFont?.["@_typeface"] ? String(buFont["@_typeface"]) : void 0;
@@ -68217,16 +68259,21 @@ var PptxHandlerRuntime62 = class _PptxHandlerRuntime26 extends PptxHandlerRuntim
68217
68259
  textStyle.align = paraAlign;
68218
68260
  }
68219
68261
  }
68262
+ const spacingBasisPx = typeof textStyle.fontSize === "number" ? textStyle.fontSize : void 0;
68220
68263
  if (textStyle.paragraphSpacingBefore === void 0) {
68221
68264
  const spacingBefore = this.parseParagraphSpacingPx(
68222
- pPr?.["a:spcBef"]
68265
+ pPr?.["a:spcBef"],
68266
+ spacingBasisPx
68223
68267
  );
68224
68268
  if (spacingBefore !== void 0) {
68225
68269
  textStyle.paragraphSpacingBefore = spacingBefore;
68226
68270
  }
68227
68271
  }
68228
68272
  if (textStyle.paragraphSpacingAfter === void 0) {
68229
- const spacingAfter = this.parseParagraphSpacingPx(pPr?.["a:spcAft"]);
68273
+ const spacingAfter = this.parseParagraphSpacingPx(
68274
+ pPr?.["a:spcAft"],
68275
+ spacingBasisPx
68276
+ );
68230
68277
  if (spacingAfter !== void 0) {
68231
68278
  textStyle.paragraphSpacingAfter = spacingAfter;
68232
68279
  }
@@ -68398,7 +68445,8 @@ var PptxHandlerRuntime63 = class extends PptxHandlerRuntime62 {
68398
68445
  ctx.txBody,
68399
68446
  ctx.inheritedTxBody,
68400
68447
  isBodyPlaceholder,
68401
- ctx.slidePath
68448
+ ctx.slidePath,
68449
+ ctx.effectiveLevelStyles
68402
68450
  );
68403
68451
  if (paragraphBulletInfo && !paragraphBulletInfo.none) {
68404
68452
  let bulletText;
@@ -69989,6 +70037,7 @@ var PptxHandlerRuntime69 = class extends PptxHandlerRuntime68 {
69989
70037
  if (!normalized) {
69990
70038
  return void 0;
69991
70039
  }
70040
+ const canon = (key) => key.toLowerCase() === "folhlink" ? "folHlink" : key;
69992
70041
  if (normalized === "phclr") {
69993
70042
  const injected = this.themeColorMap["phclr"];
69994
70043
  if (injected) {
@@ -69998,17 +70047,18 @@ var PptxHandlerRuntime69 = class extends PptxHandlerRuntime68 {
69998
70047
  }
69999
70048
  const overrideMap = this.currentSlideClrMapOverride ?? this.currentMasterClrMap;
70000
70049
  if (overrideMap) {
70001
- const remapped = overrideMap[normalized];
70050
+ const remapped = overrideMap[canon(normalized)];
70002
70051
  if (remapped) {
70003
- return this.themeColorMap[remapped] || this.getDefaultSchemeColorMap()[remapped];
70052
+ const target = canon(remapped);
70053
+ return this.themeColorMap[target] || this.getDefaultSchemeColorMap()[target];
70004
70054
  }
70005
70055
  } else {
70006
70056
  const defaultAliasTarget = DEFAULT_CLR_MAP_ALIAS[normalized];
70007
70057
  if (defaultAliasTarget) {
70008
- return this.themeColorMap[defaultAliasTarget] || this.themeColorMap[normalized] || this.getDefaultSchemeColorMap()[normalized];
70058
+ return this.themeColorMap[defaultAliasTarget] || this.themeColorMap[canon(normalized)] || this.getDefaultSchemeColorMap()[canon(normalized)];
70009
70059
  }
70010
70060
  }
70011
- return this.themeColorMap[normalized] || this.getDefaultSchemeColorMap()[normalized];
70061
+ return this.themeColorMap[canon(normalized)] || this.getDefaultSchemeColorMap()[canon(normalized)];
70012
70062
  }
70013
70063
  normalizeStrokeDashType(value) {
70014
70064
  const normalized = String(value ?? "").trim();
@@ -70295,6 +70345,40 @@ var PptxHandlerRuntime70 = class extends PptxHandlerRuntime69 {
70295
70345
  }
70296
70346
  return void 0;
70297
70347
  }
70348
+ /**
70349
+ * Reuse the cached parse of a layout XML part, parsing (and caching) on a
70350
+ * miss. Background resolution runs per slide but the layout/master parts are
70351
+ * large (a themed master can be ~200 KB); re-parsing them for every slide
70352
+ * dominated load time, so share the same parsed object `getLayoutElements`
70353
+ * already populated.
70354
+ */
70355
+ async resolveCachedLayoutXml(layoutPath) {
70356
+ const cached = this.layoutXmlMap.get(layoutPath);
70357
+ if (cached) {
70358
+ return cached;
70359
+ }
70360
+ const xml = await this.zip.file(layoutPath)?.async("string");
70361
+ if (!xml) {
70362
+ return void 0;
70363
+ }
70364
+ const parsed = this.parser.parse(xml);
70365
+ this.layoutXmlMap.set(layoutPath, parsed);
70366
+ return parsed;
70367
+ }
70368
+ /** Reuse the cached parse of a master XML part, parsing (and caching) on a miss. */
70369
+ async resolveCachedMasterXml(masterPath) {
70370
+ const cached = this.masterXmlMap.get(masterPath);
70371
+ if (cached) {
70372
+ return cached;
70373
+ }
70374
+ const xml = await this.zip.file(masterPath)?.async("string");
70375
+ if (!xml) {
70376
+ return void 0;
70377
+ }
70378
+ const parsed = this.parser.parse(xml);
70379
+ this.masterXmlMap.set(masterPath, parsed);
70380
+ return parsed;
70381
+ }
70298
70382
  async getMasterBackgroundImage(layoutPath) {
70299
70383
  const layoutRels = this.slideRelsMap.get(layoutPath);
70300
70384
  if (!layoutRels) {
@@ -70305,9 +70389,8 @@ var PptxHandlerRuntime70 = class extends PptxHandlerRuntime69 {
70305
70389
  const layoutDir = layoutPath.substring(0, layoutPath.lastIndexOf("/") + 1);
70306
70390
  const masterPath = target.startsWith("/") ? target.substring(1) : target.startsWith("..") ? this.resolvePath(layoutDir, target) : `ppt/${stripParentDirSegments(target)}`;
70307
70391
  try {
70308
- const masterXmlStr = await this.zip.file(masterPath)?.async("string");
70309
- if (masterXmlStr) {
70310
- const masterXmlObj = this.parser.parse(masterXmlStr);
70392
+ const masterXmlObj = await this.resolveCachedMasterXml(masterPath);
70393
+ if (masterXmlObj) {
70311
70394
  const masterRelsPath = `${masterPath.replace("slideMasters/", "slideMasters/_rels/")}.rels`;
70312
70395
  await this.loadSlideRelationships(masterPath, masterRelsPath);
70313
70396
  return this.extractBackgroundImage(masterXmlObj, masterPath, "p:sldMaster");
@@ -70329,9 +70412,8 @@ var PptxHandlerRuntime70 = class extends PptxHandlerRuntime69 {
70329
70412
  const slideDir = slidePath.substring(0, slidePath.lastIndexOf("/") + 1);
70330
70413
  const layoutPath = target.startsWith("/") ? target.substring(1) : target.startsWith("..") ? this.resolvePath(slideDir, target) : `ppt/${stripParentDirSegments(target)}`;
70331
70414
  try {
70332
- const layoutXmlStr = await this.zip.file(layoutPath)?.async("string");
70333
- if (layoutXmlStr) {
70334
- const layoutXmlObj = this.parser.parse(layoutXmlStr);
70415
+ const layoutXmlObj = await this.resolveCachedLayoutXml(layoutPath);
70416
+ if (layoutXmlObj) {
70335
70417
  const layoutRelsPath = `${layoutPath.replace("slideLayouts/", "slideLayouts/_rels/")}.rels`;
70336
70418
  await this.loadSlideRelationships(layoutPath, layoutRelsPath);
70337
70419
  const bg = this.extractBackgroundImage(layoutXmlObj, layoutPath, "p:sldLayout");
@@ -70357,9 +70439,8 @@ var PptxHandlerRuntime70 = class extends PptxHandlerRuntime69 {
70357
70439
  const slideDir = slidePath.substring(0, slidePath.lastIndexOf("/") + 1);
70358
70440
  const layoutPath = target.startsWith("/") ? target.substring(1) : target.startsWith("..") ? this.resolvePath(slideDir, target) : `ppt/${stripParentDirSegments(target)}`;
70359
70441
  try {
70360
- const layoutXmlStr = await this.zip.file(layoutPath)?.async("string");
70361
- if (layoutXmlStr) {
70362
- const layoutXmlObj = this.parser.parse(layoutXmlStr);
70442
+ const layoutXmlObj = await this.resolveCachedLayoutXml(layoutPath);
70443
+ if (layoutXmlObj) {
70363
70444
  const layoutBg = this.extractBackgroundColor(layoutXmlObj, "p:sldLayout");
70364
70445
  if (layoutBg) {
70365
70446
  return layoutBg;
@@ -70386,9 +70467,8 @@ var PptxHandlerRuntime70 = class extends PptxHandlerRuntime69 {
70386
70467
  const layoutDir = layoutPath.substring(0, layoutPath.lastIndexOf("/") + 1);
70387
70468
  const masterPath = target.startsWith("/") ? target.substring(1) : target.startsWith("..") ? this.resolvePath(layoutDir, target) : `ppt/${stripParentDirSegments(target)}`;
70388
70469
  try {
70389
- const masterXmlStr = await this.zip.file(masterPath)?.async("string");
70390
- if (masterXmlStr) {
70391
- const masterXmlObj = this.parser.parse(masterXmlStr);
70470
+ const masterXmlObj = await this.resolveCachedMasterXml(masterPath);
70471
+ if (masterXmlObj) {
70392
70472
  return this.extractBackgroundColor(masterXmlObj, "p:sldMaster");
70393
70473
  }
70394
70474
  } catch {
@@ -70413,9 +70493,8 @@ var PptxHandlerRuntime71 = class extends PptxHandlerRuntime70 {
70413
70493
  const slideDir = slidePath.substring(0, slidePath.lastIndexOf("/") + 1);
70414
70494
  const layoutPath = target.startsWith("/") ? target.substring(1) : target.startsWith("..") ? this.resolvePath(slideDir, target) : `ppt/${stripParentDirSegments(target)}`;
70415
70495
  try {
70416
- const layoutXmlStr = await this.zip.file(layoutPath)?.async("string");
70417
- if (layoutXmlStr) {
70418
- const layoutXmlObj = this.parser.parse(layoutXmlStr);
70496
+ const layoutXmlObj = await this.resolveCachedLayoutXml(layoutPath);
70497
+ if (layoutXmlObj) {
70419
70498
  const layoutGrad = this.extractBackgroundGradient(layoutXmlObj, "p:sldLayout");
70420
70499
  if (layoutGrad) {
70421
70500
  return layoutGrad;
@@ -70442,9 +70521,8 @@ var PptxHandlerRuntime71 = class extends PptxHandlerRuntime70 {
70442
70521
  const layoutDir = layoutPath.substring(0, layoutPath.lastIndexOf("/") + 1);
70443
70522
  const masterPath = target.startsWith("/") ? target.substring(1) : target.startsWith("..") ? this.resolvePath(layoutDir, target) : `ppt/${stripParentDirSegments(target)}`;
70444
70523
  try {
70445
- const masterXmlStr = await this.zip.file(masterPath)?.async("string");
70446
- if (masterXmlStr) {
70447
- const masterXmlObj = this.parser.parse(masterXmlStr);
70524
+ const masterXmlObj = await this.resolveCachedMasterXml(masterPath);
70525
+ if (masterXmlObj) {
70448
70526
  return this.extractBackgroundGradient(masterXmlObj, "p:sldMaster");
70449
70527
  }
70450
70528
  } catch {
@@ -70757,11 +70835,24 @@ var PptxHandlerRuntime72 = class _PptxHandlerRuntime31 extends PptxHandlerRuntim
70757
70835
  }
70758
70836
  }
70759
70837
  }
70760
- const spcBef = this.parseParagraphSpacingPx(levelProps["a:spcBef"]);
70838
+ const defRPrSzRaw = Number.parseInt(
70839
+ String(
70840
+ levelProps["a:defRPr"]?.["@_sz"] || ""
70841
+ ),
70842
+ 10
70843
+ );
70844
+ const basisFontSizePx = Number.isFinite(defRPrSzRaw) ? this.pointsToPixels(defRPrSzRaw / 100) : void 0;
70845
+ const spcBef = this.parseParagraphSpacingPx(
70846
+ levelProps["a:spcBef"],
70847
+ basisFontSizePx
70848
+ );
70761
70849
  if (spcBef !== void 0) {
70762
70850
  style.spaceBefore = spcBef;
70763
70851
  }
70764
- const spcAft = this.parseParagraphSpacingPx(levelProps["a:spcAft"]);
70852
+ const spcAft = this.parseParagraphSpacingPx(
70853
+ levelProps["a:spcAft"],
70854
+ basisFontSizePx
70855
+ );
70765
70856
  if (spcAft !== void 0) {
70766
70857
  style.spaceAfter = spcAft;
70767
70858
  }
Binary file
Binary file