ooxml-ui 1.26.2 → 1.27.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/dist/chart/format-pane-types.d.ts +0 -1
  2. package/dist/chart/format-pane-view.d.ts +0 -1
  3. package/dist/pptx/{chunk-43NFRLCD.cjs → chunk-37VJFRCP.cjs} +2 -2
  4. package/dist/pptx/{chunk-3ZI57W7O.mjs → chunk-3LOVEO7U.mjs} +5 -0
  5. package/dist/pptx/{chunk-72P6AWRA.mjs → chunk-67L75M6K.mjs} +1 -1
  6. package/dist/pptx/{chunk-B4GBGPNL.cjs → chunk-CWWL7MCL.cjs} +99 -0
  7. package/dist/pptx/{chunk-7DIZOCO4.mjs → chunk-FUKVYJPM.mjs} +59 -2
  8. package/dist/pptx/{chunk-OOQMIQT3.cjs → chunk-GWKTHP6U.cjs} +0 -23
  9. package/dist/pptx/{chunk-LB3A3GF6.mjs → chunk-MJACF7Y2.mjs} +0 -23
  10. package/dist/pptx/{chunk-HF2YJASV.mjs → chunk-OD6REJDV.mjs} +2 -1
  11. package/dist/pptx/{chunk-4PYBBOIK.cjs → chunk-TMCN2OVN.cjs} +44 -43
  12. package/dist/pptx/{chunk-NFP4PCTP.cjs → chunk-VMDMICQC.cjs} +1346 -325
  13. package/dist/pptx/{chunk-R5GKUSHI.mjs → chunk-XZX7EHX4.mjs} +1290 -233
  14. package/dist/pptx/{chunk-X4FNVH7J.cjs → chunk-YMITEJST.cjs} +32 -0
  15. package/dist/pptx/dom/index.cjs +390 -390
  16. package/dist/pptx/dom/index.mjs +9 -9
  17. package/dist/pptx/export/index.d.ts +1 -0
  18. package/dist/pptx/export/index.d.ts.map +1 -1
  19. package/dist/pptx/export/print-document.cjs +17 -17
  20. package/dist/pptx/export/print-document.d.ts +7 -5
  21. package/dist/pptx/export/print-document.d.ts.map +1 -1
  22. package/dist/pptx/export/print-document.mjs +1 -1
  23. package/dist/pptx/export/print-job.d.ts +134 -0
  24. package/dist/pptx/export/print-job.d.ts.map +1 -0
  25. package/dist/pptx/i18n/index.cjs +6 -6
  26. package/dist/pptx/i18n/index.mjs +1 -1
  27. package/dist/pptx/i18n/translations-en.d.ts.map +1 -1
  28. package/dist/pptx/index.cjs +3268 -3116
  29. package/dist/pptx/index.mjs +5 -5
  30. package/dist/pptx/render/controller/history-controller.d.ts +6 -0
  31. package/dist/pptx/render/controller/history-controller.d.ts.map +1 -1
  32. package/dist/pptx/render/deck-save-encryption.d.ts +10 -1
  33. package/dist/pptx/render/deck-save-encryption.d.ts.map +1 -1
  34. package/dist/pptx/render/deck-style.d.ts +12 -1
  35. package/dist/pptx/render/deck-style.d.ts.map +1 -1
  36. package/dist/pptx/render/find-replace-session-actions.d.ts +44 -0
  37. package/dist/pptx/render/find-replace-session-actions.d.ts.map +1 -0
  38. package/dist/pptx/render/find-replace-session.d.ts +120 -0
  39. package/dist/pptx/render/find-replace-session.d.ts.map +1 -0
  40. package/dist/pptx/render/format-painter.cjs +5 -5
  41. package/dist/pptx/render/format-painter.mjs +2 -2
  42. package/dist/pptx/render/google-webfonts.d.ts +32 -1
  43. package/dist/pptx/render/google-webfonts.d.ts.map +1 -1
  44. package/dist/pptx/render/index.d.ts +7 -0
  45. package/dist/pptx/render/index.d.ts.map +1 -1
  46. package/dist/pptx/render/inserted-slide-layout.d.ts +28 -0
  47. package/dist/pptx/render/inserted-slide-layout.d.ts.map +1 -0
  48. package/dist/pptx/render/inspector/index.d.ts +4 -0
  49. package/dist/pptx/render/inspector/index.d.ts.map +1 -1
  50. package/dist/pptx/render/inspector/inspector-color-fields.d.ts +38 -0
  51. package/dist/pptx/render/inspector/inspector-color-fields.d.ts.map +1 -0
  52. package/dist/pptx/render/inspector/text-effect-fields.d.ts +29 -0
  53. package/dist/pptx/render/inspector/text-effect-fields.d.ts.map +1 -0
  54. package/dist/pptx/render/inspector-helpers.cjs +21 -13
  55. package/dist/pptx/render/inspector-helpers.d.ts +10 -1
  56. package/dist/pptx/render/inspector-helpers.d.ts.map +1 -1
  57. package/dist/pptx/render/inspector-helpers.mjs +1 -1
  58. package/dist/pptx/render/live-color-input.d.ts +93 -0
  59. package/dist/pptx/render/live-color-input.d.ts.map +1 -0
  60. package/dist/pptx/render/live-color-leaves.d.ts +34 -0
  61. package/dist/pptx/render/live-color-leaves.d.ts.map +1 -0
  62. package/dist/pptx/render/master-view-crud-history.d.ts +45 -0
  63. package/dist/pptx/render/master-view-crud-history.d.ts.map +1 -0
  64. package/dist/pptx/render/master-view-crud.d.ts +11 -0
  65. package/dist/pptx/render/master-view-crud.d.ts.map +1 -1
  66. package/dist/pptx/render/theme-by-path.d.ts +61 -0
  67. package/dist/pptx/render/theme-by-path.d.ts.map +1 -0
  68. package/dist/pptx/render/theme-history.d.ts +146 -0
  69. package/dist/pptx/render/theme-history.d.ts.map +1 -0
  70. package/dist/pptx/render/theme-write-queue.d.ts +21 -0
  71. package/dist/pptx/render/theme-write-queue.d.ts.map +1 -0
  72. package/dist/pptx/render/viewer-preferences.d.ts +11 -0
  73. package/dist/pptx/render/viewer-preferences.d.ts.map +1 -1
  74. package/dist/pptx/render/viewer-props-manifest.d.ts.map +1 -1
  75. package/dist/pptx/{smartart-insert-preview-CTBWMXNX.cjs → smartart-insert-preview-MCDHVWHZ.cjs} +7 -7
  76. package/dist/pptx/{smartart-insert-preview-QJBRDU4C.mjs → smartart-insert-preview-QQH5ZBSF.mjs} +6 -6
  77. package/package.json +2 -2
@@ -9,20 +9,20 @@ var chunkXOAXPD2W_cjs = require('./chunk-XOAXPD2W.cjs');
9
9
  var chunkBSGCZ4JZ_cjs = require('./chunk-BSGCZ4JZ.cjs');
10
10
  var chunkIOOI63TH_cjs = require('./chunk-IOOI63TH.cjs');
11
11
  var chunkZJFN5POF_cjs = require('./chunk-ZJFN5POF.cjs');
12
- var chunkB4GBGPNL_cjs = require('./chunk-B4GBGPNL.cjs');
12
+ var chunkCWWL7MCL_cjs = require('./chunk-CWWL7MCL.cjs');
13
13
  var chunkWB25PCHQ_cjs = require('./chunk-WB25PCHQ.cjs');
14
14
  var chunkW3X2UVYQ_cjs = require('./chunk-W3X2UVYQ.cjs');
15
15
  var chunk6KLPQQYP_cjs = require('./chunk-6KLPQQYP.cjs');
16
16
  var chunkFOE75Z6N_cjs = require('./chunk-FOE75Z6N.cjs');
17
17
  var chunkNTXHQHCS_cjs = require('./chunk-NTXHQHCS.cjs');
18
18
  var chunkFM4C4MBJ_cjs = require('./chunk-FM4C4MBJ.cjs');
19
- var chunkX4FNVH7J_cjs = require('./chunk-X4FNVH7J.cjs');
19
+ var chunkYMITEJST_cjs = require('./chunk-YMITEJST.cjs');
20
20
  var chunkUPN5FFKP_cjs = require('./chunk-UPN5FFKP.cjs');
21
21
  var chunkOJFD3SHS_cjs = require('./chunk-OJFD3SHS.cjs');
22
22
  var chunkUSBRSEJK_cjs = require('./chunk-USBRSEJK.cjs');
23
23
  var chunk3ESFHUZI_cjs = require('./chunk-3ESFHUZI.cjs');
24
24
  var chunkU47LRWDT_cjs = require('./chunk-U47LRWDT.cjs');
25
- var chunkOOQMIQT3_cjs = require('./chunk-OOQMIQT3.cjs');
25
+ var chunkGWKTHP6U_cjs = require('./chunk-GWKTHP6U.cjs');
26
26
  var chunkY6DO6SVT_cjs = require('./chunk-Y6DO6SVT.cjs');
27
27
  var chunkPBZWDEXQ_cjs = require('./chunk-PBZWDEXQ.cjs');
28
28
  var chunkEW5DW5KR_cjs = require('./chunk-EW5DW5KR.cjs');
@@ -42,9 +42,7 @@ var tableCellEdit = require('ooxml-core/pptx/editor/render/table-cell-edit');
42
42
  var tableDataGridOps = require('ooxml-core/pptx/editor/render/table-data-grid-ops');
43
43
  var tableCellMerge = require('ooxml-core/pptx/editor/render/table-cell-merge');
44
44
  var clone = require('ooxml-core/pptx/editor/render/clone');
45
- var element = require('ooxml-core/pptx/editor/render/element');
46
45
  var geometry = require('ooxml-core/geometry');
47
- var elementLocks = require('ooxml-core/pptx/editor/render/element-locks');
48
46
  var groupOps = require('ooxml-core/pptx/editor/render/group-ops');
49
47
  var slideBackgroundPatch = require('ooxml-core/pptx/editor/render/slide-background-patch');
50
48
  var elementOperations = require('ooxml-core/pptx/editor/render/element-operations');
@@ -1321,7 +1319,7 @@ function flattenPath(d) {
1321
1319
  let start = [0, 0];
1322
1320
  let i = 0;
1323
1321
  let command2 = "";
1324
- const num14 = () => Number.parseFloat(tokens[i++] ?? "NaN");
1322
+ const num15 = () => Number.parseFloat(tokens[i++] ?? "NaN");
1325
1323
  while (i < tokens.length) {
1326
1324
  const token = tokens[i];
1327
1325
  if (/^[A-Za-z]$/u.test(token)) {
@@ -1343,26 +1341,26 @@ function flattenPath(d) {
1343
1341
  if (current.length > 1) {
1344
1342
  subpaths.push(current);
1345
1343
  }
1346
- pos = [num14(), num14()];
1344
+ pos = [num15(), num15()];
1347
1345
  start = pos;
1348
1346
  current = [pos];
1349
1347
  break;
1350
1348
  case "L":
1351
- pos = [num14(), num14()];
1349
+ pos = [num15(), num15()];
1352
1350
  current.push(pos);
1353
1351
  break;
1354
1352
  case "H":
1355
- pos = [num14(), pos[1]];
1353
+ pos = [num15(), pos[1]];
1356
1354
  current.push(pos);
1357
1355
  break;
1358
1356
  case "V":
1359
- pos = [pos[0], num14()];
1357
+ pos = [pos[0], num15()];
1360
1358
  current.push(pos);
1361
1359
  break;
1362
1360
  case "C": {
1363
- const p1 = [num14(), num14()];
1364
- const p2 = [num14(), num14()];
1365
- const p3 = [num14(), num14()];
1361
+ const p1 = [num15(), num15()];
1362
+ const p2 = [num15(), num15()];
1363
+ const p3 = [num15(), num15()];
1366
1364
  for (let step2 = 1; step2 <= CURVE_STEPS; step2++) {
1367
1365
  const t2 = step2 / CURVE_STEPS;
1368
1366
  const u = 1 - t2;
@@ -1375,8 +1373,8 @@ function flattenPath(d) {
1375
1373
  break;
1376
1374
  }
1377
1375
  case "Q": {
1378
- const p1 = [num14(), num14()];
1379
- const p2 = [num14(), num14()];
1376
+ const p1 = [num15(), num15()];
1377
+ const p2 = [num15(), num15()];
1380
1378
  for (let step2 = 1; step2 <= CURVE_STEPS; step2++) {
1381
1379
  const t2 = step2 / CURVE_STEPS;
1382
1380
  const u = 1 - t2;
@@ -1389,12 +1387,12 @@ function flattenPath(d) {
1389
1387
  break;
1390
1388
  }
1391
1389
  case "A": {
1392
- const rx = num14();
1393
- const ry = num14();
1394
- const rotation = num14();
1395
- const largeArc = num14() !== 0;
1396
- const sweep = num14() !== 0;
1397
- const to = [num14(), num14()];
1390
+ const rx = num15();
1391
+ const ry = num15();
1392
+ const rotation = num15();
1393
+ const largeArc = num15() !== 0;
1394
+ const sweep = num15() !== 0;
1395
+ const to = [num15(), num15()];
1398
1396
  current.push(...flattenArc(pos, rx, ry, rotation, largeArc, sweep, to));
1399
1397
  pos = to;
1400
1398
  break;
@@ -7801,7 +7799,7 @@ var EQUATION_TEMPLATES = [
7801
7799
 
7802
7800
  // src/pptx/render/mathml-sanitize.ts
7803
7801
  function sanitizeMathMl(markup) {
7804
- const sanitized = chunkX4FNVH7J_cjs.sanitizeMarkupOrEmpty(markup, { USE_PROFILES: { mathMl: true, svg: true } });
7802
+ const sanitized = chunkYMITEJST_cjs.sanitizeMarkupOrEmpty(markup, { USE_PROFILES: { mathMl: true, svg: true } });
7805
7803
  if (/<math(?:\s|>)/iu.test(markup) && !/<math(?:\s|>)/iu.test(sanitized) && sanitized) {
7806
7804
  return `<math xmlns="http://www.w3.org/1998/Math/MathML" display="inline">${sanitized}</math>`;
7807
7805
  }
@@ -10995,8 +10993,8 @@ function withChartUserShapeRowFlipUpdated(userShapes, path, flip) {
10995
10993
 
10996
10994
  // src/pptx/render/chart-user-shape-row-frame.ts
10997
10995
  var IDENTITY_FRAC = { x: 0, y: 0, w: 1, h: 1 };
10998
- function safeDiv(num14, den) {
10999
- return den !== 0 ? num14 / den : 0;
10996
+ function safeDiv(num15, den) {
10997
+ return den !== 0 ? num15 / den : 0;
11000
10998
  }
11001
10999
  function childFraction(off, ext, chOff, chExt) {
11002
11000
  return {
@@ -25687,6 +25685,10 @@ function createEditorHistoryController(options = {}) {
25687
25685
  stack.clear();
25688
25686
  sync();
25689
25687
  },
25688
+ forget(reaches) {
25689
+ stack.forget(reaches);
25690
+ sync();
25691
+ },
25690
25692
  setMaxDepth(next) {
25691
25693
  maxDepth = clampDepth(next);
25692
25694
  stack.setMaxDepth(maxDepth);
@@ -27447,7 +27449,7 @@ function createTemplateContext(options = {}) {
27447
27449
  const scheme = { ...pptx.DEFAULT_SCHEME_COLOR_MAP, ...options.scheme ?? {} };
27448
27450
  let counter = 0;
27449
27451
  const idFor = options.idFor ?? ((index) => `template-el-${Date.now()}-${index}`);
27450
- const dictionary = chunkOOQMIQT3_cjs.translationsEn;
27452
+ const dictionary = chunkGWKTHP6U_cjs.translationsEn;
27451
27453
  const translate = options.translate ?? ((key) => dictionary[key] ?? key);
27452
27454
  return {
27453
27455
  scheme,
@@ -30568,7 +30570,7 @@ function getPendingSelectionRestore() {
30568
30570
  }
30569
30571
  function applyStyleToSelectedSegments(segments, selection, updates, inherited) {
30570
30572
  const { startSegIdx, startOffset, endSegIdx, endOffset } = selection;
30571
- const restyle = (style) => chunkB4GBGPNL_cjs.mergeTextStyleUpdate(style, updates, inherited);
30573
+ const restyle = (style) => chunkCWWL7MCL_cjs.mergeTextStyleUpdate(style, updates, inherited);
30572
30574
  const result = [];
30573
30575
  let newStartSegIdx = -1;
30574
30576
  let newStartOffset = 0;
@@ -30884,11 +30886,11 @@ function applyTextStyleUpdate(element, updates, selection, segments) {
30884
30886
  return { patch: {}, newSelection: null };
30885
30887
  }
30886
30888
  const current = segments ?? element.textSegments;
30887
- const exclusive = chunkB4GBGPNL_cjs.withExclusiveLineSpacing(updates);
30889
+ const exclusive = chunkCWWL7MCL_cjs.withExclusiveLineSpacing(updates);
30888
30890
  if (selection && current && current.length > 0) {
30889
- const { body, run } = chunkB4GBGPNL_cjs.splitTextStyleUpdate(exclusive);
30890
- let textStyle = chunkB4GBGPNL_cjs.mergeTextStyleUpdate(element.textStyle, body);
30891
- let textSegments = chunkB4GBGPNL_cjs.overrideParagraphProperties(
30891
+ const { body, run } = chunkCWWL7MCL_cjs.splitTextStyleUpdate(exclusive);
30892
+ let textStyle = chunkCWWL7MCL_cjs.mergeTextStyleUpdate(element.textStyle, body);
30893
+ let textSegments = chunkCWWL7MCL_cjs.overrideParagraphProperties(
30892
30894
  current,
30893
30895
  exclusive,
30894
30896
  element.textStyle?.inheritedParagraphSpacing
@@ -30899,9 +30901,9 @@ function applyTextStyleUpdate(element, updates, selection, segments) {
30899
30901
  textSegments = scoped.newSegments;
30900
30902
  newSelection = scoped.newSelection;
30901
30903
  }
30902
- const touched = chunkB4GBGPNL_cjs.TEXT_DECORATION_FLAGS.filter((flag2) => flag2 in run);
30904
+ const touched = chunkCWWL7MCL_cjs.TEXT_DECORATION_FLAGS.filter((flag2) => flag2 in run);
30903
30905
  if (touched.length > 0) {
30904
- const reconciled = chunkB4GBGPNL_cjs.reconcileDecorationFlags(textSegments, textStyle, touched);
30906
+ const reconciled = chunkCWWL7MCL_cjs.reconcileDecorationFlags(textSegments, textStyle, touched);
30905
30907
  textStyle = reconciled.textStyle;
30906
30908
  textSegments = reconciled.textSegments;
30907
30909
  }
@@ -30909,7 +30911,7 @@ function applyTextStyleUpdate(element, updates, selection, segments) {
30909
30911
  patch: {
30910
30912
  textStyle,
30911
30913
  textSegments,
30912
- ...chunkB4GBGPNL_cjs.overrideParagraphIndents(element, exclusive)
30914
+ ...chunkCWWL7MCL_cjs.overrideParagraphIndents(element, exclusive)
30913
30915
  },
30914
30916
  newSelection
30915
30917
  };
@@ -30917,7 +30919,7 @@ function applyTextStyleUpdate(element, updates, selection, segments) {
30917
30919
  const wholeText = textRunsStylePatch.textRunsStylePatch(
30918
30920
  {
30919
30921
  ...element,
30920
- textSegments: current && chunkB4GBGPNL_cjs.overrideParagraphProperties(
30922
+ textSegments: current && chunkCWWL7MCL_cjs.overrideParagraphProperties(
30921
30923
  current,
30922
30924
  exclusive,
30923
30925
  element.textStyle?.inheritedParagraphSpacing
@@ -30928,7 +30930,7 @@ function applyTextStyleUpdate(element, updates, selection, segments) {
30928
30930
  return {
30929
30931
  patch: {
30930
30932
  ...wholeText,
30931
- ...chunkB4GBGPNL_cjs.overrideParagraphIndents(element, exclusive)
30933
+ ...chunkCWWL7MCL_cjs.overrideParagraphIndents(element, exclusive)
30932
30934
  },
30933
30935
  newSelection: null
30934
30936
  };
@@ -34959,9 +34961,9 @@ function textAdvancedStateFromStyle(ts) {
34959
34961
  }
34960
34962
  function textAdvancedPatch(el, changes) {
34961
34963
  const base2 = pptx.hasTextProperties(el) ? el.textStyle ?? {} : {};
34962
- const exclusive = chunkB4GBGPNL_cjs.withExclusiveLineSpacing(changes);
34964
+ const exclusive = chunkCWWL7MCL_cjs.withExclusiveLineSpacing(changes);
34963
34965
  return {
34964
- ...chunkB4GBGPNL_cjs.paragraphOverridePatch(el, exclusive),
34966
+ ...chunkCWWL7MCL_cjs.paragraphOverridePatch(el, exclusive),
34965
34967
  textStyle: {
34966
34968
  ...base2,
34967
34969
  ...exclusive
@@ -36199,7 +36201,7 @@ function getShapeAdjustmentHandleDescriptors(element) {
36199
36201
  if (!pptx.hasShapeProperties(element) || element.type === "connector") {
36200
36202
  return [];
36201
36203
  }
36202
- if (!elementLocks.canInteractWithElement(element, "adjustHandle")) {
36204
+ if (!chunkCWWL7MCL_cjs.canInteractWithElement(element, "adjustHandle")) {
36203
36205
  return [];
36204
36206
  }
36205
36207
  const shape = element;
@@ -37434,7 +37436,7 @@ function elementRef(element) {
37434
37436
  ...text4.length > 0 && { text: text4.length > 30 ? `${text4.slice(0, 30)}...` : text4 }
37435
37437
  };
37436
37438
  }
37437
- function getElementLabel2(element) {
37439
+ function getElementLabel(element) {
37438
37440
  const typeLabel = element.type.charAt(0).toUpperCase() + element.type.slice(1);
37439
37441
  const text4 = getElementText(element);
37440
37442
  if (text4.length > 0) {
@@ -37468,9 +37470,9 @@ function diffSlideElements(baseElements, compareElements) {
37468
37470
  if (!compareById.has(id)) {
37469
37471
  changes.push({
37470
37472
  elementId: id,
37471
- label: getElementLabel2(el),
37473
+ label: getElementLabel(el),
37472
37474
  kind: "removed",
37473
- description: `Element removed: ${getElementLabel2(el)}`,
37475
+ description: `Element removed: ${getElementLabel(el)}`,
37474
37476
  descriptionKey: "pptx.compare.change.removed",
37475
37477
  descriptionElement: elementRef(el)
37476
37478
  });
@@ -37480,9 +37482,9 @@ function diffSlideElements(baseElements, compareElements) {
37480
37482
  if (!baseById.has(id)) {
37481
37483
  changes.push({
37482
37484
  elementId: id,
37483
- label: getElementLabel2(el),
37485
+ label: getElementLabel(el),
37484
37486
  kind: "added",
37485
- description: `Element added: ${getElementLabel2(el)}`,
37487
+ description: `Element added: ${getElementLabel(el)}`,
37486
37488
  descriptionKey: "pptx.compare.change.added",
37487
37489
  descriptionElement: elementRef(el)
37488
37490
  });
@@ -37496,7 +37498,7 @@ function diffSlideElements(baseElements, compareElements) {
37496
37498
  if (Math.abs(baseEl.x - compareEl.x) > POSITION_THRESHOLD || Math.abs(baseEl.y - compareEl.y) > POSITION_THRESHOLD) {
37497
37499
  changes.push({
37498
37500
  elementId: id,
37499
- label: getElementLabel2(baseEl),
37501
+ label: getElementLabel(baseEl),
37500
37502
  kind: "moved",
37501
37503
  description: `Moved from (${Math.round(baseEl.x)}, ${Math.round(baseEl.y)}) to (${Math.round(compareEl.x)}, ${Math.round(compareEl.y)})`,
37502
37504
  descriptionKey: "pptx.compare.change.moved",
@@ -37511,7 +37513,7 @@ function diffSlideElements(baseElements, compareElements) {
37511
37513
  if (Math.abs(baseEl.width - compareEl.width) > SIZE_THRESHOLD || Math.abs(baseEl.height - compareEl.height) > SIZE_THRESHOLD) {
37512
37514
  changes.push({
37513
37515
  elementId: id,
37514
- label: getElementLabel2(baseEl),
37516
+ label: getElementLabel(baseEl),
37515
37517
  kind: "resized",
37516
37518
  description: `Resized from ${Math.round(baseEl.width)}x${Math.round(baseEl.height)} to ${Math.round(compareEl.width)}x${Math.round(compareEl.height)}`,
37517
37519
  descriptionKey: "pptx.compare.change.resized",
@@ -37528,7 +37530,7 @@ function diffSlideElements(baseElements, compareElements) {
37528
37530
  if (baseText !== compareText) {
37529
37531
  changes.push({
37530
37532
  elementId: id,
37531
- label: getElementLabel2(baseEl),
37533
+ label: getElementLabel(baseEl),
37532
37534
  kind: "textChanged",
37533
37535
  description: "Text content changed",
37534
37536
  descriptionKey: "pptx.compare.change.textChanged"
@@ -40454,54 +40456,6 @@ function buildReviewRibbon(t2, state) {
40454
40456
  ])
40455
40457
  ];
40456
40458
  }
40457
- var DEFAULT_STROKE_WIDTH = 1;
40458
- function canGroupSelection(canEdit, selectedCount, selectionGroupable = true) {
40459
- return canEdit && selectedCount >= 2 && selectionGroupable;
40460
- }
40461
- function canUngroupSelection(canEdit, element) {
40462
- return canEdit && element?.type === "group" && elementLocks.canInteractWithElement(element, "group");
40463
- }
40464
- function canSetStrokeWidth(canEdit, element) {
40465
- return canEdit && element !== null && pptx.hasShapeProperties(element);
40466
- }
40467
- function strokeWidthOf(element) {
40468
- if (element === null || !pptx.hasShapeProperties(element)) {
40469
- return DEFAULT_STROKE_WIDTH;
40470
- }
40471
- return element.shapeStyle?.strokeWidth ?? DEFAULT_STROKE_WIDTH;
40472
- }
40473
-
40474
- // src/pptx/render/ribbon-home-commands.ts
40475
- function resetSlideLayoutPath(slide) {
40476
- const path = slide?.layoutPath;
40477
- return typeof path === "string" && path !== "" ? path : void 0;
40478
- }
40479
- function shapeFillChange(hex2, ref) {
40480
- return { fillColor: hex2, fillColorRef: ref, fillMode: "solid" };
40481
- }
40482
- function shapeOutlineChange(hex2, ref, current) {
40483
- const change = { strokeColor: hex2, strokeColorRef: ref };
40484
- const lineShows = (current?.strokeWidth ?? 0) > 0;
40485
- if (current && !lineShows) {
40486
- change.strokeWidth = DEFAULT_STROKE_WIDTH;
40487
- change.strokeFillMode = "solid";
40488
- }
40489
- return change;
40490
- }
40491
- var RIBBON_SHAPE_SWATCHES = [
40492
- "#ffffff",
40493
- "#000000",
40494
- "#c00000",
40495
- "#ff0000",
40496
- "#ffc000",
40497
- "#ffff00",
40498
- "#92d050",
40499
- "#00b050",
40500
- "#00b0f0",
40501
- "#0070c0",
40502
- "#002060",
40503
- "#7030a0"
40504
- ];
40505
40459
 
40506
40460
  // src/pptx/render/transition-preview.ts
40507
40461
  var TRANSITION_PREVIEW_ATTR = "data-pptx-transition-preview";
@@ -41574,7 +41528,7 @@ function parsePathPoints(d) {
41574
41528
  let i = 0;
41575
41529
  let cmd = "";
41576
41530
  let cur = { x: 0, y: 0 };
41577
- const num14 = () => Number(tokens[i++]);
41531
+ const num15 = () => Number(tokens[i++]);
41578
41532
  while (i < tokens.length) {
41579
41533
  const t2 = tokens[i];
41580
41534
  if (/[a-zA-Z]/u.test(t2)) {
@@ -41585,40 +41539,40 @@ function parsePathPoints(d) {
41585
41539
  switch (cmd.toUpperCase()) {
41586
41540
  case "M":
41587
41541
  case "L": {
41588
- const x = num14();
41589
- const y = num14();
41542
+ const x = num15();
41543
+ const y = num15();
41590
41544
  cur = rel ? { x: cur.x + x, y: cur.y + y } : { x, y };
41591
41545
  out.push(cur);
41592
41546
  break;
41593
41547
  }
41594
41548
  case "H": {
41595
- const x = num14();
41549
+ const x = num15();
41596
41550
  cur = { x: rel ? cur.x + x : x, y: cur.y };
41597
41551
  out.push(cur);
41598
41552
  break;
41599
41553
  }
41600
41554
  case "V": {
41601
- const y = num14();
41555
+ const y = num15();
41602
41556
  cur = { x: cur.x, y: rel ? cur.y + y : y };
41603
41557
  out.push(cur);
41604
41558
  break;
41605
41559
  }
41606
41560
  case "C": {
41607
- num14();
41608
- num14();
41609
- num14();
41610
- num14();
41611
- const x = num14();
41612
- const y = num14();
41561
+ num15();
41562
+ num15();
41563
+ num15();
41564
+ num15();
41565
+ const x = num15();
41566
+ const y = num15();
41613
41567
  cur = rel ? { x: cur.x + x, y: cur.y + y } : { x, y };
41614
41568
  out.push(cur);
41615
41569
  break;
41616
41570
  }
41617
41571
  case "Q": {
41618
- num14();
41619
- num14();
41620
- const x = num14();
41621
- const y = num14();
41572
+ num15();
41573
+ num15();
41574
+ const x = num15();
41575
+ const y = num15();
41622
41576
  cur = rel ? { x: cur.x + x, y: cur.y + y } : { x, y };
41623
41577
  out.push(cur);
41624
41578
  break;
@@ -44076,6 +44030,246 @@ function inspectorTogglePatch(sections2, sectionId, target, on) {
44076
44030
  }
44077
44031
  return on ? toggle2.enable(target) : toggle2.disable(target);
44078
44032
  }
44033
+
44034
+ // src/pptx/render/live-color-leaves.ts
44035
+ function isContainer(value) {
44036
+ if (Array.isArray(value)) {
44037
+ return true;
44038
+ }
44039
+ if (typeof value !== "object" || value === null) {
44040
+ return false;
44041
+ }
44042
+ const proto = Object.getPrototypeOf(value);
44043
+ return proto === Object.prototype || proto === null;
44044
+ }
44045
+ function childOf(value, key) {
44046
+ return isContainer(value) ? value[key] : void 0;
44047
+ }
44048
+ function hasChild(value, key) {
44049
+ return isContainer(value) && Object.hasOwn(value, key);
44050
+ }
44051
+ function diffLeaves(before, beforeHas, after, afterHas, path, out) {
44052
+ if (beforeHas === afterHas && Object.is(before, after)) {
44053
+ return;
44054
+ }
44055
+ if (before === void 0 && isContainer(after)) {
44056
+ out.created.push(path);
44057
+ for (const key of Object.keys(after)) {
44058
+ diffLeaves(void 0, false, childOf(after, key), true, [...path, key], out);
44059
+ }
44060
+ return;
44061
+ }
44062
+ if (isContainer(before) && isContainer(after) && Array.isArray(before) === Array.isArray(after)) {
44063
+ const keys = /* @__PURE__ */ new Set([...Object.keys(before), ...Object.keys(after)]);
44064
+ for (const key of keys) {
44065
+ diffLeaves(
44066
+ childOf(before, key),
44067
+ hasChild(before, key),
44068
+ childOf(after, key),
44069
+ hasChild(after, key),
44070
+ [...path, key],
44071
+ out
44072
+ );
44073
+ }
44074
+ return;
44075
+ }
44076
+ out.changed.push(path);
44077
+ }
44078
+ var isAncestor = (ancestor, path) => ancestor.every((segment, index) => path[index] === segment);
44079
+ function recordLiveColorLeaves(leaves, value, patch) {
44080
+ const diff = { changed: [], created: [] };
44081
+ for (const [key, next] of Object.entries(patch)) {
44082
+ diffLeaves(childOf(value, key), hasChild(value, key), next, true, [key], diff);
44083
+ }
44084
+ for (const path of diff.created) {
44085
+ const id = `created:${JSON.stringify(path)}`;
44086
+ if (!leaves.has(id)) {
44087
+ leaves.set(id, { path, present: false, value: void 0, created: true });
44088
+ }
44089
+ }
44090
+ for (const path of diff.changed) {
44091
+ const covered = [...leaves.values()].some(
44092
+ (leaf) => !leaf.created && isAncestor(leaf.path, path)
44093
+ );
44094
+ if (covered) {
44095
+ continue;
44096
+ }
44097
+ let holder = value;
44098
+ for (const segment of path.slice(0, -1)) {
44099
+ holder = childOf(holder, segment);
44100
+ }
44101
+ const last = path[path.length - 1];
44102
+ leaves.set(JSON.stringify(path), {
44103
+ path,
44104
+ present: hasChild(holder, last),
44105
+ value: childOf(holder, last)
44106
+ });
44107
+ }
44108
+ }
44109
+ function writeLeaf(container, path, leaf) {
44110
+ const [head, ...rest] = path;
44111
+ const copy = Array.isArray(container) ? [...container] : { ...isContainer(container) ? container : {} };
44112
+ const record = copy;
44113
+ if (rest.length > 0) {
44114
+ record[head] = writeLeaf(record[head], rest, leaf);
44115
+ } else if (leaf.present) {
44116
+ record[head] = leaf.value;
44117
+ } else if (Array.isArray(copy)) {
44118
+ record[head] = void 0;
44119
+ } else {
44120
+ delete record[head];
44121
+ }
44122
+ return copy;
44123
+ }
44124
+ function isEmptyContainer(value) {
44125
+ return isContainer(value) && Object.keys(value).length === 0;
44126
+ }
44127
+ function liveColorRevertPatch(value, leaves) {
44128
+ const patch = {};
44129
+ const entry6 = (head) => Object.hasOwn(patch, head) ? patch[head] : childOf(value, head);
44130
+ const all = [...leaves];
44131
+ for (const leaf of all.filter((candidate) => !candidate.created)) {
44132
+ const [head, ...rest] = leaf.path;
44133
+ if (head === void 0) {
44134
+ continue;
44135
+ }
44136
+ patch[head] = rest.length === 0 ? leaf.present ? leaf.value : void 0 : writeLeaf(entry6(head), rest, leaf);
44137
+ }
44138
+ const created = all.filter((candidate) => candidate.created).sort((left, right) => right.path.length - left.path.length);
44139
+ for (const leaf of created) {
44140
+ const [head, ...rest] = leaf.path;
44141
+ if (head === void 0) {
44142
+ continue;
44143
+ }
44144
+ let held = entry6(head);
44145
+ for (const segment of rest) {
44146
+ held = childOf(held, segment);
44147
+ }
44148
+ if (isEmptyContainer(held)) {
44149
+ patch[head] = rest.length === 0 ? void 0 : writeLeaf(entry6(head), rest, leaf);
44150
+ }
44151
+ }
44152
+ return patch;
44153
+ }
44154
+
44155
+ // src/pptx/render/live-color-input.ts
44156
+ function normalizeColor(color) {
44157
+ return color.trim().toLowerCase();
44158
+ }
44159
+ function createLiveColorInput(options) {
44160
+ let drag;
44161
+ const carriedOn = (source) => drag && drag.key === source.key && (source.value === drag.last || drag.colors.has(normalizeColor(source.color))) ? drag : void 0;
44162
+ const leave = (source) => {
44163
+ const stale = drag;
44164
+ drag = void 0;
44165
+ if (!stale || source && stale.key === source.key) {
44166
+ return false;
44167
+ }
44168
+ const now = stale.leaves.size > 0 ? options.lookup(stale.key) : void 0;
44169
+ if (now !== void 0) {
44170
+ options.preview(liveColorRevertPatch(now, stale.leaves.values()), stale.key);
44171
+ }
44172
+ return true;
44173
+ };
44174
+ const settle = (hex2, picked) => {
44175
+ const source = options.read();
44176
+ const current = source ? carriedOn(source) : void 0;
44177
+ if (!current && (leave(source) || !picked)) {
44178
+ return;
44179
+ }
44180
+ if (!source) {
44181
+ return;
44182
+ }
44183
+ drag = void 0;
44184
+ let base2 = source.value;
44185
+ if (current && current.leaves.size > 0) {
44186
+ const revert = liveColorRevertPatch(source.value, current.leaves.values());
44187
+ options.preview(revert, current.key);
44188
+ base2 = { ...source.value, ...revert };
44189
+ }
44190
+ const start = current ? current.start : source.color;
44191
+ const moved = normalizeColor(hex2) !== normalizeColor(start);
44192
+ if (moved || picked) {
44193
+ options.remember(hex2);
44194
+ }
44195
+ const patch = moved ? options.patch(base2, hex2) : void 0;
44196
+ if (patch) {
44197
+ options.commit(patch, source.key, hex2);
44198
+ }
44199
+ };
44200
+ return {
44201
+ input(hex2) {
44202
+ const source = options.read();
44203
+ let current = source ? carriedOn(source) : void 0;
44204
+ if (!current) {
44205
+ leave(source);
44206
+ }
44207
+ if (!source) {
44208
+ return;
44209
+ }
44210
+ current ??= {
44211
+ key: source.key,
44212
+ start: source.color,
44213
+ colors: /* @__PURE__ */ new Set([normalizeColor(source.color)]),
44214
+ leaves: /* @__PURE__ */ new Map(),
44215
+ last: source.value
44216
+ };
44217
+ drag = current;
44218
+ current.last = source.value;
44219
+ current.colors.add(normalizeColor(hex2));
44220
+ const patch = options.patch(source.value, hex2);
44221
+ if (patch) {
44222
+ recordLiveColorLeaves(current.leaves, source.value, patch);
44223
+ options.preview(patch, current.key);
44224
+ }
44225
+ },
44226
+ change: (hex2) => settle(hex2, true),
44227
+ blur(hex2) {
44228
+ if (drag) {
44229
+ settle(hex2, false);
44230
+ }
44231
+ }
44232
+ };
44233
+ }
44234
+ function handleLiveColorEvent(control4, event) {
44235
+ const target = event.target;
44236
+ const hex2 = typeof target?.value === "string" ? target.value.trim() : "";
44237
+ if (!hex2) {
44238
+ return;
44239
+ }
44240
+ if (event.type === "input") {
44241
+ control4.input(hex2);
44242
+ } else if (event.type === "change") {
44243
+ control4.change(hex2);
44244
+ } else if (event.type === "blur") {
44245
+ control4.blur(hex2);
44246
+ }
44247
+ }
44248
+
44249
+ // src/pptx/render/inspector/inspector-color-fields.ts
44250
+ function createInspectorColorFields(options) {
44251
+ const controls2 = /* @__PURE__ */ new Map();
44252
+ return (sectionId, fieldId) => {
44253
+ const id = `${sectionId}.${fieldId}`;
44254
+ let control4 = controls2.get(id);
44255
+ if (!control4) {
44256
+ control4 = createLiveColorInput({
44257
+ read: () => {
44258
+ const target = options.target();
44259
+ const field = resolveInspectorSections(options.sections(), target).find((section2) => section2.id === sectionId)?.fields.find((candidate) => candidate.id === fieldId);
44260
+ return field && { key: options.targetKey(), color: String(field.value), value: target };
44261
+ },
44262
+ patch: (target, hex2) => inspectorFieldPatch(options.sections(), sectionId, fieldId, target, hex2),
44263
+ lookup: (key) => options.lookup(key),
44264
+ preview: (patch, target) => options.preview(patch, target),
44265
+ commit: (patch) => options.commit(patch),
44266
+ remember: (hex2) => options.remember(hex2)
44267
+ });
44268
+ controls2.set(id, control4);
44269
+ }
44270
+ return control4;
44271
+ };
44272
+ }
44079
44273
  var TEXT_3D_EMU_PER_PT = 12700;
44080
44274
  var TEXT_3D_MAX_EXTRUSION_PT = 100;
44081
44275
  var TEXT_3D_MAX_BEVEL_PT = 50;
@@ -44740,6 +44934,144 @@ var TEXT_BOX_SECTION = {
44740
44934
  ]
44741
44935
  };
44742
44936
  var TEXT_BOX_SECTIONS = [TEXT_BOX_SECTION];
44937
+
44938
+ // src/pptx/render/inspector/text-effect-fields.ts
44939
+ var SHADOW_ON = {
44940
+ textShadowColor: "#000000",
44941
+ textShadowBlur: 4,
44942
+ textShadowOffsetX: 2,
44943
+ textShadowOffsetY: 2,
44944
+ textShadowOpacity: 0.5
44945
+ };
44946
+ var GLOW_ON = {
44947
+ textGlowColor: "#ffff00",
44948
+ textGlowRadius: 6,
44949
+ textGlowOpacity: 0.6
44950
+ };
44951
+ var REFLECTION_ON = {
44952
+ textReflection: true,
44953
+ textReflectionBlur: 1,
44954
+ textReflectionStartOpacity: 0.5,
44955
+ textReflectionEndOpacity: 0,
44956
+ textReflectionOffset: 3
44957
+ };
44958
+ var ON_DEFAULTS = { ...SHADOW_ON, ...GLOW_ON, ...REFLECTION_ON };
44959
+ function cleared(on) {
44960
+ return Object.fromEntries(Object.keys(on).map((key) => [key, void 0]));
44961
+ }
44962
+ var num4 = (v) => Number(v);
44963
+ var fxId = (section2, field) => `text-fx-${section2}-${field}`;
44964
+ function colorField2(section2, key) {
44965
+ return {
44966
+ id: "color",
44967
+ kind: "color",
44968
+ labelKey: "pptx.textEffects.color",
44969
+ testId: fxId(section2, "color"),
44970
+ read: (ts) => chunk6KLPQQYP_cjs.normalizeHexColor(ts?.[key], ON_DEFAULTS[key]),
44971
+ write: (_ts, v) => ({ [key]: String(v) })
44972
+ };
44973
+ }
44974
+ function opacityField2(section2, id, labelKey, key) {
44975
+ return {
44976
+ id,
44977
+ kind: "number",
44978
+ labelKey,
44979
+ min: 0,
44980
+ max: 1,
44981
+ step: 0.05,
44982
+ testId: fxId(section2, id),
44983
+ read: (ts) => ts?.[key] ?? ON_DEFAULTS[key],
44984
+ write: (_ts, v) => ({ [key]: num4(v) })
44985
+ };
44986
+ }
44987
+ function pxField(section2, id, labelKey, key, [min, max]) {
44988
+ return {
44989
+ id,
44990
+ kind: "length",
44991
+ labelKey,
44992
+ min,
44993
+ max,
44994
+ step: 1,
44995
+ decimals: 0,
44996
+ testId: fxId(section2, id),
44997
+ read: (ts) => ts?.[key] ?? ON_DEFAULTS[key],
44998
+ write: (_ts, v) => ({ [key]: num4(v) })
44999
+ };
45000
+ }
45001
+ var TEXT_SHADOW_SECTION = {
45002
+ id: "shadow",
45003
+ labelKey: "pptx.textEffects.shadow",
45004
+ toggle: {
45005
+ testId: "text-fx-shadow-toggle",
45006
+ isOn: (ts) => Boolean(ts?.textShadowColor) || typeof ts?.textShadowBlur === "number" && ts.textShadowBlur > 0,
45007
+ enable: () => ({ ...SHADOW_ON }),
45008
+ disable: () => cleared(SHADOW_ON)
45009
+ },
45010
+ fields: [
45011
+ colorField2("shadow", "textShadowColor"),
45012
+ opacityField2("shadow", "opacity", "pptx.textEffects.opacity", "textShadowOpacity"),
45013
+ pxField("shadow", "blur", "pptx.textEffects.blur", "textShadowBlur", [0, 50]),
45014
+ pxField("shadow", "offsetX", "pptx.textEffects.offsetX", "textShadowOffsetX", [-50, 50]),
45015
+ pxField("shadow", "offsetY", "pptx.textEffects.offsetY", "textShadowOffsetY", [-50, 50])
45016
+ ]
45017
+ };
45018
+ var TEXT_GLOW_SECTION = {
45019
+ id: "glow",
45020
+ labelKey: "pptx.textEffects.glow",
45021
+ toggle: {
45022
+ testId: "text-fx-glow-toggle",
45023
+ isOn: (ts) => Boolean(ts?.textGlowColor) || typeof ts?.textGlowRadius === "number" && ts.textGlowRadius > 0,
45024
+ enable: () => ({ ...GLOW_ON }),
45025
+ disable: () => cleared(GLOW_ON)
45026
+ },
45027
+ fields: [
45028
+ colorField2("glow", "textGlowColor"),
45029
+ opacityField2("glow", "opacity", "pptx.textEffects.opacity", "textGlowOpacity"),
45030
+ pxField("glow", "size", "pptx.textEffects.size", "textGlowRadius", [1, 50])
45031
+ ]
45032
+ };
45033
+ var TEXT_REFLECTION_SECTION = {
45034
+ id: "reflection",
45035
+ labelKey: "pptx.textEffects.reflection",
45036
+ toggle: {
45037
+ testId: "text-fx-reflection-toggle",
45038
+ isOn: (ts) => Boolean(ts?.textReflection),
45039
+ enable: () => ({ ...REFLECTION_ON }),
45040
+ disable: () => cleared(REFLECTION_ON)
45041
+ },
45042
+ fields: [
45043
+ {
45044
+ id: "blur",
45045
+ kind: "length",
45046
+ labelKey: "pptx.textEffects.blur",
45047
+ min: 0,
45048
+ max: 20,
45049
+ step: 0.5,
45050
+ decimals: 1,
45051
+ testId: fxId("reflection", "blur"),
45052
+ read: (ts) => ts?.textReflectionBlur ?? ON_DEFAULTS.textReflectionBlur,
45053
+ write: (_ts, v) => ({ textReflectionBlur: num4(v) })
45054
+ },
45055
+ pxField("reflection", "offset", "pptx.textEffects.offset", "textReflectionOffset", [0, 20]),
45056
+ opacityField2(
45057
+ "reflection",
45058
+ "startOpacity",
45059
+ "pptx.textEffects.startOpacity",
45060
+ "textReflectionStartOpacity"
45061
+ ),
45062
+ opacityField2(
45063
+ "reflection",
45064
+ "endOpacity",
45065
+ "pptx.textEffects.endOpacity",
45066
+ "textReflectionEndOpacity"
45067
+ )
45068
+ ]
45069
+ };
45070
+ var TEXT_EFFECT_SECTIONS = [
45071
+ TEXT_SHADOW_SECTION,
45072
+ TEXT_GLOW_SECTION,
45073
+ TEXT_REFLECTION_SECTION
45074
+ ];
44743
45075
  var FONT_NAME_UNSAFE_CHARS = /["\\\n\r;}<>]/u;
44744
45076
  var FONT_FORMAT_ALLOWED = /* @__PURE__ */ new Set(["truetype", "opentype", "woff", "woff2"]);
44745
45077
  var FONT_MIME_BY_FORMAT = {
@@ -44881,6 +45213,44 @@ function collectUsedFonts(slides) {
44881
45213
 
44882
45214
  // src/pptx/render/google-webfonts.ts
44883
45215
  var GOOGLE_FONTS_CSS2_BASE = "https://fonts.googleapis.com/css2";
45216
+ function normalizeGoogleFontsBaseUrl(baseUrl) {
45217
+ if (typeof baseUrl !== "string" || baseUrl.trim() === "") {
45218
+ return null;
45219
+ }
45220
+ let url;
45221
+ try {
45222
+ url = new URL(baseUrl.trim());
45223
+ } catch {
45224
+ return null;
45225
+ }
45226
+ if (url.protocol !== "http:" && url.protocol !== "https:") {
45227
+ return null;
45228
+ }
45229
+ if (url.username !== "" || url.password !== "" || url.search !== "" || url.hash !== "") {
45230
+ return null;
45231
+ }
45232
+ return url.href;
45233
+ }
45234
+ var warnedInvalidBaseUrls = /* @__PURE__ */ new Set();
45235
+ function resolveGoogleFontsCss2Base(option) {
45236
+ if (option === void 0) {
45237
+ return GOOGLE_FONTS_CSS2_BASE;
45238
+ }
45239
+ if (option === false) {
45240
+ return null;
45241
+ }
45242
+ const normalized = normalizeGoogleFontsBaseUrl(
45243
+ typeof option === "object" && option !== null ? option.baseUrl : void 0
45244
+ );
45245
+ const raw = typeof option === "object" && option !== null ? String(option.baseUrl) : "";
45246
+ if (normalized === null && !warnedInvalidBaseUrls.has(raw)) {
45247
+ warnedInvalidBaseUrls.add(raw);
45248
+ console.warn(
45249
+ "[pptx-viewer] googleFonts.baseUrl must be an absolute http(s) URL without credentials, query or fragment; the Google Fonts fallback is disabled."
45250
+ );
45251
+ }
45252
+ return normalized;
45253
+ }
44884
45254
  var GOOGLE_WEBFONT_AXIS = "ital,wght@0,400;0,700;1,400;1,700";
44885
45255
  var DISPLAY_PARAM = "display=swap";
44886
45256
  function collectReferencedFontFamilies(slides) {
@@ -44971,6 +45341,9 @@ function matchGoogleWebfontFragments(families) {
44971
45341
  return [...weightsByFamily].map(([family2, weights]) => buildGoogleFontsFragment(family2, weights));
44972
45342
  }
44973
45343
  async function resolveGoogleWebfontHref(slides, embeddedFonts, isLocallyInstalled = isFontFamilyInstalledLocally, googleFontsBaseUrl) {
45344
+ if (googleFontsBaseUrl === null) {
45345
+ return null;
45346
+ }
44974
45347
  const referenced = collectReferencedFontFamilies(slides);
44975
45348
  const candidates = selectGoogleWebfontFamilies(
44976
45349
  referenced,
@@ -49641,14 +50014,14 @@ function parseHexToRgb(hex2) {
49641
50014
  if (cleaned.length !== 6) {
49642
50015
  return null;
49643
50016
  }
49644
- const num14 = parseInt(cleaned, 16);
49645
- if (!Number.isFinite(num14)) {
50017
+ const num15 = parseInt(cleaned, 16);
50018
+ if (!Number.isFinite(num15)) {
49646
50019
  return null;
49647
50020
  }
49648
50021
  return {
49649
- r: num14 >> 16 & 255,
49650
- g: num14 >> 8 & 255,
49651
- b: num14 & 255
50022
+ r: num15 >> 16 & 255,
50023
+ g: num15 >> 8 & 255,
50024
+ b: num15 & 255
49652
50025
  };
49653
50026
  }
49654
50027
  function colorDistance(a, b) {
@@ -51140,7 +51513,7 @@ function cropResetState(element, canEdit, isPicture2) {
51140
51513
  if (!element || !isPicture2) {
51141
51514
  return HIDDEN;
51142
51515
  }
51143
- return { visible: true, enabled: canEdit && elementLocks.canInteractWithElement(element, "crop") };
51516
+ return { visible: true, enabled: canEdit && chunkCWWL7MCL_cjs.canInteractWithElement(element, "crop") };
51144
51517
  }
51145
51518
  function cropResetPatch() {
51146
51519
  return { cropLeft: 0, cropTop: 0, cropRight: 0, cropBottom: 0 };
@@ -51653,7 +52026,7 @@ function commentMarkerTitle(comment, fallbackAuthor) {
51653
52026
  }
51654
52027
  function buildCommentMarkers(comments, canvasWidth, canvasHeight, fallbackAuthor) {
51655
52028
  return comments.map((comment, index) => {
51656
- const pos = element.getCommentMarkerPosition(comment, index, canvasWidth, canvasHeight);
52029
+ const pos = chunkYMITEJST_cjs.getCommentMarkerPosition(comment, index, canvasWidth, canvasHeight);
51657
52030
  return {
51658
52031
  commentId: comment.id,
51659
52032
  label: String(index + 1),
@@ -53418,9 +53791,9 @@ function svgArcToCubics(from, rxIn, ryIn, xAxisRotationDeg, largeArc, sweep, to)
53418
53791
  rx *= s;
53419
53792
  ry *= s;
53420
53793
  }
53421
- const num14 = rx * rx * ry * ry - rx * rx * y1p * y1p - ry * ry * x1p * x1p;
53794
+ const num15 = rx * rx * ry * ry - rx * rx * y1p * y1p - ry * ry * x1p * x1p;
53422
53795
  const den = rx * rx * y1p * y1p + ry * ry * x1p * x1p;
53423
- let coef = den === 0 ? 0 : Math.sqrt(Math.max(0, num14 / den));
53796
+ let coef = den === 0 ? 0 : Math.sqrt(Math.max(0, num15 / den));
53424
53797
  if (largeArc === sweep) {
53425
53798
  coef = -coef;
53426
53799
  }
@@ -55413,6 +55786,27 @@ async function applyMasterViewCrudAction(handler, data, action, target, options)
55413
55786
  }
55414
55787
  }
55415
55788
 
55789
+ // src/pptx/render/master-view-crud-history.ts
55790
+ function partPaths(masters) {
55791
+ return (masters ?? []).flatMap((master) => [
55792
+ master.path,
55793
+ ...(master.layouts ?? []).map((layout) => layout.path)
55794
+ ]);
55795
+ }
55796
+ function removedSlideMasterParts(before, after) {
55797
+ const kept = new Set(partPaths(after.slideMasters));
55798
+ return partPaths(before.slideMasters).filter((path) => !kept.has(path));
55799
+ }
55800
+ function historyStepUsesParts(step2, removed) {
55801
+ return step2.slides.some((slide) => slide.layoutPath !== void 0 && removed.has(slide.layoutPath)) || partPaths(step2.slideMasters).some((path) => removed.has(path));
55802
+ }
55803
+ function forgetStepsUsingRemovedParts(forget, before, after) {
55804
+ const removed = new Set(removedSlideMasterParts(before, after));
55805
+ if (removed.size > 0) {
55806
+ forget((step2) => historyStepUsesParts(step2, removed));
55807
+ }
55808
+ }
55809
+
55416
55810
  // src/pptx/render/virtualized-list.ts
55417
55811
  var DEFAULT_VIRTUAL_OVERSCAN = 5;
55418
55812
  var SLIDE_VIRTUALIZATION_THRESHOLD = 50;
@@ -55570,6 +55964,192 @@ function validatePasswordPair(password, confirmation) {
55570
55964
  return null;
55571
55965
  }
55572
55966
 
55967
+ // src/pptx/render/theme-write-queue.ts
55968
+ var pendingWrites = /* @__PURE__ */ new WeakMap();
55969
+ function startWrite(write) {
55970
+ try {
55971
+ return write();
55972
+ } catch (error) {
55973
+ return Promise.reject(error);
55974
+ }
55975
+ }
55976
+ function queueThemeWrite(handler, write) {
55977
+ const previous = pendingWrites.get(handler);
55978
+ const run = previous ? previous.then(write) : startWrite(write);
55979
+ const settled = run.then(
55980
+ () => void 0,
55981
+ () => void 0
55982
+ );
55983
+ const end = settled.then(() => {
55984
+ if (pendingWrites.get(handler) === end) {
55985
+ pendingWrites.delete(handler);
55986
+ }
55987
+ });
55988
+ pendingWrites.set(handler, end);
55989
+ return run;
55990
+ }
55991
+ function settleThemeWrites(handler) {
55992
+ return handler && pendingWrites.get(handler) || Promise.resolve();
55993
+ }
55994
+
55995
+ // src/pptx/render/theme-history.ts
55996
+ var RECORDED_KEYS = ["colorScheme", "fontScheme", "name"];
55997
+ function plain(value) {
55998
+ return JSON.parse(JSON.stringify(value));
55999
+ }
56000
+ function sameJson(a, b) {
56001
+ return JSON.stringify(a) === JSON.stringify(b);
56002
+ }
56003
+ function masterThemePathsOf(slideMasters) {
56004
+ const entries2 = (slideMasters ?? []).flatMap(
56005
+ (master) => master.themePath ? [[master.path, master.themePath]] : []
56006
+ );
56007
+ return entries2.length > 0 ? Object.fromEntries(entries2) : void 0;
56008
+ }
56009
+ function historyTheme(theme, slideMasters) {
56010
+ const masterThemePaths = masterThemePathsOf(slideMasters);
56011
+ if (!theme && !masterThemePaths) {
56012
+ return void 0;
56013
+ }
56014
+ const { colorScheme, fontScheme, formatScheme, name } = theme ?? {};
56015
+ return {
56016
+ ...colorScheme ? { colorScheme: plain(colorScheme) } : {},
56017
+ ...fontScheme ? { fontScheme: plain(fontScheme) } : {},
56018
+ ...formatScheme ? { formatScheme: plain(formatScheme) } : {},
56019
+ ...name ? { name } : {},
56020
+ ...masterThemePaths ? { masterThemePaths } : {}
56021
+ };
56022
+ }
56023
+ function sameFormatScheme(a, b) {
56024
+ const key = (theme) => theme?.formatScheme ? pptx.formatSchemeKey(theme.formatScheme) : void 0;
56025
+ return key(a) === key(b);
56026
+ }
56027
+ function withoutFormatScheme(theme) {
56028
+ if (!theme) {
56029
+ return null;
56030
+ }
56031
+ const { formatScheme: _format, ...rest } = theme;
56032
+ return rest;
56033
+ }
56034
+ function crossedHistoryTheme(current, target) {
56035
+ if (!target) {
56036
+ return void 0;
56037
+ }
56038
+ const same2 = sameJson(withoutFormatScheme(current), withoutFormatScheme(target)) && sameFormatScheme(current, target);
56039
+ return same2 ? void 0 : target;
56040
+ }
56041
+ function withHistoryTheme(theme, target) {
56042
+ const { masterThemePaths: _masters, formatScheme, ...parts } = target;
56043
+ const next = { ...theme, ...plain(parts) };
56044
+ for (const key of RECORDED_KEYS) {
56045
+ if (target[key] === void 0) {
56046
+ delete next[key];
56047
+ }
56048
+ }
56049
+ if (formatScheme && !sameFormatScheme(theme ?? void 0, target)) {
56050
+ next.formatScheme = plain(formatScheme);
56051
+ }
56052
+ return next;
56053
+ }
56054
+ function withHistoryMasterThemes(slideMasters, target) {
56055
+ const recorded = target?.masterThemePaths;
56056
+ if (!recorded || slideMasters.every((master) => !differs(recorded, master))) {
56057
+ return slideMasters;
56058
+ }
56059
+ return slideMasters.map(
56060
+ (master) => differs(recorded, master) ? { ...master, themePath: recorded[master.path] } : master
56061
+ );
56062
+ }
56063
+ function differs(recorded, master) {
56064
+ const path = recorded[master.path];
56065
+ return path !== void 0 && path !== master.themePath;
56066
+ }
56067
+ function themePartWrites(from, to, loadedName) {
56068
+ const writes = [];
56069
+ if (to.colorScheme && !sameJson(to.colorScheme, from?.colorScheme)) {
56070
+ writes.push({ part: "colorScheme", colorScheme: to.colorScheme });
56071
+ }
56072
+ if (to.fontScheme && !sameJson(to.fontScheme, from?.fontScheme)) {
56073
+ writes.push({ part: "fontScheme", fontScheme: to.fontScheme });
56074
+ }
56075
+ if (to.formatScheme && !sameFormatScheme(from, to)) {
56076
+ writes.push({ part: "formatScheme", formatScheme: to.formatScheme });
56077
+ }
56078
+ const name = to.name ?? loadedName;
56079
+ if (name && name !== (from?.name ?? loadedName)) {
56080
+ writes.push({ part: "name", name });
56081
+ }
56082
+ return writes;
56083
+ }
56084
+ function loadedThemeName(themeOptions, slideMasters) {
56085
+ const options = themeOptions ?? [];
56086
+ const primary = slideMasters?.[0]?.themePath;
56087
+ return (options.find((option) => option.path === primary) ?? options[0])?.name;
56088
+ }
56089
+ async function applyWrites(handler, writes, ...scope) {
56090
+ for (const write of writes) {
56091
+ if (write.part === "colorScheme") {
56092
+ await handler.updateThemeColorScheme(write.colorScheme, ...scope);
56093
+ } else if (write.part === "fontScheme") {
56094
+ await handler.updateThemeFontScheme(write.fontScheme, ...scope);
56095
+ } else if (write.part === "formatScheme") {
56096
+ await handler.restoreThemeFormatScheme(write.formatScheme, ...scope);
56097
+ } else {
56098
+ await handler.updateThemeName(write.name, ...scope);
56099
+ }
56100
+ }
56101
+ }
56102
+ function writableFaces(theme) {
56103
+ const { fontScheme } = theme;
56104
+ if (!fontScheme) {
56105
+ return theme;
56106
+ }
56107
+ const latin = (font) => font?.latin ? { latin: font.latin } : {};
56108
+ return {
56109
+ ...theme,
56110
+ fontScheme: { majorFont: latin(fontScheme.majorFont), minorFont: latin(fontScheme.minorFont) }
56111
+ };
56112
+ }
56113
+ function masterThemeMoves(from, to) {
56114
+ return Object.entries(to.masterThemePaths ?? {}).filter(
56115
+ ([master, path]) => from?.masterThemePaths?.[master] !== path
56116
+ );
56117
+ }
56118
+ function writeThemeParts(handler, from, to, loadedName) {
56119
+ const moves = masterThemeMoves(from, to);
56120
+ if (moves.length > 0) {
56121
+ return handler ? queueThemeWrite(handler, () => repointAndWrite(handler, moves, to)) : Promise.resolve();
56122
+ }
56123
+ const writes = themePartWrites(from, to, loadedName);
56124
+ if (!handler || writes.length === 0) {
56125
+ return Promise.resolve();
56126
+ }
56127
+ return queueThemeWrite(handler, () => applyWrites(handler, writes));
56128
+ }
56129
+ async function repointAndWrite(handler, moves, to) {
56130
+ for (const [master, path] of moves) {
56131
+ await handler.setSlideMasterTheme(master, path);
56132
+ }
56133
+ const deckPart = Object.values(to.masterThemePaths ?? {})[0];
56134
+ const now = deckPart ? await handler.getThemePartSchemes(deckPart) : void 0;
56135
+ if (deckPart && now) {
56136
+ const writes = themePartWrites(writableFaces(historyTheme(now)), writableFaces(to), now.name);
56137
+ await applyWrites(handler, writes, [deckPart]);
56138
+ }
56139
+ }
56140
+ function restoreCrossedTheme(theme, current, target, handler, loadedName) {
56141
+ const crossed = crossedHistoryTheme(current, target);
56142
+ if (!crossed) {
56143
+ return void 0;
56144
+ }
56145
+ void writeThemeParts(handler, current, crossed, loadedName);
56146
+ return withHistoryTheme(theme, crossed);
56147
+ }
56148
+ async function saveDeckWithPassword(serializer, slides, options, intent) {
56149
+ await settleThemeWrites(serializer);
56150
+ return deckSaveEncryption.saveDeckWithPassword(serializer, slides, options, intent);
56151
+ }
56152
+
55573
56153
  // src/pptx/render/deck-save-options.ts
55574
56154
  function buildDeckSaveOptions(state) {
55575
56155
  return {
@@ -55608,32 +56188,79 @@ var DEFAULT_VIEWER_PREFERENCES = {
55608
56188
  };
55609
56189
  var DEFAULT_VIEWER_SETTINGS = DEFAULT_VIEWER_PREFERENCES;
55610
56190
  var VIEWER_SHORTCUT_REFERENCE = [
55611
- { actionKey: "pptx.toolbar.undo", shortcut: "Ctrl/Cmd+Z" },
55612
- { actionKey: "pptx.toolbar.redo", shortcut: "Ctrl/Cmd+Shift+Z or Ctrl/Cmd+Y" },
55613
- { actionKey: "pptx.shortcuts.action.copyElement", shortcut: "Ctrl/Cmd+C" },
55614
- { actionKey: "pptx.shortcuts.action.cutElement", shortcut: "Ctrl/Cmd+X" },
55615
- { actionKey: "pptx.shortcuts.action.pasteElement", shortcut: "Ctrl/Cmd+V" },
55616
- { actionKey: "pptx.shortcuts.action.duplicateElement", shortcut: "Ctrl/Cmd+D" },
55617
- { actionKey: "pptx.shortcuts.action.deleteElement", shortcut: "Delete / Backspace" },
55618
- { actionKey: "pptx.shortcuts.action.selectAll", shortcut: "Ctrl/Cmd+A" },
55619
- { actionKey: "pptx.ribbon.group", shortcut: "Ctrl/Cmd+G" },
55620
- { actionKey: "pptx.ribbon.ungroup", shortcut: "Ctrl/Cmd+Shift+G" },
55621
- { actionKey: "pptx.shortcuts.action.nudgeElement", shortcut: "Arrow keys" },
55622
- { actionKey: "pptx.shortcuts.action.nudgeElementLarge", shortcut: "Shift+Arrow keys" },
55623
- { actionKey: "pptx.shortcuts.action.prevSlide", shortcut: "Left or Up arrow, Page Up" },
55624
- { actionKey: "pptx.shortcuts.action.nextSlide", shortcut: "Right or Down arrow, Page Down" },
55625
- { actionKey: "pptx.shortcuts.action.zoomCanvas", shortcut: "Ctrl/Cmd+Mouse wheel" },
55626
- { actionKey: "pptx.shortcuts.action.commitTextEdit", shortcut: "Ctrl/Cmd+Enter" },
55627
- { actionKey: "pptx.shortcuts.action.cancelTextEdit", shortcut: "Escape" },
56191
+ { actionKey: "pptx.toolbar.undo", shortcut: "Ctrl/Cmd+Z", group: "history" },
56192
+ {
56193
+ actionKey: "pptx.toolbar.redo",
56194
+ shortcut: "Ctrl/Cmd+Shift+Z or Ctrl/Cmd+Y",
56195
+ group: "history"
56196
+ },
56197
+ { actionKey: "pptx.shortcuts.action.copyElement", shortcut: "Ctrl/Cmd+C", group: "clipboard" },
56198
+ { actionKey: "pptx.shortcuts.action.cutElement", shortcut: "Ctrl/Cmd+X", group: "clipboard" },
56199
+ { actionKey: "pptx.shortcuts.action.pasteElement", shortcut: "Ctrl/Cmd+V", group: "clipboard" },
56200
+ {
56201
+ actionKey: "pptx.shortcuts.action.duplicateElement",
56202
+ shortcut: "Ctrl/Cmd+D",
56203
+ group: "editing"
56204
+ },
56205
+ {
56206
+ actionKey: "pptx.shortcuts.action.deleteElement",
56207
+ shortcut: "Delete / Backspace",
56208
+ group: "editing"
56209
+ },
56210
+ { actionKey: "pptx.shortcuts.action.selectAll", shortcut: "Ctrl/Cmd+A", group: "editing" },
56211
+ { actionKey: "pptx.ribbon.group", shortcut: "Ctrl/Cmd+G", group: "editing" },
56212
+ { actionKey: "pptx.ribbon.ungroup", shortcut: "Ctrl/Cmd+Shift+G", group: "editing" },
56213
+ { actionKey: "pptx.shortcuts.action.nudgeElement", shortcut: "Arrow keys", group: "editing" },
56214
+ {
56215
+ actionKey: "pptx.shortcuts.action.nudgeElementLarge",
56216
+ shortcut: "Shift+Arrow keys",
56217
+ group: "editing"
56218
+ },
56219
+ {
56220
+ actionKey: "pptx.shortcuts.action.prevSlide",
56221
+ shortcut: "Left or Up arrow, Page Up",
56222
+ group: "navigation"
56223
+ },
56224
+ {
56225
+ actionKey: "pptx.shortcuts.action.nextSlide",
56226
+ shortcut: "Right or Down arrow, Page Down",
56227
+ group: "navigation"
56228
+ },
56229
+ {
56230
+ actionKey: "pptx.shortcuts.action.zoomCanvas",
56231
+ shortcut: "Ctrl/Cmd+Mouse wheel",
56232
+ group: "navigation"
56233
+ },
56234
+ {
56235
+ actionKey: "pptx.shortcuts.action.commitTextEdit",
56236
+ shortcut: "Ctrl/Cmd+Enter",
56237
+ group: "editing"
56238
+ },
56239
+ { actionKey: "pptx.shortcuts.action.cancelTextEdit", shortcut: "Escape", group: "editing" },
55628
56240
  // Both of these reached the shared keymap late (Ctrl+F was hand-wired in two
55629
56241
  // bindings, Ctrl+/ in one), so the panel that is supposed to teach the keymap
55630
56242
  // was advertising neither. The help panel is the keymap's documentation: a
55631
56243
  // chord missing here is a chord nobody discovers.
55632
- { actionKey: "pptx.findReplace.title", shortcut: "Ctrl/Cmd+F" },
55633
- { actionKey: "pptx.slideShow.fromBeginning", shortcut: "F5" },
55634
- { actionKey: "pptx.slideShow.fromCurrent", shortcut: "Shift+F5" },
55635
- { actionKey: "pptx.shortcuts.title", shortcut: "? or Ctrl/Cmd+/" }
56244
+ { actionKey: "pptx.findReplace.title", shortcut: "Ctrl/Cmd+F", group: "general" },
56245
+ { actionKey: "pptx.slideShow.fromBeginning", shortcut: "F5", group: "general" },
56246
+ { actionKey: "pptx.slideShow.fromCurrent", shortcut: "Shift+F5", group: "general" },
56247
+ { actionKey: "pptx.shortcuts.title", shortcut: "? or Ctrl/Cmd+/", group: "general" }
55636
56248
  ];
56249
+ var SHORTCUT_REFERENCE_GROUP_LABEL_KEYS = {
56250
+ history: "pptx.editorToolbar.history",
56251
+ clipboard: "pptx.ribbon.clipboard",
56252
+ editing: "pptx.shortcuts.group.editing",
56253
+ navigation: "pptx.shortcuts.group.navigation",
56254
+ general: "pptx.settings.general"
56255
+ };
56256
+ function groupShortcutReference(items = VIEWER_SHORTCUT_REFERENCE) {
56257
+ const order = Object.keys(SHORTCUT_REFERENCE_GROUP_LABEL_KEYS);
56258
+ return order.map((group) => ({
56259
+ group,
56260
+ labelKey: SHORTCUT_REFERENCE_GROUP_LABEL_KEYS[group],
56261
+ shortcuts: items.filter((item4) => item4.group === group)
56262
+ })).filter((bucket) => bucket.shortcuts.length > 0);
56263
+ }
55637
56264
  var SHORTCUT_REFERENCE_ITEMS = VIEWER_SHORTCUT_REFERENCE;
55638
56265
  var VIEWER_PREFERENCE_TOGGLES = [
55639
56266
  { key: "autoSave", labelKey: "pptx.settings.autoSave" },
@@ -56072,8 +56699,8 @@ function capitalizeDayName(word) {
56072
56699
  return word;
56073
56700
  }
56074
56701
  function replaceFractions(word) {
56075
- for (const [plain, glyph3] of FRACTIONS) {
56076
- if (word === plain) {
56702
+ for (const [plain2, glyph3] of FRACTIONS) {
56703
+ if (word === plain2) {
56077
56704
  return glyph3;
56078
56705
  }
56079
56706
  }
@@ -59057,7 +59684,7 @@ function safeColor(color, fallback = "none") {
59057
59684
  function svgTile(width, height, defs, body) {
59058
59685
  return `<svg xmlns="http://www.w3.org/2000/svg" width="${width}" height="${height}" viewBox="0 0 ${width} ${height}" aria-hidden="true" focusable="false">${defs ? `<defs>${defs}</defs>` : ""}${body}</svg>`;
59059
59686
  }
59060
- function num4(value) {
59687
+ function num5(value) {
59061
59688
  return String(Math.round(value * 100) / 100);
59062
59689
  }
59063
59690
  function svgId(raw) {
@@ -59072,9 +59699,9 @@ function paintDefs(paint, id) {
59072
59699
  const x = Math.cos(rad) / 2;
59073
59700
  const y = Math.sin(rad) / 2;
59074
59701
  const stops = paint.stops.map(
59075
- (s) => `<stop offset="${num4(s.position)}%" stop-color="${safeColor(s.color, "#000000")}"${s.opacity !== void 0 && s.opacity < 1 ? ` stop-opacity="${num4(s.opacity)}"` : ""}/>`
59702
+ (s) => `<stop offset="${num5(s.position)}%" stop-color="${safeColor(s.color, "#000000")}"${s.opacity !== void 0 && s.opacity < 1 ? ` stop-opacity="${num5(s.opacity)}"` : ""}/>`
59076
59703
  ).join("");
59077
- const defs = `<linearGradient id="${id}" x1="${num4(0.5 - x)}" y1="${num4(0.5 - y)}" x2="${num4(0.5 + x)}" y2="${num4(0.5 + y)}">${stops}</linearGradient>`;
59704
+ const defs = `<linearGradient id="${id}" x1="${num5(0.5 - x)}" y1="${num5(0.5 - y)}" x2="${num5(0.5 + x)}" y2="${num5(0.5 + y)}">${stops}</linearGradient>`;
59078
59705
  return { defs, fill: `url(#${id})` };
59079
59706
  }
59080
59707
  return { defs: "", fill: safeColor(paint.color) };
@@ -59087,19 +59714,19 @@ function filterDefs(effects, id) {
59087
59714
  if (effects.glow) {
59088
59715
  const g = effects.glow;
59089
59716
  parts.push(
59090
- `<feMorphology in="SourceAlpha" operator="dilate" radius="${num4(g.radius / 2)}" result="gd"/>`,
59091
- `<feGaussianBlur in="gd" stdDeviation="${num4(g.radius / 2)}" result="gb"/>`,
59092
- `<feFlood flood-color="${safeColor(g.color, "#000000")}" flood-opacity="${num4(g.opacity)}"/>`,
59717
+ `<feMorphology in="SourceAlpha" operator="dilate" radius="${num5(g.radius / 2)}" result="gd"/>`,
59718
+ `<feGaussianBlur in="gd" stdDeviation="${num5(g.radius / 2)}" result="gb"/>`,
59719
+ `<feFlood flood-color="${safeColor(g.color, "#000000")}" flood-opacity="${num5(g.opacity)}"/>`,
59093
59720
  '<feComposite in2="gb" operator="in" result="glow"/>'
59094
59721
  );
59095
59722
  }
59096
59723
  if (effects.shadow && !effects.shadow.inner) {
59097
59724
  const s = effects.shadow;
59098
- parts.push(diagram.svgDropShadowElement(s, { number: num4, color: safeColor }));
59725
+ parts.push(diagram.svgDropShadowElement(s, { number: num5, color: safeColor }));
59099
59726
  }
59100
59727
  if (effects.softEdge) {
59101
59728
  parts.push(
59102
- `<feGaussianBlur in="SourceGraphic" stdDeviation="${num4(effects.softEdge / 2)}" result="soft"/>`
59729
+ `<feGaussianBlur in="SourceGraphic" stdDeviation="${num5(effects.softEdge / 2)}" result="soft"/>`
59103
59730
  );
59104
59731
  }
59105
59732
  if (parts.length === 0) {
@@ -59122,8 +59749,8 @@ function shapeTileSvg(spec5) {
59122
59749
  const h = spec5.height - inset3 * 2 - (spec5.effects?.reflection ? h3(spec5) : 0);
59123
59750
  const paint = paintDefs(spec5.fill, `${id}-f`);
59124
59751
  const filter = filterDefs(spec5.effects, `${id}-x`);
59125
- const stroke = spec5.stroke && spec5.stroke.width > 0 ? ` stroke="${safeColor(spec5.stroke.color, "#000000")}" stroke-width="${num4(Math.min(spec5.stroke.width, 6))}"${spec5.stroke.opacity !== void 0 && spec5.stroke.opacity < 1 ? ` stroke-opacity="${num4(spec5.stroke.opacity)}"` : ""}${spec5.stroke.dash ? ` stroke-dasharray="${spec5.stroke.dash}"` : ""}` : "";
59126
- const fillOpacity = spec5.fill?.opacity !== void 0 && spec5.fill.opacity < 1 ? ` fill-opacity="${num4(spec5.fill.opacity)}"` : "";
59752
+ const stroke = spec5.stroke && spec5.stroke.width > 0 ? ` stroke="${safeColor(spec5.stroke.color, "#000000")}" stroke-width="${num5(Math.min(spec5.stroke.width, 6))}"${spec5.stroke.opacity !== void 0 && spec5.stroke.opacity < 1 ? ` stroke-opacity="${num5(spec5.stroke.opacity)}"` : ""}${spec5.stroke.dash ? ` stroke-dasharray="${spec5.stroke.dash}"` : ""}` : "";
59753
+ const fillOpacity = spec5.fill?.opacity !== void 0 && spec5.fill.opacity < 1 ? ` fill-opacity="${num5(spec5.fill.opacity)}"` : "";
59127
59754
  const shape = geometryMarkup(
59128
59755
  spec5.geometry,
59129
59756
  inset3,
@@ -59136,8 +59763,8 @@ function shapeTileSvg(spec5) {
59136
59763
  if (spec5.effects?.reflection) {
59137
59764
  const r = spec5.effects.reflection;
59138
59765
  const gy = inset3 + h + r.distance;
59139
- body += `<g opacity="${num4(r.startOpacity)}" transform="translate(0 ${num4(gy * 2)}) scale(1 -1)" mask="url(#${id}-m)">${geometryMarkup(spec5.geometry, inset3, inset3, w, h, `fill="${paint.fill}"${stroke}`)}</g>`;
59140
- paint.defs += `<linearGradient id="${id}-mg" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#fff"/><stop offset="${num4(r.endPosition)}" stop-color="#fff" stop-opacity="0"/></linearGradient><mask id="${id}-m"><rect x="0" y="${num4(gy)}" width="${spec5.width}" height="${num4(h)}" fill="url(#${id}-mg)"/></mask>`;
59766
+ body += `<g opacity="${num5(r.startOpacity)}" transform="translate(0 ${num5(gy * 2)}) scale(1 -1)" mask="url(#${id}-m)">${geometryMarkup(spec5.geometry, inset3, inset3, w, h, `fill="${paint.fill}"${stroke}`)}</g>`;
59767
+ paint.defs += `<linearGradient id="${id}-mg" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#fff"/><stop offset="${num5(r.endPosition)}" stop-color="#fff" stop-opacity="0"/></linearGradient><mask id="${id}-m"><rect x="0" y="${num5(gy)}" width="${spec5.width}" height="${num5(h)}" fill="url(#${id}-mg)"/></mask>`;
59141
59768
  }
59142
59769
  if (spec5.effects?.shadow?.inner) {
59143
59770
  const s = spec5.effects.shadow;
@@ -59147,11 +59774,11 @@ function shapeTileSvg(spec5) {
59147
59774
  inset3 + s.dy / 2,
59148
59775
  w - Math.abs(s.dx),
59149
59776
  h - Math.abs(s.dy),
59150
- `fill="none" stroke="${safeColor(s.color, "#000000")}" stroke-opacity="${num4(s.opacity / 2)}" stroke-width="${num4(Math.max(1, s.blur / 2))}"`
59777
+ `fill="none" stroke="${safeColor(s.color, "#000000")}" stroke-opacity="${num5(s.opacity / 2)}" stroke-width="${num5(Math.max(1, s.blur / 2))}"`
59151
59778
  );
59152
59779
  }
59153
59780
  if (spec5.text) {
59154
- body += `<text x="${num4(inset3 + w / 2)}" y="${num4(inset3 + h / 2)}" text-anchor="middle" dominant-baseline="central" font-family="Calibri, Arial, sans-serif" font-size="${num4(Math.min(h * 0.55, 14))}" fill="${safeColor(spec5.text.color, "#000000")}">${escapeSvgText(spec5.text.value)}</text>`;
59781
+ body += `<text x="${num5(inset3 + w / 2)}" y="${num5(inset3 + h / 2)}" text-anchor="middle" dominant-baseline="central" font-family="Calibri, Arial, sans-serif" font-size="${num5(Math.min(h * 0.55, 14))}" fill="${safeColor(spec5.text.color, "#000000")}">${escapeSvgText(spec5.text.value)}</text>`;
59155
59782
  }
59156
59783
  return svgTile(spec5.width, spec5.height, paint.defs + filter.defs, body);
59157
59784
  }
@@ -59160,10 +59787,10 @@ function h3(spec5) {
59160
59787
  }
59161
59788
  function geometryMarkup(geometry, x, y, w, h, attrs) {
59162
59789
  if (geometry === "ellipse") {
59163
- return `<ellipse cx="${num4(x + w / 2)}" cy="${num4(y + h / 2)}" rx="${num4(w / 2)}" ry="${num4(h / 2)}" ${attrs}/>`;
59790
+ return `<ellipse cx="${num5(x + w / 2)}" cy="${num5(y + h / 2)}" rx="${num5(w / 2)}" ry="${num5(h / 2)}" ${attrs}/>`;
59164
59791
  }
59165
59792
  const r = geometry === "roundRect" ? Math.min(w, h) * 0.18 : 1.5;
59166
- return `<rect x="${num4(x)}" y="${num4(y)}" width="${num4(w)}" height="${num4(h)}" rx="${num4(r)}" ${attrs}/>`;
59793
+ return `<rect x="${num5(x)}" y="${num5(y)}" width="${num5(w)}" height="${num5(h)}" rx="${num5(r)}" ${attrs}/>`;
59167
59794
  }
59168
59795
  function tileSpecFromShapeStyle(id, style, size2, textColor) {
59169
59796
  const fill3 = style.fillMode === "none" ? void 0 : style.fillMode === "gradient" && style.fillGradientStops?.length ? {
@@ -59269,17 +59896,17 @@ function apply(itemId, ctx) {
59269
59896
  var BULLETS_GALLERY = { build, apply };
59270
59897
 
59271
59898
  // src/ribbon/color-preview.ts
59272
- var num5 = (value) => String(Math.round(value * 100) / 100);
59899
+ var num6 = (value) => String(Math.round(value * 100) / 100);
59273
59900
  function swatchStripSvg(colors, size2) {
59274
59901
  const w = size2.width / Math.max(colors.length, 1);
59275
59902
  const body = colors.map(
59276
- (color, i) => `<rect x="${num5(i * w)}" y="0" width="${num5(w)}" height="${size2.height}" fill="${safeColor(color, "#808080")}"/>`
59903
+ (color, i) => `<rect x="${num6(i * w)}" y="0" width="${num6(w)}" height="${size2.height}" fill="${safeColor(color, "#808080")}"/>`
59277
59904
  ).join("");
59278
59905
  return svgTile(size2.width, size2.height, "", body);
59279
59906
  }
59280
59907
 
59281
59908
  // src/chart/gallery-tiles.ts
59282
- function num6(value) {
59909
+ function num7(value) {
59283
59910
  return String(Math.round(value * 100) / 100);
59284
59911
  }
59285
59912
  var HEIGHTS = [0.55, 0.8, 0.4, 0.95, 0.7, 0.5];
@@ -59296,11 +59923,11 @@ function columnChartTileSvg(colors, size2) {
59296
59923
  const h = plotH * (HEIGHTS[(g + s * 2) % HEIGHTS.length] ?? 0.5);
59297
59924
  const x = pad + g * groupW + groupW * 0.1 + s * barW;
59298
59925
  bars.push(
59299
- `<rect x="${num6(x)}" y="${num6(pad + plotH - h)}" width="${num6(barW * 0.9)}" height="${num6(h)}" fill="${safeColor(color, "#808080")}"/>`
59926
+ `<rect x="${num7(x)}" y="${num7(pad + plotH - h)}" width="${num7(barW * 0.9)}" height="${num7(h)}" fill="${safeColor(color, "#808080")}"/>`
59300
59927
  );
59301
59928
  });
59302
59929
  }
59303
- const axis = `<line x1="${pad}" y1="${num6(pad + plotH)}" x2="${num6(pad + plotW)}" y2="${num6(pad + plotH)}" stroke="#A6A6A6" stroke-width="0.75"/>`;
59930
+ const axis = `<line x1="${pad}" y1="${num7(pad + plotH)}" x2="${num7(pad + plotW)}" y2="${num7(pad + plotH)}" stroke="#A6A6A6" stroke-width="0.75"/>`;
59304
59931
  const bg = `<rect x="0" y="0" width="${size2.width}" height="${size2.height}" fill="#FFFFFF"/>`;
59305
59932
  return svgTile(size2.width, size2.height, "", bg + bars.join("") + axis);
59306
59933
  }
@@ -59315,7 +59942,7 @@ function chartLayoutTileSvg(sketch, size2) {
59315
59942
  let left = 3;
59316
59943
  let right = size2.width - 3;
59317
59944
  const bar = (x, y, w2, h, color = INK) => parts.push(
59318
- `<rect x="${num6(x)}" y="${num6(y)}" width="${num6(w2)}" height="${num6(h)}" fill="${color}"/>`
59945
+ `<rect x="${num7(x)}" y="${num7(y)}" width="${num7(w2)}" height="${num7(h)}" fill="${color}"/>`
59319
59946
  );
59320
59947
  if (sketch.title) {
59321
59948
  bar(size2.width * 0.3, top, size2.width * 0.4, 3);
@@ -59338,7 +59965,7 @@ function chartLayoutTileSvg(sketch, size2) {
59338
59965
  const rows = 3;
59339
59966
  for (let r = 0; r < rows; r++) {
59340
59967
  parts.push(
59341
- `<rect x="${num6(left + 4)}" y="${num6(bottom - (rows - r) * 3)}" width="${num6(right - left - 4)}" height="3" fill="none" stroke="${INK}" stroke-width="0.5"/>`
59968
+ `<rect x="${num7(left + 4)}" y="${num7(bottom - (rows - r) * 3)}" width="${num7(right - left - 4)}" height="3" fill="none" stroke="${INK}" stroke-width="0.5"/>`
59342
59969
  );
59343
59970
  }
59344
59971
  bottom -= rows * 3 + 2;
@@ -59360,7 +59987,7 @@ function chartLayoutTileSvg(sketch, size2) {
59360
59987
  for (let i = 0; i < lines; i++) {
59361
59988
  const y = top + plotH * i / lines;
59362
59989
  parts.push(
59363
- `<line x1="${num6(left)}" y1="${num6(y)}" x2="${num6(right)}" y2="${num6(y)}" stroke="#D9D9D9" stroke-width="${sketch.minorGridlines && i % 2 ? "0.4" : "0.7"}"/>`
59990
+ `<line x1="${num7(left)}" y1="${num7(y)}" x2="${num7(right)}" y2="${num7(y)}" stroke="#D9D9D9" stroke-width="${sketch.minorGridlines && i % 2 ? "0.4" : "0.7"}"/>`
59364
59991
  );
59365
59992
  }
59366
59993
  }
@@ -59374,7 +60001,7 @@ function chartLayoutTileSvg(sketch, size2) {
59374
60001
  }
59375
60002
  });
59376
60003
  parts.push(
59377
- `<line x1="${num6(left)}" y1="${num6(bottom)}" x2="${num6(right)}" y2="${num6(bottom)}" stroke="${INK}" stroke-width="0.6"/>`
60004
+ `<line x1="${num7(left)}" y1="${num7(bottom)}" x2="${num7(right)}" y2="${num7(bottom)}" stroke="${INK}" stroke-width="0.6"/>`
59378
60005
  );
59379
60006
  return svgTile(size2.width, size2.height, "", parts.join(""));
59380
60007
  }
@@ -59511,21 +60138,21 @@ function coloursByPoint(chartData) {
59511
60138
  }
59512
60139
  function applyChartColorPalette(chartData, palette, ctx) {
59513
60140
  const scheme = galleryColorScheme(ctx);
59514
- const cleared = chartData.series.map(clearSeriesColor);
60141
+ const cleared2 = chartData.series.map(clearSeriesColor);
59515
60142
  if (coloursByPoint(chartData)) {
59516
60143
  const count = Math.max(chartData.categories.length, 1);
59517
60144
  return {
59518
60145
  ...chartData,
59519
- series: cleared,
60146
+ series: cleared2,
59520
60147
  colorPalette: chart.chartPaletteColors(palette, count, scheme),
59521
60148
  colorMethod: "cycle"
59522
60149
  };
59523
60150
  }
59524
- const colors = chart.chartPaletteColors(palette, cleared.length, scheme);
60151
+ const colors = chart.chartPaletteColors(palette, cleared2.length, scheme);
59525
60152
  const base2 = palette.meth === "withinLinear" ? [chart.chartPaletteColors(palette, 1, scheme)[0]] : palette.meth === "cycle" ? chart.chartPaletteColors(palette, Math.max(palette.base.length, colors.length), scheme) : colors;
59526
60153
  return {
59527
60154
  ...chartData,
59528
- series: cleared.map((series, i) => ({ ...series, color: colors[i] })),
60155
+ series: cleared2.map((series, i) => ({ ...series, color: colors[i] })),
59529
60156
  colorPalette: base2.length ? base2 : colors,
59530
60157
  colorMethod: palette.meth === "withinLinear" ? "withinLinear" : "cycle"
59531
60158
  };
@@ -60219,7 +60846,7 @@ var PICTURE_CORRECTIONS_GALLERY = adjustGalleryModule(
60219
60846
 
60220
60847
  // src/pptx/render/ribbon-galleries/picture-style-tile-svg.ts
60221
60848
  var PICTURE_STYLE_TILE = { width: 64, height: 52 };
60222
- function num7(value) {
60849
+ function num8(value) {
60223
60850
  return String(Math.round(value * 100) / 100);
60224
60851
  }
60225
60852
  function geometryPath(geom, x, y, w, h) {
@@ -60228,32 +60855,32 @@ function geometryPath(geom, x, y, w, h) {
60228
60855
  switch (geom) {
60229
60856
  case "ellipse":
60230
60857
  return box(
60231
- `M${num7(x)} ${num7(y + h / 2)} A${num7(w / 2)} ${num7(h / 2)} 0 1 0 ${num7(x + w)} ${num7(y + h / 2)}
60232
- A${num7(w / 2)} ${num7(h / 2)} 0 1 0 ${num7(x)} ${num7(y + h / 2)} Z`
60858
+ `M${num8(x)} ${num8(y + h / 2)} A${num8(w / 2)} ${num8(h / 2)} 0 1 0 ${num8(x + w)} ${num8(y + h / 2)}
60859
+ A${num8(w / 2)} ${num8(h / 2)} 0 1 0 ${num8(x)} ${num8(y + h / 2)} Z`
60233
60860
  );
60234
60861
  case "roundRect": {
60235
60862
  const c = r * 0.14;
60236
60863
  return box(
60237
- `M${num7(x + c)} ${num7(y)} H${num7(x + w - c)} Q${num7(x + w)} ${num7(y)} ${num7(x + w)} ${num7(y + c)}
60238
- V${num7(y + h - c)} Q${num7(x + w)} ${num7(y + h)} ${num7(x + w - c)} ${num7(y + h)} H${num7(x + c)}
60239
- Q${num7(x)} ${num7(y + h)} ${num7(x)} ${num7(y + h - c)} V${num7(y + c)} Q${num7(x)} ${num7(y)} ${num7(x + c)} ${num7(y)} Z`
60864
+ `M${num8(x + c)} ${num8(y)} H${num8(x + w - c)} Q${num8(x + w)} ${num8(y)} ${num8(x + w)} ${num8(y + c)}
60865
+ V${num8(y + h - c)} Q${num8(x + w)} ${num8(y + h)} ${num8(x + w - c)} ${num8(y + h)} H${num8(x + c)}
60866
+ Q${num8(x)} ${num8(y + h)} ${num8(x)} ${num8(y + h - c)} V${num8(y + c)} Q${num8(x)} ${num8(y)} ${num8(x + c)} ${num8(y)} Z`
60240
60867
  );
60241
60868
  }
60242
60869
  case "round2DiagRect": {
60243
60870
  const c = r * 0.17;
60244
60871
  return box(
60245
- `M${num7(x + c)} ${num7(y)} H${num7(x + w)} V${num7(y + h - c)} Q${num7(x + w)} ${num7(y + h)} ${num7(x + w - c)} ${num7(y + h)}
60246
- H${num7(x)} V${num7(y + c)} Q${num7(x)} ${num7(y)} ${num7(x + c)} ${num7(y)} Z`
60872
+ `M${num8(x + c)} ${num8(y)} H${num8(x + w)} V${num8(y + h - c)} Q${num8(x + w)} ${num8(y + h)} ${num8(x + w - c)} ${num8(y + h)}
60873
+ H${num8(x)} V${num8(y + c)} Q${num8(x)} ${num8(y)} ${num8(x + c)} ${num8(y)} Z`
60247
60874
  );
60248
60875
  }
60249
60876
  case "snip2DiagRect": {
60250
60877
  const c = r * 0.17;
60251
60878
  return box(
60252
- `M${num7(x)} ${num7(y)} H${num7(x + w - c)} L${num7(x + w)} ${num7(y + c)} V${num7(y + h)} H${num7(x + c)} L${num7(x)} ${num7(y + h - c)} Z`
60879
+ `M${num8(x)} ${num8(y)} H${num8(x + w - c)} L${num8(x + w)} ${num8(y + c)} V${num8(y + h)} H${num8(x + c)} L${num8(x)} ${num8(y + h - c)} Z`
60253
60880
  );
60254
60881
  }
60255
60882
  default:
60256
- return `M${num7(x)} ${num7(y)} H${num7(x + w)} V${num7(y + h)} H${num7(x)} Z`;
60883
+ return `M${num8(x)} ${num8(y)} H${num8(x + w)} V${num8(y + h)} H${num8(x)} Z`;
60257
60884
  }
60258
60885
  }
60259
60886
  function tiltTransform(spec5, cx, cy) {
@@ -60263,13 +60890,13 @@ function tiltTransform(spec5, cx, cy) {
60263
60890
  }
60264
60891
  const rev = scene.rot?.[2] ?? 0;
60265
60892
  if (scene.camera === "orthographicFront") {
60266
- return rev ? ` transform="rotate(${num7(rev / 6e4)} ${num7(cx)} ${num7(cy)})"` : "";
60893
+ return rev ? ` transform="rotate(${num8(rev / 6e4)} ${num8(cx)} ${num8(cy)})"` : "";
60267
60894
  }
60268
60895
  const lon = scene.rot?.[1] ?? 0;
60269
60896
  const skew = lon > 108e5 ? 8 : lon > 0 ? -8 : 0;
60270
60897
  const lat = scene.rot?.[0] ?? 0;
60271
60898
  const squash = lat > 108e5 ? 0.9 : 1;
60272
- return ` transform="translate(${num7(cx)} ${num7(cy)}) skewY(${skew}) scale(1 ${squash}) translate(${num7(-cx)} ${num7(-cy)})"`;
60899
+ return ` transform="translate(${num8(cx)} ${num8(cy)}) skewY(${skew}) scale(1 ${squash}) translate(${num8(-cx)} ${num8(-cy)})"`;
60273
60900
  }
60274
60901
  function pictureStyleTileSvg(spec5) {
60275
60902
  const id = svgId(`gps-${spec5.key}`);
@@ -60289,21 +60916,21 @@ function pictureStyleTileSvg(spec5) {
60289
60916
  const opacity = alpha ? Number(alpha[1]) / 1e5 : 1;
60290
60917
  const rad = (spec5.outer.dir ?? 0) / 6e4 * Math.PI / 180;
60291
60918
  const dist2 = Math.min(3, (spec5.outer.dist ?? 0) / 38100);
60292
- defs += `<filter id="${id}-f" x="-40%" y="-40%" width="180%" height="180%"><feDropShadow dx="${num7(Math.cos(rad) * dist2)}" dy="${num7(Math.sin(rad) * dist2)}" stdDeviation="${num7(Math.min(3, spec5.outer.blur / 63500))}" flood-color="#000000" flood-opacity="${num7(Math.min(0.8, opacity + 0.2))}"/></filter>`;
60919
+ defs += `<filter id="${id}-f" x="-40%" y="-40%" width="180%" height="180%"><feDropShadow dx="${num8(Math.cos(rad) * dist2)}" dy="${num8(Math.sin(rad) * dist2)}" stdDeviation="${num8(Math.min(3, spec5.outer.blur / 63500))}" flood-color="#000000" flood-opacity="${num8(Math.min(0.8, opacity + 0.2))}"/></filter>`;
60293
60920
  filter = ` filter="url(#${id}-f)"`;
60294
60921
  } else if (spec5.softEdge !== void 0) {
60295
60922
  defs += `<filter id="${id}-f" x="-20%" y="-20%" width="140%" height="140%"><feGaussianBlur stdDeviation="2"/></filter>`;
60296
60923
  filter = ` filter="url(#${id}-f)"`;
60297
60924
  }
60298
- const photo = `<g clip-path="url(#${id}-c)"><rect x="${x}" y="${y}" width="${w}" height="${num7(h)}" fill="url(#${id}-s)"/><circle cx="${num7(x + w * 0.72)}" cy="${num7(y + h * 0.3)}" r="${num7(h * 0.13)}" fill="#ffd54a"/><path d="M${x} ${num7(y + h)} L${num7(x + w * 0.35)} ${num7(y + h * 0.5)} L${num7(x + w * 0.6)} ${num7(y + h * 0.75)} L${num7(x + w * 0.78)} ${num7(y + h * 0.55)} L${num7(x + w)} ${num7(y + h * 0.8)} V${num7(y + h)} Z" fill="#4c9a4a"/></g>`;
60299
- const frame = spec5.line ? `<path d="${outline}" fill="none" stroke="${safeColor(spec5.line.color, "#000000")}" stroke-width="${num7(stroke)}"${spec5.line.cmpd ? ` stroke-opacity="0.9"` : ""}/>${spec5.line.cmpd ? `<path d="${geometryPath(spec5.geom, x + stroke, y + stroke, w - stroke * 2, h - stroke * 2)}" fill="none" stroke="${safeColor(spec5.line.color, "#000000")}" stroke-width="0.8"/>` : ""}` : "";
60925
+ const photo = `<g clip-path="url(#${id}-c)"><rect x="${x}" y="${y}" width="${w}" height="${num8(h)}" fill="url(#${id}-s)"/><circle cx="${num8(x + w * 0.72)}" cy="${num8(y + h * 0.3)}" r="${num8(h * 0.13)}" fill="#ffd54a"/><path d="M${x} ${num8(y + h)} L${num8(x + w * 0.35)} ${num8(y + h * 0.5)} L${num8(x + w * 0.6)} ${num8(y + h * 0.75)} L${num8(x + w * 0.78)} ${num8(y + h * 0.55)} L${num8(x + w)} ${num8(y + h * 0.8)} V${num8(y + h)} Z" fill="#4c9a4a"/></g>`;
60926
+ const frame = spec5.line ? `<path d="${outline}" fill="none" stroke="${safeColor(spec5.line.color, "#000000")}" stroke-width="${num8(stroke)}"${spec5.line.cmpd ? ` stroke-opacity="0.9"` : ""}/>${spec5.line.cmpd ? `<path d="${geometryPath(spec5.geom, x + stroke, y + stroke, w - stroke * 2, h - stroke * 2)}" fill="none" stroke="${safeColor(spec5.line.color, "#000000")}" stroke-width="0.8"/>` : ""}` : "";
60300
60927
  const bevel = spec5.sp3d ? `<path d="${outline}" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="1" transform="translate(-0.5 -0.5)"/>` : "";
60301
60928
  const body = `${photo}${frame}${bevel}`;
60302
60929
  let out = `<g${tiltTransform(spec5, width / 2, y + h / 2)}><g${filter}>${body}</g>`;
60303
60930
  if (reflect) {
60304
60931
  const gy = y + h + 1;
60305
- defs += `<linearGradient id="${id}-rg" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#fff" stop-opacity="${num7((spec5.reflection?.stA ?? 3e4) / 1e5 + 0.2)}"/><stop offset="0.6" stop-color="#fff" stop-opacity="0"/></linearGradient><mask id="${id}-m"><rect x="0" y="${num7(gy)}" width="${width}" height="${num7(h)}" fill="url(#${id}-rg)"/></mask>`;
60306
- out += `<g mask="url(#${id}-m)"><g transform="translate(0 ${num7(gy * 2)}) scale(1 -1)">${body}</g></g>`;
60932
+ defs += `<linearGradient id="${id}-rg" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#fff" stop-opacity="${num8((spec5.reflection?.stA ?? 3e4) / 1e5 + 0.2)}"/><stop offset="0.6" stop-color="#fff" stop-opacity="0"/></linearGradient><mask id="${id}-m"><rect x="0" y="${num8(gy)}" width="${width}" height="${num8(h)}" fill="url(#${id}-rg)"/></mask>`;
60933
+ out += `<g mask="url(#${id}-m)"><g transform="translate(0 ${num8(gy * 2)}) scale(1 -1)">${body}</g></g>`;
60307
60934
  }
60308
60935
  out += "</g>";
60309
60936
  return svgTile(width, height, defs, out);
@@ -61453,7 +62080,7 @@ function hasReflection(style) {
61453
62080
  }
61454
62081
 
61455
62082
  // src/pptx/render/ribbon-galleries/effect-tile-svg.ts
61456
- function num8(value) {
62083
+ function num9(value) {
61457
62084
  return String(Math.round(value * 100) / 100);
61458
62085
  }
61459
62086
  var BEVEL_PROFILES = {
@@ -61480,8 +62107,8 @@ function bevelTileSvg(id, preset2, color, size2) {
61480
62107
  const [lit, dark] = profile.inverted ? ["#000000", "#ffffff"] : ["#ffffff", "#000000"];
61481
62108
  const fill3 = safeColor(color, "#4472c4");
61482
62109
  const defs = `<linearGradient id="${sid}-l" x1="0" y1="0" x2="1" y2="1"><stop offset="0" stop-color="${lit}" stop-opacity="0.65"/><stop offset="0.5" stop-color="${lit}" stop-opacity="0"/><stop offset="0.5" stop-color="${dark}" stop-opacity="0"/><stop offset="1" stop-color="${dark}" stop-opacity="0.45"/></linearGradient>`;
61483
- const ring = (d) => `<rect x="${num8(inset3 + d)}" y="${num8(inset3 + d)}" width="${num8(w - d * 2)}" height="${num8(h - d * 2)}" fill="none" stroke="url(#${sid}-l)" stroke-width="${num8(rim)}"/>`;
61484
- let body = `<rect x="${inset3}" y="${inset3}" width="${num8(w)}" height="${num8(h)}" fill="${fill3}"/>`;
62110
+ const ring = (d) => `<rect x="${num9(inset3 + d)}" y="${num9(inset3 + d)}" width="${num9(w - d * 2)}" height="${num9(h - d * 2)}" fill="none" stroke="url(#${sid}-l)" stroke-width="${num9(rim)}"/>`;
62111
+ let body = `<rect x="${inset3}" y="${inset3}" width="${num9(w)}" height="${num9(h)}" fill="${fill3}"/>`;
61485
62112
  body += ring(rim / 2);
61486
62113
  if (profile.double) {
61487
62114
  body += ring(rim * 1.6);
@@ -61518,7 +62145,7 @@ function rotationTileSvg(preset2, color, size2) {
61518
62145
  [1, -1],
61519
62146
  [1, 1],
61520
62147
  [-1, 1]
61521
- ].map(([x, y]) => `${num8(cx + (a * x + c * y) * half)},${num8(cy + (b * x + d * y) * half)}`);
62148
+ ].map(([x, y]) => `${num9(cx + (a * x + c * y) * half)},${num9(cy + (b * x + d * y) * half)}`);
61522
62149
  const fill3 = safeColor(color, "#4472c4");
61523
62150
  return svgTile(
61524
62151
  size2.width,
@@ -63221,7 +63848,7 @@ function tableStyleTileOptions(tableData) {
63221
63848
  bandedColumns: Boolean(tableData.bandedColumns)
63222
63849
  };
63223
63850
  }
63224
- function num9(value) {
63851
+ function num10(value) {
63225
63852
  return String(Math.round(value * 100) / 100);
63226
63853
  }
63227
63854
  function cellFill(css) {
@@ -63261,7 +63888,7 @@ function tableStyleTileSvg(styleId, colorScheme, size2, options = DEFAULT_OPTION
63261
63888
  const stroke = tileBorderStroke(value);
63262
63889
  if (stroke) {
63263
63890
  lines.push(
63264
- `<line x1="${num9(x1)}" y1="${num9(y1)}" x2="${num9(x2)}" y2="${num9(y2)}" stroke="${stroke.color}" stroke-width="${num9(stroke.width)}"/>`
63891
+ `<line x1="${num10(x1)}" y1="${num10(y1)}" x2="${num10(x2)}" y2="${num10(y2)}" stroke="${stroke.color}" stroke-width="${num10(stroke.width)}"/>`
63265
63892
  );
63266
63893
  }
63267
63894
  };
@@ -63273,13 +63900,13 @@ function tableStyleTileSvg(styleId, colorScheme, size2, options = DEFAULT_OPTION
63273
63900
  const fill3 = cellFill(css);
63274
63901
  if (fill3 !== "none") {
63275
63902
  fills.push(
63276
- `<rect x="${num9(x)}" y="${num9(y)}" width="${num9(cw)}" height="${num9(rh)}" fill="${fill3}"/>`
63903
+ `<rect x="${num10(x)}" y="${num10(y)}" width="${num10(cw)}" height="${num10(rh)}" fill="${fill3}"/>`
63277
63904
  );
63278
63905
  }
63279
63906
  const text4 = safeColor(typeof css.color === "string" ? css.color : void 0, "#000000");
63280
63907
  const bold = css.fontWeight === 700;
63281
63908
  fills.push(
63282
- `<rect x="${num9(x + cw * 0.25)}" y="${num9(y + rh * 0.42)}" width="${num9(cw * 0.5)}" height="${num9(Math.max(rh * 0.16, 0.8))}" fill="${text4}" opacity="${bold ? "0.9" : "0.55"}"/>`
63909
+ `<rect x="${num10(x + cw * 0.25)}" y="${num10(y + rh * 0.42)}" width="${num10(cw * 0.5)}" height="${num10(Math.max(rh * 0.16, 0.8))}" fill="${text4}" opacity="${bold ? "0.9" : "0.55"}"/>`
63283
63910
  );
63284
63911
  edge(x, y, x + cw, y, css.borderTop);
63285
63912
  edge(x, y + rh, x + cw, y + rh, css.borderBottom);
@@ -63693,7 +64320,7 @@ var THEME_COLORS_GALLERY = {
63693
64320
  };
63694
64321
  var TILE8 = { width: 52, height: 36 };
63695
64322
  var LABEL_KEY = "pptx.gallery.themeBackgrounds.style";
63696
- function num10(value) {
64323
+ function num11(value) {
63697
64324
  return String(Math.round(value * 100) / 100);
63698
64325
  }
63699
64326
  function presetSlot(preset2) {
@@ -63714,7 +64341,7 @@ function backgroundPaint(id, style, fallback) {
63714
64341
  const stops = style?.fillGradientStops ?? [];
63715
64342
  if (style?.fillMode === "gradient" && stops.length > 1) {
63716
64343
  const body = stops.map(
63717
- (stop) => `<stop offset="${num10(stop.position)}%" stop-color="${safeColor(stop.color, fallback)}"/>`
64344
+ (stop) => `<stop offset="${num11(stop.position)}%" stop-color="${safeColor(stop.color, fallback)}"/>`
63718
64345
  ).join("");
63719
64346
  if (style.fillGradientType === "radial") {
63720
64347
  return {
@@ -63726,7 +64353,7 @@ function backgroundPaint(id, style, fallback) {
63726
64353
  const x = Math.cos(rad) / 2;
63727
64354
  const y = Math.sin(rad) / 2;
63728
64355
  return {
63729
- defs: `<linearGradient id="${id}" x1="${num10(0.5 - x)}" y1="${num10(0.5 - y)}" x2="${num10(0.5 + x)}" y2="${num10(0.5 + y)}">${body}</linearGradient>`,
64356
+ defs: `<linearGradient id="${id}" x1="${num11(0.5 - x)}" y1="${num11(0.5 - y)}" x2="${num11(0.5 + x)}" y2="${num11(0.5 + y)}">${body}</linearGradient>`,
63730
64357
  fill: `url(#${id})`
63731
64358
  };
63732
64359
  }
@@ -63820,7 +64447,7 @@ var THEME_BACKGROUNDS_GALLERY = {
63820
64447
  var TILE9 = { width: 76, height: 42 };
63821
64448
  var SCHEME_LABEL_KEY2 = "pptx.gallery.themeEffects.scheme";
63822
64449
  var CELLS = [0, 1, 2];
63823
- function num11(value) {
64450
+ function num12(value) {
63824
64451
  return String(Math.round(value * 100) / 100);
63825
64452
  }
63826
64453
  function styleXml(idx, accent) {
@@ -63845,7 +64472,7 @@ function sampleShape(id, style, x, size2) {
63845
64472
  fillId
63846
64473
  );
63847
64474
  const strokeWidth = Math.min(Math.max(style.strokeWidth ?? 0, 0), 4);
63848
- const stroke = strokeWidth > 0 && style.strokeColor && style.strokeColor !== "transparent" ? ` stroke="${safeColor(style.strokeColor, "#000000")}" stroke-width="${num11(Math.max(1, strokeWidth))}"` : "";
64475
+ const stroke = strokeWidth > 0 && style.strokeColor && style.strokeColor !== "transparent" ? ` stroke="${safeColor(style.strokeColor, "#000000")}" stroke-width="${num12(Math.max(1, strokeWidth))}"` : "";
63849
64476
  let defs = paint.defs;
63850
64477
  let filter = "";
63851
64478
  if (style.shadowColor) {
@@ -63853,11 +64480,11 @@ function sampleShape(id, style, x, size2) {
63853
64480
  const dx = Math.max(-3, Math.min(3, style.shadowOffsetX ?? 0));
63854
64481
  const dy = Math.max(-3, Math.min(3, style.shadowOffsetY ?? 2));
63855
64482
  const blur = Math.min(style.shadowBlur ?? 3, 4) / 2;
63856
- defs += `<filter id="${shadowId}" x="-30%" y="-30%" width="160%" height="170%"><feDropShadow dx="${num11(dx)}" dy="${num11(dy)}" stdDeviation="${num11(blur)}" flood-color="${safeColor(style.shadowColor, "#000000")}" flood-opacity="${num11(style.shadowOpacity ?? 0.4)}"/></filter>`;
64483
+ defs += `<filter id="${shadowId}" x="-30%" y="-30%" width="160%" height="170%"><feDropShadow dx="${num12(dx)}" dy="${num12(dy)}" stdDeviation="${num12(blur)}" flood-color="${safeColor(style.shadowColor, "#000000")}" flood-opacity="${num12(style.shadowOpacity ?? 0.4)}"/></filter>`;
63857
64484
  filter = ` filter="url(#${shadowId})"`;
63858
64485
  }
63859
- const fillOpacity = !gradient && style.fillOpacity !== void 0 && style.fillOpacity < 1 ? ` fill-opacity="${num11(style.fillOpacity)}"` : "";
63860
- const rect3 = `<rect x="${num11(x)}" y="${num11(TILE9.height / 2 - size2 / 2 - 2)}" width="${num11(size2)}" height="${num11(size2)}" rx="3" fill="${paint.fill}"${fillOpacity}${stroke}${filter}/>`;
64486
+ const fillOpacity = !gradient && style.fillOpacity !== void 0 && style.fillOpacity < 1 ? ` fill-opacity="${num12(style.fillOpacity)}"` : "";
64487
+ const rect3 = `<rect x="${num12(x)}" y="${num12(TILE9.height / 2 - size2 / 2 - 2)}" width="${num12(size2)}" height="${num12(size2)}" rx="3" fill="${paint.fill}"${fillOpacity}${stroke}${filter}/>`;
63861
64488
  return `${defs ? `<defs>${defs}</defs>` : ""}${rect3}`;
63862
64489
  }
63863
64490
  function effectSchemeTileSvg(schemeId, ctx, accent = "accent1") {
@@ -64279,7 +64906,7 @@ var THEME_FONTS_GALLERY = {
64279
64906
  };
64280
64907
 
64281
64908
  // src/pptx/render/ribbon-galleries/wordart-preview-svg.ts
64282
- function num12(value) {
64909
+ function num13(value) {
64283
64910
  return String(Math.round(value * 100) / 100);
64284
64911
  }
64285
64912
  function paintOf(style) {
@@ -64304,9 +64931,9 @@ function effectFilter(style, id) {
64304
64931
  if (style.textGlowColor) {
64305
64932
  const r = Math.min(3, (style.textGlowRadius ?? 4) / 2);
64306
64933
  parts.push(
64307
- `<feMorphology in="SourceAlpha" operator="dilate" radius="${num12(r / 2)}" result="gd"/>`,
64308
- `<feGaussianBlur in="gd" stdDeviation="${num12(r / 2)}" result="gb"/>`,
64309
- `<feFlood flood-color="${safeColor(style.textGlowColor, "#000000")}" flood-opacity="${num12(Math.min(0.8, (style.textGlowOpacity ?? 0.4) + 0.2))}"/>`,
64934
+ `<feMorphology in="SourceAlpha" operator="dilate" radius="${num13(r / 2)}" result="gd"/>`,
64935
+ `<feGaussianBlur in="gd" stdDeviation="${num13(r / 2)}" result="gb"/>`,
64936
+ `<feFlood flood-color="${safeColor(style.textGlowColor, "#000000")}" flood-opacity="${num13(Math.min(0.8, (style.textGlowOpacity ?? 0.4) + 0.2))}"/>`,
64310
64937
  '<feComposite in2="gb" operator="in" result="glow"/>'
64311
64938
  );
64312
64939
  merge.push('<feMergeNode in="glow"/>');
@@ -64314,7 +64941,7 @@ function effectFilter(style, id) {
64314
64941
  if (style.textShadowColor) {
64315
64942
  const clamp12 = (v) => Math.max(-2, Math.min(2, (v ?? 0) / 2));
64316
64943
  parts.push(
64317
- `<feDropShadow dx="${num12(clamp12(style.textShadowOffsetX))}" dy="${num12(clamp12(style.textShadowOffsetY))}" stdDeviation="${num12(Math.min(1.5, (style.textShadowBlur ?? 2) / 4))}" flood-color="${safeColor(style.textShadowColor, "#000000")}" flood-opacity="${num12(style.textShadowOpacity ?? 1)}" result="shadow"/>`
64944
+ `<feDropShadow dx="${num13(clamp12(style.textShadowOffsetX))}" dy="${num13(clamp12(style.textShadowOffsetY))}" stdDeviation="${num13(Math.min(1.5, (style.textShadowBlur ?? 2) / 4))}" flood-color="${safeColor(style.textShadowColor, "#000000")}" flood-opacity="${num13(style.textShadowOpacity ?? 1)}" result="shadow"/>`
64318
64945
  );
64319
64946
  merge.push('<feMergeNode in="shadow"/>');
64320
64947
  } else {
@@ -64332,13 +64959,13 @@ function wordArtTileSvg(rawId, style, size2) {
64332
64959
  const id = svgId(rawId);
64333
64960
  const paint = paintDefs(paintOf(style), `${id}-f`);
64334
64961
  const filter = effectFilter(style, `${id}-x`);
64335
- const stroke = style.textOutlineColor && (style.textOutlineWidth ?? 1) > 0 ? ` stroke="${safeColor(style.textOutlineColor, "#000000")}" stroke-width="${num12(Math.min(1.2, Math.max(0.4, (style.textOutlineWidth ?? 1) / 2)))}"` : "";
64962
+ const stroke = style.textOutlineColor && (style.textOutlineWidth ?? 1) > 0 ? ` stroke="${safeColor(style.textOutlineColor, "#000000")}" stroke-width="${num13(Math.min(1.2, Math.max(0.4, (style.textOutlineWidth ?? 1) / 2)))}"` : "";
64336
64963
  const fontSize = Math.round(size2.height * 0.46);
64337
64964
  const baseline = style.textReflection ? size2.height * 0.56 : size2.height * 0.66;
64338
- const text4 = (attrs) => `<text x="${num12(size2.width / 2)}" y="${num12(baseline)}" text-anchor="middle" font-family="Calibri, Arial, sans-serif" font-size="${fontSize}"${style.bold ? ' font-weight="bold"' : ""} fill="${paint.fill}"${stroke}${attrs}>${style.textCaps === "all" ? "ABC" : "Abc"}</text>`;
64965
+ const text4 = (attrs) => `<text x="${num13(size2.width / 2)}" y="${num13(baseline)}" text-anchor="middle" font-family="Calibri, Arial, sans-serif" font-size="${fontSize}"${style.bold ? ' font-weight="bold"' : ""} fill="${paint.fill}"${stroke}${attrs}>${style.textCaps === "all" ? "ABC" : "Abc"}</text>`;
64339
64966
  let body = text4(filter.attr);
64340
64967
  if (style.textReflection) {
64341
- body += `<g opacity="${num12(Math.min(0.5, style.textReflectionStartOpacity ?? 0.4))}" transform="translate(0 ${num12(baseline * 2 + 2)}) scale(1 -1)">${text4("")}</g>`;
64968
+ body += `<g opacity="${num13(Math.min(0.5, style.textReflectionStartOpacity ?? 0.4))}" transform="translate(0 ${num13(baseline * 2 + 2)}) scale(1 -1)">${text4("")}</g>`;
64342
64969
  }
64343
64970
  return svgTile(size2.width, size2.height, paint.defs + filter.defs, body);
64344
64971
  }
@@ -65543,23 +66170,47 @@ function previewGalleryResult(result, base2, handler, target) {
65543
66170
  return void 0;
65544
66171
  }
65545
66172
  }
66173
+ function commitsThroughDeckStyle(result) {
66174
+ switch (result.kind) {
66175
+ case "theme":
66176
+ case "themeColorScheme":
66177
+ case "themeFontScheme":
66178
+ case "themeEffects":
66179
+ case "backgroundStyle":
66180
+ case "sequence":
66181
+ return true;
66182
+ default:
66183
+ return false;
66184
+ }
66185
+ }
65546
66186
  async function commitGalleryResult(result, base2, handler, target) {
65547
66187
  if (!handler) {
65548
66188
  return void 0;
65549
66189
  }
65550
66190
  switch (result.kind) {
65551
66191
  case "theme": {
65552
- await handler.applyTheme(result.colorScheme, result.fontScheme, result.name);
66192
+ await queueThemeWrite(
66193
+ handler,
66194
+ () => handler.applyTheme(result.colorScheme, result.fontScheme, result.name)
66195
+ );
65553
66196
  return previewGalleryResult(result, base2, handler, target);
65554
66197
  }
65555
66198
  case "themeColorScheme":
65556
- await handler.updateThemeColorScheme(result.colorScheme);
66199
+ await queueThemeWrite(handler, () => handler.updateThemeColorScheme(result.colorScheme));
65557
66200
  return previewGalleryResult(result, base2, handler, target);
65558
66201
  case "themeFontScheme":
65559
- await handler.updateThemeFontScheme(result.fontScheme);
66202
+ await queueThemeWrite(handler, () => handler.updateThemeFontScheme(result.fontScheme));
65560
66203
  return previewGalleryResult(result, base2, handler, target);
65561
66204
  case "themeEffects": {
65562
- const scheme = result.schemeId ? await handler.applyThemeEffectScheme(result.schemeId) : result.fmtSchemeXml ? await handler.applyThemeFormatSchemeXml(result.fmtSchemeXml) : void 0;
66205
+ const scheme = await queueThemeWrite(handler, async () => {
66206
+ if (result.schemeId) {
66207
+ return handler.applyThemeEffectScheme(result.schemeId);
66208
+ }
66209
+ if (result.fmtSchemeXml) {
66210
+ return handler.applyThemeFormatSchemeXml(result.fmtSchemeXml);
66211
+ }
66212
+ return void 0;
66213
+ });
65563
66214
  if (!scheme) {
65564
66215
  return void 0;
65565
66216
  }
@@ -65703,6 +66354,111 @@ function createDeckStyleHost(options) {
65703
66354
  }
65704
66355
  };
65705
66356
  }
66357
+ function layoutsOf(master) {
66358
+ return master.layoutPaths ?? master.layouts?.map((layout) => layout.path) ?? [];
66359
+ }
66360
+ function withPartTheme(theme, part) {
66361
+ const next = {
66362
+ ...theme,
66363
+ colorScheme: part.colorScheme,
66364
+ fontScheme: part.fontScheme
66365
+ };
66366
+ for (const key of ["formatScheme", "name"]) {
66367
+ if (part[key]) {
66368
+ next[key] = part[key];
66369
+ } else {
66370
+ delete next[key];
66371
+ }
66372
+ }
66373
+ return next;
66374
+ }
66375
+ function reResolveElements(elements, from, to) {
66376
+ const colored = pptx.reResolveElementColors(
66377
+ elements,
66378
+ pptx.buildThemeColorMap(from.colorScheme),
66379
+ to.colorScheme
66380
+ );
66381
+ return pptx.reResolveElementFonts(colored, from.fontScheme, to.fontScheme);
66382
+ }
66383
+ function reResolveSlide(slide, from, to) {
66384
+ const [colored] = pptx.reResolveSlideColors(
66385
+ [slide],
66386
+ pptx.buildThemeColorMap(from.colorScheme),
66387
+ to.colorScheme
66388
+ );
66389
+ const [themed] = pptx.reResolveSlideFonts([colored ?? slide], from.fontScheme, to.fontScheme);
66390
+ return themed ?? slide;
66391
+ }
66392
+ function applyThemeByPath(handler, input) {
66393
+ const { themePath, slideMasters } = input;
66394
+ const candidates = input.applyToAllMasters ? slideMasters : slideMasters.slice(0, 1);
66395
+ const targets = candidates.filter((master) => master.themePath !== themePath);
66396
+ if (!handler || targets.length === 0) {
66397
+ return Promise.resolve(void 0);
66398
+ }
66399
+ return queueThemeWrite(handler, async () => {
66400
+ const next = await handler.getThemePartSchemes(themePath);
66401
+ if (!next) {
66402
+ return void 0;
66403
+ }
66404
+ const previous = /* @__PURE__ */ new Map();
66405
+ for (const master of targets) {
66406
+ previous.set(
66407
+ master.path,
66408
+ master.themePath ? await handler.getThemePartSchemes(master.themePath) : void 0
66409
+ );
66410
+ await handler.setSlideMasterTheme(master.path, themePath);
66411
+ }
66412
+ const masterOfLayout = /* @__PURE__ */ new Map();
66413
+ for (const master of slideMasters) {
66414
+ for (const layout of layoutsOf(master)) {
66415
+ masterOfLayout.set(layout, master.path);
66416
+ }
66417
+ }
66418
+ const fromOf = (slide) => {
66419
+ const layoutMaster = slide.layoutPath ? masterOfLayout.get(slide.layoutPath) : void 0;
66420
+ const masterPath = layoutMaster ?? slideMasters[0]?.path;
66421
+ return masterPath ? previous.get(masterPath) : void 0;
66422
+ };
66423
+ const templates = input.templateElementsBySlideId ?? {};
66424
+ const moved = [];
66425
+ const movedTemplates = {};
66426
+ const recoloured = input.slides.map((slide) => {
66427
+ const from = fromOf(slide);
66428
+ if (!from) {
66429
+ return slide;
66430
+ }
66431
+ const layer = templates[slide.id];
66432
+ if (layer) {
66433
+ movedTemplates[slide.id] = reResolveElements(layer, from, next);
66434
+ }
66435
+ const themed = reResolveSlide(slide, from, next);
66436
+ moved.push(themed);
66437
+ return themed;
66438
+ });
66439
+ const styled = handler.reResolveThemeStyleReferences(moved, movedTemplates);
66440
+ const styledById = new Map(styled.slides.map((slide) => [slide.id, slide]));
66441
+ const slides = recoloured.map((slide) => styledById.get(slide.id) ?? slide);
66442
+ const templateElementsBySlideId = {
66443
+ ...templates,
66444
+ ...styled.templateElementsBySlideId
66445
+ };
66446
+ const first = slideMasters[0];
66447
+ const change = {
66448
+ slides,
66449
+ templateElementsBySlideId,
66450
+ slideMasters: slideMasters.map(
66451
+ (master) => previous.has(master.path) ? { ...master, themePath } : master
66452
+ )
66453
+ };
66454
+ if (!first || !previous.has(first.path)) {
66455
+ return change;
66456
+ }
66457
+ const adopted = await handler.getThemePartSchemes(themePath) ?? next;
66458
+ const theme = withPartTheme(input.theme, adopted);
66459
+ return { ...change, deckTheme: { theme, themeColorMap: pptx.buildThemeColorMap(next.colorScheme) } };
66460
+ });
66461
+ }
65706
66462
  var RIBBON_ADD_IN_TAB_ATTR = "data-ribbon-add-in-tab";
65707
66463
  var RIBBON_RESERVED_TAB_IDS = [
65708
66464
  ...TOOLBAR_TABS.map((tab) => tab.id),
@@ -67508,8 +68264,8 @@ function fractionalAxis(client, offset, rect3, borderStart, borderEnd, cssSize,
67508
68264
  }
67509
68265
  const local = bordersKnown ? localBorderBox(cssSize, boxSizing, borders, paddingStart, paddingEnd) : void 0;
67510
68266
  if (local) {
67511
- const plain = !zoomed && Number.isFinite(rect3) && rect3 >= local.low && rect3 <= local.high;
67512
- if (plain) {
68267
+ const plain2 = !zoomed && Number.isFinite(rect3) && rect3 >= local.low && rect3 <= local.high;
68268
+ if (plain2) {
67513
68269
  const size2 = local.exact ? Math.min(rect3, local.floor + LAYOUT_UNIT) : local.floor;
67514
68270
  return Math.max(0, size2 - borders);
67515
68271
  }
@@ -68493,7 +69249,7 @@ var EDIT_POINTS_STYLE = {
68493
69249
  handleSize: 7,
68494
69250
  hitStrokeWidth: 10
68495
69251
  };
68496
- function num13(value) {
69252
+ function num14(value) {
68497
69253
  return String(Math.round(value * 100) / 100);
68498
69254
  }
68499
69255
  function segmentD(frame, geometry, s, i) {
@@ -68502,17 +69258,17 @@ function segmentD(frame, geometry, s, i) {
68502
69258
  const p0 = editLocalToSlide(frame, sub.nodes[i]);
68503
69259
  const p3 = editLocalToSlide(frame, sub.nodes[segmentEndIndex(sub, i)]);
68504
69260
  if (seg.kind === "line") {
68505
- return `M ${num13(p0.x)} ${num13(p0.y)} L ${num13(p3.x)} ${num13(p3.y)}`;
69261
+ return `M ${num14(p0.x)} ${num14(p0.y)} L ${num14(p3.x)} ${num14(p3.y)}`;
68506
69262
  }
68507
69263
  const c1 = editLocalToSlide(frame, seg.c1);
68508
69264
  const c2 = editLocalToSlide(frame, seg.c2);
68509
- return `M ${num13(p0.x)} ${num13(p0.y)} C ${num13(c1.x)} ${num13(c1.y)} ${num13(c2.x)} ${num13(c2.y)} ${num13(p3.x)} ${num13(p3.y)}`;
69265
+ return `M ${num14(p0.x)} ${num14(p0.y)} C ${num14(c1.x)} ${num14(c1.y)} ${num14(c2.x)} ${num14(c2.y)} ${num14(p3.x)} ${num14(p3.y)}`;
68510
69266
  }
68511
69267
  function editGeometryToSlidePath(frame, geometry) {
68512
69268
  const parts = [];
68513
69269
  const at = (p) => {
68514
69270
  const s = editLocalToSlide(frame, p);
68515
- return `${num13(s.x)} ${num13(s.y)}`;
69271
+ return `${num14(s.x)} ${num14(s.y)}`;
68516
69272
  };
68517
69273
  for (const sub of geometry.subpaths) {
68518
69274
  if (sub.nodes.length === 0) {
@@ -68842,7 +69598,7 @@ function resolveEditPointsAvailability(element) {
68842
69598
  if (!element || !isEditPointsCandidate(element)) {
68843
69599
  return "unsupported";
68844
69600
  }
68845
- return elementLocks.canInteractWithElement(element, "editPoints") ? "available" : "locked";
69601
+ return chunkCWWL7MCL_cjs.canInteractWithElement(element, "editPoints") ? "available" : "locked";
68846
69602
  }
68847
69603
  function canEditElementPoints(element) {
68848
69604
  return resolveEditPointsAvailability(element) === "available";
@@ -69334,7 +70090,7 @@ function buildCropOverlay(el, zoom = 1) {
69334
70090
  };
69335
70091
  }
69336
70092
  function canCropElement(el) {
69337
- return el !== null && el !== void 0 && pptx.isImageLikeElement(el) && elementLocks.canInteractWithElement(el, "crop");
70093
+ return el !== null && el !== void 0 && pptx.isImageLikeElement(el) && chunkCWWL7MCL_cjs.canInteractWithElement(el, "crop");
69338
70094
  }
69339
70095
  var INSET_KEYS = [
69340
70096
  "cropLeft",
@@ -72924,6 +73680,14 @@ function sorterPasteInsertAt(indexes, active2, slideCount) {
72924
73680
  return Math.min(slideCount, Math.max(0, (indexes.at(-1) ?? active2) + 1));
72925
73681
  }
72926
73682
 
73683
+ // src/pptx/render/inserted-slide-layout.ts
73684
+ function insertedLayoutCompletion(current, placed) {
73685
+ if (current === placed) {
73686
+ return "replace";
73687
+ }
73688
+ return current?.id === placed.id ? "artwork" : "none";
73689
+ }
73690
+
72927
73691
  // src/pptx/render/viewer-root-options.ts
72928
73692
  var VIEWER_ROOT_OPTION_DEFAULTS = Object.freeze({
72929
73693
  initialSlide: 0,
@@ -73229,6 +73993,186 @@ function autosaveStatusKind(status) {
73229
73993
  return state === "saving" || state === "saved" || state === "error" ? state : "idle";
73230
73994
  }
73231
73995
 
73996
+ // src/pptx/render/find-replace-session.ts
73997
+ var DEFAULT_FIND_REPLACE_OPTIONS = Object.freeze({
73998
+ matchCase: false,
73999
+ includeNotes: false,
74000
+ includeChartTitles: true,
74001
+ includeChartData: false
74002
+ });
74003
+ var INITIAL_FIND_REPLACE_SESSION = Object.freeze({
74004
+ query: "",
74005
+ replacement: "",
74006
+ options: DEFAULT_FIND_REPLACE_OPTIONS,
74007
+ matches: Object.freeze([]),
74008
+ current: -1,
74009
+ pendingRefind: null
74010
+ });
74011
+ function search(slides, session) {
74012
+ return session.query ? findReplace.findInSlides(slides, session.query, session.options) : [];
74013
+ }
74014
+ function cursorAfterReplace(pending2, count) {
74015
+ if (count === 0) {
74016
+ return -1;
74017
+ }
74018
+ if (pending2.scope === "all") {
74019
+ return 0;
74020
+ }
74021
+ const created = Math.max(0, count - (pending2.count - 1));
74022
+ return (pending2.index + created) % count;
74023
+ }
74024
+ function reduceFindReplaceSession(session, event) {
74025
+ switch (event.type) {
74026
+ case "search": {
74027
+ const next = {
74028
+ ...session,
74029
+ query: event.query ?? session.query,
74030
+ options: event.options ? { ...session.options, ...event.options } : session.options,
74031
+ pendingRefind: null
74032
+ };
74033
+ const matches = search(event.slides, next);
74034
+ return { ...next, matches, current: matches.length > 0 ? 0 : -1 };
74035
+ }
74036
+ case "setReplacement":
74037
+ return event.replacement === session.replacement ? session : { ...session, replacement: event.replacement };
74038
+ case "step": {
74039
+ const count = session.matches.length;
74040
+ if (count === 0) {
74041
+ return session;
74042
+ }
74043
+ const from = session.current < 0 ? event.direction > 0 ? -1 : 0 : session.current;
74044
+ const current = (from + event.direction + count) % count;
74045
+ return current === session.current ? session : { ...session, current };
74046
+ }
74047
+ case "replaced":
74048
+ return {
74049
+ ...session,
74050
+ pendingRefind: {
74051
+ scope: event.plan.scope,
74052
+ index: event.plan.index,
74053
+ count: event.plan.count,
74054
+ base: event.slides
74055
+ }
74056
+ };
74057
+ case "slidesChanged": {
74058
+ const pending2 = session.pendingRefind;
74059
+ if (!pending2 || event.slides === pending2.base) {
74060
+ return session;
74061
+ }
74062
+ const matches = search(event.slides, session);
74063
+ return {
74064
+ ...session,
74065
+ matches,
74066
+ current: cursorAfterReplace(pending2, matches.length),
74067
+ pendingRefind: null
74068
+ };
74069
+ }
74070
+ case "close":
74071
+ return session.matches.length === 0 && session.current === -1 && !session.pendingRefind ? session : { ...session, matches: [], current: -1, pendingRefind: null };
74072
+ }
74073
+ }
74074
+ function findReplaceStatus(session) {
74075
+ const total = session.matches.length;
74076
+ return { current: total > 0 && session.current >= 0 ? session.current + 1 : 0, total };
74077
+ }
74078
+ function findReplaceTarget(session) {
74079
+ const match = session.current >= 0 ? session.matches[session.current] : void 0;
74080
+ if (!match) {
74081
+ return null;
74082
+ }
74083
+ return { slideIndex: match.slideIndex, elementId: match.notes ? null : match.elementId };
74084
+ }
74085
+ function matchKey(match) {
74086
+ return JSON.stringify([
74087
+ match.slideIndex,
74088
+ match.elementId,
74089
+ match.elementPath ?? null,
74090
+ match.tableCell ?? null,
74091
+ match.smartArtNodeId ?? null,
74092
+ match.notes ?? false,
74093
+ match.chartTitle ?? false,
74094
+ match.chartSeriesIndex ?? null,
74095
+ match.chartCategoryIndex ?? null,
74096
+ match.segmentIndex,
74097
+ match.startOffset,
74098
+ match.length
74099
+ ]);
74100
+ }
74101
+ function planFindReplace(session, slides, scope) {
74102
+ const found = search(slides, session);
74103
+ let matches = found;
74104
+ let index = -1;
74105
+ if (scope === "current") {
74106
+ const current = session.current >= 0 ? session.matches[session.current] : void 0;
74107
+ const key = current ? matchKey(current) : null;
74108
+ index = key === null ? -1 : found.findIndex((match) => matchKey(match) === key);
74109
+ matches = index >= 0 ? [found[index]] : [];
74110
+ }
74111
+ if (matches.length === 0 || matches.some((match) => match.readOnly)) {
74112
+ return null;
74113
+ }
74114
+ return { scope, matches, replacement: session.replacement, count: found.length, index };
74115
+ }
74116
+
74117
+ // src/pptx/render/find-replace-session-actions.ts
74118
+ function findReplaceSessionActions(store, host2) {
74119
+ const apply6 = (event) => {
74120
+ const current = store.get();
74121
+ const next = reduceFindReplaceSession(current, event);
74122
+ if (next !== current) {
74123
+ store.set(next);
74124
+ }
74125
+ return next !== current;
74126
+ };
74127
+ const show = () => {
74128
+ const target = findReplaceTarget(store.get());
74129
+ if (target) {
74130
+ host2.navigate(target);
74131
+ }
74132
+ };
74133
+ const step2 = (direction) => {
74134
+ apply6({ type: "step", direction });
74135
+ show();
74136
+ };
74137
+ const slidesChanged = () => {
74138
+ if (apply6({ type: "slidesChanged", slides: host2.slides() })) {
74139
+ show();
74140
+ }
74141
+ };
74142
+ const replace = (scope) => {
74143
+ const slides = host2.slides();
74144
+ const plan = planFindReplace(store.get(), slides, scope);
74145
+ if (!plan) {
74146
+ return 0;
74147
+ }
74148
+ const result = findReplace.applyFindReplacements(slides, plan.matches, plan.replacement);
74149
+ if (result.replacements === 0) {
74150
+ return 0;
74151
+ }
74152
+ host2.commit(result.slides, scope);
74153
+ apply6({ type: "replaced", plan, slides });
74154
+ slidesChanged();
74155
+ return result.replacements;
74156
+ };
74157
+ return {
74158
+ search: (change = {}) => {
74159
+ apply6({ type: "search", slides: host2.slides(), ...change });
74160
+ show();
74161
+ },
74162
+ setReplacement: (replacement) => {
74163
+ apply6({ type: "setReplacement", replacement });
74164
+ },
74165
+ next: () => step2(1),
74166
+ previous: () => step2(-1),
74167
+ replaceCurrent: () => replace("current"),
74168
+ replaceAll: () => replace("all"),
74169
+ slidesChanged,
74170
+ close: () => {
74171
+ apply6({ type: "close" });
74172
+ }
74173
+ };
74174
+ }
74175
+
73232
74176
  // src/pptx/web-components/mobile-bar-styles.ts
73233
74177
  var MOBILE_BAR_STYLES = `
73234
74178
  :host { display: block; flex: none; }
@@ -76416,13 +77360,13 @@ function chartSpaceFormatSource(space, options = {}) {
76416
77360
  labelOptions: labels
76417
77361
  };
76418
77362
  }
76419
- var chartFormatLocale = (value) => i18n.normalizeLocale(value, chunkOOQMIQT3_cjs.CHART_FORMAT_LOCALES, "en");
77363
+ var chartFormatLocale = (value) => i18n.normalizeLocale(value, chunkGWKTHP6U_cjs.CHART_FORMAT_LOCALES, "en");
76420
77364
  function chartFormatTranslator(locale, override) {
76421
- const strings = chunkOOQMIQT3_cjs.CHART_FORMAT_STRINGS[chartFormatLocale(locale)];
77365
+ const strings = chunkGWKTHP6U_cjs.CHART_FORMAT_STRINGS[chartFormatLocale(locale)];
76422
77366
  return (key, params, fallback) => {
76423
77367
  const own = override?.(key, params, fallback);
76424
77368
  if (own && own !== key) return own;
76425
- return strings[key] ?? chunkOOQMIQT3_cjs.CHART_FORMAT_STRINGS.en[key] ?? key;
77369
+ return strings[key] ?? chunkGWKTHP6U_cjs.CHART_FORMAT_STRINGS.en[key] ?? key;
76426
77370
  };
76427
77371
  }
76428
77372
 
@@ -79005,10 +79949,10 @@ var defineStatusBar = definer("office-ui-status-bar", () => OfficeUiStatusBar);
79005
79949
 
79006
79950
  // src/chrome/title-bar-types.ts
79007
79951
  var OFFICE_TITLE_BAR_SEARCH_LIMIT = 8;
79008
- function matchTitleBarCommands(search, query) {
79009
- if (search.match) return search.match(query);
79952
+ function matchTitleBarCommands(search2, query) {
79953
+ if (search2.match) return search2.match(query);
79010
79954
  const needle = query.trim().toLowerCase();
79011
- return (search.commands ?? []).filter((entry6) => entry6.label.toLowerCase().includes(needle));
79955
+ return (search2.commands ?? []).filter((entry6) => entry6.label.toLowerCase().includes(needle));
79012
79956
  }
79013
79957
 
79014
79958
  // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/chrome/title-bar.css?raw
@@ -79129,13 +80073,13 @@ var OfficeUiTitleBar = class extends OfficeElement {
79129
80073
  return this.searchField?.value ?? "";
79130
80074
  }
79131
80075
  openResults() {
79132
- const search = this.model.search;
80076
+ const search2 = this.model.search;
79133
80077
  const query = this.query;
79134
- if (!search || !query.trim()) return this.closeResults();
79135
- this.found = [...matchTitleBarCommands(search, query)].slice(0, OFFICE_TITLE_BAR_SEARCH_LIMIT);
80078
+ if (!search2 || !query.trim()) return this.closeResults();
80079
+ this.found = [...matchTitleBarCommands(search2, query)].slice(0, OFFICE_TITLE_BAR_SEARCH_LIMIT);
79136
80080
  this.active = Math.min(this.active, Math.max(this.found.length - 1, 0));
79137
80081
  this.resultsOpen = true;
79138
- this.live = this.found.length > 0 ? search.heading : search.empty;
80082
+ this.live = this.found.length > 0 ? search2.heading : search2.empty;
79139
80083
  }
79140
80084
  closeResults() {
79141
80085
  this.resultsOpen = false;
@@ -79169,8 +80113,8 @@ var OfficeUiTitleBar = class extends OfficeElement {
79169
80113
  const box = this.renderRoot.querySelector(".box");
79170
80114
  if (!next || !box?.contains(next)) this.closeResults();
79171
80115
  }
79172
- results(search) {
79173
- if (!search || !this.resultsOpen)
80116
+ results(search2) {
80117
+ if (!search2 || !this.resultsOpen)
79174
80118
  return lit.html`<div class="results" role="listbox" hidden></div>
79175
80119
  <div class="sr" role="status"></div>`;
79176
80120
  const query = this.query;
@@ -79180,7 +80124,7 @@ var OfficeUiTitleBar = class extends OfficeElement {
79180
80124
  };
79181
80125
  return lit.html`
79182
80126
  <div class="results" role="listbox" ?hidden=${!this.resultsOpen}>
79183
- ${this.found.length > 0 ? lit.html`<div class="heading">${search.heading}</div> ${this.found.map(
80127
+ ${this.found.length > 0 ? lit.html`<div class="heading">${search2.heading}</div> ${this.found.map(
79184
80128
  (entry6, index) => lit.html`<button
79185
80129
  type="button"
79186
80130
  role="option"
@@ -79191,14 +80135,14 @@ var OfficeUiTitleBar = class extends OfficeElement {
79191
80135
  ><span>${entry6.label}</span
79192
80136
  ><span class="cat">${entry6.category ?? ""}</span></button
79193
80137
  >`
79194
- )}` : lit.html`<div class="empty">${search.empty}</div>`}
79195
- ${search.content ? lit.html`<button
80138
+ )}` : lit.html`<div class="empty">${search2.empty}</div>`}
80139
+ ${search2.content ? lit.html`<button
79196
80140
  type="button"
79197
80141
  class="content"
79198
80142
  tabindex="-1"
79199
80143
  @mousedown=${(event) => pick(event, () => this.commit())}
79200
- >${glyph(search.contentIcon ?? "search", "icon")}<span
79201
- >${search.content(query)}</span
80144
+ >${glyph(search2.contentIcon ?? "search", "icon")}<span
80145
+ >${search2.content(query)}</span
79202
80146
  ></button
79203
80147
  >` : ""}
79204
80148
  </div>
@@ -79206,15 +80150,15 @@ var OfficeUiTitleBar = class extends OfficeElement {
79206
80150
  `;
79207
80151
  }
79208
80152
  searchBox() {
79209
- const search = this.model.search;
80153
+ const search2 = this.model.search;
79210
80154
  const tag = staticHtml_js.unsafeStatic(this.constructor.searchTag);
79211
- return lit.html`<span class="search" ?hidden=${!search}>
79212
- <div class="box" ?hidden=${!search} @focusout=${this.onSearchBlur}>
80155
+ return lit.html`<span class="search" ?hidden=${!search2}>
80156
+ <div class="box" ?hidden=${!search2} @focusout=${this.onSearchBlur}>
79213
80157
  ${staticHtml_js.html`<${tag}
79214
80158
  variant="titlebar"
79215
80159
  part="search"
79216
- placeholder=${ifDefined_js.ifDefined(search?.placeholder)}
79217
- aria-label=${ifDefined_js.ifDefined(search?.label)}
80160
+ placeholder=${ifDefined_js.ifDefined(search2?.placeholder)}
80161
+ aria-label=${ifDefined_js.ifDefined(search2?.label)}
79218
80162
  @input=${() => {
79219
80163
  this.active = 0;
79220
80164
  this.openResults();
@@ -79222,7 +80166,7 @@ var OfficeUiTitleBar = class extends OfficeElement {
79222
80166
  @focusin=${this.openResults}
79223
80167
  @keydown=${this.onSearchKey}
79224
80168
  ></${tag}>`}
79225
- ${this.results(search)}
80169
+ ${this.results(search2)}
79226
80170
  </div>
79227
80171
  </span>`;
79228
80172
  }
@@ -81517,7 +82461,7 @@ function definePptxInsertSmartArtDialog(registry2) {
81517
82461
  if (this.#live || this.#draw) {
81518
82462
  return;
81519
82463
  }
81520
- this.#live = import('./smartart-insert-preview-CTBWMXNX.cjs').then((module) => {
82464
+ this.#live = import('./smartart-insert-preview-MCDHVWHZ.cjs').then((module) => {
81521
82465
  if (this.#draw || !this.#picker) {
81522
82466
  return;
81523
82467
  }
@@ -83135,7 +84079,7 @@ function standardSwatches(spec5, state) {
83135
84079
  label: officeColorSwatchLabel(swatch, state.translate)
83136
84080
  }));
83137
84081
  }
83138
- const hexes = spec5.swatches === "shape" ? RIBBON_SHAPE_SWATCHES : HOME_HIGHLIGHT_PRESETS;
84082
+ const hexes = spec5.swatches === "shape" ? chunkCWWL7MCL_cjs.RIBBON_SHAPE_SWATCHES : HOME_HIGHLIGHT_PRESETS;
83139
84083
  return hexes.map((hex2) => {
83140
84084
  const english = spec5.swatchLabelPrefix ? `${spec5.swatchLabelPrefix} ${hex2}` : hex2;
83141
84085
  return {
@@ -86456,9 +87400,9 @@ function definePptxTitleBar(registry2) {
86456
87400
  this.dispatchEvent(new CustomEvent(name, { detail, bubbles: true, composed: true }));
86457
87401
  }
86458
87402
  rendered() {
86459
- const search = this.shadowRoot?.querySelector('[part="search"]');
86460
- search?.setAttribute("data-pptx-search-surface", "");
86461
- search?.setAttribute("data-pptx-search-input", "");
87403
+ const search2 = this.shadowRoot?.querySelector('[part="search"]');
87404
+ search2?.setAttribute("data-pptx-search-surface", "");
87405
+ search2?.setAttribute("data-pptx-search-input", "");
86462
87406
  const below = this.placement === "belowRibbon";
86463
87407
  this.toggleAttribute("data-pptx-title-bar", !below);
86464
87408
  if (below) {
@@ -87651,7 +88595,7 @@ function sanitizeSlideSvg(svg2, width, height) {
87651
88595
  if (!isSafeSvgMarkup(svg2)) {
87652
88596
  return "";
87653
88597
  }
87654
- const sanitized = chunkX4FNVH7J_cjs.sanitizeMarkupOrEmpty(svg2, { USE_PROFILES: { svg: true } }).trim();
88598
+ const sanitized = chunkYMITEJST_cjs.sanitizeMarkupOrEmpty(svg2, { USE_PROFILES: { svg: true } }).trim();
87655
88599
  if (!sanitized || sanitized.toLowerCase().startsWith("<svg")) {
87656
88600
  return sanitized;
87657
88601
  }
@@ -88164,6 +89108,119 @@ function openPrintWindow(htmlDocument) {
88164
89108
  return true;
88165
89109
  }
88166
89110
 
89111
+ // src/pptx/export/print-job.ts
89112
+ var PRINT_WHAT = ["slides", "handouts", "notes", "outline"];
89113
+ var SLIDE_RANGES = ["all", "current", "custom"];
89114
+ function printJobTitle(settings) {
89115
+ if (settings.printWhat === "notes") {
89116
+ return { key: "pptx.print.notesPages" };
89117
+ }
89118
+ if (settings.printWhat === "outline") {
89119
+ return { key: "pptx.print.outline" };
89120
+ }
89121
+ if (settings.printWhat === "handouts") {
89122
+ return { key: "pptx.print.handoutPerPageTitle", params: { count: settings.slidesPerPage } };
89123
+ }
89124
+ return { key: "pptx.sections.slides" };
89125
+ }
89126
+ function definedSettings(settings) {
89127
+ return Object.fromEntries(
89128
+ Object.entries(settings).filter(([, value]) => value !== void 0)
89129
+ );
89130
+ }
89131
+ function planPrintJob(settings, deck) {
89132
+ const slideCount = deck.slides.length;
89133
+ const validated = chunkYMITEJST_cjs.validatePrintSettings(definedSettings(settings), slideCount);
89134
+ if (!PRINT_WHAT.includes(validated.printWhat) || !SLIDE_RANGES.includes(validated.slideRange)) {
89135
+ return { ok: false, reason: "invalid-settings" };
89136
+ }
89137
+ const inDeck = chunkYMITEJST_cjs.computeSlideIndices(
89138
+ validated.slideRange,
89139
+ deck.activeSlideIndex,
89140
+ slideCount,
89141
+ validated.customRangeFrom,
89142
+ validated.customRangeTo
89143
+ ).filter((index) => Number.isInteger(index) && index >= 0 && index < slideCount);
89144
+ const slideIndices = chunkYMITEJST_cjs.filterHiddenSlideIndices(
89145
+ inDeck,
89146
+ deck.slides,
89147
+ deck.includeHiddenSlides ?? false
89148
+ );
89149
+ if (slideIndices.length === 0) {
89150
+ return { ok: false, reason: "empty-selection" };
89151
+ }
89152
+ let output = "raster";
89153
+ if (validated.printWhat === "outline") {
89154
+ output = "outline";
89155
+ } else if (validated.printWhat === "slides") {
89156
+ output = "vector";
89157
+ }
89158
+ return {
89159
+ ok: true,
89160
+ settings: validated,
89161
+ printWhat: validated.printWhat,
89162
+ slideIndices,
89163
+ output,
89164
+ openWindowFirst: output === "raster",
89165
+ orientation: validated.orientation,
89166
+ title: printJobTitle(validated)
89167
+ };
89168
+ }
89169
+ function printJobRasterFallback(plan) {
89170
+ if (plan.output !== "vector") {
89171
+ return plan;
89172
+ }
89173
+ return { ...plan, output: "raster", openWindowFirst: true };
89174
+ }
89175
+ function frameSlideSvg(svg2, width, height) {
89176
+ const end = svg2.lastIndexOf("</svg>");
89177
+ if (end < 0) {
89178
+ return svg2;
89179
+ }
89180
+ const frameWidth = Math.max(0, sanitizePixelDimension(width) - 2);
89181
+ const frameHeight = Math.max(0, sanitizePixelDimension(height) - 2);
89182
+ const frame = `<rect x="1" y="1" width="${frameWidth}" height="${frameHeight}" fill="none" stroke="#000" stroke-width="2" />`;
89183
+ return `${svg2.slice(0, end)}${frame}${svg2.slice(end)}`;
89184
+ }
89185
+ function buildOutlinePrintJobDocument(plan, title, slides) {
89186
+ const outline = chunkYMITEJST_cjs.buildOutlineHtml([...plan.slideIndices], slides);
89187
+ return chunkYMITEJST_cjs.buildPrintHtmlDocument({
89188
+ title,
89189
+ bodyHtml: `<div class="outline-page">${outline}</div>`,
89190
+ orientation: plan.orientation,
89191
+ colorFilter: chunkYMITEJST_cjs.computeColorFilter(plan.settings.colorMode),
89192
+ frameSlides: plan.settings.frameSlides,
89193
+ scaleToFit: plan.settings.scaleToFit ?? true
89194
+ });
89195
+ }
89196
+ function buildVectorPrintJobDocument(plan, title, svgs, size2) {
89197
+ const pages = plan.settings.frameSlides ? svgs.map((svg2) => frameSlideSvg(svg2, size2.width, size2.height)) : [...svgs];
89198
+ return buildPrintDocument(pages, size2.width, size2.height, {
89199
+ title,
89200
+ orientation: plan.orientation,
89201
+ colorFilter: chunkYMITEJST_cjs.computeColorFilter(plan.settings.colorMode),
89202
+ scaleToFit: plan.settings.scaleToFit ?? true
89203
+ });
89204
+ }
89205
+ function buildRasterPrintJobDocument(plan, title, captures, slides, handoutMaster) {
89206
+ const images = captures.map((capture) => capture.dataUrl);
89207
+ const indices = captures.map((capture) => capture.slideIndex);
89208
+ let bodyHtml = chunkYMITEJST_cjs.buildSlidesHtml(images, indices);
89209
+ if (plan.printWhat === "notes") {
89210
+ bodyHtml = chunkYMITEJST_cjs.buildNotesHtml(images, indices, slides);
89211
+ } else if (plan.printWhat === "handouts") {
89212
+ bodyHtml = chunkYMITEJST_cjs.buildHandoutsHtml(images, indices, plan.settings.slidesPerPage, handoutMaster);
89213
+ }
89214
+ return chunkYMITEJST_cjs.buildPrintHtmlDocument({
89215
+ title,
89216
+ bodyHtml,
89217
+ orientation: plan.orientation,
89218
+ colorFilter: chunkYMITEJST_cjs.computeColorFilter(plan.settings.colorMode),
89219
+ frameSlides: plan.settings.frameSlides,
89220
+ scaleToFit: plan.settings.scaleToFit ?? true
89221
+ });
89222
+ }
89223
+
88167
89224
  // src/pptx/export/png-crc32.ts
88168
89225
  var table;
88169
89226
  function getTable() {
@@ -89305,34 +90362,6 @@ Object.defineProperty(exports, "cloneXmlObject", {
89305
90362
  enumerable: true,
89306
90363
  get: function () { return clone.cloneXmlObject; }
89307
90364
  });
89308
- Object.defineProperty(exports, "formatCommentTimestamp", {
89309
- enumerable: true,
89310
- get: function () { return element.formatCommentTimestamp; }
89311
- });
89312
- Object.defineProperty(exports, "getCommentMarkerPosition", {
89313
- enumerable: true,
89314
- get: function () { return element.getCommentMarkerPosition; }
89315
- });
89316
- Object.defineProperty(exports, "getConnectionSitePosition", {
89317
- enumerable: true,
89318
- get: function () { return element.getConnectionSitePosition; }
89319
- });
89320
- Object.defineProperty(exports, "getElementLabel", {
89321
- enumerable: true,
89322
- get: function () { return element.getElementLabel; }
89323
- });
89324
- Object.defineProperty(exports, "isEditableTextElement", {
89325
- enumerable: true,
89326
- get: function () { return element.isEditableTextElement; }
89327
- });
89328
- Object.defineProperty(exports, "isTemplateElement", {
89329
- enumerable: true,
89330
- get: function () { return element.isTemplateElement; }
89331
- });
89332
- Object.defineProperty(exports, "isTemplateElementId", {
89333
- enumerable: true,
89334
- get: function () { return element.isTemplateElementId; }
89335
- });
89336
90365
  Object.defineProperty(exports, "CANVAS_SENTINEL", {
89337
90366
  enumerable: true,
89338
90367
  get: function () { return geometry.CANVAS_SENTINEL; }
@@ -89485,38 +90514,6 @@ Object.defineProperty(exports, "waypointsToPathData", {
89485
90514
  enumerable: true,
89486
90515
  get: function () { return geometry.waypointsToPathData; }
89487
90516
  });
89488
- Object.defineProperty(exports, "canDrillDown", {
89489
- enumerable: true,
89490
- get: function () { return elementLocks.canDrillDown; }
89491
- });
89492
- Object.defineProperty(exports, "canInteractWithElement", {
89493
- enumerable: true,
89494
- get: function () { return elementLocks.canInteractWithElement; }
89495
- });
89496
- Object.defineProperty(exports, "elementLockTogglePatch", {
89497
- enumerable: true,
89498
- get: function () { return elementLocks.elementLockTogglePatch; }
89499
- });
89500
- Object.defineProperty(exports, "filterInteractableIds", {
89501
- enumerable: true,
89502
- get: function () { return elementLocks.filterInteractableIds; }
89503
- });
89504
- Object.defineProperty(exports, "getElementLocks", {
89505
- enumerable: true,
89506
- get: function () { return elementLocks.getElementLocks; }
89507
- });
89508
- Object.defineProperty(exports, "isElementInteractionLocked", {
89509
- enumerable: true,
89510
- get: function () { return elementLocks.isElementInteractionLocked; }
89511
- });
89512
- Object.defineProperty(exports, "isElementLocked", {
89513
- enumerable: true,
89514
- get: function () { return elementLocks.isElementLocked; }
89515
- });
89516
- Object.defineProperty(exports, "resolveElementInteractivity", {
89517
- enumerable: true,
89518
- get: function () { return elementLocks.resolveElementInteractivity; }
89519
- });
89520
90517
  Object.defineProperty(exports, "groupElements", {
89521
90518
  enumerable: true,
89522
90519
  get: function () { return groupOps.groupElements; }
@@ -90121,10 +91118,6 @@ Object.defineProperty(exports, "recoverySnapshotIntent", {
90121
91118
  enumerable: true,
90122
91119
  get: function () { return deckSaveEncryption.recoverySnapshotIntent; }
90123
91120
  });
90124
- Object.defineProperty(exports, "saveDeckWithPassword", {
90125
- enumerable: true,
90126
- get: function () { return deckSaveEncryption.saveDeckWithPassword; }
90127
- });
90128
91121
  Object.defineProperty(exports, "applyTableStyleDelete", {
90129
91122
  enumerable: true,
90130
91123
  get: function () { return tableStyleMapEdits.applyTableStyleDelete; }
@@ -90372,6 +91365,7 @@ exports.DEFAULT_CHART_SHADOW = DEFAULT_CHART_SHADOW;
90372
91365
  exports.DEFAULT_COLOR_CHANGE_TOLERANCE = DEFAULT_COLOR_CHANGE_TOLERANCE;
90373
91366
  exports.DEFAULT_CURSOR_COLOR = DEFAULT_CURSOR_COLOR;
90374
91367
  exports.DEFAULT_DENSE_BUTTON_PX = DEFAULT_DENSE_BUTTON_PX;
91368
+ exports.DEFAULT_FIND_REPLACE_OPTIONS = DEFAULT_FIND_REPLACE_OPTIONS;
90375
91369
  exports.DEFAULT_INSERT_CHART_KIND = DEFAULT_INSERT_CHART_KIND;
90376
91370
  exports.DEFAULT_INSERT_CHART_TYPE = DEFAULT_INSERT_CHART_TYPE;
90377
91371
  exports.DEFAULT_LINE_HEIGHT = DEFAULT_LINE_HEIGHT;
@@ -90388,7 +91382,6 @@ exports.DEFAULT_ROUND_RECT_ADJUSTMENT = DEFAULT_ROUND_RECT_ADJUSTMENT;
90388
91382
  exports.DEFAULT_ROW_HEIGHT = DEFAULT_ROW_HEIGHT;
90389
91383
  exports.DEFAULT_SCHEME_COLOR_MAP = DEFAULT_SCHEME_COLOR_MAP;
90390
91384
  exports.DEFAULT_SLIDE_BACKGROUND = DEFAULT_SLIDE_BACKGROUND;
90391
- exports.DEFAULT_STROKE_WIDTH = DEFAULT_STROKE_WIDTH;
90392
91385
  exports.DEFAULT_TAG_COLLECTION_PATH = DEFAULT_TAG_COLLECTION_PATH;
90393
91386
  exports.DEFAULT_TRANSITION_DURATION_MS = DEFAULT_TRANSITION_DURATION_MS;
90394
91387
  exports.DEFAULT_VIEWER_OPTIONS = DEFAULT_VIEWER_OPTIONS;
@@ -90506,6 +91499,7 @@ exports.HOME_SELECT_ITEMS = HOME_SELECT_ITEMS;
90506
91499
  exports.HOME_SHAPE_ITEMS = HOME_SHAPE_ITEMS;
90507
91500
  exports.HOME_TEXT_DIRECTION_ITEMS = HOME_TEXT_DIRECTION_ITEMS;
90508
91501
  exports.INDENT_PX = INDENT_PX;
91502
+ exports.INITIAL_FIND_REPLACE_SESSION = INITIAL_FIND_REPLACE_SESSION;
90509
91503
  exports.INITIAL_READ_ONLY_SESSION = INITIAL_READ_ONLY_SESSION;
90510
91504
  exports.INITIAL_SYNC_GRACE_MS = INITIAL_SYNC_GRACE_MS;
90511
91505
  exports.INLINE_GALLERY_TILE_COUNT = INLINE_GALLERY_TILE_COUNT;
@@ -90717,7 +91711,6 @@ exports.RIBBON_HOME_INDENT_STEP = RIBBON_HOME_INDENT_STEP;
90717
91711
  exports.RIBBON_MENU_COMMAND_IDS = RIBBON_MENU_COMMAND_IDS;
90718
91712
  exports.RIBBON_RESERVED_TAB_IDS = RIBBON_RESERVED_TAB_IDS;
90719
91713
  exports.RIBBON_SCOPE_ATTR = RIBBON_SCOPE_ATTR;
90720
- exports.RIBBON_SHAPE_SWATCHES = RIBBON_SHAPE_SWATCHES;
90721
91714
  exports.RIBBON_TAB = RIBBON_TAB;
90722
91715
  exports.RIBBON_TAB_IDS = RIBBON_TAB_IDS;
90723
91716
  exports.RIBBON_TRANSITION_PRESETS = RIBBON_TRANSITION_PRESETS;
@@ -90804,6 +91797,7 @@ exports.TEXT_BOX_SECTION = TEXT_BOX_SECTION;
90804
91797
  exports.TEXT_BOX_SECTIONS = TEXT_BOX_SECTIONS;
90805
91798
  exports.TEXT_BUILD_ID_SEP = TEXT_BUILD_ID_SEP;
90806
91799
  exports.TEXT_DIRECTION_OPTIONS = TEXT_DIRECTION_OPTIONS;
91800
+ exports.TEXT_EFFECT_SECTIONS = TEXT_EFFECT_SECTIONS;
90807
91801
  exports.TEXT_WARP_PRESETS = TEXT_WARP_PRESETS;
90808
91802
  exports.TEXT_WRAP_OPTIONS = TEXT_WRAP_OPTIONS;
90809
91803
  exports.THREE_VIEW_EVENTS = THREE_VIEW_EVENTS;
@@ -90949,6 +91943,7 @@ exports.applyStyleToSelectedSegments = applyStyleToSelectedSegments;
90949
91943
  exports.applyTableCellFontWeight = applyTableCellFontWeight;
90950
91944
  exports.applyTableStylePreset = applyTableStylePreset;
90951
91945
  exports.applyTextStyleUpdate = applyTextStyleUpdate;
91946
+ exports.applyThemeByPath = applyThemeByPath;
90952
91947
  exports.applyTransitionSoundFile = applyTransitionSoundFile;
90953
91948
  exports.applyTransitionStockSound = applyTransitionStockSound;
90954
91949
  exports.applyUnderlineVariant = applyUnderlineVariant;
@@ -91093,6 +92088,7 @@ exports.buildOleObjectNamePatch = buildOleObjectNamePatch;
91093
92088
  exports.buildOpacityTavKeyframe = buildOpacityTavKeyframe;
91094
92089
  exports.buildOptionsBaseline = buildOptionsBaseline;
91095
92090
  exports.buildOutline = buildOutline;
92091
+ exports.buildOutlinePrintJobDocument = buildOutlinePrintJobDocument;
91096
92092
  exports.buildParagraphs = buildParagraphs;
91097
92093
  exports.buildPngChunk = buildPngChunk;
91098
92094
  exports.buildPptxOptionCategories = buildPptxOptionCategories;
@@ -91106,6 +92102,7 @@ exports.buildPrintStyleSheet = buildPrintStyleSheet;
91106
92102
  exports.buildQueryLinkUrl = buildQueryLinkUrl;
91107
92103
  exports.buildQuickStylesGallery = buildQuickStylesGallery;
91108
92104
  exports.buildRasterPictureElement = buildRasterPictureElement;
92105
+ exports.buildRasterPrintJobDocument = buildRasterPrintJobDocument;
91109
92106
  exports.buildRecordRibbon = buildRecordRibbon;
91110
92107
  exports.buildReviewRibbon = buildReviewRibbon;
91111
92108
  exports.buildRibbonGallery = buildRibbonGallery;
@@ -91161,6 +92158,7 @@ exports.buildTimeline = buildTimeline;
91161
92158
  exports.buildTitleBarState = buildTitleBarState;
91162
92159
  exports.buildTokenMorphAnimations = buildTokenMorphAnimations;
91163
92160
  exports.buildUserFontFaceStyles = buildUserFontFaceStyles;
92161
+ exports.buildVectorPrintJobDocument = buildVectorPrintJobDocument;
91164
92162
  exports.buildWarpPath = buildWarpPath;
91165
92163
  exports.buildWarpedGlyphOutlinePathD = buildWarpedGlyphOutlinePathD;
91166
92164
  exports.buildWrapperStyle = buildWrapperStyle;
@@ -91176,7 +92174,6 @@ exports.canCropElement = canCropElement;
91176
92174
  exports.canEditElementPoints = canEditElementPoints;
91177
92175
  exports.canGoNext = canGoNext;
91178
92176
  exports.canGoPrevious = canGoPrevious;
91179
- exports.canGroupSelection = canGroupSelection;
91180
92177
  exports.canJoinCollaborationSession = canJoinCollaborationSession;
91181
92178
  exports.canMergeShapes = canMergeShapes;
91182
92179
  exports.canRemoveTopLevelNode = canRemoveTopLevelNode;
@@ -91185,11 +92182,9 @@ exports.canRequestHome = canRequestHome;
91185
92182
  exports.canRequestInsert = canRequestInsert;
91186
92183
  exports.canRequestTransitions = canRequestTransitions;
91187
92184
  exports.canRequestView = canRequestView;
91188
- exports.canSetStrokeWidth = canSetStrokeWidth;
91189
92185
  exports.canStartBroadcast = canStartBroadcast;
91190
92186
  exports.canStartShare = canStartShare;
91191
92187
  exports.canSweepAutosaveSnapshots = canSweepAutosaveSnapshots;
91192
- exports.canUngroupSelection = canUngroupSelection;
91193
92188
  exports.canUseClipboard = canUseClipboard;
91194
92189
  exports.cancelBuildReveal = cancelBuildReveal;
91195
92190
  exports.cancelCropUpdate = cancelCropUpdate;
@@ -91296,6 +92291,7 @@ exports.commitElementUpdateBatch = commitElementUpdateBatch;
91296
92291
  exports.commitGalleryResult = commitGalleryResult;
91297
92292
  exports.commitSmartArtNodeFill = commitSmartArtNodeFill;
91298
92293
  exports.commitSmartArtNodeText = commitSmartArtNodeText;
92294
+ exports.commitsThroughDeckStyle = commitsThroughDeckStyle;
91299
92295
  exports.comparePresentation = comparePresentation;
91300
92296
  exports.compareSlide = compareSlide;
91301
92297
  exports.compareSlides = compareSlides;
@@ -91397,6 +92393,8 @@ exports.createGuide = createGuide;
91397
92393
  exports.createInitialPresentationSnapshot = createInitialPresentationSnapshot;
91398
92394
  exports.createInlineListModelObserver = createInlineListModelObserver;
91399
92395
  exports.createInlineListSeed = createInlineListSeed;
92396
+ exports.createInspectorColorFields = createInspectorColorFields;
92397
+ exports.createLiveColorInput = createLiveColorInput;
91400
92398
  exports.createPlainNotesSegments = createPlainNotesSegments;
91401
92399
  exports.createPresenceProjector = createPresenceProjector;
91402
92400
  exports.createPresencePublisher = createPresencePublisher;
@@ -91430,6 +92428,7 @@ exports.cropResetState = cropResetState;
91430
92428
  exports.cropSessionChanged = cropSessionChanged;
91431
92429
  exports.cropToAspectRatio = cropToAspectRatio;
91432
92430
  exports.cropUpdateFromRects = cropUpdateFromRects;
92431
+ exports.crossedHistoryTheme = crossedHistoryTheme;
91433
92432
  exports.cssCdata = cssCdata;
91434
92433
  exports.cssEasingForAccelDecel = cssEasingForAccelDecel;
91435
92434
  exports.cssEasingForTimingCurve = cssEasingForTimingCurve;
@@ -91595,6 +92594,9 @@ exports.findMediaEndGatedSteps = findMediaEndGatedSteps;
91595
92594
  exports.findMetricCompatibleGoogleFontsFamily = findMetricCompatibleGoogleFontsFamily;
91596
92595
  exports.findOutlineRow = findOutlineRow;
91597
92596
  exports.findPresentationActionTarget = findPresentationActionTarget;
92597
+ exports.findReplaceSessionActions = findReplaceSessionActions;
92598
+ exports.findReplaceStatus = findReplaceStatus;
92599
+ exports.findReplaceTarget = findReplaceTarget;
91598
92600
  exports.findRibbonAddIn = findRibbonAddIn;
91599
92601
  exports.findSlideStage = findSlideStage;
91600
92602
  exports.findSmartArtNodeText = findSmartArtNodeText;
@@ -91621,6 +92623,7 @@ exports.fontWeightAttribute = fontWeightAttribute;
91621
92623
  exports.fontWeightShorthand = fontWeightShorthand;
91622
92624
  exports.foreignObjectSvgToDataUrl = foreignObjectSvgToDataUrl;
91623
92625
  exports.forgetSessionDeck = forgetSessionDeck;
92626
+ exports.forgetStepsUsingRemovedParts = forgetStepsUsingRemovedParts;
91624
92627
  exports.formatAdvanceAfterText = formatAdvanceAfterText;
91625
92628
  exports.formatBackstageDate = formatBackstageDate;
91626
92629
  exports.formatBackstageSize = formatBackstageSize;
@@ -91637,6 +92640,7 @@ exports.formatSnapshotSize = formatSnapshotSize;
91637
92640
  exports.formatTime = formatTime;
91638
92641
  exports.formatVersionTimestamp = formatVersionTimestamp;
91639
92642
  exports.fractionalClientSize = fractionalClientSize;
92643
+ exports.frameSlideSvg = frameSlideSvg;
91640
92644
  exports.freeformCloseTolerance = freeformCloseTolerance;
91641
92645
  exports.galleryDeckView = galleryDeckView;
91642
92646
  exports.galleryHasItems = galleryHasItems;
@@ -91835,8 +92839,10 @@ exports.groupElementParagraphs = groupElementParagraphs;
91835
92839
  exports.groupIntoParagraphs = groupIntoParagraphs;
91836
92840
  exports.groupIssuesBySeverity = groupIssuesBySeverity;
91837
92841
  exports.groupParagraphsByBuildLevel = groupParagraphsByBuildLevel;
92842
+ exports.groupShortcutReference = groupShortcutReference;
91838
92843
  exports.groupTilesByRow = groupTilesByRow;
91839
92844
  exports.handleEditorAnchorClick = handleEditorAnchorClick;
92845
+ exports.handleLiveColorEvent = handleLiveColorEvent;
91840
92846
  exports.handlePresentationStageClick = handlePresentationStageClick;
91841
92847
  exports.handleReadingViewKey = handleReadingViewKey;
91842
92848
  exports.handleThreeViewChartEvent = handleThreeViewChartEvent;
@@ -91864,6 +92870,8 @@ exports.hexToRgb = hexToRgb;
91864
92870
  exports.hiddenSlideCue = hiddenSlideCue;
91865
92871
  exports.hiddenSlideLabelId = hiddenSlideLabelId;
91866
92872
  exports.hideChartSeries = hideChartSeries;
92873
+ exports.historyStepUsesParts = historyStepUsesParts;
92874
+ exports.historyTheme = historyTheme;
91867
92875
  exports.hollowTextFillStyle = hollowTextFillStyle;
91868
92876
  exports.homeColourState = homeColourState;
91869
92877
  exports.homeControlKey = homeControlKey;
@@ -91902,6 +92910,7 @@ exports.insertControlStatus = insertControlStatus;
91902
92910
  exports.insertEntryEnabled = insertEntryEnabled;
91903
92911
  exports.insertHyperlinkAtSelection = insertHyperlinkAtSelection;
91904
92912
  exports.insertLabel = insertLabel;
92913
+ exports.insertedLayoutCompletion = insertedLayoutCompletion;
91905
92914
  exports.inspectorFieldPatch = inspectorFieldPatch;
91906
92915
  exports.inspectorNumber = inspectorNumber;
91907
92916
  exports.inspectorTogglePatch = inspectorTogglePatch;
@@ -92022,6 +93031,7 @@ exports.listenForOutlineViewDismiss = listenForOutlineViewDismiss;
92022
93031
  exports.loadAudienceContent = loadAudienceContent;
92023
93032
  exports.loadPresentationDeck = loadPresentationDeck;
92024
93033
  exports.loadSessionDeck = loadSessionDeck;
93034
+ exports.loadedThemeName = loadedThemeName;
92025
93035
  exports.lockResizeAspect = lockResizeAspect;
92026
93036
  exports.makeCloneId = makeCloneId;
92027
93037
  exports.mapAwarenessCursors = mapAwarenessCursors;
@@ -92138,6 +93148,7 @@ exports.nextShowSlideIndex = nextShowSlideIndex;
92138
93148
  exports.normalizeAccelDecel = normalizeAccelDecel;
92139
93149
  exports.normalizeArrow = normalizeArrow;
92140
93150
  exports.normalizeFontFormat = normalizeFontFormat;
93151
+ exports.normalizeGoogleFontsBaseUrl = normalizeGoogleFontsBaseUrl;
92141
93152
  exports.normalizeNotesLinkUrl = normalizeNotesLinkUrl;
92142
93153
  exports.normalizeOutlinePair = normalizeOutlinePair;
92143
93154
  exports.normalizeRegion = normalizeRegion;
@@ -92234,8 +93245,10 @@ exports.placeCaretAt = placeCaretAt;
92234
93245
  exports.placeCaretAtEnd = placeCaretAtEnd;
92235
93246
  exports.placeTileOnPage = placeTileOnPage;
92236
93247
  exports.placeholderPromptDescriptor = placeholderPromptDescriptor;
93248
+ exports.planFindReplace = planFindReplace;
92237
93249
  exports.planGifFrames = planGifFrames;
92238
93250
  exports.planMergeShapes = planMergeShapes;
93251
+ exports.planPrintJob = planPrintJob;
92239
93252
  exports.playAnimationRibbonPreview = playAnimationRibbonPreview;
92240
93253
  exports.playFeedbackSound = playFeedbackSound;
92241
93254
  exports.playGroup = playGroup;
@@ -92275,6 +93288,7 @@ exports.presenterTimerProgress = presenterTimerProgress;
92275
93288
  exports.previewGalleryResult = previewGalleryResult;
92276
93289
  exports.previousShowSlideIndex = previousShowSlideIndex;
92277
93290
  exports.primaryMasterViewPart = primaryMasterViewPart;
93291
+ exports.printJobRasterFallback = printJobRasterFallback;
92278
93292
  exports.probeAutosaveRecovery = probeAutosaveRecovery;
92279
93293
  exports.probeMaxCanvasDimension = probeMaxCanvasDimension;
92280
93294
  exports.probeNativeImageSize = probeNativeImageSize;
@@ -92289,6 +93303,7 @@ exports.pushRecentColor = pushRecentColor;
92289
93303
  exports.pushRecentShape = pushRecentShape;
92290
93304
  exports.px = px2;
92291
93305
  exports.quadToCubicControls = quadToCubicControls;
93306
+ exports.queueThemeWrite = queueThemeWrite;
92292
93307
  exports.quickStyleShapeStyle = quickStyleShapeStyle;
92293
93308
  exports.quickStyleSwatchCss = quickStyleSwatchCss;
92294
93309
  exports.quickStyleSwatchStyleAttr = quickStyleSwatchStyleAttr;
@@ -92338,6 +93353,7 @@ exports.recordTableCellBold = recordTableCellBold;
92338
93353
  exports.redirectExitShapeByDirection = redirectExitShapeByDirection;
92339
93354
  exports.redirectMaskEffectByFilterSubtype = redirectMaskEffectByFilterSubtype;
92340
93355
  exports.redistributeColumnWidth = redistributeColumnWidth;
93356
+ exports.reduceFindReplaceSession = reduceFindReplaceSession;
92341
93357
  exports.reduceReadOnlySession = reduceReadOnlySession;
92342
93358
  exports.reduceViewerZoom = reduceViewerZoom;
92343
93359
  exports.reflectionStateOf = reflectionStateOf;
@@ -92360,6 +93376,7 @@ exports.removeEmptyNode = removeEmptyNode;
92360
93376
  exports.removeGradientStopPatch = removeGradientStopPatch;
92361
93377
  exports.removeGuide = removeGuide;
92362
93378
  exports.removeQuickAccessCommand = removeQuickAccessCommand;
93379
+ exports.removedSlideMasterParts = removedSlideMasterParts;
92363
93380
  exports.renderSparklineSvg = renderSparklineSvg;
92364
93381
  exports.renderedImageCorrections = renderedImageCorrections;
92365
93382
  exports.reorder = reorder;
@@ -92376,7 +93393,6 @@ exports.resetGlyphTraceCache = resetGlyphTraceCache;
92376
93393
  exports.resetGoogleWebfontSessionCache = resetGoogleWebfontSessionCache;
92377
93394
  exports.resetMetricTrackingCache = resetMetricTrackingCache;
92378
93395
  exports.resetPresenterTimer = resetPresenterTimer;
92379
- exports.resetSlideLayoutPath = resetSlideLayoutPath;
92380
93396
  exports.resizeSelection = resizeSelection;
92381
93397
  exports.resolve3DRenderingFlags = resolve3DRenderingFlags;
92382
93398
  exports.resolveAccentHex = resolveAccentHex;
@@ -92439,6 +93455,7 @@ exports.resolveFontRefIdx = resolveFontRefIdx;
92439
93455
  exports.resolveFontVariant = resolveFontVariant;
92440
93456
  exports.resolveFontWeight = resolveFontWeight;
92441
93457
  exports.resolveForwardSlideWithZoomReturn = resolveForwardSlideWithZoomReturn;
93458
+ exports.resolveGoogleFontsCss2Base = resolveGoogleFontsCss2Base;
92442
93459
  exports.resolveGoogleFontsFace = resolveGoogleFontsFace;
92443
93460
  exports.resolveGoogleWebfontHref = resolveGoogleWebfontHref;
92444
93461
  exports.resolveGroupChildFill = resolveGroupChildFill;
@@ -92544,6 +93561,7 @@ exports.resolveVisibleRibbonTabs = resolveVisibleRibbonTabs;
92544
93561
  exports.resolveWheelSpokeCount = resolveWheelSpokeCount;
92545
93562
  exports.resolveZoomExcursionEndIndex = resolveZoomExcursionEndIndex;
92546
93563
  exports.resolveZoomNavigationTarget = resolveZoomNavigationTarget;
93564
+ exports.restoreCrossedTheme = restoreCrossedTheme;
92547
93565
  exports.restoreEditorKeyboardFocus = restoreEditorKeyboardFocus;
92548
93566
  exports.restoreFilteredSeries = restoreFilteredSeries;
92549
93567
  exports.restoreInlineListBodySelection = restoreInlineListBodySelection;
@@ -92603,6 +93621,7 @@ exports.sanitizePresence = sanitizePresence;
92603
93621
  exports.sanitizeSlideIndex = sanitizeSlideIndex;
92604
93622
  exports.sanitizeUserName = sanitizeUserName;
92605
93623
  exports.saveAutosaveSnapshot = saveAutosaveSnapshot;
93624
+ exports.saveDeckWithPassword = saveDeckWithPassword;
92606
93625
  exports.saveElementAsPicture = saveElementAsPicture;
92607
93626
  exports.saveFailureMessage = saveFailureMessage;
92608
93627
  exports.saveViewerProfile = saveViewerProfile;
@@ -92652,11 +93671,10 @@ exports.setPendingCaretPoint = setPendingCaretPoint;
92652
93671
  exports.setPendingSelectionRestore = setPendingSelectionRestore;
92653
93672
  exports.setSelectionBullets = setSelectionBullets;
92654
93673
  exports.setTriggerBookmark = setTriggerBookmark;
92655
- exports.shapeFillChange = shapeFillChange;
93674
+ exports.settleThemeWrites = settleThemeWrites;
92656
93675
  exports.shapeGalleryItem = shapeGalleryItem;
92657
93676
  exports.shapeGalleryItemForValue = shapeGalleryItemForValue;
92658
93677
  exports.shapeGallerySections = shapeGallerySections;
92659
- exports.shapeOutlineChange = shapeOutlineChange;
92660
93678
  exports.shapeQuickStyleLabel = shapeQuickStyleLabel;
92661
93679
  exports.shapeQuickStylePatch = shapeQuickStylePatch;
92662
93680
  exports.shapeStyleWithoutFormatting = shapeStyleWithoutFormatting;
@@ -92752,7 +93770,6 @@ exports.strokeMiterLimit = strokeMiterLimit;
92752
93770
  exports.strokeOnlyPresetPathData = strokeOnlyPresetPathData;
92753
93771
  exports.strokeOutlineViewBox = strokeOutlineViewBox;
92754
93772
  exports.strokeToInkElement = strokeToInkElement;
92755
- exports.strokeWidthOf = strokeWidthOf;
92756
93773
  exports.styleShadowFilter = styleShadowFilter;
92757
93774
  exports.substituteFieldText = substituteFieldText;
92758
93775
  exports.subtitleLanguageLabel = subtitleLanguageLabel;
@@ -92803,6 +93820,7 @@ exports.textWrapOf = textWrapOf;
92803
93820
  exports.textWrapPatch = textWrapPatch;
92804
93821
  exports.themeColorGridCommit = themeColorGridCommit;
92805
93822
  exports.themeColorGridView = themeColorGridView;
93823
+ exports.themePartWrites = themePartWrites;
92806
93824
  exports.themeShapeStyleXml = themeShapeStyleXml;
92807
93825
  exports.threeViewStateOf = threeViewStateOf;
92808
93826
  exports.tileRectToSourceRect = tileRectToSourceRect;
@@ -92874,6 +93892,8 @@ exports.withChartUserShapeRowRotationUpdated = withChartUserShapeRowRotationUpda
92874
93892
  exports.withChartUserShapeRowTextUpdated = withChartUserShapeRowTextUpdated;
92875
93893
  exports.withChartUserShapeRowUpdated = withChartUserShapeRowUpdated;
92876
93894
  exports.withConnectorEndpointUpdate = withConnectorEndpointUpdate;
93895
+ exports.withHistoryMasterThemes = withHistoryMasterThemes;
93896
+ exports.withHistoryTheme = withHistoryTheme;
92877
93897
  exports.withHomeGalleries = withHomeGalleries;
92878
93898
  exports.withInlineListDecorationDefaults = withInlineListDecorationDefaults;
92879
93899
  exports.withNodeAtPath = withNodeAtPath;
@@ -92885,6 +93905,7 @@ exports.wrapNotesText = wrapNotesText;
92885
93905
  exports.writeBackReport = writeBackReport;
92886
93906
  exports.writeElementParagraphs = writeElementParagraphs;
92887
93907
  exports.writeStoredViewerPrefs = writeStoredViewerPrefs;
93908
+ exports.writeThemeParts = writeThemeParts;
92888
93909
  exports.zeroDelayCssAnimation = zeroDelayCssAnimation;
92889
93910
  exports.zoomInPercent = zoomInPercent;
92890
93911
  exports.zoomInScale = zoomInScale;