@office-open/pptx 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1,10 +1,10 @@
1
1
  import { i as __toCommonJS, n as __exportAll, r as __reExport, t as __esmMin } from "./chunk-DHfcOUro.mjs";
2
- import { AppProperties, BaseXmlComponent, BuilderElement, EmptyElement, Formatter, Formatter as Formatter$1, ImportedXmlComponent, OoxmlMimeType, PPTX_NS, Relationships, XmlComponent, addSmartArtRelationships, appendContentType, buildAttrObject, buildCorePropertiesXmlString, collectPlaceholderKeys, compileMapping, convertEmuToInches, convertEmuToPixels, convertEmuToPixels as convertEmuToPixels$1, convertEmuToPoints, convertInchesToEmu, convertPixelsToEmu, convertPixelsToEmu as convertPixelsToEmu$1, convertPointsToEmu, createPacker, createReplacer, formatId, getReferencedMedia, hasPlaceholders, hashedId, parseArchive, parseCorePropsElement, replaceChartPlaceholders, replaceImagePlaceholders, replaceSmartArtPlaceholders, strFromU8, stringContainerObj, toJson, uniqueId, uniqueNumericIdCreator, uniqueUuid, unzipSync, xsdLineEndSize, xsdRectAlignment, xsdStrikeStyle, xsdTextAlign, xsdTextAnchor, xsdTextCaps, xsdUnderlineStyle, zipAndConvert } from "@office-open/core";
2
+ import { AppProperties, BaseXmlComponent, BuilderElement, EmptyElement, Formatter, Formatter as Formatter$1, ImportedXmlComponent, OoxmlMimeType, PPTX_NS, Relationships, XmlComponent, addSmartArtRelationships, appendContentType, buildAttrObject, buildCorePropertiesXmlString, collectPlaceholderKeys, compileMapping, convertEmuToInches, convertEmuToPixels, convertEmuToPixels as convertEmuToPixels$1, convertEmuToPoints, convertInchesToEmu, convertPixelsToEmu, convertPixelsToEmu as convertPixelsToEmu$1, convertPointsToEmu, createPacker, createReplacer, createTableStyleList, derivePasswordHash, formatId, getReferencedMedia, hasPlaceholders, hashedId, parseArchive, parseCorePropsElement, replaceChartPlaceholders, replaceImagePlaceholders, replaceSmartArtPlaceholders, strFromU8, stringContainerObj, toJson, toUint8Array, uniqueId, uniqueNumericIdCreator, uniqueUuid, unzipSync, xsdLineEndSize, xsdRectAlignment, xsdStrikeStyle, xsdTextAlign, xsdTextAnchor, xsdTextCaps, xsdUnderlineStyle, zipAndConvert } from "@office-open/core";
3
3
  import { BevelPresetType, CompoundLine, LineCap, LineJoin, PathShadeType, PenAlignment, PresetDash, PresetGeometry, PresetMaterialType, Stretch, TileFlipMode, buildFill, createBevel, createBlip, createBottomBevel, createColorElement, createColorTransforms, createEffectList, createEffectList as createEffectList$1, createGradientFill, createGradientStop, createGroupTransform2D, createOutline, createOutline as createOutline$1, createScene3D, createScene3D as createScene3D$1, createShape3D, createShape3D as createShape3D$1, createTransform2D, extractBlipFillMedia } from "@office-open/core/drawingml";
4
4
  import { ChartCollection, ChartSpace } from "@office-open/core/chart";
5
5
  import { attr, attrBool, attrNum, children, colorAttr, escapeXml, findChild, findDeep, js2xml, textOf, xml, xml2js } from "@office-open/xml";
6
6
  import { DEFAULT_DRAWING_XML, SmartArtCollection, createDataModel, getColorXml, getLayoutXml, getStyleXml } from "@office-open/core/smartart";
7
- import { toUint8Array } from "undio";
7
+ import { DefaultTheme } from "@office-open/core/theme";
8
8
  export * from "@office-open/core/values";
9
9
  //#region src/file/drawingml/effects.ts
10
10
  /** Convert PPTX simple color to core SolidFillOptions. */
@@ -240,6 +240,10 @@ var SlideCommentList = class extends XmlComponent {
240
240
  ...comment.date != null ? { dt: {
241
241
  key: "dt",
242
242
  value: comment.date
243
+ } } : {},
244
+ ...comment.modified !== void 0 ? { mod: {
245
+ key: "mod",
246
+ value: comment.modified ? "1" : "0"
243
247
  } } : {}
244
248
  },
245
249
  children: [new BuilderElement({
@@ -271,6 +275,7 @@ const PPTX_SLIDE_LAYOUT = "application/vnd.openxmlformats-officedocument.present
271
275
  const PPTX_THEME = "application/vnd.openxmlformats-officedocument.theme+xml";
272
276
  const PPTX_NOTES = "application/vnd.openxmlformats-officedocument.presentationml.notesSlide+xml";
273
277
  const PPTX_NOTES_MASTER = "application/vnd.openxmlformats-officedocument.presentationml.notesMaster+xml";
278
+ const PPTX_HANDOUT_MASTER = "application/vnd.openxmlformats-officedocument.presentationml.handoutMaster+xml";
274
279
  const PPTX_COMMENTS = "application/vnd.openxmlformats-officedocument.presentationml.comments+xml";
275
280
  const PPTX_COMMENT_AUTHORS = "application/vnd.openxmlformats-officedocument.presentationml.commentAuthors+xml";
276
281
  const PPTX_CHART = "application/vnd.openxmlformats-officedocument.drawingml.chart+xml";
@@ -372,6 +377,13 @@ var ContentTypes = class extends BaseXmlComponent {
372
377
  key: "/ppt/notesMasters/notesMaster1.xml"
373
378
  });
374
379
  }
380
+ addHandoutMaster() {
381
+ this.dynamicEntries.push({
382
+ type: "Override",
383
+ contentType: PPTX_HANDOUT_MASTER,
384
+ key: "/ppt/handoutMasters/handoutMaster1.xml"
385
+ });
386
+ }
375
387
  addComments(index) {
376
388
  this.dynamicEntries.push({
377
389
  type: "Override",
@@ -585,6 +597,7 @@ function buildParagraphProperties(options) {
585
597
  if (options.marginIndent !== void 0) attrs.marL = options.marginIndent;
586
598
  if (options.marginRight !== void 0) attrs.marR = options.marginRight;
587
599
  if (options.defTabSize !== void 0) attrs.defTabSz = options.defTabSize;
600
+ if (options.fontAlignment) attrs.fontAlgn = options.fontAlignment;
588
601
  if (Object.keys(attrs).length > 0) children.push({ _attr: attrs });
589
602
  if (options.lineSpacing !== void 0) children.push({ "a:lnSpc": [{ "a:spcPct": { _attr: { val: options.lineSpacing * 1e3 } } }] });
590
603
  if (options.lineSpacingPoints !== void 0) children.push({ "a:lnSpc": [{ "a:spcPts": { _attr: { val: options.lineSpacingPoints * 100 } } }] });
@@ -665,13 +678,18 @@ function buildAttrString(options) {
665
678
  if (options.spacing !== void 0) attrs.push(`spc="${options.spacing}"`);
666
679
  if (options.noProof !== void 0) attrs.push(`noProof="${options.noProof ? 1 : 0}"`);
667
680
  if (options.dirty !== void 0) attrs.push(`dirty="${options.dirty ? 1 : 0}"`);
681
+ if (options.kumimoji !== void 0) attrs.push(`kumimoji="${options.kumimoji ? 1 : 0}"`);
682
+ if (options.alternateLanguage) attrs.push(`altLang="${options.alternateLanguage}"`);
683
+ if (options.normalizeHeight !== void 0) attrs.push(`normalizeH="${options.normalizeHeight ? 1 : 0}"`);
684
+ if (options.bookmarkMark) attrs.push(`bmk="${options.bookmarkMark}"`);
685
+ if (options.smartTagId) attrs.push(`smtId="${options.smartTagId}"`);
668
686
  return attrs.join(" ");
669
687
  }
670
688
  /**
671
689
  * Checks if options have any settable properties.
672
690
  */
673
691
  function hasRunProperties(options) {
674
- return !!(options.fontSize || options.bold !== void 0 || options.italic !== void 0 || options.underline || options.font || options.lang || options.fill || options.hyperlink || options.strike || options.baseline !== void 0 || options.spacing !== void 0 || options.capitalization || options.shadow !== void 0 || options.outline !== void 0 || options.rightToLeft !== void 0 || options.noProof !== void 0 || options.dirty !== void 0);
692
+ return !!(options.fontSize || options.bold !== void 0 || options.italic !== void 0 || options.underline || options.font || options.lang || options.fill || options.hyperlink || options.strike || options.baseline !== void 0 || options.spacing !== void 0 || options.capitalization || options.shadow !== void 0 || options.outline !== void 0 || options.rightToLeft !== void 0 || options.noProof !== void 0 || options.dirty !== void 0 || options.kumimoji !== void 0 || options.alternateLanguage !== void 0 || options.normalizeHeight !== void 0 || options.bookmarkMark !== void 0 || options.smartTagId !== void 0);
675
693
  }
676
694
  /**
677
695
  * a:rPr — Run properties (font, size, color, etc.).
@@ -712,8 +730,14 @@ var RunProperties = class extends XmlComponent {
712
730
  parts.push(`<a:ea typeface="${opts.font}"/>`);
713
731
  }
714
732
  if (opts.hyperlink && hyperlinkKey) {
715
- const tooltip = opts.hyperlink.tooltip ? ` tooltip="${opts.hyperlink.tooltip}"` : "";
716
- parts.push(`<a:hlinkClick r:id="{hlink:${hyperlinkKey}}"${tooltip}/>`);
733
+ const hl = opts.hyperlink;
734
+ const hlAttrs = [`r:id="{hlink:${hyperlinkKey}}"`];
735
+ if (hl.tooltip) hlAttrs.push(`tooltip="${hl.tooltip}"`);
736
+ if (hl.action) hlAttrs.push(`action="${hl.action}"`);
737
+ if (hl.highlightClick) hlAttrs.push("highlightClick=\"1\"");
738
+ if (hl.endSound) hlAttrs.push("endSnd=\"1\"");
739
+ if (hl.invalidUrl) hlAttrs.push("invalidUrl=\"1\"");
740
+ parts.push(`<a:hlinkClick ${hlAttrs.join(" ")}/>`);
717
741
  }
718
742
  if (opts.rightToLeft !== void 0) parts.push(`<a:rtl val="${opts.rightToLeft ? 1 : 0}"/>`);
719
743
  if (attrStr.length === 0 && parts.length === 0) return "";
@@ -788,6 +812,8 @@ function buildBodyPr(options) {
788
812
  if (options.margins?.right !== void 0) attrs.rIns = options.margins.right;
789
813
  if (options.columns !== void 0) attrs.numCol = options.columns;
790
814
  if (options.columnSpacing !== void 0) attrs.spcCol = options.columnSpacing * 100;
815
+ if (options.marginTop !== void 0) attrs.marT = options.marginTop;
816
+ if (options.marginBottom !== void 0) attrs.marB = options.marginBottom;
791
817
  if (Object.keys(attrs).length > 0) bodyPrContent.push({ _attr: attrs });
792
818
  bodyPrContent.push(...bodyPrChildren);
793
819
  return { "a:bodyPr": bodyPrContent.length === 1 && "_attr" in bodyPrContent[0] ? bodyPrContent[0] : bodyPrContent.length > 0 ? bodyPrContent : {} };
@@ -1076,30 +1102,81 @@ var NotesBodyPlaceholder = class extends XmlComponent {
1076
1102
  //#endregion
1077
1103
  //#region src/file/presentation-properties.ts
1078
1104
  init_xml_components();
1079
- function buildPresPropsXml(showOptions) {
1080
- if (!showOptions) return `<p:presentationPr xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main"/>`;
1105
+ const COLOR_MODE_XSD = {
1106
+ blackWhite: "bw",
1107
+ gray: "gray",
1108
+ color: "clr"
1109
+ };
1110
+ function buildWebPrXml(opts) {
1111
+ const attrs = [];
1112
+ if (opts.showAnimation) attrs.push(" showAnimation=\"1\"");
1113
+ if (opts.resizeGraphics === false) attrs.push(" resizeGraphics=\"0\"");
1114
+ if (opts.allowPng) attrs.push(" allowPng=\"1\"");
1115
+ if (opts.relyOnVml) attrs.push(" relyOnVml=\"1\"");
1116
+ if (opts.organizeInFolders === false) attrs.push(" organizeInFolders=\"0\"");
1117
+ if (opts.useLongFilenames === false) attrs.push(" useLongFilenames=\"0\"");
1118
+ if (opts.imageSize) attrs.push(` imgSz="${opts.imageSize}"`);
1119
+ if (opts.encoding) attrs.push(` encoding="${opts.encoding}"`);
1120
+ if (opts.color) attrs.push(` clr="${opts.color}"`);
1121
+ return `<p:webPr${attrs.join("")}/>`;
1122
+ }
1123
+ function buildPrnPrXml(opts) {
1124
+ const attrs = [];
1125
+ if (opts.printWhat) attrs.push(` prnWhat="${opts.printWhat}"`);
1126
+ if (opts.colorMode) attrs.push(` clrMode="${COLOR_MODE_XSD[opts.colorMode]}"`);
1127
+ if (opts.hiddenSlides) attrs.push(" hiddenSlides=\"1\"");
1128
+ if (opts.scaleToFitPaper) attrs.push(" scaleToFitPaper=\"1\"");
1129
+ if (opts.frameSlides) attrs.push(" frameSlides=\"1\"");
1130
+ return `<p:prnPr${attrs.join("")}/>`;
1131
+ }
1132
+ function buildHtmlPubPrXml(opts) {
1081
1133
  const attrs = [];
1082
- if (showOptions.loop) attrs.push(" loop=\"1\"");
1083
- if (showOptions.showNarration === false) attrs.push(" showNarration=\"0\"");
1084
- if (showOptions.useTimings) attrs.push(" useTimings=\"1\"");
1085
- const showType = showOptions.kiosk ? "<p:kiosk/>" : "<p:present/>";
1086
- return `<p:presentationPr xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main">${`<p:showPr${attrs.join("")}>${showType}</p:showPr>`}</p:presentationPr>`;
1134
+ if (opts.showSpeakerNotes === false) attrs.push(" showSpeakerNotes=\"0\"");
1135
+ if (opts.target) attrs.push(` target="${opts.target}"`);
1136
+ if (opts.title) attrs.push(` title="${opts.title}"`);
1137
+ if (opts.rId) attrs.push(` r:id="${opts.rId}"`);
1138
+ return `<p:htmlPubPr${attrs.join("")}><p:sldAll/></p:htmlPubPr>`;
1139
+ }
1140
+ function buildShowPrXml(showOptions) {
1141
+ const showPrAttrs = [];
1142
+ if (showOptions.loop) showPrAttrs.push(" loop=\"1\"");
1143
+ if (showOptions.showNarration === false) showPrAttrs.push(" showNarration=\"0\"");
1144
+ if (showOptions.showAnimation === false) showPrAttrs.push(" showAnimation=\"0\"");
1145
+ if (showOptions.useTimings) showPrAttrs.push(" useTimings=\"1\"");
1146
+ const showType = showOptions.type ?? "present";
1147
+ let showTypeXml;
1148
+ if (showType === "kiosk") showTypeXml = `<p:kiosk${showOptions.restart !== void 0 ? ` restart="${showOptions.restart}"` : ""}/>`;
1149
+ else if (showType === "browse") showTypeXml = `<p:browse${showOptions.showScrollbar === false ? " showScrollbar=\"0\"" : ""}/>`;
1150
+ else showTypeXml = "<p:present/>";
1151
+ let slideListXml = "<p:sldAll/>";
1152
+ if (showOptions.slideRange) slideListXml = `<p:sldRg st="${showOptions.slideRange.start}" end="${showOptions.slideRange.end}"/>`;
1153
+ let penClrXml = "";
1154
+ if (showOptions.penColor) penClrXml = `<p:penClr><a:srgbClr val="${showOptions.penColor}"/></p:penClr>`;
1155
+ return `<p:showPr${showPrAttrs.join("")}>${showTypeXml}${slideListXml}${penClrXml}</p:showPr>`;
1156
+ }
1157
+ function buildPresPropsXml(opts) {
1158
+ const ns = "xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" xmlns:p=\"http://schemas.openxmlformats.org/presentationml/2006/main\"";
1159
+ if (!opts) return `<p:presentationPr ${ns}/>`;
1160
+ const children = [];
1161
+ if (opts.htmlPublish) children.push(buildHtmlPubPrXml(opts.htmlPublish));
1162
+ if (opts.web) children.push(buildWebPrXml(opts.web));
1163
+ if (opts.print) children.push(buildPrnPrXml(opts.print));
1164
+ if (opts.show) children.push(buildShowPrXml(opts.show));
1165
+ if (children.length === 0) return `<p:presentationPr ${ns}/>`;
1166
+ return `<p:presentationPr ${ns}>${children.join("")}</p:presentationPr>`;
1087
1167
  }
1088
1168
  var PresentationProperties = class PresentationProperties extends ImportedXmlComponent {
1089
1169
  static cache = /* @__PURE__ */ new Map();
1090
1170
  key;
1091
- constructor(showOptions) {
1171
+ constructor(opts) {
1092
1172
  super("p:presentationPr");
1093
- this.key = showOptions ? presPropsKey(showOptions) : "";
1094
- if (!PresentationProperties.cache.has(this.key)) PresentationProperties.cache.set(this.key, ImportedXmlComponent.fromXmlString(buildPresPropsXml(showOptions)));
1173
+ this.key = opts ? JSON.stringify(opts) : "";
1174
+ if (!PresentationProperties.cache.has(this.key)) PresentationProperties.cache.set(this.key, ImportedXmlComponent.fromXmlString(buildPresPropsXml(opts)));
1095
1175
  }
1096
1176
  toXml(context) {
1097
1177
  return PresentationProperties.cache.get(this.key).toXml(context);
1098
1178
  }
1099
1179
  };
1100
- function presPropsKey(o) {
1101
- return `l${o.loop ? 1 : 0}k${o.kiosk ? 1 : 0}n${o.showNarration ? 1 : 0}t${o.useTimings ? 1 : 0}`;
1102
- }
1103
1180
  //#endregion
1104
1181
  //#region src/file/presentation/presentation.ts
1105
1182
  init_xml_components();
@@ -1149,22 +1226,78 @@ var Presentation = class extends XmlComponent {
1149
1226
  notesMasterRId: rId
1150
1227
  };
1151
1228
  }
1229
+ setHandoutMasterRId(rId) {
1230
+ this.options = {
1231
+ ...this.options,
1232
+ handoutMasterRId: rId
1233
+ };
1234
+ }
1152
1235
  toXml(_context) {
1153
1236
  const opts = this.options;
1154
1237
  const cx = opts.slideWidth ?? 12192e3;
1155
1238
  const cy = opts.slideHeight ?? 6858e3;
1156
- let s = `<p:presentation xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main">`;
1239
+ const rootAttrs = [];
1240
+ if (opts.serverZoom) rootAttrs.push(` serverZoom="${opts.serverZoom}"`);
1241
+ if (opts.firstSlideNum !== void 0) rootAttrs.push(` firstSlideNum="${opts.firstSlideNum}"`);
1242
+ if (opts.showSpecialPlsOnTitleSld === false) rootAttrs.push(" showSpecialPlsOnTitleSld=\"0\"");
1243
+ if (opts.rtl) rootAttrs.push(" rtl=\"1\"");
1244
+ if (opts.removePersonalInfoOnSave) rootAttrs.push(" removePersonalInfoOnSave=\"1\"");
1245
+ if (opts.compatMode) rootAttrs.push(" compatMode=\"1\"");
1246
+ if (opts.strictFirstAndLastChars === false) rootAttrs.push(" strictFirstAndLastChars=\"0\"");
1247
+ if (opts.embedTrueTypeFonts) rootAttrs.push(" embedTrueTypeFonts=\"1\"");
1248
+ if (opts.saveSubsetFonts) rootAttrs.push(" saveSubsetFonts=\"1\"");
1249
+ if (opts.autoCompressPictures === false) rootAttrs.push(" autoCompressPictures=\"0\"");
1250
+ if (opts.bookmarkIdSeed !== void 0) rootAttrs.push(` bookmarkIdSeed="${opts.bookmarkIdSeed}"`);
1251
+ if (opts.conformance) rootAttrs.push(` conformance="${opts.conformance}"`);
1252
+ let s = `<p:presentation xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main"${rootAttrs.join("")}>`;
1157
1253
  s += "<p:sldMasterIdLst>";
1158
1254
  for (let mi = 0; mi < opts.masterCount; mi++) s += `<p:sldMasterId id="${2147483648 + mi * 12}" r:id="rId${mi + 1}"/>`;
1159
1255
  s += "</p:sldMasterIdLst>";
1160
1256
  if (opts.notesMasterRId) s += `<p:notesMasterIdLst><p:notesMasterId r:id="rId${opts.notesMasterRId}"/></p:notesMasterIdLst>`;
1257
+ if (opts.handoutMasterRId) s += `<p:handoutMasterIdLst><p:handoutMasterId r:id="rId${opts.handoutMasterRId}"/></p:handoutMasterIdLst>`;
1161
1258
  s += "<p:sldIdLst>";
1162
1259
  const sRidOff = opts.masterCount + 1;
1163
1260
  for (let i = 0; i < opts.slideIds.length; i++) s += `<p:sldId id="${opts.slideIds[i]}" r:id="rId${sRidOff + i}"/>`;
1164
1261
  s += "</p:sldIdLst>";
1165
1262
  s += `<p:sldSz cx="${cx}" cy="${cy}"/>`;
1166
1263
  s += "<p:notesSz cx=\"6858000\" cy=\"9144000\"/>";
1264
+ if (opts.photoAlbum) {
1265
+ const pa = opts.photoAlbum;
1266
+ const paAttrs = [];
1267
+ if (pa.blackWhite) paAttrs.push(" bw=\"1\"");
1268
+ if (pa.showCaptions) paAttrs.push(" showCaptions=\"1\"");
1269
+ if (pa.layout) paAttrs.push(` layout="${pa.layout}"`);
1270
+ if (pa.frame) paAttrs.push(` frame="${pa.frame}"`);
1271
+ s += `<p:photoAlbum${paAttrs.join("")}/>`;
1272
+ }
1167
1273
  s += DEFAULT_TEXT_STYLE_XML;
1274
+ if (opts.modifyVerifier) {
1275
+ const mv = opts.modifyVerifier;
1276
+ let derived;
1277
+ if (mv.password !== void 0 && mv.hashValue === void 0) derived = derivePasswordHash(mv.password);
1278
+ const hashValue = mv.hashValue ?? derived?.hashValue;
1279
+ const saltValue = mv.saltValue ?? derived?.saltValue;
1280
+ const spinCount = mv.spinCount ?? derived?.spinCount;
1281
+ const algorithmName = mv.algorithmName ?? derived?.algorithmName;
1282
+ const mvAttrs = [];
1283
+ if (algorithmName) mvAttrs.push(` algorithmName="${algorithmName}"`);
1284
+ if (hashValue) mvAttrs.push(` hashValue="${hashValue}"`);
1285
+ if (saltValue) mvAttrs.push(` saltValue="${saltValue}"`);
1286
+ if (mv.spinValue !== void 0) mvAttrs.push(` spinValue="${mv.spinValue}"`);
1287
+ if (mv.cryptoProviderType) mvAttrs.push(` cryptProviderType="${mv.cryptoProviderType}"`);
1288
+ if (mv.cryptoAlgorithmClass) mvAttrs.push(` cryptAlgorithmClass="${mv.cryptoAlgorithmClass}"`);
1289
+ if (mv.cryptoAlgorithmType) mvAttrs.push(` cryptAlgorithmType="${mv.cryptoAlgorithmType}"`);
1290
+ if (mv.cryptoAlgorithmSid !== void 0) mvAttrs.push(` cryptAlgorithmSid="${mv.cryptoAlgorithmSid}"`);
1291
+ if (spinCount !== void 0) mvAttrs.push(` spinCount="${spinCount}"`);
1292
+ if (mv.saltData) mvAttrs.push(` saltData="${mv.saltData}"`);
1293
+ if (mv.hashData) mvAttrs.push(` hashData="${mv.hashData}"`);
1294
+ if (mv.cryptoProvider) mvAttrs.push(` cryptProvider="${mv.cryptoProvider}"`);
1295
+ if (mv.algorithmExtensionId !== void 0) mvAttrs.push(` algIdExt="${mv.algorithmExtensionId}"`);
1296
+ if (mv.algorithmExtensionSource) mvAttrs.push(` algIdExtSource="${mv.algorithmExtensionSource}"`);
1297
+ if (mv.cryptoProviderTypeExtension !== void 0) mvAttrs.push(` cryptProviderTypeExt="${mv.cryptoProviderTypeExtension}"`);
1298
+ if (mv.cryptoProviderTypeExtensionSource) mvAttrs.push(` cryptProviderTypeExtSource="${mv.cryptoProviderTypeExtensionSource}"`);
1299
+ s += `<p:modifyVerifier${mvAttrs.join("")}/>`;
1300
+ }
1168
1301
  s += "</p:presentation>";
1169
1302
  return s;
1170
1303
  }
@@ -1593,6 +1726,136 @@ var VideoFrame = class VideoFrame extends MediaFrameBase {
1593
1726
  }
1594
1727
  };
1595
1728
  //#endregion
1729
+ //#region src/file/ole/ole-frame.ts
1730
+ /**
1731
+ * OLE Object frame for PresentationML — p:graphicFrame with p:oleObj.
1732
+ *
1733
+ * Embeds an OLE object (e.g., Excel worksheet, Word document) on a slide.
1734
+ *
1735
+ * Reference: OOXML transitional, pml.xsd, CT_OleObject
1736
+ *
1737
+ * @module
1738
+ */
1739
+ init_xml_components();
1740
+ let nextOleId = 2048;
1741
+ /**
1742
+ * p:graphicFrame — Slide-level graphic frame wrapping an OLE object.
1743
+ *
1744
+ * Produces the AlternateContent wrapper needed by PowerPoint to render OLE objects.
1745
+ */
1746
+ var OleFrame = class extends XmlComponent {
1747
+ options;
1748
+ constructor(options) {
1749
+ super("p:graphicFrame");
1750
+ this.options = options;
1751
+ const id = nextOleId++;
1752
+ const name = options.name ?? `Object ${id}`;
1753
+ this.root.push(new OleGraphicFrameNonVisual(id, name));
1754
+ this.root.push(new Transform2D({ ...emuPosition(options) }, "p"));
1755
+ this.root.push(new OleGraphic(options));
1756
+ }
1757
+ toXml(context) {
1758
+ const file = context.fileData;
1759
+ if (file?.oleObjects) file.oleObjects.push({
1760
+ key: `ole_${this.options.spid ?? "1"}`,
1761
+ rId: this.options.embed?.rId ?? this.options.link?.rId ?? "",
1762
+ progId: this.options.progId
1763
+ });
1764
+ return super.toXml(context);
1765
+ }
1766
+ };
1767
+ var OleGraphicFrameNonVisual = class extends XmlComponent {
1768
+ constructor(id, name) {
1769
+ super("p:nvGraphicFramePr");
1770
+ this.root.push(new BuilderElement({
1771
+ name: "p:cNvPr",
1772
+ attributes: {
1773
+ id: {
1774
+ key: "id",
1775
+ value: id
1776
+ },
1777
+ name: {
1778
+ key: "name",
1779
+ value: name
1780
+ }
1781
+ }
1782
+ }));
1783
+ this.root.push(new BuilderElement({
1784
+ name: "p:cNvGraphicFramePr",
1785
+ children: [new BuilderElement({
1786
+ name: "a:graphicFrameLocks",
1787
+ attributes: { noGrp: {
1788
+ key: "noGrp",
1789
+ value: 1
1790
+ } }
1791
+ })]
1792
+ }));
1793
+ this.root.push(new BuilderElement({ name: "p:nvPr" }));
1794
+ }
1795
+ };
1796
+ var OleGraphic = class extends XmlComponent {
1797
+ constructor(options) {
1798
+ super("a:graphic");
1799
+ this.root.push(new OleGraphicData(options));
1800
+ }
1801
+ };
1802
+ var OleGraphicData = class extends XmlComponent {
1803
+ constructor(options) {
1804
+ super("a:graphicData");
1805
+ this.root.push(buildAttrObject({ uri: "http://schemas.openxmlformats.org/presentationml/2006/ole" }));
1806
+ this.root.push(new OleObjectElement(options));
1807
+ }
1808
+ };
1809
+ var OleObjectElement = class extends XmlComponent {
1810
+ constructor(options) {
1811
+ super("p:oleObj");
1812
+ const attrs = { name: options.name ?? "OLE Object" };
1813
+ if (options.spid) attrs.spid = options.spid;
1814
+ if (options.showAsIcon) attrs.showAsIcon = 1;
1815
+ if (options.imgW) attrs.imgW = options.imgW;
1816
+ if (options.imgH) attrs.imgH = options.imgH;
1817
+ if (options.progId) attrs.progId = options.progId;
1818
+ if (options.followColorScheme) attrs.followColorScheme = options.followColorScheme;
1819
+ const rId = options.embed?.rId ?? options.link?.rId;
1820
+ if (rId) attrs["r:id"] = rId;
1821
+ this.root.push(buildAttrObject(attrs));
1822
+ if (options.embed) this.root.push(new BuilderElement({ name: "p:embed" }));
1823
+ else if (options.link) this.root.push(new BuilderElement({
1824
+ name: "p:link",
1825
+ attributes: options.link.autoUpdate ? { updateAutomatic: {
1826
+ key: "updateAutomatic",
1827
+ value: 1
1828
+ } } : void 0
1829
+ }));
1830
+ if (options.imgRId) this.root.push(new OlePic(options));
1831
+ }
1832
+ };
1833
+ var OlePic = class extends XmlComponent {
1834
+ constructor(options) {
1835
+ super("p:pic");
1836
+ this.root.push(new BuilderElement({
1837
+ name: "p:nvPicPr",
1838
+ children: [
1839
+ new BuilderElement({
1840
+ name: "p:cNvPr",
1841
+ attributes: {
1842
+ id: {
1843
+ key: "id",
1844
+ value: 2
1845
+ },
1846
+ name: {
1847
+ key: "name",
1848
+ value: options.name ?? "OLE Preview"
1849
+ }
1850
+ }
1851
+ }),
1852
+ new BuilderElement({ name: "p:cNvPicPr" }),
1853
+ new BuilderElement({ name: "p:nvPr" })
1854
+ ]
1855
+ }));
1856
+ }
1857
+ };
1858
+ //#endregion
1596
1859
  //#region src/file/drawingml/blip-fill.ts
1597
1860
  init_xml_components();
1598
1861
  /**
@@ -2063,9 +2326,20 @@ var Shape = class Shape extends XmlComponent {
2063
2326
  if (opts.placeholder) {
2064
2327
  const phAttrs = [`type="${opts.placeholder}"`];
2065
2328
  if (opts.placeholderIndex !== void 0) phAttrs.push(`idx="${opts.placeholderIndex}"`);
2329
+ if (opts.hasCustomPrompt) phAttrs.push("hasCustomPrompt=\"1\"");
2066
2330
  nvPrContent = `<p:nvPr><p:ph ${phAttrs.join(" ")}/></p:nvPr>`;
2331
+ } else if (opts.isPhoto || opts.userDrawn) {
2332
+ const nvPrAttrs = [];
2333
+ if (opts.isPhoto) nvPrAttrs.push("isPhoto=\"1\"");
2334
+ if (opts.userDrawn) nvPrAttrs.push("userDrawn=\"1\"");
2335
+ nvPrContent = `<p:nvPr ${nvPrAttrs.join(" ")}/>`;
2336
+ }
2337
+ let cNvSpPrContent = "<p:cNvSpPr/>";
2338
+ if (opts.locking) {
2339
+ const lockAttrs = buildLockAttrs(opts.locking);
2340
+ if (lockAttrs.length > 0) cNvSpPrContent = `<p:cNvSpPr><a:spLocks ${lockAttrs.join(" ")}/></p:cNvSpPr>`;
2067
2341
  }
2068
- parts.push(`<p:nvSpPr><p:cNvPr id="${id}" name="${escapeXml(name)}"/><p:cNvSpPr/>${nvPrContent}</p:nvSpPr>`);
2342
+ parts.push(`<p:nvSpPr><p:cNvPr id="${id}" name="${escapeXml(name)}"/>${cNvSpPrContent}${nvPrContent}</p:nvSpPr>`);
2069
2343
  const spPrXml = new ShapeProperties({
2070
2344
  ...emuPositionOptional(opts),
2071
2345
  geometry: opts.geometry,
@@ -2078,9 +2352,33 @@ var Shape = class Shape extends XmlComponent {
2078
2352
  if (spPrXml) parts.push(spPrXml);
2079
2353
  const txBody = new TextBody(opts.textBody ?? {});
2080
2354
  parts.push(txBody.toXml(context));
2081
- return `<p:sp>${parts.join("")}</p:sp>`;
2355
+ const spAttrs = [];
2356
+ if (opts.useBackgroundFill) spAttrs.push(" useBgFill=\"1\"");
2357
+ if (opts.blackWhiteMode) spAttrs.push(` bwMode="${opts.blackWhiteMode}"`);
2358
+ return `<p:sp${spAttrs.join("")}>${parts.join("")}</p:sp>`;
2082
2359
  }
2083
2360
  };
2361
+ /** Build locking attribute string[] from ShapeLockingOptions. */
2362
+ function buildLockAttrs(opts) {
2363
+ const attrs = [];
2364
+ for (const key of [
2365
+ "noGrp",
2366
+ "noSelect",
2367
+ "noRot",
2368
+ "noChangeAspect",
2369
+ "noMove",
2370
+ "noResize",
2371
+ "noEditPoints",
2372
+ "noAdjustHandles",
2373
+ "noChangeArrowheads",
2374
+ "noChangeShapeType",
2375
+ "noTextEdit"
2376
+ ]) {
2377
+ const val = opts[key];
2378
+ if (val !== void 0) attrs.push(`${key}="${val ? 1 : 0}"`);
2379
+ }
2380
+ return attrs;
2381
+ }
2084
2382
  //#endregion
2085
2383
  //#region src/file/smartart/smartart-frame.ts
2086
2384
  init_xml_components();
@@ -2272,7 +2570,9 @@ var TableProperties = class extends BaseXmlComponent {
2272
2570
  if (opts.firstCol !== void 0) attrs.push(`firstCol="${opts.firstCol ? 1 : 0}"`);
2273
2571
  if (opts.lastCol !== void 0) attrs.push(`lastCol="${opts.lastCol ? 1 : 0}"`);
2274
2572
  if (opts.bandCol !== void 0) attrs.push(`bandCol="${opts.bandCol ? 1 : 0}"`);
2275
- return attrs.length === 0 ? "<a:tblPr/>" : `<a:tblPr ${attrs.join(" ")}/>`;
2573
+ if (attrs.length === 0 && !opts.tableStyleId) return "<a:tblPr/>";
2574
+ const styleId = opts.tableStyleId ? `<a:tableStyleId>${opts.tableStyleId}</a:tableStyleId>` : "";
2575
+ return `<a:tblPr ${attrs.join(" ")}>${styleId}</a:tblPr>`;
2276
2576
  }
2277
2577
  };
2278
2578
  //#endregion
@@ -2346,6 +2646,8 @@ var TableCell = class extends BaseXmlComponent {
2346
2646
  const tcAttrs = [];
2347
2647
  if (opts.columnSpan !== void 0 && opts.columnSpan > 1) tcAttrs.push(`gridSpan="${opts.columnSpan}"`);
2348
2648
  if (opts.rowSpan !== void 0 && opts.rowSpan > 1) tcAttrs.push(`rowSpan="${opts.rowSpan}"`);
2649
+ if (opts.horizontalMerge) tcAttrs.push(`hMerge="${opts.horizontalMerge === "restart" ? "1" : "0"}"`);
2650
+ if (opts.verticalMerge) tcAttrs.push(`vMerge="${opts.verticalMerge === "restart" ? "1" : "0"}"`);
2349
2651
  const tcAttrStr = tcAttrs.length > 0 ? ` ${tcAttrs.join(" ")}` : "";
2350
2652
  const txParts = [];
2351
2653
  const margins = opts.margins;
@@ -2411,7 +2713,8 @@ var DrawingTable = class extends BaseXmlComponent {
2411
2713
  bandRow: opts.bandRow,
2412
2714
  firstCol: opts.firstCol,
2413
2715
  lastCol: opts.lastCol,
2414
- bandCol: opts.bandCol
2716
+ bandCol: opts.bandCol,
2717
+ tableStyleId: opts.tableStyleId
2415
2718
  });
2416
2719
  parts.push(tblPr.toXml(context));
2417
2720
  const colWidths = opts.columnWidths && opts.columnWidths.length > 0 ? opts.columnWidths : Array.from({ length: opts.rows[0]?.cells.length ?? 1 }, () => 0);
@@ -2483,6 +2786,7 @@ function coerceChild(child) {
2483
2786
  if ("audio" in child) return new AudioFrame(child.audio);
2484
2787
  if ("group" in child) return new GroupShape(child.group);
2485
2788
  if ("smartart" in child) return new SmartArt(child.smartart);
2789
+ if ("ole" in child) return new OleFrame(child.ole);
2486
2790
  throw new Error("Unknown slide child type");
2487
2791
  }
2488
2792
  function coerceMasterChild(child) {
@@ -2690,7 +2994,7 @@ function buildCustomLayoutXml(def) {
2690
2994
  const offset = nextId - 1;
2691
2995
  shapes.push(childrenXml.replace(/ id="(\d+)"/g, (_, n) => ` id="${parseInt(n) + offset}"`));
2692
2996
  }
2693
- return `<p:sldLayout ${NS} type="${layoutType}" preserve="1"><p:cSld name="${displayName}"><p:spTree>${SP_TREE_HEADER}${shapes.join("")}</p:spTree></p:cSld><p:clrMapOvr><a:masterClrMapping/></p:clrMapOvr></p:sldLayout>`;
2997
+ return `<p:sldLayout ${NS} type="${layoutType}" preserve="1"${def.matchingName !== void 0 ? ` matchingName="${def.matchingName}"` : ""}><p:cSld name="${displayName}"><p:spTree>${SP_TREE_HEADER}${shapes.join("")}</p:spTree></p:cSld><p:clrMapOvr><a:masterClrMapping/></p:clrMapOvr></p:sldLayout>`;
2694
2998
  }
2695
2999
  var SlideLayout = class SlideLayout extends ImportedXmlComponent {
2696
3000
  static cache = /* @__PURE__ */ new Map();
@@ -3101,19 +3405,23 @@ function buildEntrOrExitEffects(options, spid, ids) {
3101
3405
  if (options.type === "wheel") filter = "wheel(4)";
3102
3406
  else if (options.type === "split") filter = `split(${options.direction ?? "horizontal"})`;
3103
3407
  else if (dirFilter) filter = `${filterBase}(${dirFilter})`;
3104
- const transition = cls === "exit" ? "out" : "in";
3408
+ const animEffectAttrs = {
3409
+ transition: {
3410
+ key: "transition",
3411
+ value: cls === "exit" ? "out" : "in"
3412
+ },
3413
+ filter: {
3414
+ key: "filter",
3415
+ value: filter
3416
+ }
3417
+ };
3418
+ if (options.propertyList) animEffectAttrs.prLst = {
3419
+ key: "prLst",
3420
+ value: options.propertyList
3421
+ };
3105
3422
  children.push(new BuilderElement({
3106
3423
  name: "p:animEffect",
3107
- attributes: {
3108
- transition: {
3109
- key: "transition",
3110
- value: transition
3111
- },
3112
- filter: {
3113
- key: "filter",
3114
- value: filter
3115
- }
3116
- },
3424
+ attributes: animEffectAttrs,
3117
3425
  children: [new BuilderElement({
3118
3426
  name: "p:cBhvr",
3119
3427
  children: [new BuilderElement({
@@ -3389,18 +3697,23 @@ function buildEmphasisEffects(options, spid, ids) {
3389
3697
  function buildPathEffects(options, spid, ids) {
3390
3698
  const pathStr = options.path ?? PATH_STRINGS[options.pathType ?? "customPath"] ?? "";
3391
3699
  const dur = String(options.duration ?? 1e3);
3700
+ const animMotionAttrs = {
3701
+ origin: {
3702
+ key: "origin",
3703
+ value: "layout"
3704
+ },
3705
+ path: {
3706
+ key: "path",
3707
+ value: pathStr
3708
+ }
3709
+ };
3710
+ if (options.pointsTypes) animMotionAttrs.ptsTypes = {
3711
+ key: "ptsTypes",
3712
+ value: options.pointsTypes
3713
+ };
3392
3714
  return [new BuilderElement({
3393
3715
  name: "p:animMotion",
3394
- attributes: {
3395
- origin: {
3396
- key: "origin",
3397
- value: "layout"
3398
- },
3399
- path: {
3400
- key: "path",
3401
- value: pathStr
3402
- }
3403
- },
3716
+ attributes: animMotionAttrs,
3404
3717
  children: [new BuilderElement({
3405
3718
  name: "p:cBhvr",
3406
3719
  children: [new BuilderElement({
@@ -3473,6 +3786,128 @@ function buildMediaPlayCommand(options, spid, ids) {
3473
3786
  });
3474
3787
  }
3475
3788
  /**
3789
+ * Build generic p:cmd with configurable type (call/evt/verb).
3790
+ */
3791
+ function buildCommand(options, spid, ids) {
3792
+ const cmdType = options.commandType ?? "call";
3793
+ const cmdStr = options.command ?? "";
3794
+ return new BuilderElement({
3795
+ name: "p:cmd",
3796
+ attributes: {
3797
+ type: {
3798
+ key: "type",
3799
+ value: cmdType
3800
+ },
3801
+ cmd: {
3802
+ key: "cmd",
3803
+ value: cmdStr
3804
+ }
3805
+ },
3806
+ children: [new BuilderElement({
3807
+ name: "p:cBhvr",
3808
+ children: [new BuilderElement({
3809
+ name: "p:cTn",
3810
+ attributes: {
3811
+ id: {
3812
+ key: "id",
3813
+ value: ids.cmd
3814
+ },
3815
+ dur: {
3816
+ key: "dur",
3817
+ value: String(options.duration ?? 1e3)
3818
+ },
3819
+ fill: {
3820
+ key: "fill",
3821
+ value: "hold"
3822
+ }
3823
+ }
3824
+ }), buildTargetElement(spid)]
3825
+ })]
3826
+ });
3827
+ }
3828
+ /**
3829
+ * Build p:set for an instant property change (setBehavior).
3830
+ */
3831
+ function buildSetBehavior(setOptions, spid, ids) {
3832
+ const toValName = setOptions.toType === "number" ? "p:numVal" : "p:strVal";
3833
+ return new BuilderElement({
3834
+ name: "p:set",
3835
+ children: [new BuilderElement({
3836
+ name: "p:cBhvr",
3837
+ children: [
3838
+ new BuilderElement({
3839
+ name: "p:cTn",
3840
+ attributes: {
3841
+ id: {
3842
+ key: "id",
3843
+ value: ids.set
3844
+ },
3845
+ dur: {
3846
+ key: "dur",
3847
+ value: "1"
3848
+ },
3849
+ fill: {
3850
+ key: "fill",
3851
+ value: "hold"
3852
+ }
3853
+ },
3854
+ children: [new BuilderElement({
3855
+ name: "p:stCondLst",
3856
+ children: [new BuilderElement({
3857
+ name: "p:cond",
3858
+ attributes: { delay: {
3859
+ key: "delay",
3860
+ value: "0"
3861
+ } }
3862
+ })]
3863
+ })]
3864
+ }),
3865
+ buildTargetElement(spid),
3866
+ new BuilderElement({
3867
+ name: "p:attrNameLst",
3868
+ children: [stringContainerObj("p:attrName", setOptions.attributeName)]
3869
+ })
3870
+ ]
3871
+ }), new BuilderElement({
3872
+ name: "p:to",
3873
+ children: [new BuilderElement({
3874
+ name: toValName,
3875
+ attributes: { val: {
3876
+ key: "val",
3877
+ value: setOptions.toValue
3878
+ } }
3879
+ })]
3880
+ })]
3881
+ });
3882
+ }
3883
+ /**
3884
+ * Build p:iterate for text-level animation iteration.
3885
+ */
3886
+ function buildIterate(iterate) {
3887
+ const attrs = {};
3888
+ if (iterate.type) attrs.type = {
3889
+ key: "type",
3890
+ value: iterate.type
3891
+ };
3892
+ if (iterate.backwards) attrs.backwards = {
3893
+ key: "backwards",
3894
+ value: 1
3895
+ };
3896
+ const iterChildren = [];
3897
+ if (iterate.interval !== void 0) iterChildren.push(new BuilderElement({
3898
+ name: "p:tmAbs",
3899
+ attributes: { val: {
3900
+ key: "val",
3901
+ value: iterate.interval
3902
+ } }
3903
+ }));
3904
+ return new BuilderElement({
3905
+ name: "p:iterate",
3906
+ attributes: Object.keys(attrs).length > 0 ? attrs : void 0,
3907
+ children: iterChildren.length > 0 ? iterChildren : void 0
3908
+ });
3909
+ }
3910
+ /**
3476
3911
  * Build p:video/p:audio with p:cMediaNode (goes as sibling of p:seq).
3477
3912
  * This is the media state controller, separate from the play command.
3478
3913
  */
@@ -3501,6 +3936,10 @@ function buildMediaStateNode(options, spid, ids) {
3501
3936
  key: "mute",
3502
3937
  value: 1
3503
3938
  };
3939
+ if (options.numberOfSlides !== void 0) cMediaNodeAttrs.numSld = {
3940
+ key: "numSld",
3941
+ value: options.numberOfSlides
3942
+ };
3504
3943
  return new BuilderElement({
3505
3944
  name: elementName,
3506
3945
  attributes: Object.keys(mediaAttrs).length > 0 ? mediaAttrs : void 0,
@@ -3559,6 +3998,18 @@ function buildPropertyAnimation(options, spid, ids) {
3559
3998
  key: "by",
3560
3999
  value: options.animBy
3561
4000
  };
4001
+ if (options.formula !== void 0) attrs.fmla = {
4002
+ key: "fmla",
4003
+ value: options.formula
4004
+ };
4005
+ if (options.colorSpace !== void 0) attrs.clrSpc = {
4006
+ key: "clrSpc",
4007
+ value: options.colorSpace
4008
+ };
4009
+ if (options.rotationAngle !== void 0) attrs.rAng = {
4010
+ key: "rAng",
4011
+ value: String(options.rotationAngle)
4012
+ };
3562
4013
  const cBhvrChildren = [new BuilderElement({
3563
4014
  name: "p:cTn",
3564
4015
  attributes: {
@@ -3580,8 +4031,30 @@ function buildPropertyAnimation(options, spid, ids) {
3580
4031
  name: "p:attrNameLst",
3581
4032
  children: [stringContainerObj("p:attrName", options.attributeName)]
3582
4033
  }));
4034
+ const cBhvrAttrs = {};
4035
+ if (options.additive !== void 0) cBhvrAttrs.additive = {
4036
+ key: "additive",
4037
+ value: options.additive
4038
+ };
4039
+ if (options.accumulate !== void 0) cBhvrAttrs.accumulate = {
4040
+ key: "accumulate",
4041
+ value: options.accumulate
4042
+ };
4043
+ if (options.transformType !== void 0) cBhvrAttrs.xfrmType = {
4044
+ key: "xfrmType",
4045
+ value: options.transformType
4046
+ };
4047
+ if (options.runtimeContext !== void 0) cBhvrAttrs.rctx = {
4048
+ key: "rctx",
4049
+ value: options.runtimeContext
4050
+ };
4051
+ if (options.override !== void 0) cBhvrAttrs.override = {
4052
+ key: "override",
4053
+ value: options.override
4054
+ };
3583
4055
  const animChildren = [new BuilderElement({
3584
4056
  name: "p:cBhvr",
4057
+ attributes: Object.keys(cBhvrAttrs).length > 0 ? cBhvrAttrs : void 0,
3585
4058
  children: cBhvrChildren
3586
4059
  })];
3587
4060
  if (options.from !== void 0 || options.to !== void 0) {
@@ -3657,7 +4130,8 @@ var SlideTiming = class extends XmlComponent {
3657
4130
  const presetClass = resolvePresetClass(options);
3658
4131
  const presetSubtype = resolvePresetSubtype(options);
3659
4132
  let effectChildren;
3660
- if (options.mediaType) {
4133
+ if (options.commandType) effectChildren = [buildCommand(options, spid, { cmd: effectCtnId2 })];
4134
+ else if (options.mediaType) {
3661
4135
  effectChildren = [buildMediaPlayCommand(options, spid, { cmd: effectCtnId2 })];
3662
4136
  const mediaStateId = id++;
3663
4137
  mediaStateNodes.push(buildMediaStateNode(options, spid, { mediaCtn: mediaStateId }));
@@ -3674,6 +4148,10 @@ var SlideTiming = class extends XmlComponent {
3674
4148
  set: setCtnId,
3675
4149
  effect: effectCtnId2
3676
4150
  });
4151
+ if (options.setBehavior) {
4152
+ const setBehId = id++;
4153
+ effectChildren = [buildSetBehavior(options.setBehavior, spid, { set: setBehId }), ...effectChildren];
4154
+ }
3677
4155
  const cTnAttrs = {
3678
4156
  id: {
3679
4157
  key: "id",
@@ -3728,24 +4206,91 @@ var SlideTiming = class extends XmlComponent {
3728
4206
  key: "autoRev",
3729
4207
  value: 1
3730
4208
  };
4209
+ if (options.repeatDuration !== void 0) cTnAttrs.repeatDur = {
4210
+ key: "repeatDur",
4211
+ value: options.repeatDuration
4212
+ };
4213
+ if (options.acceleration !== void 0) cTnAttrs.accel = {
4214
+ key: "accel",
4215
+ value: options.acceleration
4216
+ };
4217
+ if (options.deceleration !== void 0) cTnAttrs.decel = {
4218
+ key: "decel",
4219
+ value: options.deceleration
4220
+ };
4221
+ if (options.restart !== void 0) cTnAttrs.restart = {
4222
+ key: "restart",
4223
+ value: options.restart
4224
+ };
4225
+ if (options.syncBehavior !== void 0) cTnAttrs.syncBehavior = {
4226
+ key: "syncBehavior",
4227
+ value: options.syncBehavior
4228
+ };
4229
+ if (options.timeFilter !== void 0) cTnAttrs.tmFilter = {
4230
+ key: "tmFilter",
4231
+ value: options.timeFilter
4232
+ };
4233
+ if (options.eventFilter !== void 0) cTnAttrs.evtFilter = {
4234
+ key: "evtFilter",
4235
+ value: options.eventFilter
4236
+ };
4237
+ if (options.display !== void 0) cTnAttrs.display = {
4238
+ key: "display",
4239
+ value: options.display ? 1 : 0
4240
+ };
4241
+ if (options.masterRelation !== void 0) cTnAttrs.masterRel = {
4242
+ key: "masterRel",
4243
+ value: options.masterRelation
4244
+ };
4245
+ if (options.buildLevel !== void 0) cTnAttrs.bldLvl = {
4246
+ key: "bldLvl",
4247
+ value: options.buildLevel
4248
+ };
4249
+ if (options.groupId !== void 0) cTnAttrs.grpId = {
4250
+ key: "grpId",
4251
+ value: options.groupId
4252
+ };
4253
+ if (options.afterEffect !== void 0) cTnAttrs.afterEffect = {
4254
+ key: "afterEffect",
4255
+ value: options.afterEffect ? 1 : 0
4256
+ };
4257
+ if (options.nodePlaceholder !== void 0) cTnAttrs.nodePh = {
4258
+ key: "nodePh",
4259
+ value: options.nodePlaceholder ? 1 : 0
4260
+ };
4261
+ if (options.advanceAfterTime !== void 0) cTnAttrs.advAuto = {
4262
+ key: "advAuto",
4263
+ value: options.advanceAfterTime
4264
+ };
4265
+ if (options.animateBackground !== void 0) cTnAttrs.animBg = {
4266
+ key: "animBg",
4267
+ value: options.animateBackground ? 1 : 0
4268
+ };
4269
+ if (options.autoUpdateAnimationBackground !== void 0) cTnAttrs.autoUpdateAnimBg = {
4270
+ key: "autoUpdateAnimBg",
4271
+ value: options.autoUpdateAnimationBackground ? 1 : 0
4272
+ };
4273
+ const effectCtnChildren = [new BuilderElement({
4274
+ name: "p:stCondLst",
4275
+ children: [new BuilderElement({
4276
+ name: "p:cond",
4277
+ attributes: { delay: {
4278
+ key: "delay",
4279
+ value: String(options.delay ?? 0)
4280
+ } }
4281
+ })]
4282
+ })];
4283
+ if (options.iterate) effectCtnChildren.push(buildIterate(options.iterate));
4284
+ effectCtnChildren.push(new BuilderElement({
4285
+ name: "p:childTnLst",
4286
+ children: effectChildren
4287
+ }));
3731
4288
  const innerPar = new BuilderElement({
3732
4289
  name: "p:par",
3733
4290
  children: [new BuilderElement({
3734
4291
  name: "p:cTn",
3735
4292
  attributes: cTnAttrs,
3736
- children: [new BuilderElement({
3737
- name: "p:stCondLst",
3738
- children: [new BuilderElement({
3739
- name: "p:cond",
3740
- attributes: { delay: {
3741
- key: "delay",
3742
- value: String(options.delay ?? 0)
3743
- } }
3744
- })]
3745
- }), new BuilderElement({
3746
- name: "p:childTnLst",
3747
- children: effectChildren
3748
- })]
4293
+ children: effectCtnChildren
3749
4294
  })]
3750
4295
  });
3751
4296
  const outerPar = new BuilderElement({
@@ -3978,16 +4523,23 @@ var Slide = class extends XmlComponent {
3978
4523
  background;
3979
4524
  transition;
3980
4525
  HeaderFooter;
3981
- constructor(children, background, transition, headerFooter) {
4526
+ showMasterSp;
4527
+ showMasterPhAnim;
4528
+ constructor(children, background, transition, headerFooter, showMasterSp, showMasterPhAnim) {
3982
4529
  super("p:sld");
3983
4530
  this.children = children;
3984
4531
  this.background = background;
3985
4532
  this.transition = transition;
3986
4533
  this.HeaderFooter = headerFooter;
4534
+ this.showMasterSp = showMasterSp;
4535
+ this.showMasterPhAnim = showMasterPhAnim;
3987
4536
  }
3988
4537
  toXml(context) {
3989
4538
  const parts = [];
3990
- parts.push("<p:sld xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" xmlns:p=\"http://schemas.openxmlformats.org/presentationml/2006/main\">");
4539
+ const sldAttrs = [];
4540
+ if (this.showMasterSp === false) sldAttrs.push(" showMasterSp=\"0\"");
4541
+ if (this.showMasterPhAnim === false) sldAttrs.push(" showMasterPhAnim=\"0\"");
4542
+ parts.push(`<p:sld xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main"${sldAttrs.join("")}>`);
3991
4543
  parts.push("<p:cSld>");
3992
4544
  if (this.background) parts.push(this.background.toXml(context));
3993
4545
  parts.push("<p:spTree>");
@@ -4014,148 +4566,81 @@ var Slide = class extends XmlComponent {
4014
4566
  //#endregion
4015
4567
  //#region src/file/table-styles.ts
4016
4568
  init_xml_components();
4017
- const TABLE_STYLES_XML = `<a:tblStyleLst xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" def="{5C22544A-7EE6-4342-B048-85BDC9FD1C3A}"/>`;
4018
- var TableStyles = class TableStyles extends ImportedXmlComponent {
4019
- static instance = ImportedXmlComponent.fromXmlString(TABLE_STYLES_XML);
4020
- constructor() {
4569
+ const DEFAULT_STYLE_ID = "{5C22544A-7EE6-4342-B048-85BDC9FD1C3A}";
4570
+ var TableStyles = class extends BaseXmlComponent {
4571
+ opts;
4572
+ constructor(opts) {
4021
4573
  super("a:tblStyleLst");
4574
+ this.opts = opts;
4022
4575
  }
4023
4576
  toXml(context) {
4024
- return TableStyles.instance.toXml(context);
4577
+ if (!this.opts) return `<a:tblStyleLst xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" def="${DEFAULT_STYLE_ID}"/>`;
4578
+ return createTableStyleList(this.opts).toXml(context);
4025
4579
  }
4026
4580
  };
4027
4581
  //#endregion
4028
- //#region src/file/theme/theme.ts
4582
+ //#region src/file/view-properties.ts
4029
4583
  init_xml_components();
4030
- const DEFAULT_COLORS = {
4031
- dark1: "000000",
4032
- light1: "FFFFFF",
4033
- dark2: "44546A",
4034
- light2: "E7E6E6",
4035
- accent1: "4472C4",
4036
- accent2: "ED7D31",
4037
- accent3: "A5A5A5",
4038
- accent4: "FFC000",
4039
- accent5: "5B9BD5",
4040
- accent6: "70AD47",
4041
- hyperlink: "0563C1",
4042
- followedHyperlink: "954F72"
4043
- };
4044
- function buildThemeXml(options) {
4045
- const name = options?.name ?? "Office Theme";
4046
- const c = {
4047
- ...DEFAULT_COLORS,
4048
- ...options?.colors
4049
- };
4050
- const f = options?.fonts;
4051
- const majorFont = f?.majorFont ?? "Calibri Light";
4052
- const minorFont = f?.minorFont ?? "Calibri";
4053
- const majorFontAsian = f?.majorFontAsian ?? "";
4054
- const minorFontAsian = f?.minorFontAsian ?? "";
4055
- return `<a:theme xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" name="${name}">
4056
- <a:themeElements>
4057
- <a:clrScheme name="${name}">
4058
- <a:dk1>${options?.colors?.dark1 !== void 0 ? `<a:srgbClr val="${c.dark1}"/>` : `<a:sysClr val="windowText" lastClr="000000"/>`}</a:dk1>
4059
- <a:lt1>${options?.colors?.light1 !== void 0 ? `<a:srgbClr val="${c.light1}"/>` : `<a:sysClr val="window" lastClr="FFFFFF"/>`}</a:lt1>
4060
- <a:dk2><a:srgbClr val="${c.dark2}"/></a:dk2>
4061
- <a:lt2><a:srgbClr val="${c.light2}"/></a:lt2>
4062
- <a:accent1><a:srgbClr val="${c.accent1}"/></a:accent1>
4063
- <a:accent2><a:srgbClr val="${c.accent2}"/></a:accent2>
4064
- <a:accent3><a:srgbClr val="${c.accent3}"/></a:accent3>
4065
- <a:accent4><a:srgbClr val="${c.accent4}"/></a:accent4>
4066
- <a:accent5><a:srgbClr val="${c.accent5}"/></a:accent5>
4067
- <a:accent6><a:srgbClr val="${c.accent6}"/></a:accent6>
4068
- <a:hlink><a:srgbClr val="${c.hyperlink}"/></a:hlink>
4069
- <a:folHlink><a:srgbClr val="${c.followedHyperlink}"/></a:folHlink>
4070
- </a:clrScheme>
4071
- <a:fontScheme name="${name}">
4072
- <a:majorFont>
4073
- <a:latin typeface="${majorFont}"/>
4074
- <a:ea typeface="${majorFontAsian}"/>
4075
- <a:cs typeface=""/>
4076
- </a:majorFont>
4077
- <a:minorFont>
4078
- <a:latin typeface="${minorFont}"/>
4079
- <a:ea typeface="${minorFontAsian}"/>
4080
- <a:cs typeface=""/>
4081
- </a:minorFont>
4082
- </a:fontScheme>
4083
- <a:fmtScheme name="Office">
4084
- <a:fillStyleLst>
4085
- <a:solidFill><a:schemeClr val="phClr"/></a:solidFill>
4086
- <a:solidFill><a:schemeClr val="phClr"/></a:solidFill>
4087
- <a:solidFill><a:schemeClr val="phClr"/></a:solidFill>
4088
- </a:fillStyleLst>
4089
- <a:lnStyleLst>
4090
- <a:ln w="6350" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/></a:ln>
4091
- <a:ln w="12700" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/></a:ln>
4092
- <a:ln w="19050" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/></a:ln>
4093
- </a:lnStyleLst>
4094
- <a:effectStyleLst>
4095
- <a:effectStyle><a:effectLst/></a:effectStyle>
4096
- <a:effectStyle><a:effectLst/></a:effectStyle>
4097
- <a:effectStyle><a:effectLst/></a:effectStyle>
4098
- </a:effectStyleLst>
4099
- <a:bgFillStyleLst>
4100
- <a:solidFill><a:schemeClr val="phClr"/></a:solidFill>
4101
- <a:solidFill><a:schemeClr val="phClr"/></a:solidFill>
4102
- <a:solidFill><a:schemeClr val="phClr"/></a:solidFill>
4103
- </a:bgFillStyleLst>
4104
- </a:fmtScheme>
4105
- </a:themeElements>
4106
- <a:objectDefaults/>
4107
- <a:extraClrSchemeLst/>
4108
- </a:theme>`;
4109
- }
4110
- var DefaultTheme = class DefaultTheme extends ImportedXmlComponent {
4111
- static cache = /* @__PURE__ */ new Map();
4112
- cacheKey;
4113
- constructor(options) {
4114
- super("a:theme");
4115
- this.cacheKey = options ? themeKey(options) : "";
4116
- if (!DefaultTheme.cache.has(this.cacheKey)) DefaultTheme.cache.set(this.cacheKey, ImportedXmlComponent.fromXmlString(buildThemeXml(options)));
4117
- }
4118
- toXml(context) {
4119
- return DefaultTheme.cache.get(this.cacheKey).toXml(context);
4120
- }
4584
+ const LAST_VIEW_XSD = {
4585
+ slideView: "sldView",
4586
+ slideMasterView: "sldMasterView",
4587
+ notesView: "notesView",
4588
+ handoutView: "handoutView",
4589
+ outlineView: "outlineView",
4590
+ slideSorterView: "sldSorterView"
4121
4591
  };
4122
- function themeKey(o) {
4123
- const c = o.colors;
4124
- const f = o.fonts;
4125
- return `n${o.name ?? ""}c${c?.dark1 ?? ""}${c?.light1 ?? ""}${c?.dark2 ?? ""}${c?.light2 ?? ""}${c?.accent1 ?? ""}${c?.accent2 ?? ""}${c?.accent3 ?? ""}${c?.accent4 ?? ""}${c?.accent5 ?? ""}${c?.accent6 ?? ""}${c?.hyperlink ?? ""}${c?.followedHyperlink ?? ""}f${f?.majorFont ?? ""}${f?.minorFont ?? ""}${f?.majorFontAsian ?? ""}${f?.minorFontAsian ?? ""}`;
4592
+ function buildNormalViewPrXml(opts) {
4593
+ const attrs = [];
4594
+ if (opts?.showOutlineIcons === false) attrs.push(" showOutlineIcons=\"0\"");
4595
+ if (opts?.snapVertSplitter) attrs.push(" snapVertSplitter=\"1\"");
4596
+ if (opts?.vertBarState) attrs.push(` vertBarState="${opts.vertBarState}"`);
4597
+ if (opts?.horzBarState) attrs.push(` horzBarState="${opts.horzBarState}"`);
4598
+ if (opts?.preferSingleView) attrs.push(" preferSingleView=\"1\"");
4599
+ return `<p:normalViewPr${attrs.join("")}><p:restoredLeft sz="14996" autoAdjust="0"/><p:restoredTop sz="94660"/></p:normalViewPr>`;
4600
+ }
4601
+ function buildCSldViewPrXml(opts, zoomN = 90, zoomD = 100) {
4602
+ const attrs = [];
4603
+ if (opts?.snapToGrid === false) attrs.push(" snapToGrid=\"0\"");
4604
+ if (opts?.snapToObjects) attrs.push(" snapToObjects=\"1\"");
4605
+ if (opts?.showGuides) attrs.push(" showGuides=\"1\"");
4606
+ const cViewPrAttr = opts?.varScale !== false ? " varScale=\"1\"" : "";
4607
+ return `<p:cSldViewPr${attrs.join("")}><p:cViewPr${cViewPrAttr}><p:scale><a:sx n="${zoomN}" d="${zoomD}"/><a:sy n="${zoomN}" d="${zoomD}"/></p:scale><p:origin x="1200" y="72"/></p:cViewPr><p:guideLst/></p:cSldViewPr>`;
4608
+ }
4609
+ function buildViewPropsXml(opts) {
4610
+ const ns = "xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" xmlns:p=\"http://schemas.openxmlformats.org/presentationml/2006/main\"";
4611
+ const zoomN = opts?.zoomScaleNumerator ?? 90;
4612
+ const zoomD = opts?.zoomScaleDenominator ?? 100;
4613
+ const gridCx = opts?.gridSpacing?.cx ?? 72008;
4614
+ const gridCy = opts?.gridSpacing?.cy ?? 72008;
4615
+ const parts = [];
4616
+ let rootAttrs = "";
4617
+ if (opts?.lastView) rootAttrs += ` lastView="${LAST_VIEW_XSD[opts.lastView]}"`;
4618
+ if (opts?.showComments === false) rootAttrs += " showComments=\"0\"";
4619
+ parts.push(`<p:viewPr ${ns}${rootAttrs}>`);
4620
+ parts.push(buildNormalViewPrXml(opts?.normalView));
4621
+ parts.push("<p:slideViewPr>");
4622
+ parts.push(buildCSldViewPrXml(opts?.slideView, zoomN, zoomD));
4623
+ parts.push("</p:slideViewPr>");
4624
+ parts.push("<p:notesTextViewPr>");
4625
+ parts.push("<p:cViewPr>");
4626
+ parts.push("<p:scale><a:sx n=\"1\" d=\"1\"/><a:sy n=\"1\" d=\"1\"/></p:scale>");
4627
+ parts.push("<p:origin x=\"0\" y=\"0\"/>");
4628
+ parts.push("</p:cViewPr>");
4629
+ parts.push("</p:notesTextViewPr>");
4630
+ parts.push(`<p:gridSpacing cx="${gridCx}" cy="${gridCy}"/>`);
4631
+ parts.push("</p:viewPr>");
4632
+ return parts.join("");
4126
4633
  }
4127
- //#endregion
4128
- //#region src/file/view-properties.ts
4129
- init_xml_components();
4130
- const VIEW_PROPS_XML = `<p:viewPr xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main">
4131
- <p:normalViewPr>
4132
- <p:restoredLeft sz="14996" autoAdjust="0"/>
4133
- <p:restoredTop sz="94660"/>
4134
- </p:normalViewPr>
4135
- <p:slideViewPr>
4136
- <p:cSldViewPr snapToGrid="0">
4137
- <p:cViewPr varScale="1">
4138
- <p:scale><a:sx n="90" d="100"/><a:sy n="90" d="100"/></p:scale>
4139
- <p:origin x="1200" y="72"/>
4140
- </p:cViewPr>
4141
- <p:guideLst/>
4142
- </p:cSldViewPr>
4143
- </p:slideViewPr>
4144
- <p:notesTextViewPr>
4145
- <p:cViewPr>
4146
- <p:scale><a:sx n="1" d="1"/><a:sy n="1" d="1"/></p:scale>
4147
- <p:origin x="0" y="0"/>
4148
- </p:cViewPr>
4149
- </p:notesTextViewPr>
4150
- <p:gridSpacing cx="72008" cy="72008"/>
4151
- </p:viewPr>`;
4152
4634
  var ViewProperties = class ViewProperties extends ImportedXmlComponent {
4153
- static instance = ImportedXmlComponent.fromXmlString(VIEW_PROPS_XML);
4154
- constructor() {
4635
+ static cache = /* @__PURE__ */ new Map();
4636
+ key;
4637
+ constructor(opts) {
4155
4638
  super("p:viewPr");
4639
+ this.key = opts ? JSON.stringify(opts) : "";
4640
+ if (!ViewProperties.cache.has(this.key)) ViewProperties.cache.set(this.key, ImportedXmlComponent.fromXmlString(buildViewPropsXml(opts)));
4156
4641
  }
4157
4642
  toXml(context) {
4158
- return ViewProperties.instance.toXml(context);
4643
+ return ViewProperties.cache.get(this.key).toXml(context);
4159
4644
  }
4160
4645
  };
4161
4646
  //#endregion
@@ -4190,6 +4675,13 @@ var File = class {
4190
4675
  slideWidthEmus;
4191
4676
  slideHeightEmus;
4192
4677
  masterDefs;
4678
+ includeHandout;
4679
+ tableStylesOpts;
4680
+ viewOpts;
4681
+ handoutMasterOpts;
4682
+ notesMasterOpts;
4683
+ presPropsFullOpts;
4684
+ presAttrOpts;
4193
4685
  _coreProperties;
4194
4686
  _appProperties;
4195
4687
  _contentTypes;
@@ -4216,9 +4708,30 @@ var File = class {
4216
4708
  this.corePropsOptions = options;
4217
4709
  this.showOptions = options.show;
4218
4710
  this.masterDefs = options.masters ?? [];
4711
+ this.includeHandout = options.includeHandoutMaster ?? false;
4712
+ this.tableStylesOpts = options.tableStyles;
4713
+ this.viewOpts = options.view;
4714
+ this.handoutMasterOpts = options.handoutMasterOptions;
4715
+ this.notesMasterOpts = options.notesMasterOptions;
4219
4716
  const sz = resolveSlideSize(options.size);
4220
4717
  this.slideWidthEmus = sz.width;
4221
4718
  this.slideHeightEmus = sz.height;
4719
+ if (options.serverZoom || options.firstSlideNum !== void 0 || options.showSpecialPlsOnTitleSld !== void 0 || options.rtl !== void 0 || options.removePersonalInfoOnSave !== void 0 || options.compatMode !== void 0 || options.strictFirstAndLastChars !== void 0 || options.embedTrueTypeFonts !== void 0 || options.saveSubsetFonts !== void 0 || options.autoCompressPictures !== void 0 || options.bookmarkIdSeed !== void 0 || options.conformance !== void 0 || options.photoAlbum !== void 0 || options.modifyVerifier !== void 0) this.presAttrOpts = {
4720
+ serverZoom: options.serverZoom,
4721
+ firstSlideNum: options.firstSlideNum,
4722
+ showSpecialPlsOnTitleSld: options.showSpecialPlsOnTitleSld,
4723
+ rtl: options.rtl,
4724
+ removePersonalInfoOnSave: options.removePersonalInfoOnSave,
4725
+ compatMode: options.compatMode,
4726
+ strictFirstAndLastChars: options.strictFirstAndLastChars,
4727
+ embedTrueTypeFonts: options.embedTrueTypeFonts,
4728
+ saveSubsetFonts: options.saveSubsetFonts,
4729
+ autoCompressPictures: options.autoCompressPictures,
4730
+ bookmarkIdSeed: options.bookmarkIdSeed,
4731
+ conformance: options.conformance,
4732
+ photoAlbum: options.photoAlbum,
4733
+ modifyVerifier: options.modifyVerifier
4734
+ };
4222
4735
  }
4223
4736
  getMasterMap() {
4224
4737
  if (this.masterMap) return this.masterMap;
@@ -4333,6 +4846,7 @@ var File = class {
4333
4846
  }
4334
4847
  if (notesSlideIdx > 0) this._contentTypes.addNotesMaster();
4335
4848
  if (hasComments) this._contentTypes.addCommentAuthors();
4849
+ if (this.includeHandout) this._contentTypes.addHandoutMaster();
4336
4850
  }
4337
4851
  return this._contentTypes;
4338
4852
  }
@@ -4375,7 +4889,8 @@ var File = class {
4375
4889
  slideWidth: this.slideWidthEmus,
4376
4890
  slideHeight: this.slideHeightEmus,
4377
4891
  slideIds: this.slideOptions.map((_, i) => 256 + i),
4378
- masterCount: masters.length
4892
+ masterCount: masters.length,
4893
+ ...this.presAttrOpts
4379
4894
  });
4380
4895
  const presRels = this._presentationWrapper.relationships;
4381
4896
  let rid = 1;
@@ -4392,13 +4907,18 @@ var File = class {
4392
4907
  return this.getMasterMap().map((m) => m.theme);
4393
4908
  }
4394
4909
  get tableStyles() {
4395
- return this._tableStyles ??= new TableStyles();
4910
+ return this._tableStyles ??= new TableStyles(this.tableStylesOpts);
4396
4911
  }
4397
4912
  get presProps() {
4398
- return this._presProps ??= new PresentationProperties(this.showOptions);
4913
+ return this._presProps ??= new PresentationProperties({
4914
+ show: this.showOptions,
4915
+ web: this.presPropsFullOpts?.web,
4916
+ print: this.presPropsFullOpts?.print,
4917
+ htmlPublish: this.presPropsFullOpts?.htmlPublish
4918
+ });
4399
4919
  }
4400
4920
  get viewProps() {
4401
- return this._viewProps ??= new ViewProperties();
4921
+ return this._viewProps ??= new ViewProperties(this.viewOpts);
4402
4922
  }
4403
4923
  get slideMasters() {
4404
4924
  return this.getMasterMap().map((m) => m.master);
@@ -4417,7 +4937,7 @@ var File = class {
4417
4937
  get slides() {
4418
4938
  if (!this._slides) {
4419
4939
  this._slides = [];
4420
- for (const s of this.slideOptions) this._slides.push(new Slide(s.children ?? [], s.background ? new Background(s.background) : void 0, s.transition, s.headerFooter));
4940
+ for (const s of this.slideOptions) this._slides.push(new Slide(s.children ?? [], s.background ? new Background(s.background) : void 0, s.transition, s.headerFooter, s.showMasterShapes, s.showMasterPlaceholderAnimations));
4421
4941
  }
4422
4942
  return this._slides;
4423
4943
  }
@@ -4455,6 +4975,15 @@ var File = class {
4455
4975
  get notesMasterRelationships() {
4456
4976
  return this._notesMasterRels ??= new Relationships();
4457
4977
  }
4978
+ get hasHandoutMaster() {
4979
+ return this.includeHandout;
4980
+ }
4981
+ get handoutMasterOptions() {
4982
+ return this.handoutMasterOpts;
4983
+ }
4984
+ get notesMasterOptions() {
4985
+ return this.notesMasterOpts;
4986
+ }
4458
4987
  get commentAuthorList() {
4459
4988
  if (!this._commentAuthorList && !this._slideCommentLists) this.buildComments();
4460
4989
  return this._commentAuthorList;
@@ -4654,6 +5183,7 @@ var ShapeTree = class extends XmlComponent {
4654
5183
  //#endregion
4655
5184
  //#region src/file/notes-master/notes-master.ts
4656
5185
  init_xml_components();
5186
+ const DEFAULT_COLOR_MAP$1 = "bg1=\"lt1\" tx1=\"dk1\" bg2=\"lt2\" tx2=\"dk2\" accent1=\"accent1\" accent2=\"accent2\" accent3=\"accent3\" accent4=\"accent4\" accent5=\"accent5\" accent6=\"accent6\" hlink=\"hlink\" folHlink=\"folHlink\"";
4657
5187
  const NOTES_MASTER_XML = `<p:notesMaster xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main">
4658
5188
  <p:cSld>
4659
5189
  <p:bg>
@@ -4678,6 +5208,7 @@ const NOTES_MASTER_XML = `<p:notesMaster xmlns:a="http://schemas.openxmlformats.
4678
5208
  </p:spTree>
4679
5209
  </p:cSld>
4680
5210
  <p:clrMap bg1="lt1" tx1="dk1" bg2="lt2" tx2="dk2" accent1="accent1" accent2="accent2" accent3="accent3" accent4="accent4" accent5="accent5" accent6="accent6" hlink="hlink" folHlink="folHlink"/>
5211
+ <p:hf dt="0" hdr="0" ftr="0" sldNum="0"/>
4681
5212
  <p:notesStyle>
4682
5213
  <a:lvl1pPr marL="0" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1">
4683
5214
  <a:defRPr sz="1200" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr>
@@ -4708,13 +5239,130 @@ const NOTES_MASTER_XML = `<p:notesMaster xmlns:a="http://schemas.openxmlformats.
4708
5239
  </a:lvl9pPr>
4709
5240
  </p:notesStyle>
4710
5241
  </p:notesMaster>`;
5242
+ const DEFAULT_LEVEL_MARGINS = [
5243
+ 0,
5244
+ 457200,
5245
+ 914400,
5246
+ 1371600,
5247
+ 1828800,
5248
+ 2286e3,
5249
+ 2743200,
5250
+ 3200400,
5251
+ 3657600
5252
+ ];
5253
+ function buildColorMapAttrs$1(opts) {
5254
+ if (!opts) return DEFAULT_COLOR_MAP$1;
5255
+ const merged = {
5256
+ bg1: "lt1",
5257
+ tx1: "dk1",
5258
+ bg2: "lt2",
5259
+ tx2: "dk2",
5260
+ accent1: "accent1",
5261
+ accent2: "accent2",
5262
+ accent3: "accent3",
5263
+ accent4: "accent4",
5264
+ accent5: "accent5",
5265
+ accent6: "accent6",
5266
+ hlink: "hlink",
5267
+ folHlink: "folHlink",
5268
+ ...opts
5269
+ };
5270
+ return Object.entries(merged).map(([k, v]) => `${k}="${v}"`).join(" ");
5271
+ }
5272
+ function buildHfAttrs$1(opts) {
5273
+ if (!opts) return "dt=\"0\" hdr=\"0\" ftr=\"0\" sldNum=\"0\"";
5274
+ return `dt="${opts.date ? 1 : 0}" hdr="${opts.header ? 1 : 0}" ftr="${opts.footer ? 1 : 0}" sldNum="${opts.slideNumber ? 1 : 0}"`;
5275
+ }
5276
+ function buildNotesStyleXml(levels) {
5277
+ const parts = ["<p:notesStyle>"];
5278
+ for (let i = 0; i < 9; i++) {
5279
+ const level = levels?.[i];
5280
+ const marL = level?.marginLeft ?? DEFAULT_LEVEL_MARGINS[i];
5281
+ const algn = level?.alignment ?? "l";
5282
+ const sz = level?.fontSize ?? 1200;
5283
+ parts.push(`<a:lvl${i + 1}pPr marL="${marL}" algn="${algn}" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:defRPr sz="${sz}" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl${i + 1}pPr>`);
5284
+ }
5285
+ parts.push("</p:notesStyle>");
5286
+ return parts.join("");
5287
+ }
4711
5288
  var DefaultNotesMaster = class DefaultNotesMaster extends ImportedXmlComponent {
4712
5289
  static instance = ImportedXmlComponent.fromXmlString(NOTES_MASTER_XML);
4713
- constructor() {
5290
+ options;
5291
+ constructor(options) {
4714
5292
  super("p:notesMaster");
5293
+ this.options = options;
5294
+ }
5295
+ toXml(context) {
5296
+ if (!this.options) return DefaultNotesMaster.instance.toXml(context);
5297
+ const colorMap = buildColorMapAttrs$1(this.options.colorMap);
5298
+ const hf = buildHfAttrs$1(this.options.headerFooter);
5299
+ const notesStyle = buildNotesStyleXml(this.options.notesStyle);
5300
+ return `<p:notesMaster xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main"><p:cSld><p:bg><p:bgRef idx="1001"><a:schemeClr val="bg1"/></p:bgRef></p:bg><p:spTree><p:nvGrpSpPr><p:cNvPr id="1" name=""/><p:cNvGrpSpPr/><p:nvPr/></p:nvGrpSpPr><p:grpSpPr><a:xfrm><a:off x="0" y="0"/><a:ext cx="0" cy="0"/><a:chOff x="0" y="0"/><a:chExt cx="0" cy="0"/></a:xfrm></p:grpSpPr></p:spTree></p:cSld><p:clrMap ${colorMap}/><p:hf ${hf}/>` + notesStyle + "</p:notesMaster>";
5301
+ }
5302
+ };
5303
+ //#endregion
5304
+ //#region src/file/handout-master/handout-master.ts
5305
+ init_xml_components();
5306
+ const DEFAULT_COLOR_MAP = "bg1=\"lt1\" tx1=\"dk1\" bg2=\"lt2\" tx2=\"dk2\" accent1=\"accent1\" accent2=\"accent2\" accent3=\"accent3\" accent4=\"accent4\" accent5=\"accent5\" accent6=\"accent6\" hlink=\"hlink\" folHlink=\"folHlink\"";
5307
+ const HANDOUT_MASTER_XML = `<p:handoutMaster xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main">
5308
+ <p:cSld>
5309
+ <p:bg>
5310
+ <p:bgRef idx="1001">
5311
+ <a:schemeClr val="bg1"/>
5312
+ </p:bgRef>
5313
+ </p:bg>
5314
+ <p:spTree>
5315
+ <p:nvGrpSpPr>
5316
+ <p:cNvPr id="1" name=""/>
5317
+ <p:cNvGrpSpPr/>
5318
+ <p:nvPr/>
5319
+ </p:nvGrpSpPr>
5320
+ <p:grpSpPr>
5321
+ <a:xfrm>
5322
+ <a:off x="0" y="0"/>
5323
+ <a:ext cx="0" cy="0"/>
5324
+ <a:chOff x="0" y="0"/>
5325
+ <a:chExt cx="0" cy="0"/>
5326
+ </a:xfrm>
5327
+ </p:grpSpPr>
5328
+ </p:spTree>
5329
+ </p:cSld>
5330
+ <p:clrMap bg1="lt1" tx1="dk1" bg2="lt2" tx2="dk2" accent1="accent1" accent2="accent2" accent3="accent3" accent4="accent4" accent5="accent5" accent6="accent6" hlink="hlink" folHlink="folHlink"/>
5331
+ <p:hf dt="0" hdr="0" ftr="0" sldNum="0"/>
5332
+ </p:handoutMaster>`;
5333
+ function buildColorMapAttrs(opts) {
5334
+ if (!opts) return DEFAULT_COLOR_MAP;
5335
+ const merged = {
5336
+ bg1: "lt1",
5337
+ tx1: "dk1",
5338
+ bg2: "lt2",
5339
+ tx2: "dk2",
5340
+ accent1: "accent1",
5341
+ accent2: "accent2",
5342
+ accent3: "accent3",
5343
+ accent4: "accent4",
5344
+ accent5: "accent5",
5345
+ accent6: "accent6",
5346
+ hlink: "hlink",
5347
+ folHlink: "folHlink",
5348
+ ...opts
5349
+ };
5350
+ return Object.entries(merged).map(([k, v]) => `${k}="${v}"`).join(" ");
5351
+ }
5352
+ function buildHfAttrs(opts) {
5353
+ if (!opts) return "dt=\"0\" hdr=\"0\" ftr=\"0\" sldNum=\"0\"";
5354
+ return `dt="${opts.date ? 1 : 0}" hdr="${opts.header ? 1 : 0}" ftr="${opts.footer ? 1 : 0}" sldNum="${opts.slideNumber ? 1 : 0}"`;
5355
+ }
5356
+ var DefaultHandoutMaster = class DefaultHandoutMaster extends ImportedXmlComponent {
5357
+ static instance = ImportedXmlComponent.fromXmlString(HANDOUT_MASTER_XML);
5358
+ options;
5359
+ constructor(options) {
5360
+ super("p:handoutMaster");
5361
+ this.options = options;
4715
5362
  }
4716
5363
  toXml(context) {
4717
- return DefaultNotesMaster.instance.toXml(context);
5364
+ if (!this.options) return DefaultHandoutMaster.instance.toXml(context);
5365
+ return `<p:handoutMaster xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main"><p:cSld><p:bg><p:bgRef idx="1001"><a:schemeClr val="bg1"/></p:bgRef></p:bg><p:spTree><p:nvGrpSpPr><p:cNvPr id="1" name=""/><p:cNvGrpSpPr/><p:nvPr/></p:nvGrpSpPr><p:grpSpPr><a:xfrm><a:off x="0" y="0"/><a:ext cx="0" cy="0"/><a:chOff x="0" y="0"/><a:chExt cx="0" cy="0"/></a:xfrm></p:grpSpPr></p:spTree></p:cSld><p:clrMap ${buildColorMapAttrs(this.options.colorMap)}/><p:hf ${buildHfAttrs(this.options.headerFooter)}/></p:handoutMaster>`;
4718
5366
  }
4719
5367
  };
4720
5368
  //#endregion
@@ -4761,6 +5409,323 @@ var HeaderFooter = class extends XmlComponent {
4761
5409
  }
4762
5410
  };
4763
5411
  //#endregion
5412
+ //#region src/file/pml-elements.ts
5413
+ init_xml_components();
5414
+ /**
5415
+ * PresentationML (p:) element name constants.
5416
+ *
5417
+ * Covers all pml.xsd elements that are not referenced by existing component classes.
5418
+ * Used for XSD coverage tracking — each constant holds the literal element name string.
5419
+ *
5420
+ * @module
5421
+ */
5422
+ /** p:blinds — Blinds slide transition */
5423
+ const BLINDS = "p:blinds";
5424
+ /** p:checker — Checker slide transition */
5425
+ const CHECKER = "p:checker";
5426
+ /** p:circle — Circle slide transition */
5427
+ const CIRCLE = "p:circle";
5428
+ /** p:comb — Comb slide transition */
5429
+ const COMB = "p:comb";
5430
+ /** p:cover — Cover slide transition */
5431
+ const COVER = "p:cover";
5432
+ /** p:cut — Cut slide transition */
5433
+ const CUT = "p:cut";
5434
+ /** p:diamond — Diamond slide transition */
5435
+ const DIAMOND = "p:diamond";
5436
+ /** p:dissolve — Dissolve slide transition */
5437
+ const DISSOLVE = "p:dissolve";
5438
+ /** p:fade — Fade slide transition */
5439
+ const FADE = "p:fade";
5440
+ /** p:newsflash — Newsflash slide transition */
5441
+ const NEWSFLASH = "p:newsflash";
5442
+ /** p:plus — Plus slide transition */
5443
+ const PLUS = "p:plus";
5444
+ /** p:pull — Pull slide transition */
5445
+ const PULL = "p:pull";
5446
+ /** p:push — Push slide transition */
5447
+ const PUSH = "p:push";
5448
+ /** p:random — Random slide transition */
5449
+ const RANDOM = "p:random";
5450
+ /** p:randomBar — Random bar slide transition */
5451
+ const RANDOM_BAR = "p:randomBar";
5452
+ /** p:split — Split slide transition */
5453
+ const SPLIT = "p:split";
5454
+ /** p:strips — Strips slide transition */
5455
+ const STRIPS = "p:strips";
5456
+ /** p:wedge — Wedge slide transition */
5457
+ const WEDGE = "p:wedge";
5458
+ /** p:wheel — Wheel slide transition */
5459
+ const WHEEL = "p:wheel";
5460
+ /** p:wipe — Wipe slide transition */
5461
+ const WIPE = "p:wipe";
5462
+ /** p:zoom — Zoom slide transition */
5463
+ const ZOOM = "p:zoom";
5464
+ /** p:stSnd — Start sound action for transition */
5465
+ const ST_SND = "p:stSnd";
5466
+ /** p:endSnd — End sound action for transition */
5467
+ const END_SND = "p:endSnd";
5468
+ /** p:sndAc — Sound action container for transition */
5469
+ const SND_AC = "p:sndAc";
5470
+ /** p:bldLst — Build list for slide animations */
5471
+ const BLD_LST = "p:bldLst";
5472
+ /** p:bldP — Build paragraph animation */
5473
+ const BLD_P = "p:bldP";
5474
+ /** p:bldDgm — Build diagram animation */
5475
+ const BLD_DGM = "p:bldDgm";
5476
+ /** p:bldOleChart — Build OLE chart animation */
5477
+ const BLD_OLE_CHART = "p:bldOleChart";
5478
+ /** p:bldGraphic — Build graphic element animation */
5479
+ const BLD_GRAPHIC = "p:bldGraphic";
5480
+ /** p:bldAsOne — Build as one animation */
5481
+ const BLD_AS_ONE = "p:bldAsOne";
5482
+ /** p:bldSub — Build sub-element animation */
5483
+ const BLD_SUB = "p:bldSub";
5484
+ /** p:tn — Timeline node */
5485
+ const TN = "p:tn";
5486
+ /** p:subTnLst — Sub-timeline node list */
5487
+ const SUB_TN_LST = "p:subTnLst";
5488
+ /** p:endCondLst — End condition list */
5489
+ const END_COND_LST = "p:endCondLst";
5490
+ /** p:endSync — End synchronization */
5491
+ const END_SYNC = "p:endSync";
5492
+ /** p:tmpl — Animation template */
5493
+ const TMPL = "p:tmpl";
5494
+ /** p:tmplLst — Animation template list */
5495
+ const TMPL_LST = "p:tmplLst";
5496
+ /** p:tmPct — Timeline percentage */
5497
+ const TM_PCT = "p:tmPct";
5498
+ /** p:excl — Exclusive timing node */
5499
+ const EXCL = "p:excl";
5500
+ /** p:inkTgt — Ink target element */
5501
+ const INK_TGT = "p:inkTgt";
5502
+ /** p:sndTgt — Sound target element */
5503
+ const SND_TGT = "p:sndTgt";
5504
+ /** p:spTgt sub-elements — sub-shape target */
5505
+ const SUB_SP = "p:subSp";
5506
+ /** p:graphicEl — Graphic element target */
5507
+ const GRAPHIC_EL = "p:graphicEl";
5508
+ /** p:oleChartEl — OLE chart element target */
5509
+ const OLE_CHART_EL = "p:oleChartEl";
5510
+ /** p:rCtr — Runtime context */
5511
+ const R_CTR = "p:rCtr";
5512
+ /** p:boolVal — Boolean animation value */
5513
+ const BOOL_VAL = "p:boolVal";
5514
+ /** p:intVal — Integer animation value */
5515
+ const INT_VAL = "p:intVal";
5516
+ /** p:fltVal — Float animation value */
5517
+ const FLT_VAL = "p:fltVal";
5518
+ /** p:strVal note: already referenced in timing.ts, included for completeness */
5519
+ const STR_VAL = "p:strVal";
5520
+ /** p:clrVal — Color animation value */
5521
+ const CLR_VAL = "p:clrVal";
5522
+ /** p:from — Animation from value */
5523
+ const FROM = "p:from";
5524
+ /** p:rgb — RGB color value for animation */
5525
+ const RGB = "p:rgb";
5526
+ /** p:hsl — HSL color value for animation */
5527
+ const HSL = "p:hsl";
5528
+ /** p:rtn — Rotation transform */
5529
+ const RTN = "p:rtn";
5530
+ /** p:bold — Bold text build style */
5531
+ const BOLD = "p:bold";
5532
+ /** p:italic — Italic text build style */
5533
+ const ITALIC = "p:italic";
5534
+ /** p:boldItalic — Bold-italic text build style */
5535
+ const BOLD_ITALIC = "p:boldItalic";
5536
+ /** p:regular — Regular text build style */
5537
+ const REGULAR = "p:regular";
5538
+ /** p:style — Text style reference */
5539
+ const STYLE = "p:style";
5540
+ /** p:font — Font element */
5541
+ const FONT = "p:font";
5542
+ /** p:contentPart — Content part reference */
5543
+ const CONTENT_PART = "p:contentPart";
5544
+ /** p:sldLst — Slide list */
5545
+ const SLD_LST = "p:sldLst";
5546
+ /** p:photoAlbum — Photo album settings */
5547
+ const PHOTO_ALBUM = "p:photoAlbum";
5548
+ /** p:control — Embedded control */
5549
+ const CONTROL = "p:control";
5550
+ /** p:controls — Controls container */
5551
+ const CONTROLS = "p:controls";
5552
+ /** p:custData — Custom data element */
5553
+ const CUST_DATA = "p:custData";
5554
+ /** p:custDataLst — Custom data list */
5555
+ const CUST_DATA_LST = "p:custDataLst";
5556
+ /** p:custShow — Custom show */
5557
+ const CUST_SHOW = "p:custShow";
5558
+ /** p:custShowLst — Custom show list */
5559
+ const CUST_SHOW_LST = "p:custShowLst";
5560
+ /** p:tag — Tag element */
5561
+ const TAG = "p:tag";
5562
+ /** p:tagLst — Tag list */
5563
+ const TAG_LST = "p:tagLst";
5564
+ /** p:tags — Tags container */
5565
+ const TAGS = "p:tags";
5566
+ /** p:embeddedFont — Embedded font */
5567
+ const EMBEDDED_FONT = "p:embeddedFont";
5568
+ /** p:embeddedFontLst — Embedded font list */
5569
+ const EMBEDDED_FONT_LST = "p:embeddedFontLst";
5570
+ /** p:htmlPubPr — HTML publish properties */
5571
+ const HTML_PUB_PR = "p:htmlPubPr";
5572
+ /** p:webPr — Web properties */
5573
+ const WEB_PR = "p:webPr";
5574
+ /** p:prnPr — Print properties */
5575
+ const PRN_PR = "p:prnPr";
5576
+ /** p:modifyVerifier — Modification verifier */
5577
+ const MODIFY_VERIFIER = "p:modifyVerifier";
5578
+ /** p:smartTags — Smart tags */
5579
+ const SMART_TAGS = "p:smartTags";
5580
+ /** p:sldSyncPr — Slide synchronization properties */
5581
+ const SLD_SYNC_PR = "p:sldSyncPr";
5582
+ /** p:notesViewPr — Notes view properties */
5583
+ const NOTES_VIEW_PR = "p:notesViewPr";
5584
+ /** p:outlineViewPr — Outline view properties */
5585
+ const OUTLINE_VIEW_PR = "p:outlineViewPr";
5586
+ /** p:sorterViewPr — Sorter view properties */
5587
+ const SORTER_VIEW_PR = "p:sorterViewPr";
5588
+ /** p:clrMru — Color most-recently-used */
5589
+ const CLR_MRU = "p:clrMru";
5590
+ /** p:guide — Drawing guide */
5591
+ const GUIDE = "p:guide";
5592
+ /** p:kinsoku — Kinsoku line breaking settings */
5593
+ const KINSOKU = "p:kinsoku";
5594
+ /** p:progress — Progress element */
5595
+ const PROGRESS = "p:progress";
5596
+ /** Creates a p:sldSyncPr element (Slide Sync Properties). */
5597
+ const createSlideSyncProperties = (options) => {
5598
+ const attrs = {};
5599
+ if (options?.serverSlideId !== void 0) attrs.serverSlideId = {
5600
+ key: "serverSldId",
5601
+ value: options.serverSlideId
5602
+ };
5603
+ if (options?.serverSlideModifiedTime !== void 0) attrs.serverSlideModifiedTime = {
5604
+ key: "serverSldModifiedTime",
5605
+ value: options.serverSlideModifiedTime
5606
+ };
5607
+ if (options?.clientInsertedTime !== void 0) attrs.clientInsertedTime = {
5608
+ key: "clientInsertedTime",
5609
+ value: options.clientInsertedTime
5610
+ };
5611
+ return new BuilderElement({
5612
+ name: "p:sldSyncPr",
5613
+ attributes: Object.keys(attrs).length > 0 ? attrs : void 0
5614
+ });
5615
+ };
5616
+ /** Creates a p:outlineViewPr element (Outline View Properties). */
5617
+ const createOutlineViewProperties = (options) => {
5618
+ const attrs = {};
5619
+ if (options?.showFormatting !== void 0) attrs.showFormatting = {
5620
+ key: "showFormatting",
5621
+ value: options.showFormatting ? "1" : "0"
5622
+ };
5623
+ return new BuilderElement({
5624
+ name: "p:outlineViewPr",
5625
+ attributes: Object.keys(attrs).length > 0 ? attrs : void 0
5626
+ });
5627
+ };
5628
+ /** Creates a p:sld element for outline view (OutlineViewSlideEntry). */
5629
+ const createOutlineViewSlideEntry = (options) => {
5630
+ const attrs = {};
5631
+ if (options?.collapse !== void 0) attrs.collapse = {
5632
+ key: "collapse",
5633
+ value: options.collapse ? "1" : "0"
5634
+ };
5635
+ return new BuilderElement({
5636
+ name: "p:sld",
5637
+ attributes: Object.keys(attrs).length > 0 ? attrs : void 0
5638
+ });
5639
+ };
5640
+ /** Creates a p:kinsoku element (Kinsoku Line Breaking). */
5641
+ const createKinsoku = (options) => {
5642
+ const attrs = {};
5643
+ if (options?.invalidStartCharacters !== void 0) attrs.invalidStartCharacters = {
5644
+ key: "invalStChars",
5645
+ value: options.invalidStartCharacters
5646
+ };
5647
+ if (options?.invalidEndCharacters !== void 0) attrs.invalidEndCharacters = {
5648
+ key: "invalEndChars",
5649
+ value: options.invalidEndCharacters
5650
+ };
5651
+ return new BuilderElement({
5652
+ name: "p:kinsoku",
5653
+ attributes: Object.keys(attrs).length > 0 ? attrs : void 0
5654
+ });
5655
+ };
5656
+ /** Creates a p:excl element (Exclusive Timing). */
5657
+ const createExclusiveTiming = (options) => {
5658
+ const attrs = {};
5659
+ if (options?.previousAction !== void 0) attrs.previousAction = {
5660
+ key: "prevAc",
5661
+ value: options.previousAction
5662
+ };
5663
+ return new BuilderElement({
5664
+ name: "p:excl",
5665
+ attributes: Object.keys(attrs).length > 0 ? attrs : void 0
5666
+ });
5667
+ };
5668
+ /** Creates a p:bldP element (Build Paragraph). */
5669
+ const createBuildParagraph = (options) => {
5670
+ const attrs = {};
5671
+ if (options?.build !== void 0) attrs.build = {
5672
+ key: "build",
5673
+ value: options.build
5674
+ };
5675
+ if (options?.uiExpand !== void 0) attrs.uiExpand = {
5676
+ key: "uiExpand",
5677
+ value: options.uiExpand ? "1" : "0"
5678
+ };
5679
+ return new BuilderElement({
5680
+ name: "p:bldP",
5681
+ attributes: Object.keys(attrs).length > 0 ? attrs : void 0
5682
+ });
5683
+ };
5684
+ /** Creates a p:bldDgm element (Build Diagram). */
5685
+ const createBuildDiagram = (options) => {
5686
+ const attrs = {};
5687
+ if (options?.build !== void 0) attrs.build = {
5688
+ key: "bld",
5689
+ value: options.build
5690
+ };
5691
+ if (options?.uiExpand !== void 0) attrs.uiExpand = {
5692
+ key: "uiExpand",
5693
+ value: options.uiExpand ? "1" : "0"
5694
+ };
5695
+ return new BuilderElement({
5696
+ name: "p:bldDgm",
5697
+ attributes: Object.keys(attrs).length > 0 ? attrs : void 0
5698
+ });
5699
+ };
5700
+ /** Creates a p:bldOleChart element (Build OLE Chart). */
5701
+ const createBuildOleChart = (options) => {
5702
+ const attrs = {};
5703
+ if (options?.build !== void 0) attrs.build = {
5704
+ key: "bld",
5705
+ value: options.build
5706
+ };
5707
+ if (options?.uiExpand !== void 0) attrs.uiExpand = {
5708
+ key: "uiExpand",
5709
+ value: options.uiExpand ? "1" : "0"
5710
+ };
5711
+ return new BuilderElement({
5712
+ name: "p:bldOleChart",
5713
+ attributes: Object.keys(attrs).length > 0 ? attrs : void 0
5714
+ });
5715
+ };
5716
+ /** Creates a p:bldGraphic element (Build Graphic). */
5717
+ const createBuildGraphic = (options) => {
5718
+ const attrs = {};
5719
+ if (options?.uiExpand !== void 0) attrs.uiExpand = {
5720
+ key: "uiExpand",
5721
+ value: options.uiExpand ? "1" : "0"
5722
+ };
5723
+ return new BuilderElement({
5724
+ name: "p:bldGraphic",
5725
+ attributes: Object.keys(attrs).length > 0 ? attrs : void 0
5726
+ });
5727
+ };
5728
+ //#endregion
4764
5729
  //#region src/file/index.ts
4765
5730
  init_fill();
4766
5731
  init_effects();
@@ -4879,7 +5844,7 @@ var Compiler = class {
4879
5844
  file.presentationWrapper.view.setNotesMasterRId(notesMasterRId);
4880
5845
  const notesMasterThemeIndex = themes.length + 1;
4881
5846
  mapping["NotesMaster"] = {
4882
- data: this.formatter.formatToXml(new DefaultNotesMaster(), context),
5847
+ data: this.formatter.formatToXml(new DefaultNotesMaster(file.notesMasterOptions), context),
4883
5848
  path: "ppt/notesMasters/notesMaster1.xml"
4884
5849
  };
4885
5850
  const notesMasterTheme = new DefaultTheme();
@@ -4895,6 +5860,28 @@ var Compiler = class {
4895
5860
  path: "ppt/notesMasters/_rels/notesMaster1.xml.rels"
4896
5861
  };
4897
5862
  }
5863
+ if (file.hasHandoutMaster) {
5864
+ const handoutMasterRId = file.presentationWrapper.relationships.relationshipCount + 1;
5865
+ file.presentationWrapper.relationships.addRelationship(handoutMasterRId, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/handoutMaster", "handoutMasters/handoutMaster1.xml");
5866
+ file.presentationWrapper.view.setHandoutMasterRId(handoutMasterRId);
5867
+ const handoutMasterThemeIndex = themes.length + (file.notesSlides.length > 0 ? 2 : 1);
5868
+ mapping["HandoutMaster"] = {
5869
+ data: this.formatter.formatToXml(new DefaultHandoutMaster(file.handoutMasterOptions), context),
5870
+ path: "ppt/handoutMasters/handoutMaster1.xml"
5871
+ };
5872
+ const handoutMasterTheme = new DefaultTheme();
5873
+ mapping["HandoutMasterTheme"] = {
5874
+ data: this.formatter.formatToXml(handoutMasterTheme, context),
5875
+ path: `ppt/theme/theme${handoutMasterThemeIndex}.xml`
5876
+ };
5877
+ file.contentTypes.addTheme(handoutMasterThemeIndex);
5878
+ const handoutMasterRels = new Relationships();
5879
+ handoutMasterRels.addRelationship(1, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme", `../theme/theme${handoutMasterThemeIndex}.xml`);
5880
+ mapping["HandoutMasterRelationships"] = {
5881
+ data: this.formatter.formatToXml(handoutMasterRels, context),
5882
+ path: "ppt/handoutMasters/_rels/handoutMaster1.xml.rels"
5883
+ };
5884
+ }
4898
5885
  if (file.commentAuthorList) file.presentationWrapper.relationships.addRelationship(file.presentationWrapper.relationships.relationshipCount + 1, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/commentAuthors", "commentAuthors.xml");
4899
5886
  const presentationXml = this.formatter.formatToXml(file.presentationWrapper.view, context);
4900
5887
  let currentImageCount = 0;
@@ -7214,9 +8201,34 @@ const patchPresentation = async ({ outputType, data, patches, keepOriginalStyles
7214
8201
  __reExport(/* @__PURE__ */ __exportAll({
7215
8202
  AppProperties: () => AppProperties,
7216
8203
  AudioFrame: () => AudioFrame,
8204
+ BLD_AS_ONE: () => BLD_AS_ONE,
8205
+ BLD_DGM: () => BLD_DGM,
8206
+ BLD_GRAPHIC: () => BLD_GRAPHIC,
8207
+ BLD_LST: () => BLD_LST,
8208
+ BLD_OLE_CHART: () => BLD_OLE_CHART,
8209
+ BLD_P: () => BLD_P,
8210
+ BLD_SUB: () => BLD_SUB,
8211
+ BLINDS: () => BLINDS,
8212
+ BOLD: () => BOLD,
8213
+ BOLD_ITALIC: () => BOLD_ITALIC,
8214
+ BOOL_VAL: () => BOOL_VAL,
7217
8215
  Background: () => Background,
7218
8216
  BevelPresetType: () => BevelPresetType,
7219
8217
  BlipFill: () => BlipFill,
8218
+ CHECKER: () => CHECKER,
8219
+ CIRCLE: () => CIRCLE,
8220
+ CLR_MRU: () => CLR_MRU,
8221
+ CLR_VAL: () => CLR_VAL,
8222
+ COMB: () => COMB,
8223
+ CONTENT_PART: () => CONTENT_PART,
8224
+ CONTROL: () => CONTROL,
8225
+ CONTROLS: () => CONTROLS,
8226
+ COVER: () => COVER,
8227
+ CUST_DATA: () => CUST_DATA,
8228
+ CUST_DATA_LST: () => CUST_DATA_LST,
8229
+ CUST_SHOW: () => CUST_SHOW,
8230
+ CUST_SHOW_LST: () => CUST_SHOW_LST,
8231
+ CUT: () => CUT,
7220
8232
  Chart: () => Chart,
7221
8233
  ChartCollection: () => ChartCollection,
7222
8234
  ChartSpace: () => ChartSpace,
@@ -7224,27 +8236,59 @@ __reExport(/* @__PURE__ */ __exportAll({
7224
8236
  ConnectorShape: () => ConnectorShape,
7225
8237
  ContentTypes: () => ContentTypes,
7226
8238
  CoreProperties: () => CoreProperties,
8239
+ DIAMOND: () => DIAMOND,
8240
+ DISSOLVE: () => DISSOLVE,
7227
8241
  DateTimeField: () => DateTimeField,
8242
+ DefaultHandoutMaster: () => DefaultHandoutMaster,
7228
8243
  DefaultNotesMaster: () => DefaultNotesMaster,
7229
8244
  DefaultSlideLayout: () => DefaultSlideLayout,
7230
8245
  DefaultSlideMaster: () => DefaultSlideMaster,
7231
8246
  DefaultTheme: () => DefaultTheme,
7232
8247
  DrawingTable: () => DrawingTable,
8248
+ EMBEDDED_FONT: () => EMBEDDED_FONT,
8249
+ EMBEDDED_FONT_LST: () => EMBEDDED_FONT_LST,
8250
+ END_COND_LST: () => END_COND_LST,
8251
+ END_SND: () => END_SND,
8252
+ END_SYNC: () => END_SYNC,
8253
+ EXCL: () => EXCL,
7233
8254
  EndParagraphRunProperties: () => EndParagraphRunProperties,
8255
+ FADE: () => FADE,
8256
+ FLT_VAL: () => FLT_VAL,
8257
+ FONT: () => FONT,
8258
+ FROM: () => FROM,
7234
8259
  Field: () => Field,
7235
8260
  File: () => File,
8261
+ GRAPHIC_EL: () => GRAPHIC_EL,
8262
+ GUIDE: () => GUIDE,
7236
8263
  GroupShape: () => GroupShape,
7237
8264
  GroupShapeProperties: () => GroupShapeProperties,
7238
8265
  GroupTransform2D: () => GroupTransform2D,
8266
+ HSL: () => HSL,
8267
+ HTML_PUB_PR: () => HTML_PUB_PR,
7239
8268
  HeaderFooter: () => HeaderFooter,
8269
+ INK_TGT: () => INK_TGT,
8270
+ INT_VAL: () => INT_VAL,
8271
+ ITALIC: () => ITALIC,
8272
+ KINSOKU: () => KINSOKU,
7240
8273
  LineCap: () => LineCap,
7241
8274
  LineJoin: () => LineJoin,
7242
8275
  LineShape: () => LineShape,
8276
+ MODIFY_VERIFIER: () => MODIFY_VERIFIER,
7243
8277
  Media: () => Media,
8278
+ NEWSFLASH: () => NEWSFLASH,
8279
+ NOTES_VIEW_PR: () => NOTES_VIEW_PR,
7244
8280
  NonVisualDrawingProperties: () => NonVisualDrawingProperties,
7245
8281
  NonVisualPictureProperties: () => NonVisualPictureProperties,
7246
8282
  NonVisualShapeProperties: () => NonVisualShapeProperties,
7247
8283
  NotesSlide: () => NotesSlide,
8284
+ OLE_CHART_EL: () => OLE_CHART_EL,
8285
+ OUTLINE_VIEW_PR: () => OUTLINE_VIEW_PR,
8286
+ PHOTO_ALBUM: () => PHOTO_ALBUM,
8287
+ PLUS: () => PLUS,
8288
+ PRN_PR: () => PRN_PR,
8289
+ PROGRESS: () => PROGRESS,
8290
+ PULL: () => PULL,
8291
+ PUSH: () => PUSH,
7248
8292
  Packer: () => Packer,
7249
8293
  Paragraph: () => Paragraph,
7250
8294
  ParagraphProperties: () => ParagraphProperties,
@@ -7257,9 +8301,28 @@ __reExport(/* @__PURE__ */ __exportAll({
7257
8301
  PresetDash: () => PresetDash,
7258
8302
  PresetGeometry: () => PresetGeometry,
7259
8303
  PresetMaterialType: () => PresetMaterialType,
8304
+ RANDOM: () => RANDOM,
8305
+ RANDOM_BAR: () => RANDOM_BAR,
8306
+ REGULAR: () => REGULAR,
8307
+ RGB: () => RGB,
8308
+ RTN: () => RTN,
8309
+ R_CTR: () => R_CTR,
7260
8310
  ReflectionAlignment: () => ReflectionAlignment,
7261
8311
  Relationships: () => Relationships,
7262
8312
  RunProperties: () => RunProperties,
8313
+ SLD_LST: () => SLD_LST,
8314
+ SLD_SYNC_PR: () => SLD_SYNC_PR,
8315
+ SMART_TAGS: () => SMART_TAGS,
8316
+ SND_AC: () => SND_AC,
8317
+ SND_TGT: () => SND_TGT,
8318
+ SORTER_VIEW_PR: () => SORTER_VIEW_PR,
8319
+ SPLIT: () => SPLIT,
8320
+ STRIPS: () => STRIPS,
8321
+ STR_VAL: () => STR_VAL,
8322
+ STYLE: () => STYLE,
8323
+ ST_SND: () => ST_SND,
8324
+ SUB_SP: () => SUB_SP,
8325
+ SUB_TN_LST: () => SUB_TN_LST,
7263
8326
  Shape: () => Shape,
7264
8327
  ShapeProperties: () => ShapeProperties,
7265
8328
  ShapeTree: () => ShapeTree,
@@ -7269,6 +8332,13 @@ __reExport(/* @__PURE__ */ __exportAll({
7269
8332
  SlideSizePreset: () => SlideSizePreset,
7270
8333
  SmartArt: () => SmartArt,
7271
8334
  StrikeStyle: () => StrikeStyle,
8335
+ TAG: () => TAG,
8336
+ TAGS: () => TAGS,
8337
+ TAG_LST: () => TAG_LST,
8338
+ TMPL: () => TMPL,
8339
+ TMPL_LST: () => TMPL_LST,
8340
+ TM_PCT: () => TM_PCT,
8341
+ TN: () => TN,
7272
8342
  Table: () => Table,
7273
8343
  TableCell: () => TableCell,
7274
8344
  TableCellProperties: () => TableCellProperties,
@@ -7283,6 +8353,11 @@ __reExport(/* @__PURE__ */ __exportAll({
7283
8353
  Transition: () => Transition,
7284
8354
  UnderlineStyle: () => UnderlineStyle,
7285
8355
  VideoFrame: () => VideoFrame,
8356
+ WEB_PR: () => WEB_PR,
8357
+ WEDGE: () => WEDGE,
8358
+ WHEEL: () => WHEEL,
8359
+ WIPE: () => WIPE,
8360
+ ZOOM: () => ZOOM,
7286
8361
  buildFill: () => buildFill,
7287
8362
  coerceChild: () => coerceChild,
7288
8363
  convertEmuToInches: () => convertEmuToInches,
@@ -7293,16 +8368,25 @@ __reExport(/* @__PURE__ */ __exportAll({
7293
8368
  convertPointsToEmu: () => convertPointsToEmu,
7294
8369
  createBevel: () => createBevel,
7295
8370
  createBottomBevel: () => createBottomBevel,
8371
+ createBuildDiagram: () => createBuildDiagram,
8372
+ createBuildGraphic: () => createBuildGraphic,
8373
+ createBuildOleChart: () => createBuildOleChart,
8374
+ createBuildParagraph: () => createBuildParagraph,
7296
8375
  createColorElement: () => createColorElement,
7297
8376
  createColorTransforms: () => createColorTransforms,
7298
8377
  createEffectList: () => createEffectList,
8378
+ createExclusiveTiming: () => createExclusiveTiming,
7299
8379
  createGradientFill: () => createGradientFill,
7300
8380
  createGradientStop: () => createGradientStop,
8381
+ createKinsoku: () => createKinsoku,
7301
8382
  createOutline: () => createOutline,
7302
8383
  createOutlineCompat: () => createOutlineCompat,
8384
+ createOutlineViewProperties: () => createOutlineViewProperties,
8385
+ createOutlineViewSlideEntry: () => createOutlineViewSlideEntry,
7303
8386
  createPptxEffectList: () => createPptxEffectList,
7304
8387
  createScene3D: () => createScene3D,
7305
8388
  createShape3D: () => createShape3D,
8389
+ createSlideSyncProperties: () => createSlideSyncProperties,
7306
8390
  createTransformation: () => createTransformation,
7307
8391
  extractBlipFillMedia: () => extractBlipFillMedia,
7308
8392
  hashedId: () => hashedId,
@@ -7316,6 +8400,6 @@ __reExport(/* @__PURE__ */ __exportAll({
7316
8400
  uniqueUuid: () => uniqueUuid
7317
8401
  }), util_exports);
7318
8402
  //#endregion
7319
- export { AppProperties, AudioFrame, Background, BevelPresetType, BlipFill, Chart, ChartCollection, ChartSpace, CompoundLine, ConnectorShape, ContentTypes, CoreProperties, DateTimeField, DefaultNotesMaster, DefaultSlideLayout, DefaultSlideMaster, DefaultTheme, DrawingTable, EndParagraphRunProperties, Field, File, File as Presentation, GroupShape, GroupShapeProperties, GroupTransform2D, HeaderFooter, LineCap, LineJoin, LineShape, Media, NonVisualDrawingProperties, NonVisualPictureProperties, NonVisualShapeProperties, NotesSlide, Packer, Paragraph, ParagraphProperties, PatchType, PathShadeType, PenAlignment, Picture, PresentationWrapper, PresetDash, PresetGeometry, PresetMaterialType, ReflectionAlignment, Relationships, RunProperties, Shape, ShapeProperties, ShapeTree, Slide, SlideLayout, SlideNumberField, SlideSizePreset, SmartArt, StrikeStyle, Table, TableCell, TableCellProperties, TableProperties, TableRow, Text, TextBody, TextCapitalization, TextRun, TileFlipMode, Transform2D, Transition, UnderlineStyle, VideoFrame, buildFill, coerceChild, convertEmuToInches, convertEmuToPixels, convertEmuToPoints, convertInchesToEmu, convertPixelsToEmu, convertPointsToEmu, createBevel, createBottomBevel, createColorElement, createColorTransforms, createEffectList, createGradientFill, createGradientStop, createOutline, createOutlineCompat, createPptxEffectList, createScene3D, createShape3D, createTransformation, extractBlipFillMedia, hashedId, parseArchive, parsePptx, parsePresentation, patchPresentation, percentToTHousandths, uniqueId, uniqueNumericIdCreator, uniqueUuid };
8403
+ export { AppProperties, AudioFrame, BLD_AS_ONE, BLD_DGM, BLD_GRAPHIC, BLD_LST, BLD_OLE_CHART, BLD_P, BLD_SUB, BLINDS, BOLD, BOLD_ITALIC, BOOL_VAL, Background, BevelPresetType, BlipFill, CHECKER, CIRCLE, CLR_MRU, CLR_VAL, COMB, CONTENT_PART, CONTROL, CONTROLS, COVER, CUST_DATA, CUST_DATA_LST, CUST_SHOW, CUST_SHOW_LST, CUT, Chart, ChartCollection, ChartSpace, CompoundLine, ConnectorShape, ContentTypes, CoreProperties, DIAMOND, DISSOLVE, DateTimeField, DefaultHandoutMaster, DefaultNotesMaster, DefaultSlideLayout, DefaultSlideMaster, DefaultTheme, DrawingTable, EMBEDDED_FONT, EMBEDDED_FONT_LST, END_COND_LST, END_SND, END_SYNC, EXCL, EndParagraphRunProperties, FADE, FLT_VAL, FONT, FROM, Field, File, File as Presentation, GRAPHIC_EL, GUIDE, GroupShape, GroupShapeProperties, GroupTransform2D, HSL, HTML_PUB_PR, HeaderFooter, INK_TGT, INT_VAL, ITALIC, KINSOKU, LineCap, LineJoin, LineShape, MODIFY_VERIFIER, Media, NEWSFLASH, NOTES_VIEW_PR, NonVisualDrawingProperties, NonVisualPictureProperties, NonVisualShapeProperties, NotesSlide, OLE_CHART_EL, OUTLINE_VIEW_PR, PHOTO_ALBUM, PLUS, PRN_PR, PROGRESS, PULL, PUSH, Packer, Paragraph, ParagraphProperties, PatchType, PathShadeType, PenAlignment, Picture, PresentationWrapper, PresetDash, PresetGeometry, PresetMaterialType, RANDOM, RANDOM_BAR, REGULAR, RGB, RTN, R_CTR, ReflectionAlignment, Relationships, RunProperties, SLD_LST, SLD_SYNC_PR, SMART_TAGS, SND_AC, SND_TGT, SORTER_VIEW_PR, SPLIT, STRIPS, STR_VAL, STYLE, ST_SND, SUB_SP, SUB_TN_LST, Shape, ShapeProperties, ShapeTree, Slide, SlideLayout, SlideNumberField, SlideSizePreset, SmartArt, StrikeStyle, TAG, TAGS, TAG_LST, TMPL, TMPL_LST, TM_PCT, TN, Table, TableCell, TableCellProperties, TableProperties, TableRow, Text, TextBody, TextCapitalization, TextRun, TileFlipMode, Transform2D, Transition, UnderlineStyle, VideoFrame, WEB_PR, WEDGE, WHEEL, WIPE, ZOOM, buildFill, coerceChild, convertEmuToInches, convertEmuToPixels, convertEmuToPoints, convertInchesToEmu, convertPixelsToEmu, convertPointsToEmu, createBevel, createBottomBevel, createBuildDiagram, createBuildGraphic, createBuildOleChart, createBuildParagraph, createColorElement, createColorTransforms, createEffectList, createExclusiveTiming, createGradientFill, createGradientStop, createKinsoku, createOutline, createOutlineCompat, createOutlineViewProperties, createOutlineViewSlideEntry, createPptxEffectList, createScene3D, createShape3D, createSlideSyncProperties, createTransformation, extractBlipFillMedia, hashedId, parseArchive, parsePptx, parsePresentation, patchPresentation, percentToTHousandths, uniqueId, uniqueNumericIdCreator, uniqueUuid };
7320
8404
 
7321
8405
  //# sourceMappingURL=index.mjs.map