ooxml-ui 1.1.0 → 1.2.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 (159) hide show
  1. package/README.md +38 -36
  2. package/custom-elements.json +211 -4
  3. package/dist/chrome/ruler.d.ts +60 -2
  4. package/dist/chrome/ruler.d.ts.map +1 -1
  5. package/dist/chrome/status-bar.d.ts +3 -1
  6. package/dist/chrome/status-bar.d.ts.map +1 -1
  7. package/dist/{chunk-M5DTJSOV.js → chunk-7FNDOWTX.js} +393 -15
  8. package/dist/{chunk-KVKKXRL7.js → chunk-AYXFLBSV.js} +92 -13
  9. package/dist/{chunk-X7RINDJQ.js → chunk-JAJFLFAV.js} +1 -1
  10. package/dist/{chunk-3FPW7M6U.js → chunk-VUB44CAJ.js} +1 -1
  11. package/dist/{chunk-JFJXBYRD.js → chunk-XNCWB2X6.js} +5 -0
  12. package/dist/{chunk-BEN3453I.js → chunk-Y2E22JVO.js} +1 -1
  13. package/dist/{chunk-USDLALB5.js → chunk-YK2DPYMU.js} +1 -1
  14. package/dist/{chunk-ZU7GX4SY.js → chunk-YP5S7DTT.js} +6 -5
  15. package/dist/comments/comments-pane.d.ts +116 -0
  16. package/dist/comments/comments-pane.d.ts.map +1 -0
  17. package/dist/comments/types.d.ts +80 -0
  18. package/dist/comments/types.d.ts.map +1 -0
  19. package/dist/controls.d.ts +4 -2
  20. package/dist/controls.d.ts.map +1 -1
  21. package/dist/controls.js +4 -4
  22. package/dist/docx/comments-panel.d.ts +8 -1
  23. package/dist/docx/image-media.d.ts +1 -1
  24. package/dist/docx/locales/en-ribbon.d.ts +1 -0
  25. package/dist/docx/locales/en.d.ts +1 -0
  26. package/dist/docx/localization-strings.d.ts +1 -0
  27. package/dist/docx/localization.d.ts +7 -0
  28. package/dist/docx/print-layout.d.ts +2 -2
  29. package/dist/docx/print-picture.d.ts +12 -0
  30. package/dist/docx/review-controller.d.ts +2 -0
  31. package/dist/docx/ruler.d.ts +7 -10
  32. package/dist/docx.js +282 -322
  33. package/dist/form/gradient-preset-gallery.d.ts +2 -2
  34. package/dist/index.d.ts +1 -1
  35. package/dist/index.js +8 -8
  36. package/dist/pptx/{chart-3d-view-scene-2KRQ5667.mjs → chart-3d-view-scene-6B5TOWB6.mjs} +3 -3
  37. package/dist/pptx/{chart-3d-view-scene-36DMZWZ3.cjs → chart-3d-view-scene-MJ6YNT56.cjs} +37 -37
  38. package/dist/pptx/{chunk-YOGDIDPB.mjs → chunk-AWKKC3VW.mjs} +8 -2
  39. package/dist/pptx/{chunk-CJU4P5FT.cjs → chunk-STKGUT5S.cjs} +18 -12
  40. package/dist/pptx/{chunk-YHA6XAB3.cjs → chunk-XIQMFSNG.cjs} +1 -1
  41. package/dist/pptx/{chunk-YARCML7O.mjs → chunk-XQVKQD5Z.mjs} +294 -265
  42. package/dist/pptx/{chunk-Y2W4SZER.mjs → chunk-YI5LH5NN.mjs} +479 -336
  43. package/dist/pptx/{chunk-ADOC5JLI.mjs → chunk-YMTQLZ2I.mjs} +1 -1
  44. package/dist/pptx/{chunk-AIL3BNZS.cjs → chunk-YRHK45AB.cjs} +301 -265
  45. package/dist/pptx/{chunk-KPZWYF44.cjs → chunk-ZK344LOB.cjs} +629 -479
  46. package/dist/pptx/dom/elements/chart.d.ts +2 -3
  47. package/dist/pptx/dom/elements/chart.d.ts.map +1 -1
  48. package/dist/pptx/dom/elements/table.d.ts.map +1 -1
  49. package/dist/pptx/dom/index.cjs +254 -243
  50. package/dist/pptx/dom/index.mjs +26 -15
  51. package/dist/pptx/export/html2canvas-clone.cjs +2 -2
  52. package/dist/pptx/export/html2canvas-clone.mjs +1 -1
  53. package/dist/pptx/index.cjs +3025 -2993
  54. package/dist/pptx/index.mjs +4 -4
  55. package/dist/pptx/render/chart-axis-range.d.ts +7 -0
  56. package/dist/pptx/render/chart-axis-range.d.ts.map +1 -1
  57. package/dist/pptx/render/chart-axis-render.d.ts +3 -1
  58. package/dist/pptx/render/chart-axis-render.d.ts.map +1 -1
  59. package/dist/pptx/render/chart-axis-style.d.ts +5 -0
  60. package/dist/pptx/render/chart-axis-style.d.ts.map +1 -1
  61. package/dist/pptx/render/chart-axis.d.ts +1 -1
  62. package/dist/pptx/render/chart-axis.d.ts.map +1 -1
  63. package/dist/pptx/render/chart-cartesian-axes.d.ts.map +1 -1
  64. package/dist/pptx/render/chart-cartesian-bars.d.ts +3 -3
  65. package/dist/pptx/render/chart-cartesian-bars.d.ts.map +1 -1
  66. package/dist/pptx/render/chart-cartesian-percent-stacked.d.ts.map +1 -1
  67. package/dist/pptx/render/chart-cartesian.d.ts.map +1 -1
  68. package/dist/pptx/render/chart-combo-stock.cjs +3 -3
  69. package/dist/pptx/render/chart-combo-stock.mjs +1 -1
  70. package/dist/pptx/render/chart-combo.d.ts.map +1 -1
  71. package/dist/pptx/render/chart-gridlines-toggle.d.ts +13 -1
  72. package/dist/pptx/render/chart-gridlines-toggle.d.ts.map +1 -1
  73. package/dist/pptx/render/chart-helpers.d.ts +13 -13
  74. package/dist/pptx/render/chart-helpers.d.ts.map +1 -1
  75. package/dist/pptx/render/chart-horizontal-bars-helpers.d.ts +7 -3
  76. package/dist/pptx/render/chart-horizontal-bars-helpers.d.ts.map +1 -1
  77. package/dist/pptx/render/chart-horizontal-bars.d.ts.map +1 -1
  78. package/dist/pptx/render/chart-interaction-stacked.d.ts.map +1 -1
  79. package/dist/pptx/render/chart-overlays.cjs +7 -7
  80. package/dist/pptx/render/chart-overlays.mjs +1 -1
  81. package/dist/pptx/render/chart-palette.d.ts +5 -14
  82. package/dist/pptx/render/chart-palette.d.ts.map +1 -1
  83. package/dist/pptx/render/chart-quick-action-styles.d.ts +5 -3
  84. package/dist/pptx/render/chart-quick-action-styles.d.ts.map +1 -1
  85. package/dist/pptx/render/chart-scatter-x-axis.d.ts.map +1 -1
  86. package/dist/pptx/render/chart-style-palette.d.ts +52 -0
  87. package/dist/pptx/render/chart-style-palette.d.ts.map +1 -0
  88. package/dist/pptx/render/chart-surface-treemap.cjs +4 -4
  89. package/dist/pptx/render/chart-surface-treemap.mjs +1 -1
  90. package/dist/pptx/render/chart-view-model-bars.d.ts +31 -1
  91. package/dist/pptx/render/chart-view-model-bars.d.ts.map +1 -1
  92. package/dist/pptx/render/chart-view-model-build.d.ts.map +1 -1
  93. package/dist/pptx/render/chart-view-model.cjs +53 -41
  94. package/dist/pptx/render/chart-view-model.mjs +1 -1
  95. package/dist/pptx/render/chart-waterfall-map.cjs +6 -6
  96. package/dist/pptx/render/chart-waterfall-map.mjs +1 -1
  97. package/dist/pptx/render/foreign-object-svg-document.d.ts +12 -0
  98. package/dist/pptx/render/foreign-object-svg-document.d.ts.map +1 -1
  99. package/dist/pptx/render/index.d.ts +1 -0
  100. package/dist/pptx/render/index.d.ts.map +1 -1
  101. package/dist/pptx/render/table-cell-css.d.ts +3 -2
  102. package/dist/pptx/render/table-cell-css.d.ts.map +1 -1
  103. package/dist/pptx/render/table-cell-edit.d.ts +1 -1
  104. package/dist/pptx/render/table-cell-edit.d.ts.map +1 -1
  105. package/dist/pptx/render/table-cell-paragraphs.d.ts +29 -0
  106. package/dist/pptx/render/table-cell-paragraphs.d.ts.map +1 -0
  107. package/dist/pptx/render/table-style.d.ts +2 -0
  108. package/dist/pptx/render/table-style.d.ts.map +1 -1
  109. package/dist/pptx/render/title-bar.d.ts +5 -0
  110. package/dist/pptx/render/title-bar.d.ts.map +1 -1
  111. package/dist/pptx/render/viewer-root-options.d.ts +11 -3
  112. package/dist/pptx/render/viewer-root-options.d.ts.map +1 -1
  113. package/dist/pptx/web-components/office-token-bridge.d.ts.map +1 -1
  114. package/dist/presence.js +3 -3
  115. package/dist/ribbon/ribbon-tabs.d.ts +2 -1
  116. package/dist/ribbon/ribbon-tabs.d.ts.map +1 -1
  117. package/dist/smartart/smartart-svg.d.ts +3 -2
  118. package/dist/smartart.js +3 -3
  119. package/dist/suite/attachment-store.d.ts +13 -0
  120. package/dist/suite/document-store.d.ts +31 -0
  121. package/dist/suite/index.d.ts +2 -0
  122. package/dist/suite.js +132 -1
  123. package/dist/teams/app/channel-tab.d.ts +5 -0
  124. package/dist/teams/chat-composer.d.ts +3 -0
  125. package/dist/teams.js +6 -6
  126. package/dist/theme.js +2 -2
  127. package/dist/tokens.d.ts +5 -0
  128. package/dist/tokens.d.ts.map +1 -1
  129. package/dist/visio/styles/index.d.ts +2 -0
  130. package/dist/visio/styles/theme.d.ts +11 -0
  131. package/dist/visio/styles.d.ts +2 -2
  132. package/dist/visio.js +65 -20
  133. package/dist/xlsx/backstage/index.d.ts +4 -1
  134. package/dist/xlsx/backstage/pages-share.d.ts +19 -0
  135. package/dist/xlsx/backstage/parts.d.ts +3 -0
  136. package/dist/xlsx/chart-fill-binding.d.ts +2 -2
  137. package/dist/xlsx/chart-series-gradient-type.d.ts +3 -2
  138. package/dist/xlsx/collaboration-session.d.ts +9 -0
  139. package/dist/xlsx/collaboration-types.d.ts +41 -0
  140. package/dist/xlsx/collaboration.d.ts +56 -0
  141. package/dist/xlsx/component.d.ts +8 -0
  142. package/dist/xlsx/dialogs/comments-list.d.ts +4 -0
  143. package/dist/xlsx/dialogs/help-dialogs.d.ts +1 -1
  144. package/dist/xlsx/editor-core.d.ts +3 -0
  145. package/dist/xlsx/element-api.d.ts +19 -1
  146. package/dist/xlsx/events.d.ts +4 -1
  147. package/dist/xlsx/grid/remote-layer.d.ts +3 -0
  148. package/dist/xlsx/grid/sparkline.d.ts +3 -0
  149. package/dist/xlsx/grid/styles.d.ts +1 -1
  150. package/dist/xlsx/index.d.ts +1 -0
  151. package/dist/xlsx/ribbon-actions.d.ts +21 -0
  152. package/dist/xlsx/shell-commands.d.ts +1 -1
  153. package/dist/xlsx/title-bar.d.ts +4 -2
  154. package/dist/xlsx.js +712 -90
  155. package/package.json +2 -2
  156. package/dist/pptx/web-components/status-bar-styles.d.ts +0 -3
  157. package/dist/pptx/web-components/status-bar-styles.d.ts.map +0 -1
  158. package/dist/pptx/web-components/title-bar-styles.d.ts +0 -7
  159. package/dist/pptx/web-components/title-bar-styles.d.ts.map +0 -1
@@ -4,7 +4,7 @@ var chunkWSTWYZFM_cjs = require('./chunk-WSTWYZFM.cjs');
4
4
  var chunkX7FS7XHU_cjs = require('./chunk-X7FS7XHU.cjs');
5
5
  var chunkUEF4BFW4_cjs = require('./chunk-UEF4BFW4.cjs');
6
6
  var chunk52LKIMK3_cjs = require('./chunk-52LKIMK3.cjs');
7
- var chunkCJU4P5FT_cjs = require('./chunk-CJU4P5FT.cjs');
7
+ var chunkSTKGUT5S_cjs = require('./chunk-STKGUT5S.cjs');
8
8
  var chunkXOAXPD2W_cjs = require('./chunk-XOAXPD2W.cjs');
9
9
  var chunkBSGCZ4JZ_cjs = require('./chunk-BSGCZ4JZ.cjs');
10
10
  var chunkIOOI63TH_cjs = require('./chunk-IOOI63TH.cjs');
@@ -12,10 +12,10 @@ var chunkZJFN5POF_cjs = require('./chunk-ZJFN5POF.cjs');
12
12
  var chunkSTXGHV25_cjs = require('./chunk-STXGHV25.cjs');
13
13
  var chunkWB25PCHQ_cjs = require('./chunk-WB25PCHQ.cjs');
14
14
  var chunkW3X2UVYQ_cjs = require('./chunk-W3X2UVYQ.cjs');
15
- var chunkAIL3BNZS_cjs = require('./chunk-AIL3BNZS.cjs');
15
+ var chunkYRHK45AB_cjs = require('./chunk-YRHK45AB.cjs');
16
16
  var chunkFOE75Z6N_cjs = require('./chunk-FOE75Z6N.cjs');
17
17
  var chunkNTXHQHCS_cjs = require('./chunk-NTXHQHCS.cjs');
18
- var chunkYHA6XAB3_cjs = require('./chunk-YHA6XAB3.cjs');
18
+ var chunkXIQMFSNG_cjs = require('./chunk-XIQMFSNG.cjs');
19
19
  var chunkX4FNVH7J_cjs = require('./chunk-X4FNVH7J.cjs');
20
20
  var chunkUPN5FFKP_cjs = require('./chunk-UPN5FFKP.cjs');
21
21
  var chunkY4LTLCQP_cjs = require('./chunk-Y4LTLCQP.cjs');
@@ -31,6 +31,7 @@ var opentypeModule = require('opentype.js');
31
31
  var math = require('ooxml-core/math');
32
32
  var schemaLabelKeys = require('ooxml-core/pptx/editor/render/schema-label-keys');
33
33
  var chartUserShapeEdit = require('ooxml-core/pptx/editor/render/chart-user-shape-edit');
34
+ var bulletList = require('ooxml-core/pptx/editor/render/bullet-list');
34
35
  var tableMerge = require('ooxml-core/pptx/editor/render/table-merge');
35
36
  var tableLayout = require('ooxml-core/pptx/editor/render/table-layout');
36
37
  var tableCellEdit = require('ooxml-core/pptx/editor/render/table-cell-edit');
@@ -47,7 +48,6 @@ var editorHistory = require('ooxml-core/pptx/editor/render/editor-history');
47
48
  var sectionOperations = require('ooxml-core/pptx/editor/render/section-operations');
48
49
  var slideOperations = require('ooxml-core/pptx/editor/render/slide-operations');
49
50
  var bulletAutonum = require('ooxml-core/pptx/editor/render/bullet-autonum');
50
- var bulletList = require('ooxml-core/pptx/editor/render/bullet-list');
51
51
  var textTheme = require('ooxml-core/pptx/editor/render/text-theme');
52
52
  var collaborationReconcile = require('ooxml-core/pptx/editor/render/collaboration-reconcile');
53
53
  var collaborationSync = require('ooxml-core/pptx/editor/render/collaboration-sync');
@@ -1070,7 +1070,7 @@ function buildRectPathGradientDef(stops, id, focalPoint, fillToRect) {
1070
1070
  color: stop.color,
1071
1071
  ...typeof stop.opacity === "number" ? { opacity: stop.opacity } : {}
1072
1072
  }));
1073
- const markup = chunkAIL3BNZS_cjs.buildRectPathGradientSvg(rectStops, focalPoint, fillToRect);
1073
+ const markup = chunkYRHK45AB_cjs.buildRectPathGradientSvg(rectStops, focalPoint, fillToRect);
1074
1074
  return { kind: "rectPath", id, href: `data:image/svg+xml,${encodeURIComponent(markup)}` };
1075
1075
  }
1076
1076
  function rectPathGradientMarkup(def) {
@@ -1084,9 +1084,9 @@ function buildSvgStrokePatternDef(style, elementId) {
1084
1084
  if (!style || style.strokeFillMode !== "pattern" || !style.strokePatternPreset) {
1085
1085
  return void 0;
1086
1086
  }
1087
- const fg = chunkAIL3BNZS_cjs.normalizeHexColor(style.strokeColor, "#000000");
1088
- const bg = chunkAIL3BNZS_cjs.normalizeHexColor(style.strokePatternBackgroundColor, "#ffffff");
1089
- const tile4 = chunkAIL3BNZS_cjs.getPatternTile(style.strokePatternPreset, fg, bg);
1087
+ const fg = chunkYRHK45AB_cjs.normalizeHexColor(style.strokeColor, "#000000");
1088
+ const bg = chunkYRHK45AB_cjs.normalizeHexColor(style.strokePatternBackgroundColor, "#ffffff");
1089
+ const tile4 = chunkYRHK45AB_cjs.getPatternTile(style.strokePatternPreset, fg, bg);
1090
1090
  if (!tile4) {
1091
1091
  return void 0;
1092
1092
  }
@@ -1109,7 +1109,7 @@ function svgGradientId(elementId, suffix = "grad") {
1109
1109
  return `pptx-${suffix}-${seed}`;
1110
1110
  }
1111
1111
  function toSvgStops(stops) {
1112
- return chunkAIL3BNZS_cjs.sanitizeGradientStops(stops).map((stop) => ({
1112
+ return chunkYRHK45AB_cjs.sanitizeGradientStops(stops).map((stop) => ({
1113
1113
  offset: round4(stop.position / 100),
1114
1114
  color: stop.color,
1115
1115
  ...typeof stop.opacity === "number" ? { opacity: round4(stop.opacity) } : {}
@@ -1136,7 +1136,7 @@ function buildFromSource(source, id) {
1136
1136
  if ((source.pathType || "circle") === "rect") {
1137
1137
  return buildRectPathGradientDef(stops, id, source.focalPoint, source.fillToRect);
1138
1138
  }
1139
- const { cx, cy } = chunkAIL3BNZS_cjs.computeGradientCenter(source.fillToRect, source.focalPoint);
1139
+ const { cx, cy } = chunkYRHK45AB_cjs.computeGradientCenter(source.fillToRect, source.focalPoint);
1140
1140
  const fx = cx / 100;
1141
1141
  const fy = cy / 100;
1142
1142
  const r = Math.hypot(Math.max(fx, 1 - fx), Math.max(fy, 1 - fy));
@@ -1316,11 +1316,11 @@ function buildStrokeOutline(element) {
1316
1316
  return {
1317
1317
  d,
1318
1318
  paint,
1319
- stroke: paint ? svgGradientFillRef(paint) : chunkAIL3BNZS_cjs.colorWithOpacity(style?.strokeColor ?? chunkAIL3BNZS_cjs.DEFAULT_STROKE_COLOR, style?.strokeOpacity),
1319
+ stroke: paint ? svgGradientFillRef(paint) : chunkYRHK45AB_cjs.colorWithOpacity(style?.strokeColor ?? chunkYRHK45AB_cjs.DEFAULT_STROKE_COLOR, style?.strokeOpacity),
1320
1320
  strokeWidth,
1321
1321
  strands: outlineStrands(style?.compoundLine, strokeWidth),
1322
- dashArray: chunkAIL3BNZS_cjs.getSvgStrokeDasharray(
1323
- chunkAIL3BNZS_cjs.normalizeStrokeDashType(style?.strokeDash),
1322
+ dashArray: chunkYRHK45AB_cjs.getSvgStrokeDasharray(
1323
+ chunkYRHK45AB_cjs.normalizeStrokeDashType(style?.strokeDash),
1324
1324
  Math.max(strokeWidth, 1),
1325
1325
  style?.customDashSegments
1326
1326
  ),
@@ -1499,12 +1499,12 @@ function getComputedStrokeStyle(element) {
1499
1499
  return { ...NO_STROKE, ...joins };
1500
1500
  }
1501
1501
  const borderWidth = width;
1502
- const borderStyle = chunkAIL3BNZS_cjs.getCssBorderDashStyle(
1503
- chunkAIL3BNZS_cjs.normalizeStrokeDashType(style.strokeDash),
1502
+ const borderStyle = chunkYRHK45AB_cjs.getCssBorderDashStyle(
1503
+ chunkYRHK45AB_cjs.normalizeStrokeDashType(style.strokeDash),
1504
1504
  style.compoundLine
1505
1505
  );
1506
- const rawColor = style.strokeColor ?? chunkAIL3BNZS_cjs.DEFAULT_STROKE_COLOR;
1507
- const borderColor = style.strokeOpacity === void 0 ? rawColor : chunkAIL3BNZS_cjs.colorWithOpacity(chunkAIL3BNZS_cjs.normalizeHexColor(rawColor, chunkAIL3BNZS_cjs.DEFAULT_STROKE_COLOR), style.strokeOpacity);
1506
+ const rawColor = style.strokeColor ?? chunkYRHK45AB_cjs.DEFAULT_STROKE_COLOR;
1507
+ const borderColor = style.strokeOpacity === void 0 ? rawColor : chunkYRHK45AB_cjs.colorWithOpacity(chunkYRHK45AB_cjs.normalizeHexColor(rawColor, chunkYRHK45AB_cjs.DEFAULT_STROKE_COLOR), style.strokeOpacity);
1508
1508
  return {
1509
1509
  borderWidth,
1510
1510
  borderStyle,
@@ -1665,7 +1665,7 @@ function resolveGroupChildFill(child, parentGroupFill) {
1665
1665
  if (!parentGroupFill || !pptx.hasShapeProperties(child) || child.shapeStyle?.fillMode !== "group") {
1666
1666
  return void 0;
1667
1667
  }
1668
- return chunkAIL3BNZS_cjs.getComputedFillStyle(child, parentGroupFill);
1668
+ return chunkYRHK45AB_cjs.getComputedFillStyle(child, parentGroupFill);
1669
1669
  }
1670
1670
  function getFrameInverseTransform(element) {
1671
1671
  const transforms = [];
@@ -1717,9 +1717,9 @@ function parseDrawingColorChoice(colorNode, schemeColorOverrides) {
1717
1717
  }
1718
1718
  if (colorNode["a:scrgbClr"]) {
1719
1719
  const scrgb = colorNode["a:scrgbClr"];
1720
- const red = chunkAIL3BNZS_cjs.parseDrawingPercent(scrgb["@_r"]);
1721
- const green = chunkAIL3BNZS_cjs.parseDrawingPercent(scrgb["@_g"]);
1722
- const blue = chunkAIL3BNZS_cjs.parseDrawingPercent(scrgb["@_b"]);
1720
+ const red = chunkYRHK45AB_cjs.parseDrawingPercent(scrgb["@_r"]);
1721
+ const green = chunkYRHK45AB_cjs.parseDrawingPercent(scrgb["@_g"]);
1722
+ const blue = chunkYRHK45AB_cjs.parseDrawingPercent(scrgb["@_b"]);
1723
1723
  if (red !== void 0 && green !== void 0 && blue !== void 0) {
1724
1724
  const toHex2 = (value) => Math.min(255, Math.max(0, Math.round(value))).toString(16).padStart(2, "0").toUpperCase();
1725
1725
  const base2 = `#${toHex2(red * 255)}${toHex2(green * 255)}${toHex2(blue * 255)}`;
@@ -1759,8 +1759,8 @@ function parseDrawingColorChoice(colorNode, schemeColorOverrides) {
1759
1759
  const lumRaw = Number.parseFloat(String(hslNode["@_lum"] ?? ""));
1760
1760
  if (Number.isFinite(hueRaw) && Number.isFinite(satRaw) && Number.isFinite(lumRaw)) {
1761
1761
  const h = hueRaw / 6e4;
1762
- const s = chunkAIL3BNZS_cjs.clampUnitInterval(satRaw / 1e5);
1763
- const l = chunkAIL3BNZS_cjs.clampUnitInterval(lumRaw / 1e5);
1762
+ const s = chunkYRHK45AB_cjs.clampUnitInterval(satRaw / 1e5);
1763
+ const l = chunkYRHK45AB_cjs.clampUnitInterval(lumRaw / 1e5);
1764
1764
  const rgb = pptx.hslToRgb(h, s, l);
1765
1765
  const toHex2 = (value) => Math.min(255, Math.max(0, Math.round(value))).toString(16).padStart(2, "0").toUpperCase();
1766
1766
  const base2 = `#${toHex2(rgb.r)}${toHex2(rgb.g)}${toHex2(rgb.b)}`;
@@ -1800,11 +1800,11 @@ function parseDrawingColorOpacity(colorNode) {
1800
1800
  if (!colorChoice) {
1801
1801
  return void 0;
1802
1802
  }
1803
- const alpha = chunkAIL3BNZS_cjs.parseDrawingPercent(colorChoice["a:alpha"]?.["@_val"]);
1804
- const alphaMod = chunkAIL3BNZS_cjs.parseDrawingPercent(
1803
+ const alpha = chunkYRHK45AB_cjs.parseDrawingPercent(colorChoice["a:alpha"]?.["@_val"]);
1804
+ const alphaMod = chunkYRHK45AB_cjs.parseDrawingPercent(
1805
1805
  colorChoice["a:alphaMod"]?.["@_val"]
1806
1806
  );
1807
- const alphaOff = chunkAIL3BNZS_cjs.parseDrawingPercent(
1807
+ const alphaOff = chunkYRHK45AB_cjs.parseDrawingPercent(
1808
1808
  colorChoice["a:alphaOff"]?.["@_val"]
1809
1809
  );
1810
1810
  if (alpha === void 0 && alphaMod === void 0 && alphaOff === void 0) {
@@ -1817,7 +1817,7 @@ function parseDrawingColorOpacity(colorNode) {
1817
1817
  if (alphaOff !== void 0) {
1818
1818
  opacity += alphaOff;
1819
1819
  }
1820
- return chunkAIL3BNZS_cjs.clampUnitInterval(opacity);
1820
+ return chunkYRHK45AB_cjs.clampUnitInterval(opacity);
1821
1821
  }
1822
1822
  function substituteScriptFont(name, panose, baseFontFamily) {
1823
1823
  return name ? pptx.getSubstituteFontFamily(name, pptx.parsePanoseString(panose)) : baseFontFamily;
@@ -2028,7 +2028,7 @@ function buildPatternOverlayTile(pattern) {
2028
2028
  if (!pattern) {
2029
2029
  return void 0;
2030
2030
  }
2031
- const tile4 = chunkAIL3BNZS_cjs.getPatternTile(
2031
+ const tile4 = chunkYRHK45AB_cjs.getPatternTile(
2032
2032
  pattern.preset,
2033
2033
  pattern.foreground ?? "#000000",
2034
2034
  pattern.background ?? "#ffffff"
@@ -3582,10 +3582,10 @@ function getMeasureCtx() {
3582
3582
  return measureCtx;
3583
3583
  }
3584
3584
  function envelopeFontSizePx(font) {
3585
- return font.fontSizePx && font.fontSizePx > 0 ? font.fontSizePx : chunkAIL3BNZS_cjs.DEFAULT_TEXT_FONT_SIZE;
3585
+ return font.fontSizePx && font.fontSizePx > 0 ? font.fontSizePx : chunkYRHK45AB_cjs.DEFAULT_TEXT_FONT_SIZE;
3586
3586
  }
3587
3587
  function toCanvasFont(font, sizePx = envelopeFontSizePx(font)) {
3588
- const family2 = font.fontFamily || chunkAIL3BNZS_cjs.DEFAULT_FONT_FAMILY;
3588
+ const family2 = font.fontFamily || chunkYRHK45AB_cjs.DEFAULT_FONT_FAMILY;
3589
3589
  return `${font.italic ? "italic " : ""}${font.bold ? "bold " : ""}${sizePx}px ${family2}`;
3590
3590
  }
3591
3591
  function enableKerning(ctx) {
@@ -4580,7 +4580,7 @@ function createGlyphOutlineLookup(cache) {
4580
4580
  return (char, font, x, y) => {
4581
4581
  const parsed = cache.get(font.fontFamily, font.bold, font.italic);
4582
4582
  if (parsed) {
4583
- const size = font.fontSizePx && font.fontSizePx > 0 ? font.fontSizePx : chunkAIL3BNZS_cjs.DEFAULT_TEXT_FONT_SIZE;
4583
+ const size = font.fontSizePx && font.fontSizePx > 0 ? font.fontSizePx : chunkYRHK45AB_cjs.DEFAULT_TEXT_FONT_SIZE;
4584
4584
  const commands = extractGlyphOutlineCommands(parsed, char, x, y, size);
4585
4585
  if (commands) {
4586
4586
  return commands;
@@ -6768,7 +6768,7 @@ function computeTrendlinePoints(trendline, values, catCount, layout, range, mode
6768
6768
  let rSquared = 0;
6769
6769
  switch (trendline.trendlineType) {
6770
6770
  case "linear": {
6771
- const reg = chunkAIL3BNZS_cjs.computeLinearRegression(xVals, yVals);
6771
+ const reg = chunkYRHK45AB_cjs.computeLinearRegression(xVals, yVals);
6772
6772
  const intercept = trendline.intercept;
6773
6773
  const slope = intercept !== void 0 ? yVals.reduce((s, y, i) => s + (y - intercept) * xVals[i], 0) / xVals.reduce((s, x) => s + x * x, 0) : reg.slope;
6774
6774
  const b = intercept ?? reg.intercept;
@@ -6783,7 +6783,7 @@ function computeTrendlinePoints(trendline, values, catCount, layout, range, mode
6783
6783
  if (logY.length < 2) {
6784
6784
  return { points: [], equation: "", rSquared: 0 };
6785
6785
  }
6786
- const reg = chunkAIL3BNZS_cjs.computeLinearRegression(filteredX, logY);
6786
+ const reg = chunkYRHK45AB_cjs.computeLinearRegression(filteredX, logY);
6787
6787
  const a = Math.exp(reg.intercept);
6788
6788
  const b = reg.slope;
6789
6789
  evalFn = (x) => a * Math.exp(b * x);
@@ -6797,7 +6797,7 @@ function computeTrendlinePoints(trendline, values, catCount, layout, range, mode
6797
6797
  if (lnX.length < 2) {
6798
6798
  return { points: [], equation: "", rSquared: 0 };
6799
6799
  }
6800
- const reg = chunkAIL3BNZS_cjs.computeLinearRegression(lnX, filteredY);
6800
+ const reg = chunkYRHK45AB_cjs.computeLinearRegression(lnX, filteredY);
6801
6801
  evalFn = (x) => x > 0 ? reg.slope * Math.log(x) + reg.intercept : 0;
6802
6802
  equation = `y = ${reg.slope.toFixed(2)}ln(x) + ${reg.intercept.toFixed(2)}`;
6803
6803
  rSquared = reg.rSquared;
@@ -6809,7 +6809,7 @@ function computeTrendlinePoints(trendline, values, catCount, layout, range, mode
6809
6809
  if (logX.length < 2) {
6810
6810
  return { points: [], equation: "", rSquared: 0 };
6811
6811
  }
6812
- const reg = chunkAIL3BNZS_cjs.computeLinearRegression(logX, logY);
6812
+ const reg = chunkYRHK45AB_cjs.computeLinearRegression(logX, logY);
6813
6813
  const a = Math.exp(reg.intercept);
6814
6814
  evalFn = (x) => x > 0 ? a * x ** reg.slope : 0;
6815
6815
  equation = `y = ${a.toFixed(2)}x^${reg.slope.toFixed(2)}`;
@@ -6818,10 +6818,10 @@ function computeTrendlinePoints(trendline, values, catCount, layout, range, mode
6818
6818
  }
6819
6819
  case "polynomial": {
6820
6820
  const order = Math.min(trendline.order ?? 2, 6);
6821
- const coeffs = chunkAIL3BNZS_cjs.fitPolynomial(xVals, yVals, order);
6821
+ const coeffs = chunkYRHK45AB_cjs.fitPolynomial(xVals, yVals, order);
6822
6822
  evalFn = (x) => coeffs.reduce((s, c, i) => s + c * x ** i, 0);
6823
6823
  equation = coeffs.map((c, i) => `${c.toFixed(2)}x^${i}`).join(" + ");
6824
- rSquared = chunkAIL3BNZS_cjs.computeRSquared(xVals, yVals, evalFn);
6824
+ rSquared = chunkYRHK45AB_cjs.computeRSquared(xVals, yVals, evalFn);
6825
6825
  break;
6826
6826
  }
6827
6827
  case "movingAvg": {
@@ -7159,7 +7159,7 @@ var COMBO_SERIES_TYPE_OPTIONS = [
7159
7159
  function patchChartData(data, patch) {
7160
7160
  const { chartType, ...rest } = patch;
7161
7161
  if (chartType === "pareto") {
7162
- return { ...chunkAIL3BNZS_cjs.applyParetoConversion(data), ...rest };
7162
+ return { ...chunkYRHK45AB_cjs.applyParetoConversion(data), ...rest };
7163
7163
  }
7164
7164
  if (chartType && chartType !== data.chartType) {
7165
7165
  const adapted = pptx.chartDataChangeType(data, chartType);
@@ -7221,8 +7221,8 @@ function buildParetoInsertData() {
7221
7221
  layout: "histogram",
7222
7222
  binCount: PARETO_BIN_COUNT
7223
7223
  };
7224
- const bins = chunkAIL3BNZS_cjs.computeHistogramBins(PARETO_VALUES, histogramOptions);
7225
- const ordered = chunkAIL3BNZS_cjs.orderParetoEntries(
7224
+ const bins = chunkYRHK45AB_cjs.computeHistogramBins(PARETO_VALUES, histogramOptions);
7225
+ const ordered = chunkYRHK45AB_cjs.orderParetoEntries(
7226
7226
  bins.map((bin, index) => ({ value: bin.value, label: bin.label, sourcePointIndex: index }))
7227
7227
  );
7228
7228
  return {
@@ -7235,7 +7235,7 @@ function buildParetoInsertData() {
7235
7235
  },
7236
7236
  {
7237
7237
  name: "Cumulative %",
7238
- values: chunkAIL3BNZS_cjs.cumulativePercentOfTotal(ordered.map((entry5) => entry5.value)),
7238
+ values: chunkYRHK45AB_cjs.cumulativePercentOfTotal(ordered.map((entry5) => entry5.value)),
7239
7239
  histogramOptions: { layout: "pareto" }
7240
7240
  }
7241
7241
  ]
@@ -7498,7 +7498,7 @@ var FILL_PATTERN_LABEL_KEYS = {
7498
7498
  trellis: "pptx.fillPatterns.trellis",
7499
7499
  zigZag: "pptx.fillPatterns.zigZag"
7500
7500
  };
7501
- var PATTERN_PRESET_OPTIONS = chunkAIL3BNZS_cjs.OOXML_PATTERN_PRESETS.map(
7501
+ var PATTERN_PRESET_OPTIONS = chunkYRHK45AB_cjs.OOXML_PATTERN_PRESETS.map(
7502
7502
  (value) => ({ value, labelKey: FILL_PATTERN_LABEL_KEYS[value] })
7503
7503
  );
7504
7504
 
@@ -7643,13 +7643,49 @@ function setDataLabelsRangeCache(series, pointIndex, text3) {
7643
7643
 
7644
7644
  // src/pptx/render/chart-quick-action-styles.ts
7645
7645
  var CHART_STYLE_PRESETS = [
7646
- { id: "colorful", labelKey: "pptx.chart.styleColorful", styleId: 2 },
7647
- { id: "monochrome", labelKey: "pptx.chart.styleMonochrome", styleId: 10 },
7648
- { id: "colorfulLight", labelKey: "pptx.chart.styleColorfulLight", styleId: 18 },
7649
- { id: "colorfulDark", labelKey: "pptx.chart.styleColorfulDark", styleId: 26 },
7650
- { id: "mutedDark", labelKey: "pptx.chart.styleMutedDark", styleId: 34 },
7651
- { id: "pastel", labelKey: "pptx.chart.stylePastel", styleId: 42 }
7646
+ {
7647
+ id: "colorful",
7648
+ labelKey: "pptx.chart.styleColorful",
7649
+ styleId: 2,
7650
+ palette: () => chunkYRHK45AB_cjs.getChartStylePalette(2)
7651
+ },
7652
+ {
7653
+ id: "monochrome",
7654
+ labelKey: "pptx.chart.styleMonochrome",
7655
+ styleId: 3,
7656
+ palette: () => chunkYRHK45AB_cjs.getChartStylePalette(3)
7657
+ },
7658
+ {
7659
+ id: "colorfulLight",
7660
+ labelKey: "pptx.chart.styleColorfulLight",
7661
+ styleId: 18,
7662
+ palette: () => recolour((c) => chunkYRHK45AB_cjs.tint(c, 0.3))
7663
+ },
7664
+ {
7665
+ id: "colorfulDark",
7666
+ labelKey: "pptx.chart.styleColorfulDark",
7667
+ styleId: 26,
7668
+ palette: () => recolour((c) => chunkYRHK45AB_cjs.shade(c, 0.3))
7669
+ },
7670
+ {
7671
+ id: "mutedDark",
7672
+ labelKey: "pptx.chart.styleMutedDark",
7673
+ styleId: 34,
7674
+ palette: () => recolour((c) => chunkYRHK45AB_cjs.shade(chunkYRHK45AB_cjs.tint(c, 0.3), 0.4))
7675
+ },
7676
+ {
7677
+ id: "pastel",
7678
+ labelKey: "pptx.chart.stylePastel",
7679
+ styleId: 42,
7680
+ palette: () => recolour((c) => chunkYRHK45AB_cjs.tint(c, 0.55))
7681
+ }
7652
7682
  ];
7683
+ function recolour(transform) {
7684
+ return chunkYRHK45AB_cjs.getChartStylePalette(2).map(transform);
7685
+ }
7686
+ function chartStylePresetPalette(id) {
7687
+ return findPreset(id)?.palette();
7688
+ }
7653
7689
  function paletteEquals(a, b) {
7654
7690
  if (!b || a.length !== b.length) {
7655
7691
  return false;
@@ -7660,8 +7696,8 @@ function findPreset(id) {
7660
7696
  return CHART_STYLE_PRESETS.find((p) => p.id === id);
7661
7697
  }
7662
7698
  function buildChartStylePresets(chartData) {
7663
- return CHART_STYLE_PRESETS.map(({ id, labelKey, styleId }) => {
7664
- const colors = chunkAIL3BNZS_cjs.getChartStylePalette(styleId);
7699
+ return CHART_STYLE_PRESETS.map(({ id, labelKey, palette }) => {
7700
+ const colors = palette();
7665
7701
  return {
7666
7702
  id,
7667
7703
  labelKey,
@@ -7695,7 +7731,7 @@ function applyChartStylePreset(chartData, presetId) {
7695
7731
  if (!preset2) {
7696
7732
  return null;
7697
7733
  }
7698
- const colors = [...chunkAIL3BNZS_cjs.getChartStylePalette(preset2.styleId)];
7734
+ const colors = [...preset2.palette()];
7699
7735
  return {
7700
7736
  ...chartData,
7701
7737
  colorPalette: colors,
@@ -7759,7 +7795,7 @@ function applyChartElementToggle(chartData, key, checked) {
7759
7795
  style: { ...chartData.style, ...chartDataLabelsTogglePatch(chartData.style, checked) }
7760
7796
  });
7761
7797
  case "gridlines":
7762
- return patchChartData(chartData, chunkAIL3BNZS_cjs.chartGridlinesPatch(chartData, checked));
7798
+ return patchChartData(chartData, chunkYRHK45AB_cjs.chartGridlinesPatch(chartData, checked));
7763
7799
  case "axes":
7764
7800
  return patchChartData(chartData, chartAxesVisibilityPatch(chartData, checked));
7765
7801
  case "axisTitles":
@@ -7798,7 +7834,7 @@ function buildElements(chartData) {
7798
7834
  {
7799
7835
  key: "gridlines",
7800
7836
  labelKey: "pptx.chart.showGridlines",
7801
- checked: chunkAIL3BNZS_cjs.chartGridlinesState(chartData)
7837
+ checked: chunkYRHK45AB_cjs.chartGridlinesState(chartData)
7802
7838
  },
7803
7839
  {
7804
7840
  key: "dataLabels",
@@ -8210,17 +8246,17 @@ function chartEventPathElements(event) {
8210
8246
  }
8211
8247
  function findChartPartElementInEvent(event) {
8212
8248
  for (const el of chartEventPathElements(event)) {
8213
- if (el.getAttribute(chunkCJU4P5FT_cjs.CHART_PART_ATTR) !== null) {
8249
+ if (el.getAttribute(chunkSTKGUT5S_cjs.CHART_PART_ATTR) !== null) {
8214
8250
  return el;
8215
8251
  }
8216
8252
  }
8217
8253
  return null;
8218
8254
  }
8219
8255
  function findChartPartInEvent(event) {
8220
- return chunkCJU4P5FT_cjs.chartPartFromElement(findChartPartElementInEvent(event));
8256
+ return chunkSTKGUT5S_cjs.chartPartFromElement(findChartPartElementInEvent(event));
8221
8257
  }
8222
8258
  function isChartTitleEvent(event) {
8223
- return findChartPartElementInEvent(event)?.getAttribute(chunkCJU4P5FT_cjs.CHART_PART_ATTR) === "title";
8259
+ return findChartPartElementInEvent(event)?.getAttribute(chunkSTKGUT5S_cjs.CHART_PART_ATTR) === "title";
8224
8260
  }
8225
8261
 
8226
8262
  // src/pptx/render/chart-interaction-mark-drag.ts
@@ -8255,14 +8291,14 @@ function advanceChartMarkDrag(state, clientX, clientY, rect3) {
8255
8291
  return null;
8256
8292
  }
8257
8293
  const travelled = Math.hypot(clientX - state.startClientX, clientY - state.startClientY);
8258
- if (!state.moved && travelled < chunkCJU4P5FT_cjs.CHART_DRAG_THRESHOLD_PX) {
8294
+ if (!state.moved && travelled < chunkSTKGUT5S_cjs.CHART_DRAG_THRESHOLD_PX) {
8259
8295
  return null;
8260
8296
  }
8261
8297
  if (rect3.width === 0 || rect3.height === 0) {
8262
8298
  return null;
8263
8299
  }
8264
8300
  state.moved = true;
8265
- const pointer = clientPointToViewBox(clientX, clientY, rect3, state.svgWidth, state.svgHeight), value = chunkCJU4P5FT_cjs.resolveChartDragValue(state.geometry, pointer), chartData = chunkCJU4P5FT_cjs.withChartPointValue(
8301
+ const pointer = clientPointToViewBox(clientX, clientY, rect3, state.svgWidth, state.svgHeight), value = chunkSTKGUT5S_cjs.resolveChartDragValue(state.geometry, pointer), chartData = chunkSTKGUT5S_cjs.withChartPointValue(
8266
8302
  state.baseChartData,
8267
8303
  state.part.seriesIndex,
8268
8304
  state.part.pointIndex,
@@ -11828,7 +11864,7 @@ function getAnimationColorBaseStyle(element, options = {}) {
11828
11864
  }
11829
11865
  const style = {};
11830
11866
  if (options.animatesFill) {
11831
- const fill = chunkAIL3BNZS_cjs.getComputedFillStyle(element, options.parentGroupFill);
11867
+ const fill = chunkYRHK45AB_cjs.getComputedFillStyle(element, options.parentGroupFill);
11832
11868
  style[ANIMATION_COLOR_BASE_PROPERTIES.fill] = fill?.backgroundColor ?? element.shapeStyle?.fillColor ?? "currentColor";
11833
11869
  }
11834
11870
  if (options.animatesStroke) {
@@ -19887,7 +19923,7 @@ function gradientCssFromFill(fill, colorScheme) {
19887
19923
  position: stop.position
19888
19924
  }))
19889
19925
  };
19890
- return chunkAIL3BNZS_cjs.buildGradientCss(shapeLike);
19926
+ return chunkYRHK45AB_cjs.buildGradientCss(shapeLike);
19891
19927
  }
19892
19928
  function applyStyleFill(fill, colorScheme, css, fallback) {
19893
19929
  if (fill?.noFill) {
@@ -19913,13 +19949,13 @@ function applyStyleFill(fill, colorScheme, css, fallback) {
19913
19949
  }
19914
19950
  }
19915
19951
  if (fill?.pattern) {
19916
- const fg = chunkAIL3BNZS_cjs.normalizeHexColor(
19952
+ const fg = chunkYRHK45AB_cjs.normalizeHexColor(
19917
19953
  resolveStyleFillColor(fill.pattern.foreground, colorScheme),
19918
19954
  "#000000"
19919
- ), bg = chunkAIL3BNZS_cjs.normalizeHexColor(
19955
+ ), bg = chunkYRHK45AB_cjs.normalizeHexColor(
19920
19956
  resolveStyleFillColor(fill.pattern.background, colorScheme),
19921
19957
  "#ffffff"
19922
- ), svg2 = chunkAIL3BNZS_cjs.getPatternSvg(fill.pattern.preset, fg, bg);
19958
+ ), svg2 = chunkYRHK45AB_cjs.getPatternSvg(fill.pattern.preset, fg, bg);
19923
19959
  clearBackground(css);
19924
19960
  if (svg2) {
19925
19961
  css.backgroundImage = `url("data:image/svg+xml,${encodeURIComponent(svg2)}")`;
@@ -19928,7 +19964,7 @@ function applyStyleFill(fill, colorScheme, css, fallback) {
19928
19964
  return true;
19929
19965
  }
19930
19966
  const resolved = resolveStyleFillColor(fill, colorScheme);
19931
- const color = (resolved && fill?.alpha !== void 0 ? chunkAIL3BNZS_cjs.colorWithOpacity(resolved, fill.alpha / 1e5) : resolved) ?? fallback;
19967
+ const color = (resolved && fill?.alpha !== void 0 ? chunkYRHK45AB_cjs.colorWithOpacity(resolved, fill.alpha / 1e5) : resolved) ?? fallback;
19932
19968
  if (color) {
19933
19969
  layerSolidColor(css, color);
19934
19970
  return true;
@@ -20140,192 +20176,6 @@ function followingText(pieces, i, next) {
20140
20176
  return next;
20141
20177
  }
20142
20178
 
20143
- // src/pptx/render/text-metric-tracking.ts
20144
- var ADVANCE_STEPS_PER_PX = 6;
20145
- var MAX_TRACKING_PX_PER_CHAR = 1 / (2 * ADVANCE_STEPS_PER_PX);
20146
- var MAX_CACHE_ENTRIES = 2e4;
20147
- var measureContext2;
20148
- var trackingCache = /* @__PURE__ */ new Map();
20149
- var fontsHookInstalled = false;
20150
- function installFontLoadHook() {
20151
- if (fontsHookInstalled || typeof document === "undefined") {
20152
- return;
20153
- }
20154
- fontsHookInstalled = true;
20155
- document.fonts?.addEventListener?.("loadingdone", () => {
20156
- trackingCache = /* @__PURE__ */ new Map();
20157
- });
20158
- }
20159
- function getMeasureContext() {
20160
- if (measureContext2 !== void 0) {
20161
- return measureContext2;
20162
- }
20163
- if (typeof document === "undefined") {
20164
- measureContext2 = null;
20165
- return null;
20166
- }
20167
- installFontLoadHook();
20168
- measureContext2 = document.createElement("canvas").getContext("2d");
20169
- return measureContext2;
20170
- }
20171
- function toCanvasFont2(font) {
20172
- const size = font.fontSizePx && font.fontSizePx > 0 ? font.fontSizePx : chunkAIL3BNZS_cjs.DEFAULT_TEXT_FONT_SIZE;
20173
- const family2 = font.fontFamily || chunkAIL3BNZS_cjs.DEFAULT_FONT_FAMILY;
20174
- return `${font.italic ? "italic " : ""}${font.bold ? "bold " : ""}${size}px ${family2}`;
20175
- }
20176
- function advancesOf(ctx, canvasFont, chars) {
20177
- ctx.font = canvasFont;
20178
- ctx.fontKerning = "none";
20179
- const advances = [];
20180
- let previous = 0;
20181
- let prefix = "";
20182
- for (const char of chars) {
20183
- prefix += char;
20184
- const width = ctx.measureText(prefix).width;
20185
- advances.push(width - previous);
20186
- previous = width;
20187
- }
20188
- return advances;
20189
- }
20190
- function resolveMetricTrackingPx(text3, font) {
20191
- if (!text3) {
20192
- return 0;
20193
- }
20194
- const canvasFont = toCanvasFont2(font);
20195
- const key = `${canvasFont}\0${text3}`;
20196
- const cached = trackingCache.get(key);
20197
- if (cached !== void 0) {
20198
- return cached;
20199
- }
20200
- const ctx = getMeasureContext();
20201
- if (!ctx) {
20202
- return 0;
20203
- }
20204
- const chars = [...text3];
20205
- let powerPoint = 0;
20206
- for (const advance of advancesOf(ctx, canvasFont, chars)) {
20207
- powerPoint += Math.round(advance * ADVANCE_STEPS_PER_PX);
20208
- }
20209
- ctx.fontKerning = "auto";
20210
- const natural = ctx.measureText(text3).width;
20211
- if (!(natural > 0)) {
20212
- return 0;
20213
- }
20214
- powerPoint /= ADVANCE_STEPS_PER_PX;
20215
- const limit = MAX_TRACKING_PX_PER_CHAR;
20216
- const raw = (powerPoint - natural) / chars.length;
20217
- const tracking = Math.min(limit, Math.max(-limit, raw));
20218
- if (trackingCache.size >= MAX_CACHE_ENTRIES) {
20219
- trackingCache = /* @__PURE__ */ new Map();
20220
- }
20221
- trackingCache.set(key, tracking);
20222
- return tracking;
20223
- }
20224
- function isBreakBoundary(previous, next) {
20225
- const previousSpace = /\s/u.test(previous);
20226
- const nextSpace = /\s/u.test(next);
20227
- if (previousSpace !== nextSpace) {
20228
- return true;
20229
- }
20230
- return previous === "-" && next !== "-" && !nextSpace;
20231
- }
20232
- function splitRunForMetrics(text3, font) {
20233
- const chars = [...text3];
20234
- if (chars.length < 2 || !getMeasureContext()) {
20235
- return [{ text: text3, tracking: resolveMetricTrackingPx(text3, font) }];
20236
- }
20237
- const pieces = [];
20238
- let current = chars[0];
20239
- for (let i = 1; i < chars.length; i++) {
20240
- if (isBreakBoundary(chars[i - 1], chars[i])) {
20241
- pieces.push(current);
20242
- current = "";
20243
- }
20244
- current += chars[i];
20245
- }
20246
- pieces.push(current);
20247
- if (pieces.length === 1) {
20248
- return [{ text: text3, tracking: resolveMetricTrackingPx(text3, font) }];
20249
- }
20250
- return pieces.map((piece) => ({ text: piece, tracking: resolveMetricTrackingPx(piece, font) }));
20251
- }
20252
- function resolveMetricTracking(text3, font) {
20253
- const tracking = resolveMetricTrackingPx(text3, font);
20254
- return tracking === 0 ? void 0 : `${tracking}px`;
20255
- }
20256
- function resolveTrackedTextWidth(text3, font, naturalWidth) {
20257
- if (!text3) {
20258
- return naturalWidth;
20259
- }
20260
- const tracking = resolveMetricTrackingPx(text3, font);
20261
- return tracking === 0 ? naturalWidth : naturalWidth + tracking * [...text3].length;
20262
- }
20263
- function resetMetricTrackingCache() {
20264
- trackingCache = /* @__PURE__ */ new Map();
20265
- measureContext2 = void 0;
20266
- }
20267
-
20268
- // src/pptx/render/text-outline-dash.ts
20269
- var DASH_PATTERNS = {
20270
- dot: [1, 3],
20271
- sysDot: [1, 1],
20272
- dash: [4, 3],
20273
- sysDash: [3, 1],
20274
- lgDash: [8, 3],
20275
- dashDot: [4, 3, 1, 3],
20276
- sysDashDot: [3, 1, 1, 1],
20277
- lgDashDot: [8, 3, 1, 3],
20278
- lgDashDotDot: [8, 3, 1, 3, 1, 3],
20279
- sysDashDotDot: [3, 1, 1, 1, 1, 1]
20280
- };
20281
- function dashStripe(pattern, widthPx, color) {
20282
- const stops = [];
20283
- let at = 0;
20284
- pattern.forEach((len, i) => {
20285
- const end = at + len * widthPx;
20286
- const paint = i % 2 === 0 ? color : "transparent";
20287
- stops.push(`${paint} ${round2(at)}px ${round2(end)}px`);
20288
- at = end;
20289
- });
20290
- return `repeating-linear-gradient(45deg, ${stops.join(", ")})`;
20291
- }
20292
- function round2(v) {
20293
- return Math.round(v * 100) / 100;
20294
- }
20295
- function resolveTextOutlineDashCss(s, fillColor) {
20296
- const width = s.textOutlineWidth;
20297
- const pattern = s.textOutlineDash ? DASH_PATTERNS[s.textOutlineDash] : void 0;
20298
- if (!width || width <= 0 || !pattern) {
20299
- return void 0;
20300
- }
20301
- if (s.textFillGradient || s.textFillPattern || s.textFillBlipUrl || s.highlightColor) {
20302
- return void 0;
20303
- }
20304
- const strokeColor = chunkAIL3BNZS_cjs.normalizeHexColor(s.textOutlineColor, fillColor ?? "#000000");
20305
- return {
20306
- WebkitTextStroke: `${width}px transparent`,
20307
- WebkitTextFillColor: s.textFillNone ? "transparent" : fillColor ?? "currentColor",
20308
- background: dashStripe(pattern, width, strokeColor),
20309
- backgroundClip: "text",
20310
- WebkitBackgroundClip: "text"
20311
- };
20312
- }
20313
-
20314
- // src/pptx/render/text-run-hollow.ts
20315
- function hollowTextFillStyle(s, painted = {}) {
20316
- if (!s.textFillNone) {
20317
- return void 0;
20318
- }
20319
- const hollow = {
20320
- color: "transparent",
20321
- WebkitTextFillColor: "transparent"
20322
- };
20323
- if (painted.textStroke !== void 0 && !s.textOutlineColor) {
20324
- hollow.WebkitTextStroke = `${s.textOutlineWidth}px ${painted.color ?? "currentColor"}`;
20325
- }
20326
- return hollow;
20327
- }
20328
-
20329
20179
  // src/pptx/render/text-decoration.ts
20330
20180
  var HEAVY_PX = "2px";
20331
20181
  var EMU_PER_PX2 = 9525;
@@ -20469,6 +20319,131 @@ function splitWordsForUnderline(text3) {
20469
20319
  return pieces;
20470
20320
  }
20471
20321
 
20322
+ // src/pptx/render/text-metric-tracking.ts
20323
+ var ADVANCE_STEPS_PER_PX = 6;
20324
+ var MAX_TRACKING_PX_PER_CHAR = 1 / (2 * ADVANCE_STEPS_PER_PX);
20325
+ var MAX_CACHE_ENTRIES = 2e4;
20326
+ var measureContext2;
20327
+ var trackingCache = /* @__PURE__ */ new Map();
20328
+ var fontsHookInstalled = false;
20329
+ function installFontLoadHook() {
20330
+ if (fontsHookInstalled || typeof document === "undefined") {
20331
+ return;
20332
+ }
20333
+ fontsHookInstalled = true;
20334
+ document.fonts?.addEventListener?.("loadingdone", () => {
20335
+ trackingCache = /* @__PURE__ */ new Map();
20336
+ });
20337
+ }
20338
+ function getMeasureContext() {
20339
+ if (measureContext2 !== void 0) {
20340
+ return measureContext2;
20341
+ }
20342
+ if (typeof document === "undefined") {
20343
+ measureContext2 = null;
20344
+ return null;
20345
+ }
20346
+ installFontLoadHook();
20347
+ measureContext2 = document.createElement("canvas").getContext("2d");
20348
+ return measureContext2;
20349
+ }
20350
+ function toCanvasFont2(font) {
20351
+ const size = font.fontSizePx && font.fontSizePx > 0 ? font.fontSizePx : chunkYRHK45AB_cjs.DEFAULT_TEXT_FONT_SIZE;
20352
+ const family2 = font.fontFamily || chunkYRHK45AB_cjs.DEFAULT_FONT_FAMILY;
20353
+ return `${font.italic ? "italic " : ""}${font.bold ? "bold " : ""}${size}px ${family2}`;
20354
+ }
20355
+ function advancesOf(ctx, canvasFont, chars) {
20356
+ ctx.font = canvasFont;
20357
+ ctx.fontKerning = "none";
20358
+ const advances = [];
20359
+ let previous = 0;
20360
+ let prefix = "";
20361
+ for (const char of chars) {
20362
+ prefix += char;
20363
+ const width = ctx.measureText(prefix).width;
20364
+ advances.push(width - previous);
20365
+ previous = width;
20366
+ }
20367
+ return advances;
20368
+ }
20369
+ function resolveMetricTrackingPx(text3, font) {
20370
+ if (!text3) {
20371
+ return 0;
20372
+ }
20373
+ const canvasFont = toCanvasFont2(font);
20374
+ const key = `${canvasFont}\0${text3}`;
20375
+ const cached = trackingCache.get(key);
20376
+ if (cached !== void 0) {
20377
+ return cached;
20378
+ }
20379
+ const ctx = getMeasureContext();
20380
+ if (!ctx) {
20381
+ return 0;
20382
+ }
20383
+ const chars = [...text3];
20384
+ let powerPoint = 0;
20385
+ for (const advance of advancesOf(ctx, canvasFont, chars)) {
20386
+ powerPoint += Math.round(advance * ADVANCE_STEPS_PER_PX);
20387
+ }
20388
+ ctx.fontKerning = "auto";
20389
+ const natural = ctx.measureText(text3).width;
20390
+ if (!(natural > 0)) {
20391
+ return 0;
20392
+ }
20393
+ powerPoint /= ADVANCE_STEPS_PER_PX;
20394
+ const limit = MAX_TRACKING_PX_PER_CHAR;
20395
+ const raw = (powerPoint - natural) / chars.length;
20396
+ const tracking = Math.min(limit, Math.max(-limit, raw));
20397
+ if (trackingCache.size >= MAX_CACHE_ENTRIES) {
20398
+ trackingCache = /* @__PURE__ */ new Map();
20399
+ }
20400
+ trackingCache.set(key, tracking);
20401
+ return tracking;
20402
+ }
20403
+ function isBreakBoundary(previous, next) {
20404
+ const previousSpace = /\s/u.test(previous);
20405
+ const nextSpace = /\s/u.test(next);
20406
+ if (previousSpace !== nextSpace) {
20407
+ return true;
20408
+ }
20409
+ return previous === "-" && next !== "-" && !nextSpace;
20410
+ }
20411
+ function splitRunForMetrics(text3, font) {
20412
+ const chars = [...text3];
20413
+ if (chars.length < 2 || !getMeasureContext()) {
20414
+ return [{ text: text3, tracking: resolveMetricTrackingPx(text3, font) }];
20415
+ }
20416
+ const pieces = [];
20417
+ let current = chars[0];
20418
+ for (let i = 1; i < chars.length; i++) {
20419
+ if (isBreakBoundary(chars[i - 1], chars[i])) {
20420
+ pieces.push(current);
20421
+ current = "";
20422
+ }
20423
+ current += chars[i];
20424
+ }
20425
+ pieces.push(current);
20426
+ if (pieces.length === 1) {
20427
+ return [{ text: text3, tracking: resolveMetricTrackingPx(text3, font) }];
20428
+ }
20429
+ return pieces.map((piece) => ({ text: piece, tracking: resolveMetricTrackingPx(piece, font) }));
20430
+ }
20431
+ function resolveMetricTracking(text3, font) {
20432
+ const tracking = resolveMetricTrackingPx(text3, font);
20433
+ return tracking === 0 ? void 0 : `${tracking}px`;
20434
+ }
20435
+ function resolveTrackedTextWidth(text3, font, naturalWidth) {
20436
+ if (!text3) {
20437
+ return naturalWidth;
20438
+ }
20439
+ const tracking = resolveMetricTrackingPx(text3, font);
20440
+ return tracking === 0 ? naturalWidth : naturalWidth + tracking * [...text3].length;
20441
+ }
20442
+ function resetMetricTrackingCache() {
20443
+ trackingCache = /* @__PURE__ */ new Map();
20444
+ measureContext2 = void 0;
20445
+ }
20446
+
20472
20447
  // src/pptx/render/text-run-spacing.ts
20473
20448
  var PX_PER_POINT = 96 / 72;
20474
20449
  function authoredLetterSpacingPx(style) {
@@ -20531,6 +20506,67 @@ function splitStyledRun(text3, style, font, authoredPx, underlineWords = false)
20531
20506
  return out.length > 0 ? out : [{ text: text3, style }];
20532
20507
  }
20533
20508
 
20509
+ // src/pptx/render/text-outline-dash.ts
20510
+ var DASH_PATTERNS = {
20511
+ dot: [1, 3],
20512
+ sysDot: [1, 1],
20513
+ dash: [4, 3],
20514
+ sysDash: [3, 1],
20515
+ lgDash: [8, 3],
20516
+ dashDot: [4, 3, 1, 3],
20517
+ sysDashDot: [3, 1, 1, 1],
20518
+ lgDashDot: [8, 3, 1, 3],
20519
+ lgDashDotDot: [8, 3, 1, 3, 1, 3],
20520
+ sysDashDotDot: [3, 1, 1, 1, 1, 1]
20521
+ };
20522
+ function dashStripe(pattern, widthPx, color) {
20523
+ const stops = [];
20524
+ let at = 0;
20525
+ pattern.forEach((len, i) => {
20526
+ const end = at + len * widthPx;
20527
+ const paint = i % 2 === 0 ? color : "transparent";
20528
+ stops.push(`${paint} ${round2(at)}px ${round2(end)}px`);
20529
+ at = end;
20530
+ });
20531
+ return `repeating-linear-gradient(45deg, ${stops.join(", ")})`;
20532
+ }
20533
+ function round2(v) {
20534
+ return Math.round(v * 100) / 100;
20535
+ }
20536
+ function resolveTextOutlineDashCss(s, fillColor) {
20537
+ const width = s.textOutlineWidth;
20538
+ const pattern = s.textOutlineDash ? DASH_PATTERNS[s.textOutlineDash] : void 0;
20539
+ if (!width || width <= 0 || !pattern) {
20540
+ return void 0;
20541
+ }
20542
+ if (s.textFillGradient || s.textFillPattern || s.textFillBlipUrl || s.highlightColor) {
20543
+ return void 0;
20544
+ }
20545
+ const strokeColor = chunkYRHK45AB_cjs.normalizeHexColor(s.textOutlineColor, fillColor ?? "#000000");
20546
+ return {
20547
+ WebkitTextStroke: `${width}px transparent`,
20548
+ WebkitTextFillColor: s.textFillNone ? "transparent" : fillColor ?? "currentColor",
20549
+ background: dashStripe(pattern, width, strokeColor),
20550
+ backgroundClip: "text",
20551
+ WebkitBackgroundClip: "text"
20552
+ };
20553
+ }
20554
+
20555
+ // src/pptx/render/text-run-hollow.ts
20556
+ function hollowTextFillStyle(s, painted = {}) {
20557
+ if (!s.textFillNone) {
20558
+ return void 0;
20559
+ }
20560
+ const hollow = {
20561
+ color: "transparent",
20562
+ WebkitTextFillColor: "transparent"
20563
+ };
20564
+ if (painted.textStroke !== void 0 && !s.textOutlineColor) {
20565
+ hollow.WebkitTextStroke = `${s.textOutlineWidth}px ${painted.color ?? "currentColor"}`;
20566
+ }
20567
+ return hollow;
20568
+ }
20569
+
20534
20570
  // src/pptx/render/text-line-height.ts
20535
20571
  var DEFAULT_LINE_HEIGHT = 1.2;
20536
20572
  function resolveLineHeight(textStyle, hasItalicRuns2) {
@@ -20670,13 +20706,13 @@ function applyExtraRunProps(style, s, text3, font) {
20670
20706
  style.fontKerning = fontKerning;
20671
20707
  }
20672
20708
  if (s.highlightColor) {
20673
- style.backgroundColor = chunkAIL3BNZS_cjs.normalizeHexColor(s.highlightColor, "transparent");
20709
+ style.backgroundColor = chunkYRHK45AB_cjs.normalizeHexColor(s.highlightColor, "transparent");
20674
20710
  }
20675
20711
  if (s.underlineColor) {
20676
- style.textDecorationColor = chunkAIL3BNZS_cjs.normalizeHexColor(s.underlineColor);
20712
+ style.textDecorationColor = chunkYRHK45AB_cjs.normalizeHexColor(s.underlineColor);
20677
20713
  }
20678
20714
  if (s.textOutlineWidth) {
20679
- style.WebkitTextStroke = s.textOutlineColor ? `${s.textOutlineWidth}px ${chunkAIL3BNZS_cjs.normalizeHexColor(s.textOutlineColor, "#000000")}` : `${s.textOutlineWidth}px currentColor`;
20715
+ style.WebkitTextStroke = s.textOutlineColor ? `${s.textOutlineWidth}px ${chunkYRHK45AB_cjs.normalizeHexColor(s.textOutlineColor, "#000000")}` : `${s.textOutlineWidth}px currentColor`;
20680
20716
  style.paintOrder = "stroke fill";
20681
20717
  }
20682
20718
  if (s.textCaps === "all") {
@@ -20717,7 +20753,7 @@ function segmentStyleToCss(seg, fontScale = 1, context = {}) {
20717
20753
  if (s.color) {
20718
20754
  style.color = s.color;
20719
20755
  } else if (s.hyperlink) {
20720
- style.color = chunkAIL3BNZS_cjs.HYPERLINK_COLOR;
20756
+ style.color = chunkYRHK45AB_cjs.HYPERLINK_COLOR;
20721
20757
  }
20722
20758
  style.fontWeight = s.bold ? "bold" : "normal";
20723
20759
  style.fontStyle = s.italic ? "italic" : "normal";
@@ -20786,6 +20822,10 @@ function cellRunStyle(run) {
20786
20822
  if (deco.length > 0) {
20787
20823
  css.textDecoration = deco.join(" ");
20788
20824
  }
20825
+ const letterSpacingPx = authoredLetterSpacingPx(run);
20826
+ if (letterSpacingPx !== 0) {
20827
+ css.letterSpacing = `${letterSpacingPx}px`;
20828
+ }
20789
20829
  if (isKoreanLanguage(run.language)) {
20790
20830
  css.wordBreak = "keep-all";
20791
20831
  }
@@ -20795,9 +20835,9 @@ function cellPatternFillCss(style) {
20795
20835
  if (style.fillMode !== "pattern" || !style.patternFillPreset) {
20796
20836
  return null;
20797
20837
  }
20798
- const fg = chunkAIL3BNZS_cjs.normalizeHexColor(style.patternFillForeground, "#000000");
20799
- const bg = chunkAIL3BNZS_cjs.normalizeHexColor(style.patternFillBackground, "#ffffff");
20800
- const svgMarkup = chunkAIL3BNZS_cjs.getPatternSvg(style.patternFillPreset, fg, bg);
20838
+ const fg = chunkYRHK45AB_cjs.normalizeHexColor(style.patternFillForeground, "#000000");
20839
+ const bg = chunkYRHK45AB_cjs.normalizeHexColor(style.patternFillBackground, "#ffffff");
20840
+ const svgMarkup = chunkYRHK45AB_cjs.getPatternSvg(style.patternFillPreset, fg, bg);
20801
20841
  if (svgMarkup) {
20802
20842
  const encoded = encodeURIComponent(svgMarkup);
20803
20843
  return {
@@ -21183,11 +21223,186 @@ function tableCellCss(tableData, cell, position, context, base2) {
21183
21223
  );
21184
21224
  const css = { ...base2, ...band, ...cellStyleToCss(cell?.style) };
21185
21225
  if (css.color === void 0) {
21186
- css.color = chunkAIL3BNZS_cjs.DEFAULT_TEXT_COLOR;
21226
+ css.color = chunkYRHK45AB_cjs.DEFAULT_TEXT_COLOR;
21187
21227
  }
21188
21228
  return { ...TABLE_CELL_TEXT_DEFAULTS, ...css };
21189
21229
  }
21190
21230
 
21231
+ // src/pptx/render/paragraph-spacing.ts
21232
+ var PT_TO_PX = 96 / 72;
21233
+ function resolveParagraphSpacing(input) {
21234
+ const {
21235
+ paraProps,
21236
+ bodyStyle,
21237
+ isFirst = false,
21238
+ isLast = false,
21239
+ spaceFirstLast = false,
21240
+ lineSpacingReduction
21241
+ } = input;
21242
+ const out = {};
21243
+ const before = paraProps?.paragraphSpacingBefore ?? bodyStyle?.paragraphSpacingBefore;
21244
+ const effectiveBefore = typeof before === "number" && before > 0 && (!isFirst || spaceFirstLast) ? before : 0;
21245
+ const after = paraProps?.paragraphSpacingAfter ?? bodyStyle?.paragraphSpacingAfter;
21246
+ const effectiveAfter = typeof after === "number" && after > 0 && (!isLast || spaceFirstLast) ? after : 0;
21247
+ const combinedAfter = effectiveBefore + effectiveAfter;
21248
+ if (combinedAfter > 0) {
21249
+ out.spaceAfterPx = combinedAfter;
21250
+ }
21251
+ const hasOwnLineSpacing = paraProps?.lineSpacing !== void 0 || paraProps?.lineSpacingExactPt !== void 0;
21252
+ const lineSource = hasOwnLineSpacing ? paraProps : bodyStyle;
21253
+ const exactPt = lineSource?.lineSpacingExactPt;
21254
+ const multiplier = lineSource?.lineSpacing;
21255
+ if (typeof exactPt === "number" && exactPt > 0) {
21256
+ out.lineHeight = `${exactPt * PT_TO_PX}px`;
21257
+ } else if (typeof multiplier === "number" && multiplier > 0) {
21258
+ const proportional = proportionalLineHeight(multiplier, bodyStyle?.compatibleLineSpacing);
21259
+ out.lineHeight = typeof lineSpacingReduction === "number" && lineSpacingReduction > 0 ? proportional * (1 - lineSpacingReduction) : proportional;
21260
+ }
21261
+ return out;
21262
+ }
21263
+
21264
+ // src/pptx/render/text-paragraph-style.ts
21265
+ function resolveParagraphRtl(paraSegments, elementRtl) {
21266
+ for (const entry5 of paraSegments) {
21267
+ const paraRtl = entry5.segment.paragraphProperties?.rtl;
21268
+ if (paraRtl !== void 0) {
21269
+ return paraRtl;
21270
+ }
21271
+ }
21272
+ for (const entry5 of paraSegments) {
21273
+ const segRtl = entry5.segment.style?.rtl;
21274
+ if (segRtl !== void 0) {
21275
+ return segRtl;
21276
+ }
21277
+ }
21278
+ return elementRtl;
21279
+ }
21280
+ function resolveParagraphAlign(paraSegments, elementAlign) {
21281
+ for (const entry5 of paraSegments) {
21282
+ const segAlign = entry5.segment.style?.align;
21283
+ if (segAlign !== void 0) {
21284
+ return segAlign;
21285
+ }
21286
+ }
21287
+ return elementAlign;
21288
+ }
21289
+ function resolveCssTextAlign(align, isRtl) {
21290
+ if (align === "justLow" || align === "dist" || align === "thaiDist") {
21291
+ return "justify";
21292
+ }
21293
+ if (align) {
21294
+ return align;
21295
+ }
21296
+ return isRtl ? "right" : void 0;
21297
+ }
21298
+ function resolveTextAlignLast(align) {
21299
+ return align === "dist" ? "justify" : void 0;
21300
+ }
21301
+
21302
+ // src/pptx/render/table-cell-paragraphs.ts
21303
+ var BLANK_LINE = { text: "", isLineBreak: true };
21304
+ function groupRuns(runs) {
21305
+ const groups = [[]];
21306
+ for (const run of runs) {
21307
+ if (run.isParagraphBreak) {
21308
+ groups.push([]);
21309
+ } else {
21310
+ groups[groups.length - 1].push(run);
21311
+ }
21312
+ }
21313
+ return groups;
21314
+ }
21315
+ function strutFontSizePt(runs) {
21316
+ let smallest;
21317
+ for (const run of runs) {
21318
+ if (!run.text) {
21319
+ continue;
21320
+ }
21321
+ if (typeof run.fontSize !== "number" || run.fontSize <= 0) {
21322
+ return void 0;
21323
+ }
21324
+ smallest = smallest === void 0 ? run.fontSize : Math.min(smallest, run.fontSize);
21325
+ }
21326
+ return smallest;
21327
+ }
21328
+ function paragraphLayoutCss(paragraph2, followsCell, isFirst, isLast) {
21329
+ const css = {};
21330
+ const rtl = paragraph2?.rtl === true;
21331
+ if (!followsCell) {
21332
+ css.textAlign = resolveCssTextAlign(paragraph2?.align, rtl) ?? "start";
21333
+ const textAlignLast = resolveTextAlignLast(paragraph2?.align);
21334
+ if (textAlignLast !== void 0) {
21335
+ css.textAlignLast = textAlignLast;
21336
+ }
21337
+ }
21338
+ if (paragraph2?.rtl !== void 0) {
21339
+ css.direction = rtl ? "rtl" : "ltr";
21340
+ css.unicodeBidi = "embed";
21341
+ }
21342
+ const indent = bulletList.resolveParagraphIndent(
21343
+ { marginLeft: paragraph2?.paragraphMarginLeft, indent: paragraph2?.paragraphIndent },
21344
+ void 0
21345
+ );
21346
+ if (indent.marginLeftPx !== void 0) {
21347
+ css.marginInlineStart = `${indent.marginLeftPx}px`;
21348
+ }
21349
+ if (indent.textIndentPx !== void 0 && (indent.textIndentPx > 0 || indent.marginLeftPx !== void 0)) {
21350
+ css.textIndent = `${indent.textIndentPx}px`;
21351
+ }
21352
+ const spacing = resolveParagraphSpacing({ paraProps: paragraph2, isFirst, isLast });
21353
+ if (spacing.lineHeight !== void 0) {
21354
+ css.lineHeight = spacing.lineHeight;
21355
+ }
21356
+ if (spacing.spaceAfterPx !== void 0) {
21357
+ css.marginBlockEnd = `${spacing.spaceAfterPx}px`;
21358
+ }
21359
+ return css;
21360
+ }
21361
+ function alignOf(paragraph2) {
21362
+ return paragraph2?.align ?? "left";
21363
+ }
21364
+ function followsCellAlign(cell, paragraph2, first) {
21365
+ return alignOf(paragraph2) === alignOf(first) && (paragraph2?.rtl !== true || cell.style?.align !== void 0);
21366
+ }
21367
+ function needsBlocks(paragraphs2, follows, layouts) {
21368
+ return follows.some(
21369
+ (followsCell, index) => !followsCell || paragraphs2[index]?.rtl === true || layouts[index].marginInlineStart !== void 0 || layouts[index].textIndent !== void 0 || layouts[index].marginBlockEnd !== void 0 || layouts[index].lineHeight !== void 0 && layouts[index].lineHeight !== DEFAULT_LINE_HEIGHT
21370
+ );
21371
+ }
21372
+ function cellParagraphBlocks(cell) {
21373
+ const { paragraphs: paragraphs2 } = cell;
21374
+ if (!paragraphs2 || paragraphs2.length === 0) {
21375
+ return void 0;
21376
+ }
21377
+ const runs = cell.textRuns && cell.textRuns.length > 0 ? cell.textRuns : [{ text: cell.text }];
21378
+ const groups = groupRuns(runs);
21379
+ const follows = groups.map(
21380
+ (_, index) => followsCellAlign(cell, paragraphs2[index], paragraphs2[0])
21381
+ );
21382
+ const layouts = groups.map(
21383
+ (_, index) => paragraphLayoutCss(paragraphs2[index], follows[index], index === 0, index === groups.length - 1)
21384
+ );
21385
+ if (!needsBlocks(paragraphs2, follows, layouts)) {
21386
+ return void 0;
21387
+ }
21388
+ return groups.map((group, index) => {
21389
+ const css = layouts[index];
21390
+ const hasContent = group.some((run) => run.text !== "" || run.isLineBreak);
21391
+ if (!hasContent) {
21392
+ const endPt = paragraphs2[index]?.endParaFontSize;
21393
+ if (endPt !== void 0) {
21394
+ css.fontSize = `${endPt}pt`;
21395
+ }
21396
+ return { css, runs: [BLANK_LINE] };
21397
+ }
21398
+ const strutPt = strutFontSizePt(group);
21399
+ if (strutPt !== void 0) {
21400
+ css.fontSize = `${strutPt}pt`;
21401
+ }
21402
+ return { css, runs: group };
21403
+ });
21404
+ }
21405
+
21191
21406
  // src/pptx/render/table-cell-pointer.ts
21192
21407
  function tableCellPointerIntent(input) {
21193
21408
  if (!input.isTableCell) {
@@ -21334,7 +21549,7 @@ var GRADIENT_TYPE_OPTIONS = [
21334
21549
  { value: "linear", i18nKey: "pptx.table.gradientLinear" },
21335
21550
  { value: "radial", i18nKey: "pptx.table.gradientRadial" }
21336
21551
  ];
21337
- var PATTERN_OPTIONS = chunkAIL3BNZS_cjs.OOXML_PATTERN_PRESETS.slice(0, 20);
21552
+ var PATTERN_OPTIONS = chunkYRHK45AB_cjs.OOXML_PATTERN_PRESETS.slice(0, 20);
21338
21553
 
21339
21554
  // src/pptx/render/table-resize.ts
21340
21555
  var MIN_COLUMN_PROPORTION = 0.03;
@@ -22078,10 +22293,10 @@ function imageFitTransformParts(el) {
22078
22293
  return { placement: "", crop: "" };
22079
22294
  }
22080
22295
  return fitTransformsFromInsets({
22081
- cropLeft: chunkAIL3BNZS_cjs.clampCropValue(el.cropLeft),
22082
- cropTop: chunkAIL3BNZS_cjs.clampCropValue(el.cropTop),
22083
- cropRight: chunkAIL3BNZS_cjs.clampCropValue(el.cropRight),
22084
- cropBottom: chunkAIL3BNZS_cjs.clampCropValue(el.cropBottom),
22296
+ cropLeft: chunkYRHK45AB_cjs.clampCropValue(el.cropLeft),
22297
+ cropTop: chunkYRHK45AB_cjs.clampCropValue(el.cropTop),
22298
+ cropRight: chunkYRHK45AB_cjs.clampCropValue(el.cropRight),
22299
+ cropBottom: chunkYRHK45AB_cjs.clampCropValue(el.cropBottom),
22085
22300
  fillRectLeft: el.fillRectLeft ?? 0,
22086
22301
  fillRectTop: el.fillRectTop ?? 0,
22087
22302
  fillRectRight: el.fillRectRight ?? 0,
@@ -22105,10 +22320,10 @@ function fitTransformsFromInsets(insets) {
22105
22320
  if (hasCrop2) {
22106
22321
  const horizontalScale = cropLeft + cropRight >= 0.99 ? 0.99 / (cropLeft + cropRight) : 1;
22107
22322
  const verticalScale = cropTop + cropBottom >= 0.99 ? 0.99 / (cropTop + cropBottom) : 1;
22108
- cropLeft = chunkAIL3BNZS_cjs.clampCropValue(cropLeft * horizontalScale);
22109
- cropRight = chunkAIL3BNZS_cjs.clampCropValue(cropRight * horizontalScale);
22110
- cropTop = chunkAIL3BNZS_cjs.clampCropValue(cropTop * verticalScale);
22111
- cropBottom = chunkAIL3BNZS_cjs.clampCropValue(cropBottom * verticalScale);
22323
+ cropLeft = chunkYRHK45AB_cjs.clampCropValue(cropLeft * horizontalScale);
22324
+ cropRight = chunkYRHK45AB_cjs.clampCropValue(cropRight * horizontalScale);
22325
+ cropTop = chunkYRHK45AB_cjs.clampCropValue(cropTop * verticalScale);
22326
+ cropBottom = chunkYRHK45AB_cjs.clampCropValue(cropBottom * verticalScale);
22112
22327
  const remainingWidth = Math.max(0.01, 1 - cropLeft - cropRight);
22113
22328
  const remainingHeight = Math.max(0.01, 1 - cropTop - cropBottom);
22114
22329
  const tx = Math.round(-cropLeft / remainingWidth * 1e4) / 100;
@@ -22223,7 +22438,7 @@ function resolveShadeToTitleBackgroundImage(slide, slideWidthPx, slideHeightPx)
22223
22438
  if (stops.length === 0) {
22224
22439
  return void 0;
22225
22440
  }
22226
- return chunkAIL3BNZS_cjs.buildRectPathGradientImage(stops, void 0, fillToRect);
22441
+ return chunkYRHK45AB_cjs.buildRectPathGradientImage(stops, void 0, fillToRect);
22227
22442
  }
22228
22443
 
22229
22444
  // src/pptx/render/slide-background.ts
@@ -22245,7 +22460,7 @@ function getSlideBackgroundStyle(slide, slideSize) {
22245
22460
  style["background-repeat"] = "no-repeat";
22246
22461
  }
22247
22462
  } else if (pattern) {
22248
- const svg2 = chunkAIL3BNZS_cjs.getPatternSvg(
22463
+ const svg2 = chunkYRHK45AB_cjs.getPatternSvg(
22249
22464
  pattern.preset,
22250
22465
  pattern.fgColor ?? solid ?? "#000000",
22251
22466
  pattern.bgColor ?? DEFAULT_SLIDE_BACKGROUND
@@ -23653,12 +23868,12 @@ function buildRunTabLines(text3, ctx, nestedDecoration, measure2 = (t) => measur
23653
23868
  // src/pptx/render/paragraph-run-enrich.ts
23654
23869
  function resolveRunExtrasContext(input) {
23655
23870
  const { seg, runFont, blockFont, blockScriptStyle, tabStops, defaultTabSize, rtl } = input;
23656
- const baseFontFamily = runFont.fontFamily ?? blockFont.fontFamily ?? chunkAIL3BNZS_cjs.DEFAULT_FONT_FAMILY;
23871
+ const baseFontFamily = runFont.fontFamily ?? blockFont.fontFamily ?? chunkYRHK45AB_cjs.DEFAULT_FONT_FAMILY;
23657
23872
  const scriptFonts = resolveScriptFontSet(seg.style, blockScriptStyle, baseFontFamily);
23658
23873
  const tabContext = tabStops && tabStops.length > 0 ? buildTabContext(
23659
23874
  tabStops,
23660
23875
  defaultTabSize,
23661
- runFont.fontSizePx ?? blockFont.fontSizePx ?? chunkAIL3BNZS_cjs.DEFAULT_TEXT_FONT_SIZE,
23876
+ runFont.fontSizePx ?? blockFont.fontSizePx ?? chunkYRHK45AB_cjs.DEFAULT_TEXT_FONT_SIZE,
23662
23877
  baseFontFamily,
23663
23878
  Boolean(seg.style?.bold),
23664
23879
  Boolean(seg.style?.italic),
@@ -23690,7 +23905,7 @@ function resolveRunReflection(segStyle, blockFont) {
23690
23905
  if (!segStyle) {
23691
23906
  return void 0;
23692
23907
  }
23693
- const height = typeof segStyle.fontSize === "number" ? segStyle.fontSize : blockFont.fontSizePx ?? chunkAIL3BNZS_cjs.DEFAULT_TEXT_FONT_SIZE;
23908
+ const height = typeof segStyle.fontSize === "number" ? segStyle.fontSize : blockFont.fontSizePx ?? chunkYRHK45AB_cjs.DEFAULT_TEXT_FONT_SIZE;
23694
23909
  return getTextReflectionWrapperStyle(segStyle, height);
23695
23910
  }
23696
23911
  function applyRunReflection(run, reflection2) {
@@ -23852,7 +24067,7 @@ function buildTextShadowCss(style) {
23852
24067
  const ox = style.textShadowOffsetX ?? 0;
23853
24068
  const oy = style.textShadowOffsetY ?? 0;
23854
24069
  const blur = style.textShadowBlur ?? 4;
23855
- const color = chunkAIL3BNZS_cjs.normalizeHexColor(style.textShadowColor, "#000000");
24070
+ const color = chunkYRHK45AB_cjs.normalizeHexColor(style.textShadowColor, "#000000");
23856
24071
  const opacity = style.textShadowOpacity ?? 0.5;
23857
24072
  const r = parseInt(color.slice(1, 3), 16);
23858
24073
  const g = parseInt(color.slice(3, 5), 16);
@@ -23865,7 +24080,7 @@ function buildTextShadowCss(style) {
23865
24080
  const dirRad = dir * Math.PI / 180;
23866
24081
  const psOx = Math.round(Math.cos(dirRad) * dist2 * 100) / 100;
23867
24082
  const psOy = Math.round(Math.sin(dirRad) * dist2 * 100) / 100;
23868
- const psColor = chunkAIL3BNZS_cjs.normalizeHexColor(style.textPresetShadowColor, "#000000");
24083
+ const psColor = chunkYRHK45AB_cjs.normalizeHexColor(style.textPresetShadowColor, "#000000");
23869
24084
  const psOpacity = style.textPresetShadowOpacity ?? 0.5;
23870
24085
  const psR = parseInt(psColor.slice(1, 3), 16);
23871
24086
  const psG = parseInt(psColor.slice(3, 5), 16);
@@ -23882,7 +24097,7 @@ function buildTextInnerShadowCss(style) {
23882
24097
  const ox = style.textInnerShadowOffsetX ?? 0;
23883
24098
  const oy = style.textInnerShadowOffsetY ?? 0;
23884
24099
  const blur = style.textInnerShadowBlur ?? 3;
23885
- const color = chunkAIL3BNZS_cjs.normalizeHexColor(style.textInnerShadowColor, "#000000");
24100
+ const color = chunkYRHK45AB_cjs.normalizeHexColor(style.textInnerShadowColor, "#000000");
23886
24101
  const opacity = style.textInnerShadowOpacity ?? 0.5;
23887
24102
  const r = parseInt(color.slice(1, 3), 16);
23888
24103
  const g = parseInt(color.slice(3, 5), 16);
@@ -23929,7 +24144,7 @@ function buildTextGlowFilter(style) {
23929
24144
  return void 0;
23930
24145
  }
23931
24146
  const radius = style.textGlowRadius ?? 6;
23932
- const color = chunkAIL3BNZS_cjs.normalizeHexColor(style.textGlowColor, "#ffff00");
24147
+ const color = chunkYRHK45AB_cjs.normalizeHexColor(style.textGlowColor, "#ffff00");
23933
24148
  const opacity = style.textGlowOpacity ?? 0.6;
23934
24149
  const r = parseInt(color.slice(1, 3), 16);
23935
24150
  const g = parseInt(color.slice(3, 5), 16);
@@ -23957,9 +24172,9 @@ function buildTextFillCss(style) {
23957
24172
  };
23958
24173
  }
23959
24174
  if (style.textFillPattern) {
23960
- const fg = chunkAIL3BNZS_cjs.normalizeHexColor(style.textFillPatternForeground, "#000000");
23961
- const bg = chunkAIL3BNZS_cjs.normalizeHexColor(style.textFillPatternBackground, "#ffffff");
23962
- const svgPattern = chunkAIL3BNZS_cjs.getPatternSvg(style.textFillPattern, fg, bg);
24175
+ const fg = chunkYRHK45AB_cjs.normalizeHexColor(style.textFillPatternForeground, "#000000");
24176
+ const bg = chunkYRHK45AB_cjs.normalizeHexColor(style.textFillPatternBackground, "#ffffff");
24177
+ const svgPattern = chunkYRHK45AB_cjs.getPatternSvg(style.textFillPattern, fg, bg);
23963
24178
  if (svgPattern) {
23964
24179
  const encoded = encodeURIComponent(svgPattern);
23965
24180
  return {
@@ -24104,15 +24319,15 @@ function resolveRunRuby(segment, baseFontSizePx, blockFont, baseColor) {
24104
24319
  return void 0;
24105
24320
  }
24106
24321
  const authoredFamily = segment.rubyStyle?.fontFamily ?? segment.style?.fontFamily;
24107
- const baseSize = Number.isFinite(baseFontSizePx) ? baseFontSizePx : chunkAIL3BNZS_cjs.DEFAULT_TEXT_FONT_SIZE;
24322
+ const baseSize = Number.isFinite(baseFontSizePx) ? baseFontSizePx : chunkYRHK45AB_cjs.DEFAULT_TEXT_FONT_SIZE;
24108
24323
  const style = {
24109
24324
  fontSize: `${segment.rubyFontSize ?? baseSize * RUBY_SIZE_RATIO}px`,
24110
- fontFamily: authoredFamily ? pptx.getSubstituteFontFamily(authoredFamily) : blockFont.fontFamily ?? chunkAIL3BNZS_cjs.DEFAULT_FONT_FAMILY,
24325
+ fontFamily: authoredFamily ? pptx.getSubstituteFontFamily(authoredFamily) : blockFont.fontFamily ?? chunkYRHK45AB_cjs.DEFAULT_FONT_FAMILY,
24111
24326
  textAlign: rubyTextAlign(segment.rubyAlignment)
24112
24327
  };
24113
24328
  const color = segment.rubyStyle?.color;
24114
24329
  if (color) {
24115
- style.color = chunkAIL3BNZS_cjs.normalizeHexColor(color, baseColor);
24330
+ style.color = chunkYRHK45AB_cjs.normalizeHexColor(color, baseColor);
24116
24331
  }
24117
24332
  return { text: text3, style };
24118
24333
  }
@@ -24184,7 +24399,7 @@ function buildParagraphRuns(input) {
24184
24399
  bodyFontSizeRaw,
24185
24400
  fontScale
24186
24401
  );
24187
- const fallbackFontSize = strutFontSize ?? blockFont.fontSizePx ?? chunkAIL3BNZS_cjs.DEFAULT_TEXT_FONT_SIZE;
24402
+ const fallbackFontSize = strutFontSize ?? blockFont.fontSizePx ?? chunkYRHK45AB_cjs.DEFAULT_TEXT_FONT_SIZE;
24188
24403
  equationStyle.fontSize = `${fallbackFontSize}px`;
24189
24404
  }
24190
24405
  runs.push({
@@ -24221,7 +24436,7 @@ function buildParagraphRuns(input) {
24221
24436
  });
24222
24437
  const ruby = resolveRunRuby(
24223
24438
  seg,
24224
- typeof seg.style?.fontSize === "number" ? seg.style.fontSize : blockFont.fontSizePx ?? chunkAIL3BNZS_cjs.DEFAULT_TEXT_FONT_SIZE,
24439
+ typeof seg.style?.fontSize === "number" ? seg.style.fontSize : blockFont.fontSizePx ?? chunkYRHK45AB_cjs.DEFAULT_TEXT_FONT_SIZE,
24225
24440
  blockFont,
24226
24441
  typeof style.color === "string" ? style.color : void 0
24227
24442
  );
@@ -24272,39 +24487,6 @@ function buildParagraphRuns(input) {
24272
24487
  return runs;
24273
24488
  }
24274
24489
 
24275
- // src/pptx/render/paragraph-spacing.ts
24276
- var PT_TO_PX = 96 / 72;
24277
- function resolveParagraphSpacing(input) {
24278
- const {
24279
- paraProps,
24280
- bodyStyle,
24281
- isFirst = false,
24282
- isLast = false,
24283
- spaceFirstLast = false,
24284
- lineSpacingReduction
24285
- } = input;
24286
- const out = {};
24287
- const before = paraProps?.paragraphSpacingBefore ?? bodyStyle?.paragraphSpacingBefore;
24288
- const effectiveBefore = typeof before === "number" && before > 0 && (!isFirst || spaceFirstLast) ? before : 0;
24289
- const after = paraProps?.paragraphSpacingAfter ?? bodyStyle?.paragraphSpacingAfter;
24290
- const effectiveAfter = typeof after === "number" && after > 0 && (!isLast || spaceFirstLast) ? after : 0;
24291
- const combinedAfter = effectiveBefore + effectiveAfter;
24292
- if (combinedAfter > 0) {
24293
- out.spaceAfterPx = combinedAfter;
24294
- }
24295
- const hasOwnLineSpacing = paraProps?.lineSpacing !== void 0 || paraProps?.lineSpacingExactPt !== void 0;
24296
- const lineSource = hasOwnLineSpacing ? paraProps : bodyStyle;
24297
- const exactPt = lineSource?.lineSpacingExactPt;
24298
- const multiplier = lineSource?.lineSpacing;
24299
- if (typeof exactPt === "number" && exactPt > 0) {
24300
- out.lineHeight = `${exactPt * PT_TO_PX}px`;
24301
- } else if (typeof multiplier === "number" && multiplier > 0) {
24302
- const proportional = proportionalLineHeight(multiplier, bodyStyle?.compatibleLineSpacing);
24303
- out.lineHeight = typeof lineSpacingReduction === "number" && lineSpacingReduction > 0 ? proportional * (1 - lineSpacingReduction) : proportional;
24304
- }
24305
- return out;
24306
- }
24307
-
24308
24490
  // src/pptx/render/paragraph-trailing-space.ts
24309
24491
  function alignsTrailingEdge(cssAlign, rtl) {
24310
24492
  if (cssAlign === "center" || cssAlign === "justify") {
@@ -24337,44 +24519,6 @@ function trimParagraphTrailingSpaces(runs, cssAlign, rtl) {
24337
24519
  return changed ? out : runs;
24338
24520
  }
24339
24521
 
24340
- // src/pptx/render/text-paragraph-style.ts
24341
- function resolveParagraphRtl(paraSegments, elementRtl) {
24342
- for (const entry5 of paraSegments) {
24343
- const paraRtl = entry5.segment.paragraphProperties?.rtl;
24344
- if (paraRtl !== void 0) {
24345
- return paraRtl;
24346
- }
24347
- }
24348
- for (const entry5 of paraSegments) {
24349
- const segRtl = entry5.segment.style?.rtl;
24350
- if (segRtl !== void 0) {
24351
- return segRtl;
24352
- }
24353
- }
24354
- return elementRtl;
24355
- }
24356
- function resolveParagraphAlign(paraSegments, elementAlign) {
24357
- for (const entry5 of paraSegments) {
24358
- const segAlign = entry5.segment.style?.align;
24359
- if (segAlign !== void 0) {
24360
- return segAlign;
24361
- }
24362
- }
24363
- return elementAlign;
24364
- }
24365
- function resolveCssTextAlign(align, isRtl) {
24366
- if (align === "justLow" || align === "dist" || align === "thaiDist") {
24367
- return "justify";
24368
- }
24369
- if (align) {
24370
- return align;
24371
- }
24372
- return isRtl ? "right" : void 0;
24373
- }
24374
- function resolveTextAlignLast(align) {
24375
- return align === "dist" ? "justify" : void 0;
24376
- }
24377
-
24378
24522
  // src/pptx/render/text-paragraphs.ts
24379
24523
  function buildParagraphs(element, fieldContext, segmentOverrides, options) {
24380
24524
  if (!pptx.hasTextProperties(element)) {
@@ -24386,8 +24530,8 @@ function buildParagraphs(element, fieldContext, segmentOverrides, options) {
24386
24530
  }
24387
24531
  const fontScale = resolveAutoFitFontScale(element.textStyle);
24388
24532
  const blockFont = {
24389
- fontFamily: element.textStyle?.fontFamily ? pptx.getSubstituteFontFamily(element.textStyle.fontFamily) : chunkAIL3BNZS_cjs.DEFAULT_FONT_FAMILY,
24390
- fontSizePx: (element.textStyle?.fontSize || chunkAIL3BNZS_cjs.DEFAULT_TEXT_FONT_SIZE) * fontScale
24533
+ fontFamily: element.textStyle?.fontFamily ? pptx.getSubstituteFontFamily(element.textStyle.fontFamily) : chunkYRHK45AB_cjs.DEFAULT_FONT_FAMILY,
24534
+ fontSizePx: (element.textStyle?.fontSize || chunkYRHK45AB_cjs.DEFAULT_TEXT_FONT_SIZE) * fontScale
24391
24535
  };
24392
24536
  const blockScriptStyle = element.textStyle;
24393
24537
  const tabStops = element.textStyle?.tabStops;
@@ -27340,17 +27484,17 @@ function hasItalicRuns(element) {
27340
27484
  );
27341
27485
  }
27342
27486
  function buildTextBlockStyle(element, options = {}) {
27343
- const fallbackColor = options.fallbackColor ?? chunkAIL3BNZS_cjs.DEFAULT_TEXT_COLOR;
27487
+ const fallbackColor = options.fallbackColor ?? chunkYRHK45AB_cjs.DEFAULT_TEXT_COLOR;
27344
27488
  if (!pptx.hasTextProperties(element)) {
27345
27489
  return { color: fallbackColor };
27346
27490
  }
27347
27491
  const ts = element.textStyle;
27348
27492
  const italic = hasItalicRuns(element);
27349
27493
  const isRtl = ts?.rtl === true;
27350
- const bodyTop = ts?.bodyInsetTop ?? chunkAIL3BNZS_cjs.DEFAULT_BODY_INSET_TB_PX;
27351
- const bodyBottom = ts?.bodyInsetBottom ?? chunkAIL3BNZS_cjs.DEFAULT_BODY_INSET_TB_PX;
27352
- const bodyLeft = ts?.bodyInsetLeft ?? chunkAIL3BNZS_cjs.DEFAULT_BODY_INSET_LR_PX;
27353
- const bodyRight = ts?.bodyInsetRight ?? chunkAIL3BNZS_cjs.DEFAULT_BODY_INSET_LR_PX;
27494
+ const bodyTop = ts?.bodyInsetTop ?? chunkYRHK45AB_cjs.DEFAULT_BODY_INSET_TB_PX;
27495
+ const bodyBottom = ts?.bodyInsetBottom ?? chunkYRHK45AB_cjs.DEFAULT_BODY_INSET_TB_PX;
27496
+ const bodyLeft = ts?.bodyInsetLeft ?? chunkYRHK45AB_cjs.DEFAULT_BODY_INSET_LR_PX;
27497
+ const bodyRight = ts?.bodyInsetRight ?? chunkYRHK45AB_cjs.DEFAULT_BODY_INSET_LR_PX;
27354
27498
  const hasParagraphIndents = (element.paragraphIndents?.length ?? 0) > 0;
27355
27499
  const bodyIndent = hasParagraphIndents ? 0 : ts?.paragraphIndent || 0;
27356
27500
  const bodyMarginLeft = hasParagraphIndents ? 0 : ts?.paragraphMarginLeft || 0;
@@ -27379,17 +27523,17 @@ function buildTextBlockStyle(element, options = {}) {
27379
27523
  style.transformOrigin = "center";
27380
27524
  }
27381
27525
  }
27382
- style.color = ts?.hyperlink ? chunkAIL3BNZS_cjs.normalizeHexColor(ts?.color, chunkAIL3BNZS_cjs.HYPERLINK_COLOR) : chunkAIL3BNZS_cjs.normalizeHexColor(ts?.color, fallbackColor);
27526
+ style.color = ts?.hyperlink ? chunkYRHK45AB_cjs.normalizeHexColor(ts?.color, chunkYRHK45AB_cjs.HYPERLINK_COLOR) : chunkYRHK45AB_cjs.normalizeHexColor(ts?.color, fallbackColor);
27383
27527
  if (!hasTextSegments && ts?.highlightColor) {
27384
- style.backgroundColor = chunkAIL3BNZS_cjs.normalizeHexColor(ts.highlightColor, void 0);
27528
+ style.backgroundColor = chunkYRHK45AB_cjs.normalizeHexColor(ts.highlightColor, void 0);
27385
27529
  }
27386
27530
  style.textAlign = resolveCssTextAlign(ts?.align, isRtl) ?? "left";
27387
27531
  style.direction = toCssVerticalDirection(ts?.textDirection) ?? (isRtl ? "rtl" : bodyLayoutStyle?.direction ?? "ltr");
27388
27532
  if (isRtl) {
27389
27533
  style.unicodeBidi = "plaintext";
27390
27534
  }
27391
- style.fontSize = ts?.fontSize || chunkAIL3BNZS_cjs.DEFAULT_TEXT_FONT_SIZE;
27392
- style.fontFamily = ts?.fontFamily ? pptx.getSubstituteFontFamily(ts.fontFamily, pptx.parsePanoseString(ts.latinFontPanose)) : chunkAIL3BNZS_cjs.DEFAULT_FONT_FAMILY;
27535
+ style.fontSize = ts?.fontSize || chunkYRHK45AB_cjs.DEFAULT_TEXT_FONT_SIZE;
27536
+ style.fontFamily = ts?.fontFamily ? pptx.getSubstituteFontFamily(ts.fontFamily, pptx.parsePanoseString(ts.latinFontPanose)) : chunkYRHK45AB_cjs.DEFAULT_FONT_FAMILY;
27393
27537
  style.fontWeight = ts?.bold ? 700 : 400;
27394
27538
  style.fontStyle = ts?.italic ? "italic" : "normal";
27395
27539
  style.textDecorationLine = decorations.length > 0 ? decorations.join(" ") : "none";
@@ -27429,7 +27573,7 @@ function buildTextBlockStyle(element, options = {}) {
27429
27573
  text: element.text ?? "",
27430
27574
  width: element.width,
27431
27575
  height: element.height,
27432
- defaultFontSize: chunkAIL3BNZS_cjs.DEFAULT_TEXT_FONT_SIZE
27576
+ defaultFontSize: chunkYRHK45AB_cjs.DEFAULT_TEXT_FONT_SIZE
27433
27577
  });
27434
27578
  if (autoFit.fontSize !== void 0) {
27435
27579
  style.fontSize = autoFit.fontSize;
@@ -27437,7 +27581,7 @@ function buildTextBlockStyle(element, options = {}) {
27437
27581
  if (autoFit.lineHeight !== void 0) {
27438
27582
  style.lineHeight = autoFit.lineHeight;
27439
27583
  }
27440
- const fontSizePx = typeof style.fontSize === "number" ? style.fontSize : chunkAIL3BNZS_cjs.DEFAULT_TEXT_FONT_SIZE;
27584
+ const fontSizePx = typeof style.fontSize === "number" ? style.fontSize : chunkYRHK45AB_cjs.DEFAULT_TEXT_FONT_SIZE;
27441
27585
  const lineHeightPx = lineHeightToPx(fontSizePx, style.lineHeight);
27442
27586
  const contentHeightPx = element.height - style.paddingTop - style.paddingBottom;
27443
27587
  Object.assign(style, resolveVertOverflowEllipsisStyle(ts, contentHeightPx, lineHeightPx));
@@ -30831,9 +30975,9 @@ function normalizeArrow(a) {
30831
30975
  function buildConnectorGeometry(element, zIndex, routing) {
30832
30976
  const ss = pptx.hasShapeProperties(element) ? element.shapeStyle : void 0;
30833
30977
  const strokeWidth = Math.max(0, ss?.strokeWidth ?? 2);
30834
- const strokeColor = ss?.strokeColor ?? chunkAIL3BNZS_cjs.DEFAULT_STROKE_COLOR;
30978
+ const strokeColor = ss?.strokeColor ?? chunkYRHK45AB_cjs.DEFAULT_STROKE_COLOR;
30835
30979
  const strokeOpacity = ss?.strokeOpacity ?? 1;
30836
- const dashArray = chunkAIL3BNZS_cjs.buildDashArray(ss?.strokeDash, strokeWidth, ss?.customDashSegments);
30980
+ const dashArray = chunkYRHK45AB_cjs.buildDashArray(ss?.strokeDash, strokeWidth, ss?.customDashSegments);
30837
30981
  const strokeLinecap = svgLineCap(ss?.lineCap);
30838
30982
  const compoundOffsets = getCompoundLineOffsets(ss?.compoundLine, strokeWidth);
30839
30983
  const compoundWidths = getCompoundLineWidths(ss?.compoundLine, strokeWidth);
@@ -37525,7 +37669,7 @@ function drawingShapeMeshOpacity(shape) {
37525
37669
  // src/pptx/render/svg-text-lines.ts
37526
37670
  var LINE_HEIGHT_RATIO = 1.2;
37527
37671
  function centeredSvgTextLines(text3, fontSize, options = {}) {
37528
- const lines = options.maxWidth !== void 0 ? chunkAIL3BNZS_cjs.wrapTextByEstimatedWidth(text3, options.maxWidth, fontSize) : text3.split("\n").filter((line4) => line4.length > 0);
37672
+ const lines = options.maxWidth !== void 0 ? chunkYRHK45AB_cjs.wrapTextByEstimatedWidth(text3, options.maxWidth, fontSize) : text3.split("\n").filter((line4) => line4.length > 0);
37529
37673
  const centerY = options.centerY ?? 0;
37530
37674
  if (lines.length === 0) {
37531
37675
  return [{ text: "", y: centerY }];
@@ -38322,7 +38466,7 @@ function buildObliqueLabels(layout, input) {
38322
38466
  const { w, h, d } = layout.box;
38323
38467
  const span = layout.range.max - layout.range.min;
38324
38468
  const fontSize = input.fontSize;
38325
- for (const v of chunkAIL3BNZS_cjs.axisTickValues({ ...layout.range, span })) {
38469
+ for (const v of chunkYRHK45AB_cjs.axisTickValues({ ...layout.range, span })) {
38326
38470
  const p = (v - layout.range.min) * layout.valueScale;
38327
38471
  if (layout.horizontal) {
38328
38472
  const at = screen2(layout, p, 0, 0);
@@ -38445,7 +38589,7 @@ function dataExtent(chartData, grouping, nCat) {
38445
38589
  function valueRange(chartData, grouping, nCat, valueLengthPx) {
38446
38590
  const axis = chartData.axes?.find((a) => a.axisType === "valAx");
38447
38591
  const [lo, hi] = dataExtent(chartData, grouping, nCat);
38448
- const auto = chunkAIL3BNZS_cjs.niceValueAxisBounds(lo, hi, chunkAIL3BNZS_cjs.axisTargetIntervals(valueLengthPx), 0);
38592
+ const auto = chunkYRHK45AB_cjs.niceValueAxisBounds(lo, hi, chunkYRHK45AB_cjs.axisTargetIntervals(valueLengthPx), 0);
38449
38593
  const min = typeof axis?.min === "number" ? axis.min : auto.min;
38450
38594
  let max = typeof axis?.max === "number" ? axis.max : auto.max;
38451
38595
  if (max <= min) {
@@ -38475,16 +38619,16 @@ function computeObliqueBarLayout(element, vm) {
38475
38619
  const rows = grouping === "standard" ? nSer : 1;
38476
38620
  const labelFont = vm.axisLabels[0]?.fontSize ?? 16;
38477
38621
  const catLabels = chartData.categories.length > 0 ? chartData.categories : Array.from({ length: nCat }, (_, i) => String(i + 1));
38478
- const widest = (texts) => texts.reduce((m, t) => Math.max(m, chunkAIL3BNZS_cjs.estimateTextWidth(t, labelFont)), 0);
38622
+ const widest = (texts) => texts.reduce((m, t) => Math.max(m, chunkYRHK45AB_cjs.estimateTextWidth(t, labelFont)), 0);
38479
38623
  const top = vm.title ? TOP_WITH_TITLE : TOP_NO_TITLE;
38480
38624
  const hasBottomLegend = chartData.style?.hasLegend !== false && (chartData.style?.legendPosition ?? "b") === "b";
38481
38625
  const bottom = vm.svgHeight - (hasBottomLegend ? BOTTOM_WITH_LEGEND : BOTTOM_NO_LEGEND);
38482
38626
  const regionH = Math.max(1, bottom - top);
38483
38627
  const provisional = valueRange(chartData, grouping, nCat, regionH);
38484
- const valueTexts = chunkAIL3BNZS_cjs.axisTickValues({
38628
+ const valueTexts = chunkYRHK45AB_cjs.axisTickValues({
38485
38629
  ...provisional,
38486
38630
  span: provisional.max - provisional.min
38487
- }).map((v) => chunkCJU4P5FT_cjs.formatValueLabel(chartData, grouping, v));
38631
+ }).map((v) => chunkSTKGUT5S_cjs.formatValueLabel(chartData, grouping, v));
38488
38632
  const leftBand = (horizontal ? widest(catLabels) : widest(valueTexts)) + (horizontal ? OBLIQUE_CATEGORY_LABEL_GAP : OBLIQUE_VALUE_LABEL_GAP);
38489
38633
  const seriesLabelW = grouping === "standard" && !horizontal ? widest(chartData.series.map((s) => s.name)) : 0;
38490
38634
  const seriesOverhang = (depth2) => seriesLabelW > 0 ? Math.max(0, OBLIQUE_CATEGORY_LABEL_GAP + seriesLabelW - depth2 * shear.x / (2 * rows)) : 0;
@@ -38540,13 +38684,13 @@ function computeObliqueBarLayout(element, vm) {
38540
38684
  gridlines: [],
38541
38685
  labels: []
38542
38686
  };
38543
- layout.bars = chunkCJU4P5FT_cjs.buildBars(chartData, vm, layout, { nCat, slots, rows, gapWidth, gapDepth });
38544
- layout.gridlines = chunkCJU4P5FT_cjs.buildGridlines(layout);
38687
+ layout.bars = chunkSTKGUT5S_cjs.buildBars(chartData, vm, layout, { nCat, slots, rows, gapWidth, gapDepth });
38688
+ layout.gridlines = chunkSTKGUT5S_cjs.buildGridlines(layout);
38545
38689
  layout.labels = buildObliqueLabels(layout, {
38546
38690
  fontSize: labelFont,
38547
38691
  categories: catLabels,
38548
38692
  seriesNames: chartData.series.map((s) => s.name),
38549
- valueText: (v) => chunkCJU4P5FT_cjs.formatValueLabel(chartData, grouping, v)
38693
+ valueText: (v) => chunkSTKGUT5S_cjs.formatValueLabel(chartData, grouping, v)
38550
38694
  });
38551
38695
  return layout;
38552
38696
  }
@@ -38559,7 +38703,7 @@ function buildPerspGridlines(box, range, horizontal) {
38559
38703
  { from: [w, 0, 0], to: [w, 0, d] }
38560
38704
  ];
38561
38705
  const span = range.max - range.min;
38562
- for (const v of chunkAIL3BNZS_cjs.axisTickValues({ ...range, span })) {
38706
+ for (const v of chunkYRHK45AB_cjs.axisTickValues({ ...range, span })) {
38563
38707
  const t = (v - range.min) / span;
38564
38708
  if (horizontal) {
38565
38709
  const x = t * w;
@@ -38585,11 +38729,11 @@ function buildPerspLabels(layout, input) {
38585
38729
  const span = range.max - range.min;
38586
38730
  const labels = [];
38587
38731
  const fontSize = input.fontSize;
38588
- for (const v of chunkAIL3BNZS_cjs.axisTickValues({ ...range, span })) {
38732
+ for (const v of chunkYRHK45AB_cjs.axisTickValues({ ...range, span })) {
38589
38733
  const t = (v - range.min) / span;
38590
- const text3 = input.percent ? `${Math.round(v * 100)}%` : chunkAIL3BNZS_cjs.formatAxisValueWithUnits(v, input.valueAxis);
38734
+ const text3 = input.percent ? `${Math.round(v * 100)}%` : chunkYRHK45AB_cjs.formatAxisValueWithUnits(v, input.valueAxis);
38591
38735
  if (layout.horizontal) {
38592
- const at = chunkCJU4P5FT_cjs.perspToScreen(view, [t * w, 0, 0]);
38736
+ const at = chunkSTKGUT5S_cjs.perspToScreen(view, [t * w, 0, 0]);
38593
38737
  labels.push({
38594
38738
  role: "value",
38595
38739
  text: text3,
@@ -38599,7 +38743,7 @@ function buildPerspLabels(layout, input) {
38599
38743
  fontSize
38600
38744
  });
38601
38745
  } else {
38602
- const at = chunkCJU4P5FT_cjs.perspToScreen(view, [0, t * h, 0]);
38746
+ const at = chunkSTKGUT5S_cjs.perspToScreen(view, [0, t * h, 0]);
38603
38747
  labels.push({ role: "value", text: text3, x: at.x - VALUE_GAP2, y: at.y, anchor: "end", fontSize });
38604
38748
  }
38605
38749
  }
@@ -38609,7 +38753,7 @@ function buildPerspLabels(layout, input) {
38609
38753
  return;
38610
38754
  }
38611
38755
  if (layout.horizontal) {
38612
- const at2 = chunkCJU4P5FT_cjs.perspToScreen(view, [0, pos, 0]);
38756
+ const at2 = chunkSTKGUT5S_cjs.perspToScreen(view, [0, pos, 0]);
38613
38757
  labels.push({
38614
38758
  role: "category",
38615
38759
  text: text3,
@@ -38620,7 +38764,7 @@ function buildPerspLabels(layout, input) {
38620
38764
  });
38621
38765
  return;
38622
38766
  }
38623
- const at = chunkCJU4P5FT_cjs.perspToScreen(view, [pos, 0, 0]);
38767
+ const at = chunkSTKGUT5S_cjs.perspToScreen(view, [pos, 0, 0]);
38624
38768
  labels.push({
38625
38769
  role: "category",
38626
38770
  text: text3,
@@ -38633,7 +38777,7 @@ function buildPerspLabels(layout, input) {
38633
38777
  const rows = input.seriesNames.length;
38634
38778
  input.seriesNames.forEach((text3, s) => {
38635
38779
  const z = layout.kind === "surface" ? rows > 1 ? s / (rows - 1) * d : d / 2 : (s + 0.5) / rows * d;
38636
- const at = chunkCJU4P5FT_cjs.perspToScreen(view, [w, 0, z]);
38780
+ const at = chunkSTKGUT5S_cjs.perspToScreen(view, [w, 0, z]);
38637
38781
  labels.push({
38638
38782
  role: "series",
38639
38783
  text: text3,
@@ -38739,16 +38883,16 @@ function computePerspChartLayout(element, vm, options = {}) {
38739
38883
  const valueExtent = horizontal ? 1 : baseHeight * heightScale;
38740
38884
  const catExtent = horizontal ? HORIZONTAL_CATEGORY_EXTENT * heightScale : 1;
38741
38885
  const box = horizontal ? { w: valueExtent, h: catExtent, d } : { w: 1, h: valueExtent, d };
38742
- const camera = options.oblique ? chunkCJU4P5FT_cjs.perspObliqueCameraFor(box, view3D?.rotX ?? 15, view3D?.rotY ?? 20) : chunkCJU4P5FT_cjs.perspCameraFor(box, view3D?.rotX ?? 15, view3D?.rotY ?? 20, view3D?.perspective ?? void 0);
38886
+ const camera = options.oblique ? chunkSTKGUT5S_cjs.perspObliqueCameraFor(box, view3D?.rotX ?? 15, view3D?.rotY ?? 20) : chunkSTKGUT5S_cjs.perspCameraFor(box, view3D?.rotX ?? 15, view3D?.rotY ?? 20, view3D?.perspective ?? void 0);
38743
38887
  const hasLegend = chartData.style?.hasLegend !== false && (chartData.style?.legendPosition ?? "b") === "b";
38744
- const view = chunkCJU4P5FT_cjs.fitPerspView(camera, {
38888
+ const view = chunkSTKGUT5S_cjs.fitPerspView(camera, {
38745
38889
  left: RECT_LEFT,
38746
38890
  right: vm.svgWidth - (rows > 1 ? RECT_RIGHT_WITH_SERIES : RECT_RIGHT_NO_SERIES),
38747
38891
  top: vm.title ? RECT_TOP_WITH_TITLE : RECT_TOP_NO_TITLE,
38748
38892
  bottom: vm.svgHeight - (hasLegend ? RECT_BOTTOM_WITH_LEGEND : RECT_BOTTOM_NO_LEGEND)
38749
38893
  });
38750
38894
  const [lo, hi] = dataExtent2(chartData, grouping, nCat);
38751
- const auto = chunkAIL3BNZS_cjs.niceValueAxisBounds(lo, hi, chunkAIL3BNZS_cjs.axisTargetIntervals(view.focal * valueExtent), 0);
38895
+ const auto = chunkYRHK45AB_cjs.niceValueAxisBounds(lo, hi, chunkYRHK45AB_cjs.axisTargetIntervals(view.focal * valueExtent), 0);
38752
38896
  const min = typeof valAx?.min === "number" ? valAx.min : auto.min;
38753
38897
  let max = typeof valAx?.max === "number" ? valAx.max : auto.max;
38754
38898
  if (max <= min) {
@@ -38840,7 +38984,7 @@ function buildBarGeometry(element, vm) {
38840
38984
  }
38841
38985
  var PERSP_BOX_TYPES = /* @__PURE__ */ new Set(["line3D", "area3D", "surface", "bar3D"]);
38842
38986
  function buildPieGeometry(element, vm) {
38843
- const layout = chunkCJU4P5FT_cjs.computePieChartLayout(element, chunkCJU4P5FT_cjs.widenPieViewModel(vm, element));
38987
+ const layout = chunkSTKGUT5S_cjs.computePieChartLayout(element, chunkSTKGUT5S_cjs.widenPieViewModel(vm, element));
38844
38988
  return layout ? { kind: "pie", layout } : null;
38845
38989
  }
38846
38990
  function buildPerspGeometry(element, vm, oblique) {
@@ -38860,7 +39004,7 @@ function buildChart3DSpecForElement(element) {
38860
39004
  if (!chartData || !is3DChartType(chartType)) {
38861
39005
  return null;
38862
39006
  }
38863
- const vm = chunkAIL3BNZS_cjs.buildChartViewModel(element);
39007
+ const vm = chunkYRHK45AB_cjs.buildChartViewModel(element);
38864
39008
  const projection = resolveChart3DProjection(chartType, chartData.view3D);
38865
39009
  const geometry = chartType === "bar3D" && projection.mode === "oblique" ? buildBarGeometry(element, vm) : PERSP_BOX_TYPES.has(chartType) && (projection.mode === "perspective" || chartType !== "bar3D") ? buildPerspGeometry(element, vm, projection.mode === "oblique") : chartType === "pie3D" ? buildPieGeometry(element, vm) : null;
38866
39010
  if (!geometry) {
@@ -52958,7 +53102,7 @@ function axisTitle(current, show) {
52958
53102
  return show ? current || AXIS_TITLE : void 0;
52959
53103
  }
52960
53104
  function applyChartQuickLayout(chartData, layout) {
52961
- const withGrid = patchChartData(chartData, chunkAIL3BNZS_cjs.chartGridlinesPatch(chartData, layout.majorGridlines));
53105
+ const withGrid = patchChartData(chartData, chunkYRHK45AB_cjs.chartGridlinesPatch(chartData, layout.majorGridlines));
52962
53106
  const axes = (withGrid.axes ?? []).map((axis) => {
52963
53107
  if (axis.axisType === "valAx") {
52964
53108
  return {
@@ -53012,7 +53156,7 @@ function matchesLayout(chartData, layout) {
53012
53156
  const legend = style.hasLegend ? style.legendPosition ?? "r" : null;
53013
53157
  const isBar = chartData.chartType === "bar" || chartData.chartType === "bar3D";
53014
53158
  const barMatches = !isBar || (chartData.barGapWidth ?? 150) === layout.gapWidth && (chartData.barOverlap ?? 0) === layout.overlap;
53015
- return barMatches && Boolean(style.hasTitle) === layout.title && legend === layout.legend && Boolean(style.hasDataLabels) === layout.dataLabels && Boolean(chartData.dataTable) === layout.dataTable && Boolean(catAxis?.titleText) === layout.catAxisTitle && Boolean(valAxis?.titleText) === layout.valAxisTitle && chunkAIL3BNZS_cjs.chartGridlinesState(chartData) === layout.majorGridlines && Boolean(valAxis?.minorGridlines) === layout.minorGridlines && !valAxis?.deleted === layout.valueAxis;
53159
+ return barMatches && Boolean(style.hasTitle) === layout.title && legend === layout.legend && Boolean(style.hasDataLabels) === layout.dataLabels && Boolean(chartData.dataTable) === layout.dataTable && Boolean(catAxis?.titleText) === layout.catAxisTitle && Boolean(valAxis?.titleText) === layout.valAxisTitle && chunkYRHK45AB_cjs.chartGridlinesState(chartData) === layout.majorGridlines && Boolean(valAxis?.minorGridlines) === layout.minorGridlines && !valAxis?.deleted === layout.valueAxis;
53016
53160
  }
53017
53161
  var CHART_QUICK_LAYOUT_GALLERY = {
53018
53162
  build(ctx) {
@@ -58461,7 +58605,7 @@ function isSeriesUsingSecondaryAxis(chartData, seriesIndex) {
58461
58605
  if (!series) {
58462
58606
  return false;
58463
58607
  }
58464
- return chunkAIL3BNZS_cjs.isSeriesOnSecondaryAxis(series, chartData.axes);
58608
+ return chunkYRHK45AB_cjs.isSeriesOnSecondaryAxis(series, chartData.axes);
58465
58609
  }
58466
58610
  function resolveSecondaryAxisId(chartData, useSecondary) {
58467
58611
  const axPos = useSecondary ? "r" : "l";
@@ -58989,8 +59133,8 @@ async function embedImagesOnClone(root) {
58989
59133
  }
58990
59134
 
58991
59135
  // src/pptx/render/foreign-object-svg-document.ts
58992
- function escapeAttr(value) {
58993
- return value.replace(/&/gu, "&amp;").replace(/"/gu, "&quot;");
59136
+ function cssCdata(css) {
59137
+ return `<![CDATA[${css.replaceAll("]]>", "]]]]><![CDATA[>")}]]>`;
58994
59138
  }
58995
59139
  async function buildForeignObjectSvgBody(element, doc, options) {
58996
59140
  const {
@@ -58999,19 +59143,19 @@ async function buildForeignObjectSvgBody(element, doc, options) {
58999
59143
  backgroundColor,
59000
59144
  readComputedStyle = (el) => window.getComputedStyle(el)
59001
59145
  } = options;
59002
- await chunkYHA6XAB3_cjs.settleThreeViews(element);
59146
+ await chunkXIQMFSNG_cjs.settleThreeViews(element);
59003
59147
  const clone = element.cloneNode(true);
59004
59148
  inlineComputedStylesOnClone(element, clone, readComputedStyle);
59005
- chunkYHA6XAB3_cjs.snapshotThreeViewsIntoClone(element, clone);
59006
- chunkYHA6XAB3_cjs.prepareExportClone(clone);
59149
+ chunkXIQMFSNG_cjs.snapshotThreeViewsIntoClone(element, clone);
59150
+ chunkXIQMFSNG_cjs.prepareExportClone(clone);
59007
59151
  const [{ allEmbedded: imagesEmbedded }, externalFonts] = await Promise.all([
59008
59152
  embedImagesOnClone(clone),
59009
59153
  collectExternalFontFaceCss(doc, fetchAsDataUrl)
59010
59154
  ]);
59011
59155
  const allEmbedded = imagesEmbedded && externalFonts.allEmbedded;
59012
59156
  const fontFaceCss = [collectFontFaceCss(doc), externalFonts.css].filter(Boolean).join("\n\n");
59013
- const defs = fontFaceCss ? `<defs><style type="text/css"><![CDATA[${fontFaceCss}]]></style></defs>` : "";
59014
- const bgRect = backgroundColor ? `<rect width="${width}" height="${height}" fill="${escapeAttr(backgroundColor)}" />` : "";
59157
+ const defs = fontFaceCss ? `<defs><style type="text/css">${cssCdata(fontFaceCss)}</style></defs>` : "";
59158
+ const bgRect = backgroundColor ? `<rect width="${width}" height="${height}" fill="${escapeSvgAttr(backgroundColor)}" />` : "";
59015
59159
  const bodyMarkup = [
59016
59160
  defs,
59017
59161
  bgRect,
@@ -64430,14 +64574,16 @@ function applySorterAction(state, slides, action, active2) {
64430
64574
  var VIEWER_ROOT_OPTION_DEFAULTS = Object.freeze({
64431
64575
  initialSlide: 0,
64432
64576
  showToolbar: true,
64433
- showThumbnails: true
64577
+ showThumbnails: true,
64578
+ showCompatibilityToasts: true
64434
64579
  });
64435
64580
  function resolveViewerRootOptions(options) {
64436
64581
  const initialSlide = options?.initialSlide;
64437
64582
  return {
64438
64583
  initialSlide: typeof initialSlide === "number" && Number.isFinite(initialSlide) ? initialSlide : VIEWER_ROOT_OPTION_DEFAULTS.initialSlide,
64439
64584
  showToolbar: options?.showToolbar ?? VIEWER_ROOT_OPTION_DEFAULTS.showToolbar,
64440
- showThumbnails: options?.showThumbnails ?? VIEWER_ROOT_OPTION_DEFAULTS.showThumbnails
64585
+ showThumbnails: options?.showThumbnails ?? VIEWER_ROOT_OPTION_DEFAULTS.showThumbnails,
64586
+ showCompatibilityToasts: options?.showCompatibilityToasts ?? VIEWER_ROOT_OPTION_DEFAULTS.showCompatibilityToasts
64441
64587
  };
64442
64588
  }
64443
64589
  function resolveInitialSlideIndex(initialSlide, slideCount) {
@@ -65597,6 +65743,7 @@ var OFFICE_TOKENS = {
65597
65743
  "--office-launcher-height": "14px",
65598
65744
  "--office-tab-indicator-width": "2.5px",
65599
65745
  "--office-status-bar-height": "24px",
65746
+ "--office-status-bar-separator-opacity": "1",
65600
65747
  "--office-tab-height": "28px",
65601
65748
  "--office-tab-max-width": "220px",
65602
65749
  "--office-zoom-slider-width": "120px",
@@ -65646,6 +65793,8 @@ var OFFICE_TOKENS = {
65646
65793
  "--office-avatar-size": "48px",
65647
65794
  "--office-avatar-color": "var(--office-muted-foreground, #6b7280)",
65648
65795
  "--office-toast-width": "360px",
65796
+ "--office-comments-pane-width": "300px",
65797
+ "--office-comment-avatar-size": "24px",
65649
65798
  "--office-account-field-width": "320px",
65650
65799
  // Component: galleries
65651
65800
  "--office-gallery-trigger-height": "24px",
@@ -65664,6 +65813,8 @@ var OFFICE_TOKENS = {
65664
65813
  "--office-title-bar-mark-size": "20px",
65665
65814
  "--office-title-bar-mark-background": "var(--office-accent, #2563eb)",
65666
65815
  "--office-title-bar-mark-foreground": "var(--office-accent-foreground, #ffffff)",
65816
+ "--office-title-bar-name-foreground": "var(--office-title-bar-foreground, var(--office-foreground, #1f2937))",
65817
+ "--office-title-bar-result-selected": "var(--office-selected, #e5e7eb)",
65667
65818
  "--office-title-bar-name-max-width": "240px",
65668
65819
  "--office-title-bar-name-max-width-narrow": "140px",
65669
65820
  "--office-title-bar-search-max-width": "448px",
@@ -68169,7 +68320,7 @@ var OfficeUiSelect = class extends OfficeElement {
68169
68320
  var defineSelect = definer("office-ui-select", () => OfficeUiSelect);
68170
68321
 
68171
68322
  // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/chrome/status-bar.css?raw
68172
- var status_bar_default = ":host {\n display: flex;\n align-items: center;\n gap: var(--office-space-3);\n min-height: var(--office-status-bar-height);\n padding: 0 var(--office-space-2);\n font-size: var(--office-font-size-xs);\n background: var(--office-surface);\n color: var(--office-foreground);\n border-top: var(--office-border-width) solid var(--office-border);\n font-family: var(--office-font);\n}\n::slotted([slot='end']) {\n margin-inline-start: auto;\n}\n.bar {\n display: contents;\n}\n[hidden] {\n display: none !important;\n}\n:host([data-controlled]) {\n display: block;\n flex: none;\n padding: 0;\n gap: 0;\n}\n:host([data-controlled]) .bar {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: var(--office-space-1);\n width: 100%;\n min-height: var(--office-status-bar-height);\n padding: var(--office-space-0) var(--office-space-2);\n color: var(--office-muted-foreground);\n}\n:host([data-controlled]) ::slotted([slot='end']) {\n margin-inline-start: 0;\n}\n.items {\n display: flex;\n align-items: center;\n min-width: 0;\n}\n.item {\n flex: none;\n white-space: nowrap;\n}\n.item + .item::before {\n content: '';\n display: inline-block;\n width: var(--office-border-width);\n height: var(--office-space-3);\n margin: 0 var(--office-space-2);\n vertical-align: middle;\n background: var(--office-border);\n}\n.item.saving {\n color: var(--office-warning);\n}\n.item.error {\n color: var(--office-danger);\n}\n.spacer {\n flex: 1;\n}\n.toggles,\n.group {\n display: flex;\n align-items: center;\n gap: var(--office-space-0);\n}\n.sep {\n flex: none;\n width: var(--office-border-width);\n height: var(--office-space-3);\n margin: 0 var(--office-space-0);\n background: var(--office-border);\n}\n.bar button {\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--office-space-1);\n min-width: var(--office-control-height-xs);\n min-height: var(--office-control-height-xs);\n padding: var(--office-space-1);\n border: 0;\n border-radius: var(--office-radius-sm);\n background: transparent;\n color: inherit;\n font: inherit;\n cursor: pointer;\n touch-action: manipulation;\n}\n.bar button:hover {\n background: var(--office-selected);\n color: var(--office-foreground);\n}\n.bar button[aria-pressed='true'] {\n color: var(--office-accent);\n}\n.bar button:active {\n opacity: 0.8;\n}\n.bar button:focus-visible {\n outline: var(--office-focus-width) solid var(--office-ring);\n outline-offset: var(--office-focus-offset);\n}\n.bar svg {\n flex: none;\n width: var(--office-icon-size);\n height: var(--office-icon-size);\n fill: none;\n stroke: currentColor;\n stroke-width: var(--office-icon-stroke);\n stroke-linecap: round;\n stroke-linejoin: round;\n}\n.toggle svg,\n.zoom-step svg {\n width: var(--office-icon-size-sm);\n height: var(--office-icon-size-sm);\n}\n.zoom-fit {\n min-width: var(--office-zoom-value-width);\n font-variant-numeric: tabular-nums;\n}\n@media (max-width: 767px) {\n .narrow-hide,\n .toggle .label {\n display: none !important;\n }\n}\n@media (pointer: coarse) {\n .bar button {\n min-width: var(--office-target-size-touch);\n min-height: var(--office-target-size-touch);\n }\n}\n@media (forced-colors: active) {\n :host {\n background: Canvas;\n color: CanvasText;\n border-top-color: CanvasText;\n }\n .bar button {\n color: ButtonText;\n }\n .bar button:hover {\n background: Highlight;\n color: HighlightText;\n }\n .bar button[aria-pressed='true'] {\n border: var(--office-border-width) solid Highlight;\n }\n .bar button:focus-visible {\n outline-color: Highlight;\n }\n .sep,\n .item + .item::before {\n background: CanvasText;\n }\n}\n";
68323
+ var status_bar_default = ":host {\n display: flex;\n align-items: center;\n gap: var(--office-space-3);\n min-height: var(--office-status-bar-height);\n padding: 0 var(--office-space-2);\n font-size: var(--office-font-size-xs);\n background: var(--office-surface);\n color: var(--office-foreground);\n border-top: var(--office-border-width) solid var(--office-border);\n font-family: var(--office-font);\n}\n::slotted([slot='end']) {\n margin-inline-start: auto;\n}\n.bar {\n display: contents;\n}\n[hidden] {\n display: none !important;\n}\n:host([data-controlled]) {\n display: block;\n flex: none;\n padding: 0;\n gap: 0;\n}\n:host([data-controlled]) .bar {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: var(--office-space-1);\n width: 100%;\n min-height: var(--office-status-bar-height);\n padding: var(--office-space-0) var(--office-space-2);\n color: var(--office-muted-foreground);\n}\n:host([data-controlled]) ::slotted([slot='end']) {\n margin-inline-start: 0;\n}\n.items {\n display: flex;\n align-items: center;\n min-width: 0;\n}\n.item {\n flex: none;\n white-space: nowrap;\n}\n.item + .item::before {\n content: '';\n display: inline-block;\n width: var(--office-border-width);\n height: var(--office-space-3);\n margin: 0 var(--office-space-2);\n vertical-align: middle;\n background: var(--office-border);\n opacity: var(--office-status-bar-separator-opacity);\n}\n.item.saving {\n color: var(--office-warning);\n}\n.item.error {\n color: var(--office-danger);\n}\n.spacer {\n flex: 1;\n}\n.toggles,\n.group {\n display: flex;\n align-items: center;\n gap: var(--office-space-0);\n}\n.sep {\n flex: none;\n width: var(--office-border-width);\n height: var(--office-space-3);\n margin: 0 var(--office-space-0);\n background: var(--office-border);\n opacity: var(--office-status-bar-separator-opacity);\n}\n.bar button {\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--office-space-1);\n min-width: var(--office-control-height-xs);\n min-height: var(--office-control-height-xs);\n padding: var(--office-space-1);\n border: 0;\n border-radius: var(--office-radius-sm);\n background: transparent;\n color: inherit;\n font: inherit;\n cursor: pointer;\n touch-action: manipulation;\n}\n.bar button:hover {\n background: var(--office-selected);\n color: var(--office-foreground);\n}\n.bar button[aria-pressed='true'] {\n color: var(--office-accent);\n}\n.bar button:active {\n opacity: 0.8;\n}\n.bar button:focus-visible {\n outline: var(--office-focus-width) solid var(--office-ring);\n outline-offset: var(--office-focus-offset);\n}\n.bar svg {\n flex: none;\n width: var(--office-icon-size);\n height: var(--office-icon-size);\n fill: none;\n stroke: currentColor;\n stroke-width: var(--office-icon-stroke);\n stroke-linecap: round;\n stroke-linejoin: round;\n}\n.toggle svg,\n.zoom-step svg {\n width: var(--office-icon-size-sm);\n height: var(--office-icon-size-sm);\n}\n.zoom-fit {\n min-width: var(--office-zoom-value-width);\n font-variant-numeric: tabular-nums;\n}\n@media (max-width: 767px) {\n .narrow-hide,\n .toggle .label {\n display: none !important;\n }\n}\n@media (pointer: coarse) {\n .bar button {\n min-width: var(--office-target-size-touch);\n min-height: var(--office-target-size-touch);\n }\n}\n@media (forced-colors: active) {\n :host {\n background: Canvas;\n color: CanvasText;\n border-top-color: CanvasText;\n }\n .bar button {\n color: ButtonText;\n }\n .bar button:hover {\n background: Highlight;\n color: HighlightText;\n }\n .bar button[aria-pressed='true'] {\n border: var(--office-border-width) solid Highlight;\n }\n .bar button:focus-visible {\n outline-color: Highlight;\n }\n .sep,\n .item + .item::before {\n background: CanvasText;\n }\n}\n";
68173
68324
 
68174
68325
  // src/chrome/status-bar.ts
68175
68326
  var OfficeUiStatusBar = class extends OfficeElement {
@@ -68260,6 +68411,7 @@ var OfficeUiStatusBar = class extends OfficeElement {
68260
68411
  </span>
68261
68412
  <slot></slot>
68262
68413
  <span class="spacer" ?hidden=${!state}></span>
68414
+ <slot name="summary"></slot>
68263
68415
  <span class="toggles" ?hidden=${togglesHidden}>
68264
68416
  ${repeat_js.repeat(
68265
68417
  toggles,
@@ -68310,7 +68462,7 @@ function matchTitleBarCommands(search, query) {
68310
68462
  }
68311
68463
 
68312
68464
  // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/chrome/title-bar.css?raw
68313
- var title_bar_default = ":host {\n display: block;\n flex: none;\n}\n:host([data-empty]) {\n display: none !important;\n}\n[hidden] {\n display: none !important;\n}\n.bar {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: var(--office-space-1);\n width: 100%;\n height: var(--office-title-bar-height);\n padding: 0 var(--office-space-2);\n border-bottom: var(--office-border-width) solid var(--office-title-bar-border);\n background: var(--office-title-bar-background);\n color: var(--office-title-bar-foreground);\n font: var(--office-font-size-xs)/var(--office-line-height-tight) var(--office-font);\n user-select: none;\n}\n:host([placement='belowRibbon']) .bar {\n height: auto;\n min-height: var(--office-title-bar-below-height);\n padding-block: var(--office-space-0);\n}\n.mark {\n flex: none;\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--office-title-bar-mark-size);\n height: var(--office-title-bar-mark-size);\n border-radius: var(--office-radius-sm);\n background: var(--office-title-bar-mark-background);\n color: var(--office-title-bar-mark-foreground);\n font-size: var(--office-font-size-2xs);\n font-weight: var(--office-font-weight-bold);\n}\n.autosave {\n flex: none;\n display: flex;\n align-items: center;\n gap: var(--office-space-1-5);\n padding: 0 var(--office-space-0) 0 var(--office-space-1-5);\n white-space: nowrap;\n}\n.label,\n.dot,\n.status {\n color: var(--office-muted-foreground);\n white-space: nowrap;\n}\n.sep {\n flex: none;\n width: var(--office-border-width);\n height: var(--office-space-4);\n margin: 0 var(--office-space-1);\n background: var(--office-title-bar-border);\n}\n.qat {\n display: flex;\n align-items: center;\n gap: var(--office-space-0);\n min-width: 0;\n}\n.qat button,\n.results button {\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--office-space-1);\n min-width: var(--office-control-height-md);\n min-height: var(--office-control-height-md);\n padding: var(--office-space-1);\n border: 0;\n border-radius: var(--office-radius-sm);\n background: transparent;\n color: var(--office-muted-foreground);\n font: inherit;\n cursor: pointer;\n touch-action: manipulation;\n}\n.qat button:hover:not(:disabled) {\n background: var(--office-selected);\n}\n.qat button:active:not(:disabled) {\n opacity: 0.7;\n}\n.qat button:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n.qat small {\n font-size: var(--office-font-size-xs);\n white-space: nowrap;\n}\nsvg {\n flex: none;\n width: var(--office-icon-size);\n height: var(--office-icon-size);\n fill: none;\n stroke: currentColor;\n stroke-width: var(--office-icon-stroke);\n stroke-linecap: round;\n stroke-linejoin: round;\n}\n.file {\n display: flex;\n align-items: baseline;\n gap: var(--office-space-1-5);\n min-width: 0;\n padding: 0 var(--office-space-1);\n flex: 0 1 auto;\n}\n.name {\n max-width: var(--office-title-bar-name-max-width);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--office-title-bar-foreground);\n font-size: var(--office-font-size-sm);\n font-weight: var(--office-font-weight-medium);\n}\n.status.saving {\n color: var(--office-warning);\n}\n.status.error {\n color: var(--office-danger);\n}\n.search {\n position: relative;\n flex: 1;\n display: flex;\n justify-content: center;\n min-width: 0;\n padding: 0 var(--office-space-2);\n}\n.box {\n position: relative;\n width: 100%;\n max-width: var(--office-title-bar-search-max-width);\n min-width: 0;\n}\n.box > [part='search'] {\n width: 100%;\n}\n.results {\n position: absolute;\n z-index: var(--office-z-popover);\n top: calc(100% + var(--office-space-1));\n right: 0;\n left: 0;\n max-height: var(--office-title-bar-results-max-height);\n overflow-y: auto;\n border: var(--office-border-width) solid var(--office-border);\n border-radius: var(--office-radius-lg);\n background: var(--office-popover);\n color: var(--office-popover-foreground);\n box-shadow: var(--office-shadow-lg);\n}\n.heading {\n padding: var(--office-space-1-5) var(--office-space-3);\n color: var(--office-muted-foreground);\n font-size: var(--office-font-size-2xs);\n font-weight: var(--office-font-weight-bold);\n letter-spacing: 0.05em;\n text-transform: uppercase;\n}\n.empty {\n padding: var(--office-space-2) var(--office-space-3);\n color: var(--office-muted-foreground);\n}\n.results button {\n display: flex;\n width: 100%;\n justify-content: flex-start;\n gap: var(--office-space-2);\n padding: var(--office-space-1-5) var(--office-space-3);\n border-radius: 0;\n color: inherit;\n text-align: start;\n}\n.results button:hover,\n.results button[aria-selected='true'] {\n background: var(--office-selected);\n}\n.results .cat {\n margin-inline-start: auto;\n color: var(--office-muted-foreground);\n font-size: var(--office-font-size-2xs);\n text-transform: capitalize;\n}\n.results .content {\n border-top: var(--office-border-width) solid var(--office-border);\n}\n.end {\n flex: none;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: var(--office-space-1);\n}\n.sr {\n position: absolute;\n width: var(--office-space-px);\n height: var(--office-space-px);\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n}\nbutton:focus-visible {\n outline: var(--office-focus-width) solid var(--office-ring);\n outline-offset: var(--office-focus-offset);\n}\n@media (max-width: 767px), (max-width: 1023px) and (max-height: 520px) {\n :host(:not([placement='belowRibbon'])) {\n display: none !important;\n }\n}\n@media (max-width: 1100px) {\n .qat small {\n display: none;\n }\n .name {\n max-width: var(--office-title-bar-name-max-width-narrow);\n }\n}\n@media (pointer: coarse) {\n .qat button,\n .results button {\n min-width: var(--office-target-size-touch);\n min-height: var(--office-target-size-touch);\n }\n .bar {\n height: auto;\n min-height: var(--office-target-size-touch);\n }\n}\n@media (forced-colors: active) {\n .bar {\n border-bottom-color: CanvasText;\n background: Canvas;\n color: CanvasText;\n }\n .mark {\n border: var(--office-border-width) solid CanvasText;\n background: Canvas;\n color: CanvasText;\n }\n .label,\n .dot,\n .status,\n .name,\n .qat button,\n .results button {\n color: CanvasText;\n }\n .sep {\n background: CanvasText;\n }\n .qat button:hover:not(:disabled),\n .results button:hover,\n .results button[aria-selected='true'] {\n background: Highlight;\n color: HighlightText;\n }\n .qat button:disabled {\n color: GrayText;\n opacity: 1;\n }\n .results {\n border-color: CanvasText;\n background: Canvas;\n }\n button:focus-visible {\n outline-color: Highlight;\n }\n}\n";
68465
+ var title_bar_default = ":host {\n display: block;\n flex: none;\n}\n:host([data-empty]) {\n display: none !important;\n}\n[hidden] {\n display: none !important;\n}\n.bar {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: var(--office-space-1);\n width: 100%;\n height: var(--office-title-bar-height);\n padding: 0 var(--office-space-2);\n border-bottom: var(--office-border-width) solid var(--office-title-bar-border);\n background: var(--office-title-bar-background);\n color: var(--office-title-bar-foreground);\n font: var(--office-font-size-xs)/var(--office-line-height-tight) var(--office-font);\n user-select: none;\n}\n:host([placement='belowRibbon']) .bar {\n height: auto;\n min-height: var(--office-title-bar-below-height);\n padding-block: var(--office-space-0);\n}\n.mark {\n flex: none;\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--office-title-bar-mark-size);\n height: var(--office-title-bar-mark-size);\n border-radius: var(--office-radius-sm);\n background: var(--office-title-bar-mark-background);\n color: var(--office-title-bar-mark-foreground);\n font-size: var(--office-font-size-2xs);\n font-weight: var(--office-font-weight-bold);\n}\n.autosave {\n flex: none;\n display: flex;\n align-items: center;\n gap: var(--office-space-1-5);\n padding: 0 var(--office-space-0) 0 var(--office-space-1-5);\n white-space: nowrap;\n}\n.label,\n.dot,\n.status {\n color: var(--office-muted-foreground);\n white-space: nowrap;\n}\n.sep {\n flex: none;\n width: var(--office-border-width);\n height: var(--office-space-4);\n margin: 0 var(--office-space-1);\n background: var(--office-title-bar-border);\n}\n.qat {\n display: flex;\n align-items: center;\n gap: var(--office-space-0);\n min-width: 0;\n}\n.qat button,\n.results button {\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--office-space-1);\n min-width: var(--office-control-height-md);\n min-height: var(--office-control-height-md);\n padding: var(--office-space-1);\n border: 0;\n border-radius: var(--office-radius-sm);\n background: transparent;\n color: var(--office-muted-foreground);\n font: inherit;\n cursor: pointer;\n touch-action: manipulation;\n}\n.qat button:hover:not(:disabled) {\n background: var(--office-selected);\n}\n.qat button:active:not(:disabled) {\n opacity: 0.7;\n}\n.qat button:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n.qat small {\n font-size: var(--office-font-size-xs);\n white-space: nowrap;\n}\nsvg {\n flex: none;\n width: var(--office-icon-size);\n height: var(--office-icon-size);\n fill: none;\n stroke: currentColor;\n stroke-width: var(--office-icon-stroke);\n stroke-linecap: round;\n stroke-linejoin: round;\n}\n.file {\n display: flex;\n align-items: baseline;\n gap: var(--office-space-1-5);\n min-width: 0;\n padding: 0 var(--office-space-1);\n flex: 0 1 auto;\n}\n.name {\n max-width: var(--office-title-bar-name-max-width);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--office-title-bar-name-foreground);\n font-size: var(--office-font-size-sm);\n font-weight: var(--office-font-weight-medium);\n}\n.status.saving {\n color: var(--office-warning);\n}\n.status.error {\n color: var(--office-danger);\n}\n.search {\n position: relative;\n flex: 1;\n display: flex;\n justify-content: center;\n min-width: 0;\n padding: 0 var(--office-space-2);\n}\n.box {\n position: relative;\n width: 100%;\n max-width: var(--office-title-bar-search-max-width);\n min-width: 0;\n}\n.box > [part='search'] {\n width: 100%;\n}\n.results {\n position: absolute;\n z-index: var(--office-z-popover);\n top: calc(100% + var(--office-space-1));\n right: 0;\n left: 0;\n max-height: var(--office-title-bar-results-max-height);\n overflow-y: auto;\n border: var(--office-border-width) solid var(--office-border);\n border-radius: var(--office-radius-lg);\n background: var(--office-popover);\n color: var(--office-popover-foreground);\n box-shadow: var(--office-shadow-lg);\n}\n.heading {\n padding: var(--office-space-1-5) var(--office-space-3);\n color: var(--office-muted-foreground);\n font-size: var(--office-font-size-2xs);\n font-weight: var(--office-font-weight-bold);\n letter-spacing: 0.05em;\n text-transform: uppercase;\n}\n.empty {\n padding: var(--office-space-2) var(--office-space-3);\n color: var(--office-muted-foreground);\n}\n.results button {\n display: flex;\n width: 100%;\n justify-content: flex-start;\n gap: var(--office-space-2);\n padding: var(--office-space-1-5) var(--office-space-3);\n border-radius: 0;\n color: inherit;\n text-align: start;\n}\n.results button:hover,\n.results button[aria-selected='true'] {\n background: var(--office-title-bar-result-selected);\n}\n.results .cat {\n margin-inline-start: auto;\n color: var(--office-muted-foreground);\n font-size: var(--office-font-size-2xs);\n text-transform: capitalize;\n}\n.results .content {\n border-top: var(--office-border-width) solid var(--office-border);\n}\n.end {\n flex: none;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: var(--office-space-1);\n}\n.sr {\n position: absolute;\n width: var(--office-space-px);\n height: var(--office-space-px);\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n}\nbutton:focus-visible {\n outline: var(--office-focus-width) solid var(--office-ring);\n outline-offset: var(--office-focus-offset);\n}\n@media (max-width: 767px), (max-width: 1023px) and (max-height: 520px) {\n :host(:not([placement='belowRibbon'])) {\n display: none !important;\n }\n}\n@media (max-width: 1100px) {\n .qat small {\n display: none;\n }\n .name {\n max-width: var(--office-title-bar-name-max-width-narrow);\n }\n}\n@media (pointer: coarse) {\n .qat button,\n .results button {\n min-width: var(--office-target-size-touch);\n min-height: var(--office-target-size-touch);\n }\n .bar {\n height: auto;\n min-height: var(--office-target-size-touch);\n }\n}\n@media (forced-colors: active) {\n .bar {\n border-bottom-color: CanvasText;\n background: Canvas;\n color: CanvasText;\n }\n .mark {\n border: var(--office-border-width) solid CanvasText;\n background: Canvas;\n color: CanvasText;\n }\n .label,\n .dot,\n .status,\n .name,\n .qat button,\n .results button {\n color: CanvasText;\n }\n .sep {\n background: CanvasText;\n }\n .qat button:hover:not(:disabled),\n .results button:hover,\n .results button[aria-selected='true'] {\n background: Highlight;\n color: HighlightText;\n }\n .qat button:disabled {\n color: GrayText;\n opacity: 1;\n }\n .results {\n border-color: CanvasText;\n background: Canvas;\n }\n button:focus-visible {\n outline-color: Highlight;\n }\n}\n";
68314
68466
 
68315
68467
  // src/chrome/title-bar.ts
68316
68468
  var EMPTY = { fileName: "" };
@@ -68590,59 +68742,6 @@ var defineTitleBar = definer("office-ui-title-bar", () => OfficeUiTitleBar, [
68590
68742
  defineSwitch
68591
68743
  ]);
68592
68744
 
68593
- // src/pptx/web-components/status-bar-styles.ts
68594
- var STATUS_BAR_BRIDGE = `
68595
- :host {
68596
- --office-status-bar-height: ${STATUS_BAR_METRICS.height}px;
68597
- --office-surface: color-mix(in srgb, var(--pptx-secondary, #1e1e2e) 50%, transparent);
68598
- --office-border: var(--pptx-border, #33334d);
68599
- --office-foreground: var(--pptx-card-foreground, #e2e8f0);
68600
- --office-font-size-xs: 10px;
68601
- --office-control-height-xs: 24px;
68602
- --office-icon-stroke: 1.45;
68603
- --office-warning: #facc15;
68604
- --office-danger: #f87171;
68605
- }
68606
- .bar { font: 10px/1.2 system-ui, sans-serif; }
68607
- .sep, .item + .item::before { opacity: .6; }
68608
- .zoom-fit { min-width: 3rem; padding: 2px 6px; }
68609
- `;
68610
-
68611
- // src/pptx/web-components/title-bar-styles.ts
68612
- var TITLE_BAR_BRIDGE = `
68613
- :host {
68614
- --office-title-bar-height: ${TITLE_BAR_METRICS.height}px;
68615
- --office-title-bar-background: color-mix(in srgb, var(--pptx-secondary, #1e1e2e) 80%, transparent);
68616
- --office-title-bar-foreground: var(--pptx-card-foreground, #e2e8f0);
68617
- --office-title-bar-border: color-mix(in srgb, var(--pptx-border, #33334d) 60%, transparent);
68618
- --office-title-bar-mark-size: ${TITLE_BAR_METRICS.logoSize}px;
68619
- --office-title-bar-mark-background: ${TITLE_BAR_METRICS.logoBackground};
68620
- --office-title-bar-mark-foreground: #fff;
68621
- --office-font-size-xs: ${TITLE_BAR_METRICS.fontSize}px;
68622
- --office-font-size-sm: ${TITLE_BAR_METRICS.fileNameFontSize}px;
68623
- --office-font-size-2xs: ${TITLE_BAR_METRICS.logoFontSize}px;
68624
- --office-font-weight-medium: ${TITLE_BAR_METRICS.fileNameFontWeight};
68625
- --office-icon-size: 14px;
68626
- --office-icon-stroke: 1.4;
68627
- --office-control-height-md: 24px;
68628
- --office-selected: color-mix(in srgb, var(--pptx-accent, #33334d) 60%, transparent);
68629
- --office-warning: #eab308;
68630
- --office-danger: #f87171;
68631
- --office-popover: var(--pptx-popover, var(--pptx-card, #1e1e2e));
68632
- --office-shadow-lg: 0 14px 28px rgb(0 0 0 / 40%);
68633
- }
68634
- .results button[aria-selected="true"], .results button:hover { background: var(--pptx-accent, #33334d); }
68635
- .name { color: var(--pptx-foreground, #f1f5f9); }
68636
- .switch {
68637
- --pptx-switch-width: ${TITLE_BAR_METRICS.switchTrackWidth}px; --pptx-switch-height: ${TITLE_BAR_METRICS.switchTrackHeight}px;
68638
- --pptx-switch-knob-size: ${TITLE_BAR_METRICS.switchKnobSize}px; --pptx-switch-knob-offset: ${TITLE_BAR_METRICS.switchKnobOffsetOff}px;
68639
- --pptx-switch-knob-travel: ${TITLE_BAR_METRICS.switchKnobOffsetOn - TITLE_BAR_METRICS.switchKnobOffsetOff}px;
68640
- --pptx-switch-track: color-mix(in srgb, var(--pptx-muted-foreground, #a5a5b5) 40%, transparent);
68641
- --pptx-switch-thumb: #fff;
68642
- }
68643
- @media (max-width: 767px), (max-width: 1023px) and (max-height: 520px) { :host { display: none !important; } }
68644
- `;
68645
-
68646
68745
  // src/pptx/web-components/office-token-bridge.ts
68647
68746
  var BASE = `
68648
68747
  --office-font: system-ui, sans-serif;
@@ -68700,9 +68799,53 @@ var BASE = `
68700
68799
  --office-switch-thumb: ${tok("--pptx-switch-thumb")};
68701
68800
  --office-switch-thumb-on: ${tok("--pptx-switch-thumb")};
68702
68801
  `;
68802
+ var TITLE_BAR = `:host {
68803
+ --office-title-bar-height: ${TITLE_BAR_METRICS.height}px;
68804
+ --office-title-bar-background: color-mix(in srgb, var(--pptx-secondary, #1e1e2e) 80%, transparent);
68805
+ --office-title-bar-foreground: var(--pptx-card-foreground, #e2e8f0);
68806
+ --office-title-bar-name-foreground: var(--pptx-foreground, #f1f5f9);
68807
+ --office-title-bar-border: color-mix(in srgb, var(--pptx-border, #33334d) 60%, transparent);
68808
+ --office-title-bar-mark-size: ${TITLE_BAR_METRICS.logoSize}px;
68809
+ --office-title-bar-mark-background: ${TITLE_BAR_METRICS.logoBackground};
68810
+ --office-title-bar-mark-foreground: #fff;
68811
+ --office-title-bar-result-selected: var(--pptx-accent, #33334d);
68812
+ --office-font-size-xs: ${TITLE_BAR_METRICS.fontSize}px;
68813
+ --office-font-size-sm: ${TITLE_BAR_METRICS.fileNameFontSize}px;
68814
+ --office-font-size-2xs: ${TITLE_BAR_METRICS.logoFontSize}px;
68815
+ --office-font-weight-medium: ${TITLE_BAR_METRICS.fileNameFontWeight};
68816
+ --office-icon-size: 14px;
68817
+ --office-icon-stroke: 1.4;
68818
+ --office-control-height-md: 24px;
68819
+ --office-selected: color-mix(in srgb, var(--pptx-accent, #33334d) 60%, transparent);
68820
+ --office-warning: #eab308;
68821
+ --office-danger: #f87171;
68822
+ --office-popover: var(--pptx-popover, var(--pptx-card, #1e1e2e));
68823
+ --office-shadow-lg: 0 14px 28px rgb(0 0 0 / 40%);
68824
+ --pptx-switch-width: ${TITLE_BAR_METRICS.switchTrackWidth}px;
68825
+ --pptx-switch-height: ${TITLE_BAR_METRICS.switchTrackHeight}px;
68826
+ --pptx-switch-knob-size: ${TITLE_BAR_METRICS.switchKnobSize}px;
68827
+ --pptx-switch-knob-offset: ${TITLE_BAR_METRICS.switchKnobOffsetOff}px;
68828
+ --pptx-switch-knob-travel: ${TITLE_BAR_METRICS.switchKnobOffsetOn - TITLE_BAR_METRICS.switchKnobOffsetOff}px;
68829
+ --pptx-switch-track: color-mix(in srgb, var(--pptx-muted-foreground, #a5a5b5) 40%, transparent);
68830
+ --pptx-switch-thumb: #fff;
68831
+ }
68832
+ @media (max-width: 767px), (max-width: 1023px) and (max-height: 520px) { :host { display: none !important; } }`;
68833
+ var STATUS_BAR = `:host {
68834
+ --office-status-bar-height: ${STATUS_BAR_METRICS.height}px;
68835
+ --office-status-bar-separator-opacity: 0.6;
68836
+ --office-surface: color-mix(in srgb, var(--pptx-secondary, #1e1e2e) 50%, transparent);
68837
+ --office-border: var(--pptx-border, #33334d);
68838
+ --office-foreground: var(--pptx-card-foreground, #e2e8f0);
68839
+ --office-font-size-xs: 10px;
68840
+ --office-control-height-xs: 24px;
68841
+ --office-icon-stroke: 1.45;
68842
+ --office-warning: #facc15;
68843
+ --office-danger: #f87171;
68844
+ line-height: 1.2;
68845
+ }`;
68703
68846
  var EXTRAS = {
68704
- "pptx-ui-title-bar": TITLE_BAR_BRIDGE,
68705
- "pptx-ui-status-bar": STATUS_BAR_BRIDGE,
68847
+ "pptx-ui-title-bar": TITLE_BAR,
68848
+ "pptx-ui-status-bar": STATUS_BAR,
68706
68849
  "pptx-ui-ribbon-gallery": `:host { --office-foreground: var(--pptx-foreground, #f9fafb); --office-background: var(--pptx-background, #111827);
68707
68850
  --office-gallery-strip-background: color-mix(in srgb, var(--pptx-muted, #2a2a3d) 30%, transparent);
68708
68851
  --office-command-icon-color: var(--pptx-primary, #6366f1); --office-z-popover: 1200;
@@ -74127,7 +74270,7 @@ function applyChart3DDrag(bridge, detail) {
74127
74270
  return;
74128
74271
  }
74129
74272
  bridge.commitChartData(
74130
- chunkCJU4P5FT_cjs.withChartPointValue(bridge.chartData, part.seriesIndex, part.pointIndex, value)
74273
+ chunkSTKGUT5S_cjs.withChartPointValue(bridge.chartData, part.seriesIndex, part.pointIndex, value)
74131
74274
  );
74132
74275
  }
74133
74276
  function detailOf(event) {
@@ -74604,7 +74747,7 @@ function calculateNotesPageLayout(slideWidth, slideHeight) {
74604
74747
  };
74605
74748
  }
74606
74749
  function wrapNotesText(text3, maxWidth, fontSize) {
74607
- return chunkAIL3BNZS_cjs.wrapTextByEstimatedWidth(text3, maxWidth, fontSize, { keepBlankLines: true });
74750
+ return chunkYRHK45AB_cjs.wrapTextByEstimatedWidth(text3, maxWidth, fontSize, { keepBlankLines: true });
74608
74751
  }
74609
74752
  function calculateContinuationPageMaxLines() {
74610
74753
  const contentHeight = NOTES_PAGE_H - 2 * NOTES_MARGIN;
@@ -76116,6 +76259,22 @@ Object.defineProperty(exports, "withChartUserShapeUpdated", {
76116
76259
  enumerable: true,
76117
76260
  get: function () { return chartUserShapeEdit.withChartUserShapeUpdated; }
76118
76261
  });
76262
+ Object.defineProperty(exports, "bulletIndentPx", {
76263
+ enumerable: true,
76264
+ get: function () { return bulletList.bulletIndentPx; }
76265
+ });
76266
+ Object.defineProperty(exports, "resolveParagraphBullet", {
76267
+ enumerable: true,
76268
+ get: function () { return bulletList.resolveParagraphBullet; }
76269
+ });
76270
+ Object.defineProperty(exports, "resolveParagraphIndent", {
76271
+ enumerable: true,
76272
+ get: function () { return bulletList.resolveParagraphIndent; }
76273
+ });
76274
+ Object.defineProperty(exports, "resolvePictureBullet", {
76275
+ enumerable: true,
76276
+ get: function () { return bulletList.resolvePictureBullet; }
76277
+ });
76119
76278
  Object.defineProperty(exports, "canMergeCells", {
76120
76279
  enumerable: true,
76121
76280
  get: function () { return tableMerge.canMergeCells; }
@@ -76176,6 +76335,10 @@ Object.defineProperty(exports, "setCellText", {
76176
76335
  enumerable: true,
76177
76336
  get: function () { return tableCellEdit.setCellText; }
76178
76337
  });
76338
+ Object.defineProperty(exports, "withCellStyle", {
76339
+ enumerable: true,
76340
+ get: function () { return tableCellEdit.withCellStyle; }
76341
+ });
76179
76342
  Object.defineProperty(exports, "withCellText", {
76180
76343
  enumerable: true,
76181
76344
  get: function () { return tableCellEdit.withCellText; }
@@ -76512,22 +76675,6 @@ Object.defineProperty(exports, "romanNumeral", {
76512
76675
  enumerable: true,
76513
76676
  get: function () { return bulletAutonum.romanNumeral; }
76514
76677
  });
76515
- Object.defineProperty(exports, "bulletIndentPx", {
76516
- enumerable: true,
76517
- get: function () { return bulletList.bulletIndentPx; }
76518
- });
76519
- Object.defineProperty(exports, "resolveParagraphBullet", {
76520
- enumerable: true,
76521
- get: function () { return bulletList.resolveParagraphBullet; }
76522
- });
76523
- Object.defineProperty(exports, "resolveParagraphIndent", {
76524
- enumerable: true,
76525
- get: function () { return bulletList.resolveParagraphIndent; }
76526
- });
76527
- Object.defineProperty(exports, "resolvePictureBullet", {
76528
- enumerable: true,
76529
- get: function () { return bulletList.resolvePictureBullet; }
76530
- });
76531
76678
  Object.defineProperty(exports, "THEME_COLOR_LABELS", {
76532
76679
  enumerable: true,
76533
76680
  get: function () { return textTheme.THEME_COLOR_LABELS; }
@@ -77920,6 +78067,7 @@ exports.cascadeDownPath = cascadeDownPath;
77920
78067
  exports.cascadeUpPath = cascadeUpPath;
77921
78068
  exports.cell3DBevelCss = cell3DBevelCss;
77922
78069
  exports.cellImageFillCss = cellImageFillCss;
78070
+ exports.cellParagraphBlocks = cellParagraphBlocks;
77923
78071
  exports.cellPatternFillCss = cellPatternFillCss;
77924
78072
  exports.cellRunStyle = cellRunStyle;
77925
78073
  exports.cellStyleToCss = cellStyleToCss;
@@ -77932,6 +78080,7 @@ exports.chartAxisTitlesState = chartAxisTitlesState;
77932
78080
  exports.chartDataLabelsTogglePatch = chartDataLabelsTogglePatch;
77933
78081
  exports.chartEventPathElements = chartEventPathElements;
77934
78082
  exports.chartPlaceholderLabel = chartPlaceholderLabel;
78083
+ exports.chartStylePresetPalette = chartStylePresetPalette;
77935
78084
  exports.chartThreeViewSpec = chartThreeViewSpec;
77936
78085
  exports.checkModifyPassword = checkModifyPassword;
77937
78086
  exports.checkerboardDecl = checkerboardDecl;
@@ -78109,6 +78258,7 @@ exports.cropResetState = cropResetState;
78109
78258
  exports.cropSessionChanged = cropSessionChanged;
78110
78259
  exports.cropToAspectRatio = cropToAspectRatio;
78111
78260
  exports.cropUpdateFromRects = cropUpdateFromRects;
78261
+ exports.cssCdata = cssCdata;
78112
78262
  exports.cssEasingForAccelDecel = cssEasingForAccelDecel;
78113
78263
  exports.cssEasingForTimingCurve = cssEasingForTimingCurve;
78114
78264
  exports.cssKeyframeName = cssKeyframeName;