pptx-react-viewer 4.16.0 → 4.16.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/{AiChatPanel-DHLJ6LKF.js → AiChatPanel-DFZSMXJB.js} +28 -28
  3. package/dist/AiChatPanel-DFZSMXJB.js.br +0 -0
  4. package/dist/AiChatPanel-DFZSMXJB.js.gz +0 -0
  5. package/dist/{AiChatPanel-5Z4BYP7S.mjs → AiChatPanel-K3PL6O3M.mjs} +4 -4
  6. package/dist/AiChatPanel-K3PL6O3M.mjs.br +0 -0
  7. package/dist/AiChatPanel-K3PL6O3M.mjs.gz +0 -0
  8. package/dist/{Model3DScene-N36X5Z2Z.mjs → Model3DScene-EOKTWVG7.mjs} +1 -1
  9. package/dist/Model3DScene-EOKTWVG7.mjs.br +0 -0
  10. package/dist/Model3DScene-EOKTWVG7.mjs.gz +0 -0
  11. package/dist/{Model3DScene-AXT5KCUX.js → Model3DScene-ZYC5U7NY.js} +2 -2
  12. package/dist/Model3DScene-ZYC5U7NY.js.br +0 -0
  13. package/dist/Model3DScene-ZYC5U7NY.js.gz +0 -0
  14. package/dist/{chunk-CJSIEITL.mjs → chunk-33XJSD62.mjs} +3 -0
  15. package/dist/chunk-33XJSD62.mjs.br +0 -0
  16. package/dist/{chunk-CJSIEITL.mjs.gz → chunk-33XJSD62.mjs.gz} +0 -0
  17. package/dist/{chunk-XZUIS3VB.js → chunk-4VV5HJXQ.js} +2683 -952
  18. package/dist/chunk-4VV5HJXQ.js.br +0 -0
  19. package/dist/chunk-4VV5HJXQ.js.gz +0 -0
  20. package/dist/{chunk-BTTAYCGK.mjs → chunk-6PWT46Y4.mjs} +256 -559
  21. package/dist/chunk-6PWT46Y4.mjs.br +0 -0
  22. package/dist/chunk-6PWT46Y4.mjs.gz +0 -0
  23. package/dist/{chunk-FVLBN45Z.js → chunk-CWVPHCMJ.js} +5 -5
  24. package/dist/chunk-CWVPHCMJ.js.br +0 -0
  25. package/dist/chunk-CWVPHCMJ.js.gz +0 -0
  26. package/dist/{chunk-MFGRRONU.mjs → chunk-KK2CFTKC.mjs} +2 -2
  27. package/dist/chunk-KK2CFTKC.mjs.br +0 -0
  28. package/dist/chunk-KK2CFTKC.mjs.gz +0 -0
  29. package/dist/{chunk-XEYB25ZT.js → chunk-LJEI7O6S.js} +3 -0
  30. package/dist/chunk-LJEI7O6S.js.br +0 -0
  31. package/dist/{chunk-XEYB25ZT.js.gz → chunk-LJEI7O6S.js.gz} +0 -0
  32. package/dist/{chunk-WRQ7K3DG.mjs → chunk-QZSA3E4L.mjs} +1 -1
  33. package/dist/chunk-QZSA3E4L.mjs.br +0 -0
  34. package/dist/{chunk-WRQ7K3DG.mjs.gz → chunk-QZSA3E4L.mjs.gz} +0 -0
  35. package/dist/{chunk-QAVJDYB2.js → chunk-RE6NDQH7.js} +197 -197
  36. package/dist/chunk-RE6NDQH7.js.br +0 -0
  37. package/dist/chunk-RE6NDQH7.js.gz +0 -0
  38. package/dist/{chunk-QLUA63T3.mjs → chunk-VUI3VE7K.mjs} +4 -4
  39. package/dist/chunk-VUI3VE7K.mjs.br +0 -0
  40. package/dist/chunk-VUI3VE7K.mjs.gz +0 -0
  41. package/dist/{chunk-MJ6LTUJ3.mjs → chunk-VUNRFZRR.mjs} +2679 -947
  42. package/dist/chunk-VUNRFZRR.mjs.br +0 -0
  43. package/dist/chunk-VUNRFZRR.mjs.gz +0 -0
  44. package/dist/{chunk-UVK2WBCU.js → chunk-VVGYZBF5.js} +2270 -2573
  45. package/dist/chunk-VVGYZBF5.js.br +0 -0
  46. package/dist/chunk-VVGYZBF5.js.gz +0 -0
  47. package/dist/{chunk-BZNYI5U6.js → chunk-XVJSAY7C.js} +821 -821
  48. package/dist/chunk-XVJSAY7C.js.br +0 -0
  49. package/dist/chunk-XVJSAY7C.js.gz +0 -0
  50. package/dist/i18n/de.cjs +3 -0
  51. package/dist/i18n/de.cjs.br +0 -0
  52. package/dist/i18n/de.cjs.gz +0 -0
  53. package/dist/i18n/de.mjs +3 -0
  54. package/dist/i18n/de.mjs.br +0 -0
  55. package/dist/i18n/de.mjs.gz +0 -0
  56. package/dist/i18n/es.cjs +3 -0
  57. package/dist/i18n/es.cjs.br +0 -0
  58. package/dist/i18n/es.cjs.gz +0 -0
  59. package/dist/i18n/es.mjs +3 -0
  60. package/dist/i18n/es.mjs.br +0 -0
  61. package/dist/i18n/es.mjs.gz +0 -0
  62. package/dist/i18n/fr.cjs +3 -0
  63. package/dist/i18n/fr.cjs.br +0 -0
  64. package/dist/i18n/fr.cjs.gz +0 -0
  65. package/dist/i18n/fr.mjs +3 -0
  66. package/dist/i18n/fr.mjs.br +0 -0
  67. package/dist/i18n/fr.mjs.gz +0 -0
  68. package/dist/i18n/zh-CN.cjs +3 -0
  69. package/dist/i18n/zh-CN.cjs.br +0 -0
  70. package/dist/i18n/zh-CN.cjs.gz +0 -0
  71. package/dist/i18n/zh-CN.mjs +3 -0
  72. package/dist/i18n/zh-CN.mjs.br +0 -0
  73. package/dist/i18n/zh-CN.mjs.gz +0 -0
  74. package/dist/i18n.js +4 -4
  75. package/dist/i18n.js.br +0 -0
  76. package/dist/i18n.js.gz +0 -0
  77. package/dist/i18n.mjs +1 -1
  78. package/dist/i18n.mjs.br +0 -0
  79. package/dist/i18n.mjs.gz +0 -0
  80. package/dist/index.d.ts +102 -0
  81. package/dist/index.js +63 -63
  82. package/dist/index.js.br +0 -0
  83. package/dist/index.js.gz +0 -0
  84. package/dist/index.mjs +6 -6
  85. package/dist/index.mjs.br +0 -0
  86. package/dist/index.mjs.gz +0 -0
  87. package/dist/internals.d.ts +102 -0
  88. package/dist/internals.js +105 -105
  89. package/dist/internals.js.br +0 -0
  90. package/dist/internals.js.gz +0 -0
  91. package/dist/internals.mjs +4 -4
  92. package/dist/internals.mjs.br +0 -0
  93. package/dist/internals.mjs.gz +0 -0
  94. package/dist/pptx-viewer.css +1 -1
  95. package/dist/pptx-viewer.css.br +0 -0
  96. package/dist/pptx-viewer.css.gz +0 -0
  97. package/dist/viewer/index.d.ts +102 -0
  98. package/dist/viewer/index.js +27 -27
  99. package/dist/viewer/index.js.br +0 -0
  100. package/dist/viewer/index.js.gz +0 -0
  101. package/dist/viewer/index.mjs +6 -6
  102. package/dist/viewer/index.mjs.br +0 -0
  103. package/dist/viewer/index.mjs.gz +0 -0
  104. package/package.json +1 -1
  105. package/dist/AiChatPanel-5Z4BYP7S.mjs.br +0 -0
  106. package/dist/AiChatPanel-5Z4BYP7S.mjs.gz +0 -0
  107. package/dist/AiChatPanel-DHLJ6LKF.js.br +0 -0
  108. package/dist/AiChatPanel-DHLJ6LKF.js.gz +0 -0
  109. package/dist/Model3DScene-AXT5KCUX.js.br +0 -0
  110. package/dist/Model3DScene-AXT5KCUX.js.gz +0 -0
  111. package/dist/Model3DScene-N36X5Z2Z.mjs.br +0 -0
  112. package/dist/Model3DScene-N36X5Z2Z.mjs.gz +0 -0
  113. package/dist/chunk-BTTAYCGK.mjs.br +0 -0
  114. package/dist/chunk-BTTAYCGK.mjs.gz +0 -0
  115. package/dist/chunk-BZNYI5U6.js.br +0 -0
  116. package/dist/chunk-BZNYI5U6.js.gz +0 -0
  117. package/dist/chunk-CJSIEITL.mjs.br +0 -0
  118. package/dist/chunk-FVLBN45Z.js.br +0 -0
  119. package/dist/chunk-FVLBN45Z.js.gz +0 -0
  120. package/dist/chunk-MFGRRONU.mjs.br +0 -0
  121. package/dist/chunk-MFGRRONU.mjs.gz +0 -0
  122. package/dist/chunk-MJ6LTUJ3.mjs.br +0 -0
  123. package/dist/chunk-MJ6LTUJ3.mjs.gz +0 -0
  124. package/dist/chunk-QAVJDYB2.js.br +0 -0
  125. package/dist/chunk-QAVJDYB2.js.gz +0 -0
  126. package/dist/chunk-QLUA63T3.mjs.br +0 -0
  127. package/dist/chunk-QLUA63T3.mjs.gz +0 -0
  128. package/dist/chunk-UVK2WBCU.js.br +0 -0
  129. package/dist/chunk-UVK2WBCU.js.gz +0 -0
  130. package/dist/chunk-WRQ7K3DG.mjs.br +0 -0
  131. package/dist/chunk-XEYB25ZT.js.br +0 -0
  132. package/dist/chunk-XZUIS3VB.js.br +0 -0
  133. package/dist/chunk-XZUIS3VB.js.gz +0 -0
@@ -106954,7 +106954,7 @@ function applyGroupFillInheritance(children15, fill) {
106954
106954
  }
106955
106955
  }
106956
106956
  }
106957
- async function resolveGroupFillImagePure(host, blipFill, slidePath) {
106957
+ async function resolveGroupFillImagePure(host2, blipFill, slidePath) {
106958
106958
  const blip = blipFill?.["a:blip"];
106959
106959
  const rEmbed = blip?.["@_r:embed"] ? String(blip["@_r:embed"]) : void 0;
106960
106960
  const rLink = blip?.["@_r:link"] ? String(blip["@_r:link"]) : void 0;
@@ -106962,23 +106962,23 @@ async function resolveGroupFillImagePure(host, blipFill, slidePath) {
106962
106962
  if (!relId) {
106963
106963
  return void 0;
106964
106964
  }
106965
- const target = host.slideRelsMap.get(slidePath)?.get(relId);
106965
+ const target = host2.slideRelsMap.get(slidePath)?.get(relId);
106966
106966
  if (!target) {
106967
106967
  return void 0;
106968
106968
  }
106969
106969
  const fillImageMode = blipFill?.["a:tile"] !== void 0 ? "tile" : "stretch";
106970
106970
  if (target.startsWith("http://") || target.startsWith("https://")) {
106971
- return host.allowExternalImages === true ? { fillImageUrl: target, fillImageMode } : void 0;
106971
+ return host2.allowExternalImages === true ? { fillImageUrl: target, fillImageMode } : void 0;
106972
106972
  }
106973
106973
  if (target.startsWith("data:")) {
106974
106974
  return { fillImageUrl: target, fillImageMode };
106975
106975
  }
106976
- const imagePath = host.resolveImagePath(slidePath, target);
106976
+ const imagePath = host2.resolveImagePath(slidePath, target);
106977
106977
  if (!imagePath) {
106978
106978
  return void 0;
106979
106979
  }
106980
- if (host.eagerDecodeImages) {
106981
- const imageData = await host.getImageData(imagePath);
106980
+ if (host2.eagerDecodeImages) {
106981
+ const imageData = await host2.getImageData(imagePath);
106982
106982
  if (imageData) {
106983
106983
  return { fillImageUrl: imageData, fillImageMode };
106984
106984
  }
@@ -130455,17 +130455,64 @@ var init_smartart_node_synthesis = __esm({
130455
130455
  init_smartart_xml_builders();
130456
130456
  }
130457
130457
  });
130458
- function applySmartArtQuickStyle(styleDef, quickStyle, localName292) {
130458
+ function objectChild(node, name, localName292) {
130459
+ const key2 = Object.keys(node).find((candidate) => localName292(candidate) === name);
130460
+ const value = key2 ? node[key2] : void 0;
130461
+ return value && typeof value === "object" ? value : {};
130462
+ }
130463
+ function applySmartArtStyleIntensity(definition, intensity, localName292) {
130464
+ if (!intensity) {
130465
+ return false;
130466
+ }
130467
+ const key2 = Object.keys(definition).find((candidate) => localName292(candidate) === "styleLbl");
130468
+ const value = key2 ? definition[key2] : void 0;
130469
+ const labels = Array.isArray(value) ? value : value ? [value] : [];
130470
+ let changed = false;
130471
+ for (const label of labels) {
130472
+ if (!/^node\d+$/u.test(String(label["@_name"] ?? ""))) {
130473
+ continue;
130474
+ }
130475
+ const styleKey = Object.keys(label).find((candidate) => localName292(candidate) === "style") ?? "dgm:style";
130476
+ const style = objectChild(label, "style", localName292);
130477
+ for (const [name, idx] of [
130478
+ ["fillRef", intensity === "flat" ? 1 : intensity === "moderate" ? 2 : 3],
130479
+ ["effectRef", intensity === "flat" ? 0 : intensity === "moderate" ? 1 : 2]
130480
+ ]) {
130481
+ const refKey = Object.keys(style).find((candidate) => localName292(candidate) === name) ?? `a:${name}`;
130482
+ const ref = objectChild(style, name, localName292);
130483
+ style[refKey] = {
130484
+ ...Object.keys(ref).length ? ref : { "a:schemeClr": { "@_val": "phClr" } },
130485
+ "@_idx": String(idx)
130486
+ };
130487
+ }
130488
+ label[styleKey] = style;
130489
+ if (intensity !== "intense") {
130490
+ const shape3dKey = Object.keys(label).find((candidate) => localName292(candidate) === "sp3d");
130491
+ if (shape3dKey) {
130492
+ label[shape3dKey] = {};
130493
+ }
130494
+ }
130495
+ changed = true;
130496
+ }
130497
+ return changed;
130498
+ }
130499
+ var init_smartart_style_intensity_builder = __esm({
130500
+ "src/core/core/runtime/smartart-style-intensity-builder.ts"() {
130501
+ }
130502
+ });
130503
+ function applySmartArtQuickStyle(styleDef, quickStyle, localName292, intensity) {
130459
130504
  if (!quickStyle) {
130460
130505
  return false;
130461
130506
  }
130462
130507
  let changed = applySmartArtDefinitionMetadata(styleDef, quickStyle, localName292);
130463
130508
  changed = applySmartArtQuickStyleLabels(styleDef, quickStyle.labels, localName292) || changed;
130509
+ changed = applySmartArtStyleIntensity(styleDef, intensity, localName292) || changed;
130464
130510
  return changed;
130465
130511
  }
130466
130512
  var init_smartart_quick_style_builder = __esm({
130467
130513
  "src/core/core/runtime/smartart-quick-style-builder.ts"() {
130468
130514
  init_smartart_definition_builder();
130515
+ init_smartart_style_intensity_builder();
130469
130516
  }
130470
130517
  });
130471
130518
  function asObject2(value) {
@@ -130939,7 +130986,8 @@ var init_PptxHandlerRuntimeSaveDocumentParts = __esm({
130939
130986
  (styleDef) => applySmartArtQuickStyle(
130940
130987
  styleDef,
130941
130988
  quickStyle,
130942
- (key2) => this.compatibilityService.getXmlLocalName(key2)
130989
+ (key2) => this.compatibilityService.getXmlLocalName(key2),
130990
+ smartArtData.style
130943
130991
  )
130944
130992
  );
130945
130993
  }
@@ -132892,14 +132940,15 @@ function fabricatedColorsUniqueId(scheme) {
132892
132940
  function fabricatedColorsCategory(scheme) {
132893
132941
  return scheme?.startsWith("monochromatic") ? "accent1" : "colorful";
132894
132942
  }
132895
- function quickStyleLabelXml(name) {
132943
+ function quickStyleLabelXml(name, style = "flat") {
132896
132944
  const isConnector = name === "parChTrans1D2";
132897
- return `<dgm:styleLbl name="${name}"><dgm:scene3d><a:camera prst="orthographicFront"/><a:lightRig rig="threePt" dir="t"/></dgm:scene3d><dgm:sp3d/><dgm:txPr/><dgm:style><a:lnRef idx="${isConnector ? "1" : "2"}"><a:scrgbClr r="0" g="0" b="0"/></a:lnRef><a:fillRef idx="1"><a:scrgbClr r="0" g="0" b="0"/></a:fillRef><a:effectRef idx="0"><a:scrgbClr r="0" g="0" b="0"/></a:effectRef><a:fontRef idx="minor"/></dgm:style></dgm:styleLbl>`;
132945
+ const effectIndex = name.startsWith("node") ? style === "intense" ? 2 : style === "moderate" ? 1 : 0 : 0;
132946
+ return `<dgm:styleLbl name="${name}"><dgm:scene3d><a:camera prst="orthographicFront"/><a:lightRig rig="threePt" dir="t"/></dgm:scene3d><dgm:sp3d/><dgm:txPr/><dgm:style><a:lnRef idx="${isConnector ? "1" : "2"}"><a:scrgbClr r="0" g="0" b="0"/></a:lnRef><a:fillRef idx="${effectIndex + 1}"><a:scrgbClr r="0" g="0" b="0"/></a:fillRef><a:effectRef idx="${effectIndex}"><a:scrgbClr r="0" g="0" b="0"/></a:effectRef><a:fontRef idx="minor"/></dgm:style></dgm:styleLbl>`;
132898
132947
  }
132899
- function buildFabricatedQuickStyleXml() {
132948
+ function buildFabricatedQuickStyleXml(style) {
132900
132949
  return `${XML_PROLOG}\r
132901
132950
  <dgm:styleDef ${DGM_XMLNS} uniqueId="${FABRICATED_QUICKSTYLE_UNIQUE_ID}"><dgm:title val="Simple"/><dgm:desc val=""/><dgm:catLst><dgm:cat type="simple" pri="10100"/></dgm:catLst><dgm:scene3d><a:camera prst="orthographicFront"/><a:lightRig rig="threePt" dir="t"/></dgm:scene3d>${STYLE_LABEL_NAMES.map(
132902
- quickStyleLabelXml
132951
+ (name) => quickStyleLabelXml(name, style)
132903
132952
  ).join("")}</dgm:styleDef>`;
132904
132953
  }
132905
132954
  function schemeClrListXml(accents) {
@@ -133038,7 +133087,7 @@ var init_PptxHandlerRuntimeSaveSmartArtFabrication = __esm({
133038
133087
  { guidByNodeId, presentationGuidByNodeId, drawingRelId }
133039
133088
  ),
133040
133089
  layout: buildFabricatedLayoutDefXml(family2, layoutIdentity),
133041
- quickStyle: buildFabricatedQuickStyleXml(),
133090
+ quickStyle: buildFabricatedQuickStyleXml(data.style),
133042
133091
  colors: buildFabricatedColorsXml(data.colorScheme)
133043
133092
  };
133044
133093
  const relIds = {
@@ -147681,6 +147730,65 @@ var init_smartart_drawing_blip = __esm({
147681
147730
  "src/core/core/runtime/smartart-drawing-blip.ts"() {
147682
147731
  }
147683
147732
  });
147733
+ async function resolveSmartArtDrawingPart(slidePath, diagramDataRelationshipId, drawingExtensionRelId, deps) {
147734
+ if (diagramDataRelationshipId.length === 0) {
147735
+ return void 0;
147736
+ }
147737
+ const slideRels = deps.slideRelationships(slidePath);
147738
+ const slideDrawingTarget = drawingExtensionRelId ? slideRels?.get(drawingExtensionRelId) : void 0;
147739
+ if (slideDrawingTarget) {
147740
+ return {
147741
+ relId: drawingExtensionRelId,
147742
+ path: deps.resolvePath(slidePath, slideDrawingTarget)
147743
+ };
147744
+ }
147745
+ const inferredSlideDrawing = [...slideRels?.entries() ?? []].find(
147746
+ ([, target]) => /(?:^|\/)diagrams\/drawing\d+\.xml$/u.test(target.replaceAll("\\", "/"))
147747
+ );
147748
+ if (inferredSlideDrawing) {
147749
+ return {
147750
+ relId: inferredSlideDrawing[0],
147751
+ path: deps.resolvePath(slidePath, inferredSlideDrawing[1])
147752
+ };
147753
+ }
147754
+ const dataTarget = slideRels?.get(diagramDataRelationshipId);
147755
+ if (!dataTarget) {
147756
+ return void 0;
147757
+ }
147758
+ const dataPath = deps.resolvePath(slidePath, dataTarget);
147759
+ const dataDir = dataPath.replace(/\/[^/]+$/u, "");
147760
+ const dataFile = dataPath.split("/").pop() ?? "";
147761
+ const dataRelsPath = `${dataDir}/_rels/${dataFile}.rels`;
147762
+ const relsXml = await deps.readText(dataRelsPath);
147763
+ if (!relsXml) {
147764
+ return void 0;
147765
+ }
147766
+ try {
147767
+ const parsed = deps.parse(relsXml);
147768
+ const relsRoot = parsed["Relationships"];
147769
+ if (!relsRoot) {
147770
+ return void 0;
147771
+ }
147772
+ const rels = deps.ensureArray(relsRoot["Relationship"]);
147773
+ const drawingRel = rels.find((rel) => {
147774
+ const id2 = String(rel?.["@_Id"] || "").trim();
147775
+ return (!drawingExtensionRelId || id2 === drawingExtensionRelId) && String(rel?.["@_Type"] || "").endsWith("/diagramDrawing");
147776
+ });
147777
+ const id = String(drawingRel?.["@_Id"] || "").trim();
147778
+ const target = String(drawingRel?.["@_Target"] || "").trim();
147779
+ if (id.length === 0 || target.length === 0) {
147780
+ return void 0;
147781
+ }
147782
+ const drawingPath = deps.resolvePath(dataPath, target);
147783
+ return { relId: id, path: drawingPath };
147784
+ } catch {
147785
+ return void 0;
147786
+ }
147787
+ }
147788
+ var init_smartart_drawing_part = __esm({
147789
+ "src/core/core/runtime/smartart-drawing-part.ts"() {
147790
+ }
147791
+ });
147684
147792
  function resolveSmartArtLayoutCategory(uniqueId, categories) {
147685
147793
  for (const category of categories) {
147686
147794
  const family2 = CATEGORY_FAMILY[category.trim().toLowerCase()];
@@ -147736,6 +147844,7 @@ var init_PptxHandlerRuntimeSmartArt = __esm({
147736
147844
  init_smart_art_text_helpers();
147737
147845
  init_PptxHandlerRuntimeSmartArtParsing();
147738
147846
  init_smartart_drawing_blip();
147847
+ init_smartart_drawing_part();
147739
147848
  init_smartart_layout_category();
147740
147849
  init_smartart_text_paragraphs();
147741
147850
  init_smartart_text_style_resolution();
@@ -147853,6 +147962,7 @@ var init_PptxHandlerRuntimeSmartArt = __esm({
147853
147962
  chrome,
147854
147963
  colorTransform,
147855
147964
  quickStyle,
147965
+ style: quickStyle?.effectIntensity === "moderate" || quickStyle?.effectIntensity === "intense" ? quickStyle.effectIntensity : void 0,
147856
147966
  // The theme's own minor-Latin font: what SmartArt text actually
147857
147967
  // renders in absent a per-run `a:latin` override (confirmed: every
147858
147968
  // text-bearing shape across the whole 227-fixture gallery corpus
@@ -147872,71 +147982,14 @@ var init_PptxHandlerRuntimeSmartArt = __esm({
147872
147982
  styleRelId: styleRelationshipId.length > 0 ? styleRelationshipId : void 0
147873
147983
  };
147874
147984
  }
147875
- /**
147876
- * Resolve the SmartArt drawing-shapes part path + relationship id.
147877
- *
147878
- * Strategy:
147879
- * 1. Resolve `dsp:dataModelExt/@relId` in the owning slide's relationship
147880
- * scope, which is where PowerPoint writes diagramDrawing relationships.
147881
- * 2. Fall back to the data part's rels file for compatibility with files
147882
- * emitted by older pptx-viewer versions.
147883
- * 3. Return the matched part path (so the caller can load it
147884
- * directly) and the relationship id (for round-trip preservation).
147885
- */
147886
- async resolveSmartArtDrawingPart(slidePath, diagramDataRelationshipId, drawingExtensionRelId) {
147887
- if (diagramDataRelationshipId.length === 0) {
147888
- return void 0;
147889
- }
147890
- const slideRels = this.slideRelsMap.get(slidePath);
147891
- const slideDrawingTarget = drawingExtensionRelId ? slideRels?.get(drawingExtensionRelId) : void 0;
147892
- if (slideDrawingTarget) {
147893
- return {
147894
- relId: drawingExtensionRelId,
147895
- path: this.resolveImagePath(slidePath, slideDrawingTarget)
147896
- };
147897
- }
147898
- const inferredSlideDrawing = [...slideRels?.entries() ?? []].find(
147899
- ([, target]) => /(?:^|\/)diagrams\/drawing\d+\.xml$/u.test(target.replaceAll("\\", "/"))
147900
- );
147901
- if (inferredSlideDrawing) {
147902
- return {
147903
- relId: inferredSlideDrawing[0],
147904
- path: this.resolveImagePath(slidePath, inferredSlideDrawing[1])
147905
- };
147906
- }
147907
- const dataTarget = slideRels?.get(diagramDataRelationshipId);
147908
- if (!dataTarget) {
147909
- return void 0;
147910
- }
147911
- const dataPath = this.resolveImagePath(slidePath, dataTarget);
147912
- const dataDir = dataPath.replace(/\/[^/]+$/u, "");
147913
- const dataFile = dataPath.split("/").pop() ?? "";
147914
- const dataRelsPath = `${dataDir}/_rels/${dataFile}.rels`;
147915
- const relsXml = await this.zip.file(dataRelsPath)?.async("string");
147916
- if (!relsXml) {
147917
- return void 0;
147918
- }
147919
- try {
147920
- const parsed = this.parser.parse(relsXml);
147921
- const relsRoot = parsed["Relationships"];
147922
- if (!relsRoot) {
147923
- return void 0;
147924
- }
147925
- const rels = this.ensureArray(relsRoot["Relationship"]);
147926
- const drawingRel = rels.find((rel) => {
147927
- const id2 = String(rel?.["@_Id"] || "").trim();
147928
- return (!drawingExtensionRelId || id2 === drawingExtensionRelId) && String(rel?.["@_Type"] || "").endsWith("/diagramDrawing");
147929
- });
147930
- const id = String(drawingRel?.["@_Id"] || "").trim();
147931
- const target = String(drawingRel?.["@_Target"] || "").trim();
147932
- if (id.length === 0 || target.length === 0) {
147933
- return void 0;
147934
- }
147935
- const drawingPath = this.resolveImagePath(dataPath, target);
147936
- return { relId: id, path: drawingPath };
147937
- } catch {
147938
- return void 0;
147939
- }
147985
+ resolveSmartArtDrawingPart(slidePath, diagramDataRelationshipId, drawingExtensionRelId) {
147986
+ return resolveSmartArtDrawingPart(slidePath, diagramDataRelationshipId, drawingExtensionRelId, {
147987
+ slideRelationships: (path) => this.slideRelsMap.get(path),
147988
+ resolvePath: (base, target) => this.resolveImagePath(base, target),
147989
+ readText: (path) => this.zip.file(path)?.async("string") ?? Promise.resolve(void 0),
147990
+ parse: (xml) => this.parser.parse(xml),
147991
+ ensureArray: (value) => this.ensureArray(value)
147992
+ });
147940
147993
  }
147941
147994
  /**
147942
147995
  * Parse cached SmartArt drawing shapes from an absolute part path.
@@ -182612,7 +182665,7 @@ function getThreeRendererHost(three) {
182612
182665
  bufferHeight: 0
182613
182666
  };
182614
182667
  state.renderer = createRenderer(three, state);
182615
- const host = {
182668
+ const host2 = {
182616
182669
  available: state.renderer !== null,
182617
182670
  register(view) {
182618
182671
  state.views.add(view);
@@ -182648,8 +182701,8 @@ function getThreeRendererHost(three) {
182648
182701
  }
182649
182702
  }
182650
182703
  };
182651
- sharedHost = host;
182652
- return host;
182704
+ sharedHost = host2;
182705
+ return host2;
182653
182706
  }
182654
182707
  var MAX_VIEW_PIXELS;
182655
182708
  var sharedHost;
@@ -185616,8 +185669,11 @@ function markWebControlContract(ctor) {
185616
185669
  }
185617
185670
  var RIBBON_COMMAND_STYLES = `
185618
185671
  :host { display: inline-flex; flex: none; }
185672
+ :host([hidden]) { display: none !important; }
185673
+ .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; }
185674
+ .badge[hidden] { display:none; }
185619
185675
  button {
185620
- box-sizing: border-box; display: inline-flex; flex-direction: column; align-items: center;
185676
+ box-sizing: border-box; position:relative; display: inline-flex; flex-direction: column; align-items: center;
185621
185677
  justify-content: flex-start; gap: 2px; min-width: 54px; max-width: 78px; height: 58px;
185622
185678
  padding: 4px; border: 0; border-radius: 4px; background: transparent;
185623
185679
  color: var(--pptx-foreground, #f9fafb); cursor: pointer; font: inherit;
@@ -185641,6 +185697,24 @@ button:focus-visible { outline: 2px solid var(--pptx-ring, #6366f1); outline-off
185641
185697
  }
185642
185698
  `;
185643
185699
  var RIBBON_ICON_PATHS = {
185700
+ spelling: "M2 14 6 5l4 9M3.4 11.4h5.2M12 13.5l2 2 4-4.5",
185701
+ book: "M3 4h5a2 2 0 0 1 2 2v10a2 2 0 0 0-2-2H3zM17 4h-5a2 2 0 0 0-2 2v10a2 2 0 0 1 2-2h5z",
185702
+ shield: "M10 3 4 5.4v4.1c0 3.3 2.5 6 6 7.1 3.5-1.1 6-3.8 6-7.1V5.4zM7 10l2 2 4-4",
185703
+ globe: "M3 10a7 7 0 1 0 14 0 7 7 0 1 0-14 0M3 10h14M10 3c-4 4-4 10 0 14 4-4 4-10 0-14",
185704
+ languages: "M2 5h9M6 3v2M4 5c0 5 5 7 7 8M9 5c0 5-5 7-7 8M11 17l4-9 4 9M12.5 14h5",
185705
+ copy: "M7 7h10v10H7ZM3 13V3h10",
185706
+ compare: "M5 3v11M15 6v11M5 5h7l3 3M15 15H8l-3-3M3 14h4M13 6h4",
185707
+ message: "M3 4h14v9H8l-5 4z",
185708
+ messagePlus: "M3 4h14v9H8l-5 4zM10 6v5M7.5 8.5h5",
185709
+ trash: "M4 6h12M8 6V4h4v2M6 6l.8 10h6.4L14 6",
185710
+ chevronLeft: "m12 4-6 6 6 6",
185711
+ chevronRight: "m8 4 6 6-6 6",
185712
+ lock: "M4 9h12v8H4ZM7 9V6.5a3 3 0 0 1 6 0V9",
185713
+ eyeOff: "M2.5 10S5.5 5 10 5s7.5 5 7.5 5-3 5-7.5 5-7.5-5-7.5-5zM4 4l12 12",
185714
+ palette: "M10 2a8 8 0 1 0 0 16h1a2 2 0 0 0 1-3.7 1.5 1.5 0 0 1 1-2.3h2a3 3 0 0 0 3-3c0-4-4-7-8-7M6 6h.1M10 5h.1M14 7h.1M5 10h.1",
185715
+ pencil: "M12 3l5 5M3 17l1-5L13 3l4 4-9 9Z",
185716
+ monitor: "M2 3h16v11H2ZM7 18h6M10 14v4",
185717
+ paint: "M3 9l6-6 8 8-6 6ZM4 4l8 8M3 18h12M17 13s-2 3-2 4a2 2 0 0 0 4 0c0-1-2-4-2-4",
185644
185718
  camera: "M2 6h4l2-3h4l2 3h4v11H2ZM7 11a3 3 0 1 0 6 0 3 3 0 1 0-6 0",
185645
185719
  eraser: "M3 12l8-8 6 6-7 7H7ZM3 17h14M7 8l6 6",
185646
185720
  reset: "M4 10a6 6 0 1 1 1.8 4.2M4 6v4h4",
@@ -185673,11 +185747,13 @@ function definePptxRibbonCommand(registry) {
185673
185747
  "pressed",
185674
185748
  "expanded",
185675
185749
  "title",
185676
- "data-ribbon-control"
185750
+ "data-ribbon-control",
185751
+ "badge"
185677
185752
  ];
185678
185753
  button;
185679
185754
  text;
185680
185755
  path;
185756
+ badge;
185681
185757
  constructor() {
185682
185758
  super();
185683
185759
  const root = this.attachShadow({ mode: "open" });
@@ -185692,6 +185768,10 @@ function definePptxRibbonCommand(registry) {
185692
185768
  svg.append(this.path);
185693
185769
  this.text = document.createElement("span");
185694
185770
  this.button.append(svg, this.text);
185771
+ this.badge = document.createElement("span");
185772
+ this.badge.className = "badge";
185773
+ this.badge.setAttribute("aria-hidden", "true");
185774
+ this.button.append(this.badge);
185695
185775
  root.append(this.button);
185696
185776
  this.button.addEventListener("keydown", (event) => {
185697
185777
  if ((event.key === " " || event.key === "Enter") && !event.ctrlKey && !event.metaKey && !event.altKey) {
@@ -185715,6 +185795,8 @@ function definePptxRibbonCommand(registry) {
185715
185795
  }
185716
185796
  sync() {
185717
185797
  this.text.textContent = this.getAttribute("label") ?? "";
185798
+ this.badge.textContent = this.getAttribute("badge") ?? "";
185799
+ this.badge.hidden = !this.badge.textContent;
185718
185800
  this.button.title = this.getAttribute("title") ?? this.text.textContent;
185719
185801
  this.button.disabled = this.hasAttribute("disabled");
185720
185802
  this.path.setAttribute("d", RIBBON_ICON_PATHS[this.getAttribute("icon") ?? ""] ?? "");
@@ -185730,834 +185812,6 @@ function definePptxRibbonCommand(registry) {
185730
185812
  }
185731
185813
  registry.define("pptx-ui-ribbon-command", RibbonCommand);
185732
185814
  }
185733
- var STYLES = `
185734
- :host { display: inline-flex; flex: none; align-self: stretch; }
185735
- .group { box-sizing: border-box; display: flex; flex-direction: column; justify-content: space-between;
185736
- min-height: 78px; padding: 4px 8px 2px; border-right: 1px solid color-mix(in srgb, var(--pptx-border, #33334d) 60%, transparent); }
185737
- :host(:last-child) .group { border-right: 0; }
185738
- .row { display: flex; align-items: flex-start; gap: 4px; }
185739
- ::slotted(*) { flex-shrink: 0; }
185740
- .caption { padding-top: 2px; color: var(--pptx-muted-foreground, #94a3b8); font: inherit;
185741
- font-size: 9px; line-height: 12px; text-align: center; white-space: nowrap; }
185742
- `;
185743
- function definePptxRibbonGroup(registry) {
185744
- if (registry.get("pptx-ui-ribbon-group")) {
185745
- return;
185746
- }
185747
- class RibbonGroup extends HTMLElement {
185748
- static observedAttributes = ["label"];
185749
- caption;
185750
- constructor() {
185751
- super();
185752
- const root = this.attachShadow({ mode: "open" });
185753
- attachControlStyles(root, STYLES);
185754
- const group2 = document.createElement("div");
185755
- group2.className = "group";
185756
- const row = document.createElement("div");
185757
- row.className = "row";
185758
- row.append(document.createElement("slot"));
185759
- this.caption = document.createElement("span");
185760
- this.caption.className = "caption";
185761
- group2.append(row, this.caption);
185762
- root.append(group2);
185763
- }
185764
- connectedCallback() {
185765
- this.setAttribute("role", "group");
185766
- this.sync();
185767
- }
185768
- attributeChangedCallback() {
185769
- this.sync();
185770
- }
185771
- sync() {
185772
- const label = this.getAttribute("label") ?? "";
185773
- this.caption.textContent = label;
185774
- this.setAttribute("aria-label", label);
185775
- }
185776
- }
185777
- registry.define("pptx-ui-ribbon-group", RibbonGroup);
185778
- }
185779
- function definePptxRibbonToggle(registry) {
185780
- if (registry.get("pptx-ui-ribbon-toggle")) {
185781
- return;
185782
- }
185783
- class RibbonToggle extends HTMLElement {
185784
- static observedAttributes = ["label", "checked", "disabled", "title"];
185785
- checkbox;
185786
- text;
185787
- constructor() {
185788
- super();
185789
- const root = this.attachShadow({ mode: "open" });
185790
- attachControlStyles(
185791
- root,
185792
- `
185793
- :host { display: block; }
185794
- label { display: flex; align-items: center; gap: 4px; min-height: 22px; padding: 0 4px;
185795
- color: var(--pptx-foreground, #f9fafb); font: inherit; font-size: 10px; white-space: nowrap; cursor: pointer; }
185796
- :host([disabled]) label { color: var(--pptx-muted-foreground, #9ca3af); cursor: not-allowed; }
185797
- @media (pointer: coarse), (max-width: 767px) { label { min-height: 44px; font-size: 12px; } }
185798
- `
185799
- );
185800
- const label = document.createElement("label");
185801
- this.checkbox = document.createElement("pptx-ui-checkbox");
185802
- this.text = document.createTextNode("");
185803
- label.append(this.checkbox, this.text);
185804
- label.addEventListener("click", (event) => {
185805
- event.preventDefault();
185806
- if (event.target !== this.checkbox) {
185807
- this.checkbox.click();
185808
- }
185809
- });
185810
- this.checkbox.addEventListener("input", (event) => event.stopPropagation());
185811
- this.checkbox.addEventListener("change", (event) => {
185812
- event.stopPropagation();
185813
- const checked = this.checkbox.checked;
185814
- this.sync();
185815
- const id = this.getAttribute("data-ribbon-control");
185816
- if (!this.hasAttribute("disabled") && id) {
185817
- this.dispatchEvent(
185818
- new CustomEvent("toggle-request", {
185819
- detail: { id, checked },
185820
- bubbles: true,
185821
- composed: true
185822
- })
185823
- );
185824
- }
185825
- });
185826
- root.append(label);
185827
- }
185828
- connectedCallback() {
185829
- this.sync();
185830
- }
185831
- attributeChangedCallback() {
185832
- this.sync();
185833
- }
185834
- sync() {
185835
- const label = this.getAttribute("label") ?? "";
185836
- this.text.textContent = label;
185837
- this.checkbox.setAttribute("aria-label", label);
185838
- this.checkbox.title = this.getAttribute("title") ?? label;
185839
- this.checkbox.checked = this.hasAttribute("checked");
185840
- this.checkbox.disabled = this.hasAttribute("disabled");
185841
- }
185842
- }
185843
- registry.define("pptx-ui-ribbon-toggle", RibbonToggle);
185844
- }
185845
- var SEARCH_STYLES = `
185846
- :host {
185847
- display: flex;
185848
- align-items: center;
185849
- gap: 8px;
185850
- box-sizing: border-box;
185851
- width: 100%;
185852
- height: 40px;
185853
- padding: 0 12px;
185854
- border: 1px solid var(--pptx-input, #374151);
185855
- background: var(--pptx-card, #111827);
185856
- color: var(--pptx-muted-foreground, #9ca3af);
185857
- font: inherit;
185858
- }
185859
- :host(:focus-within) { border-color: var(--pptx-ring, #6366f1); }
185860
- :host([variant="titlebar"]) {
185861
- height: 28px;
185862
- gap: 7px;
185863
- padding-inline: 14px;
185864
- border-color: var(--pptx-border, #374151);
185865
- border-radius: 6px;
185866
- background: var(--pptx-background, #030712);
185867
- }
185868
- :host([variant="titlebar"]:focus-within) {
185869
- border-color: var(--pptx-ring, #6366f1);
185870
- color: var(--pptx-foreground, #f3f4f6);
185871
- }
185872
- :host([disabled]) { opacity: .5; cursor: not-allowed; }
185873
- svg { width: 16px; height: 16px; flex: none; }
185874
- :host([variant="titlebar"]) svg { width: 14px; height: 14px; }
185875
- input {
185876
- min-width: 0;
185877
- width: 100%;
185878
- height: 100%;
185879
- flex: 1;
185880
- padding: 0;
185881
- border: 0;
185882
- outline: 0;
185883
- background: transparent;
185884
- color: var(--pptx-card-foreground, #f3f4f6);
185885
- font: inherit;
185886
- font-size: 13px;
185887
- }
185888
- :host([variant="titlebar"]) input {
185889
- font-size: 11px;
185890
- color: var(--pptx-foreground, #f3f4f6);
185891
- }
185892
- input::placeholder {
185893
- color: var(--pptx-muted-foreground, #9ca3af);
185894
- opacity: .8;
185895
- }
185896
- input::-webkit-search-cancel-button { display: none; }
185897
- @media (forced-colors: active) {
185898
- :host {
185899
- border-color: CanvasText;
185900
- background: Canvas;
185901
- color: CanvasText;
185902
- }
185903
- :host(:focus-within) {
185904
- outline: 2px solid Highlight;
185905
- outline-offset: 2px;
185906
- }
185907
- input { color: CanvasText; }
185908
- }
185909
- `;
185910
- var SEARCH_ICON = `<svg part="icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.35-4.35"/></svg>`;
185911
- function definePptxSearchField(registry) {
185912
- if (registry.get("pptx-ui-search")) {
185913
- return;
185914
- }
185915
- class PptxSearchField extends HTMLElement {
185916
- static observedAttributes = ["placeholder", "aria-label", "disabled", "value"];
185917
- input;
185918
- currentValue = "";
185919
- constructor() {
185920
- super();
185921
- const root = this.attachShadow({ mode: "open", delegatesFocus: true });
185922
- attachControlStyles(root, SEARCH_STYLES);
185923
- const icon = document.createElement("template");
185924
- icon.innerHTML = SEARCH_ICON;
185925
- root.append(icon.content.cloneNode(true));
185926
- this.input = document.createElement("input");
185927
- this.input.type = "search";
185928
- this.input.setAttribute("part", "input");
185929
- this.input.addEventListener("input", (event) => {
185930
- event.stopPropagation();
185931
- this.currentValue = this.input.value;
185932
- this.dispatchEvent(new Event("input", { bubbles: true, composed: true }));
185933
- });
185934
- this.input.addEventListener("change", (event) => {
185935
- event.stopPropagation();
185936
- this.dispatchEvent(new Event("change", { bubbles: true, composed: true }));
185937
- });
185938
- root.append(this.input);
185939
- }
185940
- connectedCallback() {
185941
- this.sync();
185942
- if (this.hasAttribute("value")) {
185943
- this.value = this.getAttribute("value") ?? "";
185944
- }
185945
- }
185946
- attributeChangedCallback(name) {
185947
- if (name === "value") {
185948
- this.value = this.getAttribute("value") ?? "";
185949
- } else {
185950
- this.sync();
185951
- }
185952
- }
185953
- get value() {
185954
- return this.currentValue;
185955
- }
185956
- set value(next) {
185957
- this.currentValue = String(next ?? "");
185958
- if (this.input.value !== this.currentValue) {
185959
- this.input.value = this.currentValue;
185960
- }
185961
- }
185962
- get disabled() {
185963
- return this.hasAttribute("disabled");
185964
- }
185965
- set disabled(next) {
185966
- this.toggleAttribute("disabled", Boolean(next));
185967
- }
185968
- focus(options) {
185969
- this.input.focus(options);
185970
- }
185971
- select() {
185972
- this.input.select();
185973
- }
185974
- sync() {
185975
- this.input.placeholder = this.getAttribute("placeholder") ?? "";
185976
- this.input.setAttribute(
185977
- "aria-label",
185978
- this.getAttribute("aria-label") ?? this.input.placeholder
185979
- );
185980
- this.input.disabled = this.hasAttribute("disabled");
185981
- }
185982
- }
185983
- registry.define("pptx-ui-search", PptxSearchField);
185984
- }
185985
- var SELECT_OPTION_ATTRIBUTES = [
185986
- "value",
185987
- "disabled",
185988
- "label",
185989
- "selected",
185990
- "hidden",
185991
- "data-display-label",
185992
- "data-description",
185993
- "style"
185994
- ];
185995
- function collectSelectChoices(options) {
185996
- return options.map((option) => {
185997
- const group2 = option.parentElement instanceof HTMLOptGroupElement ? option.parentElement : null;
185998
- return {
185999
- value: option.value,
186000
- label: option.label || option.textContent?.trim() || "",
186001
- disabled: option.disabled || Boolean(group2?.disabled),
186002
- hidden: Boolean(option.hidden) || Boolean(group2?.hidden),
186003
- group: group2?.label ?? "",
186004
- ...option.dataset.displayLabel ? { displayLabel: option.dataset.displayLabel } : {},
186005
- ...option.dataset.description ? { description: option.dataset.description } : {},
186006
- ...option.style.fontFamily ? { fontFamily: option.style.fontFamily } : {}
186007
- };
186008
- });
186009
- }
186010
- function renderSelectMenu(menu, choices2, value) {
186011
- const menuItems = [];
186012
- let previousGroup = "";
186013
- choices2.forEach((choice, index) => {
186014
- if (choice.hidden) {
186015
- return;
186016
- }
186017
- if (choice.group && choice.group !== previousGroup) {
186018
- const heading = document.createElement("div");
186019
- heading.className = "group";
186020
- heading.setAttribute("role", "presentation");
186021
- heading.textContent = choice.group;
186022
- menuItems.push(heading);
186023
- }
186024
- previousGroup = choice.group;
186025
- const item3 = document.createElement("div");
186026
- item3.className = "option";
186027
- item3.setAttribute("role", "option");
186028
- item3.setAttribute("aria-selected", String(choice.value === value));
186029
- item3.setAttribute("aria-disabled", String(choice.disabled));
186030
- item3.id = `${menu.id}-${index}`;
186031
- item3.dataset.index = String(index);
186032
- item3.textContent = choice.displayLabel ?? choice.label;
186033
- if (choice.fontFamily) {
186034
- item3.style.fontFamily = choice.fontFamily;
186035
- }
186036
- if (choice.description) {
186037
- const description = document.createElement("span");
186038
- description.className = "description";
186039
- description.textContent = choice.description;
186040
- item3.append(description);
186041
- }
186042
- menuItems.push(item3);
186043
- });
186044
- menu.replaceChildren(...menuItems);
186045
- }
186046
- function positionSelectMenu(menu, trigger) {
186047
- const rect22 = trigger.getBoundingClientRect();
186048
- const margin = 8;
186049
- const gap = 4;
186050
- const width = Math.max(0, window.innerWidth - margin * 2);
186051
- const below = Math.max(0, window.innerHeight - rect22.bottom - gap - margin);
186052
- const above = Math.max(0, rect22.top - gap - margin);
186053
- menu.style.minWidth = `${Math.min(rect22.width, width)}px`;
186054
- menu.style.maxWidth = `${width}px`;
186055
- const heightCap = trigger.getRootNode() instanceof ShadowRoot && trigger.getRootNode().host.getAttribute("data-font-picker") === "family" ? 320 : 240;
186056
- menu.style.maxHeight = `${heightCap}px`;
186057
- const preferredHeight = menu.getBoundingClientRect().height;
186058
- const flip = below < preferredHeight && above > below;
186059
- menu.style.maxHeight = `${Math.min(heightCap, flip ? above : below)}px`;
186060
- const { height, width: menuWidth } = menu.getBoundingClientRect();
186061
- menu.style.top = `${Math.max(margin, flip ? rect22.top - gap - height : rect22.bottom + gap)}px`;
186062
- menu.style.left = `${Math.max(margin, Math.min(rect22.left, window.innerWidth - menuWidth - margin))}px`;
186063
- }
186064
- function markSelectActive(menu, trigger, active2, open) {
186065
- for (const item3 of menu.querySelectorAll("[data-index]")) {
186066
- item3.toggleAttribute("data-active", Number(item3.dataset.index) === active2 && open);
186067
- }
186068
- if (open && active2 >= 0) {
186069
- trigger.setAttribute("aria-activedescendant", `${menu.id}-${active2}`);
186070
- }
186071
- menu.querySelector("[data-active]")?.scrollIntoView?.({ block: "nearest" });
186072
- }
186073
- function nextSelectActive(choices2, active2, step) {
186074
- for (let index = 0; index < choices2.length; index++) {
186075
- active2 = (active2 + step + choices2.length) % choices2.length;
186076
- if (!choices2[active2].disabled && !choices2[active2].hidden) {
186077
- return active2;
186078
- }
186079
- }
186080
- return active2;
186081
- }
186082
- var SELECT_RIBBON_STYLES = `
186083
- :host([variant^="ribbon-"][disabled]) { opacity: .4; }
186084
- :host([variant^="ribbon-"]) button {
186085
- height: 28px; min-height: 28px; padding: 4px 8px; gap: 4px;
186086
- border: 1px solid color-mix(in oklab, var(--pptx-border) 60%, transparent);
186087
- border-radius: 3px; font-size: 12px; line-height: 18px;
186088
- background: color-mix(in oklab, var(--pptx-background) 60%, transparent);
186089
- color: var(--pptx-foreground);
186090
- }
186091
- :host([variant^="ribbon-"]) .value { flex: 1; min-width: 0; }
186092
- :host([variant^="ribbon-"]) .chevron {
186093
- width: 16px; height: 16px; margin: 0; border: 0; transform: none;
186094
- }
186095
- :host([variant^="ribbon-"]) .chevron svg { display: block; width: 16px; height: 16px; }
186096
- :host([variant="ribbon-font"]) .chevron { color: var(--pptx-muted-foreground); }
186097
- :host([variant="ribbon-font"][data-font-picker="size"]) button { padding-inline: 6px; }
186098
- :host([variant="ribbon-icon"]) button {
186099
- width: 36px; gap: 6px; padding: 6px 10px; border: 0; font-size: 12px; line-height: 16px;
186100
- background: var(--pptx-muted); justify-content: center;
186101
- }
186102
- :host([variant="ribbon-icon"]) :is(.value, .chevron) { display: none; }
186103
- ::slotted(svg[slot="icon"]) { display: block; width: 16px; height: 16px; flex: none; }
186104
- :host([variant^="ribbon-"]) button:hover:not(:disabled) { background: var(--pptx-accent); }
186105
- :host([variant^="ribbon-"]) .menu {
186106
- width: 192px; padding: 4px 0; border-radius: 8px; font-size: 12px; line-height: 16px;
186107
- }
186108
- :host([data-font-picker="family"]) .menu { width: 256px; }
186109
- :host([variant^="ribbon-"]) .option {
186110
- display: flex; justify-content: space-between; gap: 12px; padding: 6px 12px; border-radius: 0;
186111
- }
186112
- :host([variant^="ribbon-"]) .option[aria-selected="true"] {
186113
- background: transparent; color: var(--pptx-foreground);
186114
- }
186115
- :host([variant^="ribbon-"]) .option:hover,
186116
- :host([variant^="ribbon-"]) .option[data-active] { background: var(--pptx-muted); filter: none; }
186117
- :host([variant^="ribbon-"]) .group {
186118
- padding: 8px 12px 4px; text-transform: uppercase; letter-spacing: .25px;
186119
- font-size: 10px; line-height: 15px;
186120
- }
186121
- @media (max-width: 767px) {
186122
- :host([variant^="ribbon-"]) button { height: 44px; min-height: 44px; }
186123
- }
186124
- .description { flex: none; color: var(--pptx-muted-foreground); font-size: 10px; line-height: 15px; }
186125
- `;
186126
- var SELECT_STYLES = `
186127
- :host {
186128
- display: inline-block;
186129
- box-sizing: border-box;
186130
- min-width: 0;
186131
- max-width: 100%;
186132
- border: 0 !important;
186133
- padding: 0 !important;
186134
- background: transparent !important;
186135
- box-shadow: none !important;
186136
- color: var(--pptx-foreground, #e2e8f0);
186137
- font: inherit;
186138
- font-size: 12px;
186139
- vertical-align: middle;
186140
- }
186141
- :host([disabled]) { opacity: .5; cursor: not-allowed; }
186142
- button {
186143
- box-sizing: border-box;
186144
- width: 100%;
186145
- min-height: 28px;
186146
- display: flex;
186147
- align-items: center;
186148
- justify-content: space-between;
186149
- gap: 10px;
186150
- padding: 4px 7px;
186151
- border: 1px solid var(--pptx-border, #3f3f52);
186152
- border-radius: 5px;
186153
- background: var(--pptx-select-control-bg, var(--pptx-background, #11111b));
186154
- color: inherit;
186155
- font: inherit;
186156
- font-size: inherit;
186157
- text-align: left;
186158
- cursor: pointer;
186159
- }
186160
- :host(.bg-muted) button { background: var(--pptx-muted, #1f2937); }
186161
- :host(.bg-popover) button { background: var(--pptx-popover, #111827); }
186162
- button:focus-visible {
186163
- outline: 2px solid var(--pptx-ring, #6366f1);
186164
- outline-offset: 2px;
186165
- }
186166
- button:disabled { cursor: not-allowed; }
186167
- @media (pointer: coarse), (max-width: 767px) {
186168
- button { min-height: 44px; }
186169
- }
186170
- .value {
186171
- overflow: hidden;
186172
- text-overflow: ellipsis;
186173
- white-space: nowrap;
186174
- }
186175
- .chevron svg { display: none; }
186176
- .chevron {
186177
- flex: none;
186178
- width: 6px;
186179
- height: 6px;
186180
- margin: 0 2px 3px 0;
186181
- border-right: 1.5px solid currentColor;
186182
- border-bottom: 1.5px solid currentColor;
186183
- transform: rotate(45deg);
186184
- }
186185
- :host([open]) .chevron {
186186
- margin: 3px 2px 0 0;
186187
- transform: rotate(225deg);
186188
- }
186189
- .menu {
186190
- box-sizing: border-box;
186191
- position: fixed;
186192
- margin: 0;
186193
- padding: 4px;
186194
- min-width: 90px;
186195
- max-height: min(240px, 50vh);
186196
- overflow: auto;
186197
- border: 1px solid var(--pptx-border, #3f3f52);
186198
- border-radius: 5px;
186199
- background: var(--pptx-popover, var(--pptx-background, #11111b));
186200
- color: var(--pptx-popover-foreground, var(--pptx-foreground, #e2e8f0));
186201
- box-shadow: 0 8px 20px #0004;
186202
- font: inherit;
186203
- font-size: inherit;
186204
- }
186205
- .menu:not(:popover-open):not([data-fallback-open]) { display: none; }
186206
- .option {
186207
- display: block;
186208
- box-sizing: border-box;
186209
- width: 100%;
186210
- padding: 6px 8px;
186211
- border-radius: 3px;
186212
- cursor: pointer;
186213
- white-space: nowrap;
186214
- }
186215
- .group {
186216
- padding: 7px 8px 3px;
186217
- color: var(--pptx-muted-foreground, #9ca3af);
186218
- font-size: .9em;
186219
- font-weight: 600;
186220
- }
186221
- .option:not([aria-disabled="true"]):hover,
186222
- .option[data-active]:not([aria-selected="true"]) {
186223
- background: color-mix(in srgb, var(--pptx-primary, #e86a40) 20%, var(--pptx-popover, #11111b));
186224
- }
186225
- .option[aria-selected="true"] {
186226
- background: var(--pptx-primary, #e86a40);
186227
- color: var(--pptx-primary-foreground, #fff);
186228
- }
186229
- .option[aria-selected="true"]:hover { filter: brightness(1.08); }
186230
- .option[aria-disabled="true"] { opacity: .45; cursor: not-allowed; }
186231
- @media (forced-colors: active) {
186232
- button, .menu {
186233
- border-color: CanvasText;
186234
- background: Canvas;
186235
- color: CanvasText;
186236
- }
186237
- .option[aria-selected="true"],
186238
- .option[data-active],
186239
- .option:not([aria-disabled="true"]):hover {
186240
- background: Highlight;
186241
- color: HighlightText;
186242
- }
186243
- }
186244
- ${SELECT_RIBBON_STYLES}
186245
- `;
186246
- function createSelectTrigger() {
186247
- const trigger = document.createElement("button");
186248
- trigger.type = "button";
186249
- trigger.setAttribute("part", "trigger");
186250
- trigger.setAttribute("role", "combobox");
186251
- trigger.setAttribute("aria-haspopup", "listbox");
186252
- trigger.setAttribute("aria-expanded", "false");
186253
- const icon = document.createElement("slot");
186254
- icon.name = "icon";
186255
- const text22 = document.createElement("span");
186256
- text22.className = "value";
186257
- text22.setAttribute("part", "value");
186258
- const chevron2 = document.createElement("span");
186259
- chevron2.className = "chevron";
186260
- chevron2.setAttribute("part", "indicator");
186261
- chevron2.setAttribute("aria-hidden", "true");
186262
- const svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
186263
- svg.setAttribute("viewBox", "0 0 24 24");
186264
- svg.setAttribute("fill", "none");
186265
- svg.setAttribute("stroke", "currentColor");
186266
- svg.setAttribute("stroke-width", "2");
186267
- svg.setAttribute("stroke-linecap", "round");
186268
- svg.setAttribute("stroke-linejoin", "round");
186269
- const path = document.createElementNS(svg.namespaceURI, "path");
186270
- path.setAttribute("d", "m6 9 6 6 6-6");
186271
- svg.append(path);
186272
- chevron2.append(svg);
186273
- trigger.append(icon, text22, chevron2);
186274
- return { trigger, text: text22 };
186275
- }
186276
- function prependSelectCustomSlot(host, menu) {
186277
- if (host.querySelector('[slot="custom"]')) {
186278
- const custom = document.createElement("slot");
186279
- custom.name = "custom";
186280
- menu.prepend(custom);
186281
- }
186282
- }
186283
- function createSelectValueElement() {
186284
- class SelectValueElement extends HTMLElement {
186285
- get value() {
186286
- const requested = this.getAttribute("value");
186287
- const options = this.options;
186288
- if (this.getAttribute("variant") === "ribbon-font" && requested !== null) {
186289
- return requested;
186290
- }
186291
- if (requested !== null && (!options.length || options.some((option) => option.value === requested))) {
186292
- return requested;
186293
- }
186294
- return options.find((option) => option.selected)?.value ?? options.find(
186295
- (option) => !option.disabled && !option.closest("optgroup[disabled]") && !option.hidden
186296
- )?.value ?? options[0]?.value ?? requested ?? "";
186297
- }
186298
- set value(next) {
186299
- this.setAttribute("value", String(next ?? ""));
186300
- }
186301
- get options() {
186302
- return [...this.querySelectorAll("option")];
186303
- }
186304
- get selectedIndex() {
186305
- return this.options.findIndex((option) => option.value === this.value);
186306
- }
186307
- set selectedIndex(index) {
186308
- this.value = this.options[index]?.value ?? "";
186309
- }
186310
- }
186311
- return SelectValueElement;
186312
- }
186313
- var nextSelectId = 0;
186314
- function definePptxSelect(registry) {
186315
- if (registry.get("pptx-ui-select")) {
186316
- return;
186317
- }
186318
- class PptxSelect extends createSelectValueElement() {
186319
- static formAssociated = true;
186320
- static observedAttributes = ["value", "disabled", "aria-label"];
186321
- internals;
186322
- trigger;
186323
- text;
186324
- menu;
186325
- observer;
186326
- refreshFrame = 0;
186327
- choices = [];
186328
- active = -1;
186329
- open = false;
186330
- search = "";
186331
- searchTimer = 0;
186332
- defaultValue = "";
186333
- constructor() {
186334
- super();
186335
- try {
186336
- this.internals = this.attachInternals();
186337
- } catch {
186338
- this.internals = void 0;
186339
- }
186340
- const root = this.attachShadow({ mode: "open", delegatesFocus: true });
186341
- attachControlStyles(root, SELECT_STYLES);
186342
- ({ trigger: this.trigger, text: this.text } = createSelectTrigger());
186343
- this.menu = document.createElement("div");
186344
- this.menu.className = "menu";
186345
- this.menu.id = `pptx-ui-select-options-${++nextSelectId}`;
186346
- this.menu.setAttribute("role", "listbox");
186347
- this.menu.setAttribute("popover", "manual");
186348
- this.menu.setAttribute("part", "popup");
186349
- this.trigger.setAttribute("aria-controls", this.menu.id);
186350
- root.append(this.trigger, this.menu);
186351
- this.trigger.addEventListener("click", () => this.open ? this.close() : this.show());
186352
- this.trigger.addEventListener("keydown", (event) => this.onKeyDown(event));
186353
- this.menu.addEventListener("pointerdown", (event) => {
186354
- if (event.target.closest("[data-index]")) {
186355
- event.preventDefault();
186356
- }
186357
- });
186358
- this.menu.addEventListener("click", (event) => {
186359
- const target = event.target.closest("[data-index]");
186360
- if (target) {
186361
- this.commit(Number(target.dataset.index));
186362
- }
186363
- });
186364
- this.observer = new MutationObserver(() => {
186365
- if (!this.refreshFrame) {
186366
- this.refreshFrame = requestAnimationFrame(() => {
186367
- this.refreshFrame = 0;
186368
- this.refresh();
186369
- });
186370
- }
186371
- });
186372
- }
186373
- connectedCallback() {
186374
- this.defaultValue = this.getAttribute("value") ?? "";
186375
- this.observer.observe(this, {
186376
- childList: true,
186377
- subtree: true,
186378
- attributes: true,
186379
- characterData: true,
186380
- attributeFilter: SELECT_OPTION_ATTRIBUTES
186381
- });
186382
- this.refresh();
186383
- }
186384
- disconnectedCallback() {
186385
- this.close();
186386
- window.clearTimeout(this.searchTimer);
186387
- this.searchTimer = 0;
186388
- this.search = "";
186389
- this.observer.disconnect();
186390
- cancelAnimationFrame(this.refreshFrame);
186391
- this.refreshFrame = 0;
186392
- }
186393
- attributeChangedCallback() {
186394
- this.refresh();
186395
- }
186396
- get disabled() {
186397
- return this.hasAttribute("disabled");
186398
- }
186399
- set disabled(next) {
186400
- this.toggleAttribute("disabled", Boolean(next));
186401
- }
186402
- focus(options) {
186403
- this.trigger.focus(options);
186404
- }
186405
- formResetCallback() {
186406
- this.value = this.defaultValue;
186407
- }
186408
- formDisabledCallback(disabled) {
186409
- this.disabled = disabled;
186410
- }
186411
- refresh() {
186412
- if (!this.trigger) {
186413
- return;
186414
- }
186415
- const options = [...this.querySelectorAll("option")];
186416
- this.choices = collectSelectChoices(options);
186417
- if (!this.hasAttribute("value") && this.choices.length) {
186418
- this.value = options.find((option) => option.selected)?.value ?? this.choices.find((choice) => !choice.disabled && !choice.hidden)?.value ?? this.choices[0].value;
186419
- }
186420
- this.text.textContent = this.choices.find((choice) => choice.value === this.value)?.displayLabel ?? this.choices.find((choice) => choice.value === this.value)?.label ?? this.value;
186421
- this.trigger.disabled = this.disabled;
186422
- if (this.disabled) {
186423
- this.close();
186424
- }
186425
- this.trigger.setAttribute("aria-label", this.getAttribute("aria-label") ?? "");
186426
- this.internals?.setFormValue?.(this.disabled ? null : this.value);
186427
- if (this.open || this.menu.childElementCount) {
186428
- this.renderMenu();
186429
- }
186430
- }
186431
- renderMenu() {
186432
- renderSelectMenu(this.menu, this.choices, this.value);
186433
- prependSelectCustomSlot(this, this.menu);
186434
- markSelectActive(this.menu, this.trigger, this.active, this.open);
186435
- }
186436
- show() {
186437
- if (this.disabled || !this.choices.some((choice) => !choice.disabled && !choice.hidden) || this.open) {
186438
- return;
186439
- }
186440
- this.open = true;
186441
- this.setAttribute("open", "");
186442
- const selected = this.choices.findIndex(
186443
- (choice) => choice.value === this.value && !choice.disabled && !choice.hidden
186444
- );
186445
- this.active = selected >= 0 ? selected : this.choices.findIndex((choice) => !choice.disabled && !choice.hidden);
186446
- this.renderMenu();
186447
- if (typeof this.menu.showPopover === "function") {
186448
- this.menu.showPopover();
186449
- } else {
186450
- this.menu.dataset.fallbackOpen = "";
186451
- }
186452
- this.trigger.setAttribute("aria-expanded", "true");
186453
- this.position();
186454
- markSelectActive(this.menu, this.trigger, this.active, this.open);
186455
- document.addEventListener("pointerdown", this.onOutside, true);
186456
- window.addEventListener("resize", this.position);
186457
- window.addEventListener("scroll", this.position, true);
186458
- }
186459
- close() {
186460
- if (!this.open) {
186461
- return;
186462
- }
186463
- this.open = false;
186464
- window.clearTimeout(this.searchTimer);
186465
- this.search = "";
186466
- this.removeAttribute("open");
186467
- if (this.menu.matches(":popover-open")) {
186468
- this.menu.hidePopover();
186469
- }
186470
- delete this.menu.dataset.fallbackOpen;
186471
- this.trigger.setAttribute("aria-expanded", "false");
186472
- this.trigger.removeAttribute("aria-activedescendant");
186473
- document.removeEventListener("pointerdown", this.onOutside, true);
186474
- window.removeEventListener("resize", this.position);
186475
- window.removeEventListener("scroll", this.position, true);
186476
- }
186477
- onOutside = (event) => {
186478
- if (!event.composedPath().includes(this)) {
186479
- this.close();
186480
- }
186481
- };
186482
- position = () => {
186483
- if (!this.open) {
186484
- return;
186485
- }
186486
- positionSelectMenu(this.menu, this.trigger);
186487
- };
186488
- move(step) {
186489
- if (!this.open) {
186490
- this.show();
186491
- }
186492
- if (!this.open) {
186493
- return;
186494
- }
186495
- this.active = nextSelectActive(this.choices, this.active, step);
186496
- markSelectActive(this.menu, this.trigger, this.active, this.open);
186497
- }
186498
- commit(index) {
186499
- const choice = this.choices[index];
186500
- if (!choice || choice.disabled || choice.hidden) {
186501
- return;
186502
- }
186503
- const changed = this.value !== choice.value;
186504
- this.value = choice.value;
186505
- this.close();
186506
- this.trigger.focus();
186507
- if (changed) {
186508
- this.dispatchEvent(new Event("input", { bubbles: true, composed: true }));
186509
- this.dispatchEvent(new Event("change", { bubbles: true, composed: true }));
186510
- }
186511
- }
186512
- onKeyDown(event) {
186513
- if (this.disabled) {
186514
- return;
186515
- }
186516
- if (event.key === "ArrowDown" || event.key === "ArrowUp") {
186517
- event.preventDefault();
186518
- event.stopPropagation();
186519
- this.move(event.key === "ArrowDown" ? 1 : -1);
186520
- } else if (event.key === "Home" || event.key === "End") {
186521
- event.preventDefault();
186522
- event.stopPropagation();
186523
- this.show();
186524
- this.active = event.key === "Home" ? nextSelectActive(this.choices, -1, 1) : nextSelectActive(this.choices, 0, -1);
186525
- markSelectActive(this.menu, this.trigger, this.active, this.open);
186526
- } else if (event.key === "Enter" || event.key === " ") {
186527
- event.preventDefault();
186528
- event.stopPropagation();
186529
- if (this.open) {
186530
- this.commit(this.active);
186531
- } else {
186532
- this.show();
186533
- }
186534
- } else if (event.key === "Escape" && this.open) {
186535
- event.preventDefault();
186536
- event.stopPropagation();
186537
- this.close();
186538
- this.trigger.focus();
186539
- } else if (event.key === "Tab") {
186540
- this.close();
186541
- } else if (event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey) {
186542
- event.stopPropagation();
186543
- this.search += event.key.toLocaleLowerCase();
186544
- window.clearTimeout(this.searchTimer);
186545
- this.searchTimer = window.setTimeout(() => {
186546
- this.search = "";
186547
- }, 700);
186548
- this.show();
186549
- const index = this.choices.findIndex(
186550
- (choice) => !choice.disabled && !choice.hidden && choice.label.toLocaleLowerCase().startsWith(this.search)
186551
- );
186552
- if (index >= 0) {
186553
- this.active = index;
186554
- markSelectActive(this.menu, this.trigger, this.active, this.open);
186555
- }
186556
- }
186557
- }
186558
- }
186559
- registry.define("pptx-ui-select", PptxSelect);
186560
- }
186561
185815
  function resolveLiveCustomGeometryPath(element) {
186562
185816
  const el = element;
186563
185817
  if (!el.pathData || !el.pathWidth || !el.pathHeight) {
@@ -195114,7 +194368,9 @@ function buildChartStylePresets(chartData) {
195114
194368
  id,
195115
194369
  labelKey,
195116
194370
  colors,
195117
- applied: paletteEquals(colors, chartData.colorPalette)
194371
+ applied: paletteEquals(colors, chartData.colorPalette) || !chartData.colorPalette && Boolean(chartData.series?.length) && chartData.series.every(
194372
+ (series, index) => series.color?.toLowerCase() === colors[index % colors.length]?.toLowerCase()
194373
+ )
195118
194374
  };
195119
194375
  });
195120
194376
  }
@@ -211890,6 +211146,8 @@ var translationsEn = {
211890
211146
  "pptx.ribbon.width": "Width",
211891
211147
  "pptx.ribbon.strokeWidth": "Stroke width",
211892
211148
  "pptx.ribbon.browseThemes": "Browse Themes",
211149
+ "pptx.ribbon.groupThemes": "Themes",
211150
+ "pptx.ribbon.groupCustomize": "Customize",
211893
211151
  "pptx.ribbon.browseThemesTitle": "Browse and apply built-in themes",
211894
211152
  "pptx.ribbon.theme.default": "Default",
211895
211153
  "pptx.ribbon.theme.light": "Light (Vermilion)",
@@ -213135,6 +212393,7 @@ var translationsEn = {
213135
212393
  "pptx.review.hideInk": "Hide Ink",
213136
212394
  "pptx.review.markAllRead": "Mark All as Read",
213137
212395
  "pptx.review.proofing": "Proofing",
212396
+ "pptx.review.ink": "Ink",
213138
212397
  "pptx.review.protect": "Protect",
213139
212398
  "pptx.review.readOnly": "Always Open Read-Only",
213140
212399
  "pptx.review.restrictPermission": "Restrict Permission",
@@ -223519,22 +222778,22 @@ function observeExternalCollaborationSession(session, onSnapshot) {
223519
222778
  }
223520
222779
  return dispose;
223521
222780
  }
223522
- function borrowExternalCollaborationAwareness(host) {
222781
+ function borrowExternalCollaborationAwareness(host2) {
223523
222782
  let disposed = false;
223524
222783
  let ownsPresence = false;
223525
222784
  let hadPresence = false;
223526
222785
  let previousPresence;
223527
222786
  let lastPresence;
223528
222787
  const awareness = {
223529
- clientID: host.clientID,
223530
- getStates: () => host.getStates(),
223531
- on: (event, callback) => host.on(event, callback),
223532
- off: (event, callback) => host.off(event, callback),
222788
+ clientID: host2.clientID,
222789
+ getStates: () => host2.getStates(),
222790
+ on: (event, callback) => host2.on(event, callback),
222791
+ off: (event, callback) => host2.off(event, callback),
223533
222792
  setLocalStateField: (field, value) => {
223534
222793
  if (disposed) {
223535
222794
  return;
223536
222795
  }
223537
- const state = host.getLocalState();
222796
+ const state = host2.getLocalState();
223538
222797
  if (state === null) {
223539
222798
  return;
223540
222799
  }
@@ -223546,7 +222805,7 @@ function borrowExternalCollaborationAwareness(host) {
223546
222805
  lastPresence = value;
223547
222806
  ownsPresence = true;
223548
222807
  }
223549
- host.setLocalStateField(field, value);
222808
+ host2.setLocalStateField(field, value);
223550
222809
  }
223551
222810
  };
223552
222811
  return {
@@ -223556,7 +222815,7 @@ function borrowExternalCollaborationAwareness(host) {
223556
222815
  return;
223557
222816
  }
223558
222817
  disposed = true;
223559
- const current = host.getLocalState();
222818
+ const current = host2.getLocalState();
223560
222819
  if (!ownsPresence || current === null || current.presence !== lastPresence) {
223561
222820
  return;
223562
222821
  }
@@ -223566,7 +222825,7 @@ function borrowExternalCollaborationAwareness(host) {
223566
222825
  } else {
223567
222826
  delete restored.presence;
223568
222827
  }
223569
- host.setLocalState(restored);
222828
+ host2.setLocalState(restored);
223570
222829
  }
223571
222830
  };
223572
222831
  }
@@ -229109,6 +228368,151 @@ var HELP_RIBBON_COMMANDS = [
229109
228368
  icon: "accessibility"
229110
228369
  }
229111
228370
  ];
228371
+ var DESIGN_RIBBON_GROUPS = [
228372
+ { id: "design.themes", labelKey: "pptx.ribbon.groupThemes" },
228373
+ { id: "design.variants", labelKey: "pptx.ribbon.groupVariants" },
228374
+ { id: "design.customize", labelKey: "pptx.ribbon.groupCustomize" }
228375
+ ];
228376
+ function designCommandState(id, state) {
228377
+ const slideSize = id === "design.customize.slideSize";
228378
+ const background = id === "design.customize.formatBackground";
228379
+ const active2 = id === "design.themes.browseThemes" ? state.galleryOpen : id === "design.themes.editTheme" ? state.editorOpen : background ? state.backgroundOpen : false;
228380
+ return {
228381
+ disabled: !slideSize && !state.editable,
228382
+ active: Boolean(active2),
228383
+ expanded: slideSize ? void 0 : Boolean(active2),
228384
+ hidden: slideSize && state.hasSlideSize === false || background && state.hasBackground === false
228385
+ };
228386
+ }
228387
+ var DESIGN_RIBBON_COMMANDS = [
228388
+ {
228389
+ id: "design.themes.browseThemes",
228390
+ labelKey: "pptx.ribbon.browseThemes",
228391
+ titleKey: "pptx.ribbon.browseThemesTitle",
228392
+ icon: "palette"
228393
+ },
228394
+ {
228395
+ id: "design.themes.editTheme",
228396
+ labelKey: "pptx.ribbon.editTheme",
228397
+ titleKey: "pptx.design.editThemeTooltip",
228398
+ icon: "pencil"
228399
+ },
228400
+ {
228401
+ id: "design.customize.slideSize",
228402
+ labelKey: "pptx.ribbon.slideSize",
228403
+ titleKey: "pptx.ribbon.slideSizeTitle",
228404
+ icon: "monitor"
228405
+ },
228406
+ {
228407
+ id: "design.customize.formatBackground",
228408
+ labelKey: "pptx.ribbon.formatBackground",
228409
+ titleKey: "pptx.ribbon.formatBackgroundTitle",
228410
+ icon: "paint"
228411
+ }
228412
+ ];
228413
+ function buildReviewRibbon(t, state) {
228414
+ const label = (key2, fallback) => {
228415
+ const value = t(key2);
228416
+ return value && value !== key2 ? value : fallback;
228417
+ };
228418
+ const command = (id, key2, fallback, icon, options = {}) => ({ id, label: label(key2, fallback), icon, ...options });
228419
+ const group2 = (id, key2, fallback, commands) => ({ id, label: label(key2, fallback), commands });
228420
+ return [
228421
+ group2("review.proofing", "pptx.review.proofing", "Proofing", [
228422
+ command("review.proofing.spelling", "pptx.review.spelling", "Spelling", "spelling", {
228423
+ active: state.spellCheck,
228424
+ pressed: state.spellCheck,
228425
+ disabled: state.canSpellCheck === false,
228426
+ title: label("pptx.review.toggleSpellCheck", "Toggle spell check")
228427
+ }),
228428
+ command("review.proofing.thesaurus", "pptx.review.thesaurus", "Thesaurus", "book", {
228429
+ disabled: true
228430
+ })
228431
+ ]),
228432
+ group2("review.accessibility", "pptx.review.accessibility", "Accessibility", [
228433
+ command(
228434
+ "review.accessibility.check",
228435
+ "pptx.review.accessibilityCheck",
228436
+ "Check Accessibility",
228437
+ "shield",
228438
+ { disabled: state.canAccessibility === false, active: state.accessibilityOpen }
228439
+ )
228440
+ ]),
228441
+ group2("review.language", "pptx.review.language", "Language", [
228442
+ command("review.language.translate", "pptx.review.translate", "Translate", "languages", {
228443
+ disabled: true
228444
+ }),
228445
+ command("review.language.language", "pptx.review.language", "Language", "globe", {
228446
+ disabled: !state.canLanguage,
228447
+ hidden: state.languageHidden
228448
+ })
228449
+ ]),
228450
+ group2("review.compare", "pptx.review.changes", "Changes", [
228451
+ command("review.compare.markAllRead", "pptx.review.markAllRead", "Mark All as Read", "copy", {
228452
+ disabled: true
228453
+ }),
228454
+ command("review.compare.compare", "pptx.ribbon.compare", "Compare", "compare", {
228455
+ disabled: !state.editable || !state.canCompare,
228456
+ hidden: !state.canCompare,
228457
+ title: label("pptx.ribbon.compareTitle", "Compare presentations")
228458
+ })
228459
+ ]),
228460
+ group2("review.comments", "pptx.toolbar.comments", "Comments", [
228461
+ command("review.comments.newComment", "pptx.toolbar.comments", "Comments", "messagePlus", {
228462
+ disabled: !state.canComments,
228463
+ active: state.commentsOpen,
228464
+ expanded: state.commentsOpen,
228465
+ badge: state.commentCount,
228466
+ title: label("pptx.review.toggleComments", "Toggle comments")
228467
+ }),
228468
+ command("review.comments.delete", "pptx.common.delete", "Delete", "trash", {
228469
+ disabled: true,
228470
+ compact: true,
228471
+ column: 1
228472
+ }),
228473
+ command("review.comments.previous", "pptx.common.previous", "Previous", "chevronLeft", {
228474
+ disabled: true,
228475
+ compact: true,
228476
+ column: 1
228477
+ }),
228478
+ command("review.comments.next", "pptx.common.next", "Next", "chevronRight", {
228479
+ disabled: true,
228480
+ compact: true,
228481
+ column: 2
228482
+ }),
228483
+ command(
228484
+ "review.comments.showComments",
228485
+ "pptx.review.showComments",
228486
+ "Show Comments",
228487
+ "message",
228488
+ {
228489
+ disabled: !state.canComments,
228490
+ active: state.commentsOpen,
228491
+ expanded: state.commentsOpen,
228492
+ compact: true,
228493
+ column: 2
228494
+ }
228495
+ )
228496
+ ]),
228497
+ group2("review.protect", "pptx.review.protect", "Protect", [
228498
+ command("review.protect.readOnly", "pptx.review.readOnly", "Always Open Read-only", "lock", {
228499
+ disabled: true
228500
+ }),
228501
+ command(
228502
+ "review.protect.restrictPermission",
228503
+ "pptx.review.restrictPermission",
228504
+ "Restrict Permission",
228505
+ "shield",
228506
+ { disabled: true }
228507
+ )
228508
+ ]),
228509
+ group2("review.ink", "pptx.review.ink", "Ink", [
228510
+ command("review.ink.hideInk", "pptx.review.hideInk", "Hide Ink", "eyeOff", {
228511
+ disabled: true
228512
+ })
228513
+ ])
228514
+ ];
228515
+ }
229112
228516
  function resetSlideLayoutPath(slide) {
229113
228517
  const path = slide?.layoutPath;
229114
228518
  return typeof path === "string" && path !== "" ? path : void 0;
@@ -238540,12 +237944,12 @@ function shouldShowMediaFullscreenStopButton(input) {
238540
237944
  var ONLINE_VIDEO_IFRAME_ALLOW = "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; fullscreen";
238541
237945
  var ONLINE_VIDEO_IFRAME_SANDBOX = "allow-scripts allow-same-origin allow-popups allow-presentation";
238542
237946
  function youtubeVideoId(url) {
238543
- const host = url.hostname.replace(/^www\./, "").toLowerCase();
238544
- if (host === "youtu.be") {
237947
+ const host2 = url.hostname.replace(/^www\./, "").toLowerCase();
237948
+ if (host2 === "youtu.be") {
238545
237949
  const id = url.pathname.split("/").filter(Boolean)[0];
238546
237950
  return id || void 0;
238547
237951
  }
238548
- if (host !== "youtube.com" && host !== "m.youtube.com" && host !== "youtube-nocookie.com") {
237952
+ if (host2 !== "youtube.com" && host2 !== "m.youtube.com" && host2 !== "youtube-nocookie.com") {
238549
237953
  return void 0;
238550
237954
  }
238551
237955
  if (url.pathname.startsWith("/embed/")) {
@@ -238562,12 +237966,12 @@ function youtubeVideoId(url) {
238562
237966
  return void 0;
238563
237967
  }
238564
237968
  function vimeoVideoId(url) {
238565
- const host = url.hostname.replace(/^www\./, "").toLowerCase();
238566
- if (host === "player.vimeo.com") {
237969
+ const host2 = url.hostname.replace(/^www\./, "").toLowerCase();
237970
+ if (host2 === "player.vimeo.com") {
238567
237971
  const match2 = /^\/video\/(\d+)/.exec(url.pathname);
238568
237972
  return match2?.[1];
238569
237973
  }
238570
- if (host !== "vimeo.com") {
237974
+ if (host2 !== "vimeo.com") {
238571
237975
  return void 0;
238572
237976
  }
238573
237977
  const match = /^\/(?:channels\/[^/]+\/|groups\/[^/]+\/videos\/)?(\d+)/.exec(url.pathname);
@@ -240738,9 +240142,9 @@ function resolveAutosaveActivation(input) {
240738
240142
  var AUTOSAVE_DEFAULT_INTERVAL_MS = AUTOSAVE_DEFAULT_INTERVAL_SECONDS * 1e3;
240739
240143
  var HOST_INTERVAL_FLOOR_MS = 50;
240740
240144
  function resolveAutosaveIntervalMs(input) {
240741
- const host = input.hostIntervalMs;
240742
- if (typeof host === "number" && Number.isFinite(host)) {
240743
- return Math.max(HOST_INTERVAL_FLOOR_MS, host);
240145
+ const host2 = input.hostIntervalMs;
240146
+ if (typeof host2 === "number" && Number.isFinite(host2)) {
240147
+ return Math.max(HOST_INTERVAL_FLOOR_MS, host2);
240744
240148
  }
240745
240149
  const seconds = input.optionsIntervalSeconds;
240746
240150
  if (typeof seconds === "number" && Number.isFinite(seconds)) {
@@ -243645,7 +243049,7 @@ var RIBBON_CATALOG_TAIL_TABS = {
243645
243049
  review: {
243646
243050
  proofing: { label: "Proofing", controls: { spelling: "Spelling", thesaurus: "Thesaurus" } },
243647
243051
  accessibility: { label: "Accessibility", controls: { check: "Check Accessibility" } },
243648
- language: { label: "Language", controls: { translate: "Translate" } },
243052
+ language: { label: "Language", controls: { translate: "Translate", language: "Language" } },
243649
243053
  comments: {
243650
243054
  label: "Comments",
243651
243055
  controls: {
@@ -247304,8 +246708,57 @@ function applyShapeStylesItem(itemId, ctx) {
247304
246708
  }
247305
246709
  };
247306
246710
  }
246711
+ function smartArtColorPatch(data, fillColors) {
246712
+ const original = data.colorTransform;
246713
+ const roles = original?.roleColors ?? Object.fromEntries(
246714
+ (original?.labels ?? [{ name: "node0" }, { name: "node1" }]).map((label) => [
246715
+ label.name,
246716
+ { fill: [], line: [] }
246717
+ ])
246718
+ );
246719
+ const roleColors = Object.fromEntries(
246720
+ Object.entries(roles).map(([name, colors]) => [
246721
+ name,
246722
+ /^node\d+$/u.test(name) ? { ...colors, fill: [...fillColors] } : colors
246723
+ ])
246724
+ );
246725
+ const flat = flattenNodes(data.nodes);
246726
+ const shapes = data.drawingShapes;
246727
+ return {
246728
+ colorTransformDirty: true,
246729
+ colorTransform: {
246730
+ ...original,
246731
+ fillColors: [...fillColors],
246732
+ lineColors: original?.lineColors ?? [],
246733
+ roleColors,
246734
+ fillInterpolation: { method: "cycle" },
246735
+ labels: original?.labels?.map(
246736
+ (label) => /^node\d+$/u.test(label.name) ? { ...label, fill: { ...label.fill, method: "cycle" } } : label
246737
+ )
246738
+ },
246739
+ drawingDirty: Boolean(shapes?.length),
246740
+ drawingShapes: shapes?.map((shape, index) => {
246741
+ const nodeId = resolveDrawingShapeNodeId(shape, index, shapes, data.nodes);
246742
+ const nodeIndex = flat.findIndex((node) => node.id === nodeId);
246743
+ return nodeIndex < 0 ? shape : {
246744
+ ...shape,
246745
+ fillColor: fillColors[nodeIndex % fillColors.length],
246746
+ fillGradientStops: void 0,
246747
+ fillGradientType: void 0,
246748
+ fillGradientAngle: void 0
246749
+ };
246750
+ })
246751
+ };
246752
+ }
247307
246753
  function applySmartArtDataPatch(data, patch, box, elementId = "inspector") {
247308
246754
  const next = { ...data, ...patch };
246755
+ if (patch.style !== void 0) {
246756
+ next.quickStyleDirty = true;
246757
+ next.quickStyle = {
246758
+ ...next.quickStyle,
246759
+ effectIntensity: patch.style === "flat" ? "subtle" : patch.style
246760
+ };
246761
+ }
247309
246762
  return box ? rebuildDrawingShapesIfCleared(
247310
246763
  next,
247311
246764
  next.layout,
@@ -247423,8 +246876,14 @@ var SMARTART_COLORS_GALLERY = {
247423
246876
  build(ctx) {
247424
246877
  const element = ctx.element;
247425
246878
  const data = element?.type === "smartArt" ? element.smartArtData : void 0;
247426
- const current = data ? data.colorScheme ?? "colorful1" : void 0;
247427
246879
  const scheme = galleryColorScheme(ctx);
246880
+ const fills = data?.colorTransform?.fillColors;
246881
+ const matched = fills?.length ? SMARTART_COLOR_ENTRIES.find(
246882
+ (entry5) => entry5.accents.length === fills.length && entry5.accents.every(
246883
+ (accent, index) => scheme[accent].toLowerCase() === fills[index].toLowerCase()
246884
+ )
246885
+ )?.id : void 0;
246886
+ const current = data ? data.colorScheme ?? matched ?? (fills?.length ? void 0 : "colorful1") : void 0;
247428
246887
  const sections3 = SECTIONS.map((section) => ({
247429
246888
  id: section.id,
247430
246889
  titleKey: `pptx.gallery.smartArtColors.section.${section.id}`,
@@ -247459,7 +246918,15 @@ var SMARTART_COLORS_GALLERY = {
247459
246918
  },
247460
246919
  apply(itemId, ctx) {
247461
246920
  const entry5 = SMARTART_COLOR_ENTRIES.find((candidate) => candidate.id === itemId);
247462
- const patch = entry5 ? smartArtElementPatch(ctx.element, { colorScheme: entry5.id }) : null;
246921
+ const data = ctx.element?.type === "smartArt" ? ctx.element.smartArtData : void 0;
246922
+ const scheme = galleryColorScheme(ctx);
246923
+ const patch = entry5 && data ? smartArtElementPatch(ctx.element, {
246924
+ colorScheme: entry5.id,
246925
+ ...smartArtColorPatch(
246926
+ data,
246927
+ entry5.accents.map((accent) => scheme[accent])
246928
+ )
246929
+ }) : null;
247463
246930
  return patch ? { kind: "element", ...patch } : null;
247464
246931
  }
247465
246932
  };
@@ -247468,7 +246935,8 @@ var SMARTART_STYLES_GALLERY = {
247468
246935
  build(ctx) {
247469
246936
  const element = ctx.element;
247470
246937
  const data = element?.type === "smartArt" ? element.smartArtData : void 0;
247471
- const current = data ? data.style ?? "flat" : void 0;
246938
+ const intensity = data?.quickStyle?.effectIntensity;
246939
+ const current = data ? data.style ?? (intensity === "moderate" || intensity === "intense" ? intensity : "flat") : void 0;
247472
246940
  const accent1 = galleryColorScheme(ctx).accent1;
247473
246941
  return {
247474
246942
  id: "smartArtStyles",
@@ -248938,9 +248406,6 @@ function resolveActiveRibbonTab(active2, visibleContextual, fallback) {
248938
248406
  }
248939
248407
  return active2;
248940
248408
  }
248941
- var RIBBON_GALLERY_ATTR = "data-ribbon-gallery";
248942
- var RIBBON_GALLERY_POPUP_ATTR = "data-ribbon-gallery-popup";
248943
- var RIBBON_GALLERY_ITEM_ATTR = "data-gallery-item";
248944
248409
  var RIBBON_CONTEXTUAL_TAB_ATTR = "data-ribbon-contextual-tab";
248945
248410
  var INLINE_GALLERY_TILE_COUNT = 6;
248946
248411
  function inlineGalleryItems(descriptor, count = INLINE_GALLERY_TILE_COUNT) {
@@ -248953,6 +248418,13 @@ function galleryItemLabel(item3, translate) {
248953
248418
  const translated = translate(item3.labelKey, item3.labelParams);
248954
248419
  return translated && translated !== item3.labelKey ? translated : item3.label;
248955
248420
  }
248421
+ function galleryTextLabel(translate, key2, fallback) {
248422
+ if (!key2) {
248423
+ return fallback;
248424
+ }
248425
+ const translated = translate(key2);
248426
+ return translated && translated !== key2 ? translated : fallback;
248427
+ }
248956
248428
  function registerCrossSlideAudio(element, src) {
248957
248429
  if (element.playAcrossSlides !== true || element.mediaType !== "audio" || !src) {
248958
248430
  return false;
@@ -250485,13 +249957,13 @@ var ThreeViewController = class {
250485
249957
  if (token2 !== this.token) {
250486
249958
  return;
250487
249959
  }
250488
- const host = three ? getThreeRendererHost(three) : null;
250489
- if (!three || !host || !host.available) {
249960
+ const host2 = three ? getThreeRendererHost(three) : null;
249961
+ if (!three || !host2 || !host2.available) {
250490
249962
  this.unmount();
250491
249963
  this.opts.onState("unavailable");
250492
249964
  return;
250493
249965
  }
250494
- this.host = host;
249966
+ this.host = host2;
250495
249967
  const factory = await loadThreeViewScene(spec2.kind);
250496
249968
  if (token2 !== this.token) {
250497
249969
  return;
@@ -250511,7 +249983,7 @@ var ThreeViewController = class {
250511
249983
  interactive: this.interactive,
250512
249984
  requestRender: () => {
250513
249985
  if (view) {
250514
- host.requestRender(view);
249986
+ host2.requestRender(view);
250515
249987
  }
250516
249988
  },
250517
249989
  emit: (event) => {
@@ -250540,7 +250012,7 @@ var ThreeViewController = class {
250540
250012
  if (this.textStyle) {
250541
250013
  scene.setTextStyle?.(this.textStyle);
250542
250014
  }
250543
- host.register(view);
250015
+ host2.register(view);
250544
250016
  this.opts.onState("ready");
250545
250017
  } catch (error) {
250546
250018
  if (token2 !== this.token) {
@@ -254006,6 +253478,986 @@ var EDITOR_THUMBNAIL_CSS = `
254006
253478
  }
254007
253479
  `;
254008
253480
  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;
253481
+ var ARRANGE_ALIGNMENT_ICONS = {
253482
+ "home.arrange.align.left": {
253483
+ attrs: {
253484
+ stroke: "currentColor",
253485
+ fill: "none",
253486
+ "stroke-width": "2",
253487
+ viewBox: "0 0 24 24",
253488
+ "stroke-linecap": "round",
253489
+ "stroke-linejoin": "round"
253490
+ },
253491
+ children: [
253492
+ { tag: "path", attrs: { d: "M15 12H3" } },
253493
+ { tag: "path", attrs: { d: "M17 18H3" } },
253494
+ { tag: "path", attrs: { d: "M21 6H3" } }
253495
+ ]
253496
+ },
253497
+ "home.arrange.align.center": {
253498
+ attrs: {
253499
+ stroke: "currentColor",
253500
+ fill: "none",
253501
+ "stroke-width": "2",
253502
+ viewBox: "0 0 24 24",
253503
+ "stroke-linecap": "round",
253504
+ "stroke-linejoin": "round"
253505
+ },
253506
+ children: [
253507
+ { tag: "path", attrs: { d: "M17 12H7" } },
253508
+ { tag: "path", attrs: { d: "M19 18H5" } },
253509
+ { tag: "path", attrs: { d: "M21 6H3" } }
253510
+ ]
253511
+ },
253512
+ "home.arrange.align.right": {
253513
+ attrs: {
253514
+ stroke: "currentColor",
253515
+ fill: "none",
253516
+ "stroke-width": "2",
253517
+ viewBox: "0 0 24 24",
253518
+ "stroke-linecap": "round",
253519
+ "stroke-linejoin": "round"
253520
+ },
253521
+ children: [
253522
+ { tag: "path", attrs: { d: "M21 12H9" } },
253523
+ { tag: "path", attrs: { d: "M21 18H7" } },
253524
+ { tag: "path", attrs: { d: "M21 6H3" } }
253525
+ ]
253526
+ },
253527
+ "home.arrange.align.top": {
253528
+ attrs: {
253529
+ stroke: "currentColor",
253530
+ fill: "none",
253531
+ "stroke-width": "2",
253532
+ viewBox: "0 0 24 24",
253533
+ "stroke-linecap": "round",
253534
+ "stroke-linejoin": "round"
253535
+ },
253536
+ children: [{ tag: "path", attrs: { d: "m18 15-6-6-6 6" } }]
253537
+ },
253538
+ "home.arrange.align.middle": {
253539
+ attrs: {
253540
+ style: "rotate: 90deg; transform-origin: center;",
253541
+ stroke: "currentColor",
253542
+ fill: "none",
253543
+ "stroke-width": "2",
253544
+ viewBox: "0 0 24 24",
253545
+ "stroke-linecap": "round",
253546
+ "stroke-linejoin": "round"
253547
+ },
253548
+ children: [
253549
+ { tag: "path", attrs: { d: "M17 12H7" } },
253550
+ { tag: "path", attrs: { d: "M19 18H5" } },
253551
+ { tag: "path", attrs: { d: "M21 6H3" } }
253552
+ ]
253553
+ },
253554
+ "home.arrange.align.bottom": {
253555
+ attrs: {
253556
+ stroke: "currentColor",
253557
+ fill: "none",
253558
+ "stroke-width": "2",
253559
+ viewBox: "0 0 24 24",
253560
+ "stroke-linecap": "round",
253561
+ "stroke-linejoin": "round"
253562
+ },
253563
+ children: [{ tag: "path", attrs: { d: "m6 9 6 6 6-6" } }]
253564
+ },
253565
+ "home.arrange.distribute.horizontal": {
253566
+ attrs: {
253567
+ stroke: "currentColor",
253568
+ fill: "none",
253569
+ "stroke-width": "2",
253570
+ viewBox: "0 0 24 24",
253571
+ "stroke-linecap": "round",
253572
+ "stroke-linejoin": "round"
253573
+ },
253574
+ children: [
253575
+ { tag: "rect", attrs: { width: "6", height: "10", x: "9", y: "7", rx: "2" } },
253576
+ { tag: "path", attrs: { d: "M4 22V2" } },
253577
+ { tag: "path", attrs: { d: "M20 22V2" } }
253578
+ ]
253579
+ },
253580
+ "home.arrange.distribute.vertical": {
253581
+ attrs: {
253582
+ stroke: "currentColor",
253583
+ fill: "none",
253584
+ "stroke-width": "2",
253585
+ viewBox: "0 0 24 24",
253586
+ "stroke-linecap": "round",
253587
+ "stroke-linejoin": "round"
253588
+ },
253589
+ children: [
253590
+ { tag: "rect", attrs: { width: "10", height: "6", x: "7", y: "9", rx: "2" } },
253591
+ { tag: "path", attrs: { d: "M22 20H2" } },
253592
+ { tag: "path", attrs: { d: "M22 4H2" } }
253593
+ ]
253594
+ }
253595
+ };
253596
+ var ARRANGE_OPERATIONS_ICONS = {
253597
+ "home.arrange.group": {
253598
+ attrs: {
253599
+ stroke: "currentColor",
253600
+ fill: "none",
253601
+ "stroke-width": "2",
253602
+ viewBox: "0 0 24 24",
253603
+ "stroke-linecap": "round",
253604
+ "stroke-linejoin": "round"
253605
+ },
253606
+ children: [
253607
+ { tag: "path", attrs: { d: "M3 7V5c0-1.1.9-2 2-2h2" } },
253608
+ { tag: "path", attrs: { d: "M17 3h2c1.1 0 2 .9 2 2v2" } },
253609
+ { tag: "path", attrs: { d: "M21 17v2c0 1.1-.9 2-2 2h-2" } },
253610
+ { tag: "path", attrs: { d: "M7 21H5c-1.1 0-2-.9-2-2v-2" } },
253611
+ { tag: "rect", attrs: { width: "7", height: "5", x: "7", y: "7", rx: "1" } },
253612
+ { tag: "rect", attrs: { width: "7", height: "5", x: "10", y: "12", rx: "1" } }
253613
+ ]
253614
+ },
253615
+ "home.arrange.ungroup": {
253616
+ attrs: {
253617
+ stroke: "currentColor",
253618
+ fill: "none",
253619
+ "stroke-width": "2",
253620
+ viewBox: "0 0 24 24",
253621
+ "stroke-linecap": "round",
253622
+ "stroke-linejoin": "round"
253623
+ },
253624
+ children: [
253625
+ { tag: "rect", attrs: { width: "8", height: "6", x: "5", y: "4", rx: "1" } },
253626
+ { tag: "rect", attrs: { width: "8", height: "6", x: "11", y: "14", rx: "1" } }
253627
+ ]
253628
+ },
253629
+ "home.arrange.mergeShapes": {
253630
+ attrs: {
253631
+ stroke: "currentColor",
253632
+ fill: "none",
253633
+ "stroke-width": "2",
253634
+ viewBox: "0 0 24 24",
253635
+ "stroke-linecap": "round",
253636
+ "stroke-linejoin": "round"
253637
+ },
253638
+ children: [
253639
+ { tag: "path", attrs: { d: "M10 18H5a3 3 0 0 1-3-3v-1" } },
253640
+ { tag: "path", attrs: { d: "M14 2a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2" } },
253641
+ { tag: "path", attrs: { d: "M20 2a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2" } },
253642
+ { tag: "path", attrs: { d: "m7 21 3-3-3-3" } },
253643
+ { tag: "rect", attrs: { x: "14", y: "14", width: "8", height: "8", rx: "2" } },
253644
+ { tag: "rect", attrs: { x: "2", y: "2", width: "8", height: "8", rx: "2" } }
253645
+ ]
253646
+ },
253647
+ "home.arrange.crop": {
253648
+ attrs: {
253649
+ stroke: "currentColor",
253650
+ fill: "none",
253651
+ "stroke-width": "2",
253652
+ viewBox: "0 0 24 24",
253653
+ "stroke-linecap": "round",
253654
+ "stroke-linejoin": "round"
253655
+ },
253656
+ children: [
253657
+ { tag: "path", attrs: { d: "M6 2v14a2 2 0 0 0 2 2h14" } },
253658
+ { tag: "path", attrs: { d: "M18 22V8a2 2 0 0 0-2-2H2" } }
253659
+ ]
253660
+ },
253661
+ "home.arrange.sendBackward": {
253662
+ attrs: {
253663
+ stroke: "currentColor",
253664
+ fill: "none",
253665
+ "stroke-width": "2",
253666
+ viewBox: "0 0 24 24",
253667
+ "stroke-linecap": "round",
253668
+ "stroke-linejoin": "round"
253669
+ },
253670
+ children: [{ tag: "path", attrs: { d: "m6 9 6 6 6-6" } }]
253671
+ },
253672
+ "home.arrange.bringForward": {
253673
+ attrs: {
253674
+ stroke: "currentColor",
253675
+ fill: "none",
253676
+ "stroke-width": "2",
253677
+ viewBox: "0 0 24 24",
253678
+ "stroke-linecap": "round",
253679
+ "stroke-linejoin": "round"
253680
+ },
253681
+ children: [{ tag: "path", attrs: { d: "m18 15-6-6-6 6" } }]
253682
+ },
253683
+ "home.arrange.duplicate": {
253684
+ attrs: {
253685
+ stroke: "currentColor",
253686
+ fill: "none",
253687
+ "stroke-width": "2",
253688
+ viewBox: "0 0 24 24",
253689
+ "stroke-linecap": "round",
253690
+ "stroke-linejoin": "round"
253691
+ },
253692
+ children: [
253693
+ { tag: "rect", attrs: { width: "14", height: "14", x: "8", y: "8", rx: "2", ry: "2" } },
253694
+ { tag: "path", attrs: { d: "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2" } }
253695
+ ]
253696
+ },
253697
+ "home.arrange.delete": {
253698
+ attrs: {
253699
+ stroke: "currentColor",
253700
+ fill: "none",
253701
+ "stroke-width": "2",
253702
+ viewBox: "0 0 24 24",
253703
+ "stroke-linecap": "round",
253704
+ "stroke-linejoin": "round"
253705
+ },
253706
+ children: [
253707
+ { tag: "path", attrs: { d: "M3 6h18" } },
253708
+ { tag: "path", attrs: { d: "M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6" } },
253709
+ { tag: "path", attrs: { d: "M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2" } },
253710
+ { tag: "line", attrs: { x1: "10", x2: "10", y1: "11", y2: "17" } },
253711
+ { tag: "line", attrs: { x1: "14", x2: "14", y1: "11", y2: "17" } }
253712
+ ]
253713
+ }
253714
+ };
253715
+ var CLIPBOARD_ICONS = {
253716
+ "home.clipboard.paste": {
253717
+ attrs: {
253718
+ stroke: "currentColor",
253719
+ fill: "none",
253720
+ "stroke-width": "2",
253721
+ viewBox: "0 0 24 24",
253722
+ "stroke-linecap": "round",
253723
+ "stroke-linejoin": "round"
253724
+ },
253725
+ children: [
253726
+ {
253727
+ tag: "path",
253728
+ attrs: { d: "M15 2H9a1 1 0 0 0-1 1v2c0 .6.4 1 1 1h6c.6 0 1-.4 1-1V3c0-.6-.4-1-1-1Z" }
253729
+ },
253730
+ {
253731
+ tag: "path",
253732
+ attrs: {
253733
+ d: "M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2M16 4h2a2 2 0 0 1 2 2v2M11 14h10"
253734
+ }
253735
+ },
253736
+ { tag: "path", attrs: { d: "m17 10 4 4-4 4" } }
253737
+ ]
253738
+ },
253739
+ "home.clipboard.cut": {
253740
+ attrs: {
253741
+ stroke: "currentColor",
253742
+ fill: "none",
253743
+ "stroke-width": "2",
253744
+ viewBox: "0 0 24 24",
253745
+ "stroke-linecap": "round",
253746
+ "stroke-linejoin": "round"
253747
+ },
253748
+ children: [
253749
+ { tag: "circle", attrs: { cx: "6", cy: "6", r: "3" } },
253750
+ { tag: "path", attrs: { d: "M8.12 8.12 12 12" } },
253751
+ { tag: "path", attrs: { d: "M20 4 8.12 15.88" } },
253752
+ { tag: "circle", attrs: { cx: "6", cy: "18", r: "3" } },
253753
+ { tag: "path", attrs: { d: "M14.8 14.8 20 20" } }
253754
+ ]
253755
+ },
253756
+ "home.clipboard.copy": {
253757
+ attrs: {
253758
+ stroke: "currentColor",
253759
+ fill: "none",
253760
+ "stroke-width": "2",
253761
+ viewBox: "0 0 24 24",
253762
+ "stroke-linecap": "round",
253763
+ "stroke-linejoin": "round"
253764
+ },
253765
+ children: [
253766
+ { tag: "rect", attrs: { width: "14", height: "14", x: "8", y: "8", rx: "2", ry: "2" } },
253767
+ { tag: "path", attrs: { d: "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2" } }
253768
+ ]
253769
+ },
253770
+ "home.clipboard.formatPainter": {
253771
+ attrs: {
253772
+ stroke: "currentColor",
253773
+ fill: "none",
253774
+ "stroke-width": "2",
253775
+ viewBox: "0 0 24 24",
253776
+ "stroke-linecap": "round",
253777
+ "stroke-linejoin": "round"
253778
+ },
253779
+ children: [
253780
+ { tag: "path", attrs: { d: "m14.622 17.897-10.68-2.913" } },
253781
+ {
253782
+ tag: "path",
253783
+ attrs: {
253784
+ d: "M18.376 2.622a1 1 0 1 1 3.002 3.002L17.36 9.643a.5.5 0 0 0 0 .707l.944.944a2.41 2.41 0 0 1 0 3.408l-.944.944a.5.5 0 0 1-.707 0L8.354 7.348a.5.5 0 0 1 0-.707l.944-.944a2.41 2.41 0 0 1 3.408 0l.944.944a.5.5 0 0 0 .707 0z"
253785
+ }
253786
+ },
253787
+ {
253788
+ tag: "path",
253789
+ attrs: {
253790
+ d: "M9 8c-1.804 2.71-3.97 3.46-6.583 3.948a.507.507 0 0 0-.302.819l7.32 8.883a1 1 0 0 0 1.185.204C12.735 20.405 16 16.792 16 15"
253791
+ }
253792
+ }
253793
+ ]
253794
+ }
253795
+ };
253796
+ var DRAWING_ICONS = {
253797
+ "home.drawing.shapes": {
253798
+ attrs: {
253799
+ stroke: "currentColor",
253800
+ fill: "none",
253801
+ "stroke-width": "2",
253802
+ viewBox: "0 0 24 24",
253803
+ "stroke-linecap": "round",
253804
+ "stroke-linejoin": "round"
253805
+ },
253806
+ children: [
253807
+ {
253808
+ tag: "path",
253809
+ attrs: {
253810
+ d: "M8.3 10a.7.7 0 0 1-.626-1.079L11.4 3a.7.7 0 0 1 1.198-.043L16.3 8.9a.7.7 0 0 1-.572 1.1Z"
253811
+ }
253812
+ },
253813
+ { tag: "rect", attrs: { x: "3", y: "14", width: "7", height: "7", rx: "1" } },
253814
+ { tag: "circle", attrs: { cx: "17.5", cy: "17.5", r: "3.5" } }
253815
+ ]
253816
+ },
253817
+ "home.drawing.arrange": {
253818
+ attrs: {
253819
+ stroke: "currentColor",
253820
+ fill: "none",
253821
+ "stroke-width": "2",
253822
+ viewBox: "0 0 24 24",
253823
+ "stroke-linecap": "round",
253824
+ "stroke-linejoin": "round"
253825
+ },
253826
+ children: [
253827
+ {
253828
+ tag: "path",
253829
+ attrs: {
253830
+ d: "m12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83Z"
253831
+ }
253832
+ },
253833
+ { tag: "path", attrs: { d: "m22 17.65-9.17 4.16a2 2 0 0 1-1.66 0L2 17.65" } },
253834
+ { tag: "path", attrs: { d: "m22 12.65-9.17 4.16a2 2 0 0 1-1.66 0L2 12.65" } }
253835
+ ]
253836
+ },
253837
+ "home.drawing.shapeFill": {
253838
+ attrs: {
253839
+ stroke: "currentColor",
253840
+ fill: "none",
253841
+ "stroke-width": "2",
253842
+ viewBox: "0 0 24 24",
253843
+ "stroke-linecap": "round",
253844
+ "stroke-linejoin": "round"
253845
+ },
253846
+ children: [
253847
+ {
253848
+ tag: "path",
253849
+ attrs: { d: "m19 11-8-8-8.6 8.6a2 2 0 0 0 0 2.8l5.2 5.2c.8.8 2 .8 2.8 0L19 11Z" }
253850
+ },
253851
+ { tag: "path", attrs: { d: "m5 2 5 5" } },
253852
+ { tag: "path", attrs: { d: "M2 13h15" } },
253853
+ { tag: "path", attrs: { d: "M22 20a2 2 0 1 1-4 0c0-1.6 1.7-2.4 2-4 .3 1.6 2 2.4 2 4Z" } }
253854
+ ]
253855
+ },
253856
+ "home.drawing.shapeOutline": {
253857
+ attrs: {
253858
+ stroke: "currentColor",
253859
+ fill: "none",
253860
+ "stroke-width": "2",
253861
+ viewBox: "0 0 24 24",
253862
+ "stroke-linecap": "round",
253863
+ "stroke-linejoin": "round"
253864
+ },
253865
+ children: [
253866
+ { tag: "path", attrs: { d: "M12 20h9" } },
253867
+ {
253868
+ tag: "path",
253869
+ attrs: {
253870
+ d: "M16.376 3.622a1 1 0 0 1 3.002 3.002L7.368 18.635a2 2 0 0 1-.855.506l-2.872.838a.5.5 0 0 1-.62-.62l.838-2.872a2 2 0 0 1 .506-.854z"
253871
+ }
253872
+ }
253873
+ ]
253874
+ },
253875
+ "home.drawing.quickStyles": {
253876
+ attrs: {
253877
+ stroke: "currentColor",
253878
+ fill: "none",
253879
+ "stroke-width": "2",
253880
+ viewBox: "0 0 24 24",
253881
+ "stroke-linecap": "round",
253882
+ "stroke-linejoin": "round"
253883
+ },
253884
+ children: [
253885
+ { tag: "circle", attrs: { cx: "13.5", cy: "6.5", r: ".5", fill: "currentColor" } },
253886
+ { tag: "circle", attrs: { cx: "17.5", cy: "10.5", r: ".5", fill: "currentColor" } },
253887
+ { tag: "circle", attrs: { cx: "8.5", cy: "7.5", r: ".5", fill: "currentColor" } },
253888
+ { tag: "circle", attrs: { cx: "6.5", cy: "12.5", r: ".5", fill: "currentColor" } },
253889
+ {
253890
+ tag: "path",
253891
+ attrs: {
253892
+ d: "M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10c.926 0 1.648-.746 1.648-1.688 0-.437-.18-.835-.437-1.125-.29-.289-.438-.652-.438-1.125a1.64 1.64 0 0 1 1.668-1.668h1.996c3.051 0 5.555-2.503 5.555-5.554C21.965 6.012 17.461 2 12 2z"
253893
+ }
253894
+ }
253895
+ ]
253896
+ },
253897
+ "home.drawing.shapeEffects": {
253898
+ attrs: {
253899
+ stroke: "currentColor",
253900
+ fill: "none",
253901
+ "stroke-width": "2",
253902
+ viewBox: "0 0 24 24",
253903
+ "stroke-linecap": "round",
253904
+ "stroke-linejoin": "round"
253905
+ },
253906
+ children: [
253907
+ {
253908
+ tag: "path",
253909
+ attrs: {
253910
+ d: "M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z"
253911
+ }
253912
+ },
253913
+ { tag: "path", attrs: { d: "M20 3v4" } },
253914
+ { tag: "path", attrs: { d: "M22 5h-4" } },
253915
+ { tag: "path", attrs: { d: "M4 17v2" } },
253916
+ { tag: "path", attrs: { d: "M5 18H3" } }
253917
+ ]
253918
+ }
253919
+ };
253920
+ var EDITING_ICONS = {
253921
+ "home.editing.find": {
253922
+ attrs: {
253923
+ stroke: "currentColor",
253924
+ fill: "none",
253925
+ "stroke-width": "2",
253926
+ viewBox: "0 0 24 24",
253927
+ "stroke-linecap": "round",
253928
+ "stroke-linejoin": "round"
253929
+ },
253930
+ children: [
253931
+ { tag: "circle", attrs: { cx: "11", cy: "11", r: "8" } },
253932
+ { tag: "path", attrs: { d: "m21 21-4.3-4.3" } }
253933
+ ]
253934
+ },
253935
+ "home.editing.replace": {
253936
+ attrs: {
253937
+ stroke: "currentColor",
253938
+ fill: "none",
253939
+ "stroke-width": "2",
253940
+ viewBox: "0 0 24 24",
253941
+ "stroke-linecap": "round",
253942
+ "stroke-linejoin": "round"
253943
+ },
253944
+ children: [
253945
+ { tag: "path", attrs: { d: "M14 4a2 2 0 0 1 2-2" } },
253946
+ { tag: "path", attrs: { d: "M16 10a2 2 0 0 1-2-2" } },
253947
+ { tag: "path", attrs: { d: "M20 2a2 2 0 0 1 2 2" } },
253948
+ { tag: "path", attrs: { d: "M22 8a2 2 0 0 1-2 2" } },
253949
+ { tag: "path", attrs: { d: "m3 7 3 3 3-3" } },
253950
+ { tag: "path", attrs: { d: "M6 10V5a3 3 0 0 1 3-3h1" } },
253951
+ { tag: "rect", attrs: { x: "2", y: "14", width: "8", height: "8", rx: "2" } }
253952
+ ]
253953
+ },
253954
+ "home.editing.select": {
253955
+ attrs: {
253956
+ stroke: "currentColor",
253957
+ fill: "none",
253958
+ "stroke-width": "2",
253959
+ viewBox: "0 0 24 24",
253960
+ "stroke-linecap": "round",
253961
+ "stroke-linejoin": "round"
253962
+ },
253963
+ children: [
253964
+ {
253965
+ tag: "path",
253966
+ attrs: {
253967
+ d: "M4.037 4.688a.495.495 0 0 1 .651-.651l16 6.5a.5.5 0 0 1-.063.947l-6.124 1.58a2 2 0 0 0-1.438 1.435l-1.579 6.126a.5.5 0 0 1-.947.063z"
253968
+ }
253969
+ }
253970
+ ]
253971
+ }
253972
+ };
253973
+ var FONT_ICONS = {
253974
+ "home.font.bold": {
253975
+ attrs: {
253976
+ stroke: "currentColor",
253977
+ fill: "none",
253978
+ "stroke-width": "2",
253979
+ viewBox: "0 0 24 24",
253980
+ "stroke-linecap": "round",
253981
+ "stroke-linejoin": "round"
253982
+ },
253983
+ children: [
253984
+ {
253985
+ tag: "path",
253986
+ attrs: { d: "M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8" }
253987
+ }
253988
+ ]
253989
+ },
253990
+ "home.font.italic": {
253991
+ attrs: {
253992
+ stroke: "currentColor",
253993
+ fill: "none",
253994
+ "stroke-width": "2",
253995
+ viewBox: "0 0 24 24",
253996
+ "stroke-linecap": "round",
253997
+ "stroke-linejoin": "round"
253998
+ },
253999
+ children: [
254000
+ { tag: "line", attrs: { x1: "19", x2: "10", y1: "4", y2: "4" } },
254001
+ { tag: "line", attrs: { x1: "14", x2: "5", y1: "20", y2: "20" } },
254002
+ { tag: "line", attrs: { x1: "15", x2: "9", y1: "4", y2: "20" } }
254003
+ ]
254004
+ },
254005
+ "home.font.underline": {
254006
+ attrs: {
254007
+ stroke: "currentColor",
254008
+ fill: "none",
254009
+ "stroke-width": "2",
254010
+ viewBox: "0 0 24 24",
254011
+ "stroke-linecap": "round",
254012
+ "stroke-linejoin": "round"
254013
+ },
254014
+ children: [
254015
+ { tag: "path", attrs: { d: "M6 4v6a6 6 0 0 0 12 0V4" } },
254016
+ { tag: "line", attrs: { x1: "4", x2: "20", y1: "20", y2: "20" } }
254017
+ ]
254018
+ },
254019
+ "home.font.strikethrough": {
254020
+ attrs: {
254021
+ stroke: "currentColor",
254022
+ fill: "none",
254023
+ "stroke-width": "2",
254024
+ viewBox: "0 0 24 24",
254025
+ "stroke-linecap": "round",
254026
+ "stroke-linejoin": "round"
254027
+ },
254028
+ children: [
254029
+ { tag: "path", attrs: { d: "M16 4H9a3 3 0 0 0-2.83 4" } },
254030
+ { tag: "path", attrs: { d: "M14 12a4 4 0 0 1 0 8H6" } },
254031
+ { tag: "line", attrs: { x1: "4", x2: "20", y1: "12", y2: "12" } }
254032
+ ]
254033
+ },
254034
+ "home.font.shadow": {
254035
+ attrs: { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2" },
254036
+ children: [
254037
+ {
254038
+ tag: "text",
254039
+ attrs: {
254040
+ x: "6",
254041
+ y: "17",
254042
+ "font-size": "16",
254043
+ "font-weight": "bold",
254044
+ fill: "currentColor",
254045
+ stroke: "none"
254046
+ },
254047
+ text: "S"
254048
+ },
254049
+ {
254050
+ tag: "text",
254051
+ attrs: {
254052
+ x: "7.5",
254053
+ y: "18.5",
254054
+ "font-size": "16",
254055
+ "font-weight": "bold",
254056
+ fill: "none",
254057
+ stroke: "currentColor",
254058
+ "stroke-width": "0.5",
254059
+ opacity: "0.4"
254060
+ },
254061
+ text: "S"
254062
+ }
254063
+ ]
254064
+ },
254065
+ "home.font.increaseFontSize": {
254066
+ attrs: {
254067
+ stroke: "currentColor",
254068
+ fill: "none",
254069
+ "stroke-width": "2",
254070
+ viewBox: "0 0 24 24",
254071
+ "stroke-linecap": "round",
254072
+ "stroke-linejoin": "round"
254073
+ },
254074
+ children: [
254075
+ { tag: "path", attrs: { d: "M3.5 13h6" } },
254076
+ { tag: "path", attrs: { d: "m2 16 4.5-9 4.5 9" } },
254077
+ { tag: "path", attrs: { d: "M18 16V7" } },
254078
+ { tag: "path", attrs: { d: "m14 11 4-4 4 4" } }
254079
+ ]
254080
+ },
254081
+ "home.font.decreaseFontSize": {
254082
+ attrs: {
254083
+ stroke: "currentColor",
254084
+ fill: "none",
254085
+ "stroke-width": "2",
254086
+ viewBox: "0 0 24 24",
254087
+ "stroke-linecap": "round",
254088
+ "stroke-linejoin": "round"
254089
+ },
254090
+ children: [
254091
+ { tag: "path", attrs: { d: "M3.5 13h6" } },
254092
+ { tag: "path", attrs: { d: "m2 16 4.5-9 4.5 9" } },
254093
+ { tag: "path", attrs: { d: "M18 7v9" } },
254094
+ { tag: "path", attrs: { d: "m14 12 4 4 4-4" } }
254095
+ ]
254096
+ },
254097
+ "home.font.clearFormatting": {
254098
+ attrs: {
254099
+ stroke: "currentColor",
254100
+ fill: "none",
254101
+ "stroke-width": "2",
254102
+ viewBox: "0 0 24 24",
254103
+ "stroke-linecap": "round",
254104
+ "stroke-linejoin": "round"
254105
+ },
254106
+ children: [
254107
+ { tag: "path", attrs: { d: "M4 7V4h16v3" } },
254108
+ { tag: "path", attrs: { d: "M5 20h6" } },
254109
+ { tag: "path", attrs: { d: "M13 4 8 20" } },
254110
+ { tag: "path", attrs: { d: "m15 15 5 5" } },
254111
+ { tag: "path", attrs: { d: "m20 15-5 5" } }
254112
+ ]
254113
+ },
254114
+ "home.font.characterSpacing": {
254115
+ attrs: { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "1.5" },
254116
+ children: [
254117
+ {
254118
+ tag: "text",
254119
+ attrs: {
254120
+ x: "4",
254121
+ y: "16",
254122
+ "font-size": "11",
254123
+ "font-weight": "bold",
254124
+ fill: "currentColor",
254125
+ stroke: "none"
254126
+ },
254127
+ text: "AV"
254128
+ },
254129
+ { tag: "path", attrs: { d: "M3 20 L1 20 M3 20 L5 20", "stroke-width": "1.5" } },
254130
+ { tag: "path", attrs: { d: "M21 20 L19 20 M21 20 L23 20", "stroke-width": "1.5" } }
254131
+ ]
254132
+ },
254133
+ "home.font.changeCase": {
254134
+ attrs: { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "1.5" },
254135
+ children: [
254136
+ {
254137
+ tag: "text",
254138
+ attrs: {
254139
+ x: "2",
254140
+ y: "16",
254141
+ "font-size": "13",
254142
+ "font-weight": "bold",
254143
+ fill: "currentColor",
254144
+ stroke: "none"
254145
+ },
254146
+ text: "Aa"
254147
+ }
254148
+ ]
254149
+ },
254150
+ "home.font.fontColor": {
254151
+ attrs: {
254152
+ viewBox: "0 0 24 24",
254153
+ fill: "none",
254154
+ stroke: "currentColor",
254155
+ "stroke-width": "2",
254156
+ "stroke-linecap": "round",
254157
+ "stroke-linejoin": "round"
254158
+ },
254159
+ children: [{ tag: "path", attrs: { d: "M6 20h12M9.5 4h5L18 16H6L9.5 4z" } }]
254160
+ },
254161
+ "home.font.highlightColor": {
254162
+ attrs: {
254163
+ stroke: "currentColor",
254164
+ fill: "none",
254165
+ "stroke-width": "2",
254166
+ viewBox: "0 0 24 24",
254167
+ "stroke-linecap": "round",
254168
+ "stroke-linejoin": "round"
254169
+ },
254170
+ children: [
254171
+ { tag: "path", attrs: { d: "m9 11-6 6v3h9l3-3" } },
254172
+ { tag: "path", attrs: { d: "m22 12-4.6 4.6a2 2 0 0 1-2.8 0l-5.2-5.2a2 2 0 0 1 0-2.8L14 4" } }
254173
+ ]
254174
+ }
254175
+ };
254176
+ var PARAGRAPH_ICONS = {
254177
+ "home.paragraph.bullets": {
254178
+ attrs: {
254179
+ stroke: "currentColor",
254180
+ fill: "none",
254181
+ "stroke-width": "2",
254182
+ viewBox: "0 0 24 24",
254183
+ "stroke-linecap": "round",
254184
+ "stroke-linejoin": "round"
254185
+ },
254186
+ children: [
254187
+ { tag: "path", attrs: { d: "M3 12h.01" } },
254188
+ { tag: "path", attrs: { d: "M3 18h.01" } },
254189
+ { tag: "path", attrs: { d: "M3 6h.01" } },
254190
+ { tag: "path", attrs: { d: "M8 12h13" } },
254191
+ { tag: "path", attrs: { d: "M8 18h13" } },
254192
+ { tag: "path", attrs: { d: "M8 6h13" } }
254193
+ ]
254194
+ },
254195
+ "home.paragraph.numbering": {
254196
+ attrs: {
254197
+ stroke: "currentColor",
254198
+ fill: "none",
254199
+ "stroke-width": "2",
254200
+ viewBox: "0 0 24 24",
254201
+ "stroke-linecap": "round",
254202
+ "stroke-linejoin": "round"
254203
+ },
254204
+ children: [
254205
+ { tag: "path", attrs: { d: "M10 12h11" } },
254206
+ { tag: "path", attrs: { d: "M10 18h11" } },
254207
+ { tag: "path", attrs: { d: "M10 6h11" } },
254208
+ { tag: "path", attrs: { d: "M4 10h2" } },
254209
+ { tag: "path", attrs: { d: "M4 6h1v4" } },
254210
+ { tag: "path", attrs: { d: "M6 18H4c0-1 2-2 2-3s-1-1.5-2-1" } }
254211
+ ]
254212
+ },
254213
+ "home.paragraph.decreaseIndent": {
254214
+ attrs: {
254215
+ stroke: "currentColor",
254216
+ fill: "none",
254217
+ "stroke-width": "2",
254218
+ viewBox: "0 0 24 24",
254219
+ "stroke-linecap": "round",
254220
+ "stroke-linejoin": "round"
254221
+ },
254222
+ children: [
254223
+ { tag: "path", attrs: { d: "M21 12H11" } },
254224
+ { tag: "path", attrs: { d: "M21 18H11" } },
254225
+ { tag: "path", attrs: { d: "M21 6H11" } },
254226
+ { tag: "path", attrs: { d: "m7 8-4 4 4 4" } }
254227
+ ]
254228
+ },
254229
+ "home.paragraph.increaseIndent": {
254230
+ attrs: {
254231
+ stroke: "currentColor",
254232
+ fill: "none",
254233
+ "stroke-width": "2",
254234
+ viewBox: "0 0 24 24",
254235
+ "stroke-linecap": "round",
254236
+ "stroke-linejoin": "round"
254237
+ },
254238
+ children: [
254239
+ { tag: "path", attrs: { d: "M21 12H11" } },
254240
+ { tag: "path", attrs: { d: "M21 18H11" } },
254241
+ { tag: "path", attrs: { d: "M21 6H11" } },
254242
+ { tag: "path", attrs: { d: "m3 8 4 4-4 4" } }
254243
+ ]
254244
+ },
254245
+ "home.paragraph.alignLeft": {
254246
+ attrs: {
254247
+ stroke: "currentColor",
254248
+ fill: "none",
254249
+ "stroke-width": "2",
254250
+ viewBox: "0 0 24 24",
254251
+ "stroke-linecap": "round",
254252
+ "stroke-linejoin": "round"
254253
+ },
254254
+ children: [
254255
+ { tag: "path", attrs: { d: "M15 12H3" } },
254256
+ { tag: "path", attrs: { d: "M17 18H3" } },
254257
+ { tag: "path", attrs: { d: "M21 6H3" } }
254258
+ ]
254259
+ },
254260
+ "home.paragraph.alignCenter": {
254261
+ attrs: {
254262
+ stroke: "currentColor",
254263
+ fill: "none",
254264
+ "stroke-width": "2",
254265
+ viewBox: "0 0 24 24",
254266
+ "stroke-linecap": "round",
254267
+ "stroke-linejoin": "round"
254268
+ },
254269
+ children: [
254270
+ { tag: "path", attrs: { d: "M17 12H7" } },
254271
+ { tag: "path", attrs: { d: "M19 18H5" } },
254272
+ { tag: "path", attrs: { d: "M21 6H3" } }
254273
+ ]
254274
+ },
254275
+ "home.paragraph.alignRight": {
254276
+ attrs: {
254277
+ stroke: "currentColor",
254278
+ fill: "none",
254279
+ "stroke-width": "2",
254280
+ viewBox: "0 0 24 24",
254281
+ "stroke-linecap": "round",
254282
+ "stroke-linejoin": "round"
254283
+ },
254284
+ children: [
254285
+ { tag: "path", attrs: { d: "M21 12H9" } },
254286
+ { tag: "path", attrs: { d: "M21 18H7" } },
254287
+ { tag: "path", attrs: { d: "M21 6H3" } }
254288
+ ]
254289
+ },
254290
+ "home.paragraph.justify": {
254291
+ attrs: {
254292
+ stroke: "currentColor",
254293
+ fill: "none",
254294
+ "stroke-width": "2",
254295
+ viewBox: "0 0 24 24",
254296
+ "stroke-linecap": "round",
254297
+ "stroke-linejoin": "round"
254298
+ },
254299
+ children: [
254300
+ { tag: "path", attrs: { d: "M3 12h18" } },
254301
+ { tag: "path", attrs: { d: "M3 18h18" } },
254302
+ { tag: "path", attrs: { d: "M3 6h18" } }
254303
+ ]
254304
+ },
254305
+ "home.paragraph.lineSpacing": {
254306
+ attrs: { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2" },
254307
+ children: [
254308
+ { tag: "line", attrs: { x1: "5", y1: "5", x2: "19", y2: "5" } },
254309
+ { tag: "line", attrs: { x1: "5", y1: "12", x2: "19", y2: "12" } },
254310
+ { tag: "line", attrs: { x1: "5", y1: "19", x2: "19", y2: "19" } },
254311
+ { tag: "path", attrs: { d: "M2 8 L2 3 M2 3 L3.5 4.5 M2 3 L0.5 4.5" } },
254312
+ { tag: "path", attrs: { d: "M2 16 L2 21 M2 21 L3.5 19.5 M2 21 L0.5 19.5" } }
254313
+ ]
254314
+ },
254315
+ "home.paragraph.textDirection": {
254316
+ attrs: { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2" },
254317
+ children: [
254318
+ {
254319
+ tag: "text",
254320
+ attrs: { x: "3", y: "16", "font-size": "12", fill: "currentColor", stroke: "none" },
254321
+ text: "A"
254322
+ },
254323
+ { tag: "path", attrs: { d: "M18 6 C21 6 21 10 18 10" } },
254324
+ { tag: "path", attrs: { d: "M18 10 L19.5 8.5 M18 10 L16.5 8.5" } }
254325
+ ]
254326
+ },
254327
+ "home.paragraph.columns": {
254328
+ attrs: {
254329
+ stroke: "currentColor",
254330
+ fill: "none",
254331
+ "stroke-width": "2",
254332
+ viewBox: "0 0 24 24",
254333
+ "stroke-linecap": "round",
254334
+ "stroke-linejoin": "round"
254335
+ },
254336
+ children: [
254337
+ { tag: "rect", attrs: { width: "18", height: "18", x: "3", y: "3", rx: "2" } },
254338
+ { tag: "path", attrs: { d: "M9 3v18" } },
254339
+ { tag: "path", attrs: { d: "M15 3v18" } }
254340
+ ]
254341
+ }
254342
+ };
254343
+ var SLIDES_ICONS = {
254344
+ "home.slides.newSlide": {
254345
+ attrs: {
254346
+ stroke: "currentColor",
254347
+ fill: "none",
254348
+ "stroke-width": "2",
254349
+ viewBox: "0 0 24 24",
254350
+ "stroke-linecap": "round",
254351
+ "stroke-linejoin": "round"
254352
+ },
254353
+ children: [
254354
+ { tag: "path", attrs: { d: "M5 12h14" } },
254355
+ { tag: "path", attrs: { d: "M12 5v14" } }
254356
+ ]
254357
+ },
254358
+ "home.slides.slideTemplates": {
254359
+ attrs: {
254360
+ stroke: "currentColor",
254361
+ fill: "none",
254362
+ "stroke-width": "2",
254363
+ viewBox: "0 0 24 24",
254364
+ "stroke-linecap": "round",
254365
+ "stroke-linejoin": "round"
254366
+ },
254367
+ children: [
254368
+ { tag: "rect", attrs: { width: "18", height: "7", x: "3", y: "3", rx: "1" } },
254369
+ { tag: "rect", attrs: { width: "9", height: "7", x: "3", y: "14", rx: "1" } },
254370
+ { tag: "rect", attrs: { width: "5", height: "7", x: "16", y: "14", rx: "1" } }
254371
+ ]
254372
+ },
254373
+ "home.slides.layout": {
254374
+ attrs: {
254375
+ stroke: "currentColor",
254376
+ fill: "none",
254377
+ "stroke-width": "2",
254378
+ viewBox: "0 0 24 24",
254379
+ "stroke-linecap": "round",
254380
+ "stroke-linejoin": "round"
254381
+ },
254382
+ children: [
254383
+ { tag: "rect", attrs: { width: "7", height: "7", x: "3", y: "3", rx: "1" } },
254384
+ { tag: "rect", attrs: { width: "7", height: "7", x: "14", y: "3", rx: "1" } },
254385
+ { tag: "rect", attrs: { width: "7", height: "7", x: "14", y: "14", rx: "1" } },
254386
+ { tag: "rect", attrs: { width: "7", height: "7", x: "3", y: "14", rx: "1" } }
254387
+ ]
254388
+ },
254389
+ "home.slides.reset": {
254390
+ attrs: {
254391
+ stroke: "currentColor",
254392
+ fill: "none",
254393
+ "stroke-width": "2",
254394
+ viewBox: "0 0 24 24",
254395
+ "stroke-linecap": "round",
254396
+ "stroke-linejoin": "round"
254397
+ },
254398
+ children: [
254399
+ { tag: "path", attrs: { d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8" } },
254400
+ { tag: "path", attrs: { d: "M3 3v5h5" } }
254401
+ ]
254402
+ },
254403
+ "home.slides.section": {
254404
+ attrs: {
254405
+ stroke: "currentColor",
254406
+ fill: "none",
254407
+ "stroke-width": "2",
254408
+ viewBox: "0 0 24 24",
254409
+ "stroke-linecap": "round",
254410
+ "stroke-linejoin": "round"
254411
+ },
254412
+ children: [
254413
+ { tag: "path", attrs: { d: "M12 10v6" } },
254414
+ { tag: "path", attrs: { d: "M9 13h6" } },
254415
+ {
254416
+ tag: "path",
254417
+ attrs: {
254418
+ d: "M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z"
254419
+ }
254420
+ }
254421
+ ]
254422
+ }
254423
+ };
254424
+ var RIBBON_CONTROL_ICONS = {
254425
+ ...CLIPBOARD_ICONS,
254426
+ ...SLIDES_ICONS,
254427
+ ...FONT_ICONS,
254428
+ ...PARAGRAPH_ICONS,
254429
+ ...EDITING_ICONS,
254430
+ ...DRAWING_ICONS,
254431
+ ...ARRANGE_ALIGNMENT_ICONS,
254432
+ ...ARRANGE_OPERATIONS_ICONS
254433
+ };
254434
+ function createRibbonControlIcon(doc, name) {
254435
+ const artwork = RIBBON_CONTROL_ICONS[name];
254436
+ if (!artwork) {
254437
+ throw new Error(`Unknown ribbon icon: ${name}`);
254438
+ }
254439
+ const svg = doc.createElementNS("http://www.w3.org/2000/svg", "svg");
254440
+ for (const [key2, value] of Object.entries(artwork.attrs)) {
254441
+ svg.setAttribute(key2, value);
254442
+ }
254443
+ function append2(parent, nodes) {
254444
+ for (const node of nodes) {
254445
+ const element = doc.createElementNS(svg.namespaceURI, node.tag);
254446
+ for (const [key2, value] of Object.entries(node.attrs)) {
254447
+ element.setAttribute(key2, value);
254448
+ }
254449
+ if (node.text) {
254450
+ element.textContent = node.text;
254451
+ }
254452
+ if (node.children) {
254453
+ append2(element, node.children);
254454
+ }
254455
+ parent.append(element);
254456
+ }
254457
+ }
254458
+ append2(svg, artwork.children);
254459
+ return svg;
254460
+ }
254009
254461
  var THEME_EDITOR_LABEL_KEYS = [
254010
254462
  "title",
254011
254463
  "close",
@@ -254062,6 +254514,1284 @@ function themeEditorHex(value) {
254062
254514
  const hex22 = value?.startsWith("#") ? value : `#${value ?? ""}`;
254063
254515
  return /^#[\da-f]{6}$/iu.test(hex22) ? hex22 : "#000000";
254064
254516
  }
254517
+ var host = "pptx-ui-ribbon-gallery";
254518
+ var CSS2 = `
254519
+ ${host} { display:inline-flex; position:relative; flex:none; color:var(--pptx-foreground,#f9fafb); }
254520
+ ${host} .gallery-view { display:contents; }
254521
+ ${host} button { box-sizing:border-box; font:inherit; color:inherit; cursor:pointer; border:1px solid var(--pptx-border,#374151); border-radius:4px; background:var(--pptx-background,#111827); }
254522
+ ${host} button:hover:not(:disabled) { background:var(--pptx-accent,#33334d); }
254523
+ ${host} button:disabled { opacity:.4; cursor:not-allowed; }
254524
+ ${host} button:focus-visible { outline:2px solid var(--pptx-ring,#6366f1); outline-offset:2px; }
254525
+ ${host} .trigger { display:inline-flex; align-items:center; gap:6px; min-height:26px; padding:4px 8px; font-size:11px; white-space:nowrap; }
254526
+ ${host} .trigger svg { width:16px; height:16px; fill:none; stroke:currentColor; stroke-width:1.6; stroke-linecap:round; stroke-linejoin:round; }
254527
+ ${host}[mode=inline] .trigger, ${host}[chevron-only] .trigger { align-self:stretch; padding:0 4px; }
254528
+ ${host} .strip { display:flex; gap:2px; padding:2px; align-items:center; }
254529
+ ${host} .tile { display:inline-flex; align-items:center; justify-content:center; flex:none; padding:2px; }
254530
+ ${host} .tile[aria-pressed=true] { border:2px solid var(--pptx-primary,#6366f1); background:color-mix(in srgb,var(--pptx-primary,#6366f1) 15%,var(--pptx-background,#111827)); }
254531
+ ${host} .tile svg { max-width:100%; max-height:100%; }
254532
+ ${host} .popup { box-sizing:border-box; position:fixed; z-index:1200; max-width:calc(100vw - 16px); max-height:65vh; overflow:auto; padding:8px; border:1px solid var(--pptx-border,#374151); border-radius:6px; background:var(--pptx-popover,#111827); color:var(--pptx-popover-foreground,#f9fafb); box-shadow:0 8px 24px #0006; }
254533
+ ${host} .popup[hidden] { display:none; }
254534
+ ${host} .grid { display:grid; gap:4px; width:max-content; max-width:100%; }
254535
+ ${host} .heading { margin:4px 0 6px; font-size:11px; font-weight:600; }
254536
+ ${host} .section + .section { margin-top:10px; }
254537
+ @media (pointer:coarse), (max-width:1023px) {
254538
+ ${host} .trigger, ${host} .tile { min-height:44px; min-width:44px; }
254539
+ ${host} .popup { max-height:60vh; }
254540
+ }
254541
+ @media (forced-colors:active) {
254542
+ ${host} button, ${host} .popup { color:ButtonText; background:Canvas; border-color:ButtonText; }
254543
+ ${host} button:disabled { color:GrayText; opacity:1; }
254544
+ ${host} button:focus-visible, ${host} .tile[aria-pressed=true] { outline:2px solid Highlight; border-color:Highlight; }
254545
+ }
254546
+ `;
254547
+ function attachRibbonGalleryStyles(doc) {
254548
+ if (!doc.getElementById("pptx-ui-gallery-styles")) {
254549
+ const style = doc.createElement("style");
254550
+ style.id = "pptx-ui-gallery-styles";
254551
+ style.textContent = CSS2;
254552
+ doc.head.append(style);
254553
+ }
254554
+ }
254555
+ function createRibbonGalleryView(doc, pick, toggle2) {
254556
+ const root = doc.createElement("span");
254557
+ root.className = "gallery-view";
254558
+ const strip3 = doc.createElement("div");
254559
+ strip3.className = "strip";
254560
+ const trigger = doc.createElement("button");
254561
+ trigger.type = "button";
254562
+ trigger.className = "trigger";
254563
+ trigger.setAttribute("data-pptx-compact", "");
254564
+ trigger.setAttribute("aria-haspopup", "dialog");
254565
+ trigger.addEventListener("click", toggle2);
254566
+ const popup = doc.createElement("div");
254567
+ popup.className = "popup";
254568
+ popup.hidden = true;
254569
+ popup.setAttribute("role", "dialog");
254570
+ root.append(strip3, trigger);
254571
+ const caption = (t, key2, fallback) => {
254572
+ const translated = t(key2);
254573
+ return translated && translated !== key2 ? translated : fallback;
254574
+ };
254575
+ const tile4 = (item3, width, height, disabled, t) => {
254576
+ const button = doc.createElement("button");
254577
+ button.type = "button";
254578
+ button.className = "tile";
254579
+ button.setAttribute("data-pptx-compact", "");
254580
+ button.dataset.galleryItem = item3.id;
254581
+ button.disabled = disabled;
254582
+ button.setAttribute("aria-pressed", String(item3.applied));
254583
+ button.setAttribute("aria-label", galleryItemLabel(item3, t));
254584
+ button.title = galleryItemLabel(item3, t);
254585
+ button.style.width = `${width + 6}px`;
254586
+ button.style.height = `${height + 6}px`;
254587
+ button.innerHTML = item3.previewSvg;
254588
+ button.addEventListener("click", () => pick(item3.id));
254589
+ return button;
254590
+ };
254591
+ return {
254592
+ root,
254593
+ trigger,
254594
+ popup,
254595
+ clear() {
254596
+ strip3.replaceChildren();
254597
+ popup.replaceChildren();
254598
+ trigger.removeAttribute("data-ribbon-gallery");
254599
+ trigger.removeAttribute("aria-label");
254600
+ trigger.textContent = "";
254601
+ },
254602
+ setOpen(open) {
254603
+ popup.hidden = !open;
254604
+ if (open) {
254605
+ root.append(popup);
254606
+ } else {
254607
+ popup.remove();
254608
+ }
254609
+ },
254610
+ paint(descriptor, t, disabled, inline, chevronOnly, icon, open, controlId) {
254611
+ const title = caption(t, descriptor.labelKey, descriptor.label);
254612
+ trigger.dataset.ribbonGallery = descriptor.id;
254613
+ popup.dataset.ribbonGalleryPopup = descriptor.id;
254614
+ const more = t("pptx.gallery.more", { name: title });
254615
+ trigger.title = inline ? more === "pptx.gallery.more" ? `More ${title}` : more : title;
254616
+ trigger.setAttribute("aria-label", trigger.title);
254617
+ trigger.disabled = disabled;
254618
+ trigger.replaceChildren();
254619
+ if (!inline && !chevronOnly) {
254620
+ const svg = controlId && RIBBON_CONTROL_ICONS[controlId] ? createRibbonControlIcon(doc, controlId) : doc.createElementNS("http://www.w3.org/2000/svg", "svg");
254621
+ if (!svg.hasAttribute("viewBox")) {
254622
+ svg.setAttribute("viewBox", "0 0 20 20");
254623
+ }
254624
+ svg.setAttribute("aria-hidden", "true");
254625
+ const path = doc.createElementNS(svg.namespaceURI, "path");
254626
+ path.setAttribute("d", RIBBON_ICON_PATHS[icon] ?? RIBBON_ICON_PATHS.palette);
254627
+ if (!svg.childElementCount) {
254628
+ svg.append(path);
254629
+ }
254630
+ const label = doc.createElement("span");
254631
+ label.textContent = title;
254632
+ trigger.append(svg, label);
254633
+ }
254634
+ const chevron2 = doc.createElement("span");
254635
+ chevron2.textContent = "\u2304";
254636
+ chevron2.setAttribute("aria-hidden", "true");
254637
+ trigger.append(chevron2);
254638
+ strip3.hidden = !inline;
254639
+ strip3.style.display = inline ? "" : "none";
254640
+ strip3.replaceChildren(
254641
+ ...inline ? inlineGalleryItems(descriptor).map(
254642
+ (item3) => tile4(
254643
+ item3,
254644
+ descriptor.sections[0]?.tileWidth ?? 40,
254645
+ descriptor.sections[0]?.tileHeight ?? 30,
254646
+ disabled,
254647
+ t
254648
+ )
254649
+ ) : []
254650
+ );
254651
+ popup.setAttribute("aria-label", title);
254652
+ popup.replaceChildren(
254653
+ ...(open ? descriptor.sections : []).map((section) => {
254654
+ const container = doc.createElement("section");
254655
+ container.className = "section";
254656
+ if (section.titleKey || section.title) {
254657
+ const heading = doc.createElement("div");
254658
+ heading.className = "heading";
254659
+ heading.textContent = section.titleKey ? caption(t, section.titleKey, section.title ?? "") : section.title ?? "";
254660
+ container.append(heading);
254661
+ }
254662
+ const grid = doc.createElement("div");
254663
+ grid.className = "grid";
254664
+ grid.style.gridTemplateColumns = `repeat(${section.columns}, minmax(0, 1fr))`;
254665
+ grid.append(
254666
+ ...section.items.map(
254667
+ (item3) => tile4(item3, section.tileWidth, section.tileHeight, disabled, t)
254668
+ )
254669
+ );
254670
+ container.append(grid);
254671
+ return container;
254672
+ })
254673
+ );
254674
+ }
254675
+ };
254676
+ }
254677
+ function definePptxRibbonGallery(registry) {
254678
+ if (registry.get("pptx-ui-ribbon-gallery")) {
254679
+ return;
254680
+ }
254681
+ class RibbonGallery extends HTMLElement {
254682
+ static observedAttributes = ["mode", "chevron-only", "icon", "data-ribbon-control"];
254683
+ value;
254684
+ t = (key2) => key2;
254685
+ locked = false;
254686
+ opened = false;
254687
+ view;
254688
+ constructor() {
254689
+ super();
254690
+ this.view = createRibbonGalleryView(
254691
+ this.ownerDocument,
254692
+ (itemId) => this.pick(itemId),
254693
+ () => {
254694
+ this.open = !this.open;
254695
+ }
254696
+ );
254697
+ this.view.root.addEventListener("keydown", (event) => {
254698
+ if (event.key === "Escape" && this.open) {
254699
+ event.stopPropagation();
254700
+ event.preventDefault();
254701
+ this.close();
254702
+ this.view.trigger.focus();
254703
+ }
254704
+ if (event.key === "ArrowDown" && event.target === this.view.trigger) {
254705
+ event.stopPropagation();
254706
+ event.preventDefault();
254707
+ this.open = true;
254708
+ this.view.popup.querySelector("button:not(:disabled)")?.focus();
254709
+ }
254710
+ if (event.key === "Enter" || event.key === " ") {
254711
+ event.stopPropagation();
254712
+ }
254713
+ });
254714
+ }
254715
+ get descriptor() {
254716
+ return this.value;
254717
+ }
254718
+ set descriptor(value) {
254719
+ this.value = value;
254720
+ this.paint();
254721
+ }
254722
+ get trigger() {
254723
+ return this.view.trigger;
254724
+ }
254725
+ get popup() {
254726
+ return this.view.popup;
254727
+ }
254728
+ get translateLabel() {
254729
+ return this.t;
254730
+ }
254731
+ set translateLabel(value) {
254732
+ this.t = value;
254733
+ this.paint();
254734
+ }
254735
+ get disabled() {
254736
+ return this.locked;
254737
+ }
254738
+ set disabled(value) {
254739
+ this.locked = Boolean(value);
254740
+ this.paint();
254741
+ }
254742
+ get open() {
254743
+ return this.opened;
254744
+ }
254745
+ set open(value) {
254746
+ const next = Boolean(value) && !this.unavailable();
254747
+ if (next === this.opened) {
254748
+ return;
254749
+ }
254750
+ this.opened = next;
254751
+ this.view.setOpen(next);
254752
+ this.paint();
254753
+ this.view.trigger.setAttribute("aria-expanded", String(next));
254754
+ this.cleanup();
254755
+ if (next && this.isConnected) {
254756
+ this.ownerDocument.addEventListener("pointerdown", this.outside, true);
254757
+ this.ownerDocument.addEventListener("keydown", this.escape);
254758
+ this.ownerDocument.defaultView?.addEventListener("resize", this.position);
254759
+ this.ownerDocument.addEventListener("scroll", this.position, true);
254760
+ this.position();
254761
+ }
254762
+ }
254763
+ close() {
254764
+ this.open = false;
254765
+ }
254766
+ connectedCallback() {
254767
+ attachRibbonGalleryStyles(this.ownerDocument);
254768
+ this.append(this.view.root);
254769
+ this.paint();
254770
+ }
254771
+ disconnectedCallback() {
254772
+ this.close();
254773
+ this.cleanup();
254774
+ }
254775
+ attributeChangedCallback() {
254776
+ this.paint();
254777
+ }
254778
+ unavailable() {
254779
+ return this.locked || !this.value || this.value.disabled || !galleryHasItems(this.value);
254780
+ }
254781
+ paint() {
254782
+ if (!this.value) {
254783
+ this.close();
254784
+ this.view.clear();
254785
+ this.view.trigger.disabled = true;
254786
+ return;
254787
+ }
254788
+ const hadFocus = this.contains(this.ownerDocument.activeElement);
254789
+ if (this.view.root.parentElement !== this) {
254790
+ this.append(this.view.root);
254791
+ }
254792
+ const focusedId = this.ownerDocument.activeElement?.getAttribute("data-gallery-item");
254793
+ const focusInPopup = this.view.popup.contains(this.ownerDocument.activeElement);
254794
+ this.view.paint(
254795
+ this.value,
254796
+ this.t,
254797
+ this.unavailable(),
254798
+ this.getAttribute("mode") === "inline" && !this.hasAttribute("chevron-only"),
254799
+ this.hasAttribute("chevron-only"),
254800
+ this.getAttribute("icon") ?? "palette",
254801
+ this.open,
254802
+ this.getAttribute("data-ribbon-control") ?? void 0
254803
+ );
254804
+ this.view.trigger.setAttribute("aria-expanded", String(this.open));
254805
+ if (this.unavailable()) {
254806
+ this.close();
254807
+ }
254808
+ if (this.open) {
254809
+ this.position();
254810
+ }
254811
+ if (focusedId && hadFocus) {
254812
+ (focusInPopup ? this.view.popup : this).querySelector(`[data-gallery-item="${CSS.escape(focusedId)}"]`)?.focus();
254813
+ }
254814
+ }
254815
+ pick(itemId) {
254816
+ if (this.unavailable() || !this.value?.sections.some((section) => section.items.some((item3) => item3.id === itemId))) {
254817
+ return;
254818
+ }
254819
+ this.close();
254820
+ this.view.trigger.focus();
254821
+ this.dispatchEvent(
254822
+ new CustomEvent("gallery-pick", {
254823
+ detail: { gallery: this.value.id, itemId },
254824
+ bubbles: true,
254825
+ composed: true
254826
+ })
254827
+ );
254828
+ }
254829
+ outside = (event) => {
254830
+ if (!event.composedPath().includes(this)) {
254831
+ this.close();
254832
+ }
254833
+ };
254834
+ escape = (event) => {
254835
+ if (event.key === "Escape") {
254836
+ event.stopPropagation();
254837
+ this.close();
254838
+ this.view.trigger.focus();
254839
+ }
254840
+ };
254841
+ position = () => {
254842
+ const window2 = this.ownerDocument.defaultView;
254843
+ if (!window2) {
254844
+ return;
254845
+ }
254846
+ const anchor = this.view.trigger.getBoundingClientRect();
254847
+ const width = this.view.popup.getBoundingClientRect().width;
254848
+ this.view.popup.style.left = `${Math.max(8, Math.min(anchor.left, window2.innerWidth - width - 8))}px`;
254849
+ this.view.popup.style.top = `${Math.max(8, Math.min(anchor.bottom + 4, window2.innerHeight - this.view.popup.getBoundingClientRect().height - 8))}px`;
254850
+ };
254851
+ cleanup() {
254852
+ this.ownerDocument.removeEventListener("pointerdown", this.outside, true);
254853
+ this.ownerDocument.removeEventListener("keydown", this.escape);
254854
+ this.ownerDocument.defaultView?.removeEventListener("resize", this.position);
254855
+ this.ownerDocument.removeEventListener("scroll", this.position, true);
254856
+ }
254857
+ }
254858
+ registry.define("pptx-ui-ribbon-gallery", RibbonGallery);
254859
+ }
254860
+ var STYLES = `
254861
+ :host { display: inline-flex; flex: none; align-self: stretch; }
254862
+ .group { box-sizing: border-box; display: flex; flex-direction: column; justify-content: space-between;
254863
+ min-height: 78px; padding: 4px 8px 2px; border-right: 1px solid color-mix(in srgb, var(--pptx-border, #33334d) 60%, transparent); }
254864
+ :host(:last-child) .group { border-right: 0; }
254865
+ .row { display: flex; align-items: flex-start; gap: 4px; }
254866
+ ::slotted(*) { flex-shrink: 0; }
254867
+ .caption { padding-top: 2px; color: var(--pptx-muted-foreground, #94a3b8); font: inherit;
254868
+ font-size: 9px; line-height: 12px; text-align: center; white-space: nowrap; }
254869
+ `;
254870
+ function definePptxRibbonGroup(registry) {
254871
+ if (registry.get("pptx-ui-ribbon-group")) {
254872
+ return;
254873
+ }
254874
+ class RibbonGroup extends HTMLElement {
254875
+ static observedAttributes = ["label"];
254876
+ caption;
254877
+ constructor() {
254878
+ super();
254879
+ const root = this.attachShadow({ mode: "open" });
254880
+ attachControlStyles(root, STYLES);
254881
+ const group2 = document.createElement("div");
254882
+ group2.className = "group";
254883
+ const row = document.createElement("div");
254884
+ row.className = "row";
254885
+ row.append(document.createElement("slot"));
254886
+ this.caption = document.createElement("span");
254887
+ this.caption.className = "caption";
254888
+ group2.append(row, this.caption);
254889
+ root.append(group2);
254890
+ }
254891
+ connectedCallback() {
254892
+ this.setAttribute("role", "group");
254893
+ this.sync();
254894
+ }
254895
+ attributeChangedCallback() {
254896
+ this.sync();
254897
+ }
254898
+ sync() {
254899
+ const label = this.getAttribute("label") ?? "";
254900
+ this.caption.textContent = label;
254901
+ this.setAttribute("aria-label", label);
254902
+ }
254903
+ }
254904
+ registry.define("pptx-ui-ribbon-group", RibbonGroup);
254905
+ }
254906
+ function setBoolean2(el, name, value) {
254907
+ el.toggleAttribute(name, Boolean(value));
254908
+ }
254909
+ function setOptionalBoolean(el, name, value) {
254910
+ if (value === void 0) {
254911
+ el.removeAttribute(name);
254912
+ } else {
254913
+ el.setAttribute(name, String(value));
254914
+ }
254915
+ }
254916
+ function syncCommand(el, command) {
254917
+ el.setAttribute("data-ribbon-control", command.id);
254918
+ el.setAttribute("label", command.label);
254919
+ el.setAttribute("title", command.title ?? command.label);
254920
+ el.setAttribute("icon", command.icon);
254921
+ if (command.badge) {
254922
+ el.setAttribute("badge", String(command.badge));
254923
+ } else {
254924
+ el.removeAttribute("badge");
254925
+ }
254926
+ for (const attr22 of ["disabled", "active", "compact", "hidden"]) {
254927
+ setBoolean2(el, attr22, command[attr22]);
254928
+ }
254929
+ setOptionalBoolean(el, "pressed", command.pressed);
254930
+ setOptionalBoolean(el, "expanded", command.expanded);
254931
+ }
254932
+ function createRibbonSectionView(root) {
254933
+ const groups = /* @__PURE__ */ new Map();
254934
+ const commands = /* @__PURE__ */ new Map();
254935
+ return (model) => {
254936
+ const wantedGroups = new Set(model.map((group2) => group2.id));
254937
+ const wantedCommands = new Set(
254938
+ model.flatMap((group2) => group2.commands.map((command) => command.id))
254939
+ );
254940
+ for (const [id, el] of commands) {
254941
+ if (!wantedCommands.has(id)) {
254942
+ el.remove();
254943
+ commands.delete(id);
254944
+ }
254945
+ }
254946
+ for (const [id, group2] of groups) {
254947
+ if (!wantedGroups.has(id)) {
254948
+ group2.el.remove();
254949
+ groups.delete(id);
254950
+ }
254951
+ }
254952
+ for (const [index, group2] of model.entries()) {
254953
+ let node = groups.get(group2.id);
254954
+ if (!node) {
254955
+ node = { el: root.ownerDocument.createElement("pptx-ui-ribbon-group"), columns: /* @__PURE__ */ new Map() };
254956
+ groups.set(group2.id, node);
254957
+ }
254958
+ node.el.setAttribute("data-ribbon-group", group2.id);
254959
+ node.el.setAttribute("label", group2.label);
254960
+ if (root.children[index] !== node.el) {
254961
+ root.insertBefore(node.el, root.children[index] ?? null);
254962
+ }
254963
+ const offsets2 = /* @__PURE__ */ new Map();
254964
+ for (const command of group2.commands) {
254965
+ let parent = node.el;
254966
+ if (command.column !== void 0) {
254967
+ let column = node.columns.get(command.column);
254968
+ if (!column) {
254969
+ column = root.ownerDocument.createElement("div");
254970
+ Object.assign(column.style, { display: "flex", flexDirection: "column", gap: "2px" });
254971
+ node.columns.set(command.column, column);
254972
+ node.el.append(column);
254973
+ }
254974
+ parent = column;
254975
+ }
254976
+ let el = commands.get(command.id);
254977
+ if (!el) {
254978
+ el = root.ownerDocument.createElement("pptx-ui-ribbon-command");
254979
+ commands.set(command.id, el);
254980
+ }
254981
+ syncCommand(el, command);
254982
+ const offset = offsets2.get(parent) ?? 0;
254983
+ if (parent.children[offset] !== el) {
254984
+ parent.insertBefore(el, parent.children[offset] ?? null);
254985
+ }
254986
+ offsets2.set(parent, offset + 1);
254987
+ }
254988
+ }
254989
+ };
254990
+ }
254991
+ function definePptxRibbonSection(registry) {
254992
+ if (registry.get("pptx-ui-ribbon-section")) {
254993
+ return;
254994
+ }
254995
+ class RibbonSection extends HTMLElement {
254996
+ model = [];
254997
+ render = createRibbonSectionView(this);
254998
+ get groups() {
254999
+ return this.model;
255000
+ }
255001
+ set groups(value) {
255002
+ this.model = value;
255003
+ this.render(value);
255004
+ }
255005
+ connectedCallback() {
255006
+ this.style.display = "inline-flex";
255007
+ this.style.alignItems = "stretch";
255008
+ this.render(this.model);
255009
+ }
255010
+ }
255011
+ registry.define("pptx-ui-ribbon-section", RibbonSection);
255012
+ }
255013
+ function definePptxRibbonToggle(registry) {
255014
+ if (registry.get("pptx-ui-ribbon-toggle")) {
255015
+ return;
255016
+ }
255017
+ class RibbonToggle extends HTMLElement {
255018
+ static observedAttributes = ["label", "checked", "disabled", "title"];
255019
+ checkbox;
255020
+ text;
255021
+ constructor() {
255022
+ super();
255023
+ const root = this.attachShadow({ mode: "open" });
255024
+ attachControlStyles(
255025
+ root,
255026
+ `
255027
+ :host { display: block; }
255028
+ label { display: flex; align-items: center; gap: 4px; min-height: 22px; padding: 0 4px;
255029
+ color: var(--pptx-foreground, #f9fafb); font: inherit; font-size: 10px; white-space: nowrap; cursor: pointer; }
255030
+ :host([disabled]) label { color: var(--pptx-muted-foreground, #9ca3af); cursor: not-allowed; }
255031
+ @media (pointer: coarse), (max-width: 767px) { label { min-height: 44px; font-size: 12px; } }
255032
+ `
255033
+ );
255034
+ const label = document.createElement("label");
255035
+ this.checkbox = document.createElement("pptx-ui-checkbox");
255036
+ this.text = document.createTextNode("");
255037
+ label.append(this.checkbox, this.text);
255038
+ label.addEventListener("click", (event) => {
255039
+ event.preventDefault();
255040
+ if (event.target !== this.checkbox) {
255041
+ this.checkbox.click();
255042
+ }
255043
+ });
255044
+ this.checkbox.addEventListener("input", (event) => event.stopPropagation());
255045
+ this.checkbox.addEventListener("change", (event) => {
255046
+ event.stopPropagation();
255047
+ const checked = this.checkbox.checked;
255048
+ this.sync();
255049
+ const id = this.getAttribute("data-ribbon-control");
255050
+ if (!this.hasAttribute("disabled") && id) {
255051
+ this.dispatchEvent(
255052
+ new CustomEvent("toggle-request", {
255053
+ detail: { id, checked },
255054
+ bubbles: true,
255055
+ composed: true
255056
+ })
255057
+ );
255058
+ }
255059
+ });
255060
+ root.append(label);
255061
+ }
255062
+ connectedCallback() {
255063
+ this.sync();
255064
+ }
255065
+ attributeChangedCallback() {
255066
+ this.sync();
255067
+ }
255068
+ sync() {
255069
+ const label = this.getAttribute("label") ?? "";
255070
+ this.text.textContent = label;
255071
+ this.checkbox.setAttribute("aria-label", label);
255072
+ this.checkbox.title = this.getAttribute("title") ?? label;
255073
+ this.checkbox.checked = this.hasAttribute("checked");
255074
+ this.checkbox.disabled = this.hasAttribute("disabled");
255075
+ }
255076
+ }
255077
+ registry.define("pptx-ui-ribbon-toggle", RibbonToggle);
255078
+ }
255079
+ var SEARCH_STYLES = `
255080
+ :host {
255081
+ display: flex;
255082
+ align-items: center;
255083
+ gap: 8px;
255084
+ box-sizing: border-box;
255085
+ width: 100%;
255086
+ height: 40px;
255087
+ padding: 0 12px;
255088
+ border: 1px solid var(--pptx-input, #374151);
255089
+ background: var(--pptx-card, #111827);
255090
+ color: var(--pptx-muted-foreground, #9ca3af);
255091
+ font: inherit;
255092
+ }
255093
+ :host(:focus-within) { border-color: var(--pptx-ring, #6366f1); }
255094
+ :host([variant="titlebar"]) {
255095
+ height: 28px;
255096
+ gap: 7px;
255097
+ padding-inline: 14px;
255098
+ border-color: var(--pptx-border, #374151);
255099
+ border-radius: 6px;
255100
+ background: var(--pptx-background, #030712);
255101
+ }
255102
+ :host([variant="titlebar"]:focus-within) {
255103
+ border-color: var(--pptx-ring, #6366f1);
255104
+ color: var(--pptx-foreground, #f3f4f6);
255105
+ }
255106
+ :host([disabled]) { opacity: .5; cursor: not-allowed; }
255107
+ svg { width: 16px; height: 16px; flex: none; }
255108
+ :host([variant="titlebar"]) svg { width: 14px; height: 14px; }
255109
+ input {
255110
+ min-width: 0;
255111
+ width: 100%;
255112
+ height: 100%;
255113
+ flex: 1;
255114
+ padding: 0;
255115
+ border: 0;
255116
+ outline: 0;
255117
+ background: transparent;
255118
+ color: var(--pptx-card-foreground, #f3f4f6);
255119
+ font: inherit;
255120
+ font-size: 13px;
255121
+ }
255122
+ :host([variant="titlebar"]) input {
255123
+ font-size: 11px;
255124
+ color: var(--pptx-foreground, #f3f4f6);
255125
+ }
255126
+ input::placeholder {
255127
+ color: var(--pptx-muted-foreground, #9ca3af);
255128
+ opacity: .8;
255129
+ }
255130
+ input::-webkit-search-cancel-button { display: none; }
255131
+ @media (forced-colors: active) {
255132
+ :host {
255133
+ border-color: CanvasText;
255134
+ background: Canvas;
255135
+ color: CanvasText;
255136
+ }
255137
+ :host(:focus-within) {
255138
+ outline: 2px solid Highlight;
255139
+ outline-offset: 2px;
255140
+ }
255141
+ input { color: CanvasText; }
255142
+ }
255143
+ `;
255144
+ var SEARCH_ICON = `<svg part="icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.35-4.35"/></svg>`;
255145
+ function definePptxSearchField(registry) {
255146
+ if (registry.get("pptx-ui-search")) {
255147
+ return;
255148
+ }
255149
+ class PptxSearchField extends HTMLElement {
255150
+ static observedAttributes = ["placeholder", "aria-label", "disabled", "value"];
255151
+ input;
255152
+ currentValue = "";
255153
+ constructor() {
255154
+ super();
255155
+ const root = this.attachShadow({ mode: "open", delegatesFocus: true });
255156
+ attachControlStyles(root, SEARCH_STYLES);
255157
+ const icon = document.createElement("template");
255158
+ icon.innerHTML = SEARCH_ICON;
255159
+ root.append(icon.content.cloneNode(true));
255160
+ this.input = document.createElement("input");
255161
+ this.input.type = "search";
255162
+ this.input.setAttribute("part", "input");
255163
+ this.input.addEventListener("input", (event) => {
255164
+ event.stopPropagation();
255165
+ this.currentValue = this.input.value;
255166
+ this.dispatchEvent(new Event("input", { bubbles: true, composed: true }));
255167
+ });
255168
+ this.input.addEventListener("change", (event) => {
255169
+ event.stopPropagation();
255170
+ this.dispatchEvent(new Event("change", { bubbles: true, composed: true }));
255171
+ });
255172
+ root.append(this.input);
255173
+ }
255174
+ connectedCallback() {
255175
+ this.sync();
255176
+ if (this.hasAttribute("value")) {
255177
+ this.value = this.getAttribute("value") ?? "";
255178
+ }
255179
+ }
255180
+ attributeChangedCallback(name) {
255181
+ if (name === "value") {
255182
+ this.value = this.getAttribute("value") ?? "";
255183
+ } else {
255184
+ this.sync();
255185
+ }
255186
+ }
255187
+ get value() {
255188
+ return this.currentValue;
255189
+ }
255190
+ set value(next) {
255191
+ this.currentValue = String(next ?? "");
255192
+ if (this.input.value !== this.currentValue) {
255193
+ this.input.value = this.currentValue;
255194
+ }
255195
+ }
255196
+ get disabled() {
255197
+ return this.hasAttribute("disabled");
255198
+ }
255199
+ set disabled(next) {
255200
+ this.toggleAttribute("disabled", Boolean(next));
255201
+ }
255202
+ focus(options) {
255203
+ this.input.focus(options);
255204
+ }
255205
+ select() {
255206
+ this.input.select();
255207
+ }
255208
+ sync() {
255209
+ this.input.placeholder = this.getAttribute("placeholder") ?? "";
255210
+ this.input.setAttribute(
255211
+ "aria-label",
255212
+ this.getAttribute("aria-label") ?? this.input.placeholder
255213
+ );
255214
+ this.input.disabled = this.hasAttribute("disabled");
255215
+ }
255216
+ }
255217
+ registry.define("pptx-ui-search", PptxSearchField);
255218
+ }
255219
+ var SELECT_OPTION_ATTRIBUTES = [
255220
+ "value",
255221
+ "disabled",
255222
+ "label",
255223
+ "selected",
255224
+ "hidden",
255225
+ "data-display-label",
255226
+ "data-description",
255227
+ "style"
255228
+ ];
255229
+ function collectSelectChoices(options) {
255230
+ return options.map((option) => {
255231
+ const group2 = option.parentElement instanceof HTMLOptGroupElement ? option.parentElement : null;
255232
+ return {
255233
+ value: option.value,
255234
+ label: option.label || option.textContent?.trim() || "",
255235
+ disabled: option.disabled || Boolean(group2?.disabled),
255236
+ hidden: Boolean(option.hidden) || Boolean(group2?.hidden),
255237
+ group: group2?.label ?? "",
255238
+ ...option.dataset.displayLabel ? { displayLabel: option.dataset.displayLabel } : {},
255239
+ ...option.dataset.description ? { description: option.dataset.description } : {},
255240
+ ...option.style.fontFamily ? { fontFamily: option.style.fontFamily } : {}
255241
+ };
255242
+ });
255243
+ }
255244
+ function renderSelectMenu(menu, choices2, value) {
255245
+ const menuItems = [];
255246
+ let previousGroup = "";
255247
+ choices2.forEach((choice, index) => {
255248
+ if (choice.hidden) {
255249
+ return;
255250
+ }
255251
+ if (choice.group && choice.group !== previousGroup) {
255252
+ const heading = document.createElement("div");
255253
+ heading.className = "group";
255254
+ heading.setAttribute("role", "presentation");
255255
+ heading.textContent = choice.group;
255256
+ menuItems.push(heading);
255257
+ }
255258
+ previousGroup = choice.group;
255259
+ const item3 = document.createElement("div");
255260
+ item3.className = "option";
255261
+ item3.setAttribute("role", "option");
255262
+ item3.setAttribute("aria-selected", String(choice.value === value));
255263
+ item3.setAttribute("aria-disabled", String(choice.disabled));
255264
+ item3.id = `${menu.id}-${index}`;
255265
+ item3.dataset.index = String(index);
255266
+ item3.textContent = choice.displayLabel ?? choice.label;
255267
+ if (choice.fontFamily) {
255268
+ item3.style.fontFamily = choice.fontFamily;
255269
+ }
255270
+ if (choice.description) {
255271
+ const description = document.createElement("span");
255272
+ description.className = "description";
255273
+ description.textContent = choice.description;
255274
+ item3.append(description);
255275
+ }
255276
+ menuItems.push(item3);
255277
+ });
255278
+ menu.replaceChildren(...menuItems);
255279
+ }
255280
+ function positionSelectMenu(menu, trigger) {
255281
+ const rect22 = trigger.getBoundingClientRect();
255282
+ const margin = 8;
255283
+ const gap = 4;
255284
+ const width = Math.max(0, window.innerWidth - margin * 2);
255285
+ const below = Math.max(0, window.innerHeight - rect22.bottom - gap - margin);
255286
+ const above = Math.max(0, rect22.top - gap - margin);
255287
+ menu.style.minWidth = `${Math.min(rect22.width, width)}px`;
255288
+ menu.style.maxWidth = `${width}px`;
255289
+ const heightCap = trigger.getRootNode() instanceof ShadowRoot && trigger.getRootNode().host.getAttribute("data-font-picker") === "family" ? 320 : 240;
255290
+ menu.style.maxHeight = `${heightCap}px`;
255291
+ const preferredHeight = menu.getBoundingClientRect().height;
255292
+ const flip = below < preferredHeight && above > below;
255293
+ menu.style.maxHeight = `${Math.min(heightCap, flip ? above : below)}px`;
255294
+ const { height, width: menuWidth } = menu.getBoundingClientRect();
255295
+ menu.style.top = `${Math.max(margin, flip ? rect22.top - gap - height : rect22.bottom + gap)}px`;
255296
+ menu.style.left = `${Math.max(margin, Math.min(rect22.left, window.innerWidth - menuWidth - margin))}px`;
255297
+ }
255298
+ function markSelectActive(menu, trigger, active2, open) {
255299
+ for (const item3 of menu.querySelectorAll("[data-index]")) {
255300
+ item3.toggleAttribute("data-active", Number(item3.dataset.index) === active2 && open);
255301
+ }
255302
+ if (open && active2 >= 0) {
255303
+ trigger.setAttribute("aria-activedescendant", `${menu.id}-${active2}`);
255304
+ }
255305
+ menu.querySelector("[data-active]")?.scrollIntoView?.({ block: "nearest" });
255306
+ }
255307
+ function nextSelectActive(choices2, active2, step) {
255308
+ for (let index = 0; index < choices2.length; index++) {
255309
+ active2 = (active2 + step + choices2.length) % choices2.length;
255310
+ if (!choices2[active2].disabled && !choices2[active2].hidden) {
255311
+ return active2;
255312
+ }
255313
+ }
255314
+ return active2;
255315
+ }
255316
+ var SELECT_RIBBON_STYLES = `
255317
+ :host([variant^="ribbon-"][disabled]) { opacity: .4; }
255318
+ :host([variant^="ribbon-"]) button {
255319
+ height: 28px; min-height: 28px; padding: 4px 8px; gap: 4px;
255320
+ border: 1px solid color-mix(in oklab, var(--pptx-border) 60%, transparent);
255321
+ border-radius: 3px; font-size: 12px; line-height: 18px;
255322
+ background: color-mix(in oklab, var(--pptx-background) 60%, transparent);
255323
+ color: var(--pptx-foreground);
255324
+ }
255325
+ :host([variant^="ribbon-"]) .value { flex: 1; min-width: 0; }
255326
+ :host([variant^="ribbon-"]) .chevron {
255327
+ width: 16px; height: 16px; margin: 0; border: 0; transform: none;
255328
+ }
255329
+ :host([variant^="ribbon-"]) .chevron svg { display: block; width: 16px; height: 16px; }
255330
+ :host([variant="ribbon-font"]) .chevron { color: var(--pptx-muted-foreground); }
255331
+ :host([variant="ribbon-font"][data-font-picker="size"]) button { padding-inline: 6px; }
255332
+ :host([variant="ribbon-icon"]) button {
255333
+ width: 36px; gap: 6px; padding: 6px 10px; border: 0; font-size: 12px; line-height: 16px;
255334
+ background: var(--pptx-muted); justify-content: center;
255335
+ }
255336
+ :host([variant="ribbon-icon"]) :is(.value, .chevron) { display: none; }
255337
+ ::slotted(svg[slot="icon"]) { display: block; width: 16px; height: 16px; flex: none; }
255338
+ :host([variant^="ribbon-"]) button:hover:not(:disabled) { background: var(--pptx-accent); }
255339
+ :host([variant^="ribbon-"]) .menu {
255340
+ width: 192px; padding: 4px 0; border-radius: 8px; font-size: 12px; line-height: 16px;
255341
+ }
255342
+ :host([data-font-picker="family"]) .menu { width: 256px; }
255343
+ :host([variant^="ribbon-"]) .option {
255344
+ display: flex; justify-content: space-between; gap: 12px; padding: 6px 12px; border-radius: 0;
255345
+ }
255346
+ :host([variant^="ribbon-"]) .option[aria-selected="true"] {
255347
+ background: transparent; color: var(--pptx-foreground);
255348
+ }
255349
+ :host([variant^="ribbon-"]) .option:hover,
255350
+ :host([variant^="ribbon-"]) .option[data-active] { background: var(--pptx-muted); filter: none; }
255351
+ :host([variant^="ribbon-"]) .group {
255352
+ padding: 8px 12px 4px; text-transform: uppercase; letter-spacing: .25px;
255353
+ font-size: 10px; line-height: 15px;
255354
+ }
255355
+ @media (max-width: 767px) {
255356
+ :host([variant^="ribbon-"]) button { height: 44px; min-height: 44px; }
255357
+ }
255358
+ .description { flex: none; color: var(--pptx-muted-foreground); font-size: 10px; line-height: 15px; }
255359
+ `;
255360
+ var SELECT_STYLES = `
255361
+ :host {
255362
+ display: inline-block;
255363
+ box-sizing: border-box;
255364
+ min-width: 0;
255365
+ max-width: 100%;
255366
+ border: 0 !important;
255367
+ padding: 0 !important;
255368
+ background: transparent !important;
255369
+ box-shadow: none !important;
255370
+ color: var(--pptx-foreground, #e2e8f0);
255371
+ font: inherit;
255372
+ font-size: 12px;
255373
+ vertical-align: middle;
255374
+ }
255375
+ :host([disabled]) { opacity: .5; cursor: not-allowed; }
255376
+ button {
255377
+ box-sizing: border-box;
255378
+ width: 100%;
255379
+ min-height: 28px;
255380
+ display: flex;
255381
+ align-items: center;
255382
+ justify-content: space-between;
255383
+ gap: 10px;
255384
+ padding: 4px 7px;
255385
+ border: 1px solid var(--pptx-border, #3f3f52);
255386
+ border-radius: 5px;
255387
+ background: var(--pptx-select-control-bg, var(--pptx-background, #11111b));
255388
+ color: inherit;
255389
+ font: inherit;
255390
+ font-size: inherit;
255391
+ text-align: left;
255392
+ cursor: pointer;
255393
+ }
255394
+ :host(.bg-muted) button { background: var(--pptx-muted, #1f2937); }
255395
+ :host(.bg-popover) button { background: var(--pptx-popover, #111827); }
255396
+ button:focus-visible {
255397
+ outline: 2px solid var(--pptx-ring, #6366f1);
255398
+ outline-offset: 2px;
255399
+ }
255400
+ button:disabled { cursor: not-allowed; }
255401
+ @media (pointer: coarse), (max-width: 767px) {
255402
+ button { min-height: 44px; }
255403
+ }
255404
+ .value {
255405
+ overflow: hidden;
255406
+ text-overflow: ellipsis;
255407
+ white-space: nowrap;
255408
+ }
255409
+ .chevron svg { display: none; }
255410
+ .chevron {
255411
+ flex: none;
255412
+ width: 6px;
255413
+ height: 6px;
255414
+ margin: 0 2px 3px 0;
255415
+ border-right: 1.5px solid currentColor;
255416
+ border-bottom: 1.5px solid currentColor;
255417
+ transform: rotate(45deg);
255418
+ }
255419
+ :host([open]) .chevron {
255420
+ margin: 3px 2px 0 0;
255421
+ transform: rotate(225deg);
255422
+ }
255423
+ .menu {
255424
+ box-sizing: border-box;
255425
+ position: fixed;
255426
+ margin: 0;
255427
+ padding: 4px;
255428
+ min-width: 90px;
255429
+ max-height: min(240px, 50vh);
255430
+ overflow: auto;
255431
+ border: 1px solid var(--pptx-border, #3f3f52);
255432
+ border-radius: 5px;
255433
+ background: var(--pptx-popover, var(--pptx-background, #11111b));
255434
+ color: var(--pptx-popover-foreground, var(--pptx-foreground, #e2e8f0));
255435
+ box-shadow: 0 8px 20px #0004;
255436
+ font: inherit;
255437
+ font-size: inherit;
255438
+ }
255439
+ .menu:not(:popover-open):not([data-fallback-open]) { display: none; }
255440
+ .option {
255441
+ display: block;
255442
+ box-sizing: border-box;
255443
+ width: 100%;
255444
+ padding: 6px 8px;
255445
+ border-radius: 3px;
255446
+ cursor: pointer;
255447
+ white-space: nowrap;
255448
+ }
255449
+ .group {
255450
+ padding: 7px 8px 3px;
255451
+ color: var(--pptx-muted-foreground, #9ca3af);
255452
+ font-size: .9em;
255453
+ font-weight: 600;
255454
+ }
255455
+ .option:not([aria-disabled="true"]):hover,
255456
+ .option[data-active]:not([aria-selected="true"]) {
255457
+ background: color-mix(in srgb, var(--pptx-primary, #e86a40) 20%, var(--pptx-popover, #11111b));
255458
+ }
255459
+ .option[aria-selected="true"] {
255460
+ background: var(--pptx-primary, #e86a40);
255461
+ color: var(--pptx-primary-foreground, #fff);
255462
+ }
255463
+ .option[aria-selected="true"]:hover { filter: brightness(1.08); }
255464
+ .option[aria-disabled="true"] { opacity: .45; cursor: not-allowed; }
255465
+ @media (forced-colors: active) {
255466
+ button, .menu {
255467
+ border-color: CanvasText;
255468
+ background: Canvas;
255469
+ color: CanvasText;
255470
+ }
255471
+ .option[aria-selected="true"],
255472
+ .option[data-active],
255473
+ .option:not([aria-disabled="true"]):hover {
255474
+ background: Highlight;
255475
+ color: HighlightText;
255476
+ }
255477
+ }
255478
+ ${SELECT_RIBBON_STYLES}
255479
+ `;
255480
+ function createSelectTrigger() {
255481
+ const trigger = document.createElement("button");
255482
+ trigger.type = "button";
255483
+ trigger.setAttribute("part", "trigger");
255484
+ trigger.setAttribute("role", "combobox");
255485
+ trigger.setAttribute("aria-haspopup", "listbox");
255486
+ trigger.setAttribute("aria-expanded", "false");
255487
+ const icon = document.createElement("slot");
255488
+ icon.name = "icon";
255489
+ const text22 = document.createElement("span");
255490
+ text22.className = "value";
255491
+ text22.setAttribute("part", "value");
255492
+ const chevron2 = document.createElement("span");
255493
+ chevron2.className = "chevron";
255494
+ chevron2.setAttribute("part", "indicator");
255495
+ chevron2.setAttribute("aria-hidden", "true");
255496
+ const svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
255497
+ svg.setAttribute("viewBox", "0 0 24 24");
255498
+ svg.setAttribute("fill", "none");
255499
+ svg.setAttribute("stroke", "currentColor");
255500
+ svg.setAttribute("stroke-width", "2");
255501
+ svg.setAttribute("stroke-linecap", "round");
255502
+ svg.setAttribute("stroke-linejoin", "round");
255503
+ const path = document.createElementNS(svg.namespaceURI, "path");
255504
+ path.setAttribute("d", "m6 9 6 6 6-6");
255505
+ svg.append(path);
255506
+ chevron2.append(svg);
255507
+ trigger.append(icon, text22, chevron2);
255508
+ return { trigger, text: text22 };
255509
+ }
255510
+ function prependSelectCustomSlot(host2, menu) {
255511
+ if (host2.querySelector('[slot="custom"]')) {
255512
+ const custom = document.createElement("slot");
255513
+ custom.name = "custom";
255514
+ menu.prepend(custom);
255515
+ }
255516
+ }
255517
+ function createSelectValueElement() {
255518
+ class SelectValueElement extends HTMLElement {
255519
+ get value() {
255520
+ const requested = this.getAttribute("value");
255521
+ const options = this.options;
255522
+ if (this.getAttribute("variant") === "ribbon-font" && requested !== null) {
255523
+ return requested;
255524
+ }
255525
+ if (requested !== null && (!options.length || options.some((option) => option.value === requested))) {
255526
+ return requested;
255527
+ }
255528
+ return options.find((option) => option.selected)?.value ?? options.find(
255529
+ (option) => !option.disabled && !option.closest("optgroup[disabled]") && !option.hidden
255530
+ )?.value ?? options[0]?.value ?? requested ?? "";
255531
+ }
255532
+ set value(next) {
255533
+ this.setAttribute("value", String(next ?? ""));
255534
+ }
255535
+ get options() {
255536
+ return [...this.querySelectorAll("option")];
255537
+ }
255538
+ get selectedIndex() {
255539
+ return this.options.findIndex((option) => option.value === this.value);
255540
+ }
255541
+ set selectedIndex(index) {
255542
+ this.value = this.options[index]?.value ?? "";
255543
+ }
255544
+ }
255545
+ return SelectValueElement;
255546
+ }
255547
+ var nextSelectId = 0;
255548
+ function definePptxSelect(registry) {
255549
+ if (registry.get("pptx-ui-select")) {
255550
+ return;
255551
+ }
255552
+ class PptxSelect extends createSelectValueElement() {
255553
+ static formAssociated = true;
255554
+ static observedAttributes = ["value", "disabled", "aria-label"];
255555
+ internals;
255556
+ trigger;
255557
+ text;
255558
+ menu;
255559
+ observer;
255560
+ refreshFrame = 0;
255561
+ choices = [];
255562
+ active = -1;
255563
+ open = false;
255564
+ search = "";
255565
+ searchTimer = 0;
255566
+ defaultValue = "";
255567
+ constructor() {
255568
+ super();
255569
+ try {
255570
+ this.internals = this.attachInternals();
255571
+ } catch {
255572
+ this.internals = void 0;
255573
+ }
255574
+ const root = this.attachShadow({ mode: "open", delegatesFocus: true });
255575
+ attachControlStyles(root, SELECT_STYLES);
255576
+ ({ trigger: this.trigger, text: this.text } = createSelectTrigger());
255577
+ this.menu = document.createElement("div");
255578
+ this.menu.className = "menu";
255579
+ this.menu.id = `pptx-ui-select-options-${++nextSelectId}`;
255580
+ this.menu.setAttribute("role", "listbox");
255581
+ this.menu.setAttribute("popover", "manual");
255582
+ this.menu.setAttribute("part", "popup");
255583
+ this.trigger.setAttribute("aria-controls", this.menu.id);
255584
+ root.append(this.trigger, this.menu);
255585
+ this.trigger.addEventListener("click", () => this.open ? this.close() : this.show());
255586
+ this.trigger.addEventListener("keydown", (event) => this.onKeyDown(event));
255587
+ this.menu.addEventListener("pointerdown", (event) => {
255588
+ if (event.target.closest("[data-index]")) {
255589
+ event.preventDefault();
255590
+ }
255591
+ });
255592
+ this.menu.addEventListener("click", (event) => {
255593
+ const target = event.target.closest("[data-index]");
255594
+ if (target) {
255595
+ this.commit(Number(target.dataset.index));
255596
+ }
255597
+ });
255598
+ this.observer = new MutationObserver(() => {
255599
+ if (!this.refreshFrame) {
255600
+ this.refreshFrame = requestAnimationFrame(() => {
255601
+ this.refreshFrame = 0;
255602
+ this.refresh();
255603
+ });
255604
+ }
255605
+ });
255606
+ }
255607
+ connectedCallback() {
255608
+ this.defaultValue = this.getAttribute("value") ?? "";
255609
+ this.observer.observe(this, {
255610
+ childList: true,
255611
+ subtree: true,
255612
+ attributes: true,
255613
+ characterData: true,
255614
+ attributeFilter: SELECT_OPTION_ATTRIBUTES
255615
+ });
255616
+ this.refresh();
255617
+ }
255618
+ disconnectedCallback() {
255619
+ this.close();
255620
+ window.clearTimeout(this.searchTimer);
255621
+ this.searchTimer = 0;
255622
+ this.search = "";
255623
+ this.observer.disconnect();
255624
+ cancelAnimationFrame(this.refreshFrame);
255625
+ this.refreshFrame = 0;
255626
+ }
255627
+ attributeChangedCallback() {
255628
+ this.refresh();
255629
+ }
255630
+ get disabled() {
255631
+ return this.hasAttribute("disabled");
255632
+ }
255633
+ set disabled(next) {
255634
+ this.toggleAttribute("disabled", Boolean(next));
255635
+ }
255636
+ focus(options) {
255637
+ this.trigger.focus(options);
255638
+ }
255639
+ formResetCallback() {
255640
+ this.value = this.defaultValue;
255641
+ }
255642
+ formDisabledCallback(disabled) {
255643
+ this.disabled = disabled;
255644
+ }
255645
+ refresh() {
255646
+ if (!this.trigger) {
255647
+ return;
255648
+ }
255649
+ const options = [...this.querySelectorAll("option")];
255650
+ this.choices = collectSelectChoices(options);
255651
+ if (!this.hasAttribute("value") && this.choices.length) {
255652
+ this.value = options.find((option) => option.selected)?.value ?? this.choices.find((choice) => !choice.disabled && !choice.hidden)?.value ?? this.choices[0].value;
255653
+ }
255654
+ this.text.textContent = this.choices.find((choice) => choice.value === this.value)?.displayLabel ?? this.choices.find((choice) => choice.value === this.value)?.label ?? this.value;
255655
+ this.trigger.disabled = this.disabled;
255656
+ if (this.disabled) {
255657
+ this.close();
255658
+ }
255659
+ this.trigger.setAttribute("aria-label", this.getAttribute("aria-label") ?? "");
255660
+ this.internals?.setFormValue?.(this.disabled ? null : this.value);
255661
+ if (this.open || this.menu.childElementCount) {
255662
+ this.renderMenu();
255663
+ }
255664
+ }
255665
+ renderMenu() {
255666
+ renderSelectMenu(this.menu, this.choices, this.value);
255667
+ prependSelectCustomSlot(this, this.menu);
255668
+ markSelectActive(this.menu, this.trigger, this.active, this.open);
255669
+ }
255670
+ show() {
255671
+ if (this.disabled || !this.choices.some((choice) => !choice.disabled && !choice.hidden) || this.open) {
255672
+ return;
255673
+ }
255674
+ this.open = true;
255675
+ this.setAttribute("open", "");
255676
+ const selected = this.choices.findIndex(
255677
+ (choice) => choice.value === this.value && !choice.disabled && !choice.hidden
255678
+ );
255679
+ this.active = selected >= 0 ? selected : this.choices.findIndex((choice) => !choice.disabled && !choice.hidden);
255680
+ this.renderMenu();
255681
+ if (typeof this.menu.showPopover === "function") {
255682
+ this.menu.showPopover();
255683
+ } else {
255684
+ this.menu.dataset.fallbackOpen = "";
255685
+ }
255686
+ this.trigger.setAttribute("aria-expanded", "true");
255687
+ this.position();
255688
+ markSelectActive(this.menu, this.trigger, this.active, this.open);
255689
+ document.addEventListener("pointerdown", this.onOutside, true);
255690
+ window.addEventListener("resize", this.position);
255691
+ window.addEventListener("scroll", this.position, true);
255692
+ }
255693
+ close() {
255694
+ if (!this.open) {
255695
+ return;
255696
+ }
255697
+ this.open = false;
255698
+ window.clearTimeout(this.searchTimer);
255699
+ this.search = "";
255700
+ this.removeAttribute("open");
255701
+ if (this.menu.matches(":popover-open")) {
255702
+ this.menu.hidePopover();
255703
+ }
255704
+ delete this.menu.dataset.fallbackOpen;
255705
+ this.trigger.setAttribute("aria-expanded", "false");
255706
+ this.trigger.removeAttribute("aria-activedescendant");
255707
+ document.removeEventListener("pointerdown", this.onOutside, true);
255708
+ window.removeEventListener("resize", this.position);
255709
+ window.removeEventListener("scroll", this.position, true);
255710
+ }
255711
+ onOutside = (event) => {
255712
+ if (!event.composedPath().includes(this)) {
255713
+ this.close();
255714
+ }
255715
+ };
255716
+ position = () => {
255717
+ if (!this.open) {
255718
+ return;
255719
+ }
255720
+ positionSelectMenu(this.menu, this.trigger);
255721
+ };
255722
+ move(step) {
255723
+ if (!this.open) {
255724
+ this.show();
255725
+ }
255726
+ if (!this.open) {
255727
+ return;
255728
+ }
255729
+ this.active = nextSelectActive(this.choices, this.active, step);
255730
+ markSelectActive(this.menu, this.trigger, this.active, this.open);
255731
+ }
255732
+ commit(index) {
255733
+ const choice = this.choices[index];
255734
+ if (!choice || choice.disabled || choice.hidden) {
255735
+ return;
255736
+ }
255737
+ const changed = this.value !== choice.value;
255738
+ this.value = choice.value;
255739
+ this.close();
255740
+ this.trigger.focus();
255741
+ if (changed) {
255742
+ this.dispatchEvent(new Event("input", { bubbles: true, composed: true }));
255743
+ this.dispatchEvent(new Event("change", { bubbles: true, composed: true }));
255744
+ }
255745
+ }
255746
+ onKeyDown(event) {
255747
+ if (this.disabled) {
255748
+ return;
255749
+ }
255750
+ if (event.key === "ArrowDown" || event.key === "ArrowUp") {
255751
+ event.preventDefault();
255752
+ event.stopPropagation();
255753
+ this.move(event.key === "ArrowDown" ? 1 : -1);
255754
+ } else if (event.key === "Home" || event.key === "End") {
255755
+ event.preventDefault();
255756
+ event.stopPropagation();
255757
+ this.show();
255758
+ this.active = event.key === "Home" ? nextSelectActive(this.choices, -1, 1) : nextSelectActive(this.choices, 0, -1);
255759
+ markSelectActive(this.menu, this.trigger, this.active, this.open);
255760
+ } else if (event.key === "Enter" || event.key === " ") {
255761
+ event.preventDefault();
255762
+ event.stopPropagation();
255763
+ if (this.open) {
255764
+ this.commit(this.active);
255765
+ } else {
255766
+ this.show();
255767
+ }
255768
+ } else if (event.key === "Escape" && this.open) {
255769
+ event.preventDefault();
255770
+ event.stopPropagation();
255771
+ this.close();
255772
+ this.trigger.focus();
255773
+ } else if (event.key === "Tab") {
255774
+ this.close();
255775
+ } else if (event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey) {
255776
+ event.stopPropagation();
255777
+ this.search += event.key.toLocaleLowerCase();
255778
+ window.clearTimeout(this.searchTimer);
255779
+ this.searchTimer = window.setTimeout(() => {
255780
+ this.search = "";
255781
+ }, 700);
255782
+ this.show();
255783
+ const index = this.choices.findIndex(
255784
+ (choice) => !choice.disabled && !choice.hidden && choice.label.toLocaleLowerCase().startsWith(this.search)
255785
+ );
255786
+ if (index >= 0) {
255787
+ this.active = index;
255788
+ markSelectActive(this.menu, this.trigger, this.active, this.open);
255789
+ }
255790
+ }
255791
+ }
255792
+ }
255793
+ registry.define("pptx-ui-select", PptxSelect);
255794
+ }
254065
255795
  var SLIDE_SHOW_OPTIONS_STYLES = `
254066
255796
  :host {
254067
255797
  display: inline-flex;
@@ -254334,12 +256064,12 @@ function definePptxSubtitleSettings(registry) {
254334
256064
  }
254335
256065
  registry.define("pptx-ui-subtitle-settings", SubtitleSettingsElement);
254336
256066
  }
254337
- function attachThemeEditorDock(host) {
254338
- if (host.hasAttribute("inline")) {
256067
+ function attachThemeEditorDock(host2) {
256068
+ if (host2.hasAttribute("inline")) {
254339
256069
  return () => {
254340
256070
  };
254341
256071
  }
254342
- const body = host.closest("[data-pptx-editor-chrome]")?.querySelector('[data-pptx-chrome="body"]');
256072
+ const body = host2.closest("[data-pptx-editor-chrome]")?.querySelector('[data-pptx-chrome="body"]');
254343
256073
  const position2 = () => {
254344
256074
  const rect22 = body?.getBoundingClientRect();
254345
256075
  const top = Math.max(0, rect22?.top ?? 0);
@@ -254349,7 +256079,7 @@ function attachThemeEditorDock(host) {
254349
256079
  const narrow = right - left < 768;
254350
256080
  const width = narrow ? right - left : Math.min(288, right - left);
254351
256081
  const height = Math.max(0, bottom - top) * (narrow ? 0.6 : 1);
254352
- Object.assign(host.style, {
256082
+ Object.assign(host2.style, {
254353
256083
  left: `${right - width}px`,
254354
256084
  top: `${bottom - height}px`,
254355
256085
  width: `${width}px`,
@@ -254736,6 +256466,8 @@ var controls = [
254736
256466
  ["pptx-ui-slide-show-options", definePptxSlideShowOptions],
254737
256467
  ["pptx-ui-ribbon-command", definePptxRibbonCommand],
254738
256468
  ["pptx-ui-ribbon-group", definePptxRibbonGroup],
256469
+ ["pptx-ui-ribbon-section", definePptxRibbonSection],
256470
+ ["pptx-ui-ribbon-gallery", definePptxRibbonGallery],
254739
256471
  ["pptx-ui-ribbon-toggle", definePptxRibbonToggle],
254740
256472
  ["pptx-ui-subtitle-settings", definePptxSubtitleSettings],
254741
256473
  ["pptx-ui-theme-editor", definePptxThemeEditor]
@@ -258066,4 +259798,4 @@ registerPptxWebControls();
258066
259798
  * `<p:extLst>` (optional)
258067
259799
  */
258068
259800
 
258069
- 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, CHARACTER_SPACING_OPTIONS, CHART_QUICK_ACTION_BUTTON_SIZE, CHART_TYPE_OPTIONS, CINEMATIC_TRANSITION_KEYFRAMES, COLOR_MAP_ALIAS_KEYS, COMMENT_MARKER_SIZE, COMMENT_MENTION_ATTRIBUTE, COMMENT_MENTION_CLASS, COMMON_FONT_SIZES, COMPOUND_LINE_OPTIONS, CONNECTION_TIMEOUT_MS, CONNECTOR_SITE_SNAP_PX, CONTEXTUAL_TAB_GROUPS, CROP_ASPECT_GROUP_LABEL_KEYS, CROP_ASPECT_LABEL_KEY, CROP_ASPECT_PRESETS, CROP_FILL_LABEL_KEY, CROP_FIT_LABEL_KEY, CROP_HANDLE_ARIA_KEY, CROP_LABEL_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_MOTION_PATH_PRESET_ID, 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, 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, EMPHASIS_PRESET_VALUES, EMPTY_RESOLVED_CUSTOMIZATION, ENTRANCE_PRESET_VALUES, EQUATION_TEMPLATES, EXIT_PRESET_VALUES, EXPANDED_MAX_HEIGHT, EXPORT_ASSEMBLING_PERCENT, EXPORT_DONE_PERCENT, EditPointsSession, EncryptedFileError, FILL_MODE_OPTIONS, FILL_PATTERN_LABEL_KEYS, FIXED_TAB_GALLERIES, FREEFORM_TOOL_IDS, FREEFORM_TOOL_LABEL_KEYS, FreeformToolSession, GIF_POST_CAPTURE_MAX_SIDE, GRADIENT_TYPE_OPTIONS, GlyphOutlineFontCache, HANDOUT_OPTIONS, HELP_RIBBON_COMMANDS, HIDDEN_SLIDE_LABEL_KEY, HIDDEN_SLIDE_SLASH_GRADIENT, HIGHLIGHTER_COLORS, INDENT_PX, INK_REPLAY_KEYFRAMES, INSERT_CHART_TYPES, 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_HINT_KEY, MERGE_SHAPES_LABEL_KEY, 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, PEN_COLORS, 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_CONSOLE_CONTROLS, 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_CONTROL_ATTR, RIBBON_GALLERY_ATTR, RIBBON_GALLERY_ITEM_ATTR, RIBBON_GALLERY_POPUP_ATTR, RIBBON_GROUP_ATTR, RIBBON_SCOPE_ATTR, RIBBON_SHAPE_SWATCHES, RIBBON_TAB_IDS, RIBBON_TRANSITION_PRESETS, 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, STATUS_BAR_CLASSES, 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, TITLE_BAR_CLASSES, TITLE_BAR_DEFAULT_FILE_KEY, TOOLBAR_BUTTON_IDS, TOOLBAR_TABS, TRANSITION_DIR_ARROWS, TRANSITION_MORPH_OPTIONS, TRANSITION_ORIENTATION_TYPES, TRANSITION_PATTERN_OPTIONS, TRANSITION_SOUND_NONE_VALUE, TRANSITION_SOUND_OTHER_VALUE, 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, applyTransitionSoundFile, applyTransitionStockSound, applyUnderlineVariant, 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, buildBarActions, buildBroadcastViewerUrl, buildCacheKey, buildCalloutLeaderLineSvgPath, buildCanvasContextMenuEntries, buildChartMarkDragGeometry, buildChartQuickActionsDescriptor, buildChartViewModel, buildChromeStyle, buildCollaborationShareUrl, buildCommentMarkers, buildContentPartStrokes, buildContextMenuEntries, buildCreateCollaborationConfig, buildCropOverlay, buildCssGradientFromShapeStyle, buildDeckSaveOptions, buildDirectionGrid, buildDuotoneCacheKey, buildElementClipboardPayload, buildFieldSubstitutionContext, buildFontCatalog, 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, buildRibbonGallery, buildRunProgramNotice, buildRunTabLines, buildSaveSlides, buildSlidePaneContextMenuEntries, buildSlideTemplateContent, buildSlideTemplateSlide, buildSlidesHtml, buildSmartArtA11y, buildSmartArtPresetData, buildSmartArtPreviewElement, buildStrokeOutline, buildStrokePathD, buildSubpathFillOverlay, buildSubpathPaints, buildSummaryZoomView, buildSvgGradientDef, buildTabContext, buildTableDataGrid, buildTextBlockStyle, buildTextBody3DSceneStyle, buildTextBodyLayoutStyle, buildTextBuildSpec, buildTextStyleOverrideCss, buildThemeColorMap, buildThemeColorSwatchGrid, buildTiledSlidesPdfBytes, 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, clampFlyoutPosition, clampGifDimensions, clampNotesFontSize, clampOptionNumber, clampPercent2, clampSorterZoom, clampTransitionNumber, clampZoomScale, classifyExtraConnections, classifyMediaType, clearAllLocalViewerData, clearAudienceContent, clearLocalAwareness, clearMotionPath, clearPlaybackTimers, clearStoredViewerPrefs, clearTransitionSound, clientToSlidePoint, cloneElementForPaste, cloneElementUpdates, cloneHistorySnapshot, cloneSlide, cloneTemplateElementsBySlideId, collapseChartTitleRunsForEdit, collectConnectorSiteCandidates, collectImagePaths, collectMediaElements, collectReferencedFontFamilies, collectUsedFonts, colorWithOpacity, commentMentionQuery, commentTextSegments, comparePresentation, compatToastStackStyle, 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, 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, cropSessionChanged, cropToAspectRatio, cursorForTool, customGeometryPathsToSvgSubpaths, customizeBackstageCards, customizeBackstageNav, customizeCanvasContextMenuEntries, customizeContextMenuEntries, customizeOptionsTabs, cycleSelectableElement, defaultCssVars, defaultRadius, defaultThemeColors, defineThreeViewElement, deleteAutosaveSnapshot, deleteSection, deleteTableStyleFromMap, deleteTagFromCollections, demote, deriveSlideFieldContext, deriveViewportBreakpoints, describeCollaborationShellState, describeFontEmbedding, describeSmartArtBounds, describeTableStyleEditor, detectOrientation, detectTouchDevice, directionValuesFor, discardAutosaveRecovery, distributeElements, downloadBlob, downloadDataUrl, dragCropHandle, editCommentInList, editorThumbnailHeight, editorThumbnailStep, editorThumbnailWidth, effectiveDirection, effectiveTimingCurve, elementActionToPptxAction, elementBulletKind, elementContainerHeightStyle, elementHitTargetStyle, elementIdSelector, elementLockTogglePatch, elementPictureFilename, encodeGif, endAudienceDisplay, ensureActionAffordanceStyles, ensureChartInteractionStyles, erasePresentationInkAt, evenColumnWidths, evenRowHeights, exportDeckJson, extraQuickAccessCommands, fetchGoogleWebfontOutlineBytes, filterCommands, filterHiddenSlideIndices, filterInteractableIds, filterRenderedElements, findChartPartTarget, findConnectorSiteNear, findEraserHitElementId, findInSlides, findSelectedThemeSwatch, findSmartArtNodeText, finishPrintWindow, firstShowSlideIndex, flattenNodes, flattenTagCollections, followingText, forgetSessionDeck, formatAxisValue, formatBackstageDate, formatBackstageSize, formatBytes, formatCommentTimestamp, formatElapsed, formatMobileElapsed, formatRelativeTime, formatSlideCounter, formatTime, formatVersionTimestamp, fpsToFrameIntervalMs, galleryHasItems, galleryItemLabel, 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, 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, inlineElementPointerEvents, inlineGalleryItems, inlineListBodyText, insertCommentMention, insertTableElementColumn, insertTableElementRow, isActionHidden, isBlackboardActive, isBrowserOpenableMime, isBulletMarkerSegment, isCalloutShape, isCellInRect, isCurrentLayout, isDialogAvailable, isDrawingToolVisible, isEditPointsEnabled, isEditableMotionPath, isEditableTextElement, isEditorControlTarget, isEditorTextInputTarget, isElementActionable, isElementLocked, isElementRendered, isExportAbortError, isFeatureEnabled, 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, 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, paragraphsToSegments, parseDrawingColor, parseDrawingColorOpacity, parsePanoseString, parsePpactionUrl, parseSegmentsFromRichEditor, partitionTemplateElements, patchChartData, pickSupportedMimeType, pieceLetterSpacing, placeAudienceWindow, placeCaretAtEnd, placeTileOnPage, placeholderPromptDescriptor, planMergeShapes, playAnimationRibbonPreview, playFeedbackSound, playGroup, playSlideTransitionPreview, pptxActionToElementAction, prepareElementForInsertion, prepareElementUpdateBatch, prepareHtml2CanvasClone, presentationBaseName, presentationEntrySlideIndex, presentationInkPath, 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, readSoundFileAsDataUrl, 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, resolveTableCellImageUrls, resolveTableStyleImageUrls, resolveTemplateBackgroundRows, resolveTextFillBlipUrls, resolveThemeCatalogEntry, resolveTitleBarStatusKey, resolveTransitionDurationMs, resolveTransitionSoundAction, resolveTransportForServerUrl, resolveViewerAddinRows, resolveViewportFitOptions, resolveWheelSpokeCount, resolveZoomNavigationTarget, restoreFilteredSeries, restoreInlineListBodySelection, restoreSegmentSelection, restoreSessionDeck, ribbonCustomizationCss, ribbonTransitionUpdates, rulerDragToGuidePosition, runPresentationAction, runProgramNoticeStackStyle, safeOpenUrl, sanitizeColor, sanitizeGradientStops, sanitizeMathMl, saveAutosaveSnapshot, saveDeckWithPassword, saveViewerProfile, savedPresentationFileName, scaleFontSizeForAutoFit, scaleSlidesForSizeChange, scanAvailableFontFamilies, scheduleAutoAdvanceChain, scheduleMediaTrimAndFade, schemaLabel, scopeLayoutOptionsToSlide, scrollInspectorSectionIntoView, seedRecentColors, segmentFrameCount, segmentStyleToCss, segmentsToEditorHtml, segmentsToParagraphs, segmentsToPlainText, selectGoogleWebfontFamilies, selectedBookmarkOptionValue, selectedParagraphBulletKind, selectionBulletKind, sendBackward, sendToBack, seriesSecondaryAxisPatch, setAfterAnimation, setAfterAnimationColor, setCachedResult, setCellText, setChartAxisGridlineStyle, setChartAxisLogScale, setChartAxisTitleStyle, setChartCategoryLabel, setChartCellValue, setChartDataPointExplosion, setChartDataPointFill, setChartDataPointLabel, setChartDataPointMarker, setChartSeriesChartType, setChartSeriesMarker, setDataLabelsRangeCache, setDuotoneCachedResult, setEffectSound, setEffectStockSound, setMasterViewBackgroundColor, setMotionPath, setMotionPathEnd, 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, slideProgressPercent, slideSizeFromPreset, slideSizeToCanvasPx, slideStatusLabel, snapBoxToGrid, splitCell, splitEastAsianBreaks, splitRunByScriptFont, splitRunForMetrics, splitWordsForUnderline, splitsUnderlineIntoWords, startCropSession, stepFontSizePt, stepPresenterZoom, stopAllPersistentAudio, stopCaptureStream, storeAudienceContent, stripUnderlineDecoration, strokeOutlineViewBox, strokeWidthOf, styleShadowFilter, subscribeBarFacePicturePixelSamples, substituteFieldText, subtitleRecognitionLanguage, subtitleSettingsFromOptions, subtitleSettingsLabels, surfaceWireframePatch, svgGradientFillRef, svgLineCap, swapPresentationWindows, switchSmartArtLayout, syncGoogleWebfontStylesheet, tableCellCss, tableContainerCss, tableStyleAssignmentUpdate, 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, transitionSoundOptions, transitionSoundSelectedValue, transitionStockSoundId, 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, withInlineListDecorationDefaults, withSlideSizeOrientation, withSlidesPerPage, writeStoredViewerPrefs, xmlText };
259801
+ 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, CHARACTER_SPACING_OPTIONS, CHART_QUICK_ACTION_BUTTON_SIZE, CHART_TYPE_OPTIONS, CINEMATIC_TRANSITION_KEYFRAMES, COLOR_MAP_ALIAS_KEYS, COMMENT_MARKER_SIZE, COMMENT_MENTION_ATTRIBUTE, COMMENT_MENTION_CLASS, COMMON_FONT_SIZES, COMPOUND_LINE_OPTIONS, CONNECTION_TIMEOUT_MS, CONNECTOR_SITE_SNAP_PX, CONTEXTUAL_TAB_GROUPS, CROP_ASPECT_GROUP_LABEL_KEYS, CROP_ASPECT_LABEL_KEY, CROP_ASPECT_PRESETS, CROP_FILL_LABEL_KEY, CROP_FIT_LABEL_KEY, CROP_HANDLE_ARIA_KEY, CROP_LABEL_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_MOTION_PATH_PRESET_ID, 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, EMPHASIS_PRESET_VALUES, EMPTY_RESOLVED_CUSTOMIZATION, ENTRANCE_PRESET_VALUES, EQUATION_TEMPLATES, EXIT_PRESET_VALUES, EXPANDED_MAX_HEIGHT, EXPORT_ASSEMBLING_PERCENT, EXPORT_DONE_PERCENT, EditPointsSession, EncryptedFileError, FILL_MODE_OPTIONS, FILL_PATTERN_LABEL_KEYS, FIXED_TAB_GALLERIES, FREEFORM_TOOL_IDS, FREEFORM_TOOL_LABEL_KEYS, FreeformToolSession, GIF_POST_CAPTURE_MAX_SIDE, GRADIENT_TYPE_OPTIONS, GlyphOutlineFontCache, HANDOUT_OPTIONS, HELP_RIBBON_COMMANDS, HIDDEN_SLIDE_LABEL_KEY, HIDDEN_SLIDE_SLASH_GRADIENT, HIGHLIGHTER_COLORS, INDENT_PX, INK_REPLAY_KEYFRAMES, INSERT_CHART_TYPES, 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_HINT_KEY, MERGE_SHAPES_LABEL_KEY, 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, PEN_COLORS, 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_CONSOLE_CONTROLS, 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_CONTROL_ATTR, RIBBON_GROUP_ATTR, RIBBON_SCOPE_ATTR, RIBBON_SHAPE_SWATCHES, RIBBON_TAB_IDS, RIBBON_TRANSITION_PRESETS, 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, STATUS_BAR_CLASSES, 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, TITLE_BAR_CLASSES, TITLE_BAR_DEFAULT_FILE_KEY, TOOLBAR_BUTTON_IDS, TOOLBAR_TABS, TRANSITION_DIR_ARROWS, TRANSITION_MORPH_OPTIONS, TRANSITION_ORIENTATION_TYPES, TRANSITION_PATTERN_OPTIONS, TRANSITION_SOUND_NONE_VALUE, TRANSITION_SOUND_OTHER_VALUE, 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, applyTransitionSoundFile, applyTransitionStockSound, applyUnderlineVariant, 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, buildBarActions, buildBroadcastViewerUrl, buildCacheKey, buildCalloutLeaderLineSvgPath, buildCanvasContextMenuEntries, buildChartMarkDragGeometry, buildChartQuickActionsDescriptor, buildChartViewModel, buildChromeStyle, buildCollaborationShareUrl, buildCommentMarkers, buildContentPartStrokes, buildContextMenuEntries, buildCreateCollaborationConfig, buildCropOverlay, buildCssGradientFromShapeStyle, buildDeckSaveOptions, buildDirectionGrid, buildDuotoneCacheKey, buildElementClipboardPayload, buildFieldSubstitutionContext, buildFontCatalog, 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, buildSlidePaneContextMenuEntries, buildSlideTemplateContent, buildSlideTemplateSlide, buildSlidesHtml, buildSmartArtA11y, buildSmartArtPresetData, buildSmartArtPreviewElement, buildStrokeOutline, buildStrokePathD, buildSubpathFillOverlay, buildSubpathPaints, buildSummaryZoomView, buildSvgGradientDef, buildTabContext, buildTableDataGrid, buildTextBlockStyle, buildTextBody3DSceneStyle, buildTextBodyLayoutStyle, buildTextBuildSpec, buildTextStyleOverrideCss, buildThemeColorMap, buildThemeColorSwatchGrid, buildTiledSlidesPdfBytes, 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, clampFlyoutPosition, clampGifDimensions, clampNotesFontSize, clampOptionNumber, clampPercent2, clampSorterZoom, clampTransitionNumber, clampZoomScale, classifyExtraConnections, classifyMediaType, clearAllLocalViewerData, clearAudienceContent, clearLocalAwareness, clearMotionPath, clearPlaybackTimers, clearStoredViewerPrefs, clearTransitionSound, clientToSlidePoint, cloneElementForPaste, cloneElementUpdates, cloneHistorySnapshot, cloneSlide, cloneTemplateElementsBySlideId, collapseChartTitleRunsForEdit, collectConnectorSiteCandidates, collectImagePaths, collectMediaElements, collectReferencedFontFamilies, collectUsedFonts, colorWithOpacity, commentMentionQuery, commentTextSegments, comparePresentation, compatToastStackStyle, 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, 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, cropSessionChanged, cropToAspectRatio, cursorForTool, customGeometryPathsToSvgSubpaths, customizeBackstageCards, customizeBackstageNav, customizeCanvasContextMenuEntries, customizeContextMenuEntries, customizeOptionsTabs, cycleSelectableElement, defaultCssVars, defaultRadius, defaultThemeColors, defineThreeViewElement, deleteAutosaveSnapshot, deleteSection, deleteTableStyleFromMap, deleteTagFromCollections, demote, deriveSlideFieldContext, deriveViewportBreakpoints, describeCollaborationShellState, describeFontEmbedding, describeSmartArtBounds, describeTableStyleEditor, designCommandState, detectOrientation, detectTouchDevice, directionValuesFor, discardAutosaveRecovery, distributeElements, downloadBlob, downloadDataUrl, dragCropHandle, editCommentInList, editorThumbnailHeight, editorThumbnailStep, editorThumbnailWidth, effectiveDirection, effectiveTimingCurve, elementActionToPptxAction, elementBulletKind, elementContainerHeightStyle, elementHitTargetStyle, elementIdSelector, elementLockTogglePatch, elementPictureFilename, encodeGif, endAudienceDisplay, ensureActionAffordanceStyles, ensureChartInteractionStyles, erasePresentationInkAt, evenColumnWidths, evenRowHeights, exportDeckJson, extraQuickAccessCommands, fetchGoogleWebfontOutlineBytes, filterCommands, filterHiddenSlideIndices, filterInteractableIds, filterRenderedElements, findChartPartTarget, findConnectorSiteNear, findEraserHitElementId, findInSlides, findSelectedThemeSwatch, findSmartArtNodeText, finishPrintWindow, firstShowSlideIndex, flattenNodes, flattenTagCollections, followingText, 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, 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, inlineElementPointerEvents, inlineListBodyText, insertCommentMention, insertTableElementColumn, insertTableElementRow, isActionHidden, isBlackboardActive, isBrowserOpenableMime, isBulletMarkerSegment, isCalloutShape, isCellInRect, isCurrentLayout, isDialogAvailable, isDrawingToolVisible, isEditPointsEnabled, isEditableMotionPath, isEditableTextElement, isEditorControlTarget, isEditorTextInputTarget, isElementActionable, isElementLocked, isElementRendered, isExportAbortError, isFeatureEnabled, 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, 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, paragraphsToSegments, parseDrawingColor, parseDrawingColorOpacity, parsePanoseString, parsePpactionUrl, parseSegmentsFromRichEditor, partitionTemplateElements, patchChartData, pickSupportedMimeType, pieceLetterSpacing, placeAudienceWindow, placeCaretAtEnd, placeTileOnPage, placeholderPromptDescriptor, planMergeShapes, playAnimationRibbonPreview, playFeedbackSound, playGroup, playSlideTransitionPreview, pptxActionToElementAction, prepareElementForInsertion, prepareElementUpdateBatch, prepareHtml2CanvasClone, presentationBaseName, presentationEntrySlideIndex, presentationInkPath, 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, readSoundFileAsDataUrl, 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, resolveTableCellImageUrls, resolveTableStyleImageUrls, resolveTemplateBackgroundRows, resolveTextFillBlipUrls, resolveThemeCatalogEntry, resolveTitleBarStatusKey, resolveTransitionDurationMs, resolveTransitionSoundAction, resolveTransportForServerUrl, resolveViewerAddinRows, resolveViewportFitOptions, resolveWheelSpokeCount, resolveZoomNavigationTarget, restoreFilteredSeries, restoreInlineListBodySelection, restoreSegmentSelection, restoreSessionDeck, ribbonCustomizationCss, ribbonTransitionUpdates, rulerDragToGuidePosition, runPresentationAction, runProgramNoticeStackStyle, safeOpenUrl, sanitizeColor, sanitizeGradientStops, sanitizeMathMl, saveAutosaveSnapshot, saveDeckWithPassword, saveViewerProfile, savedPresentationFileName, scaleFontSizeForAutoFit, scaleSlidesForSizeChange, scanAvailableFontFamilies, scheduleAutoAdvanceChain, scheduleMediaTrimAndFade, schemaLabel, scopeLayoutOptionsToSlide, scrollInspectorSectionIntoView, seedRecentColors, segmentFrameCount, segmentStyleToCss, segmentsToEditorHtml, segmentsToParagraphs, segmentsToPlainText, selectGoogleWebfontFamilies, selectedBookmarkOptionValue, selectedParagraphBulletKind, selectionBulletKind, sendBackward, sendToBack, seriesSecondaryAxisPatch, setAfterAnimation, setAfterAnimationColor, setCachedResult, setCellText, setChartAxisGridlineStyle, setChartAxisLogScale, setChartAxisTitleStyle, setChartCategoryLabel, setChartCellValue, setChartDataPointExplosion, setChartDataPointFill, setChartDataPointLabel, setChartDataPointMarker, setChartSeriesChartType, setChartSeriesMarker, setDataLabelsRangeCache, setDuotoneCachedResult, setEffectSound, setEffectStockSound, setMasterViewBackgroundColor, setMotionPath, setMotionPathEnd, 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, slideProgressPercent, slideSizeFromPreset, slideSizeToCanvasPx, slideStatusLabel, snapBoxToGrid, splitCell, splitEastAsianBreaks, splitRunByScriptFont, splitRunForMetrics, splitWordsForUnderline, splitsUnderlineIntoWords, startCropSession, stepFontSizePt, stepPresenterZoom, stopAllPersistentAudio, stopCaptureStream, storeAudienceContent, stripUnderlineDecoration, strokeOutlineViewBox, strokeWidthOf, styleShadowFilter, subscribeBarFacePicturePixelSamples, substituteFieldText, subtitleRecognitionLanguage, subtitleSettingsFromOptions, subtitleSettingsLabels, surfaceWireframePatch, svgGradientFillRef, svgLineCap, swapPresentationWindows, switchSmartArtLayout, syncGoogleWebfontStylesheet, tableCellCss, tableContainerCss, tableStyleAssignmentUpdate, 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, transitionSoundOptions, transitionSoundSelectedValue, transitionStockSoundId, 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, withInlineListDecorationDefaults, withSlideSizeOrientation, withSlidesPerPage, writeStoredViewerPrefs, xmlText };