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
@@ -18451,7 +18451,7 @@ function stripParentDirSegments(path) {
18451
18451
  } while (result !== previous);
18452
18452
  return result;
18453
18453
  }
18454
- var OLE_MAGIC = new Uint8Array([208, 207, 17, 224, 161, 27, 26, 225]);
18454
+ var OLE_MAGIC = new Uint8Array([208, 207, 17, 224, 161, 177, 26, 225]);
18455
18455
  var ENDOFCHAIN = 4294967294;
18456
18456
  var FREESECT = 4294967295;
18457
18457
  var FATSECT = 4294967293;
@@ -24889,7 +24889,7 @@ function resolveLayoutCategory(layoutType) {
24889
24889
  }
24890
24890
  return "list";
24891
24891
  }
24892
- var OLE_MAGIC2 = new Uint8Array([208, 207, 17, 224, 161, 27, 26, 225]);
24892
+ var OLE_MAGIC2 = new Uint8Array([208, 207, 17, 224, 161, 177, 26, 225]);
24893
24893
  var ZIP_MAGIC = new Uint8Array([80, 75]);
24894
24894
  function detectFileFormat(data) {
24895
24895
  if (data.byteLength < 8) {
@@ -25573,15 +25573,9 @@ async function verifyAgilePassword(info, password) {
25573
25573
  pke.keyBits,
25574
25574
  pke.hashSize
25575
25575
  );
25576
- const iv1 = generateIV(
25577
- pke.hashAlgorithm,
25578
- pke.saltValue,
25579
- BLOCK_KEYS.verifierHashInput,
25580
- pke.blockSize
25581
- );
25582
25576
  const verifierHashInput = await aesCbcDecryptRaw(
25583
25577
  verifierInputKey,
25584
- await iv1,
25578
+ pke.saltValue,
25585
25579
  pke.encryptedVerifierHashInput
25586
25580
  );
25587
25581
  const verifierHashKey = await deriveAgileKey(
@@ -25593,15 +25587,9 @@ async function verifyAgilePassword(info, password) {
25593
25587
  pke.keyBits,
25594
25588
  pke.hashSize
25595
25589
  );
25596
- const iv2 = generateIV(
25597
- pke.hashAlgorithm,
25598
- pke.saltValue,
25599
- BLOCK_KEYS.verifierHashValue,
25600
- pke.blockSize
25601
- );
25602
25590
  const verifierHashValue = await aesCbcDecryptRaw(
25603
25591
  verifierHashKey,
25604
- await iv2,
25592
+ pke.saltValue,
25605
25593
  pke.encryptedVerifierHashValue
25606
25594
  );
25607
25595
  const computedHash = await hash(pke.hashAlgorithm, verifierHashInput.subarray(0, pke.saltSize));
@@ -25626,13 +25614,7 @@ async function verifyAgilePassword(info, password) {
25626
25614
  pke.keyBits,
25627
25615
  pke.hashSize
25628
25616
  );
25629
- const iv3 = await generateIV(
25630
- pke.hashAlgorithm,
25631
- pke.saltValue,
25632
- BLOCK_KEYS.encryptedKeyValue,
25633
- pke.blockSize
25634
- );
25635
- const decryptedKey = await aesCbcDecryptRaw(encKeyKey, iv3, pke.encryptedKeyValue);
25617
+ const decryptedKey = await aesCbcDecryptRaw(encKeyKey, pke.saltValue, pke.encryptedKeyValue);
25636
25618
  return decryptedKey.subarray(0, info.keyData.keyBits / 8);
25637
25619
  }
25638
25620
  async function verifyStandardPassword(info, password) {
@@ -25685,8 +25667,7 @@ async function verifyAgileDataIntegrity(info, key, encryptedPackage) {
25685
25667
  info.dataIntegrity.encryptedHmacValue
25686
25668
  );
25687
25669
  const expectedHmac = decryptedHmacValue.subarray(0, keyData.hashSize);
25688
- const encryptedContent = encryptedPackage.subarray(8);
25689
- const computedHmac = await hmac(keyData.hashAlgorithm, hmacKey, encryptedContent);
25670
+ const computedHmac = await hmac(keyData.hashAlgorithm, hmacKey, encryptedPackage);
25690
25671
  let match = true;
25691
25672
  if (computedHmac.length < keyData.hashSize) {
25692
25673
  match = false;
@@ -25836,14 +25817,13 @@ async function encryptPptx(pptxBuffer, password, options) {
25836
25817
  keyBits,
25837
25818
  hashSize
25838
25819
  );
25839
- const iv1 = await generateIV(hashAlgorithm, pkeSalt, BLOCK_KEYS.verifierHashInput, blockSize);
25840
25820
  const paddedVerifierInput = new Uint8Array(
25841
25821
  Math.ceil(verifierHashInput.length / blockSize) * blockSize
25842
25822
  );
25843
25823
  paddedVerifierInput.set(verifierHashInput);
25844
25824
  const encryptedVerifierHashInput = await aesCbcEncryptNoPad(
25845
25825
  verifierInputKey,
25846
- iv1,
25826
+ pkeSalt,
25847
25827
  paddedVerifierInput
25848
25828
  );
25849
25829
  const verifierHashKey = await deriveAgileKey(
@@ -25855,12 +25835,11 @@ async function encryptPptx(pptxBuffer, password, options) {
25855
25835
  keyBits,
25856
25836
  hashSize
25857
25837
  );
25858
- const iv2 = await generateIV(hashAlgorithm, pkeSalt, BLOCK_KEYS.verifierHashValue, blockSize);
25859
25838
  const paddedVerifierHash = new Uint8Array(Math.ceil(verifierHash.length / blockSize) * blockSize);
25860
25839
  paddedVerifierHash.set(verifierHash);
25861
25840
  const encryptedVerifierHashValue = await aesCbcEncryptNoPad(
25862
25841
  verifierHashKey,
25863
- iv2,
25842
+ pkeSalt,
25864
25843
  paddedVerifierHash
25865
25844
  );
25866
25845
  const encKeyKey = await deriveAgileKey(
@@ -25872,10 +25851,9 @@ async function encryptPptx(pptxBuffer, password, options) {
25872
25851
  keyBits,
25873
25852
  hashSize
25874
25853
  );
25875
- const iv3 = await generateIV(hashAlgorithm, pkeSalt, BLOCK_KEYS.encryptedKeyValue, blockSize);
25876
25854
  const paddedDocumentKey = new Uint8Array(Math.ceil(documentKey.length / blockSize) * blockSize);
25877
25855
  paddedDocumentKey.set(documentKey);
25878
- const encryptedKeyValue = await aesCbcEncryptNoPad(encKeyKey, iv3, paddedDocumentKey);
25856
+ const encryptedKeyValue = await aesCbcEncryptNoPad(encKeyKey, pkeSalt, paddedDocumentKey);
25879
25857
  const encInfo = {
25880
25858
  keyData: {
25881
25859
  saltSize: 16,
@@ -25911,7 +25889,7 @@ async function encryptPptx(pptxBuffer, password, options) {
25911
25889
  const encryptedPackage = await encryptAgilePackage(packageData, documentKey, encInfo);
25912
25890
  const hmacKeyRandom = new Uint8Array(hashSize);
25913
25891
  crypto2.getRandomValues(hmacKeyRandom);
25914
- const hmacValue = await hmac(hashAlgorithm, hmacKeyRandom, encryptedPackage.subarray(8));
25892
+ const hmacValue = await hmac(hashAlgorithm, hmacKeyRandom, encryptedPackage);
25915
25893
  const hmacKeyIV = await generateIV(
25916
25894
  hashAlgorithm,
25917
25895
  keyDataSalt,
@@ -27046,6 +27024,7 @@ var FONT_SUBSTITUTION_MAP = {
27046
27024
  MoolBoran: ["Noto Sans Khmer", "sans-serif"],
27047
27025
  // Decorative / Display
27048
27026
  "Century Gothic": ["URW Gothic", "Futura", "sans-serif"],
27027
+ Oswald: ["Agency FB", "Arial Narrow", "sans-serif"],
27049
27028
  "Franklin Gothic": ["Liberation Sans", "Helvetica Neue", "sans-serif"],
27050
27029
  "Franklin Gothic Medium": ["Liberation Sans", "Helvetica Neue", "sans-serif"],
27051
27030
  Garamond: ["EB Garamond", "Cormorant Garamond", "serif"],
@@ -36868,8 +36847,8 @@ var PptxHandlerRuntime18 = class extends PptxHandlerRuntime17 {
36868
36847
  }
36869
36848
  };
36870
36849
  var PptxHandlerRuntime19 = class _PptxHandlerRuntime4 extends PptxHandlerRuntime18 {
36871
- extractTextRunStyle(runProperties, align, relationshipMap) {
36872
- const style = { align };
36850
+ extractTextRunStyle(runProperties, align, relationshipMap, includeDefaultAlignment = true) {
36851
+ const style = includeDefaultAlignment ? { align } : {};
36873
36852
  if (!runProperties) {
36874
36853
  return style;
36875
36854
  }
@@ -44105,11 +44084,12 @@ var PptxHandlerRuntime42 = class _PptxHandlerRuntime13 extends PptxHandlerRuntim
44105
44084
  if (!source) {
44106
44085
  return true;
44107
44086
  }
44087
+ const typesMatch = source.type === target.type || source.type === "ctrtitle" && target.type === "title" || source.type === "subtitle" && target.type === "body";
44108
44088
  if (source.idx !== void 0 && target.idx !== void 0) {
44109
44089
  if (source.idx !== target.idx) {
44110
44090
  return false;
44111
44091
  }
44112
- if (source.type && target.type && source.type !== target.type) {
44092
+ if (source.type && target.type && !typesMatch) {
44113
44093
  return false;
44114
44094
  }
44115
44095
  return true;
@@ -44117,11 +44097,11 @@ var PptxHandlerRuntime42 = class _PptxHandlerRuntime13 extends PptxHandlerRuntim
44117
44097
  if (source.idx !== void 0 && target.idx === void 0) {
44118
44098
  const singletonTypes = /* @__PURE__ */ new Set(["title", "ctrtitle", "subtitle", "dt", "ftr", "sldnum"]);
44119
44099
  if (source.type && singletonTypes.has(source.type)) {
44120
- return target.type === source.type;
44100
+ return typesMatch;
44121
44101
  }
44122
44102
  return false;
44123
44103
  }
44124
- if (source.type && target.type && source.type !== target.type) {
44104
+ if (source.type && target.type && !typesMatch) {
44125
44105
  return false;
44126
44106
  }
44127
44107
  if (source.type && !target.type) {
@@ -44163,18 +44143,21 @@ var PptxHandlerRuntime43 = class extends PptxHandlerRuntime42 {
44163
44143
  xmlPath(layoutXmlObj, "p:sldLayout", "p:cSld", "p:spTree"),
44164
44144
  expected
44165
44145
  );
44166
- if (layoutContext) {
44167
- return layoutContext;
44168
- }
44169
44146
  const masterPath = this.resolveMasterPathForLayout(layoutPath);
44170
- if (!masterPath) {
44171
- return void 0;
44172
- }
44173
- const masterXmlObj = this.masterXmlMap.get(masterPath);
44174
- return this.findPlaceholderInShapeTree(
44175
- xmlPath(masterXmlObj, "p:sldMaster", "p:cSld", "p:spTree"),
44147
+ const masterContext = masterPath ? this.findPlaceholderInShapeTree(
44148
+ xmlPath(this.masterXmlMap.get(masterPath), "p:sldMaster", "p:cSld", "p:spTree"),
44176
44149
  expected
44177
- );
44150
+ ) : void 0;
44151
+ if (!layoutContext) {
44152
+ return masterContext;
44153
+ }
44154
+ if (!masterContext) {
44155
+ return layoutContext;
44156
+ }
44157
+ return {
44158
+ shape: layoutContext.shape || masterContext.shape ? this.mergeXmlObjects(masterContext.shape, layoutContext.shape) : void 0,
44159
+ picture: layoutContext.picture || masterContext.picture ? this.mergeXmlObjects(masterContext.picture, layoutContext.picture) : void 0
44160
+ };
44178
44161
  }
44179
44162
  mergeXmlObjects(base, override, depth = 0) {
44180
44163
  const MAX_MERGE_DEPTH = 64;
@@ -44227,10 +44210,11 @@ var PptxHandlerRuntime43 = class extends PptxHandlerRuntime42 {
44227
44210
  * otherwise falls back to `type`.
44228
44211
  */
44229
44212
  buildPlaceholderDefaultsKey(phInfo) {
44213
+ const normalizedType = phInfo.type === "ctrtitle" ? "title" : phInfo.type === "subtitle" ? "body" : phInfo.type;
44230
44214
  if (phInfo.idx !== void 0) {
44231
- return phInfo.type ? `${phInfo.type}_${phInfo.idx}` : `_${phInfo.idx}`;
44215
+ return normalizedType ? `${normalizedType}_${phInfo.idx}` : `_${phInfo.idx}`;
44232
44216
  }
44233
- return phInfo.type ?? "body";
44217
+ return normalizedType ?? "body";
44234
44218
  }
44235
44219
  /**
44236
44220
  * Look up merged {@link PlaceholderDefaults} for a shape's placeholder
@@ -44248,44 +44232,52 @@ var PptxHandlerRuntime43 = class extends PptxHandlerRuntime42 {
44248
44232
  const masterPath = this.resolveMasterPathForLayout(layoutPath);
44249
44233
  const masterMap = masterPath ? this.masterPlaceholderDefaultsCache.get(masterPath) : void 0;
44250
44234
  const masterDefaults = masterMap?.get(phKey);
44251
- if (!layoutDefaults && !masterDefaults) {
44235
+ const normalizedType = this.buildPlaceholderDefaultsKey(phInfo).split("_")[0];
44236
+ const masterTextStyleType = phInfo.type === "title" || phInfo.type === "ctrtitle" ? "title" : phInfo.type === "body" || phInfo.type === "obj" || phInfo.type === "subtitle" ? "body" : "other";
44237
+ const masterTextStyles = masterPath ? this.masterTxStylesCache.get(masterPath) : void 0;
44238
+ const masterTextLevels = masterTextStyleType === "title" ? masterTextStyles?.titleStyle : masterTextStyleType === "body" ? masterTextStyles?.bodyStyle : masterTextStyles?.otherStyle;
44239
+ const resolvedMasterDefaults = masterTextLevels ? {
44240
+ type: masterDefaults?.type ?? normalizedType,
44241
+ ...masterDefaults,
44242
+ levelStyles: this.mergePlaceholderLevelStyles(
44243
+ masterTextLevels,
44244
+ masterDefaults?.levelStyles
44245
+ )
44246
+ } : masterDefaults;
44247
+ if (!layoutDefaults && !resolvedMasterDefaults) {
44252
44248
  return void 0;
44253
44249
  }
44254
- if (!masterDefaults) {
44250
+ if (!resolvedMasterDefaults) {
44255
44251
  return layoutDefaults;
44256
44252
  }
44257
44253
  if (!layoutDefaults) {
44258
- return masterDefaults;
44254
+ return resolvedMasterDefaults;
44259
44255
  }
44260
44256
  const merged = {
44261
44257
  type: layoutDefaults.type,
44262
- idx: layoutDefaults.idx ?? masterDefaults.idx,
44263
- bodyInsetLeft: layoutDefaults.bodyInsetLeft ?? masterDefaults.bodyInsetLeft,
44264
- bodyInsetTop: layoutDefaults.bodyInsetTop ?? masterDefaults.bodyInsetTop,
44265
- bodyInsetRight: layoutDefaults.bodyInsetRight ?? masterDefaults.bodyInsetRight,
44266
- bodyInsetBottom: layoutDefaults.bodyInsetBottom ?? masterDefaults.bodyInsetBottom,
44267
- textAnchor: layoutDefaults.textAnchor ?? masterDefaults.textAnchor,
44268
- autoFit: layoutDefaults.autoFit ?? masterDefaults.autoFit,
44269
- textWrap: layoutDefaults.textWrap ?? masterDefaults.textWrap,
44270
- promptText: layoutDefaults.promptText ?? masterDefaults.promptText
44258
+ idx: layoutDefaults.idx ?? resolvedMasterDefaults.idx,
44259
+ bodyInsetLeft: layoutDefaults.bodyInsetLeft ?? resolvedMasterDefaults.bodyInsetLeft,
44260
+ bodyInsetTop: layoutDefaults.bodyInsetTop ?? resolvedMasterDefaults.bodyInsetTop,
44261
+ bodyInsetRight: layoutDefaults.bodyInsetRight ?? resolvedMasterDefaults.bodyInsetRight,
44262
+ bodyInsetBottom: layoutDefaults.bodyInsetBottom ?? resolvedMasterDefaults.bodyInsetBottom,
44263
+ textAnchor: layoutDefaults.textAnchor ?? resolvedMasterDefaults.textAnchor,
44264
+ autoFit: layoutDefaults.autoFit ?? resolvedMasterDefaults.autoFit,
44265
+ textWrap: layoutDefaults.textWrap ?? resolvedMasterDefaults.textWrap,
44266
+ promptText: layoutDefaults.promptText ?? resolvedMasterDefaults.promptText
44271
44267
  };
44272
- if (layoutDefaults.levelStyles || masterDefaults.levelStyles) {
44273
- const mergedLevels = {};
44274
- const allLevelKeys = /* @__PURE__ */ new Set([
44275
- ...Object.keys(layoutDefaults.levelStyles ?? {}),
44276
- ...Object.keys(masterDefaults.levelStyles ?? {})
44277
- ]);
44278
- for (const keyStr of allLevelKeys) {
44279
- const key = Number.parseInt(keyStr, 10);
44280
- const layoutLevel = layoutDefaults.levelStyles?.[key];
44281
- const masterLevel = masterDefaults.levelStyles?.[key];
44282
- if (layoutLevel && masterLevel) {
44283
- mergedLevels[key] = { ...masterLevel, ...layoutLevel };
44284
- } else {
44285
- mergedLevels[key] = layoutLevel ?? masterLevel;
44286
- }
44287
- }
44288
- merged.levelStyles = mergedLevels;
44268
+ if (layoutDefaults.levelStyles || resolvedMasterDefaults.levelStyles) {
44269
+ merged.levelStyles = this.mergePlaceholderLevelStyles(
44270
+ resolvedMasterDefaults.levelStyles,
44271
+ layoutDefaults.levelStyles
44272
+ );
44273
+ }
44274
+ return merged;
44275
+ }
44276
+ mergePlaceholderLevelStyles(base, override) {
44277
+ const merged = {};
44278
+ for (const key of /* @__PURE__ */ new Set([...Object.keys(base ?? {}), ...Object.keys(override ?? {})])) {
44279
+ const level = Number.parseInt(key, 10);
44280
+ merged[level] = { ...base?.[level], ...override?.[level] };
44289
44281
  }
44290
44282
  return merged;
44291
44283
  }
@@ -45571,7 +45563,11 @@ var PptxHandlerRuntime49 = class _PptxHandlerRuntime17 extends PptxHandlerRuntim
45571
45563
  * for "first-wins" shape-level properties.
45572
45564
  */
45573
45565
  resolveShapeParagraphStyle(p, textStyle, ctx) {
45574
- const pPr = p["a:pPr"];
45566
+ const inheritedParagraph = this.ensureArray(ctx.inheritedTxBody?.["a:p"])[0];
45567
+ const pPr = this.mergeXmlObjects(
45568
+ inheritedParagraph?.["a:pPr"],
45569
+ p["a:pPr"]
45570
+ );
45575
45571
  const paragraphRtl = this.parseOptionalBooleanAttr(pPr?.["@_rtl"]);
45576
45572
  if (paragraphRtl !== void 0 && textStyle.rtl === void 0) {
45577
45573
  textStyle.rtl = paragraphRtl;
@@ -45687,24 +45683,28 @@ var PptxHandlerRuntime49 = class _PptxHandlerRuntime17 extends PptxHandlerRuntim
45687
45683
  const defaultRunStyle = this.extractTextRunStyle(
45688
45684
  pPr?.["a:defRPr"],
45689
45685
  paraAlign,
45690
- ctx.slideRelationshipMap
45686
+ ctx.slideRelationshipMap,
45687
+ false
45691
45688
  );
45692
- const level = Number.parseInt(String(pPr?.["@_lvl"] || "0"), 10);
45693
- const levelKey = `a:lvl${Number.isFinite(level) ? Math.min(Math.max(level + 1, 1), 9) : 1}pPr`;
45689
+ const level = pPr?.["@_lvl"] === void 0 ? -1 : Number.parseInt(String(pPr["@_lvl"]), 10);
45690
+ const levelKey = level === -1 ? "a:defPPr" : `a:lvl${Number.isFinite(level) ? Math.min(Math.max(level + 1, 1), 9) : 1}pPr`;
45694
45691
  const inheritedLevelStyle = this.extractTextRunStyle(
45695
45692
  ctx.inheritedTxBody?.["a:lstStyle"]?.[levelKey]?.["a:defRPr"],
45696
45693
  paraAlign,
45697
- ctx.slideRelationshipMap
45694
+ ctx.slideRelationshipMap,
45695
+ false
45698
45696
  );
45699
45697
  const bodyLevelStyle = this.extractTextRunStyle(
45700
45698
  ctx.txBody?.["a:lstStyle"]?.[levelKey]?.["a:defRPr"],
45701
45699
  paraAlign,
45702
- ctx.slideRelationshipMap
45700
+ ctx.slideRelationshipMap,
45701
+ false
45703
45702
  );
45704
45703
  const endParagraphStyle = this.extractTextRunStyle(
45705
45704
  p?.["a:endParaRPr"],
45706
45705
  paraAlign,
45707
- ctx.slideRelationshipMap
45706
+ ctx.slideRelationshipMap,
45707
+ false
45708
45708
  );
45709
45709
  const mergedDefaultRunStyle = {
45710
45710
  ...ctx.bodyDefaultRunStyle,
@@ -45714,20 +45714,23 @@ var PptxHandlerRuntime49 = class _PptxHandlerRuntime17 extends PptxHandlerRuntim
45714
45714
  ...defaultRunStyle
45715
45715
  };
45716
45716
  if (ctx.effectiveLevelStyles) {
45717
- const normalizedLevel = Number.isFinite(level) ? Math.min(Math.max(level, 0), 8) : 0;
45718
- const phLevel = ctx.effectiveLevelStyles[normalizedLevel] ?? ctx.effectiveLevelStyles[-1];
45717
+ const normalizedLevel = level === -1 ? -1 : Number.isFinite(level) ? Math.min(Math.max(level, 0), 8) : 0;
45718
+ const phLevel = ctx.effectiveLevelStyles[normalizedLevel] ?? ctx.effectiveLevelStyles[-1] ?? (normalizedLevel === -1 ? ctx.effectiveLevelStyles[0] : void 0);
45719
45719
  if (phLevel) {
45720
45720
  this.applyPlaceholderLevelDefaults(mergedDefaultRunStyle, phLevel);
45721
45721
  this.applyPlaceholderLevelDefaults(textStyle, phLevel);
45722
45722
  }
45723
45723
  }
45724
+ if (pPr?.["@_algn"] === void 0 && textStyle.align !== void 0) {
45725
+ paraAlign = textStyle.align;
45726
+ }
45724
45727
  const parMarginLeft = pPr?.["@_marL"] !== void 0 ? Number.parseInt(String(pPr["@_marL"]), 10) / _PptxHandlerRuntime17.EMU_PER_PX : void 0;
45725
45728
  const parIndent = pPr?.["@_indent"] !== void 0 ? Number.parseInt(String(pPr["@_indent"]), 10) / _PptxHandlerRuntime17.EMU_PER_PX : void 0;
45726
45729
  let effectiveMarginLeft = parMarginLeft;
45727
45730
  let effectiveIndent = parIndent;
45728
45731
  if (ctx.effectiveLevelStyles) {
45729
- const normalizedLevel = Number.isFinite(level) ? Math.min(Math.max(level, 0), 8) : 0;
45730
- const phLevel = ctx.effectiveLevelStyles[normalizedLevel] ?? ctx.effectiveLevelStyles[-1];
45732
+ const normalizedLevel = level === -1 ? -1 : Number.isFinite(level) ? Math.min(Math.max(level, 0), 8) : 0;
45733
+ const phLevel = ctx.effectiveLevelStyles[normalizedLevel] ?? ctx.effectiveLevelStyles[-1] ?? (normalizedLevel === -1 ? ctx.effectiveLevelStyles[0] : void 0);
45731
45734
  if (phLevel) {
45732
45735
  if (effectiveMarginLeft === void 0 && phLevel.marginLeft !== void 0) {
45733
45736
  effectiveMarginLeft = phLevel.marginLeft;
@@ -45891,11 +45894,23 @@ var PptxHandlerRuntime50 = class extends PptxHandlerRuntime49 {
45891
45894
  continue;
45892
45895
  }
45893
45896
  const items = this.ensureArray(p[key]);
45894
- for (const item of items) {
45897
+ const rawBreaks = p["a:br"];
45898
+ const breakCount = Array.isArray(rawBreaks) ? rawBreaks.length : rawBreaks === void 0 ? 0 : 1;
45899
+ const insertCollapsedBreaks = key === "a:r" && items.length > 1 && breakCount > 0;
45900
+ for (const [itemIndex, item] of items.entries()) {
45895
45901
  switch (key) {
45896
- case "a:r":
45902
+ case "a:r": {
45897
45903
  processRun(item);
45904
+ if (insertCollapsedBreaks && itemIndex < Math.min(items.length - 1, breakCount)) {
45905
+ parts.push("\n");
45906
+ segments.push({
45907
+ text: "\n",
45908
+ style: { ...mergedDefaultRunStyle },
45909
+ isLineBreak: true
45910
+ });
45911
+ }
45898
45912
  break;
45913
+ }
45899
45914
  case "a:fld":
45900
45915
  processField(item);
45901
45916
  break;
@@ -45913,6 +45928,9 @@ var PptxHandlerRuntime50 = class extends PptxHandlerRuntime49 {
45913
45928
  processAlternateContent(item);
45914
45929
  break;
45915
45930
  case "a:br": {
45931
+ if (insertCollapsedBreaks) {
45932
+ break;
45933
+ }
45916
45934
  const brNode = item ?? {};
45917
45935
  const brRunProps = brNode["a:rPr"];
45918
45936
  const brStyle = {
@@ -46073,7 +46091,13 @@ var PptxHandlerRuntime51 = class _PptxHandlerRuntime18 extends PptxHandlerRuntim
46073
46091
  );
46074
46092
  const inheritedPlaceholder = slidePath && placeholderInfo ? this.findPlaceholderContext(slidePath, placeholderInfo) : void 0;
46075
46093
  const inheritedSpPr = inheritedPlaceholder?.shape?.["p:spPr"] || inheritedPlaceholder?.picture?.["p:spPr"];
46076
- const effectiveSpPr = this.mergeXmlObjects(inheritedSpPr, spPr);
46094
+ const effectiveSpPr = spPr ? {
46095
+ ...spPr,
46096
+ "a:xfrm": this.mergeXmlObjects(
46097
+ inheritedSpPr?.["a:xfrm"],
46098
+ spPr["a:xfrm"]
46099
+ )
46100
+ } : inheritedSpPr;
46077
46101
  const xfrm = effectiveSpPr?.["a:xfrm"] || spPr?.["a:xfrm"] || inheritedSpPr?.["a:xfrm"];
46078
46102
  if (!xfrm) {
46079
46103
  return null;
@@ -46151,14 +46175,16 @@ var PptxHandlerRuntime51 = class _PptxHandlerRuntime18 extends PptxHandlerRuntim
46151
46175
  const inheritedBodyDefaultRunStyle = this.extractTextRunStyle(
46152
46176
  xmlPath(inheritedTxBody, "a:lstStyle", "a:defPPr", "a:defRPr"),
46153
46177
  "left",
46154
- slideRelationshipMap
46178
+ slideRelationshipMap,
46179
+ false
46155
46180
  );
46156
46181
  const bodyDefaultRunStyle = {
46157
46182
  ...inheritedBodyDefaultRunStyle,
46158
46183
  ...this.extractTextRunStyle(
46159
46184
  xmlPath(txBody, "a:lstStyle", "a:defPPr", "a:defRPr"),
46160
46185
  "left",
46161
- slideRelationshipMap
46186
+ slideRelationshipMap,
46187
+ false
46162
46188
  )
46163
46189
  };
46164
46190
  Object.assign(textStyle, bodyDefaultRunStyle);
@@ -48525,6 +48551,21 @@ var PptxHandlerRuntime61 = class extends PptxHandlerRuntime60 {
48525
48551
  element.id = `master-${element.id}`;
48526
48552
  elements.push(element);
48527
48553
  }
48554
+ } else if (entry.tag === "p:cxnSp") {
48555
+ const connectors = this.ensureArray(spTree["p:cxnSp"]);
48556
+ const connector = connectors[entry.indexInType];
48557
+ if (!connector) {
48558
+ continue;
48559
+ }
48560
+ const element = this.parseConnector(
48561
+ connector,
48562
+ `master-conn-${masterToken}-${entry.indexInType}`,
48563
+ masterPath
48564
+ );
48565
+ if (element) {
48566
+ element.id = `master-${element.id}`;
48567
+ elements.push(element);
48568
+ }
48528
48569
  }
48529
48570
  }
48530
48571
  this.masterCache.set(masterPath, elements);
@@ -48661,6 +48702,21 @@ var PptxHandlerRuntime62 = class extends PptxHandlerRuntime61 {
48661
48702
  element.id = `layout-${element.id}`;
48662
48703
  elements.push(element);
48663
48704
  }
48705
+ } else if (entry.tag === "p:cxnSp") {
48706
+ const connectors = this.ensureArray(spTree["p:cxnSp"]);
48707
+ const connector = connectors[entry.indexInType];
48708
+ if (!connector) {
48709
+ continue;
48710
+ }
48711
+ const element = this.parseConnector(
48712
+ connector,
48713
+ `layout-conn-${layoutToken}-${entry.indexInType}`,
48714
+ layoutPath
48715
+ );
48716
+ if (element) {
48717
+ element.id = `layout-${element.id}`;
48718
+ elements.push(element);
48719
+ }
48664
48720
  }
48665
48721
  }
48666
48722
  const layoutShowMasterSp = xmlAttr(
@@ -52328,6 +52384,7 @@ var PptxHandlerRuntime79 = class _PptxHandlerRuntime28 extends PptxHandlerRuntim
52328
52384
  this.masterCache.clear();
52329
52385
  this.layoutXmlMap.clear();
52330
52386
  this.masterXmlMap.clear();
52387
+ this.masterTxStylesCache.clear();
52331
52388
  if (typeof globalThis.URL?.revokeObjectURL === "function" && this.blobUrlCache.size > 0) {
52332
52389
  for (const url of this.blobUrlCache) {
52333
52390
  URL.revokeObjectURL(url);
@@ -52610,7 +52667,7 @@ var PptxHandlerRuntime79 = class _PptxHandlerRuntime28 extends PptxHandlerRuntim
52610
52667
  }
52611
52668
  };
52612
52669
  var PptxHandlerRuntime80 = class extends PptxHandlerRuntime79 {
52613
- async buildLoadData(presentationState, slidesWithWarnings) {
52670
+ async buildLoadData(presentationState, slidesWithWarnings, slideMasters) {
52614
52671
  const headerFooter = this.extractHeaderFooter();
52615
52672
  const presentationProperties = await this.parsePresentationProperties();
52616
52673
  const customShows = this.parseCustomShows();
@@ -52620,8 +52677,6 @@ var PptxHandlerRuntime80 = class extends PptxHandlerRuntime79 {
52620
52677
  const themeOptions = await this.parseThemeOptions();
52621
52678
  const notesMaster = await this.parseNotesMaster();
52622
52679
  const handoutMaster = await this.parseHandoutMaster();
52623
- const slideMasters = await this.parseSlideMasters();
52624
- await this.enrichSlideMastersWithTxStyles(slideMasters);
52625
52680
  const tags = await this.parseTags();
52626
52681
  const customProperties = await this.parseCustomProperties();
52627
52682
  const coreProperties = await this.parseCoreProperties();
@@ -52741,6 +52796,7 @@ var PptxHandlerRuntime80 = class extends PptxHandlerRuntime79 {
52741
52796
  this.masterCache.clear();
52742
52797
  this.layoutXmlMap.clear();
52743
52798
  this.masterXmlMap.clear();
52799
+ this.masterTxStylesCache.clear();
52744
52800
  this.layoutPlaceholderDefaultsCache.clear();
52745
52801
  this.masterPlaceholderDefaultsCache.clear();
52746
52802
  this.themeOverrideCache.clear();
@@ -52761,10 +52817,12 @@ var PptxHandlerRuntime80 = class extends PptxHandlerRuntime79 {
52761
52817
  this.detectDigitalSignatureParts();
52762
52818
  await this.parseCustomXmlParts();
52763
52819
  const presentationState = await this.loadPresentationState();
52820
+ const slideMasters = await this.parseSlideMasters();
52821
+ await this.enrichSlideMastersWithTxStyles(slideMasters);
52764
52822
  const slides = await this.loadSlidesForPresentation(presentationState.sectionBySlideId);
52765
52823
  const slidesWithWarnings = this.attachSlideWarnings(slides);
52766
52824
  this.resetElementIdCounter(slides);
52767
- return this.buildLoadData(presentationState, slidesWithWarnings);
52825
+ return this.buildLoadData(presentationState, slidesWithWarnings, slideMasters);
52768
52826
  }
52769
52827
  /**
52770
52828
  * Retrieve the current background colour for a layout or master.
Binary file
Binary file