pptx-react-viewer 2.15.1 → 2.15.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/dist/{AiChatPanel-YDX2WONS.mjs → AiChatPanel-OXAKUVYH.mjs} +3 -3
  3. package/dist/AiChatPanel-OXAKUVYH.mjs.br +0 -0
  4. package/dist/AiChatPanel-OXAKUVYH.mjs.gz +0 -0
  5. package/dist/{AiChatPanel-JWCGIYBL.js → AiChatPanel-R7BYGQX5.js} +22 -22
  6. package/dist/AiChatPanel-R7BYGQX5.js.br +0 -0
  7. package/dist/AiChatPanel-R7BYGQX5.js.gz +0 -0
  8. package/dist/{Model3DScene-4FFR5CF5.js → Model3DScene-BK7RWDCU.js} +2 -2
  9. package/dist/Model3DScene-BK7RWDCU.js.br +0 -0
  10. package/dist/Model3DScene-BK7RWDCU.js.gz +0 -0
  11. package/dist/{Model3DScene-ZVWROBJT.mjs → Model3DScene-TPUVF4FY.mjs} +1 -1
  12. package/dist/Model3DScene-TPUVF4FY.mjs.br +0 -0
  13. package/dist/Model3DScene-TPUVF4FY.mjs.gz +0 -0
  14. package/dist/{SurfaceChart3DScene-PJLRTJLR.mjs → SurfaceChart3DScene-FXJ45DC5.mjs} +1 -1
  15. package/dist/{SurfaceChart3DScene-PJLRTJLR.mjs.br → SurfaceChart3DScene-FXJ45DC5.mjs.br} +0 -0
  16. package/dist/SurfaceChart3DScene-FXJ45DC5.mjs.gz +0 -0
  17. package/dist/{SurfaceChart3DScene-WEH6CLAU.js → SurfaceChart3DScene-WOLVZOW3.js} +2 -2
  18. package/dist/SurfaceChart3DScene-WOLVZOW3.js.br +0 -0
  19. package/dist/SurfaceChart3DScene-WOLVZOW3.js.gz +0 -0
  20. package/dist/{chunk-OEK3VKSO.js → chunk-3XJODTAV.js} +348 -340
  21. package/dist/chunk-3XJODTAV.js.br +0 -0
  22. package/dist/chunk-3XJODTAV.js.gz +0 -0
  23. package/dist/{chunk-7TFVXCBY.mjs → chunk-6M6WP2TK.mjs} +214 -150
  24. package/dist/chunk-6M6WP2TK.mjs.br +0 -0
  25. package/dist/chunk-6M6WP2TK.mjs.gz +0 -0
  26. package/dist/{chunk-KFGVJONB.js → chunk-FHTEL3Q6.js} +253 -249
  27. package/dist/chunk-FHTEL3Q6.js.br +0 -0
  28. package/dist/chunk-FHTEL3Q6.js.gz +0 -0
  29. package/dist/{chunk-BHDUV2LM.js → chunk-IEXZ2JSO.js} +1084 -1052
  30. package/dist/chunk-IEXZ2JSO.js.br +0 -0
  31. package/dist/chunk-IEXZ2JSO.js.gz +0 -0
  32. package/dist/{chunk-LCDAL2JQ.mjs → chunk-OPX74QGH.mjs} +16 -8
  33. package/dist/chunk-OPX74QGH.mjs.br +0 -0
  34. package/dist/chunk-OPX74QGH.mjs.gz +0 -0
  35. package/dist/{chunk-ESUQSKGF.mjs → chunk-RPGAI65Z.mjs} +41 -9
  36. package/dist/chunk-RPGAI65Z.mjs.br +0 -0
  37. package/dist/chunk-RPGAI65Z.mjs.gz +0 -0
  38. package/dist/{chunk-LZDGIEN3.js → chunk-T5IS3MGN.js} +3 -3
  39. package/dist/chunk-T5IS3MGN.js.br +0 -0
  40. package/dist/chunk-T5IS3MGN.js.gz +0 -0
  41. package/dist/{chunk-YAWRDLCV.mjs → chunk-U2UPBBJV.mjs} +1 -1
  42. package/dist/chunk-U2UPBBJV.mjs.br +0 -0
  43. package/dist/chunk-U2UPBBJV.mjs.gz +0 -0
  44. package/dist/{chunk-YUPKCGB5.mjs → chunk-WJNWCKS7.mjs} +12 -8
  45. package/dist/chunk-WJNWCKS7.mjs.br +0 -0
  46. package/dist/chunk-WJNWCKS7.mjs.gz +0 -0
  47. package/dist/{chunk-Z3FYYUGI.js → chunk-YBTRSG74.js} +217 -150
  48. package/dist/chunk-YBTRSG74.js.br +0 -0
  49. package/dist/chunk-YBTRSG74.js.gz +0 -0
  50. package/dist/index.js +39 -39
  51. package/dist/index.js.br +0 -0
  52. package/dist/index.js.gz +0 -0
  53. package/dist/index.mjs +5 -5
  54. package/dist/index.mjs.br +0 -0
  55. package/dist/index.mjs.gz +0 -0
  56. package/dist/internals.js +78 -78
  57. package/dist/internals.js.br +0 -0
  58. package/dist/internals.js.gz +0 -0
  59. package/dist/internals.mjs +3 -3
  60. package/dist/internals.mjs.br +0 -0
  61. package/dist/internals.mjs.gz +0 -0
  62. package/dist/viewer/index.js +26 -26
  63. package/dist/viewer/index.js.br +0 -0
  64. package/dist/viewer/index.js.gz +0 -0
  65. package/dist/viewer/index.mjs +5 -5
  66. package/dist/viewer/index.mjs.br +0 -0
  67. package/dist/viewer/index.mjs.gz +0 -0
  68. package/package.json +1 -1
  69. package/dist/AiChatPanel-JWCGIYBL.js.br +0 -0
  70. package/dist/AiChatPanel-JWCGIYBL.js.gz +0 -0
  71. package/dist/AiChatPanel-YDX2WONS.mjs.br +0 -0
  72. package/dist/AiChatPanel-YDX2WONS.mjs.gz +0 -0
  73. package/dist/Model3DScene-4FFR5CF5.js.br +0 -0
  74. package/dist/Model3DScene-4FFR5CF5.js.gz +0 -0
  75. package/dist/Model3DScene-ZVWROBJT.mjs.br +0 -0
  76. package/dist/Model3DScene-ZVWROBJT.mjs.gz +0 -0
  77. package/dist/SurfaceChart3DScene-PJLRTJLR.mjs.gz +0 -0
  78. package/dist/SurfaceChart3DScene-WEH6CLAU.js.br +0 -0
  79. package/dist/SurfaceChart3DScene-WEH6CLAU.js.gz +0 -0
  80. package/dist/chunk-7TFVXCBY.mjs.br +0 -0
  81. package/dist/chunk-7TFVXCBY.mjs.gz +0 -0
  82. package/dist/chunk-BHDUV2LM.js.br +0 -0
  83. package/dist/chunk-BHDUV2LM.js.gz +0 -0
  84. package/dist/chunk-ESUQSKGF.mjs.br +0 -0
  85. package/dist/chunk-ESUQSKGF.mjs.gz +0 -0
  86. package/dist/chunk-KFGVJONB.js.br +0 -0
  87. package/dist/chunk-KFGVJONB.js.gz +0 -0
  88. package/dist/chunk-LCDAL2JQ.mjs.br +0 -0
  89. package/dist/chunk-LCDAL2JQ.mjs.gz +0 -0
  90. package/dist/chunk-LZDGIEN3.js.br +0 -0
  91. package/dist/chunk-LZDGIEN3.js.gz +0 -0
  92. package/dist/chunk-OEK3VKSO.js.br +0 -0
  93. package/dist/chunk-OEK3VKSO.js.gz +0 -0
  94. package/dist/chunk-YAWRDLCV.mjs.br +0 -0
  95. package/dist/chunk-YAWRDLCV.mjs.gz +0 -0
  96. package/dist/chunk-YUPKCGB5.mjs.br +0 -0
  97. package/dist/chunk-YUPKCGB5.mjs.gz +0 -0
  98. package/dist/chunk-Z3FYYUGI.js.br +0 -0
  99. package/dist/chunk-Z3FYYUGI.js.gz +0 -0
@@ -28213,7 +28213,9 @@ var teardrop = {
28213
28213
  gd10("dx1", "*/ wd2 a 100000"),
28214
28214
  gd10("dy1", "*/ hd2 a 100000"),
28215
28215
  gd10("x1", "+- hc dx1 0"),
28216
- gd10("y1", "+- vc 0 dy1")
28216
+ gd10("y1", "+- vc 0 dy1"),
28217
+ gd10("x2", "+/ hc x1 2"),
28218
+ gd10("y2", "+/ vc y1 2")
28217
28219
  ],
28218
28220
  rect: FULL_RECT8,
28219
28221
  pathLst: [
@@ -28221,8 +28223,10 @@ var teardrop = {
28221
28223
  commands: [
28222
28224
  { kind: "moveTo", x: "l", y: "vc" },
28223
28225
  { kind: "arcTo", wR: "wd2", hR: "hd2", stAng: "cd2", swAng: "cd4" },
28224
- { kind: "quadBezTo", x1: "hc", y1: "y1", x2: "x1", y2: "y1" },
28225
- { kind: "quadBezTo", x1: "x1", y1: "vc", x2: "r", y2: "vc" },
28226
+ // `x1`/`y1` here are the CONTROL point, `x2`/`y2` the endpoint; the
28227
+ // guides keep the spec's own names, hence `x1: 'x2'`.
28228
+ { kind: "quadBezTo", x1: "x2", y1: "t", x2: "x1", y2: "y1" },
28229
+ { kind: "quadBezTo", x1: "r", y1: "y2", x2: "r", y2: "vc" },
28226
28230
  { kind: "arcTo", wR: "wd2", hR: "hd2", stAng: "0", swAng: "cd4" },
28227
28231
  { kind: "arcTo", wR: "wd2", hR: "hd2", stAng: "cd4", swAng: "cd4" },
28228
28232
  { kind: "close" }
@@ -29229,10 +29233,17 @@ var parallelogram = {
29229
29233
  name: "parallelogram",
29230
29234
  avLst: { adj: 25e3 },
29231
29235
  gdLst: [
29232
- gd13("a", "pin 0 adj 100000"),
29233
- gd13("x1", "*/ w a 200000"),
29236
+ // The skew is measured against `ss` (the SHORT side), not `w`, and `adj`
29237
+ // pins against `maxAdj` rather than a flat 100000 (ECMA-376 20.1.9.venus).
29238
+ // Scaling off `w` only agrees with PowerPoint while w <= h; for a wide,
29239
+ // short parallelogram it overstates the skew, so a band authored to butt
29240
+ // against a neighbouring shape fell short of it and left a wedge of slide
29241
+ // background showing through the seam.
29242
+ gd13("maxAdj", "*/ 100000 w ss"),
29243
+ gd13("a", "pin 0 adj maxAdj"),
29244
+ gd13("x1", "*/ ss a 200000"),
29234
29245
  gd13("x2", "+- w 0 x1"),
29235
- gd13("x3", "*/ w a 100000"),
29246
+ gd13("x3", "*/ ss a 100000"),
29236
29247
  gd13("x4", "+- r 0 x3"),
29237
29248
  gd13("x5", "*/ x3 1 2"),
29238
29249
  gd13("x6", "+- r 0 x5")
@@ -36239,6 +36250,18 @@ function applyChartPivotSource(chartSpace, value, localName22) {
36239
36250
  chartSpace[`${prefix}:pivotSource`] = node;
36240
36251
  }
36241
36252
  }
36253
+ function getElementTextContent(element) {
36254
+ if (!hasTextProperties(element)) {
36255
+ return "";
36256
+ }
36257
+ if (typeof element.text === "string") {
36258
+ return element.text;
36259
+ }
36260
+ if (!element.textSegments || element.textSegments.length === 0) {
36261
+ return "";
36262
+ }
36263
+ return element.textSegments.map((segment) => String(segment.text || "")).join("");
36264
+ }
36242
36265
  var JUMP_VERB_MAP = {
36243
36266
  nextslide: "nextSlide",
36244
36267
  previousslide: "prevSlide",
@@ -85906,6 +85929,63 @@ function getResolvedShapeClipPath(element, width, height) {
85906
85929
  const adjustments = element.shapeAdjustments;
85907
85930
  return getResolvedShapeClipPathFor(shapeType, w, h, adjustments);
85908
85931
  }
85932
+ var IDENTITY_RECT_PRESETS = /* @__PURE__ */ new Set(["rect", "flowchartprocess"]);
85933
+ function isIdentityRectClip(element) {
85934
+ const custom = element;
85935
+ if (custom.pathData && custom.pathWidth && custom.pathHeight) {
85936
+ return false;
85937
+ }
85938
+ const shapeType = element.shapeType;
85939
+ return shapeType !== void 0 && IDENTITY_RECT_PRESETS.has(shapeType.toLowerCase());
85940
+ }
85941
+ function getCompoundLineOffsets(compoundLine, strokeWidth) {
85942
+ if (!compoundLine || compoundLine === "sng") {
85943
+ return [0];
85944
+ }
85945
+ const gap = Math.max(strokeWidth * 0.6, 1.5);
85946
+ if (compoundLine === "dbl") {
85947
+ return [-gap, gap];
85948
+ }
85949
+ if (compoundLine === "thickThin") {
85950
+ return [-gap * 0.6, gap];
85951
+ }
85952
+ if (compoundLine === "thinThick") {
85953
+ return [-gap, gap * 0.6];
85954
+ }
85955
+ if (compoundLine === "tri") {
85956
+ return [-gap, 0, gap];
85957
+ }
85958
+ return [0];
85959
+ }
85960
+ function getCompoundLineWidths(compoundLine, strokeWidth) {
85961
+ const base = Math.max(strokeWidth, 1);
85962
+ if (!compoundLine || compoundLine === "sng") {
85963
+ return [base];
85964
+ }
85965
+ if (compoundLine === "dbl") {
85966
+ return [base * 0.5, base * 0.5];
85967
+ }
85968
+ if (compoundLine === "thickThin") {
85969
+ return [base * 0.7, base * 0.3];
85970
+ }
85971
+ if (compoundLine === "thinThick") {
85972
+ return [base * 0.3, base * 0.7];
85973
+ }
85974
+ if (compoundLine === "tri") {
85975
+ return [base * 0.3, base * 0.4, base * 0.3];
85976
+ }
85977
+ return [base];
85978
+ }
85979
+ function svgLineCap(lineCap) {
85980
+ switch (lineCap) {
85981
+ case "flat":
85982
+ return "butt";
85983
+ case "sq":
85984
+ return "square";
85985
+ default:
85986
+ return "round";
85987
+ }
85988
+ }
85909
85989
  function normalizeHexColor(value, fallback = DEFAULT_TEXT_COLOR) {
85910
85990
  if (!value || value === "transparent") {
85911
85991
  return fallback;
@@ -86563,145 +86643,6 @@ function resolveComputedFill(ss, element) {
86563
86643
  }
86564
86644
  return {};
86565
86645
  }
86566
- function round4(value) {
86567
- return Math.round(value * 1e4) / 1e4;
86568
- }
86569
- function svgGradientId(elementId, suffix = "grad") {
86570
- const seed = String(elementId).replace(/[^a-zA-Z0-9_-]/gu, "_");
86571
- return `pptx-${suffix}-${seed}`;
86572
- }
86573
- function toSvgStops(stops) {
86574
- return sanitizeGradientStops(stops).map((stop) => ({
86575
- offset: round4(stop.position / 100),
86576
- color: stop.color,
86577
- ...typeof stop.opacity === "number" ? { opacity: round4(stop.opacity) } : {}
86578
- }));
86579
- }
86580
- function linearEndpoints(angleDegrees) {
86581
- const radians = angleDegrees * Math.PI / 180;
86582
- const dx = Math.cos(radians);
86583
- const dy = Math.sin(radians);
86584
- const span = (Math.abs(dx) + Math.abs(dy)) / 2;
86585
- return {
86586
- x1: round4(0.5 - dx * span),
86587
- y1: round4(0.5 - dy * span),
86588
- x2: round4(0.5 + dx * span),
86589
- y2: round4(0.5 + dy * span)
86590
- };
86591
- }
86592
- function buildFromSource(source, id) {
86593
- const { stops } = source;
86594
- if (stops.length === 0) {
86595
- return void 0;
86596
- }
86597
- if ((source.type || "linear") === "radial") {
86598
- const { cx, cy } = computeGradientCenter(source.fillToRect, source.focalPoint);
86599
- const fx = cx / 100;
86600
- const fy = cy / 100;
86601
- const r = Math.hypot(Math.max(fx, 1 - fx), Math.max(fy, 1 - fy));
86602
- return { kind: "radial", id, cx: round4(fx), cy: round4(fy), r: round4(r), stops };
86603
- }
86604
- const angle = typeof source.angle === "number" && Number.isFinite(source.angle) ? source.angle : 90;
86605
- return { kind: "linear", id, ...linearEndpoints(angle), stops };
86606
- }
86607
- function buildSvgGradientDef(style, elementId) {
86608
- if (!style || style.fillMode !== "gradient") {
86609
- return void 0;
86610
- }
86611
- return buildFromSource(
86612
- {
86613
- stops: toSvgStops(style.fillGradientStops),
86614
- type: style.fillGradientType,
86615
- angle: style.fillGradientAngle,
86616
- fillToRect: style.fillGradientFillToRect,
86617
- focalPoint: style.fillGradientFocalPoint
86618
- },
86619
- svgGradientId(elementId)
86620
- );
86621
- }
86622
- function buildSvgStrokeGradientDef(style, elementId) {
86623
- if (!style || style.strokeFillMode !== "gradient") {
86624
- return void 0;
86625
- }
86626
- return buildFromSource(
86627
- {
86628
- stops: toSvgStops(style.strokeGradientStops),
86629
- type: style.strokeGradientType,
86630
- angle: style.strokeGradientAngle
86631
- },
86632
- svgGradientId(elementId, "stroke")
86633
- );
86634
- }
86635
- function buildSvgStrokePatternDef(style, elementId) {
86636
- if (!style || style.strokeFillMode !== "pattern" || !style.strokePatternPreset) {
86637
- return void 0;
86638
- }
86639
- const fg = normalizeHexColor(style.strokeColor, "#000000");
86640
- const bg = normalizeHexColor(style.strokePatternBackgroundColor, "#ffffff");
86641
- const tile = getPatternTile(style.strokePatternPreset, fg, bg);
86642
- if (!tile) {
86643
- return void 0;
86644
- }
86645
- const markup = `<svg xmlns="http://www.w3.org/2000/svg" width="${tile.w}" height="${tile.h}">${tile.inner}</svg>`;
86646
- return {
86647
- kind: "pattern",
86648
- id: svgGradientId(elementId, "strokepat"),
86649
- width: tile.w,
86650
- height: tile.h,
86651
- href: `data:image/svg+xml,${encodeURIComponent(markup)}`
86652
- };
86653
- }
86654
- function svgGradientFillRef(def) {
86655
- return `url(#${def.id})`;
86656
- }
86657
- function getCompoundLineOffsets(compoundLine, strokeWidth) {
86658
- if (!compoundLine || compoundLine === "sng") {
86659
- return [0];
86660
- }
86661
- const gap = Math.max(strokeWidth * 0.6, 1.5);
86662
- if (compoundLine === "dbl") {
86663
- return [-gap, gap];
86664
- }
86665
- if (compoundLine === "thickThin") {
86666
- return [-gap * 0.6, gap];
86667
- }
86668
- if (compoundLine === "thinThick") {
86669
- return [-gap, gap * 0.6];
86670
- }
86671
- if (compoundLine === "tri") {
86672
- return [-gap, 0, gap];
86673
- }
86674
- return [0];
86675
- }
86676
- function getCompoundLineWidths(compoundLine, strokeWidth) {
86677
- const base = Math.max(strokeWidth, 1);
86678
- if (!compoundLine || compoundLine === "sng") {
86679
- return [base];
86680
- }
86681
- if (compoundLine === "dbl") {
86682
- return [base * 0.5, base * 0.5];
86683
- }
86684
- if (compoundLine === "thickThin") {
86685
- return [base * 0.7, base * 0.3];
86686
- }
86687
- if (compoundLine === "thinThick") {
86688
- return [base * 0.3, base * 0.7];
86689
- }
86690
- if (compoundLine === "tri") {
86691
- return [base * 0.3, base * 0.4, base * 0.3];
86692
- }
86693
- return [base];
86694
- }
86695
- function svgLineCap(lineCap) {
86696
- switch (lineCap) {
86697
- case "flat":
86698
- return "butt";
86699
- case "sq":
86700
- return "square";
86701
- default:
86702
- return "round";
86703
- }
86704
- }
86705
86646
  function normalizeStrokeDashType(value) {
86706
86647
  const normalized = String(value || "").trim().toLowerCase();
86707
86648
  if (!normalized) {
@@ -86914,6 +86855,97 @@ function strokeOnlyPresetPathData(element) {
86914
86855
  const stroked = paths.filter((path) => path.stroke !== false).map((path) => path.d);
86915
86856
  return stroked.length > 0 ? stroked.join(" ") : void 0;
86916
86857
  }
86858
+ function round4(value) {
86859
+ return Math.round(value * 1e4) / 1e4;
86860
+ }
86861
+ function svgGradientId(elementId, suffix = "grad") {
86862
+ const seed = String(elementId).replace(/[^a-zA-Z0-9_-]/gu, "_");
86863
+ return `pptx-${suffix}-${seed}`;
86864
+ }
86865
+ function toSvgStops(stops) {
86866
+ return sanitizeGradientStops(stops).map((stop) => ({
86867
+ offset: round4(stop.position / 100),
86868
+ color: stop.color,
86869
+ ...typeof stop.opacity === "number" ? { opacity: round4(stop.opacity) } : {}
86870
+ }));
86871
+ }
86872
+ function linearEndpoints(angleDegrees) {
86873
+ const radians = angleDegrees * Math.PI / 180;
86874
+ const dx = Math.cos(radians);
86875
+ const dy = Math.sin(radians);
86876
+ const span = (Math.abs(dx) + Math.abs(dy)) / 2;
86877
+ return {
86878
+ x1: round4(0.5 - dx * span),
86879
+ y1: round4(0.5 - dy * span),
86880
+ x2: round4(0.5 + dx * span),
86881
+ y2: round4(0.5 + dy * span)
86882
+ };
86883
+ }
86884
+ function buildFromSource(source, id) {
86885
+ const { stops } = source;
86886
+ if (stops.length === 0) {
86887
+ return void 0;
86888
+ }
86889
+ if ((source.type || "linear") === "radial") {
86890
+ const { cx, cy } = computeGradientCenter(source.fillToRect, source.focalPoint);
86891
+ const fx = cx / 100;
86892
+ const fy = cy / 100;
86893
+ const r = Math.hypot(Math.max(fx, 1 - fx), Math.max(fy, 1 - fy));
86894
+ return { kind: "radial", id, cx: round4(fx), cy: round4(fy), r: round4(r), stops };
86895
+ }
86896
+ const angle = typeof source.angle === "number" && Number.isFinite(source.angle) ? source.angle : 90;
86897
+ return { kind: "linear", id, ...linearEndpoints(angle), stops };
86898
+ }
86899
+ function buildSvgGradientDef(style, elementId) {
86900
+ if (!style || style.fillMode !== "gradient") {
86901
+ return void 0;
86902
+ }
86903
+ return buildFromSource(
86904
+ {
86905
+ stops: toSvgStops(style.fillGradientStops),
86906
+ type: style.fillGradientType,
86907
+ angle: style.fillGradientAngle,
86908
+ fillToRect: style.fillGradientFillToRect,
86909
+ focalPoint: style.fillGradientFocalPoint
86910
+ },
86911
+ svgGradientId(elementId)
86912
+ );
86913
+ }
86914
+ function buildSvgStrokeGradientDef(style, elementId) {
86915
+ if (!style || style.strokeFillMode !== "gradient") {
86916
+ return void 0;
86917
+ }
86918
+ return buildFromSource(
86919
+ {
86920
+ stops: toSvgStops(style.strokeGradientStops),
86921
+ type: style.strokeGradientType,
86922
+ angle: style.strokeGradientAngle
86923
+ },
86924
+ svgGradientId(elementId, "stroke")
86925
+ );
86926
+ }
86927
+ function buildSvgStrokePatternDef(style, elementId) {
86928
+ if (!style || style.strokeFillMode !== "pattern" || !style.strokePatternPreset) {
86929
+ return void 0;
86930
+ }
86931
+ const fg = normalizeHexColor(style.strokeColor, "#000000");
86932
+ const bg = normalizeHexColor(style.strokePatternBackgroundColor, "#ffffff");
86933
+ const tile = getPatternTile(style.strokePatternPreset, fg, bg);
86934
+ if (!tile) {
86935
+ return void 0;
86936
+ }
86937
+ const markup = `<svg xmlns="http://www.w3.org/2000/svg" width="${tile.w}" height="${tile.h}">${tile.inner}</svg>`;
86938
+ return {
86939
+ kind: "pattern",
86940
+ id: svgGradientId(elementId, "strokepat"),
86941
+ width: tile.w,
86942
+ height: tile.h,
86943
+ href: `data:image/svg+xml,${encodeURIComponent(markup)}`
86944
+ };
86945
+ }
86946
+ function svgGradientFillRef(def) {
86947
+ return `url(#${def.id})`;
86948
+ }
86917
86949
  var DEFAULT_OPEN_PRESET_STROKE_WIDTH = 2;
86918
86950
  function outlinePathData(clipPath, width, height) {
86919
86951
  if (!Number.isFinite(width) || !Number.isFinite(height) || width <= 0 || height <= 0) {
@@ -86991,6 +87023,29 @@ function strokeOutlineViewBox(element) {
86991
87023
  function suppressesCssBorder(element) {
86992
87024
  return buildStrokeOutline(element) !== void 0;
86993
87025
  }
87026
+ var HOLLOW_HIT_MIN_WIDTH = 10;
87027
+ function isHollowShapeElement(element) {
87028
+ if (element.type !== "shape" || !hasShapeProperties(element)) {
87029
+ return false;
87030
+ }
87031
+ const style = element.shapeStyle;
87032
+ const filled = style?.fillColor !== void 0 && style.fillColor !== "transparent" || style?.fillMode === "gradient" || style?.fillMode === "pattern" || style?.fillMode === "image" || style?.fillMode === "group" || Boolean(style?.fillGradient);
87033
+ if (filled) {
87034
+ return false;
87035
+ }
87036
+ return getElementTextContent(element).trim() === "";
87037
+ }
87038
+ function buildHollowHitOutline(element) {
87039
+ if (!isHollowShapeElement(element)) {
87040
+ return void 0;
87041
+ }
87042
+ const d = outlinePathData(getResolvedShapeClipPath(element), element.width, element.height);
87043
+ if (!d) {
87044
+ return void 0;
87045
+ }
87046
+ const strokeWidth = hasShapeProperties(element) ? element.shapeStyle?.strokeWidth ?? 0 : 0;
87047
+ return { d, strokeWidth: Math.max(strokeWidth * 3, HOLLOW_HIT_MIN_WIDTH) };
87048
+ }
86994
87049
  function hasStrokePaint(style) {
86995
87050
  if (!style || Math.max(0, style.strokeWidth ?? 0) <= 0) {
86996
87051
  return false;
@@ -92050,6 +92105,7 @@ function buildMultiLevelCategoryLabels(categoryLabels, categoryLevels, sourceInd
92050
92105
  const direction = labelsAbove ? -1 : 1;
92051
92106
  const fontPx = axis?.fontSize !== void 0 ? chartFontPx(axis.fontSize) : DEFAULT_CHART_TEXT_PX;
92052
92107
  const bandHeight = Math.max(fontPx, 8) + 4;
92108
+ const baselineShift = labelsAbove ? -0.2 * fontPx : 0.8 * fontPx;
92053
92109
  return levels.flatMap((level, levelIndex) => {
92054
92110
  const values = sourceIndices2.map((sourceIndex) => level[sourceIndex] ?? "");
92055
92111
  return groupedLabels(values).flatMap((group2) => {
@@ -92062,7 +92118,7 @@ function buildMultiLevelCategoryLabels(categoryLabels, categoryLevels, sourceInd
92062
92118
  {
92063
92119
  kind: "text",
92064
92120
  x: (startX + endX) / 2,
92065
- y: labelY + direction * (offset + levelIndex * bandHeight),
92121
+ y: labelY + direction * (offset + levelIndex * bandHeight) + baselineShift,
92066
92122
  text: group2.text,
92067
92123
  textAnchor,
92068
92124
  ...chartAxisTextStyle(axis)
@@ -95966,13 +96022,21 @@ function formatAxisValue2(val2, formatCode) {
95966
96022
  }
95967
96023
  return val2.toFixed(1);
95968
96024
  }
96025
+ function categoryAxisBand(chartData) {
96026
+ const axis = chartData.axes?.find(
96027
+ (candidate) => candidate.axisType === "catAx" || candidate.axisType === "dateAx"
96028
+ );
96029
+ const fontPx = axis?.fontSize !== void 0 ? chartFontPx(axis.fontSize) : DEFAULT_CHART_TEXT_PX;
96030
+ const offset = 4 + 8 * ((axis?.labelOffset ?? 100) / 100);
96031
+ return Math.max(24, offset + fontPx * 1.2);
96032
+ }
95969
96033
  function computePlotLayout(elementWidth, elementHeight, chartData, hasAxes, options) {
95970
96034
  const svgWidth = Math.max(1, elementWidth);
95971
96035
  const svgHeight = Math.max(1, elementHeight);
95972
96036
  let plotLeft = hasAxes ? 48 : 8;
95973
96037
  let plotTop = 8;
95974
96038
  let plotRight = svgWidth - 8;
95975
- let plotBottom = svgHeight - (hasAxes ? 24 : 8);
96039
+ let plotBottom = svgHeight - (hasAxes ? categoryAxisBand(chartData) : 8);
95976
96040
  const style = chartData.style;
95977
96041
  const legendPos = style?.legendPosition ?? "b";
95978
96042
  if (style?.hasTitle) {
@@ -109558,7 +109622,7 @@ function getRoundRectAdjustmentValue(element) {
109558
109622
  }
109559
109623
  return DEFAULT_ROUND_RECT_ADJUSTMENT;
109560
109624
  }
109561
- function getRoundRectRadiusPx(element) {
109625
+ function getRoundRectRadiusPx2(element) {
109562
109626
  const normalizedAdjustment = getRoundRectAdjustmentValue(element) / SHAPE_ADJUSTMENT_MAX;
109563
109627
  return Math.min(Math.max(element.width, 1), Math.max(element.height, 1)) * 0.5 * normalizedAdjustment;
109564
109628
  }
@@ -109571,7 +109635,7 @@ function getShapeAdjustmentHandleDescriptor(element) {
109571
109635
  return null;
109572
109636
  }
109573
109637
  const adjustmentValue = getRoundRectAdjustmentValue(element);
109574
- const radiusPx = getRoundRectRadiusPx(element);
109638
+ const radiusPx = getRoundRectRadiusPx2(element);
109575
109639
  const maxWidth = Math.max(element.width, MIN_ELEMENT_SIZE5);
109576
109640
  const handleInset = 5;
109577
109641
  const left = Math.max(handleInset, Math.min(maxWidth - handleInset, Math.round(radiusPx)));
@@ -123366,6 +123430,7 @@ exports.buildElementClipboardPayload = buildElementClipboardPayload;
123366
123430
  exports.buildFieldSubstitutionContext = buildFieldSubstitutionContext;
123367
123431
  exports.buildGlowBoxShadow = buildGlowBoxShadow;
123368
123432
  exports.buildHandoutsHtml = buildHandoutsHtml;
123433
+ exports.buildHollowHitOutline = buildHollowHitOutline;
123369
123434
  exports.buildInitialGuides = buildInitialGuides;
123370
123435
  exports.buildInnerShadowCssFromShapeStyle = buildInnerShadowCssFromShapeStyle;
123371
123436
  exports.buildJoinCollaborationConfig = buildJoinCollaborationConfig;
@@ -123576,7 +123641,7 @@ exports.getPendingSelectionRestore = getPendingSelectionRestore;
123576
123641
  exports.getPresetShapeClipPath = getPresetShapeClipPath;
123577
123642
  exports.getPrintableArea = getPrintableArea;
123578
123643
  exports.getResolvedShapeClipPath = getResolvedShapeClipPath;
123579
- exports.getRoundRectRadiusPx = getRoundRectRadiusPx;
123644
+ exports.getRoundRectRadiusPx2 = getRoundRectRadiusPx2;
123580
123645
  exports.getSecondaryValueAxis = getSecondaryValueAxis;
123581
123646
  exports.getSessionTabId = getSessionTabId;
123582
123647
  exports.getShapeAdjustmentHandleDescriptor = getShapeAdjustmentHandleDescriptor;
@@ -123615,6 +123680,8 @@ exports.isEditorTextInputTarget = isEditorTextInputTarget;
123615
123680
  exports.isElementActionable = isElementActionable;
123616
123681
  exports.isElementRendered = isElementRendered;
123617
123682
  exports.isExportAbortError = isExportAbortError;
123683
+ exports.isHollowShapeElement = isHollowShapeElement;
123684
+ exports.isIdentityRectClip = isIdentityRectClip;
123618
123685
  exports.isImageLikeElement = isImageLikeElement;
123619
123686
  exports.isInkElement = isInkElement;
123620
123687
  exports.isKeyboardOpen = isKeyboardOpen;
Binary file
Binary file
package/dist/index.js CHANGED
@@ -1,54 +1,54 @@
1
1
  'use strict';
2
2
 
3
- var chunkBHDUV2LM_js = require('./chunk-BHDUV2LM.js');
4
- require('./chunk-LZDGIEN3.js');
5
- var chunkOEK3VKSO_js = require('./chunk-OEK3VKSO.js');
6
- var chunkKFGVJONB_js = require('./chunk-KFGVJONB.js');
3
+ var chunkIEXZ2JSO_js = require('./chunk-IEXZ2JSO.js');
4
+ require('./chunk-T5IS3MGN.js');
5
+ var chunk3XJODTAV_js = require('./chunk-3XJODTAV.js');
6
+ var chunkFHTEL3Q6_js = require('./chunk-FHTEL3Q6.js');
7
7
  var chunk3ISYPBSX_js = require('./chunk-3ISYPBSX.js');
8
- var chunkZ3FYYUGI_js = require('./chunk-Z3FYYUGI.js');
8
+ var chunkYBTRSG74_js = require('./chunk-YBTRSG74.js');
9
9
  require('./chunk-4VNS5WPM.js');
10
10
 
11
11
 
12
12
 
13
13
  Object.defineProperty(exports, "PowerPointViewer", {
14
14
  enumerable: true,
15
- get: function () { return chunkBHDUV2LM_js.PowerPointViewer; }
15
+ get: function () { return chunkIEXZ2JSO_js.PowerPointViewer; }
16
16
  });
17
17
  Object.defineProperty(exports, "SlideCanvas", {
18
18
  enumerable: true,
19
- get: function () { return chunkBHDUV2LM_js.SlideCanvas; }
19
+ get: function () { return chunkIEXZ2JSO_js.SlideCanvas; }
20
20
  });
21
21
  Object.defineProperty(exports, "SlideTemplateGalleryDialog", {
22
22
  enumerable: true,
23
- get: function () { return chunkBHDUV2LM_js.SlideTemplateGalleryDialog; }
23
+ get: function () { return chunkIEXZ2JSO_js.SlideTemplateGalleryDialog; }
24
24
  });
25
25
  Object.defineProperty(exports, "SlideTemplatePreview", {
26
26
  enumerable: true,
27
- get: function () { return chunkBHDUV2LM_js.SlideTemplatePreview; }
27
+ get: function () { return chunkIEXZ2JSO_js.SlideTemplatePreview; }
28
28
  });
29
29
  Object.defineProperty(exports, "Toolbar", {
30
30
  enumerable: true,
31
- get: function () { return chunkBHDUV2LM_js.Toolbar; }
31
+ get: function () { return chunkIEXZ2JSO_js.Toolbar; }
32
32
  });
33
33
  Object.defineProperty(exports, "ViewerThemeProvider", {
34
34
  enumerable: true,
35
- get: function () { return chunkBHDUV2LM_js.ViewerThemeProvider; }
35
+ get: function () { return chunkIEXZ2JSO_js.ViewerThemeProvider; }
36
36
  });
37
37
  Object.defineProperty(exports, "useViewerTheme", {
38
38
  enumerable: true,
39
- get: function () { return chunkBHDUV2LM_js.useViewerTheme; }
39
+ get: function () { return chunkIEXZ2JSO_js.useViewerTheme; }
40
40
  });
41
41
  Object.defineProperty(exports, "renderToCanvas", {
42
42
  enumerable: true,
43
- get: function () { return chunkOEK3VKSO_js.renderToCanvas; }
43
+ get: function () { return chunk3XJODTAV_js.renderToCanvas; }
44
44
  });
45
45
  Object.defineProperty(exports, "useViewerBuildingBlocks", {
46
46
  enumerable: true,
47
- get: function () { return chunkOEK3VKSO_js.useViewerBuildingBlocks; }
47
+ get: function () { return chunk3XJODTAV_js.useViewerBuildingBlocks; }
48
48
  });
49
49
  Object.defineProperty(exports, "getAnimationInitialStyle", {
50
50
  enumerable: true,
51
- get: function () { return chunkKFGVJONB_js.getAnimationInitialStyle; }
51
+ get: function () { return chunkFHTEL3Q6_js.getAnimationInitialStyle; }
52
52
  });
53
53
  Object.defineProperty(exports, "LOCALE_CATALOG", {
54
54
  enumerable: true,
@@ -56,97 +56,97 @@ Object.defineProperty(exports, "LOCALE_CATALOG", {
56
56
  });
57
57
  Object.defineProperty(exports, "AVATAR_COLOR_SWATCHES", {
58
58
  enumerable: true,
59
- get: function () { return chunkZ3FYYUGI_js.AVATAR_COLOR_SWATCHES; }
59
+ get: function () { return chunkYBTRSG74_js.AVATAR_COLOR_SWATCHES; }
60
60
  });
61
61
  Object.defineProperty(exports, "DEFAULT_VIEWER_PROFILE", {
62
62
  enumerable: true,
63
- get: function () { return chunkZ3FYYUGI_js.DEFAULT_VIEWER_PROFILE; }
63
+ get: function () { return chunkYBTRSG74_js.DEFAULT_VIEWER_PROFILE; }
64
64
  });
65
65
  Object.defineProperty(exports, "SLIDE_TEMPLATES", {
66
66
  enumerable: true,
67
- get: function () { return chunkZ3FYYUGI_js.SLIDE_TEMPLATES; }
67
+ get: function () { return chunkYBTRSG74_js.SLIDE_TEMPLATES; }
68
68
  });
69
69
  Object.defineProperty(exports, "THEME_CATALOG", {
70
70
  enumerable: true,
71
- get: function () { return chunkZ3FYYUGI_js.THEME_CATALOG; }
71
+ get: function () { return chunkYBTRSG74_js.THEME_CATALOG; }
72
72
  });
73
73
  Object.defineProperty(exports, "VIEWER_PREFS_STORAGE_KEY", {
74
74
  enumerable: true,
75
- get: function () { return chunkZ3FYYUGI_js.VIEWER_PREFS_STORAGE_KEY; }
75
+ get: function () { return chunkYBTRSG74_js.VIEWER_PREFS_STORAGE_KEY; }
76
76
  });
77
77
  Object.defineProperty(exports, "buildSlideTemplateContent", {
78
78
  enumerable: true,
79
- get: function () { return chunkZ3FYYUGI_js.buildSlideTemplateContent; }
79
+ get: function () { return chunkYBTRSG74_js.buildSlideTemplateContent; }
80
80
  });
81
81
  Object.defineProperty(exports, "buildSlideTemplateSlide", {
82
82
  enumerable: true,
83
- get: function () { return chunkZ3FYYUGI_js.buildSlideTemplateSlide; }
83
+ get: function () { return chunkYBTRSG74_js.buildSlideTemplateSlide; }
84
84
  });
85
85
  Object.defineProperty(exports, "clearAllLocalViewerData", {
86
86
  enumerable: true,
87
- get: function () { return chunkZ3FYYUGI_js.clearAllLocalViewerData; }
87
+ get: function () { return chunkYBTRSG74_js.clearAllLocalViewerData; }
88
88
  });
89
89
  Object.defineProperty(exports, "clearStoredViewerPrefs", {
90
90
  enumerable: true,
91
- get: function () { return chunkZ3FYYUGI_js.clearStoredViewerPrefs; }
91
+ get: function () { return chunkYBTRSG74_js.clearStoredViewerPrefs; }
92
92
  });
93
93
  Object.defineProperty(exports, "defaultCssVars", {
94
94
  enumerable: true,
95
- get: function () { return chunkZ3FYYUGI_js.defaultCssVars; }
95
+ get: function () { return chunkYBTRSG74_js.defaultCssVars; }
96
96
  });
97
97
  Object.defineProperty(exports, "defaultRadius", {
98
98
  enumerable: true,
99
- get: function () { return chunkZ3FYYUGI_js.defaultRadius; }
99
+ get: function () { return chunkYBTRSG74_js.defaultRadius; }
100
100
  });
101
101
  Object.defineProperty(exports, "defaultThemeColors", {
102
102
  enumerable: true,
103
- get: function () { return chunkZ3FYYUGI_js.defaultThemeColors; }
103
+ get: function () { return chunkYBTRSG74_js.defaultThemeColors; }
104
104
  });
105
105
  Object.defineProperty(exports, "getLocalStorageUsageSummary", {
106
106
  enumerable: true,
107
- get: function () { return chunkZ3FYYUGI_js.getLocalStorageUsageSummary; }
107
+ get: function () { return chunkYBTRSG74_js.getLocalStorageUsageSummary; }
108
108
  });
109
109
  Object.defineProperty(exports, "readStoredViewerPrefs", {
110
110
  enumerable: true,
111
- get: function () { return chunkZ3FYYUGI_js.readStoredViewerPrefs; }
111
+ get: function () { return chunkYBTRSG74_js.readStoredViewerPrefs; }
112
112
  });
113
113
  Object.defineProperty(exports, "resolveProfileInitial", {
114
114
  enumerable: true,
115
- get: function () { return chunkZ3FYYUGI_js.resolveProfileInitial; }
115
+ get: function () { return chunkYBTRSG74_js.resolveProfileInitial; }
116
116
  });
117
117
  Object.defineProperty(exports, "resolveThemeCatalogEntry", {
118
118
  enumerable: true,
119
- get: function () { return chunkZ3FYYUGI_js.resolveThemeCatalogEntry; }
119
+ get: function () { return chunkYBTRSG74_js.resolveThemeCatalogEntry; }
120
120
  });
121
121
  Object.defineProperty(exports, "saveViewerProfile", {
122
122
  enumerable: true,
123
- get: function () { return chunkZ3FYYUGI_js.saveViewerProfile; }
123
+ get: function () { return chunkYBTRSG74_js.saveViewerProfile; }
124
124
  });
125
125
  Object.defineProperty(exports, "themeToCssVars", {
126
126
  enumerable: true,
127
- get: function () { return chunkZ3FYYUGI_js.themeToCssVars; }
127
+ get: function () { return chunkYBTRSG74_js.themeToCssVars; }
128
128
  });
129
129
  Object.defineProperty(exports, "vermilionDarkColors", {
130
130
  enumerable: true,
131
- get: function () { return chunkZ3FYYUGI_js.vermilionDarkColors; }
131
+ get: function () { return chunkYBTRSG74_js.vermilionDarkColors; }
132
132
  });
133
133
  Object.defineProperty(exports, "vermilionDarkTheme", {
134
134
  enumerable: true,
135
- get: function () { return chunkZ3FYYUGI_js.vermilionDarkTheme; }
135
+ get: function () { return chunkYBTRSG74_js.vermilionDarkTheme; }
136
136
  });
137
137
  Object.defineProperty(exports, "vermilionLightColors", {
138
138
  enumerable: true,
139
- get: function () { return chunkZ3FYYUGI_js.vermilionLightColors; }
139
+ get: function () { return chunkYBTRSG74_js.vermilionLightColors; }
140
140
  });
141
141
  Object.defineProperty(exports, "vermilionLightTheme", {
142
142
  enumerable: true,
143
- get: function () { return chunkZ3FYYUGI_js.vermilionLightTheme; }
143
+ get: function () { return chunkYBTRSG74_js.vermilionLightTheme; }
144
144
  });
145
145
  Object.defineProperty(exports, "vermilionRadius", {
146
146
  enumerable: true,
147
- get: function () { return chunkZ3FYYUGI_js.vermilionRadius; }
147
+ get: function () { return chunkYBTRSG74_js.vermilionRadius; }
148
148
  });
149
149
  Object.defineProperty(exports, "writeStoredViewerPrefs", {
150
150
  enumerable: true,
151
- get: function () { return chunkZ3FYYUGI_js.writeStoredViewerPrefs; }
151
+ get: function () { return chunkYBTRSG74_js.writeStoredViewerPrefs; }
152
152
  });
package/dist/index.js.br CHANGED
Binary file
package/dist/index.js.gz CHANGED
Binary file