pptx-react-viewer 1.16.1 → 1.17.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.
Files changed (114) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/dist/{Model3DScene-DDKQ372V.mjs → Model3DScene-QHDYQXL2.mjs} +2 -2
  3. package/dist/Model3DScene-QHDYQXL2.mjs.br +0 -0
  4. package/dist/Model3DScene-QHDYQXL2.mjs.gz +0 -0
  5. package/dist/{Model3DScene-UBHBPNJ2.js → Model3DScene-YA4F63DT.js} +3 -3
  6. package/dist/Model3DScene-YA4F63DT.js.br +0 -0
  7. package/dist/Model3DScene-YA4F63DT.js.gz +0 -0
  8. package/dist/PowerPointViewer-C4d7SKZf.d.ts +21 -0
  9. package/dist/PowerPointViewer-C4d7SKZf.d.ts.map +1 -0
  10. package/dist/{SurfaceChart3DScene-VSUUH2MX.mjs → SurfaceChart3DScene-GUAS2NWQ.mjs} +2 -2
  11. package/dist/SurfaceChart3DScene-GUAS2NWQ.mjs.br +0 -0
  12. package/dist/SurfaceChart3DScene-GUAS2NWQ.mjs.gz +0 -0
  13. package/dist/{SurfaceChart3DScene-MNFDDCYS.js → SurfaceChart3DScene-TGNJHTJQ.js} +3 -3
  14. package/dist/SurfaceChart3DScene-TGNJHTJQ.js.br +0 -0
  15. package/dist/SurfaceChart3DScene-TGNJHTJQ.js.gz +0 -0
  16. package/dist/{chunk-4LRPKUP7.js → chunk-3P6O7ZDM.js} +420 -420
  17. package/dist/chunk-3P6O7ZDM.js.br +0 -0
  18. package/dist/chunk-3P6O7ZDM.js.gz +0 -0
  19. package/dist/{chunk-YARAQWA4.mjs → chunk-G22EWPLH.mjs} +134 -4
  20. package/dist/chunk-G22EWPLH.mjs.br +0 -0
  21. package/dist/chunk-G22EWPLH.mjs.gz +0 -0
  22. package/dist/{chunk-TLGPM7SI.js → chunk-JWS3RQKN.js} +160 -28
  23. package/dist/chunk-JWS3RQKN.js.br +0 -0
  24. package/dist/chunk-JWS3RQKN.js.gz +0 -0
  25. package/dist/{chunk-XOSQDCHZ.mjs → chunk-LLHFNGAF.mjs} +4 -4
  26. package/dist/chunk-LLHFNGAF.mjs.br +0 -0
  27. package/dist/chunk-LLHFNGAF.mjs.gz +0 -0
  28. package/dist/{chunk-YW23L4KK.mjs → chunk-LNSHC2Z5.mjs} +117 -156
  29. package/dist/chunk-LNSHC2Z5.mjs.br +0 -0
  30. package/dist/chunk-LNSHC2Z5.mjs.gz +0 -0
  31. package/dist/{chunk-VMQLQEGG.js → chunk-MGLRKGCH.js} +156 -98
  32. package/dist/chunk-MGLRKGCH.js.br +0 -0
  33. package/dist/chunk-MGLRKGCH.js.gz +0 -0
  34. package/dist/{chunk-AJPW5FS7.mjs → chunk-XRYREYXC.mjs} +156 -98
  35. package/dist/chunk-XRYREYXC.mjs.br +0 -0
  36. package/dist/chunk-XRYREYXC.mjs.gz +0 -0
  37. package/dist/{chunk-YQHPV3VP.js → chunk-XW5OMXW6.js} +915 -954
  38. package/dist/chunk-XW5OMXW6.js.br +0 -0
  39. package/dist/chunk-XW5OMXW6.js.gz +0 -0
  40. package/dist/{dist-55M4L5OI.js → dist-2ZAH7U6U.js} +507 -507
  41. package/dist/dist-2ZAH7U6U.js.br +0 -0
  42. package/dist/dist-2ZAH7U6U.js.gz +0 -0
  43. package/dist/{dist-C5CVVTDM.mjs → dist-MXDC6YTS.mjs} +1 -1
  44. package/dist/dist-MXDC6YTS.mjs.br +0 -0
  45. package/dist/dist-MXDC6YTS.mjs.gz +0 -0
  46. package/dist/hooks-unstable.d.ts +9683 -1886
  47. package/dist/hooks-unstable.d.ts.map +1 -0
  48. package/dist/hooks-unstable.js +74 -74
  49. package/dist/hooks-unstable.js.br +0 -0
  50. package/dist/hooks-unstable.js.gz +0 -0
  51. package/dist/hooks-unstable.mjs +3 -3
  52. package/dist/hooks-unstable.mjs.br +0 -0
  53. package/dist/hooks-unstable.mjs.gz +0 -0
  54. package/dist/i18n.d.ts +27 -1
  55. package/dist/i18n.d.ts.map +1 -0
  56. package/dist/index-XGt7MZpa.d.ts +607 -0
  57. package/dist/index-XGt7MZpa.d.ts.map +1 -0
  58. package/dist/index.d.ts +4753 -10
  59. package/dist/index.d.ts.map +1 -0
  60. package/dist/index.js +18 -18
  61. package/dist/index.js.br +0 -0
  62. package/dist/index.js.gz +0 -0
  63. package/dist/index.mjs +4 -4
  64. package/dist/index.mjs.br +0 -0
  65. package/dist/index.mjs.gz +0 -0
  66. package/dist/types-BK7Nt13M.d.ts +483 -0
  67. package/dist/types-BK7Nt13M.d.ts.map +1 -0
  68. package/dist/viewer/index.d.ts +8008 -88
  69. package/dist/viewer/index.d.ts.map +1 -0
  70. package/dist/viewer/index.js +19 -19
  71. package/dist/viewer/index.js.br +0 -0
  72. package/dist/viewer/index.js.gz +0 -0
  73. package/dist/viewer/index.mjs +4 -4
  74. package/dist/viewer/index.mjs.br +0 -0
  75. package/dist/viewer/index.mjs.gz +0 -0
  76. package/package.json +6 -5
  77. package/dist/Model3DScene-DDKQ372V.mjs.br +0 -0
  78. package/dist/Model3DScene-DDKQ372V.mjs.gz +0 -0
  79. package/dist/Model3DScene-UBHBPNJ2.js.br +0 -0
  80. package/dist/Model3DScene-UBHBPNJ2.js.gz +0 -0
  81. package/dist/PowerPointViewer-BsaUH3ZT.d.ts +0 -26
  82. package/dist/PowerPointViewer-Nxku67uL.d.mts +0 -26
  83. package/dist/SurfaceChart3DScene-MNFDDCYS.js.br +0 -0
  84. package/dist/SurfaceChart3DScene-MNFDDCYS.js.gz +0 -0
  85. package/dist/SurfaceChart3DScene-VSUUH2MX.mjs.br +0 -0
  86. package/dist/SurfaceChart3DScene-VSUUH2MX.mjs.gz +0 -0
  87. package/dist/chunk-4LRPKUP7.js.br +0 -0
  88. package/dist/chunk-4LRPKUP7.js.gz +0 -0
  89. package/dist/chunk-AJPW5FS7.mjs.br +0 -0
  90. package/dist/chunk-AJPW5FS7.mjs.gz +0 -0
  91. package/dist/chunk-TLGPM7SI.js.br +0 -0
  92. package/dist/chunk-TLGPM7SI.js.gz +0 -0
  93. package/dist/chunk-VMQLQEGG.js.br +0 -0
  94. package/dist/chunk-VMQLQEGG.js.gz +0 -0
  95. package/dist/chunk-XOSQDCHZ.mjs.br +0 -0
  96. package/dist/chunk-XOSQDCHZ.mjs.gz +0 -0
  97. package/dist/chunk-YARAQWA4.mjs.br +0 -0
  98. package/dist/chunk-YARAQWA4.mjs.gz +0 -0
  99. package/dist/chunk-YQHPV3VP.js.br +0 -0
  100. package/dist/chunk-YQHPV3VP.js.gz +0 -0
  101. package/dist/chunk-YW23L4KK.mjs.br +0 -0
  102. package/dist/chunk-YW23L4KK.mjs.gz +0 -0
  103. package/dist/dist-55M4L5OI.js.br +0 -0
  104. package/dist/dist-55M4L5OI.js.gz +0 -0
  105. package/dist/dist-C5CVVTDM.mjs.br +0 -0
  106. package/dist/dist-C5CVVTDM.mjs.gz +0 -0
  107. package/dist/hooks-unstable.d.mts +0 -2300
  108. package/dist/i18n.d.mts +0 -1
  109. package/dist/index.d.mts +0 -46
  110. package/dist/types-ui-NG29h55h.d.mts +0 -712
  111. package/dist/types-ui-NG29h55h.d.ts +0 -712
  112. package/dist/usePresenterWindow-DToCijGy.d.ts +0 -1619
  113. package/dist/usePresenterWindow-DeTm-unp.d.mts +0 -1619
  114. package/dist/viewer/index.d.mts +0 -129
@@ -18457,7 +18457,7 @@ function stripParentDirSegments(path) {
18457
18457
  } while (result !== previous);
18458
18458
  return result;
18459
18459
  }
18460
- var OLE_MAGIC = new Uint8Array([208, 207, 17, 224, 161, 27, 26, 225]);
18460
+ var OLE_MAGIC = new Uint8Array([208, 207, 17, 224, 161, 177, 26, 225]);
18461
18461
  var ENDOFCHAIN = 4294967294;
18462
18462
  var FREESECT = 4294967295;
18463
18463
  var FATSECT = 4294967293;
@@ -24895,7 +24895,7 @@ function resolveLayoutCategory(layoutType) {
24895
24895
  }
24896
24896
  return "list";
24897
24897
  }
24898
- var OLE_MAGIC2 = new Uint8Array([208, 207, 17, 224, 161, 27, 26, 225]);
24898
+ var OLE_MAGIC2 = new Uint8Array([208, 207, 17, 224, 161, 177, 26, 225]);
24899
24899
  var ZIP_MAGIC = new Uint8Array([80, 75]);
24900
24900
  function detectFileFormat(data) {
24901
24901
  if (data.byteLength < 8) {
@@ -25579,15 +25579,9 @@ async function verifyAgilePassword(info, password) {
25579
25579
  pke.keyBits,
25580
25580
  pke.hashSize
25581
25581
  );
25582
- const iv1 = generateIV(
25583
- pke.hashAlgorithm,
25584
- pke.saltValue,
25585
- BLOCK_KEYS.verifierHashInput,
25586
- pke.blockSize
25587
- );
25588
25582
  const verifierHashInput = await aesCbcDecryptRaw(
25589
25583
  verifierInputKey,
25590
- await iv1,
25584
+ pke.saltValue,
25591
25585
  pke.encryptedVerifierHashInput
25592
25586
  );
25593
25587
  const verifierHashKey = await deriveAgileKey(
@@ -25599,15 +25593,9 @@ async function verifyAgilePassword(info, password) {
25599
25593
  pke.keyBits,
25600
25594
  pke.hashSize
25601
25595
  );
25602
- const iv2 = generateIV(
25603
- pke.hashAlgorithm,
25604
- pke.saltValue,
25605
- BLOCK_KEYS.verifierHashValue,
25606
- pke.blockSize
25607
- );
25608
25596
  const verifierHashValue = await aesCbcDecryptRaw(
25609
25597
  verifierHashKey,
25610
- await iv2,
25598
+ pke.saltValue,
25611
25599
  pke.encryptedVerifierHashValue
25612
25600
  );
25613
25601
  const computedHash = await hash(pke.hashAlgorithm, verifierHashInput.subarray(0, pke.saltSize));
@@ -25632,13 +25620,7 @@ async function verifyAgilePassword(info, password) {
25632
25620
  pke.keyBits,
25633
25621
  pke.hashSize
25634
25622
  );
25635
- const iv3 = await generateIV(
25636
- pke.hashAlgorithm,
25637
- pke.saltValue,
25638
- BLOCK_KEYS.encryptedKeyValue,
25639
- pke.blockSize
25640
- );
25641
- const decryptedKey = await aesCbcDecryptRaw(encKeyKey, iv3, pke.encryptedKeyValue);
25623
+ const decryptedKey = await aesCbcDecryptRaw(encKeyKey, pke.saltValue, pke.encryptedKeyValue);
25642
25624
  return decryptedKey.subarray(0, info.keyData.keyBits / 8);
25643
25625
  }
25644
25626
  async function verifyStandardPassword(info, password) {
@@ -25691,8 +25673,7 @@ async function verifyAgileDataIntegrity(info, key, encryptedPackage) {
25691
25673
  info.dataIntegrity.encryptedHmacValue
25692
25674
  );
25693
25675
  const expectedHmac = decryptedHmacValue.subarray(0, keyData.hashSize);
25694
- const encryptedContent = encryptedPackage.subarray(8);
25695
- const computedHmac = await hmac(keyData.hashAlgorithm, hmacKey, encryptedContent);
25676
+ const computedHmac = await hmac(keyData.hashAlgorithm, hmacKey, encryptedPackage);
25696
25677
  let match = true;
25697
25678
  if (computedHmac.length < keyData.hashSize) {
25698
25679
  match = false;
@@ -25842,14 +25823,13 @@ async function encryptPptx(pptxBuffer, password, options) {
25842
25823
  keyBits,
25843
25824
  hashSize
25844
25825
  );
25845
- const iv1 = await generateIV(hashAlgorithm, pkeSalt, BLOCK_KEYS.verifierHashInput, blockSize);
25846
25826
  const paddedVerifierInput = new Uint8Array(
25847
25827
  Math.ceil(verifierHashInput.length / blockSize) * blockSize
25848
25828
  );
25849
25829
  paddedVerifierInput.set(verifierHashInput);
25850
25830
  const encryptedVerifierHashInput = await aesCbcEncryptNoPad(
25851
25831
  verifierInputKey,
25852
- iv1,
25832
+ pkeSalt,
25853
25833
  paddedVerifierInput
25854
25834
  );
25855
25835
  const verifierHashKey = await deriveAgileKey(
@@ -25861,12 +25841,11 @@ async function encryptPptx(pptxBuffer, password, options) {
25861
25841
  keyBits,
25862
25842
  hashSize
25863
25843
  );
25864
- const iv2 = await generateIV(hashAlgorithm, pkeSalt, BLOCK_KEYS.verifierHashValue, blockSize);
25865
25844
  const paddedVerifierHash = new Uint8Array(Math.ceil(verifierHash.length / blockSize) * blockSize);
25866
25845
  paddedVerifierHash.set(verifierHash);
25867
25846
  const encryptedVerifierHashValue = await aesCbcEncryptNoPad(
25868
25847
  verifierHashKey,
25869
- iv2,
25848
+ pkeSalt,
25870
25849
  paddedVerifierHash
25871
25850
  );
25872
25851
  const encKeyKey = await deriveAgileKey(
@@ -25878,10 +25857,9 @@ async function encryptPptx(pptxBuffer, password, options) {
25878
25857
  keyBits,
25879
25858
  hashSize
25880
25859
  );
25881
- const iv3 = await generateIV(hashAlgorithm, pkeSalt, BLOCK_KEYS.encryptedKeyValue, blockSize);
25882
25860
  const paddedDocumentKey = new Uint8Array(Math.ceil(documentKey.length / blockSize) * blockSize);
25883
25861
  paddedDocumentKey.set(documentKey);
25884
- const encryptedKeyValue = await aesCbcEncryptNoPad(encKeyKey, iv3, paddedDocumentKey);
25862
+ const encryptedKeyValue = await aesCbcEncryptNoPad(encKeyKey, pkeSalt, paddedDocumentKey);
25885
25863
  const encInfo = {
25886
25864
  keyData: {
25887
25865
  saltSize: 16,
@@ -25917,7 +25895,7 @@ async function encryptPptx(pptxBuffer, password, options) {
25917
25895
  const encryptedPackage = await encryptAgilePackage(packageData, documentKey, encInfo);
25918
25896
  const hmacKeyRandom = new Uint8Array(hashSize);
25919
25897
  crypto2.getRandomValues(hmacKeyRandom);
25920
- const hmacValue = await hmac(hashAlgorithm, hmacKeyRandom, encryptedPackage.subarray(8));
25898
+ const hmacValue = await hmac(hashAlgorithm, hmacKeyRandom, encryptedPackage);
25921
25899
  const hmacKeyIV = await generateIV(
25922
25900
  hashAlgorithm,
25923
25901
  keyDataSalt,
@@ -27052,6 +27030,7 @@ var FONT_SUBSTITUTION_MAP = {
27052
27030
  MoolBoran: ["Noto Sans Khmer", "sans-serif"],
27053
27031
  // Decorative / Display
27054
27032
  "Century Gothic": ["URW Gothic", "Futura", "sans-serif"],
27033
+ Oswald: ["Agency FB", "Arial Narrow", "sans-serif"],
27055
27034
  "Franklin Gothic": ["Liberation Sans", "Helvetica Neue", "sans-serif"],
27056
27035
  "Franklin Gothic Medium": ["Liberation Sans", "Helvetica Neue", "sans-serif"],
27057
27036
  Garamond: ["EB Garamond", "Cormorant Garamond", "serif"],
@@ -36874,8 +36853,8 @@ var PptxHandlerRuntime18 = class extends PptxHandlerRuntime17 {
36874
36853
  }
36875
36854
  };
36876
36855
  var PptxHandlerRuntime19 = class _PptxHandlerRuntime4 extends PptxHandlerRuntime18 {
36877
- extractTextRunStyle(runProperties, align, relationshipMap) {
36878
- const style = { align };
36856
+ extractTextRunStyle(runProperties, align, relationshipMap, includeDefaultAlignment = true) {
36857
+ const style = includeDefaultAlignment ? { align } : {};
36879
36858
  if (!runProperties) {
36880
36859
  return style;
36881
36860
  }
@@ -44111,11 +44090,12 @@ var PptxHandlerRuntime42 = class _PptxHandlerRuntime13 extends PptxHandlerRuntim
44111
44090
  if (!source) {
44112
44091
  return true;
44113
44092
  }
44093
+ const typesMatch = source.type === target.type || source.type === "ctrtitle" && target.type === "title" || source.type === "subtitle" && target.type === "body";
44114
44094
  if (source.idx !== void 0 && target.idx !== void 0) {
44115
44095
  if (source.idx !== target.idx) {
44116
44096
  return false;
44117
44097
  }
44118
- if (source.type && target.type && source.type !== target.type) {
44098
+ if (source.type && target.type && !typesMatch) {
44119
44099
  return false;
44120
44100
  }
44121
44101
  return true;
@@ -44123,11 +44103,11 @@ var PptxHandlerRuntime42 = class _PptxHandlerRuntime13 extends PptxHandlerRuntim
44123
44103
  if (source.idx !== void 0 && target.idx === void 0) {
44124
44104
  const singletonTypes = /* @__PURE__ */ new Set(["title", "ctrtitle", "subtitle", "dt", "ftr", "sldnum"]);
44125
44105
  if (source.type && singletonTypes.has(source.type)) {
44126
- return target.type === source.type;
44106
+ return typesMatch;
44127
44107
  }
44128
44108
  return false;
44129
44109
  }
44130
- if (source.type && target.type && source.type !== target.type) {
44110
+ if (source.type && target.type && !typesMatch) {
44131
44111
  return false;
44132
44112
  }
44133
44113
  if (source.type && !target.type) {
@@ -44169,18 +44149,21 @@ var PptxHandlerRuntime43 = class extends PptxHandlerRuntime42 {
44169
44149
  xmlPath(layoutXmlObj, "p:sldLayout", "p:cSld", "p:spTree"),
44170
44150
  expected
44171
44151
  );
44172
- if (layoutContext) {
44173
- return layoutContext;
44174
- }
44175
44152
  const masterPath = this.resolveMasterPathForLayout(layoutPath);
44176
- if (!masterPath) {
44177
- return void 0;
44178
- }
44179
- const masterXmlObj = this.masterXmlMap.get(masterPath);
44180
- return this.findPlaceholderInShapeTree(
44181
- xmlPath(masterXmlObj, "p:sldMaster", "p:cSld", "p:spTree"),
44153
+ const masterContext = masterPath ? this.findPlaceholderInShapeTree(
44154
+ xmlPath(this.masterXmlMap.get(masterPath), "p:sldMaster", "p:cSld", "p:spTree"),
44182
44155
  expected
44183
- );
44156
+ ) : void 0;
44157
+ if (!layoutContext) {
44158
+ return masterContext;
44159
+ }
44160
+ if (!masterContext) {
44161
+ return layoutContext;
44162
+ }
44163
+ return {
44164
+ shape: layoutContext.shape || masterContext.shape ? this.mergeXmlObjects(masterContext.shape, layoutContext.shape) : void 0,
44165
+ picture: layoutContext.picture || masterContext.picture ? this.mergeXmlObjects(masterContext.picture, layoutContext.picture) : void 0
44166
+ };
44184
44167
  }
44185
44168
  mergeXmlObjects(base, override, depth = 0) {
44186
44169
  const MAX_MERGE_DEPTH = 64;
@@ -44233,10 +44216,11 @@ var PptxHandlerRuntime43 = class extends PptxHandlerRuntime42 {
44233
44216
  * otherwise falls back to `type`.
44234
44217
  */
44235
44218
  buildPlaceholderDefaultsKey(phInfo) {
44219
+ const normalizedType = phInfo.type === "ctrtitle" ? "title" : phInfo.type === "subtitle" ? "body" : phInfo.type;
44236
44220
  if (phInfo.idx !== void 0) {
44237
- return phInfo.type ? `${phInfo.type}_${phInfo.idx}` : `_${phInfo.idx}`;
44221
+ return normalizedType ? `${normalizedType}_${phInfo.idx}` : `_${phInfo.idx}`;
44238
44222
  }
44239
- return phInfo.type ?? "body";
44223
+ return normalizedType ?? "body";
44240
44224
  }
44241
44225
  /**
44242
44226
  * Look up merged {@link PlaceholderDefaults} for a shape's placeholder
@@ -44254,44 +44238,52 @@ var PptxHandlerRuntime43 = class extends PptxHandlerRuntime42 {
44254
44238
  const masterPath = this.resolveMasterPathForLayout(layoutPath);
44255
44239
  const masterMap = masterPath ? this.masterPlaceholderDefaultsCache.get(masterPath) : void 0;
44256
44240
  const masterDefaults = masterMap?.get(phKey);
44257
- if (!layoutDefaults && !masterDefaults) {
44241
+ const normalizedType = this.buildPlaceholderDefaultsKey(phInfo).split("_")[0];
44242
+ const masterTextStyleType = phInfo.type === "title" || phInfo.type === "ctrtitle" ? "title" : phInfo.type === "body" || phInfo.type === "obj" || phInfo.type === "subtitle" ? "body" : "other";
44243
+ const masterTextStyles = masterPath ? this.masterTxStylesCache.get(masterPath) : void 0;
44244
+ const masterTextLevels = masterTextStyleType === "title" ? masterTextStyles?.titleStyle : masterTextStyleType === "body" ? masterTextStyles?.bodyStyle : masterTextStyles?.otherStyle;
44245
+ const resolvedMasterDefaults = masterTextLevels ? {
44246
+ type: masterDefaults?.type ?? normalizedType,
44247
+ ...masterDefaults,
44248
+ levelStyles: this.mergePlaceholderLevelStyles(
44249
+ masterTextLevels,
44250
+ masterDefaults?.levelStyles
44251
+ )
44252
+ } : masterDefaults;
44253
+ if (!layoutDefaults && !resolvedMasterDefaults) {
44258
44254
  return void 0;
44259
44255
  }
44260
- if (!masterDefaults) {
44256
+ if (!resolvedMasterDefaults) {
44261
44257
  return layoutDefaults;
44262
44258
  }
44263
44259
  if (!layoutDefaults) {
44264
- return masterDefaults;
44260
+ return resolvedMasterDefaults;
44265
44261
  }
44266
44262
  const merged = {
44267
44263
  type: layoutDefaults.type,
44268
- idx: layoutDefaults.idx ?? masterDefaults.idx,
44269
- bodyInsetLeft: layoutDefaults.bodyInsetLeft ?? masterDefaults.bodyInsetLeft,
44270
- bodyInsetTop: layoutDefaults.bodyInsetTop ?? masterDefaults.bodyInsetTop,
44271
- bodyInsetRight: layoutDefaults.bodyInsetRight ?? masterDefaults.bodyInsetRight,
44272
- bodyInsetBottom: layoutDefaults.bodyInsetBottom ?? masterDefaults.bodyInsetBottom,
44273
- textAnchor: layoutDefaults.textAnchor ?? masterDefaults.textAnchor,
44274
- autoFit: layoutDefaults.autoFit ?? masterDefaults.autoFit,
44275
- textWrap: layoutDefaults.textWrap ?? masterDefaults.textWrap,
44276
- promptText: layoutDefaults.promptText ?? masterDefaults.promptText
44264
+ idx: layoutDefaults.idx ?? resolvedMasterDefaults.idx,
44265
+ bodyInsetLeft: layoutDefaults.bodyInsetLeft ?? resolvedMasterDefaults.bodyInsetLeft,
44266
+ bodyInsetTop: layoutDefaults.bodyInsetTop ?? resolvedMasterDefaults.bodyInsetTop,
44267
+ bodyInsetRight: layoutDefaults.bodyInsetRight ?? resolvedMasterDefaults.bodyInsetRight,
44268
+ bodyInsetBottom: layoutDefaults.bodyInsetBottom ?? resolvedMasterDefaults.bodyInsetBottom,
44269
+ textAnchor: layoutDefaults.textAnchor ?? resolvedMasterDefaults.textAnchor,
44270
+ autoFit: layoutDefaults.autoFit ?? resolvedMasterDefaults.autoFit,
44271
+ textWrap: layoutDefaults.textWrap ?? resolvedMasterDefaults.textWrap,
44272
+ promptText: layoutDefaults.promptText ?? resolvedMasterDefaults.promptText
44277
44273
  };
44278
- if (layoutDefaults.levelStyles || masterDefaults.levelStyles) {
44279
- const mergedLevels = {};
44280
- const allLevelKeys = /* @__PURE__ */ new Set([
44281
- ...Object.keys(layoutDefaults.levelStyles ?? {}),
44282
- ...Object.keys(masterDefaults.levelStyles ?? {})
44283
- ]);
44284
- for (const keyStr of allLevelKeys) {
44285
- const key = Number.parseInt(keyStr, 10);
44286
- const layoutLevel = layoutDefaults.levelStyles?.[key];
44287
- const masterLevel = masterDefaults.levelStyles?.[key];
44288
- if (layoutLevel && masterLevel) {
44289
- mergedLevels[key] = { ...masterLevel, ...layoutLevel };
44290
- } else {
44291
- mergedLevels[key] = layoutLevel ?? masterLevel;
44292
- }
44293
- }
44294
- merged.levelStyles = mergedLevels;
44274
+ if (layoutDefaults.levelStyles || resolvedMasterDefaults.levelStyles) {
44275
+ merged.levelStyles = this.mergePlaceholderLevelStyles(
44276
+ resolvedMasterDefaults.levelStyles,
44277
+ layoutDefaults.levelStyles
44278
+ );
44279
+ }
44280
+ return merged;
44281
+ }
44282
+ mergePlaceholderLevelStyles(base, override) {
44283
+ const merged = {};
44284
+ for (const key of /* @__PURE__ */ new Set([...Object.keys(base ?? {}), ...Object.keys(override ?? {})])) {
44285
+ const level = Number.parseInt(key, 10);
44286
+ merged[level] = { ...base?.[level], ...override?.[level] };
44295
44287
  }
44296
44288
  return merged;
44297
44289
  }
@@ -45577,7 +45569,11 @@ var PptxHandlerRuntime49 = class _PptxHandlerRuntime17 extends PptxHandlerRuntim
45577
45569
  * for "first-wins" shape-level properties.
45578
45570
  */
45579
45571
  resolveShapeParagraphStyle(p, textStyle, ctx) {
45580
- const pPr = p["a:pPr"];
45572
+ const inheritedParagraph = this.ensureArray(ctx.inheritedTxBody?.["a:p"])[0];
45573
+ const pPr = this.mergeXmlObjects(
45574
+ inheritedParagraph?.["a:pPr"],
45575
+ p["a:pPr"]
45576
+ );
45581
45577
  const paragraphRtl = this.parseOptionalBooleanAttr(pPr?.["@_rtl"]);
45582
45578
  if (paragraphRtl !== void 0 && textStyle.rtl === void 0) {
45583
45579
  textStyle.rtl = paragraphRtl;
@@ -45693,24 +45689,28 @@ var PptxHandlerRuntime49 = class _PptxHandlerRuntime17 extends PptxHandlerRuntim
45693
45689
  const defaultRunStyle = this.extractTextRunStyle(
45694
45690
  pPr?.["a:defRPr"],
45695
45691
  paraAlign,
45696
- ctx.slideRelationshipMap
45692
+ ctx.slideRelationshipMap,
45693
+ false
45697
45694
  );
45698
- const level = Number.parseInt(String(pPr?.["@_lvl"] || "0"), 10);
45699
- const levelKey = `a:lvl${Number.isFinite(level) ? Math.min(Math.max(level + 1, 1), 9) : 1}pPr`;
45695
+ const level = pPr?.["@_lvl"] === void 0 ? -1 : Number.parseInt(String(pPr["@_lvl"]), 10);
45696
+ const levelKey = level === -1 ? "a:defPPr" : `a:lvl${Number.isFinite(level) ? Math.min(Math.max(level + 1, 1), 9) : 1}pPr`;
45700
45697
  const inheritedLevelStyle = this.extractTextRunStyle(
45701
45698
  ctx.inheritedTxBody?.["a:lstStyle"]?.[levelKey]?.["a:defRPr"],
45702
45699
  paraAlign,
45703
- ctx.slideRelationshipMap
45700
+ ctx.slideRelationshipMap,
45701
+ false
45704
45702
  );
45705
45703
  const bodyLevelStyle = this.extractTextRunStyle(
45706
45704
  ctx.txBody?.["a:lstStyle"]?.[levelKey]?.["a:defRPr"],
45707
45705
  paraAlign,
45708
- ctx.slideRelationshipMap
45706
+ ctx.slideRelationshipMap,
45707
+ false
45709
45708
  );
45710
45709
  const endParagraphStyle = this.extractTextRunStyle(
45711
45710
  p?.["a:endParaRPr"],
45712
45711
  paraAlign,
45713
- ctx.slideRelationshipMap
45712
+ ctx.slideRelationshipMap,
45713
+ false
45714
45714
  );
45715
45715
  const mergedDefaultRunStyle = {
45716
45716
  ...ctx.bodyDefaultRunStyle,
@@ -45720,20 +45720,23 @@ var PptxHandlerRuntime49 = class _PptxHandlerRuntime17 extends PptxHandlerRuntim
45720
45720
  ...defaultRunStyle
45721
45721
  };
45722
45722
  if (ctx.effectiveLevelStyles) {
45723
- const normalizedLevel = Number.isFinite(level) ? Math.min(Math.max(level, 0), 8) : 0;
45724
- const phLevel = ctx.effectiveLevelStyles[normalizedLevel] ?? ctx.effectiveLevelStyles[-1];
45723
+ const normalizedLevel = level === -1 ? -1 : Number.isFinite(level) ? Math.min(Math.max(level, 0), 8) : 0;
45724
+ const phLevel = ctx.effectiveLevelStyles[normalizedLevel] ?? ctx.effectiveLevelStyles[-1] ?? (normalizedLevel === -1 ? ctx.effectiveLevelStyles[0] : void 0);
45725
45725
  if (phLevel) {
45726
45726
  this.applyPlaceholderLevelDefaults(mergedDefaultRunStyle, phLevel);
45727
45727
  this.applyPlaceholderLevelDefaults(textStyle, phLevel);
45728
45728
  }
45729
45729
  }
45730
+ if (pPr?.["@_algn"] === void 0 && textStyle.align !== void 0) {
45731
+ paraAlign = textStyle.align;
45732
+ }
45730
45733
  const parMarginLeft = pPr?.["@_marL"] !== void 0 ? Number.parseInt(String(pPr["@_marL"]), 10) / _PptxHandlerRuntime17.EMU_PER_PX : void 0;
45731
45734
  const parIndent = pPr?.["@_indent"] !== void 0 ? Number.parseInt(String(pPr["@_indent"]), 10) / _PptxHandlerRuntime17.EMU_PER_PX : void 0;
45732
45735
  let effectiveMarginLeft = parMarginLeft;
45733
45736
  let effectiveIndent = parIndent;
45734
45737
  if (ctx.effectiveLevelStyles) {
45735
- const normalizedLevel = Number.isFinite(level) ? Math.min(Math.max(level, 0), 8) : 0;
45736
- const phLevel = ctx.effectiveLevelStyles[normalizedLevel] ?? ctx.effectiveLevelStyles[-1];
45738
+ const normalizedLevel = level === -1 ? -1 : Number.isFinite(level) ? Math.min(Math.max(level, 0), 8) : 0;
45739
+ const phLevel = ctx.effectiveLevelStyles[normalizedLevel] ?? ctx.effectiveLevelStyles[-1] ?? (normalizedLevel === -1 ? ctx.effectiveLevelStyles[0] : void 0);
45737
45740
  if (phLevel) {
45738
45741
  if (effectiveMarginLeft === void 0 && phLevel.marginLeft !== void 0) {
45739
45742
  effectiveMarginLeft = phLevel.marginLeft;
@@ -45897,11 +45900,23 @@ var PptxHandlerRuntime50 = class extends PptxHandlerRuntime49 {
45897
45900
  continue;
45898
45901
  }
45899
45902
  const items = this.ensureArray(p[key]);
45900
- for (const item of items) {
45903
+ const rawBreaks = p["a:br"];
45904
+ const breakCount = Array.isArray(rawBreaks) ? rawBreaks.length : rawBreaks === void 0 ? 0 : 1;
45905
+ const insertCollapsedBreaks = key === "a:r" && items.length > 1 && breakCount > 0;
45906
+ for (const [itemIndex, item] of items.entries()) {
45901
45907
  switch (key) {
45902
- case "a:r":
45908
+ case "a:r": {
45903
45909
  processRun(item);
45910
+ if (insertCollapsedBreaks && itemIndex < Math.min(items.length - 1, breakCount)) {
45911
+ parts.push("\n");
45912
+ segments.push({
45913
+ text: "\n",
45914
+ style: { ...mergedDefaultRunStyle },
45915
+ isLineBreak: true
45916
+ });
45917
+ }
45904
45918
  break;
45919
+ }
45905
45920
  case "a:fld":
45906
45921
  processField(item);
45907
45922
  break;
@@ -45919,6 +45934,9 @@ var PptxHandlerRuntime50 = class extends PptxHandlerRuntime49 {
45919
45934
  processAlternateContent(item);
45920
45935
  break;
45921
45936
  case "a:br": {
45937
+ if (insertCollapsedBreaks) {
45938
+ break;
45939
+ }
45922
45940
  const brNode = item ?? {};
45923
45941
  const brRunProps = brNode["a:rPr"];
45924
45942
  const brStyle = {
@@ -46079,7 +46097,13 @@ var PptxHandlerRuntime51 = class _PptxHandlerRuntime18 extends PptxHandlerRuntim
46079
46097
  );
46080
46098
  const inheritedPlaceholder = slidePath && placeholderInfo ? this.findPlaceholderContext(slidePath, placeholderInfo) : void 0;
46081
46099
  const inheritedSpPr = inheritedPlaceholder?.shape?.["p:spPr"] || inheritedPlaceholder?.picture?.["p:spPr"];
46082
- const effectiveSpPr = this.mergeXmlObjects(inheritedSpPr, spPr);
46100
+ const effectiveSpPr = spPr ? {
46101
+ ...spPr,
46102
+ "a:xfrm": this.mergeXmlObjects(
46103
+ inheritedSpPr?.["a:xfrm"],
46104
+ spPr["a:xfrm"]
46105
+ )
46106
+ } : inheritedSpPr;
46083
46107
  const xfrm = effectiveSpPr?.["a:xfrm"] || spPr?.["a:xfrm"] || inheritedSpPr?.["a:xfrm"];
46084
46108
  if (!xfrm) {
46085
46109
  return null;
@@ -46157,14 +46181,16 @@ var PptxHandlerRuntime51 = class _PptxHandlerRuntime18 extends PptxHandlerRuntim
46157
46181
  const inheritedBodyDefaultRunStyle = this.extractTextRunStyle(
46158
46182
  xmlPath(inheritedTxBody, "a:lstStyle", "a:defPPr", "a:defRPr"),
46159
46183
  "left",
46160
- slideRelationshipMap
46184
+ slideRelationshipMap,
46185
+ false
46161
46186
  );
46162
46187
  const bodyDefaultRunStyle = {
46163
46188
  ...inheritedBodyDefaultRunStyle,
46164
46189
  ...this.extractTextRunStyle(
46165
46190
  xmlPath(txBody, "a:lstStyle", "a:defPPr", "a:defRPr"),
46166
46191
  "left",
46167
- slideRelationshipMap
46192
+ slideRelationshipMap,
46193
+ false
46168
46194
  )
46169
46195
  };
46170
46196
  Object.assign(textStyle, bodyDefaultRunStyle);
@@ -48531,6 +48557,21 @@ var PptxHandlerRuntime61 = class extends PptxHandlerRuntime60 {
48531
48557
  element.id = `master-${element.id}`;
48532
48558
  elements.push(element);
48533
48559
  }
48560
+ } else if (entry.tag === "p:cxnSp") {
48561
+ const connectors = this.ensureArray(spTree["p:cxnSp"]);
48562
+ const connector = connectors[entry.indexInType];
48563
+ if (!connector) {
48564
+ continue;
48565
+ }
48566
+ const element = this.parseConnector(
48567
+ connector,
48568
+ `master-conn-${masterToken}-${entry.indexInType}`,
48569
+ masterPath
48570
+ );
48571
+ if (element) {
48572
+ element.id = `master-${element.id}`;
48573
+ elements.push(element);
48574
+ }
48534
48575
  }
48535
48576
  }
48536
48577
  this.masterCache.set(masterPath, elements);
@@ -48667,6 +48708,21 @@ var PptxHandlerRuntime62 = class extends PptxHandlerRuntime61 {
48667
48708
  element.id = `layout-${element.id}`;
48668
48709
  elements.push(element);
48669
48710
  }
48711
+ } else if (entry.tag === "p:cxnSp") {
48712
+ const connectors = this.ensureArray(spTree["p:cxnSp"]);
48713
+ const connector = connectors[entry.indexInType];
48714
+ if (!connector) {
48715
+ continue;
48716
+ }
48717
+ const element = this.parseConnector(
48718
+ connector,
48719
+ `layout-conn-${layoutToken}-${entry.indexInType}`,
48720
+ layoutPath
48721
+ );
48722
+ if (element) {
48723
+ element.id = `layout-${element.id}`;
48724
+ elements.push(element);
48725
+ }
48670
48726
  }
48671
48727
  }
48672
48728
  const layoutShowMasterSp = xmlAttr(
@@ -52334,6 +52390,7 @@ var PptxHandlerRuntime79 = class _PptxHandlerRuntime28 extends PptxHandlerRuntim
52334
52390
  this.masterCache.clear();
52335
52391
  this.layoutXmlMap.clear();
52336
52392
  this.masterXmlMap.clear();
52393
+ this.masterTxStylesCache.clear();
52337
52394
  if (typeof globalThis.URL?.revokeObjectURL === "function" && this.blobUrlCache.size > 0) {
52338
52395
  for (const url of this.blobUrlCache) {
52339
52396
  URL.revokeObjectURL(url);
@@ -52616,7 +52673,7 @@ var PptxHandlerRuntime79 = class _PptxHandlerRuntime28 extends PptxHandlerRuntim
52616
52673
  }
52617
52674
  };
52618
52675
  var PptxHandlerRuntime80 = class extends PptxHandlerRuntime79 {
52619
- async buildLoadData(presentationState, slidesWithWarnings) {
52676
+ async buildLoadData(presentationState, slidesWithWarnings, slideMasters) {
52620
52677
  const headerFooter = this.extractHeaderFooter();
52621
52678
  const presentationProperties = await this.parsePresentationProperties();
52622
52679
  const customShows = this.parseCustomShows();
@@ -52626,8 +52683,6 @@ var PptxHandlerRuntime80 = class extends PptxHandlerRuntime79 {
52626
52683
  const themeOptions = await this.parseThemeOptions();
52627
52684
  const notesMaster = await this.parseNotesMaster();
52628
52685
  const handoutMaster = await this.parseHandoutMaster();
52629
- const slideMasters = await this.parseSlideMasters();
52630
- await this.enrichSlideMastersWithTxStyles(slideMasters);
52631
52686
  const tags = await this.parseTags();
52632
52687
  const customProperties = await this.parseCustomProperties();
52633
52688
  const coreProperties = await this.parseCoreProperties();
@@ -52747,6 +52802,7 @@ var PptxHandlerRuntime80 = class extends PptxHandlerRuntime79 {
52747
52802
  this.masterCache.clear();
52748
52803
  this.layoutXmlMap.clear();
52749
52804
  this.masterXmlMap.clear();
52805
+ this.masterTxStylesCache.clear();
52750
52806
  this.layoutPlaceholderDefaultsCache.clear();
52751
52807
  this.masterPlaceholderDefaultsCache.clear();
52752
52808
  this.themeOverrideCache.clear();
@@ -52767,10 +52823,12 @@ var PptxHandlerRuntime80 = class extends PptxHandlerRuntime79 {
52767
52823
  this.detectDigitalSignatureParts();
52768
52824
  await this.parseCustomXmlParts();
52769
52825
  const presentationState = await this.loadPresentationState();
52826
+ const slideMasters = await this.parseSlideMasters();
52827
+ await this.enrichSlideMastersWithTxStyles(slideMasters);
52770
52828
  const slides = await this.loadSlidesForPresentation(presentationState.sectionBySlideId);
52771
52829
  const slidesWithWarnings = this.attachSlideWarnings(slides);
52772
52830
  this.resetElementIdCounter(slides);
52773
- return this.buildLoadData(presentationState, slidesWithWarnings);
52831
+ return this.buildLoadData(presentationState, slidesWithWarnings, slideMasters);
52774
52832
  }
52775
52833
  /**
52776
52834
  * Retrieve the current background colour for a layout or master.
Binary file
Binary file