ooxml-ui 1.7.0 → 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 (143) hide show
  1. package/README.md +89 -36
  2. package/custom-elements.json +251 -4
  3. package/dist/chrome/ruler.d.ts +7 -1
  4. package/dist/chrome/ruler.d.ts.map +1 -1
  5. package/dist/chrome/task-pane.d.ts +2 -0
  6. package/dist/chrome/task-pane.d.ts.map +1 -1
  7. package/dist/chrome/title-bar.d.ts +2 -1
  8. package/dist/chrome/title-bar.d.ts.map +1 -1
  9. package/dist/{chunk-6UPGM3X2.js → chunk-7US5GCXF.js} +158 -153
  10. package/dist/{chunk-VAR6O7II.js → chunk-KF72ZA6V.js} +4 -2
  11. package/dist/{chunk-SCWCZSTE.js → chunk-O7APCA5N.js} +612 -69
  12. package/dist/chunk-W6AV3GHC.js +112 -0
  13. package/dist/controls.d.ts +8 -2
  14. package/dist/controls.d.ts.map +1 -1
  15. package/dist/controls.js +1 -1
  16. package/dist/dialog/dialog-footer.d.ts.map +1 -1
  17. package/dist/dialog/options-dialog.d.ts.map +1 -1
  18. package/dist/docx/editor-core.d.ts +3 -0
  19. package/dist/docx/editor-shell.d.ts +2 -0
  20. package/dist/docx/element-api.d.ts +7 -0
  21. package/dist/docx/events.d.ts +4 -1
  22. package/dist/docx/index.d.ts +1 -0
  23. package/dist/docx/ribbon-color-grid.d.ts +3 -4
  24. package/dist/docx.js +46 -78
  25. package/dist/edit-worker.js +52 -3
  26. package/dist/form/color-custom.d.ts +79 -0
  27. package/dist/form/color-custom.d.ts.map +1 -0
  28. package/dist/form/color-grid.d.ts +125 -0
  29. package/dist/form/color-grid.d.ts.map +1 -0
  30. package/dist/index.d.ts +2 -1
  31. package/dist/index.js +4 -3
  32. package/dist/menu/context-menu.d.ts.map +1 -1
  33. package/dist/menu/menu-button.d.ts +2 -1
  34. package/dist/menu/menu-button.d.ts.map +1 -1
  35. package/dist/notices/paste-options.d.ts.map +1 -1
  36. package/dist/notices/toasts.d.ts.map +1 -1
  37. package/dist/pptx/{chart-3d-view-scene-ERX2GRCD.mjs → chart-3d-view-scene-P6MAFEGL.mjs} +2 -2
  38. package/dist/pptx/{chart-3d-view-scene-55WDENSO.cjs → chart-3d-view-scene-V74F7ZOC.cjs} +38 -38
  39. package/dist/pptx/{chunk-G2YUKLRX.cjs → chunk-526IHNIH.cjs} +1 -1
  40. package/dist/pptx/{chunk-SVN6OBG4.mjs → chunk-DPOES4WM.mjs} +26 -11
  41. package/dist/pptx/{chunk-XGPLA2OY.cjs → chunk-GCS5KBMR.cjs} +481 -605
  42. package/dist/pptx/{chunk-RPRC2EG5.cjs → chunk-K3S2A64B.cjs} +13 -13
  43. package/dist/pptx/{chunk-RCTRRS6E.mjs → chunk-MCHPNO42.mjs} +264 -447
  44. package/dist/pptx/{chunk-AWQRQUPL.mjs → chunk-NAFUYAQP.mjs} +1 -1
  45. package/dist/pptx/{chunk-LCIXR7WE.cjs → chunk-VFPVEVF4.cjs} +26 -11
  46. package/dist/pptx/{chunk-TKATCPOK.mjs → chunk-ZAOYPCAM.mjs} +1 -1
  47. package/dist/pptx/dom/activex-controls-overlay.d.ts.map +1 -1
  48. package/dist/pptx/dom/elements/image.d.ts.map +1 -1
  49. package/dist/pptx/dom/elements/media.d.ts.map +1 -1
  50. package/dist/pptx/dom/elements/text-block.d.ts.map +1 -1
  51. package/dist/pptx/dom/elements/zoom.d.ts.map +1 -1
  52. package/dist/pptx/dom/index.cjs +252 -247
  53. package/dist/pptx/dom/index.mjs +11 -6
  54. package/dist/pptx/export/html2canvas-clone.cjs +2 -2
  55. package/dist/pptx/export/html2canvas-clone.mjs +1 -1
  56. package/dist/pptx/index.cjs +3059 -3023
  57. package/dist/pptx/index.mjs +4 -4
  58. package/dist/pptx/render/chart-combo-series.d.ts.map +1 -1
  59. package/dist/pptx/render/chart-combo-stock.cjs +3 -3
  60. package/dist/pptx/render/chart-combo-stock.mjs +1 -1
  61. package/dist/pptx/render/chart-marker-shape.d.ts.map +1 -1
  62. package/dist/pptx/render/chart-overlays.cjs +7 -7
  63. package/dist/pptx/render/chart-overlays.mjs +1 -1
  64. package/dist/pptx/render/chart-surface-treemap.cjs +4 -4
  65. package/dist/pptx/render/chart-surface-treemap.mjs +1 -1
  66. package/dist/pptx/render/chart-view-model.cjs +44 -44
  67. package/dist/pptx/render/chart-view-model.mjs +1 -1
  68. package/dist/pptx/render/chart-waterfall-map.cjs +6 -6
  69. package/dist/pptx/render/chart-waterfall-map.mjs +1 -1
  70. package/dist/pptx/render/connector-router-types.d.ts +4 -52
  71. package/dist/pptx/render/connector-router-types.d.ts.map +1 -1
  72. package/dist/pptx/render/connector-router.d.ts +4 -32
  73. package/dist/pptx/render/connector-router.d.ts.map +1 -1
  74. package/dist/pptx/render/index.d.ts +1 -0
  75. package/dist/pptx/render/index.d.ts.map +1 -1
  76. package/dist/pptx/render/ribbon-add-ins.d.ts +53 -0
  77. package/dist/pptx/render/ribbon-add-ins.d.ts.map +1 -0
  78. package/dist/pptx/web-components/index.d.ts +1 -0
  79. package/dist/pptx/web-components/index.d.ts.map +1 -1
  80. package/dist/pptx/web-components/ribbon-add-in.d.ts +20 -0
  81. package/dist/pptx/web-components/ribbon-add-in.d.ts.map +1 -0
  82. package/dist/ribbon/add-in-tabs.d.ts +36 -0
  83. package/dist/ribbon/group-overflow.d.ts +37 -0
  84. package/dist/ribbon/group-overflow.d.ts.map +1 -0
  85. package/dist/ribbon/ribbon-tabs.d.ts.map +1 -1
  86. package/dist/teams/app/index.d.ts +1 -1
  87. package/dist/teams.js +2 -2
  88. package/dist/visio/format-pane-fields.d.ts +42 -0
  89. package/dist/visio/format-pane-view.d.ts +44 -0
  90. package/dist/visio/index.d.ts +1 -0
  91. package/dist/visio/page-setup-action.d.ts +4 -0
  92. package/dist/visio/ribbon-action.d.ts +17 -6
  93. package/dist/visio/ribbon-change-shape.d.ts +17 -6
  94. package/dist/visio/ribbon-color-menu.d.ts +29 -0
  95. package/dist/visio/ribbon-inline-galleries.d.ts +20 -0
  96. package/dist/visio/ribbon-overflow.d.ts +7 -0
  97. package/dist/visio/ribbon-review.d.ts +5 -2
  98. package/dist/visio/ribbon-router.d.ts +3 -3
  99. package/dist/visio/ribbon-shape-styles.d.ts +4 -1
  100. package/dist/visio/ribbon-style-options.d.ts +4 -3
  101. package/dist/visio/shapes-document.d.ts +29 -0
  102. package/dist/visio/shapes-sections.d.ts +19 -5
  103. package/dist/visio/shapes-storage.d.ts +15 -0
  104. package/dist/visio/shapes-window.d.ts +7 -0
  105. package/dist/visio/stencil-catalog.d.ts +4 -0
  106. package/dist/visio/text-measurer.d.ts +25 -0
  107. package/dist/visio/viewer-auto-connect-parts.d.ts +12 -0
  108. package/dist/visio/viewer-auto-connect.d.ts +33 -0
  109. package/dist/visio/viewer-change-shape.d.ts +8 -4
  110. package/dist/visio/viewer-chrome.d.ts +3 -2
  111. package/dist/visio/viewer-color-menus.d.ts +34 -0
  112. package/dist/visio/viewer-commands.d.ts +4 -3
  113. package/dist/visio/viewer-connector-tool.d.ts +5 -3
  114. package/dist/visio/viewer-data-window.d.ts +5 -1
  115. package/dist/visio/viewer-draw-tool.d.ts +1 -11
  116. package/dist/visio/viewer-element.d.ts +8 -0
  117. package/dist/visio/viewer-format-pane.d.ts +26 -0
  118. package/dist/visio/viewer-guides.d.ts +3 -3
  119. package/dist/visio/viewer-layout-commands.d.ts +5 -1
  120. package/dist/visio/viewer-more-colors.d.ts +16 -0
  121. package/dist/visio/viewer-page-setup.d.ts +6 -0
  122. package/dist/visio/viewer-ruler-grid.d.ts +25 -0
  123. package/dist/visio/viewer-ruler.d.ts +11 -3
  124. package/dist/visio/viewer-snap-glue.d.ts +23 -0
  125. package/dist/visio/viewer-stencil.d.ts +4 -1
  126. package/dist/visio.js +6688 -5303
  127. package/dist/xlsx/component.d.ts +8 -0
  128. package/dist/xlsx/dialogs/format-cells/color-swatches.d.ts +4 -2
  129. package/dist/xlsx/dialogs/styles.d.ts +1 -1
  130. package/dist/xlsx/events.d.ts +4 -1
  131. package/dist/xlsx/index.d.ts +1 -0
  132. package/dist/xlsx/ribbon/color-grid.d.ts +25 -7
  133. package/dist/xlsx/ribbon/ribbon.d.ts +3 -0
  134. package/dist/xlsx.js +121 -163
  135. package/package.json +3 -2
  136. package/dist/pptx/render/connector-router-astar.d.ts +0 -24
  137. package/dist/pptx/render/connector-router-astar.d.ts.map +0 -1
  138. package/dist/pptx/render/connector-router-graph.d.ts +0 -38
  139. package/dist/pptx/render/connector-router-graph.d.ts.map +0 -1
  140. package/dist/visio/format-shape-dialog.d.ts +0 -21
  141. package/dist/visio/viewer-format-shape.d.ts +0 -16
  142. package/dist/visio/viewer-paint-dialog.d.ts +0 -28
  143. 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;
@@ -22392,10 +22393,10 @@ function imageFitTransformParts(el) {
22392
22393
  return { placement: "", crop: "" };
22393
22394
  }
22394
22395
  return fitTransformsFromInsets({
22395
- cropLeft: chunkLCIXR7WE_cjs.clampCropValue(el.cropLeft),
22396
- cropTop: chunkLCIXR7WE_cjs.clampCropValue(el.cropTop),
22397
- cropRight: chunkLCIXR7WE_cjs.clampCropValue(el.cropRight),
22398
- 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),
22399
22400
  fillRectLeft: el.fillRectLeft ?? 0,
22400
22401
  fillRectTop: el.fillRectTop ?? 0,
22401
22402
  fillRectRight: el.fillRectRight ?? 0,
@@ -22419,10 +22420,10 @@ function fitTransformsFromInsets(insets) {
22419
22420
  if (hasCrop2) {
22420
22421
  const horizontalScale = cropLeft + cropRight >= 0.99 ? 0.99 / (cropLeft + cropRight) : 1;
22421
22422
  const verticalScale = cropTop + cropBottom >= 0.99 ? 0.99 / (cropTop + cropBottom) : 1;
22422
- cropLeft = chunkLCIXR7WE_cjs.clampCropValue(cropLeft * horizontalScale);
22423
- cropRight = chunkLCIXR7WE_cjs.clampCropValue(cropRight * horizontalScale);
22424
- cropTop = chunkLCIXR7WE_cjs.clampCropValue(cropTop * verticalScale);
22425
- 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);
22426
22427
  const remainingWidth = Math.max(0.01, 1 - cropLeft - cropRight);
22427
22428
  const remainingHeight = Math.max(0.01, 1 - cropTop - cropBottom);
22428
22429
  const tx = Math.round(-cropLeft / remainingWidth * 1e4) / 100;
@@ -22537,7 +22538,7 @@ function resolveShadeToTitleBackgroundImage(slide, slideWidthPx, slideHeightPx)
22537
22538
  if (stops.length === 0) {
22538
22539
  return void 0;
22539
22540
  }
22540
- return chunkLCIXR7WE_cjs.buildRectPathGradientImage(stops, void 0, fillToRect);
22541
+ return chunkVFPVEVF4_cjs.buildRectPathGradientImage(stops, void 0, fillToRect);
22541
22542
  }
22542
22543
 
22543
22544
  // src/pptx/render/slide-background.ts
@@ -22559,7 +22560,7 @@ function getSlideBackgroundStyle(slide, slideSize) {
22559
22560
  style["background-repeat"] = "no-repeat";
22560
22561
  }
22561
22562
  } else if (pattern) {
22562
- const svg2 = chunkLCIXR7WE_cjs.getPatternSvg(
22563
+ const svg2 = chunkVFPVEVF4_cjs.getPatternSvg(
22563
22564
  pattern.preset,
22564
22565
  pattern.fgColor ?? solid ?? "#000000",
22565
22566
  pattern.bgColor ?? DEFAULT_SLIDE_BACKGROUND
@@ -23967,12 +23968,12 @@ function buildRunTabLines(text3, ctx, nestedDecoration, measure2 = (t) => measur
23967
23968
  // src/pptx/render/paragraph-run-enrich.ts
23968
23969
  function resolveRunExtrasContext(input) {
23969
23970
  const { seg, runFont, blockFont, blockScriptStyle, tabStops, defaultTabSize, rtl } = input;
23970
- const baseFontFamily = runFont.fontFamily ?? blockFont.fontFamily ?? chunkLCIXR7WE_cjs.DEFAULT_FONT_FAMILY;
23971
+ const baseFontFamily = runFont.fontFamily ?? blockFont.fontFamily ?? chunkVFPVEVF4_cjs.DEFAULT_FONT_FAMILY;
23971
23972
  const scriptFonts = resolveScriptFontSet(seg.style, blockScriptStyle, baseFontFamily);
23972
23973
  const tabContext = tabStops && tabStops.length > 0 ? buildTabContext(
23973
23974
  tabStops,
23974
23975
  defaultTabSize,
23975
- runFont.fontSizePx ?? blockFont.fontSizePx ?? chunkLCIXR7WE_cjs.DEFAULT_TEXT_FONT_SIZE,
23976
+ runFont.fontSizePx ?? blockFont.fontSizePx ?? chunkVFPVEVF4_cjs.DEFAULT_TEXT_FONT_SIZE,
23976
23977
  baseFontFamily,
23977
23978
  Boolean(seg.style?.bold),
23978
23979
  Boolean(seg.style?.italic),
@@ -24004,7 +24005,7 @@ function resolveRunReflection(segStyle, blockFont) {
24004
24005
  if (!segStyle) {
24005
24006
  return void 0;
24006
24007
  }
24007
- 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;
24008
24009
  return getTextReflectionWrapperStyle(segStyle, height);
24009
24010
  }
24010
24011
  function applyRunReflection(run, reflection2) {
@@ -24171,7 +24172,7 @@ function buildTextShadowCss(style) {
24171
24172
  const ox = style.textShadowOffsetX ?? 0;
24172
24173
  const oy = style.textShadowOffsetY ?? 0;
24173
24174
  const blur = style.textShadowBlur ?? 4;
24174
- const color = chunkLCIXR7WE_cjs.normalizeHexColor(style.textShadowColor, "#000000");
24175
+ const color = chunkVFPVEVF4_cjs.normalizeHexColor(style.textShadowColor, "#000000");
24175
24176
  const opacity = style.textShadowOpacity ?? 0.5;
24176
24177
  const r = parseInt(color.slice(1, 3), 16);
24177
24178
  const g = parseInt(color.slice(3, 5), 16);
@@ -24184,7 +24185,7 @@ function buildTextShadowCss(style) {
24184
24185
  const dirRad = dir * Math.PI / 180;
24185
24186
  const psOx = Math.round(Math.cos(dirRad) * dist2 * 100) / 100;
24186
24187
  const psOy = Math.round(Math.sin(dirRad) * dist2 * 100) / 100;
24187
- const psColor = chunkLCIXR7WE_cjs.normalizeHexColor(style.textPresetShadowColor, "#000000");
24188
+ const psColor = chunkVFPVEVF4_cjs.normalizeHexColor(style.textPresetShadowColor, "#000000");
24188
24189
  const psOpacity = style.textPresetShadowOpacity ?? 0.5;
24189
24190
  const psR = parseInt(psColor.slice(1, 3), 16);
24190
24191
  const psG = parseInt(psColor.slice(3, 5), 16);
@@ -24201,7 +24202,7 @@ function buildTextInnerShadowCss(style) {
24201
24202
  const ox = style.textInnerShadowOffsetX ?? 0;
24202
24203
  const oy = style.textInnerShadowOffsetY ?? 0;
24203
24204
  const blur = style.textInnerShadowBlur ?? 3;
24204
- const color = chunkLCIXR7WE_cjs.normalizeHexColor(style.textInnerShadowColor, "#000000");
24205
+ const color = chunkVFPVEVF4_cjs.normalizeHexColor(style.textInnerShadowColor, "#000000");
24205
24206
  const opacity = style.textInnerShadowOpacity ?? 0.5;
24206
24207
  const r = parseInt(color.slice(1, 3), 16);
24207
24208
  const g = parseInt(color.slice(3, 5), 16);
@@ -24248,7 +24249,7 @@ function buildTextGlowFilter(style) {
24248
24249
  return void 0;
24249
24250
  }
24250
24251
  const radius = style.textGlowRadius ?? 6;
24251
- const color = chunkLCIXR7WE_cjs.normalizeHexColor(style.textGlowColor, "#ffff00");
24252
+ const color = chunkVFPVEVF4_cjs.normalizeHexColor(style.textGlowColor, "#ffff00");
24252
24253
  const opacity = style.textGlowOpacity ?? 0.6;
24253
24254
  const r = parseInt(color.slice(1, 3), 16);
24254
24255
  const g = parseInt(color.slice(3, 5), 16);
@@ -24276,9 +24277,9 @@ function buildTextFillCss(style) {
24276
24277
  };
24277
24278
  }
24278
24279
  if (style.textFillPattern) {
24279
- const fg = chunkLCIXR7WE_cjs.normalizeHexColor(style.textFillPatternForeground, "#000000");
24280
- const bg = chunkLCIXR7WE_cjs.normalizeHexColor(style.textFillPatternBackground, "#ffffff");
24281
- 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);
24282
24283
  if (svgPattern) {
24283
24284
  const encoded = encodeURIComponent(svgPattern);
24284
24285
  return {
@@ -24423,15 +24424,15 @@ function resolveRunRuby(segment, baseFontSizePx, blockFont, baseColor) {
24423
24424
  return void 0;
24424
24425
  }
24425
24426
  const authoredFamily = segment.rubyStyle?.fontFamily ?? segment.style?.fontFamily;
24426
- 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;
24427
24428
  const style = {
24428
24429
  fontSize: `${segment.rubyFontSize ?? baseSize * RUBY_SIZE_RATIO}px`,
24429
- 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,
24430
24431
  textAlign: rubyTextAlign(segment.rubyAlignment)
24431
24432
  };
24432
24433
  const color = segment.rubyStyle?.color;
24433
24434
  if (color) {
24434
- style.color = chunkLCIXR7WE_cjs.normalizeHexColor(color, baseColor);
24435
+ style.color = chunkVFPVEVF4_cjs.normalizeHexColor(color, baseColor);
24435
24436
  }
24436
24437
  return { text: text3, style };
24437
24438
  }
@@ -24503,7 +24504,7 @@ function buildParagraphRuns(input) {
24503
24504
  bodyFontSizeRaw,
24504
24505
  fontScale
24505
24506
  );
24506
- const fallbackFontSize = strutFontSize ?? blockFont.fontSizePx ?? chunkLCIXR7WE_cjs.DEFAULT_TEXT_FONT_SIZE;
24507
+ const fallbackFontSize = strutFontSize ?? blockFont.fontSizePx ?? chunkVFPVEVF4_cjs.DEFAULT_TEXT_FONT_SIZE;
24507
24508
  equationStyle.fontSize = `${fallbackFontSize}px`;
24508
24509
  }
24509
24510
  runs.push({
@@ -24540,7 +24541,7 @@ function buildParagraphRuns(input) {
24540
24541
  });
24541
24542
  const ruby = resolveRunRuby(
24542
24543
  seg,
24543
- 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,
24544
24545
  blockFont,
24545
24546
  typeof style.color === "string" ? style.color : void 0
24546
24547
  );
@@ -24640,8 +24641,8 @@ function buildParagraphs(element, fieldContext, segmentOverrides, options) {
24640
24641
  }
24641
24642
  const fontScale = resolveAutoFitFontScale(element.textStyle);
24642
24643
  const blockFont = {
24643
- fontFamily: element.textStyle?.fontFamily ? pptx.getSubstituteFontFamily(element.textStyle.fontFamily) : chunkLCIXR7WE_cjs.DEFAULT_FONT_FAMILY,
24644
- 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
24645
24646
  };
24646
24647
  const blockScriptStyle = element.textStyle;
24647
24648
  const tabStops = element.textStyle?.tabStops;
@@ -27597,17 +27598,17 @@ function hasItalicRuns(element) {
27597
27598
  );
27598
27599
  }
27599
27600
  function buildTextBlockStyle(element, options = {}) {
27600
- const fallbackColor = options.fallbackColor ?? chunkLCIXR7WE_cjs.DEFAULT_TEXT_COLOR;
27601
+ const fallbackColor = options.fallbackColor ?? chunkVFPVEVF4_cjs.DEFAULT_TEXT_COLOR;
27601
27602
  if (!pptx.hasTextProperties(element)) {
27602
27603
  return { color: fallbackColor };
27603
27604
  }
27604
27605
  const ts = element.textStyle;
27605
27606
  const italic = hasItalicRuns(element);
27606
27607
  const isRtl = ts?.rtl === true;
27607
- const bodyTop = ts?.bodyInsetTop ?? chunkLCIXR7WE_cjs.DEFAULT_BODY_INSET_TB_PX;
27608
- const bodyBottom = ts?.bodyInsetBottom ?? chunkLCIXR7WE_cjs.DEFAULT_BODY_INSET_TB_PX;
27609
- const bodyLeft = ts?.bodyInsetLeft ?? chunkLCIXR7WE_cjs.DEFAULT_BODY_INSET_LR_PX;
27610
- 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;
27611
27612
  const hasParagraphIndents = (element.paragraphIndents?.length ?? 0) > 0;
27612
27613
  const bodyIndent = hasParagraphIndents ? 0 : ts?.paragraphIndent || 0;
27613
27614
  const bodyMarginLeft = hasParagraphIndents ? 0 : ts?.paragraphMarginLeft || 0;
@@ -27636,17 +27637,17 @@ function buildTextBlockStyle(element, options = {}) {
27636
27637
  style.transformOrigin = "center";
27637
27638
  }
27638
27639
  }
27639
- 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);
27640
27641
  if (!hasTextSegments && ts?.highlightColor) {
27641
- style.backgroundColor = chunkLCIXR7WE_cjs.normalizeHexColor(ts.highlightColor, void 0);
27642
+ style.backgroundColor = chunkVFPVEVF4_cjs.normalizeHexColor(ts.highlightColor, void 0);
27642
27643
  }
27643
27644
  style.textAlign = resolveCssTextAlign(ts?.align, isRtl) ?? "left";
27644
27645
  style.direction = toCssVerticalDirection(ts?.textDirection) ?? (isRtl ? "rtl" : bodyLayoutStyle?.direction ?? "ltr");
27645
27646
  if (isRtl) {
27646
27647
  style.unicodeBidi = "plaintext";
27647
27648
  }
27648
- style.fontSize = ts?.fontSize || chunkLCIXR7WE_cjs.DEFAULT_TEXT_FONT_SIZE;
27649
- 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;
27650
27651
  style.fontWeight = ts?.bold ? 700 : 400;
27651
27652
  style.fontStyle = ts?.italic ? "italic" : "normal";
27652
27653
  style.textDecorationLine = decorations.length > 0 ? decorations.join(" ") : "none";
@@ -27686,7 +27687,7 @@ function buildTextBlockStyle(element, options = {}) {
27686
27687
  text: element.text ?? "",
27687
27688
  width: element.width,
27688
27689
  height: element.height,
27689
- defaultFontSize: chunkLCIXR7WE_cjs.DEFAULT_TEXT_FONT_SIZE
27690
+ defaultFontSize: chunkVFPVEVF4_cjs.DEFAULT_TEXT_FONT_SIZE
27690
27691
  });
27691
27692
  if (autoFit.fontSize !== void 0) {
27692
27693
  style.fontSize = autoFit.fontSize;
@@ -27694,7 +27695,7 @@ function buildTextBlockStyle(element, options = {}) {
27694
27695
  if (autoFit.lineHeight !== void 0) {
27695
27696
  style.lineHeight = autoFit.lineHeight;
27696
27697
  }
27697
- 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;
27698
27699
  const lineHeightPx = lineHeightToPx(fontSizePx, style.lineHeight);
27699
27700
  const contentHeightPx = element.height - style.paddingTop - style.paddingBottom;
27700
27701
  Object.assign(style, resolveVertOverflowEllipsisStyle(ts, contentHeightPx, lineHeightPx));
@@ -30348,317 +30349,6 @@ function placeCaretAt(el, point) {
30348
30349
  }
30349
30350
  placeCaretAtEnd(el);
30350
30351
  }
30351
-
30352
- // src/pptx/render/connector-router-types.ts
30353
- var PADDING_DEFAULT = 12;
30354
- var ROUTING_PADDING_DEFAULT = PADDING_DEFAULT;
30355
- var CANVAS_SENTINEL = 1e5;
30356
-
30357
- // src/pptx/render/connector-router-graph.ts
30358
- function inflateRect(r, pad) {
30359
- return {
30360
- x: r.x - pad,
30361
- y: r.y - pad,
30362
- width: r.width + pad * 2,
30363
- height: r.height + pad * 2
30364
- };
30365
- }
30366
- function pointInRect(p, r) {
30367
- return p.x >= r.x && p.x <= r.x + r.width && p.y >= r.y && p.y <= r.y + r.height;
30368
- }
30369
- function segmentIntersectsRect(a, b, r) {
30370
- const minX = Math.min(a.x, b.x);
30371
- const maxX = Math.max(a.x, b.x);
30372
- const minY = Math.min(a.y, b.y);
30373
- const maxY = Math.max(a.y, b.y);
30374
- const rRight = r.x + r.width;
30375
- const rBottom = r.y + r.height;
30376
- if (maxX < r.x || minX > rRight || maxY < r.y || minY > rBottom) {
30377
- return false;
30378
- }
30379
- if (Math.abs(a.y - b.y) < 0.5) {
30380
- return a.y >= r.y && a.y <= rBottom && maxX >= r.x && minX <= rRight;
30381
- }
30382
- if (Math.abs(a.x - b.x) < 0.5) {
30383
- return a.x >= r.x && a.x <= rRight && maxY >= r.y && minY <= rBottom;
30384
- }
30385
- return true;
30386
- }
30387
- function directPathClear(start, end, inflated) {
30388
- for (const rect3 of inflated) {
30389
- if (segmentIntersectsRect(start, end, rect3)) {
30390
- return false;
30391
- }
30392
- }
30393
- return true;
30394
- }
30395
- function heuristic(a, b) {
30396
- return Math.abs(a.x - b.x) + Math.abs(a.y - b.y);
30397
- }
30398
- function pointKey(p) {
30399
- return `${Math.round(p.x)},${Math.round(p.y)}`;
30400
- }
30401
- function buildGraphNodes(start, end, inflated, canvasWidth, canvasHeight) {
30402
- const margin = 4;
30403
- const nodes = [start, end];
30404
- for (const r of inflated) {
30405
- const corners = [
30406
- { x: r.x - margin, y: r.y - margin },
30407
- { x: r.x + r.width + margin, y: r.y - margin },
30408
- { x: r.x - margin, y: r.y + r.height + margin },
30409
- { x: r.x + r.width + margin, y: r.y + r.height + margin }
30410
- ];
30411
- for (const c of corners) {
30412
- if (c.x >= 0 && c.x <= canvasWidth && c.y >= 0 && c.y <= canvasHeight) {
30413
- let blocked = false;
30414
- for (const rect3 of inflated) {
30415
- if (pointInRect(c, rect3)) {
30416
- blocked = true;
30417
- break;
30418
- }
30419
- }
30420
- if (!blocked) {
30421
- nodes.push(c);
30422
- }
30423
- }
30424
- }
30425
- }
30426
- const projections = [];
30427
- for (const node of nodes) {
30428
- projections.push({ x: start.x, y: node.y });
30429
- projections.push({ x: node.x, y: start.y });
30430
- projections.push({ x: end.x, y: node.y });
30431
- projections.push({ x: node.x, y: end.y });
30432
- }
30433
- for (const p of projections) {
30434
- if (p.x >= 0 && p.x <= canvasWidth && p.y >= 0 && p.y <= canvasHeight) {
30435
- let blocked = false;
30436
- for (const rect3 of inflated) {
30437
- if (pointInRect(p, rect3)) {
30438
- blocked = true;
30439
- break;
30440
- }
30441
- }
30442
- if (!blocked) {
30443
- nodes.push(p);
30444
- }
30445
- }
30446
- }
30447
- return nodes;
30448
- }
30449
-
30450
- // src/pptx/render/connector-router-astar.ts
30451
- var MAX_ASTAR_ITERATIONS = 2e3;
30452
- function aStarOrthogonal(nodes, start, end, inflated) {
30453
- const startKey = pointKey(start);
30454
- const endKey = pointKey(end);
30455
- const canConnect = (a, b) => {
30456
- const isHoriz = Math.abs(a.y - b.y) < 1;
30457
- const isVert = Math.abs(a.x - b.x) < 1;
30458
- if (isHoriz || isVert) {
30459
- for (const rect3 of inflated) {
30460
- if (segmentIntersectsRect(a, b, rect3)) {
30461
- return false;
30462
- }
30463
- }
30464
- return true;
30465
- }
30466
- const bend1 = { x: b.x, y: a.y };
30467
- const bend2 = { x: a.x, y: b.y };
30468
- let path1Clear = true;
30469
- let path2Clear = true;
30470
- for (const rect3 of inflated) {
30471
- if (path1Clear && (segmentIntersectsRect(a, bend1, rect3) || segmentIntersectsRect(bend1, b, rect3))) {
30472
- path1Clear = false;
30473
- }
30474
- if (path2Clear && (segmentIntersectsRect(a, bend2, rect3) || segmentIntersectsRect(bend2, b, rect3))) {
30475
- path2Clear = false;
30476
- }
30477
- if (!path1Clear && !path2Clear) {
30478
- break;
30479
- }
30480
- }
30481
- return path1Clear || path2Clear;
30482
- };
30483
- const gScore = /* @__PURE__ */ new Map();
30484
- const fScore = /* @__PURE__ */ new Map();
30485
- const cameFrom = /* @__PURE__ */ new Map();
30486
- const bendPoint = /* @__PURE__ */ new Map();
30487
- gScore.set(startKey, 0);
30488
- fScore.set(startKey, heuristic(start, end));
30489
- const openSet = /* @__PURE__ */ new Set([startKey]);
30490
- const nodeMap = /* @__PURE__ */ new Map();
30491
- for (const n of nodes) {
30492
- nodeMap.set(pointKey(n), n);
30493
- }
30494
- const getLowest = () => {
30495
- let best;
30496
- let bestScore = Infinity;
30497
- for (const key of openSet) {
30498
- const score = fScore.get(key) ?? Infinity;
30499
- if (score < bestScore) {
30500
- bestScore = score;
30501
- best = key;
30502
- }
30503
- }
30504
- return best;
30505
- };
30506
- let iterations = 0;
30507
- while (openSet.size > 0 && iterations < MAX_ASTAR_ITERATIONS) {
30508
- iterations++;
30509
- const currentKey = getLowest();
30510
- if (currentKey === void 0) {
30511
- break;
30512
- }
30513
- if (currentKey === endKey) {
30514
- const path = [];
30515
- let key = endKey;
30516
- while (key !== void 0) {
30517
- const node = nodeMap.get(key);
30518
- if (node !== void 0) {
30519
- const bp = bendPoint.get(key);
30520
- if (bp !== void 0 && bp !== null) {
30521
- path.unshift(node);
30522
- path.unshift(bp);
30523
- } else {
30524
- path.unshift(node);
30525
- }
30526
- }
30527
- key = cameFrom.get(key);
30528
- }
30529
- return path;
30530
- }
30531
- openSet.delete(currentKey);
30532
- const current = nodeMap.get(currentKey);
30533
- if (current === void 0) {
30534
- continue;
30535
- }
30536
- for (const neighbor of nodes) {
30537
- const neighborKey = pointKey(neighbor);
30538
- if (neighborKey === currentKey) {
30539
- continue;
30540
- }
30541
- if (!canConnect(current, neighbor)) {
30542
- continue;
30543
- }
30544
- const isHoriz = Math.abs(current.y - neighbor.y) < 1;
30545
- const isVert = Math.abs(current.x - neighbor.x) < 1;
30546
- let dist2;
30547
- let bp = null;
30548
- if (isHoriz || isVert) {
30549
- dist2 = heuristic(current, neighbor);
30550
- } else {
30551
- const bend1 = { x: neighbor.x, y: current.y };
30552
- const bend2 = { x: current.x, y: neighbor.y };
30553
- let use1 = true;
30554
- for (const rect3 of inflated) {
30555
- if (segmentIntersectsRect(current, bend1, rect3) || segmentIntersectsRect(bend1, neighbor, rect3)) {
30556
- use1 = false;
30557
- break;
30558
- }
30559
- }
30560
- bp = use1 ? bend1 : bend2;
30561
- 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);
30562
- }
30563
- const tentativeG = (gScore.get(currentKey) ?? Infinity) + dist2;
30564
- if (tentativeG < (gScore.get(neighborKey) ?? Infinity)) {
30565
- cameFrom.set(neighborKey, currentKey);
30566
- bendPoint.set(neighborKey, bp);
30567
- gScore.set(neighborKey, tentativeG);
30568
- fScore.set(neighborKey, tentativeG + heuristic(neighbor, end));
30569
- openSet.add(neighborKey);
30570
- }
30571
- }
30572
- }
30573
- return [start, end];
30574
- }
30575
- function simplifyPath(points) {
30576
- if (points.length <= 2) {
30577
- return [...points];
30578
- }
30579
- const result = [points[0]];
30580
- for (let i = 1; i < points.length - 1; i++) {
30581
- const prev = result[result.length - 1];
30582
- const curr = points[i];
30583
- const next = points[i + 1];
30584
- const sameX = Math.abs(prev.x - curr.x) < 1 && Math.abs(curr.x - next.x) < 1;
30585
- const sameY = Math.abs(prev.y - curr.y) < 1 && Math.abs(curr.y - next.y) < 1;
30586
- if (!sameX && !sameY) {
30587
- result.push(curr);
30588
- } else if (!sameX || !sameY) {
30589
- if (!(sameX || sameY)) {
30590
- result.push(curr);
30591
- }
30592
- }
30593
- }
30594
- result.push(points[points.length - 1]);
30595
- return result;
30596
- }
30597
-
30598
- // src/pptx/render/connector-router.ts
30599
- function routeCore(start, end, obstacles, padding, canvasWidth, canvasHeight) {
30600
- if (obstacles.length === 0) {
30601
- return [start, end];
30602
- }
30603
- const inflated = obstacles.map((r) => inflateRect(r, padding));
30604
- if (directPathClear(start, end, inflated)) {
30605
- return [start, end];
30606
- }
30607
- const midH = { x: end.x, y: start.y };
30608
- const midV = { x: start.x, y: end.y };
30609
- let elbowHClear = true;
30610
- let elbowVClear = true;
30611
- for (const rect3 of inflated) {
30612
- if (elbowHClear && (segmentIntersectsRect(start, midH, rect3) || segmentIntersectsRect(midH, end, rect3))) {
30613
- elbowHClear = false;
30614
- }
30615
- if (elbowVClear && (segmentIntersectsRect(start, midV, rect3) || segmentIntersectsRect(midV, end, rect3))) {
30616
- elbowVClear = false;
30617
- }
30618
- if (!elbowHClear && !elbowVClear) {
30619
- break;
30620
- }
30621
- }
30622
- if (elbowHClear) {
30623
- return [start, midH, end];
30624
- }
30625
- if (elbowVClear) {
30626
- return [start, midV, end];
30627
- }
30628
- const nodes = buildGraphNodes(start, end, inflated, canvasWidth, canvasHeight);
30629
- const path = aStarOrthogonal(nodes, start, end, inflated);
30630
- return simplifyPath(path);
30631
- }
30632
- function routeConnector(options) {
30633
- const { start, end, obstacles, canvasWidth, canvasHeight, padding = PADDING_DEFAULT } = options;
30634
- return routeCore(start, end, obstacles, padding, canvasWidth, canvasHeight);
30635
- }
30636
- function waypointsToPathData(waypoints) {
30637
- if (waypoints.length === 0) {
30638
- return "";
30639
- }
30640
- const parts = [`M ${waypoints[0].x} ${waypoints[0].y}`];
30641
- for (let i = 1; i < waypoints.length; i++) {
30642
- parts.push(`L ${waypoints[i].x} ${waypoints[i].y}`);
30643
- }
30644
- return parts.join(" ");
30645
- }
30646
- function routeOrthogonalConnector(start, end, obstacles, opts) {
30647
- const padding = opts?.padding ?? PADDING_DEFAULT;
30648
- const canvasWidth = opts?.canvasWidth ?? CANVAS_SENTINEL;
30649
- const canvasHeight = opts?.canvasHeight ?? CANVAS_SENTINEL;
30650
- return routeCore(start, end, obstacles, padding, canvasWidth, canvasHeight);
30651
- }
30652
- function waypointsToPathD(waypoints) {
30653
- if (waypoints.length === 0) {
30654
- return "";
30655
- }
30656
- const parts = [`M${waypoints[0].x},${waypoints[0].y}`];
30657
- for (let i = 1; i < waypoints.length; i++) {
30658
- parts.push(`L${waypoints[i].x},${waypoints[i].y}`);
30659
- }
30660
- return parts.join(" ");
30661
- }
30662
30352
  function getConnectionSites(width, height) {
30663
30353
  return [
30664
30354
  { x: width / 2, y: 0, index: 0 },
@@ -31093,9 +30783,9 @@ function normalizeArrow(a) {
31093
30783
  function buildConnectorGeometry(element, zIndex, routing) {
31094
30784
  const ss = pptx.hasShapeProperties(element) ? element.shapeStyle : void 0;
31095
30785
  const strokeWidth = Math.max(0, ss?.strokeWidth ?? 2);
31096
- const strokeColor = ss?.strokeColor ?? chunkLCIXR7WE_cjs.DEFAULT_STROKE_COLOR;
30786
+ const strokeColor = ss?.strokeColor ?? chunkVFPVEVF4_cjs.DEFAULT_STROKE_COLOR;
31097
30787
  const strokeOpacity = ss?.strokeOpacity ?? 1;
31098
- const dashArray = chunkLCIXR7WE_cjs.buildDashArray(ss?.strokeDash, strokeWidth, ss?.customDashSegments);
30788
+ const dashArray = chunkVFPVEVF4_cjs.buildDashArray(ss?.strokeDash, strokeWidth, ss?.customDashSegments);
31099
30789
  const strokeLinecap = svgLineCap(ss?.lineCap);
31100
30790
  const compoundOffsets = getCompoundLineOffsets(ss?.compoundLine, strokeWidth);
31101
30791
  const compoundWidths = getCompoundLineWidths(ss?.compoundLine, strokeWidth);
@@ -31111,13 +30801,13 @@ function buildConnectorGeometry(element, zIndex, routing) {
31111
30801
  if (routing && routing.obstacles.length > 0 && connectorKind(shapeType) === "bent" && (element.width > 0 || element.height > 0)) {
31112
30802
  const start = { x: element.x + x1, y: element.y + y1 };
31113
30803
  const end = { x: element.x + x2, y: element.y + y2 };
31114
- const waypoints = routeOrthogonalConnector(start, end, routing.obstacles, {
30804
+ const waypoints = geometry.routeOrthogonalConnector(start, end, routing.obstacles, {
31115
30805
  canvasWidth: routing.canvasWidth,
31116
30806
  canvasHeight: routing.canvasHeight
31117
30807
  });
31118
30808
  if (waypoints.length > 2) {
31119
30809
  const local = waypoints.map((p) => ({ x: p.x - element.x, y: p.y - element.y }));
31120
- pathD = waypointsToPathD(local);
30810
+ pathD = geometry.waypointsToPathD(local);
31121
30811
  }
31122
30812
  }
31123
30813
  const markerSeed = element.id.replace(/[^a-zA-Z0-9_-]/gu, "_");
@@ -31171,7 +30861,7 @@ function buildConnectorPathD(shapeType, x1, y1, x2, y2, bend, bend2 = 0.5, bend3
31171
30861
  }
31172
30862
  const segments2 = geometry.elbowSegmentCount(t);
31173
30863
  const points = elbowWaypoints(x1, y1, x2, y2, segments2, bend, bend2, bend3);
31174
- return waypointsToPathD(points);
30864
+ return geometry.waypointsToPathD(points);
31175
30865
  }
31176
30866
  if (t.includes("curvedconnector2")) {
31177
30867
  return `M${x1},${y1} Q${x2},${y1} ${x2},${y2}`;
@@ -37787,7 +37477,7 @@ function drawingShapeMeshOpacity(shape) {
37787
37477
  // src/pptx/render/svg-text-lines.ts
37788
37478
  var LINE_HEIGHT_RATIO = 1.2;
37789
37479
  function centeredSvgTextLines(text3, fontSize, options = {}) {
37790
- 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);
37791
37481
  const centerY = options.centerY ?? 0;
37792
37482
  if (lines.length === 0) {
37793
37483
  return [{ text: "", y: centerY }];
@@ -38584,7 +38274,7 @@ function buildObliqueLabels(layout, input) {
38584
38274
  const { w, h, d } = layout.box;
38585
38275
  const span = layout.range.max - layout.range.min;
38586
38276
  const fontSize = input.fontSize;
38587
- for (const v of chunkLCIXR7WE_cjs.axisTickValues({ ...layout.range, span })) {
38277
+ for (const v of chunkVFPVEVF4_cjs.axisTickValues({ ...layout.range, span })) {
38588
38278
  const p = (v - layout.range.min) * layout.valueScale;
38589
38279
  if (layout.horizontal) {
38590
38280
  const at = screen2(layout, p, 0, 0);
@@ -38706,7 +38396,7 @@ function dataExtent(chartData, grouping, nCat) {
38706
38396
  function valueRange(chartData, grouping, nCat, valueLengthPx) {
38707
38397
  const axis = chartData.axes?.find((a) => a.axisType === "valAx");
38708
38398
  const [lo, hi] = dataExtent(chartData, grouping, nCat);
38709
- 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);
38710
38400
  const min = typeof axis?.min === "number" ? axis.min : auto.min;
38711
38401
  let max = typeof axis?.max === "number" ? axis.max : auto.max;
38712
38402
  if (max <= min) {
@@ -38730,22 +38420,22 @@ function computeObliqueBarLayout(element, vm) {
38730
38420
  const rotX = (chartData.view3D?.rotX ?? 15) * Math.PI / 180;
38731
38421
  const rotY = (chartData.view3D?.rotY ?? 20) * Math.PI / 180;
38732
38422
  const shear = { x: Math.sin(rotY), y: -Math.sin(rotX) };
38733
- const gapWidth = (chartData.barGapWidth ?? chunkLCIXR7WE_cjs.DEFAULT_BAR_GAP_WIDTH) / 100;
38423
+ const gapWidth = (chartData.barGapWidth ?? chunkVFPVEVF4_cjs.DEFAULT_BAR_GAP_WIDTH) / 100;
38734
38424
  const gapDepth = (chartData.gapDepth ?? DEFAULT_GAP_DEPTH) / 100;
38735
38425
  const slots = grouping === "clustered" ? nSer : 1;
38736
38426
  const rows = grouping === "standard" ? nSer : 1;
38737
38427
  const labelFont = vm.axisLabels[0]?.fontSize ?? 16;
38738
38428
  const catLabels = chartData.categories.length > 0 ? chartData.categories : Array.from({ length: nCat }, (_, i) => String(i + 1));
38739
- 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);
38740
38430
  const top = vm.title ? TOP_WITH_TITLE : TOP_NO_TITLE;
38741
38431
  const hasBottomLegend = chartData.style?.hasLegend !== false && (chartData.style?.legendPosition ?? "b") === "b";
38742
38432
  const bottom = vm.svgHeight - (hasBottomLegend ? BOTTOM_WITH_LEGEND : BOTTOM_NO_LEGEND);
38743
38433
  const regionH = Math.max(1, bottom - top);
38744
38434
  const provisional = valueRange(chartData, grouping, nCat, regionH);
38745
- const valueTexts = chunkLCIXR7WE_cjs.axisTickValues({
38435
+ const valueTexts = chunkVFPVEVF4_cjs.axisTickValues({
38746
38436
  ...provisional,
38747
38437
  span: provisional.max - provisional.min
38748
- }).map((v) => chunkRPRC2EG5_cjs.formatValueLabel(chartData, grouping, v));
38438
+ }).map((v) => chunkK3S2A64B_cjs.formatValueLabel(chartData, grouping, v));
38749
38439
  const leftBand = (horizontal ? widest(catLabels) : widest(valueTexts)) + (horizontal ? OBLIQUE_CATEGORY_LABEL_GAP : OBLIQUE_VALUE_LABEL_GAP);
38750
38440
  const seriesLabelW = grouping === "standard" && !horizontal ? widest(chartData.series.map((s) => s.name)) : 0;
38751
38441
  const seriesOverhang = (depth2) => seriesLabelW > 0 ? Math.max(0, OBLIQUE_CATEGORY_LABEL_GAP + seriesLabelW - depth2 * shear.x / (2 * rows)) : 0;
@@ -38801,13 +38491,13 @@ function computeObliqueBarLayout(element, vm) {
38801
38491
  gridlines: [],
38802
38492
  labels: []
38803
38493
  };
38804
- layout.bars = chunkRPRC2EG5_cjs.buildBars(chartData, vm, layout, { nCat, slots, rows, gapWidth, gapDepth });
38805
- 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);
38806
38496
  layout.labels = buildObliqueLabels(layout, {
38807
38497
  fontSize: labelFont,
38808
38498
  categories: catLabels,
38809
38499
  seriesNames: chartData.series.map((s) => s.name),
38810
- valueText: (v) => chunkRPRC2EG5_cjs.formatValueLabel(chartData, grouping, v)
38500
+ valueText: (v) => chunkK3S2A64B_cjs.formatValueLabel(chartData, grouping, v)
38811
38501
  });
38812
38502
  return layout;
38813
38503
  }
@@ -38820,7 +38510,7 @@ function buildPerspGridlines(box, range, horizontal) {
38820
38510
  { from: [w, 0, 0], to: [w, 0, d] }
38821
38511
  ];
38822
38512
  const span = range.max - range.min;
38823
- for (const v of chunkLCIXR7WE_cjs.axisTickValues({ ...range, span })) {
38513
+ for (const v of chunkVFPVEVF4_cjs.axisTickValues({ ...range, span })) {
38824
38514
  const t = (v - range.min) / span;
38825
38515
  if (horizontal) {
38826
38516
  const x = t * w;
@@ -38841,16 +38531,16 @@ var CATEGORY_DY = 17 * PT3;
38841
38531
  var SERIES_DX = 9 * PT3;
38842
38532
  var SERIES_DY = -4 * PT3;
38843
38533
  function buildPerspLabels(layout, input) {
38844
- const { view, range } = layout;
38845
- const { h, d, w } = view.box;
38534
+ const { view: view2, range } = layout;
38535
+ const { h, d, w } = view2.box;
38846
38536
  const span = range.max - range.min;
38847
38537
  const labels = [];
38848
38538
  const fontSize = input.fontSize;
38849
- for (const v of chunkLCIXR7WE_cjs.axisTickValues({ ...range, span })) {
38539
+ for (const v of chunkVFPVEVF4_cjs.axisTickValues({ ...range, span })) {
38850
38540
  const t = (v - range.min) / span;
38851
- 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);
38852
38542
  if (layout.horizontal) {
38853
- const at = chunkRPRC2EG5_cjs.perspToScreen(view, [t * w, 0, 0]);
38543
+ const at = chunkK3S2A64B_cjs.perspToScreen(view2, [t * w, 0, 0]);
38854
38544
  labels.push({
38855
38545
  role: "value",
38856
38546
  text: text3,
@@ -38860,7 +38550,7 @@ function buildPerspLabels(layout, input) {
38860
38550
  fontSize
38861
38551
  });
38862
38552
  } else {
38863
- const at = chunkRPRC2EG5_cjs.perspToScreen(view, [0, t * h, 0]);
38553
+ const at = chunkK3S2A64B_cjs.perspToScreen(view2, [0, t * h, 0]);
38864
38554
  labels.push({ role: "value", text: text3, x: at.x - VALUE_GAP2, y: at.y, anchor: "end", fontSize });
38865
38555
  }
38866
38556
  }
@@ -38870,7 +38560,7 @@ function buildPerspLabels(layout, input) {
38870
38560
  return;
38871
38561
  }
38872
38562
  if (layout.horizontal) {
38873
- const at2 = chunkRPRC2EG5_cjs.perspToScreen(view, [0, pos, 0]);
38563
+ const at2 = chunkK3S2A64B_cjs.perspToScreen(view2, [0, pos, 0]);
38874
38564
  labels.push({
38875
38565
  role: "category",
38876
38566
  text: text3,
@@ -38881,7 +38571,7 @@ function buildPerspLabels(layout, input) {
38881
38571
  });
38882
38572
  return;
38883
38573
  }
38884
- const at = chunkRPRC2EG5_cjs.perspToScreen(view, [pos, 0, 0]);
38574
+ const at = chunkK3S2A64B_cjs.perspToScreen(view2, [pos, 0, 0]);
38885
38575
  labels.push({
38886
38576
  role: "category",
38887
38577
  text: text3,
@@ -38894,7 +38584,7 @@ function buildPerspLabels(layout, input) {
38894
38584
  const rows = input.seriesNames.length;
38895
38585
  input.seriesNames.forEach((text3, s) => {
38896
38586
  const z = layout.kind === "surface" ? rows > 1 ? s / (rows - 1) * d : d / 2 : (s + 0.5) / rows * d;
38897
- const at = chunkRPRC2EG5_cjs.perspToScreen(view, [w, 0, z]);
38587
+ const at = chunkK3S2A64B_cjs.perspToScreen(view2, [w, 0, z]);
38898
38588
  labels.push({
38899
38589
  role: "series",
38900
38590
  text: text3,
@@ -38987,7 +38677,7 @@ function computePerspChartLayout(element, vm, options = {}) {
38987
38677
  const valAx = chartData.axes?.find((a) => a.axisType === "valAx");
38988
38678
  const midCat = (valAx?.crossBetween ?? (kind === "area" || kind === "surface" ? "midCat" : "between")) === "midCat";
38989
38679
  const view3D = chartData.view3D;
38990
- const gapWidth = (chartData.barGapWidth ?? chunkLCIXR7WE_cjs.DEFAULT_BAR_GAP_WIDTH) / 100;
38680
+ const gapWidth = (chartData.barGapWidth ?? chunkVFPVEVF4_cjs.DEFAULT_BAR_GAP_WIDTH) / 100;
38991
38681
  const gapDepth = (chartData.gapDepth ?? DEFAULT_GAP_DEPTH2) / 100;
38992
38682
  const slot = 1 / nCat;
38993
38683
  const rows = kind === "surface" ? nSer : grouping === "standard" ? nSer : 1;
@@ -39000,16 +38690,16 @@ function computePerspChartLayout(element, vm, options = {}) {
39000
38690
  const valueExtent = horizontal ? 1 : baseHeight * heightScale;
39001
38691
  const catExtent = horizontal ? HORIZONTAL_CATEGORY_EXTENT * heightScale : 1;
39002
38692
  const box = horizontal ? { w: valueExtent, h: catExtent, d } : { w: 1, h: valueExtent, d };
39003
- 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);
39004
38694
  const hasLegend = chartData.style?.hasLegend !== false && (chartData.style?.legendPosition ?? "b") === "b";
39005
- const view = chunkRPRC2EG5_cjs.fitPerspView(camera, {
38695
+ const view2 = chunkK3S2A64B_cjs.fitPerspView(camera, {
39006
38696
  left: RECT_LEFT,
39007
38697
  right: vm.svgWidth - (rows > 1 ? RECT_RIGHT_WITH_SERIES : RECT_RIGHT_NO_SERIES),
39008
38698
  top: vm.title ? RECT_TOP_WITH_TITLE : RECT_TOP_NO_TITLE,
39009
38699
  bottom: vm.svgHeight - (hasLegend ? RECT_BOTTOM_WITH_LEGEND : RECT_BOTTOM_NO_LEGEND)
39010
38700
  });
39011
38701
  const [lo, hi] = dataExtent2(chartData, grouping, nCat);
39012
- 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);
39013
38703
  const min = typeof valAx?.min === "number" ? valAx.min : auto.min;
39014
38704
  let max = typeof valAx?.max === "number" ? valAx.max : auto.max;
39015
38705
  if (max <= min) {
@@ -39024,7 +38714,7 @@ function computePerspChartLayout(element, vm, options = {}) {
39024
38714
  const layout = {
39025
38715
  kind,
39026
38716
  grouping,
39027
- view,
38717
+ view: view2,
39028
38718
  range,
39029
38719
  horizontal,
39030
38720
  valueScale: valueExtent / (max - min),
@@ -39101,7 +38791,7 @@ function buildBarGeometry(element, vm) {
39101
38791
  }
39102
38792
  var PERSP_BOX_TYPES = /* @__PURE__ */ new Set(["line3D", "area3D", "surface", "bar3D"]);
39103
38793
  function buildPieGeometry(element, vm) {
39104
- const layout = chunkRPRC2EG5_cjs.computePieChartLayout(element, chunkRPRC2EG5_cjs.widenPieViewModel(vm, element));
38794
+ const layout = chunkK3S2A64B_cjs.computePieChartLayout(element, chunkK3S2A64B_cjs.widenPieViewModel(vm, element));
39105
38795
  return layout ? { kind: "pie", layout } : null;
39106
38796
  }
39107
38797
  function buildPerspGeometry(element, vm, oblique) {
@@ -39121,7 +38811,7 @@ function buildChart3DSpecForElement(element) {
39121
38811
  if (!chartData || !is3DChartType(chartType)) {
39122
38812
  return null;
39123
38813
  }
39124
- const vm = chunkLCIXR7WE_cjs.buildChartViewModel(element);
38814
+ const vm = chunkVFPVEVF4_cjs.buildChartViewModel(element);
39125
38815
  const projection = resolveChart3DProjection(chartType, chartData.view3D);
39126
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;
39127
38817
  if (!geometry) {
@@ -47373,11 +47063,11 @@ function buildSummaryZoomView(element, lookup, translate) {
47373
47063
  ariaLabel: translate ? translate("pptx.zoom.ariaLabelSummary", { count: String(tiles.length) }) : `Summary Zoom with ${tiles.length} sections`
47374
47064
  };
47375
47065
  }
47376
- function resolveSummaryZoomNavigation(view, tileIndex) {
47377
- if (!view || !Number.isInteger(tileIndex) || tileIndex < 0) {
47066
+ function resolveSummaryZoomNavigation(view2, tileIndex) {
47067
+ if (!view2 || !Number.isInteger(tileIndex) || tileIndex < 0) {
47378
47068
  return void 0;
47379
47069
  }
47380
- return view.tiles[tileIndex]?.targetSlideIndex;
47070
+ return view2.tiles[tileIndex]?.targetSlideIndex;
47381
47071
  }
47382
47072
  function fixedTileStyle(element, x, y, width, height) {
47383
47073
  const safeWidth = Math.max(element.width, 1);
@@ -53209,7 +52899,7 @@ function axisTitle(current, show) {
53209
52899
  return show ? current || AXIS_TITLE : void 0;
53210
52900
  }
53211
52901
  function applyChartQuickLayout(chartData, layout) {
53212
- const withGrid = patchChartData(chartData, chunkLCIXR7WE_cjs.chartGridlinesPatch(chartData, layout.majorGridlines));
52902
+ const withGrid = patchChartData(chartData, chunkVFPVEVF4_cjs.chartGridlinesPatch(chartData, layout.majorGridlines));
53213
52903
  const axes = (withGrid.axes ?? []).map((axis) => {
53214
52904
  if (axis.axisType === "valAx") {
53215
52905
  return {
@@ -53263,7 +52953,7 @@ function matchesLayout(chartData, layout) {
53263
52953
  const legend = style.hasLegend ? style.legendPosition ?? "r" : null;
53264
52954
  const isBar = chartData.chartType === "bar" || chartData.chartType === "bar3D";
53265
52955
  const barMatches = !isBar || (chartData.barGapWidth ?? 150) === layout.gapWidth && (chartData.barOverlap ?? 0) === layout.overlap;
53266
- 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;
53267
52957
  }
53268
52958
  var CHART_QUICK_LAYOUT_GALLERY = {
53269
52959
  build(ctx) {
@@ -57849,6 +57539,86 @@ function galleryTextLabel(translate, key, fallback) {
57849
57539
  const translated = translate(key);
57850
57540
  return translated && translated !== key ? translated : fallback;
57851
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
+ }
57852
57622
 
57853
57623
  // src/pptx/render/ole-icon-primitives.ts
57854
57624
  function rect2(x, y, width, height, rx) {
@@ -58712,7 +58482,7 @@ function isSeriesUsingSecondaryAxis(chartData, seriesIndex) {
58712
58482
  if (!series) {
58713
58483
  return false;
58714
58484
  }
58715
- return chunkLCIXR7WE_cjs.isSeriesOnSecondaryAxis(series, chartData.axes);
58485
+ return chunkVFPVEVF4_cjs.isSeriesOnSecondaryAxis(series, chartData.axes);
58716
58486
  }
58717
58487
  function resolveSecondaryAxisId(chartData, useSecondary) {
58718
58488
  const axPos = useSecondary ? "r" : "l";
@@ -59250,14 +59020,14 @@ async function buildForeignObjectSvgBody(element, doc, options) {
59250
59020
  backgroundColor,
59251
59021
  readComputedStyle = (el) => window.getComputedStyle(el)
59252
59022
  } = options;
59253
- await chunkG2YUKLRX_cjs.settleThreeViews(element);
59023
+ await chunk526IHNIH_cjs.settleThreeViews(element);
59254
59024
  const clone = element.cloneNode(true);
59255
- chunkG2YUKLRX_cjs.withAuthoredStrokeWidths(
59025
+ chunk526IHNIH_cjs.withAuthoredStrokeWidths(
59256
59026
  element,
59257
59027
  () => inlineComputedStylesOnClone(element, clone, readComputedStyle)
59258
59028
  );
59259
- chunkG2YUKLRX_cjs.snapshotThreeViewsIntoClone(element, clone);
59260
- chunkG2YUKLRX_cjs.prepareExportClone(clone);
59029
+ chunk526IHNIH_cjs.snapshotThreeViewsIntoClone(element, clone);
59030
+ chunk526IHNIH_cjs.prepareExportClone(clone);
59261
59031
  const [{ allEmbedded: imagesEmbedded }, externalFonts] = await Promise.all([
59262
59032
  embedImagesOnClone(clone),
59263
59033
  collectExternalFontFaceCss(doc, fetchAsDataUrl)
@@ -65476,11 +65246,11 @@ function createLinkPopover(doc, submit, closed) {
65476
65246
  if (!anchorEl) {
65477
65247
  return;
65478
65248
  }
65479
- const view = doc.defaultView;
65249
+ const view2 = doc.defaultView;
65480
65250
  const box = anchorEl.getBoundingClientRect();
65481
65251
  const own = el.getBoundingClientRect();
65482
- const width = view?.innerWidth ?? 1024;
65483
- const height = view?.innerHeight ?? 768;
65252
+ const width = view2?.innerWidth ?? 1024;
65253
+ const height = view2?.innerHeight ?? 768;
65484
65254
  const left = Math.max(8, Math.min(box.left, width - own.width - 8));
65485
65255
  const above = box.top - own.height - 4;
65486
65256
  el.style.left = `${left}px`;
@@ -66461,16 +66231,16 @@ var OfficeUiDialogFooter = class extends OfficeElement {
66461
66231
  this.model.actions,
66462
66232
  (action) => action.id,
66463
66233
  (action) => lit.html`<button
66464
- type="button"
66465
- class=${this.classes(action)}
66466
- data-action=${action.id}
66467
- data-testid=${ifDefined_js.ifDefined(action.testId)}
66468
- title=${ifDefined_js.ifDefined(action.title)}
66469
- aria-busy=${ifDefined_js.ifDefined(action.busy ? "true" : void 0)}
66470
- ?disabled=${action.disabled === true || action.busy === true}
66471
- @click=${() => this.fire(requestEvent, { id: action.id })}
66472
- >${action.icon ? glyph(action.icon, "icon") : ""}${action.label}</button
66473
- >`
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
+ >`
66474
66244
  )}
66475
66245
  </div>
66476
66246
  `;
@@ -66522,22 +66292,22 @@ var OfficeUiToasts = class extends OfficeElement {
66522
66292
  </div>
66523
66293
  ${visible.map(
66524
66294
  (toast) => lit.html`<div
66525
- class="toast"
66526
- role="status"
66527
- data-testid=${p}
66528
- data-code=${ifDefined_js.ifDefined(toast.code)}
66529
- data-severity=${toast.severity}
66530
- >
66531
- ${glyph(toast.severity === "warning" ? "warning" : "info", "icon")}
66532
- <p class="message">${toast.message}</p>
66533
- <button
66534
- type="button"
66535
- data-testid="${p}-dismiss"
66536
- aria-label=${labels.dismiss ?? "Dismiss"}
66537
- @click=${() => this.fire(requestEvent, { id: "dismiss", toastId: toast.id })}
66538
- >${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}
66539
66300
  >
66540
- </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>`
66541
66311
  )}
66542
66312
  ${hiddenCount > 0 ? lit.html`<p class="overflow">+${hiddenCount}</p>` : ""}
66543
66313
  </div>
@@ -66571,22 +66341,22 @@ var OfficeUiPasteOptions = class extends OfficeElement {
66571
66341
  }
66572
66342
  connectedCallback() {
66573
66343
  super.connectedCallback();
66574
- const view = this.ownerDocument.defaultView;
66575
- if (!view) return;
66344
+ const view2 = this.ownerDocument.defaultView;
66345
+ if (!view2) return;
66576
66346
  const dismiss = (event) => {
66577
66347
  const toolbar = this.renderRoot.querySelector(".toolbar");
66578
66348
  if (toolbar && event.composedPath().includes(toolbar) && (!(event instanceof KeyboardEvent) || event.key !== "Escape"))
66579
66349
  return;
66580
66350
  this.dismiss();
66581
66351
  };
66582
- const timer = view.setTimeout(() => {
66583
- view.addEventListener("pointerdown", dismiss, true);
66584
- view.addEventListener("keydown", dismiss, true);
66352
+ const timer = view2.setTimeout(() => {
66353
+ view2.addEventListener("pointerdown", dismiss, true);
66354
+ view2.addEventListener("keydown", dismiss, true);
66585
66355
  }, 0);
66586
66356
  this.disarm = () => {
66587
- view.clearTimeout(timer);
66588
- view.removeEventListener("pointerdown", dismiss, true);
66589
- view.removeEventListener("keydown", dismiss, true);
66357
+ view2.clearTimeout(timer);
66358
+ view2.removeEventListener("pointerdown", dismiss, true);
66359
+ view2.removeEventListener("keydown", dismiss, true);
66590
66360
  };
66591
66361
  }
66592
66362
  disconnectedCallback() {
@@ -66620,12 +66390,12 @@ var OfficeUiPasteOptions = class extends OfficeElement {
66620
66390
  this.model.options,
66621
66391
  (option) => option.id,
66622
66392
  (option) => lit.html`<button
66623
- type="button"
66624
- data-format=${option.id}
66625
- title=${option.label}
66626
- @click=${() => this.choose(option)}
66627
- >${option.label}</button
66628
- >`
66393
+ type="button"
66394
+ data-format=${option.id}
66395
+ title=${option.label}
66396
+ @click=${() => this.choose(option)}
66397
+ >${option.label}</button
66398
+ >`
66629
66399
  )}
66630
66400
  </div>
66631
66401
  `;
@@ -67964,14 +67734,14 @@ var OfficeUiContextMenu = class extends OfficeElement {
67964
67734
  doc.addEventListener("pointerdown", this.outside, true);
67965
67735
  }
67966
67736
  this.open = true;
67967
- const view = doc.defaultView;
67737
+ const view2 = doc.defaultView;
67968
67738
  const { left, top } = clampFlyoutPosition2({
67969
67739
  x,
67970
67740
  y,
67971
67741
  width: panel.offsetWidth,
67972
67742
  height: panel.offsetHeight,
67973
- viewportWidth: view?.innerWidth ?? x,
67974
- viewportHeight: view?.innerHeight ?? y,
67743
+ viewportWidth: view2?.innerWidth ?? x,
67744
+ viewportHeight: view2?.innerHeight ?? y,
67975
67745
  margin: 4
67976
67746
  });
67977
67747
  panel.style.left = `${Math.round(left)}px`;
@@ -68080,7 +67850,7 @@ var OfficeUiContextMenu = class extends OfficeElement {
68080
67850
  for (const name of this.markers) this.setAttribute(name, "true");
68081
67851
  }
68082
67852
  place() {
68083
- const view = this.ownerDocument.defaultView;
67853
+ const view2 = this.ownerDocument.defaultView;
68084
67854
  this.style.left = `${this.model.x}px`;
68085
67855
  this.style.top = `${this.model.y}px`;
68086
67856
  const box = this.getBoundingClientRect();
@@ -68089,8 +67859,8 @@ var OfficeUiContextMenu = class extends OfficeElement {
68089
67859
  y: this.model.y,
68090
67860
  width: box.width,
68091
67861
  height: box.height,
68092
- viewportWidth: view?.innerWidth ?? box.right,
68093
- viewportHeight: view?.innerHeight ?? box.bottom
67862
+ viewportWidth: view2?.innerWidth ?? box.right,
67863
+ viewportHeight: view2?.innerHeight ?? box.bottom
68094
67864
  });
68095
67865
  this.style.left = `${left}px`;
68096
67866
  this.style.top = `${top}px`;
@@ -68176,9 +67946,11 @@ var OfficeUiContextMenu = class extends OfficeElement {
68176
67946
  let group;
68177
67947
  const closeGroup = () => {
68178
67948
  if (!group) return;
68179
- out.push(lit.html`<div role="group" aria-label=${group.heading}>
68180
- <div class="heading" aria-hidden="true">${group.heading}</div>${group.rows}</div
68181
- >`);
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
+ );
68182
67954
  group = void 0;
68183
67955
  };
68184
67956
  this.model.items.forEach((item4, index) => {
@@ -68257,12 +68029,12 @@ function tokenPx2(el, name, fallback) {
68257
68029
  return Number.isFinite(px3) ? px3 : fallback;
68258
68030
  }
68259
68031
  function positionSelectMenu(menu, trigger, host2) {
68260
- const view = menu.ownerDocument.defaultView;
68032
+ const view2 = menu.ownerDocument.defaultView;
68261
68033
  const rect3 = trigger.getBoundingClientRect();
68262
68034
  const margin = tokenPx2(host2, "--office-space-2", 8);
68263
68035
  const gap = tokenPx2(host2, "--office-space-1", 4);
68264
- const width = Math.max(0, view.innerWidth - margin * 2);
68265
- 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);
68266
68038
  const above = Math.max(0, rect3.top - gap - margin);
68267
68039
  menu.style.minWidth = `${Math.min(rect3.width, width)}px`;
68268
68040
  menu.style.maxWidth = `${width}px`;
@@ -68273,7 +68045,7 @@ function positionSelectMenu(menu, trigger, host2) {
68273
68045
  menu.style.maxHeight = `${Math.min(cap, flip ? above : below)}px`;
68274
68046
  const { height, width: menuWidth } = menu.getBoundingClientRect();
68275
68047
  menu.style.top = `${Math.max(margin, flip ? rect3.top - gap - height : rect3.bottom + gap)}px`;
68276
- 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`;
68277
68049
  }
68278
68050
  function nextSelectActive(choices2, active2, step) {
68279
68051
  for (let i = 0; i < choices2.length; i++) {
@@ -68335,9 +68107,9 @@ var OfficeUiSelect = class extends OfficeElement {
68335
68107
  }
68336
68108
  const Observer = this.ownerDocument.defaultView?.MutationObserver;
68337
68109
  this.observer = Observer ? new Observer(() => {
68338
- const view = this.ownerDocument.defaultView;
68339
- if (this.refreshFrame || !view) return;
68340
- this.refreshFrame = view.requestAnimationFrame(() => {
68110
+ const view2 = this.ownerDocument.defaultView;
68111
+ if (this.refreshFrame || !view2) return;
68112
+ this.refreshFrame = view2.requestAnimationFrame(() => {
68341
68113
  this.refreshFrame = 0;
68342
68114
  this.refresh();
68343
68115
  });
@@ -68401,12 +68173,12 @@ var OfficeUiSelect = class extends OfficeElement {
68401
68173
  super.disconnectedCallback();
68402
68174
  this.open = false;
68403
68175
  this.closePopup();
68404
- const view = this.ownerDocument.defaultView;
68405
- view?.clearTimeout(this.searchTimer);
68176
+ const view2 = this.ownerDocument.defaultView;
68177
+ view2?.clearTimeout(this.searchTimer);
68406
68178
  this.searchTimer = 0;
68407
68179
  this.search = "";
68408
68180
  this.observer?.disconnect();
68409
- if (this.refreshFrame) view?.cancelAnimationFrame(this.refreshFrame);
68181
+ if (this.refreshFrame) view2?.cancelAnimationFrame(this.refreshFrame);
68410
68182
  this.refreshFrame = 0;
68411
68183
  }
68412
68184
  collect() {
@@ -68445,22 +68217,22 @@ var OfficeUiSelect = class extends OfficeElement {
68445
68217
  if (!menu) return;
68446
68218
  if (typeof menu.showPopover === "function") menu.showPopover();
68447
68219
  this.position();
68448
- const view = this.ownerDocument.defaultView;
68220
+ const view2 = this.ownerDocument.defaultView;
68449
68221
  this.ownerDocument.addEventListener("pointerdown", this.onOutside, true);
68450
- view?.addEventListener("resize", this.position);
68451
- view?.addEventListener("scroll", this.position, true);
68222
+ view2?.addEventListener("resize", this.position);
68223
+ view2?.addEventListener("scroll", this.position, true);
68452
68224
  }
68453
68225
  closePopup() {
68454
- const view = this.ownerDocument.defaultView;
68455
- view?.clearTimeout(this.searchTimer);
68226
+ const view2 = this.ownerDocument.defaultView;
68227
+ view2?.clearTimeout(this.searchTimer);
68456
68228
  this.search = "";
68457
68229
  try {
68458
68230
  if (this.menu?.matches(":popover-open")) this.menu.hidePopover();
68459
68231
  } catch {
68460
68232
  }
68461
68233
  this.ownerDocument.removeEventListener("pointerdown", this.onOutside, true);
68462
- view?.removeEventListener("resize", this.position);
68463
- view?.removeEventListener("scroll", this.position, true);
68234
+ view2?.removeEventListener("resize", this.position);
68235
+ view2?.removeEventListener("scroll", this.position, true);
68464
68236
  }
68465
68237
  onOutside = (event) => {
68466
68238
  if (!event.composedPath().includes(this)) this.close();
@@ -68517,10 +68289,10 @@ var OfficeUiSelect = class extends OfficeElement {
68517
68289
  }
68518
68290
  }
68519
68291
  typeAhead(key) {
68520
- const view = this.ownerDocument.defaultView;
68292
+ const view2 = this.ownerDocument.defaultView;
68521
68293
  this.search += key.toLocaleLowerCase();
68522
- view?.clearTimeout(this.searchTimer);
68523
- this.searchTimer = view?.setTimeout(() => {
68294
+ view2?.clearTimeout(this.searchTimer);
68295
+ this.searchTimer = view2?.setTimeout(() => {
68524
68296
  this.search = "";
68525
68297
  }, 700) ?? 0;
68526
68298
  this.show();
@@ -68772,7 +68544,7 @@ function matchTitleBarCommands(search, query) {
68772
68544
  }
68773
68545
 
68774
68546
  // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/chrome/title-bar.css?raw
68775
- 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";
68776
68548
 
68777
68549
  // src/chrome/title-bar.ts
68778
68550
  var EMPTY = { fileName: "" };
@@ -69938,8 +69710,8 @@ function definePptxPresentToolbar(registry2) {
69938
69710
  connectedCallback() {
69939
69711
  this.render();
69940
69712
  this.ownerDocument.addEventListener("mousedown", this.onOutside, true);
69941
- const view = this.ownerDocument.defaultView;
69942
- 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);
69943
69715
  }
69944
69716
  disconnectedCallback() {
69945
69717
  this.ownerDocument.removeEventListener("mousedown", this.onOutside, true);
@@ -70943,9 +70715,9 @@ function definePptxRibbonGallery(registry2) {
70943
70715
  this,
70944
70716
  this.#descriptor ? officeGalleryState(this.#descriptor, this.#t) : void 0
70945
70717
  );
70946
- const view = this.trigger.parentElement;
70947
- if (this.#descriptor && !this.isConnected && view && view.parentElement !== this) {
70948
- this.append(view);
70718
+ const view2 = this.trigger.parentElement;
70719
+ if (this.#descriptor && !this.isConnected && view2 && view2.parentElement !== this) {
70720
+ this.append(view2);
70949
70721
  }
70950
70722
  }
70951
70723
  }
@@ -71426,14 +71198,14 @@ function createHomePopup(doc, slot, trigger, role, label, onChange) {
71426
71198
  let keyboard = false;
71427
71199
  el.addEventListener("click", (event) => keyboard = event.detail === 0, true);
71428
71200
  const reposition = () => {
71429
- const view = doc.defaultView;
71430
- if (!view || !opened) {
71201
+ const view2 = doc.defaultView;
71202
+ if (!view2 || !opened) {
71431
71203
  return;
71432
71204
  }
71433
71205
  const anchor = slot.getBoundingClientRect();
71434
71206
  const { width, height } = el.getBoundingClientRect();
71435
- const left = Math.min(anchor.left, view.innerWidth - width - 8);
71436
- 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;
71437
71209
  el.style.left = `${Math.max(8, left)}px`;
71438
71210
  el.style.top = `${Math.max(8, top)}px`;
71439
71211
  };
@@ -71451,11 +71223,11 @@ function createHomePopup(doc, slot, trigger, role, label, onChange) {
71451
71223
  }
71452
71224
  };
71453
71225
  const listen = (on) => {
71454
- const view = doc.defaultView;
71226
+ const view2 = doc.defaultView;
71455
71227
  const method = on ? "addEventListener" : "removeEventListener";
71456
71228
  doc[method]("pointerdown", outside, true);
71457
71229
  doc[method]("keydown", key);
71458
- view?.[method]("resize", reposition);
71230
+ view2?.[method]("resize", reposition);
71459
71231
  doc[method]("scroll", reposition, true);
71460
71232
  };
71461
71233
  function close(focusTrigger = false) {
@@ -72112,10 +71884,10 @@ function createInsertMenu(doc, control2, icon2, pick, options = {}) {
72112
71884
  return;
72113
71885
  }
72114
71886
  const rect3 = trigger.getBoundingClientRect();
72115
- const view = doc.defaultView;
71887
+ const view2 = doc.defaultView;
72116
71888
  const box = list.getBoundingClientRect();
72117
- const width = view?.innerWidth ?? 1024;
72118
- const height = view?.innerHeight ?? 768;
71889
+ const width = view2?.innerWidth ?? 1024;
71890
+ const height = view2?.innerHeight ?? 768;
72119
71891
  list.style.left = `${Math.max(8, Math.min(rect3.left, width - box.width - 8))}px`;
72120
71892
  list.style.top = `${Math.max(8, Math.min(rect3.bottom + 4, height - box.height - 8))}px`;
72121
71893
  };
@@ -72468,6 +72240,49 @@ function definePptxRibbonSection(registry2) {
72468
72240
  registry2.define("pptx-ui-ribbon-section", PptxRibbonSection);
72469
72241
  }
72470
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
+
72471
72286
  // src/pptx/web-components/ribbon-transitions-styles.ts
72472
72287
  var RIBBON_TRANSITIONS_STYLES = `
72473
72288
  :host { display:inline-flex; align-items:stretch; flex:none; color:var(--pptx-foreground,#f8fafc); font:inherit; }
@@ -73302,7 +73117,7 @@ function officeStatusBarState(state) {
73302
73117
  const t = state.translate ?? ((key) => key);
73303
73118
  const count = Math.max(0, state.slideCount);
73304
73119
  const views = state.showViewModes !== false;
73305
- const view = (id, labelKey, shown = true) => ({
73120
+ const view2 = (id, labelKey, shown = true) => ({
73306
73121
  id,
73307
73122
  icon: `${ICON_PREFIX}${id}`,
73308
73123
  label: t(labelKey),
@@ -73334,9 +73149,9 @@ function officeStatusBarState(state) {
73334
73149
  ],
73335
73150
  // Every control stays rendered and named; gating only hides it.
73336
73151
  views: [
73337
- view("normal", "pptx.statusBar.normalView"),
73338
- view("sorter", "pptx.statusBar.slideSorter", state.showSorter !== false),
73339
- 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)
73340
73155
  ],
73341
73156
  zoom: {
73342
73157
  percent: state.zoomPercent ?? 100,
@@ -74306,16 +74121,16 @@ function reflowRibbon(content) {
74306
74121
  }
74307
74122
  function attachRibbonOverflow(content, options = {}) {
74308
74123
  const doc = content.ownerDocument;
74309
- const view = doc.defaultView;
74124
+ const view2 = doc.defaultView;
74310
74125
  let frame = 0;
74311
74126
  let forced = false;
74312
74127
  let lastWidth = -1;
74313
74128
  const schedule = (force = false) => {
74314
74129
  forced ||= force;
74315
- if (frame || !view) {
74130
+ if (frame || !view2) {
74316
74131
  return;
74317
74132
  }
74318
- frame = view.requestAnimationFrame(() => {
74133
+ frame = view2.requestAnimationFrame(() => {
74319
74134
  frame = 0;
74320
74135
  const rebuild = forced;
74321
74136
  forced = false;
@@ -74339,7 +74154,7 @@ function attachRibbonOverflow(content, options = {}) {
74339
74154
  observer?.observe(content, { childList: true, subtree: true });
74340
74155
  resize?.observe(content);
74341
74156
  const onWindowResize = () => schedule();
74342
- view?.addEventListener("resize", onWindowResize);
74157
+ view2?.addEventListener("resize", onWindowResize);
74343
74158
  const toggleGroup = (group, face) => {
74344
74159
  if (!face || !content.contains(group) || !group.hasAttribute("data-collapsed")) {
74345
74160
  return;
@@ -74397,8 +74212,8 @@ function attachRibbonOverflow(content, options = {}) {
74397
74212
  stopLaunchers?.();
74398
74213
  observer?.disconnect();
74399
74214
  resize?.disconnect();
74400
- view?.removeEventListener("resize", onWindowResize);
74401
- view?.cancelAnimationFrame(frame);
74215
+ view2?.removeEventListener("resize", onWindowResize);
74216
+ view2?.cancelAnimationFrame(frame);
74402
74217
  content.removeEventListener("click", toggle2);
74403
74218
  content.removeEventListener("ribbon-collapse-toggle", toggleShared);
74404
74219
  content.removeEventListener("click", afterCommand);
@@ -74483,6 +74298,7 @@ var controls = [
74483
74298
  ["pptx-ui-ribbon-transitions", definePptxRibbonTransitions],
74484
74299
  ["pptx-ui-ribbon-group", definePptxRibbonGroup],
74485
74300
  ["pptx-ui-ribbon-section", definePptxRibbonSection],
74301
+ ["pptx-ui-ribbon-add-in", definePptxRibbonAddIn],
74486
74302
  ["pptx-ui-ribbon-gallery", definePptxRibbonGallery],
74487
74303
  ["pptx-ui-ribbon-toggle", definePptxRibbonToggle],
74488
74304
  ["pptx-ui-status-bar", definePptxStatusBar],
@@ -74557,10 +74373,10 @@ function memoised(element, byObject, byId, build7) {
74557
74373
  return byObject.get(element) ?? null;
74558
74374
  }
74559
74375
  const last = byId.get(element.id);
74560
- const view = last && differsOnlyInPosition(last.element, element) ? last.view : build7();
74561
- byObject.set(element, view);
74562
- byId.set(element.id, { element, view });
74563
- 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;
74564
74380
  }
74565
74381
  function chartThreeViewSpec(element) {
74566
74382
  return memoised(element, chartSpecs, lastByIdChart, () => {
@@ -74617,7 +74433,7 @@ function applyChart3DDrag(bridge, detail) {
74617
74433
  return;
74618
74434
  }
74619
74435
  bridge.commitChartData(
74620
- chunkRPRC2EG5_cjs.withChartPointValue(bridge.chartData, part.seriesIndex, part.pointIndex, value)
74436
+ chunkK3S2A64B_cjs.withChartPointValue(bridge.chartData, part.seriesIndex, part.pointIndex, value)
74621
74437
  );
74622
74438
  }
74623
74439
  function detailOf(event) {
@@ -75094,7 +74910,7 @@ function calculateNotesPageLayout(slideWidth, slideHeight) {
75094
74910
  };
75095
74911
  }
75096
74912
  function wrapNotesText(text3, maxWidth, fontSize) {
75097
- return chunkLCIXR7WE_cjs.wrapTextByEstimatedWidth(text3, maxWidth, fontSize, { keepBlankLines: true });
74913
+ return chunkVFPVEVF4_cjs.wrapTextByEstimatedWidth(text3, maxWidth, fontSize, { keepBlankLines: true });
75098
74914
  }
75099
74915
  function calculateContinuationPageMaxLines() {
75100
74916
  const contentHeight = NOTES_PAGE_H - 2 * NOTES_MARGIN;
@@ -76810,14 +76626,34 @@ Object.defineProperty(exports, "isTemplateElementId", {
76810
76626
  enumerable: true,
76811
76627
  get: function () { return element.isTemplateElementId; }
76812
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
+ });
76813
76641
  Object.defineProperty(exports, "SNAP_THRESHOLD", {
76814
76642
  enumerable: true,
76815
76643
  get: function () { return geometry.SNAP_THRESHOLD; }
76816
76644
  });
76645
+ Object.defineProperty(exports, "aStarOrthogonal", {
76646
+ enumerable: true,
76647
+ get: function () { return geometry.aStarOrthogonal; }
76648
+ });
76817
76649
  Object.defineProperty(exports, "alignElements", {
76818
76650
  enumerable: true,
76819
76651
  get: function () { return geometry.alignElements; }
76820
76652
  });
76653
+ Object.defineProperty(exports, "buildGraphNodes", {
76654
+ enumerable: true,
76655
+ get: function () { return geometry.buildGraphNodes; }
76656
+ });
76821
76657
  Object.defineProperty(exports, "computeAlign", {
76822
76658
  enumerable: true,
76823
76659
  get: function () { return geometry.computeAlign; }
@@ -76842,14 +76678,50 @@ Object.defineProperty(exports, "createRotationDrag", {
76842
76678
  enumerable: true,
76843
76679
  get: function () { return geometry.createRotationDrag; }
76844
76680
  });
76681
+ Object.defineProperty(exports, "directPathClear", {
76682
+ enumerable: true,
76683
+ get: function () { return geometry.directPathClear; }
76684
+ });
76845
76685
  Object.defineProperty(exports, "distributeElements", {
76846
76686
  enumerable: true,
76847
76687
  get: function () { return geometry.distributeElements; }
76848
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
+ });
76849
76705
  Object.defineProperty(exports, "resolveAlignReferenceBox", {
76850
76706
  enumerable: true,
76851
76707
  get: function () { return geometry.resolveAlignReferenceBox; }
76852
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
+ });
76853
76725
  Object.defineProperty(exports, "snapAngle", {
76854
76726
  enumerable: true,
76855
76727
  get: function () { return geometry.snapAngle; }
@@ -76870,6 +76742,14 @@ Object.defineProperty(exports, "usesSlideReference", {
76870
76742
  enumerable: true,
76871
76743
  get: function () { return geometry.usesSlideReference; }
76872
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
+ });
76873
76753
  Object.defineProperty(exports, "canDrillDown", {
76874
76754
  enumerable: true,
76875
76755
  get: function () { return elementLocks.canDrillDown; }
@@ -77430,6 +77310,10 @@ Object.defineProperty(exports, "tableStyleSaveOptions", {
77430
77310
  enumerable: true,
77431
77311
  get: function () { return tableStyleMapEdits.tableStyleSaveOptions; }
77432
77312
  });
77313
+ Object.defineProperty(exports, "RIBBON_ADD_IN_EVENT", {
77314
+ enumerable: true,
77315
+ get: function () { return ribbon.RIBBON_ADD_IN_EVENT; }
77316
+ });
77433
77317
  Object.defineProperty(exports, "appendElementOnSlide", {
77434
77318
  enumerable: true,
77435
77319
  get: function () { return editorMutations.appendElementOnSlide; }
@@ -77592,7 +77476,6 @@ exports.BRIGHTNESS_CONTRAST_STEPS = BRIGHTNESS_CONTRAST_STEPS;
77592
77476
  exports.BROADCAST_THROTTLE_MS = BROADCAST_THROTTLE_MS;
77593
77477
  exports.CANVAS_CONTEXT_MENU_COMMAND_IDS = CANVAS_CONTEXT_MENU_COMMAND_IDS;
77594
77478
  exports.CANVAS_DIMENSION_CANDIDATES = CANVAS_DIMENSION_CANDIDATES;
77595
- exports.CANVAS_SENTINEL = CANVAS_SENTINEL;
77596
77479
  exports.CATEGORIES = CATEGORIES;
77597
77480
  exports.CHART_3D_TYPES = CHART_3D_TYPES;
77598
77481
  exports.CHART_AXIS_TYPE_LABEL_KEYS = CHART_AXIS_TYPE_LABEL_KEYS;
@@ -77885,7 +77768,6 @@ exports.OUTLINE_VIEW_ATTR = OUTLINE_VIEW_ATTR;
77885
77768
  exports.P14_TRANSITION_KEYFRAMES = P14_TRANSITION_KEYFRAMES;
77886
77769
  exports.P14_TRANSITION_KEYFRAMES_2 = P14_TRANSITION_KEYFRAMES_2;
77887
77770
  exports.P14_TRANSITION_KEYFRAMES_ALL = P14_TRANSITION_KEYFRAMES_ALL;
77888
- exports.PADDING_DEFAULT = PADDING_DEFAULT;
77889
77771
  exports.PALETTES = PALETTES;
77890
77772
  exports.PASTE_OFFSET_PX = PASTE_OFFSET_PX;
77891
77773
  exports.PASTE_SPECIAL_OPTIONS = PASTE_SPECIAL_OPTIONS;
@@ -77959,6 +77841,7 @@ exports.RECORD_COMMAND_GROUPS = RECORD_COMMAND_GROUPS;
77959
77841
  exports.RESIZE_HANDLES = RESIZE_HANDLES;
77960
77842
  exports.RESIZE_HANDLE_GEOMETRY = RESIZE_HANDLE_GEOMETRY;
77961
77843
  exports.RGBA_BYTES_PER_PIXEL = RGBA_BYTES_PER_PIXEL;
77844
+ exports.RIBBON_ADD_IN_TAB_ATTR = RIBBON_ADD_IN_TAB_ATTR;
77962
77845
  exports.RIBBON_CONTEXTUAL_TABS = RIBBON_CONTEXTUAL_TABS;
77963
77846
  exports.RIBBON_CONTEXTUAL_TAB_ATTR = RIBBON_CONTEXTUAL_TAB_ATTR;
77964
77847
  exports.RIBBON_CONTROL_ATTR = RIBBON_CONTROL_ATTR;
@@ -77975,13 +77858,13 @@ exports.RIBBON_GROUP_IDS = RIBBON_GROUP_IDS;
77975
77858
  exports.RIBBON_HOME_FAMILIES = RIBBON_HOME_FAMILIES;
77976
77859
  exports.RIBBON_HOME_INDENT_STEP = RIBBON_HOME_INDENT_STEP;
77977
77860
  exports.RIBBON_MENU_COMMAND_IDS = RIBBON_MENU_COMMAND_IDS;
77861
+ exports.RIBBON_RESERVED_TAB_IDS = RIBBON_RESERVED_TAB_IDS;
77978
77862
  exports.RIBBON_SCOPE_ATTR = RIBBON_SCOPE_ATTR;
77979
77863
  exports.RIBBON_SHAPE_SWATCHES = RIBBON_SHAPE_SWATCHES;
77980
77864
  exports.RIBBON_TAB = RIBBON_TAB;
77981
77865
  exports.RIBBON_TAB_IDS = RIBBON_TAB_IDS;
77982
77866
  exports.RIBBON_TRANSITION_PRESETS = RIBBON_TRANSITION_PRESETS;
77983
77867
  exports.ROTATE_STEM_PX = ROTATE_STEM_PX;
77984
- exports.ROUTING_PADDING_DEFAULT = ROUTING_PADDING_DEFAULT;
77985
77868
  exports.RULER_FONT_SIZE = RULER_FONT_SIZE;
77986
77869
  exports.RULER_THICKNESS = RULER_THICKNESS;
77987
77870
  exports.RUN_HYPERLINK_ATTR = RUN_HYPERLINK_ATTR;
@@ -78108,7 +77991,6 @@ exports.ZOOM_MIN_PERCENT = ZOOM_MIN_PERCENT;
78108
77991
  exports.ZOOM_STEP = ZOOM_STEP;
78109
77992
  exports._resetCanvasDimensionCache = _resetCanvasDimensionCache;
78110
77993
  exports._resetNativeImageSizeCacheForTests = _resetNativeImageSizeCacheForTests;
78111
- exports.aStarOrthogonal = aStarOrthogonal;
78112
77994
  exports.accentDuotone = accentDuotone;
78113
77995
  exports.acceptAutosaveRecovery = acceptAutosaveRecovery;
78114
77996
  exports.acceptsPresentationInput = acceptsPresentationInput;
@@ -78284,7 +78166,6 @@ exports.buildGlyphEnvelope = buildGlyphEnvelope;
78284
78166
  exports.buildGlyphEnvelopeBlock = buildGlyphEnvelopeBlock;
78285
78167
  exports.buildGoogleFontsFragment = buildGoogleFontsFragment;
78286
78168
  exports.buildGoogleFontsHref = buildGoogleFontsHref;
78287
- exports.buildGraphNodes = buildGraphNodes;
78288
78169
  exports.buildHollowHitOutline = buildHollowHitOutline;
78289
78170
  exports.buildHyperlinkPatch = buildHyperlinkPatch;
78290
78171
  exports.buildIdatChunk = buildIdatChunk;
@@ -78658,7 +78539,6 @@ exports.diffOptionsAgainstBaseline = diffOptionsAgainstBaseline;
78658
78539
  exports.diffSlideElements = diffSlideElements;
78659
78540
  exports.diffTokens = diffTokens;
78660
78541
  exports.diffViewerOptions = diffViewerOptions;
78661
- exports.directPathClear = directPathClear;
78662
78542
  exports.disableGlowPatch = disableGlowPatch;
78663
78543
  exports.disableInnerShadowPatch = disableInnerShadowPatch;
78664
78544
  exports.disableOuterShadowPatch = disableOuterShadowPatch;
@@ -78769,6 +78649,7 @@ exports.findMediaEndGatedSteps = findMediaEndGatedSteps;
78769
78649
  exports.findMetricCompatibleGoogleFontsFamily = findMetricCompatibleGoogleFontsFamily;
78770
78650
  exports.findOutlineRow = findOutlineRow;
78771
78651
  exports.findPresentationActionTarget = findPresentationActionTarget;
78652
+ exports.findRibbonAddIn = findRibbonAddIn;
78772
78653
  exports.findSlideStage = findSlideStage;
78773
78654
  exports.findSmartArtNodeText = findSmartArtNodeText;
78774
78655
  exports.finishAnimationGroupSteps = finishAnimationGroupSteps;
@@ -79014,7 +78895,6 @@ exports.hasText3dExtrusion = hasText3dExtrusion;
79014
78895
  exports.hasTextWarp = hasTextWarp;
79015
78896
  exports.hasTiltData = hasTiltData;
79016
78897
  exports.hasWarpPresetDefinition = hasWarpPresetDefinition;
79017
- exports.heuristic = heuristic;
79018
78898
  exports.hexToRgb = hexToRgb;
79019
78899
  exports.hiddenSlideCue = hiddenSlideCue;
79020
78900
  exports.hiddenSlideLabelId = hiddenSlideLabelId;
@@ -79040,7 +78920,6 @@ exports.imageResetPatch = imageResetPatch;
79040
78920
  exports.imageResetState = imageResetState;
79041
78921
  exports.incomingSegmentIndex = incomingSegmentIndex;
79042
78922
  exports.inferNodeTypes = inferNodeTypes;
79043
- exports.inflateRect = inflateRect;
79044
78923
  exports.initialHiddenStyle = initialHiddenStyle;
79045
78924
  exports.initializeInlineListDom = initializeInlineListDom;
79046
78925
  exports.inkGroupViewBox = inkGroupViewBox;
@@ -79363,8 +79242,6 @@ exports.playFeedbackSound = playFeedbackSound;
79363
79242
  exports.playGroup = playGroup;
79364
79243
  exports.playSlideTransitionPreview = playSlideTransitionPreview;
79365
79244
  exports.pointFromPointerEvent = pointFromPointerEvent;
79366
- exports.pointInRect = pointInRect;
79367
- exports.pointKey = pointKey;
79368
79245
  exports.pointsToSvgPathD = pointsToSvgPathD;
79369
79246
  exports.polygonRegionBounds = polygonRegionBounds;
79370
79247
  exports.powerPointAccelDecelProgress = powerPointAccelDecelProgress;
@@ -79483,6 +79360,7 @@ exports.resizeSelection = resizeSelection;
79483
79360
  exports.resolve3DRenderingFlags = resolve3DRenderingFlags;
79484
79361
  exports.resolveAccentHex = resolveAccentHex;
79485
79362
  exports.resolveActionType = resolveActionType;
79363
+ exports.resolveActiveRibbonAddIn = resolveActiveRibbonAddIn;
79486
79364
  exports.resolveActiveRibbonTab = resolveActiveRibbonTab;
79487
79365
  exports.resolveAnimationCss = resolveAnimationCss;
79488
79366
  exports.resolveAnimationEnd = resolveAnimationEnd;
@@ -79647,6 +79525,8 @@ exports.revealedStageCount = revealedStageCount;
79647
79525
  exports.rgbToHex = rgbToHex;
79648
79526
  exports.rgbToHsl = rgbToHsl;
79649
79527
  exports.rgbaToHex = rgbaToHex;
79528
+ exports.ribbonAddInControlId = ribbonAddInControlId;
79529
+ exports.ribbonAddInGroupViews = ribbonAddInGroupViews;
79650
79530
  exports.ribbonControlAttrs = ribbonControlAttrs;
79651
79531
  exports.ribbonCustomizationCss = ribbonCustomizationCss;
79652
79532
  exports.ribbonGroupAttrs = ribbonGroupAttrs;
@@ -79658,9 +79538,7 @@ exports.ribbonTransitionsDraftPatch = ribbonTransitionsDraftPatch;
79658
79538
  exports.ribbonTransitionsSoundChange = ribbonTransitionsSoundChange;
79659
79539
  exports.rotateDelta = rotateDelta;
79660
79540
  exports.roundedRectOutline = roundedRectOutline;
79661
- exports.routeConnector = routeConnector;
79662
79541
  exports.routeEditLayerPointerToNodes = routeEditLayerPointerToNodes;
79663
- exports.routeOrthogonalConnector = routeOrthogonalConnector;
79664
79542
  exports.rowHandleSegments = rowHandleSegments;
79665
79543
  exports.rowIndexAtOffset = rowIndexAtOffset;
79666
79544
  exports.rulerDragToGuidePosition = rulerDragToGuidePosition;
@@ -79670,6 +79548,7 @@ exports.runMediaCommand = runMediaCommand;
79670
79548
  exports.runPresentationAction = runPresentationAction;
79671
79549
  exports.runProgramNoticeStackStyle = runProgramNoticeStackStyle;
79672
79550
  exports.runProgramNoticeStackStyleAttr = runProgramNoticeStackStyleAttr;
79551
+ exports.runRibbonAddInCommand = runRibbonAddInCommand;
79673
79552
  exports.safeColor = safeColor;
79674
79553
  exports.sameArray = sameArray;
79675
79554
  exports.sameHex = sameHex;
@@ -79704,7 +79583,6 @@ exports.seedHyperlinkDraft = seedHyperlinkDraft;
79704
79583
  exports.seedRecentColors = seedRecentColors;
79705
79584
  exports.seedShareFields = seedShareFields;
79706
79585
  exports.seedShareSessionFields = seedShareSessionFields;
79707
- exports.segmentIntersectsRect = segmentIntersectsRect;
79708
79586
  exports.segmentStyleToCss = segmentStyleToCss;
79709
79587
  exports.segmentsToEditorHtml = segmentsToEditorHtml;
79710
79588
  exports.segmentsToParagraphs = segmentsToParagraphs;
@@ -79770,7 +79648,6 @@ exports.signedLoopArea = signedLoopArea;
79770
79648
  exports.signedPercent = signedPercent;
79771
79649
  exports.simplifyFreeformVertices = simplifyFreeformVertices;
79772
79650
  exports.simplifyLoop = simplifyLoop;
79773
- exports.simplifyPath = simplifyPath;
79774
79651
  exports.slideBackgroundClearPatch = slideBackgroundClearPatch;
79775
79652
  exports.slideBackgroundClearState = slideBackgroundClearState;
79776
79653
  exports.slidePaneContextMenuLabelKey = slidePaneContextMenuLabelKey;
@@ -79923,9 +79800,8 @@ exports.viewerOptionsToPreferences = viewerOptionsToPreferences;
79923
79800
  exports.viewerPreferencesFromViewProperties = viewerPreferencesFromViewProperties;
79924
79801
  exports.viewerZoomPercent = viewerZoomPercent;
79925
79802
  exports.visibleContextualTabs = visibleContextualTabs;
79803
+ exports.visibleRibbonAddIns = visibleRibbonAddIns;
79926
79804
  exports.warpPreviewPath = warpPreviewPath;
79927
- exports.waypointsToPathD = waypointsToPathD;
79928
- exports.waypointsToPathData = waypointsToPathData;
79929
79805
  exports.wheelDecl = wheelDecl;
79930
79806
  exports.wireMediaBookmarkSteps = wireMediaBookmarkSteps;
79931
79807
  exports.wireMediaEndedSteps = wireMediaEndedSteps;