ooxml-ui 1.6.0 → 1.6.2

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 (38) hide show
  1. package/dist/pptx/{chart-3d-view-scene-SE2Y6QRE.cjs → chart-3d-view-scene-55WDENSO.cjs} +38 -38
  2. package/dist/pptx/{chart-3d-view-scene-OYJ4CDCO.mjs → chart-3d-view-scene-ERX2GRCD.mjs} +2 -2
  3. package/dist/pptx/{chunk-CIVA3MLN.mjs → chunk-AWQRQUPL.mjs} +2 -1
  4. package/dist/pptx/{chunk-QLGH3VCC.cjs → chunk-BLAJIEXA.cjs} +152 -152
  5. package/dist/pptx/{chunk-C5MXTIGE.mjs → chunk-E55NU4BF.mjs} +3 -3
  6. package/dist/pptx/{chunk-7DMJEYQJ.cjs → chunk-G2YUKLRX.cjs} +1 -1
  7. package/dist/pptx/{chunk-IURZJAWP.cjs → chunk-LCIXR7WE.cjs} +55 -0
  8. package/dist/pptx/{chunk-WKLHJEPD.cjs → chunk-RPRC2EG5.cjs} +14 -13
  9. package/dist/pptx/{chunk-STLXPKJJ.mjs → chunk-SVN6OBG4.mjs} +55 -0
  10. package/dist/pptx/{chunk-LHNTMJSK.mjs → chunk-TKATCPOK.mjs} +1 -1
  11. package/dist/pptx/dom/index.cjs +247 -247
  12. package/dist/pptx/dom/index.mjs +6 -6
  13. package/dist/pptx/export/html2canvas-clone.cjs +2 -2
  14. package/dist/pptx/export/html2canvas-clone.mjs +1 -1
  15. package/dist/pptx/index.cjs +3023 -3023
  16. package/dist/pptx/index.mjs +4 -4
  17. package/dist/pptx/render/chart-combo-stock.cjs +3 -3
  18. package/dist/pptx/render/chart-combo-stock.mjs +1 -1
  19. package/dist/pptx/render/chart-gradient-defs.d.ts.map +1 -1
  20. package/dist/pptx/render/chart-overlays.cjs +7 -7
  21. package/dist/pptx/render/chart-overlays.mjs +1 -1
  22. package/dist/pptx/render/chart-surface-treemap.cjs +4 -4
  23. package/dist/pptx/render/chart-surface-treemap.mjs +1 -1
  24. package/dist/pptx/render/chart-view-model-dom-helpers.d.ts.map +1 -1
  25. package/dist/pptx/render/chart-view-model.cjs +44 -44
  26. package/dist/pptx/render/chart-view-model.mjs +1 -1
  27. package/dist/pptx/render/chart-waterfall-map.cjs +6 -6
  28. package/dist/pptx/render/chart-waterfall-map.mjs +1 -1
  29. package/dist/smartart/smartart.d.ts +1 -1
  30. package/dist/teams/app-rail.d.ts +1 -1
  31. package/dist/teams/avatar.d.ts +1 -1
  32. package/dist/teams/call-controls.d.ts +1 -1
  33. package/dist/teams/call-grid.d.ts +1 -1
  34. package/dist/teams/channel-list.d.ts +1 -1
  35. package/dist/teams/chat-composer.d.ts +1 -1
  36. package/dist/teams/chat-list.d.ts +1 -1
  37. package/dist/teams/prejoin.d.ts +1 -1
  38. package/package.json +3 -3
@@ -2,7 +2,7 @@ import { buildLayoutPreviewGeometry } from './chunk-A63ASSCH.mjs';
2
2
  import { remapTextToSegments } from './chunk-GVH4QN7R.mjs';
3
3
  import { ANIMATION_RIBBON_CATEGORIES, MOTION_PATH_FAMILIES, motionPathPresetsByFamily, motionPathPresetLabelKey, motionPathFamilyLabelKey, animationsGated, animationsLabel, motionPathPresetById, DEFAULT_MOTION_PATH_PRESET_ID, canRequestAnimations } from './chunk-BPAA5FSB.mjs';
4
4
  import { applyCaseTransformToSegments } from './chunk-APQ3OOAT.mjs';
5
- import { CHART_PART_ATTR, chartPartFromElement, CHART_DRAG_THRESHOLD_PX, resolveChartDragValue, withChartPointValue, computePieChartLayout, widenPieViewModel, formatValueLabel, buildBars, buildGridlines, perspObliqueCameraFor, perspCameraFor, fitPerspView, perspToScreen } from './chunk-CIVA3MLN.mjs';
5
+ import { CHART_PART_ATTR, chartPartFromElement, CHART_DRAG_THRESHOLD_PX, resolveChartDragValue, withChartPointValue, computePieChartLayout, widenPieViewModel, formatValueLabel, buildBars, buildGridlines, perspObliqueCameraFor, perspCameraFor, fitPerspView, perspToScreen } from './chunk-AWQRQUPL.mjs';
6
6
  import { CAMERA_PRESET_MAP, EMU_PER_PX, getBevelHighlightDirection, MAX_EXTRUSION_LAYERS, getBevelProfileHeightMap, getLightRigLighting, getMaterialLighting, DEFAULT_CUSTOM_REF_PX, isBevelProfileInverted, resolveSmartArt3DStylePath, decorateSmartArt3DMesh, resolveSmartArt3DSceneSetup } from './chunk-RQJOOXRG.mjs';
7
7
  import { buildFontCatalog } from './chunk-QX6XPYVA.mjs';
8
8
  import { isUrlSafe, parsePpactionUrl, safeOpenUrl, isPpactionUrl, resolveHyperlinkHref, clampSlideIndex } from './chunk-KY75GY5O.mjs';
@@ -10,10 +10,10 @@ import { createImageElementFromFile } from './chunk-L55MIOBC.mjs';
10
10
  import { isBulletMarkerSegment, elementBulletKind, paragraphBulletKind, setElementBullets, splitBulletParagraphs, resolveBulletSegments, paragraphsBulletKind, isContentSegment, TEXT_DECORATION_FLAGS } from './chunk-VD7HRMTA.mjs';
11
11
  import { CHARACTER_SPACING_OPTIONS, CHANGE_CASE_OPTIONS, LINE_SPACING_OPTIONS, COMMON_FONT_SIZES } from './chunk-SMSCEGAE.mjs';
12
12
  import { isCurrentLayout } from './chunk-7BHPBO2O.mjs';
13
- import { OOXML_PATTERN_PRESETS, normalizeHexColor, getPatternTile, getSvgStrokeDasharray, normalizeStrokeDashType, colorWithOpacity, DEFAULT_STROKE_COLOR, getCssBorderDashStyle, getComputedFillStyle, parseDrawingPercent, clampUnitInterval, DEFAULT_TEXT_FONT_SIZE, fitPolynomial, computeRSquared, computeLinearRegression, applyParetoConversion, chartGridlinesPatch, HYPERLINK_COLOR, getPatternSvg, clampCropValue, buildRectPathGradientImage, DEFAULT_FONT_FAMILY, DEFAULT_TEXT_COLOR, DEFAULT_BODY_INSET_TB_PX, DEFAULT_BODY_INSET_LR_PX, buildDashArray, wrapTextByEstimatedWidth, buildChartViewModel, isSeriesOnSecondaryAxis, computeGradientCenter, sanitizeGradientStops, computeHistogramBins, orderParetoEntries, cumulativePercentOfTotal, getChartStylePalette, chartGridlinesState, buildRectPathGradientSvg, DEFAULT_BAR_GAP_WIDTH, axisTickValues, niceValueAxisBounds, axisTargetIntervals, buildGradientCss, estimateTextWidth, formatAxisValueWithUnits, tint, shade } from './chunk-STLXPKJJ.mjs';
13
+ import { OOXML_PATTERN_PRESETS, normalizeHexColor, getPatternTile, getSvgStrokeDasharray, normalizeStrokeDashType, colorWithOpacity, DEFAULT_STROKE_COLOR, getCssBorderDashStyle, getComputedFillStyle, parseDrawingPercent, clampUnitInterval, DEFAULT_TEXT_FONT_SIZE, fitPolynomial, computeRSquared, computeLinearRegression, applyParetoConversion, chartGridlinesPatch, HYPERLINK_COLOR, getPatternSvg, clampCropValue, buildRectPathGradientImage, DEFAULT_FONT_FAMILY, DEFAULT_TEXT_COLOR, DEFAULT_BODY_INSET_TB_PX, DEFAULT_BODY_INSET_LR_PX, buildDashArray, wrapTextByEstimatedWidth, buildChartViewModel, isSeriesOnSecondaryAxis, computeGradientCenter, sanitizeGradientStops, computeHistogramBins, orderParetoEntries, cumulativePercentOfTotal, getChartStylePalette, chartGridlinesState, buildRectPathGradientSvg, DEFAULT_BAR_GAP_WIDTH, axisTickValues, niceValueAxisBounds, axisTargetIntervals, buildGradientCss, estimateTextWidth, formatAxisValueWithUnits, tint, shade } from './chunk-SVN6OBG4.mjs';
14
14
  import { tiltChannelsFromVectors, buildInkStrokeView } from './chunk-IB6ZM2E2.mjs';
15
15
  import { hasPressureVariation, resolveInkOpacity } from './chunk-JA7WYSRE.mjs';
16
- import { screenBorder, screenStrokeWidth, settleThreeViews, withAuthoredStrokeWidths, snapshotThreeViewsIntoClone, prepareExportClone } from './chunk-LHNTMJSK.mjs';
16
+ import { screenBorder, screenStrokeWidth, settleThreeViews, withAuthoredStrokeWidths, snapshotThreeViewsIntoClone, prepareExportClone } from './chunk-TKATCPOK.mjs';
17
17
  import { sanitizeMarkupOrEmpty } from './chunk-3ZI57W7O.mjs';
18
18
  import { escapeHtml } from './chunk-IEAO7N4E.mjs';
19
19
  import { upsert, animationFor } from './chunk-7KPDES3X.mjs';
@@ -114,7 +114,7 @@ async function loadChart3DThree() {
114
114
 
115
115
  // src/pptx/three-view/scene-registry.ts
116
116
  var loaders = {
117
- chart: async () => (await import('./chart-3d-view-scene-SE2Y6QRE.cjs')).mountChart3DView,
117
+ chart: async () => (await import('./chart-3d-view-scene-55WDENSO.cjs')).mountChart3DView,
118
118
  smartart: async () => (await import('./view-scene-4ZFUCP6S.cjs')).mountSmartArt3DView
119
119
  };
120
120
  async function loadThreeViewScene(kind) {
@@ -7671,6 +7671,39 @@ function buildFunnelViewModel(element, chartData, categoryLabels) {
7671
7671
  legendAnchor: "middle"
7672
7672
  };
7673
7673
  }
7674
+ function lineSeriesOf(primitive) {
7675
+ if (primitive.kind !== "polyline" && primitive.kind !== "path") return void 0;
7676
+ const { part, stroke } = primitive;
7677
+ return part?.role === "series" && stroke !== void 0 && stroke !== "none" ? part.seriesIndex : void 0;
7678
+ }
7679
+ function lineBounds(primitives) {
7680
+ const xs = [];
7681
+ const ys = [];
7682
+ for (const p of primitives) {
7683
+ const text = p.kind === "polyline" ? p.points : p.kind === "path" ? p.d : "";
7684
+ const nums = text.match(/-?\d*\.?\d+(?:e-?\d+)?/giu)?.map(Number) ?? [];
7685
+ for (let i = 0; i + 1 < nums.length; i += 2) {
7686
+ xs.push(nums[i]);
7687
+ ys.push(nums[i + 1]);
7688
+ }
7689
+ }
7690
+ if (xs.length === 0) return void 0;
7691
+ return {
7692
+ x: Math.min(...xs),
7693
+ y: Math.min(...ys),
7694
+ w: Math.max(...xs) - Math.min(...xs),
7695
+ h: Math.max(...ys) - Math.min(...ys)
7696
+ };
7697
+ }
7698
+ function lineGradientDef(id, gradient, lines) {
7699
+ const box = lineBounds(lines);
7700
+ const def = chart.buildChartGradientDef(id, gradient);
7701
+ if (!box || def.kind !== "linearGradient") return void 0;
7702
+ const at = (fx, fy) => [box.x + fx * box.w, box.y + fy * box.h];
7703
+ const [x1, y1] = at(def.x1, def.y1);
7704
+ const [x2, y2] = at(def.x2, def.y2);
7705
+ return { ...def, gradientUnits: "userSpaceOnUse", x1, y1, x2, y2 };
7706
+ }
7674
7707
  function paintSeries(primitive, seriesFills, chartData) {
7675
7708
  if (primitive.kind !== "rect" && primitive.kind !== "path" || !primitive.part) {
7676
7709
  return primitive;
@@ -7706,6 +7739,28 @@ function withGradientFills(vm, chartData, elementId) {
7706
7739
  seriesFills.set(si, `url(#${idFor(`s${si}`)})`);
7707
7740
  }
7708
7741
  });
7742
+ const lineStrokes = /* @__PURE__ */ new Map();
7743
+ chartData.series.forEach((series, si) => {
7744
+ if (!series.lineGradientFill) return;
7745
+ const def = lineGradientDef(
7746
+ idFor(`line-s${si}`),
7747
+ series.lineGradientFill,
7748
+ next.primitives.filter((p) => lineSeriesOf(p) === si)
7749
+ );
7750
+ if (!def) return;
7751
+ defs.push(def);
7752
+ lineStrokes.set(si, `url(#${def.id})`);
7753
+ });
7754
+ if (lineStrokes.size > 0) {
7755
+ next = {
7756
+ ...next,
7757
+ primitives: next.primitives.map((p) => {
7758
+ const si = lineSeriesOf(p);
7759
+ const url = si === void 0 ? void 0 : lineStrokes.get(si);
7760
+ return url ? { ...p, stroke: url } : p;
7761
+ })
7762
+ };
7763
+ }
7709
7764
  if (seriesFills.size > 0) {
7710
7765
  next = {
7711
7766
  ...next,
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkIURZJAWP_cjs = require('./chunk-IURZJAWP.cjs');
3
+ var chunkLCIXR7WE_cjs = require('./chunk-LCIXR7WE.cjs');
4
4
 
5
5
  // src/pptx/render/chart-legend-layout.ts
6
6
  var LEGEND_ITEM_WIDTH = 80;
@@ -16,11 +16,11 @@ function computeChartLegendLayout(vm) {
16
16
  y,
17
17
  color: entry.color,
18
18
  label: entry.label,
19
- fontSize: textStyle?.fontSize !== void 0 ? chunkIURZJAWP_cjs.chartFontPx(textStyle.fontSize) : DEFAULT_LEGEND_FONT_SIZE,
19
+ fontSize: textStyle?.fontSize !== void 0 ? chunkLCIXR7WE_cjs.chartFontPx(textStyle.fontSize) : DEFAULT_LEGEND_FONT_SIZE,
20
20
  fill: textStyle?.color ?? DEFAULT_LEGEND_TEXT_COLOR,
21
21
  fontWeight: textStyle?.bold ? "bold" : "normal",
22
22
  fontStyle: textStyle?.italic ? "italic" : "normal",
23
- fontFamily: chunkIURZJAWP_cjs.chartTextFontFamily(textStyle),
23
+ fontFamily: chunkLCIXR7WE_cjs.chartTextFontFamily(textStyle),
24
24
  ...entry.lineSwatch ? { lineSwatch: entry.lineSwatch } : {}
25
25
  };
26
26
  });
@@ -35,7 +35,7 @@ function buildRadarDragGeometry(element, chartData, categoryLabels, pointIndex)
35
35
  if (pointIndex < 0 || pointIndex >= catCount) {
36
36
  return null;
37
37
  }
38
- const layout = chunkIURZJAWP_cjs.computePlotLayout(element.width, element.height, chartData, false), cx = layout.plotLeft + layout.plotWidth / 2, cy = layout.plotTop + layout.plotHeight / 2, radius = Math.max(Math.min(layout.plotWidth, layout.plotHeight) / 2 - 4, 1), maxVal = Math.max(1, ...chartData.series.flatMap((s) => s.values.map((v) => Math.abs(v)))), angle = chunkIURZJAWP_cjs.radarAngle(pointIndex, catCount);
38
+ const layout = chunkLCIXR7WE_cjs.computePlotLayout(element.width, element.height, chartData, false), cx = layout.plotLeft + layout.plotWidth / 2, cy = layout.plotTop + layout.plotHeight / 2, radius = Math.max(Math.min(layout.plotWidth, layout.plotHeight) / 2 - 4, 1), maxVal = Math.max(1, ...chartData.series.flatMap((s) => s.values.map((v) => Math.abs(v)))), angle = chunkLCIXR7WE_cjs.radarAngle(pointIndex, catCount);
39
39
  return { cx, cy, radius, maxVal, angle };
40
40
  }
41
41
  function resolveRadarDragValue(geometry, pointerX, pointerY) {
@@ -59,13 +59,13 @@ function buildStackedDragGeometry(element, chartData, seriesIndex, pointIndex) {
59
59
  chartData.categories.length,
60
60
  ...seriesValues.map((values) => values.length),
61
61
  pointIndex + 1
62
- ), plots = chunkIURZJAWP_cjs.computeStackedSeriesPlots(seriesValues, catCount, percent), baseValue = plots[seriesIndex]?.base[pointIndex] ?? 0, otherAbsSum = seriesValues.reduce(
62
+ ), plots = chunkLCIXR7WE_cjs.computeStackedSeriesPlots(seriesValues, catCount, percent), baseValue = plots[seriesIndex]?.base[pointIndex] ?? 0, otherAbsSum = seriesValues.reduce(
63
63
  (sum, values, si) => si === seriesIndex ? sum : sum + Math.abs(values[pointIndex] ?? 0),
64
64
  0
65
- ), layoutOpts = chunkIURZJAWP_cjs.computeLayoutOptions(chartData.axes, chartData.dataTable, chartData.series.length), layout = chunkIURZJAWP_cjs.computePlotLayout(element.width, element.height, chartData, true, layoutOpts), range = chunkIURZJAWP_cjs.computeStackedValueRangeForAxis(
65
+ ), layoutOpts = chunkLCIXR7WE_cjs.computeLayoutOptions(chartData.axes, chartData.dataTable, chartData.series.length), layout = chunkLCIXR7WE_cjs.computePlotLayout(element.width, element.height, chartData, true, layoutOpts), range = chunkLCIXR7WE_cjs.computeStackedValueRangeForAxis(
66
66
  chartData.series,
67
67
  catCount,
68
- chunkIURZJAWP_cjs.primaryValueAxis(chartData.axes),
68
+ chunkLCIXR7WE_cjs.primaryValueAxis(chartData.axes),
69
69
  percent,
70
70
  layout.autoPlotHeight
71
71
  );
@@ -180,7 +180,7 @@ function dragValueForPart(viewY, drag, seriesIndex) {
180
180
  return roundDragValue(valueFromY(viewY, range, drag.plotTop, drag.plotBottom), range);
181
181
  }
182
182
  function dragAnchorViewY(value, drag, seriesIndex) {
183
- return chunkIURZJAWP_cjs.valueToY2(value, rangeForSeries(drag, seriesIndex), drag.plotTop, drag.plotBottom);
183
+ return chunkLCIXR7WE_cjs.valueToY2(value, rangeForSeries(drag, seriesIndex), drag.plotTop, drag.plotBottom);
184
184
  }
185
185
  function withChartPointValue(chartData, seriesIndex, pointIndex, value) {
186
186
  const series = chartData.series[seriesIndex];
@@ -201,7 +201,7 @@ function withChartTitle(chartData, title) {
201
201
  // A multi-run title collapses to one run in its dominant style so this
202
202
  // edit does not leave another, now-stale run's text trailing the new
203
203
  // title; see `collapseChartTitleRunsForEdit`'s doc.
204
- ...chunkIURZJAWP_cjs.collapseChartTitleRunsForEdit(chartData, trimmed),
204
+ ...chunkLCIXR7WE_cjs.collapseChartTitleRunsForEdit(chartData, trimmed),
205
205
  style: { ...chartData.style, hasTitle: trimmed.length > 0 }
206
206
  };
207
207
  }
@@ -247,7 +247,7 @@ function buildPieDragGeometry(element, chartData, pointIndex) {
247
247
  if (!series || pointIndex < 0 || pointIndex >= series.values.length) {
248
248
  return null;
249
249
  }
250
- const isDoughnut = chartData.chartType === "doughnut", { cx, cy } = chunkIURZJAWP_cjs.computePieLayout(element.width, element.height, chartData, isDoughnut), startAngle = -Math.PI / 2 + (chartData.firstSliceAngle ?? 0) * Math.PI / 180;
250
+ const isDoughnut = chartData.chartType === "doughnut", { cx, cy } = chunkLCIXR7WE_cjs.computePieLayout(element.width, element.height, chartData, isDoughnut), startAngle = -Math.PI / 2 + (chartData.firstSliceAngle ?? 0) * Math.PI / 180;
251
251
  return { cx, cy, values: series.values, pointIndex, startAngle };
252
252
  }
253
253
  function resolvePieSliceShareValue(pointerAngle, leadingAngle, values, pointIndex) {
@@ -396,6 +396,7 @@ function renderPatternDef(doc, input) {
396
396
  if (def.kind !== "pattern") {
397
397
  const gradient = def.kind === "linearGradient" ? createSvgEl(doc, "linearGradient", {
398
398
  id: def.id,
399
+ ...def.gradientUnits ? { gradientUnits: def.gradientUnits } : {},
399
400
  x1: def.x1,
400
401
  y1: def.y1,
401
402
  x2: def.x2,
@@ -961,7 +962,7 @@ function buildBarChart3DHoverTooltip(hit, data) {
961
962
  if (!hit) {
962
963
  return void 0;
963
964
  }
964
- return chunkIURZJAWP_cjs.buildMarkTooltip(
965
+ return chunkLCIXR7WE_cjs.buildMarkTooltip(
965
966
  data.seriesNames[hit.seriesIndex],
966
967
  data.categoryLabels[hit.categoryIndex],
967
968
  hit.value,
@@ -974,7 +975,7 @@ function formatValueLabel(chartData, grouping, v) {
974
975
  if (grouping === "percentStacked") {
975
976
  return `${Math.round(v * 100)}%`;
976
977
  }
977
- return chunkIURZJAWP_cjs.formatAxisValueWithUnits(
978
+ return chunkLCIXR7WE_cjs.formatAxisValueWithUnits(
978
979
  v,
979
980
  chartData.axes?.find((a) => a.axisType === "valAx")
980
981
  );
@@ -1058,7 +1059,7 @@ function buildGridlines(layout) {
1058
1059
  const { w, h, d } = layout.box;
1059
1060
  const lines = [];
1060
1061
  const span = layout.range.max - layout.range.min;
1061
- for (const v of chunkIURZJAWP_cjs.axisTickValues({ ...layout.range, span })) {
1062
+ for (const v of chunkLCIXR7WE_cjs.axisTickValues({ ...layout.range, span })) {
1062
1063
  const p = valuePos(layout, v);
1063
1064
  if (layout.horizontal) {
1064
1065
  lines.push({ from: [p, 0, d], to: [p, h, d] }, { from: [p, 0, 0], to: [p, 0, d] });
@@ -7672,6 +7672,39 @@ function buildFunnelViewModel(element, chartData, categoryLabels) {
7672
7672
  legendAnchor: "middle"
7673
7673
  };
7674
7674
  }
7675
+ function lineSeriesOf(primitive) {
7676
+ if (primitive.kind !== "polyline" && primitive.kind !== "path") return void 0;
7677
+ const { part, stroke } = primitive;
7678
+ return part?.role === "series" && stroke !== void 0 && stroke !== "none" ? part.seriesIndex : void 0;
7679
+ }
7680
+ function lineBounds(primitives) {
7681
+ const xs = [];
7682
+ const ys = [];
7683
+ for (const p of primitives) {
7684
+ const text = p.kind === "polyline" ? p.points : p.kind === "path" ? p.d : "";
7685
+ const nums = text.match(/-?\d*\.?\d+(?:e-?\d+)?/giu)?.map(Number) ?? [];
7686
+ for (let i = 0; i + 1 < nums.length; i += 2) {
7687
+ xs.push(nums[i]);
7688
+ ys.push(nums[i + 1]);
7689
+ }
7690
+ }
7691
+ if (xs.length === 0) return void 0;
7692
+ return {
7693
+ x: Math.min(...xs),
7694
+ y: Math.min(...ys),
7695
+ w: Math.max(...xs) - Math.min(...xs),
7696
+ h: Math.max(...ys) - Math.min(...ys)
7697
+ };
7698
+ }
7699
+ function lineGradientDef(id, gradient, lines) {
7700
+ const box = lineBounds(lines);
7701
+ const def = buildChartGradientDef(id, gradient);
7702
+ if (!box || def.kind !== "linearGradient") return void 0;
7703
+ const at = (fx, fy) => [box.x + fx * box.w, box.y + fy * box.h];
7704
+ const [x1, y1] = at(def.x1, def.y1);
7705
+ const [x2, y2] = at(def.x2, def.y2);
7706
+ return { ...def, gradientUnits: "userSpaceOnUse", x1, y1, x2, y2 };
7707
+ }
7675
7708
  function paintSeries(primitive, seriesFills, chartData) {
7676
7709
  if (primitive.kind !== "rect" && primitive.kind !== "path" || !primitive.part) {
7677
7710
  return primitive;
@@ -7707,6 +7740,28 @@ function withGradientFills(vm, chartData, elementId) {
7707
7740
  seriesFills.set(si, `url(#${idFor(`s${si}`)})`);
7708
7741
  }
7709
7742
  });
7743
+ const lineStrokes = /* @__PURE__ */ new Map();
7744
+ chartData.series.forEach((series, si) => {
7745
+ if (!series.lineGradientFill) return;
7746
+ const def = lineGradientDef(
7747
+ idFor(`line-s${si}`),
7748
+ series.lineGradientFill,
7749
+ next.primitives.filter((p) => lineSeriesOf(p) === si)
7750
+ );
7751
+ if (!def) return;
7752
+ defs.push(def);
7753
+ lineStrokes.set(si, `url(#${def.id})`);
7754
+ });
7755
+ if (lineStrokes.size > 0) {
7756
+ next = {
7757
+ ...next,
7758
+ primitives: next.primitives.map((p) => {
7759
+ const si = lineSeriesOf(p);
7760
+ const url = si === void 0 ? void 0 : lineStrokes.get(si);
7761
+ return url ? { ...p, stroke: url } : p;
7762
+ })
7763
+ };
7764
+ }
7710
7765
  if (seriesFills.size > 0) {
7711
7766
  next = {
7712
7767
  ...next,
@@ -112,7 +112,7 @@ async function loadChart3DThree() {
112
112
 
113
113
  // src/pptx/three-view/scene-registry.ts
114
114
  var loaders = {
115
- chart: async () => (await import('./chart-3d-view-scene-OYJ4CDCO.mjs')).mountChart3DView,
115
+ chart: async () => (await import('./chart-3d-view-scene-ERX2GRCD.mjs')).mountChart3DView,
116
116
  smartart: async () => (await import('./view-scene-GHBN7QMR.mjs')).mountSmartArt3DView
117
117
  };
118
118
  async function loadThreeViewScene(kind) {