pptx-react-viewer 4.19.0 → 4.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/dist/{AiChatPanel-6ABOTMI4.js → AiChatPanel-3SIQQCI5.js} +27 -27
  3. package/dist/AiChatPanel-3SIQQCI5.js.br +0 -0
  4. package/dist/AiChatPanel-3SIQQCI5.js.gz +0 -0
  5. package/dist/{AiChatPanel-QEOFQGNY.mjs → AiChatPanel-GBKB26LM.mjs} +3 -3
  6. package/dist/AiChatPanel-GBKB26LM.mjs.br +0 -0
  7. package/dist/AiChatPanel-GBKB26LM.mjs.gz +0 -0
  8. package/dist/{Model3DScene-CKBO4RI2.mjs → Model3DScene-MKHAUUHQ.mjs} +1 -1
  9. package/dist/Model3DScene-MKHAUUHQ.mjs.br +0 -0
  10. package/dist/Model3DScene-MKHAUUHQ.mjs.gz +0 -0
  11. package/dist/{Model3DScene-ESGCOB2O.js → Model3DScene-NN27BONQ.js} +2 -2
  12. package/dist/Model3DScene-NN27BONQ.js.br +0 -0
  13. package/dist/Model3DScene-NN27BONQ.js.gz +0 -0
  14. package/dist/{chunk-FNO4C3LU.js → chunk-2GK65XF6.js} +821 -821
  15. package/dist/chunk-2GK65XF6.js.br +0 -0
  16. package/dist/chunk-2GK65XF6.js.gz +0 -0
  17. package/dist/{chunk-QSBL4SL6.js → chunk-2TASAHPC.js} +1229 -1203
  18. package/dist/chunk-2TASAHPC.js.br +0 -0
  19. package/dist/chunk-2TASAHPC.js.gz +0 -0
  20. package/dist/{chunk-WAUDRNBY.js → chunk-63VPDT3H.js} +187 -187
  21. package/dist/chunk-63VPDT3H.js.br +0 -0
  22. package/dist/chunk-63VPDT3H.js.gz +0 -0
  23. package/dist/{chunk-E3TLDJPS.js → chunk-B7VFDY5Z.js} +975 -493
  24. package/dist/chunk-B7VFDY5Z.js.br +0 -0
  25. package/dist/chunk-B7VFDY5Z.js.gz +0 -0
  26. package/dist/{chunk-LE3JUNIR.mjs → chunk-EYBZSFNK.mjs} +1 -1
  27. package/dist/chunk-EYBZSFNK.mjs.br +0 -0
  28. package/dist/chunk-EYBZSFNK.mjs.gz +0 -0
  29. package/dist/{chunk-YL7IPY2B.mjs → chunk-IXVT2EV2.mjs} +137 -111
  30. package/dist/chunk-IXVT2EV2.mjs.br +0 -0
  31. package/dist/chunk-IXVT2EV2.mjs.gz +0 -0
  32. package/dist/{chunk-YYVPC6KI.mjs → chunk-MEVOWZCB.mjs} +974 -494
  33. package/dist/chunk-MEVOWZCB.mjs.br +0 -0
  34. package/dist/chunk-MEVOWZCB.mjs.gz +0 -0
  35. package/dist/{chunk-H7FXW2Q3.js → chunk-P6YP7XYO.js} +5 -5
  36. package/dist/chunk-P6YP7XYO.js.br +0 -0
  37. package/dist/chunk-P6YP7XYO.js.gz +0 -0
  38. package/dist/{chunk-VX52VUBD.mjs → chunk-QDMBU7AS.mjs} +1 -1
  39. package/dist/chunk-QDMBU7AS.mjs.br +0 -0
  40. package/dist/chunk-QDMBU7AS.mjs.gz +0 -0
  41. package/dist/{chunk-OCUCBRXU.mjs → chunk-QZLRYVNR.mjs} +3 -3
  42. package/dist/chunk-QZLRYVNR.mjs.br +0 -0
  43. package/dist/chunk-QZLRYVNR.mjs.gz +0 -0
  44. package/dist/index.js +61 -61
  45. package/dist/index.js.br +0 -0
  46. package/dist/index.js.gz +0 -0
  47. package/dist/index.mjs +5 -5
  48. package/dist/index.mjs.br +0 -0
  49. package/dist/index.mjs.gz +0 -0
  50. package/dist/internals.js +104 -104
  51. package/dist/internals.js.br +0 -0
  52. package/dist/internals.js.gz +0 -0
  53. package/dist/internals.mjs +3 -3
  54. package/dist/internals.mjs.br +0 -0
  55. package/dist/internals.mjs.gz +0 -0
  56. package/dist/viewer/index.js +26 -26
  57. package/dist/viewer/index.js.br +0 -0
  58. package/dist/viewer/index.js.gz +0 -0
  59. package/dist/viewer/index.mjs +5 -5
  60. package/dist/viewer/index.mjs.br +3 -1
  61. package/dist/viewer/index.mjs.gz +0 -0
  62. package/package.json +2 -2
  63. package/dist/AiChatPanel-6ABOTMI4.js.br +0 -0
  64. package/dist/AiChatPanel-6ABOTMI4.js.gz +0 -0
  65. package/dist/AiChatPanel-QEOFQGNY.mjs.br +0 -0
  66. package/dist/AiChatPanel-QEOFQGNY.mjs.gz +0 -0
  67. package/dist/Model3DScene-CKBO4RI2.mjs.br +0 -0
  68. package/dist/Model3DScene-CKBO4RI2.mjs.gz +0 -0
  69. package/dist/Model3DScene-ESGCOB2O.js.br +0 -0
  70. package/dist/Model3DScene-ESGCOB2O.js.gz +0 -0
  71. package/dist/chunk-E3TLDJPS.js.br +0 -0
  72. package/dist/chunk-E3TLDJPS.js.gz +0 -0
  73. package/dist/chunk-FNO4C3LU.js.br +0 -0
  74. package/dist/chunk-FNO4C3LU.js.gz +0 -0
  75. package/dist/chunk-H7FXW2Q3.js.br +0 -0
  76. package/dist/chunk-H7FXW2Q3.js.gz +0 -0
  77. package/dist/chunk-LE3JUNIR.mjs.br +0 -0
  78. package/dist/chunk-LE3JUNIR.mjs.gz +0 -0
  79. package/dist/chunk-OCUCBRXU.mjs.br +0 -0
  80. package/dist/chunk-OCUCBRXU.mjs.gz +0 -0
  81. package/dist/chunk-QSBL4SL6.js.br +0 -0
  82. package/dist/chunk-QSBL4SL6.js.gz +0 -0
  83. package/dist/chunk-VX52VUBD.mjs.br +0 -0
  84. package/dist/chunk-VX52VUBD.mjs.gz +0 -0
  85. package/dist/chunk-WAUDRNBY.js.br +0 -0
  86. package/dist/chunk-WAUDRNBY.js.gz +0 -0
  87. package/dist/chunk-YL7IPY2B.mjs.br +0 -0
  88. package/dist/chunk-YL7IPY2B.mjs.gz +0 -0
  89. package/dist/chunk-YYVPC6KI.mjs.br +0 -0
  90. package/dist/chunk-YYVPC6KI.mjs.gz +0 -0
@@ -32661,11 +32661,11 @@ var init_raster_canvas = __esm({
32661
32661
  };
32662
32662
  }
32663
32663
  });
32664
- function drawGlyph(canvas, glyph, ox, oy, size) {
32665
- const color2 = GLYPH_COLORS[glyph];
32664
+ function drawGlyph(canvas, glyph2, ox, oy, size) {
32665
+ const color2 = GLYPH_COLORS[glyph2];
32666
32666
  canvas.fillRect(ox, oy, size, size, color2);
32667
32667
  const inset2 = size * 0.12;
32668
- switch (glyph) {
32668
+ switch (glyph2) {
32669
32669
  case "excel": {
32670
32670
  for (let i2 = 1; i2 < 3; i2++) {
32671
32671
  canvas.drawLine(ox, oy + size * i2 / 3, ox + size, oy + size * i2 / 3, WHITE, 1);
@@ -32700,13 +32700,13 @@ function drawGlyph(canvas, glyph, ox, oy, size) {
32700
32700
  function renderOleIconPng(options = {}) {
32701
32701
  const width = options.width ?? 128;
32702
32702
  const height = options.height ?? 96;
32703
- const glyph = options.glyph ?? "unknown";
32703
+ const glyph2 = options.glyph ?? "unknown";
32704
32704
  const caption = (options.caption ?? "").trim();
32705
32705
  const canvas = new RasterCanvas(width, height, rgb(255, 255, 255, 0));
32706
32706
  const glyphSize = Math.min(width * 0.5, height * 0.55);
32707
32707
  const glyphX = (width - glyphSize) / 2;
32708
32708
  const glyphY = height * 0.08;
32709
- drawGlyph(canvas, glyph, glyphX, glyphY, glyphSize);
32709
+ drawGlyph(canvas, glyph2, glyphX, glyphY, glyphSize);
32710
32710
  if (caption.length > 0) {
32711
32711
  const scale2 = Math.max(1, Math.floor(width / 64));
32712
32712
  const maxTextWidth = width - 8;
@@ -36277,11 +36277,11 @@ function placeTwoColumns(shapes, centre, top, gap, sp) {
36277
36277
  const rects = [];
36278
36278
  let bottom = top;
36279
36279
  for (const side2 of [0, 1]) {
36280
- const column = shapes.filter((_, i2) => i2 % 2 === side2);
36281
- const width = Math.max(0, ...column.map((shape) => boundsOf(shape.rects).w));
36280
+ const column2 = shapes.filter((_, i2) => i2 % 2 === side2);
36281
+ const width = Math.max(0, ...column2.map((shape) => boundsOf(shape.rects).w));
36282
36282
  const left = side2 === 0 ? centre - gap / 2 - width : centre + gap / 2;
36283
36283
  let y = top;
36284
- for (const shape of column) {
36284
+ for (const shape of column2) {
36285
36285
  const bounds = boundsOf(shape.rects);
36286
36286
  rects.push(...shiftShape(shape, left - bounds.x, y - bounds.y).rects);
36287
36287
  y += bounds.h + sp;
@@ -75593,12 +75593,12 @@ var init_PptxTableDataParser = __esm({
75593
75593
  const gridColumns = this.context.ensureArray(
75594
75594
  tableNode["a:tblGrid"]?.["a:gridCol"]
75595
75595
  );
75596
- const totalWidthEmu = gridColumns.reduce((sum, column) => {
75597
- const width = parseInt(String(column?.["@_w"] || "0"), 10) || 0;
75596
+ const totalWidthEmu = gridColumns.reduce((sum, column2) => {
75597
+ const width = parseInt(String(column2?.["@_w"] || "0"), 10) || 0;
75598
75598
  return sum + width;
75599
75599
  }, 0);
75600
- const columnWidths = totalWidthEmu > 0 ? gridColumns.map((column) => {
75601
- const width = parseInt(String(column?.["@_w"] || "0"), 10) || 0;
75600
+ const columnWidths = totalWidthEmu > 0 ? gridColumns.map((column2) => {
75601
+ const width = parseInt(String(column2?.["@_w"] || "0"), 10) || 0;
75602
75602
  return width / totalWidthEmu;
75603
75603
  }) : gridColumns.map(() => 1 / Math.max(gridColumns.length, 1));
75604
75604
  const tableProperties = tableNode["a:tblPr"] || {};
@@ -76487,7 +76487,7 @@ function getTableGridExtent(graphicData) {
76487
76487
  const grid = table2["a:tblGrid"];
76488
76488
  const widthEmu = ensureArrayLike3(
76489
76489
  grid?.["a:gridCol"]
76490
- ).reduce((sum, column) => sum + readPositiveInteger(column?.["@_w"]), 0);
76490
+ ).reduce((sum, column2) => sum + readPositiveInteger(column2?.["@_w"]), 0);
76491
76491
  const heightEmu = ensureArrayLike3(table2["a:tr"]).reduce(
76492
76492
  (sum, row) => sum + readPositiveInteger(row?.["@_h"]),
76493
76493
  0
@@ -128566,8 +128566,8 @@ function writeTableColumnWidths(tbl, columnWidths) {
128566
128566
  if (!columns.length || columns.length !== columnWidths.length) {
128567
128567
  return;
128568
128568
  }
128569
- const existingWidths = columns.map((column) => {
128570
- const value = column["@_w"];
128569
+ const existingWidths = columns.map((column2) => {
128570
+ const value = column2["@_w"];
128571
128571
  return typeof value === "number" || typeof value === "string" && value.trim() !== "" ? Number(value) : NaN;
128572
128572
  });
128573
128573
  if (existingWidths.some((width) => !Number.isSafeInteger(width) || width < 0)) {
@@ -128959,11 +128959,11 @@ function applyTableStructureEditXml(table2, source, next, edit) {
128959
128959
  const removedCells = cells(rows[index]);
128960
128960
  const nextCells = rows[index + 1] ? cells(rows[index + 1]) : [];
128961
128961
  removedCells.forEach(
128962
- (removed, column) => promoteTextBody(
128963
- source?.rows[index]?.cells[column],
128964
- next.rows[index]?.cells[column],
128962
+ (removed, column2) => promoteTextBody(
128963
+ source?.rows[index]?.cells[column2],
128964
+ next.rows[index]?.cells[column2],
128965
128965
  removed,
128966
- nextCells[column],
128966
+ nextCells[column2],
128967
128967
  axis
128968
128968
  )
128969
128969
  );
@@ -167043,13 +167043,13 @@ ${htmlRows.join("\n")}
167043
167043
  escapeHtml(text23) {
167044
167044
  return text23.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
167045
167045
  }
167046
- markOccupied(occupancy, row, column) {
167046
+ markOccupied(occupancy, row, column2) {
167047
167047
  const set2 = occupancy.get(row) ?? /* @__PURE__ */ new Set();
167048
- set2.add(column);
167048
+ set2.add(column2);
167049
167049
  occupancy.set(row, set2);
167050
167050
  }
167051
- isOccupied(occupancy, row, column) {
167052
- return occupancy.get(row)?.has(column) ?? false;
167051
+ isOccupied(occupancy, row, column2) {
167052
+ return occupancy.get(row)?.has(column2) ?? false;
167053
167053
  }
167054
167054
  /**
167055
167055
  * Returns true if the table can be rendered as a simple markdown table
@@ -174822,31 +174822,31 @@ var init_chart_horizontal_axis = __esm2({
174822
174822
  init_chart_view_model();
174823
174823
  }
174824
174824
  });
174825
- function estimatedGlyphAdvanceRatio(glyph) {
174826
- if (/\p{Mark}/u.test(glyph)) {
174825
+ function estimatedGlyphAdvanceRatio(glyph2) {
174826
+ if (/\p{Mark}/u.test(glyph2)) {
174827
174827
  return 0;
174828
174828
  }
174829
- if (/\s/u.test(glyph)) {
174829
+ if (/\s/u.test(glyph2)) {
174830
174830
  return 0.33;
174831
174831
  }
174832
174832
  if (/[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Extended_Pictographic}]/u.test(
174833
- glyph
174833
+ glyph2
174834
174834
  )) {
174835
174835
  return 1;
174836
174836
  }
174837
- if (/[A-Z]/u.test(glyph)) {
174837
+ if (/[A-Z]/u.test(glyph2)) {
174838
174838
  return 0.65;
174839
174839
  }
174840
- if (/[a-z0-9]/u.test(glyph)) {
174840
+ if (/[a-z0-9]/u.test(glyph2)) {
174841
174841
  return 0.55;
174842
174842
  }
174843
- if (/[,.;:!?()\u005b\u005d{}'"`\-_/\\]/u.test(glyph)) {
174843
+ if (/[,.;:!?()\u005b\u005d{}'"`\-_/\\]/u.test(glyph2)) {
174844
174844
  return 0.35;
174845
174845
  }
174846
174846
  return 0.6;
174847
174847
  }
174848
174848
  function estimatedTextWidth(glyphs, fontSize) {
174849
- return glyphs.reduce((sum, glyph) => sum + estimatedGlyphAdvanceRatio(glyph) * fontSize, 0);
174849
+ return glyphs.reduce((sum, glyph2) => sum + estimatedGlyphAdvanceRatio(glyph2) * fontSize, 0);
174850
174850
  }
174851
174851
  function estimateTextWidth(text3, fontSize) {
174852
174852
  return estimatedTextWidth(Array.from(text3), fontSize);
@@ -174860,12 +174860,12 @@ function estimatedWrapUnits(text3) {
174860
174860
  unbreakableRun = "";
174861
174861
  }
174862
174862
  };
174863
- for (const glyph of Array.from(text3)) {
174864
- if (/\s/u.test(glyph) || BREAKABLE_GLYPH_RE.test(glyph)) {
174863
+ for (const glyph2 of Array.from(text3)) {
174864
+ if (/\s/u.test(glyph2) || BREAKABLE_GLYPH_RE.test(glyph2)) {
174865
174865
  flushRun();
174866
- units.push(glyph);
174866
+ units.push(glyph2);
174867
174867
  } else {
174868
- unbreakableRun += glyph;
174868
+ unbreakableRun += glyph2;
174869
174869
  }
174870
174870
  }
174871
174871
  flushRun();
@@ -189753,26 +189753,26 @@ function fitGlyphEnvelopeAffine(warp, box, shapeHeight = 0) {
189753
189753
  };
189754
189754
  }
189755
189755
  var FLATTEN_FRACTION = 1 / 240;
189756
- function placeGlyph(glyph, warp, maxSegment, shapeHeight) {
189756
+ function placeGlyph(glyph2, warp, maxSegment, shapeHeight) {
189757
189757
  const base = {
189758
- char: glyph.char,
189759
- segmentIndex: glyph.segmentIndex,
189760
- x: glyph.x,
189761
- y: glyph.baseline
189758
+ char: glyph2.char,
189759
+ segmentIndex: glyph2.segmentIndex,
189760
+ x: glyph2.x,
189761
+ y: glyph2.baseline
189762
189762
  };
189763
- const outlinePath = glyph.outline ? buildWarpedGlyphOutlinePathD(glyph.outline, warp, maxSegment) : void 0;
189763
+ const outlinePath = glyph2.outline ? buildWarpedGlyphOutlinePathD(glyph2.outline, warp, maxSegment) : void 0;
189764
189764
  if (outlinePath) {
189765
- const origin = warp.map(glyph.x, glyph.baseline);
189766
- const dx = origin.x - glyph.x;
189767
- const dy = origin.y - glyph.baseline;
189765
+ const origin = warp.map(glyph2.x, glyph2.baseline);
189766
+ const dx = origin.x - glyph2.x;
189767
+ const dy = origin.y - glyph2.baseline;
189768
189768
  return { ...base, transform: `matrix(1 0 0 1 ${dx} ${dy})`, outlinePath };
189769
189769
  }
189770
- const size = envelopeFontSizePx(glyph.font);
189771
- const box = glyph.ink ? { x0: glyph.ink.left, x1: glyph.ink.right, y0: glyph.ink.top, y1: glyph.ink.bottom } : {
189772
- x0: glyph.x,
189773
- x1: glyph.x + Math.max(glyph.advance, 1e-3),
189774
- y0: glyph.baseline - size * 0.72,
189775
- y1: glyph.baseline
189770
+ const size = envelopeFontSizePx(glyph2.font);
189771
+ const box = glyph2.ink ? { x0: glyph2.ink.left, x1: glyph2.ink.right, y0: glyph2.ink.top, y1: glyph2.ink.bottom } : {
189772
+ x0: glyph2.x,
189773
+ x1: glyph2.x + Math.max(glyph2.advance, 1e-3),
189774
+ y0: glyph2.baseline - size * 0.72,
189775
+ y1: glyph2.baseline
189776
189776
  };
189777
189777
  const fit = fitGlyphEnvelopeAffine(warp, box, shapeHeight);
189778
189778
  return { ...base, transform: fit.transform, slices: fit.slices };
@@ -189792,7 +189792,7 @@ function buildGlyphEnvelopeBlock(preset22, paragraphs2, width, height, align, ad
189792
189792
  }
189793
189793
  const maxSegment = Math.max(1e-3, (layout.box.right - layout.box.left) * FLATTEN_FRACTION);
189794
189794
  return layout.lines.map(
189795
- (line5) => line5.map((glyph) => placeGlyph(glyph, warp, maxSegment, height))
189795
+ (line5) => line5.map((glyph2) => placeGlyph(glyph2, warp, maxSegment, height))
189796
189796
  );
189797
189797
  }
189798
189798
  function signedArea(ring) {
@@ -213644,7 +213644,7 @@ function buildComparisonSlide(ctx) {
213644
213644
  const headerH = 7e5;
213645
213645
  const bodyY = 254e4;
213646
213646
  const bodyH = 358e4;
213647
- const column = (x, headKey, headFill, side2) => [
213647
+ const column2 = (x, headKey, headFill, side2) => [
213648
213648
  templateShape(
213649
213649
  ctx,
213650
213650
  { x, y: headerY, w: HALF_PANEL_W, h: headerH },
@@ -213670,8 +213670,8 @@ function buildComparisonSlide(ctx) {
213670
213670
  ];
213671
213671
  return [
213672
213672
  ...buildTitleBand(ctx, ctx.t("slideTitle")),
213673
- ...column(TEMPLATE_MARGIN_EMU, "optionA", "accent1", "Left"),
213674
- ...column(RIGHT_PANEL_X, "optionB", "accent2", "Right")
213673
+ ...column2(TEMPLATE_MARGIN_EMU, "optionA", "accent1", "Left"),
213674
+ ...column2(RIGHT_PANEL_X, "optionB", "accent2", "Right")
213675
213675
  ];
213676
213676
  }
213677
213677
  function buildQuoteSlide(ctx) {
@@ -214797,10 +214797,10 @@ function measureTextWidth2(text3, font) {
214797
214797
  ctx.font = font;
214798
214798
  return ctx.measureText(text3).width;
214799
214799
  }
214800
- function fillLeaderWithMeasure(glyph, width, measure22) {
214801
- const glyphWidth = Math.max(1, measure22(glyph));
214800
+ function fillLeaderWithMeasure(glyph2, width, measure22) {
214801
+ const glyphWidth = Math.max(1, measure22(glyph2));
214802
214802
  const count = Math.ceil(width / glyphWidth) + 1;
214803
- return glyph.repeat(count);
214803
+ return glyph2.repeat(count);
214804
214804
  }
214805
214805
  init_constants3();
214806
214806
  var ADVANCE_STEPS_PER_PX2 = 6;
@@ -215313,9 +215313,9 @@ function measure3(text3, font) {
215313
215313
  }
215314
215314
  function hangSpaceWordSpacing(ch, font) {
215315
215315
  const size = font.fontSizePx ?? 16;
215316
- const glyph = measure3(ch, font) ?? (ch >= "\uFF61" ? size / 2 : size);
215316
+ const glyph2 = measure3(ch, font) ?? (ch >= "\uFF61" ? size / 2 : size);
215317
215317
  const space = measure3(" ", font) ?? size / 4;
215318
- return `${Math.round((glyph - space) * 1e3) / 1e3}px`;
215318
+ return `${Math.round((glyph2 - space) * 1e3) / 1e3}px`;
215319
215319
  }
215320
215320
  function breaksBetween(ch, next, options) {
215321
215321
  return options.breakAnywhere && next !== void 0 && (isEastAsianChar(ch) || isEastAsianChar(next)) && !/\s/u.test(ch) && !/\s/u.test(next) && !(options.hangingPunctuation && HANGING.has(next));
@@ -240690,12 +240690,12 @@ function themeColorVariantToRef(scheme, variant) {
240690
240690
  return variant.kind === "lighter" ? { scheme, lumMod, lumOff: fraction } : { scheme, lumMod };
240691
240691
  }
240692
240692
  function describeThemeColorSwatch(ref, variant) {
240693
- const column = COLUMN_LABELS[ref.scheme] ?? ref.scheme;
240693
+ const column2 = COLUMN_LABELS[ref.scheme] ?? ref.scheme;
240694
240694
  if (!variant) {
240695
- return column;
240695
+ return column2;
240696
240696
  }
240697
240697
  const word = variant.kind === "lighter" ? "Lighter" : "Darker";
240698
- return `${column}, ${word} ${variant.percent}%`;
240698
+ return `${column2}, ${word} ${variant.percent}%`;
240699
240699
  }
240700
240700
  function buildThemeColorSwatchGrid(themeColorMap) {
240701
240701
  if (!themeColorMap) {
@@ -240739,8 +240739,8 @@ function themeColorRefsEqual(a, b) {
240739
240739
  }
240740
240740
  function findSelectedThemeSwatch(columns, ref, hex22) {
240741
240741
  if (ref) {
240742
- for (const column of columns) {
240743
- const swatches2 = [column.base, ...column.variants];
240742
+ for (const column2 of columns) {
240743
+ const swatches2 = [column2.base, ...column2.variants];
240744
240744
  const match = swatches2.find((swatch) => themeColorRefsEqual(swatch.ref, ref));
240745
240745
  if (match) {
240746
240746
  return match;
@@ -240752,8 +240752,8 @@ function findSelectedThemeSwatch(columns, ref, hex22) {
240752
240752
  return void 0;
240753
240753
  }
240754
240754
  const normalized = hex22.trim().toLowerCase();
240755
- for (const column of columns) {
240756
- const swatches2 = [column.base, ...column.variants];
240755
+ for (const column2 of columns) {
240756
+ const swatches2 = [column2.base, ...column2.variants];
240757
240757
  const match = swatches2.find((swatch) => swatch.hex.toLowerCase() === normalized);
240758
240758
  if (match) {
240759
240759
  return match;
@@ -240768,10 +240768,10 @@ function themeColorSwatchRows(columns) {
240768
240768
  if (columns.length === 0) {
240769
240769
  return [];
240770
240770
  }
240771
- const variantRowCount = Math.max(...columns.map((column) => column.variants.length));
240772
- const rows = [columns.map((column) => column.base)];
240771
+ const variantRowCount = Math.max(...columns.map((column2) => column2.variants.length));
240772
+ const rows = [columns.map((column2) => column2.base)];
240773
240773
  for (let i2 = 0; i2 < variantRowCount; i2++) {
240774
- rows.push(columns.map((column) => column.variants[i2]));
240774
+ rows.push(columns.map((column2) => column2.variants[i2]));
240775
240775
  }
240776
240776
  return rows;
240777
240777
  }
@@ -242378,9 +242378,9 @@ function capitalizeDayName(word) {
242378
242378
  return word;
242379
242379
  }
242380
242380
  function replaceFractions(word) {
242381
- for (const [plain, glyph] of FRACTIONS) {
242381
+ for (const [plain, glyph2] of FRACTIONS) {
242382
242382
  if (word === plain) {
242383
- return glyph;
242383
+ return glyph2;
242384
242384
  }
242385
242385
  }
242386
242386
  return word;
@@ -247466,21 +247466,21 @@ function schemeNode(val2, transforms = {}) {
247466
247466
  function refNode(idx, color2) {
247467
247467
  return { "@_idx": String(idx), ...color2 };
247468
247468
  }
247469
- function refColor2(color2, column) {
247469
+ function refColor2(color2, column2) {
247470
247470
  if (color2 === "col") {
247471
- return schemeNode(column);
247471
+ return schemeNode(column2);
247472
247472
  }
247473
247473
  if (typeof color2 === "string") {
247474
247474
  return schemeNode(color2);
247475
247475
  }
247476
- return schemeNode(column, { shade: color2.shade });
247476
+ return schemeNode(column2, { shade: color2.shade });
247477
247477
  }
247478
- function themeShapeStyleXml(row, column) {
247478
+ function themeShapeStyleXml(row, column2) {
247479
247479
  const spec5 = THEME_ROWS[row];
247480
247480
  return {
247481
- "a:lnRef": refNode(spec5.ln[0], refColor2(spec5.ln[1], column)),
247482
- "a:fillRef": refNode(spec5.fill[0], refColor2(spec5.fill[1], column)),
247483
- "a:effectRef": refNode(spec5.effect, schemeNode(column)),
247481
+ "a:lnRef": refNode(spec5.ln[0], refColor2(spec5.ln[1], column2)),
247482
+ "a:fillRef": refNode(spec5.fill[0], refColor2(spec5.fill[1], column2)),
247483
+ "a:effectRef": refNode(spec5.effect, schemeNode(column2)),
247484
247484
  "a:fontRef": refNode("minor", schemeNode(spec5.font))
247485
247485
  };
247486
247486
  }
@@ -247566,9 +247566,9 @@ function parseItemId(id) {
247566
247566
  }
247567
247567
  const block = match[1];
247568
247568
  const row = Number(match[2]);
247569
- const column = SHAPE_STYLE_COLUMNS[Number(match[3])];
247569
+ const column2 = SHAPE_STYLE_COLUMNS[Number(match[3])];
247570
247570
  const rows = block === "theme" ? SHAPE_THEME_STYLE_ROWS.length : SHAPE_PRESET_ROWS.length;
247571
- return column && row < rows ? { block, row, column } : null;
247571
+ return column2 && row < rows ? { block, row, column: column2 } : null;
247572
247572
  }
247573
247573
  function resolveTheme(xml, ctx) {
247574
247574
  return ctx.resolveStyleMatrix?.(xml) ?? fallbackResolveStyleMatrix(xml, ctx.themeColorMap);
@@ -247583,8 +247583,8 @@ function schemeHex(ref, ctx) {
247583
247583
  const overrides28 = { ...ctx.themeColorMap };
247584
247584
  return parseDrawingColorChoice({ "a:schemeClr": transforms }, overrides28) ?? "#000000";
247585
247585
  }
247586
- function presetStyle(spec5, column, ctx) {
247587
- const scheme = column;
247586
+ function presetStyle(spec5, column2, ctx) {
247587
+ const scheme = column2;
247588
247588
  const style = {};
247589
247589
  if (spec5.fill.kind === "none") {
247590
247590
  Object.assign(style, { fillMode: "none", fillColor: "transparent", fillOpacity: 0 });
@@ -247669,14 +247669,14 @@ function styleMatches(element, style) {
247669
247669
  }
247670
247670
  function item2(block, row, rowIndex, col, ctx) {
247671
247671
  const id = `${block}-${rowIndex}-${col}`;
247672
- const column = SHAPE_STYLE_COLUMNS[col];
247672
+ const column2 = SHAPE_STYLE_COLUMNS[col];
247673
247673
  const resolved = resolveItem(id, ctx);
247674
247674
  const style = resolved?.shapeStyle ?? {};
247675
247675
  return {
247676
247676
  id,
247677
247677
  labelKey: `pptx.gallery.shapeStyles.${row.key}`,
247678
- labelParams: { color: COLUMN_LABELS2[column] },
247679
- label: `${row.label} - ${COLUMN_LABELS2[column]}`,
247678
+ labelParams: { color: COLUMN_LABELS2[column2] },
247679
+ label: `${row.label} - ${COLUMN_LABELS2[column2]}`,
247680
247680
  previewSvg: shapeTileSvg(tileSpecFromShapeStyle(`gss-${id}`, style, TILE4, resolved?.fontColor)),
247681
247681
  applied: styleMatches(ctx.element, style)
247682
247682
  };
@@ -254350,169 +254350,106 @@ var RECORD_COMMAND_GROUPS = [
254350
254350
  ]
254351
254351
  }
254352
254352
  ];
254353
- var EDITOR_ARRANGE_CSS = `
254353
+ var EDITOR_CLUSTER_CSS = `
254354
254354
  @media (min-width: 768px) {
254355
- [data-pptx-editor-chrome] [data-pptx-chrome="arrange-controls"] :is(
254356
- [data-pptx-chrome="align-controls"], [data-pptx-chrome="distribute-controls"],
254357
- [data-pptx-chrome="flip-controls"], [data-pptx-chrome="group-controls"]
254358
- ) { display: inline-flex; flex: none; align-items: center; gap: 0; border: 0; padding: 0; background: var(--pptx-muted); border-radius: 3px; }
254359
- [data-pptx-editor-chrome] [data-pptx-chrome="arrange-controls"] :is(
254360
- [data-pptx-chrome="align-controls"], [data-pptx-chrome="distribute-controls"]
254361
- ) > button {
254362
- display: inline-flex; align-items: center; justify-content: center; flex: none;
254363
- box-sizing: border-box; width: 36px; height: 28px; padding: 6px 10px;
254364
- border: 0; border-radius: 3px; font-size: 12px; line-height: 16px; gap: 6px;
254365
- color: var(--pptx-foreground); background: var(--pptx-muted);
254355
+ [data-pptx-editor-chrome] [data-pptx-chrome="control-cluster"] {
254356
+ display: inline-flex; align-items: center; gap: 0; border: 0; padding: 0; background: transparent;
254366
254357
  }
254367
- [data-pptx-editor-chrome] [data-pptx-chrome="arrange-controls"] [data-pptx-chrome="distribute-controls"] > button:first-child { width: 37px; border-right: 1px solid var(--pptx-border); }
254368
254358
  [data-pptx-editor-chrome] [data-pptx-chrome="arrange-controls"] :is(
254369
- [data-pptx-chrome="align-controls"], [data-pptx-chrome="distribute-controls"]
254370
- ) > button:disabled { opacity: .4; }
254371
- [data-pptx-editor-chrome] [data-pptx-chrome="arrange-controls"] :is(
254372
- [data-pptx-chrome="align-controls"], [data-pptx-chrome="distribute-controls"]
254373
- ) svg { width: 16px; height: 16px; flex: none; }
254359
+ [data-pptx-chrome="align-controls"], [data-pptx-chrome="distribute-controls"],
254360
+ [data-pptx-chrome="flip-controls"], [data-pptx-chrome="group-controls"], [data-pptx-chrome="order-controls"]
254361
+ ) { display: inline-flex; flex: none; align-items: center; gap: 0; border: 0; padding: 0; background: transparent; }
254374
254362
  [data-pptx-editor-chrome] [data-pptx-chrome="ribbon-content"] [data-ribbon-control="home.arrange.crop"] {
254375
- display: inline-flex; flex: none; align-items: center; gap: 0; border: 0; padding: 0;
254376
- background: var(--pptx-muted); border-radius: 3px;
254363
+ display: inline-flex; flex: none; align-items: center; gap: 0; border: 0; padding: 0; background: transparent;
254377
254364
  }
254378
254365
  [data-pptx-editor-chrome] [data-pptx-chrome="ribbon-content"] [data-ribbon-control="home.arrange.crop"] [data-pptx-ribbon-control="crop"] {
254379
254366
  box-sizing: border-box; display: inline-flex; align-items: center; justify-content: center;
254380
- width: 37px; height: 28px; padding: 6px 10px; margin: 0;
254381
- border: 0; border-right: 1px solid var(--pptx-border); border-radius: 0; background: transparent;
254367
+ min-width: 28px; height: 24px; padding: 0 6px; margin: 0; border: 0; border-radius: 4px 0 0 4px; background: transparent;
254382
254368
  }
254383
254369
  [data-pptx-editor-chrome] [data-pptx-chrome="ribbon-content"] [data-ribbon-control="home.arrange.crop"] [data-pptx-ribbon-control="crop-menu"] {
254384
254370
  box-sizing: border-box; display: inline-flex; align-items: center; justify-content: center;
254385
- width: 32px; height: 24px; min-height: 24px; padding: 6px 10px; margin: 0;
254386
- border: 0; border-radius: 0; background: transparent; color: var(--pptx-foreground);
254387
- font-size: 12px; line-height: 16px; gap: normal;
254371
+ width: 16px; min-width: 16px; height: 24px; padding: 0; margin: 0; border: 0; border-radius: 0 4px 4px 0;
254372
+ background: transparent; color: var(--pptx-foreground); font-size: 12px; line-height: 16px; gap: normal;
254388
254373
  }
254389
- [data-pptx-editor-chrome] [data-pptx-chrome="ribbon-content"] [data-ribbon-control="home.arrange.crop"] [data-pptx-ribbon-control="crop-menu"] svg { width: 12px; height: 12px; }
254390
- }
254391
- `;
254392
- var EDITOR_CLUSTER_CSS = `
254393
- @media (min-width: 768px) {
254394
- [data-pptx-editor-chrome] [data-pptx-chrome="order-controls"],
254395
- [data-pptx-editor-chrome] [data-pptx-chrome="ribbon-content"] :is(
254396
- [data-ribbon-control="home.paragraph.bullets"], [data-ribbon-control="home.paragraph.numbering"]
254397
- ) { background: var(--pptx-muted); border-radius: 3px; }
254398
- [data-pptx-editor-chrome] [data-pptx-chrome="ribbon"] [data-pptx-chrome="ribbon-content"] :is(
254399
- [data-ribbon-control="home.paragraph.bullets"], [data-ribbon-control="home.paragraph.numbering"]
254400
- ) [data-pptx-chrome="gallery-caret"] { padding: 0 2px; }
254401
- [data-pptx-editor-chrome] [data-pptx-chrome="arrange-controls"] [data-pptx-chrome="distribute-controls"] > button {
254402
- border-radius: 0; background: transparent; gap: normal;
254403
- }
254404
- [data-pptx-editor-chrome] [data-pptx-chrome="ribbon-content"] [data-ribbon-control="home.arrange.crop"]
254405
- [data-pptx-ribbon-control="crop"] { gap: normal; }
254406
- [data-pptx-editor-chrome] [data-pptx-chrome="drawing-controls"] :is(
254407
- [data-ribbon-control="home.drawing.shapes"], [data-ribbon-control="home.drawing.arrange"]
254408
- ) > button:first-child > svg:first-of-type { order: -1; }
254374
+ [data-pptx-editor-chrome] [data-pptx-chrome="ribbon-content"] [data-ribbon-control="home.arrange.crop"] [data-pptx-ribbon-control="crop-menu"] svg { width: 10px; height: 10px; }
254409
254375
  }
254410
254376
  `;
254377
+ var R = '[data-pptx-editor-chrome] [data-pptx-chrome="ribbon-content"][data-pptx-chrome]';
254378
+ var BTN = `${R} :is(
254379
+ button[data-ribbon-control^="home."],
254380
+ [data-ribbon-control^="home."] > button,
254381
+ [data-ribbon-control^="home."] > span > button,
254382
+ [data-pptx-chrome="control-cluster"] > button,
254383
+ [data-pptx-chrome$="-controls"] > button
254384
+ )`;
254385
+ var LARGE = `${R} :is(button, [data-ribbon-control^="home."] > button, [data-pptx-chrome="control-cluster"] > button)[data-size="large"]`;
254411
254386
  var EDITOR_CONTROLS_CSS = `
254412
254387
  @media (min-width: 768px) {
254413
254388
  [data-pptx-editor-chrome] [data-pptx-chrome="home-content"] { gap: 0; }
254414
- [data-pptx-editor-chrome] [data-pptx-chrome="ribbon-content"] [data-ribbon-group^="home."] { gap: 2px; }
254415
- [data-pptx-editor-chrome] [data-pptx-chrome="ribbon-content"]
254416
- [data-ribbon-control^="home."]:not(button, input, select, pptx-ui-select) {
254389
+ ${R} [data-ribbon-control^="home."]:not(button, input, select, pptx-ui-select) {
254417
254390
  display: inline-flex; align-items: center; line-height: 16px;
254418
254391
  }
254419
- [data-pptx-editor-chrome] [data-pptx-chrome="home-group"] {
254420
- gap: 2px; padding: 0 4px 0 0; margin-right: 4px;
254421
- border-right: 1px solid color-mix(in oklab, var(--pptx-border) 40%, transparent);
254422
- }
254423
- [data-pptx-editor-chrome] [data-pptx-chrome="ribbon-content"] :is(
254424
- button[data-ribbon-control^="home."],
254425
- [data-ribbon-control^="home."] > button,
254426
- [data-ribbon-control^="home."] > span > button
254427
- ) {
254428
- display: inline-flex; align-items: center; justify-content: center;
254429
- box-sizing: border-box; height: 28px; padding: 6px 10px; min-width: 0; width: auto;
254430
- border: 0; border-radius: 3px; font-size: 12px; line-height: 16px;
254431
- color: var(--pptx-foreground); background: var(--pptx-muted); gap: 6px;
254432
- }
254433
- [data-pptx-editor-chrome] [data-pptx-chrome="ribbon-content"] :is(
254434
- button[data-ribbon-control^="home."], [data-ribbon-control^="home."] > button
254435
- ):disabled { opacity: 0.4; }
254436
- [data-pptx-editor-chrome] [data-pptx-chrome="ribbon-content"] :is(
254437
- button[data-ribbon-control^="home."], [data-ribbon-control^="home."] > button
254438
- ):hover:not(:disabled) { background: var(--pptx-accent); }
254439
- [data-pptx-editor-chrome] [data-pptx-chrome="ribbon-content"] :is(
254440
- button[data-ribbon-control^="home."], [data-ribbon-control^="home."] > button
254441
- )[aria-pressed="true"] { background: var(--pptx-accent); }
254442
- [data-pptx-editor-chrome] [data-pptx-chrome="ribbon-content"] :is(
254443
- button[data-ribbon-control^="home."], [data-ribbon-control^="home."] > button
254444
- ) svg { width: 16px; height: 16px; flex: none; }
254445
- [data-pptx-editor-chrome] [data-pptx-chrome="font-controls"] {
254446
- display: flex; align-items: center; gap: 4px;
254447
- }
254448
- [data-pptx-editor-chrome] [data-pptx-chrome="font-controls-fragment"] { display: contents; }
254449
- [data-pptx-editor-chrome] [data-pptx-chrome="slides-controls"] {
254450
- display: flex; align-items: center; gap: 4px;
254451
- }
254452
- [data-pptx-editor-chrome] [data-pptx-chrome="slides-controls"] > [data-pptx-chrome="slides-buttons"] { display: contents; }
254453
- [data-pptx-editor-chrome] [data-pptx-chrome="split-button"] {
254454
- position: relative; display: inline-flex; align-items: center; gap: 0;
254455
- padding: 0; border: 0; border-radius: 3px; background: transparent;
254456
- }
254457
- [data-pptx-editor-chrome] [data-pptx-chrome="split-segment"] {
254458
- display: inline-flex; align-items: center; padding: 0; border: 0; border-radius: 0;
254459
- }
254460
- [data-pptx-editor-chrome] [data-pptx-chrome="ribbon-content"] [data-pptx-chrome="split-button"]:has([data-pptx-chrome="split-caret"]:not([hidden])) [data-pptx-chrome="split-main"] {
254461
- border-top-right-radius: 0; border-bottom-right-radius: 0;
254462
- }
254463
- [data-pptx-editor-chrome] [data-pptx-chrome="ribbon"] [data-pptx-chrome="ribbon-content"] [data-pptx-chrome="split-main"] {
254464
- display: inline-flex; align-items: center; justify-content: center;
254465
- height: 28px; padding: 6px 10px; gap: 6px; border: 0; border-radius: 3px; font-size: 12px; line-height: 16px;
254466
- background: var(--pptx-muted); color: var(--pptx-foreground);
254467
- }
254468
- [data-pptx-editor-chrome] [data-pptx-chrome="ribbon"] [data-pptx-chrome="ribbon-content"] [data-pptx-chrome="split-caret"] {
254469
- display: inline-flex; align-items: center; justify-content: center;
254470
- box-sizing: border-box; height: 28px; width: 36px; min-width: 36px; max-width: 36px;
254471
- padding: 6px 8px; margin: 0; border: 0; border-radius: 0 3px 3px 0;
254472
- font-size: 12px; line-height: 16px; background: var(--pptx-muted); color: var(--pptx-foreground);
254473
- border-left: 1px solid color-mix(in oklab, var(--pptx-border) 40%, transparent);
254474
- }
254475
- [data-pptx-editor-chrome] [data-pptx-chrome="split-caret"] svg { display: block; flex: none; width: 16px; height: 16px; margin: 0; }
254476
- [data-pptx-editor-chrome] [data-pptx-chrome="ribbon"] [data-pptx-chrome="ribbon-content"] :is([data-pptx-chrome="split-main"], [data-pptx-chrome="split-caret"]):hover:not(:disabled) {
254477
- background: var(--pptx-accent);
254478
- }
254392
+ ${BTN} {
254393
+ display: inline-flex; align-items: center; justify-content: center; flex: none;
254394
+ box-sizing: border-box; height: 24px; padding: 0 6px; min-width: 28px; width: auto;
254395
+ border: 0; border-radius: 4px; font-size: 12px; line-height: 16px; gap: 6px;
254396
+ color: var(--pptx-foreground); background: transparent; white-space: nowrap;
254397
+ }
254398
+ ${BTN}:disabled { opacity: 0.4; }
254399
+ ${BTN}:hover:not(:disabled) { background: var(--pptx-accent); }
254400
+ ${BTN}:active:not(:disabled) { background: color-mix(in oklab, var(--pptx-accent) 70%, var(--pptx-primary)); }
254401
+ ${BTN}[aria-pressed="true"] {
254402
+ background: color-mix(in oklab, var(--pptx-primary) 22%, transparent);
254403
+ box-shadow: inset 0 0 0 1px var(--pptx-primary);
254404
+ }
254405
+ ${BTN} svg { width: 16px; height: 16px; flex: none; }
254406
+ ${LARGE} {
254407
+ flex-direction: column; justify-content: flex-start; min-width: 48px; height: 66px; min-height: 66px;
254408
+ padding: 3px 6px; gap: 2px; line-height: 15px;
254409
+ }
254410
+ ${LARGE} svg { width: 32px; height: 32px; stroke-width: 1.35; }
254411
+ ${LARGE} svg.chev { width: 9px; height: 9px; margin-top: -1px; stroke-width: 2.2; }
254412
+ ${BTN} svg.chev { width: 10px; height: 10px; stroke-width: 2.2; }
254413
+ ${R} [data-pptx-chrome="font-controls"] { display: flex; align-items: center; gap: 4px; }
254414
+ ${R} [data-pptx-chrome="font-controls-fragment"] { display: contents; }
254415
+ ${R} [data-pptx-chrome="slides-controls"] { display: flex; align-items: flex-start; gap: 2px; }
254416
+ ${R} [data-pptx-chrome="slides-controls"] > [data-pptx-chrome="slides-buttons"] { display: contents; }
254417
+ /* Split buttons: the glyph and caption press the main action, the strip beneath opens the menu. */
254418
+ ${R} [data-pptx-chrome="split-button"] {
254419
+ position: relative; display: inline-flex; align-items: stretch; gap: 0; padding: 0; border: 0; background: transparent;
254420
+ }
254421
+ ${R} [data-pptx-chrome="split-button"]:has([data-size="large"]) { flex-direction: column; }
254422
+ ${R} button[data-pptx-chrome="split-main"][data-size="large"] { height: 52px; min-height: 52px; border-radius: 4px 4px 0 0; }
254423
+ ${R} button[data-pptx-chrome="split-caret"][data-size="caret"] {
254424
+ min-width: 0; height: 14px; min-height: 14px; padding: 0; border-radius: 0 0 4px 4px; align-self: stretch;
254425
+ }
254426
+ ${R} button[data-pptx-chrome="split-caret"][data-size="caret"] svg { width: 10px; height: 10px; stroke-width: 2.2; }
254427
+ ${R} [data-pptx-chrome="split-caret"]:not([data-size]) {
254428
+ min-width: 16px; padding: 0 2px; border-radius: 0 4px 4px 0; height: auto; align-self: stretch;
254429
+ }
254430
+ ${R} [data-pptx-chrome="split-caret"]:not([data-size]) svg { width: 10px; height: 10px; stroke-width: 2.2; }
254479
254431
  }
254480
254432
  `;
254481
254433
  var EDITOR_FONT_PICKER_CSS = `
254482
254434
  @media (min-width: 768px) {
254483
254435
  [data-pptx-editor-chrome] [data-pptx-chrome="font-groups"] { display: contents; }
254484
- [data-pptx-editor-chrome] [data-pptx-chrome="font-picker-controls"] {
254485
- display: flex; align-items: center; gap: 4px;
254486
- }
254487
- [data-pptx-editor-chrome] [data-pptx-chrome="control-cluster"] {
254488
- display: inline-flex; align-items: center; gap: 0; border: 0; padding: 0;
254489
- }
254490
- [data-pptx-editor-chrome] [data-pptx-chrome="font-controls"] [data-pptx-chrome="control-cluster"] {
254491
- background: var(--pptx-muted); border-radius: 3px; overflow: hidden;
254492
- }
254436
+ /* Font and highlight colours: the glyph over its colour bar, as in Office. */
254493
254437
  [data-pptx-editor-chrome] [data-pptx-chrome="font-controls"] :is(
254494
- [data-ribbon-control^="home.font."] > div > button,
254495
- [data-ribbon-control^="home.font."] > button,
254496
- button[data-ribbon-control^="home.font."]
254497
- ) { flex: none; box-sizing: border-box; height: 28px; width: 36px; padding: 6px 10px; gap: 6px; }
254498
- [data-pptx-editor-chrome] [data-pptx-chrome="font-controls"] :is([data-ribbon-control$="Color"] > button:first-child, [data-ribbon-control$="Color"] > div:first-child > button:first-child, [data-ribbon-control$="Color"] > span:first-child > button:first-child) {
254499
- width: 58px; flex-direction: row;
254438
+ [data-ribbon-control$="Color"] > button:first-child, [data-ribbon-control$="Color"] > div:first-child > button:first-child,
254439
+ [data-ribbon-control$="Color"] > span:first-child > button:first-child
254440
+ ) {
254441
+ flex-direction: column; justify-content: center; width: 28px; min-width: 28px; padding: 0; gap: 1px;
254500
254442
  }
254501
254443
  [data-pptx-editor-chrome] [data-pptx-chrome="font-controls"] [data-ribbon-control$="Color"] [data-pptx-chrome="color-swatch"] {
254502
- box-sizing: border-box; display: block; width: 16px; height: 4px; margin: -2px 0 0;
254503
- border: 0; border-radius: 2px; flex: none;
254444
+ box-sizing: border-box; display: block; width: 16px; height: 4px; margin: 0;
254445
+ border: 0; border-radius: 1px; flex: none;
254504
254446
  }
254505
- [data-pptx-editor-chrome] [data-pptx-chrome="font-controls"] [data-ribbon-control^="home.font."] > div > button {
254506
- display: inline-flex; align-items: center; justify-content: center; border: 0; border-radius: 3px;
254507
- font-size: 12px; line-height: 16px; background: var(--pptx-muted); color: var(--pptx-foreground);
254508
- }
254509
- [data-pptx-editor-chrome] [data-pptx-chrome="font-controls"] [data-ribbon-control^="home.font."] > div > button:disabled { opacity: .4; }
254510
- [data-pptx-editor-chrome] [data-pptx-chrome="font-controls"] [data-ribbon-control^="home.font."] > div > button svg { width: 16px; height: 16px; }
254447
+ [data-pptx-editor-chrome] [data-pptx-chrome="font-controls"] [data-ribbon-control^="home.font."] > button { padding: 0; min-width: 28px; }
254511
254448
  [data-pptx-editor-chrome] [data-pptx-chrome="ribbon-content"] :is(
254512
254449
  [data-ribbon-control="home.font.fontFamily"], [data-ribbon-control="home.font.fontSize"]
254513
254450
  ) {
254514
254451
  --pptx-editor-font-picker-width: 120px;
254515
- box-sizing: border-box; flex: none; display: inline-flex; align-items: center; height: 28px;
254452
+ box-sizing: border-box; flex: none; display: inline-flex; align-items: center; height: 24px;
254516
254453
  width: var(--pptx-editor-font-picker-width);
254517
254454
  min-width: var(--pptx-editor-font-picker-width);
254518
254455
  max-width: var(--pptx-editor-font-picker-width);
@@ -254523,86 +254460,135 @@ var EDITOR_FONT_PICKER_CSS = `
254523
254460
  }
254524
254461
  }
254525
254462
  `;
254463
+ var R2 = '[data-pptx-editor-chrome] [data-pptx-chrome="ribbon-content"][data-pptx-chrome]';
254464
+ var GROUPS = [
254465
+ "home.clipboard",
254466
+ "home.slides",
254467
+ "home.font",
254468
+ "home.paragraph",
254469
+ "home.editing",
254470
+ "home.drawing",
254471
+ "home.arrange"
254472
+ ].map((id) => `[data-ribbon-group="${id}"]`).join(", ");
254473
+ var BREAK = 'content: ""; flex: 0 0 100%; height: 0; order: 6;';
254474
+ var LISTS = `:is([data-ribbon-control="home.paragraph.bullets"], [data-ribbon-control="home.paragraph.numbering"])`;
254475
+ var FILL_IDS = ["shapeFill", "shapeOutline", "shapeEffects"].map(
254476
+ (id) => `[data-ribbon-control="home.drawing.${id}"]`
254477
+ );
254478
+ var FILL_OUTLINE = [...FILL_IDS, ...FILL_IDS.map((id) => `${id} > button`)].join(", ");
254526
254479
  var EDITOR_HOME_LAYOUT_CSS = `
254527
254480
  @media (min-width: 768px) {
254528
254481
  [data-pptx-editor-chrome] [data-pptx-chrome="control-fragment"] { display: contents; }
254529
- [data-pptx-editor-chrome] pptx-ui-select[variant="ribbon-icon"] {
254530
- flex: none; width: 36px; min-width: 36px; max-width: 36px;
254482
+ ${R2} :is(${GROUPS}) {
254483
+ position: relative; box-sizing: border-box; align-self: stretch; flex: none;
254484
+ display: flex; flex-direction: column; align-items: center; justify-content: space-between;
254485
+ min-height: 84px; padding: 3px 6px 0; margin: 0; gap: 0; border: 0;
254531
254486
  }
254532
- [data-pptx-editor-chrome] :is([data-pptx-chrome="paragraph-controls"], [data-pptx-chrome="drawing-controls"], [data-pptx-chrome="arrange-controls"], [data-pptx-chrome="editing-controls"]) {
254533
- display: flex; flex-wrap: nowrap; align-items: center; gap: 4px;
254487
+ ${R2} :is(${GROUPS})::after {
254488
+ content: ""; position: absolute; top: 6px; bottom: 6px; right: 0; width: 1px;
254489
+ background: color-mix(in oklab, var(--pptx-border) 80%, transparent);
254534
254490
  }
254535
- [data-pptx-editor-chrome] [data-pptx-chrome="list-controls"] {
254536
- display: inline-flex; align-items: center; gap: 4px;
254537
- border: 0; padding: 0; background: transparent;
254491
+ ${R2}:has([data-ribbon-group="home.font"]) :is(.w-px.self-stretch, .pptx-rb-sep, [data-pptx-chrome="ribbon-sep"]),
254492
+ [data-pptx-editor-chrome] [data-pptx-chrome="home-content"] > .pptx-svelte-hometab-sep { display: none; }
254493
+ ${R2} [data-pptx-chrome="ribbon-group-label"] {
254494
+ flex: none; max-width: 100%; height: 16px; font-size: 11px; line-height: 16px; font-weight: 400;
254495
+ color: var(--pptx-muted-foreground); text-align: center; white-space: nowrap;
254538
254496
  }
254539
- [data-pptx-editor-chrome] [data-pptx-chrome="ribbon-content"] :is(
254540
- [data-ribbon-control="home.paragraph.bullets"], [data-ribbon-control="home.paragraph.numbering"]
254541
- ) { display: inline-flex; align-items: center; gap: 0; }
254542
- [data-pptx-editor-chrome] [data-pptx-chrome="ribbon-content"] :is(
254543
- [data-ribbon-control="home.paragraph.bullets"], [data-ribbon-control="home.paragraph.numbering"]
254544
- ) > button:first-child { width: 36px; height: 28px; border-radius: 3px; }
254545
- [data-pptx-editor-chrome] [data-pptx-chrome="ribbon"] [data-pptx-chrome="ribbon-content"] :is(
254546
- [data-ribbon-control="home.paragraph.bullets"], [data-ribbon-control="home.paragraph.numbering"]
254547
- ) [data-pptx-chrome="gallery-caret"] {
254497
+ ${R2} :is(${GROUPS}) > :is([data-pptx-chrome$="-controls"], .row) {
254498
+ flex: 1 1 auto; display: flex; align-items: flex-start; gap: 2px;
254499
+ }
254500
+ ${R2} :is([data-pptx-chrome="list-controls"], [data-pptx-chrome="font-picker-controls"]) { display: contents; }
254501
+
254502
+ /* Font: family, size, grow, shrink, clear on the first row; styles, spacing, case and colours on the second. */
254503
+ ${R2} [data-ribbon-group="home.font"] [data-pptx-chrome="font-controls"] {
254504
+ flex-wrap: wrap; align-content: flex-start; align-items: center; gap: 5px 2px; width: 282px;
254505
+ }
254506
+ ${R2} [data-ribbon-group="home.font"] [data-pptx-chrome="font-controls"]::after { ${BREAK} }
254507
+ ${R2} [data-ribbon-control="home.font.fontFamily"] { order: 1; }
254508
+ ${R2} [data-ribbon-control="home.font.fontSize"] { order: 2; }
254509
+ ${R2} [data-ribbon-control="home.font.increaseFontSize"] { order: 3; }
254510
+ ${R2} [data-ribbon-control="home.font.decreaseFontSize"] { order: 4; }
254511
+ ${R2} [data-ribbon-control="home.font.clearFormatting"] { order: 5; }
254512
+ ${R2} [data-ribbon-control="home.font.bold"] { order: 10; }
254513
+ ${R2} [data-ribbon-control="home.font.italic"] { order: 11; }
254514
+ ${R2} [data-ribbon-control="home.font.underline"] { order: 12; }
254515
+ ${R2} [data-ribbon-control="home.font.shadow"] { order: 13; }
254516
+ ${R2} [data-ribbon-control="home.font.strikethrough"] { order: 14; }
254517
+ ${R2} [data-ribbon-control="home.font.characterSpacing"] { order: 15; }
254518
+ ${R2} [data-ribbon-control="home.font.changeCase"] { order: 16; }
254519
+ ${R2} [data-ribbon-control="home.font.highlightColor"] { order: 17; }
254520
+ ${R2} [data-ribbon-control="home.font.fontColor"] { order: 18; }
254521
+
254522
+ /* Paragraph: lists, indents and line spacing, then alignment, direction and columns. */
254523
+ ${R2} [data-ribbon-group="home.paragraph"] [data-pptx-chrome="paragraph-controls"] {
254524
+ flex-wrap: wrap; align-content: flex-start; align-items: center; gap: 5px 2px; width: 196px;
254525
+ }
254526
+ ${R2} [data-ribbon-group="home.paragraph"] [data-pptx-chrome="paragraph-controls"]::after { ${BREAK} }
254527
+ ${R2} [data-ribbon-control="home.paragraph.bullets"] { order: 1; }
254528
+ ${R2} [data-ribbon-control="home.paragraph.numbering"] { order: 2; }
254529
+ ${R2} [data-ribbon-control="home.paragraph.decreaseIndent"] { order: 3; }
254530
+ ${R2} [data-ribbon-control="home.paragraph.increaseIndent"] { order: 4; }
254531
+ ${R2} [data-ribbon-control="home.paragraph.lineSpacing"] { order: 5; }
254532
+ ${R2} [data-ribbon-control="home.paragraph.alignLeft"] { order: 10; }
254533
+ ${R2} [data-ribbon-control="home.paragraph.alignCenter"] { order: 11; }
254534
+ ${R2} [data-ribbon-control="home.paragraph.alignRight"] { order: 12; }
254535
+ ${R2} [data-ribbon-control="home.paragraph.justify"] { order: 13; }
254536
+ ${R2} [data-ribbon-control="home.paragraph.textDirection"] { order: 14; }
254537
+ ${R2} [data-ribbon-control="home.paragraph.columns"] { order: 15; }
254538
+ ${R2} ${LISTS} { display: inline-flex; align-items: center; gap: 0; border: 0; background: transparent; }
254539
+ ${R2} ${LISTS} > button:first-child { width: 28px; min-width: 28px; padding: 0; border-radius: 4px 0 0 4px; }
254540
+ ${R2} ${LISTS} [data-pptx-chrome="gallery-caret"] {
254548
254541
  box-sizing: border-box; display: inline-flex; align-items: center; justify-content: center;
254549
- width: 24px; min-width: 24px; height: 24px; min-height: 24px; padding: 0 2px;
254550
- border: 0; border-radius: 0; background: transparent; color: var(--pptx-foreground); gap: normal; font-size: 12px; line-height: 16px;
254542
+ width: 16px; min-width: 16px; height: 24px; min-height: 24px; padding: 0; border: 0; border-radius: 0 4px 4px 0;
254543
+ background: transparent; color: var(--pptx-foreground); gap: normal; font-size: 12px; line-height: 16px;
254551
254544
  }
254552
- [data-pptx-editor-chrome] [data-pptx-chrome="ribbon-content"] :is(
254553
- [data-ribbon-control="home.paragraph.bullets"], [data-ribbon-control="home.paragraph.numbering"]
254554
- ) [data-pptx-chrome="gallery-caret"] svg { width: 12px; height: 12px; }
254555
- [data-pptx-editor-chrome] [data-pptx-chrome="home-content"] > .pptx-svelte-hometab-sep {
254556
- width: 1px; height: 20px; align-self: center; margin: 0 4px;
254557
- background: color-mix(in oklab, var(--pptx-border) 40%, transparent);
254558
- }
254559
- [data-pptx-editor-chrome] [data-pptx-chrome="order-controls"] {
254560
- display: inline-flex; align-items: center; gap: 0; border: 0; padding: 0;
254561
- }
254562
- [data-pptx-editor-chrome] [data-pptx-chrome="drawing-controls"] [data-pptx-chrome="ribbon-inline-label"] { display: none; }
254563
- [data-pptx-editor-chrome] [data-pptx-chrome="drawing-controls"] [data-ribbon-control="home.drawing.shapes"] { order: 1; }
254564
- [data-pptx-editor-chrome] [data-pptx-chrome="drawing-controls"] [data-ribbon-control="home.drawing.arrange"] { order: 2; }
254565
- [data-pptx-editor-chrome] [data-pptx-chrome="drawing-controls"] [data-ribbon-control="home.drawing.shapeFill"] { order: 3; }
254566
- [data-pptx-editor-chrome] [data-pptx-chrome="drawing-controls"] [data-ribbon-control="home.drawing.shapeOutline"] { order: 4; }
254567
- [data-pptx-editor-chrome] [data-pptx-chrome="drawing-controls"] [data-ribbon-control="home.drawing.quickStyles"] { order: 5; }
254568
- [data-pptx-editor-chrome] [data-pptx-chrome="drawing-controls"] [data-ribbon-control="home.drawing.shapeEffects"] { order: 6; }
254569
- [data-pptx-editor-chrome] [data-pptx-chrome="ribbon-content"] [data-pptx-chrome="drawing-controls"] :is(
254570
- [data-ribbon-control="home.drawing.shapeFill"], [data-ribbon-control="home.drawing.shapeOutline"]
254571
- ) :is(button:first-child, button svg) { flex: none; }
254572
- [data-pptx-editor-chrome] [data-pptx-chrome="drawing-controls"] :is(
254573
- [data-ribbon-control="home.drawing.shapeFill"], [data-ribbon-control="home.drawing.shapeOutline"]
254574
- ) > button:first-child,
254575
- [data-pptx-editor-chrome] [data-pptx-chrome="drawing-controls"] :is(
254576
- [data-ribbon-control="home.drawing.shapeFill"], [data-ribbon-control="home.drawing.shapeOutline"]
254577
- ) > div:first-child > button:first-child {
254578
- display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 28px;
254579
- padding: 6px 10px; border: 0; border-radius: 3px; background: var(--pptx-muted);
254580
- }
254581
- [data-pptx-editor-chrome] [data-pptx-chrome="drawing-controls"] [data-pptx-chrome="color-swatch"] { display: none; }
254582
- [data-pptx-editor-chrome] [data-pptx-chrome="drawing-controls"] :is(
254583
- [data-ribbon-control="home.drawing.shapes"], [data-ribbon-control="home.drawing.arrange"]
254584
- ) > button:first-child > svg:nth-of-type(2) { display: none; }
254585
- [data-pptx-editor-chrome] [data-pptx-chrome="drawing-controls"] :is(
254586
- [data-ribbon-control="home.drawing.quickStyles"], [data-ribbon-control="home.drawing.shapeEffects"]
254587
- ) > button > svg:last-child { width: 16px; height: 16px; }
254588
- [data-pptx-editor-chrome] [data-pptx-chrome="arrange-controls"] .pptx-rb-sep { display: none; }
254589
- [data-pptx-editor-chrome] [data-pptx-chrome="arrange-controls"] [data-pptx-chrome="arrange-extras"] { display: contents; }
254590
- [data-pptx-editor-chrome] [data-pptx-chrome="arrange-controls"] [data-ribbon-control="home.arrange.outlineWidth"] { order: 1; }
254591
- [data-pptx-editor-chrome] [data-pptx-chrome="arrange-controls"] [data-pptx-chrome="order-controls"] { order: 2; }
254592
- [data-pptx-editor-chrome] [data-pptx-chrome="arrange-controls"] :is(
254593
- [data-ribbon-control="home.arrange.duplicate"], [data-ribbon-control="home.arrange.delete"]
254594
- ) { order: 3; }
254595
- [data-pptx-editor-chrome] [data-pptx-chrome="arrange-controls"] > [data-pptx-chrome="duplicate-controls"] { display: contents; }
254596
- [data-pptx-editor-chrome] [data-pptx-chrome="ribbon-content"] [data-ribbon-control="home.arrange.outlineWidth"] {
254597
- box-sizing: border-box; flex: none; width: 52px; height: 26px; padding: 0 4px;
254598
- border: 1px solid var(--pptx-border); border-radius: 3px; background: var(--pptx-muted);
254599
- font-size: 11px; line-height: 16px; color: var(--pptx-foreground); text-align: center;
254600
- }
254601
- [data-pptx-editor-chrome] [data-pptx-chrome="ribbon-content"] [data-ribbon-control="home.arrange.outlineWidth"]:disabled { opacity: .4; }
254602
- [data-pptx-editor-chrome] [data-ribbon-group="home.editing"][data-pptx-chrome="home-group"] { padding-right: 0; margin-right: 0; border-right: 0; }
254603
- [data-pptx-editor-chrome] [data-pptx-chrome="list-controls"] > :is(
254604
- [data-ribbon-control="home.paragraph.bullets"], [data-ribbon-control="home.paragraph.numbering"]
254605
- ) > div { border: 0; }
254545
+ ${R2} ${LISTS} [data-pptx-chrome="gallery-caret"] svg { width: 10px; height: 10px; }
254546
+ ${R2} ${LISTS} > div { border: 0; }
254547
+ [data-pptx-editor-chrome] pptx-ui-select[variant="ribbon-icon"] { flex: none; width: 28px; min-width: 28px; max-width: 28px; }
254548
+
254549
+ /* Editing: Find, Replace and Select stack as three labelled rows. */
254550
+ ${R2} [data-ribbon-group="home.editing"] [data-pptx-chrome="editing-controls"] {
254551
+ flex-direction: column; align-items: stretch; justify-content: flex-start; gap: 0;
254552
+ }
254553
+ ${R2} [data-ribbon-group="home.editing"] :is(button, [data-ribbon-control]) { justify-content: flex-start; height: 22px; min-height: 22px; }
254554
+ ${R2} [data-ribbon-group="home.editing"] [data-ribbon-control] > button { height: 22px; min-height: 22px; width: 100%; }
254555
+ ${R2} [data-ribbon-group="home.clipboard"] [data-stack] { gap: 0; }
254556
+ ${R2} [data-ribbon-group="home.clipboard"] [data-stack] > button { height: 22px; min-height: 22px; justify-content: flex-start; }
254557
+
254558
+ /* Drawing: Shapes, Arrange and Quick Styles stand tall; Fill, Outline and Effects stack beside them. */
254559
+ ${R2} [data-ribbon-group="home.drawing"] [data-pptx-chrome="drawing-controls"] {
254560
+ flex-direction: column; flex-wrap: wrap; align-content: flex-start; align-items: stretch; gap: 0 2px; height: 66px; max-height: 66px;
254561
+ }
254562
+ ${R2} [data-pptx-chrome="drawing-controls"] [data-pptx-chrome="ribbon-inline-label"] { display: none; }
254563
+ ${R2} [data-pptx-chrome="drawing-controls"] [data-ribbon-control="home.drawing.shapes"] { order: 1; }
254564
+ ${R2} [data-pptx-chrome="drawing-controls"] [data-ribbon-control="home.drawing.arrange"] { order: 2; }
254565
+ ${R2} [data-pptx-chrome="drawing-controls"] [data-ribbon-control="home.drawing.quickStyles"] { order: 3; }
254566
+ ${R2} [data-pptx-chrome="drawing-controls"] [data-ribbon-control="home.drawing.shapeFill"] { order: 4; }
254567
+ ${R2} [data-pptx-chrome="drawing-controls"] [data-ribbon-control="home.drawing.shapeOutline"] { order: 5; }
254568
+ ${R2} [data-pptx-chrome="drawing-controls"] [data-ribbon-control="home.drawing.shapeEffects"] { order: 6; }
254569
+ ${R2} [data-pptx-chrome="drawing-controls"] :is(${FILL_OUTLINE}) { height: 22px; min-height: 22px; }
254570
+ ${R2} [data-pptx-chrome="drawing-controls"] [data-pptx-chrome="color-swatch"] { display: none; }
254571
+ ${R2} [data-ribbon-control="home.drawing.quickStyles"] { height: 66px; }
254572
+ ${R2} [data-ribbon-control="home.drawing.quickStyles"] .trigger {
254573
+ flex-direction: column; justify-content: flex-start; min-width: 56px; height: 66px; padding: 3px 6px; gap: 2px; line-height: 15px;
254574
+ }
254575
+ ${R2} [data-ribbon-control="home.drawing.quickStyles"] .trigger svg { width: 32px; height: 32px; stroke-width: 1.35; }
254576
+ ${R2} [data-ribbon-control="home.drawing.shapeEffects"] .trigger { height: 22px; min-height: 22px; width: 100%; justify-content: flex-start; }
254577
+
254578
+ /* Arrange: the viewer's own order, align and edit commands, as flat buttons. */
254579
+ ${R2} [data-pptx-chrome="arrange-controls"] { flex-wrap: nowrap; align-items: center; gap: 2px; }
254580
+ ${R2} [data-pptx-chrome="arrange-controls"] .pptx-rb-sep { display: none; }
254581
+ ${R2} [data-pptx-chrome="arrange-controls"] [data-pptx-chrome="arrange-extras"],
254582
+ ${R2} [data-pptx-chrome="arrange-controls"] > [data-pptx-chrome="duplicate-controls"] { display: contents; }
254583
+ ${R2} [data-pptx-chrome="arrange-controls"] [data-ribbon-control="home.arrange.outlineWidth"] { order: 1; }
254584
+ ${R2} [data-pptx-chrome="arrange-controls"] [data-pptx-chrome="order-controls"] { order: 2; }
254585
+ ${R2} [data-pptx-chrome="arrange-controls"] :is([data-ribbon-control="home.arrange.duplicate"], [data-ribbon-control="home.arrange.delete"]) { order: 3; }
254586
+ ${R2} [data-ribbon-control="home.arrange.outlineWidth"] {
254587
+ box-sizing: border-box; flex: none; width: 52px; height: 24px; padding: 0 4px;
254588
+ border: 1px solid var(--pptx-border); border-radius: 4px; background: transparent;
254589
+ font-size: 12px; line-height: 16px; color: var(--pptx-foreground); text-align: center;
254590
+ }
254591
+ ${R2} [data-ribbon-control="home.arrange.outlineWidth"]:disabled { opacity: .4; }
254606
254592
  }
254607
254593
  `;
254608
254594
  var EDITOR_INSPECTOR_CSS = `
@@ -254728,6 +254714,45 @@ var EDITOR_LAYOUT_CSS = `
254728
254714
  [data-pptx-editor-chrome] [data-pptx-chrome="notes-header"]:hover { color: var(--pptx-foreground); }
254729
254715
  }
254730
254716
  `;
254717
+ var R3 = '[data-pptx-editor-chrome] [data-pptx-chrome="ribbon-content"][data-pptx-chrome]';
254718
+ var FACE = '[data-pptx-chrome="ribbon-collapse"]';
254719
+ var NATIVE = ":not(pptx-ui-ribbon-group)";
254720
+ var EDITOR_COLLAPSE_CSS = `
254721
+ @media (min-width: 768px) {
254722
+ /* The dialog launcher: a corner glyph at the bottom right of a group. */
254723
+ ${R3} [data-ribbon-group] > [data-pptx-chrome="group-launcher"] {
254724
+ position: absolute; right: 1px; bottom: 1px; display: inline-flex; align-items: center; justify-content: center;
254725
+ width: 14px; min-width: 14px; height: 14px; min-height: 14px; padding: 0; border: 0; border-radius: 2px;
254726
+ background: transparent; color: var(--pptx-muted-foreground); cursor: pointer;
254727
+ }
254728
+ ${R3} [data-ribbon-group] > [data-pptx-chrome="group-launcher"] svg { width: 10px; height: 10px; fill: none; stroke: currentColor; stroke-width: 1.3; stroke-linecap: round; stroke-linejoin: round; }
254729
+ ${R3} [data-ribbon-group] > [data-pptx-chrome="group-launcher"]:hover { background: var(--pptx-accent); color: var(--pptx-foreground); }
254730
+ ${R3} [data-ribbon-group] > [data-pptx-chrome="group-launcher"]:focus-visible { outline: 2px solid var(--pptx-ring); outline-offset: 1px; }
254731
+ ${R3} [data-ribbon-group][data-collapsed] > [data-pptx-chrome="group-launcher"] { display: none; }
254732
+ ${R3} [data-ribbon-group] > ${FACE} { display: none; }
254733
+ ${R3} [data-ribbon-group][data-collapsed]${NATIVE} > ${FACE} {
254734
+ display: flex; flex-direction: column; align-items: center; justify-content: flex-start; gap: 2px;
254735
+ box-sizing: border-box; min-width: 56px; height: 66px; margin: 3px 0 0; padding: 3px 6px;
254736
+ border: 0; border-radius: 4px; background: transparent; color: var(--pptx-foreground);
254737
+ font: inherit; font-size: 12px; line-height: 15px; cursor: pointer;
254738
+ }
254739
+ ${R3} [data-ribbon-group][data-collapsed]${NATIVE} > ${FACE}:hover,
254740
+ ${R3} [data-ribbon-group][data-open]${NATIVE} > ${FACE} { background: var(--pptx-accent); }
254741
+ ${R3} [data-ribbon-group][data-collapsed]${NATIVE} > ${FACE}:focus-visible { outline: 2px solid var(--pptx-ring); outline-offset: 2px; }
254742
+ ${R3} [data-ribbon-group][data-collapsed]${NATIVE} > ${FACE} svg { width: 32px; height: 32px; flex: none; stroke-width: 1.35; color: var(--pptx-primary); }
254743
+ ${R3} [data-ribbon-group][data-collapsed]${NATIVE} > ${FACE} svg.chev { width: 9px; height: 9px; margin-top: -1px; stroke-width: 1.8; color: inherit; }
254744
+ ${R3} [data-ribbon-group][data-collapsed]${NATIVE} > :not(${FACE}) { display: none !important; }
254745
+ ${R3} [data-ribbon-group][data-collapsed][data-open]${NATIVE} > :not(${FACE}):not([data-pptx-chrome="ribbon-group-label"]):not([data-pptx-chrome="group-launcher"]) {
254746
+ display: flex !important; flex-wrap: wrap; position: fixed; top: var(--pptx-collapse-y, 120px); left: var(--pptx-collapse-x, 8px);
254747
+ z-index: 1200; box-sizing: border-box; width: auto; max-width: calc(100vw - 16px); padding: 8px;
254748
+ background: var(--pptx-popover); color: var(--pptx-popover-foreground);
254749
+ border: 1px solid var(--pptx-border); border-radius: 6px; box-shadow: 0 8px 24px #0005;
254750
+ }
254751
+ }
254752
+ @media (forced-colors: active) {
254753
+ ${R3} [data-ribbon-group][data-collapsed][data-open]${NATIVE} > :not(${FACE}) { border-color: ButtonText; }
254754
+ }
254755
+ `;
254731
254756
  var EDITOR_RIBBON_CSS = `
254732
254757
  @media (min-width: 768px) {
254733
254758
  [data-pptx-editor-chrome] [data-pptx-chrome="ribbon"] {
@@ -254767,7 +254792,7 @@ var EDITOR_RIBBON_CSS = `
254767
254792
  height: 2.5px; background: var(--pptx-primary);
254768
254793
  }
254769
254794
  [data-pptx-editor-chrome] [data-pptx-chrome="ribbon-content"] {
254770
- min-height: 82px; padding: 2px 4px; gap: 0; box-sizing: border-box;
254795
+ min-height: 92px; padding: 2px 4px; gap: 0; box-sizing: border-box;
254771
254796
  }
254772
254797
  [data-pptx-editor-chrome] [data-pptx-chrome="ribbon-group-label"] {
254773
254798
  font-size: 9px; line-height: 9px; font-weight: 400;
@@ -254837,7 +254862,7 @@ var EDITOR_THUMBNAIL_CSS = `
254837
254862
  }
254838
254863
  }
254839
254864
  `;
254840
- var EDITOR_CHROME_CSS = EDITOR_LAYOUT_CSS + EDITOR_THUMBNAIL_CSS + EDITOR_RIBBON_CSS + EDITOR_INSPECTOR_CSS + EDITOR_CONTROLS_CSS + EDITOR_FONT_PICKER_CSS + EDITOR_HOME_LAYOUT_CSS + EDITOR_ARRANGE_CSS + EDITOR_CLUSTER_CSS;
254865
+ var EDITOR_CHROME_CSS = EDITOR_LAYOUT_CSS + EDITOR_THUMBNAIL_CSS + EDITOR_RIBBON_CSS + EDITOR_INSPECTOR_CSS + EDITOR_CONTROLS_CSS + EDITOR_FONT_PICKER_CSS + EDITOR_HOME_LAYOUT_CSS + EDITOR_CLUSTER_CSS + EDITOR_COLLAPSE_CSS;
254841
254866
  var ARRANGE_ALIGNMENT_ICONS = {
254842
254867
  "home.arrange.align.left": {
254843
254868
  attrs: {
@@ -256073,6 +256098,10 @@ var control = (id, labelKey, fallback, testId, extra = {}) => ({ id, labelKey, f
256073
256098
  var strip3 = (...controls2) => ({
256074
256099
  controls: controls2
256075
256100
  });
256101
+ var column = (...controls2) => ({
256102
+ controls: controls2,
256103
+ stack: true
256104
+ });
256076
256105
  var pills = (chrome, ...controls2) => ({ controls: controls2, free: true, chrome });
256077
256106
  var text22 = (key2, fallback) => ({ key: key2, fallback });
256078
256107
  var item3 = (value, labelKey, fallback, extra = {}) => ({ value, labelKey, fallback, ...extra });
@@ -256185,6 +256214,7 @@ var RIBBON_HOME_OBJECT_FAMILIES = {
256185
256214
  void 0,
256186
256215
  control("home.slides.newSlide", "pptx.home.newSlide", "New Slide", void 0, {
256187
256216
  text: text22("pptx.home.newSlide", "New Slide"),
256217
+ large: true,
256188
256218
  kind: "layout",
256189
256219
  caret: { labelKey: "pptx.home.chooseLayout", fallback: "Choose layout" }
256190
256220
  }),
@@ -256194,19 +256224,23 @@ var RIBBON_HOME_OBJECT_FAMILIES = {
256194
256224
  "Slide templates",
256195
256225
  void 0,
256196
256226
  {
256197
- text: text22("pptx.home.slideTemplates", "Slide templates")
256227
+ text: text22("pptx.home.slideTemplates", "Slide templates"),
256228
+ large: true
256198
256229
  }
256199
256230
  ),
256200
256231
  control("home.slides.layout", "pptx.master.layout", "Layout", void 0, {
256201
256232
  text: text22("pptx.master.layout", "Layout"),
256233
+ large: true,
256202
256234
  kind: "layout",
256203
256235
  popup: true
256204
256236
  }),
256205
256237
  control("home.slides.reset", "pptx.sections.resetSlideTitle", "Reset slide", void 0, {
256206
- text: text22("pptx.animations.reset", "Reset")
256238
+ text: text22("pptx.animations.reset", "Reset"),
256239
+ large: true
256207
256240
  }),
256208
256241
  control("home.slides.section", "pptx.sections.addSection", "Add section", void 0, {
256209
- text: text22("pptx.sections.sectionButtonLabel", "Section")
256242
+ text: text22("pptx.sections.sectionButtonLabel", "Section"),
256243
+ large: true
256210
256244
  })
256211
256245
  )
256212
256246
  ]
@@ -256217,17 +256251,21 @@ var RIBBON_HOME_OBJECT_FAMILIES = {
256217
256251
  void 0,
256218
256252
  control("home.drawing.shapes", "pptx.drawing.shapes", "Shapes", void 0, {
256219
256253
  text: text22("pptx.drawing.shapes", "Shapes"),
256254
+ large: true,
256220
256255
  kind: "menu",
256221
256256
  items: HOME_SHAPE_ITEMS,
256222
256257
  popup: true
256223
256258
  }),
256224
256259
  control("home.drawing.arrange", "pptx.ribbon.arrange", "Arrange", void 0, {
256225
256260
  text: text22("pptx.ribbon.arrange", "Arrange"),
256261
+ large: true,
256226
256262
  kind: "menu",
256227
256263
  items: HOME_DRAWING_ARRANGE_ITEMS,
256228
256264
  popup: true
256229
256265
  }),
256230
256266
  control("home.drawing.shapeFill", "pptx.drawing.shapeFill", "Shape Fill", void 0, {
256267
+ text: text22("pptx.drawing.shapeFill", "Shape Fill"),
256268
+ chevron: true,
256231
256269
  kind: "colour",
256232
256270
  popup: true,
256233
256271
  colour: { swatches: "shape", theme: true, swatchLabelPrefix: "Fill colour" }
@@ -256238,6 +256276,8 @@ var RIBBON_HOME_OBJECT_FAMILIES = {
256238
256276
  "Shape Outline",
256239
256277
  void 0,
256240
256278
  {
256279
+ text: text22("pptx.drawing.shapeOutline", "Shape Outline"),
256280
+ chevron: true,
256241
256281
  kind: "colour",
256242
256282
  popup: true,
256243
256283
  colour: { swatches: "shape", theme: true, swatchLabelPrefix: "Outline colour" }
@@ -256337,13 +256377,8 @@ var RIBBON_HOME_OBJECT_FAMILIES = {
256337
256377
  )
256338
256378
  ]
256339
256379
  },
256380
+ // No group of its own: the fields are the first row of the Font group the host draws.
256340
256381
  "font-picker": {
256341
- group: {
256342
- id: "home.font",
256343
- captionKey: "pptx.ribbon.font",
256344
- fallback: "Font",
256345
- rowChrome: "font-picker-controls"
256346
- },
256347
256382
  clusters: [
256348
256383
  {
256349
256384
  free: true,
@@ -256418,14 +256453,24 @@ var RIBBON_HOME_FAMILIES = {
256418
256453
  group: { id: "home.clipboard", captionKey: "pptx.ribbon.clipboard", fallback: "Clipboard" },
256419
256454
  clusters: [
256420
256455
  strip3(
256421
- control("home.clipboard.paste", "pptx.arrange.paste", "Paste"),
256422
- control("home.clipboard.cut", "pptx.arrange.cut", "Cut"),
256423
- control("home.clipboard.copy", "pptx.arrange.copy", "Copy"),
256456
+ control("home.clipboard.paste", "pptx.arrange.paste", "Paste", void 0, {
256457
+ large: true,
256458
+ text: text22("pptx.arrange.paste", "Paste")
256459
+ })
256460
+ ),
256461
+ column(
256462
+ control("home.clipboard.cut", "pptx.arrange.cut", "Cut", void 0, {
256463
+ text: text22("pptx.arrange.cut", "Cut")
256464
+ }),
256465
+ control("home.clipboard.copy", "pptx.arrange.copy", "Copy", void 0, {
256466
+ text: text22("pptx.arrange.copy", "Copy")
256467
+ }),
256424
256468
  control(
256425
256469
  "home.clipboard.formatPainter",
256426
256470
  "pptx.arrange.formatPainter",
256427
256471
  "Format Painter",
256428
- "format-painter-toggle"
256472
+ "format-painter-toggle",
256473
+ { text: text22("pptx.arrange.formatPainter", "Format Painter") }
256429
256474
  )
256430
256475
  )
256431
256476
  ]
@@ -256524,13 +256569,18 @@ var RIBBON_HOME_FAMILIES = {
256524
256569
  },
256525
256570
  editing: {
256526
256571
  clusters: [
256527
- strip3(
256528
- control("home.editing.find", "pptx.editing.find", "Find"),
256529
- control("home.editing.replace", "pptx.ribbon.replace", "Replace")
256572
+ column(
256573
+ control("home.editing.find", "pptx.editing.find", "Find", void 0, {
256574
+ text: text22("pptx.editing.find", "Find")
256575
+ }),
256576
+ control("home.editing.replace", "pptx.ribbon.replace", "Replace", void 0, {
256577
+ text: text22("pptx.ribbon.replace", "Replace")
256578
+ })
256530
256579
  ),
256531
256580
  pills(
256532
256581
  void 0,
256533
256582
  control("home.editing.select", "pptx.ribbon.tool.select", "Select", void 0, {
256583
+ text: text22("pptx.ribbon.tool.select", "Select"),
256534
256584
  kind: "menu",
256535
256585
  popup: true,
256536
256586
  items: HOME_SELECT_ITEMS
@@ -257587,7 +257637,7 @@ button.busy::before { content: ''; width: 12px; height: 12px; border: 2px solid
257587
257637
  @media (prefers-reduced-motion: reduce) { button.busy::before { animation: none; } }
257588
257638
  button:disabled { cursor: not-allowed; opacity: .55; }
257589
257639
  button:focus-visible { outline: 2px solid var(--pptx-ring, #6366f1); outline-offset: 2px; }
257590
- @media (pointer: coarse) { button { min-width: 44px; min-height: 44px; } }
257640
+ @media (pointer: coarse), (max-width: 767px) { button { min-width: 44px; min-height: 44px; } }
257591
257641
  @media (forced-colors: active) {
257592
257642
  button, button.primary, button.warning, button.danger { border-color: ButtonText; background: ButtonFace; color: ButtonText; }
257593
257643
  button:hover:not(:disabled) { background: Highlight; color: HighlightText; }
@@ -259703,29 +259753,29 @@ function createAnimationsGalleryView(doc, controlId, aria, columns, pick) {
259703
259753
  strip22.className = "strip";
259704
259754
  const columnEls = [];
259705
259755
  const buttons = [];
259706
- columns.forEach((column) => {
259756
+ columns.forEach((column2) => {
259707
259757
  const el = doc.createElement("div");
259708
259758
  el.className = "column";
259709
259759
  el.setAttribute("role", "group");
259710
259760
  columnEls.push(el);
259711
- for (const item4 of column.items) {
259761
+ for (const item4 of column2.items) {
259712
259762
  const button = doc.createElement("button");
259713
259763
  button.type = "button";
259714
259764
  button.className = "preset";
259715
259765
  button.dataset.pptxCompact = "";
259716
- button.dataset.tone = column.tone;
259766
+ button.dataset.tone = column2.tone;
259717
259767
  button.dataset.animationPreset = item4.value;
259718
259768
  const name = doc.createElement("span");
259719
259769
  name.className = "name";
259720
259770
  button.append(
259721
259771
  icon(
259722
259772
  doc,
259723
- column.tone === "path" ? RIBBON_ANIMATION_ICON_PATHS.moveRight : RIBBON_ANIMATION_ICON_PATHS.star,
259773
+ column2.tone === "path" ? RIBBON_ANIMATION_ICON_PATHS.moveRight : RIBBON_ANIMATION_ICON_PATHS.star,
259724
259774
  "tile-icon"
259725
259775
  ),
259726
259776
  name
259727
259777
  );
259728
- button.addEventListener("click", () => pick(column.key, item4.value));
259778
+ button.addEventListener("click", () => pick(column2.key, item4.value));
259729
259779
  button.addEventListener("keydown", (event) => {
259730
259780
  if (event.key === " " || event.key === "Enter") {
259731
259781
  event.stopPropagation();
@@ -259751,10 +259801,10 @@ function createAnimationsGalleryView(doc, controlId, aria, columns, pick) {
259751
259801
  const moreLabel = animationsLabel(state, "pptx.animations.moreEffects", "More Effects");
259752
259802
  more.setAttribute("aria-label", moreLabel);
259753
259803
  more.title = moreLabel;
259754
- columns.forEach((column, index) => {
259804
+ columns.forEach((column2, index) => {
259755
259805
  columnEls[index].setAttribute(
259756
259806
  "aria-label",
259757
- animationsLabel(state, column.labelKey, column.fallback)
259807
+ animationsLabel(state, column2.labelKey, column2.fallback)
259758
259808
  );
259759
259809
  });
259760
259810
  const gated = animationsGated(state);
@@ -260129,21 +260179,29 @@ var RIBBON_COMMAND_STYLES = `
260129
260179
  .badge { position:absolute; top:0; right:0; border-radius:99px; padding:0 3px; background:var(--pptx-primary,#6366f1); color:var(--pptx-primary-foreground,#fff); font-size:9px; }
260130
260180
  .badge[hidden] { display:none; }
260131
260181
  span[hidden],.caret[hidden] { display:none; }
260182
+ /* The chevron trails the last line of a large command's label, as PowerPoint draws it. */
260132
260183
  .caret { display:inline-block; width:10px; height:10px; margin-inline-start:2px; vertical-align:-1px; color:var(--pptx-muted-foreground,#94a3b8); fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
260184
+ /* Large command: Office draws a 32px glyph above a two-line label. */
260133
260185
  button {
260134
260186
  box-sizing: border-box; position:relative; display: inline-flex; flex-direction: column; align-items: center;
260135
- justify-content: flex-start; gap: 2px; min-width: 54px; max-width: 78px; height: 58px;
260136
- padding: 4px; border: 0; border-radius: 4px; background: transparent;
260187
+ justify-content: flex-start; gap: 2px; min-width: 48px; max-width: 80px; height: 66px;
260188
+ padding: 3px 4px; border: 0; border-radius: 4px; background: transparent;
260137
260189
  color: var(--pptx-foreground, #f9fafb); cursor: pointer; font: inherit;
260138
- font-size: 9px; line-height: 11px; text-align: center;
260190
+ font-size: 12px; line-height: 15px; text-align: center;
260139
260191
  }
260140
- svg { width: 24px; height: 24px; flex: none; color: var(--pptx-primary, #6366f1);
260141
- fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
260192
+ svg { width: 32px; height: 32px; flex: none; color: var(--pptx-primary, #6366f1);
260193
+ fill: none; stroke: currentColor; stroke-width: 1.4; stroke-linecap: round; stroke-linejoin: round; }
260142
260194
  :host([compact]) button { flex-direction: row; align-items: center; justify-content: flex-start;
260143
- gap: 6px; min-width: 88px; max-width: none; height: 26px; padding: 0 4px; font-size: 10px; text-align: left; }
260144
- :host([compact]) svg { width: 16px; height: 16px; }
260195
+ gap: 6px; min-width: 0; max-width: none; height: 24px; padding: 0 6px; font-size: 12px; line-height: 16px; text-align: left; }
260196
+ :host([compact]) svg { width: 16px; height: 16px; stroke-width: 1.5; }
260145
260197
  :host([icon-only]) button { min-width:28px; max-width:none; height:28px; padding:4px; }
260198
+ :host([icon-only]) svg { width: 18px; height: 18px; }
260199
+ /* Drawing tools: a tall, label-less button like Office's pen and eraser tiles. */
260200
+ :host([icon-only][tall]) button { min-width:40px; max-width:none; height:62px; padding:4px; }
260201
+ :host([icon-only][tall]) svg { width:30px; height:30px; }
260202
+ :host([icon-only][tall][active]) button { background: color-mix(in srgb, var(--pptx-primary, #6366f1) 22%, transparent); box-shadow: inset 0 0 0 1px var(--pptx-primary, #6366f1); }
260146
260203
  button:hover:not(:disabled) { background: var(--pptx-accent, #33334d); }
260204
+ button:active:not(:disabled) { background: color-mix(in srgb, var(--pptx-accent, #33334d) 70%, var(--pptx-primary, #6366f1)); }
260147
260205
  :host([active]) button { background: color-mix(in srgb, var(--pptx-primary, #6366f1) 15%, transparent); color: var(--pptx-primary, #6366f1); }
260148
260206
  button:disabled { opacity: .35; cursor: not-allowed; }
260149
260207
  button:focus-visible { outline: 2px solid var(--pptx-ring, #6366f1); outline-offset: 2px; }
@@ -260172,7 +260230,8 @@ function definePptxRibbonCommand(registry) {
260172
260230
  "data-ribbon-control",
260173
260231
  "badge",
260174
260232
  "icon-only",
260175
- "caret"
260233
+ "caret",
260234
+ "tall"
260176
260235
  ];
260177
260236
  button;
260178
260237
  text;
@@ -260258,11 +260317,11 @@ function definePptxRibbonCommand(registry) {
260258
260317
  registry.define("pptx-ui-ribbon-command", RibbonCommand);
260259
260318
  }
260260
260319
  var RIBBON_DRAW_STYLES = `
260261
- :host { display:inline-flex; align-items:center; color:var(--pptx-foreground,#f8fafc); font:inherit; }
260262
- .tools,.settings,label { display:inline-flex; align-items:center; gap:6px; }
260263
- .tools { gap:2px; }
260264
- .settings { gap:10px; margin-inline-start:10px; font-size:11px; }
260265
- label { color:var(--pptx-muted-foreground,#94a3b8); }
260320
+ :host { display:inline-flex; align-items:flex-start; color:var(--pptx-foreground,#f8fafc); font:inherit; }
260321
+ .tools,.settings { display:inline-flex; align-items:flex-start; gap:2px; }
260322
+ .settings { gap:8px; margin-inline-start:6px; padding-inline-start:8px; border-inline-start:1px solid color-mix(in srgb,var(--pptx-border,#374151) 80%,transparent); font-size:12px; }
260323
+ label { display:flex; flex-wrap:wrap; align-items:center; gap:4px 6px; width:150px; color:var(--pptx-foreground,#f8fafc); }
260324
+ label > span { flex:0 0 100%; }
260266
260325
  button,input,summary { font:inherit; color:inherit; box-sizing:border-box; }
260267
260326
  button,summary,input[type=color] { border:1px solid var(--pptx-border,#374151); background:var(--pptx-background,#111827); border-radius:4px; }
260268
260327
  button,summary { cursor:pointer; }
@@ -260273,11 +260332,12 @@ button:disabled,input:disabled { opacity:.4; cursor:default; }
260273
260332
  button:focus-visible,summary:focus-visible,input:focus-visible { outline:2px solid var(--pptx-ring,#818cf8); outline-offset:2px; }
260274
260333
  svg { width:16px; height:16px; fill:none; stroke:currentColor; stroke-width:1.5; stroke-linecap:round; stroke-linejoin:round; }
260275
260334
  details { position:relative; }
260276
- summary { padding:5px 8px; min-height:28px; display:flex; align-items:center; gap:6px; list-style:none; }
260335
+ /* Pen colour: Office shows the ink colour on the tool; here a swatch sits above its caption. */
260336
+ summary { box-sizing:border-box; width:56px; height:62px; padding:4px; display:flex; flex-direction:column; align-items:center; justify-content:flex-start; gap:3px; border:0; background:transparent; list-style:none; font-size:12px; line-height:15px; text-align:center; }
260277
260337
  summary::-webkit-details-marker { display:none; }
260278
260338
  summary[aria-disabled=true] { opacity:.4; cursor:default; }
260279
- summary::after { content:'\\2304'; }
260280
- .preview { width:14px; height:14px; border:1px solid var(--pptx-border,#374151); }
260339
+ summary::after { content:''; width:6px; height:6px; margin-top:-3px; border-right:1.5px solid currentColor; border-bottom:1.5px solid currentColor; transform:rotate(45deg) scale(.8); }
260340
+ .preview { width:30px; height:30px; border:1px solid var(--pptx-border,#374151); border-radius:4px; }
260281
260341
  .palette { box-sizing:border-box; position:fixed; z-index:1200; width:240px; max-width:calc(100vw - 16px); max-height:65vh; overflow:auto; padding:8px; background:var(--pptx-popover,#111827); border:1px solid var(--pptx-border,#374151); border-radius:6px; box-shadow:0 8px 24px #0005; }
260282
260342
  .swatches { display:flex; flex-wrap:wrap; gap:4px; margin:4px 0 8px; }
260283
260343
  .swatch { width:28px; height:28px; border:1px solid var(--pptx-border,#374151); }
@@ -260306,7 +260366,7 @@ function createRibbonDrawView(doc, request) {
260306
260366
  const tools = DRAW_RIBBON_TOOLS.map((tool) => {
260307
260367
  const command = doc.createElement("pptx-ui-ribbon-command");
260308
260368
  command.dataset.ribbonControl = `draw.tools.${tool.id}`;
260309
- command.setAttribute("compact", "");
260369
+ command.setAttribute("tall", "");
260310
260370
  command.setAttribute("icon-only", "");
260311
260371
  command.setAttribute("icon", tool.icon);
260312
260372
  command.addEventListener("command-request", (event) => {
@@ -260552,7 +260612,8 @@ ${host} button { box-sizing:border-box; font:inherit; color:inherit; cursor:poin
260552
260612
  ${host} button:hover:not(:disabled) { background:var(--pptx-accent,#33334d); }
260553
260613
  ${host} button:disabled { opacity:.4; cursor:not-allowed; }
260554
260614
  ${host} button:focus-visible { outline:2px solid var(--pptx-ring,#6366f1); outline-offset:2px; }
260555
- ${host} .trigger { display:inline-flex; align-items:center; gap:6px; min-height:26px; padding:4px 8px; font-size:11px; white-space:nowrap; }
260615
+ ${host} .trigger { display:inline-flex; align-items:center; gap:6px; min-height:24px; padding:0 6px; font-size:12px; white-space:nowrap; }
260616
+ ${host}:not([mode=inline]) .trigger { border-color:transparent; background:transparent; }
260556
260617
  ${host} .trigger svg { width:16px; height:16px; fill:none; stroke:currentColor; stroke-width:1.6; stroke-linecap:round; stroke-linejoin:round; }
260557
260618
  ${host}[mode=inline] .trigger, ${host}[chevron-only] .trigger { align-self:stretch; padding:0 4px; }
260558
260619
  ${host} .strip { display:flex; gap:2px; padding:2px; align-items:center; }
@@ -260591,6 +260652,30 @@ function attachRibbonGalleryStyles(doc) {
260591
260652
  doc.head.append(style);
260592
260653
  }
260593
260654
  }
260655
+ var BLOCKED_ELEMENTS = /* @__PURE__ */ new Set(["script", "foreignobject", "iframe", "object", "embed"]);
260656
+ function parseSvgPreview(doc, svg) {
260657
+ const Parser = globalThis.DOMParser;
260658
+ if (typeof Parser !== "function") {
260659
+ return null;
260660
+ }
260661
+ const parsed = new Parser().parseFromString(svg, "image/svg+xml");
260662
+ const root = parsed.documentElement;
260663
+ if (root.localName !== "svg" || parsed.getElementsByTagName("parsererror").length > 0) {
260664
+ return null;
260665
+ }
260666
+ for (const node of Array.from(root.querySelectorAll("*"))) {
260667
+ if (BLOCKED_ELEMENTS.has(node.localName.toLowerCase())) {
260668
+ node.remove();
260669
+ continue;
260670
+ }
260671
+ for (const attribute2 of Array.from(node.attributes)) {
260672
+ if (/^on/iu.test(attribute2.name) || /^\s*javascript:/iu.test(attribute2.value)) {
260673
+ node.removeAttribute(attribute2.name);
260674
+ }
260675
+ }
260676
+ }
260677
+ return doc.importNode(root, true);
260678
+ }
260594
260679
  function createRibbonGalleryView(doc, pick, toggle2) {
260595
260680
  const root = doc.createElement("span");
260596
260681
  root.className = "gallery-view";
@@ -260623,7 +260708,10 @@ function createRibbonGalleryView(doc, pick, toggle2) {
260623
260708
  button.title = galleryItemLabel(item4, t);
260624
260709
  button.style.width = `${width + 6}px`;
260625
260710
  button.style.height = `${height + 6}px`;
260626
- button.innerHTML = item4.previewSvg;
260711
+ const preview = parseSvgPreview(doc, item4.previewSvg);
260712
+ if (preview) {
260713
+ button.append(preview);
260714
+ }
260627
260715
  button.addEventListener("click", () => pick(item4.id));
260628
260716
  return button;
260629
260717
  };
@@ -260928,27 +261016,58 @@ function definePptxRibbonGallery(registry) {
260928
261016
  }
260929
261017
  var STYLES = `
260930
261018
  :host { display: inline-flex; flex: none; align-self: stretch; }
260931
- .group { box-sizing: border-box; display: flex; flex-direction: column; justify-content: space-between;
260932
- min-height: 78px; padding: 4px 8px 2px; border-right: 1px solid color-mix(in srgb, var(--pptx-border, #33334d) 60%, transparent); }
260933
- :host(:last-child) .group { border-right: 0; }
260934
- .row { display: flex; align-items: flex-start; gap: 4px; }
261019
+ .group { position: relative; box-sizing: border-box; display: flex; flex-direction: column; justify-content: space-between;
261020
+ min-height: 84px; padding: 3px 6px 0; }
261021
+ /* Office draws a hairline between groups that stops short of the group's top and bottom. */
261022
+ .group::after { content: ''; position: absolute; top: 6px; bottom: 6px; right: 0; width: 1px;
261023
+ background: color-mix(in srgb, var(--pptx-border, #33334d) 80%, transparent); }
261024
+ :host(:last-child) .group::after { content: none; }
261025
+ .row { display: flex; align-items: flex-start; gap: 2px; flex: 1; }
260935
261026
  /* One-line (compact) groups centre their commands on the whole group box; the caption
260936
261027
  stays in flow and the row's negative margin hands its height to the centring. */
260937
- :host([data-compact-row]) .row { flex: 1; align-items: center; margin-bottom: -14px; }
260938
- /* Several small drop-down galleries or commands (Picture Format > Adjust, SmartArt > Create Graphic) stack in columns of three, as PowerPoint draws them. */
260939
- :host([data-stack]) .row { flex-direction: column; align-items: flex-start; align-content: flex-start; flex-wrap: wrap; max-height: 84px; gap: 2px; margin-bottom: 0; }
261028
+ :host([data-compact-row]) .row { align-items: center; margin-bottom: -14px; }
261029
+ /* Several small drop-down galleries or commands (Picture Format > Adjust, SmartArt > Create Graphic, Design > Variants) stack in columns of three, as PowerPoint draws them. */
261030
+ :host([data-stack]) .row { flex-direction: column; align-items: stretch; align-content: flex-start; flex-wrap: wrap; max-height: 80px; gap: 2px; margin-bottom: 0; }
260940
261031
  ::slotted(*) { flex-shrink: 0; }
260941
- .caption { padding-top: 2px; color: var(--pptx-muted-foreground, #94a3b8); font: inherit;
260942
- font-size: 9px; line-height: 12px; text-align: center; white-space: nowrap; }
261032
+ .foot { position: relative; display: flex; align-items: center; justify-content: center; min-height: 16px; padding: 0 14px; }
261033
+ .caption { color: var(--pptx-muted-foreground, #94a3b8); font: inherit;
261034
+ font-size: 11px; line-height: 16px; text-align: center; white-space: nowrap; }
261035
+ .launcher { position: absolute; right: -2px; bottom: 1px; display: none; width: 14px; height: 14px; padding: 0;
261036
+ align-items: center; justify-content: center; border: 0; border-radius: 2px; background: transparent;
261037
+ color: var(--pptx-muted-foreground, #94a3b8); cursor: pointer; }
261038
+ :host([launcher]) .launcher { display: inline-flex; }
261039
+ .launcher svg { width: 10px; height: 10px; fill: none; stroke: currentColor; stroke-width: 1.3; stroke-linecap: round; stroke-linejoin: round; }
261040
+ .launcher:hover { background: var(--pptx-accent, #33334d); color: var(--pptx-foreground, #f8fafc); }
261041
+ .launcher:focus-visible { outline: 2px solid var(--pptx-ring, #6366f1); outline-offset: 1px; }
261042
+ /* Collapsed (narrow window): the group is one button; its commands open in a popup. */
261043
+ .face { display: none; }
261044
+ :host([data-collapsed]) .face { display: flex; flex-direction: column; align-items: center; justify-content: flex-start; gap: 2px;
261045
+ min-width: 56px; height: 66px; margin-top: 3px; padding: 3px 6px; border: 0; border-radius: 4px; background: transparent;
261046
+ color: var(--pptx-foreground, #f8fafc); font: inherit; font-size: 12px; line-height: 15px; cursor: pointer; }
261047
+ :host([data-collapsed]) .face:hover, :host([data-open]) .face { background: var(--pptx-accent, #33334d); }
261048
+ .face:focus-visible { outline: 2px solid var(--pptx-ring, #6366f1); outline-offset: 2px; }
261049
+ .face svg { width: 32px; height: 32px; fill: none; stroke: currentColor; stroke-width: 1.4; stroke-linecap: round; stroke-linejoin: round; color: var(--pptx-primary, #6366f1); }
261050
+ .face svg.chev { width: 9px; height: 9px; margin-top: -1px; stroke-width: 1.8; color: currentColor; }
261051
+ :host([data-collapsed]) .foot { display: none; }
261052
+ :host([data-collapsed]) .row { display: none; }
261053
+ :host([data-collapsed][data-open]) .row { display: flex; flex-wrap: wrap; position: fixed; top: var(--pptx-collapse-y, 120px); left: var(--pptx-collapse-x, 8px);
261054
+ z-index: 1200; box-sizing: border-box; max-width: calc(100vw - 16px); padding: 8px; background: var(--pptx-popover, #111827); color: var(--pptx-popover-foreground, #f9fafb);
261055
+ border: 1px solid var(--pptx-border, #374151); border-radius: 6px; box-shadow: 0 8px 24px #0005; }
261056
+ @media (forced-colors: active) { .group::after { background: ButtonText; } .launcher { color: ButtonText; } :host([data-collapsed][data-open]) .row { border-color: ButtonText; } }
260943
261057
  `;
261058
+ var LAUNCHER_PATH = "M2 2h4M2 2v4M10 10 4 4M10 10H7M10 10V7";
260944
261059
  var COMPACT_ROW_MAX_HEIGHT = 36;
260945
261060
  function definePptxRibbonGroup(registry) {
260946
261061
  if (registry.get("pptx-ui-ribbon-group")) {
260947
261062
  return;
260948
261063
  }
260949
261064
  class RibbonGroup extends HTMLElement {
260950
- static observedAttributes = ["label"];
261065
+ static observedAttributes = ["label", "launcher-label", "data-ribbon-group", "icon"];
260951
261066
  caption;
261067
+ launcherButton;
261068
+ face;
261069
+ facePath;
261070
+ faceLabel;
260952
261071
  observer;
260953
261072
  slotEl;
260954
261073
  constructor() {
@@ -260965,7 +261084,55 @@ function definePptxRibbonGroup(registry) {
260965
261084
  row.append(slot);
260966
261085
  this.caption = document.createElement("span");
260967
261086
  this.caption.className = "caption";
260968
- group2.append(row, this.caption);
261087
+ const foot = document.createElement("div");
261088
+ foot.className = "foot";
261089
+ this.launcherButton = document.createElement("button");
261090
+ this.launcherButton.type = "button";
261091
+ this.launcherButton.className = "launcher";
261092
+ this.launcherButton.dataset.pptxChrome = "group-launcher";
261093
+ const svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
261094
+ svg.setAttribute("viewBox", "0 0 12 12");
261095
+ svg.setAttribute("aria-hidden", "true");
261096
+ const path = document.createElementNS("http://www.w3.org/2000/svg", "path");
261097
+ path.setAttribute("d", LAUNCHER_PATH);
261098
+ svg.append(path);
261099
+ this.launcherButton.append(svg);
261100
+ this.launcherButton.addEventListener("click", () => {
261101
+ this.dispatchEvent(
261102
+ new CustomEvent("launcher-request", {
261103
+ detail: { id: this.getAttribute("data-ribbon-group") },
261104
+ bubbles: true,
261105
+ composed: true
261106
+ })
261107
+ );
261108
+ });
261109
+ foot.append(this.caption, this.launcherButton);
261110
+ this.face = document.createElement("button");
261111
+ this.face.type = "button";
261112
+ this.face.className = "face";
261113
+ this.face.dataset.pptxChrome = "ribbon-collapse";
261114
+ this.face.setAttribute("aria-haspopup", "true");
261115
+ const faceSvg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
261116
+ faceSvg.setAttribute("viewBox", "0 0 20 20");
261117
+ faceSvg.setAttribute("aria-hidden", "true");
261118
+ this.facePath = document.createElementNS("http://www.w3.org/2000/svg", "path");
261119
+ faceSvg.append(this.facePath);
261120
+ this.faceLabel = document.createElement("span");
261121
+ const chevron2 = document.createElementNS("http://www.w3.org/2000/svg", "svg");
261122
+ chevron2.setAttribute("viewBox", "0 0 10 10");
261123
+ chevron2.setAttribute("class", "chev");
261124
+ chevron2.setAttribute("aria-hidden", "true");
261125
+ const chevronPath2 = document.createElementNS("http://www.w3.org/2000/svg", "path");
261126
+ chevronPath2.setAttribute("d", "m1.5 3.5 3.5 3.5 3.5-3.5");
261127
+ chevron2.append(chevronPath2);
261128
+ this.face.append(faceSvg, this.faceLabel, chevron2);
261129
+ this.face.addEventListener(
261130
+ "click",
261131
+ () => this.dispatchEvent(
261132
+ new CustomEvent("ribbon-collapse-toggle", { bubbles: true, composed: true })
261133
+ )
261134
+ );
261135
+ group2.append(this.face, row, foot);
260969
261136
  root.append(group2);
260970
261137
  }
260971
261138
  connectedCallback() {
@@ -260978,6 +261145,9 @@ function definePptxRibbonGroup(registry) {
260978
261145
  }
260979
261146
  observe(slot) {
260980
261147
  this.observer?.disconnect();
261148
+ if (!this.isConnected) {
261149
+ return;
261150
+ }
260981
261151
  if (typeof ResizeObserver !== "undefined") {
260982
261152
  this.observer ??= new ResizeObserver(() => this.measure());
260983
261153
  }
@@ -261009,6 +261179,17 @@ function definePptxRibbonGroup(registry) {
261009
261179
  const label = this.getAttribute("label") ?? "";
261010
261180
  this.caption.textContent = label;
261011
261181
  this.setAttribute("aria-label", label);
261182
+ const launcherLabel = this.getAttribute("launcher-label") ?? `${label} options`;
261183
+ this.faceLabel.textContent = label;
261184
+ this.face.title = label;
261185
+ this.face.setAttribute("aria-label", label);
261186
+ this.face.setAttribute("aria-expanded", String(this.hasAttribute("data-open")));
261187
+ this.facePath.setAttribute(
261188
+ "d",
261189
+ RIBBON_ICON_PATHS[this.getAttribute("icon") ?? "layers"] ?? ""
261190
+ );
261191
+ this.launcherButton.setAttribute("aria-label", launcherLabel);
261192
+ this.launcherButton.title = launcherLabel;
261012
261193
  }
261013
261194
  }
261014
261195
  registry.define("pptx-ui-ribbon-group", RibbonGroup);
@@ -261031,23 +261212,63 @@ var RIBBON_HOME_TAGS = [
261031
261212
  var RIBBON_HOME_STYLES = `
261032
261213
  :host { display:contents; }
261033
261214
  .home { display:contents; }
261034
- .group { display:flex; flex-direction:column; align-items:center; gap:2px; }
261035
- .row { display:flex; align-items:center; gap:4px; }
261036
- .wrap { display:inline-flex; align-items:center; gap:4px; }
261037
- .free { display:inline-flex; align-items:center; gap:4px; }
261215
+ .slot[hidden] { display:none !important; }
261216
+ .free pptx-ui-select, .wrap pptx-ui-select { flex:none; }
261217
+ /* Groups the element renders itself (Clipboard, Slides): Office's column of rows over a caption. */
261218
+ .group { position:relative; box-sizing:border-box; display:flex; flex-direction:column; align-items:stretch; justify-content:space-between; min-height:84px; padding:3px 6px 0; }
261219
+ .group::after { content:''; position:absolute; top:6px; bottom:6px; right:0; width:1px; background:color-mix(in srgb,var(--pptx-border,#475569) 80%,transparent); }
261220
+ .row { display:flex; align-items:flex-start; gap:2px; flex:1; }
261221
+ .wrap { display:inline-flex; align-items:center; gap:2px; }
261222
+ .free { display:inline-flex; align-items:flex-start; gap:2px; }
261038
261223
  .slot { position:relative; display:inline-flex; align-items:center; }
261039
261224
  .slot[hidden] { display:none !important; }
261040
- .free button.b { border-radius:4px; background:var(--pptx-muted,#2a2a3d); gap:6px; white-space:nowrap; }
261041
- .free button.b[data-tone=danger] { background:color-mix(in srgb,#b91c1c 80%,transparent); }
261042
- .free button.b[data-tone=danger]:hover:not(:disabled) { background:#dc2626; }
261043
- .slot > button.b[data-pptx-chrome=split-main] { border-radius:4px 0 0 4px; background:var(--pptx-muted,#2a2a3d); gap:6px; white-space:nowrap; }
261044
- .slot > button.b[data-pptx-chrome=split-caret] { min-width:20px; padding:0 4px; border-radius:0 4px 4px 0; border-left:1px solid color-mix(in srgb,var(--pptx-border,#475569) 40%,transparent); background:var(--pptx-muted,#2a2a3d); align-self:stretch; height:auto; }
261045
- .slot > button.b[data-pptx-chrome=split-caret] svg { width:12px; height:12px; }
261046
261225
  .text { white-space:nowrap; }
261047
- button.b .chev { width:12px; height:12px; }
261048
- .free button.b[aria-pressed=true] { background:var(--pptx-accent,#33334d); }
261049
- .free button.b[data-testid=format-painter-toggle][aria-pressed=true] { background:#d97706; color:#fffbeb; box-shadow:none; }
261050
- .free pptx-ui-select, .wrap pptx-ui-select { flex:none; }
261226
+ .caption { padding-top:0; color:var(--pptx-muted-foreground,#94a3b8); font-size:11px; line-height:16px; text-align:center; white-space:nowrap; }
261227
+ /* Clusters are plain flow containers: Office buttons are flat and joined by position, not by a pill. */
261228
+ .cluster { display:inline-flex; align-items:center; gap:0; }
261229
+ .cluster[data-stack] { flex-direction:column; align-items:stretch; justify-content:flex-start; gap:0; }
261230
+ .cluster[data-stack] > button.b { height:22px; min-height:22px; }
261231
+ .home:not([data-grouped]) .cluster, .home:not([data-grouped]) .free { display:contents; }
261232
+ button.b { box-sizing:border-box; display:inline-flex; align-items:center; justify-content:center; min-width:28px; height:24px; padding:0 6px; border:0; border-radius:4px; background:transparent; color:var(--pptx-foreground,#f8fafc); font:inherit; font-size:12px; line-height:16px; gap:6px; white-space:nowrap; cursor:pointer; }
261233
+ button.b[hidden] { display:none !important; }
261234
+ button.b svg { width:16px; height:16px; flex:none; stroke-width:1.5; }
261235
+ button.b svg.chev { width:10px; height:10px; stroke-width:2.2; }
261236
+ .cluster[data-stack] > button.b, .cluster[data-stack] > .slot > button.b { justify-content:flex-start; }
261237
+ /* Large command: a 32px glyph over a one- or two-line caption, chevron beneath. */
261238
+ button.b[data-size=large] { flex-direction:column; justify-content:flex-start; min-width:48px; height:66px; padding:3px 6px; gap:2px; line-height:15px; }
261239
+ button.b[data-size=large] svg:not(.chev) { width:32px; height:32px; stroke-width:1.35; }
261240
+ button.b[data-size=large] svg.chev { width:9px; height:9px; margin-top:-1px; }
261241
+ /* The split halves (New Slide): glyph and caption press the main action, the strip below opens the menu. */
261242
+ .slot[data-pptx-chrome=split-button]:has([data-size=large]) { flex-direction:column; align-items:stretch; }
261243
+ .slot > button.b[data-pptx-chrome=split-main][data-size=large] { height:52px; min-width:56px; border-radius:4px 4px 0 0; }
261244
+ .slot > button.b[data-pptx-chrome=split-caret][data-size=caret] { min-width:0; height:14px; padding:0; border-radius:0 0 4px 4px; border-left:0; align-self:stretch; }
261245
+ .slot > button.b[data-pptx-chrome=split-caret][data-size=caret] svg { width:10px; height:10px; stroke-width:2.2; }
261246
+ .slot > button.b[data-pptx-chrome=split-caret]:not([data-size]) { min-width:16px; padding:0 2px; border-radius:0 4px 4px 0; align-self:stretch; height:auto; }
261247
+ .slot > button.b[data-pptx-chrome=split-caret]:not([data-size]) svg { width:10px; height:10px; }
261248
+ button.b:hover:not(:disabled) { background:var(--pptx-accent,#33334d); }
261249
+ button.b:active:not(:disabled) { background:color-mix(in srgb,var(--pptx-accent,#33334d) 70%,var(--pptx-primary,#6366f1)); }
261250
+ button.b[aria-pressed=true] { background:color-mix(in srgb,var(--pptx-primary,#6366f1) 22%,transparent); box-shadow:inset 0 0 0 1px var(--pptx-primary,#6366f1); }
261251
+ button.b:disabled { opacity:.4; cursor:default; }
261252
+ button.b:focus-visible { outline:2px solid var(--pptx-ring,#818cf8); outline-offset:-2px; }
261253
+ /* Row placement for the shared buttons that sit among native controls (see home-rows-css). */
261254
+ [data-ribbon-control="home.font.increaseFontSize"] { order:3; }
261255
+ [data-ribbon-control="home.font.decreaseFontSize"] { order:4; }
261256
+ [data-ribbon-control="home.font.clearFormatting"] { order:5; }
261257
+ [data-ribbon-control="home.font.bold"] { order:10; }
261258
+ [data-ribbon-control="home.font.italic"] { order:11; }
261259
+ [data-ribbon-control="home.font.underline"] { order:12; }
261260
+ [data-ribbon-control="home.font.shadow"] { order:13; }
261261
+ [data-ribbon-control="home.font.strikethrough"] { order:14; }
261262
+ [data-ribbon-control="home.paragraph.decreaseIndent"] { order:3; }
261263
+ [data-ribbon-control="home.paragraph.increaseIndent"] { order:4; }
261264
+ [data-ribbon-control="home.paragraph.alignLeft"] { order:10; }
261265
+ [data-ribbon-control="home.paragraph.alignCenter"] { order:11; }
261266
+ [data-ribbon-control="home.paragraph.alignRight"] { order:12; }
261267
+ [data-ribbon-control="home.paragraph.justify"] { order:13; }
261268
+ [data-ribbon-control="home.drawing.shapes"] { order:1; }
261269
+ [data-ribbon-control="home.drawing.arrange"] { order:2; }
261270
+ [data-ribbon-control="home.drawing.shapeFill"] { order:4; }
261271
+ [data-ribbon-control="home.drawing.shapeOutline"] { order:5; }
261051
261272
  input.num { box-sizing:border-box; width:52px; height:26px; padding:0 4px; border:1px solid var(--pptx-border,#475569); border-radius:4px; background:var(--pptx-muted,#2a2a3d); color:var(--pptx-foreground,#f8fafc); font:inherit; font-size:11px; text-align:center; }
261052
261273
  input.num:disabled { opacity:.4; }
261053
261274
  input.num:focus-visible { outline:2px solid var(--pptx-ring,#818cf8); outline-offset:-2px; }
@@ -261085,15 +261306,7 @@ input.num:focus-visible { outline:2px solid var(--pptx-ring,#818cf8); outline-of
261085
261306
  .popup .surface { position:absolute; left:0; top:0; transform-origin:top left; overflow:hidden; }
261086
261307
  .popup .frame { position:absolute; box-sizing:border-box; border:0 dashed color-mix(in srgb,var(--pptx-muted-foreground,#94a3b8) 70%,transparent); background:color-mix(in srgb,var(--pptx-background,#111827) 20%,transparent); }
261087
261308
  .popup .name { width:100%; overflow:hidden; text-align:center; text-overflow:ellipsis; white-space:nowrap; }
261088
- .caption { color:var(--pptx-muted-foreground,#94a3b8); font-size:9px; line-height:9px; text-align:center; }
261089
- .cluster { display:inline-flex; align-items:center; border-radius:3px; overflow:hidden; background:var(--pptx-muted,#2a2a3d); }
261090
- button.b { box-sizing:border-box; display:inline-flex; align-items:center; justify-content:center; min-width:32px; height:28px; padding:6px 10px; border:0; border-radius:0; background:transparent; color:var(--pptx-foreground,#f8fafc); font:inherit; font-size:12px; cursor:pointer; }
261091
261309
  button.b[hidden] { display:none !important; }
261092
- button.b svg { width:16px; height:16px; flex:none; }
261093
- button.b:hover:not(:disabled) { background:var(--pptx-accent,#33334d); }
261094
- button.b[aria-pressed=true] { background:var(--pptx-accent,#33334d); box-shadow:inset 0 0 0 1px var(--pptx-primary,#6366f1); }
261095
- button.b:disabled { opacity:.4; cursor:default; }
261096
- button.b:focus-visible { outline:2px solid var(--pptx-ring,#818cf8); outline-offset:-2px; }
261097
261310
  @media (pointer:coarse),(max-width:900px) {
261098
261311
  button.b { min-width:44px !important; min-height:44px !important; }
261099
261312
  input.num { min-height:44px; }
@@ -261157,7 +261370,10 @@ function addButtonContent(doc, button, control2) {
261157
261370
  bar.dataset.pptxChrome = "color-swatch";
261158
261371
  button.append(bar);
261159
261372
  }
261160
- if (control2.chevron) {
261373
+ if (control2.large) {
261374
+ button.dataset.size = "large";
261375
+ }
261376
+ if (control2.chevron || control2.large && control2.popup) {
261161
261377
  const chevron2 = createRibbonControlIcon(doc, "home.slides.caret");
261162
261378
  chevron2.classList.add("chev");
261163
261379
  button.append(chevron2);
@@ -261358,8 +261574,8 @@ function paintHomeLayouts(doc, popup, model, state, artwork, pick) {
261358
261574
  var SVG = "http://www.w3.org/2000/svg";
261359
261575
  function shapeGlyph(doc, icon2) {
261360
261576
  const [, spec5] = icon2.split(":");
261361
- const [glyph, glyphClass = ""] = (spec5 ?? "").split("|");
261362
- const path = INSERT_SHAPE_GLYPH_PATHS[glyph];
261577
+ const [glyph2, glyphClass = ""] = (spec5 ?? "").split("|");
261578
+ const path = INSERT_SHAPE_GLYPH_PATHS[glyph2];
261363
261579
  if (!path) {
261364
261580
  return void 0;
261365
261581
  }
@@ -261405,9 +261621,9 @@ function paintHomeMenu(doc, menu, items, state, value, pick) {
261405
261621
  for (const [name, attr22] of Object.entries(row.attrs ?? {})) {
261406
261622
  button.setAttribute(name, attr22);
261407
261623
  }
261408
- const glyph = row.icon?.startsWith("shape:") ? shapeGlyph(doc, row.icon) : void 0;
261409
- if (glyph) {
261410
- button.append(glyph);
261624
+ const glyph2 = row.icon?.startsWith("shape:") ? shapeGlyph(doc, row.icon) : void 0;
261625
+ if (glyph2) {
261626
+ button.append(glyph2);
261411
261627
  }
261412
261628
  const text3 = doc.createElement("span");
261413
261629
  text3.className = "label";
@@ -261579,6 +261795,9 @@ function buildPopupControl(ctx, control2) {
261579
261795
  main.dataset.pptxChrome ??= "split-main";
261580
261796
  caret = makeHomeButton(doc, control2, () => popup.toggle(), "caret");
261581
261797
  caret.dataset.pptxChrome = "split-caret";
261798
+ if (control2.large) {
261799
+ caret.dataset.size = "caret";
261800
+ }
261582
261801
  caret.append(createRibbonControlIcon(doc, "home.slides.caret"));
261583
261802
  for (const [name, value] of Object.entries(control2.caret.attrs ?? {})) {
261584
261803
  caret.setAttribute(name, value);
@@ -261886,6 +262105,9 @@ function createRibbonHomeView(doc, family2, request, popupChange, artwork) {
261886
262105
  const spec5 = RIBBON_HOME_FAMILIES[family2];
261887
262106
  const root = doc.createElement("div");
261888
262107
  root.className = "home";
262108
+ if (spec5.group) {
262109
+ root.dataset.grouped = "";
262110
+ }
261889
262111
  const buttons = /* @__PURE__ */ new Map();
261890
262112
  const anchors = /* @__PURE__ */ new Map();
261891
262113
  const built = [];
@@ -261894,6 +262116,9 @@ function createRibbonHomeView(doc, family2, request, popupChange, artwork) {
261894
262116
  const strip22 = doc.createElement("div");
261895
262117
  strip22.className = cluster.free ? "free" : "cluster";
261896
262118
  strip22.dataset.pptxChrome = cluster.chrome ?? "control-cluster";
262119
+ if (cluster.stack) {
262120
+ strip22.dataset.stack = "";
262121
+ }
261897
262122
  for (const control2 of cluster.controls) {
261898
262123
  const item4 = buildControl(ctx, control2);
261899
262124
  built.push(item4);
@@ -262014,33 +262239,41 @@ var RIBBON_INSERT_STYLES = `
262014
262239
  [hidden] { display:none !important; }
262015
262240
  :host[hidden] { display:none !important; }
262016
262241
  .stack { display:flex; flex-direction:column; justify-content:flex-start; gap:2px; }
262017
- .cluster { display:flex; flex-direction:column; gap:2px; align-items:stretch; }
262018
- .pick,.trigger,.list button { font:inherit; color:inherit; box-sizing:border-box; }
262019
- pptx-ui-select { max-width:112px; font-size:11px; }
262020
- .pick,.trigger { display:inline-flex; align-items:center; justify-content:flex-start; gap:6px; min-height:26px; min-width:88px; padding:0 4px; border:0; border-radius:4px; background:transparent; cursor:pointer; font-size:10px; line-height:11px; }
262021
- .pick:hover:not(:disabled),.trigger:hover:not(:disabled),.list button:hover { background:var(--pptx-accent,#33334d); }
262022
- .pick:disabled,.trigger:disabled,.list button:disabled { opacity:.35; cursor:not-allowed; }
262023
- .pick:focus-visible,.trigger:focus-visible,.list button:focus-visible { outline:2px solid var(--pptx-ring,#6366f1); outline-offset:2px; }
262242
+ .trigger,.list button { font:inherit; color:inherit; box-sizing:border-box; }
262243
+ .trigger { display:inline-flex; align-items:center; justify-content:flex-start; gap:6px; min-height:24px; min-width:0; padding:0 6px; border:0; border-radius:4px; background:transparent; cursor:pointer; font-size:12px; line-height:16px; }
262244
+ .trigger:hover:not(:disabled),.list button:hover { background:var(--pptx-accent,#33334d); }
262245
+ .trigger:active:not(:disabled) { background:color-mix(in srgb,var(--pptx-accent,#33334d) 70%,var(--pptx-primary,#6366f1)); }
262246
+ .trigger:disabled,.list button:disabled { opacity:.35; cursor:not-allowed; }
262247
+ .trigger:focus-visible,.list button:focus-visible { outline:2px solid var(--pptx-ring,#6366f1); outline-offset:2px; }
262024
262248
  svg { width:16px; height:16px; flex:none; fill:none; stroke:currentColor; stroke-width:1.5; stroke-linecap:round; stroke-linejoin:round; }
262025
- .trigger svg:first-child,.pick svg { color:var(--pptx-primary,#6366f1); }
262249
+ .trigger svg:first-child { color:var(--pptx-primary,#6366f1); }
262026
262250
  .trigger svg:last-child { width:10px; height:10px; margin-inline-start:auto; }
262251
+ /* Office large command: a 32px glyph over the label with the chevron beneath. */
262252
+ .trigger.large { flex-direction:column; align-items:center; justify-content:flex-start; gap:2px; min-width:48px; max-width:80px; height:66px; padding:3px 4px; text-align:center; line-height:15px; }
262253
+ .trigger.large svg:first-child { width:32px; height:32px; stroke-width:1.4; }
262254
+ .trigger.large svg:last-child { width:8px; height:8px; margin:0; stroke-width:1.8; }
262027
262255
  .menu { position:relative; display:inline-flex; }
262028
262256
  .list { position:fixed; z-index:1200; display:flex; flex-direction:column; min-width:170px; max-width:calc(100vw - 16px); max-height:65vh; overflow:auto; padding:4px 0; background:var(--pptx-popover,#111827); border:1px solid var(--pptx-border,#374151); border-radius:6px; box-shadow:0 8px 24px #0005; }
262029
262257
  .list[hidden] { display:none; }
262030
262258
  .list button { display:flex; align-items:center; gap:8px; width:100%; min-height:28px; padding:4px 12px; border:0; background:transparent; font-size:12px; text-align:left; cursor:pointer; }
262031
262259
  .list svg { width:16px; height:16px; }
262260
+ .list.grid { display:grid; grid-template-columns:repeat(8,32px); gap:2px; min-width:0; padding:6px; }
262261
+ .list.grid button { width:32px; min-height:32px; height:32px; padding:0; justify-content:center; border-radius:4px; }
262262
+ .list.grid svg { width:18px; height:18px; }
262032
262263
  @media (max-width:767px) {
262033
262264
  :host { flex-wrap:wrap; max-width:100%; }
262034
262265
  }
262035
262266
  @media (pointer:coarse),(max-width:900px) {
262036
- .pick,.list button { min-height:44px; }
262267
+ .list button { min-height:44px; }
262268
+ .list.grid { grid-template-columns:repeat(6,44px); }
262269
+ .list.grid button { width:44px; height:44px; }
262037
262270
  .trigger { min-height:44px; min-width:44px; }
262038
262271
  }
262039
262272
  @media (forced-colors:active) {
262040
262273
  .list { border-color:ButtonText; }
262041
262274
  .trigger svg:first-child { color:ButtonText; }
262042
- .pick:focus-visible,.trigger:focus-visible,.list button:focus-visible { outline-color:Highlight; }
262043
- .pick:disabled,.trigger:disabled { color:GrayText; opacity:1; }
262275
+ .trigger:focus-visible,.list button:focus-visible { outline-color:Highlight; }
262276
+ .trigger:disabled { color:GrayText; opacity:1; }
262044
262277
  }
262045
262278
  `;
262046
262279
  function attachRibbonInsertStyles(doc) {
@@ -262064,20 +262297,21 @@ function insertSvg(doc, path, viewBox = "0 0 20 20") {
262064
262297
  function insertIcon(doc, name) {
262065
262298
  return insertSvg(doc, RIBBON_ICON_PATHS[name] ?? "");
262066
262299
  }
262067
- function createInsertMenu(doc, control2, icon2, pick) {
262300
+ function createInsertMenu(doc, control2, icon2, pick, options = {}) {
262068
262301
  const el = doc.createElement("div");
262069
262302
  el.className = "menu";
262070
262303
  el.dataset.ribbonControl = control2;
262071
262304
  const trigger = doc.createElement("button");
262072
262305
  trigger.type = "button";
262073
- trigger.className = "trigger";
262306
+ trigger.className = options.large ? "trigger large" : "trigger";
262074
262307
  trigger.dataset.pptxCompact = "";
262075
262308
  trigger.setAttribute("aria-haspopup", "menu");
262076
262309
  trigger.setAttribute("aria-expanded", "false");
262077
262310
  const text3 = doc.createElement("span");
262311
+ text3.className = "label";
262078
262312
  trigger.append(insertIcon(doc, icon2), text3, insertIcon(doc, "chevronDown"));
262079
262313
  const list2 = doc.createElement("div");
262080
- list2.className = "list";
262314
+ list2.className = options.grid ? "list grid" : "list";
262081
262315
  list2.setAttribute("role", "menu");
262082
262316
  list2.hidden = true;
262083
262317
  el.append(trigger, list2);
@@ -262153,9 +262387,18 @@ function createInsertMenu(doc, control2, icon2, pick) {
262153
262387
  button.dataset.pptxCompact = "";
262154
262388
  button.dataset.insertItem = item4.id;
262155
262389
  if (item4.glyph) {
262156
- button.append(insertSvg(doc, item4.glyph, "0 0 24 24"));
262390
+ const glyph2 = insertSvg(doc, item4.glyph, item4.viewBox ?? "0 0 24 24");
262391
+ if (item4.transform && item4.transform !== "none") {
262392
+ glyph2.style.transform = item4.transform;
262393
+ }
262394
+ button.append(glyph2);
262395
+ }
262396
+ if (options.grid) {
262397
+ button.title = item4.label;
262398
+ button.setAttribute("aria-label", item4.label);
262399
+ } else {
262400
+ button.append(doc.createTextNode(item4.label));
262157
262401
  }
262158
- button.append(doc.createTextNode(item4.label));
262159
262402
  button.addEventListener("click", () => {
262160
262403
  close();
262161
262404
  trigger.focus();
@@ -262168,59 +262411,6 @@ function createInsertMenu(doc, control2, icon2, pick) {
262168
262411
  }
262169
262412
  };
262170
262413
  }
262171
- function createInsertCluster(doc, control2, pickType, insert) {
262172
- const el = doc.createElement("div");
262173
- el.className = "cluster";
262174
- el.dataset.ribbonControl = control2;
262175
- const select2 = doc.createElement("pptx-ui-select");
262176
- const button = doc.createElement("button");
262177
- button.type = "button";
262178
- button.className = "pick";
262179
- button.dataset.pptxCompact = "";
262180
- const text3 = doc.createElement("span");
262181
- let glyphKey = "";
262182
- select2.addEventListener("change", () => pickType(select2.value));
262183
- button.addEventListener("click", insert);
262184
- button.addEventListener("keydown", (event) => {
262185
- if (event.key === " " || event.key === "Enter") {
262186
- event.stopPropagation();
262187
- }
262188
- });
262189
- el.append(select2, button);
262190
- return {
262191
- el,
262192
- select: select2,
262193
- button,
262194
- sync({ choices: choices2, value, selectLabel, buttonLabel, buttonTitle, disabled, glyph }) {
262195
- const key2 = choices2.map((item4) => `${item4.value}:${item4.label}`).join("|");
262196
- if (select2.dataset.key !== key2) {
262197
- select2.dataset.key = key2;
262198
- select2.replaceChildren(
262199
- ...choices2.map((item4) => {
262200
- const option = doc.createElement("option");
262201
- option.value = item4.value;
262202
- option.textContent = item4.label;
262203
- return option;
262204
- })
262205
- );
262206
- }
262207
- select2.value = value;
262208
- select2.disabled = disabled;
262209
- select2.setAttribute("aria-label", selectLabel);
262210
- select2.title = selectLabel;
262211
- text3.textContent = buttonLabel;
262212
- button.title = buttonTitle;
262213
- button.disabled = disabled;
262214
- const nextGlyph = `${glyph.path}|${glyph.viewBox}|${glyph.transform}`;
262215
- if (nextGlyph !== glyphKey) {
262216
- glyphKey = nextGlyph;
262217
- const svg = insertSvg(doc, glyph.path, glyph.viewBox);
262218
- svg.style.transform = glyph.transform;
262219
- button.replaceChildren(svg, text3);
262220
- }
262221
- }
262222
- };
262223
- }
262224
262414
  var FREEFORM_ICONS = { freeformShape: "penTool", curve: "spline" };
262225
262415
  var FREEFORM_FALLBACKS = {
262226
262416
  freeformShape: "Freeform: Shape",
@@ -262260,25 +262450,29 @@ function createRibbonInsertView(doc, request) {
262260
262450
  spec: spec5,
262261
262451
  el: command(
262262
262452
  spec5.icon,
262263
- true,
262453
+ false,
262264
262454
  () => request({ kind: "command", value: spec5.command }),
262265
262455
  spec5.control
262266
262456
  )
262267
262457
  }));
262268
262458
  const byCommand = (name) => commands.find(({ spec: spec5 }) => spec5.command === name).el;
262269
- let shapeType = "";
262270
- let chartKind = "";
262271
- const shapes = createInsertCluster(
262459
+ const stageThenInsert = (stage, insert) => {
262460
+ request(stage);
262461
+ setTimeout(() => request(insert), 50);
262462
+ };
262463
+ const shapes = createInsertMenu(
262272
262464
  doc,
262273
262465
  "insert.illustrations.shapes",
262274
- (value) => request({ kind: "shapeType", value }),
262275
- () => request({ kind: "shape", value: shapeType })
262466
+ "shapes",
262467
+ (value) => stageThenInsert({ kind: "shapeType", value }, { kind: "shape", value }),
262468
+ { large: true, grid: true }
262276
262469
  );
262277
- const charts = createInsertCluster(
262470
+ const charts = createInsertMenu(
262278
262471
  doc,
262279
262472
  "insert.illustrations.chart",
262280
- (value) => request({ kind: "chartType", value }),
262281
- () => request({ kind: "chart", value: chartKind })
262473
+ "chart",
262474
+ (value) => stageThenInsert({ kind: "chartType", value }, { kind: "chart", value }),
262475
+ { large: true }
262282
262476
  );
262283
262477
  let armed = null;
262284
262478
  const freeform = FREEFORM_TOOL_IDS.map((tool) => {
@@ -262295,27 +262489,27 @@ function createRibbonInsertView(doc, request) {
262295
262489
  doc,
262296
262490
  "insert.links.action",
262297
262491
  "action",
262298
- (value) => request({ kind: "actionButton", value })
262492
+ (value) => request({ kind: "actionButton", value }),
262493
+ { large: true }
262299
262494
  );
262300
262495
  const fields = createInsertMenu(
262301
262496
  doc,
262302
262497
  "insert.text.field",
262303
262498
  "field",
262304
- (value) => request({ kind: "field", value })
262499
+ (value) => request({ kind: "field", value }),
262500
+ { large: true }
262305
262501
  );
262306
262502
  const root = [
262307
262503
  group2("insert.tables", byCommand("table")),
262308
262504
  group2("insert.images", byCommand("image")),
262309
- group2("insert.illustrations", shapes.el, freeformStack, charts.el, byCommand("smartArt")),
262310
- group2("insert.links", stack(byCommand("link"), actions.el)),
262311
- group2("insert.text", stack(byCommand("textBox"), fields.el, byCommand("headerFooter"))),
262505
+ group2("insert.illustrations", shapes.el, freeformStack, byCommand("smartArt"), charts.el),
262506
+ group2("insert.links", byCommand("link"), actions.el),
262507
+ group2("insert.text", byCommand("textBox"), byCommand("headerFooter"), fields.el),
262312
262508
  group2("insert.symbols", byCommand("equation")),
262313
262509
  group2("insert.media", byCommand("media"))
262314
262510
  ];
262315
262511
  const sync = (state) => {
262316
262512
  const text3 = (label) => insertLabel(state, label);
262317
- shapeType = state.shapeType;
262318
- chartKind = state.chartKind;
262319
262513
  armed = state.activeFreeformTool ?? null;
262320
262514
  const disabled = !state.editable;
262321
262515
  for (const [id, el] of groups) {
@@ -262327,36 +262521,34 @@ function createRibbonInsertView(doc, request) {
262327
262521
  el.toggleAttribute("disabled", spec5.command === "link" ? !state.hasSelection : disabled);
262328
262522
  }
262329
262523
  byCommand("headerFooter").toggleAttribute("hidden", state.headerFooterAvailable === false);
262330
- const preset22 = SHAPE_PRESET_DEFS.find((item4) => item4.type === state.shapeType) ?? SHAPE_PRESET_DEFS[0];
262331
- shapes.sync({
262332
- choices: SHAPE_PRESET_DEFS.map((item4) => ({
262333
- value: item4.type,
262334
- label: text3([item4.i18nKey, item4.label])
262524
+ const shapeTitle = text3(["pptx.insert.addShape", "Add shape"]);
262525
+ shapes.sync(
262526
+ text3(["pptx.drawing.shapes", "Shapes"]),
262527
+ shapeTitle,
262528
+ SHAPE_PRESET_DEFS.map((item4) => ({
262529
+ id: item4.type,
262530
+ label: text3([item4.i18nKey, item4.label]),
262531
+ glyph: INSERT_SHAPE_GLYPH_PATHS[item4.glyph],
262532
+ viewBox: "0 0 16 16",
262533
+ transform: insertGlyphTransform(item4.glyphClass)
262335
262534
  })),
262336
- value: preset22.type,
262337
- selectLabel: text3(["pptx.insert.shapeType", "Shape type"]),
262338
- buttonLabel: text3(["pptx.insert.shape", "Shape"]),
262339
- buttonTitle: text3(["pptx.insert.addShape", "Add shape"]),
262340
262535
  disabled,
262341
- glyph: {
262342
- path: INSERT_SHAPE_GLYPH_PATHS[preset22.glyph],
262343
- viewBox: "0 0 16 16",
262344
- transform: insertGlyphTransform(preset22.glyphClass)
262345
- }
262346
- });
262536
+ text3(["pptx.insert.shapeType", "Shape type"])
262537
+ );
262347
262538
  charts.el.hidden = state.chartAvailable === false;
262348
- charts.sync({
262349
- choices: INSERT_CHART_TYPES.map((item4) => ({
262350
- value: item4.id,
262351
- label: text3([item4.labelKey, item4.label])
262539
+ const chartTitle = text3(["pptx.ribbon.insertChart", "Insert chart"]);
262540
+ charts.sync(
262541
+ text3(["pptx.ribbon.chart", "Chart"]),
262542
+ chartTitle,
262543
+ INSERT_CHART_TYPES.map((item4) => ({
262544
+ id: item4.id,
262545
+ label: text3([item4.labelKey, item4.label]),
262546
+ glyph: RIBBON_INSERT_ICON_PATHS.chart,
262547
+ viewBox: "0 0 20 20"
262352
262548
  })),
262353
- value: state.chartKind,
262354
- selectLabel: text3(["pptx.ribbon.chartType", "Chart type"]),
262355
- buttonLabel: text3(["pptx.ribbon.chart", "Chart"]),
262356
- buttonTitle: text3(["pptx.ribbon.insertChart", "Insert chart"]),
262357
262549
  disabled,
262358
- glyph: { path: RIBBON_INSERT_ICON_PATHS.chart, viewBox: "0 0 20 20", transform: "none" }
262359
- });
262550
+ text3(["pptx.ribbon.chartType", "Chart type"])
262551
+ );
262360
262552
  const visible = state.freeformTools ?? [];
262361
262553
  freeformStack.hidden = visible.length === 0;
262362
262554
  for (const { tool, el } of freeform) {
@@ -262390,7 +262582,7 @@ function createRibbonInsertView(doc, request) {
262390
262582
  fieldTitle
262391
262583
  );
262392
262584
  };
262393
- return { root, sync, menus: [actions, fields] };
262585
+ return { root, sync, menus: [shapes, charts, actions, fields] };
262394
262586
  }
262395
262587
  function definePptxRibbonInsert(registry) {
262396
262588
  if (registry.get("pptx-ui-ribbon-insert")) {
@@ -262527,14 +262719,14 @@ function createRibbonSectionView(root) {
262527
262719
  for (const command of group2.commands) {
262528
262720
  let parent = node.el;
262529
262721
  if (command.column !== void 0) {
262530
- let column = node.columns.get(command.column);
262531
- if (!column) {
262532
- column = root.ownerDocument.createElement("div");
262533
- Object.assign(column.style, { display: "flex", flexDirection: "column", gap: "2px" });
262534
- node.columns.set(command.column, column);
262535
- node.el.append(column);
262722
+ let column2 = node.columns.get(command.column);
262723
+ if (!column2) {
262724
+ column2 = root.ownerDocument.createElement("div");
262725
+ Object.assign(column2.style, { display: "flex", flexDirection: "column", gap: "2px" });
262726
+ node.columns.set(command.column, column2);
262727
+ node.el.append(column2);
262536
262728
  }
262537
- parent = column;
262729
+ parent = column2;
262538
262730
  }
262539
262731
  let el = commands.get(command.id);
262540
262732
  if (!el) {
@@ -264113,8 +264305,8 @@ function definePptxSlideShowOptions(registry) {
264113
264305
  const root = this.attachShadow({ mode: "open" });
264114
264306
  attachControlStyles(root, SLIDE_SHOW_OPTIONS_STYLES);
264115
264307
  const columns = [document.createElement("div"), document.createElement("div")];
264116
- for (const column of columns) {
264117
- column.className = "column";
264308
+ for (const column2 of columns) {
264309
+ column2.className = "column";
264118
264310
  }
264119
264311
  SLIDE_SHOW_OPTIONS.forEach((option, index) => {
264120
264312
  const label = document.createElement("label");
@@ -265549,6 +265741,294 @@ function definePptxTitleBar(registry) {
265549
265741
  }
265550
265742
  registry.define("pptx-ui-title-bar", TitleBar);
265551
265743
  }
265744
+ var LAUNCHER_CHROME = "group-launcher";
265745
+ var SELECTOR = `[data-pptx-chrome="${LAUNCHER_CHROME}"]`;
265746
+ var GLYPH = "M2 2h4M2 2v4M10 10 4 4M10 10H7M10 10V7";
265747
+ function glyph(doc) {
265748
+ const svg = doc.createElementNS("http://www.w3.org/2000/svg", "svg");
265749
+ svg.setAttribute("viewBox", "0 0 12 12");
265750
+ svg.setAttribute("aria-hidden", "true");
265751
+ const path = doc.createElementNS(svg.namespaceURI, "path");
265752
+ path.setAttribute("d", GLYPH);
265753
+ svg.append(path);
265754
+ return svg;
265755
+ }
265756
+ function syncLaunchers(content, launchers) {
265757
+ for (const group2 of content.querySelectorAll("[data-ribbon-group]")) {
265758
+ const launcher = launchers[group2.dataset.ribbonGroup ?? ""];
265759
+ if (!launcher || group2.parentElement?.closest("[data-ribbon-group]")) {
265760
+ continue;
265761
+ }
265762
+ const label = launcher.label();
265763
+ if (group2.localName === "pptx-ui-ribbon-group") {
265764
+ group2.setAttribute("launcher", "");
265765
+ group2.setAttribute("launcher-label", label);
265766
+ continue;
265767
+ }
265768
+ let button = group2.querySelector(`:scope > ${SELECTOR}`);
265769
+ if (!button) {
265770
+ button = group2.ownerDocument.createElement("button");
265771
+ button.type = "button";
265772
+ button.dataset.pptxChrome = LAUNCHER_CHROME;
265773
+ button.append(glyph(group2.ownerDocument));
265774
+ group2.append(button);
265775
+ }
265776
+ button.title = label;
265777
+ button.setAttribute("aria-label", label);
265778
+ }
265779
+ }
265780
+ function listenForLaunchers(content, launchers) {
265781
+ const click = (event) => {
265782
+ const button = event.target?.closest?.(SELECTOR);
265783
+ const id = button?.closest("[data-ribbon-group]")?.dataset.ribbonGroup;
265784
+ if (id) {
265785
+ launchers[id]?.run();
265786
+ }
265787
+ };
265788
+ const shared = (event) => {
265789
+ const id = event.detail?.id;
265790
+ if (id) {
265791
+ launchers[id]?.run();
265792
+ }
265793
+ };
265794
+ content.addEventListener("click", click);
265795
+ content.addEventListener("launcher-request", shared);
265796
+ return () => {
265797
+ content.removeEventListener("click", click);
265798
+ content.removeEventListener("launcher-request", shared);
265799
+ };
265800
+ }
265801
+ var HOME_LAUNCHER_GROUPS = ["home.font", "home.paragraph", "home.drawing"];
265802
+ function homeLaunchers(label, run) {
265803
+ return Object.fromEntries(HOME_LAUNCHER_GROUPS.map((id) => [id, { label, run }]));
265804
+ }
265805
+ var COLLAPSE_FACE = "ribbon-collapse";
265806
+ var FACE_SELECTOR = `[data-pptx-chrome="${COLLAPSE_FACE}"]`;
265807
+ var DESKTOP_MIN_WIDTH = 768;
265808
+ var CONTROL_FACE = {
265809
+ "home.clipboard": "home.clipboard.paste",
265810
+ "home.slides": "home.slides.newSlide",
265811
+ "home.font": "home.font.bold",
265812
+ "home.paragraph": "home.paragraph.alignLeft",
265813
+ "home.editing": "home.editing.find",
265814
+ "home.drawing": "home.drawing.shapes",
265815
+ "home.arrange": "home.drawing.arrange"
265816
+ };
265817
+ var PATH_FACE = {
265818
+ "insert.tables": "table",
265819
+ "insert.images": "image",
265820
+ "insert.illustrations": "shapes",
265821
+ "insert.links": "link",
265822
+ "insert.text": "textBox",
265823
+ "insert.symbols": "equation",
265824
+ "insert.media": "video",
265825
+ "draw.tools": "pencil",
265826
+ "design.themes": "palette",
265827
+ "design.variants": "palette",
265828
+ "design.customize": "paint"
265829
+ };
265830
+ var isGroup2 = (el) => el instanceof HTMLElement;
265831
+ var COLLAPSING_GROUPS = /^(home|insert|draw|design)\./u;
265832
+ function groupsOf(content) {
265833
+ return [...content.querySelectorAll("[data-ribbon-group]")].filter(
265834
+ (el) => isGroup2(el) && COLLAPSING_GROUPS.test(el.dataset.ribbonGroup ?? "") && el.getBoundingClientRect().width > 0 && el.parentElement?.closest("[data-ribbon-group]") === null
265835
+ );
265836
+ }
265837
+ function captionOf(group2) {
265838
+ return (group2.getAttribute("label") ?? group2.querySelector(':scope > [data-pptx-chrome="ribbon-group-label"]')?.textContent ?? group2.getAttribute("aria-label") ?? "").trim();
265839
+ }
265840
+ function faceIcon(doc, id) {
265841
+ const control2 = CONTROL_FACE[id];
265842
+ if (control2 && RIBBON_CONTROL_ICONS[control2]) {
265843
+ return createRibbonControlIcon(doc, control2);
265844
+ }
265845
+ const svg = doc.createElementNS("http://www.w3.org/2000/svg", "svg");
265846
+ svg.setAttribute("viewBox", "0 0 20 20");
265847
+ svg.setAttribute("fill", "none");
265848
+ svg.setAttribute("stroke", "currentColor");
265849
+ const path = doc.createElementNS(svg.namespaceURI, "path");
265850
+ path.setAttribute("d", RIBBON_ICON_PATHS[PATH_FACE[id] ?? "layers"] ?? "");
265851
+ svg.append(path);
265852
+ return svg;
265853
+ }
265854
+ function placeCollapsedGroup(group2, face) {
265855
+ const rect3 = face.getBoundingClientRect();
265856
+ const width = group2.ownerDocument.defaultView?.innerWidth ?? 1024;
265857
+ group2.style.setProperty("--pptx-collapse-y", `${Math.round(rect3.bottom + 2)}px`);
265858
+ group2.style.setProperty(
265859
+ "--pptx-collapse-x",
265860
+ `${Math.round(Math.max(4, Math.min(rect3.left, width - 360)))}px`
265861
+ );
265862
+ }
265863
+ function ensureFace(group2) {
265864
+ const id = group2.dataset.ribbonGroup ?? "";
265865
+ if (group2.localName === "pptx-ui-ribbon-group") {
265866
+ if (!group2.hasAttribute("icon")) {
265867
+ group2.setAttribute("icon", PATH_FACE[id] ?? "layers");
265868
+ }
265869
+ return;
265870
+ }
265871
+ const caption = captionOf(group2);
265872
+ let face = group2.querySelector(`:scope > ${FACE_SELECTOR}`);
265873
+ if (!face) {
265874
+ const doc = group2.ownerDocument;
265875
+ face = doc.createElement("button");
265876
+ face.setAttribute("type", "button");
265877
+ face.dataset.pptxChrome = COLLAPSE_FACE;
265878
+ face.setAttribute("aria-haspopup", "true");
265879
+ const label = doc.createElement("span");
265880
+ label.className = "label";
265881
+ const chevron2 = doc.createElementNS("http://www.w3.org/2000/svg", "svg");
265882
+ chevron2.setAttribute("viewBox", "0 0 10 10");
265883
+ chevron2.setAttribute("class", "chev");
265884
+ chevron2.setAttribute("aria-hidden", "true");
265885
+ const path = doc.createElementNS(chevron2.namespaceURI, "path");
265886
+ path.setAttribute("d", "m1.5 3.5 3.5 3.5 3.5-3.5");
265887
+ chevron2.append(path);
265888
+ face.append(faceIcon(doc, id), label, chevron2);
265889
+ group2.prepend(face);
265890
+ }
265891
+ face.querySelector(".label").textContent = caption;
265892
+ face.setAttribute("aria-label", caption);
265893
+ face.title = caption;
265894
+ face.setAttribute("aria-expanded", String(group2.hasAttribute("data-open")));
265895
+ }
265896
+ function closeAll(content) {
265897
+ for (const open of content.querySelectorAll("[data-ribbon-group][data-open]")) {
265898
+ open.removeAttribute("data-open");
265899
+ open.querySelector(`:scope > ${FACE_SELECTOR}`)?.setAttribute("aria-expanded", "false");
265900
+ }
265901
+ }
265902
+ function reflowRibbon(content) {
265903
+ const doc = content.ownerDocument;
265904
+ closeAll(content);
265905
+ for (const collapsed2 of content.querySelectorAll("[data-ribbon-group][data-collapsed]")) {
265906
+ collapsed2.removeAttribute("data-collapsed");
265907
+ }
265908
+ if ((doc.defaultView?.innerWidth ?? DESKTOP_MIN_WIDTH) < DESKTOP_MIN_WIDTH) {
265909
+ return [];
265910
+ }
265911
+ const overflows = () => content.scrollWidth - content.clientWidth > 1;
265912
+ const collapsed = [];
265913
+ if (!overflows()) {
265914
+ return collapsed;
265915
+ }
265916
+ for (const group2 of groupsOf(content).reverse()) {
265917
+ ensureFace(group2);
265918
+ group2.setAttribute("data-collapsed", "");
265919
+ collapsed.push(group2.dataset.ribbonGroup ?? "");
265920
+ if (!overflows()) {
265921
+ break;
265922
+ }
265923
+ }
265924
+ return collapsed;
265925
+ }
265926
+ function attachRibbonOverflow(content, options = {}) {
265927
+ const doc = content.ownerDocument;
265928
+ const view = doc.defaultView;
265929
+ let frame2 = 0;
265930
+ let forced = false;
265931
+ let lastWidth = -1;
265932
+ const schedule2 = (force = false) => {
265933
+ forced ||= force;
265934
+ if (frame2 || !view) {
265935
+ return;
265936
+ }
265937
+ frame2 = view.requestAnimationFrame(() => {
265938
+ frame2 = 0;
265939
+ const rebuild = forced;
265940
+ forced = false;
265941
+ if (!rebuild && lastWidth === content.clientWidth && content.querySelector("[data-ribbon-group][data-open]")) {
265942
+ return;
265943
+ }
265944
+ observer?.disconnect();
265945
+ lastWidth = content.clientWidth;
265946
+ reflowRibbon(content);
265947
+ if (options.launchers) {
265948
+ syncLaunchers(content, options.launchers);
265949
+ }
265950
+ observer?.observe(content, { childList: true, subtree: true });
265951
+ });
265952
+ };
265953
+ const touchesGroup = (record2) => [...record2.addedNodes, ...record2.removedNodes].some(
265954
+ (node) => node instanceof Element && (node.matches("[data-ribbon-group]") || node.querySelector("[data-ribbon-group]") !== null)
265955
+ );
265956
+ const observer = typeof MutationObserver === "undefined" ? void 0 : new MutationObserver((records) => schedule2(records.some(touchesGroup)));
265957
+ const resize = typeof ResizeObserver === "undefined" ? void 0 : new ResizeObserver(() => schedule2());
265958
+ observer?.observe(content, { childList: true, subtree: true });
265959
+ resize?.observe(content);
265960
+ const onWindowResize = () => schedule2();
265961
+ view?.addEventListener("resize", onWindowResize);
265962
+ const toggleGroup = (group2, face) => {
265963
+ if (!face || !content.contains(group2) || !group2.hasAttribute("data-collapsed")) {
265964
+ return;
265965
+ }
265966
+ const open = !group2.hasAttribute("data-open");
265967
+ closeAll(content);
265968
+ if (open) {
265969
+ group2.setAttribute("data-open", "");
265970
+ placeCollapsedGroup(group2, face);
265971
+ face.setAttribute("aria-expanded", "true");
265972
+ }
265973
+ };
265974
+ const toggle2 = (event) => {
265975
+ const face = event.target?.closest?.(FACE_SELECTOR) ?? null;
265976
+ const group2 = face?.closest("[data-ribbon-group]");
265977
+ if (face && group2) {
265978
+ toggleGroup(group2, face);
265979
+ }
265980
+ };
265981
+ const toggleShared = (event) => {
265982
+ const group2 = event.target?.closest?.("[data-ribbon-group]");
265983
+ if (group2) {
265984
+ toggleGroup(group2, group2.shadowRoot?.querySelector(".face") ?? null);
265985
+ }
265986
+ };
265987
+ const outside = (event) => {
265988
+ const open = content.querySelector("[data-ribbon-group][data-open]");
265989
+ if (open && !event.composedPath().includes(open)) {
265990
+ closeAll(content);
265991
+ }
265992
+ };
265993
+ const escape = (event) => {
265994
+ const open = content.querySelector("[data-ribbon-group][data-open]");
265995
+ if (event.key === "Escape" && open) {
265996
+ event.stopPropagation();
265997
+ closeAll(content);
265998
+ (open.querySelector(FACE_SELECTOR) ?? open).focus();
265999
+ }
266000
+ };
266001
+ const afterCommand = (event) => {
266002
+ const open = content.querySelector("[data-ribbon-group][data-open]");
266003
+ const button = event.composedPath()[0]?.closest?.("button");
266004
+ if (open?.contains(button ?? null) && button && !button.matches(`${FACE_SELECTOR}, [aria-haspopup], [aria-expanded]`)) {
266005
+ closeAll(content);
266006
+ }
266007
+ };
266008
+ content.addEventListener("click", toggle2);
266009
+ content.addEventListener("ribbon-collapse-toggle", toggleShared);
266010
+ content.addEventListener("click", afterCommand);
266011
+ content.addEventListener("keydown", escape);
266012
+ doc.addEventListener("pointerdown", outside, true);
266013
+ const stopLaunchers = options.launchers ? listenForLaunchers(content, options.launchers) : void 0;
266014
+ schedule2(true);
266015
+ return () => {
266016
+ stopLaunchers?.();
266017
+ observer?.disconnect();
266018
+ resize?.disconnect();
266019
+ view?.removeEventListener("resize", onWindowResize);
266020
+ view?.cancelAnimationFrame(frame2);
266021
+ content.removeEventListener("click", toggle2);
266022
+ content.removeEventListener("ribbon-collapse-toggle", toggleShared);
266023
+ content.removeEventListener("click", afterCommand);
266024
+ content.removeEventListener("keydown", escape);
266025
+ doc.removeEventListener("pointerdown", outside, true);
266026
+ closeAll(content);
266027
+ for (const collapsed of content.querySelectorAll("[data-ribbon-group][data-collapsed]")) {
266028
+ collapsed.removeAttribute("data-collapsed");
266029
+ }
266030
+ };
266031
+ }
265552
266032
  function contextMenuViewItems(entries2, t, isAvailable2 = () => true) {
265553
266033
  return entries2.map((entry5) => ({
265554
266034
  id: entry5.id,
@@ -268917,4 +269397,4 @@ ooxml-core/dist/pptx/index.mjs:
268917
269397
  *)
268918
269398
  */
268919
269399
 
268920
- export { ACTION_BUTTON_PRESETS, ACTION_INDICATOR_CLASS, ACTION_INDICATOR_ICON_PATH, ANIMATION_DIRECTION_LABEL_KEYS, ARTISTIC_EFFECTS, AVATAR_COLOR_SWATCHES, BACKSTAGE_BACK_CLASSES, BACKSTAGE_CARD_IDS, BACKSTAGE_NAV, BACKSTAGE_NAV_CLASSES, BACKSTAGE_PAGE_IDS, BACKSTAGE_TEMPLATES, BAR3D_SHAPE_OPTIONS, BEVEL_PRESETS, BROADCAST_THROTTLE_MS, CANVAS_CONTEXT_MENU_COMMAND_IDS, CATEGORIES, CHART_QUICK_ACTION_BUTTON_SIZE, CHART_TYPE_OPTIONS, CINEMATIC_TRANSITION_KEYFRAMES, COLOR_MAP_ALIAS_KEYS, COMMENT_MARKER_SIZE, COMMENT_MENTION_ATTRIBUTE, COMMENT_MENTION_CLASS, COMPOUND_LINE_OPTIONS, CONNECTION_TIMEOUT_MS, CONNECTOR_SITE_SNAP_PX, CONTEXTUAL_TAB_GROUPS, CONTEXT_MENU_PRESENTATION_LAYER, CROP_HANDLE_ARIA_KEY, CUSTOM_FONT_ACCEPT, DEBOUNCE_MS, DEFAULT_BROADCAST_SERVER_URL, DEFAULT_COLOR_CHANGE_TOLERANCE, DEFAULT_COLOR_MAP, DEFAULT_FONT_FAMILY2 as DEFAULT_FONT_FAMILY, DEFAULT_INSERT_CHART_KIND, DEFAULT_MORPH_DURATION_MS, DEFAULT_PALETTE2, DEFAULT_QUICK_ACCESS_COMMAND_IDS, DEFAULT_ROW_HEIGHT, DEFAULT_TRANSITION_DURATION_MS, DEFAULT_VIEWER_OPTIONS, DEFAULT_VIEWER_PREFERENCES, DEFAULT_VIEWER_PROFILE, DEFAULT_VIRTUAL_OVERSCAN, DESIGN_RIBBON_COMMANDS, DESIGN_RIBBON_GROUPS, DUOTONE_PRESETS, EASE, EDITOR_CHROME_CSS, EDITOR_SHORTCUT_ACTION_IDS, EDITOR_THUMBNAIL_WIDTH, EDITOR_VIEWPORT_FIT, EDIT_POINTS_STYLE, EDIT_POINTS_TARGET_ATTR, EFFECT_SOUND_CATALOGUE, ELEMENT_ACTION_TYPE_OPTIONS, ELEMENT_CONTEXT_MENU_COMMAND_IDS, EMPTY_RESOLVED_CUSTOMIZATION, EQUATION_TEMPLATES, EXPANDED_MAX_HEIGHT, EXPORT_ASSEMBLING_PERCENT, EXPORT_DONE_PERCENT, EditPointsSession, EncryptedFileError, FILL_MODE_OPTIONS, FILL_PATTERN_LABEL_KEYS, FIXED_TAB_GALLERIES, FREEFORM_TOOL_IDS, FreeformToolSession, GIF_POST_CAPTURE_MAX_SIDE, GRADIENT_TYPE_OPTIONS, GlyphOutlineFontCache, HANDOUT_OPTIONS, HELP_RIBBON_COMMANDS, HIDDEN_SLIDE_LABEL_KEY, HIDDEN_SLIDE_SLASH_GRADIENT, INDENT_PX, INK_REPLAY_KEYFRAMES, INSTANT, LBL, LINE_CAP_OPTIONS, LINE_JOIN_OPTIONS, LINK_TOOLTIP_CLASS, LINK_TOOLTIP_HINT_CLASS, LINK_TOOLTIP_HOST_CLASS, LINK_TOOLTIP_LABEL_CLASS, LINK_TOOLTIP_PANEL_CLASS, LOCAL_SYNC_ORIGIN, MATERIAL_PRESETS, MAX_INDENT_LEVEL, MAX_ZOOM_SCALE, MEDIA_CHROME_ATTRIBUTE, MEDIA_FULLSCREEN_OVERLAY_STYLE, MERGE_SHAPES_MENU_ITEMS, MIN_TOUCH_TARGET_PX, MIN_ZOOM_SCALE, MOBILE_BREAKPOINT, MORPH_CROSSFADE_GROUP_STYLE, MORPH_CROSSFADE_HALF_STYLE, MOTION_PATH_FAMILIES, NOTES_FONT_SIZE_DEFAULT, NOTES_FONT_SIZE_MAX, NOTES_FONT_SIZE_MIN, NOTES_FONT_SIZE_STEP, NUM, OFFICE_COLOR_SWATCHES, ONLINE_VIDEO_IFRAME_ALLOW, ONLINE_VIDEO_IFRAME_SANDBOX, OPTIONS_PAGE_IDS, OPTIONS_SECTION_IDS, OPTIONS_SETTING_IDS, OUTLINE_LEVEL_ATTR, OUTLINE_ROW_ATTR, OUTLINE_SLIDE_ATTR, OUTLINE_VIEW_ATTR, P14_TRANSITION_KEYFRAMES, P14_TRANSITION_KEYFRAMES_2, P14_TRANSITION_KEYFRAMES_ALL, PASTE_SPECIAL_OPTIONS, PATTERN_OPTIONS, PATTERN_PRESET_OPTIONS, PDF_SLIDES_PAGE_HEIGHT_PT, PDF_SLIDES_PAGE_WIDTH_PT, PPTX_OPEN_ACCEPT, PRESENTATION_ANIM_TRIGGER_ATTRIBUTE, PRESENTATION_CHANNEL_NAME, PRESENTATION_HASH, PRESENTATION_HIT_TEST_CSS, PRESENTATION_MESSAGE_ORIGIN, PRESENTATION_NONCE_KEY, PRESENTATION_OPEN_EXTENSIONS, PRESENTATION_STAGE_ATTRIBUTE, PRESENTER_CONSOLE_CLASSES, PRESENTER_NAVIGATOR_LABEL_KEYS, PRESENT_TOOLBAR_CLASSES, PRESETS, PptxHandler, PptxMarkdownConverter, PresentationAnimationController, QUICK_ACCESS_COMMAND_CATALOG, RADAR_STYLE_OPTIONS, RANDOM_ELIGIBLE_TYPES, READING_VIEW_ATTR, READING_VIEW_COUNTER_ATTR, READING_VIEW_STAGE_ATTR, RECORD_COMMAND_GROUPS, RIBBON_CONTEXTUAL_TAB_ATTR, RIBBON_GROUP_ATTR, RIBBON_SCOPE_ATTR, RIBBON_TAB_IDS, RULER_FONT_SIZE, RULER_THICKNESS, SECTION_HEADING, SEL, SHAPE_PRESET_DEFS, SHAPE_QUICK_STYLES, SHORTCUT_REFERENCE_ITEMS, SLIDE_SHOW_COMMAND_GROUPS, SLIDE_SHOW_OPTIONS, SLIDE_SIZE_PRESETS, SLIDE_TEMPLATES, SLIDE_TRANSITION_KEYFRAMES, SLIDE_TRANSITION_KEYFRAMES_CSS, SLIDE_TRANSITION_OPTIONS, SLIDE_VIRTUALIZATION_THRESHOLD, SMARTART_COLOR_SCHEME_LABEL_KEYS, SMARTART_PREVIEW_ELEMENT_HEIGHT, SMARTART_PREVIEW_ELEMENT_WIDTH, SMARTART_STYLE_LABEL_KEYS, SORTER_MAX_ZOOM, SORTER_MIN_ZOOM, SORTER_ZOOM_STEP, STROKE_DASH_OPTIONS2 as STROKE_DASH_OPTIONS, SURFACE_WIREFRAME_OPTIONS, SWITCHABLE_LAYOUT_TYPES, SvgExporter, TABLET_BREAKPOINT, TABLE_STYLE_BORDER_SIDES, TABLE_STYLE_BORDER_SIDE_LABEL_KEYS, TABLE_STYLE_DASH_PRESETS, TABLE_STYLE_EDITOR_PARTS, TABLE_STYLE_PRESETS, TAB_ROW_ACTION_CLASSES, TEXT_BUILD_ID_SEP, TEXT_DECORATION_FLAGS, TEXT_WARP_PRESETS, THEME_CATALOG, THEME_COLOR_SCHEME_KEYS, THEME_COLOR_SLOT_LABEL_KEYS, THEME_PRESETS, TOOLBAR_BUTTON_IDS, TOOLBAR_TABS, TRANSITION_DIR_ARROWS, TRANSITION_MORPH_OPTIONS, TRANSITION_ORIENTATION_TYPES, TRANSITION_PATTERN_OPTIONS, TRANSITION_SPEED_DURATION_MS, TRANSITION_SPEED_OPTIONS, TRANSITION_THRUBLK_TYPES, TRANSITION_VALID_DIRECTIONS, TRIGGER_OPTIONS, ThemePresets, VIEWER_DIALOG_IDS, VIEWER_EXPORT_FORMAT_IDS, VIEWER_FEATURE_IDS, VIEWER_OPTIONS_TABS, VIEWER_PANEL_IDS, VIEWER_PREFS_STORAGE_KEY, VIEWER_SHORTCUT_REFERENCE, WEBM_MIME_CANDIDATES, WHEEL_SPOKE_COUNTS, acceptAutosaveRecovery, acceptsPresentationInput, acknowledgeAutosaveRecovery, actionAffordanceLabels, activateModalFocus, addChartCategory, addChartSeries, addCommentToList, addQuickAccessCommand, addSection, addSiblingAfter, addSmartArtNodeAsChild, addTableStyleToMap, addTagToCollections, advanceChartMarkDrag, advanceChartValueDrag, advanceMainSequence, alignElements, animationEffectLabel, annotationOverlayZIndex, appendPresentationInkPoint, appendTableElementColumn, appendTableElementRow, apply3dEffects, applyAcceptAllSlides, applyAcceptSlide, applyActiveInlineListFormatting, applyAnimationTimelineOrder, applyAutoCorrect, applyCaseTransformToSegments, applyChart3DDrag, applyChart3DSelect, applyChartElementToggle, applyChartPartHighlight, applyChartStylePreset, applyColorChange, applyDuotone, applyFindReplacements, applyFormatToElement, applyHighlightClickStyle, applyImagePathPatches, applyListStyleUpdate, applyMasterViewCrudAction, applyMergeShapesPlan, applyMotionPathPreset, applyOleDocumentParagraphEdit, applyOleNestedDeckElementTextEdit, applyOleSheetCellEdit, applyOutlineEdit, applyPasteSpecialFormat, applyPreferenceToOptions, applyReadingViewCommand, applyRehearsalTimings, applyReroutedConnectors, applyResize, applyRibbonGalleryItem, applyTableStyleDelete, applyTableStyleFieldEdit, applyTableStyleMapChange, applyTableStylePreset, applyTextStyleUpdate, applyThemeOverrideToSlide, applyThemeToData, applyUnderlineVariant, arrangeAlignAction, arrangeHomeControls, arrangePainterHomeControls, arrangeShapeHomeControls, assertElementUpdateTarget, attachCollaborationInlineEditor, attachEditorImagePaste, attachInlineListController, attachOverlayKeyboard, attachPresentationVisibilityPause, attachRotateHandlePlacement, authorConnectorBetweenSites, authoredLetterSpacingPx, autosaveSnapshotMark, availableQuickAccessCommands, backstageCardsFor, bar3DShapePatch, beginChartMarkDrag, beginChartValueDrag, beginCropDrag, beginShapeAdjustment, beginZoomExcursion, bindInlineListParagraph, bindInlineListRun, borrowExternalCollaborationAwareness, bringForward, bringToFront, build3DExtrusionData, buildActiveSessionUsers, buildAnimationTimelineBars, buildAnimationTimelineRows, buildBroadcastViewerUrl, buildCacheKey, buildCalloutLeaderLineSvgPath, buildCanvasContextMenuEntries, buildChartMarkDragGeometry, buildChartQuickActionsDescriptor, buildChartViewModel, buildChromeStyle, buildCollaborationShareUrl, buildCommentMarkers, buildContentPartStrokes, buildContextMenuEntries, buildCreateCollaborationConfig, buildCropOverlay, buildCssGradientFromShapeStyle, buildDeckSaveOptions, buildDirectionGrid, buildDuotoneCacheKey, buildElementClipboardPayload, buildFieldSubstitutionContext, buildFreeformShapeElement, buildGlyphEnvelopeBlock, buildHandoutsHtml, buildHollowHitOutline, buildInitialGuides, buildInkGroupStrokes, buildInlineListStylePatch, buildInlineTextCommitPatch, buildJoinCollaborationConfig, buildLayoutPreviewGeometry, buildLiveInkStrokeView, buildMorphAnimationRules, buildMorphTransitionPlan, buildMotionPathPreview, buildNotesHtml, buildNotesPdfBytes, buildNotesPrintHtml, buildOleContentUpdatePatch, buildOleEditDialogDescriptor, buildOleObjectNamePatch, buildOutline, buildOutlineHtml, buildParagraphs, buildPresentationAudienceUrl, buildPreviewAnimation, buildPreviewElements, buildPrintDocument, buildPrintHtmlDocument, buildRasterPictureElement, buildRectPathGradient, buildReviewRibbon, buildRibbonGallery, buildRunProgramNotice, buildRunTabLines, buildSaveSlides, buildSectionContextMenuEntries, buildSlidePaneContextMenuEntries, buildSlideSorterContextMenuEntries, buildSlideTemplateContent, buildSlideTemplateSlide, buildSlidesHtml, buildSmartArtA11y, buildSmartArtPresetData, buildSmartArtPreviewElement, buildStrokeOutline, buildStrokePathD, buildSubpathFillOverlay, buildSubpathPaints, buildSummaryZoomView, buildSvgGradientDef, buildTabContext, buildTableDataGrid, buildTextBlockStyle, buildTextBody3DSceneStyle, buildTextBodyLayoutStyle, buildTextBuildSpec, buildTextStyleOverrideCss, buildThemeColorMap, buildThemeColorSwatchGrid, buildTiledSlidesPdfBytes, buildTitleBarState, buildUserFontFaceStyles, buildZoomTransitionOverride, calculateViewportFit, canAddTopLevelNode, canCommitActionType, canCropElement, canDrillDown, canEditElementPoints, canGoNext, canGoPrevious, canGroupSelection, canInteractWithElement, canMergeShapes, canRemoveTopLevelNode, canSetStrokeWidth, canUngroupSelection, canUseClipboard, cancelBuildReveal, cancelCropUpdate, canvasToJpegData, cellRunStyle, cellStyleToCss, centeredSvgTextLines, chartDataLabelsTogglePatch, chartGridlinesPatch, chartGridlinesState, chartPartToAttrs, chartPreserveAspectRatio, checkModifyPassword, clampCropValue, clampGifDimensions, clampNotesFontSize, clampOptionNumber, clampPercent2, clampSorterZoom, clampTransitionNumber, clampZoomScale, classifyExtraConnections, classifyMediaType, clearAllLocalViewerData, clearAudienceContent, clearLocalAwareness, clearMotionPath, clearPlaybackTimers, clearStoredViewerPrefs, clientToSlidePoint, clipboardHomeControls, cloneElementForPaste, cloneElementUpdates, cloneHistorySnapshot, cloneSlide, cloneTemplateElementsBySlideId, collapseChartTitleRunsForEdit, collectConnectorSiteCandidates, collectImagePaths, collectMediaElements, collectReferencedFontFamilies, collectUsedFonts, colorWithOpacity, commentMentionQuery, commentTextSegments, comparePresentation, compatibilityWarningToasts, compileEquationTemplateMathMl, compileLatexEquation, computeAllNotesPages, computeAnchoredPopupPosition, computeChartLegendLayout, computeColorFilter, computeColumnBoundaries, computeDrawingViewBox, computeEntranceAnimationDelay, computeGridSpacingPx, computeHandoutLayout, computeInlineEditorRect, computeKeyboardInset, computeMarqueeHitIds, computeMergeCellDown, computeMergeCellRight, computeResizedColumnWidths, computeResizedRowHeight, computeScrollDelta, computeSelectionRect, computeSlideIndices, computeSmartArtElementLayout, computeSnapToShape, computeSplitCell, computeVirtualRange, connectorWrapperTransform, contextMenuInspectorAnchor, contextMenuViewItems, contextualTabLabelKey, convertLatexToOmml, convertOmmlToLatex, convertOmmlToMathMl, copyFormatFromElement, createActiveAnimationGroup, createBackstagePresentation, createBlankSlide, createCollaborationLivePatcher, createCustomizationController, createDefaultChartElement, createDefaultChartUserShape, createDefaultChartUserShapeGroupChild, createDepartureChannel, createGlyphOutlineLookup, createImageElementFromFile, createInitialPresentationSnapshot, createInlineListModelObserver, createInlineListSeed, createPlainNotesSegments, createPresenceProjector, createPresentationKeyBuffer, createPresentationLoadResources, createPresentationSessionId, createPresenterShowGuard, createPresenterTimer, createRotationDrag, createSnapshotTextPositions, createSyncGate, createTableStyleEntry, createTouchGestureRecognizer, createViewerOptionsStore, createViewerZoomStore, createWheelStepBuffer, createWriteBackScheduler, cropFill, cropFit, cropModeKeyAction, cropResetPatch, cropResetState, cropSessionChanged, cropToAspectRatio, cursorForTool, customGeometryPathsToSvgSubpaths, customizeBackstageCards, customizeBackstageNav, customizeCanvasContextMenuEntries, customizeContextMenuEntries, customizeOptionsTabs, cycleSelectableElement, defaultCssVars, defaultRadius, defaultRichEnabled, defaultThemeColors, defineThreeViewElement, deleteAutosaveSnapshot, deleteSection, deleteTableStyleFromMap, deleteTagFromCollections, demote, deriveSlideFieldContext, deriveViewportBreakpoints, describeCollaborationShellState, describeFontEmbedding, describeSmartArtBounds, describeTableStyleEditor, designCommandState, detectOrientation, detectTouchDevice, directionValuesFor, discardAutosaveRecovery, distributeElements, downloadBlob, downloadDataUrl, dragCropHandle, drawingHomeControls, drillSelectionForClick, drillSelectionForDoubleClick, editCommentInList, editingHomeControls, editorThumbnailHeight, editorThumbnailStep, editorThumbnailWidth, effectiveDirection, effectiveTimingCurve, elementActionToPptxAction, elementBulletKind, elementContainerHeightStyle, elementHitTargetStyle, elementIdSelector, elementLockTogglePatch, elementPictureFilename, encodeGif, endAudienceDisplay, ensureActionAffordanceStyles, ensureChartInteractionStyles, erasePresentationInkAt, evenColumnWidths, evenRowHeights, exportDeckJson, fetchGoogleWebfontOutlineBytes, filterHiddenSlideIndices, filterInteractableIds, filterRenderedElements, findCanvasElementNode, findChartPartTarget, findConnectorSiteNear, findElementPath, findEraserHitElementId, findInSlides, findSelectedThemeSwatch, findSmartArtNodeText, finishPrintWindow, firstShowSlideIndex, flattenNodes, flattenTagCollections, followingText, fontHomeControls, fontPickerHomeControls, forgetSessionDeck, formatAxisValue, formatBackstageDate, formatBackstageSize, formatBytes, formatCommentTimestamp, formatElapsed, formatMobileElapsed, formatRelativeTime, formatSlideCounter, formatTime, formatVersionTimestamp, fpsToFrameIntervalMs, galleryTextLabel, generateBroadcastRoomId, generateElementId, generateNoteLineCount, generateTicks, getActiveXControlOverlayView, getAnimationColorBaseStyle, getAnimationInitialStyle, getAriaLabel, getAriaRole, getAriaRoleDescription, getBarFacePicturePixelSampleVersion, getBevelLightingSvgFilter, getCachedNativeImageSize, getCachedResult, getCalloutLeaderLineGeometry, getCalloutViewBoxBounds, getCellDiagonalBorders, getChartStylePalette, getChartUserShapeGroupTransform, getChartUserShapeRowChartBox, getCinematicTransitionAnimations, getCompoundLineOffsets, getCompoundLineWidths, getComputedEffectStyle, getComputedFillStyle, getComputedStrokeStyle, getConnectorEndpointHandles, getConnectorPathGeometry, getContentPartReplayStyles, getCropShapeClipPath, getCurrentParagraphIndex, getDenseGridLayoutPlan, getDensePanelTouchTargetPx, getDraggedShapeAdjustments, getDuotoneCachedResult, getEffectSoundAsset, getEffectSoundState, getEffectStyleSource, getElementLabel, getElementTransform, getElementTransformWithoutRotation, getFragmentedTransitionDescriptor, getGroupChildParentFill, getImageColorWashStyle, getImageEffectsFilter, getImageEffectsOpacity, getImageFillCounterTransform, getImageFitStyle, getImageSvgFilters, getImageTilingStyle, getInkReplayStyles, getInlineEditorSelectionResult, getLocalStorageUsageSummary, getNonVisualDescriptionFields, getNotesPrintableArea, getOleAriaLabel, getOleBadgeLabel, getOleDisplayName, getOleDocumentParagraphs, getOleNestedDeckDetail, getOleObjectTypeLabel, getOleSheetGrid, getOleTypeColor, getOleTypeLabel, getOnlineVideoEmbed, getOverflowSegments, getP14TransitionAnimations, getPatternSvg, getPendingSelectionRestore, getPresentationContextMenuSections, getPresetShapeVectorGeometry, getPrintableArea, getResizeHandleHitAreaStyle, getSelectionControlArtworkStyle, getSelectionOutlineColor, getSelectionTextStyleFlags, getSessionTabId, getShapeAdjustmentHandleDescriptors, getShapeConnectionSites, getSlideBackgroundStyle, getSlideTransitionAnimations, getSoftEdgeSvgFilter, getSpeechRecognitionCtor, getSubstituteFontFamily, getSvgStrokeDasharray, getTableCellBandStyle, getTextBodyRotationTransform, getTextCompensationTransform, getWarpPath, groupElements, groupIntoParagraphs, groupSlidesBySection, guidePxToEmu, handleReadingViewKey, hasCopyableFormat, hasDistinctScriptFonts, hasGlyphEnvelope, hasMultipleSelectedTableCells, hasShapeProperties, hasShowSlideAfter, hasTextProperties, hasTiltData, hexToRgbUnit, hiddenSlideCue, hideChartSeries, hollowTextFillStyle, homeGalleryApply, homeGalleryControls, imageResetPatch, imageResetState, inlineElementPointerEvents, inlineListBodyText, insertCommentMention, insertTableElementColumn, insertTableElementRow, isActionHidden, isBrowserOpenableMime, isBulletMarkerSegment, isCalloutShape, isCellInRect, isCurrentLayout, isDialogAvailable, isDrawingToolVisible, isEditPointsEnabled, isEditableMotionPath, isEditableTextElement, isEditorControlTarget, isEditorTextInputTarget, isElementActionable, isElementLocked, isElementRendered, isEnterableGroup, isExportAbortError, isFeatureEnabled, isGroupMember, isHeaderFooterDateTextVisible, isHeaderFooterFooterTextVisible, isHeaderFooterHeaderTextVisible, isHollowShapeElement, isImageLikeElement, isImageTiled, isInkElement, isKeyboardOpen, isLegacyBinaryPresentation, isLinkedTextBox, isMediaFullscreenActive, isMixedContentBlocked, isMobileViewport, isOptionsPageVisible, isPanelVisible, isPpactionUrl, isPresentationAdvanceClick, isPresentationSessionMessage, isSeriesUsingSecondaryAxis, isStrokeOnlyPresetElement, isSupportedPresentationFile, isTemplateElementId3 as isTemplateElementId, isUrlSafe, isWedgeCalloutPresetShape, lastShowSlideIndex, listAutosaveSnapshots, listBackstageRecentFiles, listChartUserShapeRows, listMediaBookmarkOptions, loadAudienceContent, loadSessionDeck, lockResizeAspect, makeCloneId, makeSlideId, mapCustomizedEditorKey, mapEditingWheel, mapInlineTextFormatKey, mapOutlineKey, mapPresentationKey, mapPresentationWheel, mapSlideShowStartKey, mapSlideSorterKey, masterViewBackgroundColor, masterViewCrudActions, masterViewCrudFailureKey, masterViewElements, masterViewPseudoSlide, matchCommentMentionAuthors, mayLeaveSlideShow, measurePreviewGeometry, measureSvgViewportRect, mediaFallbackIcon, mediaFallbackLabelKey, mediaFallbackVisual, mediaPlaybackAttributes, mediaTransportVisible, mediaTrimEndAbsoluteMs, mediaTrimEndMsFromAbsoluteMs, mediaTrimEndMsFromSeconds, mediaTrimEndSeconds, mediaTrimResetPatch, mediaTrimResetState, memberChainAtPoint, mergeAdditiveSelection, mergeCaptionResults, mergeCells, mergePresentationSnapshot, mergeSlideTransition, mobileElapsedSince, mobileSlideCounter, modelDataToBlobUrl, morphOptionToMode, motionPathEndPixel, motionPathFamilyLabelKey, motionPathFor, motionPathPresetIdForPath, motionPathPresetLabelKey, motionPathPresetsByFamily, motionPathToSvgD, mountModel3D, movePresenterPointer, moveQuickAccessCommand, moveSectionDown, moveSectionUp, moveSlidesToSection, mruColorsPatch, nestedTextDecorationStyle, newTableElement, nextPresentedSlide, nextShowSlideIndex, nextToggleValue, normalizeHexColor2 as normalizeHexColor, normalizeStrokeDashType, normalizeTableStyleGuid, notesSegmentsToSpans, observeElementHeight, observeExternalCollaborationReadiness, observeExternalCollaborationSession, observeYDocSlides, oleActionsVisible, ooxmlGradientAngleToCssDegrees, openNativeEyeDropper, openPendingPrintWindow, openPptxFile, openReadingView, openUrlInNewTab, overlayInlineTextSnapshot, overlayMasterViewInlineSnapshot, overlayPointerInput, paintedElementSize, paintedStrokeWidth, panCropImage, paragraphHomeAction, paragraphHomeAlign, paragraphHomeControls, paragraphsToSegments, parentSelection, parseCropValue, parseDrawingColor, parseDrawingColorOpacity, parsePanoseString, parsePpactionUrl, parseSegmentsFromRichEditor, partitionTemplateElements, patchChartData, pickSupportedMimeType, pieceLetterSpacing, placeAudienceWindow, placeCaretAt, placeTileOnPage, placeholderPromptDescriptor, planMergeShapes, playAnimationRibbonPreview, playFeedbackSound, playGroup, playSlideTransitionPreview, pptxActionToElementAction, prepareElementForInsertion, prepareElementUpdateBatch, prepareHtml2CanvasClone, presentationBaseName, presentationEntrySlideIndex, presentationInkPath, presentationViewItems, presenterConsoleAction, presenterConsoleViewState, presenterElapsed, presenterNextDisabled, presenterPaneAdvancesOnClick, presenterPrevDisabled, presenterTimerProgress, previousShowSlideIndex, printPropertiesFrameSlides, printPropertiesSlidesPerPage, probeAutosaveRecovery, probeNativeImageSize, projectDrawingShapes, promote, publishLiveGeometry, publishLiveInlineText, pushRecentColor, quickStyleSwatchCss, radarStylePatch, rasterResultToPngBlob, rasterResultToPngDataUrl, rasterizeElement, rasterizeElementTiledToCanvas, rasterizeElementTiles, reResolveElementColors, reResolveElementFonts, reResolveSlideColors, readBackstageRecentFile, readEditableText, readListActivationSelection, readOnlyRecommendation, readRibbonTransitionDraft, readSlidesFromYDoc, readStoredViewerPrefs, readViewportMetrics, readingViewFitScale, rebuildDrawingShapesIfCleared, reconcileSlidesInYDoc, recordProgressPercent, rectToCells, redistributeColumnWidth, registerCollaborationTeardown, registerCrossSlideAudio, registerCustomFont, remapTextToSegments, rememberSessionDeck, removeChartCategory, removeChartSeries, removeCommentFromList, removeEmptyNode, removeLastTableElementColumn, removeLastTableElementRow, removeQuickAccessCommand, removeSmartArtNode, removeTableElementColumn, removeTableElementRow, renameSection, reorder2 as reorder, reorderAnimationTimelineRows, replaceMasterViewElements, replaceOleFile, replyToCommentInList, rerouteConnectorsForMovedElements, resetPresenterTimer, resetSlideLayoutPath, resolve3DRenderingFlags, resolveActionType, resolveActiveRibbonTab, resolveAudienceScreenPlacement, resolveAuthoredCustomShowId, resolveAuthoredSlideRange, resolveAutoAdvanceDelayMs, resolveAutoFitFontScale, resolveAutosaveActivation, resolveAutosaveIntervalMs, resolveAutosaveIntervalSeconds, resolveChartKind, resolveChartThreeViewSpec, resolveCollaborationShellEditability, resolveCollaborationShellState, resolveConnectorEndpointUpdate, resolveDefaultFontFamily, resolveDefaultPrintSettings, resolveDirection, resolveDirection8, resolveDisplayedChartType, resolveEditPointsAvailability, resolveEffectiveHiddenActions, resolveElementActionAffordance, resolveElementAriaAttributes, resolveElementHighlightClick, resolveElementInteractivity, resolveExpiredAutosaveSnapshots, resolveExportCaptureDecision, resolveFontKerning, resolveForwardSlideWithZoomReturn, resolveGoogleWebfontHref, resolveGroupChildFill, resolveHistoryDepth, resolveImageResolutionScale, resolveInlineEditAutoFitHeight, resolveInlineEditNormAutofitShrink, resolveMediaBookmarkTimesMs, resolveMediaElementSource, resolveMediaTimeNodeElementIds, resolveMetricTrackingPx, resolveNotesSchematicBodyFontSizePx, resolveNotesSegments, resolveOleType, resolveOleVerbTarget, resolveOptionRootClasses, resolveOrientation, resolvePalette, resolvePresentationAction, resolveProfileInitial, resolveRevealedChartData, resolveRevealedDrawingShapeNodeIds, resolveRevealedDrawingShapes, resolveRevealedSmartArtNodes, resolveScreenTip, resolveScriptFontSet, resolveSelectionPaneRename, resolveShapeGeometry, resolveShowSlideIndexes, resolveSlidePaneClick, resolveSlideSizeSelection, resolveSlideTransition, resolveSmartArtThreeViewSpec, resolveStatusBarSave, resolveTableCellImageUrls, resolveTableStyleImageUrls, resolveTemplateBackgroundRows, resolveTextFillBlipUrls, resolveThemeCatalogEntry, resolveTransitionDurationMs, resolveTransitionSoundAction, resolveTransportForServerUrl, resolveViewerAddinRows, resolveViewportFitOptions, resolveWheelSpokeCount, resolveZoomNavigationTarget, restoreFilteredSeries, restoreInlineListBodySelection, restoreSegmentSelection, restoreSessionDeck, ribbonCustomizationCss, ribbonTransitionStockSoundUrl, ribbonTransitionUpdates, ribbonTransitionsDraftPatch, ribbonTransitionsSoundChange, rulerDragToGuidePosition, runPresentationAction, runProgramNoticeStackStyle, safeOpenUrl, sanitizeColor, sanitizeGradientStops, sanitizeMathMl, saveAutosaveSnapshot, saveDeckWithPassword, saveViewerProfile, savedPresentationFileName, scaleFontSizeForAutoFit, scaleSlidesForSizeChange, scanAvailableFontFamilies, scheduleAutoAdvanceChain, scheduleMediaTrimAndFade, schemaLabel, scopeLayoutOptionsToSlide, scrollInspectorSectionIntoView, sectionAddAfterSlideIndex, seedRecentColors, segmentFrameCount, segmentStyleToCss, segmentsToEditorHtml, segmentsToParagraphs, segmentsToPlainText, selectGoogleWebfontFamilies, selectedBookmarkOptionValue, selectedParagraphBulletKind, selectionBulletKind, sendBackward, sendToBack, seriesColorClearState, seriesSecondaryAxisPatch, setAfterAnimation, setAfterAnimationColor, setCachedResult, setCellText, setChartAxisGridlineStyle, setChartAxisLogScale, setChartAxisTitleStyle, setChartCategoryLabel, setChartCellValue, setChartDataPointExplosion, setChartDataPointFill, setChartDataPointLabel, setChartDataPointMarker, setChartSeriesChartType, setChartSeriesMarker, setDataLabelsRangeCache, setDuotoneCachedResult, setEffectSound, setEffectStockSound, setMasterViewBackgroundColor, setMotionPath, setMotionPathEnd, setPendingCaretPoint, setPendingSelectionRestore, setSmartArtNodeStyle, setTableElementCellText, setTrigger, setTriggerBookmark, shapeFillChange, shapeOutlineChange, shouldAutoFollowBroadcaster, shouldClearAutosaveCacheOnClose, shouldCommitSmartArtNodeText, shouldConfirmExternalHyperlink, shouldDiscardAutosaveOnSuccessfulSave, shouldLoopContinuously, shouldProbeAutosaveRecovery, shouldRenderHitTarget, shouldRoomSlidesReplaceLoad, shouldShowAccessibilitySection, shouldShowAutosaveRecoveryPrompt, shouldShowElementHandles, shouldShowMediaFullscreenStopButton, shouldStickyActionRow, shouldUseSvgWarp, shouldWriteAutosaveSnapshot, siblingCount, siblingIndex, slideBackgroundClearPatch, slideBackgroundClearState, slidePaneViewItems, slideProgressPercent, slideSizeFromPreset, slideSizeToCanvasPx, slideSorterContextMenuLabel, slideSpaceElement, slideSpaceMembers, slideStatusLabel, slidesHomeControls, snapBoxToGrid, splitCell, splitEastAsianBreaks, splitRunByScriptFont, splitRunForMetrics, splitWordsForUnderline, splitsUnderlineIntoWords, startCropSession, statusBarViewMode, stepFontSizePt, stepPresenterZoom, stopAllPersistentAudio, stopCaptureStream, storeAudienceContent, stripUnderlineDecoration, strokeOutlineViewBox, strokeWidthOf, styleShadowFilter, subscribeBarFacePicturePixelSamples, substituteFieldText, subtitleRecognitionLanguage, subtitleSettingsFromOptions, subtitleSettingsLabels, surfaceWireframePatch, svgGradientFillRef, svgLineCap, swapPresentationWindows, switchSmartArtLayout, syncGoogleWebfontStylesheet, tableCellCss, tableContainerCss, tableStyleAssignmentUpdate, takePendingCaretPoint, templateSchemeFromTheme, text3dEmuToPt, text3dPtToEmu, textBuildSpanStyle, textFontSizePtToPx, textFontSizePxToPt, themeColorSchemesEqual, themeColorSwatchRows, themeEditorLabels, themeSwatchCommit, themeToCssVars, toCssTextOrientation, toCssVerticalDirection, toCssWritingMode, toElementAxes, toSlideIndex, toggleBlackboard, toggleCommentResolvedInList, togglePresenterTimer, toggleSelectionBullets, toggleSheet, toggleStageElementMedia, toggleText3dExtrusion, transformInlineListCase, transformTextCase, trimmedMediaDurationMs, ungroupElements, updateCellTextInRawXml, updateCellTextStyleInRawXml, updateElement, updateMasterViewElement, updateMergeAttrsInRawXml, updateSmartArtNodeText, updateSubtitleSettings, updateTagInCollections, validateMediaTrimRange, validateRoomId, vermilionDarkColors, vermilionDarkTheme, vermilionLightColors, vermilionLightTheme, vermilionRadius, viewPropertiesPatchFromPreferences, viewerOptionsToPreferences, viewerPreferencesFromViewProperties, visibleContextualTabs, visibleTemplateElements, warpPreviewPath, withChartTitle, withChartUserShapeAdded, withChartUserShapeGroupChildAdded, withChartUserShapeRowChartBoxUpdated, withChartUserShapeRowFlipUpdated, withChartUserShapeRowRemoved, withChartUserShapeRowRotationUpdated, withChartUserShapeRowTextUpdated, withChartUserShapeRowUpdated, withConnectorEndpointUpdate, withFrameSlides, withHomeGalleries, withInlineListDecorationDefaults, withSlideSizeOrientation, withSlidesPerPage, writeStoredViewerPrefs, xmlText };
269400
+ export { ACTION_BUTTON_PRESETS, ACTION_INDICATOR_CLASS, ACTION_INDICATOR_ICON_PATH, ANIMATION_DIRECTION_LABEL_KEYS, ARTISTIC_EFFECTS, AVATAR_COLOR_SWATCHES, BACKSTAGE_BACK_CLASSES, BACKSTAGE_CARD_IDS, BACKSTAGE_NAV, BACKSTAGE_NAV_CLASSES, BACKSTAGE_PAGE_IDS, BACKSTAGE_TEMPLATES, BAR3D_SHAPE_OPTIONS, BEVEL_PRESETS, BROADCAST_THROTTLE_MS, CANVAS_CONTEXT_MENU_COMMAND_IDS, CATEGORIES, CHART_QUICK_ACTION_BUTTON_SIZE, CHART_TYPE_OPTIONS, CINEMATIC_TRANSITION_KEYFRAMES, COLOR_MAP_ALIAS_KEYS, COMMENT_MARKER_SIZE, COMMENT_MENTION_ATTRIBUTE, COMMENT_MENTION_CLASS, COMPOUND_LINE_OPTIONS, CONNECTION_TIMEOUT_MS, CONNECTOR_SITE_SNAP_PX, CONTEXTUAL_TAB_GROUPS, CONTEXT_MENU_PRESENTATION_LAYER, CROP_HANDLE_ARIA_KEY, CUSTOM_FONT_ACCEPT, DEBOUNCE_MS, DEFAULT_BROADCAST_SERVER_URL, DEFAULT_COLOR_CHANGE_TOLERANCE, DEFAULT_COLOR_MAP, DEFAULT_FONT_FAMILY2 as DEFAULT_FONT_FAMILY, DEFAULT_INSERT_CHART_KIND, DEFAULT_MORPH_DURATION_MS, DEFAULT_PALETTE2, DEFAULT_QUICK_ACCESS_COMMAND_IDS, DEFAULT_ROW_HEIGHT, DEFAULT_TRANSITION_DURATION_MS, DEFAULT_VIEWER_OPTIONS, DEFAULT_VIEWER_PREFERENCES, DEFAULT_VIEWER_PROFILE, DEFAULT_VIRTUAL_OVERSCAN, DESIGN_RIBBON_COMMANDS, DESIGN_RIBBON_GROUPS, DUOTONE_PRESETS, EASE, EDITOR_CHROME_CSS, EDITOR_SHORTCUT_ACTION_IDS, EDITOR_THUMBNAIL_WIDTH, EDITOR_VIEWPORT_FIT, EDIT_POINTS_STYLE, EDIT_POINTS_TARGET_ATTR, EFFECT_SOUND_CATALOGUE, ELEMENT_ACTION_TYPE_OPTIONS, ELEMENT_CONTEXT_MENU_COMMAND_IDS, EMPTY_RESOLVED_CUSTOMIZATION, EQUATION_TEMPLATES, EXPANDED_MAX_HEIGHT, EXPORT_ASSEMBLING_PERCENT, EXPORT_DONE_PERCENT, EditPointsSession, EncryptedFileError, FILL_MODE_OPTIONS, FILL_PATTERN_LABEL_KEYS, FIXED_TAB_GALLERIES, FREEFORM_TOOL_IDS, FreeformToolSession, GIF_POST_CAPTURE_MAX_SIDE, GRADIENT_TYPE_OPTIONS, GlyphOutlineFontCache, HANDOUT_OPTIONS, HELP_RIBBON_COMMANDS, HIDDEN_SLIDE_LABEL_KEY, HIDDEN_SLIDE_SLASH_GRADIENT, INDENT_PX, INK_REPLAY_KEYFRAMES, INSTANT, LBL, LINE_CAP_OPTIONS, LINE_JOIN_OPTIONS, LINK_TOOLTIP_CLASS, LINK_TOOLTIP_HINT_CLASS, LINK_TOOLTIP_HOST_CLASS, LINK_TOOLTIP_LABEL_CLASS, LINK_TOOLTIP_PANEL_CLASS, LOCAL_SYNC_ORIGIN, MATERIAL_PRESETS, MAX_INDENT_LEVEL, MAX_ZOOM_SCALE, MEDIA_CHROME_ATTRIBUTE, MEDIA_FULLSCREEN_OVERLAY_STYLE, MERGE_SHAPES_MENU_ITEMS, MIN_TOUCH_TARGET_PX, MIN_ZOOM_SCALE, MOBILE_BREAKPOINT, MORPH_CROSSFADE_GROUP_STYLE, MORPH_CROSSFADE_HALF_STYLE, MOTION_PATH_FAMILIES, NOTES_FONT_SIZE_DEFAULT, NOTES_FONT_SIZE_MAX, NOTES_FONT_SIZE_MIN, NOTES_FONT_SIZE_STEP, NUM, OFFICE_COLOR_SWATCHES, ONLINE_VIDEO_IFRAME_ALLOW, ONLINE_VIDEO_IFRAME_SANDBOX, OPTIONS_PAGE_IDS, OPTIONS_SECTION_IDS, OPTIONS_SETTING_IDS, OUTLINE_LEVEL_ATTR, OUTLINE_ROW_ATTR, OUTLINE_SLIDE_ATTR, OUTLINE_VIEW_ATTR, P14_TRANSITION_KEYFRAMES, P14_TRANSITION_KEYFRAMES_2, P14_TRANSITION_KEYFRAMES_ALL, PASTE_SPECIAL_OPTIONS, PATTERN_OPTIONS, PATTERN_PRESET_OPTIONS, PDF_SLIDES_PAGE_HEIGHT_PT, PDF_SLIDES_PAGE_WIDTH_PT, PPTX_OPEN_ACCEPT, PRESENTATION_ANIM_TRIGGER_ATTRIBUTE, PRESENTATION_CHANNEL_NAME, PRESENTATION_HASH, PRESENTATION_HIT_TEST_CSS, PRESENTATION_MESSAGE_ORIGIN, PRESENTATION_NONCE_KEY, PRESENTATION_OPEN_EXTENSIONS, PRESENTATION_STAGE_ATTRIBUTE, PRESENTER_CONSOLE_CLASSES, PRESENTER_NAVIGATOR_LABEL_KEYS, PRESENT_TOOLBAR_CLASSES, PRESETS, PptxHandler, PptxMarkdownConverter, PresentationAnimationController, QUICK_ACCESS_COMMAND_CATALOG, RADAR_STYLE_OPTIONS, RANDOM_ELIGIBLE_TYPES, READING_VIEW_ATTR, READING_VIEW_COUNTER_ATTR, READING_VIEW_STAGE_ATTR, RECORD_COMMAND_GROUPS, RIBBON_CONTEXTUAL_TAB_ATTR, RIBBON_GROUP_ATTR, RIBBON_SCOPE_ATTR, RIBBON_TAB_IDS, RULER_FONT_SIZE, RULER_THICKNESS, SECTION_HEADING, SEL, SHAPE_PRESET_DEFS, SHAPE_QUICK_STYLES, SHORTCUT_REFERENCE_ITEMS, SLIDE_SHOW_COMMAND_GROUPS, SLIDE_SHOW_OPTIONS, SLIDE_SIZE_PRESETS, SLIDE_TEMPLATES, SLIDE_TRANSITION_KEYFRAMES, SLIDE_TRANSITION_KEYFRAMES_CSS, SLIDE_TRANSITION_OPTIONS, SLIDE_VIRTUALIZATION_THRESHOLD, SMARTART_COLOR_SCHEME_LABEL_KEYS, SMARTART_PREVIEW_ELEMENT_HEIGHT, SMARTART_PREVIEW_ELEMENT_WIDTH, SMARTART_STYLE_LABEL_KEYS, SORTER_MAX_ZOOM, SORTER_MIN_ZOOM, SORTER_ZOOM_STEP, STROKE_DASH_OPTIONS2 as STROKE_DASH_OPTIONS, SURFACE_WIREFRAME_OPTIONS, SWITCHABLE_LAYOUT_TYPES, SvgExporter, TABLET_BREAKPOINT, TABLE_STYLE_BORDER_SIDES, TABLE_STYLE_BORDER_SIDE_LABEL_KEYS, TABLE_STYLE_DASH_PRESETS, TABLE_STYLE_EDITOR_PARTS, TABLE_STYLE_PRESETS, TAB_ROW_ACTION_CLASSES, TEXT_BUILD_ID_SEP, TEXT_DECORATION_FLAGS, TEXT_WARP_PRESETS, THEME_CATALOG, THEME_COLOR_SCHEME_KEYS, THEME_COLOR_SLOT_LABEL_KEYS, THEME_PRESETS, TOOLBAR_BUTTON_IDS, TOOLBAR_TABS, TRANSITION_DIR_ARROWS, TRANSITION_MORPH_OPTIONS, TRANSITION_ORIENTATION_TYPES, TRANSITION_PATTERN_OPTIONS, TRANSITION_SPEED_DURATION_MS, TRANSITION_SPEED_OPTIONS, TRANSITION_THRUBLK_TYPES, TRANSITION_VALID_DIRECTIONS, TRIGGER_OPTIONS, ThemePresets, VIEWER_DIALOG_IDS, VIEWER_EXPORT_FORMAT_IDS, VIEWER_FEATURE_IDS, VIEWER_OPTIONS_TABS, VIEWER_PANEL_IDS, VIEWER_PREFS_STORAGE_KEY, VIEWER_SHORTCUT_REFERENCE, WEBM_MIME_CANDIDATES, WHEEL_SPOKE_COUNTS, acceptAutosaveRecovery, acceptsPresentationInput, acknowledgeAutosaveRecovery, actionAffordanceLabels, activateModalFocus, addChartCategory, addChartSeries, addCommentToList, addQuickAccessCommand, addSection, addSiblingAfter, addSmartArtNodeAsChild, addTableStyleToMap, addTagToCollections, advanceChartMarkDrag, advanceChartValueDrag, advanceMainSequence, alignElements, animationEffectLabel, annotationOverlayZIndex, appendPresentationInkPoint, appendTableElementColumn, appendTableElementRow, apply3dEffects, applyAcceptAllSlides, applyAcceptSlide, applyActiveInlineListFormatting, applyAnimationTimelineOrder, applyAutoCorrect, applyCaseTransformToSegments, applyChart3DDrag, applyChart3DSelect, applyChartElementToggle, applyChartPartHighlight, applyChartStylePreset, applyColorChange, applyDuotone, applyFindReplacements, applyFormatToElement, applyHighlightClickStyle, applyImagePathPatches, applyListStyleUpdate, applyMasterViewCrudAction, applyMergeShapesPlan, applyMotionPathPreset, applyOleDocumentParagraphEdit, applyOleNestedDeckElementTextEdit, applyOleSheetCellEdit, applyOutlineEdit, applyPasteSpecialFormat, applyPreferenceToOptions, applyReadingViewCommand, applyRehearsalTimings, applyReroutedConnectors, applyResize, applyRibbonGalleryItem, applyTableStyleDelete, applyTableStyleFieldEdit, applyTableStyleMapChange, applyTableStylePreset, applyTextStyleUpdate, applyThemeOverrideToSlide, applyThemeToData, applyUnderlineVariant, arrangeAlignAction, arrangeHomeControls, arrangePainterHomeControls, arrangeShapeHomeControls, assertElementUpdateTarget, attachCollaborationInlineEditor, attachEditorImagePaste, attachInlineListController, attachOverlayKeyboard, attachPresentationVisibilityPause, attachRibbonOverflow, attachRotateHandlePlacement, authorConnectorBetweenSites, authoredLetterSpacingPx, autosaveSnapshotMark, availableQuickAccessCommands, backstageCardsFor, bar3DShapePatch, beginChartMarkDrag, beginChartValueDrag, beginCropDrag, beginShapeAdjustment, beginZoomExcursion, bindInlineListParagraph, bindInlineListRun, borrowExternalCollaborationAwareness, bringForward, bringToFront, build3DExtrusionData, buildActiveSessionUsers, buildAnimationTimelineBars, buildAnimationTimelineRows, buildBroadcastViewerUrl, buildCacheKey, buildCalloutLeaderLineSvgPath, buildCanvasContextMenuEntries, buildChartMarkDragGeometry, buildChartQuickActionsDescriptor, buildChartViewModel, buildChromeStyle, buildCollaborationShareUrl, buildCommentMarkers, buildContentPartStrokes, buildContextMenuEntries, buildCreateCollaborationConfig, buildCropOverlay, buildCssGradientFromShapeStyle, buildDeckSaveOptions, buildDirectionGrid, buildDuotoneCacheKey, buildElementClipboardPayload, buildFieldSubstitutionContext, buildFreeformShapeElement, buildGlyphEnvelopeBlock, buildHandoutsHtml, buildHollowHitOutline, buildInitialGuides, buildInkGroupStrokes, buildInlineListStylePatch, buildInlineTextCommitPatch, buildJoinCollaborationConfig, buildLayoutPreviewGeometry, buildLiveInkStrokeView, buildMorphAnimationRules, buildMorphTransitionPlan, buildMotionPathPreview, buildNotesHtml, buildNotesPdfBytes, buildNotesPrintHtml, buildOleContentUpdatePatch, buildOleEditDialogDescriptor, buildOleObjectNamePatch, buildOutline, buildOutlineHtml, buildParagraphs, buildPresentationAudienceUrl, buildPreviewAnimation, buildPreviewElements, buildPrintDocument, buildPrintHtmlDocument, buildRasterPictureElement, buildRectPathGradient, buildReviewRibbon, buildRibbonGallery, buildRunProgramNotice, buildRunTabLines, buildSaveSlides, buildSectionContextMenuEntries, buildSlidePaneContextMenuEntries, buildSlideSorterContextMenuEntries, buildSlideTemplateContent, buildSlideTemplateSlide, buildSlidesHtml, buildSmartArtA11y, buildSmartArtPresetData, buildSmartArtPreviewElement, buildStrokeOutline, buildStrokePathD, buildSubpathFillOverlay, buildSubpathPaints, buildSummaryZoomView, buildSvgGradientDef, buildTabContext, buildTableDataGrid, buildTextBlockStyle, buildTextBody3DSceneStyle, buildTextBodyLayoutStyle, buildTextBuildSpec, buildTextStyleOverrideCss, buildThemeColorMap, buildThemeColorSwatchGrid, buildTiledSlidesPdfBytes, buildTitleBarState, buildUserFontFaceStyles, buildZoomTransitionOverride, calculateViewportFit, canAddTopLevelNode, canCommitActionType, canCropElement, canDrillDown, canEditElementPoints, canGoNext, canGoPrevious, canGroupSelection, canInteractWithElement, canMergeShapes, canRemoveTopLevelNode, canSetStrokeWidth, canUngroupSelection, canUseClipboard, cancelBuildReveal, cancelCropUpdate, canvasToJpegData, cellRunStyle, cellStyleToCss, centeredSvgTextLines, chartDataLabelsTogglePatch, chartGridlinesPatch, chartGridlinesState, chartPartToAttrs, chartPreserveAspectRatio, checkModifyPassword, clampCropValue, clampGifDimensions, clampNotesFontSize, clampOptionNumber, clampPercent2, clampSorterZoom, clampTransitionNumber, clampZoomScale, classifyExtraConnections, classifyMediaType, clearAllLocalViewerData, clearAudienceContent, clearLocalAwareness, clearMotionPath, clearPlaybackTimers, clearStoredViewerPrefs, clientToSlidePoint, clipboardHomeControls, cloneElementForPaste, cloneElementUpdates, cloneHistorySnapshot, cloneSlide, cloneTemplateElementsBySlideId, collapseChartTitleRunsForEdit, collectConnectorSiteCandidates, collectImagePaths, collectMediaElements, collectReferencedFontFamilies, collectUsedFonts, colorWithOpacity, commentMentionQuery, commentTextSegments, comparePresentation, compatibilityWarningToasts, compileEquationTemplateMathMl, compileLatexEquation, computeAllNotesPages, computeAnchoredPopupPosition, computeChartLegendLayout, computeColorFilter, computeColumnBoundaries, computeDrawingViewBox, computeEntranceAnimationDelay, computeGridSpacingPx, computeHandoutLayout, computeInlineEditorRect, computeKeyboardInset, computeMarqueeHitIds, computeMergeCellDown, computeMergeCellRight, computeResizedColumnWidths, computeResizedRowHeight, computeScrollDelta, computeSelectionRect, computeSlideIndices, computeSmartArtElementLayout, computeSnapToShape, computeSplitCell, computeVirtualRange, connectorWrapperTransform, contextMenuInspectorAnchor, contextMenuViewItems, contextualTabLabelKey, convertLatexToOmml, convertOmmlToLatex, convertOmmlToMathMl, copyFormatFromElement, createActiveAnimationGroup, createBackstagePresentation, createBlankSlide, createCollaborationLivePatcher, createCustomizationController, createDefaultChartElement, createDefaultChartUserShape, createDefaultChartUserShapeGroupChild, createDepartureChannel, createGlyphOutlineLookup, createImageElementFromFile, createInitialPresentationSnapshot, createInlineListModelObserver, createInlineListSeed, createPlainNotesSegments, createPresenceProjector, createPresentationKeyBuffer, createPresentationLoadResources, createPresentationSessionId, createPresenterShowGuard, createPresenterTimer, createRotationDrag, createSnapshotTextPositions, createSyncGate, createTableStyleEntry, createTouchGestureRecognizer, createViewerOptionsStore, createViewerZoomStore, createWheelStepBuffer, createWriteBackScheduler, cropFill, cropFit, cropModeKeyAction, cropResetPatch, cropResetState, cropSessionChanged, cropToAspectRatio, cursorForTool, customGeometryPathsToSvgSubpaths, customizeBackstageCards, customizeBackstageNav, customizeCanvasContextMenuEntries, customizeContextMenuEntries, customizeOptionsTabs, cycleSelectableElement, defaultCssVars, defaultRadius, defaultRichEnabled, defaultThemeColors, defineThreeViewElement, deleteAutosaveSnapshot, deleteSection, deleteTableStyleFromMap, deleteTagFromCollections, demote, deriveSlideFieldContext, deriveViewportBreakpoints, describeCollaborationShellState, describeFontEmbedding, describeSmartArtBounds, describeTableStyleEditor, designCommandState, detectOrientation, detectTouchDevice, directionValuesFor, discardAutosaveRecovery, distributeElements, downloadBlob, downloadDataUrl, dragCropHandle, drawingHomeControls, drillSelectionForClick, drillSelectionForDoubleClick, editCommentInList, editingHomeControls, editorThumbnailHeight, editorThumbnailStep, editorThumbnailWidth, effectiveDirection, effectiveTimingCurve, elementActionToPptxAction, elementBulletKind, elementContainerHeightStyle, elementHitTargetStyle, elementIdSelector, elementLockTogglePatch, elementPictureFilename, encodeGif, endAudienceDisplay, ensureActionAffordanceStyles, ensureChartInteractionStyles, erasePresentationInkAt, evenColumnWidths, evenRowHeights, exportDeckJson, fetchGoogleWebfontOutlineBytes, filterHiddenSlideIndices, filterInteractableIds, filterRenderedElements, findCanvasElementNode, findChartPartTarget, findConnectorSiteNear, findElementPath, findEraserHitElementId, findInSlides, findSelectedThemeSwatch, findSmartArtNodeText, finishPrintWindow, firstShowSlideIndex, flattenNodes, flattenTagCollections, followingText, fontHomeControls, fontPickerHomeControls, forgetSessionDeck, formatAxisValue, formatBackstageDate, formatBackstageSize, formatBytes, formatCommentTimestamp, formatElapsed, formatMobileElapsed, formatRelativeTime, formatSlideCounter, formatTime, formatVersionTimestamp, fpsToFrameIntervalMs, galleryTextLabel, generateBroadcastRoomId, generateElementId, generateNoteLineCount, generateTicks, getActiveXControlOverlayView, getAnimationColorBaseStyle, getAnimationInitialStyle, getAriaLabel, getAriaRole, getAriaRoleDescription, getBarFacePicturePixelSampleVersion, getBevelLightingSvgFilter, getCachedNativeImageSize, getCachedResult, getCalloutLeaderLineGeometry, getCalloutViewBoxBounds, getCellDiagonalBorders, getChartStylePalette, getChartUserShapeGroupTransform, getChartUserShapeRowChartBox, getCinematicTransitionAnimations, getCompoundLineOffsets, getCompoundLineWidths, getComputedEffectStyle, getComputedFillStyle, getComputedStrokeStyle, getConnectorEndpointHandles, getConnectorPathGeometry, getContentPartReplayStyles, getCropShapeClipPath, getCurrentParagraphIndex, getDenseGridLayoutPlan, getDensePanelTouchTargetPx, getDraggedShapeAdjustments, getDuotoneCachedResult, getEffectSoundAsset, getEffectSoundState, getEffectStyleSource, getElementLabel, getElementTransform, getElementTransformWithoutRotation, getFragmentedTransitionDescriptor, getGroupChildParentFill, getImageColorWashStyle, getImageEffectsFilter, getImageEffectsOpacity, getImageFillCounterTransform, getImageFitStyle, getImageSvgFilters, getImageTilingStyle, getInkReplayStyles, getInlineEditorSelectionResult, getLocalStorageUsageSummary, getNonVisualDescriptionFields, getNotesPrintableArea, getOleAriaLabel, getOleBadgeLabel, getOleDisplayName, getOleDocumentParagraphs, getOleNestedDeckDetail, getOleObjectTypeLabel, getOleSheetGrid, getOleTypeColor, getOleTypeLabel, getOnlineVideoEmbed, getOverflowSegments, getP14TransitionAnimations, getPatternSvg, getPendingSelectionRestore, getPresentationContextMenuSections, getPresetShapeVectorGeometry, getPrintableArea, getResizeHandleHitAreaStyle, getSelectionControlArtworkStyle, getSelectionOutlineColor, getSelectionTextStyleFlags, getSessionTabId, getShapeAdjustmentHandleDescriptors, getShapeConnectionSites, getSlideBackgroundStyle, getSlideTransitionAnimations, getSoftEdgeSvgFilter, getSpeechRecognitionCtor, getSubstituteFontFamily, getSvgStrokeDasharray, getTableCellBandStyle, getTextBodyRotationTransform, getTextCompensationTransform, getWarpPath, groupElements, groupIntoParagraphs, groupSlidesBySection, guidePxToEmu, handleReadingViewKey, hasCopyableFormat, hasDistinctScriptFonts, hasGlyphEnvelope, hasMultipleSelectedTableCells, hasShapeProperties, hasShowSlideAfter, hasTextProperties, hasTiltData, hexToRgbUnit, hiddenSlideCue, hideChartSeries, hollowTextFillStyle, homeGalleryApply, homeGalleryControls, homeLaunchers, imageResetPatch, imageResetState, inlineElementPointerEvents, inlineListBodyText, insertCommentMention, insertTableElementColumn, insertTableElementRow, isActionHidden, isBrowserOpenableMime, isBulletMarkerSegment, isCalloutShape, isCellInRect, isCurrentLayout, isDialogAvailable, isDrawingToolVisible, isEditPointsEnabled, isEditableMotionPath, isEditableTextElement, isEditorControlTarget, isEditorTextInputTarget, isElementActionable, isElementLocked, isElementRendered, isEnterableGroup, isExportAbortError, isFeatureEnabled, isGroupMember, isHeaderFooterDateTextVisible, isHeaderFooterFooterTextVisible, isHeaderFooterHeaderTextVisible, isHollowShapeElement, isImageLikeElement, isImageTiled, isInkElement, isKeyboardOpen, isLegacyBinaryPresentation, isLinkedTextBox, isMediaFullscreenActive, isMixedContentBlocked, isMobileViewport, isOptionsPageVisible, isPanelVisible, isPpactionUrl, isPresentationAdvanceClick, isPresentationSessionMessage, isSeriesUsingSecondaryAxis, isStrokeOnlyPresetElement, isSupportedPresentationFile, isTemplateElementId3 as isTemplateElementId, isUrlSafe, isWedgeCalloutPresetShape, lastShowSlideIndex, listAutosaveSnapshots, listBackstageRecentFiles, listChartUserShapeRows, listMediaBookmarkOptions, loadAudienceContent, loadSessionDeck, lockResizeAspect, makeCloneId, makeSlideId, mapCustomizedEditorKey, mapEditingWheel, mapInlineTextFormatKey, mapOutlineKey, mapPresentationKey, mapPresentationWheel, mapSlideShowStartKey, mapSlideSorterKey, masterViewBackgroundColor, masterViewCrudActions, masterViewCrudFailureKey, masterViewElements, masterViewPseudoSlide, matchCommentMentionAuthors, mayLeaveSlideShow, measurePreviewGeometry, measureSvgViewportRect, mediaFallbackIcon, mediaFallbackLabelKey, mediaFallbackVisual, mediaPlaybackAttributes, mediaTransportVisible, mediaTrimEndAbsoluteMs, mediaTrimEndMsFromAbsoluteMs, mediaTrimEndMsFromSeconds, mediaTrimEndSeconds, mediaTrimResetPatch, mediaTrimResetState, memberChainAtPoint, mergeAdditiveSelection, mergeCaptionResults, mergeCells, mergePresentationSnapshot, mergeSlideTransition, mobileElapsedSince, mobileSlideCounter, modelDataToBlobUrl, morphOptionToMode, motionPathEndPixel, motionPathFamilyLabelKey, motionPathFor, motionPathPresetIdForPath, motionPathPresetLabelKey, motionPathPresetsByFamily, motionPathToSvgD, mountModel3D, movePresenterPointer, moveQuickAccessCommand, moveSectionDown, moveSectionUp, moveSlidesToSection, mruColorsPatch, nestedTextDecorationStyle, newTableElement, nextPresentedSlide, nextShowSlideIndex, nextToggleValue, normalizeHexColor2 as normalizeHexColor, normalizeStrokeDashType, normalizeTableStyleGuid, notesSegmentsToSpans, observeElementHeight, observeExternalCollaborationReadiness, observeExternalCollaborationSession, observeYDocSlides, oleActionsVisible, ooxmlGradientAngleToCssDegrees, openNativeEyeDropper, openPendingPrintWindow, openPptxFile, openReadingView, openUrlInNewTab, overlayInlineTextSnapshot, overlayMasterViewInlineSnapshot, overlayPointerInput, paintedElementSize, paintedStrokeWidth, panCropImage, paragraphHomeAction, paragraphHomeAlign, paragraphHomeControls, paragraphsToSegments, parentSelection, parseCropValue, parseDrawingColor, parseDrawingColorOpacity, parsePanoseString, parsePpactionUrl, parseSegmentsFromRichEditor, partitionTemplateElements, patchChartData, pickSupportedMimeType, pieceLetterSpacing, placeAudienceWindow, placeCaretAt, placeTileOnPage, placeholderPromptDescriptor, planMergeShapes, playAnimationRibbonPreview, playFeedbackSound, playGroup, playSlideTransitionPreview, pptxActionToElementAction, prepareElementForInsertion, prepareElementUpdateBatch, prepareHtml2CanvasClone, presentationBaseName, presentationEntrySlideIndex, presentationInkPath, presentationViewItems, presenterConsoleAction, presenterConsoleViewState, presenterElapsed, presenterNextDisabled, presenterPaneAdvancesOnClick, presenterPrevDisabled, presenterTimerProgress, previousShowSlideIndex, printPropertiesFrameSlides, printPropertiesSlidesPerPage, probeAutosaveRecovery, probeNativeImageSize, projectDrawingShapes, promote, publishLiveGeometry, publishLiveInlineText, pushRecentColor, quickStyleSwatchCss, radarStylePatch, rasterResultToPngBlob, rasterResultToPngDataUrl, rasterizeElement, rasterizeElementTiledToCanvas, rasterizeElementTiles, reResolveElementColors, reResolveElementFonts, reResolveSlideColors, readBackstageRecentFile, readEditableText, readListActivationSelection, readOnlyRecommendation, readRibbonTransitionDraft, readSlidesFromYDoc, readStoredViewerPrefs, readViewportMetrics, readingViewFitScale, rebuildDrawingShapesIfCleared, reconcileSlidesInYDoc, recordProgressPercent, rectToCells, redistributeColumnWidth, registerCollaborationTeardown, registerCrossSlideAudio, registerCustomFont, remapTextToSegments, rememberSessionDeck, removeChartCategory, removeChartSeries, removeCommentFromList, removeEmptyNode, removeLastTableElementColumn, removeLastTableElementRow, removeQuickAccessCommand, removeSmartArtNode, removeTableElementColumn, removeTableElementRow, renameSection, reorder2 as reorder, reorderAnimationTimelineRows, replaceMasterViewElements, replaceOleFile, replyToCommentInList, rerouteConnectorsForMovedElements, resetPresenterTimer, resetSlideLayoutPath, resolve3DRenderingFlags, resolveActionType, resolveActiveRibbonTab, resolveAudienceScreenPlacement, resolveAuthoredCustomShowId, resolveAuthoredSlideRange, resolveAutoAdvanceDelayMs, resolveAutoFitFontScale, resolveAutosaveActivation, resolveAutosaveIntervalMs, resolveAutosaveIntervalSeconds, resolveChartKind, resolveChartThreeViewSpec, resolveCollaborationShellEditability, resolveCollaborationShellState, resolveConnectorEndpointUpdate, resolveDefaultFontFamily, resolveDefaultPrintSettings, resolveDirection, resolveDirection8, resolveDisplayedChartType, resolveEditPointsAvailability, resolveEffectiveHiddenActions, resolveElementActionAffordance, resolveElementAriaAttributes, resolveElementHighlightClick, resolveElementInteractivity, resolveExpiredAutosaveSnapshots, resolveExportCaptureDecision, resolveFontKerning, resolveForwardSlideWithZoomReturn, resolveGoogleWebfontHref, resolveGroupChildFill, resolveHistoryDepth, resolveImageResolutionScale, resolveInlineEditAutoFitHeight, resolveInlineEditNormAutofitShrink, resolveMediaBookmarkTimesMs, resolveMediaElementSource, resolveMediaTimeNodeElementIds, resolveMetricTrackingPx, resolveNotesSchematicBodyFontSizePx, resolveNotesSegments, resolveOleType, resolveOleVerbTarget, resolveOptionRootClasses, resolveOrientation, resolvePalette, resolvePresentationAction, resolveProfileInitial, resolveRevealedChartData, resolveRevealedDrawingShapeNodeIds, resolveRevealedDrawingShapes, resolveRevealedSmartArtNodes, resolveScreenTip, resolveScriptFontSet, resolveSelectionPaneRename, resolveShapeGeometry, resolveShowSlideIndexes, resolveSlidePaneClick, resolveSlideSizeSelection, resolveSlideTransition, resolveSmartArtThreeViewSpec, resolveStatusBarSave, resolveTableCellImageUrls, resolveTableStyleImageUrls, resolveTemplateBackgroundRows, resolveTextFillBlipUrls, resolveThemeCatalogEntry, resolveTransitionDurationMs, resolveTransitionSoundAction, resolveTransportForServerUrl, resolveViewerAddinRows, resolveViewportFitOptions, resolveWheelSpokeCount, resolveZoomNavigationTarget, restoreFilteredSeries, restoreInlineListBodySelection, restoreSegmentSelection, restoreSessionDeck, ribbonCustomizationCss, ribbonTransitionStockSoundUrl, ribbonTransitionUpdates, ribbonTransitionsDraftPatch, ribbonTransitionsSoundChange, rulerDragToGuidePosition, runPresentationAction, runProgramNoticeStackStyle, safeOpenUrl, sanitizeColor, sanitizeGradientStops, sanitizeMathMl, saveAutosaveSnapshot, saveDeckWithPassword, saveViewerProfile, savedPresentationFileName, scaleFontSizeForAutoFit, scaleSlidesForSizeChange, scanAvailableFontFamilies, scheduleAutoAdvanceChain, scheduleMediaTrimAndFade, schemaLabel, scopeLayoutOptionsToSlide, scrollInspectorSectionIntoView, sectionAddAfterSlideIndex, seedRecentColors, segmentFrameCount, segmentStyleToCss, segmentsToEditorHtml, segmentsToParagraphs, segmentsToPlainText, selectGoogleWebfontFamilies, selectedBookmarkOptionValue, selectedParagraphBulletKind, selectionBulletKind, sendBackward, sendToBack, seriesColorClearState, seriesSecondaryAxisPatch, setAfterAnimation, setAfterAnimationColor, setCachedResult, setCellText, setChartAxisGridlineStyle, setChartAxisLogScale, setChartAxisTitleStyle, setChartCategoryLabel, setChartCellValue, setChartDataPointExplosion, setChartDataPointFill, setChartDataPointLabel, setChartDataPointMarker, setChartSeriesChartType, setChartSeriesMarker, setDataLabelsRangeCache, setDuotoneCachedResult, setEffectSound, setEffectStockSound, setMasterViewBackgroundColor, setMotionPath, setMotionPathEnd, setPendingCaretPoint, setPendingSelectionRestore, setSmartArtNodeStyle, setTableElementCellText, setTrigger, setTriggerBookmark, shapeFillChange, shapeOutlineChange, shouldAutoFollowBroadcaster, shouldClearAutosaveCacheOnClose, shouldCommitSmartArtNodeText, shouldConfirmExternalHyperlink, shouldDiscardAutosaveOnSuccessfulSave, shouldLoopContinuously, shouldProbeAutosaveRecovery, shouldRenderHitTarget, shouldRoomSlidesReplaceLoad, shouldShowAccessibilitySection, shouldShowAutosaveRecoveryPrompt, shouldShowElementHandles, shouldShowMediaFullscreenStopButton, shouldStickyActionRow, shouldUseSvgWarp, shouldWriteAutosaveSnapshot, siblingCount, siblingIndex, slideBackgroundClearPatch, slideBackgroundClearState, slidePaneViewItems, slideProgressPercent, slideSizeFromPreset, slideSizeToCanvasPx, slideSorterContextMenuLabel, slideSpaceElement, slideSpaceMembers, slideStatusLabel, slidesHomeControls, snapBoxToGrid, splitCell, splitEastAsianBreaks, splitRunByScriptFont, splitRunForMetrics, splitWordsForUnderline, splitsUnderlineIntoWords, startCropSession, statusBarViewMode, stepFontSizePt, stepPresenterZoom, stopAllPersistentAudio, stopCaptureStream, storeAudienceContent, stripUnderlineDecoration, strokeOutlineViewBox, strokeWidthOf, styleShadowFilter, subscribeBarFacePicturePixelSamples, substituteFieldText, subtitleRecognitionLanguage, subtitleSettingsFromOptions, subtitleSettingsLabels, surfaceWireframePatch, svgGradientFillRef, svgLineCap, swapPresentationWindows, switchSmartArtLayout, syncGoogleWebfontStylesheet, tableCellCss, tableContainerCss, tableStyleAssignmentUpdate, takePendingCaretPoint, templateSchemeFromTheme, text3dEmuToPt, text3dPtToEmu, textBuildSpanStyle, textFontSizePtToPx, textFontSizePxToPt, themeColorSchemesEqual, themeColorSwatchRows, themeEditorLabels, themeSwatchCommit, themeToCssVars, toCssTextOrientation, toCssVerticalDirection, toCssWritingMode, toElementAxes, toSlideIndex, toggleBlackboard, toggleCommentResolvedInList, togglePresenterTimer, toggleSelectionBullets, toggleSheet, toggleStageElementMedia, toggleText3dExtrusion, transformInlineListCase, transformTextCase, trimmedMediaDurationMs, ungroupElements, updateCellTextInRawXml, updateCellTextStyleInRawXml, updateElement, updateMasterViewElement, updateMergeAttrsInRawXml, updateSmartArtNodeText, updateSubtitleSettings, updateTagInCollections, validateMediaTrimRange, validateRoomId, vermilionDarkColors, vermilionDarkTheme, vermilionLightColors, vermilionLightTheme, vermilionRadius, viewPropertiesPatchFromPreferences, viewerOptionsToPreferences, viewerPreferencesFromViewProperties, visibleContextualTabs, visibleTemplateElements, warpPreviewPath, withChartTitle, withChartUserShapeAdded, withChartUserShapeGroupChildAdded, withChartUserShapeRowChartBoxUpdated, withChartUserShapeRowFlipUpdated, withChartUserShapeRowRemoved, withChartUserShapeRowRotationUpdated, withChartUserShapeRowTextUpdated, withChartUserShapeRowUpdated, withConnectorEndpointUpdate, withFrameSlides, withHomeGalleries, withInlineListDecorationDefaults, withSlideSizeOrientation, withSlidesPerPage, writeStoredViewerPrefs, xmlText };