ooxml-ui 1.1.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 (203) hide show
  1. package/README.md +38 -36
  2. package/custom-elements.json +372 -4
  3. package/dist/chrome/ruler.d.ts +60 -2
  4. package/dist/chrome/ruler.d.ts.map +1 -1
  5. package/dist/chrome/status-bar.d.ts +3 -1
  6. package/dist/chrome/status-bar.d.ts.map +1 -1
  7. package/dist/{chunk-JFJXBYRD.js → chunk-2WLRFPMW.js} +9 -0
  8. package/dist/{chunk-X7RINDJQ.js → chunk-56A2JK63.js} +1 -1
  9. package/dist/{chunk-KVKKXRL7.js → chunk-5OFAJDMQ.js} +93 -14
  10. package/dist/{chunk-M5DTJSOV.js → chunk-723JC3OC.js} +461 -16
  11. package/dist/{chunk-USDLALB5.js → chunk-IY7QJLQG.js} +1 -1
  12. package/dist/{chunk-BOX43CZD.js → chunk-M6GF5ED2.js} +2 -1
  13. package/dist/{chunk-BEN3453I.js → chunk-NYRRH2MD.js} +1 -1
  14. package/dist/{chunk-3FPW7M6U.js → chunk-TWQ45BFL.js} +1 -1
  15. package/dist/{chunk-ZU7GX4SY.js → chunk-V6P6KZCO.js} +7 -5
  16. package/dist/comments/comments-pane.d.ts +116 -0
  17. package/dist/comments/comments-pane.d.ts.map +1 -0
  18. package/dist/comments/types.d.ts +80 -0
  19. package/dist/comments/types.d.ts.map +1 -0
  20. package/dist/controls.d.ts +6 -2
  21. package/dist/controls.d.ts.map +1 -1
  22. package/dist/controls.js +5 -5
  23. package/dist/docx/comments-panel.d.ts +8 -1
  24. package/dist/docx/editor-chrome.d.ts +8 -1
  25. package/dist/docx/file-commands.d.ts +1 -1
  26. package/dist/docx/image-media.d.ts +1 -1
  27. package/dist/docx/locales/en-app.d.ts +1 -0
  28. package/dist/docx/locales/en-ribbon.d.ts +1 -0
  29. package/dist/docx/locales/en.d.ts +2 -0
  30. package/dist/docx/localization-strings.d.ts +2 -0
  31. package/dist/docx/localization.d.ts +7 -0
  32. package/dist/docx/print-layout.d.ts +2 -2
  33. package/dist/docx/print-picture.d.ts +12 -0
  34. package/dist/docx/review-controller.d.ts +2 -0
  35. package/dist/docx/ribbon-actions.d.ts +22 -0
  36. package/dist/docx/ruler.d.ts +7 -10
  37. package/dist/docx/title-bar.d.ts +3 -5
  38. package/dist/docx.js +342 -362
  39. package/dist/form/gradient-preset-gallery.d.ts +2 -2
  40. package/dist/icons.d.ts.map +1 -1
  41. package/dist/icons.js +1 -1
  42. package/dist/index.d.ts +1 -1
  43. package/dist/index.js +9 -9
  44. package/dist/pptx/{chart-3d-view-scene-2KRQ5667.mjs → chart-3d-view-scene-OYJ4CDCO.mjs} +4 -5
  45. package/dist/pptx/{chart-3d-view-scene-36DMZWZ3.cjs → chart-3d-view-scene-SE2Y6QRE.cjs} +38 -39
  46. package/dist/pptx/{chunk-YOGDIDPB.mjs → chunk-CIVA3MLN.mjs} +8 -2
  47. package/dist/pptx/{chunk-KPZWYF44.cjs → chunk-FPE5PZMI.cjs} +789 -491
  48. package/dist/pptx/{chunk-AIL3BNZS.cjs → chunk-IURZJAWP.cjs} +529 -387
  49. package/dist/pptx/{chunk-YHA6XAB3.cjs → chunk-KRMMJUCO.cjs} +83 -1
  50. package/dist/pptx/{chunk-Y2W4SZER.mjs → chunk-MWHGUEIJ.mjs} +637 -348
  51. package/dist/pptx/{chunk-YARCML7O.mjs → chunk-STLXPKJJ.mjs} +519 -388
  52. package/dist/pptx/{chunk-ADOC5JLI.mjs → chunk-TC7HCF5M.mjs} +76 -2
  53. package/dist/pptx/{chunk-CJU4P5FT.cjs → chunk-WKLHJEPD.cjs} +18 -12
  54. package/dist/pptx/dom/element-styles.d.ts.map +1 -1
  55. package/dist/pptx/dom/elements/chart.d.ts +2 -3
  56. package/dist/pptx/dom/elements/chart.d.ts.map +1 -1
  57. package/dist/pptx/dom/elements/connector.d.ts.map +1 -1
  58. package/dist/pptx/dom/elements/shape-filter-defs.d.ts.map +1 -1
  59. package/dist/pptx/dom/elements/table.d.ts.map +1 -1
  60. package/dist/pptx/dom/index.cjs +272 -261
  61. package/dist/pptx/dom/index.mjs +46 -35
  62. package/dist/pptx/dom/slide-stage.d.ts.map +1 -1
  63. package/dist/pptx/export/html2canvas-clone.cjs +2 -2
  64. package/dist/pptx/export/html2canvas-clone.mjs +1 -1
  65. package/dist/pptx/index.cjs +3065 -2993
  66. package/dist/pptx/index.mjs +4 -4
  67. package/dist/pptx/render/chart-3d-oblique-layout.d.ts.map +1 -1
  68. package/dist/pptx/render/chart-3d-persp-bars.d.ts.map +1 -1
  69. package/dist/pptx/render/chart-3d-persp-layout.d.ts.map +1 -1
  70. package/dist/pptx/render/chart-axis-range.d.ts +7 -0
  71. package/dist/pptx/render/chart-axis-range.d.ts.map +1 -1
  72. package/dist/pptx/render/chart-axis-render.d.ts +3 -1
  73. package/dist/pptx/render/chart-axis-render.d.ts.map +1 -1
  74. package/dist/pptx/render/chart-axis-style.d.ts +5 -0
  75. package/dist/pptx/render/chart-axis-style.d.ts.map +1 -1
  76. package/dist/pptx/render/chart-axis.d.ts +1 -1
  77. package/dist/pptx/render/chart-axis.d.ts.map +1 -1
  78. package/dist/pptx/render/chart-bar-cluster-geometry.d.ts +1 -1
  79. package/dist/pptx/render/chart-bar-cluster-geometry.d.ts.map +1 -1
  80. package/dist/pptx/render/chart-cartesian-area.d.ts.map +1 -1
  81. package/dist/pptx/render/chart-cartesian-axes.d.ts.map +1 -1
  82. package/dist/pptx/render/chart-cartesian-bars.d.ts +3 -3
  83. package/dist/pptx/render/chart-cartesian-line-area.d.ts.map +1 -1
  84. package/dist/pptx/render/chart-cartesian-percent-stacked.d.ts.map +1 -1
  85. package/dist/pptx/render/chart-cartesian-stacked-labels.d.ts +11 -7
  86. package/dist/pptx/render/chart-cartesian-stacked-labels.d.ts.map +1 -1
  87. package/dist/pptx/render/chart-cartesian.d.ts.map +1 -1
  88. package/dist/pptx/render/chart-combo-stock.cjs +3 -3
  89. package/dist/pptx/render/chart-combo-stock.mjs +1 -1
  90. package/dist/pptx/render/chart-combo.d.ts.map +1 -1
  91. package/dist/pptx/render/chart-data-label-anchor.d.ts +4 -1
  92. package/dist/pptx/render/chart-data-label-anchor.d.ts.map +1 -1
  93. package/dist/pptx/render/chart-gridlines-toggle.d.ts +13 -1
  94. package/dist/pptx/render/chart-gridlines-toggle.d.ts.map +1 -1
  95. package/dist/pptx/render/chart-helpers.d.ts +13 -13
  96. package/dist/pptx/render/chart-helpers.d.ts.map +1 -1
  97. package/dist/pptx/render/chart-horizontal-bars-helpers.d.ts +7 -3
  98. package/dist/pptx/render/chart-horizontal-bars-helpers.d.ts.map +1 -1
  99. package/dist/pptx/render/chart-horizontal-bars.d.ts.map +1 -1
  100. package/dist/pptx/render/chart-interaction-stacked.d.ts.map +1 -1
  101. package/dist/pptx/render/chart-line-path.d.ts +9 -0
  102. package/dist/pptx/render/chart-line-path.d.ts.map +1 -1
  103. package/dist/pptx/render/chart-overlays.cjs +7 -7
  104. package/dist/pptx/render/chart-overlays.mjs +1 -1
  105. package/dist/pptx/render/chart-palette.d.ts +5 -14
  106. package/dist/pptx/render/chart-palette.d.ts.map +1 -1
  107. package/dist/pptx/render/chart-plot-clip.d.ts +37 -0
  108. package/dist/pptx/render/chart-plot-clip.d.ts.map +1 -0
  109. package/dist/pptx/render/chart-quick-action-styles.d.ts +5 -3
  110. package/dist/pptx/render/chart-quick-action-styles.d.ts.map +1 -1
  111. package/dist/pptx/render/chart-scatter-x-axis.d.ts.map +1 -1
  112. package/dist/pptx/render/chart-style-palette.d.ts +52 -0
  113. package/dist/pptx/render/chart-style-palette.d.ts.map +1 -0
  114. package/dist/pptx/render/chart-surface-treemap.cjs +4 -4
  115. package/dist/pptx/render/chart-surface-treemap.mjs +1 -1
  116. package/dist/pptx/render/chart-view-model-bars.d.ts +32 -1
  117. package/dist/pptx/render/chart-view-model-bars.d.ts.map +1 -1
  118. package/dist/pptx/render/chart-view-model-build.d.ts.map +1 -1
  119. package/dist/pptx/render/chart-view-model.cjs +53 -41
  120. package/dist/pptx/render/chart-view-model.mjs +1 -1
  121. package/dist/pptx/render/chart-waterfall-map.cjs +6 -6
  122. package/dist/pptx/render/chart-waterfall-map.mjs +1 -1
  123. package/dist/pptx/render/device-pixel-stroke.d.ts +101 -0
  124. package/dist/pptx/render/device-pixel-stroke.d.ts.map +1 -0
  125. package/dist/pptx/render/export-clone.d.ts +4 -0
  126. package/dist/pptx/render/export-clone.d.ts.map +1 -1
  127. package/dist/pptx/render/foreign-object-svg-document.d.ts +12 -0
  128. package/dist/pptx/render/foreign-object-svg-document.d.ts.map +1 -1
  129. package/dist/pptx/render/index.d.ts +3 -0
  130. package/dist/pptx/render/index.d.ts.map +1 -1
  131. package/dist/pptx/render/stroke-outline.d.ts +6 -0
  132. package/dist/pptx/render/stroke-outline.d.ts.map +1 -1
  133. package/dist/pptx/render/stroke-style.d.ts +8 -2
  134. package/dist/pptx/render/stroke-style.d.ts.map +1 -1
  135. package/dist/pptx/render/tab-row-actions.d.ts +40 -0
  136. package/dist/pptx/render/tab-row-actions.d.ts.map +1 -0
  137. package/dist/pptx/render/table-cell-css.d.ts +3 -2
  138. package/dist/pptx/render/table-cell-css.d.ts.map +1 -1
  139. package/dist/pptx/render/table-cell-edit.d.ts +1 -1
  140. package/dist/pptx/render/table-cell-edit.d.ts.map +1 -1
  141. package/dist/pptx/render/table-cell-paragraphs.d.ts +29 -0
  142. package/dist/pptx/render/table-cell-paragraphs.d.ts.map +1 -0
  143. package/dist/pptx/render/table-style-borders.d.ts.map +1 -1
  144. package/dist/pptx/render/table-style.d.ts +2 -0
  145. package/dist/pptx/render/table-style.d.ts.map +1 -1
  146. package/dist/pptx/render/title-bar.d.ts +5 -0
  147. package/dist/pptx/render/title-bar.d.ts.map +1 -1
  148. package/dist/pptx/render/viewer-root-options.d.ts +11 -3
  149. package/dist/pptx/render/viewer-root-options.d.ts.map +1 -1
  150. package/dist/pptx/web-components/index.d.ts.map +1 -1
  151. package/dist/pptx/web-components/office-token-bridge.d.ts +1 -1
  152. package/dist/pptx/web-components/office-token-bridge.d.ts.map +1 -1
  153. package/dist/pptx/web-components/ribbon-actions.d.ts +8 -0
  154. package/dist/pptx/web-components/ribbon-actions.d.ts.map +1 -0
  155. package/dist/presence.js +3 -3
  156. package/dist/ribbon/ribbon-actions.d.ts +119 -0
  157. package/dist/ribbon/ribbon-actions.d.ts.map +1 -0
  158. package/dist/ribbon/ribbon-tabs.d.ts +2 -1
  159. package/dist/ribbon/ribbon-tabs.d.ts.map +1 -1
  160. package/dist/smartart/smartart-svg.d.ts +3 -2
  161. package/dist/smartart.js +3 -3
  162. package/dist/suite/attachment-store.d.ts +13 -0
  163. package/dist/suite/document-store.d.ts +31 -0
  164. package/dist/suite/index.d.ts +2 -0
  165. package/dist/suite.js +132 -1
  166. package/dist/teams/app/channel-tab.d.ts +5 -0
  167. package/dist/teams/chat-composer.d.ts +3 -0
  168. package/dist/teams.js +7 -7
  169. package/dist/theme.js +2 -2
  170. package/dist/tokens.d.ts +9 -0
  171. package/dist/tokens.d.ts.map +1 -1
  172. package/dist/visio/styles/index.d.ts +2 -0
  173. package/dist/visio/styles/theme.d.ts +11 -0
  174. package/dist/visio/styles.d.ts +2 -2
  175. package/dist/visio.js +66 -21
  176. package/dist/xlsx/backstage/index.d.ts +4 -1
  177. package/dist/xlsx/backstage/pages-share.d.ts +19 -0
  178. package/dist/xlsx/backstage/parts.d.ts +3 -0
  179. package/dist/xlsx/calc-preparation.d.ts +44 -0
  180. package/dist/xlsx/chart-fill-binding.d.ts +2 -2
  181. package/dist/xlsx/chart-series-gradient-type.d.ts +3 -2
  182. package/dist/xlsx/collaboration-session.d.ts +9 -0
  183. package/dist/xlsx/collaboration-types.d.ts +41 -0
  184. package/dist/xlsx/collaboration.d.ts +56 -0
  185. package/dist/xlsx/component.d.ts +8 -0
  186. package/dist/xlsx/dialogs/comments-list.d.ts +4 -0
  187. package/dist/xlsx/dialogs/help-dialogs.d.ts +1 -1
  188. package/dist/xlsx/editor-core.d.ts +6 -0
  189. package/dist/xlsx/element-api.d.ts +19 -1
  190. package/dist/xlsx/events.d.ts +4 -1
  191. package/dist/xlsx/grid/remote-layer.d.ts +3 -0
  192. package/dist/xlsx/grid/sparkline.d.ts +3 -0
  193. package/dist/xlsx/grid/styles.d.ts +1 -1
  194. package/dist/xlsx/index.d.ts +1 -0
  195. package/dist/xlsx/ribbon-actions.d.ts +22 -0
  196. package/dist/xlsx/shell-commands.d.ts +1 -1
  197. package/dist/xlsx/title-bar.d.ts +4 -2
  198. package/dist/xlsx.js +801 -92
  199. package/package.json +2 -2
  200. package/dist/pptx/web-components/status-bar-styles.d.ts +0 -3
  201. package/dist/pptx/web-components/status-bar-styles.d.ts.map +0 -1
  202. package/dist/pptx/web-components/title-bar-styles.d.ts +0 -7
  203. package/dist/pptx/web-components/title-bar-styles.d.ts.map +0 -1
package/dist/teams.js CHANGED
@@ -1,8 +1,8 @@
1
- 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-KVKKXRL7.js';
1
+ 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';
2
2
  export { TeamsPresentationPreview, defineTeamsPresentationPreview } from './chunk-SNV6YKPC.js';
3
- import './chunk-X7RINDJQ.js';
4
- import './chunk-M5DTJSOV.js';
5
- import './chunk-BOX43CZD.js';
6
- import './chunk-3FPW7M6U.js';
7
- import './chunk-USDLALB5.js';
8
- import './chunk-JFJXBYRD.js';
3
+ import './chunk-56A2JK63.js';
4
+ import './chunk-723JC3OC.js';
5
+ import './chunk-M6GF5ED2.js';
6
+ import './chunk-TWQ45BFL.js';
7
+ import './chunk-IY7QJLQG.js';
8
+ import './chunk-2WLRFPMW.js';
package/dist/theme.js CHANGED
@@ -1,2 +1,2 @@
1
- export { THEME_CSS, THEME_STYLE_ID, installOfficeUiTheme, shadcnBridge, themeBridge } from './chunk-X7RINDJQ.js';
2
- export { COMPACT, FOCUS_RING, OFFICE_TOKENS, TOUCH, tok } from './chunk-JFJXBYRD.js';
1
+ export { THEME_CSS, THEME_STYLE_ID, installOfficeUiTheme, shadcnBridge, themeBridge } from './chunk-56A2JK63.js';
2
+ export { COMPACT, FOCUS_RING, OFFICE_TOKENS, TOUCH, tok } from './chunk-2WLRFPMW.js';
package/dist/tokens.d.ts CHANGED
@@ -43,6 +43,8 @@ export declare const OFFICE_TOKENS: {
43
43
  readonly '--office-font-size-md': '14px';
44
44
  readonly '--office-font-size-lg': '15px';
45
45
  readonly '--office-font-size-xl': '18px';
46
+ /** Smallest text size that keeps mobile browsers from zooming a focused field. */
47
+ readonly '--office-font-size-touch': '16px';
46
48
  readonly '--office-font-weight-medium': '500';
47
49
  readonly '--office-font-weight-bold': '600';
48
50
  readonly '--office-line-height': '1.4';
@@ -71,6 +73,8 @@ export declare const OFFICE_TOKENS: {
71
73
  readonly '--office-focus-offset': '2px';
72
74
  readonly '--office-target-size': '28px';
73
75
  readonly '--office-target-size-touch': '44px';
76
+ /** Minimum pointer target on touch layouts. */
77
+ readonly '--office-touch-target': '36px';
74
78
  readonly '--office-control-height': '24px';
75
79
  readonly '--office-control-height-md': '28px';
76
80
  readonly '--office-control-height-lg': '32px';
@@ -154,6 +158,7 @@ export declare const OFFICE_TOKENS: {
154
158
  readonly '--office-launcher-height': '14px';
155
159
  readonly '--office-tab-indicator-width': '2.5px';
156
160
  readonly '--office-status-bar-height': '24px';
161
+ readonly '--office-status-bar-separator-opacity': '1';
157
162
  readonly '--office-tab-height': '28px';
158
163
  readonly '--office-tab-max-width': '220px';
159
164
  readonly '--office-zoom-slider-width': '120px';
@@ -202,6 +207,8 @@ export declare const OFFICE_TOKENS: {
202
207
  readonly '--office-avatar-size': '48px';
203
208
  readonly '--office-avatar-color': 'var(--office-muted-foreground, #6b7280)';
204
209
  readonly '--office-toast-width': '360px';
210
+ readonly '--office-comments-pane-width': '300px';
211
+ readonly '--office-comment-avatar-size': '24px';
205
212
  readonly '--office-account-field-width': '320px';
206
213
  readonly '--office-gallery-trigger-height': '24px';
207
214
  readonly '--office-gallery-strip-background': 'color-mix(in srgb, var(--office-surface, #f3f4f6) 30%, transparent)';
@@ -218,6 +225,8 @@ export declare const OFFICE_TOKENS: {
218
225
  readonly '--office-title-bar-mark-size': '20px';
219
226
  readonly '--office-title-bar-mark-background': 'var(--office-accent, #2563eb)';
220
227
  readonly '--office-title-bar-mark-foreground': 'var(--office-accent-foreground, #ffffff)';
228
+ readonly '--office-title-bar-name-foreground': 'var(--office-title-bar-foreground, var(--office-foreground, #1f2937))';
229
+ readonly '--office-title-bar-result-selected': 'var(--office-selected, #e5e7eb)';
221
230
  readonly '--office-title-bar-name-max-width': '240px';
222
231
  readonly '--office-title-bar-name-max-width-narrow': '140px';
223
232
  readonly '--office-title-bar-search-max-width': '448px';
@@ -1 +1 @@
1
- {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
+ import { visioThemeAliases } from './theme.js';
1
2
  /**
2
3
  * Viewer stylesheets as text for the shadow root. New styles are CSS files here; the legacy
3
4
  * `styles.ts` string moves into this directory when it is next changed.
4
5
  */
5
6
  export declare const canvasAndRibbonStyles: string;
7
+ export { visioThemeAliases };
@@ -0,0 +1,11 @@
1
+ /**
2
+ * The viewer's colours follow the shared `--office-*` theme (light/dark, the launcher's choice).
3
+ * The `--vv-*` custom properties stay as optional host overrides and appear only in this block.
4
+ * `inch` is not a colour: it is the canvas scale set by `viewer-canvas.ts`.
5
+ */
6
+ export declare const visioThemeAliases = ":host {\n --_vv-bg:var(--vv-background,var(--office-surface,#eceae8));\n --_vv-surface:var(--vv-surface,var(--office-background,#fff));\n --_vv-secondary:var(--vv-secondary,var(--office-surface,#f3f2f1));\n --_vv-ink:var(--vv-ink,var(--office-foreground,#1f1f1f));\n --_vv-muted:var(--vv-muted,var(--office-muted-foreground,#605e5c));\n --_vv-border:var(--vv-border,var(--office-border,#e1dfdd));\n --_vv-accent:var(--vv-accent,var(--office-accent,#3955a3));\n --_vv-accent-soft:var(--vv-accent-soft,color-mix(in srgb,var(--_vv-accent) 10%,transparent));\n --_vv-accent-ink:var(--vv-accent-ink,var(--office-accent-foreground,#fff));\n --_vv-focus:var(--vv-focus,var(--office-ring,var(--_vv-accent)));\n --_vv-danger:var(--vv-danger,var(--office-danger,#b42318));\n --_vv-shadow:var(--vv-shadow,var(--office-shadow,0 2px 8px rgb(0 0 0 / 14%)));\n}\n";
7
+ /**
8
+ * Feeds the shared controls (ribbon, dialogs) from the aliases above. It sits on the shadow
9
+ * root's children, not on `:host`, because a custom property cannot read the value it replaces.
10
+ */
11
+ export declare const visioThemeBridge: string;
@@ -1,2 +1,2 @@
1
- /** Inherited public tokens use local fallback aliases so host themes are never shadowed. */
2
- export declare const viewerStyles = "\n:host {\n --_vv-bg:var(--vv-background,#eceae8); --_vv-surface:var(--vv-surface,#fff);\n --_vv-secondary:var(--vv-secondary,#f3f2f1); --_vv-ink:var(--vv-ink,#1f1f1f);\n --_vv-muted:var(--vv-muted,#605e5c); --_vv-border:var(--vv-border,#e1dfdd);\n --_vv-accent:var(--vv-accent,#3955a3); --_vv-accent-soft:var(--vv-accent-soft,rgba(57,85,163,.10));\n display:flex; flex-direction:column; min-width:0; min-height:320px; height:100%; overflow:hidden;\n color:var(--_vv-ink); background:var(--_vv-bg); font:12px/1.5 \"Segoe UI\",Arial,sans-serif; contain:layout;\n}\n* { box-sizing:border-box; }\n[hidden] { display:none !important; }\nbutton,select,input,textarea { font:inherit; color:inherit; border:1px solid var(--_vv-border); background:var(--_vv-surface); border-radius:4px; min-height:28px; padding:3px 8px; }\nbutton { cursor:pointer; }\nbutton:hover:enabled { background:var(--_vv-accent-soft); border-color:var(--_vv-accent); }\nbutton:disabled { opacity:.4; cursor:default; }\nbutton:focus-visible,select:focus-visible,input:focus-visible,textarea:focus-visible,summary:focus-visible,[tabindex]:focus-visible { outline:2px solid var(--vv-focus,var(--_vv-accent)); outline-offset:2px; }\nbutton[aria-pressed=\"true\"] { color:var(--_vv-accent); background:var(--_vv-accent-soft); }\n.toolbar { flex:none; min-width:0; border-bottom:1px solid var(--_vv-border); background:var(--_vv-surface); }\n.spacer { flex:1; }\n.ribbon-content { min-height:82px; display:flex; align-items:stretch; gap:0; padding:2px 4px; overflow-x:auto; }\n.ribbon-group { display:flex; flex-direction:column; justify-content:space-between; flex:none; gap:2px; padding:3px 10px 4px; border-right:1px solid var(--_vv-border); }\n.group-label { font-size:10px; line-height:12px; color:var(--_vv-muted); text-align:center; }\n.ribbon-actions { display:flex; align-items:stretch; gap:2px; flex:1; }\n.ribbon-command { display:flex; flex-direction:column; justify-content:center; align-items:center; gap:2px; min-width:70px; padding:2px 6px; border-color:transparent; background:transparent; font-size:11px; white-space:nowrap; }\n.ribbon-hint { align-self:center; flex:none; margin:0; padding:0 16px; font-size:11px; line-height:18px; color:var(--_vv-muted); }\n.workspace { position:relative; display:flex; flex:1; min-width:0; min-height:0; overflow:hidden; }\n.pane-heading { height:37px; display:flex; align-items:center; justify-content:space-between; gap:8px; padding:8px 10px; border-bottom:1px solid var(--_vv-border); font-size:11px; font-weight:600; }\n.inspector-kind { color:var(--_vv-muted); font-size:10px; font-weight:400; }\n.viewport { position:relative; display:flex; flex-direction:column; flex:1; overflow:auto; min-width:0; min-height:0; padding:16px 4px; background:var(--_vv-bg); }\n.paper { display:block; flex:none; background:white; box-shadow:var(--vv-shadow,0 2px 8px rgb(0 0 0 / 14%)); margin:auto; }\n.paper [data-shape-id] { cursor:pointer; }\n.paper [data-selected=\"true\"] > [data-geometry] { stroke:var(--_vv-accent) !important; stroke-width:.025 !important; }\n.inspector-pane { flex:0 0 288px; width:288px; min-width:0; overflow:auto; border-left:1px solid var(--_vv-border); background:var(--_vv-secondary); }\n.inspector-body { display:flex; flex-direction:column; gap:12px; padding:12px 10px; }\n.inspector-card,.edit-controls,.layer-controls { min-width:0; padding:8px; margin:0; border:1px solid var(--_vv-border); border-radius:4px; background:var(--_vv-surface); font-size:11px; line-height:17px; }\n.document-card h2 { margin:0 0 8px; font-size:10px; font-weight:500; letter-spacing:.5px; text-transform:uppercase; color:var(--_vv-muted); }\n.current-page-name { margin:0 0 8px; font-size:12px; font-weight:500; overflow-wrap:anywhere; }\n.document-card dl { display:grid; grid-template-columns:1fr auto; gap:4px 10px; margin:0; font-size:11px; }\n.document-card dt { color:var(--_vv-muted); }\n.document-card dd { margin:0; text-align:right; overflow-wrap:anywhere; }\n.selection-hint { margin:0; padding:0 2px; color:var(--_vv-muted); font-size:11px; }\nsummary { cursor:pointer; min-height:22px; line-height:22px; font-weight:500; }\nsummary::marker { color:var(--_vv-muted); font-size:10px; }\n.shape-inspector div { max-height:260px; overflow:auto; }\n.shape-inspector p { margin:6px 0; overflow-wrap:anywhere; }\n.shape-inspector dl { display:grid; grid-template-columns:minmax(60px,1fr) 1.5fr; gap:6px 10px; }\n.shape-inspector dt { font-weight:500; }\n.shape-inspector dd { margin:0; overflow-wrap:anywhere; white-space:pre-wrap; }\n.shape-inspector h3 { margin:12px 0 5px; font-size:11px; }\n.shape-inspector a { color:var(--_vv-accent); overflow-wrap:anywhere; }\n.edit-controls p,.layer-controls p { margin:6px 0; color:var(--_vv-muted); overflow-wrap:anywhere; }\n.edit-controls textarea { display:block; width:100%; resize:vertical; max-height:180px; margin-top:4px; background:var(--_vv-secondary); }\n.edit-controls label { display:block; margin-top:8px; }\n.edit-actions { display:flex; flex-wrap:wrap; gap:4px; margin-top:8px; }\n.edit-actions button { font-size:11px; padding:3px 7px; }\n.edit-actions [data-edit=\"apply\"]:enabled { background:var(--_vv-accent); border-color:var(--_vv-accent); color:var(--vv-accent-ink,#fff); }\n.edit-controls [data-geometry] { min-width:0; margin:8px 0 0; padding:6px; border:1px solid var(--_vv-border); }\n.edit-controls [data-geometry-field] { display:block; width:100%; min-width:0; margin-top:4px; }\n.edit-controls [data-geometry-error] { color:var(--vv-danger,#b42318); }\n.edit-controls [data-edit-error] { color:var(--vv-danger,#b42318); }\n.edit-controls [data-edit-diagnostics] { max-height:100px; overflow:auto; padding-left:16px; }\n.layer-controls [data-layer-list] { max-height:240px; overflow:auto; }\n.layer-controls fieldset { border:1px solid var(--_vv-border); margin:6px 0; padding:6px; min-width:0; }\n.layer-controls legend { max-width:100%; overflow-wrap:anywhere; }\n.layer-controls fieldset div { display:flex; align-items:center; gap:6px; margin:3px 0; }\n.layer-controls label { display:flex; align-items:center; gap:6px; overflow-wrap:anywhere; }\n.layer-controls input { flex-shrink:0; width:16px; height:16px; min-height:16px; padding:0; accent-color:var(--_vv-accent); }\n.notes ul { max-height:220px; overflow:auto; padding-left:17px; margin:6px 0 0; color:var(--_vv-muted); }\n.notes li { margin:5px 0; overflow-wrap:anywhere; }\n.notes-strip { flex:none; display:flex; align-items:center; justify-content:space-between; min-height:25.5px; padding:0 12px; border-top:1px solid var(--_vv-border); background:var(--_vv-bg); color:var(--_vv-muted); font-size:10px; }\n.notes-strip button { min-height:24.5px; padding:2px 0; border:0; background:transparent; color:var(--_vv-muted); font-size:11px; }\n.notes-strip button::before { content:\"\u25B8\"; margin-right:6px; }\n.notes-strip button[aria-expanded=\"true\"]::before { content:\"\u25BE\"; }\n.status { flex:none; display:flex; align-items:center; justify-content:space-between; gap:12px; min-width:0; min-height:29px; padding:0 8px 0 12px; border-top:1px solid var(--_vv-border); color:var(--_vv-muted); background:var(--_vv-surface); font-size:10px; }\n.status-message { display:flex; gap:16px; min-width:0; }\n.status-message span { overflow:hidden; white-space:nowrap; text-overflow:ellipsis; }\n.empty { max-width:360px; margin:60px auto; padding:16px; text-align:center; color:var(--_vv-muted); font-size:12px; }\n.empty strong { display:block; color:var(--_vv-ink); font-size:18px; font-weight:500; margin-bottom:8px; }\n@media(max-width:1100px) { .ribbon-hint { display:none; } [data-diagnostics] { display:none; } }\n@media(max-width:760px) {\n button,select,input,textarea { min-height:44px; }\n button { min-width:44px; }\n summary { min-height:44px; line-height:44px; }\n .ribbon-content { min-height:86px; }\n .ribbon-group { padding:4px 8px; }\n #home-panel>.ribbon-group:not(.search-group):not(.undo-group) { display:none; }\n .ribbon-command { min-width:90px; }\n .workspace { display:block; overflow:auto; }\n .viewport { height:340px; min-height:260px; padding:16px 4px; }\n .inspector-pane { width:100%; overflow:visible; border-left:0; border-top:1px solid var(--_vv-border); }\n .inspector-body { gap:8px; padding:10px; }\n .inspector-card,.edit-controls,.layer-controls { font-size:12px; }\n .layer-controls label { min-height:44px; }\n .layer-controls input { min-width:20px; width:20px; height:20px; min-height:20px; }\n .notes-strip { min-height:44px; padding:0 10px; }\n .notes-strip button { min-height:44px; }\n .status { flex-wrap:wrap; gap:0; padding:4px 8px; }\n .status-message { width:100%; min-height:18px; }\n}\n@media(pointer:coarse) {\n button,select,input,textarea { min-height:44px; }\n button { min-width:44px; }\n summary,.layer-controls label { min-height:44px; line-height:44px; }\n .ribbon-content { min-height:96px; }\n .notes-strip button { min-height:44px; height:44px; }\n .layer-controls input { min-height:20px; }\n}\n/* Suite ribbon: tabs lead directly into Visio command groups. */\n.ribbon-content { min-height:104px; padding:4px 4px; }\n.ribbon-hint { order:3; padding:10px 18px; }\n.ribbon-command { min-width:82px; }\n.pane-close { display:none; }\n@media(max-width:760px) {\n .ribbon-content { min-height:54px; padding:4px 0; }\n .search-feedback,.group-label { display:none; }\n .ribbon-content { overflow-x:auto; scroll-snap-type:x mandatory; }\n .workspace { display:flex; position:relative; overflow:hidden; }\n .viewport { flex:1; width:100%; height:100%; min-height:0; padding:16px 4px; }\n .inspector-pane { position:absolute; inset:0 0 0 auto; width:min(320px,100%); z-index:4; overflow:auto; border-left:1px solid var(--_vv-border); box-shadow:-8px 0 24px #0002; }\n .pane-close { display:block; width:44px; height:44px; padding:0; font-size:22px; background:transparent; border:0; }\n .inspector-kind { margin-left:auto; }\n .notes-strip { display:none; }\n .status { min-height:48px; padding:2px 8px; }\n .status-message { display:none; }\n}\n.toolbar { position:relative; }\n.ribbon-tools { display:flex; flex:none; order:0; }\n.tools-content { display:flex; align-items:stretch; }\n.ribbon-tools>summary { display:none; }\n.ribbon-command { font-size:12px; min-width:88px; }\n.ribbon-hint { font-size:12px; line-height:20px; flex:1; }\n.group-label { font-size:11px; line-height:14px; }\n.inspector-card,.edit-controls,.layer-controls { font-size:12px; line-height:18px; }\n.selection-hint,.document-card dl { font-size:12px; }\n.pane-heading { font-size:12px; }\n.inspector-pane .pane-heading { position:sticky; top:0; z-index:1; background:var(--_vv-secondary); flex:none; }\n.status .notes-strip { border:0; padding:0 8px; background:transparent; min-height:28px; }\n.status .notes-strip>span { display:none; }\n.status-message { flex:1; }\n@media(max-width:760px) {\n #home-panel { overflow:visible; min-height:54px; padding:4px; }\n .ribbon-tools { display:block; flex:0 0 84px; width:84px; order:1; }\n .ribbon-tools>summary { display:flex; min-height:44px; align-items:center; justify-content:center; gap:6px; padding:0 10px; border:1px solid var(--_vv-border); background:var(--_vv-surface); border-radius:4px; font-size:12px; cursor:pointer; list-style:none; }\n .ribbon-tools>summary::-webkit-details-marker { display:none; }\n .ribbon-tools .tools-content { display:flex; position:absolute; top:100%; left:4px; right:4px; z-index:6; flex-direction:column; padding:12px; gap:12px; border:1px solid var(--_vv-border); border-radius:4px; background:var(--_vv-surface); box-shadow:0 12px 28px #0003; max-height:60vh; overflow:auto; }\n .ribbon-tools:not([open])>.tools-content { display:none; }\n .ribbon-tools .ribbon-group { display:flex; width:100%; min-height:64px; border:0; padding:0; }\n .ribbon-tools .ribbon-actions { justify-content:space-between; }\n .ribbon-tools .ribbon-command { min-width:88px; font-size:12px; }\n .ribbon-tools .search-feedback { display:block; }\n .status { flex-wrap:nowrap; gap:4px; min-height:48px; }\n .status .notes-strip { display:none; }\n}\n@media(prefers-reduced-motion:reduce) { * { scroll-behavior:auto !important; } }\n";
1
+ /** Colours come from the alias block in `styles/theme.ts`, which follows the shared theme. */
2
+ export declare const viewerStyles = "\n:host {\n display:flex; flex-direction:column; min-width:0; min-height:320px; height:100%; overflow:hidden;\n color:var(--_vv-ink); background:var(--_vv-bg); font:12px/1.5 \"Segoe UI\",Arial,sans-serif; contain:layout;\n}\n* { box-sizing:border-box; }\n[hidden] { display:none !important; }\nbutton,select,input,textarea { font:inherit; color:inherit; border:1px solid var(--_vv-border); background:var(--_vv-surface); border-radius:4px; min-height:28px; padding:3px 8px; }\nbutton { cursor:pointer; }\nbutton:hover:enabled { background:var(--_vv-accent-soft); border-color:var(--_vv-accent); }\nbutton:disabled { opacity:.4; cursor:default; }\nbutton:focus-visible,select:focus-visible,input:focus-visible,textarea:focus-visible,summary:focus-visible,[tabindex]:focus-visible { outline:2px solid var(--_vv-focus); outline-offset:2px; }\nbutton[aria-pressed=\"true\"] { color:var(--_vv-accent); background:var(--_vv-accent-soft); }\n.toolbar { flex:none; min-width:0; border-bottom:1px solid var(--_vv-border); background:var(--_vv-surface); }\n.spacer { flex:1; }\n.ribbon-content { min-height:82px; display:flex; align-items:stretch; gap:0; padding:2px 4px; overflow-x:auto; }\n.ribbon-group { display:flex; flex-direction:column; justify-content:space-between; flex:none; gap:2px; padding:3px 10px 4px; border-right:1px solid var(--_vv-border); }\n.group-label { font-size:10px; line-height:12px; color:var(--_vv-muted); text-align:center; }\n.ribbon-actions { display:flex; align-items:stretch; gap:2px; flex:1; }\n.ribbon-command { display:flex; flex-direction:column; justify-content:center; align-items:center; gap:2px; min-width:70px; padding:2px 6px; border-color:transparent; background:transparent; font-size:11px; white-space:nowrap; }\n.ribbon-hint { align-self:center; flex:none; margin:0; padding:0 16px; font-size:11px; line-height:18px; color:var(--_vv-muted); }\n.workspace { position:relative; display:flex; flex:1; min-width:0; min-height:0; overflow:hidden; }\n.pane-heading { height:37px; display:flex; align-items:center; justify-content:space-between; gap:8px; padding:8px 10px; border-bottom:1px solid var(--_vv-border); font-size:11px; font-weight:600; }\n.inspector-kind { color:var(--_vv-muted); font-size:10px; font-weight:400; }\n.viewport { position:relative; display:flex; flex-direction:column; flex:1; overflow:auto; min-width:0; min-height:0; padding:16px 4px; background:var(--_vv-bg); }\n.paper { display:block; flex:none; background:white; box-shadow:var(--_vv-shadow); margin:auto; }\n.paper [data-shape-id] { cursor:pointer; }\n.paper [data-selected=\"true\"] > [data-geometry] { stroke:var(--_vv-accent) !important; stroke-width:.025 !important; }\n.inspector-pane { flex:0 0 288px; width:288px; min-width:0; overflow:auto; border-left:1px solid var(--_vv-border); background:var(--_vv-secondary); }\n.inspector-body { display:flex; flex-direction:column; gap:12px; padding:12px 10px; }\n.inspector-card,.edit-controls,.layer-controls { min-width:0; padding:8px; margin:0; border:1px solid var(--_vv-border); border-radius:4px; background:var(--_vv-surface); font-size:11px; line-height:17px; }\n.document-card h2 { margin:0 0 8px; font-size:10px; font-weight:500; letter-spacing:.5px; text-transform:uppercase; color:var(--_vv-muted); }\n.current-page-name { margin:0 0 8px; font-size:12px; font-weight:500; overflow-wrap:anywhere; }\n.document-card dl { display:grid; grid-template-columns:1fr auto; gap:4px 10px; margin:0; font-size:11px; }\n.document-card dt { color:var(--_vv-muted); }\n.document-card dd { margin:0; text-align:right; overflow-wrap:anywhere; }\n.selection-hint { margin:0; padding:0 2px; color:var(--_vv-muted); font-size:11px; }\nsummary { cursor:pointer; min-height:22px; line-height:22px; font-weight:500; }\nsummary::marker { color:var(--_vv-muted); font-size:10px; }\n.shape-inspector div { max-height:260px; overflow:auto; }\n.shape-inspector p { margin:6px 0; overflow-wrap:anywhere; }\n.shape-inspector dl { display:grid; grid-template-columns:minmax(60px,1fr) 1.5fr; gap:6px 10px; }\n.shape-inspector dt { font-weight:500; }\n.shape-inspector dd { margin:0; overflow-wrap:anywhere; white-space:pre-wrap; }\n.shape-inspector h3 { margin:12px 0 5px; font-size:11px; }\n.shape-inspector a { color:var(--_vv-accent); overflow-wrap:anywhere; }\n.edit-controls p,.layer-controls p { margin:6px 0; color:var(--_vv-muted); overflow-wrap:anywhere; }\n.edit-controls textarea { display:block; width:100%; resize:vertical; max-height:180px; margin-top:4px; background:var(--_vv-secondary); }\n.edit-controls label { display:block; margin-top:8px; }\n.edit-actions { display:flex; flex-wrap:wrap; gap:4px; margin-top:8px; }\n.edit-actions button { font-size:11px; padding:3px 7px; }\n.edit-actions [data-edit=\"apply\"]:enabled { background:var(--_vv-accent); border-color:var(--_vv-accent); color:var(--_vv-accent-ink); }\n.edit-controls [data-geometry] { min-width:0; margin:8px 0 0; padding:6px; border:1px solid var(--_vv-border); }\n.edit-controls [data-geometry-field] { display:block; width:100%; min-width:0; margin-top:4px; }\n.edit-controls [data-geometry-error] { color:var(--_vv-danger); }\n.edit-controls [data-edit-error] { color:var(--_vv-danger); }\n.edit-controls [data-edit-diagnostics] { max-height:100px; overflow:auto; padding-left:16px; }\n.layer-controls [data-layer-list] { max-height:240px; overflow:auto; }\n.layer-controls fieldset { border:1px solid var(--_vv-border); margin:6px 0; padding:6px; min-width:0; }\n.layer-controls legend { max-width:100%; overflow-wrap:anywhere; }\n.layer-controls fieldset div { display:flex; align-items:center; gap:6px; margin:3px 0; }\n.layer-controls label { display:flex; align-items:center; gap:6px; overflow-wrap:anywhere; }\n.layer-controls input { flex-shrink:0; width:16px; height:16px; min-height:16px; padding:0; accent-color:var(--_vv-accent); }\n.notes ul { max-height:220px; overflow:auto; padding-left:17px; margin:6px 0 0; color:var(--_vv-muted); }\n.notes li { margin:5px 0; overflow-wrap:anywhere; }\n.notes-strip { flex:none; display:flex; align-items:center; justify-content:space-between; min-height:25.5px; padding:0 12px; border-top:1px solid var(--_vv-border); background:var(--_vv-bg); color:var(--_vv-muted); font-size:10px; }\n.notes-strip button { min-height:24.5px; padding:2px 0; border:0; background:transparent; color:var(--_vv-muted); font-size:11px; }\n.notes-strip button::before { content:\"\u25B8\"; margin-right:6px; }\n.notes-strip button[aria-expanded=\"true\"]::before { content:\"\u25BE\"; }\n.status { flex:none; display:flex; align-items:center; justify-content:space-between; gap:12px; min-width:0; min-height:29px; padding:0 8px 0 12px; border-top:1px solid var(--_vv-border); color:var(--_vv-muted); background:var(--_vv-surface); font-size:10px; }\n.status-message { display:flex; gap:16px; min-width:0; }\n.status-message span { overflow:hidden; white-space:nowrap; text-overflow:ellipsis; }\n.empty { max-width:360px; margin:60px auto; padding:16px; text-align:center; color:var(--_vv-muted); font-size:12px; }\n.empty strong { display:block; color:var(--_vv-ink); font-size:18px; font-weight:500; margin-bottom:8px; }\n@media(max-width:1100px) { .ribbon-hint { display:none; } [data-diagnostics] { display:none; } }\n@media(max-width:760px) {\n button,select,input,textarea { min-height:44px; }\n button { min-width:44px; }\n summary { min-height:44px; line-height:44px; }\n .ribbon-content { min-height:86px; }\n .ribbon-group { padding:4px 8px; }\n #home-panel>.ribbon-group:not(.search-group):not(.undo-group) { display:none; }\n .ribbon-command { min-width:90px; }\n .workspace { display:block; overflow:auto; }\n .viewport { height:340px; min-height:260px; padding:16px 4px; }\n .inspector-pane { width:100%; overflow:visible; border-left:0; border-top:1px solid var(--_vv-border); }\n .inspector-body { gap:8px; padding:10px; }\n .inspector-card,.edit-controls,.layer-controls { font-size:12px; }\n .layer-controls label { min-height:44px; }\n .layer-controls input { min-width:20px; width:20px; height:20px; min-height:20px; }\n .notes-strip { min-height:44px; padding:0 10px; }\n .notes-strip button { min-height:44px; }\n .status { flex-wrap:wrap; gap:0; padding:4px 8px; }\n .status-message { width:100%; min-height:18px; }\n}\n@media(pointer:coarse) {\n button,select,input,textarea { min-height:44px; }\n button { min-width:44px; }\n summary,.layer-controls label { min-height:44px; line-height:44px; }\n .ribbon-content { min-height:96px; }\n .notes-strip button { min-height:44px; height:44px; }\n .layer-controls input { min-height:20px; }\n}\n/* Suite ribbon: tabs lead directly into Visio command groups. */\n.ribbon-content { min-height:104px; padding:4px 4px; }\n.ribbon-hint { order:3; padding:10px 18px; }\n.ribbon-command { min-width:82px; }\n.pane-close { display:none; }\n@media(max-width:760px) {\n .ribbon-content { min-height:54px; padding:4px 0; }\n .search-feedback,.group-label { display:none; }\n .ribbon-content { overflow-x:auto; scroll-snap-type:x mandatory; }\n .workspace { display:flex; position:relative; overflow:hidden; }\n .viewport { flex:1; width:100%; height:100%; min-height:0; padding:16px 4px; }\n .inspector-pane { position:absolute; inset:0 0 0 auto; width:min(320px,100%); z-index:4; overflow:auto; border-left:1px solid var(--_vv-border); box-shadow:-8px 0 24px #0002; }\n .pane-close { display:block; width:44px; height:44px; padding:0; font-size:22px; background:transparent; border:0; }\n .inspector-kind { margin-left:auto; }\n .notes-strip { display:none; }\n .status { min-height:48px; padding:2px 8px; }\n .status-message { display:none; }\n}\n.toolbar { position:relative; }\n.ribbon-tools { display:flex; flex:none; order:0; }\n.tools-content { display:flex; align-items:stretch; }\n.ribbon-tools>summary { display:none; }\n.ribbon-command { font-size:12px; min-width:88px; }\n.ribbon-hint { font-size:12px; line-height:20px; flex:1; }\n.group-label { font-size:11px; line-height:14px; }\n.inspector-card,.edit-controls,.layer-controls { font-size:12px; line-height:18px; }\n.selection-hint,.document-card dl { font-size:12px; }\n.pane-heading { font-size:12px; }\n.inspector-pane .pane-heading { position:sticky; top:0; z-index:1; background:var(--_vv-secondary); flex:none; }\n.status .notes-strip { border:0; padding:0 8px; background:transparent; min-height:28px; }\n.status .notes-strip>span { display:none; }\n.status-message { flex:1; }\n@media(max-width:760px) {\n #home-panel { overflow:visible; min-height:54px; padding:4px; }\n .ribbon-tools { display:block; flex:0 0 84px; width:84px; order:1; }\n .ribbon-tools>summary { display:flex; min-height:44px; align-items:center; justify-content:center; gap:6px; padding:0 10px; border:1px solid var(--_vv-border); background:var(--_vv-surface); border-radius:4px; font-size:12px; cursor:pointer; list-style:none; }\n .ribbon-tools>summary::-webkit-details-marker { display:none; }\n .ribbon-tools .tools-content { display:flex; position:absolute; top:100%; left:4px; right:4px; z-index:6; flex-direction:column; padding:12px; gap:12px; border:1px solid var(--_vv-border); border-radius:4px; background:var(--_vv-surface); box-shadow:0 12px 28px #0003; max-height:60vh; overflow:auto; }\n .ribbon-tools:not([open])>.tools-content { display:none; }\n .ribbon-tools .ribbon-group { display:flex; width:100%; min-height:64px; border:0; padding:0; }\n .ribbon-tools .ribbon-actions { justify-content:space-between; }\n .ribbon-tools .ribbon-command { min-width:88px; font-size:12px; }\n .ribbon-tools .search-feedback { display:block; }\n .status { flex-wrap:nowrap; gap:4px; min-height:48px; }\n .status .notes-strip { display:none; }\n}\n@media(prefers-reduced-motion:reduce) { * { scroll-behavior:auto !important; } }\n";
package/dist/visio.js CHANGED
@@ -1,8 +1,9 @@
1
- import { attachKeyTips, registerControls, readOfficeProfile, sanitizeOfficeProfile, writeOfficeProfile } from './chunk-M5DTJSOV.js';
2
- import { getIcon, registerIcon } from './chunk-BOX43CZD.js';
3
- import { definePresence } from './chunk-3FPW7M6U.js';
4
- import './chunk-USDLALB5.js';
5
- import './chunk-JFJXBYRD.js';
1
+ import { themeBridge, installOfficeUiTheme } from './chunk-56A2JK63.js';
2
+ import { attachKeyTips, registerControls, readOfficeProfile, sanitizeOfficeProfile, writeOfficeProfile } from './chunk-723JC3OC.js';
3
+ import { getIcon, registerIcon } from './chunk-M6GF5ED2.js';
4
+ import { definePresence } from './chunk-TWQ45BFL.js';
5
+ import './chunk-IY7QJLQG.js';
6
+ import './chunk-2WLRFPMW.js';
6
7
  import { FOREIGN_VECTOR_SCENE_LIMITS, EMPTY_TEXT_SEARCH, EMPTY_EDIT_STATE, assertViewableDocument, indexDocumentText, searchDocumentText, validateSearchQuery, MAX_INPUT_BYTES, DocumentHistory, snapshotEdits, ForeignVectorBudget, VISIO_IDENTITY_TRANSFORM, composeVisioTransform, compatibilityNotes, compatibilityText, visioGradientInstances, visioRenderedGradientStopCount, inspectForeignVectorResource, copySnapshotScene, editErrorMessage, eventKeys, propertyKeys, TEXT_SEARCH_LIMITS, isEditCancellation, visioPageInsertCommand, visioQuarterTurnCommand, visioLocalRotationShape, visioStraightLineHandles, visioPageEditToDrawing, textSearchStatus, visioRotationPreviewTransform, visioFillPatternTransform, visioRenderedGradientStops, visioStrokeGradient, visioNextShapeId } from 'ooxml-core/visio/ui';
7
8
  export { TEXT_SEARCH_LIMITS, compatibilityNotes, compatibilityText, demoDocument, eventKeys, propertyKeys } from 'ooxml-core/visio/ui';
8
9
  import { VISIO_VISIBILITY_LIMITS, loadVisio, getVisioPageLayers, resolveVisioPageVisibility, visioFilledArrow, layoutVisioFilledArrowLine, visioOpenArrowPath } from 'ooxml-core/visio';
@@ -886,10 +887,6 @@ function wireLayerControls(panel, controller) {
886
887
  // src/visio/styles.ts
887
888
  var viewerStyles = `
888
889
  :host {
889
- --_vv-bg:var(--vv-background,#eceae8); --_vv-surface:var(--vv-surface,#fff);
890
- --_vv-secondary:var(--vv-secondary,#f3f2f1); --_vv-ink:var(--vv-ink,#1f1f1f);
891
- --_vv-muted:var(--vv-muted,#605e5c); --_vv-border:var(--vv-border,#e1dfdd);
892
- --_vv-accent:var(--vv-accent,#3955a3); --_vv-accent-soft:var(--vv-accent-soft,rgba(57,85,163,.10));
893
890
  display:flex; flex-direction:column; min-width:0; min-height:320px; height:100%; overflow:hidden;
894
891
  color:var(--_vv-ink); background:var(--_vv-bg); font:12px/1.5 "Segoe UI",Arial,sans-serif; contain:layout;
895
892
  }
@@ -899,7 +896,7 @@ button,select,input,textarea { font:inherit; color:inherit; border:1px solid var
899
896
  button { cursor:pointer; }
900
897
  button:hover:enabled { background:var(--_vv-accent-soft); border-color:var(--_vv-accent); }
901
898
  button:disabled { opacity:.4; cursor:default; }
902
- button:focus-visible,select:focus-visible,input:focus-visible,textarea:focus-visible,summary:focus-visible,[tabindex]:focus-visible { outline:2px solid var(--vv-focus,var(--_vv-accent)); outline-offset:2px; }
899
+ button:focus-visible,select:focus-visible,input:focus-visible,textarea:focus-visible,summary:focus-visible,[tabindex]:focus-visible { outline:2px solid var(--_vv-focus); outline-offset:2px; }
903
900
  button[aria-pressed="true"] { color:var(--_vv-accent); background:var(--_vv-accent-soft); }
904
901
  .toolbar { flex:none; min-width:0; border-bottom:1px solid var(--_vv-border); background:var(--_vv-surface); }
905
902
  .spacer { flex:1; }
@@ -913,7 +910,7 @@ button[aria-pressed="true"] { color:var(--_vv-accent); background:var(--_vv-acce
913
910
  .pane-heading { height:37px; display:flex; align-items:center; justify-content:space-between; gap:8px; padding:8px 10px; border-bottom:1px solid var(--_vv-border); font-size:11px; font-weight:600; }
914
911
  .inspector-kind { color:var(--_vv-muted); font-size:10px; font-weight:400; }
915
912
  .viewport { position:relative; display:flex; flex-direction:column; flex:1; overflow:auto; min-width:0; min-height:0; padding:16px 4px; background:var(--_vv-bg); }
916
- .paper { display:block; flex:none; background:white; box-shadow:var(--vv-shadow,0 2px 8px rgb(0 0 0 / 14%)); margin:auto; }
913
+ .paper { display:block; flex:none; background:white; box-shadow:var(--_vv-shadow); margin:auto; }
917
914
  .paper [data-shape-id] { cursor:pointer; }
918
915
  .paper [data-selected="true"] > [data-geometry] { stroke:var(--_vv-accent) !important; stroke-width:.025 !important; }
919
916
  .inspector-pane { flex:0 0 288px; width:288px; min-width:0; overflow:auto; border-left:1px solid var(--_vv-border); background:var(--_vv-secondary); }
@@ -939,11 +936,11 @@ summary::marker { color:var(--_vv-muted); font-size:10px; }
939
936
  .edit-controls label { display:block; margin-top:8px; }
940
937
  .edit-actions { display:flex; flex-wrap:wrap; gap:4px; margin-top:8px; }
941
938
  .edit-actions button { font-size:11px; padding:3px 7px; }
942
- .edit-actions [data-edit="apply"]:enabled { background:var(--_vv-accent); border-color:var(--_vv-accent); color:var(--vv-accent-ink,#fff); }
939
+ .edit-actions [data-edit="apply"]:enabled { background:var(--_vv-accent); border-color:var(--_vv-accent); color:var(--_vv-accent-ink); }
943
940
  .edit-controls [data-geometry] { min-width:0; margin:8px 0 0; padding:6px; border:1px solid var(--_vv-border); }
944
941
  .edit-controls [data-geometry-field] { display:block; width:100%; min-width:0; margin-top:4px; }
945
- .edit-controls [data-geometry-error] { color:var(--vv-danger,#b42318); }
946
- .edit-controls [data-edit-error] { color:var(--vv-danger,#b42318); }
942
+ .edit-controls [data-geometry-error] { color:var(--_vv-danger); }
943
+ .edit-controls [data-edit-error] { color:var(--_vv-danger); }
947
944
  .edit-controls [data-edit-diagnostics] { max-height:100px; overflow:auto; padding-left:16px; }
948
945
  .layer-controls [data-layer-list] { max-height:240px; overflow:auto; }
949
946
  .layer-controls fieldset { border:1px solid var(--_vv-border); margin:6px 0; padding:6px; min-width:0; }
@@ -1041,19 +1038,49 @@ summary::marker { color:var(--_vv-muted); font-size:10px; }
1041
1038
  `;
1042
1039
 
1043
1040
  // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/visio/styles/backstage.css?raw
1044
- var backstage_default = "/* Visio's File tab and backstage. */\n:host {\n position: relative;\n}\n/* The shared office-ui-backstage draws the File column; these style Visio's page content. */\n.backstage {\n --office-accent: var(--_vv-accent);\n --office-accent-foreground: var(--vv-accent-ink, #fff);\n}\n.backstage-page h1 {\n margin: 0 0 24px;\n font-size: 34px;\n font-weight: 300;\n}\n.backstage-page h2 {\n margin: 20px 0 8px;\n font-size: 16px;\n font-weight: 600;\n}\n.backstage-file {\n margin-top: 0 !important;\n font-size: 20px !important;\n font-weight: 400 !important;\n overflow-wrap: anywhere;\n}\n.backstage-facts {\n display: grid;\n grid-template-columns: max-content 1fr;\n gap: 8px 24px;\n max-width: 520px;\n margin: 0;\n font-size: 13px;\n}\n.backstage-facts dt {\n color: var(--_vv-muted);\n}\n.backstage-facts dd {\n margin: 0;\n overflow-wrap: anywhere;\n}\n.backstage-action {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 2px;\n width: min(420px, 100%);\n min-height: 64px;\n margin: 0 0 10px;\n padding: 10px 16px;\n text-align: left;\n background: var(--_vv-surface);\n}\n.backstage-action strong {\n font-size: 14px;\n font-weight: 600;\n}\n.backstage-action span,\n.backstage-muted,\n.backstage-note-count {\n color: var(--_vv-muted);\n font-size: 12px;\n}\n.backstage-templates {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n}\n.backstage-templates .backstage-action,\n.backstage-templates ::slotted(*) {\n width: 200px;\n min-height: 120px;\n}\n/* Account: the shared profile editor, then Visio's product information. */\n.backstage-page office-ui-account {\n max-width: 560px;\n}\n.backstage-product {\n margin-top: 24px;\n}\n/* Share with people: a live session between windows of this browser. */\n.share-panel {\n max-width: 560px;\n margin-bottom: 16px;\n}\n.share-panel h2 {\n margin-top: 0 !important;\n}\n.share-field {\n display: grid;\n gap: 4px;\n max-width: 320px;\n margin: 12px 0;\n font-size: 13px;\n}\n.share-room {\n min-height: 30px;\n padding: 2px 8px;\n border: 1px solid var(--_vv-border);\n border-radius: 3px;\n background: var(--_vv-surface);\n color: inherit;\n font: inherit;\n}\n.share-buttons button {\n min-height: 32px;\n padding: 0 16px;\n}\n.share-buttons button[hidden] {\n display: none;\n}\n.share-status {\n min-height: 20px;\n font-size: 13px;\n}\n";
1041
+ var backstage_default = "/* Visio's File tab and backstage. */\n:host {\n position: relative;\n}\n/* The shared office-ui-backstage draws the File column; these style Visio's page content. */\n.backstage-page h1 {\n margin: 0 0 24px;\n font-size: 34px;\n font-weight: 300;\n}\n.backstage-page h2 {\n margin: 20px 0 8px;\n font-size: 16px;\n font-weight: 600;\n}\n.backstage-file {\n margin-top: 0 !important;\n font-size: 20px !important;\n font-weight: 400 !important;\n overflow-wrap: anywhere;\n}\n.backstage-facts {\n display: grid;\n grid-template-columns: max-content 1fr;\n gap: 8px 24px;\n max-width: 520px;\n margin: 0;\n font-size: 13px;\n}\n.backstage-facts dt {\n color: var(--_vv-muted);\n}\n.backstage-facts dd {\n margin: 0;\n overflow-wrap: anywhere;\n}\n.backstage-action {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 2px;\n width: min(420px, 100%);\n min-height: 64px;\n margin: 0 0 10px;\n padding: 10px 16px;\n text-align: left;\n background: var(--_vv-surface);\n}\n.backstage-action strong {\n font-size: 14px;\n font-weight: 600;\n}\n.backstage-action span,\n.backstage-muted,\n.backstage-note-count {\n color: var(--_vv-muted);\n font-size: 12px;\n}\n.backstage-templates {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n}\n.backstage-templates .backstage-action,\n.backstage-templates ::slotted(*) {\n width: 200px;\n min-height: 120px;\n}\n/* Account: the shared profile editor, then Visio's product information. */\n.backstage-page office-ui-account {\n max-width: 560px;\n}\n.backstage-product {\n margin-top: 24px;\n}\n/* Share with people: a live session between windows of this browser. */\n.share-panel {\n max-width: 560px;\n margin-bottom: 16px;\n}\n.share-panel h2 {\n margin-top: 0 !important;\n}\n.share-field {\n display: grid;\n gap: 4px;\n max-width: 320px;\n margin: 12px 0;\n font-size: 13px;\n}\n.share-room {\n min-height: 30px;\n padding: 2px 8px;\n border: 1px solid var(--_vv-border);\n border-radius: 3px;\n background: var(--_vv-surface);\n color: inherit;\n font: inherit;\n}\n.share-buttons button {\n min-height: 32px;\n padding: 0 16px;\n}\n.share-buttons button[hidden] {\n display: none;\n}\n.share-status {\n min-height: 20px;\n font-size: 13px;\n}\n";
1045
1042
 
1046
1043
  // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/visio/styles/canvas.css?raw
1047
- var canvas_default = "/*\n * Drawing canvas focus. SVG outlines are drawn in drawing units (inches here), so a browser\n * focus ring on a shape becomes a page-sized blob. Shapes show focus with a dashed accent\n * stroke instead, only for keyboard focus; selection keeps its solid accent stroke.\n */\n.paper [data-shape-id]:focus,\n.paper [data-shape-id]:focus-visible {\n outline: none;\n}\n.paper [data-shape-id]:focus-visible > [data-geometry] {\n stroke: var(--vv-focus, var(--_vv-accent)) !important;\n stroke-width: 0.04 !important;\n stroke-dasharray: 0.08 0.05;\n}\n\n.paper [data-line-endpoint],\n.rotation-overlay [data-rotation-handle] {\n fill: var(--_vv-accent);\n stroke: white;\n stroke-width: 1.5px;\n cursor: crosshair;\n touch-action: none;\n pointer-events: all;\n}\n.paper .endpoint-preview,\n.paper .rotation-preview,\n.rotation-overlay .rotation-stem {\n stroke: var(--_vv-accent);\n stroke-width: 1.5px;\n stroke-dasharray: 5 3;\n pointer-events: none;\n}\n\n.rotation-overlay {\n position: absolute;\n z-index: 1;\n pointer-events: none;\n}\n";
1044
+ var canvas_default = "/*\n * Drawing canvas focus. SVG outlines are drawn in drawing units (inches here), so a browser\n * focus ring on a shape becomes a page-sized blob. Shapes show focus with a dashed accent\n * stroke instead, only for keyboard focus; selection keeps its solid accent stroke.\n */\n.paper [data-shape-id]:focus,\n.paper [data-shape-id]:focus-visible {\n outline: none;\n}\n.paper [data-shape-id]:focus-visible > [data-geometry] {\n stroke: var(--_vv-focus) !important;\n stroke-width: 0.04 !important;\n stroke-dasharray: 0.08 0.05;\n}\n\n.paper [data-line-endpoint],\n.rotation-overlay [data-rotation-handle] {\n fill: var(--_vv-accent);\n stroke: white;\n stroke-width: 1.5px;\n cursor: crosshair;\n touch-action: none;\n pointer-events: all;\n}\n.paper .endpoint-preview,\n.paper .rotation-preview,\n.rotation-overlay .rotation-stem {\n stroke: var(--_vv-accent);\n stroke-width: 1.5px;\n stroke-dasharray: 5 3;\n pointer-events: none;\n}\n\n.rotation-overlay {\n position: absolute;\n z-index: 1;\n pointer-events: none;\n}\n";
1048
1045
 
1049
1046
  // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/visio/styles/ribbon.css?raw
1050
- var ribbon_default = "/*\n * Microsoft Visio ribbon layout on the shared ooxml-ui controls. Viewer theme tokens feed the\n * shared --office-* tokens, so host themes still apply. Loaded after the legacy styles.ts.\n */\n:host {\n --office-foreground: var(--_vv-ink);\n --office-muted-foreground: var(--_vv-muted);\n --office-background: var(--_vv-surface);\n --office-surface: var(--_vv-accent-soft);\n --office-border: var(--_vv-border);\n --office-accent: var(--_vv-accent);\n --office-accent-foreground: var(--vv-accent-ink, #fff);\n --office-ring: var(--vv-focus, var(--_vv-accent));\n --office-font: 'Segoe UI', Arial, sans-serif;\n}\n\n/* Tab row: Quick Access Toolbar, then Visio's tabs. */\n.ribbon-head {\n display: flex;\n align-items: stretch;\n min-width: 0;\n border-bottom: 1px solid var(--_vv-border);\n}\n.qat {\n display: flex;\n align-items: center;\n gap: 0;\n padding: 0 6px;\n border-right: 1px solid var(--_vv-border);\n}\n.qat office-ui-button {\n --office-target-size: 30px;\n}\n.ribbon-head .ribbon-tabs {\n flex: 0 1 auto;\n min-width: 0;\n height: 36px;\n border-bottom: 0;\n overflow-x: auto;\n scrollbar-width: none;\n}\n.ribbon-head .ribbon-tabs button {\n flex: none;\n min-height: 35px;\n padding: 6px 12px;\n font-size: 13px;\n}\n\n/* Panels: groups of large commands and three-row stacks, as dense as Visio's. */\n.ribbon-content {\n min-height: 96px;\n padding: 2px 2px 0;\n}\n.ribbon-row {\n display: flex;\n flex-wrap: nowrap;\n align-items: stretch;\n gap: 0;\n padding: 0;\n border: 0;\n background: transparent;\n}\n.ribbon-row office-ui-ribbon-group,\n.tools-content office-ui-ribbon-group {\n min-width: 0;\n}\noffice-ui-ribbon-group office-ui-button,\noffice-ui-ribbon-group office-ui-menu-button {\n --office-target-size: 24px;\n}\noffice-ui-ribbon-group [data-size='large'] {\n --office-target-size: 30px;\n}\noffice-ui-button[variant='stacked']::part(button) {\n min-width: 48px;\n min-height: 66px;\n padding: 2px 6px;\n font-size: 12px;\n}\noffice-ui-menu-button[variant='stacked']::part(button) {\n min-width: 48px;\n min-height: 50px;\n font-size: 12px;\n}\noffice-ui-ribbon-group [data-size='small']::part(button) {\n justify-content: flex-start;\n font-size: 12px;\n}\noffice-ui-ribbon-stack:not([orientation]) {\n justify-content: flex-start;\n padding-top: 2px;\n}\noffice-ui-ribbon-stack:not([orientation]) > * {\n min-height: 24px;\n}\noffice-ui-ribbon-group > office-ui-ribbon-stack > office-ui-ribbon-stack[orientation] {\n min-height: 32px;\n}\noffice-ui-select[data-combo] {\n --office-target-size: 24px;\n}\noffice-ui-menu-button[data-active]::part(button) {\n background: var(--_vv-accent-soft);\n box-shadow: inset 0 0 0 1px var(--_vv-accent);\n}\n[data-unsupported] {\n cursor: not-allowed;\n}\n.ribbon-check {\n display: flex;\n align-items: center;\n gap: 6px;\n min-height: 24px;\n padding: 0 6px;\n font-size: 12px;\n white-space: nowrap;\n cursor: pointer;\n}\n.ribbon-check[data-unsupported] {\n color: var(--_vv-muted);\n opacity: 0.6;\n}\n.ribbon-hint {\n display: none;\n}\n\n/* Drawing window with optional rulers. */\n.canvas-area {\n display: grid;\n flex: 1;\n min-width: 0;\n min-height: 0;\n grid-template-columns: 0 1fr;\n grid-template-rows: 0 1fr;\n}\n.canvas-area[data-ruler='true'] {\n grid-template-columns: 18px 1fr;\n grid-template-rows: 18px 1fr;\n}\n.canvas-area > .viewport {\n grid-column: 2;\n grid-row: 2;\n}\n.ruler,\n.ruler-corner {\n display: none;\n background: var(--_vv-surface);\n}\n.canvas-area[data-ruler='true'] > .ruler,\n.canvas-area[data-ruler='true'] > .ruler-corner {\n display: block;\n}\n.ruler-corner {\n grid-column: 1;\n grid-row: 1;\n border-right: 1px solid var(--_vv-border);\n border-bottom: 1px solid var(--_vv-border);\n}\n/* The shared office-ui-ruler draws ticks, labels and its own edge. */\n.ruler-h {\n grid-column: 2;\n grid-row: 1;\n}\n.ruler-v {\n grid-column: 1;\n grid-row: 2;\n}\n\n.page-bar {\n display: flex;\n flex: none;\n align-items: stretch;\n min-width: 0;\n border-top: 1px solid var(--_vv-border);\n background: var(--_vv-secondary);\n}\n.page-bar office-ui-menu-button {\n --office-target-size: 28px;\n flex: none;\n padding: 0 2px;\n}\n.page-tabs {\n flex: 1;\n min-width: 0;\n border-top: 0;\n}\noffice-ui-status-bar.status {\n gap: 16px;\n min-height: 29px;\n padding: 0 8px 0 12px;\n font-size: 11px;\n background: var(--_vv-surface);\n color: var(--_vv-muted);\n}\noffice-ui-status-item[value=''] {\n display: none;\n}\noffice-ui-status-item[data-page-status] {\n color: var(--_vv-ink);\n}\n.status-message {\n flex: 1;\n min-width: 0;\n}\n.viewport[data-tool='ellipse'],\n.viewport[data-tool='ellipse'] .paper [data-shape-id],\n.viewport[data-tool='rectangle'],\n.viewport[data-tool='rectangle'] .paper [data-shape-id],\n.viewport[data-tool='line'],\n.viewport[data-tool='line'] .paper [data-shape-id] {\n cursor: crosshair;\n}\n.viewport[data-tool='ellipse'],\n.viewport[data-tool='rectangle'],\n.viewport[data-tool='line'] {\n touch-action: none;\n}\n.draw-preview {\n fill: var(--_vv-accent-soft);\n stroke: var(--_vv-accent);\n stroke-width: 1.5px;\n stroke-dasharray: 4 3;\n pointer-events: none;\n}\n.viewport[data-grid='true'] .paper {\n --_vv-grid-minor: rgb(0 0 0 / 7%);\n --_vv-grid-major: rgb(0 0 0 / 16%);\n background-image:\n linear-gradient(to right, var(--_vv-grid-major) 1px, transparent 1px),\n linear-gradient(to top, var(--_vv-grid-major) 1px, transparent 1px),\n linear-gradient(to right, var(--_vv-grid-minor) 1px, transparent 1px),\n linear-gradient(to top, var(--_vv-grid-minor) 1px, transparent 1px);\n background-size:\n var(--vv-inch, 96px) var(--vv-inch, 96px),\n var(--vv-inch, 96px) var(--vv-inch, 96px),\n calc(var(--vv-inch, 96px) / 4) calc(var(--vv-inch, 96px) / 4),\n calc(var(--vv-inch, 96px) / 4) calc(var(--vv-inch, 96px) / 4);\n background-position: left bottom;\n}\n:host(:fullscreen) {\n width: 100vw;\n height: 100vh;\n}\n\n@media (max-width: 760px) {\n .ribbon-row {\n flex: 1;\n min-width: 0;\n }\n .qat office-ui-button {\n --office-target-size: 44px;\n }\n .ribbon-tools .tools-content office-ui-ribbon-group {\n width: 100%;\n }\n office-ui-status-bar.status {\n gap: 4px;\n min-height: 48px;\n }\n office-ui-status-bar .notes-strip,\n office-ui-status-bar .status-message,\n office-ui-status-item[data-shape-status],\n office-ui-status-item[data-page-status] {\n display: none;\n }\n .zoom-controls {\n flex: 1;\n min-width: 0;\n --office-zoom-slider-width: 0;\n }\n}\n\n/* Visio's Tell me box sits right after the tabs. */\n.tell-me {\n flex: 0 1 280px;\n min-width: 140px;\n margin: 0 8px;\n --office-target-size: 28px;\n}\n.presentation-mode {\n --office-target-size: 24px;\n}\n@media (max-width: 760px) {\n .tell-me {\n display: none;\n }\n}\n";
1047
+ var ribbon_default = "/*\n * Microsoft Visio ribbon layout on the shared ooxml-ui controls. The shared --office-* tokens come\n * from the bridge in styles/theme.ts. Loaded after the legacy styles.ts.\n */\n\n/* Tab row: Quick Access Toolbar, then Visio's tabs. */\n.ribbon-head {\n display: flex;\n align-items: stretch;\n min-width: 0;\n border-bottom: 1px solid var(--_vv-border);\n}\n.qat {\n display: flex;\n align-items: center;\n gap: 0;\n padding: 0 6px;\n border-right: 1px solid var(--_vv-border);\n}\n.qat office-ui-button {\n --office-target-size: 30px;\n}\n.ribbon-head .ribbon-tabs {\n flex: 0 1 auto;\n min-width: 0;\n height: 36px;\n border-bottom: 0;\n overflow-x: auto;\n scrollbar-width: none;\n}\n.ribbon-head .ribbon-tabs button {\n flex: none;\n min-height: 35px;\n padding: 6px 12px;\n font-size: 13px;\n}\n\n/* Panels: groups of large commands and three-row stacks, as dense as Visio's. */\n.ribbon-content {\n min-height: 96px;\n padding: 2px 2px 0;\n}\n.ribbon-row {\n display: flex;\n flex-wrap: nowrap;\n align-items: stretch;\n gap: 0;\n padding: 0;\n border: 0;\n background: transparent;\n}\n.ribbon-row office-ui-ribbon-group,\n.tools-content office-ui-ribbon-group {\n min-width: 0;\n}\noffice-ui-ribbon-group office-ui-button,\noffice-ui-ribbon-group office-ui-menu-button {\n --office-target-size: 24px;\n}\noffice-ui-ribbon-group [data-size='large'] {\n --office-target-size: 30px;\n}\noffice-ui-button[variant='stacked']::part(button) {\n min-width: 48px;\n min-height: 66px;\n padding: 2px 6px;\n font-size: 12px;\n}\noffice-ui-menu-button[variant='stacked']::part(button) {\n min-width: 48px;\n min-height: 50px;\n font-size: 12px;\n}\noffice-ui-ribbon-group [data-size='small']::part(button) {\n justify-content: flex-start;\n font-size: 12px;\n}\noffice-ui-ribbon-stack:not([orientation]) {\n justify-content: flex-start;\n padding-top: 2px;\n}\noffice-ui-ribbon-stack:not([orientation]) > * {\n min-height: 24px;\n}\noffice-ui-ribbon-group > office-ui-ribbon-stack > office-ui-ribbon-stack[orientation] {\n min-height: 32px;\n}\noffice-ui-select[data-combo] {\n --office-target-size: 24px;\n}\noffice-ui-menu-button[data-active]::part(button) {\n background: var(--_vv-accent-soft);\n box-shadow: inset 0 0 0 1px var(--_vv-accent);\n}\n[data-unsupported] {\n cursor: not-allowed;\n}\n.ribbon-check {\n display: flex;\n align-items: center;\n gap: 6px;\n min-height: 24px;\n padding: 0 6px;\n font-size: 12px;\n white-space: nowrap;\n cursor: pointer;\n}\n.ribbon-check[data-unsupported] {\n color: var(--_vv-muted);\n opacity: 0.6;\n}\n.ribbon-hint {\n display: none;\n}\n\n/* Drawing window with optional rulers. */\n.canvas-area {\n display: grid;\n flex: 1;\n min-width: 0;\n min-height: 0;\n grid-template-columns: 0 1fr;\n grid-template-rows: 0 1fr;\n}\n.canvas-area[data-ruler='true'] {\n grid-template-columns: 18px 1fr;\n grid-template-rows: 18px 1fr;\n}\n.canvas-area > .viewport {\n grid-column: 2;\n grid-row: 2;\n}\n.ruler,\n.ruler-corner {\n display: none;\n background: var(--_vv-surface);\n}\n.canvas-area[data-ruler='true'] > .ruler,\n.canvas-area[data-ruler='true'] > .ruler-corner {\n display: block;\n}\n.ruler-corner {\n grid-column: 1;\n grid-row: 1;\n border-right: 1px solid var(--_vv-border);\n border-bottom: 1px solid var(--_vv-border);\n}\n/* The shared office-ui-ruler draws ticks, labels and its own edge. */\n.ruler-h {\n grid-column: 2;\n grid-row: 1;\n}\n.ruler-v {\n grid-column: 1;\n grid-row: 2;\n}\n\n.page-bar {\n display: flex;\n flex: none;\n align-items: stretch;\n min-width: 0;\n border-top: 1px solid var(--_vv-border);\n background: var(--_vv-secondary);\n}\n.page-bar office-ui-menu-button {\n --office-target-size: 28px;\n flex: none;\n padding: 0 2px;\n}\n.page-tabs {\n flex: 1;\n min-width: 0;\n border-top: 0;\n}\noffice-ui-status-bar.status {\n gap: 16px;\n min-height: 29px;\n padding: 0 8px 0 12px;\n font-size: 11px;\n background: var(--_vv-surface);\n color: var(--_vv-muted);\n}\noffice-ui-status-item[value=''] {\n display: none;\n}\noffice-ui-status-item[data-page-status] {\n color: var(--_vv-ink);\n}\n.status-message {\n flex: 1;\n min-width: 0;\n}\n.viewport[data-tool='ellipse'],\n.viewport[data-tool='ellipse'] .paper [data-shape-id],\n.viewport[data-tool='rectangle'],\n.viewport[data-tool='rectangle'] .paper [data-shape-id],\n.viewport[data-tool='line'],\n.viewport[data-tool='line'] .paper [data-shape-id] {\n cursor: crosshair;\n}\n.viewport[data-tool='ellipse'],\n.viewport[data-tool='rectangle'],\n.viewport[data-tool='line'] {\n touch-action: none;\n}\n.draw-preview {\n fill: var(--_vv-accent-soft);\n stroke: var(--_vv-accent);\n stroke-width: 1.5px;\n stroke-dasharray: 4 3;\n pointer-events: none;\n}\n.viewport[data-grid='true'] .paper {\n --_vv-grid-minor: rgb(0 0 0 / 7%);\n --_vv-grid-major: rgb(0 0 0 / 16%);\n background-image:\n linear-gradient(to right, var(--_vv-grid-major) 1px, transparent 1px),\n linear-gradient(to top, var(--_vv-grid-major) 1px, transparent 1px),\n linear-gradient(to right, var(--_vv-grid-minor) 1px, transparent 1px),\n linear-gradient(to top, var(--_vv-grid-minor) 1px, transparent 1px);\n background-size:\n var(--vv-inch, 96px) var(--vv-inch, 96px),\n var(--vv-inch, 96px) var(--vv-inch, 96px),\n calc(var(--vv-inch, 96px) / 4) calc(var(--vv-inch, 96px) / 4),\n calc(var(--vv-inch, 96px) / 4) calc(var(--vv-inch, 96px) / 4);\n background-position: left bottom;\n}\n:host(:fullscreen) {\n width: 100vw;\n height: 100vh;\n}\n\n@media (max-width: 760px) {\n .ribbon-row {\n flex: 1;\n min-width: 0;\n }\n .qat office-ui-button {\n --office-target-size: 44px;\n }\n .ribbon-tools .tools-content office-ui-ribbon-group {\n width: 100%;\n }\n office-ui-status-bar.status {\n gap: 4px;\n min-height: 48px;\n }\n office-ui-status-bar .notes-strip,\n office-ui-status-bar .status-message,\n office-ui-status-item[data-shape-status],\n office-ui-status-item[data-page-status] {\n display: none;\n }\n .zoom-controls {\n flex: 1;\n min-width: 0;\n --office-zoom-slider-width: 0;\n }\n}\n\n/* Visio's Tell me box sits right after the tabs. */\n.tell-me {\n flex: 0 1 280px;\n min-width: 140px;\n margin: 0 8px;\n --office-target-size: 28px;\n}\n.presentation-mode {\n --office-target-size: 24px;\n}\n@media (max-width: 760px) {\n .tell-me {\n display: none;\n }\n}\n";
1051
1048
 
1052
1049
  // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/visio/styles/shapes.css?raw
1053
1050
  var shapes_default = "/* Visio's Shapes window: stencil views, More/Quick Shapes rows and a two-column master grid. */\n.shapes-pane {\n display: flex;\n flex: 0 0 232px;\n flex-direction: column;\n width: 232px;\n min-width: 0;\n overflow: hidden;\n border-right: 1px solid var(--_vv-border);\n background: var(--_vv-secondary);\n}\n.shapes-pane .pane-heading {\n height: 42px;\n font-size: 18px;\n font-weight: 400;\n color: var(--_vv-accent);\n}\n.pane-collapse {\n min-height: 28px;\n width: 28px;\n padding: 0;\n border-color: transparent;\n background: transparent;\n font-size: 18px;\n line-height: 1;\n}\n.shapes-views {\n display: flex;\n gap: 14px;\n padding: 4px 12px 0;\n border-bottom: 1px solid var(--_vv-border);\n}\n.shapes-views button {\n position: relative;\n min-height: 28px;\n padding: 2px 0 6px;\n border: 0;\n border-radius: 0;\n background: transparent;\n color: var(--_vv-muted);\n font-size: 11px;\n font-weight: 600;\n letter-spacing: 0.06em;\n text-transform: uppercase;\n}\n.shapes-views button[aria-selected='true'] {\n color: var(--_vv-ink);\n}\n.shapes-views button[aria-selected='true']::after {\n content: '';\n position: absolute;\n inset: auto 0 -1px;\n height: 2px;\n background: var(--_vv-accent);\n}\n#shapes-stencils,\n#shapes-search {\n flex: 1;\n min-height: 0;\n overflow: auto;\n padding: 4px 0 8px;\n}\n.shapes-row {\n display: flex;\n align-items: center;\n width: 100%;\n min-height: 30px;\n padding: 0 12px;\n border: 0;\n border-radius: 0;\n background: transparent;\n font-size: 12px;\n text-align: left;\n}\n.shapes-row::after {\n content: '\u203A';\n margin-left: auto;\n font-size: 15px;\n}\n.stencil-title {\n margin: 2px 0;\n padding: 6px 12px;\n border-left: 3px solid var(--_vv-accent);\n background: var(--_vv-accent-soft);\n font-size: 12px;\n font-weight: 600;\n}\n.masters {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 2px;\n margin: 0;\n padding: 4px 6px;\n list-style: none;\n}\n.masters li[hidden] {\n display: none;\n}\n.master {\n display: flex;\n align-items: center;\n gap: 6px;\n width: 100%;\n min-height: 40px;\n padding: 4px 6px;\n border-color: transparent;\n background: transparent;\n font-size: 11px;\n line-height: 1.2;\n text-align: left;\n cursor: grab;\n}\n.master svg {\n flex: none;\n width: 28px;\n height: 28px;\n fill: var(--_vv-surface);\n stroke: var(--_vv-accent);\n stroke-width: 1.2;\n stroke-linejoin: round;\n}\n.master[data-unsupported] {\n cursor: not-allowed;\n opacity: 0.45;\n}\n.master[data-unsupported]:hover {\n border-color: transparent;\n background: transparent;\n}\n.shapes-search-field {\n display: block;\n width: calc(100% - 24px);\n margin: 6px 12px;\n}\n.shapes-empty {\n margin: 8px 12px;\n color: var(--_vv-muted);\n font-size: 12px;\n}\n@media (max-width: 760px) {\n .shapes-pane {\n position: absolute;\n inset: 0 auto 0 0;\n z-index: 3;\n width: min(260px, 100%);\n box-shadow: 8px 0 24px #0002;\n }\n .master {\n min-height: 44px;\n }\n}\n.shapes-strip {\n display: flex;\n flex: 0 0 28px;\n flex-direction: column;\n align-items: center;\n gap: 10px;\n width: 28px;\n min-width: 28px;\n padding: 8px 0;\n border: 0;\n border-right: 1px solid var(--_vv-border);\n border-radius: 0;\n background: var(--_vv-secondary);\n color: var(--_vv-accent);\n font-size: 16px;\n}\n.shapes-strip[hidden] {\n display: none;\n}\n.shapes-strip-label {\n writing-mode: vertical-rl;\n color: var(--_vv-ink);\n font-size: 12px;\n}\n/* Visio's floating Pan & Zoom window. */\n.pan-zoom {\n position: absolute;\n right: 16px;\n bottom: 16px;\n z-index: 5;\n width: 240px;\n border: 1px solid var(--_vv-border);\n background: var(--_vv-surface);\n box-shadow: 0 6px 20px rgb(0 0 0 / 18%);\n}\n.pan-zoom[hidden] {\n display: none;\n}\n.pan-zoom-heading {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 2px 4px 2px 10px;\n border-bottom: 1px solid var(--_vv-border);\n font-size: 12px;\n font-weight: 600;\n}\n.pan-zoom-close {\n min-height: 24px;\n width: 24px;\n padding: 0;\n border-color: transparent;\n background: transparent;\n}\n.pan-zoom-view {\n display: grid;\n place-items: center;\n height: 180px;\n padding: 8px;\n background: var(--_vv-bg);\n cursor: crosshair;\n touch-action: none;\n}\n.pan-zoom-view svg {\n max-width: 100%;\n max-height: 100%;\n background: #fff;\n box-shadow: 0 1px 3px rgb(0 0 0 / 20%);\n}\n.pan-zoom-frame {\n fill: rgb(220 38 38 / 8%);\n stroke: #dc2626;\n stroke-width: 2px;\n}\n";
1054
1051
 
1052
+ // src/visio/styles/theme.ts
1053
+ var visioThemeAliases = `:host {
1054
+ --_vv-bg:var(--vv-background,var(--office-surface,#eceae8));
1055
+ --_vv-surface:var(--vv-surface,var(--office-background,#fff));
1056
+ --_vv-secondary:var(--vv-secondary,var(--office-surface,#f3f2f1));
1057
+ --_vv-ink:var(--vv-ink,var(--office-foreground,#1f1f1f));
1058
+ --_vv-muted:var(--vv-muted,var(--office-muted-foreground,#605e5c));
1059
+ --_vv-border:var(--vv-border,var(--office-border,#e1dfdd));
1060
+ --_vv-accent:var(--vv-accent,var(--office-accent,#3955a3));
1061
+ --_vv-accent-soft:var(--vv-accent-soft,color-mix(in srgb,var(--_vv-accent) 10%,transparent));
1062
+ --_vv-accent-ink:var(--vv-accent-ink,var(--office-accent-foreground,#fff));
1063
+ --_vv-focus:var(--vv-focus,var(--office-ring,var(--_vv-accent)));
1064
+ --_vv-danger:var(--vv-danger,var(--office-danger,#b42318));
1065
+ --_vv-shadow:var(--vv-shadow,var(--office-shadow,0 2px 8px rgb(0 0 0 / 14%)));
1066
+ }
1067
+ `;
1068
+ var visioThemeBridge = themeBridge(":host > *", {
1069
+ "--office-foreground": "var(--_vv-ink)",
1070
+ "--office-muted-foreground": "var(--_vv-muted)",
1071
+ "--office-background": "var(--_vv-surface)",
1072
+ "--office-surface": "var(--_vv-accent-soft)",
1073
+ "--office-border": "var(--_vv-border)",
1074
+ "--office-accent": "var(--_vv-accent)",
1075
+ "--office-accent-foreground": "var(--_vv-accent-ink)",
1076
+ "--office-ring": "var(--_vv-focus)",
1077
+ "--office-font": "'Segoe UI', Arial, sans-serif"
1078
+ });
1079
+
1055
1080
  // src/visio/styles/index.ts
1056
- var canvasAndRibbonStyles = [ribbon_default, shapes_default, backstage_default, canvas_default].join("\n");
1081
+ var canvasAndRibbonStyles = [ribbon_default, shapes_default, backstage_default, canvas_default, visioThemeBridge].join(
1082
+ "\n"
1083
+ );
1057
1084
 
1058
1085
  // src/visio/ribbon-action.ts
1059
1086
  var RIBBON_ACTION_EVENT = "ribbon-action";
@@ -3687,8 +3714,12 @@ var ViewerShare = class {
3687
3714
  #revision = 0;
3688
3715
  /** The package this window last published or adopted, to skip repeats of it. */
3689
3716
  #last = null;
3717
+ /** The drawing this window last published or adopted, so a local load or edit is sent once. */
3718
+ #shared = null;
3690
3719
  #adopting = false;
3691
3720
  #pending = null;
3721
+ /** Publishes a local drawing the room has not seen; set once the session has settled. */
3722
+ #catchUp = null;
3692
3723
  #starting = false;
3693
3724
  get active() {
3694
3725
  return this.#session !== null;
@@ -3734,6 +3765,8 @@ var ViewerShare = class {
3734
3765
  this.#session?.destroy();
3735
3766
  this.#session = null;
3736
3767
  this.#pending = null;
3768
+ this.#shared = null;
3769
+ this.#catchUp = null;
3737
3770
  this.#revision = 0;
3738
3771
  this.#last = null;
3739
3772
  this.#people.participants = [];
@@ -3753,11 +3786,15 @@ var ViewerShare = class {
3753
3786
  });
3754
3787
  this.#session = session;
3755
3788
  const publish = () => {
3789
+ const { document: document2 } = this.controller.state;
3790
+ if (this.#adopting || this.#pending || document2 === this.#shared || !session.canWrite())
3791
+ return;
3756
3792
  const bytes = this.#localBytes();
3757
- if (!bytes || !session.canWrite()) return;
3793
+ if (!bytes) return;
3758
3794
  adapter.write(session.doc, { bytes, revision: this.#revision }, collab.LOCAL_ORIGIN);
3759
3795
  this.#revision = adapter.read(session.doc).revision;
3760
3796
  this.#last = bytes;
3797
+ this.#shared = document2;
3761
3798
  };
3762
3799
  const adopt = () => {
3763
3800
  if (adapter.isEmpty(session.doc)) return;
@@ -3773,7 +3810,11 @@ var ViewerShare = class {
3773
3810
  if (transaction.origin !== collab.LOCAL_ORIGIN) adopt();
3774
3811
  };
3775
3812
  map.observe(observer);
3776
- const settle = () => adapter.isEmpty(session.doc) ? publish() : adopt();
3813
+ const settle = () => {
3814
+ this.#catchUp = publish;
3815
+ if (adapter.isEmpty(session.doc)) publish();
3816
+ else adopt();
3817
+ };
3777
3818
  const stopReady = session.on("ready", settle);
3778
3819
  const stopPeers = session.on("peers", (peers) => this.#showPeers(peers));
3779
3820
  const stopEvents = this.controller.onEvent((name, detail) => {
@@ -3787,6 +3828,7 @@ var ViewerShare = class {
3787
3828
  stopPeers();
3788
3829
  stopEvents();
3789
3830
  stopState();
3831
+ this.#catchUp = null;
3790
3832
  };
3791
3833
  if (session.canWrite()) settle();
3792
3834
  this.#showPeers(session.peers());
@@ -3811,6 +3853,7 @@ var ViewerShare = class {
3811
3853
  const done = (error) => {
3812
3854
  this.#adopting = false;
3813
3855
  if (error) this.#say(error instanceof Error ? error.message : String(error));
3856
+ else this.#shared = this.controller.state.document;
3814
3857
  };
3815
3858
  this.#adopting = true;
3816
3859
  const run = document2 && edit.sourceAvailable ? this.controller.applyRemoteSource(bytes) : this.controller.load(bytes);
@@ -3818,6 +3861,7 @@ var ViewerShare = class {
3818
3861
  }
3819
3862
  #flush(state) {
3820
3863
  if (this.#pending && !state.edit.busy && !state.loading) this.#apply(this.#pending);
3864
+ else this.#catchUp?.();
3821
3865
  }
3822
3866
  #showPeers(peers) {
3823
3867
  const me = this.profile();
@@ -7296,7 +7340,8 @@ var VisioViewerElement = class extends BaseElement {
7296
7340
  super();
7297
7341
  this.#root = this.attachShadow({ mode: "open" });
7298
7342
  registerViewerControls();
7299
- this.#root.innerHTML = `<style>${viewerStyles}${canvasAndRibbonStyles}</style>${viewerChromeTemplate}`;
7343
+ installOfficeUiTheme();
7344
+ this.#root.innerHTML = `<style>${visioThemeAliases}${viewerStyles}${canvasAndRibbonStyles}</style>${viewerChromeTemplate}`;
7300
7345
  const workspace = this.#root.querySelector(".workspace");
7301
7346
  this.#findBar = createFindBar(document);
7302
7347
  const ribbon = createRibbon(document);
@@ -1,8 +1,9 @@
1
1
  import type { BackstageHost } from './parts.js';
2
2
  export type { BackstageHost, EditorOptions, CalculationMode, IterationSettings } from './parts.js';
3
+ export { participants, type ShareHost } from './pages-share.js';
3
4
  export { compatibilityNotes, formatNotes } from './pages-info.js';
4
5
  export { createTemplateWorkbook, TEMPLATES, type TemplateId } from 'ooxml-core/xlsx/ui';
5
- export type BackstagePage = 'info' | 'new' | 'open' | 'saveAs' | 'print' | 'export' | 'options' | 'customize';
6
+ export type BackstagePage = 'info' | 'new' | 'open' | 'saveAs' | 'print' | 'share' | 'export' | 'options' | 'customize';
6
7
  export interface Backstage {
7
8
  readonly element: HTMLElement;
8
9
  open(page?: BackstagePage): void;
@@ -10,5 +11,7 @@ export interface Backstage {
10
11
  readonly isOpen: boolean;
11
12
  /** Re-renders the open page (after a locale change). */
12
13
  relocalize(): void;
14
+ /** Re-renders `page` when it is the one open (its state changed). */
15
+ refresh(page: BackstagePage): void;
13
16
  }
14
17
  export declare function createBackstage(host: BackstageHost): Backstage;
@@ -0,0 +1,19 @@
1
+ /**
2
+ * File > Share: start or stop co-editing this workbook in a named room and see who is in it. The
3
+ * same panel as Visio's (room name, Start / Stop sharing, status, the shared presence stack); the
4
+ * editor's `collaboration` API does the work.
5
+ */
6
+ import { type PresenceParticipant } from '../../presence.js';
7
+ import type { XlsxCollaborationState } from '../collaboration-types.js';
8
+ import { type PageContext } from './parts.js';
9
+ /** What the Share page needs from the editor. */
10
+ export interface ShareHost {
11
+ state(): XlsxCollaborationState;
12
+ start(roomId: string): Promise<void>;
13
+ stop(): void;
14
+ }
15
+ /** A fresh room name a second window can type: `book-` and six letters or digits. */
16
+ export declare const suggestRoom: () => string;
17
+ export declare function renderShare(page: PageContext): void;
18
+ /** The people in the room as the shared presence stack lists them. */
19
+ export declare function participants(state: XlsxCollaborationState): PresenceParticipant[];
@@ -4,6 +4,7 @@ import type { EditorContext } from 'ooxml-core/xlsx/ui';
4
4
  import type { FileCommand } from '../events.js';
5
5
  import type { SaveState } from '../title-bar.js';
6
6
  import type { TemplateId } from 'ooxml-core/xlsx/ui';
7
+ import type { ShareHost } from './pages-share.js';
7
8
  export type CalculationMode = 'automatic' | 'manual';
8
9
  /** Iterative calculation: maximum iterations and maximum change; undefined when off. */
9
10
  export type IterationSettings = {
@@ -34,6 +35,8 @@ export interface BackstageHost {
34
35
  removePassword?(): void;
35
36
  hiddenActions(): readonly string[];
36
37
  setHiddenActions(ids: string[]): void;
38
+ /** File > Share; without it the page only shows its title. */
39
+ share?: ShareHost;
37
40
  }
38
41
  export interface PageContext {
39
42
  host: BackstageHost;
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Builds the open workbook's formula dependency graph while the editor is idle. Opening a large
3
+ * workbook paints without it, and without this the first edit would wait for every formula to be
4
+ * parsed and indexed (half a second on a 66,000-formula workbook). After the first paint the work
5
+ * runs in `requestIdleCallback` slices of at most 8 ms (a `setTimeout` fallback elsewhere),
6
+ * pauses while the user types, scrolls or edits a cell, and stops when another workbook loads.
7
+ * An edit made before it finishes is still correct: the core completes what is left first.
8
+ */
9
+ import type { EditSession } from 'ooxml-core/xlsx';
10
+ /** The longest slice of work, so a frame is never held up noticeably. */
11
+ export declare const SLICE_MS = 8;
12
+ /** How long after the last key, wheel or pointer event the work stays paused. */
13
+ export declare const QUIET_MS = 250;
14
+ /** What a slice is told about the time it has (the part of `IdleDeadline` used here). */
15
+ export interface IdleTime {
16
+ timeRemaining(): number;
17
+ }
18
+ /** The timers the preparation runs on (the window's, replaced in tests). */
19
+ export interface IdleScheduler {
20
+ now(): number;
21
+ idle(run: (deadline: IdleTime) => void): () => void;
22
+ later(run: () => void, ms: number): () => void;
23
+ /** Runs `run` once the next frame has been painted. */
24
+ afterPaint(run: () => void): () => void;
25
+ }
26
+ export declare function windowScheduler(view: (Window & typeof globalThis) | null): IdleScheduler;
27
+ export declare class CalcPreparation {
28
+ /** True while a cell is being edited: no slice runs then. */
29
+ private readonly busy;
30
+ private readonly scheduler;
31
+ private session;
32
+ private cancel;
33
+ private lastActivity;
34
+ constructor(host: HTMLElement,
35
+ /** True while a cell is being edited: no slice runs then. */
36
+ busy: () => boolean, scheduler?: IdleScheduler);
37
+ /** Prepares `session` (the workbook just opened) after the next paint; stops earlier work. */
38
+ start(session: EditSession | undefined): void;
39
+ stop(): void;
40
+ /** Whether work is still waiting (tests and diagnostics). */
41
+ get pending(): boolean;
42
+ private next;
43
+ private slice;
44
+ }
@@ -1,11 +1,11 @@
1
1
  import { type ChartObject, type ChartViewModel, type ChartPatch, type Color, type ChartGradientEdit, type ChartFillPart } from 'ooxml-core/xlsx';
2
- import type { DiagramFill } from 'ooxml-core/diagram';
2
+ import type { DrawingFill } from 'ooxml-core/drawingml';
3
3
  import type { ChartGradientFill } from 'ooxml-core/chart';
4
4
  /** UI target binding; every model edit and temporary model remains in core. */
5
5
  export interface ChartFillBinding {
6
6
  commandId: string;
7
7
  key(): number | ChartFillPart;
8
- fill(chart: ChartObject): DiagramFill | undefined;
8
+ fill(chart: ChartObject): DrawingFill | undefined;
9
9
  gradient(view: ChartViewModel): ChartGradientFill | undefined;
10
10
  paint(view: ChartViewModel): string | undefined;
11
11
  rectangular(chart: ChartObject): boolean;
@@ -1,9 +1,10 @@
1
- import type { DiagramFill, DrawingGradientGeometryType } from 'ooxml-core/diagram';
1
+ import type { DrawingGradientGeometryType } from 'ooxml-core/diagram';
2
+ import type { DrawingFill } from 'ooxml-core/drawingml';
2
3
  import type { EditorContext } from 'ooxml-core/xlsx/ui';
3
4
  /** A native type field that keeps unsupported imported types visible until explicitly changed. */
4
5
  export declare function createGradientTypeField(ctx: EditorContext, onPick: (type: DrawingGradientGeometryType) => void): {
5
6
  element: HTMLLabelElement;
6
- refresh(fill: Extract<DiagramFill, {
7
+ refresh(fill: Extract<DrawingFill, {
7
8
  kind: 'gradient';
8
9
  }>, disabled: boolean, rectangularMarks?: boolean): void;
9
10
  };
@@ -0,0 +1,9 @@
1
+ import type { CollabSession } from 'ooxml-core/collab';
2
+ import type { XlsxPresence } from 'ooxml-core/xlsx/collab';
3
+ import type { XlsxCollaborationOptions } from './collaboration-types.js';
4
+ /** The two runtime modules sharing needs; loaded only when sharing starts. */
5
+ export type CollabRuntime = [
6
+ typeof import('ooxml-core/collab'),
7
+ typeof import('ooxml-core/xlsx/collab')
8
+ ];
9
+ export declare function createRoomSession(collab: CollabRuntime[0], xlsx: CollabRuntime[1], options: XlsxCollaborationOptions, defaultName: string): CollabSession<XlsxPresence>;
@@ -0,0 +1,41 @@
1
+ import type { CollabSession, CollaborationRole, ConnectionStatus, ProviderFactory } from 'ooxml-core/collab';
2
+ import type { XlsxPresence } from 'ooxml-core/xlsx/collab';
3
+ /**
4
+ * How to join a shared workbook. One transport is used, in this order: `session` (host-owned,
5
+ * never destroyed by the editor), `provider`, `serverUrl` (a y-websocket compatible server), else a
6
+ * BroadcastChannel between tabs and windows of this browser.
7
+ */
8
+ export interface XlsxCollaborationOptions {
9
+ /** Room name: 1-128 letters, digits, hyphens or underscores. Not needed with `session`. */
10
+ roomId?: string;
11
+ /** Base URL of a y-websocket compatible server (`wss://host/collab`); the room is appended. */
12
+ serverUrl?: string;
13
+ /** A provider factory of your own (WebRTC, an existing provider through `externalProvider`). */
14
+ provider?: ProviderFactory;
15
+ /** An existing session; create it with `sanitizePayload: sanitizeXlsxPresence`. */
16
+ session?: CollabSession<XlsxPresence>;
17
+ /** Who this window is. The name defaults to `authorName`, the colour to a palette colour. */
18
+ user?: {
19
+ name?: string;
20
+ color?: string;
21
+ role?: CollaborationRole;
22
+ };
23
+ }
24
+ /** One person in the room, as the title bar and `collaboration-change` list them. */
25
+ export interface XlsxCollaborator {
26
+ clientId: number;
27
+ name: string;
28
+ color: string;
29
+ self: boolean;
30
+ }
31
+ /** Collaboration state, reported by `collaborationState` and the `collaboration-change` event. */
32
+ export interface XlsxCollaborationState {
33
+ active: boolean;
34
+ roomId: string | undefined;
35
+ /** `off` when not sharing; otherwise the provider's connection status. */
36
+ status: ConnectionStatus | 'off';
37
+ /** The first exchange with the room finished. */
38
+ synced: boolean;
39
+ people: XlsxCollaborator[];
40
+ }
41
+ export declare const OFF_STATE: XlsxCollaborationState;