ooxml-ui 1.0.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 (169) hide show
  1. package/README.md +40 -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-T3HB5LMH.js → chunk-7FNDOWTX.js} +393 -15
  8. package/dist/{chunk-FLHM5Q4O.js → chunk-AYXFLBSV.js} +92 -13
  9. package/dist/{chunk-X7RINDJQ.js → chunk-JAJFLFAV.js} +1 -1
  10. package/dist/{chunk-OXKWNNNJ.js → chunk-VUB44CAJ.js} +1 -1
  11. package/dist/{chunk-JFJXBYRD.js → chunk-XNCWB2X6.js} +5 -0
  12. package/dist/{chunk-XDUYS4KK.js → chunk-Y2E22JVO.js} +1 -1
  13. package/dist/{chunk-ZV2Z4IWH.js → chunk-YK2DPYMU.js} +5 -2
  14. package/dist/{chunk-4QQASR5A.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 +2 -1
  27. package/dist/docx/localization.d.ts +7 -1
  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 +289 -339
  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-XQZWZMGZ.cjs → chunk-SM3CWDIQ.cjs} +7 -17
  40. package/dist/pptx/{chunk-CJU4P5FT.cjs → chunk-STKGUT5S.cjs} +18 -12
  41. package/dist/pptx/{chunk-JSBGBVBH.mjs → chunk-VRFNAF3Q.mjs} +7 -17
  42. package/dist/pptx/{chunk-YHA6XAB3.cjs → chunk-XIQMFSNG.cjs} +1 -1
  43. package/dist/pptx/{chunk-YARCML7O.mjs → chunk-XQVKQD5Z.mjs} +294 -265
  44. package/dist/pptx/{chunk-XWE5GSE7.mjs → chunk-YI5LH5NN.mjs} +533 -428
  45. package/dist/pptx/{chunk-ADOC5JLI.mjs → chunk-YMTQLZ2I.mjs} +1 -1
  46. package/dist/pptx/{chunk-AIL3BNZS.cjs → chunk-YRHK45AB.cjs} +301 -265
  47. package/dist/pptx/{chunk-FEFQTZDM.cjs → chunk-ZK344LOB.cjs} +689 -574
  48. package/dist/pptx/dom/elements/chart.d.ts +2 -3
  49. package/dist/pptx/dom/elements/chart.d.ts.map +1 -1
  50. package/dist/pptx/dom/elements/table.d.ts.map +1 -1
  51. package/dist/pptx/dom/index.cjs +257 -246
  52. package/dist/pptx/dom/index.mjs +28 -17
  53. package/dist/pptx/export/html2canvas-clone.cjs +2 -2
  54. package/dist/pptx/export/html2canvas-clone.mjs +1 -1
  55. package/dist/pptx/i18n/index.cjs +6 -6
  56. package/dist/pptx/i18n/index.mjs +1 -1
  57. package/dist/pptx/i18n/translator.d.ts.map +1 -1
  58. package/dist/pptx/index.cjs +3035 -2991
  59. package/dist/pptx/index.mjs +5 -5
  60. package/dist/pptx/render/chart-axis-range.d.ts +7 -0
  61. package/dist/pptx/render/chart-axis-range.d.ts.map +1 -1
  62. package/dist/pptx/render/chart-axis-render.d.ts +3 -1
  63. package/dist/pptx/render/chart-axis-render.d.ts.map +1 -1
  64. package/dist/pptx/render/chart-axis-style.d.ts +5 -0
  65. package/dist/pptx/render/chart-axis-style.d.ts.map +1 -1
  66. package/dist/pptx/render/chart-axis.d.ts +1 -1
  67. package/dist/pptx/render/chart-axis.d.ts.map +1 -1
  68. package/dist/pptx/render/chart-cartesian-axes.d.ts.map +1 -1
  69. package/dist/pptx/render/chart-cartesian-bars.d.ts +3 -3
  70. package/dist/pptx/render/chart-cartesian-bars.d.ts.map +1 -1
  71. package/dist/pptx/render/chart-cartesian-percent-stacked.d.ts.map +1 -1
  72. package/dist/pptx/render/chart-cartesian.d.ts.map +1 -1
  73. package/dist/pptx/render/chart-combo-stock.cjs +3 -3
  74. package/dist/pptx/render/chart-combo-stock.mjs +1 -1
  75. package/dist/pptx/render/chart-combo.d.ts.map +1 -1
  76. package/dist/pptx/render/chart-gridlines-toggle.d.ts +13 -1
  77. package/dist/pptx/render/chart-gridlines-toggle.d.ts.map +1 -1
  78. package/dist/pptx/render/chart-helpers.d.ts +13 -13
  79. package/dist/pptx/render/chart-helpers.d.ts.map +1 -1
  80. package/dist/pptx/render/chart-horizontal-bars-helpers.d.ts +7 -3
  81. package/dist/pptx/render/chart-horizontal-bars-helpers.d.ts.map +1 -1
  82. package/dist/pptx/render/chart-horizontal-bars.d.ts.map +1 -1
  83. package/dist/pptx/render/chart-interaction-stacked.d.ts.map +1 -1
  84. package/dist/pptx/render/chart-overlays.cjs +7 -7
  85. package/dist/pptx/render/chart-overlays.mjs +1 -1
  86. package/dist/pptx/render/chart-palette.d.ts +5 -14
  87. package/dist/pptx/render/chart-palette.d.ts.map +1 -1
  88. package/dist/pptx/render/chart-quick-action-styles.d.ts +5 -3
  89. package/dist/pptx/render/chart-quick-action-styles.d.ts.map +1 -1
  90. package/dist/pptx/render/chart-scatter-x-axis.d.ts.map +1 -1
  91. package/dist/pptx/render/chart-style-palette.d.ts +52 -0
  92. package/dist/pptx/render/chart-style-palette.d.ts.map +1 -0
  93. package/dist/pptx/render/chart-surface-treemap.cjs +4 -4
  94. package/dist/pptx/render/chart-surface-treemap.mjs +1 -1
  95. package/dist/pptx/render/chart-view-model-bars.d.ts +31 -1
  96. package/dist/pptx/render/chart-view-model-bars.d.ts.map +1 -1
  97. package/dist/pptx/render/chart-view-model-build.d.ts.map +1 -1
  98. package/dist/pptx/render/chart-view-model.cjs +53 -41
  99. package/dist/pptx/render/chart-view-model.mjs +1 -1
  100. package/dist/pptx/render/chart-waterfall-map.cjs +6 -6
  101. package/dist/pptx/render/chart-waterfall-map.mjs +1 -1
  102. package/dist/pptx/render/connector-elbow-geometry.d.ts +7 -43
  103. package/dist/pptx/render/connector-elbow-geometry.d.ts.map +1 -1
  104. package/dist/pptx/render/foreign-object-svg-document.d.ts +12 -0
  105. package/dist/pptx/render/foreign-object-svg-document.d.ts.map +1 -1
  106. package/dist/pptx/render/index.d.ts +2 -0
  107. package/dist/pptx/render/index.d.ts.map +1 -1
  108. package/dist/pptx/render/table-cell-css.d.ts +3 -2
  109. package/dist/pptx/render/table-cell-css.d.ts.map +1 -1
  110. package/dist/pptx/render/table-cell-edit.d.ts +1 -1
  111. package/dist/pptx/render/table-cell-edit.d.ts.map +1 -1
  112. package/dist/pptx/render/table-cell-paragraphs.d.ts +29 -0
  113. package/dist/pptx/render/table-cell-paragraphs.d.ts.map +1 -0
  114. package/dist/pptx/render/table-style.d.ts +2 -0
  115. package/dist/pptx/render/table-style.d.ts.map +1 -1
  116. package/dist/pptx/render/title-bar.d.ts +5 -0
  117. package/dist/pptx/render/title-bar.d.ts.map +1 -1
  118. package/dist/pptx/render/viewer-root-options.d.ts +54 -0
  119. package/dist/pptx/render/viewer-root-options.d.ts.map +1 -0
  120. package/dist/pptx/web-components/office-token-bridge.d.ts.map +1 -1
  121. package/dist/pptx/web-components/registration-contract.d.ts.map +1 -1
  122. package/dist/presence.js +3 -3
  123. package/dist/registry.d.ts +2 -0
  124. package/dist/registry.d.ts.map +1 -1
  125. package/dist/ribbon/ribbon-tabs.d.ts +2 -1
  126. package/dist/ribbon/ribbon-tabs.d.ts.map +1 -1
  127. package/dist/smartart/smartart-svg.d.ts +3 -2
  128. package/dist/smartart.js +3 -3
  129. package/dist/suite/attachment-store.d.ts +13 -0
  130. package/dist/suite/document-store.d.ts +31 -0
  131. package/dist/suite/index.d.ts +2 -0
  132. package/dist/suite.js +132 -1
  133. package/dist/teams/app/channel-tab.d.ts +5 -0
  134. package/dist/teams/chat-composer.d.ts +3 -0
  135. package/dist/teams.js +6 -6
  136. package/dist/theme.js +2 -2
  137. package/dist/tokens.d.ts +5 -0
  138. package/dist/tokens.d.ts.map +1 -1
  139. package/dist/visio/styles/index.d.ts +2 -0
  140. package/dist/visio/styles/theme.d.ts +11 -0
  141. package/dist/visio/styles.d.ts +2 -2
  142. package/dist/visio.js +76 -25
  143. package/dist/xlsx/backstage/index.d.ts +4 -1
  144. package/dist/xlsx/backstage/pages-share.d.ts +19 -0
  145. package/dist/xlsx/backstage/parts.d.ts +3 -0
  146. package/dist/xlsx/chart-fill-binding.d.ts +2 -2
  147. package/dist/xlsx/chart-series-gradient-type.d.ts +3 -2
  148. package/dist/xlsx/collaboration-session.d.ts +9 -0
  149. package/dist/xlsx/collaboration-types.d.ts +41 -0
  150. package/dist/xlsx/collaboration.d.ts +56 -0
  151. package/dist/xlsx/component.d.ts +8 -0
  152. package/dist/xlsx/dialogs/comments-list.d.ts +4 -0
  153. package/dist/xlsx/dialogs/help-dialogs.d.ts +1 -1
  154. package/dist/xlsx/editor-core.d.ts +3 -0
  155. package/dist/xlsx/element-api.d.ts +19 -1
  156. package/dist/xlsx/events.d.ts +4 -1
  157. package/dist/xlsx/grid/remote-layer.d.ts +3 -0
  158. package/dist/xlsx/grid/sparkline.d.ts +3 -0
  159. package/dist/xlsx/grid/styles.d.ts +1 -1
  160. package/dist/xlsx/index.d.ts +1 -0
  161. package/dist/xlsx/ribbon-actions.d.ts +21 -0
  162. package/dist/xlsx/shell-commands.d.ts +1 -1
  163. package/dist/xlsx/title-bar.d.ts +4 -2
  164. package/dist/xlsx.js +712 -90
  165. package/package.json +3 -3
  166. package/dist/pptx/web-components/status-bar-styles.d.ts +0 -3
  167. package/dist/pptx/web-components/status-bar-styles.d.ts.map +0 -1
  168. package/dist/pptx/web-components/title-bar-styles.d.ts +0 -7
  169. 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,15 +12,15 @@ 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');
22
22
  var chunkUSBRSEJK_cjs = require('./chunk-USBRSEJK.cjs');
23
- var chunkXQZWZMGZ_cjs = require('./chunk-XQZWZMGZ.cjs');
23
+ var chunkSM3CWDIQ_cjs = require('./chunk-SM3CWDIQ.cjs');
24
24
  var chunkOGJRSAGH_cjs = require('./chunk-OGJRSAGH.cjs');
25
25
  var chunkEW5DW5KR_cjs = require('./chunk-EW5DW5KR.cjs');
26
26
  var pptx = require('ooxml-core/pptx');
@@ -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
@@ -22663,7 +22878,7 @@ function createTemplateContext(options = {}) {
22663
22878
  const scheme = { ...pptx.DEFAULT_SCHEME_COLOR_MAP, ...options.scheme ?? {} };
22664
22879
  let counter = 0;
22665
22880
  const idFor = options.idFor ?? ((index) => `template-el-${Date.now()}-${index}`);
22666
- const dictionary = chunkXQZWZMGZ_cjs.translationsEn;
22881
+ const dictionary = chunkSM3CWDIQ_cjs.translationsEn;
22667
22882
  const translate = options.translate ?? ((key) => dictionary[key] ?? key);
22668
22883
  return {
22669
22884
  scheme,
@@ -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));
@@ -30769,8 +30913,6 @@ function clampFlyoutPosition(input) {
30769
30913
  top: Math.max(margin, input.height > 0 ? Math.min(input.y, maxTop) : input.y)
30770
30914
  };
30771
30915
  }
30772
-
30773
- // src/pptx/render/connector-elbow-geometry.ts
30774
30916
  function connectorAdjustmentFraction(element, key, fallback = 0.5) {
30775
30917
  const adj = element.shapeAdjustments;
30776
30918
  const raw = adj?.[key] ?? adj?.adj;
@@ -30783,80 +30925,19 @@ function connectorAdjustmentFraction(element, key, fallback = 0.5) {
30783
30925
  function connectorBendFraction(element) {
30784
30926
  return connectorAdjustmentFraction(element, "adj1", 0.5);
30785
30927
  }
30786
- function elbowSegmentCount(lowerShapeType) {
30787
- if (lowerShapeType.includes("connector4")) {
30788
- return 4;
30789
- }
30790
- if (lowerShapeType.includes("connector5")) {
30791
- return 5;
30792
- }
30793
- return 3;
30794
- }
30795
- function axisMapper(horizontalPrimary) {
30796
- return (u, v) => ({ x: u, y: v }) ;
30797
- }
30798
30928
  function elbowWaypoints(x1, y1, x2, y2, segments, adj1, adj2, adj3) {
30799
- const u1 = x1 ;
30800
- const v1 = y1 ;
30801
- const u2 = x2 ;
30802
- const v2 = y2 ;
30803
- const toXY = axisMapper();
30804
- if (segments === 3) {
30805
- const mu = u1 + (u2 - u1) * adj1;
30806
- return [toXY(u1, v1), toXY(mu, v1), toXY(mu, v2), toXY(u2, v2)];
30807
- }
30808
- if (segments === 4) {
30809
- const mu = u1 + (u2 - u1) * adj1;
30810
- const mv2 = v1 + (v2 - v1) * adj2;
30811
- return [toXY(u1, v1), toXY(mu, v1), toXY(mu, mv2), toXY(u2, mv2), toXY(u2, v2)];
30812
- }
30813
- const mu1 = u1 + (u2 - u1) * adj1;
30814
- const mv = v1 + (v2 - v1) * adj2;
30815
- const mu2 = u1 + (u2 - u1) * adj3;
30816
- return [toXY(u1, v1), toXY(mu1, v1), toXY(mu1, mv), toXY(mu2, mv), toXY(mu2, v2), toXY(u2, v2)];
30817
- }
30818
- function fmt3(p) {
30819
- return `${p.x},${p.y}`;
30820
- }
30821
- function curveTo(ctrl, end) {
30822
- return `C${fmt3(ctrl)} ${fmt3(ctrl)} ${fmt3(end)}`;
30823
- }
30824
- function curvedElbowPathD(x1, y1, x2, y2, segments, adj1, adj2, adj3) {
30825
- const u1 = x1 ;
30826
- const v1 = y1 ;
30827
- const u2 = x2 ;
30828
- const v2 = y2 ;
30829
- const toXY = axisMapper();
30830
- const start = toXY(u1, v1);
30831
- if (segments === 3) {
30832
- const mu = u1 + (u2 - u1) * adj1;
30833
- return `M${fmt3(start)} C${fmt3(toXY(mu, v1))} ${fmt3(toXY(mu, v2))} ${fmt3(toXY(u2, v2))}`;
30834
- }
30835
- if (segments === 4) {
30836
- const mu = u1 + (u2 - u1) * adj1;
30837
- const mv2 = v1 + (v2 - v1) * adj2;
30838
- const vq = v1 + (mv2 - v1) * 0.5;
30839
- const midU2 = (mu + u2) / 2;
30840
- return [
30841
- `M${fmt3(start)}`,
30842
- curveTo(toXY(mu, v1), toXY(mu, vq)),
30843
- curveTo(toXY(mu, mv2), toXY(midU2, mv2)),
30844
- curveTo(toXY(u2, mv2), toXY(u2, v2))
30845
- ].join(" ");
30846
- }
30847
- const mu1 = u1 + (u2 - u1) * adj1;
30848
- const mv = v1 + (v2 - v1) * adj2;
30849
- const mu2 = u1 + (u2 - u1) * adj3;
30850
- const vq1 = v1 + (mv - v1) * 0.5;
30851
- const vq2 = mv + (v2 - mv) * 0.5;
30852
- const midU = (mu1 + mu2) / 2;
30853
- return [
30854
- `M${fmt3(start)}`,
30855
- curveTo(toXY(mu1, v1), toXY(mu1, vq1)),
30856
- curveTo(toXY(mu1, mv), toXY(midU, mv)),
30857
- curveTo(toXY(mu2, mv), toXY(mu2, vq2)),
30858
- curveTo(toXY(mu2, v2), toXY(u2, v2))
30859
- ].join(" ");
30929
+ return geometry.elbowWaypoints(
30930
+ x1,
30931
+ y1,
30932
+ x2,
30933
+ y2,
30934
+ Math.abs(x2 - x1),
30935
+ Math.abs(y2 - y1),
30936
+ segments,
30937
+ adj1,
30938
+ adj2,
30939
+ adj3
30940
+ ).map(([x, y]) => ({ x, y }));
30860
30941
  }
30861
30942
 
30862
30943
  // src/pptx/render/connector-hit-target.ts
@@ -30894,9 +30975,9 @@ function normalizeArrow(a) {
30894
30975
  function buildConnectorGeometry(element, zIndex, routing) {
30895
30976
  const ss = pptx.hasShapeProperties(element) ? element.shapeStyle : void 0;
30896
30977
  const strokeWidth = Math.max(0, ss?.strokeWidth ?? 2);
30897
- const strokeColor = ss?.strokeColor ?? chunkAIL3BNZS_cjs.DEFAULT_STROKE_COLOR;
30978
+ const strokeColor = ss?.strokeColor ?? chunkYRHK45AB_cjs.DEFAULT_STROKE_COLOR;
30898
30979
  const strokeOpacity = ss?.strokeOpacity ?? 1;
30899
- const dashArray = chunkAIL3BNZS_cjs.buildDashArray(ss?.strokeDash, strokeWidth, ss?.customDashSegments);
30980
+ const dashArray = chunkYRHK45AB_cjs.buildDashArray(ss?.strokeDash, strokeWidth, ss?.customDashSegments);
30900
30981
  const strokeLinecap = svgLineCap(ss?.lineCap);
30901
30982
  const compoundOffsets = getCompoundLineOffsets(ss?.compoundLine, strokeWidth);
30902
30983
  const compoundWidths = getCompoundLineWidths(ss?.compoundLine, strokeWidth);
@@ -30970,15 +31051,15 @@ function buildConnectorPathD(shapeType, x1, y1, x2, y2, bend, bend2 = 0.5, bend3
30970
31051
  if (t.includes("bentconnector2")) {
30971
31052
  return `M${x1},${y1} L${x2},${y1} L${x2},${y2}`;
30972
31053
  }
30973
- const segments2 = elbowSegmentCount(t);
31054
+ const segments2 = geometry.elbowSegmentCount(t);
30974
31055
  const points = elbowWaypoints(x1, y1, x2, y2, segments2, bend, bend2, bend3);
30975
31056
  return waypointsToPathD(points);
30976
31057
  }
30977
31058
  if (t.includes("curvedconnector2")) {
30978
31059
  return `M${x1},${y1} Q${x2},${y1} ${x2},${y2}`;
30979
31060
  }
30980
- const segments = elbowSegmentCount(t);
30981
- return curvedElbowPathD(x1, y1, x2, y2, segments, bend, bend2, bend3);
31061
+ const segments = geometry.elbowSegmentCount(t);
31062
+ return geometry.curvedElbowPathD(x1, y1, x2, y2, segments, bend, bend2, bend3);
30982
31063
  }
30983
31064
  function connectorWrapperTransform(element) {
30984
31065
  return element.rotation ? `rotate(${element.rotation}deg)` : void 0;
@@ -37588,7 +37669,7 @@ function drawingShapeMeshOpacity(shape) {
37588
37669
  // src/pptx/render/svg-text-lines.ts
37589
37670
  var LINE_HEIGHT_RATIO = 1.2;
37590
37671
  function centeredSvgTextLines(text3, fontSize, options = {}) {
37591
- 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);
37592
37673
  const centerY = options.centerY ?? 0;
37593
37674
  if (lines.length === 0) {
37594
37675
  return [{ text: "", y: centerY }];
@@ -38385,7 +38466,7 @@ function buildObliqueLabels(layout, input) {
38385
38466
  const { w, h, d } = layout.box;
38386
38467
  const span = layout.range.max - layout.range.min;
38387
38468
  const fontSize = input.fontSize;
38388
- for (const v of chunkAIL3BNZS_cjs.axisTickValues({ ...layout.range, span })) {
38469
+ for (const v of chunkYRHK45AB_cjs.axisTickValues({ ...layout.range, span })) {
38389
38470
  const p = (v - layout.range.min) * layout.valueScale;
38390
38471
  if (layout.horizontal) {
38391
38472
  const at = screen2(layout, p, 0, 0);
@@ -38508,7 +38589,7 @@ function dataExtent(chartData, grouping, nCat) {
38508
38589
  function valueRange(chartData, grouping, nCat, valueLengthPx) {
38509
38590
  const axis = chartData.axes?.find((a) => a.axisType === "valAx");
38510
38591
  const [lo, hi] = dataExtent(chartData, grouping, nCat);
38511
- 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);
38512
38593
  const min = typeof axis?.min === "number" ? axis.min : auto.min;
38513
38594
  let max = typeof axis?.max === "number" ? axis.max : auto.max;
38514
38595
  if (max <= min) {
@@ -38538,16 +38619,16 @@ function computeObliqueBarLayout(element, vm) {
38538
38619
  const rows = grouping === "standard" ? nSer : 1;
38539
38620
  const labelFont = vm.axisLabels[0]?.fontSize ?? 16;
38540
38621
  const catLabels = chartData.categories.length > 0 ? chartData.categories : Array.from({ length: nCat }, (_, i) => String(i + 1));
38541
- 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);
38542
38623
  const top = vm.title ? TOP_WITH_TITLE : TOP_NO_TITLE;
38543
38624
  const hasBottomLegend = chartData.style?.hasLegend !== false && (chartData.style?.legendPosition ?? "b") === "b";
38544
38625
  const bottom = vm.svgHeight - (hasBottomLegend ? BOTTOM_WITH_LEGEND : BOTTOM_NO_LEGEND);
38545
38626
  const regionH = Math.max(1, bottom - top);
38546
38627
  const provisional = valueRange(chartData, grouping, nCat, regionH);
38547
- const valueTexts = chunkAIL3BNZS_cjs.axisTickValues({
38628
+ const valueTexts = chunkYRHK45AB_cjs.axisTickValues({
38548
38629
  ...provisional,
38549
38630
  span: provisional.max - provisional.min
38550
- }).map((v) => chunkCJU4P5FT_cjs.formatValueLabel(chartData, grouping, v));
38631
+ }).map((v) => chunkSTKGUT5S_cjs.formatValueLabel(chartData, grouping, v));
38551
38632
  const leftBand = (horizontal ? widest(catLabels) : widest(valueTexts)) + (horizontal ? OBLIQUE_CATEGORY_LABEL_GAP : OBLIQUE_VALUE_LABEL_GAP);
38552
38633
  const seriesLabelW = grouping === "standard" && !horizontal ? widest(chartData.series.map((s) => s.name)) : 0;
38553
38634
  const seriesOverhang = (depth2) => seriesLabelW > 0 ? Math.max(0, OBLIQUE_CATEGORY_LABEL_GAP + seriesLabelW - depth2 * shear.x / (2 * rows)) : 0;
@@ -38603,13 +38684,13 @@ function computeObliqueBarLayout(element, vm) {
38603
38684
  gridlines: [],
38604
38685
  labels: []
38605
38686
  };
38606
- layout.bars = chunkCJU4P5FT_cjs.buildBars(chartData, vm, layout, { nCat, slots, rows, gapWidth, gapDepth });
38607
- 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);
38608
38689
  layout.labels = buildObliqueLabels(layout, {
38609
38690
  fontSize: labelFont,
38610
38691
  categories: catLabels,
38611
38692
  seriesNames: chartData.series.map((s) => s.name),
38612
- valueText: (v) => chunkCJU4P5FT_cjs.formatValueLabel(chartData, grouping, v)
38693
+ valueText: (v) => chunkSTKGUT5S_cjs.formatValueLabel(chartData, grouping, v)
38613
38694
  });
38614
38695
  return layout;
38615
38696
  }
@@ -38622,7 +38703,7 @@ function buildPerspGridlines(box, range, horizontal) {
38622
38703
  { from: [w, 0, 0], to: [w, 0, d] }
38623
38704
  ];
38624
38705
  const span = range.max - range.min;
38625
- for (const v of chunkAIL3BNZS_cjs.axisTickValues({ ...range, span })) {
38706
+ for (const v of chunkYRHK45AB_cjs.axisTickValues({ ...range, span })) {
38626
38707
  const t = (v - range.min) / span;
38627
38708
  if (horizontal) {
38628
38709
  const x = t * w;
@@ -38648,11 +38729,11 @@ function buildPerspLabels(layout, input) {
38648
38729
  const span = range.max - range.min;
38649
38730
  const labels = [];
38650
38731
  const fontSize = input.fontSize;
38651
- for (const v of chunkAIL3BNZS_cjs.axisTickValues({ ...range, span })) {
38732
+ for (const v of chunkYRHK45AB_cjs.axisTickValues({ ...range, span })) {
38652
38733
  const t = (v - range.min) / span;
38653
- 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);
38654
38735
  if (layout.horizontal) {
38655
- const at = chunkCJU4P5FT_cjs.perspToScreen(view, [t * w, 0, 0]);
38736
+ const at = chunkSTKGUT5S_cjs.perspToScreen(view, [t * w, 0, 0]);
38656
38737
  labels.push({
38657
38738
  role: "value",
38658
38739
  text: text3,
@@ -38662,7 +38743,7 @@ function buildPerspLabels(layout, input) {
38662
38743
  fontSize
38663
38744
  });
38664
38745
  } else {
38665
- const at = chunkCJU4P5FT_cjs.perspToScreen(view, [0, t * h, 0]);
38746
+ const at = chunkSTKGUT5S_cjs.perspToScreen(view, [0, t * h, 0]);
38666
38747
  labels.push({ role: "value", text: text3, x: at.x - VALUE_GAP2, y: at.y, anchor: "end", fontSize });
38667
38748
  }
38668
38749
  }
@@ -38672,7 +38753,7 @@ function buildPerspLabels(layout, input) {
38672
38753
  return;
38673
38754
  }
38674
38755
  if (layout.horizontal) {
38675
- const at2 = chunkCJU4P5FT_cjs.perspToScreen(view, [0, pos, 0]);
38756
+ const at2 = chunkSTKGUT5S_cjs.perspToScreen(view, [0, pos, 0]);
38676
38757
  labels.push({
38677
38758
  role: "category",
38678
38759
  text: text3,
@@ -38683,7 +38764,7 @@ function buildPerspLabels(layout, input) {
38683
38764
  });
38684
38765
  return;
38685
38766
  }
38686
- const at = chunkCJU4P5FT_cjs.perspToScreen(view, [pos, 0, 0]);
38767
+ const at = chunkSTKGUT5S_cjs.perspToScreen(view, [pos, 0, 0]);
38687
38768
  labels.push({
38688
38769
  role: "category",
38689
38770
  text: text3,
@@ -38696,7 +38777,7 @@ function buildPerspLabels(layout, input) {
38696
38777
  const rows = input.seriesNames.length;
38697
38778
  input.seriesNames.forEach((text3, s) => {
38698
38779
  const z = layout.kind === "surface" ? rows > 1 ? s / (rows - 1) * d : d / 2 : (s + 0.5) / rows * d;
38699
- const at = chunkCJU4P5FT_cjs.perspToScreen(view, [w, 0, z]);
38780
+ const at = chunkSTKGUT5S_cjs.perspToScreen(view, [w, 0, z]);
38700
38781
  labels.push({
38701
38782
  role: "series",
38702
38783
  text: text3,
@@ -38802,16 +38883,16 @@ function computePerspChartLayout(element, vm, options = {}) {
38802
38883
  const valueExtent = horizontal ? 1 : baseHeight * heightScale;
38803
38884
  const catExtent = horizontal ? HORIZONTAL_CATEGORY_EXTENT * heightScale : 1;
38804
38885
  const box = horizontal ? { w: valueExtent, h: catExtent, d } : { w: 1, h: valueExtent, d };
38805
- 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);
38806
38887
  const hasLegend = chartData.style?.hasLegend !== false && (chartData.style?.legendPosition ?? "b") === "b";
38807
- const view = chunkCJU4P5FT_cjs.fitPerspView(camera, {
38888
+ const view = chunkSTKGUT5S_cjs.fitPerspView(camera, {
38808
38889
  left: RECT_LEFT,
38809
38890
  right: vm.svgWidth - (rows > 1 ? RECT_RIGHT_WITH_SERIES : RECT_RIGHT_NO_SERIES),
38810
38891
  top: vm.title ? RECT_TOP_WITH_TITLE : RECT_TOP_NO_TITLE,
38811
38892
  bottom: vm.svgHeight - (hasLegend ? RECT_BOTTOM_WITH_LEGEND : RECT_BOTTOM_NO_LEGEND)
38812
38893
  });
38813
38894
  const [lo, hi] = dataExtent2(chartData, grouping, nCat);
38814
- 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);
38815
38896
  const min = typeof valAx?.min === "number" ? valAx.min : auto.min;
38816
38897
  let max = typeof valAx?.max === "number" ? valAx.max : auto.max;
38817
38898
  if (max <= min) {
@@ -38903,7 +38984,7 @@ function buildBarGeometry(element, vm) {
38903
38984
  }
38904
38985
  var PERSP_BOX_TYPES = /* @__PURE__ */ new Set(["line3D", "area3D", "surface", "bar3D"]);
38905
38986
  function buildPieGeometry(element, vm) {
38906
- const layout = chunkCJU4P5FT_cjs.computePieChartLayout(element, chunkCJU4P5FT_cjs.widenPieViewModel(vm, element));
38987
+ const layout = chunkSTKGUT5S_cjs.computePieChartLayout(element, chunkSTKGUT5S_cjs.widenPieViewModel(vm, element));
38907
38988
  return layout ? { kind: "pie", layout } : null;
38908
38989
  }
38909
38990
  function buildPerspGeometry(element, vm, oblique) {
@@ -38923,7 +39004,7 @@ function buildChart3DSpecForElement(element) {
38923
39004
  if (!chartData || !is3DChartType(chartType)) {
38924
39005
  return null;
38925
39006
  }
38926
- const vm = chunkAIL3BNZS_cjs.buildChartViewModel(element);
39007
+ const vm = chunkYRHK45AB_cjs.buildChartViewModel(element);
38927
39008
  const projection = resolveChart3DProjection(chartType, chartData.view3D);
38928
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;
38929
39010
  if (!geometry) {
@@ -53021,7 +53102,7 @@ function axisTitle(current, show) {
53021
53102
  return show ? current || AXIS_TITLE : void 0;
53022
53103
  }
53023
53104
  function applyChartQuickLayout(chartData, layout) {
53024
- const withGrid = patchChartData(chartData, chunkAIL3BNZS_cjs.chartGridlinesPatch(chartData, layout.majorGridlines));
53105
+ const withGrid = patchChartData(chartData, chunkYRHK45AB_cjs.chartGridlinesPatch(chartData, layout.majorGridlines));
53025
53106
  const axes = (withGrid.axes ?? []).map((axis) => {
53026
53107
  if (axis.axisType === "valAx") {
53027
53108
  return {
@@ -53075,7 +53156,7 @@ function matchesLayout(chartData, layout) {
53075
53156
  const legend = style.hasLegend ? style.legendPosition ?? "r" : null;
53076
53157
  const isBar = chartData.chartType === "bar" || chartData.chartType === "bar3D";
53077
53158
  const barMatches = !isBar || (chartData.barGapWidth ?? 150) === layout.gapWidth && (chartData.barOverlap ?? 0) === layout.overlap;
53078
- 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;
53079
53160
  }
53080
53161
  var CHART_QUICK_LAYOUT_GALLERY = {
53081
53162
  build(ctx) {
@@ -58524,7 +58605,7 @@ function isSeriesUsingSecondaryAxis(chartData, seriesIndex) {
58524
58605
  if (!series) {
58525
58606
  return false;
58526
58607
  }
58527
- return chunkAIL3BNZS_cjs.isSeriesOnSecondaryAxis(series, chartData.axes);
58608
+ return chunkYRHK45AB_cjs.isSeriesOnSecondaryAxis(series, chartData.axes);
58528
58609
  }
58529
58610
  function resolveSecondaryAxisId(chartData, useSecondary) {
58530
58611
  const axPos = useSecondary ? "r" : "l";
@@ -59052,8 +59133,8 @@ async function embedImagesOnClone(root) {
59052
59133
  }
59053
59134
 
59054
59135
  // src/pptx/render/foreign-object-svg-document.ts
59055
- function escapeAttr(value) {
59056
- return value.replace(/&/gu, "&amp;").replace(/"/gu, "&quot;");
59136
+ function cssCdata(css) {
59137
+ return `<![CDATA[${css.replaceAll("]]>", "]]]]><![CDATA[>")}]]>`;
59057
59138
  }
59058
59139
  async function buildForeignObjectSvgBody(element, doc, options) {
59059
59140
  const {
@@ -59062,19 +59143,19 @@ async function buildForeignObjectSvgBody(element, doc, options) {
59062
59143
  backgroundColor,
59063
59144
  readComputedStyle = (el) => window.getComputedStyle(el)
59064
59145
  } = options;
59065
- await chunkYHA6XAB3_cjs.settleThreeViews(element);
59146
+ await chunkXIQMFSNG_cjs.settleThreeViews(element);
59066
59147
  const clone = element.cloneNode(true);
59067
59148
  inlineComputedStylesOnClone(element, clone, readComputedStyle);
59068
- chunkYHA6XAB3_cjs.snapshotThreeViewsIntoClone(element, clone);
59069
- chunkYHA6XAB3_cjs.prepareExportClone(clone);
59149
+ chunkXIQMFSNG_cjs.snapshotThreeViewsIntoClone(element, clone);
59150
+ chunkXIQMFSNG_cjs.prepareExportClone(clone);
59070
59151
  const [{ allEmbedded: imagesEmbedded }, externalFonts] = await Promise.all([
59071
59152
  embedImagesOnClone(clone),
59072
59153
  collectExternalFontFaceCss(doc, fetchAsDataUrl)
59073
59154
  ]);
59074
59155
  const allEmbedded = imagesEmbedded && externalFonts.allEmbedded;
59075
59156
  const fontFaceCss = [collectFontFaceCss(doc), externalFonts.css].filter(Boolean).join("\n\n");
59076
- const defs = fontFaceCss ? `<defs><style type="text/css"><![CDATA[${fontFaceCss}]]></style></defs>` : "";
59077
- 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)}" />` : "";
59078
59159
  const bodyMarkup = [
59079
59160
  defs,
59080
59161
  bgRect,
@@ -59892,7 +59973,7 @@ function editGeometryBounds(geometry) {
59892
59973
  }
59893
59974
  return { minX, minY, maxX, maxY };
59894
59975
  }
59895
- function fmt4(value) {
59976
+ function fmt3(value) {
59896
59977
  return String(Math.round(value * 1e3) / 1e3);
59897
59978
  }
59898
59979
  function editGeometryToPaths(geometry, ox, oy, width, height, scale2 = EDIT_POINTS_PATH_SCALE) {
@@ -59907,7 +59988,7 @@ function editGeometryToPaths(geometry, ox, oy, width, height, scale2 = EDIT_POIN
59907
59988
  const segments = [];
59908
59989
  const start = pt(sub.nodes[0]);
59909
59990
  segments.push({ type: "moveTo", pt: start });
59910
- svg2.push(`M ${fmt4(start.x)} ${fmt4(start.y)}`);
59991
+ svg2.push(`M ${fmt3(start.x)} ${fmt3(start.y)}`);
59911
59992
  sub.segments.forEach((seg, i) => {
59912
59993
  if (sub.closed && seg.kind === "line" && i === sub.segments.length - 1) {
59913
59994
  return;
@@ -59915,13 +59996,13 @@ function editGeometryToPaths(geometry, ox, oy, width, height, scale2 = EDIT_POIN
59915
59996
  const end = pt(sub.nodes[(i + 1) % sub.nodes.length]);
59916
59997
  if (seg.kind === "line") {
59917
59998
  segments.push({ type: "lineTo", pt: end });
59918
- svg2.push(`L ${fmt4(end.x)} ${fmt4(end.y)}`);
59999
+ svg2.push(`L ${fmt3(end.x)} ${fmt3(end.y)}`);
59919
60000
  } else {
59920
60001
  const c1 = pt(seg.c1);
59921
60002
  const c2 = pt(seg.c2);
59922
60003
  segments.push({ type: "cubicBezTo", pts: [c1, c2, end] });
59923
60004
  svg2.push(
59924
- `C ${fmt4(c1.x)} ${fmt4(c1.y)} ${fmt4(c2.x)} ${fmt4(c2.y)} ${fmt4(end.x)} ${fmt4(end.y)}`
60005
+ `C ${fmt3(c1.x)} ${fmt3(c1.y)} ${fmt3(c2.x)} ${fmt3(c2.y)} ${fmt3(end.x)} ${fmt3(end.y)}`
59925
60006
  );
59926
60007
  }
59927
60008
  });
@@ -61406,7 +61487,7 @@ var HANDLE_ANCHORS = [
61406
61487
  ["sw", 0, 1],
61407
61488
  ["w", 0, 0.5]
61408
61489
  ];
61409
- function fmt5(n) {
61490
+ function fmt4(n) {
61410
61491
  return String(Math.round(n * 1e3) / 1e3);
61411
61492
  }
61412
61493
  function handleFor(id, fx, fy, frameW, frameH, len, thick) {
@@ -61415,7 +61496,7 @@ function handleFor(id, fx, fy, frameW, frameH, len, thick) {
61415
61496
  const height = fy === 0.5 ? len : isCorner ? len : thick;
61416
61497
  const left = fx === 0 ? 0 : fx === 1 ? frameW - width : frameW / 2 - width / 2;
61417
61498
  const top = fy === 0 ? 0 : fy === 1 ? frameH - height : frameH / 2 - height / 2;
61418
- let path = `M0 0 H${fmt5(width)} V${fmt5(height)} H0 Z`;
61499
+ let path = `M0 0 H${fmt4(width)} V${fmt4(height)} H0 Z`;
61419
61500
  if (isCorner) {
61420
61501
  const x0 = fx === 0 ? 0 : len;
61421
61502
  const y0 = fy === 0 ? 0 : len;
@@ -61429,7 +61510,7 @@ function handleFor(id, fx, fy, frameW, frameH, len, thick) {
61429
61510
  [x0 + sx * thick, y0 + sy * len],
61430
61511
  [x0, y0 + sy * len]
61431
61512
  ];
61432
- path = `M${pts.map(([x, y]) => `${fmt5(x)} ${fmt5(y)}`).join(" L")} Z`;
61513
+ path = `M${pts.map(([x, y]) => `${fmt4(x)} ${fmt4(y)}`).join(" L")} Z`;
61433
61514
  }
61434
61515
  return { id, left, top, width, height, path, cursor: CURSORS[id] };
61435
61516
  }
@@ -61447,8 +61528,8 @@ function buildCropOverlay(el, zoom = 1) {
61447
61528
  };
61448
61529
  const hx = frame.x - image.x;
61449
61530
  const hy = frame.y - image.y;
61450
- const outer2 = `M0 0 H${fmt5(image.width)} V${fmt5(image.height)} H0 Z`;
61451
- const hole = `M${fmt5(hx)} ${fmt5(hy)} H${fmt5(hx + frame.width)} V${fmt5(hy + frame.height)} H${fmt5(hx)} Z`;
61531
+ const outer2 = `M0 0 H${fmt4(image.width)} V${fmt4(image.height)} H0 Z`;
61532
+ const hole = `M${fmt4(hx)} ${fmt4(hy)} H${fmt4(hx + frame.width)} V${fmt4(hy + frame.height)} H${fmt4(hx)} Z`;
61452
61533
  const flips = [
61453
61534
  start.flipHorizontal ? "scaleX(-1)" : "",
61454
61535
  start.flipVertical ? "scaleY(-1)" : ""
@@ -64489,6 +64570,30 @@ function applySorterAction(state, slides, action, active2) {
64489
64570
  }
64490
64571
  }
64491
64572
 
64573
+ // src/pptx/render/viewer-root-options.ts
64574
+ var VIEWER_ROOT_OPTION_DEFAULTS = Object.freeze({
64575
+ initialSlide: 0,
64576
+ showToolbar: true,
64577
+ showThumbnails: true,
64578
+ showCompatibilityToasts: true
64579
+ });
64580
+ function resolveViewerRootOptions(options) {
64581
+ const initialSlide = options?.initialSlide;
64582
+ return {
64583
+ initialSlide: typeof initialSlide === "number" && Number.isFinite(initialSlide) ? initialSlide : VIEWER_ROOT_OPTION_DEFAULTS.initialSlide,
64584
+ showToolbar: options?.showToolbar ?? VIEWER_ROOT_OPTION_DEFAULTS.showToolbar,
64585
+ showThumbnails: options?.showThumbnails ?? VIEWER_ROOT_OPTION_DEFAULTS.showThumbnails,
64586
+ showCompatibilityToasts: options?.showCompatibilityToasts ?? VIEWER_ROOT_OPTION_DEFAULTS.showCompatibilityToasts
64587
+ };
64588
+ }
64589
+ function resolveInitialSlideIndex(initialSlide, slideCount) {
64590
+ if (!(slideCount > 0)) {
64591
+ return 0;
64592
+ }
64593
+ const requested = resolveViewerRootOptions({ initialSlide }).initialSlide;
64594
+ return Math.min(Math.max(Math.trunc(requested), 0), Math.trunc(slideCount) - 1);
64595
+ }
64596
+
64492
64597
  // src/pptx/web-components/control-styles.ts
64493
64598
  var sheetsByDocument = /* @__PURE__ */ new WeakMap();
64494
64599
  function attachControlStyles(root, css) {
@@ -65452,9 +65557,12 @@ function defineOnce(registry2, tag, make) {
65452
65557
  assertContract(registry2, tag);
65453
65558
  if (registry2.get(tag)) return;
65454
65559
  const ctor = make();
65455
- Object.defineProperty(ctor, CONTRACT_KEY, { value: CONTRACT_REVISION });
65560
+ markContract(ctor);
65456
65561
  registry2.define(tag, ctor);
65457
65562
  }
65563
+ function markContract(ctor) {
65564
+ Object.defineProperty(ctor, CONTRACT_KEY, { value: CONTRACT_REVISION });
65565
+ }
65458
65566
  function browserRegistry() {
65459
65567
  return typeof window === "undefined" ? void 0 : window.customElements;
65460
65568
  }
@@ -65635,6 +65743,7 @@ var OFFICE_TOKENS = {
65635
65743
  "--office-launcher-height": "14px",
65636
65744
  "--office-tab-indicator-width": "2.5px",
65637
65745
  "--office-status-bar-height": "24px",
65746
+ "--office-status-bar-separator-opacity": "1",
65638
65747
  "--office-tab-height": "28px",
65639
65748
  "--office-tab-max-width": "220px",
65640
65749
  "--office-zoom-slider-width": "120px",
@@ -65684,6 +65793,8 @@ var OFFICE_TOKENS = {
65684
65793
  "--office-avatar-size": "48px",
65685
65794
  "--office-avatar-color": "var(--office-muted-foreground, #6b7280)",
65686
65795
  "--office-toast-width": "360px",
65796
+ "--office-comments-pane-width": "300px",
65797
+ "--office-comment-avatar-size": "24px",
65687
65798
  "--office-account-field-width": "320px",
65688
65799
  // Component: galleries
65689
65800
  "--office-gallery-trigger-height": "24px",
@@ -65702,6 +65813,8 @@ var OFFICE_TOKENS = {
65702
65813
  "--office-title-bar-mark-size": "20px",
65703
65814
  "--office-title-bar-mark-background": "var(--office-accent, #2563eb)",
65704
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)",
65705
65818
  "--office-title-bar-name-max-width": "240px",
65706
65819
  "--office-title-bar-name-max-width-narrow": "140px",
65707
65820
  "--office-title-bar-search-max-width": "448px",
@@ -68207,7 +68320,7 @@ var OfficeUiSelect = class extends OfficeElement {
68207
68320
  var defineSelect = definer("office-ui-select", () => OfficeUiSelect);
68208
68321
 
68209
68322
  // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/chrome/status-bar.css?raw
68210
- 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";
68211
68324
 
68212
68325
  // src/chrome/status-bar.ts
68213
68326
  var OfficeUiStatusBar = class extends OfficeElement {
@@ -68298,6 +68411,7 @@ var OfficeUiStatusBar = class extends OfficeElement {
68298
68411
  </span>
68299
68412
  <slot></slot>
68300
68413
  <span class="spacer" ?hidden=${!state}></span>
68414
+ <slot name="summary"></slot>
68301
68415
  <span class="toggles" ?hidden=${togglesHidden}>
68302
68416
  ${repeat_js.repeat(
68303
68417
  toggles,
@@ -68348,7 +68462,7 @@ function matchTitleBarCommands(search, query) {
68348
68462
  }
68349
68463
 
68350
68464
  // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/chrome/title-bar.css?raw
68351
- 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";
68352
68466
 
68353
68467
  // src/chrome/title-bar.ts
68354
68468
  var EMPTY = { fileName: "" };
@@ -68628,59 +68742,6 @@ var defineTitleBar = definer("office-ui-title-bar", () => OfficeUiTitleBar, [
68628
68742
  defineSwitch
68629
68743
  ]);
68630
68744
 
68631
- // src/pptx/web-components/status-bar-styles.ts
68632
- var STATUS_BAR_BRIDGE = `
68633
- :host {
68634
- --office-status-bar-height: ${STATUS_BAR_METRICS.height}px;
68635
- --office-surface: color-mix(in srgb, var(--pptx-secondary, #1e1e2e) 50%, transparent);
68636
- --office-border: var(--pptx-border, #33334d);
68637
- --office-foreground: var(--pptx-card-foreground, #e2e8f0);
68638
- --office-font-size-xs: 10px;
68639
- --office-control-height-xs: 24px;
68640
- --office-icon-stroke: 1.45;
68641
- --office-warning: #facc15;
68642
- --office-danger: #f87171;
68643
- }
68644
- .bar { font: 10px/1.2 system-ui, sans-serif; }
68645
- .sep, .item + .item::before { opacity: .6; }
68646
- .zoom-fit { min-width: 3rem; padding: 2px 6px; }
68647
- `;
68648
-
68649
- // src/pptx/web-components/title-bar-styles.ts
68650
- var TITLE_BAR_BRIDGE = `
68651
- :host {
68652
- --office-title-bar-height: ${TITLE_BAR_METRICS.height}px;
68653
- --office-title-bar-background: color-mix(in srgb, var(--pptx-secondary, #1e1e2e) 80%, transparent);
68654
- --office-title-bar-foreground: var(--pptx-card-foreground, #e2e8f0);
68655
- --office-title-bar-border: color-mix(in srgb, var(--pptx-border, #33334d) 60%, transparent);
68656
- --office-title-bar-mark-size: ${TITLE_BAR_METRICS.logoSize}px;
68657
- --office-title-bar-mark-background: ${TITLE_BAR_METRICS.logoBackground};
68658
- --office-title-bar-mark-foreground: #fff;
68659
- --office-font-size-xs: ${TITLE_BAR_METRICS.fontSize}px;
68660
- --office-font-size-sm: ${TITLE_BAR_METRICS.fileNameFontSize}px;
68661
- --office-font-size-2xs: ${TITLE_BAR_METRICS.logoFontSize}px;
68662
- --office-font-weight-medium: ${TITLE_BAR_METRICS.fileNameFontWeight};
68663
- --office-icon-size: 14px;
68664
- --office-icon-stroke: 1.4;
68665
- --office-control-height-md: 24px;
68666
- --office-selected: color-mix(in srgb, var(--pptx-accent, #33334d) 60%, transparent);
68667
- --office-warning: #eab308;
68668
- --office-danger: #f87171;
68669
- --office-popover: var(--pptx-popover, var(--pptx-card, #1e1e2e));
68670
- --office-shadow-lg: 0 14px 28px rgb(0 0 0 / 40%);
68671
- }
68672
- .results button[aria-selected="true"], .results button:hover { background: var(--pptx-accent, #33334d); }
68673
- .name { color: var(--pptx-foreground, #f1f5f9); }
68674
- .switch {
68675
- --pptx-switch-width: ${TITLE_BAR_METRICS.switchTrackWidth}px; --pptx-switch-height: ${TITLE_BAR_METRICS.switchTrackHeight}px;
68676
- --pptx-switch-knob-size: ${TITLE_BAR_METRICS.switchKnobSize}px; --pptx-switch-knob-offset: ${TITLE_BAR_METRICS.switchKnobOffsetOff}px;
68677
- --pptx-switch-knob-travel: ${TITLE_BAR_METRICS.switchKnobOffsetOn - TITLE_BAR_METRICS.switchKnobOffsetOff}px;
68678
- --pptx-switch-track: color-mix(in srgb, var(--pptx-muted-foreground, #a5a5b5) 40%, transparent);
68679
- --pptx-switch-thumb: #fff;
68680
- }
68681
- @media (max-width: 767px), (max-width: 1023px) and (max-height: 520px) { :host { display: none !important; } }
68682
- `;
68683
-
68684
68745
  // src/pptx/web-components/office-token-bridge.ts
68685
68746
  var BASE = `
68686
68747
  --office-font: system-ui, sans-serif;
@@ -68738,9 +68799,53 @@ var BASE = `
68738
68799
  --office-switch-thumb: ${tok("--pptx-switch-thumb")};
68739
68800
  --office-switch-thumb-on: ${tok("--pptx-switch-thumb")};
68740
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
+ }`;
68741
68846
  var EXTRAS = {
68742
- "pptx-ui-title-bar": TITLE_BAR_BRIDGE,
68743
- "pptx-ui-status-bar": STATUS_BAR_BRIDGE,
68847
+ "pptx-ui-title-bar": TITLE_BAR,
68848
+ "pptx-ui-status-bar": STATUS_BAR,
68744
68849
  "pptx-ui-ribbon-gallery": `:host { --office-foreground: var(--pptx-foreground, #f9fafb); --office-background: var(--pptx-background, #111827);
68745
68850
  --office-gallery-strip-background: color-mix(in srgb, var(--pptx-muted, #2a2a3d) 30%, transparent);
68746
68851
  --office-command-icon-color: var(--pptx-primary, #6366f1); --office-z-popover: 1200;
@@ -69666,21 +69771,21 @@ function definePptxPresenterConsole(registry2) {
69666
69771
  }
69667
69772
 
69668
69773
  // src/pptx/web-components/registration-contract.ts
69669
- var CONTRACT_REVISION2 = 1;
69670
- var CONTRACT_KEY2 = /* @__PURE__ */ Symbol.for("pptx-viewer.web-control-contract");
69774
+ var LEGACY_KEY = /* @__PURE__ */ Symbol.for("pptx-viewer.web-control-contract");
69671
69775
  function assertWebControlContract(registry2, names) {
69672
69776
  for (const name of names) {
69673
- const ctor = registry2.get(name);
69674
- const revision = ctor?.[CONTRACT_KEY2];
69675
- if (revision !== void 0 && revision !== CONTRACT_REVISION2) {
69777
+ assertContract(registry2, name);
69778
+ const revision = registry2.get(name)?.[LEGACY_KEY];
69779
+ if (revision !== void 0 && revision !== CONTRACT_REVISION) {
69676
69780
  throw new Error(
69677
- `Incompatible ${name} contract (${revision}; expected ${CONTRACT_REVISION2}). Use matching viewer bindings in this window.`
69781
+ `Incompatible ${name} contract (${revision}; expected ${CONTRACT_REVISION}). Use matching viewer bindings in this window.`
69678
69782
  );
69679
69783
  }
69680
69784
  }
69681
69785
  }
69682
69786
  function markWebControlContract(ctor) {
69683
- Object.defineProperty(ctor, CONTRACT_KEY2, { value: CONTRACT_REVISION2 });
69787
+ markContract(ctor);
69788
+ Object.defineProperty(ctor, LEGACY_KEY, { value: CONTRACT_REVISION });
69684
69789
  }
69685
69790
 
69686
69791
  // src/pptx/web-components/ribbon-scoped-styles.ts
@@ -74165,7 +74270,7 @@ function applyChart3DDrag(bridge, detail) {
74165
74270
  return;
74166
74271
  }
74167
74272
  bridge.commitChartData(
74168
- chunkCJU4P5FT_cjs.withChartPointValue(bridge.chartData, part.seriesIndex, part.pointIndex, value)
74273
+ chunkSTKGUT5S_cjs.withChartPointValue(bridge.chartData, part.seriesIndex, part.pointIndex, value)
74169
74274
  );
74170
74275
  }
74171
74276
  function detailOf(event) {
@@ -74642,7 +74747,7 @@ function calculateNotesPageLayout(slideWidth, slideHeight) {
74642
74747
  };
74643
74748
  }
74644
74749
  function wrapNotesText(text3, maxWidth, fontSize) {
74645
- return chunkAIL3BNZS_cjs.wrapTextByEstimatedWidth(text3, maxWidth, fontSize, { keepBlankLines: true });
74750
+ return chunkYRHK45AB_cjs.wrapTextByEstimatedWidth(text3, maxWidth, fontSize, { keepBlankLines: true });
74646
74751
  }
74647
74752
  function calculateContinuationPageMaxLines() {
74648
74753
  const contentHeight = NOTES_PAGE_H - 2 * NOTES_MARGIN;
@@ -76154,6 +76259,22 @@ Object.defineProperty(exports, "withChartUserShapeUpdated", {
76154
76259
  enumerable: true,
76155
76260
  get: function () { return chartUserShapeEdit.withChartUserShapeUpdated; }
76156
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
+ });
76157
76278
  Object.defineProperty(exports, "canMergeCells", {
76158
76279
  enumerable: true,
76159
76280
  get: function () { return tableMerge.canMergeCells; }
@@ -76214,6 +76335,10 @@ Object.defineProperty(exports, "setCellText", {
76214
76335
  enumerable: true,
76215
76336
  get: function () { return tableCellEdit.setCellText; }
76216
76337
  });
76338
+ Object.defineProperty(exports, "withCellStyle", {
76339
+ enumerable: true,
76340
+ get: function () { return tableCellEdit.withCellStyle; }
76341
+ });
76217
76342
  Object.defineProperty(exports, "withCellText", {
76218
76343
  enumerable: true,
76219
76344
  get: function () { return tableCellEdit.withCellText; }
@@ -76550,22 +76675,6 @@ Object.defineProperty(exports, "romanNumeral", {
76550
76675
  enumerable: true,
76551
76676
  get: function () { return bulletAutonum.romanNumeral; }
76552
76677
  });
76553
- Object.defineProperty(exports, "bulletIndentPx", {
76554
- enumerable: true,
76555
- get: function () { return bulletList.bulletIndentPx; }
76556
- });
76557
- Object.defineProperty(exports, "resolveParagraphBullet", {
76558
- enumerable: true,
76559
- get: function () { return bulletList.resolveParagraphBullet; }
76560
- });
76561
- Object.defineProperty(exports, "resolveParagraphIndent", {
76562
- enumerable: true,
76563
- get: function () { return bulletList.resolveParagraphIndent; }
76564
- });
76565
- Object.defineProperty(exports, "resolvePictureBullet", {
76566
- enumerable: true,
76567
- get: function () { return bulletList.resolvePictureBullet; }
76568
- });
76569
76678
  Object.defineProperty(exports, "THEME_COLOR_LABELS", {
76570
76679
  enumerable: true,
76571
76680
  get: function () { return textTheme.THEME_COLOR_LABELS; }
@@ -77632,6 +77741,7 @@ exports.VIEWER_PANEL_DESCRIPTIONS = VIEWER_PANEL_DESCRIPTIONS;
77632
77741
  exports.VIEWER_PANEL_IDS = VIEWER_PANEL_IDS;
77633
77742
  exports.VIEWER_PREFERENCE_TOGGLES = VIEWER_PREFERENCE_TOGGLES;
77634
77743
  exports.VIEWER_PREFS_STORAGE_KEY = VIEWER_PREFS_STORAGE_KEY;
77744
+ exports.VIEWER_ROOT_OPTION_DEFAULTS = VIEWER_ROOT_OPTION_DEFAULTS;
77635
77745
  exports.VIEWER_SHORTCUT_REFERENCE = VIEWER_SHORTCUT_REFERENCE;
77636
77746
  exports.VIEW_EDITABLE_COMMANDS = VIEW_EDITABLE_COMMANDS;
77637
77747
  exports.WARP_PATH_GENERATORS = WARP_PATH_GENERATORS;
@@ -77957,6 +78067,7 @@ exports.cascadeDownPath = cascadeDownPath;
77957
78067
  exports.cascadeUpPath = cascadeUpPath;
77958
78068
  exports.cell3DBevelCss = cell3DBevelCss;
77959
78069
  exports.cellImageFillCss = cellImageFillCss;
78070
+ exports.cellParagraphBlocks = cellParagraphBlocks;
77960
78071
  exports.cellPatternFillCss = cellPatternFillCss;
77961
78072
  exports.cellRunStyle = cellRunStyle;
77962
78073
  exports.cellStyleToCss = cellStyleToCss;
@@ -77969,6 +78080,7 @@ exports.chartAxisTitlesState = chartAxisTitlesState;
77969
78080
  exports.chartDataLabelsTogglePatch = chartDataLabelsTogglePatch;
77970
78081
  exports.chartEventPathElements = chartEventPathElements;
77971
78082
  exports.chartPlaceholderLabel = chartPlaceholderLabel;
78083
+ exports.chartStylePresetPalette = chartStylePresetPalette;
77972
78084
  exports.chartThreeViewSpec = chartThreeViewSpec;
77973
78085
  exports.checkModifyPassword = checkModifyPassword;
77974
78086
  exports.checkerboardDecl = checkerboardDecl;
@@ -78146,6 +78258,7 @@ exports.cropResetState = cropResetState;
78146
78258
  exports.cropSessionChanged = cropSessionChanged;
78147
78259
  exports.cropToAspectRatio = cropToAspectRatio;
78148
78260
  exports.cropUpdateFromRects = cropUpdateFromRects;
78261
+ exports.cssCdata = cssCdata;
78149
78262
  exports.cssEasingForAccelDecel = cssEasingForAccelDecel;
78150
78263
  exports.cssEasingForTimingCurve = cssEasingForTimingCurve;
78151
78264
  exports.cssKeyframeName = cssKeyframeName;
@@ -79068,6 +79181,7 @@ exports.resolveHistoryDepth = resolveHistoryDepth;
79068
79181
  exports.resolveHyperlinkTargetAttrs = resolveHyperlinkTargetAttrs;
79069
79182
  exports.resolveImageResolutionPpi = resolveImageResolutionPpi;
79070
79183
  exports.resolveImageResolutionScale = resolveImageResolutionScale;
79184
+ exports.resolveInitialSlideIndex = resolveInitialSlideIndex;
79071
79185
  exports.resolveInlineEditAutoFitHeight = resolveInlineEditAutoFitHeight;
79072
79186
  exports.resolveInlineEditNormAutofitShrink = resolveInlineEditNormAutofitShrink;
79073
79187
  exports.resolveInsertedFieldText = resolveInsertedFieldText;
@@ -79152,6 +79266,7 @@ exports.resolveVertOverflowEllipsisStyle = resolveVertOverflowEllipsisStyle;
79152
79266
  exports.resolveVerticalAnchorJustifyContent = resolveVerticalAnchorJustifyContent;
79153
79267
  exports.resolveViewerAddinRows = resolveViewerAddinRows;
79154
79268
  exports.resolveViewerAddinStatus = resolveViewerAddinStatus;
79269
+ exports.resolveViewerRootOptions = resolveViewerRootOptions;
79155
79270
  exports.resolveViewportFitOptions = resolveViewportFitOptions;
79156
79271
  exports.resolveVisibleRibbonTabs = resolveVisibleRibbonTabs;
79157
79272
  exports.resolveWheelSpokeCount = resolveWheelSpokeCount;