pptx-react-viewer 3.5.0 → 3.5.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 (137) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/{AiChatPanel-KZX4NZ5R.mjs → AiChatPanel-6RN4FZ5Y.mjs} +3 -3
  3. package/dist/AiChatPanel-6RN4FZ5Y.mjs.br +0 -0
  4. package/dist/AiChatPanel-6RN4FZ5Y.mjs.gz +0 -0
  5. package/dist/{AiChatPanel-M7RSMOZV.js → AiChatPanel-D5DDUEIW.js} +24 -24
  6. package/dist/AiChatPanel-D5DDUEIW.js.br +0 -0
  7. package/dist/AiChatPanel-D5DDUEIW.js.gz +0 -0
  8. package/dist/{Area3DChartScene-AD6BO2VM.mjs → Area3DChartScene-PWBCCYGS.mjs} +1 -1
  9. package/dist/Area3DChartScene-PWBCCYGS.mjs.br +1 -0
  10. package/dist/Area3DChartScene-PWBCCYGS.mjs.gz +0 -0
  11. package/dist/{Area3DChartScene-7AYWOGBC.js → Area3DChartScene-UH6DXEDV.js} +2 -2
  12. package/dist/Area3DChartScene-UH6DXEDV.js.br +0 -0
  13. package/dist/Area3DChartScene-UH6DXEDV.js.gz +0 -0
  14. package/dist/{Bar3DChartScene-JOGF3C5E.mjs → Bar3DChartScene-6GDMTIFI.mjs} +1 -1
  15. package/dist/Bar3DChartScene-6GDMTIFI.mjs.br +0 -0
  16. package/dist/Bar3DChartScene-6GDMTIFI.mjs.gz +0 -0
  17. package/dist/{Bar3DChartScene-FWKMBT4O.js → Bar3DChartScene-HN54LAH5.js} +2 -2
  18. package/dist/Bar3DChartScene-HN54LAH5.js.br +0 -0
  19. package/dist/Bar3DChartScene-HN54LAH5.js.gz +0 -0
  20. package/dist/{Line3DChartScene-ADORAAXV.mjs → Line3DChartScene-5WIHGKH4.mjs} +1 -1
  21. package/dist/Line3DChartScene-5WIHGKH4.mjs.br +1 -0
  22. package/dist/Line3DChartScene-5WIHGKH4.mjs.gz +0 -0
  23. package/dist/{Line3DChartScene-X2BJNGIK.js → Line3DChartScene-WSDPBF5W.js} +2 -2
  24. package/dist/Line3DChartScene-WSDPBF5W.js.br +0 -0
  25. package/dist/Line3DChartScene-WSDPBF5W.js.gz +0 -0
  26. package/dist/{Model3DScene-RORDMQ6Q.mjs → Model3DScene-7ZUKNMXA.mjs} +1 -1
  27. package/dist/Model3DScene-7ZUKNMXA.mjs.br +0 -0
  28. package/dist/Model3DScene-7ZUKNMXA.mjs.gz +0 -0
  29. package/dist/{Model3DScene-KSZHZAVD.js → Model3DScene-GUYP4VJP.js} +2 -2
  30. package/dist/{Model3DScene-KSZHZAVD.js.br → Model3DScene-GUYP4VJP.js.br} +0 -0
  31. package/dist/Model3DScene-GUYP4VJP.js.gz +0 -0
  32. package/dist/{PieChart3DScene-IXJHU3MI.mjs → PieChart3DScene-FBYOJF2T.mjs} +1 -1
  33. package/dist/PieChart3DScene-FBYOJF2T.mjs.br +0 -0
  34. package/dist/PieChart3DScene-FBYOJF2T.mjs.gz +0 -0
  35. package/dist/{PieChart3DScene-BXMI7U2X.js → PieChart3DScene-W7QK76IY.js} +2 -2
  36. package/dist/PieChart3DScene-W7QK76IY.js.br +0 -0
  37. package/dist/PieChart3DScene-W7QK76IY.js.gz +0 -0
  38. package/dist/{SurfaceChart3DScene-TTBGVNYL.js → SurfaceChart3DScene-6SRHNAYR.js} +2 -2
  39. package/dist/{SurfaceChart3DScene-TTBGVNYL.js.br → SurfaceChart3DScene-6SRHNAYR.js.br} +0 -0
  40. package/dist/SurfaceChart3DScene-6SRHNAYR.js.gz +0 -0
  41. package/dist/{SurfaceChart3DScene-SJ2IDLP6.mjs → SurfaceChart3DScene-QIXANTOO.mjs} +1 -1
  42. package/dist/SurfaceChart3DScene-QIXANTOO.mjs.br +0 -0
  43. package/dist/SurfaceChart3DScene-QIXANTOO.mjs.gz +0 -0
  44. package/dist/{chunk-DUC32SQJ.mjs → chunk-2TKEP3LD.mjs} +13 -13
  45. package/dist/chunk-2TKEP3LD.mjs.br +0 -0
  46. package/dist/chunk-2TKEP3LD.mjs.gz +0 -0
  47. package/dist/{chunk-C7ZSRYF4.mjs → chunk-3MJLEKOD.mjs} +7 -2
  48. package/dist/chunk-3MJLEKOD.mjs.br +0 -0
  49. package/dist/chunk-3MJLEKOD.mjs.gz +0 -0
  50. package/dist/{chunk-AEP6X24D.js → chunk-BRUBTLWG.js} +164 -160
  51. package/dist/chunk-BRUBTLWG.js.br +0 -0
  52. package/dist/chunk-BRUBTLWG.js.gz +0 -0
  53. package/dist/{chunk-24XC5C2B.mjs → chunk-DGFYYQAK.mjs} +5 -1
  54. package/dist/chunk-DGFYYQAK.mjs.br +0 -0
  55. package/dist/chunk-DGFYYQAK.mjs.gz +0 -0
  56. package/dist/{chunk-AU5YFUUK.js → chunk-MLDG7WX6.js} +196 -86
  57. package/dist/chunk-MLDG7WX6.js.br +0 -0
  58. package/dist/chunk-MLDG7WX6.js.gz +0 -0
  59. package/dist/{chunk-HCTJCUGP.js → chunk-NZY4GXCF.js} +435 -430
  60. package/dist/chunk-NZY4GXCF.js.br +0 -0
  61. package/dist/chunk-NZY4GXCF.js.gz +0 -0
  62. package/dist/{chunk-X7L3RHFQ.mjs → chunk-P7SNHVMV.mjs} +196 -87
  63. package/dist/chunk-P7SNHVMV.mjs.br +0 -0
  64. package/dist/chunk-P7SNHVMV.mjs.gz +0 -0
  65. package/dist/{chunk-X6OJYCTW.mjs → chunk-QCFRIC6B.mjs} +1 -1
  66. package/dist/chunk-QCFRIC6B.mjs.br +0 -0
  67. package/dist/chunk-QCFRIC6B.mjs.gz +0 -0
  68. package/dist/{chunk-XSHYXVPD.js → chunk-WPOZ2SAD.js} +1171 -1171
  69. package/dist/chunk-WPOZ2SAD.js.br +0 -0
  70. package/dist/chunk-WPOZ2SAD.js.gz +0 -0
  71. package/dist/{chunk-JTS7AZYQ.js → chunk-ZGSPOPVM.js} +5 -5
  72. package/dist/chunk-ZGSPOPVM.js.br +0 -0
  73. package/dist/{chunk-JTS7AZYQ.js.gz → chunk-ZGSPOPVM.js.gz} +0 -0
  74. package/dist/index.js +45 -45
  75. package/dist/index.js.br +0 -0
  76. package/dist/index.js.gz +0 -0
  77. package/dist/index.mjs +5 -5
  78. package/dist/index.mjs.br +0 -0
  79. package/dist/index.mjs.gz +0 -0
  80. package/dist/internals.js +78 -78
  81. package/dist/internals.js.br +0 -0
  82. package/dist/internals.js.gz +0 -0
  83. package/dist/internals.mjs +3 -3
  84. package/dist/internals.mjs.br +0 -0
  85. package/dist/internals.mjs.gz +0 -0
  86. package/dist/viewer/index.js +26 -26
  87. package/dist/viewer/index.js.br +0 -0
  88. package/dist/viewer/index.js.gz +0 -0
  89. package/dist/viewer/index.mjs +5 -5
  90. package/dist/viewer/index.mjs.br +0 -0
  91. package/dist/viewer/index.mjs.gz +0 -0
  92. package/package.json +1 -1
  93. package/dist/AiChatPanel-KZX4NZ5R.mjs.br +0 -0
  94. package/dist/AiChatPanel-KZX4NZ5R.mjs.gz +0 -0
  95. package/dist/AiChatPanel-M7RSMOZV.js.br +0 -0
  96. package/dist/AiChatPanel-M7RSMOZV.js.gz +0 -0
  97. package/dist/Area3DChartScene-7AYWOGBC.js.br +0 -0
  98. package/dist/Area3DChartScene-7AYWOGBC.js.gz +0 -0
  99. package/dist/Area3DChartScene-AD6BO2VM.mjs.br +0 -3
  100. package/dist/Area3DChartScene-AD6BO2VM.mjs.gz +0 -0
  101. package/dist/Bar3DChartScene-FWKMBT4O.js.br +0 -0
  102. package/dist/Bar3DChartScene-FWKMBT4O.js.gz +0 -0
  103. package/dist/Bar3DChartScene-JOGF3C5E.mjs.br +0 -0
  104. package/dist/Bar3DChartScene-JOGF3C5E.mjs.gz +0 -0
  105. package/dist/Line3DChartScene-ADORAAXV.mjs.br +0 -3
  106. package/dist/Line3DChartScene-ADORAAXV.mjs.gz +0 -0
  107. package/dist/Line3DChartScene-X2BJNGIK.js.br +0 -0
  108. package/dist/Line3DChartScene-X2BJNGIK.js.gz +0 -0
  109. package/dist/Model3DScene-KSZHZAVD.js.gz +0 -0
  110. package/dist/Model3DScene-RORDMQ6Q.mjs.br +0 -0
  111. package/dist/Model3DScene-RORDMQ6Q.mjs.gz +0 -0
  112. package/dist/PieChart3DScene-BXMI7U2X.js.br +0 -0
  113. package/dist/PieChart3DScene-BXMI7U2X.js.gz +0 -0
  114. package/dist/PieChart3DScene-IXJHU3MI.mjs.br +0 -0
  115. package/dist/PieChart3DScene-IXJHU3MI.mjs.gz +0 -0
  116. package/dist/SurfaceChart3DScene-SJ2IDLP6.mjs.br +0 -0
  117. package/dist/SurfaceChart3DScene-SJ2IDLP6.mjs.gz +0 -0
  118. package/dist/SurfaceChart3DScene-TTBGVNYL.js.gz +0 -0
  119. package/dist/chunk-24XC5C2B.mjs.br +0 -0
  120. package/dist/chunk-24XC5C2B.mjs.gz +0 -0
  121. package/dist/chunk-AEP6X24D.js.br +0 -0
  122. package/dist/chunk-AEP6X24D.js.gz +0 -0
  123. package/dist/chunk-AU5YFUUK.js.br +0 -0
  124. package/dist/chunk-AU5YFUUK.js.gz +0 -0
  125. package/dist/chunk-C7ZSRYF4.mjs.br +0 -0
  126. package/dist/chunk-C7ZSRYF4.mjs.gz +0 -0
  127. package/dist/chunk-DUC32SQJ.mjs.br +0 -0
  128. package/dist/chunk-DUC32SQJ.mjs.gz +0 -0
  129. package/dist/chunk-HCTJCUGP.js.br +0 -0
  130. package/dist/chunk-HCTJCUGP.js.gz +0 -0
  131. package/dist/chunk-JTS7AZYQ.js.br +0 -0
  132. package/dist/chunk-X6OJYCTW.mjs.br +0 -0
  133. package/dist/chunk-X6OJYCTW.mjs.gz +0 -0
  134. package/dist/chunk-X7L3RHFQ.mjs.br +0 -0
  135. package/dist/chunk-X7L3RHFQ.mjs.gz +0 -0
  136. package/dist/chunk-XSHYXVPD.js.br +0 -0
  137. package/dist/chunk-XSHYXVPD.js.gz +0 -0
Binary file
Binary file
@@ -1,4 +1,4 @@
1
- import { SHAPE_PRESET_DEFS, VIEWER_SHORTCUT_REFERENCE, STROKE_DASH_OPTIONS, getAnimationInitialStyle, cloneHistorySnapshot, hasShapeProperties, getImageFitStyle, getComputedFillStyle, isImageLikeElement, getCropShapeClipPath, getImageTilingStyle, mediaPlaybackAttributes, buildTextBlockStyle, hasTextProperties, toCssWritingMode, toCssTextOrientation, toCssVerticalDirection, buildTextBodyLayoutStyle, buildTextBody3DSceneStyle, buildParagraphs, colorWithOpacity, normalizeHexColor, hexToRgbUnit, build3DExtrusionData, getComputedEffectStyle, getComputedStrokeStyle, getAnimationColorBaseStyle, isStrokeOnlyPresetElement, resolveShapeGeometry, normalizeStrokeDashType, getSvgStrokeDasharray, buildSvgGradientDef, buildStrokeOutline, getPresetShapeVectorGeometry, isWedgeCalloutPresetShape, svgGradientFillRef, isCalloutShape, getCalloutLeaderLineGeometry, buildCalloutLeaderLineSvgPath, getCalloutViewBoxBounds, svgLineCap, getCompoundLineOffsets, getCompoundLineWidths, computeSelectionRect, DEFAULT_FONT_FAMILY, cellStyleToCss, rectToCells, isCellInRect, tableContainerCss, buildChartViewModel, resolveChartKind, chartPreserveAspectRatio, buildNotesPdfBytes, buildSlidesPdfBytes, buildPreviewAnimation, buildMotionPathPreview, mediaFallbackVisual, registerCrossSlideAudio, resolveAutoFitFontScale, resolveFontKerning, getSubstituteFontFamily, parsePanoseString, resolveScriptFontSet, hasDistinctScriptFonts, nestedTextDecorationStyle, pieceLetterSpacing, resolveMetricTrackingPx, hollowTextFillStyle, buildTabContext, TEXT_BUILD_ID_SEP, buildTextBuildSpec, textBuildSpanStyle, apply3dEffects, clampUnitInterval, customGeometryPathsToSvgSubpaths, buildSubpathPaints, computeColumnBoundaries, getTableCellBandStyle, parseDrawingColor, parseDrawingColorOpacity, getCellDiagonalBorders, cellRunStyle, getChartStylePalette, computeChartLegendLayout, mediaFallbackIcon, mediaFallbackLabelKey, MEDIA_CHROME_ATTRIBUTE, convertOmmlToMathMl, sanitizeMathMl, tableCellCss, computeResizedColumnWidths, computeResizedRowHeight, DEFAULT_ROW_HEIGHT, ooxmlGradientAngleToCssDegrees, buildRectPathGradient, buildRunTabLines, chartPartToAttrs, splitRunForMetrics, splitRunByScriptFont } from './chunk-X7L3RHFQ.mjs';
1
+ import { SHAPE_PRESET_DEFS, VIEWER_SHORTCUT_REFERENCE, STROKE_DASH_OPTIONS, getAnimationInitialStyle, cloneHistorySnapshot, hasShapeProperties, getImageFitStyle, getComputedFillStyle, isImageLikeElement, getCropShapeClipPath, getImageTilingStyle, mediaPlaybackAttributes, buildTextBlockStyle, hasTextProperties, toCssWritingMode, toCssTextOrientation, toCssVerticalDirection, buildTextBodyLayoutStyle, buildTextBody3DSceneStyle, buildParagraphs, colorWithOpacity, normalizeHexColor, hexToRgbUnit, build3DExtrusionData, getComputedEffectStyle, getComputedStrokeStyle, getAnimationColorBaseStyle, isStrokeOnlyPresetElement, resolveShapeGeometry, normalizeStrokeDashType, getSvgStrokeDasharray, buildSvgGradientDef, buildStrokeOutline, getPresetShapeVectorGeometry, isWedgeCalloutPresetShape, svgGradientFillRef, isCalloutShape, getCalloutLeaderLineGeometry, buildCalloutLeaderLineSvgPath, getCalloutViewBoxBounds, svgLineCap, getCompoundLineOffsets, getCompoundLineWidths, computeSelectionRect, DEFAULT_FONT_FAMILY, cellStyleToCss, rectToCells, isCellInRect, tableContainerCss, buildChartViewModel, resolveChartKind, chartPreserveAspectRatio, buildNotesPdfBytes, buildSlidesPdfBytes, buildPreviewAnimation, buildMotionPathPreview, mediaFallbackVisual, registerCrossSlideAudio, resolveAutoFitFontScale, resolveFontKerning, getSubstituteFontFamily, parsePanoseString, resolveScriptFontSet, hasDistinctScriptFonts, nestedTextDecorationStyle, pieceLetterSpacing, resolveMetricTrackingPx, hollowTextFillStyle, buildTabContext, TEXT_BUILD_ID_SEP, buildTextBuildSpec, textBuildSpanStyle, apply3dEffects, clampUnitInterval, customGeometryPathsToSvgSubpaths, buildSubpathPaints, computeColumnBoundaries, getTableCellBandStyle, parseDrawingColor, parseDrawingColorOpacity, getCellDiagonalBorders, cellRunStyle, getChartStylePalette, computeChartLegendLayout, mediaFallbackIcon, mediaFallbackLabelKey, MEDIA_CHROME_ATTRIBUTE, convertOmmlToMathMl, sanitizeMathMl, tableCellCss, computeResizedColumnWidths, computeResizedRowHeight, DEFAULT_ROW_HEIGHT, ooxmlGradientAngleToCssDegrees, buildRectPathGradient, buildRunTabLines, chartPartToAttrs, splitRunForMetrics, splitRunByScriptFont } from './chunk-P7SNHVMV.mjs';
2
2
  import { translationsEn } from './chunk-JCJ3EPG6.mjs';
3
3
  import { clsx } from 'clsx';
4
4
  import { twMerge } from 'tailwind-merge';
@@ -1586,6 +1586,8 @@ function renderBulletMarker(para, paraIndex, elementId) {
1586
1586
  return /* @__PURE__ */ jsx(
1587
1587
  "img",
1588
1588
  {
1589
+ "data-pptx-bullet-marker": true,
1590
+ contentEditable: false,
1589
1591
  src: picture.src,
1590
1592
  alt: picture.accessibleLabel,
1591
1593
  style: {
@@ -1607,6 +1609,8 @@ function renderBulletMarker(para, paraIndex, elementId) {
1607
1609
  "span",
1608
1610
  {
1609
1611
  className: "pptx-bullet",
1612
+ "data-pptx-bullet-marker": true,
1613
+ contentEditable: false,
1610
1614
  style: para.bulletStyle,
1611
1615
  "aria-label": picture?.accessibleLabel,
1612
1616
  children: para.bulletMarker
Binary file
Binary file
@@ -62976,8 +62976,16 @@ var PptxHandlerRuntime13 = class extends PptxHandlerRuntime12 {
62976
62976
  if (!bullet) {
62977
62977
  return false;
62978
62978
  }
62979
- const marker = bullet.char ? `${bullet.char} ` : bullet.imageRelId || bullet.imageDataUrl ? "\u{1F4CE} " : bullet.autoNumType ? void 0 : "\u2022 ";
62980
- return marker ? segment.text === marker : bullet.paragraphIndex !== void 0;
62979
+ if (bullet.autoNumType) {
62980
+ if (bullet.paragraphIndex === void 0) {
62981
+ return false;
62982
+ }
62983
+ const ordinal = Math.max(1, (bullet.autoNumStartAt ?? 1) + bullet.paragraphIndex);
62984
+ const marker2 = formatAutoNumberMarker(bullet.autoNumType, ordinal);
62985
+ return segment.text === marker2 || segment.text === `${marker2} `;
62986
+ }
62987
+ const marker = bullet.char ? `${bullet.char} ` : bullet.imageRelId || bullet.imageDataUrl ? "\u{1F4CE} " : "\u2022 ";
62988
+ return segment.text === marker;
62981
62989
  }
62982
62990
  createParagraphsFromTextContent(text22, textStyle, textSegments, resolveHyperlinkRelationshipId) {
62983
62991
  const runScopedTextStyle = toRunScopedTextStyle(textStyle);
@@ -123330,6 +123338,89 @@ function round2(value) {
123330
123338
  function round6(value) {
123331
123339
  return Math.round(value * 1e6) / 1e6;
123332
123340
  }
123341
+ function resolvePictureBullet(info, baseFontSize) {
123342
+ if (!info.imageDataUrl && !info.imageRelId && !info.imageBlipFillXml) {
123343
+ return void 0;
123344
+ }
123345
+ const sizePx = typeof info.sizePts === "number" ? info.sizePts : typeof info.sizePercent === "number" ? baseFontSize * (info.sizePercent / 100) : baseFontSize;
123346
+ return {
123347
+ ...info.imageDataUrl ? { src: info.imageDataUrl } : {},
123348
+ sizePx,
123349
+ fallbackMarker: "\u2022",
123350
+ accessibleLabel: "Bullet",
123351
+ ...info.imageRelId ? { imageRelId: info.imageRelId } : {}
123352
+ };
123353
+ }
123354
+ function resolveParagraphBullet(firstSegment, baseFontSize = firstSegment?.style?.fontSize ?? 16) {
123355
+ if (!firstSegment) {
123356
+ return void 0;
123357
+ }
123358
+ if (firstSegment.style?.listType === "none") {
123359
+ return void 0;
123360
+ }
123361
+ const info = firstSegment.bulletInfo;
123362
+ if (!info || info.none) {
123363
+ return void 0;
123364
+ }
123365
+ const color2 = info.color;
123366
+ const fontFamily = info.fontFamily;
123367
+ const sizePts = typeof info.sizePts === "number" ? info.sizePts : void 0;
123368
+ const sizePercent = typeof info.sizePercent === "number" ? info.sizePercent : void 0;
123369
+ const picture = resolvePictureBullet(info, baseFontSize);
123370
+ if (picture) {
123371
+ return {
123372
+ marker: picture.fallbackMarker,
123373
+ isNumbered: false,
123374
+ color: color2,
123375
+ fontFamily,
123376
+ sizePts,
123377
+ sizePercent,
123378
+ picture
123379
+ };
123380
+ }
123381
+ if (info.autoNumType) {
123382
+ const startAt = typeof info.autoNumStartAt === "number" ? info.autoNumStartAt : 1;
123383
+ const paraIdx = typeof info.paragraphIndex === "number" ? info.paragraphIndex : 0;
123384
+ const seqNum = Math.max(1, startAt + paraIdx);
123385
+ return {
123386
+ marker: formatAutoNumberMarker(info.autoNumType, seqNum),
123387
+ isNumbered: true,
123388
+ color: color2,
123389
+ fontFamily,
123390
+ sizePts,
123391
+ sizePercent
123392
+ };
123393
+ }
123394
+ if (info.char) {
123395
+ return { marker: info.char, isNumbered: false, color: color2, fontFamily, sizePts, sizePercent };
123396
+ }
123397
+ return void 0;
123398
+ }
123399
+ var INDENT_PX_PER_LEVEL = 18;
123400
+ function bulletIndentPx(level) {
123401
+ const lvl = typeof level === "number" && level > 0 ? level : 0;
123402
+ return lvl * INDENT_PX_PER_LEVEL;
123403
+ }
123404
+ function resolveParagraphIndent(paraIndent, paragraphLevel) {
123405
+ const marginLeft = typeof paraIndent?.marginLeft === "number" && paraIndent.marginLeft !== 0 ? paraIndent.marginLeft : void 0;
123406
+ const textIndent = typeof paraIndent?.indent === "number" && paraIndent.indent !== 0 ? paraIndent.indent : void 0;
123407
+ if (marginLeft === void 0 && textIndent === void 0) {
123408
+ const levelPx = bulletIndentPx(paragraphLevel);
123409
+ return levelPx > 0 ? { marginLeftPx: levelPx } : {};
123410
+ }
123411
+ return { marginLeftPx: marginLeft, textIndentPx: textIndent };
123412
+ }
123413
+ function isBulletMarkerSegment(segment) {
123414
+ const bullet = segment.bulletInfo;
123415
+ if (!bullet || bullet.none) {
123416
+ return false;
123417
+ }
123418
+ const resolved = resolveParagraphBullet(segment);
123419
+ if (!resolved) {
123420
+ return false;
123421
+ }
123422
+ return segment.text.trim() === resolved.marker.trim() && segment.text.trim().length > 0;
123423
+ }
123333
123424
  var OUTLINE_VIEW_ATTR = "data-pptx-outline-view";
123334
123425
  var OUTLINE_ROW_ATTR = "data-pptx-outline-row";
123335
123426
  var OUTLINE_SLIDE_ATTR = "data-pptx-outline-slide";
@@ -123385,10 +123476,13 @@ function isBulletMarker(segment) {
123385
123476
  if (!bullet) {
123386
123477
  return false;
123387
123478
  }
123388
- const marker = bullet.char ? `${bullet.char} ` : bullet.imageRelId || bullet.imageDataUrl ? "\u{1F4CE} " : bullet.autoNumType ? void 0 : "\u2022 ";
123389
- return marker ? segment.text === marker : bullet.paragraphIndex !== void 0;
123479
+ if (bullet.autoNumType) {
123480
+ return bullet.paragraphIndex !== void 0 && isBulletMarkerSegment(segment);
123481
+ }
123482
+ const marker = bullet.char ? `${bullet.char} ` : bullet.imageRelId || bullet.imageDataUrl ? "\u{1F4CE} " : "\u2022 ";
123483
+ return segment.text === marker;
123390
123484
  }
123391
- function isParagraphSeparator(segment) {
123485
+ function isParagraphSeparator2(segment) {
123392
123486
  return Boolean(segment.isParagraphBreak) || segment.text === "\n" && !segment.isLineBreak;
123393
123487
  }
123394
123488
  function groupElementParagraphs(element) {
@@ -123402,7 +123496,7 @@ function groupElementParagraphs(element) {
123402
123496
  }
123403
123497
  const groups = [{ content: [] }];
123404
123498
  for (const segment of segments) {
123405
- if (isParagraphSeparator(segment)) {
123499
+ if (isParagraphSeparator2(segment)) {
123406
123500
  groups.push({ content: [] });
123407
123501
  continue;
123408
123502
  }
@@ -128428,78 +128522,6 @@ function rulerDragToGuidePosition(pointerOffsetPx, scale, slideLengthPx) {
128428
128522
  }
128429
128523
  return position2;
128430
128524
  }
128431
- function resolvePictureBullet(info, baseFontSize) {
128432
- if (!info.imageDataUrl && !info.imageRelId && !info.imageBlipFillXml) {
128433
- return void 0;
128434
- }
128435
- const sizePx = typeof info.sizePts === "number" ? info.sizePts : typeof info.sizePercent === "number" ? baseFontSize * (info.sizePercent / 100) : baseFontSize;
128436
- return {
128437
- ...info.imageDataUrl ? { src: info.imageDataUrl } : {},
128438
- sizePx,
128439
- fallbackMarker: "\u2022",
128440
- accessibleLabel: "Bullet",
128441
- ...info.imageRelId ? { imageRelId: info.imageRelId } : {}
128442
- };
128443
- }
128444
- function resolveParagraphBullet(firstSegment, baseFontSize = firstSegment?.style?.fontSize ?? 16) {
128445
- if (!firstSegment) {
128446
- return void 0;
128447
- }
128448
- if (firstSegment.style?.listType === "none") {
128449
- return void 0;
128450
- }
128451
- const info = firstSegment.bulletInfo;
128452
- if (!info || info.none) {
128453
- return void 0;
128454
- }
128455
- const color2 = info.color;
128456
- const fontFamily = info.fontFamily;
128457
- const sizePts = typeof info.sizePts === "number" ? info.sizePts : void 0;
128458
- const sizePercent = typeof info.sizePercent === "number" ? info.sizePercent : void 0;
128459
- const picture = resolvePictureBullet(info, baseFontSize);
128460
- if (picture) {
128461
- return {
128462
- marker: picture.fallbackMarker,
128463
- isNumbered: false,
128464
- color: color2,
128465
- fontFamily,
128466
- sizePts,
128467
- sizePercent,
128468
- picture
128469
- };
128470
- }
128471
- if (info.autoNumType) {
128472
- const startAt = typeof info.autoNumStartAt === "number" ? info.autoNumStartAt : 1;
128473
- const paraIdx = typeof info.paragraphIndex === "number" ? info.paragraphIndex : 0;
128474
- const seqNum = Math.max(1, startAt + paraIdx);
128475
- return {
128476
- marker: formatAutoNumberMarker(info.autoNumType, seqNum),
128477
- isNumbered: true,
128478
- color: color2,
128479
- fontFamily,
128480
- sizePts,
128481
- sizePercent
128482
- };
128483
- }
128484
- if (info.char) {
128485
- return { marker: info.char, isNumbered: false, color: color2, fontFamily, sizePts, sizePercent };
128486
- }
128487
- return void 0;
128488
- }
128489
- var INDENT_PX_PER_LEVEL = 18;
128490
- function bulletIndentPx(level) {
128491
- const lvl = typeof level === "number" && level > 0 ? level : 0;
128492
- return lvl * INDENT_PX_PER_LEVEL;
128493
- }
128494
- function resolveParagraphIndent(paraIndent, paragraphLevel) {
128495
- const marginLeft = typeof paraIndent?.marginLeft === "number" && paraIndent.marginLeft !== 0 ? paraIndent.marginLeft : void 0;
128496
- const textIndent = typeof paraIndent?.indent === "number" && paraIndent.indent !== 0 ? paraIndent.indent : void 0;
128497
- if (marginLeft === void 0 && textIndent === void 0) {
128498
- const levelPx = bulletIndentPx(paragraphLevel);
128499
- return levelPx > 0 ? { marginLeftPx: levelPx } : {};
128500
- }
128501
- return { marginLeftPx: marginLeft, textIndentPx: textIndent };
128502
- }
128503
128525
  var DEBOUNCE_MS = 600;
128504
128526
  var EXPANDED_MAX_HEIGHT = 200;
128505
128527
  var PX_TO_PT = 0.75;
@@ -133863,6 +133885,26 @@ function hasCopyableFormat(element) {
133863
133885
  }
133864
133886
  return hasShapeProperties(element) || hasTextProperties(element);
133865
133887
  }
133888
+ function withoutRenderedBulletPrefix(text22, originalSegments, dedicatedMarker) {
133889
+ if (!dedicatedMarker) {
133890
+ return text22;
133891
+ }
133892
+ const resolved = resolveParagraphBullet(dedicatedMarker);
133893
+ if (!resolved || !text22.startsWith(resolved.marker)) {
133894
+ return text22;
133895
+ }
133896
+ const withoutMarker = text22.slice(resolved.marker.length);
133897
+ const originalContent = originalSegments.slice(1).map((segment) => segment.text).join("");
133898
+ if (originalContent.trim().length === 0) {
133899
+ return text22;
133900
+ }
133901
+ const originalLeadingSpaces = originalContent.length - originalContent.trimStart().length;
133902
+ const editedLeadingSpaces = withoutMarker.length - withoutMarker.trimStart().length;
133903
+ if (editedLeadingSpaces > originalLeadingSpaces) {
133904
+ return withoutMarker.slice(1);
133905
+ }
133906
+ return withoutMarker;
133907
+ }
133866
133908
  function isAtomicOriginalSegment(seg) {
133867
133909
  return seg.fieldType !== void 0 || seg.equationXml !== void 0;
133868
133910
  }
@@ -133887,26 +133929,61 @@ function copySegmentMetadata(from, to) {
133887
133929
  }
133888
133930
  return to;
133889
133931
  }
133932
+ function restoreParagraphMetadata(from, segments) {
133933
+ if (segments.length === 0) {
133934
+ return segments;
133935
+ }
133936
+ const [first, ...rest] = segments;
133937
+ const restored = { ...first };
133938
+ delete restored.paragraphLevel;
133939
+ delete restored.paragraphProperties;
133940
+ delete restored.endParaRunProperties;
133941
+ if (from?.paragraphLevel !== void 0) {
133942
+ restored.paragraphLevel = from.paragraphLevel;
133943
+ }
133944
+ if (from?.paragraphProperties !== void 0) {
133945
+ restored.paragraphProperties = from.paragraphProperties;
133946
+ }
133947
+ if (from?.endParaRunProperties !== void 0) {
133948
+ restored.endParaRunProperties = from.endParaRunProperties;
133949
+ }
133950
+ return [restored, ...rest];
133951
+ }
133890
133952
  function remapTextToSegments(newText, originalSegments, elementTextStyle) {
133891
133953
  const fallbackStyle = { ...elementTextStyle };
133892
133954
  if (!originalSegments || originalSegments.length === 0) {
133893
133955
  return [{ text: newText, style: fallbackStyle }];
133894
133956
  }
133895
- const originalParagraphs = [[]];
133957
+ const originalParagraphs = [
133958
+ { segments: [] }
133959
+ ];
133896
133960
  for (const seg of originalSegments) {
133897
133961
  if (seg.text === "\n" || seg.isParagraphBreak) {
133898
- originalParagraphs.push([]);
133962
+ originalParagraphs[originalParagraphs.length - 1].terminator = seg;
133963
+ originalParagraphs.push({ segments: [] });
133899
133964
  } else {
133900
- originalParagraphs[originalParagraphs.length - 1].push(seg);
133965
+ originalParagraphs[originalParagraphs.length - 1].segments.push(seg);
133901
133966
  }
133902
133967
  }
133903
133968
  const newParagraphTexts = newText.split("\n");
133904
- const firstContentSeg = originalParagraphs.flat().find((s) => s.text.trim().length > 0);
133969
+ const firstContentSeg = originalParagraphs.flatMap((paragraph) => paragraph.segments).find((s) => s.text.trim().length > 0);
133905
133970
  const baseFallbackStyle = firstContentSeg?.style ? { ...firstContentSeg.style } : fallbackStyle;
133906
133971
  function remapParagraph(paraNewText, paraOrigSegments) {
133907
133972
  if (paraOrigSegments.length === 0) {
133908
133973
  return paraNewText.length > 0 ? [{ text: paraNewText, style: { ...baseFallbackStyle } }] : [{ text: "", style: { ...baseFallbackStyle } }];
133909
133974
  }
133975
+ const firstSegment = paraOrigSegments[0];
133976
+ const dedicatedMarker = isBulletMarkerSegment(firstSegment) && (!firstSegment.bulletInfo?.autoNumType || firstSegment.bulletInfo.paragraphIndex !== void 0) ? firstSegment : void 0;
133977
+ if (dedicatedMarker) {
133978
+ const contentSegments = paraOrigSegments.slice(1);
133979
+ const contentText = withoutRenderedBulletPrefix(
133980
+ paraNewText,
133981
+ paraOrigSegments,
133982
+ dedicatedMarker
133983
+ );
133984
+ const content = contentSegments.length > 0 ? remapParagraph(contentText, contentSegments) : [{ text: contentText, style: { ...dedicatedMarker.style } }];
133985
+ return [dedicatedMarker, ...content];
133986
+ }
133910
133987
  const paragraphBulletInfo = paraOrigSegments[0].bulletInfo;
133911
133988
  if (paraNewText.length === 0) {
133912
133989
  const emptyStyle = { ...paraOrigSegments[0].style };
@@ -133976,15 +134053,19 @@ function remapTextToSegments(newText, originalSegments, elementTextStyle) {
133976
134053
  return remapped;
133977
134054
  }
133978
134055
  const output = [];
133979
- const lastOrigPara = originalParagraphs[originalParagraphs.length - 1];
134056
+ const lastOrigPara = originalParagraphs[originalParagraphs.length - 1]?.segments;
133980
134057
  for (let pi = 0; pi < newParagraphTexts.length; pi++) {
133981
134058
  if (pi > 0) {
133982
- const precedingOrigPara = originalParagraphs[pi - 1] ?? [];
134059
+ const precedingOrigPara = originalParagraphs[pi - 1]?.segments ?? [];
133983
134060
  const breakStyle = precedingOrigPara[0]?.style ? { ...precedingOrigPara[0].style } : { ...baseFallbackStyle };
133984
134061
  output.push({ text: "\n", style: breakStyle, isParagraphBreak: true });
133985
134062
  }
133986
- const origPara = originalParagraphs[pi] ?? lastOrigPara ?? [];
133987
- const paraSegments = remapParagraph(newParagraphTexts[pi], origPara);
134063
+ const originalParagraph = originalParagraphs[pi];
134064
+ const origPara = originalParagraph?.segments ?? lastOrigPara ?? [];
134065
+ const paraSegments = restoreParagraphMetadata(
134066
+ originalParagraph?.segments[0] ?? originalParagraph?.terminator,
134067
+ remapParagraph(newParagraphTexts[pi], origPara)
134068
+ );
133988
134069
  output.push(...paraSegments);
133989
134070
  }
133990
134071
  return output.length > 0 ? output : [{ text: "", style: { ...baseFallbackStyle } }];
@@ -152322,6 +152403,34 @@ function updateElement(slides, slideIndex, elementId, updates) {
152322
152403
  )
152323
152404
  );
152324
152405
  }
152406
+ function readEditableText(root) {
152407
+ let out = "";
152408
+ const walk2 = (node) => {
152409
+ for (const child27 of Array.from(node.childNodes)) {
152410
+ if (child27.nodeType === 3) {
152411
+ out += child27.nodeValue ?? "";
152412
+ continue;
152413
+ }
152414
+ if (!(child27 instanceof HTMLElement)) {
152415
+ continue;
152416
+ }
152417
+ if (child27.hasAttribute("data-pptx-bullet-marker")) {
152418
+ continue;
152419
+ }
152420
+ if (child27.tagName === "BR") {
152421
+ out += "\n";
152422
+ continue;
152423
+ }
152424
+ const isBlock = child27.tagName === "DIV" || child27.tagName === "P";
152425
+ if (isBlock && out.length > 0 && !out.endsWith("\n")) {
152426
+ out += "\n";
152427
+ }
152428
+ walk2(child27);
152429
+ }
152430
+ };
152431
+ walk2(root);
152432
+ return out;
152433
+ }
152325
152434
  var STROKE_DASH_OPTIONS = [
152326
152435
  { value: "solid", label: "Solid", i18nKey: "pptx.stroke.dashSolid" },
152327
152436
  { value: "dot", label: "Dot", i18nKey: "pptx.stroke.dashDot" },
@@ -155211,6 +155320,7 @@ exports.radarStylePatch = radarStylePatch;
155211
155320
  exports.reResolveElementColors = reResolveElementColors;
155212
155321
  exports.reResolveSlideColors = reResolveSlideColors;
155213
155322
  exports.readBackstageRecentFile = readBackstageRecentFile;
155323
+ exports.readEditableText = readEditableText;
155214
155324
  exports.readOnlyRecommendation = readOnlyRecommendation;
155215
155325
  exports.readRibbonTransitionDraft = readRibbonTransitionDraft;
155216
155326
  exports.readSlideShowOption = readSlideShowOption;
Binary file
Binary file