pptx-viewer-core 1.6.8 → 1.6.9

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
@@ -7083,26 +7083,49 @@ function applyScene3dStyle(shapeProps, style) {
7083
7083
  const camera = scene3dNode["a:camera"];
7084
7084
  const lightRig = scene3dNode["a:lightRig"];
7085
7085
  const cameraRot = camera?.["a:rot"];
7086
+ const lightRigRot = lightRig?.["a:rot"];
7086
7087
  style.scene3d = {
7087
7088
  cameraPreset: String(camera?.["@_prst"] || "").trim() || void 0,
7088
- cameraRotX: cameraRot?.["@_lat"] !== void 0 ? parseInt(String(cameraRot["@_lat"]), 10) : void 0,
7089
- cameraRotY: cameraRot?.["@_lon"] !== void 0 ? parseInt(String(cameraRot["@_lon"]), 10) : void 0,
7090
- cameraRotZ: cameraRot?.["@_rev"] !== void 0 ? parseInt(String(cameraRot["@_rev"]), 10) : void 0,
7089
+ cameraFieldOfView: intAttr(camera?.["@_fov"]),
7090
+ cameraZoom: floatAttr(camera?.["@_zoom"]),
7091
+ cameraRotX: intAttr(cameraRot?.["@_lat"]),
7092
+ cameraRotY: intAttr(cameraRot?.["@_lon"]),
7093
+ cameraRotZ: intAttr(cameraRot?.["@_rev"]),
7091
7094
  lightRigType: String(lightRig?.["@_rig"] || "").trim() || void 0,
7092
- lightRigDirection: String(lightRig?.["@_dir"] || "").trim() || void 0
7095
+ lightRigDirection: String(lightRig?.["@_dir"] || "").trim() || void 0,
7096
+ lightRigRotX: intAttr(lightRigRot?.["@_lat"]),
7097
+ lightRigRotY: intAttr(lightRigRot?.["@_lon"]),
7098
+ lightRigRotZ: intAttr(lightRigRot?.["@_rev"])
7093
7099
  };
7094
7100
  const backdrop = scene3dNode["a:backdrop"];
7095
7101
  if (backdrop) {
7096
7102
  style.scene3d.hasBackdrop = true;
7097
7103
  const anchor = backdrop["a:anchor"];
7098
- const anchorAttrs = anchor;
7099
- if (anchorAttrs) {
7100
- style.scene3d.backdropAnchorX = parseInt(String(anchorAttrs["@_x"] || "0"), 10);
7101
- style.scene3d.backdropAnchorY = parseInt(String(anchorAttrs["@_y"] || "0"), 10);
7102
- style.scene3d.backdropAnchorZ = parseInt(String(anchorAttrs["@_z"] || "0"), 10);
7104
+ if (anchor) {
7105
+ style.scene3d.backdropAnchorX = intAttr(anchor["@_x"]) ?? 0;
7106
+ style.scene3d.backdropAnchorY = intAttr(anchor["@_y"]) ?? 0;
7107
+ style.scene3d.backdropAnchorZ = intAttr(anchor["@_z"]) ?? 0;
7108
+ }
7109
+ const norm = backdrop["a:norm"];
7110
+ if (norm) {
7111
+ style.scene3d.backdropNormalX = intAttr(norm["@_dx"]) ?? 0;
7112
+ style.scene3d.backdropNormalY = intAttr(norm["@_dy"]) ?? 0;
7113
+ style.scene3d.backdropNormalZ = intAttr(norm["@_dz"]) ?? 0;
7114
+ }
7115
+ const up = backdrop["a:up"];
7116
+ if (up) {
7117
+ style.scene3d.backdropUpX = intAttr(up["@_dx"]) ?? 0;
7118
+ style.scene3d.backdropUpY = intAttr(up["@_dy"]) ?? 0;
7119
+ style.scene3d.backdropUpZ = intAttr(up["@_dz"]) ?? 0;
7103
7120
  }
7104
7121
  }
7105
7122
  }
7123
+ function intAttr(value) {
7124
+ return value !== void 0 ? parseInt(String(value), 10) : void 0;
7125
+ }
7126
+ function floatAttr(value) {
7127
+ return value !== void 0 ? parseFloat(String(value)) : void 0;
7128
+ }
7106
7129
  function applyShape3dStyle(shapeProps, style, context) {
7107
7130
  const shape3dNode = shapeProps["a:sp3d"];
7108
7131
  if (!shape3dNode) {
@@ -7984,7 +8007,7 @@ var MEDIA_REFERENCE_NAMES = [
7984
8007
  "videoFile",
7985
8008
  "quickTimeFile"
7986
8009
  ];
7987
- function parseDrawingMediaReference(container) {
8010
+ function parseDrawingMediaReference(container, externalRelIds) {
7988
8011
  if (!container) {
7989
8012
  return void 0;
7990
8013
  }
@@ -7993,11 +8016,17 @@ function parseDrawingMediaReference(container) {
7993
8016
  if (!node) {
7994
8017
  continue;
7995
8018
  }
8019
+ const linkId = String(attribute2(node, "link") ?? "").trim() || void 0;
8020
+ const embedId = String(attribute2(node, "embed") ?? "").trim() || void 0;
7996
8021
  return {
7997
8022
  kind,
7998
8023
  mediaType: kind === "videoFile" || kind === "quickTimeFile" ? "video" : "audio",
7999
- relationshipId: String(attribute2(node, "link") ?? attribute2(node, "embed") ?? "").trim() || void 0,
8000
- isLinked: attribute2(node, "link") !== void 0,
8024
+ relationshipId: linkId ?? embedId,
8025
+ // Embedded media legitimately uses r:link pointing at an INTERNAL
8026
+ // media part, so link presence alone does not imply a linked clip.
8027
+ // It is only truly linked when the referenced relationship is
8028
+ // external (TargetMode="External"), mirroring the OLE parser.
8029
+ isLinked: linkId !== void 0 && externalRelIds?.has(linkId) === true,
8001
8030
  name: kind === "wavAudioFile" ? String(attribute2(node, "name") ?? "") || void 0 : void 0,
8002
8031
  contentType: kind === "audioFile" ? String(attribute2(node, "contentType") ?? "") || void 0 : void 0,
8003
8032
  audioCdStart: kind === "audioCd" ? parseAudioCdPosition(child2(node, "st")) : void 0,
@@ -8128,7 +8157,10 @@ var PptxMediaDataParser = class {
8128
8157
  parseMediaData(graphicData, slidePath) {
8129
8158
  const result = {};
8130
8159
  try {
8131
- const reference = parseDrawingMediaReference(graphicData);
8160
+ const reference = parseDrawingMediaReference(
8161
+ graphicData,
8162
+ this.context.externalRelsMap.get(slidePath)
8163
+ );
8132
8164
  if (reference) {
8133
8165
  result.mediaType = reference.mediaType;
8134
8166
  result.mediaReferenceKind = reference.kind;
@@ -13085,6 +13117,7 @@ var PptxNativeAnimationService = class {
13085
13117
  const nodeType = String(cTn["@_nodeType"] || "");
13086
13118
  const presetClass = cTn["@_presetClass"];
13087
13119
  const presetId = cTn["@_presetID"] ? Number.parseInt(String(cTn["@_presetID"]), 10) : void 0;
13120
+ const presetSubtype = cTn["@_presetSubtype"] !== void 0 ? Number.parseInt(String(cTn["@_presetSubtype"]), 10) : void 0;
13088
13121
  const durationMs = cTn["@_dur"] ? Number.parseInt(String(cTn["@_dur"]), 10) : void 0;
13089
13122
  const delayMs = cTn["@_delay"] ? Number.parseInt(String(cTn["@_delay"]), 10) : void 0;
13090
13123
  let trigger = currentTrigger;
@@ -13136,6 +13169,7 @@ var PptxNativeAnimationService = class {
13136
13169
  trigger,
13137
13170
  presetClass: validPresetClass,
13138
13171
  presetId,
13172
+ presetSubtype,
13139
13173
  durationMs,
13140
13174
  delayMs,
13141
13175
  triggerDelayMs: trigger === "afterDelay" ? delayMs : void 0,
@@ -13446,6 +13480,74 @@ function buildP14ExtLst(transitionType, direction, orient, pattern, rawExtLst, x
13446
13480
  return { "p:ext": transitionExt };
13447
13481
  }
13448
13482
 
13483
+ // src/core/services/p15-transition-parser.ts
13484
+ var P15_TRANSITION_PRESETS = /* @__PURE__ */ new Set([
13485
+ "fallOver",
13486
+ "drape",
13487
+ "curtains",
13488
+ "wind",
13489
+ "prestige",
13490
+ "fracture",
13491
+ "crush",
13492
+ "peelOff",
13493
+ "pageCurlDouble",
13494
+ "pageCurlSingle",
13495
+ "airplane",
13496
+ "origami"
13497
+ ]);
13498
+ var PRSTTRANS_EXT_URI = "{D42A27DB-BD31-4B8C-83A1-F6EECF244321}";
13499
+ function optionalBoolean(value) {
13500
+ const valueToken = value === void 0 || value === null ? "" : String(value).trim().toLowerCase();
13501
+ if (valueToken === "1" || valueToken === "true") {
13502
+ return true;
13503
+ }
13504
+ if (valueToken === "0" || valueToken === "false") {
13505
+ return false;
13506
+ }
13507
+ return void 0;
13508
+ }
13509
+ function parseP15FromExtLst(extLstNode, xmlLookupService, getXmlLocalName) {
13510
+ const extEntries = xmlLookupService.getChildrenArrayByLocalName(extLstNode, "ext");
13511
+ for (const ext of extEntries) {
13512
+ if (!ext) {
13513
+ continue;
13514
+ }
13515
+ for (const [key, value] of Object.entries(ext)) {
13516
+ if (key.startsWith("@_")) {
13517
+ continue;
13518
+ }
13519
+ if (getXmlLocalName(key) !== "prstTrans") {
13520
+ continue;
13521
+ }
13522
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
13523
+ continue;
13524
+ }
13525
+ const detail = value;
13526
+ const prst = String(detail["@_prst"] || "").trim();
13527
+ if (!P15_TRANSITION_PRESETS.has(prst)) {
13528
+ continue;
13529
+ }
13530
+ return {
13531
+ type: prst,
13532
+ invX: optionalBoolean(detail["@_invX"]),
13533
+ invY: optionalBoolean(detail["@_invY"])
13534
+ };
13535
+ }
13536
+ }
13537
+ return void 0;
13538
+ }
13539
+ function buildP15ExtLst(transitionType, invX, invY) {
13540
+ const prstTrans = {
13541
+ "@_xmlns:p15": "http://schemas.microsoft.com/office/powerpoint/2012/main",
13542
+ "@_prst": transitionType
13543
+ };
13544
+ const ext = {
13545
+ "@_uri": PRSTTRANS_EXT_URI,
13546
+ "p15:prstTrans": prstTrans
13547
+ };
13548
+ return { "p:ext": ext };
13549
+ }
13550
+
13449
13551
  // src/core/services/slide-transition-xml.ts
13450
13552
  var STANDARD_TRANSITION_TYPES = /* @__PURE__ */ new Set([
13451
13553
  "fade",
@@ -13511,7 +13613,7 @@ function parseTransitionDetails(node, localName22) {
13511
13613
  if (pattern) {
13512
13614
  result.pattern = pattern;
13513
13615
  }
13514
- const thruBlk = optionalBoolean(detail["@_thruBlk"]);
13616
+ const thruBlk = optionalBoolean2(detail["@_thruBlk"]);
13515
13617
  if (thruBlk !== void 0) {
13516
13618
  result.thruBlk = thruBlk;
13517
13619
  }
@@ -13522,7 +13624,7 @@ function parseTransitionAttributes(node) {
13522
13624
  const speedToken = token(node["@_spd"]);
13523
13625
  const speed = SPEEDS.has(speedToken) ? speedToken : void 0;
13524
13626
  const durationMs = unsignedInteger2(node["@_dur"] ?? node["@_p14:dur"], 1);
13525
- const advanceOnClick = optionalBoolean(node["@_advClick"]);
13627
+ const advanceOnClick = optionalBoolean2(node["@_advClick"]);
13526
13628
  const advanceAfterMs = unsignedInteger2(node["@_advTm"]);
13527
13629
  return { speed, durationMs, advanceOnClick, advanceAfterMs };
13528
13630
  }
@@ -13536,7 +13638,7 @@ function parseTransitionSound(raw, lookup, localName22) {
13536
13638
  return {
13537
13639
  soundRId: sound ? attributeByLocalName(sound, "embed", localName22) : void 0,
13538
13640
  soundName: sound ? attributeByLocalName(sound, "name", localName22) : void 0,
13539
- soundLoop: optionalBoolean(start["@_loop"])
13641
+ soundLoop: optionalBoolean2(start["@_loop"])
13540
13642
  };
13541
13643
  }
13542
13644
  const stopSound = Object.keys(raw).some(
@@ -13645,7 +13747,7 @@ function attributeByLocalName(node, name, localName22) {
13645
13747
  function token(value) {
13646
13748
  return value === void 0 || value === null ? "" : String(value).trim();
13647
13749
  }
13648
- function optionalBoolean(value) {
13750
+ function optionalBoolean2(value) {
13649
13751
  const valueToken = token(value).toLowerCase();
13650
13752
  if (!valueToken) {
13651
13753
  return void 0;
@@ -13691,6 +13793,7 @@ var PptxSlideTransitionService = class {
13691
13793
  const { spokes, thruBlk, rawSoundAction, rawExtLst } = details;
13692
13794
  if (rawExtLst && transitionType === "cut") {
13693
13795
  const p14Result = parseP14FromExtLst(rawExtLst, this.xmlLookupService, this.getXmlLocalName);
13796
+ const p15Result = p14Result ? void 0 : parseP15FromExtLst(rawExtLst, this.xmlLookupService, this.getXmlLocalName);
13694
13797
  if (p14Result) {
13695
13798
  transitionType = p14Result.type;
13696
13799
  if (p14Result.direction) {
@@ -13702,6 +13805,8 @@ var PptxSlideTransitionService = class {
13702
13805
  if (p14Result.pattern) {
13703
13806
  pattern = p14Result.pattern;
13704
13807
  }
13808
+ } else if (p15Result) {
13809
+ transitionType = p15Result.type;
13705
13810
  } else if (this.parseMorphFromExtLst(rawExtLst)) {
13706
13811
  transitionType = "morph";
13707
13812
  }
@@ -13783,6 +13888,7 @@ var PptxSlideTransitionService = class {
13783
13888
  }
13784
13889
  const transitionType = transition.type || "cut";
13785
13890
  const isP14Type = P14_TRANSITION_TYPES.has(transitionType);
13891
+ const isP15Type = P15_TRANSITION_PRESETS.has(transitionType);
13786
13892
  const isMorphType = transitionType === "morph";
13787
13893
  const node = createPreservedTransitionNode(transition.rawTransition, this.getXmlLocalName);
13788
13894
  if (isP14Type) {
@@ -13795,6 +13901,8 @@ var PptxSlideTransitionService = class {
13795
13901
  this.xmlLookupService,
13796
13902
  this.getXmlLocalName
13797
13903
  );
13904
+ } else if (isP15Type) {
13905
+ node["p:extLst"] = transition.rawExtLst ?? buildP15ExtLst(transitionType);
13798
13906
  } else if (isMorphType) {
13799
13907
  node["p:extLst"] = this.buildMorphExtLst(transition.rawExtLst);
13800
13908
  } else {
@@ -13805,7 +13913,7 @@ var PptxSlideTransitionService = class {
13805
13913
  if (soundAction) {
13806
13914
  node["p:sndAc"] = soundAction;
13807
13915
  }
13808
- if (transition.rawExtLst && !isP14Type && !isMorphType) {
13916
+ if (transition.rawExtLst && !isP14Type && !isP15Type && !isMorphType) {
13809
13917
  node["p:extLst"] = transition.rawExtLst;
13810
13918
  }
13811
13919
  return node;
@@ -29815,36 +29923,200 @@ async function fetchUrlToBytes(url, options = {}) {
29815
29923
  }
29816
29924
  }
29817
29925
 
29926
+ // src/core/utils/inkml-trace-decode.ts
29927
+ function resolveChannelOrder(root) {
29928
+ const traceFormat = findFirstByLocalName(root, "traceFormat");
29929
+ if (!traceFormat) {
29930
+ return ["X", "Y"];
29931
+ }
29932
+ const channels = ensureArray5(nsGet(traceFormat, "channel"));
29933
+ const names = channels.map(
29934
+ (channel) => String(nsAttr(channel, "name") ?? "").trim().toUpperCase()
29935
+ ).filter((name) => name.length > 0);
29936
+ return names.length > 0 ? names : ["X", "Y"];
29937
+ }
29938
+ function decodeTracePoints(text2, channelOrder) {
29939
+ const points3 = [];
29940
+ const modes = channelOrder.map(() => "explicit");
29941
+ const lastValue = channelOrder.map(() => 0);
29942
+ const lastVelocity = channelOrder.map(() => 0);
29943
+ for (const rawPoint of text2.split(",")) {
29944
+ const tokens = rawPoint.trim().split(/\s+/u).filter((token2) => token2.length > 0);
29945
+ if (tokens.length === 0) {
29946
+ continue;
29947
+ }
29948
+ const decoded = [];
29949
+ for (let i = 0; i < tokens.length && i < channelOrder.length; i++) {
29950
+ const parsed = parseValueToken(tokens[i], modes[i]);
29951
+ if (parsed === void 0) {
29952
+ decoded.push(lastValue[i]);
29953
+ continue;
29954
+ }
29955
+ modes[i] = parsed.mode;
29956
+ const value = applyDiffMode(parsed, i, lastValue, lastVelocity);
29957
+ decoded.push(value);
29958
+ }
29959
+ if (decoded.length >= 2) {
29960
+ points3.push(decoded);
29961
+ }
29962
+ }
29963
+ return points3;
29964
+ }
29965
+ function parseValueToken(token2, currentMode) {
29966
+ let mode = currentMode;
29967
+ let body = token2;
29968
+ const prefix = token2[0];
29969
+ if (prefix === "!") {
29970
+ mode = "explicit";
29971
+ body = token2.slice(1);
29972
+ } else if (prefix === "'") {
29973
+ mode = "single";
29974
+ body = token2.slice(1);
29975
+ } else if (prefix === '"') {
29976
+ mode = "double";
29977
+ body = token2.slice(1);
29978
+ }
29979
+ if (body.length === 0) {
29980
+ return void 0;
29981
+ }
29982
+ const value = Number(body);
29983
+ return Number.isFinite(value) ? { value, mode } : void 0;
29984
+ }
29985
+ function applyDiffMode(parsed, index, lastValue, lastVelocity) {
29986
+ if (parsed.mode === "single") {
29987
+ lastVelocity[index] = parsed.value;
29988
+ lastValue[index] += parsed.value;
29989
+ } else if (parsed.mode === "double") {
29990
+ lastVelocity[index] += parsed.value;
29991
+ lastValue[index] += lastVelocity[index];
29992
+ } else {
29993
+ lastValue[index] = parsed.value;
29994
+ lastVelocity[index] = 0;
29995
+ }
29996
+ return lastValue[index];
29997
+ }
29998
+ function pointsToSvgPath(points3, channelOrder) {
29999
+ const xi = channelOrder.indexOf("X");
30000
+ const yi = channelOrder.indexOf("Y");
30001
+ const xIndex = xi >= 0 ? xi : 0;
30002
+ const yIndex = yi >= 0 ? yi : 1;
30003
+ const segments = [];
30004
+ for (const point of points3) {
30005
+ const x = point[xIndex];
30006
+ const y = point[yIndex];
30007
+ if (!Number.isFinite(x) || !Number.isFinite(y)) {
30008
+ continue;
30009
+ }
30010
+ segments.push(`${segments.length === 0 ? "M" : "L"} ${x} ${y}`);
30011
+ }
30012
+ return segments.join(" ");
30013
+ }
30014
+ function pointsToPressures(points3, channelOrder) {
30015
+ const fIndex = channelOrder.indexOf("F");
30016
+ if (fIndex < 0) {
30017
+ return [];
30018
+ }
30019
+ const pressures = [];
30020
+ for (const point of points3) {
30021
+ const raw = point[fIndex];
30022
+ if (Number.isFinite(raw)) {
30023
+ const normalised = raw > 1 ? raw / 32767 : raw;
30024
+ pressures.push(Math.max(0, Math.min(1, normalised)));
30025
+ }
30026
+ }
30027
+ return pressures;
30028
+ }
30029
+ function nsGet(obj, localName22) {
30030
+ if (localName22 in obj) {
30031
+ return obj[localName22];
30032
+ }
30033
+ for (const key of Object.keys(obj)) {
30034
+ if (localNameOf(key) === localName22 && !key.startsWith("@_")) {
30035
+ return obj[key];
30036
+ }
30037
+ }
30038
+ return void 0;
30039
+ }
30040
+ function nsAttr(obj, localName22) {
30041
+ const direct = obj[`@_${localName22}`];
30042
+ if (direct !== void 0) {
30043
+ return direct;
30044
+ }
30045
+ for (const key of Object.keys(obj)) {
30046
+ if (key.startsWith("@_") && localNameOf(key.slice(2)) === localName22) {
30047
+ return obj[key];
30048
+ }
30049
+ }
30050
+ return void 0;
30051
+ }
30052
+ function localNameOf(key) {
30053
+ const colon = key.indexOf(":");
30054
+ return colon >= 0 ? key.slice(colon + 1) : key;
30055
+ }
30056
+ function findFirstByLocalName(node, localName22) {
30057
+ const direct = nsGet(node, localName22);
30058
+ if (direct && typeof direct === "object") {
30059
+ return Array.isArray(direct) ? direct[0] : direct;
30060
+ }
30061
+ for (const key of Object.keys(node)) {
30062
+ if (key.startsWith("@_") || key === "#text") {
30063
+ continue;
30064
+ }
30065
+ for (const child20 of ensureArray5(node[key])) {
30066
+ if (typeof child20 !== "object") {
30067
+ continue;
30068
+ }
30069
+ const found = findFirstByLocalName(child20, localName22);
30070
+ if (found) {
30071
+ return found;
30072
+ }
30073
+ }
30074
+ }
30075
+ return void 0;
30076
+ }
30077
+ function ensureArray5(value) {
30078
+ if (value === void 0 || value === null) {
30079
+ return [];
30080
+ }
30081
+ return Array.isArray(value) ? value : [value];
30082
+ }
30083
+
29818
30084
  // src/core/utils/inkml-content-part.ts
29819
30085
  var INKML_NAMESPACE = "http://www.w3.org/2003/InkML";
29820
30086
  var METADATA_NAMESPACE = "https://pptx-viewer.dev/inkml/metadata";
29821
30087
  function parseInkMlContent(data) {
29822
- const root = data["ink:ink"] ?? data["ink"];
30088
+ const root = nsGet(data, "ink") ?? data["ink"];
29823
30089
  if (!root) {
29824
30090
  return { strokes: [], rawXml: data };
29825
30091
  }
29826
30092
  const brushes = /* @__PURE__ */ new Map();
29827
- for (const brush of ensureArray5(root["ink:brush"] ?? root["brush"])) {
29828
- const properties = ensureArray5(brush["ink:brushProperty"] ?? brush["brushProperty"]);
30093
+ for (const brush of ensureArray5(nsGet(root, "brush"))) {
30094
+ const properties = ensureArray5(nsGet(brush, "brushProperty"));
29829
30095
  const valueByName = new Map(
29830
- properties.map((property) => [String(property["@_name"] ?? ""), property["@_value"]])
30096
+ properties.map((property) => [
30097
+ String(nsAttr(property, "name") ?? ""),
30098
+ nsAttr(property, "value")
30099
+ ])
29831
30100
  );
29832
- brushes.set(String(brush["@_id"] ?? ""), {
30101
+ brushes.set(String(nsAttr(brush, "id") ?? ""), {
29833
30102
  color: String(valueByName.get("color") ?? "#000000"),
29834
30103
  width: finiteNumber(valueByName.get("width"), 1),
29835
30104
  opacity: finiteNumber(valueByName.get("opacity"), 1)
29836
30105
  });
29837
30106
  }
30107
+ const channelOrder = resolveChannelOrder(root);
29838
30108
  const strokes = [];
29839
- for (const trace of ensureArray5(root["ink:trace"] ?? root["trace"])) {
30109
+ for (const trace of ensureArray5(nsGet(root, "trace"))) {
29840
30110
  const text2 = typeof trace === "string" ? trace : String(trace["#text"] ?? "").trim();
29841
- const path = typeof trace === "string" ? text2 : String(trace["@_pva:path"] ?? "").trim() || text2;
30111
+ const authored = typeof trace === "string" ? "" : String(nsAttr(trace, "path") ?? "").trim();
30112
+ const points3 = authored ? [] : decodeTracePoints(text2, channelOrder);
30113
+ const path = authored || pointsToSvgPath(points3, channelOrder);
29842
30114
  if (!path) {
29843
30115
  continue;
29844
30116
  }
29845
- const brushRef = typeof trace === "string" ? "" : String(trace["@_brushRef"] ?? "").replace("#", "");
30117
+ const brushRef = typeof trace === "string" ? "" : String(nsAttr(trace, "brushRef") ?? "").replace("#", "");
29846
30118
  const brush = brushes.get(brushRef) ?? { color: "#000000", width: 1, opacity: 1 };
29847
- const pressures = tracePressures(text2);
30119
+ const pressures = authored ? tracePressures(text2) : pointsToPressures(points3, channelOrder);
29848
30120
  strokes.push({ ...brush, path, ...pressures.length > 0 ? { pressures } : {} });
29849
30121
  }
29850
30122
  return { strokes, rawXml: data };
@@ -29903,12 +30175,6 @@ function finiteNumber(value, fallback) {
29903
30175
  const parsed = Number(value);
29904
30176
  return Number.isFinite(parsed) ? parsed : fallback;
29905
30177
  }
29906
- function ensureArray5(value) {
29907
- if (value === void 0 || value === null) {
29908
- return [];
29909
- }
29910
- return Array.isArray(value) ? value : [value];
29911
- }
29912
30178
 
29913
30179
  // src/core/utils/smartart-helpers.ts
29914
30180
  var DEFAULT_ACCENT_COLORS = [
@@ -47330,6 +47596,93 @@ var PptxHandlerRuntime = class {
47330
47596
  }
47331
47597
  };
47332
47598
 
47599
+ // src/core/core/runtime/table-style-border-parse.ts
47600
+ var EMU_PER_PIXEL = 9525;
47601
+ var BORDER_SIDES = [
47602
+ "left",
47603
+ "right",
47604
+ "top",
47605
+ "bottom",
47606
+ "insideH",
47607
+ "insideV",
47608
+ "tl2br",
47609
+ "bl2tr"
47610
+ ];
47611
+ function parseSolidFillStyle(solidFill2) {
47612
+ if (!solidFill2) {
47613
+ return void 0;
47614
+ }
47615
+ const schemeClr = solidFill2["a:schemeClr"];
47616
+ if (!schemeClr) {
47617
+ return void 0;
47618
+ }
47619
+ const schemeColor = String(schemeClr["@_val"] || "").trim() || void 0;
47620
+ if (!schemeColor) {
47621
+ return void 0;
47622
+ }
47623
+ const tintRaw = schemeClr["a:tint"];
47624
+ const tint = tintRaw ? parseInt(String(tintRaw["@_val"] || "0"), 10) || void 0 : void 0;
47625
+ const shadeRaw = schemeClr["a:shade"];
47626
+ const shade = shadeRaw ? parseInt(String(shadeRaw["@_val"] || "0"), 10) || void 0 : void 0;
47627
+ return { schemeColor, tint, shade };
47628
+ }
47629
+ function parseBorderSide(side) {
47630
+ if (!side) {
47631
+ return void 0;
47632
+ }
47633
+ const ln = side["a:ln"];
47634
+ if (!ln) {
47635
+ return void 0;
47636
+ }
47637
+ const border = {};
47638
+ let has = false;
47639
+ if (ln["a:noFill"] !== void 0) {
47640
+ border.noFill = true;
47641
+ has = true;
47642
+ }
47643
+ const widthEmu = parseInt(String(ln["@_w"] || "0"), 10);
47644
+ if (widthEmu > 0) {
47645
+ border.width = Math.max(1, Math.round(widthEmu / EMU_PER_PIXEL));
47646
+ has = true;
47647
+ }
47648
+ const prstDash = ln["a:prstDash"];
47649
+ const dashVal = prstDash ? String(prstDash["@_val"] || "").trim() : "";
47650
+ if (dashVal) {
47651
+ border.dash = dashVal;
47652
+ has = true;
47653
+ }
47654
+ const solidFill2 = ln["a:solidFill"];
47655
+ const fill = parseSolidFillStyle(solidFill2);
47656
+ if (fill) {
47657
+ border.fill = fill;
47658
+ has = true;
47659
+ } else {
47660
+ const srgb = solidFill2?.["a:srgbClr"];
47661
+ const hex10 = srgb ? String(srgb["@_val"] || "").trim() : "";
47662
+ if (hex10) {
47663
+ border.color = hex10.startsWith("#") ? hex10 : `#${hex10}`;
47664
+ has = true;
47665
+ }
47666
+ }
47667
+ return has ? border : void 0;
47668
+ }
47669
+ function parseTableStyleBorders(tcStyle) {
47670
+ const tcBdr = tcStyle?.["a:tcBdr"];
47671
+ if (!tcBdr) {
47672
+ return void 0;
47673
+ }
47674
+ const result = {};
47675
+ let has = false;
47676
+ for (const name of BORDER_SIDES) {
47677
+ const border = parseBorderSide(tcBdr[`a:${name}`]);
47678
+ if (border) {
47679
+ result[name] = border;
47680
+ has = true;
47681
+ }
47682
+ }
47683
+ return has ? result : void 0;
47684
+ }
47685
+
47333
47686
  // src/core/core/runtime/PptxHandlerRuntimeTableStyles.ts
47334
47687
  var PptxHandlerRuntime2 = class extends PptxHandlerRuntime {
47335
47688
  /**
@@ -47414,30 +47767,15 @@ var PptxHandlerRuntime2 = class extends PptxHandlerRuntime {
47414
47767
  return void 0;
47415
47768
  }
47416
47769
  const tcStyle = section["a:tcStyle"];
47417
- if (!tcStyle) {
47418
- return void 0;
47419
- }
47420
- const fill = tcStyle["a:fill"];
47421
- if (!fill) {
47422
- return void 0;
47423
- }
47424
- const solidFill2 = fill["a:solidFill"];
47425
- if (!solidFill2) {
47426
- return void 0;
47427
- }
47428
- const schemeClr = solidFill2["a:schemeClr"];
47429
- if (!schemeClr) {
47430
- return void 0;
47431
- }
47432
- const schemeColor = String(schemeClr["@_val"] || "").trim() || void 0;
47433
- if (!schemeColor) {
47434
- return void 0;
47435
- }
47436
- const tintRaw = schemeClr["a:tint"];
47437
- const tint = tintRaw ? parseInt(String(tintRaw["@_val"] || "0"), 10) || void 0 : void 0;
47438
- const shadeRaw = schemeClr["a:shade"];
47439
- const shade = shadeRaw ? parseInt(String(shadeRaw["@_val"] || "0"), 10) || void 0 : void 0;
47440
- return { schemeColor, tint, shade };
47770
+ const fill = tcStyle?.["a:fill"];
47771
+ return parseSolidFillStyle(fill?.["a:solidFill"]);
47772
+ }
47773
+ /**
47774
+ * Extract border styling from a table style section's
47775
+ * `a:tcStyle/a:tcBdr` (per-side line width, dash, and colour).
47776
+ */
47777
+ extractTableStyleSectionBorders(section) {
47778
+ return parseTableStyleBorders(section?.["a:tcStyle"]);
47441
47779
  }
47442
47780
  /**
47443
47781
  * Extract text properties from a:tcTxStyle in a table style section.
@@ -47584,6 +47922,15 @@ var PptxHandlerRuntime2 = class extends PptxHandlerRuntime {
47584
47922
  textProps[`${name}Text`] = text2;
47585
47923
  }
47586
47924
  }
47925
+ const borderProps = {};
47926
+ for (const name of sectionNames) {
47927
+ const borders = this.extractTableStyleSectionBorders(
47928
+ style[`a:${name}`]
47929
+ );
47930
+ if (borders) {
47931
+ borderProps[`${name}Borders`] = borders;
47932
+ }
47933
+ }
47587
47934
  const entry = {
47588
47935
  styleId,
47589
47936
  styleName,
@@ -47602,7 +47949,8 @@ var PptxHandlerRuntime2 = class extends PptxHandlerRuntime {
47602
47949
  ...swCellFill ? { swCellFill } : {},
47603
47950
  ...neCellFill ? { neCellFill } : {},
47604
47951
  ...nwCellFill ? { nwCellFill } : {},
47605
- ...textProps
47952
+ ...textProps,
47953
+ ...borderProps
47606
47954
  };
47607
47955
  map[styleId] = entry;
47608
47956
  }
@@ -49413,6 +49761,15 @@ var PptxHandlerRuntime11 = class extends PptxHandlerRuntime10 {
49413
49761
  if (align === "justify") {
49414
49762
  return "just";
49415
49763
  }
49764
+ if (align === "justLow") {
49765
+ return "justLow";
49766
+ }
49767
+ if (align === "dist") {
49768
+ return "dist";
49769
+ }
49770
+ if (align === "thaiDist") {
49771
+ return "thaiDist";
49772
+ }
49416
49773
  return void 0;
49417
49774
  }
49418
49775
  pixelsToPoints(px2) {
@@ -50467,6 +50824,16 @@ var PptxHandlerRuntime15 = class _PptxHandlerRuntime extends PptxHandlerRuntime1
50467
50824
  const chOffY = 0;
50468
50825
  const chExtCx = extCx;
50469
50826
  const chExtCy = extCy;
50827
+ const xfrmAttrs = {};
50828
+ if (typeof group.rotation === "number" && group.rotation !== 0) {
50829
+ xfrmAttrs["@_rot"] = String(Math.round(group.rotation * 6e4));
50830
+ }
50831
+ if (group.flipHorizontal) {
50832
+ xfrmAttrs["@_flipH"] = "1";
50833
+ }
50834
+ if (group.flipVertical) {
50835
+ xfrmAttrs["@_flipV"] = "1";
50836
+ }
50470
50837
  const grpXml = {
50471
50838
  "p:nvGrpSpPr": {
50472
50839
  "p:cNvPr": { "@_id": "0", "@_name": group.id },
@@ -50475,6 +50842,7 @@ var PptxHandlerRuntime15 = class _PptxHandlerRuntime extends PptxHandlerRuntime1
50475
50842
  },
50476
50843
  "p:grpSpPr": {
50477
50844
  "a:xfrm": {
50845
+ ...xfrmAttrs,
50478
50846
  "a:off": {
50479
50847
  "@_x": String(offX),
50480
50848
  "@_y": String(offY)
@@ -56663,45 +57031,18 @@ var PptxHandlerRuntime29 = class extends PptxHandlerRuntime28 {
56663
57031
  const s3d = shapeStyle.scene3d;
56664
57032
  const hasData = s3d.cameraPreset || s3d.lightRigType;
56665
57033
  if (hasData) {
56666
- const cameraObj = {};
56667
- if (s3d.cameraPreset) {
56668
- cameraObj["@_prst"] = s3d.cameraPreset;
56669
- }
56670
- if (s3d.cameraRotX !== void 0 || s3d.cameraRotY !== void 0 || s3d.cameraRotZ !== void 0) {
56671
- const rot = {};
56672
- if (s3d.cameraRotX !== void 0) {
56673
- rot["@_lat"] = String(s3d.cameraRotX);
56674
- }
56675
- if (s3d.cameraRotY !== void 0) {
56676
- rot["@_lon"] = String(s3d.cameraRotY);
56677
- }
56678
- if (s3d.cameraRotZ !== void 0) {
56679
- rot["@_rev"] = String(s3d.cameraRotZ);
56680
- }
56681
- cameraObj["a:rot"] = rot;
56682
- }
56683
- const lightRigObj = {};
56684
- if (s3d.lightRigType) {
56685
- lightRigObj["@_rig"] = s3d.lightRigType;
56686
- }
56687
- if (s3d.lightRigDirection) {
56688
- lightRigObj["@_dir"] = s3d.lightRigDirection;
56689
- }
56690
- const scene3dXml = {};
56691
- scene3dXml["a:camera"] = cameraObj;
56692
- if (Object.keys(lightRigObj).length > 0) {
56693
- scene3dXml["a:lightRig"] = lightRigObj;
56694
- }
56695
- if (s3d.hasBackdrop) {
56696
- const backdropObj = {};
56697
- if (s3d.backdropAnchorX !== void 0 || s3d.backdropAnchorY !== void 0 || s3d.backdropAnchorZ !== void 0) {
56698
- backdropObj["a:anchor"] = {
56699
- "@_x": String(s3d.backdropAnchorX ?? 0),
56700
- "@_y": String(s3d.backdropAnchorY ?? 0),
56701
- "@_z": String(s3d.backdropAnchorZ ?? 0)
56702
- };
56703
- }
56704
- scene3dXml["a:backdrop"] = backdropObj;
57034
+ const source = spPr["a:scene3d"] ?? {};
57035
+ const scene3dXml = { ...source };
57036
+ scene3dXml["a:camera"] = buildScene3dCamera(s3d, source);
57037
+ const lightRig = buildScene3dLightRig(s3d, source);
57038
+ if (lightRig) {
57039
+ scene3dXml["a:lightRig"] = lightRig;
57040
+ }
57041
+ const backdrop = buildScene3dBackdrop(s3d);
57042
+ if (backdrop) {
57043
+ scene3dXml["a:backdrop"] = backdrop;
57044
+ } else {
57045
+ delete scene3dXml["a:backdrop"];
56705
57046
  }
56706
57047
  spPr["a:scene3d"] = scene3dXml;
56707
57048
  } else {
@@ -56746,12 +57087,12 @@ var PptxHandlerRuntime29 = class extends PptxHandlerRuntime28 {
56746
57087
  }
56747
57088
  if (sh3d.extrusionColor) {
56748
57089
  sp3dXml["a:extrusionClr"] = {
56749
- "a:srgbClr": { "@_val": sh3d.extrusionColor }
57090
+ "a:srgbClr": { "@_val": sh3d.extrusionColor.replace("#", "") }
56750
57091
  };
56751
57092
  }
56752
57093
  if (sh3d.contourColor) {
56753
57094
  sp3dXml["a:contourClr"] = {
56754
- "a:srgbClr": { "@_val": sh3d.contourColor }
57095
+ "a:srgbClr": { "@_val": sh3d.contourColor.replace("#", "") }
56755
57096
  };
56756
57097
  }
56757
57098
  spPr["a:sp3d"] = sp3dXml;
@@ -56763,6 +57104,77 @@ var PptxHandlerRuntime29 = class extends PptxHandlerRuntime28 {
56763
57104
  }
56764
57105
  }
56765
57106
  };
57107
+ function buildSphereRot(lat, lon, rev) {
57108
+ if (lat === void 0 && lon === void 0 && rev === void 0) {
57109
+ return void 0;
57110
+ }
57111
+ const rot = {};
57112
+ if (lat !== void 0) {
57113
+ rot["@_lat"] = String(lat);
57114
+ }
57115
+ if (lon !== void 0) {
57116
+ rot["@_lon"] = String(lon);
57117
+ }
57118
+ if (rev !== void 0) {
57119
+ rot["@_rev"] = String(rev);
57120
+ }
57121
+ return rot;
57122
+ }
57123
+ function buildScene3dCamera(s3d, source) {
57124
+ const camera = { ...source["a:camera"] ?? {} };
57125
+ if (s3d.cameraPreset) {
57126
+ camera["@_prst"] = s3d.cameraPreset;
57127
+ }
57128
+ if (s3d.cameraFieldOfView !== void 0) {
57129
+ camera["@_fov"] = String(s3d.cameraFieldOfView);
57130
+ }
57131
+ if (s3d.cameraZoom !== void 0) {
57132
+ camera["@_zoom"] = String(s3d.cameraZoom);
57133
+ }
57134
+ const rot = buildSphereRot(s3d.cameraRotX, s3d.cameraRotY, s3d.cameraRotZ);
57135
+ if (rot) {
57136
+ camera["a:rot"] = rot;
57137
+ }
57138
+ return camera;
57139
+ }
57140
+ function buildScene3dLightRig(s3d, source) {
57141
+ const lightRig = { ...source["a:lightRig"] ?? {} };
57142
+ if (s3d.lightRigType) {
57143
+ lightRig["@_rig"] = s3d.lightRigType;
57144
+ }
57145
+ if (s3d.lightRigDirection) {
57146
+ lightRig["@_dir"] = s3d.lightRigDirection;
57147
+ }
57148
+ const rot = buildSphereRot(s3d.lightRigRotX, s3d.lightRigRotY, s3d.lightRigRotZ);
57149
+ if (rot) {
57150
+ lightRig["a:rot"] = rot;
57151
+ }
57152
+ return Object.keys(lightRig).length > 0 ? lightRig : void 0;
57153
+ }
57154
+ function buildScene3dBackdrop(s3d) {
57155
+ const hasNorm = s3d.backdropNormalX !== void 0 || s3d.backdropNormalY !== void 0 || s3d.backdropNormalZ !== void 0;
57156
+ const hasUp = s3d.backdropUpX !== void 0 || s3d.backdropUpY !== void 0 || s3d.backdropUpZ !== void 0;
57157
+ if (!s3d.hasBackdrop || !hasNorm || !hasUp) {
57158
+ return void 0;
57159
+ }
57160
+ return {
57161
+ "a:anchor": {
57162
+ "@_x": String(s3d.backdropAnchorX ?? 0),
57163
+ "@_y": String(s3d.backdropAnchorY ?? 0),
57164
+ "@_z": String(s3d.backdropAnchorZ ?? 0)
57165
+ },
57166
+ "a:norm": {
57167
+ "@_dx": String(s3d.backdropNormalX ?? 0),
57168
+ "@_dy": String(s3d.backdropNormalY ?? 0),
57169
+ "@_dz": String(s3d.backdropNormalZ ?? 0)
57170
+ },
57171
+ "a:up": {
57172
+ "@_dx": String(s3d.backdropUpX ?? 0),
57173
+ "@_dy": String(s3d.backdropUpY ?? 0),
57174
+ "@_dz": String(s3d.backdropUpZ ?? 0)
57175
+ }
57176
+ };
57177
+ }
56766
57178
 
56767
57179
  // src/core/core/runtime/PptxHandlerRuntimeSaveTextWriter.ts
56768
57180
  var PptxHandlerRuntime30 = class _PptxHandlerRuntime extends PptxHandlerRuntime29 {
@@ -63192,7 +63604,7 @@ var PptxHandlerRuntime65 = class _PptxHandlerRuntime extends PptxHandlerRuntime6
63192
63604
  const skewY = xfrm["@_skewY"] ? parseEmuInt(xfrm["@_skewY"]) / 6e4 : void 0;
63193
63605
  const { flipHorizontal, flipVertical } = this.readFlipState(xfrm);
63194
63606
  const nvPr = pic?.["p:nvPicPr"]?.["p:nvPr"];
63195
- const mediaReference = parseDrawingMediaReference(nvPr);
63607
+ const mediaReference = parseDrawingMediaReference(nvPr, this.externalRelsMap.get(slidePath));
63196
63608
  if (mediaReference) {
63197
63609
  this.compatibilityService.inspectMediaReferenceCompatibility(
63198
63610
  mediaReference.kind,
@@ -63960,6 +64372,9 @@ var PptxHandlerRuntime67 = class _PptxHandlerRuntime extends PptxHandlerRuntime6
63960
64372
  const grpSpPr = group["p:grpSpPr"];
63961
64373
  const xfrm = grpSpPr?.["a:xfrm"];
63962
64374
  let parentX = 0, parentY = 0, parentW = 0, parentH = 0;
64375
+ let groupRotation;
64376
+ let flipHorizontal = false;
64377
+ let flipVertical = false;
63963
64378
  if (xfrm) {
63964
64379
  const off = xfrm["a:off"];
63965
64380
  if (off) {
@@ -63971,6 +64386,12 @@ var PptxHandlerRuntime67 = class _PptxHandlerRuntime extends PptxHandlerRuntime6
63971
64386
  parentW = Math.round(parseEmuInt2(ext["@_cx"]) / _PptxHandlerRuntime.EMU_PER_PX);
63972
64387
  parentH = Math.round(parseEmuInt2(ext["@_cy"]) / _PptxHandlerRuntime.EMU_PER_PX);
63973
64388
  }
64389
+ if (xfrm["@_rot"] !== void 0 && xfrm["@_rot"] !== null) {
64390
+ const rot = parseInt(String(xfrm["@_rot"]), 10) / 6e4;
64391
+ groupRotation = Number.isFinite(rot) && rot !== 0 ? rot : void 0;
64392
+ }
64393
+ flipHorizontal = this.parseBooleanAttr(xfrm["@_flipH"]);
64394
+ flipVertical = this.parseBooleanAttr(xfrm["@_flipV"]);
63974
64395
  }
63975
64396
  const grpFillStyle = grpSpPr ? this.extractShapeStyle(grpSpPr) : void 0;
63976
64397
  const hasGroupFill = grpFillStyle && grpFillStyle.fillMode && grpFillStyle.fillMode !== "none";
@@ -64016,6 +64437,9 @@ var PptxHandlerRuntime67 = class _PptxHandlerRuntime extends PptxHandlerRuntime6
64016
64437
  y: parentY,
64017
64438
  width: parentW || Math.max(...children10.map((c) => c.x + c.width)),
64018
64439
  height: parentH || Math.max(...children10.map((c) => c.y + c.height)),
64440
+ rotation: groupRotation,
64441
+ flipHorizontal: flipHorizontal || void 0,
64442
+ flipVertical: flipVertical || void 0,
64019
64443
  children: children10,
64020
64444
  rawXml: group,
64021
64445
  actionClick: grpActionClick,
@@ -65032,9 +65456,9 @@ var PptxHandlerRuntime72 = class _PptxHandlerRuntime extends PptxHandlerRuntime7
65032
65456
  }
65033
65457
  const buClr = levelProps["a:buClr"];
65034
65458
  if (buClr) {
65035
- const srgb = buClr["a:srgbClr"];
65036
- if (srgb?.["@_val"]) {
65037
- style.bulletColor = String(srgb["@_val"]);
65459
+ const bulletColor = this.parseColor(buClr);
65460
+ if (bulletColor) {
65461
+ style.bulletColor = bulletColor;
65038
65462
  }
65039
65463
  }
65040
65464
  const buSzPts = levelProps["a:buSzPts"];
@@ -67536,6 +67960,89 @@ var PptxHandlerRuntime83 = class extends PptxHandlerRuntime82 {
67536
67960
  }
67537
67961
  };
67538
67962
 
67963
+ // src/core/core/runtime/smartart-drawing-shape-style.ts
67964
+ function extractDrawingShapeFill(spPr, deps) {
67965
+ const result = {};
67966
+ const solidFill2 = deps.getChild(spPr, "solidFill");
67967
+ if (solidFill2) {
67968
+ result.fillColor = deps.parseColor(solidFill2) ?? void 0;
67969
+ }
67970
+ const gradFill = !solidFill2 ? deps.getChild(spPr, "gradFill") : void 0;
67971
+ if (gradFill) {
67972
+ const stops = deps.extractGradientStops(gradFill).map((stop) => ({
67973
+ color: stop.color,
67974
+ position: stop.position,
67975
+ ...stop.opacity !== void 0 ? { opacity: stop.opacity } : {}
67976
+ }));
67977
+ if (stops.length > 0) {
67978
+ result.fillGradientStops = stops;
67979
+ result.fillGradientType = deps.extractGradientType(gradFill);
67980
+ result.fillGradientAngle = deps.extractGradientAngle(gradFill);
67981
+ result.fillColor ??= stops[Math.floor(stops.length / 2)]?.color;
67982
+ }
67983
+ }
67984
+ const pattFill = !solidFill2 && !gradFill ? deps.getChild(spPr, "pattFill") : void 0;
67985
+ if (pattFill) {
67986
+ const preset = String(pattFill["@_prst"] || "").trim();
67987
+ if (preset) {
67988
+ result.fillPatternPreset = preset;
67989
+ }
67990
+ const fg = deps.parseColor(deps.getChild(pattFill, "fgClr"));
67991
+ const bg = deps.parseColor(deps.getChild(pattFill, "bgClr"));
67992
+ if (fg) {
67993
+ result.fillPatternForegroundColor = fg;
67994
+ }
67995
+ if (bg) {
67996
+ result.fillPatternBackgroundColor = bg;
67997
+ }
67998
+ result.fillColor ??= fg ?? bg;
67999
+ }
68000
+ const blipFill = !solidFill2 && !gradFill && !pattFill ? deps.getChild(spPr, "blipFill") : void 0;
68001
+ if (blipFill) {
68002
+ const blip = deps.getChild(blipFill, "blip");
68003
+ const embed = String(
68004
+ blip?.["@_r:embed"] || blip?.["@_embed"] || blip?.["@_r:link"] || ""
68005
+ ).trim();
68006
+ if (embed) {
68007
+ result.fillBlipEmbedId = embed;
68008
+ }
68009
+ }
68010
+ const shadowColor = deps.extractShadowColor(spPr);
68011
+ if (shadowColor) {
68012
+ result.hasShadow = true;
68013
+ result.shadowColor = shadowColor;
68014
+ }
68015
+ return result;
68016
+ }
68017
+ function extractDrawingShapeTextStyle(txBody, deps) {
68018
+ let fontSize;
68019
+ let fontColor;
68020
+ if (!txBody) {
68021
+ return { fontSize, fontColor };
68022
+ }
68023
+ const paragraphs = deps.getChildren(txBody, "p");
68024
+ for (const p of paragraphs) {
68025
+ const runs = deps.getChildren(p, "r");
68026
+ for (const r of runs) {
68027
+ const rPr = deps.getChild(r, "rPr");
68028
+ if (rPr && !fontSize) {
68029
+ const szRaw = parseInt(String(rPr["@_sz"] || ""), 10);
68030
+ if (Number.isFinite(szRaw) && szRaw > 0) {
68031
+ fontSize = szRaw / 100;
68032
+ }
68033
+ fontColor = deps.parseColor(deps.getChild(rPr, "solidFill")) ?? void 0;
68034
+ }
68035
+ if (fontSize) {
68036
+ break;
68037
+ }
68038
+ }
68039
+ if (fontSize) {
68040
+ break;
68041
+ }
68042
+ }
68043
+ return { fontSize, fontColor };
68044
+ }
68045
+
67539
68046
  // src/core/core/runtime/smartart-text-style-resolution.ts
67540
68047
  function resolveSmartArtTextStyles(paragraphs, resolve) {
67541
68048
  for (const paragraph of paragraphs ?? []) {
@@ -67711,8 +68218,7 @@ var PptxHandlerRuntime84 = class _PptxHandlerRuntime extends PptxHandlerRuntime8
67711
68218
  };
67712
68219
  }
67713
68220
  }
67714
- const solidFill2 = this.xmlLookupService.getChildByLocalName(spPr, "solidFill");
67715
- const fillColor = this.parseColor(solidFill2);
68221
+ const fill = extractDrawingShapeFill(spPr, this.drawingShapeStyleDeps());
67716
68222
  const lnNode = this.xmlLookupService.getChildByLocalName(spPr, "ln");
67717
68223
  const lnFill = lnNode ? this.xmlLookupService.getChildByLocalName(lnNode, "solidFill") : void 0;
67718
68224
  const strokeColor = this.parseColor(lnFill);
@@ -67724,7 +68230,10 @@ var PptxHandlerRuntime84 = class _PptxHandlerRuntime extends PptxHandlerRuntime8
67724
68230
  this.collectLocalTextValues(txBody, "t", textValues2);
67725
68231
  }
67726
68232
  const text2 = textValues2.join("").trim() || void 0;
67727
- const { fontSize, fontColor } = this.extractDrawingShapeTextStyle(txBody);
68233
+ const { fontSize, fontColor } = extractDrawingShapeTextStyle(
68234
+ txBody,
68235
+ this.drawingShapeStyleDeps()
68236
+ );
67728
68237
  const paragraphs = txBody ? resolveSmartArtTextStyles(
67729
68238
  parseSmartArtTextParagraphs({ "dgm:t": txBody }),
67730
68239
  (rPr) => this.extractTextRunStyle(rPr, void 0, void 0, false)
@@ -67750,7 +68259,8 @@ var PptxHandlerRuntime84 = class _PptxHandlerRuntime extends PptxHandlerRuntime8
67750
68259
  rotation,
67751
68260
  skewX,
67752
68261
  skewY,
67753
- fillColor: fillColor ?? void 0,
68262
+ ...fill,
68263
+ fillColor: fill.fillColor ?? void 0,
67754
68264
  strokeColor: strokeColor ?? void 0,
67755
68265
  strokeWidth,
67756
68266
  text: structuredText,
@@ -67760,34 +68270,21 @@ var PptxHandlerRuntime84 = class _PptxHandlerRuntime extends PptxHandlerRuntime8
67760
68270
  ...customGeometry
67761
68271
  };
67762
68272
  }
67763
- extractDrawingShapeTextStyle(txBody) {
67764
- let fontSize;
67765
- let fontColor;
67766
- if (!txBody) {
67767
- return { fontSize, fontColor };
67768
- }
67769
- const paragraphs = this.xmlLookupService.getChildrenArrayByLocalName(txBody, "p");
67770
- for (const p of paragraphs) {
67771
- const runs = this.xmlLookupService.getChildrenArrayByLocalName(p, "r");
67772
- for (const r of runs) {
67773
- const rPr = this.xmlLookupService.getChildByLocalName(r, "rPr");
67774
- if (rPr && !fontSize) {
67775
- const szRaw = parseInt(String(rPr["@_sz"] || ""), 10);
67776
- if (Number.isFinite(szRaw) && szRaw > 0) {
67777
- fontSize = szRaw / 100;
67778
- }
67779
- const rprFill = this.xmlLookupService.getChildByLocalName(rPr, "solidFill");
67780
- fontColor = this.parseColor(rprFill) ?? void 0;
67781
- }
67782
- if (fontSize) {
67783
- break;
67784
- }
67785
- }
67786
- if (fontSize) {
67787
- break;
67788
- }
67789
- }
67790
- return { fontSize, fontColor };
68273
+ /**
68274
+ * Build the injected accessor bundle used by the pure drawing-shape style
68275
+ * helpers, binding the shared XML-lookup / colour / gradient / shadow codec
68276
+ * methods so no new colour logic is duplicated here.
68277
+ */
68278
+ drawingShapeStyleDeps() {
68279
+ return {
68280
+ getChild: (node, local) => this.xmlLookupService.getChildByLocalName(node, local),
68281
+ getChildren: (node, local) => this.xmlLookupService.getChildrenArrayByLocalName(node, local),
68282
+ parseColor: (node) => this.parseColor(node),
68283
+ extractGradientStops: (gradFill) => this.extractGradientStops(gradFill),
68284
+ extractGradientType: (gradFill) => this.extractGradientType(gradFill),
68285
+ extractGradientAngle: (gradFill) => this.extractGradientAngle(gradFill),
68286
+ extractShadowColor: (spPr) => this.extractShadowStyle(spPr).shadowColor
68287
+ };
67791
68288
  }
67792
68289
  };
67793
68290
 
@@ -70261,6 +70758,7 @@ var PptxHandlerRuntime95 = class _PptxHandlerRuntime extends PptxHandlerRuntime9
70261
70758
  });
70262
70759
  this.mediaDataParser = new PptxMediaDataParser({
70263
70760
  slideRelsMap: this.slideRelsMap,
70761
+ externalRelsMap: this.externalRelsMap,
70264
70762
  resolvePath: (base, relative) => this.resolvePath(base, relative),
70265
70763
  getPathExtension: (pathValue) => this.getPathExtension(pathValue)
70266
70764
  });
@@ -72951,9 +73449,9 @@ function removeEmptyDataPoint(series, pointIndex) {
72951
73449
  }
72952
73450
  }
72953
73451
  }
72954
- var EMU_PER_PIXEL = 9525;
73452
+ var EMU_PER_PIXEL2 = 9525;
72955
73453
  function pxToEmu(px2) {
72956
- return Math.round(px2 * EMU_PER_PIXEL);
73454
+ return Math.round(px2 * EMU_PER_PIXEL2);
72957
73455
  }
72958
73456
  function placeholderSpXml(ph, shapeId) {
72959
73457
  const name = ph.name ?? `${ph.type.charAt(0).toUpperCase() + ph.type.slice(1)} Placeholder ${shapeId - 1}`;
@@ -74707,7 +75205,7 @@ var GroupBuilder = class _GroupBuilder {
74707
75205
  // src/core/builders/sdk/units.ts
74708
75206
  var PPI = 96;
74709
75207
  var POINTS_PER_INCH = 72;
74710
- var EMU_PER_PIXEL2 = 9525;
75208
+ var EMU_PER_PIXEL3 = 9525;
74711
75209
  var EMU_PER_INCH = 914400;
74712
75210
  var EMU_PER_POINT = 12700;
74713
75211
  function inches(value) {
@@ -74723,10 +75221,10 @@ function pt(value) {
74723
75221
  return Math.round(value / POINTS_PER_INCH * PPI);
74724
75222
  }
74725
75223
  function emuToPixels(emu) {
74726
- return Math.round(emu / EMU_PER_PIXEL2);
75224
+ return Math.round(emu / EMU_PER_PIXEL3);
74727
75225
  }
74728
75226
  function pixelsToEmu(px2) {
74729
- return Math.round(px2 * EMU_PER_PIXEL2);
75227
+ return Math.round(px2 * EMU_PER_PIXEL3);
74730
75228
  }
74731
75229
  function inchesToEmu(value) {
74732
75230
  return Math.round(value * EMU_PER_INCH);
@@ -85034,4 +85532,4 @@ var SvgExporter = class _SvgExporter {
85034
85532
  * `<p:extLst>` (optional)
85035
85533
  */
85036
85534
 
85037
- 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, ELEMENT_FIELD_KIND, 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, OPENXML_COVERAGE, OPENXML_SCHEMA_CONSTRUCT_IDS, OPENXML_STRICT_SCHEMA_CONSTRUCT_IDS, OPENXML_TRANSITIONAL_SCHEMA_CONSTRUCT_IDS, 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, PptxHandlerRuntime96 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, SLIDE_FIELD_KIND, SMART_ART_DEFINITION_PARTS, 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, applyBubbleChartOptions, applyChartLayouts, applyChartManualLayout, applyChartUpDownBars, applyCustomShows, applyDiagramRelationshipIds, applyDrawingColorTransforms, applyDrawingLineDash, applyDrawingMediaReference, applyKinsokuToXml, applySections, applySmartArtConstraintRules, applySmartArtLayoutDefinition, applyTableCellTextAndStyle, applyTemplate, applyThemeOverrideToSlide, applyThemeToData, areNamespacesSupported, buildCalloutLeaderLineSvgPath, buildClrMapOverrideXml, buildFontFamilyString, buildGuideListExtension, buildInkMlContent, 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, decodeOle10Native, decodeXmlEntities, 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, extractGraphicBuilds, extractGuidFromPartName, extractModel3DTransform, extractStyleReferenceColorXml, extractTagAttribute, fetchUrlToBytes, findCustomShow, findLayoutByName, findLayoutByType, findOpenXmlCoverage, 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, isAlternateContentChoiceSupported, isAlternateContentChoiceXmlSupported, isCalloutShape, isConnectorElement, isEditableTextElement, isImageLikeElement, isInkElement, isNamespaceSupported, isOle2CompoundFile, isShapeElement, isStrictNamespaceUri, isSummaryZoomSlide, isSwitchableLayoutType, isTemplateElement, isTextElement, isTransitionalNamespaceUri, isValidBase64, isXmlNode, isZoomElement, isZoomElement2 as isZoomElementUtil, layoutEngineShapesToDrawingShapes, listUnassessedOpenXmlCoverage, lookupPresetShape, mailMerge, mergePresentation, mergeShapes, mergeStyleParts, mergeThemeColorOverride, mimeTypeForOleFile, mm, moveSlidesToSection, navigateCustomShow, normalizeHexColor, normalizeNamespaceUri, normalizePartPath, normalizePath, normalizeStrictXml, normalizeStrokeDashType, obfuscateFont, oleBytesToDataUrl, ooxmlArcToSvg, ooxmlToPresetName, orderedXmlKey, parseActiveXControlsFromSlide, parseAdjustmentValues, parseBodyPrBooleanAttrs, parseBubbleChartOptions, parseChart3DSurfaces, parseChartAxes, parseChartLayouts, parseChartManualLayout, parseChartUpDownBars, parseCondition, parseConditionList, parseCustomShows, parseCxChartSeries, parseDataTable, parseDataUrlToBytes, parseDiagramRelationshipIds, parseDrawingColor, parseDrawingColorChoice, parseDrawingColorOpacity, parseDrawingFraction, parseDrawingHueDegrees, parseDrawingLineDash, parseDrawingMediaReference, parseDrawingPercent, parseEmbeddedXlsx, parseGuideDefinitions, parseHexColor, parseInkMlContent, parseKinsoku, parseLayoutDefinition, parseLineStyle, parseMarker, parseOle2, parsePanoseBytes, parsePanoseString, parsePresentationDrawingGuides, parseSeriesDataLabels, parseSeriesDataPoints, parseSeriesErrBars, parseSeriesExplosion, parseSeriesTrendlines, parseShapeProps, parseSignatureXml, parseSlideDrawingGuides, parseSmartArtColorStyleLabels, parseSmartArtConstraintRules, parseSmartArtDefinitionHeaderList, parseSmartArtDefinitionMetadata, parseSmartArtLayoutDefinition, parseSmartArtQuickStyleLabels, parseStructuredCustomGeometry, parseSvgPath, parseTimeTargetElement, parseVmlElement, parseVmlElements, pixelsToEmu, polygonsToSvgPath, pptxActionToElementAction, promoteSmartArtNode, pt, reResolveSlideColors, readFileAsDataUrl, rebuildTableStructureInRawXml, reconcileAnimationTargets, reflowSmartArtLayout, relativeLuminance, relayoutSmartArt, remapEditorAnimationsToShapeIds, 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, serializeGraphicBuild, serializeSmartArtDefinitionHeaderList, serializeSvgPath, serializeTimeTargetElement, setChartAxis, setChartAxisGridlineStyle, setChartAxisLogScale, setChartAxisTitleStyle, setChartCategories, setChartDataLabels, setChartDataPointExplosion, setChartDataPointFill, setChartDataPointLabel, setChartDataPointMarker, setChartGrouping, setChartLegend, setChartSeriesChartType, setChartSeriesColor, setChartSeriesErrorBars, setChartSeriesMarker, setChartSeriesTrendline, setChartTitle, setChartType, setElementLocked, setSmartArtNodeStyle, shouldRenderFallbackLabel, shouldReturnToZoomSlide, stripParentDirSegments, stripXmlOrderSuffix, subtractPolygons, subtractShapes, subtractSvgPaths, summarizeOpenXmlCoverage, summarizeOpenXmlCoverageByVocabulary, svgPathToPolygons, switchSmartArtLayout, themeColorSchemesEqual, toHex, toStrictNamespaceUri, unionPolygons, unionShapes, unionSvgPaths, unwrapAlternateContent, unwrapOleEmbedding, updateCellTextInRawXml, updateCellTextStyleInRawXml, updateChartDataPoint, updateChartSeriesValues, updateMergeAttrsInRawXml, updateSmartArtNodeText, validatePptx, validateSmartArtColorStyleLabels, validateSmartArtConstraintRules, validateSmartArtDefinitionHeaderList, validateSmartArtDefinitionMetadata, validateSmartArtLayoutDefinition, verifyModifyPassword, verifyPassword, verifySignatureDigests, withThemePlaceholderColor, writeBodyPrBooleanAttrs, xmlAttr, xmlAttrBool, xmlAttrNumber, xmlChild, xmlChildren, xmlPath, xmlText };
85535
+ 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, ELEMENT_FIELD_KIND, EMPHASIS_PRESETS, EMU_PER_INCH, EMU_PER_PIXEL3 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, OPENXML_COVERAGE, OPENXML_SCHEMA_CONSTRUCT_IDS, OPENXML_STRICT_SCHEMA_CONSTRUCT_IDS, OPENXML_TRANSITIONAL_SCHEMA_CONSTRUCT_IDS, 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, PptxHandlerRuntime96 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, SLIDE_FIELD_KIND, SMART_ART_DEFINITION_PARTS, 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, applyBubbleChartOptions, applyChartLayouts, applyChartManualLayout, applyChartUpDownBars, applyCustomShows, applyDiagramRelationshipIds, applyDrawingColorTransforms, applyDrawingLineDash, applyDrawingMediaReference, applyKinsokuToXml, applySections, applySmartArtConstraintRules, applySmartArtLayoutDefinition, applyTableCellTextAndStyle, applyTemplate, applyThemeOverrideToSlide, applyThemeToData, areNamespacesSupported, buildCalloutLeaderLineSvgPath, buildClrMapOverrideXml, buildFontFamilyString, buildGuideListExtension, buildInkMlContent, 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, decodeOle10Native, decodeXmlEntities, 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, extractGraphicBuilds, extractGuidFromPartName, extractModel3DTransform, extractStyleReferenceColorXml, extractTagAttribute, fetchUrlToBytes, findCustomShow, findLayoutByName, findLayoutByType, findOpenXmlCoverage, 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, isAlternateContentChoiceSupported, isAlternateContentChoiceXmlSupported, isCalloutShape, isConnectorElement, isEditableTextElement, isImageLikeElement, isInkElement, isNamespaceSupported, isOle2CompoundFile, isShapeElement, isStrictNamespaceUri, isSummaryZoomSlide, isSwitchableLayoutType, isTemplateElement, isTextElement, isTransitionalNamespaceUri, isValidBase64, isXmlNode, isZoomElement, isZoomElement2 as isZoomElementUtil, layoutEngineShapesToDrawingShapes, listUnassessedOpenXmlCoverage, lookupPresetShape, mailMerge, mergePresentation, mergeShapes, mergeStyleParts, mergeThemeColorOverride, mimeTypeForOleFile, mm, moveSlidesToSection, navigateCustomShow, normalizeHexColor, normalizeNamespaceUri, normalizePartPath, normalizePath, normalizeStrictXml, normalizeStrokeDashType, obfuscateFont, oleBytesToDataUrl, ooxmlArcToSvg, ooxmlToPresetName, orderedXmlKey, parseActiveXControlsFromSlide, parseAdjustmentValues, parseBodyPrBooleanAttrs, parseBubbleChartOptions, parseChart3DSurfaces, parseChartAxes, parseChartLayouts, parseChartManualLayout, parseChartUpDownBars, parseCondition, parseConditionList, parseCustomShows, parseCxChartSeries, parseDataTable, parseDataUrlToBytes, parseDiagramRelationshipIds, parseDrawingColor, parseDrawingColorChoice, parseDrawingColorOpacity, parseDrawingFraction, parseDrawingHueDegrees, parseDrawingLineDash, parseDrawingMediaReference, parseDrawingPercent, parseEmbeddedXlsx, parseGuideDefinitions, parseHexColor, parseInkMlContent, parseKinsoku, parseLayoutDefinition, parseLineStyle, parseMarker, parseOle2, parsePanoseBytes, parsePanoseString, parsePresentationDrawingGuides, parseSeriesDataLabels, parseSeriesDataPoints, parseSeriesErrBars, parseSeriesExplosion, parseSeriesTrendlines, parseShapeProps, parseSignatureXml, parseSlideDrawingGuides, parseSmartArtColorStyleLabels, parseSmartArtConstraintRules, parseSmartArtDefinitionHeaderList, parseSmartArtDefinitionMetadata, parseSmartArtLayoutDefinition, parseSmartArtQuickStyleLabels, parseStructuredCustomGeometry, parseSvgPath, parseTimeTargetElement, parseVmlElement, parseVmlElements, pixelsToEmu, polygonsToSvgPath, pptxActionToElementAction, promoteSmartArtNode, pt, reResolveSlideColors, readFileAsDataUrl, rebuildTableStructureInRawXml, reconcileAnimationTargets, reflowSmartArtLayout, relativeLuminance, relayoutSmartArt, remapEditorAnimationsToShapeIds, 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, serializeGraphicBuild, serializeSmartArtDefinitionHeaderList, serializeSvgPath, serializeTimeTargetElement, setChartAxis, setChartAxisGridlineStyle, setChartAxisLogScale, setChartAxisTitleStyle, setChartCategories, setChartDataLabels, setChartDataPointExplosion, setChartDataPointFill, setChartDataPointLabel, setChartDataPointMarker, setChartGrouping, setChartLegend, setChartSeriesChartType, setChartSeriesColor, setChartSeriesErrorBars, setChartSeriesMarker, setChartSeriesTrendline, setChartTitle, setChartType, setElementLocked, setSmartArtNodeStyle, shouldRenderFallbackLabel, shouldReturnToZoomSlide, stripParentDirSegments, stripXmlOrderSuffix, subtractPolygons, subtractShapes, subtractSvgPaths, summarizeOpenXmlCoverage, summarizeOpenXmlCoverageByVocabulary, svgPathToPolygons, switchSmartArtLayout, themeColorSchemesEqual, toHex, toStrictNamespaceUri, unionPolygons, unionShapes, unionSvgPaths, unwrapAlternateContent, unwrapOleEmbedding, updateCellTextInRawXml, updateCellTextStyleInRawXml, updateChartDataPoint, updateChartSeriesValues, updateMergeAttrsInRawXml, updateSmartArtNodeText, validatePptx, validateSmartArtColorStyleLabels, validateSmartArtConstraintRules, validateSmartArtDefinitionHeaderList, validateSmartArtDefinitionMetadata, validateSmartArtLayoutDefinition, verifyModifyPassword, verifyPassword, verifySignatureDigests, withThemePlaceholderColor, writeBodyPrBooleanAttrs, xmlAttr, xmlAttrBool, xmlAttrNumber, xmlChild, xmlChildren, xmlPath, xmlText };