ooxml-ui 0.31.0 → 1.0.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 (96) hide show
  1. package/README.md +14 -0
  2. package/custom-elements.json +10 -0
  3. package/dist/{chunk-RAZAJMHK.js → chunk-4QQASR5A.js} +2 -2
  4. package/dist/{chunk-HZ422LTR.js → chunk-BOX43CZD.js} +1 -0
  5. package/dist/{chunk-3GE2NHNG.js → chunk-FLHM5Q4O.js} +119 -81
  6. package/dist/{chunk-2QW4QE56.js → chunk-T3HB5LMH.js} +103 -68
  7. package/dist/controls.js +2 -2
  8. package/dist/docx/hard-break-command.d.ts +1 -3
  9. package/dist/docx/link-commands.d.ts +4 -15
  10. package/dist/docx/note-editor.d.ts +3 -2
  11. package/dist/docx/run-styles.d.ts +1 -1
  12. package/dist/docx/schema.d.ts +1 -1
  13. package/dist/docx/toggle-commands.d.ts +2 -8
  14. package/dist/docx.js +109 -302
  15. package/dist/form/gradient-direction-gallery.d.ts +19 -0
  16. package/dist/form/gradient-gallery-preview.d.ts +3 -0
  17. package/dist/form/gradient-preset-gallery.d.ts +16 -0
  18. package/dist/form/gradient-stop-track.d.ts +20 -0
  19. package/dist/form/number-range.d.ts +12 -0
  20. package/dist/icons.d.ts.map +1 -1
  21. package/dist/icons.js +1 -1
  22. package/dist/index.js +4 -4
  23. package/dist/menu/menu-button.d.ts +10 -0
  24. package/dist/menu/menu-button.d.ts.map +1 -1
  25. package/dist/pptx/{chart-3d-view-scene-IANLDFIE.mjs → chart-3d-view-scene-2KRQ5667.mjs} +2 -2
  26. package/dist/pptx/{chart-3d-view-scene-3DK5TUBZ.cjs → chart-3d-view-scene-36DMZWZ3.cjs} +37 -37
  27. package/dist/pptx/{chunk-C42ZL35K.mjs → chunk-ADOC5JLI.mjs} +1 -1
  28. package/dist/pptx/{chunk-QM4FGZG4.cjs → chunk-AIL3BNZS.cjs} +31 -131
  29. package/dist/pptx/{chunk-WLETAW3T.cjs → chunk-CJU4P5FT.cjs} +33 -13
  30. package/dist/pptx/{chunk-6SCK57RJ.cjs → chunk-FEFQTZDM.cjs} +158 -245
  31. package/dist/pptx/{chunk-EVGSFPUV.mjs → chunk-XWE5GSE7.mjs} +16 -109
  32. package/dist/pptx/{chunk-7JEMQW6R.mjs → chunk-YARCML7O.mjs} +11 -122
  33. package/dist/pptx/{chunk-OHE5UXST.cjs → chunk-YHA6XAB3.cjs} +1 -1
  34. package/dist/pptx/{chunk-X2F6PA2D.mjs → chunk-YOGDIDPB.mjs} +22 -3
  35. package/dist/pptx/dom/index.cjs +235 -235
  36. package/dist/pptx/dom/index.mjs +6 -6
  37. package/dist/pptx/export/html2canvas-clone.cjs +2 -2
  38. package/dist/pptx/export/html2canvas-clone.mjs +1 -1
  39. package/dist/pptx/index.cjs +2993 -2989
  40. package/dist/pptx/index.mjs +4 -4
  41. package/dist/pptx/render/chart-combo-stock.cjs +3 -3
  42. package/dist/pptx/render/chart-combo-stock.mjs +1 -1
  43. package/dist/pptx/render/chart-manual-layout.d.ts +2 -20
  44. package/dist/pptx/render/chart-manual-layout.d.ts.map +1 -1
  45. package/dist/pptx/render/chart-overlays.cjs +7 -7
  46. package/dist/pptx/render/chart-overlays.mjs +1 -1
  47. package/dist/pptx/render/chart-surface-treemap.cjs +4 -4
  48. package/dist/pptx/render/chart-surface-treemap.mjs +1 -1
  49. package/dist/pptx/render/chart-svg-def-types.d.ts +6 -1
  50. package/dist/pptx/render/chart-svg-def-types.d.ts.map +1 -1
  51. package/dist/pptx/render/chart-view-model-dom-helpers.d.ts +1 -1
  52. package/dist/pptx/render/chart-view-model-dom-helpers.d.ts.map +1 -1
  53. package/dist/pptx/render/chart-view-model.cjs +41 -41
  54. package/dist/pptx/render/chart-view-model.mjs +1 -1
  55. package/dist/pptx/render/chart-waterfall-map.cjs +6 -6
  56. package/dist/pptx/render/chart-waterfall-map.mjs +1 -1
  57. package/dist/pptx/render/element-interaction.d.ts +1 -1
  58. package/dist/pptx/render/element-interaction.d.ts.map +1 -1
  59. package/dist/pptx/render/gradient-picker.d.ts.map +1 -1
  60. package/dist/pptx/render/index.d.ts +1 -0
  61. package/dist/pptx/render/index.d.ts.map +1 -1
  62. package/dist/pptx/render/path-gradient-rect.d.ts +1 -75
  63. package/dist/pptx/render/path-gradient-rect.d.ts.map +1 -1
  64. package/dist/pptx/render/rotate-handle-placement.d.ts +1 -27
  65. package/dist/pptx/render/rotate-handle-placement.d.ts.map +1 -1
  66. package/dist/pptx/render/rotation-drag.d.ts +1 -7
  67. package/dist/pptx/render/rotation-drag.d.ts.map +1 -1
  68. package/dist/teams/app/files-panel.d.ts +8 -3
  69. package/dist/teams/app/teams-app.d.ts +1 -0
  70. package/dist/teams/app/teams-settings.d.ts +6 -0
  71. package/dist/teams.js +3 -3
  72. package/dist/visio/render-fill.d.ts +2 -1
  73. package/dist/visio/render-svg.d.ts +2 -0
  74. package/dist/visio/ribbon-action.d.ts +8 -1
  75. package/dist/visio/ribbon-parts.d.ts +2 -1
  76. package/dist/visio/ribbon-router.d.ts +4 -2
  77. package/dist/visio/viewer-commands.d.ts +3 -3
  78. package/dist/visio/viewer-draw-tool.d.ts +16 -6
  79. package/dist/visio/viewer-handle-events.d.ts +19 -0
  80. package/dist/visio/viewer-line-endpoints.d.ts +14 -0
  81. package/dist/visio/viewer-rotation-handle.d.ts +14 -0
  82. package/dist/visio/viewer-rotation-preview.d.ts +7 -0
  83. package/dist/visio.js +734 -88
  84. package/dist/xlsx/chart-area-pane.d.ts +9 -0
  85. package/dist/xlsx/chart-fill-binding.d.ts +23 -0
  86. package/dist/xlsx/chart-gradient-preview.d.ts +8 -0
  87. package/dist/xlsx/chart-series-fill.d.ts +2 -1
  88. package/dist/xlsx/chart-series-gradient-type.d.ts +9 -0
  89. package/dist/xlsx/chart-series-gradient.d.ts +8 -0
  90. package/dist/xlsx/chart-series-pane.d.ts +2 -1
  91. package/dist/xlsx/chart-series-range-preview.d.ts +7 -0
  92. package/dist/xlsx/chart-series-transparency.d.ts +2 -1
  93. package/dist/xlsx/grid/measure.d.ts +5 -0
  94. package/dist/xlsx/grid/styles.d.ts +1 -1
  95. package/dist/xlsx.js +962 -102
  96. package/package.json +2 -2
@@ -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 chunkWLETAW3T_cjs = require('./chunk-WLETAW3T.cjs');
7
+ var chunkCJU4P5FT_cjs = require('./chunk-CJU4P5FT.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 chunkQM4FGZG4_cjs = require('./chunk-QM4FGZG4.cjs');
15
+ var chunkAIL3BNZS_cjs = require('./chunk-AIL3BNZS.cjs');
16
16
  var chunkFOE75Z6N_cjs = require('./chunk-FOE75Z6N.cjs');
17
17
  var chunkNTXHQHCS_cjs = require('./chunk-NTXHQHCS.cjs');
18
- var chunkOHE5UXST_cjs = require('./chunk-OHE5UXST.cjs');
18
+ var chunkYHA6XAB3_cjs = require('./chunk-YHA6XAB3.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');
@@ -68,12 +68,12 @@ var diagram = require('ooxml-core/diagram');
68
68
  var slideSearch = require('ooxml-core/pptx/editor/render/slide-search');
69
69
  var findReplace = require('ooxml-core/pptx/editor/render/find-replace');
70
70
  var groupDrill = require('ooxml-core/pptx/editor/render/group-drill');
71
+ var chart = require('ooxml-core/chart');
71
72
  var themeEditorPresets = require('ooxml-core/pptx/editor/render/theme-editor-presets');
72
73
  var templateEditing = require('ooxml-core/pptx/editor/render/template-editing');
73
74
  var ui = require('ooxml-core/pptx/ui');
74
75
  var deckSaveEncryption = require('ooxml-core/pptx/editor/render/deck-save-encryption');
75
76
  var tableStyleMapEdits = require('ooxml-core/pptx/editor/render/table-style-map-edits');
76
- var chart = require('ooxml-core/chart');
77
77
  var editorMutations = require('ooxml-core/pptx/editor/render/editor-mutations');
78
78
  var slideSizeRescale = require('ooxml-core/pptx/editor/render/slide-size-rescale');
79
79
  var tableStyleEditorParts = require('ooxml-core/pptx/editor/render/table-style-editor-parts');
@@ -1070,7 +1070,7 @@ function buildRectPathGradientDef(stops, id, focalPoint, fillToRect) {
1070
1070
  color: stop.color,
1071
1071
  ...typeof stop.opacity === "number" ? { opacity: stop.opacity } : {}
1072
1072
  }));
1073
- const markup = chunkQM4FGZG4_cjs.buildRectPathGradientSvg(rectStops, focalPoint, fillToRect);
1073
+ const markup = chunkAIL3BNZS_cjs.buildRectPathGradientSvg(rectStops, focalPoint, fillToRect);
1074
1074
  return { kind: "rectPath", id, href: `data:image/svg+xml,${encodeURIComponent(markup)}` };
1075
1075
  }
1076
1076
  function rectPathGradientMarkup(def) {
@@ -1084,9 +1084,9 @@ function buildSvgStrokePatternDef(style, elementId) {
1084
1084
  if (!style || style.strokeFillMode !== "pattern" || !style.strokePatternPreset) {
1085
1085
  return void 0;
1086
1086
  }
1087
- const fg = chunkQM4FGZG4_cjs.normalizeHexColor(style.strokeColor, "#000000");
1088
- const bg = chunkQM4FGZG4_cjs.normalizeHexColor(style.strokePatternBackgroundColor, "#ffffff");
1089
- const tile4 = chunkQM4FGZG4_cjs.getPatternTile(style.strokePatternPreset, fg, bg);
1087
+ const fg = chunkAIL3BNZS_cjs.normalizeHexColor(style.strokeColor, "#000000");
1088
+ const bg = chunkAIL3BNZS_cjs.normalizeHexColor(style.strokePatternBackgroundColor, "#ffffff");
1089
+ const tile4 = chunkAIL3BNZS_cjs.getPatternTile(style.strokePatternPreset, fg, bg);
1090
1090
  if (!tile4) {
1091
1091
  return void 0;
1092
1092
  }
@@ -1109,7 +1109,7 @@ function svgGradientId(elementId, suffix = "grad") {
1109
1109
  return `pptx-${suffix}-${seed}`;
1110
1110
  }
1111
1111
  function toSvgStops(stops) {
1112
- return chunkQM4FGZG4_cjs.sanitizeGradientStops(stops).map((stop) => ({
1112
+ return chunkAIL3BNZS_cjs.sanitizeGradientStops(stops).map((stop) => ({
1113
1113
  offset: round4(stop.position / 100),
1114
1114
  color: stop.color,
1115
1115
  ...typeof stop.opacity === "number" ? { opacity: round4(stop.opacity) } : {}
@@ -1136,7 +1136,7 @@ function buildFromSource(source, id) {
1136
1136
  if ((source.pathType || "circle") === "rect") {
1137
1137
  return buildRectPathGradientDef(stops, id, source.focalPoint, source.fillToRect);
1138
1138
  }
1139
- const { cx, cy } = chunkQM4FGZG4_cjs.computeGradientCenter(source.fillToRect, source.focalPoint);
1139
+ const { cx, cy } = chunkAIL3BNZS_cjs.computeGradientCenter(source.fillToRect, source.focalPoint);
1140
1140
  const fx = cx / 100;
1141
1141
  const fy = cy / 100;
1142
1142
  const r = Math.hypot(Math.max(fx, 1 - fx), Math.max(fy, 1 - fy));
@@ -1316,11 +1316,11 @@ function buildStrokeOutline(element) {
1316
1316
  return {
1317
1317
  d,
1318
1318
  paint,
1319
- stroke: paint ? svgGradientFillRef(paint) : chunkQM4FGZG4_cjs.colorWithOpacity(style?.strokeColor ?? chunkQM4FGZG4_cjs.DEFAULT_STROKE_COLOR, style?.strokeOpacity),
1319
+ stroke: paint ? svgGradientFillRef(paint) : chunkAIL3BNZS_cjs.colorWithOpacity(style?.strokeColor ?? chunkAIL3BNZS_cjs.DEFAULT_STROKE_COLOR, style?.strokeOpacity),
1320
1320
  strokeWidth,
1321
1321
  strands: outlineStrands(style?.compoundLine, strokeWidth),
1322
- dashArray: chunkQM4FGZG4_cjs.getSvgStrokeDasharray(
1323
- chunkQM4FGZG4_cjs.normalizeStrokeDashType(style?.strokeDash),
1322
+ dashArray: chunkAIL3BNZS_cjs.getSvgStrokeDasharray(
1323
+ chunkAIL3BNZS_cjs.normalizeStrokeDashType(style?.strokeDash),
1324
1324
  Math.max(strokeWidth, 1),
1325
1325
  style?.customDashSegments
1326
1326
  ),
@@ -1499,12 +1499,12 @@ function getComputedStrokeStyle(element) {
1499
1499
  return { ...NO_STROKE, ...joins };
1500
1500
  }
1501
1501
  const borderWidth = width;
1502
- const borderStyle = chunkQM4FGZG4_cjs.getCssBorderDashStyle(
1503
- chunkQM4FGZG4_cjs.normalizeStrokeDashType(style.strokeDash),
1502
+ const borderStyle = chunkAIL3BNZS_cjs.getCssBorderDashStyle(
1503
+ chunkAIL3BNZS_cjs.normalizeStrokeDashType(style.strokeDash),
1504
1504
  style.compoundLine
1505
1505
  );
1506
- const rawColor = style.strokeColor ?? chunkQM4FGZG4_cjs.DEFAULT_STROKE_COLOR;
1507
- const borderColor = style.strokeOpacity === void 0 ? rawColor : chunkQM4FGZG4_cjs.colorWithOpacity(chunkQM4FGZG4_cjs.normalizeHexColor(rawColor, chunkQM4FGZG4_cjs.DEFAULT_STROKE_COLOR), style.strokeOpacity);
1506
+ const rawColor = style.strokeColor ?? chunkAIL3BNZS_cjs.DEFAULT_STROKE_COLOR;
1507
+ const borderColor = style.strokeOpacity === void 0 ? rawColor : chunkAIL3BNZS_cjs.colorWithOpacity(chunkAIL3BNZS_cjs.normalizeHexColor(rawColor, chunkAIL3BNZS_cjs.DEFAULT_STROKE_COLOR), style.strokeOpacity);
1508
1508
  return {
1509
1509
  borderWidth,
1510
1510
  borderStyle,
@@ -1665,7 +1665,7 @@ function resolveGroupChildFill(child, parentGroupFill) {
1665
1665
  if (!parentGroupFill || !pptx.hasShapeProperties(child) || child.shapeStyle?.fillMode !== "group") {
1666
1666
  return void 0;
1667
1667
  }
1668
- return chunkQM4FGZG4_cjs.getComputedFillStyle(child, parentGroupFill);
1668
+ return chunkAIL3BNZS_cjs.getComputedFillStyle(child, parentGroupFill);
1669
1669
  }
1670
1670
  function getFrameInverseTransform(element) {
1671
1671
  const transforms = [];
@@ -1717,9 +1717,9 @@ function parseDrawingColorChoice(colorNode, schemeColorOverrides) {
1717
1717
  }
1718
1718
  if (colorNode["a:scrgbClr"]) {
1719
1719
  const scrgb = colorNode["a:scrgbClr"];
1720
- const red = chunkQM4FGZG4_cjs.parseDrawingPercent(scrgb["@_r"]);
1721
- const green = chunkQM4FGZG4_cjs.parseDrawingPercent(scrgb["@_g"]);
1722
- const blue = chunkQM4FGZG4_cjs.parseDrawingPercent(scrgb["@_b"]);
1720
+ const red = chunkAIL3BNZS_cjs.parseDrawingPercent(scrgb["@_r"]);
1721
+ const green = chunkAIL3BNZS_cjs.parseDrawingPercent(scrgb["@_g"]);
1722
+ const blue = chunkAIL3BNZS_cjs.parseDrawingPercent(scrgb["@_b"]);
1723
1723
  if (red !== void 0 && green !== void 0 && blue !== void 0) {
1724
1724
  const toHex2 = (value) => Math.min(255, Math.max(0, Math.round(value))).toString(16).padStart(2, "0").toUpperCase();
1725
1725
  const base2 = `#${toHex2(red * 255)}${toHex2(green * 255)}${toHex2(blue * 255)}`;
@@ -1759,8 +1759,8 @@ function parseDrawingColorChoice(colorNode, schemeColorOverrides) {
1759
1759
  const lumRaw = Number.parseFloat(String(hslNode["@_lum"] ?? ""));
1760
1760
  if (Number.isFinite(hueRaw) && Number.isFinite(satRaw) && Number.isFinite(lumRaw)) {
1761
1761
  const h = hueRaw / 6e4;
1762
- const s = chunkQM4FGZG4_cjs.clampUnitInterval(satRaw / 1e5);
1763
- const l = chunkQM4FGZG4_cjs.clampUnitInterval(lumRaw / 1e5);
1762
+ const s = chunkAIL3BNZS_cjs.clampUnitInterval(satRaw / 1e5);
1763
+ const l = chunkAIL3BNZS_cjs.clampUnitInterval(lumRaw / 1e5);
1764
1764
  const rgb = pptx.hslToRgb(h, s, l);
1765
1765
  const toHex2 = (value) => Math.min(255, Math.max(0, Math.round(value))).toString(16).padStart(2, "0").toUpperCase();
1766
1766
  const base2 = `#${toHex2(rgb.r)}${toHex2(rgb.g)}${toHex2(rgb.b)}`;
@@ -1800,11 +1800,11 @@ function parseDrawingColorOpacity(colorNode) {
1800
1800
  if (!colorChoice) {
1801
1801
  return void 0;
1802
1802
  }
1803
- const alpha = chunkQM4FGZG4_cjs.parseDrawingPercent(colorChoice["a:alpha"]?.["@_val"]);
1804
- const alphaMod = chunkQM4FGZG4_cjs.parseDrawingPercent(
1803
+ const alpha = chunkAIL3BNZS_cjs.parseDrawingPercent(colorChoice["a:alpha"]?.["@_val"]);
1804
+ const alphaMod = chunkAIL3BNZS_cjs.parseDrawingPercent(
1805
1805
  colorChoice["a:alphaMod"]?.["@_val"]
1806
1806
  );
1807
- const alphaOff = chunkQM4FGZG4_cjs.parseDrawingPercent(
1807
+ const alphaOff = chunkAIL3BNZS_cjs.parseDrawingPercent(
1808
1808
  colorChoice["a:alphaOff"]?.["@_val"]
1809
1809
  );
1810
1810
  if (alpha === void 0 && alphaMod === void 0 && alphaOff === void 0) {
@@ -1817,7 +1817,7 @@ function parseDrawingColorOpacity(colorNode) {
1817
1817
  if (alphaOff !== void 0) {
1818
1818
  opacity += alphaOff;
1819
1819
  }
1820
- return chunkQM4FGZG4_cjs.clampUnitInterval(opacity);
1820
+ return chunkAIL3BNZS_cjs.clampUnitInterval(opacity);
1821
1821
  }
1822
1822
  function substituteScriptFont(name, panose, baseFontFamily) {
1823
1823
  return name ? pptx.getSubstituteFontFamily(name, pptx.parsePanoseString(panose)) : baseFontFamily;
@@ -2028,7 +2028,7 @@ function buildPatternOverlayTile(pattern) {
2028
2028
  if (!pattern) {
2029
2029
  return void 0;
2030
2030
  }
2031
- const tile4 = chunkQM4FGZG4_cjs.getPatternTile(
2031
+ const tile4 = chunkAIL3BNZS_cjs.getPatternTile(
2032
2032
  pattern.preset,
2033
2033
  pattern.foreground ?? "#000000",
2034
2034
  pattern.background ?? "#ffffff"
@@ -3582,10 +3582,10 @@ function getMeasureCtx() {
3582
3582
  return measureCtx;
3583
3583
  }
3584
3584
  function envelopeFontSizePx(font) {
3585
- return font.fontSizePx && font.fontSizePx > 0 ? font.fontSizePx : chunkQM4FGZG4_cjs.DEFAULT_TEXT_FONT_SIZE;
3585
+ return font.fontSizePx && font.fontSizePx > 0 ? font.fontSizePx : chunkAIL3BNZS_cjs.DEFAULT_TEXT_FONT_SIZE;
3586
3586
  }
3587
3587
  function toCanvasFont(font, sizePx = envelopeFontSizePx(font)) {
3588
- const family2 = font.fontFamily || chunkQM4FGZG4_cjs.DEFAULT_FONT_FAMILY;
3588
+ const family2 = font.fontFamily || chunkAIL3BNZS_cjs.DEFAULT_FONT_FAMILY;
3589
3589
  return `${font.italic ? "italic " : ""}${font.bold ? "bold " : ""}${sizePx}px ${family2}`;
3590
3590
  }
3591
3591
  function enableKerning(ctx) {
@@ -4580,7 +4580,7 @@ function createGlyphOutlineLookup(cache) {
4580
4580
  return (char, font, x, y) => {
4581
4581
  const parsed = cache.get(font.fontFamily, font.bold, font.italic);
4582
4582
  if (parsed) {
4583
- const size = font.fontSizePx && font.fontSizePx > 0 ? font.fontSizePx : chunkQM4FGZG4_cjs.DEFAULT_TEXT_FONT_SIZE;
4583
+ const size = font.fontSizePx && font.fontSizePx > 0 ? font.fontSizePx : chunkAIL3BNZS_cjs.DEFAULT_TEXT_FONT_SIZE;
4584
4584
  const commands = extractGlyphOutlineCommands(parsed, char, x, y, size);
4585
4585
  if (commands) {
4586
4586
  return commands;
@@ -6768,7 +6768,7 @@ function computeTrendlinePoints(trendline, values, catCount, layout, range, mode
6768
6768
  let rSquared = 0;
6769
6769
  switch (trendline.trendlineType) {
6770
6770
  case "linear": {
6771
- const reg = chunkQM4FGZG4_cjs.computeLinearRegression(xVals, yVals);
6771
+ const reg = chunkAIL3BNZS_cjs.computeLinearRegression(xVals, yVals);
6772
6772
  const intercept = trendline.intercept;
6773
6773
  const slope = intercept !== void 0 ? yVals.reduce((s, y, i) => s + (y - intercept) * xVals[i], 0) / xVals.reduce((s, x) => s + x * x, 0) : reg.slope;
6774
6774
  const b = intercept ?? reg.intercept;
@@ -6783,7 +6783,7 @@ function computeTrendlinePoints(trendline, values, catCount, layout, range, mode
6783
6783
  if (logY.length < 2) {
6784
6784
  return { points: [], equation: "", rSquared: 0 };
6785
6785
  }
6786
- const reg = chunkQM4FGZG4_cjs.computeLinearRegression(filteredX, logY);
6786
+ const reg = chunkAIL3BNZS_cjs.computeLinearRegression(filteredX, logY);
6787
6787
  const a = Math.exp(reg.intercept);
6788
6788
  const b = reg.slope;
6789
6789
  evalFn = (x) => a * Math.exp(b * x);
@@ -6797,7 +6797,7 @@ function computeTrendlinePoints(trendline, values, catCount, layout, range, mode
6797
6797
  if (lnX.length < 2) {
6798
6798
  return { points: [], equation: "", rSquared: 0 };
6799
6799
  }
6800
- const reg = chunkQM4FGZG4_cjs.computeLinearRegression(lnX, filteredY);
6800
+ const reg = chunkAIL3BNZS_cjs.computeLinearRegression(lnX, filteredY);
6801
6801
  evalFn = (x) => x > 0 ? reg.slope * Math.log(x) + reg.intercept : 0;
6802
6802
  equation = `y = ${reg.slope.toFixed(2)}ln(x) + ${reg.intercept.toFixed(2)}`;
6803
6803
  rSquared = reg.rSquared;
@@ -6809,7 +6809,7 @@ function computeTrendlinePoints(trendline, values, catCount, layout, range, mode
6809
6809
  if (logX.length < 2) {
6810
6810
  return { points: [], equation: "", rSquared: 0 };
6811
6811
  }
6812
- const reg = chunkQM4FGZG4_cjs.computeLinearRegression(logX, logY);
6812
+ const reg = chunkAIL3BNZS_cjs.computeLinearRegression(logX, logY);
6813
6813
  const a = Math.exp(reg.intercept);
6814
6814
  evalFn = (x) => x > 0 ? a * x ** reg.slope : 0;
6815
6815
  equation = `y = ${a.toFixed(2)}x^${reg.slope.toFixed(2)}`;
@@ -6818,10 +6818,10 @@ function computeTrendlinePoints(trendline, values, catCount, layout, range, mode
6818
6818
  }
6819
6819
  case "polynomial": {
6820
6820
  const order = Math.min(trendline.order ?? 2, 6);
6821
- const coeffs = chunkQM4FGZG4_cjs.fitPolynomial(xVals, yVals, order);
6821
+ const coeffs = chunkAIL3BNZS_cjs.fitPolynomial(xVals, yVals, order);
6822
6822
  evalFn = (x) => coeffs.reduce((s, c, i) => s + c * x ** i, 0);
6823
6823
  equation = coeffs.map((c, i) => `${c.toFixed(2)}x^${i}`).join(" + ");
6824
- rSquared = chunkQM4FGZG4_cjs.computeRSquared(xVals, yVals, evalFn);
6824
+ rSquared = chunkAIL3BNZS_cjs.computeRSquared(xVals, yVals, evalFn);
6825
6825
  break;
6826
6826
  }
6827
6827
  case "movingAvg": {
@@ -7159,7 +7159,7 @@ var COMBO_SERIES_TYPE_OPTIONS = [
7159
7159
  function patchChartData(data, patch) {
7160
7160
  const { chartType, ...rest } = patch;
7161
7161
  if (chartType === "pareto") {
7162
- return { ...chunkQM4FGZG4_cjs.applyParetoConversion(data), ...rest };
7162
+ return { ...chunkAIL3BNZS_cjs.applyParetoConversion(data), ...rest };
7163
7163
  }
7164
7164
  if (chartType && chartType !== data.chartType) {
7165
7165
  const adapted = pptx.chartDataChangeType(data, chartType);
@@ -7221,8 +7221,8 @@ function buildParetoInsertData() {
7221
7221
  layout: "histogram",
7222
7222
  binCount: PARETO_BIN_COUNT
7223
7223
  };
7224
- const bins = chunkQM4FGZG4_cjs.computeHistogramBins(PARETO_VALUES, histogramOptions);
7225
- const ordered = chunkQM4FGZG4_cjs.orderParetoEntries(
7224
+ const bins = chunkAIL3BNZS_cjs.computeHistogramBins(PARETO_VALUES, histogramOptions);
7225
+ const ordered = chunkAIL3BNZS_cjs.orderParetoEntries(
7226
7226
  bins.map((bin, index) => ({ value: bin.value, label: bin.label, sourcePointIndex: index }))
7227
7227
  );
7228
7228
  return {
@@ -7235,7 +7235,7 @@ function buildParetoInsertData() {
7235
7235
  },
7236
7236
  {
7237
7237
  name: "Cumulative %",
7238
- values: chunkQM4FGZG4_cjs.cumulativePercentOfTotal(ordered.map((entry5) => entry5.value)),
7238
+ values: chunkAIL3BNZS_cjs.cumulativePercentOfTotal(ordered.map((entry5) => entry5.value)),
7239
7239
  histogramOptions: { layout: "pareto" }
7240
7240
  }
7241
7241
  ]
@@ -7498,7 +7498,7 @@ var FILL_PATTERN_LABEL_KEYS = {
7498
7498
  trellis: "pptx.fillPatterns.trellis",
7499
7499
  zigZag: "pptx.fillPatterns.zigZag"
7500
7500
  };
7501
- var PATTERN_PRESET_OPTIONS = chunkQM4FGZG4_cjs.OOXML_PATTERN_PRESETS.map(
7501
+ var PATTERN_PRESET_OPTIONS = chunkAIL3BNZS_cjs.OOXML_PATTERN_PRESETS.map(
7502
7502
  (value) => ({ value, labelKey: FILL_PATTERN_LABEL_KEYS[value] })
7503
7503
  );
7504
7504
 
@@ -7661,7 +7661,7 @@ function findPreset(id) {
7661
7661
  }
7662
7662
  function buildChartStylePresets(chartData) {
7663
7663
  return CHART_STYLE_PRESETS.map(({ id, labelKey, styleId }) => {
7664
- const colors = chunkQM4FGZG4_cjs.getChartStylePalette(styleId);
7664
+ const colors = chunkAIL3BNZS_cjs.getChartStylePalette(styleId);
7665
7665
  return {
7666
7666
  id,
7667
7667
  labelKey,
@@ -7695,7 +7695,7 @@ function applyChartStylePreset(chartData, presetId) {
7695
7695
  if (!preset2) {
7696
7696
  return null;
7697
7697
  }
7698
- const colors = [...chunkQM4FGZG4_cjs.getChartStylePalette(preset2.styleId)];
7698
+ const colors = [...chunkAIL3BNZS_cjs.getChartStylePalette(preset2.styleId)];
7699
7699
  return {
7700
7700
  ...chartData,
7701
7701
  colorPalette: colors,
@@ -7759,7 +7759,7 @@ function applyChartElementToggle(chartData, key, checked) {
7759
7759
  style: { ...chartData.style, ...chartDataLabelsTogglePatch(chartData.style, checked) }
7760
7760
  });
7761
7761
  case "gridlines":
7762
- return patchChartData(chartData, chunkQM4FGZG4_cjs.chartGridlinesPatch(chartData, checked));
7762
+ return patchChartData(chartData, chunkAIL3BNZS_cjs.chartGridlinesPatch(chartData, checked));
7763
7763
  case "axes":
7764
7764
  return patchChartData(chartData, chartAxesVisibilityPatch(chartData, checked));
7765
7765
  case "axisTitles":
@@ -7798,7 +7798,7 @@ function buildElements(chartData) {
7798
7798
  {
7799
7799
  key: "gridlines",
7800
7800
  labelKey: "pptx.chart.showGridlines",
7801
- checked: chunkQM4FGZG4_cjs.chartGridlinesState(chartData)
7801
+ checked: chunkAIL3BNZS_cjs.chartGridlinesState(chartData)
7802
7802
  },
7803
7803
  {
7804
7804
  key: "dataLabels",
@@ -8210,17 +8210,17 @@ function chartEventPathElements(event) {
8210
8210
  }
8211
8211
  function findChartPartElementInEvent(event) {
8212
8212
  for (const el of chartEventPathElements(event)) {
8213
- if (el.getAttribute(chunkWLETAW3T_cjs.CHART_PART_ATTR) !== null) {
8213
+ if (el.getAttribute(chunkCJU4P5FT_cjs.CHART_PART_ATTR) !== null) {
8214
8214
  return el;
8215
8215
  }
8216
8216
  }
8217
8217
  return null;
8218
8218
  }
8219
8219
  function findChartPartInEvent(event) {
8220
- return chunkWLETAW3T_cjs.chartPartFromElement(findChartPartElementInEvent(event));
8220
+ return chunkCJU4P5FT_cjs.chartPartFromElement(findChartPartElementInEvent(event));
8221
8221
  }
8222
8222
  function isChartTitleEvent(event) {
8223
- return findChartPartElementInEvent(event)?.getAttribute(chunkWLETAW3T_cjs.CHART_PART_ATTR) === "title";
8223
+ return findChartPartElementInEvent(event)?.getAttribute(chunkCJU4P5FT_cjs.CHART_PART_ATTR) === "title";
8224
8224
  }
8225
8225
 
8226
8226
  // src/pptx/render/chart-interaction-mark-drag.ts
@@ -8255,14 +8255,14 @@ function advanceChartMarkDrag(state, clientX, clientY, rect3) {
8255
8255
  return null;
8256
8256
  }
8257
8257
  const travelled = Math.hypot(clientX - state.startClientX, clientY - state.startClientY);
8258
- if (!state.moved && travelled < chunkWLETAW3T_cjs.CHART_DRAG_THRESHOLD_PX) {
8258
+ if (!state.moved && travelled < chunkCJU4P5FT_cjs.CHART_DRAG_THRESHOLD_PX) {
8259
8259
  return null;
8260
8260
  }
8261
8261
  if (rect3.width === 0 || rect3.height === 0) {
8262
8262
  return null;
8263
8263
  }
8264
8264
  state.moved = true;
8265
- const pointer = clientPointToViewBox(clientX, clientY, rect3, state.svgWidth, state.svgHeight), value = chunkWLETAW3T_cjs.resolveChartDragValue(state.geometry, pointer), chartData = chunkWLETAW3T_cjs.withChartPointValue(
8265
+ const pointer = clientPointToViewBox(clientX, clientY, rect3, state.svgWidth, state.svgHeight), value = chunkCJU4P5FT_cjs.resolveChartDragValue(state.geometry, pointer), chartData = chunkCJU4P5FT_cjs.withChartPointValue(
8266
8266
  state.baseChartData,
8267
8267
  state.part.seriesIndex,
8268
8268
  state.part.pointIndex,
@@ -11828,7 +11828,7 @@ function getAnimationColorBaseStyle(element, options = {}) {
11828
11828
  }
11829
11829
  const style = {};
11830
11830
  if (options.animatesFill) {
11831
- const fill = chunkQM4FGZG4_cjs.getComputedFillStyle(element, options.parentGroupFill);
11831
+ const fill = chunkAIL3BNZS_cjs.getComputedFillStyle(element, options.parentGroupFill);
11832
11832
  style[ANIMATION_COLOR_BASE_PROPERTIES.fill] = fill?.backgroundColor ?? element.shapeStyle?.fillColor ?? "currentColor";
11833
11833
  }
11834
11834
  if (options.animatesStroke) {
@@ -19887,7 +19887,7 @@ function gradientCssFromFill(fill, colorScheme) {
19887
19887
  position: stop.position
19888
19888
  }))
19889
19889
  };
19890
- return chunkQM4FGZG4_cjs.buildGradientCss(shapeLike);
19890
+ return chunkAIL3BNZS_cjs.buildGradientCss(shapeLike);
19891
19891
  }
19892
19892
  function applyStyleFill(fill, colorScheme, css, fallback) {
19893
19893
  if (fill?.noFill) {
@@ -19913,13 +19913,13 @@ function applyStyleFill(fill, colorScheme, css, fallback) {
19913
19913
  }
19914
19914
  }
19915
19915
  if (fill?.pattern) {
19916
- const fg = chunkQM4FGZG4_cjs.normalizeHexColor(
19916
+ const fg = chunkAIL3BNZS_cjs.normalizeHexColor(
19917
19917
  resolveStyleFillColor(fill.pattern.foreground, colorScheme),
19918
19918
  "#000000"
19919
- ), bg = chunkQM4FGZG4_cjs.normalizeHexColor(
19919
+ ), bg = chunkAIL3BNZS_cjs.normalizeHexColor(
19920
19920
  resolveStyleFillColor(fill.pattern.background, colorScheme),
19921
19921
  "#ffffff"
19922
- ), svg2 = chunkQM4FGZG4_cjs.getPatternSvg(fill.pattern.preset, fg, bg);
19922
+ ), svg2 = chunkAIL3BNZS_cjs.getPatternSvg(fill.pattern.preset, fg, bg);
19923
19923
  clearBackground(css);
19924
19924
  if (svg2) {
19925
19925
  css.backgroundImage = `url("data:image/svg+xml,${encodeURIComponent(svg2)}")`;
@@ -19928,7 +19928,7 @@ function applyStyleFill(fill, colorScheme, css, fallback) {
19928
19928
  return true;
19929
19929
  }
19930
19930
  const resolved = resolveStyleFillColor(fill, colorScheme);
19931
- const color = (resolved && fill?.alpha !== void 0 ? chunkQM4FGZG4_cjs.colorWithOpacity(resolved, fill.alpha / 1e5) : resolved) ?? fallback;
19931
+ const color = (resolved && fill?.alpha !== void 0 ? chunkAIL3BNZS_cjs.colorWithOpacity(resolved, fill.alpha / 1e5) : resolved) ?? fallback;
19932
19932
  if (color) {
19933
19933
  layerSolidColor(css, color);
19934
19934
  return true;
@@ -20169,8 +20169,8 @@ function getMeasureContext() {
20169
20169
  return measureContext2;
20170
20170
  }
20171
20171
  function toCanvasFont2(font) {
20172
- const size = font.fontSizePx && font.fontSizePx > 0 ? font.fontSizePx : chunkQM4FGZG4_cjs.DEFAULT_TEXT_FONT_SIZE;
20173
- const family2 = font.fontFamily || chunkQM4FGZG4_cjs.DEFAULT_FONT_FAMILY;
20172
+ const size = font.fontSizePx && font.fontSizePx > 0 ? font.fontSizePx : chunkAIL3BNZS_cjs.DEFAULT_TEXT_FONT_SIZE;
20173
+ const family2 = font.fontFamily || chunkAIL3BNZS_cjs.DEFAULT_FONT_FAMILY;
20174
20174
  return `${font.italic ? "italic " : ""}${font.bold ? "bold " : ""}${size}px ${family2}`;
20175
20175
  }
20176
20176
  function advancesOf(ctx, canvasFont, chars) {
@@ -20301,7 +20301,7 @@ function resolveTextOutlineDashCss(s, fillColor) {
20301
20301
  if (s.textFillGradient || s.textFillPattern || s.textFillBlipUrl || s.highlightColor) {
20302
20302
  return void 0;
20303
20303
  }
20304
- const strokeColor = chunkQM4FGZG4_cjs.normalizeHexColor(s.textOutlineColor, fillColor ?? "#000000");
20304
+ const strokeColor = chunkAIL3BNZS_cjs.normalizeHexColor(s.textOutlineColor, fillColor ?? "#000000");
20305
20305
  return {
20306
20306
  WebkitTextStroke: `${width}px transparent`,
20307
20307
  WebkitTextFillColor: s.textFillNone ? "transparent" : fillColor ?? "currentColor",
@@ -20670,13 +20670,13 @@ function applyExtraRunProps(style, s, text3, font) {
20670
20670
  style.fontKerning = fontKerning;
20671
20671
  }
20672
20672
  if (s.highlightColor) {
20673
- style.backgroundColor = chunkQM4FGZG4_cjs.normalizeHexColor(s.highlightColor, "transparent");
20673
+ style.backgroundColor = chunkAIL3BNZS_cjs.normalizeHexColor(s.highlightColor, "transparent");
20674
20674
  }
20675
20675
  if (s.underlineColor) {
20676
- style.textDecorationColor = chunkQM4FGZG4_cjs.normalizeHexColor(s.underlineColor);
20676
+ style.textDecorationColor = chunkAIL3BNZS_cjs.normalizeHexColor(s.underlineColor);
20677
20677
  }
20678
20678
  if (s.textOutlineWidth) {
20679
- style.WebkitTextStroke = s.textOutlineColor ? `${s.textOutlineWidth}px ${chunkQM4FGZG4_cjs.normalizeHexColor(s.textOutlineColor, "#000000")}` : `${s.textOutlineWidth}px currentColor`;
20679
+ style.WebkitTextStroke = s.textOutlineColor ? `${s.textOutlineWidth}px ${chunkAIL3BNZS_cjs.normalizeHexColor(s.textOutlineColor, "#000000")}` : `${s.textOutlineWidth}px currentColor`;
20680
20680
  style.paintOrder = "stroke fill";
20681
20681
  }
20682
20682
  if (s.textCaps === "all") {
@@ -20717,7 +20717,7 @@ function segmentStyleToCss(seg, fontScale = 1, context = {}) {
20717
20717
  if (s.color) {
20718
20718
  style.color = s.color;
20719
20719
  } else if (s.hyperlink) {
20720
- style.color = chunkQM4FGZG4_cjs.HYPERLINK_COLOR;
20720
+ style.color = chunkAIL3BNZS_cjs.HYPERLINK_COLOR;
20721
20721
  }
20722
20722
  style.fontWeight = s.bold ? "bold" : "normal";
20723
20723
  style.fontStyle = s.italic ? "italic" : "normal";
@@ -20795,9 +20795,9 @@ function cellPatternFillCss(style) {
20795
20795
  if (style.fillMode !== "pattern" || !style.patternFillPreset) {
20796
20796
  return null;
20797
20797
  }
20798
- const fg = chunkQM4FGZG4_cjs.normalizeHexColor(style.patternFillForeground, "#000000");
20799
- const bg = chunkQM4FGZG4_cjs.normalizeHexColor(style.patternFillBackground, "#ffffff");
20800
- const svgMarkup = chunkQM4FGZG4_cjs.getPatternSvg(style.patternFillPreset, fg, bg);
20798
+ const fg = chunkAIL3BNZS_cjs.normalizeHexColor(style.patternFillForeground, "#000000");
20799
+ const bg = chunkAIL3BNZS_cjs.normalizeHexColor(style.patternFillBackground, "#ffffff");
20800
+ const svgMarkup = chunkAIL3BNZS_cjs.getPatternSvg(style.patternFillPreset, fg, bg);
20801
20801
  if (svgMarkup) {
20802
20802
  const encoded = encodeURIComponent(svgMarkup);
20803
20803
  return {
@@ -21183,7 +21183,7 @@ function tableCellCss(tableData, cell, position, context, base2) {
21183
21183
  );
21184
21184
  const css = { ...base2, ...band, ...cellStyleToCss(cell?.style) };
21185
21185
  if (css.color === void 0) {
21186
- css.color = chunkQM4FGZG4_cjs.DEFAULT_TEXT_COLOR;
21186
+ css.color = chunkAIL3BNZS_cjs.DEFAULT_TEXT_COLOR;
21187
21187
  }
21188
21188
  return { ...TABLE_CELL_TEXT_DEFAULTS, ...css };
21189
21189
  }
@@ -21334,7 +21334,7 @@ var GRADIENT_TYPE_OPTIONS = [
21334
21334
  { value: "linear", i18nKey: "pptx.table.gradientLinear" },
21335
21335
  { value: "radial", i18nKey: "pptx.table.gradientRadial" }
21336
21336
  ];
21337
- var PATTERN_OPTIONS = chunkQM4FGZG4_cjs.OOXML_PATTERN_PRESETS.slice(0, 20);
21337
+ var PATTERN_OPTIONS = chunkAIL3BNZS_cjs.OOXML_PATTERN_PRESETS.slice(0, 20);
21338
21338
 
21339
21339
  // src/pptx/render/table-resize.ts
21340
21340
  var MIN_COLUMN_PROPORTION = 0.03;
@@ -21428,7 +21428,6 @@ var RESIZE_HANDLE_GEOMETRY = {
21428
21428
  };
21429
21429
  var ROTATE_STEM_PX = 24;
21430
21430
  var DEG_TO_RAD = Math.PI / 180;
21431
- var RAD_TO_DEG = 180 / Math.PI;
21432
21431
  function rotationOf(box) {
21433
21432
  return box.rotation ?? 0;
21434
21433
  }
@@ -21486,12 +21485,6 @@ function applyResize(box, handle, dxScreen, dyScreen, zoom, opts = {}) {
21486
21485
  }
21487
21486
  return { x: newX, y: newY, width: newW, height: newH, rotation };
21488
21487
  }
21489
- function computeRotation(center, pointer) {
21490
- const dx = pointer.x - center.x;
21491
- const dy = pointer.y - center.y;
21492
- const deg3 = Math.atan2(dx, -dy) * RAD_TO_DEG;
21493
- return (deg3 % 360 + 360) % 360;
21494
- }
21495
21488
  function snapAngle(angleDeg, step = 15, tolerance = step / 2) {
21496
21489
  const nearest = Math.round(angleDeg / step) * step;
21497
21490
  if (Math.abs(angleDeg - nearest) <= tolerance) {
@@ -21621,25 +21614,6 @@ function getSelectionOutlineColor(fallback) {
21621
21614
  return variable(SELECTION_CONTROL_CSS_VARS.outlineColor, fallback);
21622
21615
  }
21623
21616
 
21624
- // src/pptx/render/rotation-drag.ts
21625
- function createRotationDrag(center, startPointer, startRotation) {
21626
- const bearing = (pointer) => pointer.x === center.x && pointer.y === center.y ? void 0 : computeRotation(center, pointer);
21627
- let startAngle = bearing(startPointer);
21628
- let rotation = startRotation;
21629
- return (pointer) => {
21630
- const angle = bearing(pointer);
21631
- if (angle === void 0) {
21632
- return rotation;
21633
- }
21634
- if (startAngle === void 0) {
21635
- startAngle = angle;
21636
- return rotation;
21637
- }
21638
- rotation = ((startRotation + angle - startAngle) % 360 + 360) % 360;
21639
- return rotation;
21640
- };
21641
- }
21642
-
21643
21617
  // src/pptx/render/rotate-handle-dom.ts
21644
21618
  function rotateHandleHitRect(element) {
21645
21619
  const rects = [element, ...element.querySelectorAll("[data-pptx-handle-hit]")].map(
@@ -21720,71 +21694,6 @@ function rotateHandleParentMatrix(button, ancestors) {
21720
21694
  return matrix.is2D && Number.isFinite(matrix.a * matrix.d - matrix.b * matrix.c) && Math.abs(matrix.a * matrix.d - matrix.b * matrix.c) > 1e-9 ? matrix : null;
21721
21695
  }
21722
21696
 
21723
- // src/pptx/render/rotate-handle-placement.ts
21724
- function resolveRotateHandlePlacement(input) {
21725
- const { preferred, selection, bounds, hitWidth, hitHeight, obstacles } = input;
21726
- if (![
21727
- ...Object.values(preferred),
21728
- ...Object.values(selection),
21729
- ...Object.values(bounds),
21730
- hitWidth,
21731
- hitHeight
21732
- ].every(Number.isFinite) || hitWidth <= 0 || hitHeight <= 0) {
21733
- return null;
21734
- }
21735
- const halfX = hitWidth / 2;
21736
- const halfY = hitHeight / 2;
21737
- const center = {
21738
- x: (selection.left + selection.right) / 2,
21739
- y: (selection.top + selection.bottom) / 2
21740
- };
21741
- const fits = ({ x, y }) => {
21742
- const rect3 = { left: x - halfX, right: x + halfX, top: y - halfY, bottom: y + halfY };
21743
- return rect3.left >= bounds.left + 1 && rect3.right <= bounds.right - 1 && rect3.top >= bounds.top + 1 && rect3.bottom <= bounds.bottom - 1 && // A target over the rotation center has no usable initial bearing.
21744
- !(center.x >= rect3.left && center.x <= rect3.right && center.y >= rect3.top && center.y <= rect3.bottom) && !obstacles.some(
21745
- (other) => rect3.left < other.right + 2 && rect3.right > other.left - 2 && rect3.top < other.bottom + 2 && rect3.bottom > other.top - 2
21746
- );
21747
- };
21748
- if (fits(preferred)) {
21749
- return preferred;
21750
- }
21751
- const padX = Math.max(
21752
- 24,
21753
- halfX + 3 + Math.max(
21754
- 0,
21755
- ...obstacles.flatMap((rect3) => [selection.left - rect3.left, rect3.right - selection.right])
21756
- )
21757
- );
21758
- const padY = Math.max(
21759
- 24,
21760
- halfY + 3 + Math.max(
21761
- 0,
21762
- ...obstacles.flatMap((rect3) => [selection.top - rect3.top, rect3.bottom - selection.bottom])
21763
- )
21764
- );
21765
- const candidates = [
21766
- { x: center.x, y: selection.top - padY },
21767
- { x: selection.right + padX, y: center.y },
21768
- { x: center.x, y: selection.bottom + padY },
21769
- { x: selection.left - padX, y: center.y }
21770
- ];
21771
- const left = Math.max(selection.left, bounds.left) + halfX + 3;
21772
- const right = Math.min(selection.right, bounds.right) - halfX - 3;
21773
- const top = Math.max(selection.top, bounds.top) + halfY + 3;
21774
- const bottom = Math.min(selection.bottom, bounds.bottom) - halfY - 3;
21775
- if (left <= right && top <= bottom) {
21776
- for (const fraction of [0.25, 0.75]) {
21777
- const x = left + (right - left) * fraction;
21778
- const y = top + (bottom - top) * fraction;
21779
- candidates.push({ x, y: top }, { x, y: bottom }, { x: left, y }, { x: right, y });
21780
- }
21781
- }
21782
- return candidates.filter(fits).sort((a, b) => {
21783
- const difference = Math.hypot(a.x - preferred.x, a.y - preferred.y) - Math.hypot(b.x - preferred.x, b.y - preferred.y);
21784
- return Math.abs(difference) < 0.5 ? 0 : difference;
21785
- })[0] ?? null;
21786
- }
21787
-
21788
21697
  // src/pptx/render/rotate-handle-attachment.ts
21789
21698
  function attachRotateHandlePlacement(button, options = {}) {
21790
21699
  const win = button.ownerDocument.defaultView;
@@ -21847,7 +21756,7 @@ function attachRotateHandlePlacement(button, options = {}) {
21847
21756
  observeControl(node);
21848
21757
  return node;
21849
21758
  }).filter((node) => !node.hidden && win.getComputedStyle(node).display !== "none").map(rotateHandleHitRect);
21850
- const placement = resolveRotateHandlePlacement({
21759
+ const placement = geometry.resolveRotateHandlePlacement({
21851
21760
  preferred,
21852
21761
  selection: rect3,
21853
21762
  bounds: rotateHandleClipBounds(button, ancestors),
@@ -22169,10 +22078,10 @@ function imageFitTransformParts(el) {
22169
22078
  return { placement: "", crop: "" };
22170
22079
  }
22171
22080
  return fitTransformsFromInsets({
22172
- cropLeft: chunkQM4FGZG4_cjs.clampCropValue(el.cropLeft),
22173
- cropTop: chunkQM4FGZG4_cjs.clampCropValue(el.cropTop),
22174
- cropRight: chunkQM4FGZG4_cjs.clampCropValue(el.cropRight),
22175
- cropBottom: chunkQM4FGZG4_cjs.clampCropValue(el.cropBottom),
22081
+ cropLeft: chunkAIL3BNZS_cjs.clampCropValue(el.cropLeft),
22082
+ cropTop: chunkAIL3BNZS_cjs.clampCropValue(el.cropTop),
22083
+ cropRight: chunkAIL3BNZS_cjs.clampCropValue(el.cropRight),
22084
+ cropBottom: chunkAIL3BNZS_cjs.clampCropValue(el.cropBottom),
22176
22085
  fillRectLeft: el.fillRectLeft ?? 0,
22177
22086
  fillRectTop: el.fillRectTop ?? 0,
22178
22087
  fillRectRight: el.fillRectRight ?? 0,
@@ -22196,10 +22105,10 @@ function fitTransformsFromInsets(insets) {
22196
22105
  if (hasCrop2) {
22197
22106
  const horizontalScale = cropLeft + cropRight >= 0.99 ? 0.99 / (cropLeft + cropRight) : 1;
22198
22107
  const verticalScale = cropTop + cropBottom >= 0.99 ? 0.99 / (cropTop + cropBottom) : 1;
22199
- cropLeft = chunkQM4FGZG4_cjs.clampCropValue(cropLeft * horizontalScale);
22200
- cropRight = chunkQM4FGZG4_cjs.clampCropValue(cropRight * horizontalScale);
22201
- cropTop = chunkQM4FGZG4_cjs.clampCropValue(cropTop * verticalScale);
22202
- cropBottom = chunkQM4FGZG4_cjs.clampCropValue(cropBottom * verticalScale);
22108
+ cropLeft = chunkAIL3BNZS_cjs.clampCropValue(cropLeft * horizontalScale);
22109
+ cropRight = chunkAIL3BNZS_cjs.clampCropValue(cropRight * horizontalScale);
22110
+ cropTop = chunkAIL3BNZS_cjs.clampCropValue(cropTop * verticalScale);
22111
+ cropBottom = chunkAIL3BNZS_cjs.clampCropValue(cropBottom * verticalScale);
22203
22112
  const remainingWidth = Math.max(0.01, 1 - cropLeft - cropRight);
22204
22113
  const remainingHeight = Math.max(0.01, 1 - cropTop - cropBottom);
22205
22114
  const tx = Math.round(-cropLeft / remainingWidth * 1e4) / 100;
@@ -22314,7 +22223,7 @@ function resolveShadeToTitleBackgroundImage(slide, slideWidthPx, slideHeightPx)
22314
22223
  if (stops.length === 0) {
22315
22224
  return void 0;
22316
22225
  }
22317
- return chunkQM4FGZG4_cjs.buildRectPathGradientImage(stops, void 0, fillToRect);
22226
+ return chunkAIL3BNZS_cjs.buildRectPathGradientImage(stops, void 0, fillToRect);
22318
22227
  }
22319
22228
 
22320
22229
  // src/pptx/render/slide-background.ts
@@ -22336,7 +22245,7 @@ function getSlideBackgroundStyle(slide, slideSize) {
22336
22245
  style["background-repeat"] = "no-repeat";
22337
22246
  }
22338
22247
  } else if (pattern) {
22339
- const svg2 = chunkQM4FGZG4_cjs.getPatternSvg(
22248
+ const svg2 = chunkAIL3BNZS_cjs.getPatternSvg(
22340
22249
  pattern.preset,
22341
22250
  pattern.fgColor ?? solid ?? "#000000",
22342
22251
  pattern.bgColor ?? DEFAULT_SLIDE_BACKGROUND
@@ -23744,12 +23653,12 @@ function buildRunTabLines(text3, ctx, nestedDecoration, measure2 = (t) => measur
23744
23653
  // src/pptx/render/paragraph-run-enrich.ts
23745
23654
  function resolveRunExtrasContext(input) {
23746
23655
  const { seg, runFont, blockFont, blockScriptStyle, tabStops, defaultTabSize, rtl } = input;
23747
- const baseFontFamily = runFont.fontFamily ?? blockFont.fontFamily ?? chunkQM4FGZG4_cjs.DEFAULT_FONT_FAMILY;
23656
+ const baseFontFamily = runFont.fontFamily ?? blockFont.fontFamily ?? chunkAIL3BNZS_cjs.DEFAULT_FONT_FAMILY;
23748
23657
  const scriptFonts = resolveScriptFontSet(seg.style, blockScriptStyle, baseFontFamily);
23749
23658
  const tabContext = tabStops && tabStops.length > 0 ? buildTabContext(
23750
23659
  tabStops,
23751
23660
  defaultTabSize,
23752
- runFont.fontSizePx ?? blockFont.fontSizePx ?? chunkQM4FGZG4_cjs.DEFAULT_TEXT_FONT_SIZE,
23661
+ runFont.fontSizePx ?? blockFont.fontSizePx ?? chunkAIL3BNZS_cjs.DEFAULT_TEXT_FONT_SIZE,
23753
23662
  baseFontFamily,
23754
23663
  Boolean(seg.style?.bold),
23755
23664
  Boolean(seg.style?.italic),
@@ -23781,7 +23690,7 @@ function resolveRunReflection(segStyle, blockFont) {
23781
23690
  if (!segStyle) {
23782
23691
  return void 0;
23783
23692
  }
23784
- const height = typeof segStyle.fontSize === "number" ? segStyle.fontSize : blockFont.fontSizePx ?? chunkQM4FGZG4_cjs.DEFAULT_TEXT_FONT_SIZE;
23693
+ const height = typeof segStyle.fontSize === "number" ? segStyle.fontSize : blockFont.fontSizePx ?? chunkAIL3BNZS_cjs.DEFAULT_TEXT_FONT_SIZE;
23785
23694
  return getTextReflectionWrapperStyle(segStyle, height);
23786
23695
  }
23787
23696
  function applyRunReflection(run, reflection2) {
@@ -23943,7 +23852,7 @@ function buildTextShadowCss(style) {
23943
23852
  const ox = style.textShadowOffsetX ?? 0;
23944
23853
  const oy = style.textShadowOffsetY ?? 0;
23945
23854
  const blur = style.textShadowBlur ?? 4;
23946
- const color = chunkQM4FGZG4_cjs.normalizeHexColor(style.textShadowColor, "#000000");
23855
+ const color = chunkAIL3BNZS_cjs.normalizeHexColor(style.textShadowColor, "#000000");
23947
23856
  const opacity = style.textShadowOpacity ?? 0.5;
23948
23857
  const r = parseInt(color.slice(1, 3), 16);
23949
23858
  const g = parseInt(color.slice(3, 5), 16);
@@ -23956,7 +23865,7 @@ function buildTextShadowCss(style) {
23956
23865
  const dirRad = dir * Math.PI / 180;
23957
23866
  const psOx = Math.round(Math.cos(dirRad) * dist2 * 100) / 100;
23958
23867
  const psOy = Math.round(Math.sin(dirRad) * dist2 * 100) / 100;
23959
- const psColor = chunkQM4FGZG4_cjs.normalizeHexColor(style.textPresetShadowColor, "#000000");
23868
+ const psColor = chunkAIL3BNZS_cjs.normalizeHexColor(style.textPresetShadowColor, "#000000");
23960
23869
  const psOpacity = style.textPresetShadowOpacity ?? 0.5;
23961
23870
  const psR = parseInt(psColor.slice(1, 3), 16);
23962
23871
  const psG = parseInt(psColor.slice(3, 5), 16);
@@ -23973,7 +23882,7 @@ function buildTextInnerShadowCss(style) {
23973
23882
  const ox = style.textInnerShadowOffsetX ?? 0;
23974
23883
  const oy = style.textInnerShadowOffsetY ?? 0;
23975
23884
  const blur = style.textInnerShadowBlur ?? 3;
23976
- const color = chunkQM4FGZG4_cjs.normalizeHexColor(style.textInnerShadowColor, "#000000");
23885
+ const color = chunkAIL3BNZS_cjs.normalizeHexColor(style.textInnerShadowColor, "#000000");
23977
23886
  const opacity = style.textInnerShadowOpacity ?? 0.5;
23978
23887
  const r = parseInt(color.slice(1, 3), 16);
23979
23888
  const g = parseInt(color.slice(3, 5), 16);
@@ -24020,7 +23929,7 @@ function buildTextGlowFilter(style) {
24020
23929
  return void 0;
24021
23930
  }
24022
23931
  const radius = style.textGlowRadius ?? 6;
24023
- const color = chunkQM4FGZG4_cjs.normalizeHexColor(style.textGlowColor, "#ffff00");
23932
+ const color = chunkAIL3BNZS_cjs.normalizeHexColor(style.textGlowColor, "#ffff00");
24024
23933
  const opacity = style.textGlowOpacity ?? 0.6;
24025
23934
  const r = parseInt(color.slice(1, 3), 16);
24026
23935
  const g = parseInt(color.slice(3, 5), 16);
@@ -24048,9 +23957,9 @@ function buildTextFillCss(style) {
24048
23957
  };
24049
23958
  }
24050
23959
  if (style.textFillPattern) {
24051
- const fg = chunkQM4FGZG4_cjs.normalizeHexColor(style.textFillPatternForeground, "#000000");
24052
- const bg = chunkQM4FGZG4_cjs.normalizeHexColor(style.textFillPatternBackground, "#ffffff");
24053
- const svgPattern = chunkQM4FGZG4_cjs.getPatternSvg(style.textFillPattern, fg, bg);
23960
+ const fg = chunkAIL3BNZS_cjs.normalizeHexColor(style.textFillPatternForeground, "#000000");
23961
+ const bg = chunkAIL3BNZS_cjs.normalizeHexColor(style.textFillPatternBackground, "#ffffff");
23962
+ const svgPattern = chunkAIL3BNZS_cjs.getPatternSvg(style.textFillPattern, fg, bg);
24054
23963
  if (svgPattern) {
24055
23964
  const encoded = encodeURIComponent(svgPattern);
24056
23965
  return {
@@ -24195,15 +24104,15 @@ function resolveRunRuby(segment, baseFontSizePx, blockFont, baseColor) {
24195
24104
  return void 0;
24196
24105
  }
24197
24106
  const authoredFamily = segment.rubyStyle?.fontFamily ?? segment.style?.fontFamily;
24198
- const baseSize = Number.isFinite(baseFontSizePx) ? baseFontSizePx : chunkQM4FGZG4_cjs.DEFAULT_TEXT_FONT_SIZE;
24107
+ const baseSize = Number.isFinite(baseFontSizePx) ? baseFontSizePx : chunkAIL3BNZS_cjs.DEFAULT_TEXT_FONT_SIZE;
24199
24108
  const style = {
24200
24109
  fontSize: `${segment.rubyFontSize ?? baseSize * RUBY_SIZE_RATIO}px`,
24201
- fontFamily: authoredFamily ? pptx.getSubstituteFontFamily(authoredFamily) : blockFont.fontFamily ?? chunkQM4FGZG4_cjs.DEFAULT_FONT_FAMILY,
24110
+ fontFamily: authoredFamily ? pptx.getSubstituteFontFamily(authoredFamily) : blockFont.fontFamily ?? chunkAIL3BNZS_cjs.DEFAULT_FONT_FAMILY,
24202
24111
  textAlign: rubyTextAlign(segment.rubyAlignment)
24203
24112
  };
24204
24113
  const color = segment.rubyStyle?.color;
24205
24114
  if (color) {
24206
- style.color = chunkQM4FGZG4_cjs.normalizeHexColor(color, baseColor);
24115
+ style.color = chunkAIL3BNZS_cjs.normalizeHexColor(color, baseColor);
24207
24116
  }
24208
24117
  return { text: text3, style };
24209
24118
  }
@@ -24275,7 +24184,7 @@ function buildParagraphRuns(input) {
24275
24184
  bodyFontSizeRaw,
24276
24185
  fontScale
24277
24186
  );
24278
- const fallbackFontSize = strutFontSize ?? blockFont.fontSizePx ?? chunkQM4FGZG4_cjs.DEFAULT_TEXT_FONT_SIZE;
24187
+ const fallbackFontSize = strutFontSize ?? blockFont.fontSizePx ?? chunkAIL3BNZS_cjs.DEFAULT_TEXT_FONT_SIZE;
24279
24188
  equationStyle.fontSize = `${fallbackFontSize}px`;
24280
24189
  }
24281
24190
  runs.push({
@@ -24312,7 +24221,7 @@ function buildParagraphRuns(input) {
24312
24221
  });
24313
24222
  const ruby = resolveRunRuby(
24314
24223
  seg,
24315
- typeof seg.style?.fontSize === "number" ? seg.style.fontSize : blockFont.fontSizePx ?? chunkQM4FGZG4_cjs.DEFAULT_TEXT_FONT_SIZE,
24224
+ typeof seg.style?.fontSize === "number" ? seg.style.fontSize : blockFont.fontSizePx ?? chunkAIL3BNZS_cjs.DEFAULT_TEXT_FONT_SIZE,
24316
24225
  blockFont,
24317
24226
  typeof style.color === "string" ? style.color : void 0
24318
24227
  );
@@ -24477,8 +24386,8 @@ function buildParagraphs(element, fieldContext, segmentOverrides, options) {
24477
24386
  }
24478
24387
  const fontScale = resolveAutoFitFontScale(element.textStyle);
24479
24388
  const blockFont = {
24480
- fontFamily: element.textStyle?.fontFamily ? pptx.getSubstituteFontFamily(element.textStyle.fontFamily) : chunkQM4FGZG4_cjs.DEFAULT_FONT_FAMILY,
24481
- fontSizePx: (element.textStyle?.fontSize || chunkQM4FGZG4_cjs.DEFAULT_TEXT_FONT_SIZE) * fontScale
24389
+ fontFamily: element.textStyle?.fontFamily ? pptx.getSubstituteFontFamily(element.textStyle.fontFamily) : chunkAIL3BNZS_cjs.DEFAULT_FONT_FAMILY,
24390
+ fontSizePx: (element.textStyle?.fontSize || chunkAIL3BNZS_cjs.DEFAULT_TEXT_FONT_SIZE) * fontScale
24482
24391
  };
24483
24392
  const blockScriptStyle = element.textStyle;
24484
24393
  const tabStops = element.textStyle?.tabStops;
@@ -27431,17 +27340,17 @@ function hasItalicRuns(element) {
27431
27340
  );
27432
27341
  }
27433
27342
  function buildTextBlockStyle(element, options = {}) {
27434
- const fallbackColor = options.fallbackColor ?? chunkQM4FGZG4_cjs.DEFAULT_TEXT_COLOR;
27343
+ const fallbackColor = options.fallbackColor ?? chunkAIL3BNZS_cjs.DEFAULT_TEXT_COLOR;
27435
27344
  if (!pptx.hasTextProperties(element)) {
27436
27345
  return { color: fallbackColor };
27437
27346
  }
27438
27347
  const ts = element.textStyle;
27439
27348
  const italic = hasItalicRuns(element);
27440
27349
  const isRtl = ts?.rtl === true;
27441
- const bodyTop = ts?.bodyInsetTop ?? chunkQM4FGZG4_cjs.DEFAULT_BODY_INSET_TB_PX;
27442
- const bodyBottom = ts?.bodyInsetBottom ?? chunkQM4FGZG4_cjs.DEFAULT_BODY_INSET_TB_PX;
27443
- const bodyLeft = ts?.bodyInsetLeft ?? chunkQM4FGZG4_cjs.DEFAULT_BODY_INSET_LR_PX;
27444
- const bodyRight = ts?.bodyInsetRight ?? chunkQM4FGZG4_cjs.DEFAULT_BODY_INSET_LR_PX;
27350
+ const bodyTop = ts?.bodyInsetTop ?? chunkAIL3BNZS_cjs.DEFAULT_BODY_INSET_TB_PX;
27351
+ const bodyBottom = ts?.bodyInsetBottom ?? chunkAIL3BNZS_cjs.DEFAULT_BODY_INSET_TB_PX;
27352
+ const bodyLeft = ts?.bodyInsetLeft ?? chunkAIL3BNZS_cjs.DEFAULT_BODY_INSET_LR_PX;
27353
+ const bodyRight = ts?.bodyInsetRight ?? chunkAIL3BNZS_cjs.DEFAULT_BODY_INSET_LR_PX;
27445
27354
  const hasParagraphIndents = (element.paragraphIndents?.length ?? 0) > 0;
27446
27355
  const bodyIndent = hasParagraphIndents ? 0 : ts?.paragraphIndent || 0;
27447
27356
  const bodyMarginLeft = hasParagraphIndents ? 0 : ts?.paragraphMarginLeft || 0;
@@ -27470,17 +27379,17 @@ function buildTextBlockStyle(element, options = {}) {
27470
27379
  style.transformOrigin = "center";
27471
27380
  }
27472
27381
  }
27473
- style.color = ts?.hyperlink ? chunkQM4FGZG4_cjs.normalizeHexColor(ts?.color, chunkQM4FGZG4_cjs.HYPERLINK_COLOR) : chunkQM4FGZG4_cjs.normalizeHexColor(ts?.color, fallbackColor);
27382
+ style.color = ts?.hyperlink ? chunkAIL3BNZS_cjs.normalizeHexColor(ts?.color, chunkAIL3BNZS_cjs.HYPERLINK_COLOR) : chunkAIL3BNZS_cjs.normalizeHexColor(ts?.color, fallbackColor);
27474
27383
  if (!hasTextSegments && ts?.highlightColor) {
27475
- style.backgroundColor = chunkQM4FGZG4_cjs.normalizeHexColor(ts.highlightColor, void 0);
27384
+ style.backgroundColor = chunkAIL3BNZS_cjs.normalizeHexColor(ts.highlightColor, void 0);
27476
27385
  }
27477
27386
  style.textAlign = resolveCssTextAlign(ts?.align, isRtl) ?? "left";
27478
27387
  style.direction = toCssVerticalDirection(ts?.textDirection) ?? (isRtl ? "rtl" : bodyLayoutStyle?.direction ?? "ltr");
27479
27388
  if (isRtl) {
27480
27389
  style.unicodeBidi = "plaintext";
27481
27390
  }
27482
- style.fontSize = ts?.fontSize || chunkQM4FGZG4_cjs.DEFAULT_TEXT_FONT_SIZE;
27483
- style.fontFamily = ts?.fontFamily ? pptx.getSubstituteFontFamily(ts.fontFamily, pptx.parsePanoseString(ts.latinFontPanose)) : chunkQM4FGZG4_cjs.DEFAULT_FONT_FAMILY;
27391
+ style.fontSize = ts?.fontSize || chunkAIL3BNZS_cjs.DEFAULT_TEXT_FONT_SIZE;
27392
+ style.fontFamily = ts?.fontFamily ? pptx.getSubstituteFontFamily(ts.fontFamily, pptx.parsePanoseString(ts.latinFontPanose)) : chunkAIL3BNZS_cjs.DEFAULT_FONT_FAMILY;
27484
27393
  style.fontWeight = ts?.bold ? 700 : 400;
27485
27394
  style.fontStyle = ts?.italic ? "italic" : "normal";
27486
27395
  style.textDecorationLine = decorations.length > 0 ? decorations.join(" ") : "none";
@@ -27520,7 +27429,7 @@ function buildTextBlockStyle(element, options = {}) {
27520
27429
  text: element.text ?? "",
27521
27430
  width: element.width,
27522
27431
  height: element.height,
27523
- defaultFontSize: chunkQM4FGZG4_cjs.DEFAULT_TEXT_FONT_SIZE
27432
+ defaultFontSize: chunkAIL3BNZS_cjs.DEFAULT_TEXT_FONT_SIZE
27524
27433
  });
27525
27434
  if (autoFit.fontSize !== void 0) {
27526
27435
  style.fontSize = autoFit.fontSize;
@@ -27528,7 +27437,7 @@ function buildTextBlockStyle(element, options = {}) {
27528
27437
  if (autoFit.lineHeight !== void 0) {
27529
27438
  style.lineHeight = autoFit.lineHeight;
27530
27439
  }
27531
- const fontSizePx = typeof style.fontSize === "number" ? style.fontSize : chunkQM4FGZG4_cjs.DEFAULT_TEXT_FONT_SIZE;
27440
+ const fontSizePx = typeof style.fontSize === "number" ? style.fontSize : chunkAIL3BNZS_cjs.DEFAULT_TEXT_FONT_SIZE;
27532
27441
  const lineHeightPx = lineHeightToPx(fontSizePx, style.lineHeight);
27533
27442
  const contentHeightPx = element.height - style.paddingTop - style.paddingBottom;
27534
27443
  Object.assign(style, resolveVertOverflowEllipsisStyle(ts, contentHeightPx, lineHeightPx));
@@ -30985,9 +30894,9 @@ function normalizeArrow(a) {
30985
30894
  function buildConnectorGeometry(element, zIndex, routing) {
30986
30895
  const ss = pptx.hasShapeProperties(element) ? element.shapeStyle : void 0;
30987
30896
  const strokeWidth = Math.max(0, ss?.strokeWidth ?? 2);
30988
- const strokeColor = ss?.strokeColor ?? chunkQM4FGZG4_cjs.DEFAULT_STROKE_COLOR;
30897
+ const strokeColor = ss?.strokeColor ?? chunkAIL3BNZS_cjs.DEFAULT_STROKE_COLOR;
30989
30898
  const strokeOpacity = ss?.strokeOpacity ?? 1;
30990
- const dashArray = chunkQM4FGZG4_cjs.buildDashArray(ss?.strokeDash, strokeWidth, ss?.customDashSegments);
30899
+ const dashArray = chunkAIL3BNZS_cjs.buildDashArray(ss?.strokeDash, strokeWidth, ss?.customDashSegments);
30991
30900
  const strokeLinecap = svgLineCap(ss?.lineCap);
30992
30901
  const compoundOffsets = getCompoundLineOffsets(ss?.compoundLine, strokeWidth);
30993
30902
  const compoundWidths = getCompoundLineWidths(ss?.compoundLine, strokeWidth);
@@ -37679,7 +37588,7 @@ function drawingShapeMeshOpacity(shape) {
37679
37588
  // src/pptx/render/svg-text-lines.ts
37680
37589
  var LINE_HEIGHT_RATIO = 1.2;
37681
37590
  function centeredSvgTextLines(text3, fontSize, options = {}) {
37682
- const lines = options.maxWidth !== void 0 ? chunkQM4FGZG4_cjs.wrapTextByEstimatedWidth(text3, options.maxWidth, fontSize) : text3.split("\n").filter((line4) => line4.length > 0);
37591
+ const lines = options.maxWidth !== void 0 ? chunkAIL3BNZS_cjs.wrapTextByEstimatedWidth(text3, options.maxWidth, fontSize) : text3.split("\n").filter((line4) => line4.length > 0);
37683
37592
  const centerY = options.centerY ?? 0;
37684
37593
  if (lines.length === 0) {
37685
37594
  return [{ text: "", y: centerY }];
@@ -38476,7 +38385,7 @@ function buildObliqueLabels(layout, input) {
38476
38385
  const { w, h, d } = layout.box;
38477
38386
  const span = layout.range.max - layout.range.min;
38478
38387
  const fontSize = input.fontSize;
38479
- for (const v of chunkQM4FGZG4_cjs.axisTickValues({ ...layout.range, span })) {
38388
+ for (const v of chunkAIL3BNZS_cjs.axisTickValues({ ...layout.range, span })) {
38480
38389
  const p = (v - layout.range.min) * layout.valueScale;
38481
38390
  if (layout.horizontal) {
38482
38391
  const at = screen2(layout, p, 0, 0);
@@ -38599,7 +38508,7 @@ function dataExtent(chartData, grouping, nCat) {
38599
38508
  function valueRange(chartData, grouping, nCat, valueLengthPx) {
38600
38509
  const axis = chartData.axes?.find((a) => a.axisType === "valAx");
38601
38510
  const [lo, hi] = dataExtent(chartData, grouping, nCat);
38602
- const auto = chunkQM4FGZG4_cjs.niceValueAxisBounds(lo, hi, chunkQM4FGZG4_cjs.axisTargetIntervals(valueLengthPx), 0);
38511
+ const auto = chunkAIL3BNZS_cjs.niceValueAxisBounds(lo, hi, chunkAIL3BNZS_cjs.axisTargetIntervals(valueLengthPx), 0);
38603
38512
  const min = typeof axis?.min === "number" ? axis.min : auto.min;
38604
38513
  let max = typeof axis?.max === "number" ? axis.max : auto.max;
38605
38514
  if (max <= min) {
@@ -38629,16 +38538,16 @@ function computeObliqueBarLayout(element, vm) {
38629
38538
  const rows = grouping === "standard" ? nSer : 1;
38630
38539
  const labelFont = vm.axisLabels[0]?.fontSize ?? 16;
38631
38540
  const catLabels = chartData.categories.length > 0 ? chartData.categories : Array.from({ length: nCat }, (_, i) => String(i + 1));
38632
- const widest = (texts) => texts.reduce((m, t) => Math.max(m, chunkQM4FGZG4_cjs.estimateTextWidth(t, labelFont)), 0);
38541
+ const widest = (texts) => texts.reduce((m, t) => Math.max(m, chunkAIL3BNZS_cjs.estimateTextWidth(t, labelFont)), 0);
38633
38542
  const top = vm.title ? TOP_WITH_TITLE : TOP_NO_TITLE;
38634
38543
  const hasBottomLegend = chartData.style?.hasLegend !== false && (chartData.style?.legendPosition ?? "b") === "b";
38635
38544
  const bottom = vm.svgHeight - (hasBottomLegend ? BOTTOM_WITH_LEGEND : BOTTOM_NO_LEGEND);
38636
38545
  const regionH = Math.max(1, bottom - top);
38637
38546
  const provisional = valueRange(chartData, grouping, nCat, regionH);
38638
- const valueTexts = chunkQM4FGZG4_cjs.axisTickValues({
38547
+ const valueTexts = chunkAIL3BNZS_cjs.axisTickValues({
38639
38548
  ...provisional,
38640
38549
  span: provisional.max - provisional.min
38641
- }).map((v) => chunkWLETAW3T_cjs.formatValueLabel(chartData, grouping, v));
38550
+ }).map((v) => chunkCJU4P5FT_cjs.formatValueLabel(chartData, grouping, v));
38642
38551
  const leftBand = (horizontal ? widest(catLabels) : widest(valueTexts)) + (horizontal ? OBLIQUE_CATEGORY_LABEL_GAP : OBLIQUE_VALUE_LABEL_GAP);
38643
38552
  const seriesLabelW = grouping === "standard" && !horizontal ? widest(chartData.series.map((s) => s.name)) : 0;
38644
38553
  const seriesOverhang = (depth2) => seriesLabelW > 0 ? Math.max(0, OBLIQUE_CATEGORY_LABEL_GAP + seriesLabelW - depth2 * shear.x / (2 * rows)) : 0;
@@ -38694,13 +38603,13 @@ function computeObliqueBarLayout(element, vm) {
38694
38603
  gridlines: [],
38695
38604
  labels: []
38696
38605
  };
38697
- layout.bars = chunkWLETAW3T_cjs.buildBars(chartData, vm, layout, { nCat, slots, rows, gapWidth, gapDepth });
38698
- layout.gridlines = chunkWLETAW3T_cjs.buildGridlines(layout);
38606
+ layout.bars = chunkCJU4P5FT_cjs.buildBars(chartData, vm, layout, { nCat, slots, rows, gapWidth, gapDepth });
38607
+ layout.gridlines = chunkCJU4P5FT_cjs.buildGridlines(layout);
38699
38608
  layout.labels = buildObliqueLabels(layout, {
38700
38609
  fontSize: labelFont,
38701
38610
  categories: catLabels,
38702
38611
  seriesNames: chartData.series.map((s) => s.name),
38703
- valueText: (v) => chunkWLETAW3T_cjs.formatValueLabel(chartData, grouping, v)
38612
+ valueText: (v) => chunkCJU4P5FT_cjs.formatValueLabel(chartData, grouping, v)
38704
38613
  });
38705
38614
  return layout;
38706
38615
  }
@@ -38713,7 +38622,7 @@ function buildPerspGridlines(box, range, horizontal) {
38713
38622
  { from: [w, 0, 0], to: [w, 0, d] }
38714
38623
  ];
38715
38624
  const span = range.max - range.min;
38716
- for (const v of chunkQM4FGZG4_cjs.axisTickValues({ ...range, span })) {
38625
+ for (const v of chunkAIL3BNZS_cjs.axisTickValues({ ...range, span })) {
38717
38626
  const t = (v - range.min) / span;
38718
38627
  if (horizontal) {
38719
38628
  const x = t * w;
@@ -38739,11 +38648,11 @@ function buildPerspLabels(layout, input) {
38739
38648
  const span = range.max - range.min;
38740
38649
  const labels = [];
38741
38650
  const fontSize = input.fontSize;
38742
- for (const v of chunkQM4FGZG4_cjs.axisTickValues({ ...range, span })) {
38651
+ for (const v of chunkAIL3BNZS_cjs.axisTickValues({ ...range, span })) {
38743
38652
  const t = (v - range.min) / span;
38744
- const text3 = input.percent ? `${Math.round(v * 100)}%` : chunkQM4FGZG4_cjs.formatAxisValueWithUnits(v, input.valueAxis);
38653
+ const text3 = input.percent ? `${Math.round(v * 100)}%` : chunkAIL3BNZS_cjs.formatAxisValueWithUnits(v, input.valueAxis);
38745
38654
  if (layout.horizontal) {
38746
- const at = chunkWLETAW3T_cjs.perspToScreen(view, [t * w, 0, 0]);
38655
+ const at = chunkCJU4P5FT_cjs.perspToScreen(view, [t * w, 0, 0]);
38747
38656
  labels.push({
38748
38657
  role: "value",
38749
38658
  text: text3,
@@ -38753,7 +38662,7 @@ function buildPerspLabels(layout, input) {
38753
38662
  fontSize
38754
38663
  });
38755
38664
  } else {
38756
- const at = chunkWLETAW3T_cjs.perspToScreen(view, [0, t * h, 0]);
38665
+ const at = chunkCJU4P5FT_cjs.perspToScreen(view, [0, t * h, 0]);
38757
38666
  labels.push({ role: "value", text: text3, x: at.x - VALUE_GAP2, y: at.y, anchor: "end", fontSize });
38758
38667
  }
38759
38668
  }
@@ -38763,7 +38672,7 @@ function buildPerspLabels(layout, input) {
38763
38672
  return;
38764
38673
  }
38765
38674
  if (layout.horizontal) {
38766
- const at2 = chunkWLETAW3T_cjs.perspToScreen(view, [0, pos, 0]);
38675
+ const at2 = chunkCJU4P5FT_cjs.perspToScreen(view, [0, pos, 0]);
38767
38676
  labels.push({
38768
38677
  role: "category",
38769
38678
  text: text3,
@@ -38774,7 +38683,7 @@ function buildPerspLabels(layout, input) {
38774
38683
  });
38775
38684
  return;
38776
38685
  }
38777
- const at = chunkWLETAW3T_cjs.perspToScreen(view, [pos, 0, 0]);
38686
+ const at = chunkCJU4P5FT_cjs.perspToScreen(view, [pos, 0, 0]);
38778
38687
  labels.push({
38779
38688
  role: "category",
38780
38689
  text: text3,
@@ -38787,7 +38696,7 @@ function buildPerspLabels(layout, input) {
38787
38696
  const rows = input.seriesNames.length;
38788
38697
  input.seriesNames.forEach((text3, s) => {
38789
38698
  const z = layout.kind === "surface" ? rows > 1 ? s / (rows - 1) * d : d / 2 : (s + 0.5) / rows * d;
38790
- const at = chunkWLETAW3T_cjs.perspToScreen(view, [w, 0, z]);
38699
+ const at = chunkCJU4P5FT_cjs.perspToScreen(view, [w, 0, z]);
38791
38700
  labels.push({
38792
38701
  role: "series",
38793
38702
  text: text3,
@@ -38893,16 +38802,16 @@ function computePerspChartLayout(element, vm, options = {}) {
38893
38802
  const valueExtent = horizontal ? 1 : baseHeight * heightScale;
38894
38803
  const catExtent = horizontal ? HORIZONTAL_CATEGORY_EXTENT * heightScale : 1;
38895
38804
  const box = horizontal ? { w: valueExtent, h: catExtent, d } : { w: 1, h: valueExtent, d };
38896
- const camera = options.oblique ? chunkWLETAW3T_cjs.perspObliqueCameraFor(box, view3D?.rotX ?? 15, view3D?.rotY ?? 20) : chunkWLETAW3T_cjs.perspCameraFor(box, view3D?.rotX ?? 15, view3D?.rotY ?? 20, view3D?.perspective ?? void 0);
38805
+ const camera = options.oblique ? chunkCJU4P5FT_cjs.perspObliqueCameraFor(box, view3D?.rotX ?? 15, view3D?.rotY ?? 20) : chunkCJU4P5FT_cjs.perspCameraFor(box, view3D?.rotX ?? 15, view3D?.rotY ?? 20, view3D?.perspective ?? void 0);
38897
38806
  const hasLegend = chartData.style?.hasLegend !== false && (chartData.style?.legendPosition ?? "b") === "b";
38898
- const view = chunkWLETAW3T_cjs.fitPerspView(camera, {
38807
+ const view = chunkCJU4P5FT_cjs.fitPerspView(camera, {
38899
38808
  left: RECT_LEFT,
38900
38809
  right: vm.svgWidth - (rows > 1 ? RECT_RIGHT_WITH_SERIES : RECT_RIGHT_NO_SERIES),
38901
38810
  top: vm.title ? RECT_TOP_WITH_TITLE : RECT_TOP_NO_TITLE,
38902
38811
  bottom: vm.svgHeight - (hasLegend ? RECT_BOTTOM_WITH_LEGEND : RECT_BOTTOM_NO_LEGEND)
38903
38812
  });
38904
38813
  const [lo, hi] = dataExtent2(chartData, grouping, nCat);
38905
- const auto = chunkQM4FGZG4_cjs.niceValueAxisBounds(lo, hi, chunkQM4FGZG4_cjs.axisTargetIntervals(view.focal * valueExtent), 0);
38814
+ const auto = chunkAIL3BNZS_cjs.niceValueAxisBounds(lo, hi, chunkAIL3BNZS_cjs.axisTargetIntervals(view.focal * valueExtent), 0);
38906
38815
  const min = typeof valAx?.min === "number" ? valAx.min : auto.min;
38907
38816
  let max = typeof valAx?.max === "number" ? valAx.max : auto.max;
38908
38817
  if (max <= min) {
@@ -38994,7 +38903,7 @@ function buildBarGeometry(element, vm) {
38994
38903
  }
38995
38904
  var PERSP_BOX_TYPES = /* @__PURE__ */ new Set(["line3D", "area3D", "surface", "bar3D"]);
38996
38905
  function buildPieGeometry(element, vm) {
38997
- const layout = chunkWLETAW3T_cjs.computePieChartLayout(element, chunkWLETAW3T_cjs.widenPieViewModel(vm, element));
38906
+ const layout = chunkCJU4P5FT_cjs.computePieChartLayout(element, chunkCJU4P5FT_cjs.widenPieViewModel(vm, element));
38998
38907
  return layout ? { kind: "pie", layout } : null;
38999
38908
  }
39000
38909
  function buildPerspGeometry(element, vm, oblique) {
@@ -39014,7 +38923,7 @@ function buildChart3DSpecForElement(element) {
39014
38923
  if (!chartData || !is3DChartType(chartType)) {
39015
38924
  return null;
39016
38925
  }
39017
- const vm = chunkQM4FGZG4_cjs.buildChartViewModel(element);
38926
+ const vm = chunkAIL3BNZS_cjs.buildChartViewModel(element);
39018
38927
  const projection = resolveChart3DProjection(chartType, chartData.view3D);
39019
38928
  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;
39020
38929
  if (!geometry) {
@@ -46052,28 +45961,25 @@ function addGradientStopPatch(el, color, position) {
46052
45961
  const state = gradientStateOf(el);
46053
45962
  const clampedPos = Math.max(0, Math.min(100, position));
46054
45963
  const newStop = { color, position: clampedPos, opacity: 1 };
46055
- const next = sortStops([...state.stops, newStop]);
45964
+ const next = chart.sortGradientStops([...state.stops, newStop]);
46056
45965
  return gradientStatePatch(el, { ...state, stops: next });
46057
45966
  }
46058
45967
  function removeGradientStopPatch(el, index) {
46059
45968
  const state = gradientStateOf(el);
46060
- if (state.stops.length <= 2) {
46061
- return null;
46062
- }
46063
- const next = state.stops.filter((_, i) => i !== index);
45969
+ const next = chart.removeGradientStop(state.stops, index);
45970
+ if (!next) return null;
46064
45971
  return gradientStatePatch(el, { ...state, stops: next });
46065
45972
  }
46066
45973
  function updateGradientStopPatch(el, index, changes) {
46067
45974
  const state = gradientStateOf(el);
46068
- const stops = state.stops.map((s, i) => i === index ? { ...s, ...changes } : s);
46069
- return gradientStatePatch(el, { ...state, stops: sortStops(stops) });
45975
+ return gradientStatePatch(el, {
45976
+ ...state,
45977
+ stops: chart.updateGradientStop(state.stops, index, changes)
45978
+ });
46070
45979
  }
46071
45980
  function defaultGradientState() {
46072
45981
  return { type: "linear", angle: 90, stops: [{ ...DEFAULT_STOP_A }, { ...DEFAULT_STOP_B }] };
46073
45982
  }
46074
- function sortStops(stops) {
46075
- return stops.slice().sort((a, b) => a.position - b.position);
46076
- }
46077
45983
  function sanitizeStops(raw) {
46078
45984
  const valid = raw.filter(
46079
45985
  (s) => typeof s.color === "string" && s.color.trim().length > 0 && typeof s.position === "number" && Number.isFinite(s.position)
@@ -46084,7 +45990,7 @@ function sanitizeStops(raw) {
46084
45990
  opacity: typeof s.opacity === "number" && Number.isFinite(s.opacity) ? s.opacity : void 0,
46085
45991
  colorRef: s.colorRef
46086
45992
  }));
46087
- return sortStops(mapped);
45993
+ return chart.sortGradientStops(mapped);
46088
45994
  }
46089
45995
  function imageAdjustmentsStateOf(el) {
46090
45996
  const fx = pptx.isImageLikeElement(el) ? el.imageEffects : void 0;
@@ -53115,7 +53021,7 @@ function axisTitle(current, show) {
53115
53021
  return show ? current || AXIS_TITLE : void 0;
53116
53022
  }
53117
53023
  function applyChartQuickLayout(chartData, layout) {
53118
- const withGrid = patchChartData(chartData, chunkQM4FGZG4_cjs.chartGridlinesPatch(chartData, layout.majorGridlines));
53024
+ const withGrid = patchChartData(chartData, chunkAIL3BNZS_cjs.chartGridlinesPatch(chartData, layout.majorGridlines));
53119
53025
  const axes = (withGrid.axes ?? []).map((axis) => {
53120
53026
  if (axis.axisType === "valAx") {
53121
53027
  return {
@@ -53169,7 +53075,7 @@ function matchesLayout(chartData, layout) {
53169
53075
  const legend = style.hasLegend ? style.legendPosition ?? "r" : null;
53170
53076
  const isBar = chartData.chartType === "bar" || chartData.chartType === "bar3D";
53171
53077
  const barMatches = !isBar || (chartData.barGapWidth ?? 150) === layout.gapWidth && (chartData.barOverlap ?? 0) === layout.overlap;
53172
- 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 && chunkQM4FGZG4_cjs.chartGridlinesState(chartData) === layout.majorGridlines && Boolean(valAxis?.minorGridlines) === layout.minorGridlines && !valAxis?.deleted === layout.valueAxis;
53078
+ return barMatches && Boolean(style.hasTitle) === layout.title && legend === layout.legend && Boolean(style.hasDataLabels) === layout.dataLabels && Boolean(chartData.dataTable) === layout.dataTable && Boolean(catAxis?.titleText) === layout.catAxisTitle && Boolean(valAxis?.titleText) === layout.valAxisTitle && chunkAIL3BNZS_cjs.chartGridlinesState(chartData) === layout.majorGridlines && Boolean(valAxis?.minorGridlines) === layout.minorGridlines && !valAxis?.deleted === layout.valueAxis;
53173
53079
  }
53174
53080
  var CHART_QUICK_LAYOUT_GALLERY = {
53175
53081
  build(ctx) {
@@ -58397,7 +58303,7 @@ function createGestureController(deps) {
58397
58303
  startClientX: pointer.clientX,
58398
58304
  startClientY: pointer.clientY,
58399
58305
  startBox: { ...box },
58400
- rotate: kind === "rotate" ? createRotationDrag(boxCenter(box), stagePoint(pointer), box.rotation ?? 0) : void 0,
58306
+ rotate: kind === "rotate" ? geometry.createRotationDrag(boxCenter(box), stagePoint(pointer), box.rotation ?? 0) : void 0,
58401
58307
  handle,
58402
58308
  moved: false,
58403
58309
  last: null
@@ -58618,7 +58524,7 @@ function isSeriesUsingSecondaryAxis(chartData, seriesIndex) {
58618
58524
  if (!series) {
58619
58525
  return false;
58620
58526
  }
58621
- return chunkQM4FGZG4_cjs.isSeriesOnSecondaryAxis(series, chartData.axes);
58527
+ return chunkAIL3BNZS_cjs.isSeriesOnSecondaryAxis(series, chartData.axes);
58622
58528
  }
58623
58529
  function resolveSecondaryAxisId(chartData, useSecondary) {
58624
58530
  const axPos = useSecondary ? "r" : "l";
@@ -59156,11 +59062,11 @@ async function buildForeignObjectSvgBody(element, doc, options) {
59156
59062
  backgroundColor,
59157
59063
  readComputedStyle = (el) => window.getComputedStyle(el)
59158
59064
  } = options;
59159
- await chunkOHE5UXST_cjs.settleThreeViews(element);
59065
+ await chunkYHA6XAB3_cjs.settleThreeViews(element);
59160
59066
  const clone = element.cloneNode(true);
59161
59067
  inlineComputedStylesOnClone(element, clone, readComputedStyle);
59162
- chunkOHE5UXST_cjs.snapshotThreeViewsIntoClone(element, clone);
59163
- chunkOHE5UXST_cjs.prepareExportClone(clone);
59068
+ chunkYHA6XAB3_cjs.snapshotThreeViewsIntoClone(element, clone);
59069
+ chunkYHA6XAB3_cjs.prepareExportClone(clone);
59164
59070
  const [{ allEmbedded: imagesEmbedded }, externalFonts] = await Promise.all([
59165
59071
  embedImagesOnClone(clone),
59166
59072
  collectExternalFontFaceCss(doc, fetchAsDataUrl)
@@ -66074,6 +65980,7 @@ var BUILT_IN = {
66074
65980
  clock: "M3 10a7 7 0 1 0 14 0 7 7 0 1 0-14 0M10 6v4l3 2",
66075
65981
  reset: "M4 10a6 6 0 1 1 1.8 4.2M4 6v4h4",
66076
65982
  plus: "M10 4v12M4 10h12",
65983
+ upload: "M10 13V3M6 7l4-4 4 4M3 12v5h14v-5",
66077
65984
  minus: "M4 10h12",
66078
65985
  search: "M3 8.5a5.5 5.5 0 1 0 11 0 5.5 5.5 0 1 0-11 0M13 13l4 4",
66079
65986
  undo: "M7.5 11.5 3.5 7.5l4-4M3.5 7.5h9a4 4 0 0 1 0 8H10",
@@ -74258,7 +74165,7 @@ function applyChart3DDrag(bridge, detail) {
74258
74165
  return;
74259
74166
  }
74260
74167
  bridge.commitChartData(
74261
- chunkWLETAW3T_cjs.withChartPointValue(bridge.chartData, part.seriesIndex, part.pointIndex, value)
74168
+ chunkCJU4P5FT_cjs.withChartPointValue(bridge.chartData, part.seriesIndex, part.pointIndex, value)
74262
74169
  );
74263
74170
  }
74264
74171
  function detailOf(event) {
@@ -74735,7 +74642,7 @@ function calculateNotesPageLayout(slideWidth, slideHeight) {
74735
74642
  };
74736
74643
  }
74737
74644
  function wrapNotesText(text3, maxWidth, fontSize) {
74738
- return chunkQM4FGZG4_cjs.wrapTextByEstimatedWidth(text3, maxWidth, fontSize, { keepBlankLines: true });
74645
+ return chunkAIL3BNZS_cjs.wrapTextByEstimatedWidth(text3, maxWidth, fontSize, { keepBlankLines: true });
74739
74646
  }
74740
74647
  function calculateContinuationPageMaxLines() {
74741
74648
  const contentHeight = NOTES_PAGE_H - 2 * NOTES_MARGIN;
@@ -76447,6 +76354,10 @@ Object.defineProperty(exports, "computeDistribute", {
76447
76354
  enumerable: true,
76448
76355
  get: function () { return geometry.computeDistribute; }
76449
76356
  });
76357
+ Object.defineProperty(exports, "computeRotation", {
76358
+ enumerable: true,
76359
+ get: function () { return geometry.computeRotation; }
76360
+ });
76450
76361
  Object.defineProperty(exports, "computeSnap", {
76451
76362
  enumerable: true,
76452
76363
  get: function () { return geometry.computeSnap; }
@@ -76455,6 +76366,10 @@ Object.defineProperty(exports, "computeSnapToShape", {
76455
76366
  enumerable: true,
76456
76367
  get: function () { return geometry.computeSnapToShape; }
76457
76368
  });
76369
+ Object.defineProperty(exports, "createRotationDrag", {
76370
+ enumerable: true,
76371
+ get: function () { return geometry.createRotationDrag; }
76372
+ });
76458
76373
  Object.defineProperty(exports, "distributeElements", {
76459
76374
  enumerable: true,
76460
76375
  get: function () { return geometry.distributeElements; }
@@ -78154,7 +78069,6 @@ exports.computeRadialLayout = computeRadialLayout;
78154
78069
  exports.computeReadingOrder = computeReadingOrder;
78155
78070
  exports.computeResizedColumnWidths = computeResizedColumnWidths;
78156
78071
  exports.computeResizedRowHeight = computeResizedRowHeight;
78157
- exports.computeRotation = computeRotation;
78158
78072
  exports.computeScrollDelta = computeScrollDelta;
78159
78073
  exports.computeShadeToTitleFillToRect = computeShadeToTitleFillToRect;
78160
78074
  exports.computeSmartArtElementLayout = computeSmartArtElementLayout;
@@ -78213,7 +78127,6 @@ exports.createPresenterPointer = createPresenterPointer;
78213
78127
  exports.createPresenterShowGuard = createPresenterShowGuard;
78214
78128
  exports.createPresenterTimer = createPresenterTimer;
78215
78129
  exports.createRibbonControlIcon = createRibbonControlIcon;
78216
- exports.createRotationDrag = createRotationDrag;
78217
78130
  exports.createSheetDismissGesture = createSheetDismissGesture;
78218
78131
  exports.createSlideSorterState = createSlideSorterState;
78219
78132
  exports.createSyncGate = createSyncGate;