pptx-viewer-core 1.1.31 → 1.1.33

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.
package/dist/index.mjs CHANGED
@@ -1579,8 +1579,8 @@ var DEFAULT_COLORS = {
1579
1579
  };
1580
1580
  var DEFAULT_MAJOR_FONT = "Calibri Light";
1581
1581
  var DEFAULT_MINOR_FONT = "Calibri";
1582
- function hexToRgb(hex7) {
1583
- return hex7.replace(/^#/, "").toUpperCase();
1582
+ function hexToRgb(hex8) {
1583
+ return hex8.replace(/^#/, "").toUpperCase();
1584
1584
  }
1585
1585
  function isoNow() {
1586
1586
  return (/* @__PURE__ */ new Date()).toISOString().replace(/\.\d+Z$/, "Z");
@@ -4253,8 +4253,8 @@ var PptxColorTransformCodec = class {
4253
4253
  clampUnitInterval(value) {
4254
4254
  return Math.min(1, Math.max(0, value));
4255
4255
  }
4256
- hexToRgb(hex7) {
4257
- const normalized = hex7.replace("#", "");
4256
+ hexToRgb(hex8) {
4257
+ const normalized = hex8.replace("#", "");
4258
4258
  if (!/^[0-9a-fA-F]{6}$/.test(normalized)) {
4259
4259
  return void 0;
4260
4260
  }
@@ -5764,7 +5764,7 @@ var PptxColorStyleCodec = class {
5764
5764
  parseColor: (colorNode, placeholderColor) => this.parseColor(colorNode, placeholderColor),
5765
5765
  extractColorOpacity: (colorNode) => this.extractColorOpacity(colorNode),
5766
5766
  clampUnitInterval: (value) => this.clampUnitInterval(value),
5767
- hexToRgb: (hex7) => this.hexToRgb(hex7),
5767
+ hexToRgb: (hex8) => this.hexToRgb(hex8),
5768
5768
  rgbToHex: (r, g, b) => this.rgbToHex(r, g, b)
5769
5769
  });
5770
5770
  this.shapeEffectXmlCodec = new PptxShapeEffectXmlCodec({
@@ -5787,8 +5787,8 @@ var PptxColorStyleCodec = class {
5787
5787
  clampUnitInterval(value) {
5788
5788
  return this.colorTransformCodec.clampUnitInterval(value);
5789
5789
  }
5790
- hexToRgb(hex7) {
5791
- return this.colorTransformCodec.hexToRgb(hex7);
5790
+ hexToRgb(hex8) {
5791
+ return this.colorTransformCodec.hexToRgb(hex8);
5792
5792
  }
5793
5793
  rgbToHex(r, g, b) {
5794
5794
  return this.colorTransformCodec.rgbToHex(r, g, b);
@@ -5959,9 +5959,9 @@ function normalizeHex(value) {
5959
5959
  if (raw.length === 0) {
5960
5960
  return "";
5961
5961
  }
5962
- const hex7 = raw.replace(/^#/, "");
5963
- if (/^[0-9a-fA-F]{6}$/.test(hex7)) {
5964
- return hex7.toUpperCase();
5962
+ const hex8 = raw.replace(/^#/, "");
5963
+ if (/^[0-9a-fA-F]{6}$/.test(hex8)) {
5964
+ return hex8.toUpperCase();
5965
5965
  }
5966
5966
  return raw.toLowerCase();
5967
5967
  }
@@ -5971,8 +5971,8 @@ function colorsEqual(left, right) {
5971
5971
  }
5972
5972
  return normalizeHex(left) === normalizeHex(right);
5973
5973
  }
5974
- function buildSrgbColorChoice(hex7, opacity) {
5975
- const normalized = String(hex7 || "").replace(/^#/, "");
5974
+ function buildSrgbColorChoice(hex8, opacity) {
5975
+ const normalized = String(hex8 || "").replace(/^#/, "");
5976
5976
  const srgb = { "@_val": normalized };
5977
5977
  if (typeof opacity === "number" && Number.isFinite(opacity) && opacity >= 0 && opacity < 1) {
5978
5978
  const alphaPct = Math.round(Math.max(0, Math.min(1, opacity)) * 1e5);
@@ -9484,9 +9484,9 @@ function decodeKeyframeValue(valNode) {
9484
9484
  if (strVal && strVal["@_val"] !== void 0) {
9485
9485
  return { value: String(strVal["@_val"]), valueType: "str" };
9486
9486
  }
9487
- const boolVal2 = valNode["p:boolVal"];
9488
- if (boolVal2 && boolVal2["@_val"] !== void 0) {
9489
- const raw = boolVal2["@_val"];
9487
+ const boolVal3 = valNode["p:boolVal"];
9488
+ if (boolVal3 && boolVal3["@_val"] !== void 0) {
9489
+ const raw = boolVal3["@_val"];
9490
9490
  const value = raw === "1" || raw === "true";
9491
9491
  return { value, valueType: "bool" };
9492
9492
  }
@@ -12005,7 +12005,11 @@ var PptxSaveConstantsFactory = class {
12005
12005
  slideAudioRelationshipType: "http://purl.oclc.org/ooxml/officeDocument/relationships/audio",
12006
12006
  slideCommentRelationshipType: "http://purl.oclc.org/ooxml/officeDocument/relationships/comments",
12007
12007
  slideNotesRelationshipType: "http://purl.oclc.org/ooxml/officeDocument/relationships/notesSlide",
12008
- relationshipsNamespace: "http://purl.oclc.org/ooxml/package/relationships",
12008
+ // The OPC relationships namespace (the xmlns of .rels parts) is
12009
+ // conformance-independent: real Strict packages keep the canonical
12010
+ // schemas.openxmlformats.org form. Only the relationship *type*
12011
+ // URIs above switch to Strict. See strict-namespace-map.ts.
12012
+ relationshipsNamespace: "http://schemas.openxmlformats.org/package/2006/relationships",
12009
12013
  // Content types are NOT namespace-dependent; they stay the same
12010
12014
  // in both Strict and Transitional conformance.
12011
12015
  slideContentType: "application/vnd.openxmlformats-officedocument.presentationml.slide+xml",
@@ -12728,13 +12732,13 @@ function generateFontGuid() {
12728
12732
  bytes[i] = Math.floor(Math.random() * 256);
12729
12733
  }
12730
12734
  }
12731
- const hex7 = Array.from(bytes).map((b) => b.toString(16).padStart(2, "0").toUpperCase()).join("");
12735
+ const hex8 = Array.from(bytes).map((b) => b.toString(16).padStart(2, "0").toUpperCase()).join("");
12732
12736
  return [
12733
- hex7.substring(0, 8),
12734
- hex7.substring(8, 12),
12735
- hex7.substring(12, 16),
12736
- hex7.substring(16, 20),
12737
- hex7.substring(20, 32)
12737
+ hex8.substring(0, 8),
12738
+ hex8.substring(8, 12),
12739
+ hex8.substring(12, 16),
12740
+ hex8.substring(16, 20),
12741
+ hex8.substring(20, 32)
12738
12742
  ].join("-");
12739
12743
  }
12740
12744
  function detectFontFormat(data) {
@@ -13055,7 +13059,8 @@ function parseSeriesDataPoints(seriesNode, xmlLookup, colorParser) {
13055
13059
  }).filter((dp) => dp !== void 0);
13056
13060
  }
13057
13061
  function parseSeriesDataLabels(seriesNode, xmlLookup) {
13058
- const dLblNodes = xmlLookup.getChildrenArrayByLocalName(seriesNode, "dLbl");
13062
+ const dLblsNode = xmlLookup.getChildByLocalName(seriesNode, "dLbls");
13063
+ const dLblNodes = dLblsNode ? xmlLookup.getChildrenArrayByLocalName(dLblsNode, "dLbl") : xmlLookup.getChildrenArrayByLocalName(seriesNode, "dLbl");
13059
13064
  if (dLblNodes.length === 0) {
13060
13065
  return [];
13061
13066
  }
@@ -13065,6 +13070,10 @@ function parseSeriesDataLabels(seriesNode, xmlLookup) {
13065
13070
  if (idx === void 0) {
13066
13071
  return void 0;
13067
13072
  }
13073
+ const deleteNode = xmlLookup.getChildByLocalName(node, "delete");
13074
+ if (deleteNode?.["@_val"] === "1" || deleteNode?.["@_val"] === "true") {
13075
+ return { idx };
13076
+ }
13068
13077
  const result = { idx };
13069
13078
  const boolFields = [
13070
13079
  ["showVal", "showVal"],
@@ -13412,6 +13421,29 @@ function collectAxisTextValues(node, results) {
13412
13421
  }
13413
13422
  }
13414
13423
 
13424
+ // src/core/utils/chart-container-type-map.ts
13425
+ var CONTAINER_LOCAL_NAME_TO_TYPE = {
13426
+ barChart: "bar",
13427
+ bar3DChart: "bar3D",
13428
+ lineChart: "line",
13429
+ line3DChart: "line3D",
13430
+ pieChart: "pie",
13431
+ pie3DChart: "pie3D",
13432
+ ofPieChart: "ofPie",
13433
+ doughnutChart: "doughnut",
13434
+ areaChart: "area",
13435
+ area3DChart: "area3D",
13436
+ scatterChart: "scatter",
13437
+ bubbleChart: "bubble",
13438
+ radarChart: "radar",
13439
+ stockChart: "stock",
13440
+ surfaceChart: "surface",
13441
+ surface3DChart: "surface"
13442
+ };
13443
+ function chartContainerLocalNameToType(localName) {
13444
+ return CONTAINER_LOCAL_NAME_TO_TYPE[localName];
13445
+ }
13446
+
13415
13447
  // src/core/utils/chart-cx-parser.ts
13416
13448
  function extractCxSeriesColor(ser, xmlLookup) {
13417
13449
  const spPr = xmlLookup.getChildByLocalName(ser, "spPr");
@@ -15167,10 +15199,10 @@ function applyBackgroundColorToCSld(cSld, backgroundColor) {
15167
15199
  delete cSld["p:bg"];
15168
15200
  return;
15169
15201
  }
15170
- const hex7 = backgroundColor.replace(/^#/, "").toUpperCase();
15202
+ const hex8 = backgroundColor.replace(/^#/, "").toUpperCase();
15171
15203
  cSld["p:bg"] = {
15172
15204
  "p:bgPr": {
15173
- "a:solidFill": { "a:srgbClr": { "@_val": hex7 } },
15205
+ "a:solidFill": { "a:srgbClr": { "@_val": hex8 } },
15174
15206
  "a:effectLst": {}
15175
15207
  }
15176
15208
  };
@@ -15793,8 +15825,8 @@ function accentColor(index, themeColorMap) {
15793
15825
  }
15794
15826
  return DEFAULT_ACCENT_COLORS[index % DEFAULT_ACCENT_COLORS.length];
15795
15827
  }
15796
- function lighten(hex7, amount) {
15797
- const parsed = hex7.replace("#", "");
15828
+ function lighten(hex8, amount) {
15829
+ const parsed = hex8.replace("#", "");
15798
15830
  const r = parseInt(parsed.substring(0, 2), 16);
15799
15831
  const g = parseInt(parsed.substring(2, 4), 16);
15800
15832
  const b = parseInt(parsed.substring(4, 6), 16);
@@ -20177,26 +20209,27 @@ var NAMESPACE_PAIRS = [
20177
20209
  "http://purl.oclc.org/ooxml/officeDocument/docPropsVTypes",
20178
20210
  "http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes"
20179
20211
  ],
20180
- // -- Package-level relationships --
20212
+ // -- OfficeDocument document relationship --
20213
+ // (Other OPC-defined relationship types - package/relationships,
20214
+ // core-properties, digital-signature - are conformance-independent and
20215
+ // intentionally omitted; see the module header.)
20181
20216
  [
20182
20217
  "http://purl.oclc.org/ooxml/officeDocument/relationships/officeDocument",
20183
20218
  "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument"
20184
20219
  ],
20220
+ // -- Schema Library --
20185
20221
  [
20186
- "http://purl.oclc.org/ooxml/package/relationships",
20187
- "http://schemas.openxmlformats.org/package/2006/relationships"
20222
+ "http://purl.oclc.org/ooxml/schemaLibrary/main",
20223
+ "http://schemas.openxmlformats.org/schemaLibrary/2006/main"
20188
20224
  ],
20225
+ // -- Content-type descriptions (note the distinct transitional host) --
20189
20226
  [
20190
- "http://purl.oclc.org/ooxml/package/relationships/metadata/core-properties",
20191
- "http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties"
20227
+ "http://purl.oclc.org/ooxml/descriptions/base",
20228
+ "http://descriptions.openxmlformats.org/description/base"
20192
20229
  ],
20193
20230
  [
20194
- "http://purl.oclc.org/ooxml/package/relationships/digital-signature/origin",
20195
- "http://schemas.openxmlformats.org/package/2006/relationships/digital-signature/origin"
20196
- ],
20197
- [
20198
- "http://purl.oclc.org/ooxml/package/relationships/digital-signature/signature",
20199
- "http://schemas.openxmlformats.org/package/2006/relationships/digital-signature/signature"
20231
+ "http://purl.oclc.org/ooxml/descriptions/full",
20232
+ "http://descriptions.openxmlformats.org/description/full"
20200
20233
  ],
20201
20234
  // -- SpreadsheetML (for embedded charts / workbooks) --
20202
20235
  [
@@ -20207,11 +20240,6 @@ var NAMESPACE_PAIRS = [
20207
20240
  [
20208
20241
  "http://purl.oclc.org/ooxml/wordprocessingml/main",
20209
20242
  "http://schemas.openxmlformats.org/wordprocessingml/2006/main"
20210
- ],
20211
- // -- Markup Compatibility --
20212
- [
20213
- "http://purl.oclc.org/ooxml/markup-compatibility/2006",
20214
- "http://schemas.openxmlformats.org/markup-compatibility/2006"
20215
20243
  ]
20216
20244
  ];
20217
20245
  var STRICT_TO_TRANSITIONAL_NS = new Map(NAMESPACE_PAIRS);
@@ -20225,7 +20253,8 @@ var ALGORITHMIC_FAMILIES = /* @__PURE__ */ new Set([
20225
20253
  "drawingml",
20226
20254
  "spreadsheetml",
20227
20255
  "wordprocessingml",
20228
- "officeDocument"
20256
+ "officeDocument",
20257
+ "schemaLibrary"
20229
20258
  ]);
20230
20259
  function deriveTransitionalUri(uri) {
20231
20260
  if (!uri.startsWith(STRICT_BASE)) {
@@ -21412,11 +21441,11 @@ async function repairPptx(buffer) {
21412
21441
  }
21413
21442
 
21414
21443
  // src/core/utils/theme-switching.ts
21415
- function normalizeHex2(hex7) {
21416
- if (!hex7) {
21444
+ function normalizeHex2(hex8) {
21445
+ if (!hex8) {
21417
21446
  return "";
21418
21447
  }
21419
- return hex7.replace(/^#/, "").toUpperCase().slice(0, 6);
21448
+ return hex8.replace(/^#/, "").toUpperCase().slice(0, 6);
21420
21449
  }
21421
21450
  function buildColorRemapTable(oldColorMap, newColorMap) {
21422
21451
  const remap = /* @__PURE__ */ new Map();
@@ -21610,8 +21639,8 @@ function applyThemeToData(data, newColorScheme, newFontScheme, themeName) {
21610
21639
  }
21611
21640
 
21612
21641
  // src/core/utils/accessibility-checker.ts
21613
- function parseHexColor(hex7) {
21614
- const cleaned = hex7.replace(/^#/, "");
21642
+ function parseHexColor(hex8) {
21643
+ const cleaned = hex8.replace(/^#/, "");
21615
21644
  if (!/^[\da-fA-F]+$/.test(cleaned)) {
21616
21645
  return null;
21617
21646
  }
@@ -24911,6 +24940,37 @@ function ensureArray6(v) {
24911
24940
  }
24912
24941
  return Array.isArray(v) ? v : [v];
24913
24942
  }
24943
+ function consolidateComboContainersInXml(plotArea, getLocalName) {
24944
+ const containerKeys = Object.keys(plotArea).filter((k) => getLocalName(k).endsWith("Chart"));
24945
+ if (containerKeys.length === 0) {
24946
+ return void 0;
24947
+ }
24948
+ const primaryKey = containerKeys[0];
24949
+ if (containerKeys.length === 1) {
24950
+ return primaryKey;
24951
+ }
24952
+ const primary = plotArea[primaryKey];
24953
+ if (!primary) {
24954
+ return primaryKey;
24955
+ }
24956
+ const serKey = findKey4(primary, "ser", getLocalName) ?? "c:ser";
24957
+ const allSeries = [];
24958
+ for (const key of containerKeys) {
24959
+ const container = plotArea[key];
24960
+ if (!container) {
24961
+ continue;
24962
+ }
24963
+ const containerSerKey = findKey4(container, "ser", getLocalName);
24964
+ if (containerSerKey) {
24965
+ allSeries.push(...ensureArray6(container[containerSerKey]));
24966
+ }
24967
+ if (key !== primaryKey) {
24968
+ delete plotArea[key];
24969
+ }
24970
+ }
24971
+ primary[serKey] = allSeries.length === 1 ? allSeries[0] : allSeries;
24972
+ return primaryKey;
24973
+ }
24914
24974
  function effectiveContainers(series, chartLevelType) {
24915
24975
  return series.map((s) => {
24916
24976
  const t = s.seriesChartType ?? chartLevelType;
@@ -25362,6 +25422,146 @@ function applySeriesMarkerToXml(seriesNode, marker, getLocalName) {
25362
25422
  insertOrdered2(seriesNode, "c:marker", built, getLocalName);
25363
25423
  }
25364
25424
 
25425
+ // src/core/utils/chart-series-datalabel-serializer.ts
25426
+ function findKey9(obj, local, getLocalName) {
25427
+ return Object.keys(obj).find((k) => getLocalName(k) === local);
25428
+ }
25429
+ function boolVal2(on) {
25430
+ return { "@_val": on ? "1" : "0" };
25431
+ }
25432
+ var AFTER_DLBLS = /* @__PURE__ */ new Set(["cat", "val", "xVal", "yVal", "bubbleSize", "smooth", "extLst"]);
25433
+ var DLBLS_GROUP_ORDER = [
25434
+ "numFmt",
25435
+ "spPr",
25436
+ "txPr",
25437
+ "dLblPos",
25438
+ "showLegendKey",
25439
+ "showVal",
25440
+ "showCatName",
25441
+ "showSerName",
25442
+ "showPercent",
25443
+ "showBubbleSize",
25444
+ "separator",
25445
+ "showLeaderLines",
25446
+ "leaderLines"
25447
+ ];
25448
+ function buildDLbl(existing, label, getLocalName) {
25449
+ const node = {};
25450
+ node["c:idx"] = { "@_val": String(label.idx) };
25451
+ const hasShow = label.showVal !== void 0 || label.showCatName !== void 0 || label.showSerName !== void 0 || label.showPercent !== void 0 || label.showLegendKey !== void 0 || label.showBubbleSize !== void 0;
25452
+ const hasContent = hasShow || label.position !== void 0 || label.text !== void 0;
25453
+ if (!hasContent) {
25454
+ node["c:delete"] = { "@_val": "1" };
25455
+ return node;
25456
+ }
25457
+ if (existing) {
25458
+ const layoutKey = findKey9(existing, "layout", getLocalName);
25459
+ if (layoutKey) {
25460
+ node[layoutKey] = existing[layoutKey];
25461
+ }
25462
+ }
25463
+ if (label.text !== void 0) {
25464
+ node["c:tx"] = {
25465
+ "c:rich": {
25466
+ "a:bodyPr": {},
25467
+ "a:lstStyle": {},
25468
+ "a:p": { "a:r": { "a:t": label.text } }
25469
+ }
25470
+ };
25471
+ } else if (existing) {
25472
+ const txKey = findKey9(existing, "tx", getLocalName);
25473
+ if (txKey) {
25474
+ node[txKey] = existing[txKey];
25475
+ }
25476
+ }
25477
+ if (existing) {
25478
+ for (const local of ["numFmt", "spPr", "txPr"]) {
25479
+ const k = findKey9(existing, local, getLocalName);
25480
+ if (k) {
25481
+ node[k] = existing[k];
25482
+ }
25483
+ }
25484
+ }
25485
+ if (label.position !== void 0) {
25486
+ node["c:dLblPos"] = { "@_val": label.position };
25487
+ }
25488
+ if (label.showLegendKey !== void 0) {
25489
+ node["c:showLegendKey"] = boolVal2(label.showLegendKey);
25490
+ }
25491
+ if (label.showVal !== void 0) {
25492
+ node["c:showVal"] = boolVal2(label.showVal);
25493
+ }
25494
+ if (label.showCatName !== void 0) {
25495
+ node["c:showCatName"] = boolVal2(label.showCatName);
25496
+ }
25497
+ if (label.showSerName !== void 0) {
25498
+ node["c:showSerName"] = boolVal2(label.showSerName);
25499
+ }
25500
+ if (label.showPercent !== void 0) {
25501
+ node["c:showPercent"] = boolVal2(label.showPercent);
25502
+ }
25503
+ if (label.showBubbleSize !== void 0) {
25504
+ node["c:showBubbleSize"] = boolVal2(label.showBubbleSize);
25505
+ }
25506
+ return node;
25507
+ }
25508
+ function applySeriesDataLabelsToXml(seriesNode, dataLabels, getLocalName) {
25509
+ const dLblsKey = findKey9(seriesNode, "dLbls", getLocalName);
25510
+ const labels = dataLabels ?? [];
25511
+ const existingByIdx = /* @__PURE__ */ new Map();
25512
+ let groupChildren = [];
25513
+ if (dLblsKey) {
25514
+ const dLbls = seriesNode[dLblsKey];
25515
+ const dLblKey = findKey9(dLbls, "dLbl", getLocalName);
25516
+ if (dLblKey) {
25517
+ const nodes = Array.isArray(dLbls[dLblKey]) ? dLbls[dLblKey] : [dLbls[dLblKey]];
25518
+ for (const node of nodes) {
25519
+ const idxKey = findKey9(node, "idx", getLocalName);
25520
+ const idxNode = idxKey ? node[idxKey] : void 0;
25521
+ const idx = idxNode ? Number.parseInt(String(idxNode["@_val"]), 10) : NaN;
25522
+ if (Number.isFinite(idx)) {
25523
+ existingByIdx.set(idx, node);
25524
+ }
25525
+ }
25526
+ }
25527
+ groupChildren = Object.keys(dLbls).filter((k) => getLocalName(k) !== "dLbl").map((k) => [k, dLbls[k]]);
25528
+ }
25529
+ if (labels.length === 0 && groupChildren.length === 0) {
25530
+ if (dLblsKey) {
25531
+ delete seriesNode[dLblsKey];
25532
+ }
25533
+ return;
25534
+ }
25535
+ const built = [...labels].sort((a, b) => a.idx - b.idx).map((label) => buildDLbl(existingByIdx.get(label.idx), label, getLocalName));
25536
+ const newDLbls = {};
25537
+ if (built.length > 0) {
25538
+ newDLbls["c:dLbl"] = built.length === 1 ? built[0] : built;
25539
+ }
25540
+ const ordered = [...groupChildren].sort((a, b) => {
25541
+ const ai = DLBLS_GROUP_ORDER.indexOf(getLocalName(a[0]));
25542
+ const bi = DLBLS_GROUP_ORDER.indexOf(getLocalName(b[0]));
25543
+ return (ai === -1 ? DLBLS_GROUP_ORDER.length : ai) - (bi === -1 ? DLBLS_GROUP_ORDER.length : bi);
25544
+ });
25545
+ for (const [k, v] of ordered) {
25546
+ newDLbls[k] = v;
25547
+ }
25548
+ if (dLblsKey) {
25549
+ seriesNode[dLblsKey] = newDLbls;
25550
+ return;
25551
+ }
25552
+ const keys = Object.keys(seriesNode);
25553
+ const beforeIdx = keys.findIndex((k) => AFTER_DLBLS.has(getLocalName(k)));
25554
+ const entries = keys.map((k) => [k, seriesNode[k]]);
25555
+ const at = beforeIdx === -1 ? entries.length : beforeIdx;
25556
+ entries.splice(at, 0, ["c:dLbls", newDLbls]);
25557
+ for (const k of keys) {
25558
+ delete seriesNode[k];
25559
+ }
25560
+ for (const [k, v] of entries) {
25561
+ seriesNode[k] = v;
25562
+ }
25563
+ }
25564
+
25365
25565
  // src/core/utils/chart-trendline-serializer.ts
25366
25566
  var TYPE_TO_OOXML = {
25367
25567
  linear: "linear",
@@ -25371,7 +25571,7 @@ var TYPE_TO_OOXML = {
25371
25571
  power: "power",
25372
25572
  movingAvg: "movingAvg"
25373
25573
  };
25374
- function findKey9(obj, local, getLocalName) {
25574
+ function findKey10(obj, local, getLocalName) {
25375
25575
  return Object.keys(obj).find((k) => getLocalName(k) === local);
25376
25576
  }
25377
25577
  function ensureArray9(v) {
@@ -25388,10 +25588,10 @@ function buildSpPr(existing, color, getLocalName) {
25388
25588
  return existing;
25389
25589
  }
25390
25590
  const spPr = existing ? { ...existing } : {};
25391
- const lnKey = findKey9(spPr, "ln", getLocalName) ?? "a:ln";
25591
+ const lnKey = findKey10(spPr, "ln", getLocalName) ?? "a:ln";
25392
25592
  const existingLn = spPr[lnKey] ?? {};
25393
- const fillKey = findKey9(existingLn, "solidFill", getLocalName) ?? "a:solidFill";
25394
- const noFillKey = findKey9(existingLn, "noFill", getLocalName);
25593
+ const fillKey = findKey10(existingLn, "solidFill", getLocalName) ?? "a:solidFill";
25594
+ const noFillKey = findKey10(existingLn, "noFill", getLocalName);
25395
25595
  const ln = { ...existingLn };
25396
25596
  if (noFillKey) {
25397
25597
  delete ln[noFillKey];
@@ -25403,13 +25603,13 @@ function buildSpPr(existing, color, getLocalName) {
25403
25603
  function buildTrendline(existing, t, getLocalName) {
25404
25604
  const node = {};
25405
25605
  if (existing) {
25406
- const nameKey = findKey9(existing, "name", getLocalName);
25606
+ const nameKey = findKey10(existing, "name", getLocalName);
25407
25607
  if (nameKey) {
25408
25608
  node["c:name"] = existing[nameKey];
25409
25609
  }
25410
25610
  }
25411
25611
  const spPr = buildSpPr(
25412
- existing ? existing[findKey9(existing, "spPr", getLocalName) ?? ""] : void 0,
25612
+ existing ? existing[findKey10(existing, "spPr", getLocalName) ?? ""] : void 0,
25413
25613
  t.color,
25414
25614
  getLocalName
25415
25615
  );
@@ -25439,7 +25639,7 @@ function buildTrendline(existing, t, getLocalName) {
25439
25639
  node["c:dispEq"] = { "@_val": "1" };
25440
25640
  }
25441
25641
  if (existing) {
25442
- const lblKey = findKey9(existing, "trendlineLbl", getLocalName);
25642
+ const lblKey = findKey10(existing, "trendlineLbl", getLocalName);
25443
25643
  if (lblKey) {
25444
25644
  node["c:trendlineLbl"] = existing[lblKey];
25445
25645
  }
@@ -25447,7 +25647,7 @@ function buildTrendline(existing, t, getLocalName) {
25447
25647
  return node;
25448
25648
  }
25449
25649
  function applySeriesTrendlinesToXml(seriesNode, trendlines, getLocalName) {
25450
- const existingKey = findKey9(seriesNode, "trendline", getLocalName);
25650
+ const existingKey = findKey10(seriesNode, "trendline", getLocalName);
25451
25651
  const existingNodes = existingKey ? ensureArray9(seriesNode[existingKey]) : [];
25452
25652
  const built = trendlines.map((t, i) => buildTrendline(existingNodes[i], t, getLocalName));
25453
25653
  if (existingKey) {
@@ -28657,8 +28857,8 @@ function buildTextRunEffectListXml(style) {
28657
28857
  }
28658
28858
  return effectLst;
28659
28859
  }
28660
- function buildShadowColorNode(hex7, opacity) {
28661
- const clr = hex7.replace("#", "");
28860
+ function buildShadowColorNode(hex8, opacity) {
28861
+ const clr = hex8.replace("#", "");
28662
28862
  const alpha = typeof opacity === "number" ? Math.round(opacity * 1e5) : void 0;
28663
28863
  return {
28664
28864
  "@_val": clr,
@@ -31901,8 +32101,8 @@ function updateCellTextStyleInRawXml(element, rowIndex, colIndex, styleUpdates)
31901
32101
  }
31902
32102
  }
31903
32103
  if ("color" in styleUpdates && typeof styleUpdates.color === "string") {
31904
- const hex7 = styleUpdates.color.replace("#", "");
31905
- rPr["a:solidFill"] = { "a:srgbClr": { "@_val": hex7 } };
32104
+ const hex8 = styleUpdates.color.replace("#", "");
32105
+ rPr["a:solidFill"] = { "a:srgbClr": { "@_val": hex8 } };
31906
32106
  }
31907
32107
  if ("align" in styleUpdates) {
31908
32108
  const pPr = paragraph["a:pPr"] ?? {};
@@ -31942,8 +32142,8 @@ function updateCellTextStyleInRawXml(element, rowIndex, colIndex, styleUpdates)
31942
32142
  }
31943
32143
  }
31944
32144
  if ("color" in styleUpdates && typeof styleUpdates.color === "string") {
31945
- const hex7 = styleUpdates.color.replace("#", "");
31946
- endRPr["a:solidFill"] = { "a:srgbClr": { "@_val": hex7 } };
32145
+ const hex8 = styleUpdates.color.replace("#", "");
32146
+ endRPr["a:solidFill"] = { "a:srgbClr": { "@_val": hex8 } };
31947
32147
  }
31948
32148
  }
31949
32149
  }
@@ -32222,6 +32422,10 @@ var PptxHandlerRuntime23 = class _PptxHandlerRuntime extends PptxHandlerRuntime2
32222
32422
  if (!plotArea) {
32223
32423
  continue;
32224
32424
  }
32425
+ consolidateComboContainersInXml(
32426
+ plotArea,
32427
+ (key) => this.compatibilityService.getXmlLocalName(key)
32428
+ );
32225
32429
  let chartTypeKey = Object.keys(plotArea).find(
32226
32430
  (key) => this.compatibilityService.getXmlLocalName(key).endsWith("Chart")
32227
32431
  );
@@ -32284,19 +32488,19 @@ var PptxHandlerRuntime23 = class _PptxHandlerRuntime extends PptxHandlerRuntime2
32284
32488
  this.updateChartCacheValues(valNode, true, seriesData.values.map(String));
32285
32489
  }
32286
32490
  if (seriesData.color) {
32287
- const hex7 = seriesData.color.replace("#", "");
32491
+ const hex8 = seriesData.color.replace("#", "");
32288
32492
  const spPr = this.xmlLookupService.getChildByLocalName(seriesNode, "spPr");
32289
32493
  if (spPr) {
32290
32494
  const solidFillKey = Object.keys(spPr).find(
32291
32495
  (k) => this.compatibilityService.getXmlLocalName(k) === "solidFill"
32292
32496
  ) ?? "a:solidFill";
32293
- spPr[solidFillKey] = { "a:srgbClr": { "@_val": hex7 } };
32497
+ spPr[solidFillKey] = { "a:srgbClr": { "@_val": hex8 } };
32294
32498
  } else {
32295
32499
  const spPrKey = Object.keys(seriesNode).find(
32296
32500
  (k) => this.compatibilityService.getXmlLocalName(k) === "spPr"
32297
32501
  ) ?? "c:spPr";
32298
32502
  seriesNode[spPrKey] = {
32299
- "a:solidFill": { "a:srgbClr": { "@_val": hex7 } }
32503
+ "a:solidFill": { "a:srgbClr": { "@_val": hex8 } }
32300
32504
  };
32301
32505
  }
32302
32506
  }
@@ -32328,6 +32532,13 @@ var PptxHandlerRuntime23 = class _PptxHandlerRuntime extends PptxHandlerRuntime2
32328
32532
  (key) => this.compatibilityService.getXmlLocalName(key)
32329
32533
  );
32330
32534
  }
32535
+ if (seriesData.dataLabels !== void 0) {
32536
+ applySeriesDataLabelsToXml(
32537
+ seriesNode,
32538
+ seriesData.dataLabels,
32539
+ (key) => this.compatibilityService.getXmlLocalName(key)
32540
+ );
32541
+ }
32331
32542
  }
32332
32543
  if (chartData.series.length > seriesNodes.length) {
32333
32544
  const templateSeries = seriesNodes.length > 0 ? seriesNodes[seriesNodes.length - 1] : void 0;
@@ -32857,36 +33068,131 @@ var PptxHandlerRuntime23 = class _PptxHandlerRuntime extends PptxHandlerRuntime2
32857
33068
  }
32858
33069
  };
32859
33070
 
32860
- // src/core/core/runtime/smartart-save-chrome.ts
33071
+ // src/core/core/runtime/smartart-colors-builder.ts
32861
33072
  function asObject(value) {
33073
+ return value && typeof value === "object" && !Array.isArray(value) ? value : void 0;
33074
+ }
33075
+ function toArray(value) {
33076
+ if (Array.isArray(value)) {
33077
+ return value.filter((entry) => Boolean(asObject(entry)));
33078
+ }
33079
+ const obj = asObject(value);
33080
+ return obj ? [obj] : [];
33081
+ }
33082
+ function findKey11(obj, name, getLocalName) {
33083
+ return Object.keys(obj).find((k) => getLocalName(k) === name);
33084
+ }
33085
+ function hex7(value) {
33086
+ return value.replace("#", "");
33087
+ }
33088
+ var COLOR_LOCAL_NAMES = /* @__PURE__ */ new Set([
33089
+ "srgbClr",
33090
+ "schemeClr",
33091
+ "sysClr",
33092
+ "prstClr",
33093
+ "scrgbClr",
33094
+ "hslClr"
33095
+ ]);
33096
+ function applyColorToList(list, value, getLocalName) {
33097
+ const colorKey = Object.keys(list).find((k) => COLOR_LOCAL_NAMES.has(getLocalName(k)));
33098
+ const srgb = { "@_val": hex7(value) };
33099
+ if (!colorKey) {
33100
+ list["a:srgbClr"] = srgb;
33101
+ return;
33102
+ }
33103
+ const existing = list[colorKey];
33104
+ const rest = Array.isArray(existing) ? existing.slice(1).filter((entry) => Boolean(asObject(entry))) : [];
33105
+ if (colorKey !== "a:srgbClr") {
33106
+ delete list[colorKey];
33107
+ }
33108
+ list["a:srgbClr"] = rest.length > 0 ? [srgb, ...rest] : srgb;
33109
+ }
33110
+ function applySmartArtColorTransform(colorsDef, transform, getLocalName) {
33111
+ if (!transform) {
33112
+ return false;
33113
+ }
33114
+ let mutated = false;
33115
+ if (transform.name && transform.name.length > 0) {
33116
+ if (colorsDef["@_title"] !== transform.name) {
33117
+ colorsDef["@_title"] = transform.name;
33118
+ mutated = true;
33119
+ }
33120
+ }
33121
+ const styleLblKey = findKey11(colorsDef, "styleLbl", getLocalName);
33122
+ if (!styleLblKey) {
33123
+ return mutated;
33124
+ }
33125
+ const labels = toArray(colorsDef[styleLblKey]);
33126
+ if (labels.length === 0) {
33127
+ return mutated;
33128
+ }
33129
+ let fillIndex = 0;
33130
+ let lineIndex = 0;
33131
+ for (const label of labels) {
33132
+ const fillKey = findKey11(label, "fillClrLst", getLocalName);
33133
+ if (fillKey) {
33134
+ const value = transform.fillColors[fillIndex++];
33135
+ const list = asObject(label[fillKey]);
33136
+ if (list && value) {
33137
+ applyColorToList(list, value, getLocalName);
33138
+ mutated = true;
33139
+ }
33140
+ }
33141
+ const lineKey = findKey11(label, "linClrLst", getLocalName);
33142
+ if (lineKey) {
33143
+ const value = transform.lineColors[lineIndex++];
33144
+ const list = asObject(label[lineKey]);
33145
+ if (list && value) {
33146
+ applyColorToList(list, value, getLocalName);
33147
+ mutated = true;
33148
+ }
33149
+ }
33150
+ }
33151
+ return mutated;
33152
+ }
33153
+
33154
+ // src/core/core/runtime/smartart-quickstyle-builder.ts
33155
+ function applySmartArtQuickStyle(styleDef, quickStyle) {
33156
+ if (!quickStyle || !quickStyle.name || quickStyle.name.length === 0) {
33157
+ return false;
33158
+ }
33159
+ if (styleDef["@_title"] === quickStyle.name) {
33160
+ return false;
33161
+ }
33162
+ styleDef["@_title"] = quickStyle.name;
33163
+ return true;
33164
+ }
33165
+
33166
+ // src/core/core/runtime/smartart-save-chrome.ts
33167
+ function asObject2(value) {
32862
33168
  return value && typeof value === "object" && !Array.isArray(value) ? value : {};
32863
33169
  }
32864
33170
  function applySmartArtChrome(dataModel, chrome, getLocalName) {
32865
33171
  if (!chrome || !chrome.backgroundColor && !chrome.outlineColor && (chrome.outlineWidth === null || chrome.outlineWidth === void 0)) {
32866
33172
  return;
32867
33173
  }
32868
- const findKey10 = (obj, name) => Object.keys(obj).find((k) => getLocalName(k) === name);
33174
+ const findKey12 = (obj, name) => Object.keys(obj).find((k) => getLocalName(k) === name);
32869
33175
  if (chrome.backgroundColor) {
32870
- const hex7 = chrome.backgroundColor.replace("#", "");
32871
- const bgKey = findKey10(dataModel, "bg") ?? "dgm:bg";
32872
- const bg = asObject(dataModel[bgKey]);
32873
- const fillKey = findKey10(bg, "solidFill") ?? "a:solidFill";
32874
- bg[fillKey] = { "a:srgbClr": { "@_val": hex7 } };
33176
+ const hex8 = chrome.backgroundColor.replace("#", "");
33177
+ const bgKey = findKey12(dataModel, "bg") ?? "dgm:bg";
33178
+ const bg = asObject2(dataModel[bgKey]);
33179
+ const fillKey = findKey12(bg, "solidFill") ?? "a:solidFill";
33180
+ bg[fillKey] = { "a:srgbClr": { "@_val": hex8 } };
32875
33181
  dataModel[bgKey] = bg;
32876
33182
  }
32877
33183
  const hasOutlineWidth = chrome.outlineWidth !== null && chrome.outlineWidth !== void 0;
32878
33184
  if (chrome.outlineColor || hasOutlineWidth) {
32879
- const wholeKey = findKey10(dataModel, "whole") ?? "dgm:whole";
32880
- const whole = asObject(dataModel[wholeKey]);
32881
- const lnKey = findKey10(whole, "ln") ?? "a:ln";
32882
- const ln = asObject(whole[lnKey]);
33185
+ const wholeKey = findKey12(dataModel, "whole") ?? "dgm:whole";
33186
+ const whole = asObject2(dataModel[wholeKey]);
33187
+ const lnKey = findKey12(whole, "ln") ?? "a:ln";
33188
+ const ln = asObject2(whole[lnKey]);
32883
33189
  if (hasOutlineWidth) {
32884
33190
  ln["@_w"] = String(Math.round(chrome.outlineWidth * 12700));
32885
33191
  }
32886
33192
  if (chrome.outlineColor) {
32887
- const hex7 = chrome.outlineColor.replace("#", "");
32888
- const fillKey = findKey10(ln, "solidFill") ?? "a:solidFill";
32889
- ln[fillKey] = { "a:srgbClr": { "@_val": hex7 } };
33193
+ const hex8 = chrome.outlineColor.replace("#", "");
33194
+ const fillKey = findKey12(ln, "solidFill") ?? "a:solidFill";
33195
+ ln[fillKey] = { "a:srgbClr": { "@_val": hex8 } };
32890
33196
  }
32891
33197
  whole[lnKey] = ln;
32892
33198
  dataModel[wholeKey] = whole;
@@ -32921,10 +33227,56 @@ function buildPointText(text) {
32921
33227
  }
32922
33228
  };
32923
33229
  }
32924
- function applyTextToExistingPoint(pt2, text) {
33230
+ function joinRunText(runs) {
33231
+ return (runs ?? []).map((run) => run.text).join("");
33232
+ }
33233
+ function buildMultiRunParagraph(runs) {
33234
+ const runObjects = runs.map((run) => {
33235
+ const rObj = {};
33236
+ rObj["a:rPr"] = run.rPr ?? { "@_lang": "en-US", "@_dirty": "0" };
33237
+ rObj["a:t"] = run.text;
33238
+ return rObj;
33239
+ });
33240
+ return { "a:r": runObjects.length === 1 ? runObjects[0] : runObjects };
33241
+ }
33242
+ function shouldRebuildFromRuns(node) {
33243
+ const runs = node.runs;
33244
+ if (!runs || runs.length === 0) {
33245
+ return false;
33246
+ }
33247
+ const hasRichRun = runs.length > 1 || Boolean(runs[0]?.rPr);
33248
+ if (!hasRichRun) {
33249
+ return false;
33250
+ }
33251
+ return joinRunText(runs) === node.text;
33252
+ }
33253
+ function buildPointFromRuns(runs) {
33254
+ return {
33255
+ "a:bodyPr": {},
33256
+ "a:lstStyle": {},
33257
+ "a:p": buildMultiRunParagraph(runs)
33258
+ };
33259
+ }
33260
+ function applyRunsToExistingBody(pt2, tKey, runs) {
33261
+ const body = pt2[tKey];
33262
+ if (!body || typeof body !== "object" || Array.isArray(body)) {
33263
+ pt2[tKey] = buildPointFromRuns(runs);
33264
+ return;
33265
+ }
33266
+ const bodyObj = body;
33267
+ const pKey = Object.keys(bodyObj).find((k) => stripPrefix(k) === "p");
33268
+ bodyObj[pKey ?? "a:p"] = buildMultiRunParagraph(runs);
33269
+ }
33270
+ function applyTextToExistingPoint(pt2, node) {
33271
+ const text = node.text;
33272
+ const rebuildFromRuns = shouldRebuildFromRuns(node);
32925
33273
  const tKey = Object.keys(pt2).find((k) => stripPrefix(k) === "t");
32926
33274
  if (!tKey) {
32927
- pt2["dgm:t"] = buildPointText(text);
33275
+ pt2["dgm:t"] = rebuildFromRuns ? buildPointFromRuns(node.runs) : buildPointText(text);
33276
+ return;
33277
+ }
33278
+ if (rebuildFromRuns) {
33279
+ applyRunsToExistingBody(pt2, tKey, node.runs);
32928
33280
  return;
32929
33281
  }
32930
33282
  const body = pt2[tKey];
@@ -32985,7 +33337,7 @@ function mergeSmartArtPointXml(existingPts, nodes) {
32985
33337
  if (!desired) {
32986
33338
  continue;
32987
33339
  }
32988
- applyTextToExistingPoint(pt2, desired.text);
33340
+ applyTextToExistingPoint(pt2, desired);
32989
33341
  seenContentIds.add(modelId);
32990
33342
  merged.push(pt2);
32991
33343
  }
@@ -32998,7 +33350,7 @@ function mergeSmartArtPointXml(existingPts, nodes) {
32998
33350
  if (node.nodeType && !NON_CONTENT_POINT_TYPES.has(node.nodeType)) {
32999
33351
  ptNode["@_type"] = node.nodeType;
33000
33352
  }
33001
- ptNode["dgm:t"] = buildPointText(node.text);
33353
+ ptNode["dgm:t"] = shouldRebuildFromRuns(node) ? buildPointFromRuns(node.runs) : buildPointText(node.text);
33002
33354
  merged.push(ptNode);
33003
33355
  }
33004
33356
  return merged;
@@ -33107,9 +33459,83 @@ var PptxHandlerRuntime24 = class _PptxHandlerRuntime extends PptxHandlerRuntime2
33107
33459
  } catch (e) {
33108
33460
  console.warn(`Failed to save SmartArt data at ${dataPartPath}:`, e);
33109
33461
  }
33462
+ await this.regenerateSmartArtColorPart(slidePath, smartArtData);
33463
+ await this.regenerateSmartArtQuickStylePart(slidePath, smartArtData);
33110
33464
  }
33111
33465
  this.pendingSmartArtUpdates = void 0;
33112
33466
  }
33467
+ /**
33468
+ * Merge the in-memory colour transform back into `ppt/diagrams/colors*.xml`.
33469
+ *
33470
+ * Resolves the part via the SmartArt `colorsRelId` relationship alongside
33471
+ * the data part, merges surgically (preserving unknown content), and skips
33472
+ * gracefully when the rel or part is absent. No-op when the in-memory data
33473
+ * carries no colour transform.
33474
+ */
33475
+ async regenerateSmartArtColorPart(slidePath, smartArtData) {
33476
+ const transform = smartArtData?.colorTransform;
33477
+ if (!smartArtData?.colorsRelId || !transform) {
33478
+ return;
33479
+ }
33480
+ await this.mergeSmartArtDiagramPart(
33481
+ slidePath,
33482
+ smartArtData.colorsRelId,
33483
+ "colorsDef",
33484
+ "colours",
33485
+ (colorsDef) => applySmartArtColorTransform(
33486
+ colorsDef,
33487
+ transform,
33488
+ (k) => this.compatibilityService.getXmlLocalName(k)
33489
+ )
33490
+ );
33491
+ }
33492
+ /**
33493
+ * Merge the in-memory quick style back into `ppt/diagrams/quickStyles*.xml`.
33494
+ *
33495
+ * Resolves the part via the SmartArt `styleRelId` relationship, merges
33496
+ * surgically, and skips gracefully when the rel or part is absent. No-op
33497
+ * when the in-memory data carries no quick style.
33498
+ */
33499
+ async regenerateSmartArtQuickStylePart(slidePath, smartArtData) {
33500
+ const quickStyle = smartArtData?.quickStyle;
33501
+ if (!smartArtData?.styleRelId || !quickStyle) {
33502
+ return;
33503
+ }
33504
+ await this.mergeSmartArtDiagramPart(
33505
+ slidePath,
33506
+ smartArtData.styleRelId,
33507
+ "styleDef",
33508
+ "quick style",
33509
+ (styleDef) => applySmartArtQuickStyle(styleDef, quickStyle)
33510
+ );
33511
+ }
33512
+ /**
33513
+ * Read a SmartArt diagram part by slide relationship id, locate its root
33514
+ * definition element by local name, apply a surgical merge callback, and
33515
+ * write the part back only when the callback reports a change. Skips
33516
+ * gracefully when the rel, part, or root element is absent.
33517
+ */
33518
+ async mergeSmartArtDiagramPart(slidePath, relId, defLocalName, label, merge) {
33519
+ const relationships = this.slideRelsMap.get(slidePath);
33520
+ const target = relationships?.get(relId);
33521
+ if (!target) {
33522
+ return;
33523
+ }
33524
+ const partPath = this.resolveImagePath(slidePath, target);
33525
+ const existingXml = await this.zip.file(partPath)?.async("string");
33526
+ if (!existingXml) {
33527
+ return;
33528
+ }
33529
+ try {
33530
+ const parsed = this.parser.parse(existingXml);
33531
+ const def = this.xmlLookupService.getChildByLocalName(parsed, defLocalName);
33532
+ if (def && merge(def)) {
33533
+ this.zip.file(partPath, this.builder.build(parsed));
33534
+ }
33535
+ } catch (e) {
33536
+ console.warn(`Failed to save SmartArt ${label} at ${partPath}:`, e);
33537
+ }
33538
+ }
33113
33539
  /**
33114
33540
  * Find the slide path for an element by scanning the slideMap.
33115
33541
  */
@@ -33141,10 +33567,10 @@ var PptxHandlerRuntime24 = class _PptxHandlerRuntime extends PptxHandlerRuntime2
33141
33567
  }
33142
33568
  const cSld = root["p:cSld"] || {};
33143
33569
  if (notesMaster.backgroundColor) {
33144
- const hex7 = notesMaster.backgroundColor.replace("#", "");
33570
+ const hex8 = notesMaster.backgroundColor.replace("#", "");
33145
33571
  cSld["p:bg"] = {
33146
33572
  "p:bgPr": {
33147
- "a:solidFill": { "a:srgbClr": { "@_val": hex7 } },
33573
+ "a:solidFill": { "a:srgbClr": { "@_val": hex8 } },
33148
33574
  "a:effectLst": {}
33149
33575
  }
33150
33576
  };
@@ -33177,10 +33603,10 @@ var PptxHandlerRuntime24 = class _PptxHandlerRuntime extends PptxHandlerRuntime2
33177
33603
  }
33178
33604
  const cSld = root["p:cSld"] || {};
33179
33605
  if (handoutMaster.backgroundColor) {
33180
- const hex7 = handoutMaster.backgroundColor.replace("#", "");
33606
+ const hex8 = handoutMaster.backgroundColor.replace("#", "");
33181
33607
  cSld["p:bg"] = {
33182
33608
  "p:bgPr": {
33183
- "a:solidFill": { "a:srgbClr": { "@_val": hex7 } },
33609
+ "a:solidFill": { "a:srgbClr": { "@_val": hex8 } },
33184
33610
  "a:effectLst": {}
33185
33611
  }
33186
33612
  };
@@ -35630,8 +36056,8 @@ var PptxHandlerRuntime34 = class extends PptxHandlerRuntime33 {
35630
36056
  */
35631
36057
  buildClrSchemeObject(schemeName, colorMap) {
35632
36058
  const slot = (key) => {
35633
- const hex7 = String(colorMap[key] || "").replace(/^#/, "");
35634
- const srgb = hex7.length === 6 ? hex7.toUpperCase() : "000000";
36059
+ const hex8 = String(colorMap[key] || "").replace(/^#/, "");
36060
+ const srgb = hex8.length === 6 ? hex8.toUpperCase() : "000000";
35635
36061
  return { "a:srgbClr": { "@_val": srgb } };
35636
36062
  };
35637
36063
  return {
@@ -36295,6 +36721,12 @@ var PptxHandlerRuntime40 = class _PptxHandlerRuntime extends PptxHandlerRuntime3
36295
36721
  xmlLookupService: this.xmlLookupService
36296
36722
  });
36297
36723
  this.deduplicateExtensionLists(this.presentationData);
36724
+ if (effectiveConformance === "transitional") {
36725
+ const presentationNode = this.presentationData["p:presentation"];
36726
+ if (presentationNode && "@_conformance" in presentationNode) {
36727
+ delete presentationNode["@_conformance"];
36728
+ }
36729
+ }
36298
36730
  const presentationXml2 = this.builder.build(this.presentationData);
36299
36731
  this.zip.file("ppt/presentation.xml", presentationXml2);
36300
36732
  }
@@ -42404,8 +42836,8 @@ var PptxHandlerRuntime66 = class extends PptxHandlerRuntime65 {
42404
42836
  /**
42405
42837
  * Build an OOXML colour node (`a:srgbClr`) from a hex string.
42406
42838
  */
42407
- buildSrgbClrNode(hex7) {
42408
- const clean = hex7.replace(/^#/, "").toUpperCase();
42839
+ buildSrgbClrNode(hex8) {
42840
+ const clean = hex8.replace(/^#/, "").toUpperCase();
42409
42841
  return { "a:srgbClr": { "@_val": clean } };
42410
42842
  }
42411
42843
  /**
@@ -42828,6 +43260,45 @@ var PptxHandlerRuntime68 = class extends PptxHandlerRuntime67 {
42828
43260
  }
42829
43261
  }
42830
43262
  }
43263
+ /**
43264
+ * Extract the per-run text + run-properties of a SmartArt content point's
43265
+ * first paragraph (`dgm:t/a:p/a:r`).
43266
+ *
43267
+ * Each `a:r` yields one {@link PptxSmartArtTextRun} carrying its joined
43268
+ * `a:t` text and a verbatim copy of its `a:rPr` properties (when present).
43269
+ * Only the first paragraph is captured: SmartArt content points are
43270
+ * single-paragraph in practice, and the round-trip save path rebuilds a
43271
+ * single paragraph from these runs. Returns undefined when there is fewer
43272
+ * than one run worth preserving (a single run is still returned so per-run
43273
+ * formatting like a bold sole run survives).
43274
+ */
43275
+ extractSmartArtNodeRuns(point) {
43276
+ const tBody = this.xmlLookupService.getChildByLocalName(point, "t");
43277
+ if (!tBody) {
43278
+ return void 0;
43279
+ }
43280
+ const paragraph = this.xmlLookupService.getChildrenArrayByLocalName(tBody, "p")[0];
43281
+ if (!paragraph) {
43282
+ return void 0;
43283
+ }
43284
+ const runNodes = this.xmlLookupService.getChildrenArrayByLocalName(paragraph, "r");
43285
+ if (runNodes.length === 0) {
43286
+ return void 0;
43287
+ }
43288
+ const runs = [];
43289
+ for (const run of runNodes) {
43290
+ const textValues = [];
43291
+ this.collectLocalTextValues(run, "t", textValues);
43292
+ const text = textValues.join("");
43293
+ const rPrNode = this.xmlLookupService.getChildByLocalName(run, "rPr");
43294
+ const entry = { text };
43295
+ if (rPrNode) {
43296
+ entry.rPr = JSON.parse(JSON.stringify(rPrNode));
43297
+ }
43298
+ runs.push(entry);
43299
+ }
43300
+ return runs.length > 0 ? runs : void 0;
43301
+ }
42831
43302
  /**
42832
43303
  * Parse background and outline chrome from `dgm:bg` and `dgm:whole`.
42833
43304
  */
@@ -43131,11 +43602,13 @@ var PptxHandlerRuntime70 = class _PptxHandlerRuntime extends PptxHandlerRuntime6
43131
43602
  if (!resolvedText) {
43132
43603
  return null;
43133
43604
  }
43605
+ const runs = this.extractSmartArtNodeRuns(point);
43134
43606
  return {
43135
43607
  id: pointId,
43136
43608
  text: resolvedText.trim(),
43137
43609
  parentId: parentByNodeId.get(pointId),
43138
- nodeType
43610
+ nodeType,
43611
+ runs
43139
43612
  };
43140
43613
  }).filter((entry) => Boolean(entry)).slice(0, MAX_SMARTART_NODES);
43141
43614
  if (nodes.length === 0) {
@@ -43853,11 +44326,11 @@ var PptxHandlerRuntime74 = class extends PptxHandlerRuntime73 {
43853
44326
  } else if (localName === "srgbClr") {
43854
44327
  const items = Array.isArray(value) ? value : [value];
43855
44328
  for (const item of items) {
43856
- const hex7 = String(
44329
+ const hex8 = String(
43857
44330
  typeof item === "object" && item !== null ? item["@_val"] : item ?? ""
43858
44331
  ).trim();
43859
- if (hex7.length > 0) {
43860
- output.push(hex7.startsWith("#") ? hex7 : `#${hex7}`);
44332
+ if (hex8.length > 0) {
44333
+ output.push(hex8.startsWith("#") ? hex8 : `#${hex8}`);
43861
44334
  }
43862
44335
  }
43863
44336
  }
@@ -43925,9 +44398,10 @@ var PptxHandlerRuntime75 = class extends PptxHandlerRuntime74 {
43925
44398
  return void 0;
43926
44399
  }
43927
44400
  const chartType = this.detectChartType(plotArea);
43928
- const seriesContainerKey = Object.keys(plotArea).find(
44401
+ const chartContainerKeys = Object.keys(plotArea).filter(
43929
44402
  (key) => this.compatibilityService.getXmlLocalName(key).endsWith("Chart")
43930
44403
  );
44404
+ const seriesContainerKey = chartContainerKeys[0];
43931
44405
  if (!seriesContainerKey) {
43932
44406
  return this.parseCxChart(
43933
44407
  plotArea,
@@ -43939,19 +44413,14 @@ var PptxHandlerRuntime75 = class extends PptxHandlerRuntime74 {
43939
44413
  );
43940
44414
  }
43941
44415
  const seriesContainer = plotArea[seriesContainerKey];
43942
- const seriesList = this.xmlLookupService.getChildrenArrayByLocalName(seriesContainer, "ser");
43943
- if (seriesList.length === 0) {
44416
+ const { categories, series } = this.parseAllChartContainers(
44417
+ plotArea,
44418
+ chartContainerKeys,
44419
+ chartType
44420
+ );
44421
+ if (series.length === 0) {
43944
44422
  return void 0;
43945
44423
  }
43946
- const categoriesFromFirstSeries = this.extractChartPointValues(
43947
- this.xmlLookupService.getChildByLocalName(seriesList[0], "cat"),
43948
- false
43949
- );
43950
- const categories = categoriesFromFirstSeries.length ? categoriesFromFirstSeries : this.extractChartPointValues(
43951
- this.xmlLookupService.getChildByLocalName(seriesList[0], "xVal"),
43952
- false
43953
- );
43954
- const series = this.buildChartSeries(seriesList, categories);
43955
44424
  const titleNode = this.xmlLookupService.getChildByLocalName(chartRoot, "title");
43956
44425
  const titleTextValues = [];
43957
44426
  this.collectLocalTextValues(titleNode, "t", titleTextValues);
@@ -44050,6 +44519,49 @@ var PptxHandlerRuntime75 = class extends PptxHandlerRuntime74 {
44050
44519
  ...clrMapOvr ? { clrMapOvr } : {}
44051
44520
  };
44052
44521
  }
44522
+ /**
44523
+ * Parse every chart-type container in the plot area into a single flat
44524
+ * series list plus a shared category list.
44525
+ *
44526
+ * For a single-type chart this parses the one container exactly as before.
44527
+ * For a combo chart (multiple `c:*Chart` siblings) each container's series
44528
+ * are parsed and tagged with the container's chart type via
44529
+ * {@link PptxChartSeries.seriesChartType}, so the combo serializer can
44530
+ * re-emit each series under the correct container on save. Series keep the
44531
+ * document order of their containers.
44532
+ *
44533
+ * @param plotArea - The `c:plotArea` XML object.
44534
+ * @param containerKeys - All chart-type container keys, in document order.
44535
+ * @param chartLevelType - The detected chart-level type. When this is
44536
+ * `combo`, each series is tagged with its own container type; otherwise no
44537
+ * per-series type is set (the chart-level type applies to every series).
44538
+ * @returns The merged categories and series.
44539
+ */
44540
+ parseAllChartContainers(plotArea, containerKeys, chartLevelType) {
44541
+ const isCombo = chartLevelType === "combo";
44542
+ let categories = [];
44543
+ const series = [];
44544
+ for (const containerKey of containerKeys) {
44545
+ const container = plotArea[containerKey];
44546
+ const seriesList = this.xmlLookupService.getChildrenArrayByLocalName(container, "ser");
44547
+ if (seriesList.length === 0) {
44548
+ continue;
44549
+ }
44550
+ if (categories.length === 0) {
44551
+ const fromCat = this.extractChartPointValues(
44552
+ this.xmlLookupService.getChildByLocalName(seriesList[0], "cat"),
44553
+ false
44554
+ );
44555
+ categories = fromCat.length ? fromCat : this.extractChartPointValues(
44556
+ this.xmlLookupService.getChildByLocalName(seriesList[0], "xVal"),
44557
+ false
44558
+ );
44559
+ }
44560
+ const containerType = isCombo ? chartContainerLocalNameToType(this.compatibilityService.getXmlLocalName(containerKey)) : void 0;
44561
+ series.push(...this.buildChartSeries(seriesList, categories, containerType));
44562
+ }
44563
+ return { categories, series };
44564
+ }
44053
44565
  /**
44054
44566
  * Build the series array from raw OOXML `c:ser` nodes.
44055
44567
  *
@@ -44059,9 +44571,11 @@ var PptxHandlerRuntime75 = class extends PptxHandlerRuntime74 {
44059
44571
  *
44060
44572
  * @param seriesList - Array of `c:ser` XML objects from the chart container.
44061
44573
  * @param categories - Pre-parsed category labels (used for fallback values).
44574
+ * @param seriesChartType - When set (combo charts), tags every series in this
44575
+ * container with its source chart type for round-trip.
44062
44576
  * @returns The series array matching `PptxChartData["series"]`.
44063
44577
  */
44064
- buildChartSeries(seriesList, categories) {
44578
+ buildChartSeries(seriesList, categories, seriesChartType) {
44065
44579
  return seriesList.map((seriesNode, seriesIndex) => {
44066
44580
  const seriesName = this.extractChartSeriesName(seriesNode);
44067
44581
  const values = this.extractChartPointValues(
@@ -44099,7 +44613,8 @@ var PptxHandlerRuntime75 = class extends PptxHandlerRuntime74 {
44099
44613
  ...dataPoints.length > 0 ? { dataPoints } : {},
44100
44614
  ...seriesMarker ? { marker: seriesMarker } : {},
44101
44615
  ...dataLabels.length > 0 ? { dataLabels } : {},
44102
- ...explosion !== void 0 ? { explosion } : {}
44616
+ ...explosion !== void 0 ? { explosion } : {},
44617
+ ...seriesChartType ? { seriesChartType } : {}
44103
44618
  };
44104
44619
  });
44105
44620
  }
@@ -57086,6 +57601,51 @@ function setChartDataPointExplosion(element, seriesIndex, pointIndex, explosion)
57086
57601
  const dp = ensureDataPoint(series, pointIndex);
57087
57602
  dp.explosion = explosion;
57088
57603
  }
57604
+ function applyLabelEdit(label, edit) {
57605
+ if (edit.showValue !== void 0) {
57606
+ label.showVal = edit.showValue;
57607
+ }
57608
+ if (edit.showCategory !== void 0) {
57609
+ label.showCatName = edit.showCategory;
57610
+ }
57611
+ if (edit.showSeriesName !== void 0) {
57612
+ label.showSerName = edit.showSeriesName;
57613
+ }
57614
+ if (edit.showPercent !== void 0) {
57615
+ label.showPercent = edit.showPercent;
57616
+ }
57617
+ if (edit.showLegendKey !== void 0) {
57618
+ label.showLegendKey = edit.showLegendKey;
57619
+ }
57620
+ if (edit.position !== void 0) {
57621
+ label.position = edit.position;
57622
+ }
57623
+ if (edit.text !== void 0) {
57624
+ label.text = edit.text === "" ? void 0 : edit.text;
57625
+ }
57626
+ }
57627
+ function setChartDataPointLabel(element, seriesIndex, pointIndex, edit) {
57628
+ validateSeriesIndex(element, seriesIndex);
57629
+ const series = element.chartData.series[seriesIndex];
57630
+ if (edit === null) {
57631
+ if (!series.dataLabels) {
57632
+ return;
57633
+ }
57634
+ series.dataLabels = series.dataLabels.filter((l) => l.idx !== pointIndex);
57635
+ if (series.dataLabels.length === 0) {
57636
+ series.dataLabels = void 0;
57637
+ }
57638
+ return;
57639
+ }
57640
+ const labels = series.dataLabels ??= [];
57641
+ let label = labels.find((l) => l.idx === pointIndex);
57642
+ if (!label) {
57643
+ label = { idx: pointIndex };
57644
+ labels.push(label);
57645
+ labels.sort((a, b) => a.idx - b.idx);
57646
+ }
57647
+ applyLabelEdit(label, edit);
57648
+ }
57089
57649
  function removeEmptyDataPoint(series, pointIndex) {
57090
57650
  if (!series.dataPoints) {
57091
57651
  return;
@@ -57135,8 +57695,8 @@ function generateLayoutXml(definition) {
57135
57695
  const phShapes = placeholders.map((ph, i) => placeholderSpXml(ph, i + 2)).join("\n");
57136
57696
  let bgXml = "";
57137
57697
  if (definition.backgroundColor) {
57138
- const hex7 = definition.backgroundColor.replace(/^#/, "").toUpperCase();
57139
- bgXml = ` <p:bg><p:bgPr><a:solidFill><a:srgbClr val="${hex7}"/></a:solidFill><a:effectLst/></p:bgPr></p:bg>
57698
+ const hex8 = definition.backgroundColor.replace(/^#/, "").toUpperCase();
57699
+ bgXml = ` <p:bg><p:bgPr><a:solidFill><a:srgbClr val="${hex8}"/></a:solidFill><a:effectLst/></p:bgPr></p:bg>
57140
57700
  `;
57141
57701
  }
57142
57702
  return `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
@@ -57612,8 +58172,8 @@ var TextBuilder = class _TextBuilder {
57612
58172
  *
57613
58173
  * @param hex - Color as a hex string (e.g. "#FF0000").
57614
58174
  */
57615
- color(hex7) {
57616
- this._options.color = hex7;
58175
+ color(hex8) {
58176
+ this._options.color = hex8;
57617
58177
  return this;
57618
58178
  }
57619
58179
  /**
@@ -62389,8 +62949,8 @@ function stepTable10(t) {
62389
62949
  }
62390
62950
  return out.join(" ");
62391
62951
  }
62392
- function parseHexRgb(hex7) {
62393
- const m = /^#?([0-9a-f]{6})/i.exec(hex7.trim());
62952
+ function parseHexRgb(hex8) {
62953
+ const m = /^#?([0-9a-f]{6})/i.exec(hex8.trim());
62394
62954
  if (!m) {
62395
62955
  return { r: 0, g: 0, b: 0 };
62396
62956
  }
@@ -62909,4 +63469,4 @@ var SvgExporter = class _SvgExporter {
62909
63469
  * `<p:extLst>` (optional)
62910
63470
  */
62911
63471
 
62912
- export { ALL_ANIMATION_PRESETS, BLIP_FILL_ORDER, CLOUD_CALLOUT_TAIL_COUNT, CLOUD_LOBE_COUNT, COLOR_MAP_ALIAS_KEYS, CONNECTOR_ARROW_OPTIONS, CONNECTOR_GEOMETRY_OPTIONS, ChartBuilder, ConnectorBuilder, ConnectorXmlFactory, DEFAULT_CANVAS_HEIGHT, DEFAULT_CANVAS_WIDTH, DEFAULT_COLOR_MAP, DEFAULT_FILL_COLOR, DEFAULT_FONT_FAMILY, DEFAULT_MAX_UNCOMPRESSED_BYTES, DEFAULT_SCHEME_COLOR_MAP, DEFAULT_STROKE_COLOR, DEFAULT_TEXT_COLOR, DEFAULT_TEXT_FONT_SIZE, DIGEST_ALGORITHM_TO_HASH, DIGEST_ALGORITHM_TO_WEB_CRYPTO, DIGITAL_SIGNATURE_ORIGIN_REL_TYPE, DIGITAL_SIGNATURE_REL_TYPE, DataIntegrityError, DocumentConverter, EFFECT_LST_ORDER, EMPHASIS_PRESETS, EMU_PER_INCH, EMU_PER_PIXEL2 as EMU_PER_PIXEL, EMU_PER_POINT, EMU_PER_PX, ENTERPRISE_FAIL_ON_REVOCATION_UNKNOWN_ENV, ENTERPRISE_REQUIRE_REVOCATION_ENV, ENTERPRISE_REQUIRE_TIMESTAMP_ENV, ENTERPRISE_TRUST_ROOTS_FILE_ENV, ENTERPRISE_TRUST_ROOTS_PEM_ENV, ENTRANCE_PRESETS, EXIT_PRESETS, EncryptedFileError, FONT_SUBSTITUTION_MAP, FreeformPathBuilder, GroupBuilder, ImageBuilder, IncorrectPasswordError, MAX_TABLE_DIMENSION, MAX_ZIP_ENTRY_COUNT, MIN_ELEMENT_SIZE, MIN_TABLE_DIMENSION, MOTION_PATH_PRESETS, MediaBuilder, MediaContext, MediaGraphicFrameXmlFactory, OOXML_TO_PRESET_EMPH, OOXML_TO_PRESET_ENTR, OOXML_TO_PRESET_EXIT, OPC_RELATIONSHIP_TRANSFORM, Ole2ParseError, P14_GUIDE_URI, P15_GUIDE_URI, PANOSE_FAMILY_MAP, PANOSE_MONOSPACE_PROPORTION, PANOSE_SANS_SERIF_STYLES, PANOSE_WEIGHT_MAP, POWERPOINT_PRESENCE_KEY, PPTX_VIEWER_MANIFEST_NS, PRESET_COLOR_MAP, PRESET_SHAPE_CATEGORY_LABELS, PRESET_SHAPE_CLIP_PATHS, PRESET_SHAPE_DEFINITIONS, PRESET_SHAPE_GEOMETRY_TABLE, PRESET_TO_OOXML, PictureXmlFactory, PptxAnimationWriteService, PptxColorStyleCodec, PptxCommentAuthorsXmlFactory, PptxCommentXmlFactoryProvider, PptxCompatibilityService, PptxConnectorParser, PptxContentTypesBuilder, PptxDocumentPropertiesUpdater, PptxEditorAnimationService, PptxElementTransformUpdater, PptxElementXmlBuilder, PptxGraphicFrameParser, PptxHandler, PptxHandlerRuntime81 as PptxHandlerRuntime, PptxHandlerRuntimeFactory, PptxLoadDataBuilder, PptxMarkdownConverter, PptxMediaDataParser, PptxNativeAnimationService, PptxPresentationSaveBuilder, PptxPresentationSlidesReconciler, PptxRuntimeDependencyFactory, PptxSaveConstantsFactory, PptxSaveState as PptxSaveSession, PptxSaveStateBuilder as PptxSaveSessionBuilder, PptxSaveState, PptxSaveStateBuilder, PptxShapeIdValidator, PptxShapeStyleExtractor, PptxSlideBackgroundBuilder, PptxSlideBuilder, PptxSlideCommentPartWriter, PptxSlideCommentsXmlFactory, PptxSlideElementsBuilder, PptxSlideLoaderService, PptxSlideMediaRelationshipBuilder, PptxSlideNotesBuilder, PptxSlideNotesPartUpdater, PptxSlideRelationshipRegistry, PptxSlideTransitionService, PptxTableDataParser, PptxTemplateBackgroundService, PptxXmlBuilder, PptxXmlFactoryProvider, PptxXmlLookupService, Presentation, PresentationBuilder, SHAPE_TREE_ELEMENT_TAGS, SP_PR_ORDER, STROKE_DASH_OPTIONS, SUPPORTED_XML_CANON_TRANSFORMS, SWITCHABLE_LAYOUT_TYPES, SYSTEM_COLOR_MAP, ShapeBuilder, SlideBuilder, SlideProcessor, SlideSizes, SvgExporter, TC_PR_BORDERS_ORDER, THEME_COLOR_SCHEME_KEYS, THEME_PRESETS, TRANSITION_VALID_DIRECTIONS, TableBuilder, TextBuilder, TextShapeXmlFactory, ThemePresets, VML_SHAPE_TAGS, XMLDSIG_NS, XML_TRANSFORM_ENVELOPED_SIGNATURE, ZipBombError, addChartCategory, addChartSeries, addSection, addSmartArtNode, addSmartArtNodeAsChild, applyDrawingColorTransforms, applyKinsokuToXml, applyTableCellTextAndStyle, applyTemplate, applyThemeToData, areNamespacesSupported, buildCalloutLeaderLineSvgPath, buildClrMapOverrideXml, buildFontFamilyString, buildGuideListExtension, buildLinkedTextBoxChains, buildOle2, buildSingleEffectNode, buildSrgbColorChoice, buildThemeColorMap, catmullRomToBezier, chartDataAddCategory, chartDataAddSeries, chartDataChangeType, chartDataRemoveCategory, chartDataRemoveSeries, chartDataUpdatePoint, checkBlankSlide, checkComplexTables, checkDuplicateTitles, checkLowContrast, checkMissingAltText, checkMissingSlideTitle, checkPresentation, clampUnitInterval, classifyPanose, cloneElement, cloneShapeStyle, cloneSlide, cloneTemplateElementsBySlideId, cloneTextStyle, cloneXmlObject, cm, cmToEmu, colorWithOpacity, colorsEqual, combineShapes, computeContrastRatio, computeCycleLayout, computeDetailStatus, computeDigestBase64 as computeDigestBase64WebCrypto, computeHierarchyLayout, computeLinearLayout, computeMatrixLayout, computePyramidLayout, computeSmartArtLayout, computeSnakeLayout, computeVerificationStatus, convertXmlToStrict, createArrayBufferCopy, createBuiltinVariables, createChartElement, createConnectorElement, createDefaultPptxHandlerRuntime, createEditorId, createFreeformElement, createGroupElement, createImageElement, createLayout, createLayouts, createMediaElement, createModifyVerifier, createPptxSaveConstants, createShapeElement, createTableCellXml, createTableElement, createTableGraphicFrameRawXml, createTemplateConnectorRawXml, createTemplateShapeRawXml, createTextElement, createUniformTextSegments, dataUrlToMediaBytes, decomposeSmartArt, decryptPptx, demoteSmartArtNode, deobfuscateFont, deriveOutputPath, detectDigitalSignatures, detectFileFormat, detectFontFormat, detectOleObjectType, detectStrictConformance, diffPresentations, diffSlides, distributeSegmentsAcrossChain, douglasPeucker, duplicateElement, duplicateSlide, elementActionToPptxAction, elementHasAction, emuToPixels, encryptPptx, ensureArrayValue, escapeXmlAttr, escapeXmlText, estimateTextBoxCapacity, evaluateGeometryPaths, evaluateGuides, evaluatePresetShape, extractAllTagText, extractColorChoiceXml, extractFirstTagText, extractGuidFromPartName, extractModel3DTransform, extractTagAttribute, fetchUrlToBytes, findCustomShow, findLayoutByName, findLayoutByType, findPlaceholders, findText, formatCommentTimestamp, fragmentShapes, generateFontGuid, generateLayoutXml, generateMediaFilename, getAdjustmentAwareClipPath, getAdjustmentAwareShapeClipPath, getAnimationPresetInfo, getCalloutLeaderLineGeometry, getCalloutTier, getCalloutViewBoxBounds, getCloudCalloutClipPath, getCloudClipPath, getCloudPathForRendering, getCommentMarkerPosition, getConnectorAdjustment, getConnectorPathGeometry, getCssBorderDashStyle, getCustomShowNames, getCustomShowPositionLabel, getDirectory, getElementLabel, getElementTextContent, getElementTransform, getImageMaskStyle, getLinkedTextBoxSegments, getNativeAnimationPresetMetadata, getOleObjectTypeLabel, getPanoseWeight, getPresetShapeClipPath, getPresetsByCategory, getRoundRectRadiusPx, getSectionForSlide, getSectionSlideRange, getShapeClipPath, getShapeClipPathFromPreset, getShapeType, getSignaturePathsToStrip, getSubstituteFontFamily, getSubstituteFonts, getSupportedNamespaces, getSvgStrokeDasharray, getTextCompensationTransform, getThemePreset, getZoomElements, getZoomTargetSlideIndexes, guidToKey, guideEmuToPx, guidePxToEmu, hasDirectSubstitution, hasNonTrivialOverride, hasShapeProperties, hasTextProperties, hexToRgbChannels, hslToRgb, inches, inchesToEmu, inferOleExtensionFromTarget, interpolateShapeGeometry, intersectPolygons, intersectShapes, intersectSvgPaths, isCalloutShape, isConnectorElement, isEditableTextElement, isImageLikeElement, isInkElement, isNamespaceSupported, isShapeElement, isStrictNamespaceUri, isSummaryZoomSlide, isSwitchableLayoutType, isTemplateElement, isTextElement, isTransitionalNamespaceUri, isValidBase64, isXmlNode, isZoomElement, isZoomElement2 as isZoomElementUtil, layoutEngineShapesToDrawingShapes, lookupPresetShape, mailMerge, mergePresentation, mergeShapes, mergeStyleParts, mergeThemeColorOverride, mm, moveSlidesToSection, navigateCustomShow, normalizeHexColor, normalizeNamespaceUri, normalizePartPath, normalizePath, normalizeStrictXml, normalizeStrokeDashType, obfuscateFont, ooxmlArcToSvg, ooxmlToPresetName, parseActiveXControlsFromSlide, parseAdjustmentValues, parseBodyPrBooleanAttrs, parseChart3DSurfaces, parseChartAxes, parseCondition, parseConditionList, parseCxChartSeries, parseDataTable, parseDataUrlToBytes, parseDrawingColor, parseDrawingColorChoice, parseDrawingColorOpacity, parseDrawingFraction, parseDrawingHueDegrees, parseDrawingPercent, parseEmbeddedXlsx, parseGuideDefinitions, parseHexColor, parseKinsoku, parseLayoutDefinition, parseLineStyle, parseMarker, parseOle2, parsePanoseBytes, parsePanoseString, parsePresentationDrawingGuides, parseSeriesDataLabels, parseSeriesDataPoints, parseSeriesErrBars, parseSeriesExplosion, parseSeriesTrendlines, parseShapeProps, parseSignatureXml, parseSlideDrawingGuides, parseSvgPath, parseVmlElement, parseVmlElements, pixelsToEmu, polygonsToSvgPath, pptxActionToElementAction, promoteSmartArtNode, pt, reResolveSlideColors, readFileAsDataUrl, rebuildTableStructureInRawXml, reflowSmartArtLayout, relativeLuminance, relayoutSmartArt, removeChartCategory, removeChartSeries, removeSection, removeSmartArtNode, reorderObjectKeys, reorderSections, reorderSmartArtNode, reorderSmartArtNodeToIndex, repairPptx, replaceShapeGeometry, replaceText, replaceTextInSlide, replaceWithCustomGeometry, resetCloneIdCounter, resetDecomposeCounter, resetIdCounter, resetSectionIdCounter, resetSmartArtEditCounter, resolveCoordinate, resolveCustomShowSlideIndices, resolveLayoutDisplayName, resolveModel3DMimeType, resolveReferenceUriToPart, resolveTableCellStyle, rgbToHsl, selectAlternateContentBranch, serializeColorChoice, serializeCondition, serializeConditionList, serializeSvgPath, setChartAxis, setChartAxisGridlineStyle, setChartAxisLogScale, setChartAxisTitleStyle, setChartCategories, setChartDataLabels, setChartDataPointExplosion, setChartDataPointFill, setChartGrouping, setChartLegend, setChartSeriesChartType, setChartSeriesColor, setChartSeriesErrorBars, setChartSeriesMarker, setChartSeriesTrendline, setChartTitle, setChartType, shouldRenderFallbackLabel, shouldReturnToZoomSlide, subtractPolygons, subtractShapes, subtractSvgPaths, svgPathToPolygons, switchSmartArtLayout, toHex, toStrictNamespaceUri, unionPolygons, unionShapes, unionSvgPaths, unwrapAlternateContent, updateCellTextInRawXml, updateCellTextStyleInRawXml, updateChartDataPoint, updateChartSeriesValues, updateMergeAttrsInRawXml, updateSmartArtNodeText, validatePptx, verifyModifyPassword, verifyPassword, verifySignatureDigests, writeBodyPrBooleanAttrs, xmlAttr, xmlAttrBool, xmlAttrNumber, xmlChild, xmlChildren, xmlPath, xmlText };
63472
+ export { ALL_ANIMATION_PRESETS, BLIP_FILL_ORDER, CLOUD_CALLOUT_TAIL_COUNT, CLOUD_LOBE_COUNT, COLOR_MAP_ALIAS_KEYS, CONNECTOR_ARROW_OPTIONS, CONNECTOR_GEOMETRY_OPTIONS, ChartBuilder, ConnectorBuilder, ConnectorXmlFactory, DEFAULT_CANVAS_HEIGHT, DEFAULT_CANVAS_WIDTH, DEFAULT_COLOR_MAP, DEFAULT_FILL_COLOR, DEFAULT_FONT_FAMILY, DEFAULT_MAX_UNCOMPRESSED_BYTES, DEFAULT_SCHEME_COLOR_MAP, DEFAULT_STROKE_COLOR, DEFAULT_TEXT_COLOR, DEFAULT_TEXT_FONT_SIZE, DIGEST_ALGORITHM_TO_HASH, DIGEST_ALGORITHM_TO_WEB_CRYPTO, DIGITAL_SIGNATURE_ORIGIN_REL_TYPE, DIGITAL_SIGNATURE_REL_TYPE, DataIntegrityError, DocumentConverter, EFFECT_LST_ORDER, EMPHASIS_PRESETS, EMU_PER_INCH, EMU_PER_PIXEL2 as EMU_PER_PIXEL, EMU_PER_POINT, EMU_PER_PX, ENTERPRISE_FAIL_ON_REVOCATION_UNKNOWN_ENV, ENTERPRISE_REQUIRE_REVOCATION_ENV, ENTERPRISE_REQUIRE_TIMESTAMP_ENV, ENTERPRISE_TRUST_ROOTS_FILE_ENV, ENTERPRISE_TRUST_ROOTS_PEM_ENV, ENTRANCE_PRESETS, EXIT_PRESETS, EncryptedFileError, FONT_SUBSTITUTION_MAP, FreeformPathBuilder, GroupBuilder, ImageBuilder, IncorrectPasswordError, MAX_TABLE_DIMENSION, MAX_ZIP_ENTRY_COUNT, MIN_ELEMENT_SIZE, MIN_TABLE_DIMENSION, MOTION_PATH_PRESETS, MediaBuilder, MediaContext, MediaGraphicFrameXmlFactory, OOXML_TO_PRESET_EMPH, OOXML_TO_PRESET_ENTR, OOXML_TO_PRESET_EXIT, OPC_RELATIONSHIP_TRANSFORM, Ole2ParseError, P14_GUIDE_URI, P15_GUIDE_URI, PANOSE_FAMILY_MAP, PANOSE_MONOSPACE_PROPORTION, PANOSE_SANS_SERIF_STYLES, PANOSE_WEIGHT_MAP, POWERPOINT_PRESENCE_KEY, PPTX_VIEWER_MANIFEST_NS, PRESET_COLOR_MAP, PRESET_SHAPE_CATEGORY_LABELS, PRESET_SHAPE_CLIP_PATHS, PRESET_SHAPE_DEFINITIONS, PRESET_SHAPE_GEOMETRY_TABLE, PRESET_TO_OOXML, PictureXmlFactory, PptxAnimationWriteService, PptxColorStyleCodec, PptxCommentAuthorsXmlFactory, PptxCommentXmlFactoryProvider, PptxCompatibilityService, PptxConnectorParser, PptxContentTypesBuilder, PptxDocumentPropertiesUpdater, PptxEditorAnimationService, PptxElementTransformUpdater, PptxElementXmlBuilder, PptxGraphicFrameParser, PptxHandler, PptxHandlerRuntime81 as PptxHandlerRuntime, PptxHandlerRuntimeFactory, PptxLoadDataBuilder, PptxMarkdownConverter, PptxMediaDataParser, PptxNativeAnimationService, PptxPresentationSaveBuilder, PptxPresentationSlidesReconciler, PptxRuntimeDependencyFactory, PptxSaveConstantsFactory, PptxSaveState as PptxSaveSession, PptxSaveStateBuilder as PptxSaveSessionBuilder, PptxSaveState, PptxSaveStateBuilder, PptxShapeIdValidator, PptxShapeStyleExtractor, PptxSlideBackgroundBuilder, PptxSlideBuilder, PptxSlideCommentPartWriter, PptxSlideCommentsXmlFactory, PptxSlideElementsBuilder, PptxSlideLoaderService, PptxSlideMediaRelationshipBuilder, PptxSlideNotesBuilder, PptxSlideNotesPartUpdater, PptxSlideRelationshipRegistry, PptxSlideTransitionService, PptxTableDataParser, PptxTemplateBackgroundService, PptxXmlBuilder, PptxXmlFactoryProvider, PptxXmlLookupService, Presentation, PresentationBuilder, SHAPE_TREE_ELEMENT_TAGS, SP_PR_ORDER, STROKE_DASH_OPTIONS, SUPPORTED_XML_CANON_TRANSFORMS, SWITCHABLE_LAYOUT_TYPES, SYSTEM_COLOR_MAP, ShapeBuilder, SlideBuilder, SlideProcessor, SlideSizes, SvgExporter, TC_PR_BORDERS_ORDER, THEME_COLOR_SCHEME_KEYS, THEME_PRESETS, TRANSITION_VALID_DIRECTIONS, TableBuilder, TextBuilder, TextShapeXmlFactory, ThemePresets, VML_SHAPE_TAGS, XMLDSIG_NS, XML_TRANSFORM_ENVELOPED_SIGNATURE, ZipBombError, addChartCategory, addChartSeries, addSection, addSmartArtNode, addSmartArtNodeAsChild, applyDrawingColorTransforms, applyKinsokuToXml, applyTableCellTextAndStyle, applyTemplate, applyThemeToData, areNamespacesSupported, buildCalloutLeaderLineSvgPath, buildClrMapOverrideXml, buildFontFamilyString, buildGuideListExtension, buildLinkedTextBoxChains, buildOle2, buildSingleEffectNode, buildSrgbColorChoice, buildThemeColorMap, catmullRomToBezier, chartDataAddCategory, chartDataAddSeries, chartDataChangeType, chartDataRemoveCategory, chartDataRemoveSeries, chartDataUpdatePoint, checkBlankSlide, checkComplexTables, checkDuplicateTitles, checkLowContrast, checkMissingAltText, checkMissingSlideTitle, checkPresentation, clampUnitInterval, classifyPanose, cloneElement, cloneShapeStyle, cloneSlide, cloneTemplateElementsBySlideId, cloneTextStyle, cloneXmlObject, cm, cmToEmu, colorWithOpacity, colorsEqual, combineShapes, computeContrastRatio, computeCycleLayout, computeDetailStatus, computeDigestBase64 as computeDigestBase64WebCrypto, computeHierarchyLayout, computeLinearLayout, computeMatrixLayout, computePyramidLayout, computeSmartArtLayout, computeSnakeLayout, computeVerificationStatus, convertXmlToStrict, createArrayBufferCopy, createBuiltinVariables, createChartElement, createConnectorElement, createDefaultPptxHandlerRuntime, createEditorId, createFreeformElement, createGroupElement, createImageElement, createLayout, createLayouts, createMediaElement, createModifyVerifier, createPptxSaveConstants, createShapeElement, createTableCellXml, createTableElement, createTableGraphicFrameRawXml, createTemplateConnectorRawXml, createTemplateShapeRawXml, createTextElement, createUniformTextSegments, dataUrlToMediaBytes, decomposeSmartArt, decryptPptx, demoteSmartArtNode, deobfuscateFont, deriveOutputPath, detectDigitalSignatures, detectFileFormat, detectFontFormat, detectOleObjectType, detectStrictConformance, diffPresentations, diffSlides, distributeSegmentsAcrossChain, douglasPeucker, duplicateElement, duplicateSlide, elementActionToPptxAction, elementHasAction, emuToPixels, encryptPptx, ensureArrayValue, escapeXmlAttr, escapeXmlText, estimateTextBoxCapacity, evaluateGeometryPaths, evaluateGuides, evaluatePresetShape, extractAllTagText, extractColorChoiceXml, extractFirstTagText, extractGuidFromPartName, extractModel3DTransform, extractTagAttribute, fetchUrlToBytes, findCustomShow, findLayoutByName, findLayoutByType, findPlaceholders, findText, formatCommentTimestamp, fragmentShapes, generateFontGuid, generateLayoutXml, generateMediaFilename, getAdjustmentAwareClipPath, getAdjustmentAwareShapeClipPath, getAnimationPresetInfo, getCalloutLeaderLineGeometry, getCalloutTier, getCalloutViewBoxBounds, getCloudCalloutClipPath, getCloudClipPath, getCloudPathForRendering, getCommentMarkerPosition, getConnectorAdjustment, getConnectorPathGeometry, getCssBorderDashStyle, getCustomShowNames, getCustomShowPositionLabel, getDirectory, getElementLabel, getElementTextContent, getElementTransform, getImageMaskStyle, getLinkedTextBoxSegments, getNativeAnimationPresetMetadata, getOleObjectTypeLabel, getPanoseWeight, getPresetShapeClipPath, getPresetsByCategory, getRoundRectRadiusPx, getSectionForSlide, getSectionSlideRange, getShapeClipPath, getShapeClipPathFromPreset, getShapeType, getSignaturePathsToStrip, getSubstituteFontFamily, getSubstituteFonts, getSupportedNamespaces, getSvgStrokeDasharray, getTextCompensationTransform, getThemePreset, getZoomElements, getZoomTargetSlideIndexes, guidToKey, guideEmuToPx, guidePxToEmu, hasDirectSubstitution, hasNonTrivialOverride, hasShapeProperties, hasTextProperties, hexToRgbChannels, hslToRgb, inches, inchesToEmu, inferOleExtensionFromTarget, interpolateShapeGeometry, intersectPolygons, intersectShapes, intersectSvgPaths, isCalloutShape, isConnectorElement, isEditableTextElement, isImageLikeElement, isInkElement, isNamespaceSupported, isShapeElement, isStrictNamespaceUri, isSummaryZoomSlide, isSwitchableLayoutType, isTemplateElement, isTextElement, isTransitionalNamespaceUri, isValidBase64, isXmlNode, isZoomElement, isZoomElement2 as isZoomElementUtil, layoutEngineShapesToDrawingShapes, lookupPresetShape, mailMerge, mergePresentation, mergeShapes, mergeStyleParts, mergeThemeColorOverride, mm, moveSlidesToSection, navigateCustomShow, normalizeHexColor, normalizeNamespaceUri, normalizePartPath, normalizePath, normalizeStrictXml, normalizeStrokeDashType, obfuscateFont, ooxmlArcToSvg, ooxmlToPresetName, parseActiveXControlsFromSlide, parseAdjustmentValues, parseBodyPrBooleanAttrs, parseChart3DSurfaces, parseChartAxes, parseCondition, parseConditionList, parseCxChartSeries, parseDataTable, parseDataUrlToBytes, parseDrawingColor, parseDrawingColorChoice, parseDrawingColorOpacity, parseDrawingFraction, parseDrawingHueDegrees, parseDrawingPercent, parseEmbeddedXlsx, parseGuideDefinitions, parseHexColor, parseKinsoku, parseLayoutDefinition, parseLineStyle, parseMarker, parseOle2, parsePanoseBytes, parsePanoseString, parsePresentationDrawingGuides, parseSeriesDataLabels, parseSeriesDataPoints, parseSeriesErrBars, parseSeriesExplosion, parseSeriesTrendlines, parseShapeProps, parseSignatureXml, parseSlideDrawingGuides, parseSvgPath, parseVmlElement, parseVmlElements, pixelsToEmu, polygonsToSvgPath, pptxActionToElementAction, promoteSmartArtNode, pt, reResolveSlideColors, readFileAsDataUrl, rebuildTableStructureInRawXml, reflowSmartArtLayout, relativeLuminance, relayoutSmartArt, removeChartCategory, removeChartSeries, removeSection, removeSmartArtNode, reorderObjectKeys, reorderSections, reorderSmartArtNode, reorderSmartArtNodeToIndex, repairPptx, replaceShapeGeometry, replaceText, replaceTextInSlide, replaceWithCustomGeometry, resetCloneIdCounter, resetDecomposeCounter, resetIdCounter, resetSectionIdCounter, resetSmartArtEditCounter, resolveCoordinate, resolveCustomShowSlideIndices, resolveLayoutDisplayName, resolveModel3DMimeType, resolveReferenceUriToPart, resolveTableCellStyle, rgbToHsl, selectAlternateContentBranch, serializeColorChoice, serializeCondition, serializeConditionList, serializeSvgPath, setChartAxis, setChartAxisGridlineStyle, setChartAxisLogScale, setChartAxisTitleStyle, setChartCategories, setChartDataLabels, setChartDataPointExplosion, setChartDataPointFill, setChartDataPointLabel, setChartGrouping, setChartLegend, setChartSeriesChartType, setChartSeriesColor, setChartSeriesErrorBars, setChartSeriesMarker, setChartSeriesTrendline, setChartTitle, setChartType, shouldRenderFallbackLabel, shouldReturnToZoomSlide, subtractPolygons, subtractShapes, subtractSvgPaths, svgPathToPolygons, switchSmartArtLayout, toHex, toStrictNamespaceUri, unionPolygons, unionShapes, unionSvgPaths, unwrapAlternateContent, updateCellTextInRawXml, updateCellTextStyleInRawXml, updateChartDataPoint, updateChartSeriesValues, updateMergeAttrsInRawXml, updateSmartArtNodeText, validatePptx, verifyModifyPassword, verifyPassword, verifySignatureDigests, writeBodyPrBooleanAttrs, xmlAttr, xmlAttrBool, xmlAttrNumber, xmlChild, xmlChildren, xmlPath, xmlText };