ooxml-ui 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/custom-elements.json +161 -0
  2. package/dist/{chunk-XNCWB2X6.js → chunk-2WLRFPMW.js} +4 -0
  3. package/dist/{chunk-JAJFLFAV.js → chunk-56A2JK63.js} +1 -1
  4. package/dist/{chunk-AYXFLBSV.js → chunk-5OFAJDMQ.js} +6 -6
  5. package/dist/{chunk-7FNDOWTX.js → chunk-723JC3OC.js} +72 -5
  6. package/dist/{chunk-YK2DPYMU.js → chunk-IY7QJLQG.js} +1 -1
  7. package/dist/{chunk-BOX43CZD.js → chunk-M6GF5ED2.js} +2 -1
  8. package/dist/{chunk-Y2E22JVO.js → chunk-NYRRH2MD.js} +1 -1
  9. package/dist/{chunk-VUB44CAJ.js → chunk-TWQ45BFL.js} +1 -1
  10. package/dist/{chunk-YP5S7DTT.js → chunk-V6P6KZCO.js} +6 -5
  11. package/dist/controls.d.ts +4 -2
  12. package/dist/controls.d.ts.map +1 -1
  13. package/dist/controls.js +5 -5
  14. package/dist/docx/editor-chrome.d.ts +8 -1
  15. package/dist/docx/file-commands.d.ts +1 -1
  16. package/dist/docx/locales/en-app.d.ts +1 -0
  17. package/dist/docx/locales/en.d.ts +1 -0
  18. package/dist/docx/localization-strings.d.ts +1 -0
  19. package/dist/docx/ribbon-actions.d.ts +22 -0
  20. package/dist/docx/title-bar.d.ts +3 -5
  21. package/dist/docx.js +66 -46
  22. package/dist/icons.d.ts.map +1 -1
  23. package/dist/icons.js +1 -1
  24. package/dist/index.d.ts +1 -1
  25. package/dist/index.js +9 -9
  26. package/dist/pptx/{chart-3d-view-scene-6B5TOWB6.mjs → chart-3d-view-scene-OYJ4CDCO.mjs} +3 -4
  27. package/dist/pptx/{chart-3d-view-scene-MJ6YNT56.cjs → chart-3d-view-scene-SE2Y6QRE.cjs} +38 -39
  28. package/dist/pptx/{chunk-AWKKC3VW.mjs → chunk-CIVA3MLN.mjs} +1 -1
  29. package/dist/pptx/{chunk-ZK344LOB.cjs → chunk-FPE5PZMI.cjs} +303 -155
  30. package/dist/pptx/{chunk-YRHK45AB.cjs → chunk-IURZJAWP.cjs} +233 -127
  31. package/dist/pptx/{chunk-XIQMFSNG.cjs → chunk-KRMMJUCO.cjs} +83 -1
  32. package/dist/pptx/{chunk-YI5LH5NN.mjs → chunk-MWHGUEIJ.mjs} +162 -16
  33. package/dist/pptx/{chunk-XQVKQD5Z.mjs → chunk-STLXPKJJ.mjs} +230 -128
  34. package/dist/pptx/{chunk-YMTQLZ2I.mjs → chunk-TC7HCF5M.mjs} +76 -2
  35. package/dist/pptx/{chunk-STKGUT5S.cjs → chunk-WKLHJEPD.cjs} +13 -13
  36. package/dist/pptx/dom/element-styles.d.ts.map +1 -1
  37. package/dist/pptx/dom/elements/connector.d.ts.map +1 -1
  38. package/dist/pptx/dom/elements/shape-filter-defs.d.ts.map +1 -1
  39. package/dist/pptx/dom/elements/table.d.ts.map +1 -1
  40. package/dist/pptx/dom/index.cjs +254 -254
  41. package/dist/pptx/dom/index.mjs +26 -26
  42. package/dist/pptx/dom/slide-stage.d.ts.map +1 -1
  43. package/dist/pptx/export/html2canvas-clone.cjs +2 -2
  44. package/dist/pptx/export/html2canvas-clone.mjs +1 -1
  45. package/dist/pptx/index.cjs +3041 -3001
  46. package/dist/pptx/index.mjs +4 -4
  47. package/dist/pptx/render/chart-3d-oblique-layout.d.ts.map +1 -1
  48. package/dist/pptx/render/chart-3d-persp-bars.d.ts.map +1 -1
  49. package/dist/pptx/render/chart-3d-persp-layout.d.ts.map +1 -1
  50. package/dist/pptx/render/chart-bar-cluster-geometry.d.ts +1 -1
  51. package/dist/pptx/render/chart-bar-cluster-geometry.d.ts.map +1 -1
  52. package/dist/pptx/render/chart-cartesian-area.d.ts.map +1 -1
  53. package/dist/pptx/render/chart-cartesian-bars.d.ts.map +1 -1
  54. package/dist/pptx/render/chart-cartesian-line-area.d.ts.map +1 -1
  55. package/dist/pptx/render/chart-cartesian-stacked-labels.d.ts +11 -7
  56. package/dist/pptx/render/chart-cartesian-stacked-labels.d.ts.map +1 -1
  57. package/dist/pptx/render/chart-combo-stock.cjs +3 -3
  58. package/dist/pptx/render/chart-combo-stock.mjs +1 -1
  59. package/dist/pptx/render/chart-data-label-anchor.d.ts +4 -1
  60. package/dist/pptx/render/chart-data-label-anchor.d.ts.map +1 -1
  61. package/dist/pptx/render/chart-horizontal-bars.d.ts.map +1 -1
  62. package/dist/pptx/render/chart-line-path.d.ts +9 -0
  63. package/dist/pptx/render/chart-line-path.d.ts.map +1 -1
  64. package/dist/pptx/render/chart-overlays.cjs +7 -7
  65. package/dist/pptx/render/chart-overlays.mjs +1 -1
  66. package/dist/pptx/render/chart-plot-clip.d.ts +37 -0
  67. package/dist/pptx/render/chart-plot-clip.d.ts.map +1 -0
  68. package/dist/pptx/render/chart-surface-treemap.cjs +4 -4
  69. package/dist/pptx/render/chart-surface-treemap.mjs +1 -1
  70. package/dist/pptx/render/chart-view-model-bars.d.ts +3 -2
  71. package/dist/pptx/render/chart-view-model-bars.d.ts.map +1 -1
  72. package/dist/pptx/render/chart-view-model.cjs +44 -44
  73. package/dist/pptx/render/chart-view-model.mjs +1 -1
  74. package/dist/pptx/render/chart-waterfall-map.cjs +6 -6
  75. package/dist/pptx/render/chart-waterfall-map.mjs +1 -1
  76. package/dist/pptx/render/device-pixel-stroke.d.ts +101 -0
  77. package/dist/pptx/render/device-pixel-stroke.d.ts.map +1 -0
  78. package/dist/pptx/render/export-clone.d.ts +4 -0
  79. package/dist/pptx/render/export-clone.d.ts.map +1 -1
  80. package/dist/pptx/render/foreign-object-svg-document.d.ts.map +1 -1
  81. package/dist/pptx/render/index.d.ts +2 -0
  82. package/dist/pptx/render/index.d.ts.map +1 -1
  83. package/dist/pptx/render/stroke-outline.d.ts +6 -0
  84. package/dist/pptx/render/stroke-outline.d.ts.map +1 -1
  85. package/dist/pptx/render/stroke-style.d.ts +8 -2
  86. package/dist/pptx/render/stroke-style.d.ts.map +1 -1
  87. package/dist/pptx/render/tab-row-actions.d.ts +40 -0
  88. package/dist/pptx/render/tab-row-actions.d.ts.map +1 -0
  89. package/dist/pptx/render/table-style-borders.d.ts.map +1 -1
  90. package/dist/pptx/render/table-style.d.ts.map +1 -1
  91. package/dist/pptx/web-components/index.d.ts.map +1 -1
  92. package/dist/pptx/web-components/office-token-bridge.d.ts +1 -1
  93. package/dist/pptx/web-components/office-token-bridge.d.ts.map +1 -1
  94. package/dist/pptx/web-components/ribbon-actions.d.ts +8 -0
  95. package/dist/pptx/web-components/ribbon-actions.d.ts.map +1 -0
  96. package/dist/presence.js +3 -3
  97. package/dist/ribbon/ribbon-actions.d.ts +119 -0
  98. package/dist/ribbon/ribbon-actions.d.ts.map +1 -0
  99. package/dist/smartart.js +3 -3
  100. package/dist/teams.js +7 -7
  101. package/dist/theme.js +2 -2
  102. package/dist/tokens.d.ts +4 -0
  103. package/dist/tokens.d.ts.map +1 -1
  104. package/dist/visio.js +6 -6
  105. package/dist/xlsx/calc-preparation.d.ts +44 -0
  106. package/dist/xlsx/editor-core.d.ts +3 -0
  107. package/dist/xlsx/ribbon-actions.d.ts +5 -4
  108. package/dist/xlsx.js +131 -44
  109. package/package.json +2 -2
package/dist/docx.js CHANGED
@@ -1,10 +1,10 @@
1
- import { defineSmartArt } from './chunk-Y2E22JVO.js';
2
- import { shadcnBridge } from './chunk-JAJFLFAV.js';
3
- import { createRibbonOverflow, defineRibbon, defineRuler, defineCommentsPane, defineDialog, defineSearchField, defineSwitch, defineTitleBar, defineBackstage, defineStatusBar, defineZoomSlider, defineContextMenu, runKeyTips, assignKeyTips } from './chunk-7FNDOWTX.js';
4
- import { registerIcon } from './chunk-BOX43CZD.js';
5
- import './chunk-VUB44CAJ.js';
6
- import './chunk-YK2DPYMU.js';
7
- import './chunk-XNCWB2X6.js';
1
+ import { defineSmartArt } from './chunk-NYRRH2MD.js';
2
+ import { shadcnBridge } from './chunk-56A2JK63.js';
3
+ import { createRibbonOverflow, defineRibbon, defineRuler, defineCommentsPane, defineDialog, defineSearchField, defineSwitch, defineTitleBar, defineRibbonActions, defineBackstage, defineStatusBar, defineZoomSlider, defineContextMenu, runKeyTips, assignKeyTips } from './chunk-723JC3OC.js';
4
+ import { registerIcon } from './chunk-M6GF5ED2.js';
5
+ import './chunk-TWQ45BFL.js';
6
+ import './chunk-IY7QJLQG.js';
7
+ import './chunk-2WLRFPMW.js';
8
8
  import { normalizeLocale, SUPPORTED_OFFICE_LOCALES, interpolate } from 'ooxml-core/i18n';
9
9
  import { createDocument, saveDocx, sectionsFromLayout, sectionLayoutJson, sectionsOf, pageSizeOf, columnPreset, applyPageSetup, withSection, computeListLabels, numberNotesInOrder, tocEntries, tableOfFiguresInstruction, findTableOfContents, ensureListDefinition, resolveNumberingLevel, equalColumnDraft, readColumnDraft, PAGE_SIZE_OPTIONS, PAGE_SIZES, readPageSetup, isRunHiddenForReview, resolveTableStyleFormatting, resolveParagraphFormatting, displayListLabel, setTitlePage, setLineNumbering, setVerticalAlign, setPageNumbering, ST_NumberFormat, unequalColumnPreset, setColumns, setOrientation, setPageSize, setMargins, lineSpacingLabel, formatNoteNumber, reviewDocumentFormatting, reviewFormattingWarnings, listRevisions, plainText, tocHyperlinks, DEFAULT_TOC_INSTRUCTION, tocBookmarks, buildTableOfContents, tocCaptionLabel, isFieldLocked, twips as twips$1, signedTwips, formatListNumber, columnTextWidth, validColumnDraft, validatePageSetup, presetOf, LIGATURE_VALUES, isLigatures, reviewRunFormatting, resolveRunFormatting, reviewParagraphFormatting, resolveThemeColorReference, lineSpacingValue, isStHighlightColor, transformCase, DEFAULT_TABLE_BORDERS, parseLineSpacingValue, twipsAttr, twipsFromPixels, headingLevel, isValidLanguageTag, WORD, isHeadingListKind, fieldName, lineSpacingOptions, halfPointsFromPoints, changeColumnWidth, changeColumnGap, createListDefinition, linkStylesToList, headingListLevels, documentStats } from 'ooxml-core/docx';
10
10
  import { Schema, DOMSerializer, Fragment } from 'prosemirror-model';
@@ -529,6 +529,7 @@ var deApp = {
529
529
  Editing: "Bearbeiten",
530
530
  Viewing: "Anzeigen",
531
531
  "Show comments": "Kommentare anzeigen",
532
+ Share: "Freigeben",
532
533
  "Unsaved changes": "Nicht gespeicherte \xC4nderungen",
533
534
  Saved: "Gespeichert",
534
535
  "Saving\u2026": "Speichern\u2026",
@@ -1320,6 +1321,7 @@ var enApp = {
1320
1321
  Editing: "Editing",
1321
1322
  Viewing: "Viewing",
1322
1323
  "Show comments": "Show comments",
1324
+ Share: "Share",
1323
1325
  "Unsaved changes": "Unsaved changes",
1324
1326
  Saved: "Saved",
1325
1327
  "Saving\u2026": "Saving\u2026",
@@ -1981,6 +1983,7 @@ var esApp = {
1981
1983
  Editing: "Edici\xF3n",
1982
1984
  Viewing: "Visualizaci\xF3n",
1983
1985
  "Show comments": "Mostrar comentarios",
1986
+ Share: "Compartir",
1984
1987
  "Unsaved changes": "Cambios sin guardar",
1985
1988
  Saved: "Guardado",
1986
1989
  "Saving\u2026": "Guardando\u2026",
@@ -2642,6 +2645,7 @@ var frApp = {
2642
2645
  Editing: "Modification",
2643
2646
  Viewing: "Lecture",
2644
2647
  "Show comments": "Afficher les commentaires",
2648
+ Share: "Partager",
2645
2649
  "Unsaved changes": "Modifications non enregistr\xE9es",
2646
2650
  Saved: "Enregistr\xE9",
2647
2651
  "Saving\u2026": "Enregistrement\u2026",
@@ -3303,6 +3307,7 @@ var zhCNApp = {
3303
3307
  Editing: "\u7F16\u8F91",
3304
3308
  Viewing: "\u67E5\u770B",
3305
3309
  "Show comments": "\u663E\u793A\u6279\u6CE8",
3310
+ Share: "\u5171\u4EAB",
3306
3311
  "Unsaved changes": "\u672A\u4FDD\u5B58\u7684\u66F4\u6539",
3307
3312
  Saved: "\u5DF2\u4FDD\u5B58",
3308
3313
  "Saving\u2026": "\u6B63\u5728\u4FDD\u5B58\u2026",
@@ -16440,7 +16445,7 @@ var EditorCore = class {
16440
16445
  this.host.canEditOutsideBody()
16441
16446
  );
16442
16447
  syncPageState(this);
16443
- chrome?.titleBar.setCommentsOpen(Boolean(review?.commentsOpen));
16448
+ chrome?.ribbonActions.setCommentsOpen(Boolean(review?.commentsOpen));
16444
16449
  }
16445
16450
  };
16446
16451
 
@@ -16478,7 +16483,7 @@ var document_default = ".dve-revision-insert {\n color: var(--dve-revision-color
16478
16483
  var print_default = ".dve-print-pages {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 24px;\n margin: 0 auto;\n zoom: var(--dve-zoom, 1);\n}\n.dve-print-pages[hidden] {\n display: none;\n}\n.dve-print-page {\n position: relative;\n flex: none;\n background: var(--dve-page-color, #fff);\n color: #202124;\n box-shadow:\n 0 1px 3px #20212430,\n 0 4px 12px #20212420;\n overflow: hidden;\n}\n.dve-print-column {\n position: absolute;\n z-index: 1;\n}\n/* Floating pictures sit in front of text unless anchored behind it (wp:anchor/@behindDoc). */\n.dve-print-float {\n z-index: 2;\n}\n.dve-print-float-behind {\n z-index: 0;\n}\n.dve-print-picture-missing {\n box-sizing: border-box;\n border: 1px dashed #8a8886;\n background: #f3f2f1;\n}\n.dve-print-chart {\n overflow: hidden;\n background: #fff;\n}\n.dve-print-chart > svg {\n display: block;\n width: 100%;\n height: 100%;\n}\n.dve-print-chart-frame {\n display: grid;\n place-items: center;\n color: #605e5c;\n font-size: 11px;\n}\n.dve-print-block {\n position: absolute;\n left: 0;\n width: 100%;\n}\n.dve-print-line {\n position: absolute;\n left: 0;\n width: 100%;\n font:\n 11pt/1.2 Calibri,\n Arial,\n sans-serif;\n cursor: text;\n}\n.dve-print-line span {\n position: absolute;\n top: 0;\n}\n.dve-print-row {\n position: absolute;\n left: 0;\n width: 100%;\n}\n/* Cells sit at their grid positions; borders come from the document (Word prints no gridlines). */\n.dve-print-cell {\n position: absolute;\n top: 0;\n box-sizing: border-box;\n}\n.dve-print-cell-content {\n position: absolute;\n bottom: 0;\n}\n@media print {\n .dve-ribbon,\n .dve-status,\n .multilingual-controls {\n display: none !important;\n }\n .dve-canvas {\n overflow: visible !important;\n padding: 0 !important;\n }\n .dve-paper {\n display: none !important;\n }\n .dve-print-pages {\n gap: 0 !important;\n zoom: 1 !important;\n }\n .dve-print-page {\n /* Like Word, page colours are not printed unless asked for. */\n background: #fff !important;\n box-shadow: none !important;\n break-after: page;\n }\n}\n.dve-print-header,\n.dve-print-footer {\n position: absolute;\n color: var(--ink);\n font-size: 11pt;\n pointer-events: none;\n}\n.dve-print-header p,\n.dve-print-footer p {\n margin: 0;\n}\n.dve-print-header table,\n.dve-print-footer table {\n width: 100%;\n border-collapse: collapse;\n}\n\n/* Complex field begin/code/separate/end markers: kept in the document, never shown. */\n.dve-field-marker {\n display: inline;\n font-size: 0;\n}\n\n/* TOC entries link to hidden _Toc bookmarks; Word draws them in the entry's style, not as links. */\na.dve-link[data-anchor^='_Toc'] {\n color: inherit;\n text-decoration: none;\n}\n\n/* Tabs sized to Word's tab stops by tab-stops-view.ts; leaders fill the tab's width. */\n.dve-tab {\n display: inline-block;\n overflow: hidden;\n white-space: pre;\n vertical-align: baseline;\n text-indent: 0;\n}\n.dve-tab-leader-dot,\n.dve-tab-leader-middleDot {\n background-image: radial-gradient(circle, currentColor 0.8px, transparent 1.1px);\n background-size: 4px 4px;\n background-repeat: repeat-x;\n background-position: right 0 bottom 0.25em;\n}\n.dve-tab-leader-hyphen {\n background-image: linear-gradient(to right, currentColor 50%, transparent 50%);\n background-size: 6px 1px;\n background-repeat: repeat-x;\n background-position: right 0 bottom 0.4em;\n}\n.dve-tab-leader-underscore,\n.dve-tab-leader-heavy {\n border-bottom: 1px solid currentColor;\n}\n.dve-tab-leader-heavy {\n border-bottom-width: 2px;\n}\n\n/* Footnotes above the bottom margin; the separator is Word's 2-inch rule. */\n.dve-print-footnotes {\n position: absolute;\n z-index: 1;\n}\n.dve-print-footnote-separator {\n position: absolute;\n top: -7px;\n left: 0;\n width: 192px;\n border-top: 1px solid currentColor;\n}\n.dve-print-footnote {\n position: absolute;\n left: 0;\n width: 100%;\n}\n\n[data-print-view] .dve-notes-container {\n display: none;\n}\n\n/* Word draws superscript and subscript at about two thirds size without growing the line. */\n.dve-paper sup,\n.dve-paper sub {\n font-size: 0.65em;\n line-height: 0;\n}\n/* Exact-height rows clip content that does not fit, as Word does. */\n.dve-print-cell {\n overflow: hidden;\n}\n.dve-print-paragraph-frame {\n position: absolute;\n top: 0;\n box-sizing: border-box;\n}\n\n/* View > Multiple Pages: Print Layout's sheets sit side by side and wrap, instead of one column. */\n.dve-canvas[data-multipage] .dve-print-pages {\n flex-direction: row;\n flex-wrap: wrap;\n align-items: flex-start;\n justify-content: center;\n}\n\n/* Layout > Line Numbers: numbers in the left margin, one per printed line. */\n.dve-print-line-number {\n position: absolute;\n width: 40px;\n text-align: right;\n font:\n 10px 'Segoe UI',\n Arial,\n sans-serif;\n color: #444;\n pointer-events: none;\n}\n";
16479
16484
 
16480
16485
  // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/docx/styles/chrome-titlebar.css?raw
16481
- var chrome_titlebar_default = ".dve-frame {\n position: relative;\n border: 0;\n box-shadow: none;\n}\n.dve-icon {\n flex: none;\n}\n.dve-icon-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 28px;\n height: 28px;\n padding: 0 6px;\n border: 0;\n border-radius: 4px;\n background: none;\n color: inherit;\n cursor: pointer;\n}\n.dve-icon-button:hover:not(:disabled),\n.dve-icon-button[aria-pressed='true'] {\n background: var(--word-soft);\n}\n.dve-icon-button:disabled {\n opacity: 0.4;\n cursor: default;\n}\n\n/* Title bar: drawn by the shared office-ui-title-bar; these colour it and style the account slot. */\n.dve-titlebar {\n flex: none;\n --office-title-bar-height: 40px;\n --office-title-bar-background: var(--chrome);\n --office-title-bar-border: var(--line);\n --office-title-bar-mark-background: var(--word);\n --office-title-bar-mark-foreground: var(--dve-primary-foreground);\n}\n.dve-title-actions {\n display: flex;\n align-items: center;\n gap: 2px;\n}\n.dve-mode-select {\n height: 28px;\n margin-left: 4px;\n padding: 0 6px;\n border: 1px solid var(--line);\n border-radius: 4px;\n background: var(--surface);\n color: var(--ink);\n font: inherit;\n}\n";
16486
+ var chrome_titlebar_default = ".dve-frame {\n position: relative;\n border: 0;\n box-shadow: none;\n}\n.dve-icon {\n flex: none;\n}\n.dve-icon-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 28px;\n height: 28px;\n padding: 0 6px;\n border: 0;\n border-radius: 4px;\n background: none;\n color: inherit;\n cursor: pointer;\n}\n.dve-icon-button:hover:not(:disabled),\n.dve-icon-button[aria-pressed='true'] {\n background: var(--word-soft);\n}\n.dve-icon-button:disabled {\n opacity: 0.4;\n cursor: default;\n}\n\n/* Title bar: drawn by the shared office-ui-title-bar; these colour it. */\n.dve-titlebar {\n flex: none;\n --office-title-bar-height: 40px;\n --office-title-bar-background: var(--chrome);\n --office-title-bar-border: var(--line);\n --office-title-bar-mark-background: var(--word);\n --office-title-bar-mark-foreground: var(--dve-primary-foreground);\n}\n";
16482
16487
 
16483
16488
  // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/docx/styles/backstage.css?raw
16484
16489
  var backstage_default = "/* Backstage: the shared office-ui-backstage draws the frame; these colour it and style the pages. */\n.dve-backstage {\n --office-backstage-nav-width: 220px;\n --office-backstage-nav-background: var(--word);\n --office-backstage-nav-foreground: var(--dve-primary-foreground);\n --office-backstage-item-hover: var(--word-strong);\n z-index: 40;\n background: var(--surface);\n}\n.dve-backstage-content {\n overflow: auto;\n padding: 28px 40px;\n color: var(--ink);\n}\n.dve-backstage-content h2 {\n margin: 0 0 20px;\n font-size: 30px;\n font-weight: 300;\n}\n.dve-backstage-content h3 {\n margin: 24px 0 10px;\n font-size: 15px;\n font-weight: 600;\n}\n.dve-backstage-facts {\n display: grid;\n grid-template-columns: max-content minmax(0, 1fr);\n gap: 6px 24px;\n margin: 0;\n}\n.dve-backstage-facts dt {\n color: var(--muted);\n}\n.dve-backstage-facts dd {\n margin: 0;\n overflow-wrap: anywhere;\n}\n.dve-compatibility-notes {\n display: grid;\n gap: 8px;\n max-width: 760px;\n margin: 0;\n padding: 0;\n list-style: none;\n}\n.dve-compatibility-notes li {\n display: flex;\n gap: 8px;\n padding: 10px 12px;\n border: 1px solid var(--line);\n border-radius: 6px;\n line-height: 1.45;\n}\n.dve-compatibility-notes .dve-icon {\n margin-top: 2px;\n color: #b7791f;\n}\n.dve-backstage-tile {\n display: inline-flex;\n flex-direction: column;\n gap: 8px;\n padding: 8px;\n border: 1px solid transparent;\n border-radius: 6px;\n background: none;\n color: var(--ink);\n font: inherit;\n cursor: pointer;\n}\n.dve-backstage-tile:hover {\n border-color: var(--line);\n background: var(--word-soft);\n}\n.dve-backstage-tile-preview {\n width: 150px;\n height: 190px;\n border: 1px solid var(--line);\n background: #fff;\n box-shadow: 0 1px 3px #0002;\n}\n.dve-backstage-primary {\n padding: 8px 18px;\n border: 0;\n border-radius: 4px;\n background: var(--word);\n color: var(--dve-primary-foreground);\n font: inherit;\n cursor: pointer;\n}\n.dve-backstage-muted {\n color: var(--muted);\n}\n\n.dve-backstage-title {\n margin: 0 0 4px;\n font-size: 26px;\n font-weight: 400;\n overflow-wrap: anywhere;\n}\n.dve-backstage-columns {\n display: grid;\n grid-template-columns: minmax(0, 1fr) 300px;\n gap: 40px;\n align-items: start;\n}\n.dve-backstage-properties {\n padding: 4px 0 0 24px;\n border-left: 1px solid var(--line);\n}\n.dve-backstage-properties h3 {\n margin-top: 0;\n}\n.dve-backstage-card {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 24px;\n max-width: 760px;\n margin-bottom: 12px;\n padding: 14px 18px;\n border: 1px solid var(--line);\n border-radius: 6px;\n}\n.dve-backstage-card h3 {\n margin: 0 0 4px;\n}\n.dve-backstage-card p {\n margin: 0;\n}\n.dve-backstage-field {\n display: grid;\n gap: 4px;\n max-width: 420px;\n margin-bottom: 14px;\n color: var(--muted);\n font-size: 12px;\n}\n.dve-backstage-field input,\n.dve-backstage-field select {\n height: 32px;\n padding: 0 8px;\n border: 1px solid var(--line);\n border-radius: 4px;\n background: var(--surface);\n color: var(--ink);\n font:\n 14px 'Segoe UI',\n Arial,\n sans-serif;\n}\n.dve-backstage-home-actions {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n margin: 24px 0;\n}\n.dve-backstage-toggle {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n.dve-backstage-toggle input {\n width: 18px;\n height: 18px;\n}\n@media (max-width: 760px) {\n .dve-backstage-content {\n padding: 20px;\n }\n .dve-backstage-card {\n align-items: stretch;\n flex-direction: column;\n }\n .dve-backstage-columns {\n grid-template-columns: minmax(0, 1fr);\n }\n .dve-backstage-properties {\n padding-left: 0;\n border-left: 0;\n }\n}\n\n/* Customize Ribbon: one block per tab, one fieldset per group, a checkbox per command. */\n.dve-customize-tab h3 {\n margin: 18px 0 6px;\n}\n.dve-customize-group {\n margin: 0 0 8px;\n padding: 6px 10px 8px;\n border: 1px solid var(--line);\n border-radius: 4px;\n}\n.dve-customize-group legend {\n padding: 0 4px;\n color: var(--muted);\n font-size: 12px;\n}\n.dve-customize-row {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n min-width: 180px;\n padding: 2px 8px 2px 0;\n font-size: 13px;\n}\n";
@@ -17766,15 +17771,6 @@ function icon(name) {
17766
17771
  svg.append(path);
17767
17772
  return svg;
17768
17773
  }
17769
- function iconButton(name, label, className = "") {
17770
- const button3 = document.createElement("button");
17771
- button3.type = "button";
17772
- button3.className = `dve-icon-button ${className}`.trim();
17773
- button3.setAttribute("aria-label", label);
17774
- button3.title = label;
17775
- button3.append(icon(name));
17776
- return button3;
17777
- }
17778
17774
 
17779
17775
  // src/docx/backstage-options.ts
17780
17776
  function renderOptions({ handlers, t, content }) {
@@ -18283,6 +18279,46 @@ function withExtension(fileName, extension) {
18283
18279
  return `${base}.${extension}`;
18284
18280
  }
18285
18281
 
18282
+ // src/docx/ribbon-actions.ts
18283
+ function createRibbonActions(handlers) {
18284
+ defineRibbonActions();
18285
+ const element = document.createElement("office-ui-ribbon-actions");
18286
+ element.className = "dve-ribbon-actions";
18287
+ element.slot = "actions";
18288
+ element.mode = "editing";
18289
+ element.addEventListener(
18290
+ "office-ribbon-mode",
18291
+ (event) => handlers.setReadOnly(event.detail.mode === "viewing")
18292
+ );
18293
+ element.addEventListener("office-ribbon-comments", () => handlers.toggleComments());
18294
+ element.addEventListener("office-ribbon-share", () => handlers.share());
18295
+ const relocalize = (locale) => {
18296
+ element.modeLabel = translate(locale, "Editing mode");
18297
+ element.modes = [
18298
+ { value: "editing", label: translate(locale, "Editing") },
18299
+ { value: "viewing", label: translate(locale, "Viewing") }
18300
+ ];
18301
+ element.commentsLabel = translate(locale, "Comments");
18302
+ element.commentsTitle = translate(locale, "Show comments");
18303
+ element.shareLabel = translate(locale, "Share");
18304
+ element.shareTitle = translate(locale, "Share");
18305
+ };
18306
+ relocalize("en");
18307
+ return {
18308
+ element,
18309
+ setReadOnly(readOnly) {
18310
+ element.mode = readOnly ? "viewing" : "editing";
18311
+ },
18312
+ setCommentsOpen(open) {
18313
+ element.commentsPressed = open;
18314
+ },
18315
+ setSharing(active) {
18316
+ element.sharePressed = active;
18317
+ },
18318
+ relocalize
18319
+ };
18320
+ }
18321
+
18286
18322
  // src/docx/status-bar.ts
18287
18323
  var ZOOM_MIN = 50;
18288
18324
  var ZOOM_MAX = 200;
@@ -18408,28 +18444,6 @@ function createTitleBar(handlers) {
18408
18444
  defineTitleBar();
18409
18445
  const element = document.createElement("office-ui-title-bar");
18410
18446
  element.className = "dve-titlebar";
18411
- const actions = document.createElement("div");
18412
- actions.className = "dve-title-actions";
18413
- actions.slot = "account";
18414
- const comments = iconButton("comment", "Show comments");
18415
- comments.setAttribute("aria-pressed", "false");
18416
- comments.addEventListener("click", () => handlers.toggleComments());
18417
- const mode = document.createElement("select");
18418
- mode.className = "dve-mode-select";
18419
- mode.setAttribute("aria-label", "Editing mode");
18420
- const modeOptions = [
18421
- ["editing", "Editing"],
18422
- ["viewing", "Viewing"]
18423
- ];
18424
- for (const [value, text] of modeOptions) {
18425
- const option = document.createElement("option");
18426
- option.value = value;
18427
- option.textContent = text;
18428
- mode.append(option);
18429
- }
18430
- mode.addEventListener("change", () => handlers.setReadOnly(mode.value === "viewing"));
18431
- actions.append(comments, mode);
18432
- element.append(actions);
18433
18447
  const model = { fileName: "", saveState: "saved", readOnly: false };
18434
18448
  let found = /* @__PURE__ */ new Map();
18435
18449
  const render = () => {
@@ -18502,12 +18516,8 @@ function createTitleBar(handlers) {
18502
18516
  },
18503
18517
  setReadOnly(readOnly) {
18504
18518
  model.readOnly = readOnly;
18505
- mode.value = readOnly ? "viewing" : "editing";
18506
18519
  render();
18507
18520
  },
18508
- setCommentsOpen(open) {
18509
- comments.setAttribute("aria-pressed", String(open));
18510
- },
18511
18521
  relocalize: render
18512
18522
  };
18513
18523
  }
@@ -18520,10 +18530,13 @@ var EditorChrome = class {
18520
18530
  this.titleBar = createTitleBar({
18521
18531
  fileCommand: (command) => void this.run(command),
18522
18532
  history: (key2) => host.history(key2),
18523
- toggleComments: () => host.toggleComments(),
18524
- setReadOnly: (readOnly) => host.setReadOnly(readOnly),
18525
18533
  ribbon: () => host.ribbon()
18526
18534
  });
18535
+ this.ribbonActions = createRibbonActions({
18536
+ setReadOnly: (readOnly) => host.setReadOnly(readOnly),
18537
+ toggleComments: () => host.toggleComments(),
18538
+ share: () => void this.run("share")
18539
+ });
18527
18540
  this.backstage = createBackstage({
18528
18541
  fileCommand: (command, fileName) => void this.run(command, fileName),
18529
18542
  close: () => this.closeBackstage(),
@@ -18568,6 +18581,7 @@ var EditorChrome = class {
18568
18581
  }
18569
18582
  host;
18570
18583
  titleBar;
18584
+ ribbonActions;
18571
18585
  backstage;
18572
18586
  statusBar;
18573
18587
  fileInput;
@@ -18579,6 +18593,7 @@ var EditorChrome = class {
18579
18593
  frame.prepend(this.titleBar.element);
18580
18594
  frame.append(this.statusBar.element, this.backstage.element, this.fileInput);
18581
18595
  this.ribbon = ribbon;
18596
+ ribbon.append(this.ribbonActions.element);
18582
18597
  ribbon.addEventListener("office-ribbon-file", () => this.backstage.open("home"));
18583
18598
  }
18584
18599
  get fileName() {
@@ -18604,6 +18619,7 @@ var EditorChrome = class {
18604
18619
  this.statusBar.relocalize();
18605
18620
  this.backstage.relocalize();
18606
18621
  this.titleBar.relocalize();
18622
+ this.ribbonActions.relocalize(locale);
18607
18623
  const fileTab = this.host.ribbon()?.querySelector(".dve-file-tab");
18608
18624
  if (fileTab) fileTab.textContent = translate(locale, "File");
18609
18625
  this.fileInput.setAttribute("aria-label", translate(locale, "Open"));
@@ -18615,6 +18631,8 @@ var EditorChrome = class {
18615
18631
  this.statusBar.setNoteCount(model.warnings.length);
18616
18632
  this.statusBar.setLanguage(this.host.element.lang || "");
18617
18633
  this.titleBar.setReadOnly(this.host.readOnly());
18634
+ this.ribbonActions.setReadOnly(this.host.readOnly());
18635
+ this.ribbonActions.setSharing(this.host.collaborating());
18618
18636
  }
18619
18637
  closeBackstage() {
18620
18638
  this.backstage.close();
@@ -18627,6 +18645,7 @@ var EditorChrome = class {
18627
18645
  if (command === "new") this.newDocument();
18628
18646
  else if (command === "open") this.fileInput.click();
18629
18647
  else if (command === "print") this.host.print();
18648
+ else if (command === "share") return;
18630
18649
  else if (command === "exportText")
18631
18650
  downloadText(plainText(this.host.model()), withExtension(this._fileName, "txt"));
18632
18651
  else if (command === "saveAs") {
@@ -20099,6 +20118,7 @@ function createChrome(core, api) {
20099
20118
  if (typeof document.execCommand === "function") core.targetView()?.focus();
20100
20119
  },
20101
20120
  toggleComments: () => shell.review?.handleComments("toggle"),
20121
+ collaborating: () => core.collab.active,
20102
20122
  setViewMode: (mode) => core.pages.setViewMode(mode),
20103
20123
  setZoom: (percent) => core.pages.setZoom(percent),
20104
20124
  options: () => ({
@@ -1 +1 @@
1
- {"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../src/icons.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,MAAM,WAAW,UAAU;IAC1B,CAAC,EAAE,MAAM,CAAC;IACV,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAoFD,4EAA4E;AAC5E,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,OAAO,CAK7E;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CAE/E;AAED,wBAAgB,SAAS,IAAI,MAAM,EAAE,CAEpC;AAID,wBAAgB,aAAa,CAAC,GAAG,EAAE,QAAQ,GAAG,aAAa,CAI1D;AAED,0FAA0F;AAC1F,wBAAgB,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAmBnF"}
1
+ {"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../src/icons.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,MAAM,WAAW,UAAU;IAC1B,CAAC,EAAE,MAAM,CAAC;IACV,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAqFD,4EAA4E;AAC5E,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,OAAO,CAK7E;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CAE/E;AAED,wBAAgB,SAAS,IAAI,MAAM,EAAE,CAEpC;AAID,wBAAgB,aAAa,CAAC,GAAG,EAAE,QAAQ,GAAG,aAAa,CAI1D;AAED,0FAA0F;AAC1F,wBAAgB,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAmBnF"}
package/dist/icons.js CHANGED
@@ -1 +1 @@
1
- export { createIconSvg, getIcon, listIcons, paintIcon, registerIcon } from './chunk-BOX43CZD.js';
1
+ export { createIconSvg, getIcon, listIcons, paintIcon, registerIcon } from './chunk-M6GF5ED2.js';
package/dist/index.d.ts CHANGED
@@ -8,7 +8,7 @@ export * from './teams/index.js';
8
8
  export * from './theme.js';
9
9
  export { CONTRACT_REVISION, type Definer } from './registry.js';
10
10
  /** Every ooxml-ui tag this package defines, in registration order. */
11
- export declare const OFFICE_UI_TAGS: readonly ["office-ui-icon", "office-ui-button", "office-ui-checkbox", "office-ui-switch", "office-ui-select", "office-ui-ribbon-group", "office-ui-ribbon-stack", "office-ui-menu-item", "office-ui-menu-button", "office-ui-menu-separator", "office-ui-context-menu", "office-ui-command-search", "office-ui-toolbar", "office-ui-dialog", "office-ui-status-bar", "office-ui-status-item", "office-ui-zoom-slider", "office-ui-tab-strip", "office-ui-options-dialog", "office-ui-account", "office-ui-ribbon", "office-ui-find-bar", "office-ui-ruler", "office-ui-backstage", "office-ui-print-preview", "office-ui-radio", "office-ui-search", "office-ui-ribbon-toggle", "office-ui-dialog-footer", "office-ui-toasts", "office-ui-read-only-banner", "office-ui-paste-options", "office-ui-title-bar", "office-ui-ribbon-section", "office-ui-gallery", "office-ui-comments-pane", "office-ui-presence", "office-ui-smartart", "office-ui-avatar", "office-ui-app-rail", "office-ui-channel-list", "office-ui-chat-list", "office-ui-chat-composer", "office-ui-prejoin", "office-ui-call-grid", "office-ui-call-controls"];
11
+ export declare const OFFICE_UI_TAGS: readonly ["office-ui-icon", "office-ui-button", "office-ui-checkbox", "office-ui-switch", "office-ui-select", "office-ui-ribbon-group", "office-ui-ribbon-stack", "office-ui-menu-item", "office-ui-menu-button", "office-ui-menu-separator", "office-ui-context-menu", "office-ui-command-search", "office-ui-toolbar", "office-ui-dialog", "office-ui-status-bar", "office-ui-status-item", "office-ui-zoom-slider", "office-ui-tab-strip", "office-ui-options-dialog", "office-ui-account", "office-ui-ribbon", "office-ui-ribbon-actions", "office-ui-find-bar", "office-ui-ruler", "office-ui-backstage", "office-ui-print-preview", "office-ui-radio", "office-ui-search", "office-ui-ribbon-toggle", "office-ui-dialog-footer", "office-ui-toasts", "office-ui-read-only-banner", "office-ui-paste-options", "office-ui-title-bar", "office-ui-ribbon-section", "office-ui-gallery", "office-ui-comments-pane", "office-ui-presence", "office-ui-smartart", "office-ui-avatar", "office-ui-app-rail", "office-ui-channel-list", "office-ui-chat-list", "office-ui-chat-composer", "office-ui-prejoin", "office-ui-call-grid", "office-ui-call-controls"];
12
12
  /**
13
13
  * Install the theme tokens and define every element. Idempotent and safe to call from every
14
14
  * viewer binding; a no-op where there is no DOM (SSR).
package/dist/index.js CHANGED
@@ -1,10 +1,10 @@
1
- export { OFFICE_UI_TAGS, registerOfficeUi } from './chunk-YP5S7DTT.js';
2
- export { OfficeUiSmartArt, defineSmartArt, renderDiagramDrawing } from './chunk-Y2E22JVO.js';
3
- export { EMOJI, OfficeUiAppRail, OfficeUiAvatar, OfficeUiCallControls, OfficeUiCallGrid, OfficeUiChannelList, OfficeUiChatComposer, OfficeUiChatList, OfficeUiPrejoin, QUICK_REACTIONS, TEAMS_TAGS, TeamsApp, TeamsChannelTab, TeamsContentPreview, TeamsController, TeamsElement, TeamsFilesPanel, TeamsSettings, applyTeamsProps, colorFor, createTeams, dayLabel, defineAppRail, defineAvatar, defineCallControls, defineCallGrid, defineChannelList, defineChatComposer, defineChatList, definePrejoin, defineTeamsApp, defineTeamsChannelTab, defineTeamsContentPreview, defineTeamsFilesPanel, defineTeamsSettings, formatElapsed, formatSize, formatTime, icon, listenTeamsEvents, loadConfig, loadIdentity, parseIceLines, registerTeams, safeStorage, saveConfig, saveIdentity, withStyles } from './chunk-AYXFLBSV.js';
1
+ export { OFFICE_UI_TAGS, registerOfficeUi } from './chunk-V6P6KZCO.js';
2
+ export { OfficeUiSmartArt, defineSmartArt, renderDiagramDrawing } from './chunk-NYRRH2MD.js';
3
+ export { EMOJI, OfficeUiAppRail, OfficeUiAvatar, OfficeUiCallControls, OfficeUiCallGrid, OfficeUiChannelList, OfficeUiChatComposer, OfficeUiChatList, OfficeUiPrejoin, QUICK_REACTIONS, TEAMS_TAGS, TeamsApp, TeamsChannelTab, TeamsContentPreview, TeamsController, TeamsElement, TeamsFilesPanel, TeamsSettings, applyTeamsProps, colorFor, createTeams, dayLabel, defineAppRail, defineAvatar, defineCallControls, defineCallGrid, defineChannelList, defineChatComposer, defineChatList, definePrejoin, defineTeamsApp, defineTeamsChannelTab, defineTeamsContentPreview, defineTeamsFilesPanel, defineTeamsSettings, formatElapsed, formatSize, formatTime, icon, listenTeamsEvents, loadConfig, loadIdentity, parseIceLines, registerTeams, safeStorage, saveConfig, saveIdentity, withStyles } from './chunk-5OFAJDMQ.js';
4
4
  export { TeamsPresentationPreview, defineTeamsPresentationPreview } from './chunk-SNV6YKPC.js';
5
- export { THEME_CSS, THEME_STYLE_ID, installOfficeUiTheme, shadcnBridge, themeBridge } from './chunk-JAJFLFAV.js';
6
- export { CONTROL_DEFINERS, DEFAULT_COMMENTS_LABELS, DEFAULT_OFFICE_PROFILE, EMPTY_MENU_STATE, OFFICE_AVATAR_SWATCHES, OFFICE_COLOR_SWATCHES, OFFICE_COLOR_SWATCH_HEXES, OFFICE_PROFILE_STORAGE_KEY, OFFICE_TITLE_BAR_SEARCH_LIMIT, OFFICE_TOAST_VISIBLE_LIMIT, assignKeyTips, attachKeyTips, clampFlyoutPosition, clampOptionNumber, clearOfficeProfile, commentInitials, createRibbonOverflow, defineAccount, defineBackstage, defineButton, defineCheckbox, defineCommandSearch, defineCommentsPane, defineContextMenu, defineDialog, defineDialogFooter, defineFindBar, defineGallery, defineIcon, defineMenuButton, defineMenuItem, defineMenuSeparator, defineOptionsDialog, definePasteOptions, definePrintPreview, defineRadio, defineReadOnlyBanner, defineRibbon, defineRibbonGroup, defineRibbonSection, defineRibbonStack, defineRibbonToggle, defineRuler, defineSearchField, defineSelect, defineStatusBar, defineStatusItem, defineSwitch, defineTabStrip, defineTitleBar, defineToasts, defineToolbar, defineZoomSlider, formatCommentTime, glyph, nextEnabledIndex, parseSvgPreview, profileInitials, readOfficeProfile, registerControls, rulerDivisions, runKeyTips, sanitizeOfficeProfile, typeAheadIndex, writeOfficeProfile } from './chunk-7FNDOWTX.js';
7
- export { createIconSvg, getIcon, listIcons, paintIcon, registerIcon } from './chunk-BOX43CZD.js';
8
- export { OfficeUiPresence, definePresence, initialsOf, participantsFromAwareness } from './chunk-VUB44CAJ.js';
9
- export { CONTRACT_REVISION, OfficeElement, controlStyles, flag, readFlag, triState, valueOn, withTokens } from './chunk-YK2DPYMU.js';
10
- export { COMPACT, FOCUS_RING, OFFICE_TOKENS, TOUCH, tok } from './chunk-XNCWB2X6.js';
5
+ export { THEME_CSS, THEME_STYLE_ID, installOfficeUiTheme, shadcnBridge, themeBridge } from './chunk-56A2JK63.js';
6
+ export { CONTROL_DEFINERS, DEFAULT_COMMENTS_LABELS, DEFAULT_OFFICE_PROFILE, EMPTY_MENU_STATE, OFFICE_AVATAR_SWATCHES, OFFICE_COLOR_SWATCHES, OFFICE_COLOR_SWATCH_HEXES, OFFICE_PROFILE_STORAGE_KEY, OFFICE_TITLE_BAR_SEARCH_LIMIT, OFFICE_TOAST_VISIBLE_LIMIT, assignKeyTips, attachKeyTips, clampFlyoutPosition, clampOptionNumber, clearOfficeProfile, commentInitials, createRibbonOverflow, defineAccount, defineBackstage, defineButton, defineCheckbox, defineCommandSearch, defineCommentsPane, defineContextMenu, defineDialog, defineDialogFooter, defineFindBar, defineGallery, defineIcon, defineMenuButton, defineMenuItem, defineMenuSeparator, defineOptionsDialog, definePasteOptions, definePrintPreview, defineRadio, defineReadOnlyBanner, defineRibbon, defineRibbonActions, defineRibbonGroup, defineRibbonSection, defineRibbonStack, defineRibbonToggle, defineRuler, defineSearchField, defineSelect, defineStatusBar, defineStatusItem, defineSwitch, defineTabStrip, defineTitleBar, defineToasts, defineToolbar, defineZoomSlider, formatCommentTime, glyph, nextEnabledIndex, parseSvgPreview, profileInitials, readOfficeProfile, registerControls, rulerDivisions, runKeyTips, sanitizeOfficeProfile, typeAheadIndex, writeOfficeProfile } from './chunk-723JC3OC.js';
7
+ export { createIconSvg, getIcon, listIcons, paintIcon, registerIcon } from './chunk-M6GF5ED2.js';
8
+ export { OfficeUiPresence, definePresence, initialsOf, participantsFromAwareness } from './chunk-TWQ45BFL.js';
9
+ export { CONTRACT_REVISION, OfficeElement, controlStyles, flag, readFlag, triState, valueOn, withTokens } from './chunk-IY7QJLQG.js';
10
+ export { COMPACT, FOCUS_RING, OFFICE_TOKENS, TOUCH, tok } from './chunk-2WLRFPMW.js';
@@ -1,5 +1,5 @@
1
- import { widenPieViewModel, buildPerspCamera, createSvgEl, appendChartLegendSvg, renderChartLineSvg, renderChartTextSvg, perspBoxMatrix, pieRimPoint, perspScreenToPlaneY, resolvePieSliceShareValue, perspToScreen, roundDragValue, buildBarChart3DHoverTooltip, isChartInteractionArmed, computePieChartLayout, obliqueBarTaper } from './chunk-AWKKC3VW.mjs';
2
- import { resolveChartPalette, shade } from './chunk-XQVKQD5Z.mjs';
1
+ import { widenPieViewModel, buildPerspCamera, createSvgEl, appendChartLegendSvg, renderChartLineSvg, renderChartTextSvg, perspBoxMatrix, pieRimPoint, perspScreenToPlaneY, resolvePieSliceShareValue, perspToScreen, roundDragValue, buildBarChart3DHoverTooltip, isChartInteractionArmed, computePieChartLayout, obliqueBarTaper } from './chunk-CIVA3MLN.mjs';
2
+ import { resolveChartPalette, shade, DEFAULT_BAR_GAP_WIDTH } from './chunk-STLXPKJJ.mjs';
3
3
 
4
4
  // src/pptx/render/chart-3d-shading.ts
5
5
  var FACE_SHADE_AMOUNT = {
@@ -556,7 +556,6 @@ function attachObliqueBarInteraction(options) {
556
556
  }
557
557
 
558
558
  // src/pptx/render/chart-3d-persp-bars.ts
559
- var DEFAULT_GAP_WIDTH = 150;
560
559
  function valueY(layout, v) {
561
560
  const clamped = Math.min(Math.max(v, layout.range.min), layout.range.max);
562
561
  return (clamped - layout.range.min) * layout.valueScale;
@@ -566,7 +565,7 @@ function buildPerspBarPrisms(chartData, layout, override) {
566
565
  const nSer = chartData.series.length;
567
566
  const catExtent = layout.horizontal ? layout.view.box.h : layout.view.box.w;
568
567
  const slot = nCat > 0 ? catExtent / nCat : catExtent;
569
- const gapWidth = (chartData.barGapWidth ?? DEFAULT_GAP_WIDTH) / 100;
568
+ const gapWidth = (chartData.barGapWidth ?? DEFAULT_BAR_GAP_WIDTH) / 100;
570
569
  const slots = layout.grouping === "clustered" ? nSer : 1;
571
570
  const barW = slot / (slots + gapWidth);
572
571
  const depth = Math.min(barW, layout.rowDepth);
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var chunkSTKGUT5S_cjs = require('./chunk-STKGUT5S.cjs');
4
- var chunkYRHK45AB_cjs = require('./chunk-YRHK45AB.cjs');
3
+ var chunkWKLHJEPD_cjs = require('./chunk-WKLHJEPD.cjs');
4
+ var chunkIURZJAWP_cjs = require('./chunk-IURZJAWP.cjs');
5
5
 
6
6
  // src/pptx/render/chart-3d-shading.ts
7
7
  var FACE_SHADE_AMOUNT = {
@@ -14,7 +14,7 @@ var FACE_SHADE_AMOUNT = {
14
14
  };
15
15
  function shadeChart3DFace(baseColor, face) {
16
16
  const amount = FACE_SHADE_AMOUNT[face];
17
- return amount === 0 ? baseColor : chunkYRHK45AB_cjs.shade(baseColor, amount);
17
+ return amount === 0 ? baseColor : chunkIURZJAWP_cjs.shade(baseColor, amount);
18
18
  }
19
19
  function buildChart3DBoxFaceColors(baseColor) {
20
20
  return [
@@ -203,7 +203,7 @@ function buildChart3DBarMeshes(three, layout, svgWidth, svgHeight) {
203
203
  // src/pptx/render/chart-3d-chrome-overlay.ts
204
204
  function renderChart3DChromeOverlaySvg(doc, source, box) {
205
205
  const vm = box ? withBoxChromePositions(source) : source;
206
- const svg = chunkSTKGUT5S_cjs.createSvgEl(doc, "svg", {
206
+ const svg = chunkWKLHJEPD_cjs.createSvgEl(doc, "svg", {
207
207
  class: "pptxv-chart-3d-chrome",
208
208
  viewBox: `0 0 ${vm.svgWidth} ${vm.svgHeight}`,
209
209
  preserveAspectRatio: "none"
@@ -216,7 +216,7 @@ function renderChart3DChromeOverlaySvg(doc, source, box) {
216
216
  svg.style.setProperty("pointer-events", "none");
217
217
  if (vm.areaFill) {
218
218
  svg.appendChild(
219
- chunkSTKGUT5S_cjs.createSvgEl(doc, "rect", {
219
+ chunkWKLHJEPD_cjs.createSvgEl(doc, "rect", {
220
220
  x: 0,
221
221
  y: 0,
222
222
  width: vm.svgWidth,
@@ -227,7 +227,7 @@ function renderChart3DChromeOverlaySvg(doc, source, box) {
227
227
  );
228
228
  }
229
229
  if (vm.title) {
230
- const title = chunkSTKGUT5S_cjs.createSvgEl(doc, "text", {
230
+ const title = chunkWKLHJEPD_cjs.createSvgEl(doc, "text", {
231
231
  x: vm.titleX,
232
232
  y: vm.titleY,
233
233
  "text-anchor": "middle",
@@ -239,7 +239,7 @@ function renderChart3DChromeOverlaySvg(doc, source, box) {
239
239
  });
240
240
  if (vm.titleRunSpans && vm.titleRunSpans.length > 0) {
241
241
  for (const run of vm.titleRunSpans) {
242
- const tspan = chunkSTKGUT5S_cjs.createSvgEl(doc, "tspan", {
242
+ const tspan = chunkWKLHJEPD_cjs.createSvgEl(doc, "tspan", {
243
243
  "font-size": run.fontSize,
244
244
  "font-weight": run.fontWeight,
245
245
  "font-style": run.fontStyle,
@@ -258,28 +258,28 @@ function renderChart3DChromeOverlaySvg(doc, source, box) {
258
258
  appendBoxLabels(doc, svg, vm, box.labels);
259
259
  const legend = box.legend ?? vm.legend.map((item) => ({ ...item, lineSwatch: void 0 }));
260
260
  const legendVm = { ...vm, legend: box.reverseLegend ? legend.reverse() : legend };
261
- chunkSTKGUT5S_cjs.appendChartLegendSvg(doc, svg, legendVm);
261
+ chunkWKLHJEPD_cjs.appendChartLegendSvg(doc, svg, legendVm);
262
262
  return svg;
263
263
  }
264
264
  for (const gl of vm.gridlines) {
265
- svg.appendChild(chunkSTKGUT5S_cjs.renderChartLineSvg(doc, gl));
265
+ svg.appendChild(chunkWKLHJEPD_cjs.renderChartLineSvg(doc, gl));
266
266
  }
267
267
  for (const gl of vm.secondaryGridlines ?? []) {
268
- svg.appendChild(chunkSTKGUT5S_cjs.renderChartLineSvg(doc, gl));
268
+ svg.appendChild(chunkWKLHJEPD_cjs.renderChartLineSvg(doc, gl));
269
269
  }
270
270
  for (const lbl of vm.axisLabels) {
271
- svg.appendChild(chunkSTKGUT5S_cjs.renderChartTextSvg(doc, lbl));
271
+ svg.appendChild(chunkWKLHJEPD_cjs.renderChartTextSvg(doc, lbl));
272
272
  }
273
273
  for (const lbl of vm.secondaryAxisLabels ?? []) {
274
- svg.appendChild(chunkSTKGUT5S_cjs.renderChartTextSvg(doc, lbl));
274
+ svg.appendChild(chunkWKLHJEPD_cjs.renderChartTextSvg(doc, lbl));
275
275
  }
276
276
  if (vm.zeroLine) {
277
- svg.appendChild(chunkSTKGUT5S_cjs.renderChartLineSvg(doc, vm.zeroLine));
277
+ svg.appendChild(chunkWKLHJEPD_cjs.renderChartLineSvg(doc, vm.zeroLine));
278
278
  }
279
279
  for (const lbl of vm.categoryLabels) {
280
- svg.appendChild(chunkSTKGUT5S_cjs.renderChartTextSvg(doc, lbl));
280
+ svg.appendChild(chunkWKLHJEPD_cjs.renderChartTextSvg(doc, lbl));
281
281
  }
282
- chunkSTKGUT5S_cjs.appendChartLegendSvg(doc, svg, vm);
282
+ chunkWKLHJEPD_cjs.appendChartLegendSvg(doc, svg, vm);
283
283
  return svg;
284
284
  }
285
285
  var PT = 4 / 3;
@@ -298,7 +298,7 @@ function appendBoxLabels(doc, svg, vm, labels) {
298
298
  const style = vm.axisLabels[0];
299
299
  for (const label of labels) {
300
300
  svg.appendChild(
301
- chunkSTKGUT5S_cjs.renderChartTextSvg(doc, {
301
+ chunkWKLHJEPD_cjs.renderChartTextSvg(doc, {
302
302
  kind: "text",
303
303
  x: label.x,
304
304
  y: label.y,
@@ -368,7 +368,7 @@ function attachChart3DMarkInteraction(options) {
368
368
  }
369
369
  const point = pointAt(event.clientX, event.clientY);
370
370
  const value = point ? adapter.valueOf(point) : void 0;
371
- const tooltip = point && value !== void 0 ? chunkSTKGUT5S_cjs.buildBarChart3DHoverTooltip(
371
+ const tooltip = point && value !== void 0 ? chunkWKLHJEPD_cjs.buildBarChart3DHoverTooltip(
372
372
  { seriesIndex: point.seriesIndex, categoryIndex: point.pointIndex, value },
373
373
  {
374
374
  categoryLabels: options.categoryLabels,
@@ -386,7 +386,7 @@ function attachChart3DMarkInteraction(options) {
386
386
  return;
387
387
  }
388
388
  const point = pointAt(event.clientX, event.clientY);
389
- const armed = point !== null && chunkSTKGUT5S_cjs.isChartInteractionArmed(target);
389
+ const armed = point !== null && chunkWKLHJEPD_cjs.isChartInteractionArmed(target);
390
390
  if (armed) {
391
391
  event.stopPropagation();
392
392
  }
@@ -462,7 +462,7 @@ function obliqueDragValue(layout, startValue, dx, dy) {
462
462
  const along = layout.horizontal ? dx : -dy;
463
463
  const raw = startValue + along / layout.valueScale;
464
464
  const span = layout.range.max - layout.range.min;
465
- return chunkSTKGUT5S_cjs.roundDragValue(raw, { min: layout.range.min, max: layout.range.max, span });
465
+ return chunkWKLHJEPD_cjs.roundDragValue(raw, { min: layout.range.min, max: layout.range.max, span });
466
466
  }
467
467
  function obliqueDraggedExtent(layout, value) {
468
468
  const { min, max } = layout.range;
@@ -475,7 +475,7 @@ function obliqueDraggedExtent(layout, value) {
475
475
  function obliqueBarAtValue(layout, bar, value) {
476
476
  const { from, length } = obliqueDraggedExtent(layout, value);
477
477
  const extent = (layout.range.max - layout.range.min) * layout.valueScale;
478
- const taper = chunkSTKGUT5S_cjs.obliqueBarTaper(bar.shape, from, from + length, extent, value);
478
+ const taper = chunkWKLHJEPD_cjs.obliqueBarTaper(bar.shape, from, from + length, extent, value);
479
479
  return layout.horizontal ? { ...bar, x: from, w: length, value, taper } : { ...bar, y: from, h: length, value, taper };
480
480
  }
481
481
 
@@ -558,7 +558,6 @@ function attachObliqueBarInteraction(options) {
558
558
  }
559
559
 
560
560
  // src/pptx/render/chart-3d-persp-bars.ts
561
- var DEFAULT_GAP_WIDTH = 150;
562
561
  function valueY(layout, v) {
563
562
  const clamped = Math.min(Math.max(v, layout.range.min), layout.range.max);
564
563
  return (clamped - layout.range.min) * layout.valueScale;
@@ -568,7 +567,7 @@ function buildPerspBarPrisms(chartData, layout, override) {
568
567
  const nSer = chartData.series.length;
569
568
  const catExtent = layout.horizontal ? layout.view.box.h : layout.view.box.w;
570
569
  const slot = nCat > 0 ? catExtent / nCat : catExtent;
571
- const gapWidth = (chartData.barGapWidth ?? DEFAULT_GAP_WIDTH) / 100;
570
+ const gapWidth = (chartData.barGapWidth ?? chunkIURZJAWP_cjs.DEFAULT_BAR_GAP_WIDTH) / 100;
572
571
  const slots = layout.grouping === "clustered" ? nSer : 1;
573
572
  const barW = slot / (slots + gapWidth);
574
573
  const depth = Math.min(barW, layout.rowDepth);
@@ -621,7 +620,7 @@ function buildPerspBarPrisms(chartData, layout, override) {
621
620
  z0,
622
621
  z1: z0 + depth,
623
622
  shape,
624
- taper: chunkSTKGUT5S_cjs.obliqueBarTaper(
623
+ taper: chunkWKLHJEPD_cjs.obliqueBarTaper(
625
624
  shape,
626
625
  v0,
627
626
  v1,
@@ -816,7 +815,7 @@ function buildPerspGridlines(three, layout) {
816
815
  function buildPerspMeshes(three, layout, prisms) {
817
816
  const group = new three.Group();
818
817
  group.matrixAutoUpdate = false;
819
- group.matrix.copy(chunkSTKGUT5S_cjs.perspBoxMatrix(three, layout.view));
818
+ group.matrix.copy(chunkWKLHJEPD_cjs.perspBoxMatrix(three, layout.view));
820
819
  const gridlines = buildPerspGridlines(three, layout);
821
820
  group.add(gridlines);
822
821
  const material = new three.MeshBasicMaterial({ vertexColors: true, side: three.DoubleSide });
@@ -871,7 +870,7 @@ function surfaceBands(chartData, range, palette) {
871
870
  const fmt = chartData.bandFmts?.find((b) => b.index === i)?.spPr;
872
871
  const cycle = palette.length > 0 ? palette : ["#4472C4"];
873
872
  const base = cycle[i % cycle.length];
874
- const fallback = Math.floor(i / cycle.length) % 2 === 1 ? chunkYRHK45AB_cjs.shade(base, 0.4) : base;
873
+ const fallback = Math.floor(i / cycle.length) % 2 === 1 ? chunkIURZJAWP_cjs.shade(base, 0.4) : base;
875
874
  return {
876
875
  label: `${formatEdge(lo)}-${formatEdge(edges[i + 1])}`,
877
876
  color: fmt?.fillColor ?? fmt?.strokeColor ?? fallback
@@ -1055,7 +1054,7 @@ function disposeObject(object) {
1055
1054
  function buildSurfaceMarks(three, chartData, layout, palette) {
1056
1055
  const group = new three.Group();
1057
1056
  group.matrixAutoUpdate = false;
1058
- group.matrix.copy(chunkSTKGUT5S_cjs.perspBoxMatrix(three, layout.view));
1057
+ group.matrix.copy(chunkWKLHJEPD_cjs.perspBoxMatrix(three, layout.view));
1059
1058
  const gridlines = buildPerspGridlines(three, layout);
1060
1059
  group.add(gridlines);
1061
1060
  let visual = buildVisual(three, chartData, layout, palette);
@@ -1195,8 +1194,8 @@ function surfaceLegend(chartData, layout, palette, background, textStyle) {
1195
1194
  function mountPerspChartView(input, ctx) {
1196
1195
  const three = ctx.three;
1197
1196
  const { vm, layout, chartData } = input;
1198
- const palette = chunkYRHK45AB_cjs.resolveChartPalette(chartData);
1199
- const camera = chunkSTKGUT5S_cjs.buildPerspCamera(three, layout.view, vm.svgWidth, vm.svgHeight);
1197
+ const palette = chunkIURZJAWP_cjs.resolveChartPalette(chartData);
1198
+ const camera = chunkWKLHJEPD_cjs.buildPerspCamera(three, layout.view, vm.svgWidth, vm.svgHeight);
1200
1199
  const scene = new three.Scene();
1201
1200
  const marks = buildPerspMarkSet(three, chartData, layout, palette);
1202
1201
  scene.add(marks.group);
@@ -1245,15 +1244,15 @@ function mountPerspChartView(input, ctx) {
1245
1244
  const a = marks.anchor(point, start);
1246
1245
  const step = unit * layout.valueScale;
1247
1246
  const b = layout.horizontal ? [a[0] + step, a[1], a[2]] : [a[0], a[1] + step, a[2]];
1248
- const s0 = chunkSTKGUT5S_cjs.perspToScreen(layout.view, a);
1249
- const s1 = chunkSTKGUT5S_cjs.perspToScreen(layout.view, b);
1247
+ const s0 = chunkWKLHJEPD_cjs.perspToScreen(layout.view, a);
1248
+ const s1 = chunkWKLHJEPD_cjs.perspToScreen(layout.view, b);
1250
1249
  const ux = (s1.x - s0.x) / unit;
1251
1250
  const uy = (s1.y - s0.y) / unit;
1252
1251
  const len2 = ux * ux + uy * uy || 1;
1253
1252
  const span = layout.range.max - layout.range.min;
1254
1253
  return {
1255
1254
  preview(dx, dy) {
1256
- const value = chunkSTKGUT5S_cjs.roundDragValue(start + (dx * ux + dy * uy) / len2, {
1255
+ const value = chunkWKLHJEPD_cjs.roundDragValue(start + (dx * ux + dy * uy) / len2, {
1257
1256
  min: layout.range.min,
1258
1257
  max: layout.range.max,
1259
1258
  span
@@ -1341,7 +1340,7 @@ function sliceBuffers(three, layout, slice) {
1341
1340
  const steps = Math.max(2, Math.ceil(span / (Math.PI * 2) * SEGMENTS_PER_TURN));
1342
1341
  const angles = Array.from({ length: steps + 1 }, (_, i) => slice.startAngle + span * i / steps);
1343
1342
  const rim = (a, y) => {
1344
- const p = chunkSTKGUT5S_cjs.pieRimPoint(cx, cz, r, a);
1343
+ const p = chunkWKLHJEPD_cjs.pieRimPoint(cx, cz, r, a);
1345
1344
  return [p.x, y, p.z];
1346
1345
  };
1347
1346
  const radial = (a) => [Math.sin(a), 0, Math.cos(a)];
@@ -1385,7 +1384,7 @@ function sliceBuffers(three, layout, slice) {
1385
1384
  function buildPieMarks(three, layout) {
1386
1385
  const group = new three.Group();
1387
1386
  group.matrixAutoUpdate = false;
1388
- group.matrix.copy(chunkSTKGUT5S_cjs.perspBoxMatrix(three, layout.view));
1387
+ group.matrix.copy(chunkWKLHJEPD_cjs.perspBoxMatrix(three, layout.view));
1389
1388
  const material = new three.MeshBasicMaterial({
1390
1389
  vertexColors: true,
1391
1390
  side: three.DoubleSide,
@@ -1449,12 +1448,12 @@ function slicesWith(input, pointIndex, value) {
1449
1448
  ...input.element,
1450
1449
  chartData: { ...input.chartData, series }
1451
1450
  };
1452
- return chunkSTKGUT5S_cjs.computePieChartLayout(element, input.vm)?.slices ?? input.layout.slices;
1451
+ return chunkWKLHJEPD_cjs.computePieChartLayout(element, input.vm)?.slices ?? input.layout.slices;
1453
1452
  }
1454
1453
  function mountPieChartView(input, ctx) {
1455
1454
  const three = ctx.three;
1456
1455
  const { vm, layout, chartData } = input;
1457
- const camera = chunkSTKGUT5S_cjs.buildPerspCamera(three, layout.view, vm.svgWidth, vm.svgHeight);
1456
+ const camera = chunkWKLHJEPD_cjs.buildPerspCamera(three, layout.view, vm.svgWidth, vm.svgHeight);
1458
1457
  const scene = new three.Scene();
1459
1458
  const marks = buildPieMarks(three, layout);
1460
1459
  scene.add(marks.group);
@@ -1495,7 +1494,7 @@ function mountPieChartView(input, ctx) {
1495
1494
  const start = values();
1496
1495
  return {
1497
1496
  preview(_dx, _dy, at) {
1498
- const hit = chunkSTKGUT5S_cjs.perspScreenToPlaneY(layout.view, at.x, at.y, layout.center.y);
1497
+ const hit = chunkWKLHJEPD_cjs.perspScreenToPlaneY(layout.view, at.x, at.y, layout.center.y);
1499
1498
  if (!hit) {
1500
1499
  return start[point.pointIndex];
1501
1500
  }
@@ -1503,7 +1502,7 @@ function mountPieChartView(input, ctx) {
1503
1502
  hit.x - layout.center.x - slice.offset.x,
1504
1503
  hit.z - layout.center.z - slice.offset.z
1505
1504
  );
1506
- const value = chunkSTKGUT5S_cjs.resolvePieSliceShareValue(
1505
+ const value = chunkWKLHJEPD_cjs.resolvePieSliceShareValue(
1507
1506
  angle,
1508
1507
  slice.startAngle,
1509
1508
  start,
@@ -1519,7 +1518,7 @@ function mountPieChartView(input, ctx) {
1519
1518
  marker.visible = slice !== void 0;
1520
1519
  if (slice) {
1521
1520
  const mid = (slice.startAngle + slice.endAngle) / 2;
1522
- const p = chunkSTKGUT5S_cjs.pieRimPoint(
1521
+ const p = chunkWKLHJEPD_cjs.pieRimPoint(
1523
1522
  layout.center.x + slice.offset.x,
1524
1523
  layout.center.z + slice.offset.z,
1525
1524
  layout.radius * 0.6,
@@ -1584,7 +1583,7 @@ async function mountChart3DView(spec, ctx) {
1584
1583
  return mountPieChartView(
1585
1584
  {
1586
1585
  element: spec.element,
1587
- vm: chunkSTKGUT5S_cjs.widenPieViewModel(spec.vm, spec.element),
1586
+ vm: chunkWKLHJEPD_cjs.widenPieViewModel(spec.vm, spec.element),
1588
1587
  layout: spec.geometry.layout,
1589
1588
  chartData: chartData2,
1590
1589
  categoryLabels: spec.categoryLabels
@@ -1,4 +1,4 @@
1
- import { chartTextFontFamily, chartFontPx, computePlotLayout, radarAngle, computeStackedSeriesPlots, computeLayoutOptions, computeStackedValueRangeForAxis, primaryValueAxis, valueToY2, collapseChartTitleRunsForEdit, computePieLayout, buildMarkTooltip, formatAxisValueWithUnits, axisTickValues } from './chunk-XQVKQD5Z.mjs';
1
+ import { chartTextFontFamily, chartFontPx, computePlotLayout, radarAngle, computeStackedSeriesPlots, computeLayoutOptions, computeStackedValueRangeForAxis, primaryValueAxis, valueToY2, collapseChartTitleRunsForEdit, computePieLayout, buildMarkTooltip, formatAxisValueWithUnits, axisTickValues } from './chunk-STLXPKJJ.mjs';
2
2
 
3
3
  // src/pptx/render/chart-legend-layout.ts
4
4
  var LEGEND_ITEM_WIDTH = 80;