ooxml-ui 1.6.2 → 1.8.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 (164) hide show
  1. package/README.md +90 -37
  2. package/custom-elements.json +303 -4
  3. package/dist/chrome/ruler.d.ts +7 -1
  4. package/dist/chrome/ruler.d.ts.map +1 -1
  5. package/dist/chrome/status-bar.d.ts.map +1 -1
  6. package/dist/chrome/tab-strip.d.ts +3 -1
  7. package/dist/chrome/tab-strip.d.ts.map +1 -1
  8. package/dist/chrome/task-pane.d.ts +29 -0
  9. package/dist/chrome/task-pane.d.ts.map +1 -0
  10. package/dist/chrome/title-bar.d.ts +2 -1
  11. package/dist/chrome/title-bar.d.ts.map +1 -1
  12. package/dist/{chunk-QAIVGTQZ.js → chunk-7US5GCXF.js} +158 -153
  13. package/dist/{chunk-Z7CS3UUK.js → chunk-KF72ZA6V.js} +5 -2
  14. package/dist/{chunk-QHAE6Y5B.js → chunk-O7APCA5N.js} +680 -98
  15. package/dist/chunk-W6AV3GHC.js +112 -0
  16. package/dist/controls.d.ts +9 -2
  17. package/dist/controls.d.ts.map +1 -1
  18. package/dist/controls.js +1 -1
  19. package/dist/dialog/dialog-footer.d.ts.map +1 -1
  20. package/dist/dialog/options-dialog.d.ts.map +1 -1
  21. package/dist/docx/editor-core.d.ts +3 -0
  22. package/dist/docx/editor-shell.d.ts +2 -0
  23. package/dist/docx/element-api.d.ts +7 -0
  24. package/dist/docx/events.d.ts +4 -1
  25. package/dist/docx/index.d.ts +1 -0
  26. package/dist/docx/ribbon-color-grid.d.ts +3 -4
  27. package/dist/docx.js +46 -78
  28. package/dist/edit-worker.js +52 -3
  29. package/dist/form/color-custom.d.ts +79 -0
  30. package/dist/form/color-custom.d.ts.map +1 -0
  31. package/dist/form/color-grid.d.ts +125 -0
  32. package/dist/form/color-grid.d.ts.map +1 -0
  33. package/dist/index.d.ts +2 -1
  34. package/dist/index.js +4 -3
  35. package/dist/menu/context-menu.d.ts.map +1 -1
  36. package/dist/menu/menu-button.d.ts +2 -1
  37. package/dist/menu/menu-button.d.ts.map +1 -1
  38. package/dist/notices/paste-options.d.ts.map +1 -1
  39. package/dist/notices/toasts.d.ts.map +1 -1
  40. package/dist/pptx/{chart-3d-view-scene-ERX2GRCD.mjs → chart-3d-view-scene-P6MAFEGL.mjs} +2 -2
  41. package/dist/pptx/{chart-3d-view-scene-55WDENSO.cjs → chart-3d-view-scene-V74F7ZOC.cjs} +38 -38
  42. package/dist/pptx/{chunk-G2YUKLRX.cjs → chunk-526IHNIH.cjs} +1 -1
  43. package/dist/pptx/{chunk-SVN6OBG4.mjs → chunk-DPOES4WM.mjs} +26 -11
  44. package/dist/pptx/{chunk-BLAJIEXA.cjs → chunk-GCS5KBMR.cjs} +511 -653
  45. package/dist/pptx/{chunk-RPRC2EG5.cjs → chunk-K3S2A64B.cjs} +13 -13
  46. package/dist/pptx/{chunk-E55NU4BF.mjs → chunk-MCHPNO42.mjs} +289 -493
  47. package/dist/pptx/{chunk-AWQRQUPL.mjs → chunk-NAFUYAQP.mjs} +1 -1
  48. package/dist/pptx/{chunk-LCIXR7WE.cjs → chunk-VFPVEVF4.cjs} +26 -11
  49. package/dist/pptx/{chunk-TKATCPOK.mjs → chunk-ZAOYPCAM.mjs} +1 -1
  50. package/dist/pptx/dom/activex-controls-overlay.d.ts.map +1 -1
  51. package/dist/pptx/dom/elements/image.d.ts.map +1 -1
  52. package/dist/pptx/dom/elements/media.d.ts.map +1 -1
  53. package/dist/pptx/dom/elements/text-block.d.ts.map +1 -1
  54. package/dist/pptx/dom/elements/zoom.d.ts.map +1 -1
  55. package/dist/pptx/dom/index.cjs +252 -247
  56. package/dist/pptx/dom/index.mjs +11 -6
  57. package/dist/pptx/export/html2canvas-clone.cjs +2 -2
  58. package/dist/pptx/export/html2canvas-clone.mjs +1 -1
  59. package/dist/pptx/index.cjs +3059 -3023
  60. package/dist/pptx/index.mjs +4 -4
  61. package/dist/pptx/render/chart-combo-series.d.ts.map +1 -1
  62. package/dist/pptx/render/chart-combo-stock.cjs +3 -3
  63. package/dist/pptx/render/chart-combo-stock.mjs +1 -1
  64. package/dist/pptx/render/chart-marker-shape.d.ts.map +1 -1
  65. package/dist/pptx/render/chart-overlays.cjs +7 -7
  66. package/dist/pptx/render/chart-overlays.mjs +1 -1
  67. package/dist/pptx/render/chart-surface-treemap.cjs +4 -4
  68. package/dist/pptx/render/chart-surface-treemap.mjs +1 -1
  69. package/dist/pptx/render/chart-view-model.cjs +44 -44
  70. package/dist/pptx/render/chart-view-model.mjs +1 -1
  71. package/dist/pptx/render/chart-waterfall-map.cjs +6 -6
  72. package/dist/pptx/render/chart-waterfall-map.mjs +1 -1
  73. package/dist/pptx/render/connector-router-types.d.ts +4 -52
  74. package/dist/pptx/render/connector-router-types.d.ts.map +1 -1
  75. package/dist/pptx/render/connector-router.d.ts +4 -32
  76. package/dist/pptx/render/connector-router.d.ts.map +1 -1
  77. package/dist/pptx/render/editor-keymap-arrows.d.ts +0 -7
  78. package/dist/pptx/render/editor-keymap-arrows.d.ts.map +1 -1
  79. package/dist/pptx/render/element-interaction.d.ts +2 -6
  80. package/dist/pptx/render/element-interaction.d.ts.map +1 -1
  81. package/dist/pptx/render/index.d.ts +1 -0
  82. package/dist/pptx/render/index.d.ts.map +1 -1
  83. package/dist/pptx/render/ribbon-add-ins.d.ts +53 -0
  84. package/dist/pptx/render/ribbon-add-ins.d.ts.map +1 -0
  85. package/dist/pptx/web-components/index.d.ts +1 -0
  86. package/dist/pptx/web-components/index.d.ts.map +1 -1
  87. package/dist/pptx/web-components/ribbon-add-in.d.ts +20 -0
  88. package/dist/pptx/web-components/ribbon-add-in.d.ts.map +1 -0
  89. package/dist/ribbon/add-in-tabs.d.ts +36 -0
  90. package/dist/ribbon/group-overflow.d.ts +37 -0
  91. package/dist/ribbon/group-overflow.d.ts.map +1 -0
  92. package/dist/ribbon/ribbon-tabs.d.ts.map +1 -1
  93. package/dist/teams/app/index.d.ts +1 -1
  94. package/dist/teams.js +2 -2
  95. package/dist/visio/format-pane-fields.d.ts +42 -0
  96. package/dist/visio/format-pane-view.d.ts +44 -0
  97. package/dist/visio/index.d.ts +1 -0
  98. package/dist/visio/page-setup-action.d.ts +4 -0
  99. package/dist/visio/ribbon-action.d.ts +20 -7
  100. package/dist/visio/ribbon-change-shape.d.ts +17 -6
  101. package/dist/visio/ribbon-color-menu.d.ts +29 -0
  102. package/dist/visio/ribbon-inline-galleries.d.ts +20 -0
  103. package/dist/visio/ribbon-overflow.d.ts +7 -0
  104. package/dist/visio/ribbon-review.d.ts +5 -2
  105. package/dist/visio/ribbon-router.d.ts +3 -3
  106. package/dist/visio/ribbon-shape-styles.d.ts +4 -1
  107. package/dist/visio/ribbon-style-options.d.ts +4 -3
  108. package/dist/visio/ribbon.d.ts +2 -2
  109. package/dist/visio/shapes-document.d.ts +29 -0
  110. package/dist/visio/shapes-sections.d.ts +19 -5
  111. package/dist/visio/shapes-storage.d.ts +15 -0
  112. package/dist/visio/shapes-window.d.ts +9 -2
  113. package/dist/visio/status-bar.d.ts +7 -4
  114. package/dist/visio/stencil-catalog.d.ts +4 -0
  115. package/dist/visio/styles/theme.d.ts +1 -1
  116. package/dist/visio/styles.d.ts +1 -1
  117. package/dist/visio/text-measurer.d.ts +25 -0
  118. package/dist/visio/title-bar.d.ts +9 -0
  119. package/dist/visio/viewer-auto-connect-parts.d.ts +12 -0
  120. package/dist/visio/viewer-auto-connect.d.ts +33 -0
  121. package/dist/visio/viewer-backstage.d.ts +2 -1
  122. package/dist/visio/viewer-canvas.d.ts +1 -1
  123. package/dist/visio/viewer-change-shape.d.ts +8 -4
  124. package/dist/visio/viewer-chrome.d.ts +13 -5
  125. package/dist/visio/viewer-color-menus.d.ts +34 -0
  126. package/dist/visio/viewer-commands.d.ts +4 -1
  127. package/dist/visio/viewer-connector-tool.d.ts +5 -3
  128. package/dist/visio/viewer-data-window.d.ts +5 -1
  129. package/dist/visio/viewer-draw-tool.d.ts +1 -11
  130. package/dist/visio/viewer-element.d.ts +16 -0
  131. package/dist/visio/viewer-format-pane.d.ts +26 -0
  132. package/dist/visio/viewer-guides.d.ts +7 -4
  133. package/dist/visio/viewer-inline-text.d.ts +31 -0
  134. package/dist/visio/viewer-input.d.ts +5 -1
  135. package/dist/visio/viewer-layer-properties.d.ts +18 -0
  136. package/dist/visio/viewer-layout-commands.d.ts +8 -2
  137. package/dist/visio/viewer-more-colors.d.ts +16 -0
  138. package/dist/visio/viewer-options.d.ts +18 -4
  139. package/dist/visio/viewer-page-setup.d.ts +6 -0
  140. package/dist/visio/viewer-ruler-grid.d.ts +25 -0
  141. package/dist/visio/viewer-ruler.d.ts +11 -3
  142. package/dist/visio/viewer-snap-glue.d.ts +23 -0
  143. package/dist/visio/viewer-stencil.d.ts +4 -1
  144. package/dist/visio.js +7595 -5944
  145. package/dist/xlsx/component.d.ts +8 -0
  146. package/dist/xlsx/dialogs/format-cells/color-swatches.d.ts +4 -2
  147. package/dist/xlsx/dialogs/styles.d.ts +1 -1
  148. package/dist/xlsx/events.d.ts +4 -1
  149. package/dist/xlsx/index.d.ts +1 -0
  150. package/dist/xlsx/ribbon/color-grid.d.ts +25 -7
  151. package/dist/xlsx/ribbon/ribbon.d.ts +3 -0
  152. package/dist/xlsx.js +121 -163
  153. package/package.json +3 -2
  154. package/dist/pptx/render/connector-router-astar.d.ts +0 -24
  155. package/dist/pptx/render/connector-router-astar.d.ts.map +0 -1
  156. package/dist/pptx/render/connector-router-graph.d.ts +0 -38
  157. package/dist/pptx/render/connector-router-graph.d.ts.map +0 -1
  158. package/dist/visio/format-shape-dialog.d.ts +0 -21
  159. package/dist/visio/viewer-edit-controls.d.ts +0 -12
  160. package/dist/visio/viewer-format-shape.d.ts +0 -16
  161. package/dist/visio/viewer-geometry-controls.d.ts +0 -14
  162. package/dist/visio/viewer-layer-controls.d.ts +0 -5
  163. package/dist/visio/viewer-paint-dialog.d.ts +0 -28
  164. package/dist/visio/viewer-paint-properties.d.ts +0 -13
@@ -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 chunkRPRC2EG5_cjs = require('./chunk-RPRC2EG5.cjs');
7
+ var chunkK3S2A64B_cjs = require('./chunk-K3S2A64B.cjs');
8
8
  var chunkXOAXPD2W_cjs = require('./chunk-XOAXPD2W.cjs');
9
9
  var chunkBSGCZ4JZ_cjs = require('./chunk-BSGCZ4JZ.cjs');
10
10
  var chunkIOOI63TH_cjs = require('./chunk-IOOI63TH.cjs');
@@ -12,10 +12,10 @@ var chunkZJFN5POF_cjs = require('./chunk-ZJFN5POF.cjs');
12
12
  var chunkSTXGHV25_cjs = require('./chunk-STXGHV25.cjs');
13
13
  var chunkWB25PCHQ_cjs = require('./chunk-WB25PCHQ.cjs');
14
14
  var chunkW3X2UVYQ_cjs = require('./chunk-W3X2UVYQ.cjs');
15
- var chunkLCIXR7WE_cjs = require('./chunk-LCIXR7WE.cjs');
15
+ var chunkVFPVEVF4_cjs = require('./chunk-VFPVEVF4.cjs');
16
16
  var chunkFOE75Z6N_cjs = require('./chunk-FOE75Z6N.cjs');
17
17
  var chunkNTXHQHCS_cjs = require('./chunk-NTXHQHCS.cjs');
18
- var chunkG2YUKLRX_cjs = require('./chunk-G2YUKLRX.cjs');
18
+ var chunk526IHNIH_cjs = require('./chunk-526IHNIH.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');
@@ -74,6 +74,7 @@ var templateEditing = require('ooxml-core/pptx/editor/render/template-editing');
74
74
  var ui = require('ooxml-core/pptx/ui');
75
75
  var deckSaveEncryption = require('ooxml-core/pptx/editor/render/deck-save-encryption');
76
76
  var tableStyleMapEdits = require('ooxml-core/pptx/editor/render/table-style-map-edits');
77
+ var ribbon = require('ooxml-core/ribbon');
77
78
  var editorMutations = require('ooxml-core/pptx/editor/render/editor-mutations');
78
79
  var slideSizeRescale = require('ooxml-core/pptx/editor/render/slide-size-rescale');
79
80
  var tableStyleEditorParts = require('ooxml-core/pptx/editor/render/table-style-editor-parts');
@@ -1070,7 +1071,7 @@ function buildRectPathGradientDef(stops, id, focalPoint, fillToRect) {
1070
1071
  color: stop.color,
1071
1072
  ...typeof stop.opacity === "number" ? { opacity: stop.opacity } : {}
1072
1073
  }));
1073
- const markup = chunkLCIXR7WE_cjs.buildRectPathGradientSvg(rectStops, focalPoint, fillToRect);
1074
+ const markup = chunkVFPVEVF4_cjs.buildRectPathGradientSvg(rectStops, focalPoint, fillToRect);
1074
1075
  return { kind: "rectPath", id, href: `data:image/svg+xml,${encodeURIComponent(markup)}` };
1075
1076
  }
1076
1077
  function rectPathGradientMarkup(def) {
@@ -1084,9 +1085,9 @@ function buildSvgStrokePatternDef(style, elementId) {
1084
1085
  if (!style || style.strokeFillMode !== "pattern" || !style.strokePatternPreset) {
1085
1086
  return void 0;
1086
1087
  }
1087
- const fg = chunkLCIXR7WE_cjs.normalizeHexColor(style.strokeColor, "#000000");
1088
- const bg = chunkLCIXR7WE_cjs.normalizeHexColor(style.strokePatternBackgroundColor, "#ffffff");
1089
- const tile4 = chunkLCIXR7WE_cjs.getPatternTile(style.strokePatternPreset, fg, bg);
1088
+ const fg = chunkVFPVEVF4_cjs.normalizeHexColor(style.strokeColor, "#000000");
1089
+ const bg = chunkVFPVEVF4_cjs.normalizeHexColor(style.strokePatternBackgroundColor, "#ffffff");
1090
+ const tile4 = chunkVFPVEVF4_cjs.getPatternTile(style.strokePatternPreset, fg, bg);
1090
1091
  if (!tile4) {
1091
1092
  return void 0;
1092
1093
  }
@@ -1109,7 +1110,7 @@ function svgGradientId(elementId, suffix = "grad") {
1109
1110
  return `pptx-${suffix}-${seed}`;
1110
1111
  }
1111
1112
  function toSvgStops(stops) {
1112
- return chunkLCIXR7WE_cjs.sanitizeGradientStops(stops).map((stop) => ({
1113
+ return chunkVFPVEVF4_cjs.sanitizeGradientStops(stops).map((stop) => ({
1113
1114
  offset: round4(stop.position / 100),
1114
1115
  color: stop.color,
1115
1116
  ...typeof stop.opacity === "number" ? { opacity: round4(stop.opacity) } : {}
@@ -1136,7 +1137,7 @@ function buildFromSource(source, id) {
1136
1137
  if ((source.pathType || "circle") === "rect") {
1137
1138
  return buildRectPathGradientDef(stops, id, source.focalPoint, source.fillToRect);
1138
1139
  }
1139
- const { cx, cy } = chunkLCIXR7WE_cjs.computeGradientCenter(source.fillToRect, source.focalPoint);
1140
+ const { cx, cy } = chunkVFPVEVF4_cjs.computeGradientCenter(source.fillToRect, source.focalPoint);
1140
1141
  const fx = cx / 100;
1141
1142
  const fy = cy / 100;
1142
1143
  const r = Math.hypot(Math.max(fx, 1 - fx), Math.max(fy, 1 - fy));
@@ -1278,12 +1279,12 @@ function getPresetShapeVectorGeometry(shapeType, width, height, adjustments) {
1278
1279
  function outlineStrands(compoundLine, strokeWidth) {
1279
1280
  const offsets2 = getCompoundLineOffsets(compoundLine, strokeWidth);
1280
1281
  if (offsets2.length <= 1) {
1281
- return [{ strokeWidth, cssStrokeWidth: chunkG2YUKLRX_cjs.screenStrokeWidth(strokeWidth), offset: 0 }];
1282
+ return [{ strokeWidth, cssStrokeWidth: chunk526IHNIH_cjs.screenStrokeWidth(strokeWidth), offset: 0 }];
1282
1283
  }
1283
1284
  const widths = getCompoundLineWidths(compoundLine, strokeWidth);
1284
1285
  return offsets2.map((offset, idx) => {
1285
1286
  const width = widths[idx] ?? strokeWidth;
1286
- return { strokeWidth: width, cssStrokeWidth: chunkG2YUKLRX_cjs.screenStrokeWidth(width), offset };
1287
+ return { strokeWidth: width, cssStrokeWidth: chunk526IHNIH_cjs.screenStrokeWidth(width), offset };
1287
1288
  });
1288
1289
  }
1289
1290
  function needsCenteredStrokeOverlay(element, style, declaredWidth) {
@@ -1319,11 +1320,11 @@ function buildStrokeOutline(element) {
1319
1320
  return {
1320
1321
  d,
1321
1322
  paint,
1322
- stroke: paint ? svgGradientFillRef(paint) : chunkLCIXR7WE_cjs.colorWithOpacity(style?.strokeColor ?? chunkLCIXR7WE_cjs.DEFAULT_STROKE_COLOR, style?.strokeOpacity),
1323
+ stroke: paint ? svgGradientFillRef(paint) : chunkVFPVEVF4_cjs.colorWithOpacity(style?.strokeColor ?? chunkVFPVEVF4_cjs.DEFAULT_STROKE_COLOR, style?.strokeOpacity),
1323
1324
  strokeWidth,
1324
1325
  strands: outlineStrands(style?.compoundLine, strokeWidth),
1325
- dashArray: chunkLCIXR7WE_cjs.getSvgStrokeDasharray(
1326
- chunkLCIXR7WE_cjs.normalizeStrokeDashType(style?.strokeDash),
1326
+ dashArray: chunkVFPVEVF4_cjs.getSvgStrokeDasharray(
1327
+ chunkVFPVEVF4_cjs.normalizeStrokeDashType(style?.strokeDash),
1327
1328
  Math.max(strokeWidth, 1),
1328
1329
  style?.customDashSegments
1329
1330
  ),
@@ -1503,18 +1504,18 @@ function getComputedStrokeStyle(element) {
1503
1504
  return { ...NO_STROKE, ...joins };
1504
1505
  }
1505
1506
  const borderWidth = width;
1506
- const borderStyle = chunkLCIXR7WE_cjs.getCssBorderDashStyle(
1507
- chunkLCIXR7WE_cjs.normalizeStrokeDashType(style.strokeDash),
1507
+ const borderStyle = chunkVFPVEVF4_cjs.getCssBorderDashStyle(
1508
+ chunkVFPVEVF4_cjs.normalizeStrokeDashType(style.strokeDash),
1508
1509
  style.compoundLine
1509
1510
  );
1510
- const rawColor = style.strokeColor ?? chunkLCIXR7WE_cjs.DEFAULT_STROKE_COLOR;
1511
- const borderColor = style.strokeOpacity === void 0 ? rawColor : chunkLCIXR7WE_cjs.colorWithOpacity(chunkLCIXR7WE_cjs.normalizeHexColor(rawColor, chunkLCIXR7WE_cjs.DEFAULT_STROKE_COLOR), style.strokeOpacity);
1511
+ const rawColor = style.strokeColor ?? chunkVFPVEVF4_cjs.DEFAULT_STROKE_COLOR;
1512
+ const borderColor = style.strokeOpacity === void 0 ? rawColor : chunkVFPVEVF4_cjs.colorWithOpacity(chunkVFPVEVF4_cjs.normalizeHexColor(rawColor, chunkVFPVEVF4_cjs.DEFAULT_STROKE_COLOR), style.strokeOpacity);
1512
1513
  return {
1513
1514
  borderWidth,
1514
- cssBorderWidth: chunkG2YUKLRX_cjs.screenStrokeWidth(borderWidth),
1515
+ cssBorderWidth: chunk526IHNIH_cjs.screenStrokeWidth(borderWidth),
1515
1516
  borderStyle,
1516
1517
  borderColor,
1517
- border: chunkG2YUKLRX_cjs.screenBorder(borderWidth, borderStyle ?? "solid", borderColor),
1518
+ border: chunk526IHNIH_cjs.screenBorder(borderWidth, borderStyle ?? "solid", borderColor),
1518
1519
  ...joins
1519
1520
  };
1520
1521
  }
@@ -1670,7 +1671,7 @@ function resolveGroupChildFill(child, parentGroupFill) {
1670
1671
  if (!parentGroupFill || !pptx.hasShapeProperties(child) || child.shapeStyle?.fillMode !== "group") {
1671
1672
  return void 0;
1672
1673
  }
1673
- return chunkLCIXR7WE_cjs.getComputedFillStyle(child, parentGroupFill);
1674
+ return chunkVFPVEVF4_cjs.getComputedFillStyle(child, parentGroupFill);
1674
1675
  }
1675
1676
  function getFrameInverseTransform(element) {
1676
1677
  const transforms = [];
@@ -1722,9 +1723,9 @@ function parseDrawingColorChoice(colorNode, schemeColorOverrides) {
1722
1723
  }
1723
1724
  if (colorNode["a:scrgbClr"]) {
1724
1725
  const scrgb = colorNode["a:scrgbClr"];
1725
- const red = chunkLCIXR7WE_cjs.parseDrawingPercent(scrgb["@_r"]);
1726
- const green = chunkLCIXR7WE_cjs.parseDrawingPercent(scrgb["@_g"]);
1727
- const blue = chunkLCIXR7WE_cjs.parseDrawingPercent(scrgb["@_b"]);
1726
+ const red = chunkVFPVEVF4_cjs.parseDrawingPercent(scrgb["@_r"]);
1727
+ const green = chunkVFPVEVF4_cjs.parseDrawingPercent(scrgb["@_g"]);
1728
+ const blue = chunkVFPVEVF4_cjs.parseDrawingPercent(scrgb["@_b"]);
1728
1729
  if (red !== void 0 && green !== void 0 && blue !== void 0) {
1729
1730
  const toHex2 = (value) => Math.min(255, Math.max(0, Math.round(value))).toString(16).padStart(2, "0").toUpperCase();
1730
1731
  const base2 = `#${toHex2(red * 255)}${toHex2(green * 255)}${toHex2(blue * 255)}`;
@@ -1764,8 +1765,8 @@ function parseDrawingColorChoice(colorNode, schemeColorOverrides) {
1764
1765
  const lumRaw = Number.parseFloat(String(hslNode["@_lum"] ?? ""));
1765
1766
  if (Number.isFinite(hueRaw) && Number.isFinite(satRaw) && Number.isFinite(lumRaw)) {
1766
1767
  const h = hueRaw / 6e4;
1767
- const s = chunkLCIXR7WE_cjs.clampUnitInterval(satRaw / 1e5);
1768
- const l = chunkLCIXR7WE_cjs.clampUnitInterval(lumRaw / 1e5);
1768
+ const s = chunkVFPVEVF4_cjs.clampUnitInterval(satRaw / 1e5);
1769
+ const l = chunkVFPVEVF4_cjs.clampUnitInterval(lumRaw / 1e5);
1769
1770
  const rgb = pptx.hslToRgb(h, s, l);
1770
1771
  const toHex2 = (value) => Math.min(255, Math.max(0, Math.round(value))).toString(16).padStart(2, "0").toUpperCase();
1771
1772
  const base2 = `#${toHex2(rgb.r)}${toHex2(rgb.g)}${toHex2(rgb.b)}`;
@@ -1805,11 +1806,11 @@ function parseDrawingColorOpacity(colorNode) {
1805
1806
  if (!colorChoice) {
1806
1807
  return void 0;
1807
1808
  }
1808
- const alpha = chunkLCIXR7WE_cjs.parseDrawingPercent(colorChoice["a:alpha"]?.["@_val"]);
1809
- const alphaMod = chunkLCIXR7WE_cjs.parseDrawingPercent(
1809
+ const alpha = chunkVFPVEVF4_cjs.parseDrawingPercent(colorChoice["a:alpha"]?.["@_val"]);
1810
+ const alphaMod = chunkVFPVEVF4_cjs.parseDrawingPercent(
1810
1811
  colorChoice["a:alphaMod"]?.["@_val"]
1811
1812
  );
1812
- const alphaOff = chunkLCIXR7WE_cjs.parseDrawingPercent(
1813
+ const alphaOff = chunkVFPVEVF4_cjs.parseDrawingPercent(
1813
1814
  colorChoice["a:alphaOff"]?.["@_val"]
1814
1815
  );
1815
1816
  if (alpha === void 0 && alphaMod === void 0 && alphaOff === void 0) {
@@ -1822,7 +1823,7 @@ function parseDrawingColorOpacity(colorNode) {
1822
1823
  if (alphaOff !== void 0) {
1823
1824
  opacity += alphaOff;
1824
1825
  }
1825
- return chunkLCIXR7WE_cjs.clampUnitInterval(opacity);
1826
+ return chunkVFPVEVF4_cjs.clampUnitInterval(opacity);
1826
1827
  }
1827
1828
  function substituteScriptFont(name, panose, baseFontFamily) {
1828
1829
  return name ? pptx.getSubstituteFontFamily(name, pptx.parsePanoseString(panose)) : baseFontFamily;
@@ -2033,7 +2034,7 @@ function buildPatternOverlayTile(pattern) {
2033
2034
  if (!pattern) {
2034
2035
  return void 0;
2035
2036
  }
2036
- const tile4 = chunkLCIXR7WE_cjs.getPatternTile(
2037
+ const tile4 = chunkVFPVEVF4_cjs.getPatternTile(
2037
2038
  pattern.preset,
2038
2039
  pattern.foreground ?? "#000000",
2039
2040
  pattern.background ?? "#ffffff"
@@ -3587,10 +3588,10 @@ function getMeasureCtx() {
3587
3588
  return measureCtx;
3588
3589
  }
3589
3590
  function envelopeFontSizePx(font) {
3590
- return font.fontSizePx && font.fontSizePx > 0 ? font.fontSizePx : chunkLCIXR7WE_cjs.DEFAULT_TEXT_FONT_SIZE;
3591
+ return font.fontSizePx && font.fontSizePx > 0 ? font.fontSizePx : chunkVFPVEVF4_cjs.DEFAULT_TEXT_FONT_SIZE;
3591
3592
  }
3592
3593
  function toCanvasFont(font, sizePx = envelopeFontSizePx(font)) {
3593
- const family2 = font.fontFamily || chunkLCIXR7WE_cjs.DEFAULT_FONT_FAMILY;
3594
+ const family2 = font.fontFamily || chunkVFPVEVF4_cjs.DEFAULT_FONT_FAMILY;
3594
3595
  return `${font.italic ? "italic " : ""}${font.bold ? "bold " : ""}${sizePx}px ${family2}`;
3595
3596
  }
3596
3597
  function enableKerning(ctx) {
@@ -4585,7 +4586,7 @@ function createGlyphOutlineLookup(cache) {
4585
4586
  return (char, font, x, y) => {
4586
4587
  const parsed = cache.get(font.fontFamily, font.bold, font.italic);
4587
4588
  if (parsed) {
4588
- const size = font.fontSizePx && font.fontSizePx > 0 ? font.fontSizePx : chunkLCIXR7WE_cjs.DEFAULT_TEXT_FONT_SIZE;
4589
+ const size = font.fontSizePx && font.fontSizePx > 0 ? font.fontSizePx : chunkVFPVEVF4_cjs.DEFAULT_TEXT_FONT_SIZE;
4589
4590
  const commands = extractGlyphOutlineCommands(parsed, char, x, y, size);
4590
4591
  if (commands) {
4591
4592
  return commands;
@@ -6773,7 +6774,7 @@ function computeTrendlinePoints(trendline, values, catCount, layout, range, mode
6773
6774
  let rSquared = 0;
6774
6775
  switch (trendline.trendlineType) {
6775
6776
  case "linear": {
6776
- const reg = chunkLCIXR7WE_cjs.computeLinearRegression(xVals, yVals);
6777
+ const reg = chunkVFPVEVF4_cjs.computeLinearRegression(xVals, yVals);
6777
6778
  const intercept = trendline.intercept;
6778
6779
  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;
6779
6780
  const b = intercept ?? reg.intercept;
@@ -6788,7 +6789,7 @@ function computeTrendlinePoints(trendline, values, catCount, layout, range, mode
6788
6789
  if (logY.length < 2) {
6789
6790
  return { points: [], equation: "", rSquared: 0 };
6790
6791
  }
6791
- const reg = chunkLCIXR7WE_cjs.computeLinearRegression(filteredX, logY);
6792
+ const reg = chunkVFPVEVF4_cjs.computeLinearRegression(filteredX, logY);
6792
6793
  const a = Math.exp(reg.intercept);
6793
6794
  const b = reg.slope;
6794
6795
  evalFn = (x) => a * Math.exp(b * x);
@@ -6802,7 +6803,7 @@ function computeTrendlinePoints(trendline, values, catCount, layout, range, mode
6802
6803
  if (lnX.length < 2) {
6803
6804
  return { points: [], equation: "", rSquared: 0 };
6804
6805
  }
6805
- const reg = chunkLCIXR7WE_cjs.computeLinearRegression(lnX, filteredY);
6806
+ const reg = chunkVFPVEVF4_cjs.computeLinearRegression(lnX, filteredY);
6806
6807
  evalFn = (x) => x > 0 ? reg.slope * Math.log(x) + reg.intercept : 0;
6807
6808
  equation = `y = ${reg.slope.toFixed(2)}ln(x) + ${reg.intercept.toFixed(2)}`;
6808
6809
  rSquared = reg.rSquared;
@@ -6814,7 +6815,7 @@ function computeTrendlinePoints(trendline, values, catCount, layout, range, mode
6814
6815
  if (logX.length < 2) {
6815
6816
  return { points: [], equation: "", rSquared: 0 };
6816
6817
  }
6817
- const reg = chunkLCIXR7WE_cjs.computeLinearRegression(logX, logY);
6818
+ const reg = chunkVFPVEVF4_cjs.computeLinearRegression(logX, logY);
6818
6819
  const a = Math.exp(reg.intercept);
6819
6820
  evalFn = (x) => x > 0 ? a * x ** reg.slope : 0;
6820
6821
  equation = `y = ${a.toFixed(2)}x^${reg.slope.toFixed(2)}`;
@@ -6823,10 +6824,10 @@ function computeTrendlinePoints(trendline, values, catCount, layout, range, mode
6823
6824
  }
6824
6825
  case "polynomial": {
6825
6826
  const order = Math.min(trendline.order ?? 2, 6);
6826
- const coeffs = chunkLCIXR7WE_cjs.fitPolynomial(xVals, yVals, order);
6827
+ const coeffs = chunkVFPVEVF4_cjs.fitPolynomial(xVals, yVals, order);
6827
6828
  evalFn = (x) => coeffs.reduce((s, c, i) => s + c * x ** i, 0);
6828
6829
  equation = coeffs.map((c, i) => `${c.toFixed(2)}x^${i}`).join(" + ");
6829
- rSquared = chunkLCIXR7WE_cjs.computeRSquared(xVals, yVals, evalFn);
6830
+ rSquared = chunkVFPVEVF4_cjs.computeRSquared(xVals, yVals, evalFn);
6830
6831
  break;
6831
6832
  }
6832
6833
  case "movingAvg": {
@@ -7164,7 +7165,7 @@ var COMBO_SERIES_TYPE_OPTIONS = [
7164
7165
  function patchChartData(data, patch) {
7165
7166
  const { chartType, ...rest } = patch;
7166
7167
  if (chartType === "pareto") {
7167
- return { ...chunkLCIXR7WE_cjs.applyParetoConversion(data), ...rest };
7168
+ return { ...chunkVFPVEVF4_cjs.applyParetoConversion(data), ...rest };
7168
7169
  }
7169
7170
  if (chartType && chartType !== data.chartType) {
7170
7171
  const adapted = pptx.chartDataChangeType(data, chartType);
@@ -7226,8 +7227,8 @@ function buildParetoInsertData() {
7226
7227
  layout: "histogram",
7227
7228
  binCount: PARETO_BIN_COUNT
7228
7229
  };
7229
- const bins = chunkLCIXR7WE_cjs.computeHistogramBins(PARETO_VALUES, histogramOptions);
7230
- const ordered = chunkLCIXR7WE_cjs.orderParetoEntries(
7230
+ const bins = chunkVFPVEVF4_cjs.computeHistogramBins(PARETO_VALUES, histogramOptions);
7231
+ const ordered = chunkVFPVEVF4_cjs.orderParetoEntries(
7231
7232
  bins.map((bin, index) => ({ value: bin.value, label: bin.label, sourcePointIndex: index }))
7232
7233
  );
7233
7234
  return {
@@ -7240,7 +7241,7 @@ function buildParetoInsertData() {
7240
7241
  },
7241
7242
  {
7242
7243
  name: "Cumulative %",
7243
- values: chunkLCIXR7WE_cjs.cumulativePercentOfTotal(ordered.map((entry5) => entry5.value)),
7244
+ values: chunkVFPVEVF4_cjs.cumulativePercentOfTotal(ordered.map((entry5) => entry5.value)),
7244
7245
  histogramOptions: { layout: "pareto" }
7245
7246
  }
7246
7247
  ]
@@ -7503,7 +7504,7 @@ var FILL_PATTERN_LABEL_KEYS = {
7503
7504
  trellis: "pptx.fillPatterns.trellis",
7504
7505
  zigZag: "pptx.fillPatterns.zigZag"
7505
7506
  };
7506
- var PATTERN_PRESET_OPTIONS = chunkLCIXR7WE_cjs.OOXML_PATTERN_PRESETS.map(
7507
+ var PATTERN_PRESET_OPTIONS = chunkVFPVEVF4_cjs.OOXML_PATTERN_PRESETS.map(
7507
7508
  (value) => ({ value, labelKey: FILL_PATTERN_LABEL_KEYS[value] })
7508
7509
  );
7509
7510
 
@@ -7652,41 +7653,41 @@ var CHART_STYLE_PRESETS = [
7652
7653
  id: "colorful",
7653
7654
  labelKey: "pptx.chart.styleColorful",
7654
7655
  styleId: 2,
7655
- palette: () => chunkLCIXR7WE_cjs.getChartStylePalette(2)
7656
+ palette: () => chunkVFPVEVF4_cjs.getChartStylePalette(2)
7656
7657
  },
7657
7658
  {
7658
7659
  id: "monochrome",
7659
7660
  labelKey: "pptx.chart.styleMonochrome",
7660
7661
  styleId: 3,
7661
- palette: () => chunkLCIXR7WE_cjs.getChartStylePalette(3)
7662
+ palette: () => chunkVFPVEVF4_cjs.getChartStylePalette(3)
7662
7663
  },
7663
7664
  {
7664
7665
  id: "colorfulLight",
7665
7666
  labelKey: "pptx.chart.styleColorfulLight",
7666
7667
  styleId: 18,
7667
- palette: () => recolour((c) => chunkLCIXR7WE_cjs.tint(c, 0.3))
7668
+ palette: () => recolour((c) => chunkVFPVEVF4_cjs.tint(c, 0.3))
7668
7669
  },
7669
7670
  {
7670
7671
  id: "colorfulDark",
7671
7672
  labelKey: "pptx.chart.styleColorfulDark",
7672
7673
  styleId: 26,
7673
- palette: () => recolour((c) => chunkLCIXR7WE_cjs.shade(c, 0.3))
7674
+ palette: () => recolour((c) => chunkVFPVEVF4_cjs.shade(c, 0.3))
7674
7675
  },
7675
7676
  {
7676
7677
  id: "mutedDark",
7677
7678
  labelKey: "pptx.chart.styleMutedDark",
7678
7679
  styleId: 34,
7679
- palette: () => recolour((c) => chunkLCIXR7WE_cjs.shade(chunkLCIXR7WE_cjs.tint(c, 0.3), 0.4))
7680
+ palette: () => recolour((c) => chunkVFPVEVF4_cjs.shade(chunkVFPVEVF4_cjs.tint(c, 0.3), 0.4))
7680
7681
  },
7681
7682
  {
7682
7683
  id: "pastel",
7683
7684
  labelKey: "pptx.chart.stylePastel",
7684
7685
  styleId: 42,
7685
- palette: () => recolour((c) => chunkLCIXR7WE_cjs.tint(c, 0.55))
7686
+ palette: () => recolour((c) => chunkVFPVEVF4_cjs.tint(c, 0.55))
7686
7687
  }
7687
7688
  ];
7688
7689
  function recolour(transform) {
7689
- return chunkLCIXR7WE_cjs.getChartStylePalette(2).map(transform);
7690
+ return chunkVFPVEVF4_cjs.getChartStylePalette(2).map(transform);
7690
7691
  }
7691
7692
  function chartStylePresetPalette(id) {
7692
7693
  return findPreset(id)?.palette();
@@ -7800,7 +7801,7 @@ function applyChartElementToggle(chartData, key, checked) {
7800
7801
  style: { ...chartData.style, ...chartDataLabelsTogglePatch(chartData.style, checked) }
7801
7802
  });
7802
7803
  case "gridlines":
7803
- return patchChartData(chartData, chunkLCIXR7WE_cjs.chartGridlinesPatch(chartData, checked));
7804
+ return patchChartData(chartData, chunkVFPVEVF4_cjs.chartGridlinesPatch(chartData, checked));
7804
7805
  case "axes":
7805
7806
  return patchChartData(chartData, chartAxesVisibilityPatch(chartData, checked));
7806
7807
  case "axisTitles":
@@ -7839,7 +7840,7 @@ function buildElements(chartData) {
7839
7840
  {
7840
7841
  key: "gridlines",
7841
7842
  labelKey: "pptx.chart.showGridlines",
7842
- checked: chunkLCIXR7WE_cjs.chartGridlinesState(chartData)
7843
+ checked: chunkVFPVEVF4_cjs.chartGridlinesState(chartData)
7843
7844
  },
7844
7845
  {
7845
7846
  key: "dataLabels",
@@ -8251,17 +8252,17 @@ function chartEventPathElements(event) {
8251
8252
  }
8252
8253
  function findChartPartElementInEvent(event) {
8253
8254
  for (const el of chartEventPathElements(event)) {
8254
- if (el.getAttribute(chunkRPRC2EG5_cjs.CHART_PART_ATTR) !== null) {
8255
+ if (el.getAttribute(chunkK3S2A64B_cjs.CHART_PART_ATTR) !== null) {
8255
8256
  return el;
8256
8257
  }
8257
8258
  }
8258
8259
  return null;
8259
8260
  }
8260
8261
  function findChartPartInEvent(event) {
8261
- return chunkRPRC2EG5_cjs.chartPartFromElement(findChartPartElementInEvent(event));
8262
+ return chunkK3S2A64B_cjs.chartPartFromElement(findChartPartElementInEvent(event));
8262
8263
  }
8263
8264
  function isChartTitleEvent(event) {
8264
- return findChartPartElementInEvent(event)?.getAttribute(chunkRPRC2EG5_cjs.CHART_PART_ATTR) === "title";
8265
+ return findChartPartElementInEvent(event)?.getAttribute(chunkK3S2A64B_cjs.CHART_PART_ATTR) === "title";
8265
8266
  }
8266
8267
 
8267
8268
  // src/pptx/render/chart-interaction-mark-drag.ts
@@ -8296,14 +8297,14 @@ function advanceChartMarkDrag(state, clientX, clientY, rect3) {
8296
8297
  return null;
8297
8298
  }
8298
8299
  const travelled = Math.hypot(clientX - state.startClientX, clientY - state.startClientY);
8299
- if (!state.moved && travelled < chunkRPRC2EG5_cjs.CHART_DRAG_THRESHOLD_PX) {
8300
+ if (!state.moved && travelled < chunkK3S2A64B_cjs.CHART_DRAG_THRESHOLD_PX) {
8300
8301
  return null;
8301
8302
  }
8302
8303
  if (rect3.width === 0 || rect3.height === 0) {
8303
8304
  return null;
8304
8305
  }
8305
8306
  state.moved = true;
8306
- const pointer = clientPointToViewBox(clientX, clientY, rect3, state.svgWidth, state.svgHeight), value = chunkRPRC2EG5_cjs.resolveChartDragValue(state.geometry, pointer), chartData = chunkRPRC2EG5_cjs.withChartPointValue(
8307
+ const pointer = clientPointToViewBox(clientX, clientY, rect3, state.svgWidth, state.svgHeight), value = chunkK3S2A64B_cjs.resolveChartDragValue(state.geometry, pointer), chartData = chunkK3S2A64B_cjs.withChartPointValue(
8307
8308
  state.baseChartData,
8308
8309
  state.part.seriesIndex,
8309
8310
  state.part.pointIndex,
@@ -9578,31 +9579,31 @@ function encodeWav(samples, sampleRate = SAMPLE_RATE) {
9578
9579
  const byteRate = sampleRate * blockAlign;
9579
9580
  const dataSize = samples.length * blockAlign;
9580
9581
  const buffer = new ArrayBuffer(HEADER_BYTES + dataSize);
9581
- const view = new DataView(buffer);
9582
- writeAscii(view, 0, "RIFF");
9583
- view.setUint32(4, 36 + dataSize, true);
9584
- writeAscii(view, 8, "WAVE");
9585
- writeAscii(view, 12, "fmt ");
9586
- view.setUint32(16, 16, true);
9587
- view.setUint16(20, 1, true);
9588
- view.setUint16(22, NUM_CHANNELS, true);
9589
- view.setUint32(24, sampleRate, true);
9590
- view.setUint32(28, byteRate, true);
9591
- view.setUint16(32, blockAlign, true);
9592
- view.setUint16(34, BITS_PER_SAMPLE, true);
9593
- writeAscii(view, 36, "data");
9594
- view.setUint32(40, dataSize, true);
9582
+ const view2 = new DataView(buffer);
9583
+ writeAscii(view2, 0, "RIFF");
9584
+ view2.setUint32(4, 36 + dataSize, true);
9585
+ writeAscii(view2, 8, "WAVE");
9586
+ writeAscii(view2, 12, "fmt ");
9587
+ view2.setUint32(16, 16, true);
9588
+ view2.setUint16(20, 1, true);
9589
+ view2.setUint16(22, NUM_CHANNELS, true);
9590
+ view2.setUint32(24, sampleRate, true);
9591
+ view2.setUint32(28, byteRate, true);
9592
+ view2.setUint16(32, blockAlign, true);
9593
+ view2.setUint16(34, BITS_PER_SAMPLE, true);
9594
+ writeAscii(view2, 36, "data");
9595
+ view2.setUint32(40, dataSize, true);
9595
9596
  let offset = HEADER_BYTES;
9596
9597
  for (const sample of samples) {
9597
9598
  const clamped = Math.max(-1, Math.min(1, sample));
9598
- view.setInt16(offset, Math.round(clamped < 0 ? clamped * 32768 : clamped * 32767), true);
9599
+ view2.setInt16(offset, Math.round(clamped < 0 ? clamped * 32768 : clamped * 32767), true);
9599
9600
  offset += 2;
9600
9601
  }
9601
9602
  return new Uint8Array(buffer);
9602
9603
  }
9603
- function writeAscii(view, offset, text3) {
9604
+ function writeAscii(view2, offset, text3) {
9604
9605
  for (let i = 0; i < text3.length; i++) {
9605
- view.setUint8(offset + i, text3.charCodeAt(i));
9606
+ view2.setUint8(offset + i, text3.charCodeAt(i));
9606
9607
  }
9607
9608
  }
9608
9609
  var BASE64_CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
@@ -11877,7 +11878,7 @@ function getAnimationColorBaseStyle(element, options = {}) {
11877
11878
  }
11878
11879
  const style = {};
11879
11880
  if (options.animatesFill) {
11880
- const fill = chunkLCIXR7WE_cjs.getComputedFillStyle(element, options.parentGroupFill);
11881
+ const fill = chunkVFPVEVF4_cjs.getComputedFillStyle(element, options.parentGroupFill);
11881
11882
  style[ANIMATION_COLOR_BASE_PROPERTIES.fill] = fill?.backgroundColor ?? element.shapeStyle?.fillColor ?? "currentColor";
11882
11883
  }
11883
11884
  if (options.animatesStroke) {
@@ -19558,7 +19559,7 @@ function borderToCss(border2, resolve) {
19558
19559
  const width = border2.width ?? 1;
19559
19560
  const dash = ooxmlDashToCssBorderStyle(border2.dash);
19560
19561
  const color = border2.color ?? resolve(border2.fill) ?? "#000000";
19561
- return chunkG2YUKLRX_cjs.screenBorder(width, dash, color);
19562
+ return chunk526IHNIH_cjs.screenBorder(width, dash, color);
19562
19563
  }
19563
19564
  function collectSections(entry5, tableData, pos) {
19564
19565
  const { rowIndex, cellIndex, rowCount, columnCount } = pos;
@@ -19936,7 +19937,7 @@ function gradientCssFromFill(fill, colorScheme) {
19936
19937
  position: stop.position
19937
19938
  }))
19938
19939
  };
19939
- return chunkLCIXR7WE_cjs.buildGradientCss(shapeLike);
19940
+ return chunkVFPVEVF4_cjs.buildGradientCss(shapeLike);
19940
19941
  }
19941
19942
  function applyStyleFill(fill, colorScheme, css, fallback) {
19942
19943
  if (fill?.noFill) {
@@ -19962,13 +19963,13 @@ function applyStyleFill(fill, colorScheme, css, fallback) {
19962
19963
  }
19963
19964
  }
19964
19965
  if (fill?.pattern) {
19965
- const fg = chunkLCIXR7WE_cjs.normalizeHexColor(
19966
+ const fg = chunkVFPVEVF4_cjs.normalizeHexColor(
19966
19967
  resolveStyleFillColor(fill.pattern.foreground, colorScheme),
19967
19968
  "#000000"
19968
- ), bg = chunkLCIXR7WE_cjs.normalizeHexColor(
19969
+ ), bg = chunkVFPVEVF4_cjs.normalizeHexColor(
19969
19970
  resolveStyleFillColor(fill.pattern.background, colorScheme),
19970
19971
  "#ffffff"
19971
- ), svg2 = chunkLCIXR7WE_cjs.getPatternSvg(fill.pattern.preset, fg, bg);
19972
+ ), svg2 = chunkVFPVEVF4_cjs.getPatternSvg(fill.pattern.preset, fg, bg);
19972
19973
  clearBackground(css);
19973
19974
  if (svg2) {
19974
19975
  css.backgroundImage = `url("data:image/svg+xml,${encodeURIComponent(svg2)}")`;
@@ -19977,7 +19978,7 @@ function applyStyleFill(fill, colorScheme, css, fallback) {
19977
19978
  return true;
19978
19979
  }
19979
19980
  const resolved = resolveStyleFillColor(fill, colorScheme);
19980
- const color = (resolved && fill?.alpha !== void 0 ? chunkLCIXR7WE_cjs.colorWithOpacity(resolved, fill.alpha / 1e5) : resolved) ?? fallback;
19981
+ const color = (resolved && fill?.alpha !== void 0 ? chunkVFPVEVF4_cjs.colorWithOpacity(resolved, fill.alpha / 1e5) : resolved) ?? fallback;
19981
19982
  if (color) {
19982
19983
  layerSolidColor(css, color);
19983
19984
  return true;
@@ -20361,8 +20362,8 @@ function getMeasureContext() {
20361
20362
  return measureContext2;
20362
20363
  }
20363
20364
  function toCanvasFont2(font) {
20364
- const size = font.fontSizePx && font.fontSizePx > 0 ? font.fontSizePx : chunkLCIXR7WE_cjs.DEFAULT_TEXT_FONT_SIZE;
20365
- const family2 = font.fontFamily || chunkLCIXR7WE_cjs.DEFAULT_FONT_FAMILY;
20365
+ const size = font.fontSizePx && font.fontSizePx > 0 ? font.fontSizePx : chunkVFPVEVF4_cjs.DEFAULT_TEXT_FONT_SIZE;
20366
+ const family2 = font.fontFamily || chunkVFPVEVF4_cjs.DEFAULT_FONT_FAMILY;
20366
20367
  return `${font.italic ? "italic " : ""}${font.bold ? "bold " : ""}${size}px ${family2}`;
20367
20368
  }
20368
20369
  function advancesOf(ctx, canvasFont, chars) {
@@ -20555,7 +20556,7 @@ function resolveTextOutlineDashCss(s, fillColor) {
20555
20556
  if (s.textFillGradient || s.textFillPattern || s.textFillBlipUrl || s.highlightColor) {
20556
20557
  return void 0;
20557
20558
  }
20558
- const strokeColor = chunkLCIXR7WE_cjs.normalizeHexColor(s.textOutlineColor, fillColor ?? "#000000");
20559
+ const strokeColor = chunkVFPVEVF4_cjs.normalizeHexColor(s.textOutlineColor, fillColor ?? "#000000");
20559
20560
  return {
20560
20561
  WebkitTextStroke: `${width}px transparent`,
20561
20562
  WebkitTextFillColor: s.textFillNone ? "transparent" : fillColor ?? "currentColor",
@@ -20719,13 +20720,13 @@ function applyExtraRunProps(style, s, text3, font) {
20719
20720
  style.fontKerning = fontKerning;
20720
20721
  }
20721
20722
  if (s.highlightColor) {
20722
- style.backgroundColor = chunkLCIXR7WE_cjs.normalizeHexColor(s.highlightColor, "transparent");
20723
+ style.backgroundColor = chunkVFPVEVF4_cjs.normalizeHexColor(s.highlightColor, "transparent");
20723
20724
  }
20724
20725
  if (s.underlineColor) {
20725
- style.textDecorationColor = chunkLCIXR7WE_cjs.normalizeHexColor(s.underlineColor);
20726
+ style.textDecorationColor = chunkVFPVEVF4_cjs.normalizeHexColor(s.underlineColor);
20726
20727
  }
20727
20728
  if (s.textOutlineWidth) {
20728
- style.WebkitTextStroke = s.textOutlineColor ? `${s.textOutlineWidth}px ${chunkLCIXR7WE_cjs.normalizeHexColor(s.textOutlineColor, "#000000")}` : `${s.textOutlineWidth}px currentColor`;
20729
+ style.WebkitTextStroke = s.textOutlineColor ? `${s.textOutlineWidth}px ${chunkVFPVEVF4_cjs.normalizeHexColor(s.textOutlineColor, "#000000")}` : `${s.textOutlineWidth}px currentColor`;
20729
20730
  style.paintOrder = "stroke fill";
20730
20731
  }
20731
20732
  if (s.textCaps === "all") {
@@ -20766,7 +20767,7 @@ function segmentStyleToCss(seg, fontScale = 1, context = {}) {
20766
20767
  if (s.color) {
20767
20768
  style.color = s.color;
20768
20769
  } else if (s.hyperlink) {
20769
- style.color = chunkLCIXR7WE_cjs.HYPERLINK_COLOR;
20770
+ style.color = chunkVFPVEVF4_cjs.HYPERLINK_COLOR;
20770
20771
  }
20771
20772
  style.fontWeight = s.bold ? "bold" : "normal";
20772
20773
  style.fontStyle = s.italic ? "italic" : "normal";
@@ -20851,9 +20852,9 @@ function cellPatternFillCss(style) {
20851
20852
  if (style.fillMode !== "pattern" || !style.patternFillPreset) {
20852
20853
  return null;
20853
20854
  }
20854
- const fg = chunkLCIXR7WE_cjs.normalizeHexColor(style.patternFillForeground, "#000000");
20855
- const bg = chunkLCIXR7WE_cjs.normalizeHexColor(style.patternFillBackground, "#ffffff");
20856
- const svgMarkup = chunkLCIXR7WE_cjs.getPatternSvg(style.patternFillPreset, fg, bg);
20855
+ const fg = chunkVFPVEVF4_cjs.normalizeHexColor(style.patternFillForeground, "#000000");
20856
+ const bg = chunkVFPVEVF4_cjs.normalizeHexColor(style.patternFillBackground, "#ffffff");
20857
+ const svgMarkup = chunkVFPVEVF4_cjs.getPatternSvg(style.patternFillPreset, fg, bg);
20857
20858
  if (svgMarkup) {
20858
20859
  const encoded = encodeURIComponent(svgMarkup);
20859
20860
  return {
@@ -21017,7 +21018,7 @@ function cellStyleToCss(style) {
21017
21018
  const w = edge.width ?? 1;
21018
21019
  const c = edge.color ?? style.borderColor ?? "#000000";
21019
21020
  const s = ooxmlDashToCssBorderStyle(edge.dash);
21020
- css[edge.prefix] = chunkG2YUKLRX_cjs.screenBorder(w, s, c);
21021
+ css[edge.prefix] = chunk526IHNIH_cjs.screenBorder(w, s, c);
21021
21022
  }
21022
21023
  }
21023
21024
  Object.assign(css, cellPaddingCss(style));
@@ -21239,7 +21240,7 @@ function tableCellCss(tableData, cell, position, context, base2) {
21239
21240
  );
21240
21241
  const css = { ...base2, ...band, ...cellStyleToCss(cell?.style) };
21241
21242
  if (css.color === void 0) {
21242
- css.color = chunkLCIXR7WE_cjs.DEFAULT_TEXT_COLOR;
21243
+ css.color = chunkVFPVEVF4_cjs.DEFAULT_TEXT_COLOR;
21243
21244
  }
21244
21245
  return { ...TABLE_CELL_TEXT_DEFAULTS, ...css };
21245
21246
  }
@@ -21568,7 +21569,7 @@ var GRADIENT_TYPE_OPTIONS = [
21568
21569
  { value: "linear", i18nKey: "pptx.table.gradientLinear" },
21569
21570
  { value: "radial", i18nKey: "pptx.table.gradientRadial" }
21570
21571
  ];
21571
- var PATTERN_OPTIONS = chunkLCIXR7WE_cjs.OOXML_PATTERN_PRESETS.slice(0, 20);
21572
+ var PATTERN_OPTIONS = chunkVFPVEVF4_cjs.OOXML_PATTERN_PRESETS.slice(0, 20);
21572
21573
 
21573
21574
  // src/pptx/render/table-resize.ts
21574
21575
  var MIN_COLUMN_PROPORTION = 0.03;
@@ -21806,13 +21807,6 @@ function applyResize(box, handle, dxScreen, dyScreen, zoom, opts = {}) {
21806
21807
  }
21807
21808
  return { x: newX, y: newY, width: newW, height: newH, rotation };
21808
21809
  }
21809
- function snapAngle(angleDeg, step = 15, tolerance = step / 2) {
21810
- const nearest = Math.round(angleDeg / step) * step;
21811
- if (Math.abs(angleDeg - nearest) <= tolerance) {
21812
- return (nearest % 360 + 360) % 360;
21813
- }
21814
- return angleDeg;
21815
- }
21816
21810
  function snapBoxToGrid(box, handle, gridSpacingPx, minSize = pptx.MIN_ELEMENT_SIZE) {
21817
21811
  if (handle === null || gridSpacingPx <= 0) {
21818
21812
  return box;
@@ -22399,10 +22393,10 @@ function imageFitTransformParts(el) {
22399
22393
  return { placement: "", crop: "" };
22400
22394
  }
22401
22395
  return fitTransformsFromInsets({
22402
- cropLeft: chunkLCIXR7WE_cjs.clampCropValue(el.cropLeft),
22403
- cropTop: chunkLCIXR7WE_cjs.clampCropValue(el.cropTop),
22404
- cropRight: chunkLCIXR7WE_cjs.clampCropValue(el.cropRight),
22405
- cropBottom: chunkLCIXR7WE_cjs.clampCropValue(el.cropBottom),
22396
+ cropLeft: chunkVFPVEVF4_cjs.clampCropValue(el.cropLeft),
22397
+ cropTop: chunkVFPVEVF4_cjs.clampCropValue(el.cropTop),
22398
+ cropRight: chunkVFPVEVF4_cjs.clampCropValue(el.cropRight),
22399
+ cropBottom: chunkVFPVEVF4_cjs.clampCropValue(el.cropBottom),
22406
22400
  fillRectLeft: el.fillRectLeft ?? 0,
22407
22401
  fillRectTop: el.fillRectTop ?? 0,
22408
22402
  fillRectRight: el.fillRectRight ?? 0,
@@ -22426,10 +22420,10 @@ function fitTransformsFromInsets(insets) {
22426
22420
  if (hasCrop2) {
22427
22421
  const horizontalScale = cropLeft + cropRight >= 0.99 ? 0.99 / (cropLeft + cropRight) : 1;
22428
22422
  const verticalScale = cropTop + cropBottom >= 0.99 ? 0.99 / (cropTop + cropBottom) : 1;
22429
- cropLeft = chunkLCIXR7WE_cjs.clampCropValue(cropLeft * horizontalScale);
22430
- cropRight = chunkLCIXR7WE_cjs.clampCropValue(cropRight * horizontalScale);
22431
- cropTop = chunkLCIXR7WE_cjs.clampCropValue(cropTop * verticalScale);
22432
- cropBottom = chunkLCIXR7WE_cjs.clampCropValue(cropBottom * verticalScale);
22423
+ cropLeft = chunkVFPVEVF4_cjs.clampCropValue(cropLeft * horizontalScale);
22424
+ cropRight = chunkVFPVEVF4_cjs.clampCropValue(cropRight * horizontalScale);
22425
+ cropTop = chunkVFPVEVF4_cjs.clampCropValue(cropTop * verticalScale);
22426
+ cropBottom = chunkVFPVEVF4_cjs.clampCropValue(cropBottom * verticalScale);
22433
22427
  const remainingWidth = Math.max(0.01, 1 - cropLeft - cropRight);
22434
22428
  const remainingHeight = Math.max(0.01, 1 - cropTop - cropBottom);
22435
22429
  const tx = Math.round(-cropLeft / remainingWidth * 1e4) / 100;
@@ -22544,7 +22538,7 @@ function resolveShadeToTitleBackgroundImage(slide, slideWidthPx, slideHeightPx)
22544
22538
  if (stops.length === 0) {
22545
22539
  return void 0;
22546
22540
  }
22547
- return chunkLCIXR7WE_cjs.buildRectPathGradientImage(stops, void 0, fillToRect);
22541
+ return chunkVFPVEVF4_cjs.buildRectPathGradientImage(stops, void 0, fillToRect);
22548
22542
  }
22549
22543
 
22550
22544
  // src/pptx/render/slide-background.ts
@@ -22566,7 +22560,7 @@ function getSlideBackgroundStyle(slide, slideSize) {
22566
22560
  style["background-repeat"] = "no-repeat";
22567
22561
  }
22568
22562
  } else if (pattern) {
22569
- const svg2 = chunkLCIXR7WE_cjs.getPatternSvg(
22563
+ const svg2 = chunkVFPVEVF4_cjs.getPatternSvg(
22570
22564
  pattern.preset,
22571
22565
  pattern.fgColor ?? solid ?? "#000000",
22572
22566
  pattern.bgColor ?? DEFAULT_SLIDE_BACKGROUND
@@ -23974,12 +23968,12 @@ function buildRunTabLines(text3, ctx, nestedDecoration, measure2 = (t) => measur
23974
23968
  // src/pptx/render/paragraph-run-enrich.ts
23975
23969
  function resolveRunExtrasContext(input) {
23976
23970
  const { seg, runFont, blockFont, blockScriptStyle, tabStops, defaultTabSize, rtl } = input;
23977
- const baseFontFamily = runFont.fontFamily ?? blockFont.fontFamily ?? chunkLCIXR7WE_cjs.DEFAULT_FONT_FAMILY;
23971
+ const baseFontFamily = runFont.fontFamily ?? blockFont.fontFamily ?? chunkVFPVEVF4_cjs.DEFAULT_FONT_FAMILY;
23978
23972
  const scriptFonts = resolveScriptFontSet(seg.style, blockScriptStyle, baseFontFamily);
23979
23973
  const tabContext = tabStops && tabStops.length > 0 ? buildTabContext(
23980
23974
  tabStops,
23981
23975
  defaultTabSize,
23982
- runFont.fontSizePx ?? blockFont.fontSizePx ?? chunkLCIXR7WE_cjs.DEFAULT_TEXT_FONT_SIZE,
23976
+ runFont.fontSizePx ?? blockFont.fontSizePx ?? chunkVFPVEVF4_cjs.DEFAULT_TEXT_FONT_SIZE,
23983
23977
  baseFontFamily,
23984
23978
  Boolean(seg.style?.bold),
23985
23979
  Boolean(seg.style?.italic),
@@ -24011,7 +24005,7 @@ function resolveRunReflection(segStyle, blockFont) {
24011
24005
  if (!segStyle) {
24012
24006
  return void 0;
24013
24007
  }
24014
- const height = typeof segStyle.fontSize === "number" ? segStyle.fontSize : blockFont.fontSizePx ?? chunkLCIXR7WE_cjs.DEFAULT_TEXT_FONT_SIZE;
24008
+ const height = typeof segStyle.fontSize === "number" ? segStyle.fontSize : blockFont.fontSizePx ?? chunkVFPVEVF4_cjs.DEFAULT_TEXT_FONT_SIZE;
24015
24009
  return getTextReflectionWrapperStyle(segStyle, height);
24016
24010
  }
24017
24011
  function applyRunReflection(run, reflection2) {
@@ -24178,7 +24172,7 @@ function buildTextShadowCss(style) {
24178
24172
  const ox = style.textShadowOffsetX ?? 0;
24179
24173
  const oy = style.textShadowOffsetY ?? 0;
24180
24174
  const blur = style.textShadowBlur ?? 4;
24181
- const color = chunkLCIXR7WE_cjs.normalizeHexColor(style.textShadowColor, "#000000");
24175
+ const color = chunkVFPVEVF4_cjs.normalizeHexColor(style.textShadowColor, "#000000");
24182
24176
  const opacity = style.textShadowOpacity ?? 0.5;
24183
24177
  const r = parseInt(color.slice(1, 3), 16);
24184
24178
  const g = parseInt(color.slice(3, 5), 16);
@@ -24191,7 +24185,7 @@ function buildTextShadowCss(style) {
24191
24185
  const dirRad = dir * Math.PI / 180;
24192
24186
  const psOx = Math.round(Math.cos(dirRad) * dist2 * 100) / 100;
24193
24187
  const psOy = Math.round(Math.sin(dirRad) * dist2 * 100) / 100;
24194
- const psColor = chunkLCIXR7WE_cjs.normalizeHexColor(style.textPresetShadowColor, "#000000");
24188
+ const psColor = chunkVFPVEVF4_cjs.normalizeHexColor(style.textPresetShadowColor, "#000000");
24195
24189
  const psOpacity = style.textPresetShadowOpacity ?? 0.5;
24196
24190
  const psR = parseInt(psColor.slice(1, 3), 16);
24197
24191
  const psG = parseInt(psColor.slice(3, 5), 16);
@@ -24208,7 +24202,7 @@ function buildTextInnerShadowCss(style) {
24208
24202
  const ox = style.textInnerShadowOffsetX ?? 0;
24209
24203
  const oy = style.textInnerShadowOffsetY ?? 0;
24210
24204
  const blur = style.textInnerShadowBlur ?? 3;
24211
- const color = chunkLCIXR7WE_cjs.normalizeHexColor(style.textInnerShadowColor, "#000000");
24205
+ const color = chunkVFPVEVF4_cjs.normalizeHexColor(style.textInnerShadowColor, "#000000");
24212
24206
  const opacity = style.textInnerShadowOpacity ?? 0.5;
24213
24207
  const r = parseInt(color.slice(1, 3), 16);
24214
24208
  const g = parseInt(color.slice(3, 5), 16);
@@ -24255,7 +24249,7 @@ function buildTextGlowFilter(style) {
24255
24249
  return void 0;
24256
24250
  }
24257
24251
  const radius = style.textGlowRadius ?? 6;
24258
- const color = chunkLCIXR7WE_cjs.normalizeHexColor(style.textGlowColor, "#ffff00");
24252
+ const color = chunkVFPVEVF4_cjs.normalizeHexColor(style.textGlowColor, "#ffff00");
24259
24253
  const opacity = style.textGlowOpacity ?? 0.6;
24260
24254
  const r = parseInt(color.slice(1, 3), 16);
24261
24255
  const g = parseInt(color.slice(3, 5), 16);
@@ -24283,9 +24277,9 @@ function buildTextFillCss(style) {
24283
24277
  };
24284
24278
  }
24285
24279
  if (style.textFillPattern) {
24286
- const fg = chunkLCIXR7WE_cjs.normalizeHexColor(style.textFillPatternForeground, "#000000");
24287
- const bg = chunkLCIXR7WE_cjs.normalizeHexColor(style.textFillPatternBackground, "#ffffff");
24288
- const svgPattern = chunkLCIXR7WE_cjs.getPatternSvg(style.textFillPattern, fg, bg);
24280
+ const fg = chunkVFPVEVF4_cjs.normalizeHexColor(style.textFillPatternForeground, "#000000");
24281
+ const bg = chunkVFPVEVF4_cjs.normalizeHexColor(style.textFillPatternBackground, "#ffffff");
24282
+ const svgPattern = chunkVFPVEVF4_cjs.getPatternSvg(style.textFillPattern, fg, bg);
24289
24283
  if (svgPattern) {
24290
24284
  const encoded = encodeURIComponent(svgPattern);
24291
24285
  return {
@@ -24430,15 +24424,15 @@ function resolveRunRuby(segment, baseFontSizePx, blockFont, baseColor) {
24430
24424
  return void 0;
24431
24425
  }
24432
24426
  const authoredFamily = segment.rubyStyle?.fontFamily ?? segment.style?.fontFamily;
24433
- const baseSize = Number.isFinite(baseFontSizePx) ? baseFontSizePx : chunkLCIXR7WE_cjs.DEFAULT_TEXT_FONT_SIZE;
24427
+ const baseSize = Number.isFinite(baseFontSizePx) ? baseFontSizePx : chunkVFPVEVF4_cjs.DEFAULT_TEXT_FONT_SIZE;
24434
24428
  const style = {
24435
24429
  fontSize: `${segment.rubyFontSize ?? baseSize * RUBY_SIZE_RATIO}px`,
24436
- fontFamily: authoredFamily ? pptx.getSubstituteFontFamily(authoredFamily) : blockFont.fontFamily ?? chunkLCIXR7WE_cjs.DEFAULT_FONT_FAMILY,
24430
+ fontFamily: authoredFamily ? pptx.getSubstituteFontFamily(authoredFamily) : blockFont.fontFamily ?? chunkVFPVEVF4_cjs.DEFAULT_FONT_FAMILY,
24437
24431
  textAlign: rubyTextAlign(segment.rubyAlignment)
24438
24432
  };
24439
24433
  const color = segment.rubyStyle?.color;
24440
24434
  if (color) {
24441
- style.color = chunkLCIXR7WE_cjs.normalizeHexColor(color, baseColor);
24435
+ style.color = chunkVFPVEVF4_cjs.normalizeHexColor(color, baseColor);
24442
24436
  }
24443
24437
  return { text: text3, style };
24444
24438
  }
@@ -24510,7 +24504,7 @@ function buildParagraphRuns(input) {
24510
24504
  bodyFontSizeRaw,
24511
24505
  fontScale
24512
24506
  );
24513
- const fallbackFontSize = strutFontSize ?? blockFont.fontSizePx ?? chunkLCIXR7WE_cjs.DEFAULT_TEXT_FONT_SIZE;
24507
+ const fallbackFontSize = strutFontSize ?? blockFont.fontSizePx ?? chunkVFPVEVF4_cjs.DEFAULT_TEXT_FONT_SIZE;
24514
24508
  equationStyle.fontSize = `${fallbackFontSize}px`;
24515
24509
  }
24516
24510
  runs.push({
@@ -24547,7 +24541,7 @@ function buildParagraphRuns(input) {
24547
24541
  });
24548
24542
  const ruby = resolveRunRuby(
24549
24543
  seg,
24550
- typeof seg.style?.fontSize === "number" ? seg.style.fontSize : blockFont.fontSizePx ?? chunkLCIXR7WE_cjs.DEFAULT_TEXT_FONT_SIZE,
24544
+ typeof seg.style?.fontSize === "number" ? seg.style.fontSize : blockFont.fontSizePx ?? chunkVFPVEVF4_cjs.DEFAULT_TEXT_FONT_SIZE,
24551
24545
  blockFont,
24552
24546
  typeof style.color === "string" ? style.color : void 0
24553
24547
  );
@@ -24647,8 +24641,8 @@ function buildParagraphs(element, fieldContext, segmentOverrides, options) {
24647
24641
  }
24648
24642
  const fontScale = resolveAutoFitFontScale(element.textStyle);
24649
24643
  const blockFont = {
24650
- fontFamily: element.textStyle?.fontFamily ? pptx.getSubstituteFontFamily(element.textStyle.fontFamily) : chunkLCIXR7WE_cjs.DEFAULT_FONT_FAMILY,
24651
- fontSizePx: (element.textStyle?.fontSize || chunkLCIXR7WE_cjs.DEFAULT_TEXT_FONT_SIZE) * fontScale
24644
+ fontFamily: element.textStyle?.fontFamily ? pptx.getSubstituteFontFamily(element.textStyle.fontFamily) : chunkVFPVEVF4_cjs.DEFAULT_FONT_FAMILY,
24645
+ fontSizePx: (element.textStyle?.fontSize || chunkVFPVEVF4_cjs.DEFAULT_TEXT_FONT_SIZE) * fontScale
24652
24646
  };
24653
24647
  const blockScriptStyle = element.textStyle;
24654
24648
  const tabStops = element.textStyle?.tabStops;
@@ -27604,17 +27598,17 @@ function hasItalicRuns(element) {
27604
27598
  );
27605
27599
  }
27606
27600
  function buildTextBlockStyle(element, options = {}) {
27607
- const fallbackColor = options.fallbackColor ?? chunkLCIXR7WE_cjs.DEFAULT_TEXT_COLOR;
27601
+ const fallbackColor = options.fallbackColor ?? chunkVFPVEVF4_cjs.DEFAULT_TEXT_COLOR;
27608
27602
  if (!pptx.hasTextProperties(element)) {
27609
27603
  return { color: fallbackColor };
27610
27604
  }
27611
27605
  const ts = element.textStyle;
27612
27606
  const italic = hasItalicRuns(element);
27613
27607
  const isRtl = ts?.rtl === true;
27614
- const bodyTop = ts?.bodyInsetTop ?? chunkLCIXR7WE_cjs.DEFAULT_BODY_INSET_TB_PX;
27615
- const bodyBottom = ts?.bodyInsetBottom ?? chunkLCIXR7WE_cjs.DEFAULT_BODY_INSET_TB_PX;
27616
- const bodyLeft = ts?.bodyInsetLeft ?? chunkLCIXR7WE_cjs.DEFAULT_BODY_INSET_LR_PX;
27617
- const bodyRight = ts?.bodyInsetRight ?? chunkLCIXR7WE_cjs.DEFAULT_BODY_INSET_LR_PX;
27608
+ const bodyTop = ts?.bodyInsetTop ?? chunkVFPVEVF4_cjs.DEFAULT_BODY_INSET_TB_PX;
27609
+ const bodyBottom = ts?.bodyInsetBottom ?? chunkVFPVEVF4_cjs.DEFAULT_BODY_INSET_TB_PX;
27610
+ const bodyLeft = ts?.bodyInsetLeft ?? chunkVFPVEVF4_cjs.DEFAULT_BODY_INSET_LR_PX;
27611
+ const bodyRight = ts?.bodyInsetRight ?? chunkVFPVEVF4_cjs.DEFAULT_BODY_INSET_LR_PX;
27618
27612
  const hasParagraphIndents = (element.paragraphIndents?.length ?? 0) > 0;
27619
27613
  const bodyIndent = hasParagraphIndents ? 0 : ts?.paragraphIndent || 0;
27620
27614
  const bodyMarginLeft = hasParagraphIndents ? 0 : ts?.paragraphMarginLeft || 0;
@@ -27643,17 +27637,17 @@ function buildTextBlockStyle(element, options = {}) {
27643
27637
  style.transformOrigin = "center";
27644
27638
  }
27645
27639
  }
27646
- style.color = ts?.hyperlink ? chunkLCIXR7WE_cjs.normalizeHexColor(ts?.color, chunkLCIXR7WE_cjs.HYPERLINK_COLOR) : chunkLCIXR7WE_cjs.normalizeHexColor(ts?.color, fallbackColor);
27640
+ style.color = ts?.hyperlink ? chunkVFPVEVF4_cjs.normalizeHexColor(ts?.color, chunkVFPVEVF4_cjs.HYPERLINK_COLOR) : chunkVFPVEVF4_cjs.normalizeHexColor(ts?.color, fallbackColor);
27647
27641
  if (!hasTextSegments && ts?.highlightColor) {
27648
- style.backgroundColor = chunkLCIXR7WE_cjs.normalizeHexColor(ts.highlightColor, void 0);
27642
+ style.backgroundColor = chunkVFPVEVF4_cjs.normalizeHexColor(ts.highlightColor, void 0);
27649
27643
  }
27650
27644
  style.textAlign = resolveCssTextAlign(ts?.align, isRtl) ?? "left";
27651
27645
  style.direction = toCssVerticalDirection(ts?.textDirection) ?? (isRtl ? "rtl" : bodyLayoutStyle?.direction ?? "ltr");
27652
27646
  if (isRtl) {
27653
27647
  style.unicodeBidi = "plaintext";
27654
27648
  }
27655
- style.fontSize = ts?.fontSize || chunkLCIXR7WE_cjs.DEFAULT_TEXT_FONT_SIZE;
27656
- style.fontFamily = ts?.fontFamily ? pptx.getSubstituteFontFamily(ts.fontFamily, pptx.parsePanoseString(ts.latinFontPanose)) : chunkLCIXR7WE_cjs.DEFAULT_FONT_FAMILY;
27649
+ style.fontSize = ts?.fontSize || chunkVFPVEVF4_cjs.DEFAULT_TEXT_FONT_SIZE;
27650
+ style.fontFamily = ts?.fontFamily ? pptx.getSubstituteFontFamily(ts.fontFamily, pptx.parsePanoseString(ts.latinFontPanose)) : chunkVFPVEVF4_cjs.DEFAULT_FONT_FAMILY;
27657
27651
  style.fontWeight = ts?.bold ? 700 : 400;
27658
27652
  style.fontStyle = ts?.italic ? "italic" : "normal";
27659
27653
  style.textDecorationLine = decorations.length > 0 ? decorations.join(" ") : "none";
@@ -27693,7 +27687,7 @@ function buildTextBlockStyle(element, options = {}) {
27693
27687
  text: element.text ?? "",
27694
27688
  width: element.width,
27695
27689
  height: element.height,
27696
- defaultFontSize: chunkLCIXR7WE_cjs.DEFAULT_TEXT_FONT_SIZE
27690
+ defaultFontSize: chunkVFPVEVF4_cjs.DEFAULT_TEXT_FONT_SIZE
27697
27691
  });
27698
27692
  if (autoFit.fontSize !== void 0) {
27699
27693
  style.fontSize = autoFit.fontSize;
@@ -27701,7 +27695,7 @@ function buildTextBlockStyle(element, options = {}) {
27701
27695
  if (autoFit.lineHeight !== void 0) {
27702
27696
  style.lineHeight = autoFit.lineHeight;
27703
27697
  }
27704
- const fontSizePx = typeof style.fontSize === "number" ? style.fontSize : chunkLCIXR7WE_cjs.DEFAULT_TEXT_FONT_SIZE;
27698
+ const fontSizePx = typeof style.fontSize === "number" ? style.fontSize : chunkVFPVEVF4_cjs.DEFAULT_TEXT_FONT_SIZE;
27705
27699
  const lineHeightPx = lineHeightToPx(fontSizePx, style.lineHeight);
27706
27700
  const contentHeightPx = element.height - style.paddingTop - style.paddingBottom;
27707
27701
  Object.assign(style, resolveVertOverflowEllipsisStyle(ts, contentHeightPx, lineHeightPx));
@@ -30355,317 +30349,6 @@ function placeCaretAt(el, point) {
30355
30349
  }
30356
30350
  placeCaretAtEnd(el);
30357
30351
  }
30358
-
30359
- // src/pptx/render/connector-router-types.ts
30360
- var PADDING_DEFAULT = 12;
30361
- var ROUTING_PADDING_DEFAULT = PADDING_DEFAULT;
30362
- var CANVAS_SENTINEL = 1e5;
30363
-
30364
- // src/pptx/render/connector-router-graph.ts
30365
- function inflateRect(r, pad) {
30366
- return {
30367
- x: r.x - pad,
30368
- y: r.y - pad,
30369
- width: r.width + pad * 2,
30370
- height: r.height + pad * 2
30371
- };
30372
- }
30373
- function pointInRect(p, r) {
30374
- return p.x >= r.x && p.x <= r.x + r.width && p.y >= r.y && p.y <= r.y + r.height;
30375
- }
30376
- function segmentIntersectsRect(a, b, r) {
30377
- const minX = Math.min(a.x, b.x);
30378
- const maxX = Math.max(a.x, b.x);
30379
- const minY = Math.min(a.y, b.y);
30380
- const maxY = Math.max(a.y, b.y);
30381
- const rRight = r.x + r.width;
30382
- const rBottom = r.y + r.height;
30383
- if (maxX < r.x || minX > rRight || maxY < r.y || minY > rBottom) {
30384
- return false;
30385
- }
30386
- if (Math.abs(a.y - b.y) < 0.5) {
30387
- return a.y >= r.y && a.y <= rBottom && maxX >= r.x && minX <= rRight;
30388
- }
30389
- if (Math.abs(a.x - b.x) < 0.5) {
30390
- return a.x >= r.x && a.x <= rRight && maxY >= r.y && minY <= rBottom;
30391
- }
30392
- return true;
30393
- }
30394
- function directPathClear(start, end, inflated) {
30395
- for (const rect3 of inflated) {
30396
- if (segmentIntersectsRect(start, end, rect3)) {
30397
- return false;
30398
- }
30399
- }
30400
- return true;
30401
- }
30402
- function heuristic(a, b) {
30403
- return Math.abs(a.x - b.x) + Math.abs(a.y - b.y);
30404
- }
30405
- function pointKey(p) {
30406
- return `${Math.round(p.x)},${Math.round(p.y)}`;
30407
- }
30408
- function buildGraphNodes(start, end, inflated, canvasWidth, canvasHeight) {
30409
- const margin = 4;
30410
- const nodes = [start, end];
30411
- for (const r of inflated) {
30412
- const corners = [
30413
- { x: r.x - margin, y: r.y - margin },
30414
- { x: r.x + r.width + margin, y: r.y - margin },
30415
- { x: r.x - margin, y: r.y + r.height + margin },
30416
- { x: r.x + r.width + margin, y: r.y + r.height + margin }
30417
- ];
30418
- for (const c of corners) {
30419
- if (c.x >= 0 && c.x <= canvasWidth && c.y >= 0 && c.y <= canvasHeight) {
30420
- let blocked = false;
30421
- for (const rect3 of inflated) {
30422
- if (pointInRect(c, rect3)) {
30423
- blocked = true;
30424
- break;
30425
- }
30426
- }
30427
- if (!blocked) {
30428
- nodes.push(c);
30429
- }
30430
- }
30431
- }
30432
- }
30433
- const projections = [];
30434
- for (const node of nodes) {
30435
- projections.push({ x: start.x, y: node.y });
30436
- projections.push({ x: node.x, y: start.y });
30437
- projections.push({ x: end.x, y: node.y });
30438
- projections.push({ x: node.x, y: end.y });
30439
- }
30440
- for (const p of projections) {
30441
- if (p.x >= 0 && p.x <= canvasWidth && p.y >= 0 && p.y <= canvasHeight) {
30442
- let blocked = false;
30443
- for (const rect3 of inflated) {
30444
- if (pointInRect(p, rect3)) {
30445
- blocked = true;
30446
- break;
30447
- }
30448
- }
30449
- if (!blocked) {
30450
- nodes.push(p);
30451
- }
30452
- }
30453
- }
30454
- return nodes;
30455
- }
30456
-
30457
- // src/pptx/render/connector-router-astar.ts
30458
- var MAX_ASTAR_ITERATIONS = 2e3;
30459
- function aStarOrthogonal(nodes, start, end, inflated) {
30460
- const startKey = pointKey(start);
30461
- const endKey = pointKey(end);
30462
- const canConnect = (a, b) => {
30463
- const isHoriz = Math.abs(a.y - b.y) < 1;
30464
- const isVert = Math.abs(a.x - b.x) < 1;
30465
- if (isHoriz || isVert) {
30466
- for (const rect3 of inflated) {
30467
- if (segmentIntersectsRect(a, b, rect3)) {
30468
- return false;
30469
- }
30470
- }
30471
- return true;
30472
- }
30473
- const bend1 = { x: b.x, y: a.y };
30474
- const bend2 = { x: a.x, y: b.y };
30475
- let path1Clear = true;
30476
- let path2Clear = true;
30477
- for (const rect3 of inflated) {
30478
- if (path1Clear && (segmentIntersectsRect(a, bend1, rect3) || segmentIntersectsRect(bend1, b, rect3))) {
30479
- path1Clear = false;
30480
- }
30481
- if (path2Clear && (segmentIntersectsRect(a, bend2, rect3) || segmentIntersectsRect(bend2, b, rect3))) {
30482
- path2Clear = false;
30483
- }
30484
- if (!path1Clear && !path2Clear) {
30485
- break;
30486
- }
30487
- }
30488
- return path1Clear || path2Clear;
30489
- };
30490
- const gScore = /* @__PURE__ */ new Map();
30491
- const fScore = /* @__PURE__ */ new Map();
30492
- const cameFrom = /* @__PURE__ */ new Map();
30493
- const bendPoint = /* @__PURE__ */ new Map();
30494
- gScore.set(startKey, 0);
30495
- fScore.set(startKey, heuristic(start, end));
30496
- const openSet = /* @__PURE__ */ new Set([startKey]);
30497
- const nodeMap = /* @__PURE__ */ new Map();
30498
- for (const n of nodes) {
30499
- nodeMap.set(pointKey(n), n);
30500
- }
30501
- const getLowest = () => {
30502
- let best;
30503
- let bestScore = Infinity;
30504
- for (const key of openSet) {
30505
- const score = fScore.get(key) ?? Infinity;
30506
- if (score < bestScore) {
30507
- bestScore = score;
30508
- best = key;
30509
- }
30510
- }
30511
- return best;
30512
- };
30513
- let iterations = 0;
30514
- while (openSet.size > 0 && iterations < MAX_ASTAR_ITERATIONS) {
30515
- iterations++;
30516
- const currentKey = getLowest();
30517
- if (currentKey === void 0) {
30518
- break;
30519
- }
30520
- if (currentKey === endKey) {
30521
- const path = [];
30522
- let key = endKey;
30523
- while (key !== void 0) {
30524
- const node = nodeMap.get(key);
30525
- if (node !== void 0) {
30526
- const bp = bendPoint.get(key);
30527
- if (bp !== void 0 && bp !== null) {
30528
- path.unshift(node);
30529
- path.unshift(bp);
30530
- } else {
30531
- path.unshift(node);
30532
- }
30533
- }
30534
- key = cameFrom.get(key);
30535
- }
30536
- return path;
30537
- }
30538
- openSet.delete(currentKey);
30539
- const current = nodeMap.get(currentKey);
30540
- if (current === void 0) {
30541
- continue;
30542
- }
30543
- for (const neighbor of nodes) {
30544
- const neighborKey = pointKey(neighbor);
30545
- if (neighborKey === currentKey) {
30546
- continue;
30547
- }
30548
- if (!canConnect(current, neighbor)) {
30549
- continue;
30550
- }
30551
- const isHoriz = Math.abs(current.y - neighbor.y) < 1;
30552
- const isVert = Math.abs(current.x - neighbor.x) < 1;
30553
- let dist2;
30554
- let bp = null;
30555
- if (isHoriz || isVert) {
30556
- dist2 = heuristic(current, neighbor);
30557
- } else {
30558
- const bend1 = { x: neighbor.x, y: current.y };
30559
- const bend2 = { x: current.x, y: neighbor.y };
30560
- let use1 = true;
30561
- for (const rect3 of inflated) {
30562
- if (segmentIntersectsRect(current, bend1, rect3) || segmentIntersectsRect(bend1, neighbor, rect3)) {
30563
- use1 = false;
30564
- break;
30565
- }
30566
- }
30567
- bp = use1 ? bend1 : bend2;
30568
- dist2 = Math.abs(current.x - bp.x) + Math.abs(current.y - bp.y) + Math.abs(bp.x - neighbor.x) + Math.abs(bp.y - neighbor.y);
30569
- }
30570
- const tentativeG = (gScore.get(currentKey) ?? Infinity) + dist2;
30571
- if (tentativeG < (gScore.get(neighborKey) ?? Infinity)) {
30572
- cameFrom.set(neighborKey, currentKey);
30573
- bendPoint.set(neighborKey, bp);
30574
- gScore.set(neighborKey, tentativeG);
30575
- fScore.set(neighborKey, tentativeG + heuristic(neighbor, end));
30576
- openSet.add(neighborKey);
30577
- }
30578
- }
30579
- }
30580
- return [start, end];
30581
- }
30582
- function simplifyPath(points) {
30583
- if (points.length <= 2) {
30584
- return [...points];
30585
- }
30586
- const result = [points[0]];
30587
- for (let i = 1; i < points.length - 1; i++) {
30588
- const prev = result[result.length - 1];
30589
- const curr = points[i];
30590
- const next = points[i + 1];
30591
- const sameX = Math.abs(prev.x - curr.x) < 1 && Math.abs(curr.x - next.x) < 1;
30592
- const sameY = Math.abs(prev.y - curr.y) < 1 && Math.abs(curr.y - next.y) < 1;
30593
- if (!sameX && !sameY) {
30594
- result.push(curr);
30595
- } else if (!sameX || !sameY) {
30596
- if (!(sameX || sameY)) {
30597
- result.push(curr);
30598
- }
30599
- }
30600
- }
30601
- result.push(points[points.length - 1]);
30602
- return result;
30603
- }
30604
-
30605
- // src/pptx/render/connector-router.ts
30606
- function routeCore(start, end, obstacles, padding, canvasWidth, canvasHeight) {
30607
- if (obstacles.length === 0) {
30608
- return [start, end];
30609
- }
30610
- const inflated = obstacles.map((r) => inflateRect(r, padding));
30611
- if (directPathClear(start, end, inflated)) {
30612
- return [start, end];
30613
- }
30614
- const midH = { x: end.x, y: start.y };
30615
- const midV = { x: start.x, y: end.y };
30616
- let elbowHClear = true;
30617
- let elbowVClear = true;
30618
- for (const rect3 of inflated) {
30619
- if (elbowHClear && (segmentIntersectsRect(start, midH, rect3) || segmentIntersectsRect(midH, end, rect3))) {
30620
- elbowHClear = false;
30621
- }
30622
- if (elbowVClear && (segmentIntersectsRect(start, midV, rect3) || segmentIntersectsRect(midV, end, rect3))) {
30623
- elbowVClear = false;
30624
- }
30625
- if (!elbowHClear && !elbowVClear) {
30626
- break;
30627
- }
30628
- }
30629
- if (elbowHClear) {
30630
- return [start, midH, end];
30631
- }
30632
- if (elbowVClear) {
30633
- return [start, midV, end];
30634
- }
30635
- const nodes = buildGraphNodes(start, end, inflated, canvasWidth, canvasHeight);
30636
- const path = aStarOrthogonal(nodes, start, end, inflated);
30637
- return simplifyPath(path);
30638
- }
30639
- function routeConnector(options) {
30640
- const { start, end, obstacles, canvasWidth, canvasHeight, padding = PADDING_DEFAULT } = options;
30641
- return routeCore(start, end, obstacles, padding, canvasWidth, canvasHeight);
30642
- }
30643
- function waypointsToPathData(waypoints) {
30644
- if (waypoints.length === 0) {
30645
- return "";
30646
- }
30647
- const parts = [`M ${waypoints[0].x} ${waypoints[0].y}`];
30648
- for (let i = 1; i < waypoints.length; i++) {
30649
- parts.push(`L ${waypoints[i].x} ${waypoints[i].y}`);
30650
- }
30651
- return parts.join(" ");
30652
- }
30653
- function routeOrthogonalConnector(start, end, obstacles, opts) {
30654
- const padding = opts?.padding ?? PADDING_DEFAULT;
30655
- const canvasWidth = opts?.canvasWidth ?? CANVAS_SENTINEL;
30656
- const canvasHeight = opts?.canvasHeight ?? CANVAS_SENTINEL;
30657
- return routeCore(start, end, obstacles, padding, canvasWidth, canvasHeight);
30658
- }
30659
- function waypointsToPathD(waypoints) {
30660
- if (waypoints.length === 0) {
30661
- return "";
30662
- }
30663
- const parts = [`M${waypoints[0].x},${waypoints[0].y}`];
30664
- for (let i = 1; i < waypoints.length; i++) {
30665
- parts.push(`L${waypoints[i].x},${waypoints[i].y}`);
30666
- }
30667
- return parts.join(" ");
30668
- }
30669
30352
  function getConnectionSites(width, height) {
30670
30353
  return [
30671
30354
  { x: width / 2, y: 0, index: 0 },
@@ -31100,9 +30783,9 @@ function normalizeArrow(a) {
31100
30783
  function buildConnectorGeometry(element, zIndex, routing) {
31101
30784
  const ss = pptx.hasShapeProperties(element) ? element.shapeStyle : void 0;
31102
30785
  const strokeWidth = Math.max(0, ss?.strokeWidth ?? 2);
31103
- const strokeColor = ss?.strokeColor ?? chunkLCIXR7WE_cjs.DEFAULT_STROKE_COLOR;
30786
+ const strokeColor = ss?.strokeColor ?? chunkVFPVEVF4_cjs.DEFAULT_STROKE_COLOR;
31104
30787
  const strokeOpacity = ss?.strokeOpacity ?? 1;
31105
- const dashArray = chunkLCIXR7WE_cjs.buildDashArray(ss?.strokeDash, strokeWidth, ss?.customDashSegments);
30788
+ const dashArray = chunkVFPVEVF4_cjs.buildDashArray(ss?.strokeDash, strokeWidth, ss?.customDashSegments);
31106
30789
  const strokeLinecap = svgLineCap(ss?.lineCap);
31107
30790
  const compoundOffsets = getCompoundLineOffsets(ss?.compoundLine, strokeWidth);
31108
30791
  const compoundWidths = getCompoundLineWidths(ss?.compoundLine, strokeWidth);
@@ -31118,13 +30801,13 @@ function buildConnectorGeometry(element, zIndex, routing) {
31118
30801
  if (routing && routing.obstacles.length > 0 && connectorKind(shapeType) === "bent" && (element.width > 0 || element.height > 0)) {
31119
30802
  const start = { x: element.x + x1, y: element.y + y1 };
31120
30803
  const end = { x: element.x + x2, y: element.y + y2 };
31121
- const waypoints = routeOrthogonalConnector(start, end, routing.obstacles, {
30804
+ const waypoints = geometry.routeOrthogonalConnector(start, end, routing.obstacles, {
31122
30805
  canvasWidth: routing.canvasWidth,
31123
30806
  canvasHeight: routing.canvasHeight
31124
30807
  });
31125
30808
  if (waypoints.length > 2) {
31126
30809
  const local = waypoints.map((p) => ({ x: p.x - element.x, y: p.y - element.y }));
31127
- pathD = waypointsToPathD(local);
30810
+ pathD = geometry.waypointsToPathD(local);
31128
30811
  }
31129
30812
  }
31130
30813
  const markerSeed = element.id.replace(/[^a-zA-Z0-9_-]/gu, "_");
@@ -31178,7 +30861,7 @@ function buildConnectorPathD(shapeType, x1, y1, x2, y2, bend, bend2 = 0.5, bend3
31178
30861
  }
31179
30862
  const segments2 = geometry.elbowSegmentCount(t);
31180
30863
  const points = elbowWaypoints(x1, y1, x2, y2, segments2, bend, bend2, bend3);
31181
- return waypointsToPathD(points);
30864
+ return geometry.waypointsToPathD(points);
31182
30865
  }
31183
30866
  if (t.includes("curvedconnector2")) {
31184
30867
  return `M${x1},${y1} Q${x2},${y1} ${x2},${y2}`;
@@ -37794,7 +37477,7 @@ function drawingShapeMeshOpacity(shape) {
37794
37477
  // src/pptx/render/svg-text-lines.ts
37795
37478
  var LINE_HEIGHT_RATIO = 1.2;
37796
37479
  function centeredSvgTextLines(text3, fontSize, options = {}) {
37797
- const lines = options.maxWidth !== void 0 ? chunkLCIXR7WE_cjs.wrapTextByEstimatedWidth(text3, options.maxWidth, fontSize) : text3.split("\n").filter((line4) => line4.length > 0);
37480
+ const lines = options.maxWidth !== void 0 ? chunkVFPVEVF4_cjs.wrapTextByEstimatedWidth(text3, options.maxWidth, fontSize) : text3.split("\n").filter((line4) => line4.length > 0);
37798
37481
  const centerY = options.centerY ?? 0;
37799
37482
  if (lines.length === 0) {
37800
37483
  return [{ text: "", y: centerY }];
@@ -38591,7 +38274,7 @@ function buildObliqueLabels(layout, input) {
38591
38274
  const { w, h, d } = layout.box;
38592
38275
  const span = layout.range.max - layout.range.min;
38593
38276
  const fontSize = input.fontSize;
38594
- for (const v of chunkLCIXR7WE_cjs.axisTickValues({ ...layout.range, span })) {
38277
+ for (const v of chunkVFPVEVF4_cjs.axisTickValues({ ...layout.range, span })) {
38595
38278
  const p = (v - layout.range.min) * layout.valueScale;
38596
38279
  if (layout.horizontal) {
38597
38280
  const at = screen2(layout, p, 0, 0);
@@ -38713,7 +38396,7 @@ function dataExtent(chartData, grouping, nCat) {
38713
38396
  function valueRange(chartData, grouping, nCat, valueLengthPx) {
38714
38397
  const axis = chartData.axes?.find((a) => a.axisType === "valAx");
38715
38398
  const [lo, hi] = dataExtent(chartData, grouping, nCat);
38716
- const auto = chunkLCIXR7WE_cjs.niceValueAxisBounds(lo, hi, chunkLCIXR7WE_cjs.axisTargetIntervals(valueLengthPx), 0);
38399
+ const auto = chunkVFPVEVF4_cjs.niceValueAxisBounds(lo, hi, chunkVFPVEVF4_cjs.axisTargetIntervals(valueLengthPx), 0);
38717
38400
  const min = typeof axis?.min === "number" ? axis.min : auto.min;
38718
38401
  let max = typeof axis?.max === "number" ? axis.max : auto.max;
38719
38402
  if (max <= min) {
@@ -38737,22 +38420,22 @@ function computeObliqueBarLayout(element, vm) {
38737
38420
  const rotX = (chartData.view3D?.rotX ?? 15) * Math.PI / 180;
38738
38421
  const rotY = (chartData.view3D?.rotY ?? 20) * Math.PI / 180;
38739
38422
  const shear = { x: Math.sin(rotY), y: -Math.sin(rotX) };
38740
- const gapWidth = (chartData.barGapWidth ?? chunkLCIXR7WE_cjs.DEFAULT_BAR_GAP_WIDTH) / 100;
38423
+ const gapWidth = (chartData.barGapWidth ?? chunkVFPVEVF4_cjs.DEFAULT_BAR_GAP_WIDTH) / 100;
38741
38424
  const gapDepth = (chartData.gapDepth ?? DEFAULT_GAP_DEPTH) / 100;
38742
38425
  const slots = grouping === "clustered" ? nSer : 1;
38743
38426
  const rows = grouping === "standard" ? nSer : 1;
38744
38427
  const labelFont = vm.axisLabels[0]?.fontSize ?? 16;
38745
38428
  const catLabels = chartData.categories.length > 0 ? chartData.categories : Array.from({ length: nCat }, (_, i) => String(i + 1));
38746
- const widest = (texts) => texts.reduce((m, t) => Math.max(m, chunkLCIXR7WE_cjs.estimateTextWidth(t, labelFont)), 0);
38429
+ const widest = (texts) => texts.reduce((m, t) => Math.max(m, chunkVFPVEVF4_cjs.estimateTextWidth(t, labelFont)), 0);
38747
38430
  const top = vm.title ? TOP_WITH_TITLE : TOP_NO_TITLE;
38748
38431
  const hasBottomLegend = chartData.style?.hasLegend !== false && (chartData.style?.legendPosition ?? "b") === "b";
38749
38432
  const bottom = vm.svgHeight - (hasBottomLegend ? BOTTOM_WITH_LEGEND : BOTTOM_NO_LEGEND);
38750
38433
  const regionH = Math.max(1, bottom - top);
38751
38434
  const provisional = valueRange(chartData, grouping, nCat, regionH);
38752
- const valueTexts = chunkLCIXR7WE_cjs.axisTickValues({
38435
+ const valueTexts = chunkVFPVEVF4_cjs.axisTickValues({
38753
38436
  ...provisional,
38754
38437
  span: provisional.max - provisional.min
38755
- }).map((v) => chunkRPRC2EG5_cjs.formatValueLabel(chartData, grouping, v));
38438
+ }).map((v) => chunkK3S2A64B_cjs.formatValueLabel(chartData, grouping, v));
38756
38439
  const leftBand = (horizontal ? widest(catLabels) : widest(valueTexts)) + (horizontal ? OBLIQUE_CATEGORY_LABEL_GAP : OBLIQUE_VALUE_LABEL_GAP);
38757
38440
  const seriesLabelW = grouping === "standard" && !horizontal ? widest(chartData.series.map((s) => s.name)) : 0;
38758
38441
  const seriesOverhang = (depth2) => seriesLabelW > 0 ? Math.max(0, OBLIQUE_CATEGORY_LABEL_GAP + seriesLabelW - depth2 * shear.x / (2 * rows)) : 0;
@@ -38808,13 +38491,13 @@ function computeObliqueBarLayout(element, vm) {
38808
38491
  gridlines: [],
38809
38492
  labels: []
38810
38493
  };
38811
- layout.bars = chunkRPRC2EG5_cjs.buildBars(chartData, vm, layout, { nCat, slots, rows, gapWidth, gapDepth });
38812
- layout.gridlines = chunkRPRC2EG5_cjs.buildGridlines(layout);
38494
+ layout.bars = chunkK3S2A64B_cjs.buildBars(chartData, vm, layout, { nCat, slots, rows, gapWidth, gapDepth });
38495
+ layout.gridlines = chunkK3S2A64B_cjs.buildGridlines(layout);
38813
38496
  layout.labels = buildObliqueLabels(layout, {
38814
38497
  fontSize: labelFont,
38815
38498
  categories: catLabels,
38816
38499
  seriesNames: chartData.series.map((s) => s.name),
38817
- valueText: (v) => chunkRPRC2EG5_cjs.formatValueLabel(chartData, grouping, v)
38500
+ valueText: (v) => chunkK3S2A64B_cjs.formatValueLabel(chartData, grouping, v)
38818
38501
  });
38819
38502
  return layout;
38820
38503
  }
@@ -38827,7 +38510,7 @@ function buildPerspGridlines(box, range, horizontal) {
38827
38510
  { from: [w, 0, 0], to: [w, 0, d] }
38828
38511
  ];
38829
38512
  const span = range.max - range.min;
38830
- for (const v of chunkLCIXR7WE_cjs.axisTickValues({ ...range, span })) {
38513
+ for (const v of chunkVFPVEVF4_cjs.axisTickValues({ ...range, span })) {
38831
38514
  const t = (v - range.min) / span;
38832
38515
  if (horizontal) {
38833
38516
  const x = t * w;
@@ -38848,16 +38531,16 @@ var CATEGORY_DY = 17 * PT3;
38848
38531
  var SERIES_DX = 9 * PT3;
38849
38532
  var SERIES_DY = -4 * PT3;
38850
38533
  function buildPerspLabels(layout, input) {
38851
- const { view, range } = layout;
38852
- const { h, d, w } = view.box;
38534
+ const { view: view2, range } = layout;
38535
+ const { h, d, w } = view2.box;
38853
38536
  const span = range.max - range.min;
38854
38537
  const labels = [];
38855
38538
  const fontSize = input.fontSize;
38856
- for (const v of chunkLCIXR7WE_cjs.axisTickValues({ ...range, span })) {
38539
+ for (const v of chunkVFPVEVF4_cjs.axisTickValues({ ...range, span })) {
38857
38540
  const t = (v - range.min) / span;
38858
- const text3 = input.percent ? `${Math.round(v * 100)}%` : chunkLCIXR7WE_cjs.formatAxisValueWithUnits(v, input.valueAxis);
38541
+ const text3 = input.percent ? `${Math.round(v * 100)}%` : chunkVFPVEVF4_cjs.formatAxisValueWithUnits(v, input.valueAxis);
38859
38542
  if (layout.horizontal) {
38860
- const at = chunkRPRC2EG5_cjs.perspToScreen(view, [t * w, 0, 0]);
38543
+ const at = chunkK3S2A64B_cjs.perspToScreen(view2, [t * w, 0, 0]);
38861
38544
  labels.push({
38862
38545
  role: "value",
38863
38546
  text: text3,
@@ -38867,7 +38550,7 @@ function buildPerspLabels(layout, input) {
38867
38550
  fontSize
38868
38551
  });
38869
38552
  } else {
38870
- const at = chunkRPRC2EG5_cjs.perspToScreen(view, [0, t * h, 0]);
38553
+ const at = chunkK3S2A64B_cjs.perspToScreen(view2, [0, t * h, 0]);
38871
38554
  labels.push({ role: "value", text: text3, x: at.x - VALUE_GAP2, y: at.y, anchor: "end", fontSize });
38872
38555
  }
38873
38556
  }
@@ -38877,7 +38560,7 @@ function buildPerspLabels(layout, input) {
38877
38560
  return;
38878
38561
  }
38879
38562
  if (layout.horizontal) {
38880
- const at2 = chunkRPRC2EG5_cjs.perspToScreen(view, [0, pos, 0]);
38563
+ const at2 = chunkK3S2A64B_cjs.perspToScreen(view2, [0, pos, 0]);
38881
38564
  labels.push({
38882
38565
  role: "category",
38883
38566
  text: text3,
@@ -38888,7 +38571,7 @@ function buildPerspLabels(layout, input) {
38888
38571
  });
38889
38572
  return;
38890
38573
  }
38891
- const at = chunkRPRC2EG5_cjs.perspToScreen(view, [pos, 0, 0]);
38574
+ const at = chunkK3S2A64B_cjs.perspToScreen(view2, [pos, 0, 0]);
38892
38575
  labels.push({
38893
38576
  role: "category",
38894
38577
  text: text3,
@@ -38901,7 +38584,7 @@ function buildPerspLabels(layout, input) {
38901
38584
  const rows = input.seriesNames.length;
38902
38585
  input.seriesNames.forEach((text3, s) => {
38903
38586
  const z = layout.kind === "surface" ? rows > 1 ? s / (rows - 1) * d : d / 2 : (s + 0.5) / rows * d;
38904
- const at = chunkRPRC2EG5_cjs.perspToScreen(view, [w, 0, z]);
38587
+ const at = chunkK3S2A64B_cjs.perspToScreen(view2, [w, 0, z]);
38905
38588
  labels.push({
38906
38589
  role: "series",
38907
38590
  text: text3,
@@ -38994,7 +38677,7 @@ function computePerspChartLayout(element, vm, options = {}) {
38994
38677
  const valAx = chartData.axes?.find((a) => a.axisType === "valAx");
38995
38678
  const midCat = (valAx?.crossBetween ?? (kind === "area" || kind === "surface" ? "midCat" : "between")) === "midCat";
38996
38679
  const view3D = chartData.view3D;
38997
- const gapWidth = (chartData.barGapWidth ?? chunkLCIXR7WE_cjs.DEFAULT_BAR_GAP_WIDTH) / 100;
38680
+ const gapWidth = (chartData.barGapWidth ?? chunkVFPVEVF4_cjs.DEFAULT_BAR_GAP_WIDTH) / 100;
38998
38681
  const gapDepth = (chartData.gapDepth ?? DEFAULT_GAP_DEPTH2) / 100;
38999
38682
  const slot = 1 / nCat;
39000
38683
  const rows = kind === "surface" ? nSer : grouping === "standard" ? nSer : 1;
@@ -39007,16 +38690,16 @@ function computePerspChartLayout(element, vm, options = {}) {
39007
38690
  const valueExtent = horizontal ? 1 : baseHeight * heightScale;
39008
38691
  const catExtent = horizontal ? HORIZONTAL_CATEGORY_EXTENT * heightScale : 1;
39009
38692
  const box = horizontal ? { w: valueExtent, h: catExtent, d } : { w: 1, h: valueExtent, d };
39010
- const camera = options.oblique ? chunkRPRC2EG5_cjs.perspObliqueCameraFor(box, view3D?.rotX ?? 15, view3D?.rotY ?? 20) : chunkRPRC2EG5_cjs.perspCameraFor(box, view3D?.rotX ?? 15, view3D?.rotY ?? 20, view3D?.perspective ?? void 0);
38693
+ const camera = options.oblique ? chunkK3S2A64B_cjs.perspObliqueCameraFor(box, view3D?.rotX ?? 15, view3D?.rotY ?? 20) : chunkK3S2A64B_cjs.perspCameraFor(box, view3D?.rotX ?? 15, view3D?.rotY ?? 20, view3D?.perspective ?? void 0);
39011
38694
  const hasLegend = chartData.style?.hasLegend !== false && (chartData.style?.legendPosition ?? "b") === "b";
39012
- const view = chunkRPRC2EG5_cjs.fitPerspView(camera, {
38695
+ const view2 = chunkK3S2A64B_cjs.fitPerspView(camera, {
39013
38696
  left: RECT_LEFT,
39014
38697
  right: vm.svgWidth - (rows > 1 ? RECT_RIGHT_WITH_SERIES : RECT_RIGHT_NO_SERIES),
39015
38698
  top: vm.title ? RECT_TOP_WITH_TITLE : RECT_TOP_NO_TITLE,
39016
38699
  bottom: vm.svgHeight - (hasLegend ? RECT_BOTTOM_WITH_LEGEND : RECT_BOTTOM_NO_LEGEND)
39017
38700
  });
39018
38701
  const [lo, hi] = dataExtent2(chartData, grouping, nCat);
39019
- const auto = chunkLCIXR7WE_cjs.niceValueAxisBounds(lo, hi, chunkLCIXR7WE_cjs.axisTargetIntervals(view.focal * valueExtent), 0);
38702
+ const auto = chunkVFPVEVF4_cjs.niceValueAxisBounds(lo, hi, chunkVFPVEVF4_cjs.axisTargetIntervals(view2.focal * valueExtent), 0);
39020
38703
  const min = typeof valAx?.min === "number" ? valAx.min : auto.min;
39021
38704
  let max = typeof valAx?.max === "number" ? valAx.max : auto.max;
39022
38705
  if (max <= min) {
@@ -39031,7 +38714,7 @@ function computePerspChartLayout(element, vm, options = {}) {
39031
38714
  const layout = {
39032
38715
  kind,
39033
38716
  grouping,
39034
- view,
38717
+ view: view2,
39035
38718
  range,
39036
38719
  horizontal,
39037
38720
  valueScale: valueExtent / (max - min),
@@ -39108,7 +38791,7 @@ function buildBarGeometry(element, vm) {
39108
38791
  }
39109
38792
  var PERSP_BOX_TYPES = /* @__PURE__ */ new Set(["line3D", "area3D", "surface", "bar3D"]);
39110
38793
  function buildPieGeometry(element, vm) {
39111
- const layout = chunkRPRC2EG5_cjs.computePieChartLayout(element, chunkRPRC2EG5_cjs.widenPieViewModel(vm, element));
38794
+ const layout = chunkK3S2A64B_cjs.computePieChartLayout(element, chunkK3S2A64B_cjs.widenPieViewModel(vm, element));
39112
38795
  return layout ? { kind: "pie", layout } : null;
39113
38796
  }
39114
38797
  function buildPerspGeometry(element, vm, oblique) {
@@ -39128,7 +38811,7 @@ function buildChart3DSpecForElement(element) {
39128
38811
  if (!chartData || !is3DChartType(chartType)) {
39129
38812
  return null;
39130
38813
  }
39131
- const vm = chunkLCIXR7WE_cjs.buildChartViewModel(element);
38814
+ const vm = chunkVFPVEVF4_cjs.buildChartViewModel(element);
39132
38815
  const projection = resolveChart3DProjection(chartType, chartData.view3D);
39133
38816
  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;
39134
38817
  if (!geometry) {
@@ -42915,24 +42598,10 @@ function applyOutlineEdit(slides, edit, options = {}) {
42915
42598
  return unchanged([...slides], row);
42916
42599
  }
42917
42600
  }
42918
-
42919
- // src/pptx/render/editor-keymap-arrows.ts
42920
42601
  var NUDGE_SMALL = 1;
42921
42602
  var NUDGE_LARGE = 10;
42922
42603
  function editorNudgeDelta(key, large) {
42923
- const step = large ? NUDGE_LARGE : NUDGE_SMALL;
42924
- switch (key) {
42925
- case "ArrowLeft":
42926
- return { dx: -step, dy: 0 };
42927
- case "ArrowRight":
42928
- return { dx: step, dy: 0 };
42929
- case "ArrowUp":
42930
- return { dx: 0, dy: -step };
42931
- case "ArrowDown":
42932
- return { dx: 0, dy: step };
42933
- default:
42934
- return null;
42935
- }
42604
+ return geometry.arrowKeyDelta(key, large ? NUDGE_LARGE : NUDGE_SMALL);
42936
42605
  }
42937
42606
  function editorSlideStep(key, hasSelection, withModifier) {
42938
42607
  if (withModifier) {
@@ -47394,11 +47063,11 @@ function buildSummaryZoomView(element, lookup, translate) {
47394
47063
  ariaLabel: translate ? translate("pptx.zoom.ariaLabelSummary", { count: String(tiles.length) }) : `Summary Zoom with ${tiles.length} sections`
47395
47064
  };
47396
47065
  }
47397
- function resolveSummaryZoomNavigation(view, tileIndex) {
47398
- if (!view || !Number.isInteger(tileIndex) || tileIndex < 0) {
47066
+ function resolveSummaryZoomNavigation(view2, tileIndex) {
47067
+ if (!view2 || !Number.isInteger(tileIndex) || tileIndex < 0) {
47399
47068
  return void 0;
47400
47069
  }
47401
- return view.tiles[tileIndex]?.targetSlideIndex;
47070
+ return view2.tiles[tileIndex]?.targetSlideIndex;
47402
47071
  }
47403
47072
  function fixedTileStyle(element, x, y, width, height) {
47404
47073
  const safeWidth = Math.max(element.width, 1);
@@ -53230,7 +52899,7 @@ function axisTitle(current, show) {
53230
52899
  return show ? current || AXIS_TITLE : void 0;
53231
52900
  }
53232
52901
  function applyChartQuickLayout(chartData, layout) {
53233
- const withGrid = patchChartData(chartData, chunkLCIXR7WE_cjs.chartGridlinesPatch(chartData, layout.majorGridlines));
52902
+ const withGrid = patchChartData(chartData, chunkVFPVEVF4_cjs.chartGridlinesPatch(chartData, layout.majorGridlines));
53234
52903
  const axes = (withGrid.axes ?? []).map((axis) => {
53235
52904
  if (axis.axisType === "valAx") {
53236
52905
  return {
@@ -53284,7 +52953,7 @@ function matchesLayout(chartData, layout) {
53284
52953
  const legend = style.hasLegend ? style.legendPosition ?? "r" : null;
53285
52954
  const isBar = chartData.chartType === "bar" || chartData.chartType === "bar3D";
53286
52955
  const barMatches = !isBar || (chartData.barGapWidth ?? 150) === layout.gapWidth && (chartData.barOverlap ?? 0) === layout.overlap;
53287
- 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 && chunkLCIXR7WE_cjs.chartGridlinesState(chartData) === layout.majorGridlines && Boolean(valAxis?.minorGridlines) === layout.minorGridlines && !valAxis?.deleted === layout.valueAxis;
52956
+ 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 && chunkVFPVEVF4_cjs.chartGridlinesState(chartData) === layout.majorGridlines && Boolean(valAxis?.minorGridlines) === layout.minorGridlines && !valAxis?.deleted === layout.valueAxis;
53288
52957
  }
53289
52958
  var CHART_QUICK_LAYOUT_GALLERY = {
53290
52959
  build(ctx) {
@@ -57870,6 +57539,86 @@ function galleryTextLabel(translate, key, fallback) {
57870
57539
  const translated = translate(key);
57871
57540
  return translated && translated !== key ? translated : fallback;
57872
57541
  }
57542
+ var RIBBON_ADD_IN_TAB_ATTR = "data-ribbon-add-in-tab";
57543
+ var RIBBON_RESERVED_TAB_IDS = [
57544
+ ...TOOLBAR_TABS.map((tab) => tab.id),
57545
+ ...RIBBON_CONTEXTUAL_TABS.map((tab) => tab.id),
57546
+ // Sections some bindings show as part of Home.
57547
+ "text",
57548
+ "arrange"
57549
+ ];
57550
+ function visibleRibbonAddIns(tabs) {
57551
+ return ribbon.acceptedRibbonAddIns(tabs, RIBBON_RESERVED_TAB_IDS);
57552
+ }
57553
+ function findRibbonAddIn(id, tabs) {
57554
+ return id ? visibleRibbonAddIns(tabs).find((tab) => tab.id === id) : void 0;
57555
+ }
57556
+ function resolveActiveRibbonAddIn(active2, tabs, known, fallback) {
57557
+ if (known(active2)) return active2;
57558
+ return findRibbonAddIn(active2, tabs) ? active2 : fallback;
57559
+ }
57560
+ var SMALL_ROWS = 3;
57561
+ function ribbonAddInControlId(tab, command) {
57562
+ return `add-in.${tab}.${command}`;
57563
+ }
57564
+ function ribbonAddInGroupViews(tab) {
57565
+ return tab.groups.map((group, index) => {
57566
+ const commands = [];
57567
+ let column2 = 0;
57568
+ let rows = SMALL_ROWS;
57569
+ const small = (command, parent) => {
57570
+ if (rows >= SMALL_ROWS) {
57571
+ column2 += 1;
57572
+ rows = 0;
57573
+ }
57574
+ rows += 1;
57575
+ commands.push({ ...view(tab, command, parent), compact: true, column: column2 });
57576
+ };
57577
+ for (const command of group.commands) {
57578
+ if (command.items?.length) {
57579
+ for (const item4 of command.items) small(item4, command);
57580
+ } else if (command.size === "small") {
57581
+ small(command);
57582
+ } else {
57583
+ rows = SMALL_ROWS;
57584
+ commands.push(view(tab, command));
57585
+ }
57586
+ }
57587
+ return { id: `add-in.${tab.id}.group-${index}`, label: group.label, commands };
57588
+ });
57589
+ }
57590
+ function view(tab, command, parent) {
57591
+ return {
57592
+ id: ribbonAddInControlId(tab.id, command.id),
57593
+ label: command.label,
57594
+ title: command.title ?? (parent ? `${parent.label}: ${command.label}` : command.label),
57595
+ icon: command.icon ?? parent?.icon ?? "",
57596
+ disabled: command.disabled === true || parent?.disabled === true
57597
+ };
57598
+ }
57599
+ function runRibbonAddInCommand(target, tab, controlId) {
57600
+ const prefix = ribbonAddInControlId(tab.id, "");
57601
+ if (!controlId.startsWith(prefix)) return false;
57602
+ const id = controlId.slice(prefix.length);
57603
+ const command = ribbon.findRibbonAddInCommand(tab, id);
57604
+ if (!command || command.items?.length) return false;
57605
+ if (parentOf(tab, id)?.disabled) return false;
57606
+ command.run?.();
57607
+ target.dispatchEvent(
57608
+ new CustomEvent(ribbon.RIBBON_ADD_IN_EVENT, {
57609
+ detail: { tab: tab.id, command: id },
57610
+ bubbles: true,
57611
+ composed: true
57612
+ })
57613
+ );
57614
+ return true;
57615
+ }
57616
+ function parentOf(tab, id) {
57617
+ for (const group of tab.groups)
57618
+ for (const command of group.commands)
57619
+ if (command.items?.some((item4) => item4.id === id)) return command;
57620
+ return void 0;
57621
+ }
57873
57622
 
57874
57623
  // src/pptx/render/ole-icon-primitives.ts
57875
57624
  function rect2(x, y, width, height, rx) {
@@ -58455,7 +58204,7 @@ function createGestureController(deps) {
58455
58204
  function computeRotate(g, pointer) {
58456
58205
  let angle = g.rotate?.(stagePoint(pointer)) ?? g.startBox.rotation ?? 0;
58457
58206
  if (pointer.shiftKey) {
58458
- angle = snapAngle(angle);
58207
+ angle = geometry.snapAngle(angle);
58459
58208
  }
58460
58209
  return { ...toTransform(g.id, g.startBox), rotation: angle };
58461
58210
  }
@@ -58733,7 +58482,7 @@ function isSeriesUsingSecondaryAxis(chartData, seriesIndex) {
58733
58482
  if (!series) {
58734
58483
  return false;
58735
58484
  }
58736
- return chunkLCIXR7WE_cjs.isSeriesOnSecondaryAxis(series, chartData.axes);
58485
+ return chunkVFPVEVF4_cjs.isSeriesOnSecondaryAxis(series, chartData.axes);
58737
58486
  }
58738
58487
  function resolveSecondaryAxisId(chartData, useSecondary) {
58739
58488
  const axPos = useSecondary ? "r" : "l";
@@ -59271,14 +59020,14 @@ async function buildForeignObjectSvgBody(element, doc, options) {
59271
59020
  backgroundColor,
59272
59021
  readComputedStyle = (el) => window.getComputedStyle(el)
59273
59022
  } = options;
59274
- await chunkG2YUKLRX_cjs.settleThreeViews(element);
59023
+ await chunk526IHNIH_cjs.settleThreeViews(element);
59275
59024
  const clone = element.cloneNode(true);
59276
- chunkG2YUKLRX_cjs.withAuthoredStrokeWidths(
59025
+ chunk526IHNIH_cjs.withAuthoredStrokeWidths(
59277
59026
  element,
59278
59027
  () => inlineComputedStylesOnClone(element, clone, readComputedStyle)
59279
59028
  );
59280
- chunkG2YUKLRX_cjs.snapshotThreeViewsIntoClone(element, clone);
59281
- chunkG2YUKLRX_cjs.prepareExportClone(clone);
59029
+ chunk526IHNIH_cjs.snapshotThreeViewsIntoClone(element, clone);
59030
+ chunk526IHNIH_cjs.prepareExportClone(clone);
59282
59031
  const [{ allEmbedded: imagesEmbedded }, externalFonts] = await Promise.all([
59283
59032
  embedImagesOnClone(clone),
59284
59033
  collectExternalFontFaceCss(doc, fetchAsDataUrl)
@@ -65497,11 +65246,11 @@ function createLinkPopover(doc, submit, closed) {
65497
65246
  if (!anchorEl) {
65498
65247
  return;
65499
65248
  }
65500
- const view = doc.defaultView;
65249
+ const view2 = doc.defaultView;
65501
65250
  const box = anchorEl.getBoundingClientRect();
65502
65251
  const own = el.getBoundingClientRect();
65503
- const width = view?.innerWidth ?? 1024;
65504
- const height = view?.innerHeight ?? 768;
65252
+ const width = view2?.innerWidth ?? 1024;
65253
+ const height = view2?.innerHeight ?? 768;
65505
65254
  const left = Math.max(8, Math.min(box.left, width - own.width - 8));
65506
65255
  const above = box.top - own.height - 4;
65507
65256
  el.style.left = `${left}px`;
@@ -66482,16 +66231,16 @@ var OfficeUiDialogFooter = class extends OfficeElement {
66482
66231
  this.model.actions,
66483
66232
  (action) => action.id,
66484
66233
  (action) => lit.html`<button
66485
- type="button"
66486
- class=${this.classes(action)}
66487
- data-action=${action.id}
66488
- data-testid=${ifDefined_js.ifDefined(action.testId)}
66489
- title=${ifDefined_js.ifDefined(action.title)}
66490
- aria-busy=${ifDefined_js.ifDefined(action.busy ? "true" : void 0)}
66491
- ?disabled=${action.disabled === true || action.busy === true}
66492
- @click=${() => this.fire(requestEvent, { id: action.id })}
66493
- >${action.icon ? glyph(action.icon, "icon") : ""}${action.label}</button
66494
- >`
66234
+ type="button"
66235
+ class=${this.classes(action)}
66236
+ data-action=${action.id}
66237
+ data-testid=${ifDefined_js.ifDefined(action.testId)}
66238
+ title=${ifDefined_js.ifDefined(action.title)}
66239
+ aria-busy=${ifDefined_js.ifDefined(action.busy ? "true" : void 0)}
66240
+ ?disabled=${action.disabled === true || action.busy === true}
66241
+ @click=${() => this.fire(requestEvent, { id: action.id })}
66242
+ >${action.icon ? glyph(action.icon, "icon") : ""}${action.label}</button
66243
+ >`
66495
66244
  )}
66496
66245
  </div>
66497
66246
  `;
@@ -66543,22 +66292,22 @@ var OfficeUiToasts = class extends OfficeElement {
66543
66292
  </div>
66544
66293
  ${visible.map(
66545
66294
  (toast) => lit.html`<div
66546
- class="toast"
66547
- role="status"
66548
- data-testid=${p}
66549
- data-code=${ifDefined_js.ifDefined(toast.code)}
66550
- data-severity=${toast.severity}
66551
- >
66552
- ${glyph(toast.severity === "warning" ? "warning" : "info", "icon")}
66553
- <p class="message">${toast.message}</p>
66554
- <button
66555
- type="button"
66556
- data-testid="${p}-dismiss"
66557
- aria-label=${labels.dismiss ?? "Dismiss"}
66558
- @click=${() => this.fire(requestEvent, { id: "dismiss", toastId: toast.id })}
66559
- >${glyph("close", "icon")}</button
66295
+ class="toast"
66296
+ role="status"
66297
+ data-testid=${p}
66298
+ data-code=${ifDefined_js.ifDefined(toast.code)}
66299
+ data-severity=${toast.severity}
66560
66300
  >
66561
- </div>`
66301
+ ${glyph(toast.severity === "warning" ? "warning" : "info", "icon")}
66302
+ <p class="message">${toast.message}</p>
66303
+ <button
66304
+ type="button"
66305
+ data-testid="${p}-dismiss"
66306
+ aria-label=${labels.dismiss ?? "Dismiss"}
66307
+ @click=${() => this.fire(requestEvent, { id: "dismiss", toastId: toast.id })}
66308
+ >${glyph("close", "icon")}</button
66309
+ >
66310
+ </div>`
66562
66311
  )}
66563
66312
  ${hiddenCount > 0 ? lit.html`<p class="overflow">+${hiddenCount}</p>` : ""}
66564
66313
  </div>
@@ -66592,22 +66341,22 @@ var OfficeUiPasteOptions = class extends OfficeElement {
66592
66341
  }
66593
66342
  connectedCallback() {
66594
66343
  super.connectedCallback();
66595
- const view = this.ownerDocument.defaultView;
66596
- if (!view) return;
66344
+ const view2 = this.ownerDocument.defaultView;
66345
+ if (!view2) return;
66597
66346
  const dismiss = (event) => {
66598
66347
  const toolbar = this.renderRoot.querySelector(".toolbar");
66599
66348
  if (toolbar && event.composedPath().includes(toolbar) && (!(event instanceof KeyboardEvent) || event.key !== "Escape"))
66600
66349
  return;
66601
66350
  this.dismiss();
66602
66351
  };
66603
- const timer = view.setTimeout(() => {
66604
- view.addEventListener("pointerdown", dismiss, true);
66605
- view.addEventListener("keydown", dismiss, true);
66352
+ const timer = view2.setTimeout(() => {
66353
+ view2.addEventListener("pointerdown", dismiss, true);
66354
+ view2.addEventListener("keydown", dismiss, true);
66606
66355
  }, 0);
66607
66356
  this.disarm = () => {
66608
- view.clearTimeout(timer);
66609
- view.removeEventListener("pointerdown", dismiss, true);
66610
- view.removeEventListener("keydown", dismiss, true);
66357
+ view2.clearTimeout(timer);
66358
+ view2.removeEventListener("pointerdown", dismiss, true);
66359
+ view2.removeEventListener("keydown", dismiss, true);
66611
66360
  };
66612
66361
  }
66613
66362
  disconnectedCallback() {
@@ -66641,12 +66390,12 @@ var OfficeUiPasteOptions = class extends OfficeElement {
66641
66390
  this.model.options,
66642
66391
  (option) => option.id,
66643
66392
  (option) => lit.html`<button
66644
- type="button"
66645
- data-format=${option.id}
66646
- title=${option.label}
66647
- @click=${() => this.choose(option)}
66648
- >${option.label}</button
66649
- >`
66393
+ type="button"
66394
+ data-format=${option.id}
66395
+ title=${option.label}
66396
+ @click=${() => this.choose(option)}
66397
+ >${option.label}</button
66398
+ >`
66650
66399
  )}
66651
66400
  </div>
66652
66401
  `;
@@ -67985,14 +67734,14 @@ var OfficeUiContextMenu = class extends OfficeElement {
67985
67734
  doc.addEventListener("pointerdown", this.outside, true);
67986
67735
  }
67987
67736
  this.open = true;
67988
- const view = doc.defaultView;
67737
+ const view2 = doc.defaultView;
67989
67738
  const { left, top } = clampFlyoutPosition2({
67990
67739
  x,
67991
67740
  y,
67992
67741
  width: panel.offsetWidth,
67993
67742
  height: panel.offsetHeight,
67994
- viewportWidth: view?.innerWidth ?? x,
67995
- viewportHeight: view?.innerHeight ?? y,
67743
+ viewportWidth: view2?.innerWidth ?? x,
67744
+ viewportHeight: view2?.innerHeight ?? y,
67996
67745
  margin: 4
67997
67746
  });
67998
67747
  panel.style.left = `${Math.round(left)}px`;
@@ -68101,7 +67850,7 @@ var OfficeUiContextMenu = class extends OfficeElement {
68101
67850
  for (const name of this.markers) this.setAttribute(name, "true");
68102
67851
  }
68103
67852
  place() {
68104
- const view = this.ownerDocument.defaultView;
67853
+ const view2 = this.ownerDocument.defaultView;
68105
67854
  this.style.left = `${this.model.x}px`;
68106
67855
  this.style.top = `${this.model.y}px`;
68107
67856
  const box = this.getBoundingClientRect();
@@ -68110,8 +67859,8 @@ var OfficeUiContextMenu = class extends OfficeElement {
68110
67859
  y: this.model.y,
68111
67860
  width: box.width,
68112
67861
  height: box.height,
68113
- viewportWidth: view?.innerWidth ?? box.right,
68114
- viewportHeight: view?.innerHeight ?? box.bottom
67862
+ viewportWidth: view2?.innerWidth ?? box.right,
67863
+ viewportHeight: view2?.innerHeight ?? box.bottom
68115
67864
  });
68116
67865
  this.style.left = `${left}px`;
68117
67866
  this.style.top = `${top}px`;
@@ -68197,9 +67946,11 @@ var OfficeUiContextMenu = class extends OfficeElement {
68197
67946
  let group;
68198
67947
  const closeGroup = () => {
68199
67948
  if (!group) return;
68200
- out.push(lit.html`<div role="group" aria-label=${group.heading}>
68201
- <div class="heading" aria-hidden="true">${group.heading}</div>${group.rows}</div
68202
- >`);
67949
+ out.push(
67950
+ lit.html`<div role="group" aria-label=${group.heading}>
67951
+ <div class="heading" aria-hidden="true">${group.heading}</div>${group.rows}</div
67952
+ >`
67953
+ );
68203
67954
  group = void 0;
68204
67955
  };
68205
67956
  this.model.items.forEach((item4, index) => {
@@ -68278,12 +68029,12 @@ function tokenPx2(el, name, fallback) {
68278
68029
  return Number.isFinite(px3) ? px3 : fallback;
68279
68030
  }
68280
68031
  function positionSelectMenu(menu, trigger, host2) {
68281
- const view = menu.ownerDocument.defaultView;
68032
+ const view2 = menu.ownerDocument.defaultView;
68282
68033
  const rect3 = trigger.getBoundingClientRect();
68283
68034
  const margin = tokenPx2(host2, "--office-space-2", 8);
68284
68035
  const gap = tokenPx2(host2, "--office-space-1", 4);
68285
- const width = Math.max(0, view.innerWidth - margin * 2);
68286
- const below = Math.max(0, view.innerHeight - rect3.bottom - gap - margin);
68036
+ const width = Math.max(0, view2.innerWidth - margin * 2);
68037
+ const below = Math.max(0, view2.innerHeight - rect3.bottom - gap - margin);
68287
68038
  const above = Math.max(0, rect3.top - gap - margin);
68288
68039
  menu.style.minWidth = `${Math.min(rect3.width, width)}px`;
68289
68040
  menu.style.maxWidth = `${width}px`;
@@ -68294,7 +68045,7 @@ function positionSelectMenu(menu, trigger, host2) {
68294
68045
  menu.style.maxHeight = `${Math.min(cap, flip ? above : below)}px`;
68295
68046
  const { height, width: menuWidth } = menu.getBoundingClientRect();
68296
68047
  menu.style.top = `${Math.max(margin, flip ? rect3.top - gap - height : rect3.bottom + gap)}px`;
68297
- menu.style.left = `${Math.max(margin, Math.min(rect3.left, view.innerWidth - menuWidth - margin))}px`;
68048
+ menu.style.left = `${Math.max(margin, Math.min(rect3.left, view2.innerWidth - menuWidth - margin))}px`;
68298
68049
  }
68299
68050
  function nextSelectActive(choices2, active2, step) {
68300
68051
  for (let i = 0; i < choices2.length; i++) {
@@ -68356,9 +68107,9 @@ var OfficeUiSelect = class extends OfficeElement {
68356
68107
  }
68357
68108
  const Observer = this.ownerDocument.defaultView?.MutationObserver;
68358
68109
  this.observer = Observer ? new Observer(() => {
68359
- const view = this.ownerDocument.defaultView;
68360
- if (this.refreshFrame || !view) return;
68361
- this.refreshFrame = view.requestAnimationFrame(() => {
68110
+ const view2 = this.ownerDocument.defaultView;
68111
+ if (this.refreshFrame || !view2) return;
68112
+ this.refreshFrame = view2.requestAnimationFrame(() => {
68362
68113
  this.refreshFrame = 0;
68363
68114
  this.refresh();
68364
68115
  });
@@ -68422,12 +68173,12 @@ var OfficeUiSelect = class extends OfficeElement {
68422
68173
  super.disconnectedCallback();
68423
68174
  this.open = false;
68424
68175
  this.closePopup();
68425
- const view = this.ownerDocument.defaultView;
68426
- view?.clearTimeout(this.searchTimer);
68176
+ const view2 = this.ownerDocument.defaultView;
68177
+ view2?.clearTimeout(this.searchTimer);
68427
68178
  this.searchTimer = 0;
68428
68179
  this.search = "";
68429
68180
  this.observer?.disconnect();
68430
- if (this.refreshFrame) view?.cancelAnimationFrame(this.refreshFrame);
68181
+ if (this.refreshFrame) view2?.cancelAnimationFrame(this.refreshFrame);
68431
68182
  this.refreshFrame = 0;
68432
68183
  }
68433
68184
  collect() {
@@ -68466,22 +68217,22 @@ var OfficeUiSelect = class extends OfficeElement {
68466
68217
  if (!menu) return;
68467
68218
  if (typeof menu.showPopover === "function") menu.showPopover();
68468
68219
  this.position();
68469
- const view = this.ownerDocument.defaultView;
68220
+ const view2 = this.ownerDocument.defaultView;
68470
68221
  this.ownerDocument.addEventListener("pointerdown", this.onOutside, true);
68471
- view?.addEventListener("resize", this.position);
68472
- view?.addEventListener("scroll", this.position, true);
68222
+ view2?.addEventListener("resize", this.position);
68223
+ view2?.addEventListener("scroll", this.position, true);
68473
68224
  }
68474
68225
  closePopup() {
68475
- const view = this.ownerDocument.defaultView;
68476
- view?.clearTimeout(this.searchTimer);
68226
+ const view2 = this.ownerDocument.defaultView;
68227
+ view2?.clearTimeout(this.searchTimer);
68477
68228
  this.search = "";
68478
68229
  try {
68479
68230
  if (this.menu?.matches(":popover-open")) this.menu.hidePopover();
68480
68231
  } catch {
68481
68232
  }
68482
68233
  this.ownerDocument.removeEventListener("pointerdown", this.onOutside, true);
68483
- view?.removeEventListener("resize", this.position);
68484
- view?.removeEventListener("scroll", this.position, true);
68234
+ view2?.removeEventListener("resize", this.position);
68235
+ view2?.removeEventListener("scroll", this.position, true);
68485
68236
  }
68486
68237
  onOutside = (event) => {
68487
68238
  if (!event.composedPath().includes(this)) this.close();
@@ -68538,10 +68289,10 @@ var OfficeUiSelect = class extends OfficeElement {
68538
68289
  }
68539
68290
  }
68540
68291
  typeAhead(key) {
68541
- const view = this.ownerDocument.defaultView;
68292
+ const view2 = this.ownerDocument.defaultView;
68542
68293
  this.search += key.toLocaleLowerCase();
68543
- view?.clearTimeout(this.searchTimer);
68544
- this.searchTimer = view?.setTimeout(() => {
68294
+ view2?.clearTimeout(this.searchTimer);
68295
+ this.searchTimer = view2?.setTimeout(() => {
68545
68296
  this.search = "";
68546
68297
  }, 700) ?? 0;
68547
68298
  this.show();
@@ -68732,12 +68483,12 @@ var OfficeUiStatusBar = class extends OfficeElement {
68732
68483
  items,
68733
68484
  (spec5) => spec5.id,
68734
68485
  (spec5) => lit.html`<span
68735
- class="item${spec5.tone === "saving" ? " saving" : ""}${spec5.tone === "error" ? " error" : ""}${spec5.narrowHide ? " narrow-hide" : ""}"
68736
- data-item=${spec5.id}
68737
- title=${ifDefined_js.ifDefined(spec5.title)}
68738
- aria-live=${ifDefined_js.ifDefined(spec5.live ? "polite" : void 0)}
68739
- >${spec5.text}</span
68740
- >`
68486
+ class="item${spec5.tone === "saving" ? " saving" : ""}${spec5.tone === "error" ? " error" : ""}${spec5.narrowHide ? " narrow-hide" : ""}"
68487
+ data-item=${spec5.id}
68488
+ title=${ifDefined_js.ifDefined(spec5.title)}
68489
+ aria-live=${ifDefined_js.ifDefined(spec5.live ? "polite" : void 0)}
68490
+ >${spec5.text}</span
68491
+ >`
68741
68492
  )}
68742
68493
  </span>
68743
68494
  <slot></slot>
@@ -68793,7 +68544,7 @@ function matchTitleBarCommands(search, query) {
68793
68544
  }
68794
68545
 
68795
68546
  // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/chrome/title-bar.css?raw
68796
- 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";
68547
+ 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/* `centered`: the file name sits in the middle of the bar, as in Visio's window title. */\n@media (min-width: 761px) {\n :host([centered]) .bar {\n position: relative;\n }\n :host([centered]) .file {\n position: absolute;\n inset-inline-start: 50%;\n transform: translateX(-50%);\n }\n :host([centered][dir='rtl']) .file {\n transform: translateX(50%);\n }\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 /* Without a search box nothing else pushes the account to the far edge. */\n margin-inline-start: auto;\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";
68797
68548
 
68798
68549
  // src/chrome/title-bar.ts
68799
68550
  var EMPTY = { fileName: "" };
@@ -68893,15 +68644,15 @@ var OfficeUiTitleBar = class extends OfficeElement {
68893
68644
  items,
68894
68645
  (item4) => item4.id,
68895
68646
  (item4) => lit.html`<button
68896
- type="button"
68897
- data-command=${item4.id}
68898
- aria-label=${item4.label}
68899
- title=${ifDefined_js.ifDefined(item4.title)}
68900
- tabindex=${item4 === current ? 0 : -1}
68901
- ?disabled=${item4.disabled === true}
68902
- @click=${() => this.activate(item4.id)}
68903
- >${glyph(item4.icon, "icon")}${qa?.showLabels === true ? lit.html`<small>${item4.label}</small>` : ""}</button
68904
- >`
68647
+ type="button"
68648
+ data-command=${item4.id}
68649
+ aria-label=${item4.label}
68650
+ title=${ifDefined_js.ifDefined(item4.title)}
68651
+ tabindex=${item4 === current ? 0 : -1}
68652
+ ?disabled=${item4.disabled === true}
68653
+ @click=${() => this.activate(item4.id)}
68654
+ >${glyph(item4.icon, "icon")}${qa?.showLabels === true ? lit.html`<small>${item4.label}</small>` : ""}</button
68655
+ >`
68905
68656
  )}
68906
68657
  </div>`;
68907
68658
  }
@@ -68963,15 +68714,15 @@ var OfficeUiTitleBar = class extends OfficeElement {
68963
68714
  <div class="results" role="listbox" ?hidden=${!this.resultsOpen}>
68964
68715
  ${this.found.length > 0 ? lit.html`<div class="heading">${search.heading}</div> ${this.found.map(
68965
68716
  (entry5, index) => lit.html`<button
68966
- type="button"
68967
- role="option"
68968
- tabindex="-1"
68969
- aria-selected=${String(index === this.active)}
68970
- @mousedown=${(event) => pick(event, () => this.commit(entry5))}
68971
- @mouseenter=${() => this.active = index}
68972
- ><span>${entry5.label}</span
68973
- ><span class="cat">${entry5.category ?? ""}</span></button
68974
- >`
68717
+ type="button"
68718
+ role="option"
68719
+ tabindex="-1"
68720
+ aria-selected=${String(index === this.active)}
68721
+ @mousedown=${(event) => pick(event, () => this.commit(entry5))}
68722
+ @mouseenter=${() => this.active = index}
68723
+ ><span>${entry5.label}</span
68724
+ ><span class="cat">${entry5.category ?? ""}</span></button
68725
+ >`
68975
68726
  )}` : lit.html`<div class="empty">${search.empty}</div>`}
68976
68727
  ${search.content ? lit.html`<button
68977
68728
  type="button"
@@ -69959,8 +69710,8 @@ function definePptxPresentToolbar(registry2) {
69959
69710
  connectedCallback() {
69960
69711
  this.render();
69961
69712
  this.ownerDocument.addEventListener("mousedown", this.onOutside, true);
69962
- const view = this.ownerDocument.defaultView;
69963
- this.tick = view?.setInterval(() => this.view.renderElapsed(this.model.startTime), 1e3);
69713
+ const view2 = this.ownerDocument.defaultView;
69714
+ this.tick = view2?.setInterval(() => this.view.renderElapsed(this.model.startTime), 1e3);
69964
69715
  }
69965
69716
  disconnectedCallback() {
69966
69717
  this.ownerDocument.removeEventListener("mousedown", this.onOutside, true);
@@ -70964,9 +70715,9 @@ function definePptxRibbonGallery(registry2) {
70964
70715
  this,
70965
70716
  this.#descriptor ? officeGalleryState(this.#descriptor, this.#t) : void 0
70966
70717
  );
70967
- const view = this.trigger.parentElement;
70968
- if (this.#descriptor && !this.isConnected && view && view.parentElement !== this) {
70969
- this.append(view);
70718
+ const view2 = this.trigger.parentElement;
70719
+ if (this.#descriptor && !this.isConnected && view2 && view2.parentElement !== this) {
70720
+ this.append(view2);
70970
70721
  }
70971
70722
  }
70972
70723
  }
@@ -71447,14 +71198,14 @@ function createHomePopup(doc, slot, trigger, role, label, onChange) {
71447
71198
  let keyboard = false;
71448
71199
  el.addEventListener("click", (event) => keyboard = event.detail === 0, true);
71449
71200
  const reposition = () => {
71450
- const view = doc.defaultView;
71451
- if (!view || !opened) {
71201
+ const view2 = doc.defaultView;
71202
+ if (!view2 || !opened) {
71452
71203
  return;
71453
71204
  }
71454
71205
  const anchor = slot.getBoundingClientRect();
71455
71206
  const { width, height } = el.getBoundingClientRect();
71456
- const left = Math.min(anchor.left, view.innerWidth - width - 8);
71457
- const top = anchor.bottom + 4 + height > view.innerHeight - 8 && anchor.top - 4 - height >= 8 ? anchor.top - 4 - height : anchor.bottom + 4;
71207
+ const left = Math.min(anchor.left, view2.innerWidth - width - 8);
71208
+ const top = anchor.bottom + 4 + height > view2.innerHeight - 8 && anchor.top - 4 - height >= 8 ? anchor.top - 4 - height : anchor.bottom + 4;
71458
71209
  el.style.left = `${Math.max(8, left)}px`;
71459
71210
  el.style.top = `${Math.max(8, top)}px`;
71460
71211
  };
@@ -71472,11 +71223,11 @@ function createHomePopup(doc, slot, trigger, role, label, onChange) {
71472
71223
  }
71473
71224
  };
71474
71225
  const listen = (on) => {
71475
- const view = doc.defaultView;
71226
+ const view2 = doc.defaultView;
71476
71227
  const method = on ? "addEventListener" : "removeEventListener";
71477
71228
  doc[method]("pointerdown", outside, true);
71478
71229
  doc[method]("keydown", key);
71479
- view?.[method]("resize", reposition);
71230
+ view2?.[method]("resize", reposition);
71480
71231
  doc[method]("scroll", reposition, true);
71481
71232
  };
71482
71233
  function close(focusTrigger = false) {
@@ -72133,10 +71884,10 @@ function createInsertMenu(doc, control2, icon2, pick, options = {}) {
72133
71884
  return;
72134
71885
  }
72135
71886
  const rect3 = trigger.getBoundingClientRect();
72136
- const view = doc.defaultView;
71887
+ const view2 = doc.defaultView;
72137
71888
  const box = list.getBoundingClientRect();
72138
- const width = view?.innerWidth ?? 1024;
72139
- const height = view?.innerHeight ?? 768;
71889
+ const width = view2?.innerWidth ?? 1024;
71890
+ const height = view2?.innerHeight ?? 768;
72140
71891
  list.style.left = `${Math.max(8, Math.min(rect3.left, width - box.width - 8))}px`;
72141
71892
  list.style.top = `${Math.max(8, Math.min(rect3.bottom + 4, height - box.height - 8))}px`;
72142
71893
  };
@@ -72489,6 +72240,49 @@ function definePptxRibbonSection(registry2) {
72489
72240
  registry2.define("pptx-ui-ribbon-section", PptxRibbonSection);
72490
72241
  }
72491
72242
 
72243
+ // src/pptx/web-components/ribbon-add-in.ts
72244
+ function definePptxRibbonAddIn(registry2) {
72245
+ if (registry2.get("pptx-ui-ribbon-add-in")) {
72246
+ return;
72247
+ }
72248
+ definePptxRibbonSection(registry2);
72249
+ class PptxRibbonAddIn extends HTMLElement {
72250
+ #tab = null;
72251
+ #section = null;
72252
+ get tab() {
72253
+ return this.#tab;
72254
+ }
72255
+ set tab(value) {
72256
+ this.#tab = value ?? null;
72257
+ this.#render();
72258
+ }
72259
+ connectedCallback() {
72260
+ this.style.display = "contents";
72261
+ this.addEventListener("command-request", this.#request);
72262
+ this.#render();
72263
+ }
72264
+ disconnectedCallback() {
72265
+ this.removeEventListener("command-request", this.#request);
72266
+ }
72267
+ #request = (event) => {
72268
+ event.stopPropagation();
72269
+ const id = event.detail?.id;
72270
+ if (this.#tab && typeof id === "string") runRibbonAddInCommand(this, this.#tab, id);
72271
+ };
72272
+ #render() {
72273
+ if (!this.isConnected) return;
72274
+ if (!this.#section) {
72275
+ this.#section = this.ownerDocument.createElement("pptx-ui-ribbon-section");
72276
+ this.append(this.#section);
72277
+ }
72278
+ if (this.#tab) this.dataset.ribbonAddIn = this.#tab.id;
72279
+ else delete this.dataset.ribbonAddIn;
72280
+ this.#section.groups = this.#tab ? ribbonAddInGroupViews(this.#tab) : [];
72281
+ }
72282
+ }
72283
+ registry2.define("pptx-ui-ribbon-add-in", PptxRibbonAddIn);
72284
+ }
72285
+
72492
72286
  // src/pptx/web-components/ribbon-transitions-styles.ts
72493
72287
  var RIBBON_TRANSITIONS_STYLES = `
72494
72288
  :host { display:inline-flex; align-items:stretch; flex:none; color:var(--pptx-foreground,#f8fafc); font:inherit; }
@@ -73323,7 +73117,7 @@ function officeStatusBarState(state) {
73323
73117
  const t = state.translate ?? ((key) => key);
73324
73118
  const count = Math.max(0, state.slideCount);
73325
73119
  const views = state.showViewModes !== false;
73326
- const view = (id, labelKey, shown = true) => ({
73120
+ const view2 = (id, labelKey, shown = true) => ({
73327
73121
  id,
73328
73122
  icon: `${ICON_PREFIX}${id}`,
73329
73123
  label: t(labelKey),
@@ -73355,9 +73149,9 @@ function officeStatusBarState(state) {
73355
73149
  ],
73356
73150
  // Every control stays rendered and named; gating only hides it.
73357
73151
  views: [
73358
- view("normal", "pptx.statusBar.normalView"),
73359
- view("sorter", "pptx.statusBar.slideSorter", state.showSorter !== false),
73360
- view("slideShow", "pptx.statusBar.slideShow", state.showSlideShow !== false)
73152
+ view2("normal", "pptx.statusBar.normalView"),
73153
+ view2("sorter", "pptx.statusBar.slideSorter", state.showSorter !== false),
73154
+ view2("slideShow", "pptx.statusBar.slideShow", state.showSlideShow !== false)
73361
73155
  ],
73362
73156
  zoom: {
73363
73157
  percent: state.zoomPercent ?? 100,
@@ -74327,16 +74121,16 @@ function reflowRibbon(content) {
74327
74121
  }
74328
74122
  function attachRibbonOverflow(content, options = {}) {
74329
74123
  const doc = content.ownerDocument;
74330
- const view = doc.defaultView;
74124
+ const view2 = doc.defaultView;
74331
74125
  let frame = 0;
74332
74126
  let forced = false;
74333
74127
  let lastWidth = -1;
74334
74128
  const schedule = (force = false) => {
74335
74129
  forced ||= force;
74336
- if (frame || !view) {
74130
+ if (frame || !view2) {
74337
74131
  return;
74338
74132
  }
74339
- frame = view.requestAnimationFrame(() => {
74133
+ frame = view2.requestAnimationFrame(() => {
74340
74134
  frame = 0;
74341
74135
  const rebuild = forced;
74342
74136
  forced = false;
@@ -74360,7 +74154,7 @@ function attachRibbonOverflow(content, options = {}) {
74360
74154
  observer?.observe(content, { childList: true, subtree: true });
74361
74155
  resize?.observe(content);
74362
74156
  const onWindowResize = () => schedule();
74363
- view?.addEventListener("resize", onWindowResize);
74157
+ view2?.addEventListener("resize", onWindowResize);
74364
74158
  const toggleGroup = (group, face) => {
74365
74159
  if (!face || !content.contains(group) || !group.hasAttribute("data-collapsed")) {
74366
74160
  return;
@@ -74418,8 +74212,8 @@ function attachRibbonOverflow(content, options = {}) {
74418
74212
  stopLaunchers?.();
74419
74213
  observer?.disconnect();
74420
74214
  resize?.disconnect();
74421
- view?.removeEventListener("resize", onWindowResize);
74422
- view?.cancelAnimationFrame(frame);
74215
+ view2?.removeEventListener("resize", onWindowResize);
74216
+ view2?.cancelAnimationFrame(frame);
74423
74217
  content.removeEventListener("click", toggle2);
74424
74218
  content.removeEventListener("ribbon-collapse-toggle", toggleShared);
74425
74219
  content.removeEventListener("click", afterCommand);
@@ -74504,6 +74298,7 @@ var controls = [
74504
74298
  ["pptx-ui-ribbon-transitions", definePptxRibbonTransitions],
74505
74299
  ["pptx-ui-ribbon-group", definePptxRibbonGroup],
74506
74300
  ["pptx-ui-ribbon-section", definePptxRibbonSection],
74301
+ ["pptx-ui-ribbon-add-in", definePptxRibbonAddIn],
74507
74302
  ["pptx-ui-ribbon-gallery", definePptxRibbonGallery],
74508
74303
  ["pptx-ui-ribbon-toggle", definePptxRibbonToggle],
74509
74304
  ["pptx-ui-status-bar", definePptxStatusBar],
@@ -74578,10 +74373,10 @@ function memoised(element, byObject, byId, build7) {
74578
74373
  return byObject.get(element) ?? null;
74579
74374
  }
74580
74375
  const last = byId.get(element.id);
74581
- const view = last && differsOnlyInPosition(last.element, element) ? last.view : build7();
74582
- byObject.set(element, view);
74583
- byId.set(element.id, { element, view });
74584
- return view;
74376
+ const view2 = last && differsOnlyInPosition(last.element, element) ? last.view : build7();
74377
+ byObject.set(element, view2);
74378
+ byId.set(element.id, { element, view: view2 });
74379
+ return view2;
74585
74380
  }
74586
74381
  function chartThreeViewSpec(element) {
74587
74382
  return memoised(element, chartSpecs, lastByIdChart, () => {
@@ -74638,7 +74433,7 @@ function applyChart3DDrag(bridge, detail) {
74638
74433
  return;
74639
74434
  }
74640
74435
  bridge.commitChartData(
74641
- chunkRPRC2EG5_cjs.withChartPointValue(bridge.chartData, part.seriesIndex, part.pointIndex, value)
74436
+ chunkK3S2A64B_cjs.withChartPointValue(bridge.chartData, part.seriesIndex, part.pointIndex, value)
74642
74437
  );
74643
74438
  }
74644
74439
  function detailOf(event) {
@@ -75115,7 +74910,7 @@ function calculateNotesPageLayout(slideWidth, slideHeight) {
75115
74910
  };
75116
74911
  }
75117
74912
  function wrapNotesText(text3, maxWidth, fontSize) {
75118
- return chunkLCIXR7WE_cjs.wrapTextByEstimatedWidth(text3, maxWidth, fontSize, { keepBlankLines: true });
74913
+ return chunkVFPVEVF4_cjs.wrapTextByEstimatedWidth(text3, maxWidth, fontSize, { keepBlankLines: true });
75119
74914
  }
75120
74915
  function calculateContinuationPageMaxLines() {
75121
74916
  const contentHeight = NOTES_PAGE_H - 2 * NOTES_MARGIN;
@@ -76831,14 +76626,34 @@ Object.defineProperty(exports, "isTemplateElementId", {
76831
76626
  enumerable: true,
76832
76627
  get: function () { return element.isTemplateElementId; }
76833
76628
  });
76629
+ Object.defineProperty(exports, "CANVAS_SENTINEL", {
76630
+ enumerable: true,
76631
+ get: function () { return geometry.CANVAS_SENTINEL; }
76632
+ });
76633
+ Object.defineProperty(exports, "PADDING_DEFAULT", {
76634
+ enumerable: true,
76635
+ get: function () { return geometry.PADDING_DEFAULT; }
76636
+ });
76637
+ Object.defineProperty(exports, "ROUTING_PADDING_DEFAULT", {
76638
+ enumerable: true,
76639
+ get: function () { return geometry.ROUTING_PADDING_DEFAULT; }
76640
+ });
76834
76641
  Object.defineProperty(exports, "SNAP_THRESHOLD", {
76835
76642
  enumerable: true,
76836
76643
  get: function () { return geometry.SNAP_THRESHOLD; }
76837
76644
  });
76645
+ Object.defineProperty(exports, "aStarOrthogonal", {
76646
+ enumerable: true,
76647
+ get: function () { return geometry.aStarOrthogonal; }
76648
+ });
76838
76649
  Object.defineProperty(exports, "alignElements", {
76839
76650
  enumerable: true,
76840
76651
  get: function () { return geometry.alignElements; }
76841
76652
  });
76653
+ Object.defineProperty(exports, "buildGraphNodes", {
76654
+ enumerable: true,
76655
+ get: function () { return geometry.buildGraphNodes; }
76656
+ });
76842
76657
  Object.defineProperty(exports, "computeAlign", {
76843
76658
  enumerable: true,
76844
76659
  get: function () { return geometry.computeAlign; }
@@ -76863,14 +76678,54 @@ Object.defineProperty(exports, "createRotationDrag", {
76863
76678
  enumerable: true,
76864
76679
  get: function () { return geometry.createRotationDrag; }
76865
76680
  });
76681
+ Object.defineProperty(exports, "directPathClear", {
76682
+ enumerable: true,
76683
+ get: function () { return geometry.directPathClear; }
76684
+ });
76866
76685
  Object.defineProperty(exports, "distributeElements", {
76867
76686
  enumerable: true,
76868
76687
  get: function () { return geometry.distributeElements; }
76869
76688
  });
76689
+ Object.defineProperty(exports, "heuristic", {
76690
+ enumerable: true,
76691
+ get: function () { return geometry.heuristic; }
76692
+ });
76693
+ Object.defineProperty(exports, "inflateRect", {
76694
+ enumerable: true,
76695
+ get: function () { return geometry.inflateRect; }
76696
+ });
76697
+ Object.defineProperty(exports, "pointInRect", {
76698
+ enumerable: true,
76699
+ get: function () { return geometry.pointInRect; }
76700
+ });
76701
+ Object.defineProperty(exports, "pointKey", {
76702
+ enumerable: true,
76703
+ get: function () { return geometry.pointKey; }
76704
+ });
76870
76705
  Object.defineProperty(exports, "resolveAlignReferenceBox", {
76871
76706
  enumerable: true,
76872
76707
  get: function () { return geometry.resolveAlignReferenceBox; }
76873
76708
  });
76709
+ Object.defineProperty(exports, "routeConnector", {
76710
+ enumerable: true,
76711
+ get: function () { return geometry.routeConnector; }
76712
+ });
76713
+ Object.defineProperty(exports, "routeOrthogonalConnector", {
76714
+ enumerable: true,
76715
+ get: function () { return geometry.routeOrthogonalConnector; }
76716
+ });
76717
+ Object.defineProperty(exports, "segmentIntersectsRect", {
76718
+ enumerable: true,
76719
+ get: function () { return geometry.segmentIntersectsRect; }
76720
+ });
76721
+ Object.defineProperty(exports, "simplifyPath", {
76722
+ enumerable: true,
76723
+ get: function () { return geometry.simplifyPath; }
76724
+ });
76725
+ Object.defineProperty(exports, "snapAngle", {
76726
+ enumerable: true,
76727
+ get: function () { return geometry.snapAngle; }
76728
+ });
76874
76729
  Object.defineProperty(exports, "snapBox", {
76875
76730
  enumerable: true,
76876
76731
  get: function () { return geometry.snapBox; }
@@ -76887,6 +76742,14 @@ Object.defineProperty(exports, "usesSlideReference", {
76887
76742
  enumerable: true,
76888
76743
  get: function () { return geometry.usesSlideReference; }
76889
76744
  });
76745
+ Object.defineProperty(exports, "waypointsToPathD", {
76746
+ enumerable: true,
76747
+ get: function () { return geometry.waypointsToPathD; }
76748
+ });
76749
+ Object.defineProperty(exports, "waypointsToPathData", {
76750
+ enumerable: true,
76751
+ get: function () { return geometry.waypointsToPathData; }
76752
+ });
76890
76753
  Object.defineProperty(exports, "canDrillDown", {
76891
76754
  enumerable: true,
76892
76755
  get: function () { return elementLocks.canDrillDown; }
@@ -77447,6 +77310,10 @@ Object.defineProperty(exports, "tableStyleSaveOptions", {
77447
77310
  enumerable: true,
77448
77311
  get: function () { return tableStyleMapEdits.tableStyleSaveOptions; }
77449
77312
  });
77313
+ Object.defineProperty(exports, "RIBBON_ADD_IN_EVENT", {
77314
+ enumerable: true,
77315
+ get: function () { return ribbon.RIBBON_ADD_IN_EVENT; }
77316
+ });
77450
77317
  Object.defineProperty(exports, "appendElementOnSlide", {
77451
77318
  enumerable: true,
77452
77319
  get: function () { return editorMutations.appendElementOnSlide; }
@@ -77609,7 +77476,6 @@ exports.BRIGHTNESS_CONTRAST_STEPS = BRIGHTNESS_CONTRAST_STEPS;
77609
77476
  exports.BROADCAST_THROTTLE_MS = BROADCAST_THROTTLE_MS;
77610
77477
  exports.CANVAS_CONTEXT_MENU_COMMAND_IDS = CANVAS_CONTEXT_MENU_COMMAND_IDS;
77611
77478
  exports.CANVAS_DIMENSION_CANDIDATES = CANVAS_DIMENSION_CANDIDATES;
77612
- exports.CANVAS_SENTINEL = CANVAS_SENTINEL;
77613
77479
  exports.CATEGORIES = CATEGORIES;
77614
77480
  exports.CHART_3D_TYPES = CHART_3D_TYPES;
77615
77481
  exports.CHART_AXIS_TYPE_LABEL_KEYS = CHART_AXIS_TYPE_LABEL_KEYS;
@@ -77902,7 +77768,6 @@ exports.OUTLINE_VIEW_ATTR = OUTLINE_VIEW_ATTR;
77902
77768
  exports.P14_TRANSITION_KEYFRAMES = P14_TRANSITION_KEYFRAMES;
77903
77769
  exports.P14_TRANSITION_KEYFRAMES_2 = P14_TRANSITION_KEYFRAMES_2;
77904
77770
  exports.P14_TRANSITION_KEYFRAMES_ALL = P14_TRANSITION_KEYFRAMES_ALL;
77905
- exports.PADDING_DEFAULT = PADDING_DEFAULT;
77906
77771
  exports.PALETTES = PALETTES;
77907
77772
  exports.PASTE_OFFSET_PX = PASTE_OFFSET_PX;
77908
77773
  exports.PASTE_SPECIAL_OPTIONS = PASTE_SPECIAL_OPTIONS;
@@ -77976,6 +77841,7 @@ exports.RECORD_COMMAND_GROUPS = RECORD_COMMAND_GROUPS;
77976
77841
  exports.RESIZE_HANDLES = RESIZE_HANDLES;
77977
77842
  exports.RESIZE_HANDLE_GEOMETRY = RESIZE_HANDLE_GEOMETRY;
77978
77843
  exports.RGBA_BYTES_PER_PIXEL = RGBA_BYTES_PER_PIXEL;
77844
+ exports.RIBBON_ADD_IN_TAB_ATTR = RIBBON_ADD_IN_TAB_ATTR;
77979
77845
  exports.RIBBON_CONTEXTUAL_TABS = RIBBON_CONTEXTUAL_TABS;
77980
77846
  exports.RIBBON_CONTEXTUAL_TAB_ATTR = RIBBON_CONTEXTUAL_TAB_ATTR;
77981
77847
  exports.RIBBON_CONTROL_ATTR = RIBBON_CONTROL_ATTR;
@@ -77992,13 +77858,13 @@ exports.RIBBON_GROUP_IDS = RIBBON_GROUP_IDS;
77992
77858
  exports.RIBBON_HOME_FAMILIES = RIBBON_HOME_FAMILIES;
77993
77859
  exports.RIBBON_HOME_INDENT_STEP = RIBBON_HOME_INDENT_STEP;
77994
77860
  exports.RIBBON_MENU_COMMAND_IDS = RIBBON_MENU_COMMAND_IDS;
77861
+ exports.RIBBON_RESERVED_TAB_IDS = RIBBON_RESERVED_TAB_IDS;
77995
77862
  exports.RIBBON_SCOPE_ATTR = RIBBON_SCOPE_ATTR;
77996
77863
  exports.RIBBON_SHAPE_SWATCHES = RIBBON_SHAPE_SWATCHES;
77997
77864
  exports.RIBBON_TAB = RIBBON_TAB;
77998
77865
  exports.RIBBON_TAB_IDS = RIBBON_TAB_IDS;
77999
77866
  exports.RIBBON_TRANSITION_PRESETS = RIBBON_TRANSITION_PRESETS;
78000
77867
  exports.ROTATE_STEM_PX = ROTATE_STEM_PX;
78001
- exports.ROUTING_PADDING_DEFAULT = ROUTING_PADDING_DEFAULT;
78002
77868
  exports.RULER_FONT_SIZE = RULER_FONT_SIZE;
78003
77869
  exports.RULER_THICKNESS = RULER_THICKNESS;
78004
77870
  exports.RUN_HYPERLINK_ATTR = RUN_HYPERLINK_ATTR;
@@ -78125,7 +77991,6 @@ exports.ZOOM_MIN_PERCENT = ZOOM_MIN_PERCENT;
78125
77991
  exports.ZOOM_STEP = ZOOM_STEP;
78126
77992
  exports._resetCanvasDimensionCache = _resetCanvasDimensionCache;
78127
77993
  exports._resetNativeImageSizeCacheForTests = _resetNativeImageSizeCacheForTests;
78128
- exports.aStarOrthogonal = aStarOrthogonal;
78129
77994
  exports.accentDuotone = accentDuotone;
78130
77995
  exports.acceptAutosaveRecovery = acceptAutosaveRecovery;
78131
77996
  exports.acceptsPresentationInput = acceptsPresentationInput;
@@ -78301,7 +78166,6 @@ exports.buildGlyphEnvelope = buildGlyphEnvelope;
78301
78166
  exports.buildGlyphEnvelopeBlock = buildGlyphEnvelopeBlock;
78302
78167
  exports.buildGoogleFontsFragment = buildGoogleFontsFragment;
78303
78168
  exports.buildGoogleFontsHref = buildGoogleFontsHref;
78304
- exports.buildGraphNodes = buildGraphNodes;
78305
78169
  exports.buildHollowHitOutline = buildHollowHitOutline;
78306
78170
  exports.buildHyperlinkPatch = buildHyperlinkPatch;
78307
78171
  exports.buildIdatChunk = buildIdatChunk;
@@ -78675,7 +78539,6 @@ exports.diffOptionsAgainstBaseline = diffOptionsAgainstBaseline;
78675
78539
  exports.diffSlideElements = diffSlideElements;
78676
78540
  exports.diffTokens = diffTokens;
78677
78541
  exports.diffViewerOptions = diffViewerOptions;
78678
- exports.directPathClear = directPathClear;
78679
78542
  exports.disableGlowPatch = disableGlowPatch;
78680
78543
  exports.disableInnerShadowPatch = disableInnerShadowPatch;
78681
78544
  exports.disableOuterShadowPatch = disableOuterShadowPatch;
@@ -78786,6 +78649,7 @@ exports.findMediaEndGatedSteps = findMediaEndGatedSteps;
78786
78649
  exports.findMetricCompatibleGoogleFontsFamily = findMetricCompatibleGoogleFontsFamily;
78787
78650
  exports.findOutlineRow = findOutlineRow;
78788
78651
  exports.findPresentationActionTarget = findPresentationActionTarget;
78652
+ exports.findRibbonAddIn = findRibbonAddIn;
78789
78653
  exports.findSlideStage = findSlideStage;
78790
78654
  exports.findSmartArtNodeText = findSmartArtNodeText;
78791
78655
  exports.finishAnimationGroupSteps = finishAnimationGroupSteps;
@@ -79031,7 +78895,6 @@ exports.hasText3dExtrusion = hasText3dExtrusion;
79031
78895
  exports.hasTextWarp = hasTextWarp;
79032
78896
  exports.hasTiltData = hasTiltData;
79033
78897
  exports.hasWarpPresetDefinition = hasWarpPresetDefinition;
79034
- exports.heuristic = heuristic;
79035
78898
  exports.hexToRgb = hexToRgb;
79036
78899
  exports.hiddenSlideCue = hiddenSlideCue;
79037
78900
  exports.hiddenSlideLabelId = hiddenSlideLabelId;
@@ -79057,7 +78920,6 @@ exports.imageResetPatch = imageResetPatch;
79057
78920
  exports.imageResetState = imageResetState;
79058
78921
  exports.incomingSegmentIndex = incomingSegmentIndex;
79059
78922
  exports.inferNodeTypes = inferNodeTypes;
79060
- exports.inflateRect = inflateRect;
79061
78923
  exports.initialHiddenStyle = initialHiddenStyle;
79062
78924
  exports.initializeInlineListDom = initializeInlineListDom;
79063
78925
  exports.inkGroupViewBox = inkGroupViewBox;
@@ -79380,8 +79242,6 @@ exports.playFeedbackSound = playFeedbackSound;
79380
79242
  exports.playGroup = playGroup;
79381
79243
  exports.playSlideTransitionPreview = playSlideTransitionPreview;
79382
79244
  exports.pointFromPointerEvent = pointFromPointerEvent;
79383
- exports.pointInRect = pointInRect;
79384
- exports.pointKey = pointKey;
79385
79245
  exports.pointsToSvgPathD = pointsToSvgPathD;
79386
79246
  exports.polygonRegionBounds = polygonRegionBounds;
79387
79247
  exports.powerPointAccelDecelProgress = powerPointAccelDecelProgress;
@@ -79500,6 +79360,7 @@ exports.resizeSelection = resizeSelection;
79500
79360
  exports.resolve3DRenderingFlags = resolve3DRenderingFlags;
79501
79361
  exports.resolveAccentHex = resolveAccentHex;
79502
79362
  exports.resolveActionType = resolveActionType;
79363
+ exports.resolveActiveRibbonAddIn = resolveActiveRibbonAddIn;
79503
79364
  exports.resolveActiveRibbonTab = resolveActiveRibbonTab;
79504
79365
  exports.resolveAnimationCss = resolveAnimationCss;
79505
79366
  exports.resolveAnimationEnd = resolveAnimationEnd;
@@ -79664,6 +79525,8 @@ exports.revealedStageCount = revealedStageCount;
79664
79525
  exports.rgbToHex = rgbToHex;
79665
79526
  exports.rgbToHsl = rgbToHsl;
79666
79527
  exports.rgbaToHex = rgbaToHex;
79528
+ exports.ribbonAddInControlId = ribbonAddInControlId;
79529
+ exports.ribbonAddInGroupViews = ribbonAddInGroupViews;
79667
79530
  exports.ribbonControlAttrs = ribbonControlAttrs;
79668
79531
  exports.ribbonCustomizationCss = ribbonCustomizationCss;
79669
79532
  exports.ribbonGroupAttrs = ribbonGroupAttrs;
@@ -79675,9 +79538,7 @@ exports.ribbonTransitionsDraftPatch = ribbonTransitionsDraftPatch;
79675
79538
  exports.ribbonTransitionsSoundChange = ribbonTransitionsSoundChange;
79676
79539
  exports.rotateDelta = rotateDelta;
79677
79540
  exports.roundedRectOutline = roundedRectOutline;
79678
- exports.routeConnector = routeConnector;
79679
79541
  exports.routeEditLayerPointerToNodes = routeEditLayerPointerToNodes;
79680
- exports.routeOrthogonalConnector = routeOrthogonalConnector;
79681
79542
  exports.rowHandleSegments = rowHandleSegments;
79682
79543
  exports.rowIndexAtOffset = rowIndexAtOffset;
79683
79544
  exports.rulerDragToGuidePosition = rulerDragToGuidePosition;
@@ -79687,6 +79548,7 @@ exports.runMediaCommand = runMediaCommand;
79687
79548
  exports.runPresentationAction = runPresentationAction;
79688
79549
  exports.runProgramNoticeStackStyle = runProgramNoticeStackStyle;
79689
79550
  exports.runProgramNoticeStackStyleAttr = runProgramNoticeStackStyleAttr;
79551
+ exports.runRibbonAddInCommand = runRibbonAddInCommand;
79690
79552
  exports.safeColor = safeColor;
79691
79553
  exports.sameArray = sameArray;
79692
79554
  exports.sameHex = sameHex;
@@ -79721,7 +79583,6 @@ exports.seedHyperlinkDraft = seedHyperlinkDraft;
79721
79583
  exports.seedRecentColors = seedRecentColors;
79722
79584
  exports.seedShareFields = seedShareFields;
79723
79585
  exports.seedShareSessionFields = seedShareSessionFields;
79724
- exports.segmentIntersectsRect = segmentIntersectsRect;
79725
79586
  exports.segmentStyleToCss = segmentStyleToCss;
79726
79587
  exports.segmentsToEditorHtml = segmentsToEditorHtml;
79727
79588
  exports.segmentsToParagraphs = segmentsToParagraphs;
@@ -79787,7 +79648,6 @@ exports.signedLoopArea = signedLoopArea;
79787
79648
  exports.signedPercent = signedPercent;
79788
79649
  exports.simplifyFreeformVertices = simplifyFreeformVertices;
79789
79650
  exports.simplifyLoop = simplifyLoop;
79790
- exports.simplifyPath = simplifyPath;
79791
79651
  exports.slideBackgroundClearPatch = slideBackgroundClearPatch;
79792
79652
  exports.slideBackgroundClearState = slideBackgroundClearState;
79793
79653
  exports.slidePaneContextMenuLabelKey = slidePaneContextMenuLabelKey;
@@ -79809,7 +79669,6 @@ exports.smartArtNodeAriaLabel = smartArtNodeAriaLabel;
79809
79669
  exports.smartArtNodeAtPoint = smartArtNodeAtPoint;
79810
79670
  exports.smartArtNodeLabel = smartArtNodeLabel;
79811
79671
  exports.smartArtThreeViewSpec = smartArtThreeViewSpec;
79812
- exports.snapAngle = snapAngle;
79813
79672
  exports.snapBoxToGrid = snapBoxToGrid;
79814
79673
  exports.solveShapeAdjustmentValue = solveShapeAdjustmentValue;
79815
79674
  exports.solveShapeAdjustments = solveShapeAdjustments;
@@ -79941,9 +79800,8 @@ exports.viewerOptionsToPreferences = viewerOptionsToPreferences;
79941
79800
  exports.viewerPreferencesFromViewProperties = viewerPreferencesFromViewProperties;
79942
79801
  exports.viewerZoomPercent = viewerZoomPercent;
79943
79802
  exports.visibleContextualTabs = visibleContextualTabs;
79803
+ exports.visibleRibbonAddIns = visibleRibbonAddIns;
79944
79804
  exports.warpPreviewPath = warpPreviewPath;
79945
- exports.waypointsToPathD = waypointsToPathD;
79946
- exports.waypointsToPathData = waypointsToPathData;
79947
79805
  exports.wheelDecl = wheelDecl;
79948
79806
  exports.wireMediaBookmarkSteps = wireMediaBookmarkSteps;
79949
79807
  exports.wireMediaEndedSteps = wireMediaEndedSteps;