ooxml-ui 0.27.2 → 0.28.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 (424) hide show
  1. package/dist/chunk-A56QI2OA.js +57 -0
  2. package/dist/{chunk-LE4FTRWB.js → chunk-AJ2J734X.js} +619 -3
  3. package/dist/{chunk-4PBFBPOH.js → chunk-G4ZGQYBH.js} +2 -1
  4. package/dist/controls.js +1 -1
  5. package/dist/docx/backstage-home.d.ts +3 -0
  6. package/dist/docx/backstage-options.d.ts +13 -0
  7. package/dist/docx/backstage-pages.d.ts +41 -0
  8. package/dist/docx/backstage.d.ts +18 -0
  9. package/dist/docx/binding-labels.d.ts +9 -0
  10. package/dist/docx/bookmark-commands.d.ts +20 -0
  11. package/dist/docx/bookmark-dialog.d.ts +4 -0
  12. package/dist/docx/borders-dialog.d.ts +4 -0
  13. package/dist/docx/canvas-measurer.d.ts +7 -0
  14. package/dist/docx/caption-commands.d.ts +31 -0
  15. package/dist/docx/caption-dialog.d.ts +5 -0
  16. package/dist/docx/change-case.d.ts +5 -0
  17. package/dist/docx/character-style-picker.d.ts +12 -0
  18. package/dist/docx/chrome-icons.d.ts +25 -0
  19. package/dist/docx/collaboration-model.d.ts +4 -0
  20. package/dist/docx/collaboration-session.d.ts +18 -0
  21. package/dist/docx/columns-dialog.d.ts +10 -0
  22. package/dist/docx/comment-commands.d.ts +21 -0
  23. package/dist/docx/comments-panel.d.ts +19 -0
  24. package/dist/docx/component.d.ts +70 -0
  25. package/dist/docx/context-menu-actions.d.ts +10 -0
  26. package/dist/docx/context-menu-items.d.ts +36 -0
  27. package/dist/docx/context-menu.d.ts +25 -0
  28. package/dist/docx/contextual-tabs.d.ts +8 -0
  29. package/dist/docx/cover-page.d.ts +14 -0
  30. package/dist/docx/cross-reference-commands.d.ts +30 -0
  31. package/dist/docx/cross-reference-dialog.d.ts +5 -0
  32. package/dist/docx/dialog-fields.d.ts +22 -0
  33. package/dist/docx/dialog-shell.d.ts +19 -0
  34. package/dist/docx/drop-cap-command.d.ts +20 -0
  35. package/dist/docx/drop-cap-dialog.d.ts +4 -0
  36. package/dist/docx/editor-attributes.d.ts +26 -0
  37. package/dist/docx/editor-chrome.d.ts +59 -0
  38. package/dist/docx/editor-commands.d.ts +7 -0
  39. package/dist/docx/editor-controls.d.ts +10 -0
  40. package/dist/docx/editor-core.d.ts +78 -0
  41. package/dist/docx/editor-host.d.ts +19 -0
  42. package/dist/docx/editor-interactions.d.ts +2 -0
  43. package/dist/docx/editor-plugins.d.ts +16 -0
  44. package/dist/docx/editor-presence.d.ts +20 -0
  45. package/dist/docx/editor-render.d.ts +3 -0
  46. package/dist/docx/editor-shell.d.ts +11 -0
  47. package/dist/docx/element-api.d.ts +35 -0
  48. package/dist/docx/equation-schema.d.ts +4 -0
  49. package/dist/docx/events.d.ts +45 -0
  50. package/dist/docx/field-update.d.ts +16 -0
  51. package/dist/docx/file-commands.d.ts +15 -0
  52. package/dist/docx/focus-view.d.ts +3 -0
  53. package/dist/docx/font-advanced.d.ts +18 -0
  54. package/dist/docx/font-dialog-tabs.d.ts +8 -0
  55. package/dist/docx/font-dialog.d.ts +11 -0
  56. package/dist/docx/font-format-batch.d.ts +3 -0
  57. package/dist/docx/font-format.d.ts +38 -0
  58. package/dist/docx/font-step.d.ts +5 -0
  59. package/dist/docx/font-sync.d.ts +9 -0
  60. package/dist/docx/format-dialogs.d.ts +37 -0
  61. package/dist/docx/format-painter.d.ts +12 -0
  62. package/dist/docx/go-to-panel.d.ts +4 -0
  63. package/dist/docx/go-to.d.ts +23 -0
  64. package/dist/docx/hard-break-command.d.ts +3 -0
  65. package/dist/docx/header-footer-commands.d.ts +19 -0
  66. package/dist/docx/header-footer-editor.d.ts +40 -0
  67. package/dist/docx/header-footer-link.d.ts +6 -0
  68. package/dist/docx/header-footer-navigation.d.ts +6 -0
  69. package/dist/docx/header-footer-position.d.ts +3 -0
  70. package/dist/docx/header-footer-ribbon.d.ts +9 -0
  71. package/dist/docx/header-footer-view.d.ts +5 -0
  72. package/dist/docx/heading-commands.d.ts +11 -0
  73. package/dist/docx/heading-navigator.d.ts +33 -0
  74. package/dist/docx/image-media.d.ts +29 -0
  75. package/dist/docx/indent-commands.d.ts +9 -0
  76. package/dist/docx/index.d.ts +23 -0
  77. package/dist/docx/inline-commands.d.ts +4 -0
  78. package/dist/docx/insert-controller.d.ts +46 -0
  79. package/dist/docx/insert-text-commands.d.ts +8 -0
  80. package/dist/docx/keyboard.d.ts +68 -0
  81. package/dist/docx/line-number-dialog.d.ts +11 -0
  82. package/dist/docx/link-commands.d.ts +31 -0
  83. package/dist/docx/link-dialog.d.ts +15 -0
  84. package/dist/docx/list-commands.d.ts +35 -0
  85. package/dist/docx/list-marker-display.d.ts +8 -0
  86. package/dist/docx/locales/columns.d.ts +15 -0
  87. package/dist/docx/locales/de-app.d.ts +8 -0
  88. package/dist/docx/locales/de-ribbon.d.ts +8 -0
  89. package/dist/docx/locales/de.d.ts +2 -0
  90. package/dist/docx/locales/drop-cap.d.ts +10 -0
  91. package/dist/docx/locales/en-app.d.ts +247 -0
  92. package/dist/docx/locales/en-ribbon.d.ts +394 -0
  93. package/dist/docx/locales/en.d.ts +746 -0
  94. package/dist/docx/locales/es-app.d.ts +8 -0
  95. package/dist/docx/locales/es-ribbon.d.ts +8 -0
  96. package/dist/docx/locales/es.d.ts +2 -0
  97. package/dist/docx/locales/font-advanced.d.ts +14 -0
  98. package/dist/docx/locales/fr-app.d.ts +2 -0
  99. package/dist/docx/locales/fr-ribbon.d.ts +2 -0
  100. package/dist/docx/locales/fr.d.ts +2 -0
  101. package/dist/docx/locales/ligatures.d.ts +5 -0
  102. package/dist/docx/locales/line-numbers.d.ts +16 -0
  103. package/dist/docx/locales/multilevel-list.d.ts +5 -0
  104. package/dist/docx/locales/navigation.d.ts +13 -0
  105. package/dist/docx/locales/table-properties.d.ts +29 -0
  106. package/dist/docx/locales/zh-CN-app.d.ts +8 -0
  107. package/dist/docx/locales/zh-CN-ribbon.d.ts +8 -0
  108. package/dist/docx/locales/zh-CN.d.ts +2 -0
  109. package/dist/docx/localization-strings.d.ts +745 -0
  110. package/dist/docx/localization.d.ts +24 -0
  111. package/dist/docx/model-adapter.d.ts +6 -0
  112. package/dist/docx/multilevel-list-dialog.d.ts +5 -0
  113. package/dist/docx/multilingual-commands.d.ts +14 -0
  114. package/dist/docx/multilingual-ribbon.d.ts +6 -0
  115. package/dist/docx/note-commands.d.ts +17 -0
  116. package/dist/docx/note-editor.d.ts +10 -0
  117. package/dist/docx/notes-view.d.ts +3 -0
  118. package/dist/docx/page-borders-dialog.d.ts +16 -0
  119. package/dist/docx/page-break-command.d.ts +5 -0
  120. package/dist/docx/page-controller.d.ts +66 -0
  121. package/dist/docx/page-navigator.d.ts +64 -0
  122. package/dist/docx/page-setup-change.d.ts +7 -0
  123. package/dist/docx/page-setup-dialog.d.ts +12 -0
  124. package/dist/docx/page-sync.d.ts +22 -0
  125. package/dist/docx/paragraph-decoration.d.ts +29 -0
  126. package/dist/docx/paragraph-dialog.d.ts +5 -0
  127. package/dist/docx/paragraph-format.d.ts +37 -0
  128. package/dist/docx/paragraph-styles.d.ts +5 -0
  129. package/dist/docx/paragraph-toggle-sync.d.ts +8 -0
  130. package/dist/docx/parts-controller.d.ts +52 -0
  131. package/dist/docx/picture-commands.d.ts +35 -0
  132. package/dist/docx/picture-dialog.d.ts +11 -0
  133. package/dist/docx/presence-decorations.d.ts +6 -0
  134. package/dist/docx/presence.d.ts +63 -0
  135. package/dist/docx/preview-run-styles.d.ts +4 -0
  136. package/dist/docx/preview-scale-fonts.d.ts +3 -0
  137. package/dist/docx/print-fragment-hit.d.ts +7 -0
  138. package/dist/docx/print-header-footer.d.ts +28 -0
  139. package/dist/docx/print-layout-cursor.d.ts +9 -0
  140. package/dist/docx/print-layout-view.d.ts +38 -0
  141. package/dist/docx/print-layout.d.ts +32 -0
  142. package/dist/docx/print-line-numbers.d.ts +13 -0
  143. package/dist/docx/print-page-borders.d.ts +18 -0
  144. package/dist/docx/print-table.d.ts +8 -0
  145. package/dist/docx/read-aloud.d.ts +11 -0
  146. package/dist/docx/review-commands.d.ts +24 -0
  147. package/dist/docx/review-controller.d.ts +30 -0
  148. package/dist/docx/review-display.d.ts +11 -0
  149. package/dist/docx/review-ribbon.d.ts +2 -0
  150. package/dist/docx/ribbon-action.d.ts +183 -0
  151. package/dist/docx/ribbon-behavior.d.ts +7 -0
  152. package/dist/docx/ribbon-color-grid.d.ts +11 -0
  153. package/dist/docx/ribbon-combo.d.ts +23 -0
  154. package/dist/docx/ribbon-commands.d.ts +13 -0
  155. package/dist/docx/ribbon-controls.d.ts +4 -0
  156. package/dist/docx/ribbon-gallery-menu.d.ts +26 -0
  157. package/dist/docx/ribbon-home.d.ts +4 -0
  158. package/dist/docx/ribbon-icons.d.ts +126 -0
  159. package/dist/docx/ribbon-keytips.d.ts +11 -0
  160. package/dist/docx/ribbon-overflow.d.ts +3 -0
  161. package/dist/docx/ribbon-parts.d.ts +53 -0
  162. package/dist/docx/ribbon-popover.d.ts +16 -0
  163. package/dist/docx/ribbon-router.d.ts +4 -0
  164. package/dist/docx/ribbon-tab-api.d.ts +29 -0
  165. package/dist/docx/ribbon-tabs.d.ts +2 -0
  166. package/dist/docx/ribbon-visibility.d.ts +8 -0
  167. package/dist/docx/ribbon.d.ts +5 -0
  168. package/dist/docx/ruler-sync.d.ts +7 -0
  169. package/dist/docx/ruler.d.ts +36 -0
  170. package/dist/docx/run-adapter.d.ts +9 -0
  171. package/dist/docx/run-marks.d.ts +4 -0
  172. package/dist/docx/run-scale.d.ts +11 -0
  173. package/dist/docx/run-styles.d.ts +19 -0
  174. package/dist/docx/scaled-paragraph-breaks.d.ts +7 -0
  175. package/dist/docx/schema.d.ts +6 -0
  176. package/dist/docx/script-state.d.ts +4 -0
  177. package/dist/docx/search-controller.d.ts +32 -0
  178. package/dist/docx/search-panel.d.ts +14 -0
  179. package/dist/docx/section-commands.d.ts +14 -0
  180. package/dist/docx/shell-labels.d.ts +3 -0
  181. package/dist/docx/shortcut-help.d.ts +16 -0
  182. package/dist/docx/smartart-node-view.d.ts +26 -0
  183. package/dist/docx/sort-commands.d.ts +9 -0
  184. package/dist/docx/spelling.d.ts +6 -0
  185. package/dist/docx/status-bar.d.ts +23 -0
  186. package/dist/docx/style-gallery.d.ts +22 -0
  187. package/dist/docx/styles/index.d.ts +6 -0
  188. package/dist/docx/styles-group.d.ts +7 -0
  189. package/dist/docx/styles-pane.d.ts +15 -0
  190. package/dist/docx/styles-popover.d.ts +24 -0
  191. package/dist/docx/tab-stops-view.d.ts +8 -0
  192. package/dist/docx/table-border-commands.d.ts +51 -0
  193. package/dist/docx/table-cell-alignment-dialog.d.ts +8 -0
  194. package/dist/docx/table-cell-margins-dialog.d.ts +9 -0
  195. package/dist/docx/table-commands.d.ts +6 -0
  196. package/dist/docx/table-model-adapter.d.ts +15 -0
  197. package/dist/docx/table-picker.d.ts +10 -0
  198. package/dist/docx/table-properties-dialog.d.ts +3 -0
  199. package/dist/docx/table-properties.d.ts +28 -0
  200. package/dist/docx/table-shading.d.ts +6 -0
  201. package/dist/docx/test-support.d.ts +24 -0
  202. package/dist/docx/text-box-commands.d.ts +17 -0
  203. package/dist/docx/text-box-dialog.d.ts +4 -0
  204. package/dist/docx/title-bar.d.ts +25 -0
  205. package/dist/docx/toc-commands.d.ts +17 -0
  206. package/dist/docx/toggle-commands.d.ts +8 -0
  207. package/dist/docx/track-changes-mode.d.ts +20 -0
  208. package/dist/docx/view-options.d.ts +10 -0
  209. package/dist/docx/watermark-commands.d.ts +9 -0
  210. package/dist/docx/watermark-dialog.d.ts +11 -0
  211. package/dist/docx/word-count-panel.d.ts +12 -0
  212. package/dist/docx/zoom-dialog.d.ts +16 -0
  213. package/dist/docx.js +21371 -0
  214. package/dist/edit-worker.js +18 -0
  215. package/dist/index.js +4 -60
  216. package/dist/parse-worker.js +16 -0
  217. package/dist/teams/app/bind.d.ts +28 -0
  218. package/dist/teams/app/controller.d.ts +13 -0
  219. package/dist/teams/app/index.d.ts +6 -0
  220. package/dist/teams/app/storage.d.ts +11 -0
  221. package/dist/teams/app/store.d.ts +4 -0
  222. package/dist/teams/app/teams-app.d.ts +110 -0
  223. package/dist/teams/app/teams-settings.d.ts +34 -0
  224. package/dist/teams/index.d.ts +1 -0
  225. package/dist/teams.js +3 -1
  226. package/dist/visio/arrowheads.d.ts +3 -0
  227. package/dist/visio/backstage.d.ts +15 -0
  228. package/dist/visio/binding.d.ts +27 -0
  229. package/dist/visio/controller.d.ts +71 -0
  230. package/dist/visio/edit-worker.d.ts +1 -0
  231. package/dist/visio/export-svg.d.ts +25 -0
  232. package/dist/visio/index.d.ts +14 -0
  233. package/dist/visio/office-ui.d.ts +2 -0
  234. package/dist/visio/paragraph-layout.d.ts +18 -0
  235. package/dist/visio/parse-worker.d.ts +1 -0
  236. package/dist/visio/print-snapshot.d.ts +87 -0
  237. package/dist/visio/render-fill.d.ts +2 -0
  238. package/dist/visio/render-foreign-vector-shape.d.ts +4 -0
  239. package/dist/visio/render-foreign-vector.d.ts +3 -0
  240. package/dist/visio/render-image.d.ts +4 -0
  241. package/dist/visio/render-resources.d.ts +10 -0
  242. package/dist/visio/render-svg.d.ts +17 -0
  243. package/dist/visio/render-text.d.ts +4 -0
  244. package/dist/visio/ribbon-action.d.ts +41 -0
  245. package/dist/visio/ribbon-home-format.d.ts +2 -0
  246. package/dist/visio/ribbon-home.d.ts +6 -0
  247. package/dist/visio/ribbon-keytips.d.ts +2 -0
  248. package/dist/visio/ribbon-other-tabs.d.ts +12 -0
  249. package/dist/visio/ribbon-parts.d.ts +60 -0
  250. package/dist/visio/ribbon-router.d.ts +19 -0
  251. package/dist/visio/ribbon-view.d.ts +5 -0
  252. package/dist/visio/ribbon.d.ts +13 -0
  253. package/dist/visio/shape-inspector.d.ts +5 -0
  254. package/dist/visio/shapes-window.d.ts +28 -0
  255. package/dist/visio/status-bar.d.ts +10 -0
  256. package/dist/visio/styles/index.d.ts +5 -0
  257. package/dist/visio/styles.d.ts +2 -0
  258. package/dist/visio/text-layout.d.ts +45 -0
  259. package/dist/visio/viewer-backstage.d.ts +33 -0
  260. package/dist/visio/viewer-canvas.d.ts +21 -0
  261. package/dist/visio/viewer-chrome.d.ts +22 -0
  262. package/dist/visio/viewer-commands.d.ts +34 -0
  263. package/dist/visio/viewer-context-menu.d.ts +8 -0
  264. package/dist/visio/viewer-draw-tool.d.ts +33 -0
  265. package/dist/visio/viewer-edit-controls.d.ts +12 -0
  266. package/dist/visio/viewer-element.d.ts +51 -0
  267. package/dist/visio/viewer-fit.d.ts +6 -0
  268. package/dist/visio/viewer-geometry-controls.d.ts +14 -0
  269. package/dist/visio/viewer-input.d.ts +10 -0
  270. package/dist/visio/viewer-layer-controls.d.ts +5 -0
  271. package/dist/visio/viewer-layers.d.ts +22 -0
  272. package/dist/visio/viewer-options.d.ts +22 -0
  273. package/dist/visio/viewer-pan-zoom.d.ts +19 -0
  274. package/dist/visio/viewer-ruler.d.ts +13 -0
  275. package/dist/visio/viewer-search.d.ts +18 -0
  276. package/dist/visio/viewer-share.d.ts +20 -0
  277. package/dist/visio/viewer-stencil.d.ts +6 -0
  278. package/dist/visio/viewer-tell-me.d.ts +4 -0
  279. package/dist/visio/worker-editor.d.ts +23 -0
  280. package/dist/visio/worker-parser.d.ts +13 -0
  281. package/dist/visio.js +6618 -0
  282. package/dist/xlsx/backstage/index.d.ts +14 -0
  283. package/dist/xlsx/backstage/pages-file.d.ts +6 -0
  284. package/dist/xlsx/backstage/pages-info.d.ts +10 -0
  285. package/dist/xlsx/backstage/pages-options.d.ts +7 -0
  286. package/dist/xlsx/backstage/parts.d.ts +53 -0
  287. package/dist/xlsx/backstage/properties-custom.d.ts +4 -0
  288. package/dist/xlsx/clipboard.d.ts +26 -0
  289. package/dist/xlsx/commands/index.d.ts +11 -0
  290. package/dist/xlsx/commands/insert-now.d.ts +4 -0
  291. package/dist/xlsx/commands/insert.d.ts +7 -0
  292. package/dist/xlsx/commands/register-icons.d.ts +2 -0
  293. package/dist/xlsx/commands/review.d.ts +6 -0
  294. package/dist/xlsx/commands/styles.d.ts +17 -0
  295. package/dist/xlsx/commands/test-support.d.ts +25 -0
  296. package/dist/xlsx/commands/view.d.ts +7 -0
  297. package/dist/xlsx/component.d.ts +66 -0
  298. package/dist/xlsx/context-menu/index.d.ts +2 -0
  299. package/dist/xlsx/context-menu/menu.d.ts +14 -0
  300. package/dist/xlsx/dialogs/cell-shift.d.ts +5 -0
  301. package/dist/xlsx/dialogs/cf-common.d.ts +29 -0
  302. package/dist/xlsx/dialogs/cf-manager.d.ts +8 -0
  303. package/dist/xlsx/dialogs/cf-quick.d.ts +10 -0
  304. package/dist/xlsx/dialogs/cf-rule-panels.d.ts +20 -0
  305. package/dist/xlsx/dialogs/cf-rule-scale.d.ts +3 -0
  306. package/dist/xlsx/dialogs/cf-rule.d.ts +13 -0
  307. package/dist/xlsx/dialogs/comments-list.d.ts +2 -0
  308. package/dist/xlsx/dialogs/create-names.d.ts +8 -0
  309. package/dist/xlsx/dialogs/create-table.d.ts +6 -0
  310. package/dist/xlsx/dialogs/data-validation.d.ts +3 -0
  311. package/dist/xlsx/dialogs/define-name.d.ts +9 -0
  312. package/dist/xlsx/dialogs/fields.d.ts +47 -0
  313. package/dist/xlsx/dialogs/fill-series.d.ts +10 -0
  314. package/dist/xlsx/dialogs/find-replace.d.ts +8 -0
  315. package/dist/xlsx/dialogs/format-cells/alignment-tab.d.ts +5 -0
  316. package/dist/xlsx/dialogs/format-cells/border-tab.d.ts +4 -0
  317. package/dist/xlsx/dialogs/format-cells/color-swatches.d.ts +10 -0
  318. package/dist/xlsx/dialogs/format-cells/fill-tab.d.ts +11 -0
  319. package/dist/xlsx/dialogs/format-cells/font-tab.d.ts +2 -0
  320. package/dist/xlsx/dialogs/format-cells/index.d.ts +6 -0
  321. package/dist/xlsx/dialogs/format-cells/number-tab.d.ts +7 -0
  322. package/dist/xlsx/dialogs/format-cells/protection-tab.d.ts +2 -0
  323. package/dist/xlsx/dialogs/format-cells/tab-color.d.ts +6 -0
  324. package/dist/xlsx/dialogs/frame.d.ts +27 -0
  325. package/dist/xlsx/dialogs/go-to.d.ts +12 -0
  326. package/dist/xlsx/dialogs/help-dialogs.d.ts +5 -0
  327. package/dist/xlsx/dialogs/host.d.ts +6 -0
  328. package/dist/xlsx/dialogs/hyperlink.d.ts +16 -0
  329. package/dist/xlsx/dialogs/index.d.ts +2 -0
  330. package/dist/xlsx/dialogs/insert-chart.d.ts +7 -0
  331. package/dist/xlsx/dialogs/insert-function.d.ts +10 -0
  332. package/dist/xlsx/dialogs/move-copy-sheet.d.ts +5 -0
  333. package/dist/xlsx/dialogs/name-manager.d.ts +9 -0
  334. package/dist/xlsx/dialogs/package-password.d.ts +3 -0
  335. package/dist/xlsx/dialogs/page-setup-tabs.d.ts +23 -0
  336. package/dist/xlsx/dialogs/page-setup.d.ts +6 -0
  337. package/dist/xlsx/dialogs/paste-special.d.ts +3 -0
  338. package/dist/xlsx/dialogs/prompts.d.ts +42 -0
  339. package/dist/xlsx/dialogs/protect-sheet.d.ts +8 -0
  340. package/dist/xlsx/dialogs/register-navigation.d.ts +2 -0
  341. package/dist/xlsx/dialogs/register-rules.d.ts +2 -0
  342. package/dist/xlsx/dialogs/register-tools.d.ts +2 -0
  343. package/dist/xlsx/dialogs/remove-duplicates.d.ts +2 -0
  344. package/dist/xlsx/dialogs/simple.d.ts +2 -0
  345. package/dist/xlsx/dialogs/sort-dialog.d.ts +6 -0
  346. package/dist/xlsx/dialogs/statistics.d.ts +12 -0
  347. package/dist/xlsx/dialogs/styles.d.ts +1 -0
  348. package/dist/xlsx/dialogs/symbol.d.ts +6 -0
  349. package/dist/xlsx/dialogs/text-to-columns.d.ts +9 -0
  350. package/dist/xlsx/dialogs/zoom.d.ts +2 -0
  351. package/dist/xlsx/editor-attributes.d.ts +26 -0
  352. package/dist/xlsx/editor-core.d.ts +91 -0
  353. package/dist/xlsx/editor-files.d.ts +28 -0
  354. package/dist/xlsx/editor-shell.d.ts +29 -0
  355. package/dist/xlsx/element-api.d.ts +34 -0
  356. package/dist/xlsx/events.d.ts +64 -0
  357. package/dist/xlsx/file-commands.d.ts +24 -0
  358. package/dist/xlsx/formula-bar/formula-input.d.ts +11 -0
  359. package/dist/xlsx/formula-bar/index.d.ts +3 -0
  360. package/dist/xlsx/formula-bar/name-box.d.ts +10 -0
  361. package/dist/xlsx/formula-bar/styles.d.ts +1 -0
  362. package/dist/xlsx/grid/alert.d.ts +4 -0
  363. package/dist/xlsx/grid/cell-editor.d.ts +29 -0
  364. package/dist/xlsx/grid/cell-layer.d.ts +14 -0
  365. package/dist/xlsx/grid/dom.d.ts +19 -0
  366. package/dist/xlsx/grid/drawing-keys.d.ts +7 -0
  367. package/dist/xlsx/grid/drawings.d.ts +12 -0
  368. package/dist/xlsx/grid/formula-field.d.ts +11 -0
  369. package/dist/xlsx/grid/function-assist.d.ts +16 -0
  370. package/dist/xlsx/grid/grid-a11y.d.ts +12 -0
  371. package/dist/xlsx/grid/grid-commands.d.ts +19 -0
  372. package/dist/xlsx/grid/grid-keys.d.ts +19 -0
  373. package/dist/xlsx/grid/grid-menus.d.ts +8 -0
  374. package/dist/xlsx/grid/grid-pointer.d.ts +16 -0
  375. package/dist/xlsx/grid/grid-selection.d.ts +22 -0
  376. package/dist/xlsx/grid/grid-view.d.ts +75 -0
  377. package/dist/xlsx/grid/gridlines.d.ts +7 -0
  378. package/dist/xlsx/grid/header-resize.d.ts +8 -0
  379. package/dist/xlsx/grid/headers.d.ts +9 -0
  380. package/dist/xlsx/grid/index.d.ts +8 -0
  381. package/dist/xlsx/grid/indicators.d.ts +5 -0
  382. package/dist/xlsx/grid/measure.d.ts +9 -0
  383. package/dist/xlsx/grid/pane-chrome.d.ts +22 -0
  384. package/dist/xlsx/grid/point-mode.d.ts +27 -0
  385. package/dist/xlsx/grid/selection-layer.d.ts +32 -0
  386. package/dist/xlsx/grid/smartart.d.ts +10 -0
  387. package/dist/xlsx/grid/styles.d.ts +1 -0
  388. package/dist/xlsx/grid/test-context.d.ts +14 -0
  389. package/dist/xlsx/grid/validation-list.d.ts +13 -0
  390. package/dist/xlsx/index.d.ts +10 -0
  391. package/dist/xlsx/keyboard.d.ts +41 -0
  392. package/dist/xlsx/modules.d.ts +4 -0
  393. package/dist/xlsx/print.d.ts +22 -0
  394. package/dist/xlsx/ribbon/caption.d.ts +4 -0
  395. package/dist/xlsx/ribbon/color-grid.d.ts +18 -0
  396. package/dist/xlsx/ribbon/controls-input.d.ts +22 -0
  397. package/dist/xlsx/ribbon/controls.d.ts +28 -0
  398. package/dist/xlsx/ribbon/icons.d.ts +8 -0
  399. package/dist/xlsx/ribbon/keytips.d.ts +12 -0
  400. package/dist/xlsx/ribbon/overflow.d.ts +3 -0
  401. package/dist/xlsx/ribbon/popover.d.ts +30 -0
  402. package/dist/xlsx/ribbon/ribbon.d.ts +24 -0
  403. package/dist/xlsx/ribbon/tabs/contextual.d.ts +3 -0
  404. package/dist/xlsx/ribbon/tabs/formulas-data.d.ts +3 -0
  405. package/dist/xlsx/ribbon/tabs/home-groups.d.ts +6 -0
  406. package/dist/xlsx/ribbon/tabs/home.d.ts +3 -0
  407. package/dist/xlsx/ribbon/tabs/index.d.ts +2 -0
  408. package/dist/xlsx/ribbon/tabs/insert-layout.d.ts +3 -0
  409. package/dist/xlsx/ribbon/visibility.d.ts +1 -0
  410. package/dist/xlsx/sheet-tabs/drag.d.ts +12 -0
  411. package/dist/xlsx/sheet-tabs/index.d.ts +4 -0
  412. package/dist/xlsx/sheet-tabs/rename.d.ts +8 -0
  413. package/dist/xlsx/sheet-tabs/render.d.ts +15 -0
  414. package/dist/xlsx/sheet-tabs/styles.d.ts +1 -0
  415. package/dist/xlsx/shell-commands.d.ts +13 -0
  416. package/dist/xlsx/shortcut-help.d.ts +15 -0
  417. package/dist/xlsx/status-bar.d.ts +26 -0
  418. package/dist/xlsx/test-support/shell.d.ts +19 -0
  419. package/dist/xlsx/theme/index.d.ts +5 -0
  420. package/dist/xlsx/theme/styles.d.ts +7 -0
  421. package/dist/xlsx/title-bar.d.ts +17 -0
  422. package/dist/xlsx/toast.d.ts +8 -0
  423. package/dist/xlsx.js +14188 -0
  424. package/package.json +27 -2
@@ -0,0 +1,10 @@
1
+ import type { VisioImage } from 'ooxml-core/visio';
2
+ /** One reference per shared core image resource, with explicit per-render disposal. */
3
+ export declare class RenderResources {
4
+ #private;
5
+ private readonly definitions?;
6
+ constructor(definitions?: SVGDefsElement | undefined);
7
+ get portable(): boolean;
8
+ imageUrl(image: VisioImage): string;
9
+ dispose(): void;
10
+ }
@@ -0,0 +1,17 @@
1
+ import { type VisioDocument, type VisioPage, type VisioMatrix } from 'ooxml-core/visio';
2
+ import { type LayerVisibilityOverride } from './viewer-layers.js';
3
+ export declare function svgElement<K extends keyof SVGElementTagNameMap>(name: K): SVGElementTagNameMap[K];
4
+ export declare function safeColor(value: string, fallback?: string): string;
5
+ export declare function matrix(value: VisioMatrix): string;
6
+ export interface RenderResult {
7
+ svg: SVGSVGElement;
8
+ warnings: string[];
9
+ dispose(): void;
10
+ }
11
+ export interface RenderOptions {
12
+ /** Static output embeds rasters and omits viewer selection semantics. Prefer exportPageSvg for bounded serialization. */
13
+ static?: boolean;
14
+ /** Optional viewer display state. Export/print snapshot APIs deliberately use saved display. */
15
+ layerVisibilityOverrides?: readonly LayerVisibilityOverride[];
16
+ }
17
+ export declare function renderPage(model: VisioDocument, page: VisioPage, options?: RenderOptions): RenderResult;
@@ -0,0 +1,4 @@
1
+ import type { VisioText } from 'ooxml-core/visio';
2
+ import type { TextLayoutBudget } from './text-layout.js';
3
+ /** Browser-font layout is approximate until compared with the licensed Visio reference corpus. */
4
+ export declare function renderText(text: VisioText, warnings: Set<string>, budget?: TextLayoutBudget): SVGGElement;
@@ -0,0 +1,41 @@
1
+ /** Every command the Visio ribbon, status bar or a shortcut can raise, as a `ribbon-action` event. */
2
+ export type VisioRibbonAction = {
3
+ type: 'history';
4
+ key: 'undo' | 'redo';
5
+ } | {
6
+ type: 'tool';
7
+ tool: 'pointer' | 'rectangle';
8
+ } | {
9
+ type: 'delete';
10
+ } | {
11
+ type: 'pane';
12
+ pane: 'shapes' | 'inspector';
13
+ } | {
14
+ type: 'reveal';
15
+ panel: 'edit' | 'notes' | 'selection' | 'layers';
16
+ focusText?: boolean;
17
+ } | {
18
+ type: 'grid';
19
+ } | {
20
+ type: 'panZoom';
21
+ } | {
22
+ type: 'ruler';
23
+ } | {
24
+ type: 'fullscreen';
25
+ } | {
26
+ type: 'zoom';
27
+ mode: 'fit' | 'width' | 'actual';
28
+ } | {
29
+ type: 'zoomTo';
30
+ percent: number;
31
+ } | {
32
+ type: 'search';
33
+ } | {
34
+ type: 'page';
35
+ step: 1 | -1;
36
+ };
37
+ /** Event name shared by every ribbon control; detail is the typed action. */
38
+ export declare const RIBBON_ACTION_EVENT = "ribbon-action";
39
+ export type RibbonActionEvent = CustomEvent<VisioRibbonAction>;
40
+ /** Internal, non-composed event: it stays inside the viewer's shadow tree. */
41
+ export declare function emitRibbonAction(target: EventTarget, action: VisioRibbonAction): void;
@@ -0,0 +1,2 @@
1
+ /** Visio's Home > Clipboard, Font and Paragraph groups, in Visio's layout. */
2
+ export declare function textGroups(doc: Document): [HTMLElement, HTMLElement, HTMLElement];
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Microsoft Visio's Home tab, group for group: Clipboard, Font, Paragraph, Tools, Shape
3
+ * Styles, Arrange and Editing. Commands the core cannot perform yet are shown disabled with the
4
+ * missing capability in their tooltip. On phones every group folds into the Tools disclosure.
5
+ */
6
+ export declare function buildHomePanel(doc: Document, panel: HTMLElement): void;
@@ -0,0 +1,2 @@
1
+ /** Annotate the ribbon for KeyTips. Labels and ids are static application strings. */
2
+ export declare function applyKeyTips(toolbar: HTMLElement): void;
@@ -0,0 +1,12 @@
1
+ /** Visio's Insert tab: Pages, Illustrations, Diagram Parts, Links and Text. */
2
+ export declare function buildInsertPanel(doc: Document, panel: HTMLElement): void;
3
+ /** Visio's Design tab: Page Setup, Themes, Variants, Backgrounds and Layout. */
4
+ export declare function buildDesignPanel(doc: Document, panel: HTMLElement): void;
5
+ /** Visio's Data tab. Shape Data Window maps to the viewer's shape inspector. */
6
+ export declare function buildDataPanel(doc: Document, panel: HTMLElement): void;
7
+ /** Visio's Process tab. */
8
+ export declare function buildProcessPanel(doc: Document, panel: HTMLElement): void;
9
+ /** Visio's Review tab: Proofing, Language, Comments and Reports. */
10
+ export declare function buildReviewPanel(doc: Document, panel: HTMLElement): void;
11
+ /** Visio's Help tab. Help content, support and training are not bundled in this viewer. */
12
+ export declare function buildHelpPanel(doc: Document, panel: HTMLElement): void;
@@ -0,0 +1,60 @@
1
+ import { type VisioRibbonAction } from './ribbon-action.js';
2
+ /** A shared `office-ui-*` command element with Visio state hooks. */
3
+ export type RibbonCommand = HTMLElement & {
4
+ disabled: boolean;
5
+ };
6
+ /**
7
+ * One ribbon command. `id` is a stable name for state sync and tests; the typed `action` is
8
+ * what runs. Without an action the command is shown, disabled, with `unsupported` explaining
9
+ * what is missing, so the ribbon matches Visio without claiming features it lacks.
10
+ */
11
+ export interface CommandSpec {
12
+ id: string;
13
+ label: string;
14
+ icon?: string;
15
+ action?: VisioRibbonAction;
16
+ unsupported?: string;
17
+ /** `large` stacks icon over label; `small` is icon and label in a row; `icon` is icon-only. */
18
+ size?: 'large' | 'small' | 'icon';
19
+ keys?: [aria: string, hint: string];
20
+ pressed?: boolean;
21
+ controls?: string;
22
+ checked?: boolean;
23
+ }
24
+ export interface MenuSpec extends CommandSpec {
25
+ items: readonly CommandSpec[];
26
+ /** Split button: the main part runs `action`, the caret opens the menu. */
27
+ split?: boolean;
28
+ }
29
+ /** A shared `office-ui-button` in Visio's large, small or icon-only size. */
30
+ export declare function command(doc: Document, spec: CommandSpec): RibbonCommand;
31
+ /** A shared `office-ui-menu-button` (dropdown or split) with typed actions per item. */
32
+ export declare function menu(doc: Document, spec: MenuSpec): RibbonCommand;
33
+ /** Office's three-row column of small commands, or a row with `horizontal`. */
34
+ export declare function stack(doc: Document, children: readonly HTMLElement[], horizontal?: boolean): HTMLElement;
35
+ /** A labelled ribbon group; `launcher` shows Visio's dialog launcher, disabled with a reason. */
36
+ export declare function group(doc: Document, label: string, children: readonly HTMLElement[], options?: {
37
+ className?: string;
38
+ launcher?: string;
39
+ }): HTMLElement;
40
+ /** A labelled shared checkbox (Visio's View > Show options). */
41
+ export declare function check(doc: Document, spec: CommandSpec): HTMLElement;
42
+ /** A shared select shown as Visio's font or size combo; disabled until core supports it. */
43
+ export declare function combo(doc: Document, spec: {
44
+ id: string;
45
+ label: string;
46
+ placeholder: string;
47
+ width: number;
48
+ unsupported: string;
49
+ }): HTMLElement;
50
+ /** A keyboard-navigable row of groups (the shared `office-ui-toolbar`). */
51
+ export declare function commandRow(doc: Document, label: string, children: readonly HTMLElement[]): HTMLElement;
52
+ /**
53
+ * A shared `office-ui-context-menu` of typed commands and separators (`'-'`). Items without an
54
+ * action are shown disabled with their reason, as in the ribbon.
55
+ */
56
+ export declare function contextMenu(doc: Document, id: string, label: string, items: readonly (CommandSpec | '-')[]): HTMLElement & {
57
+ openAt(x: number, y: number): void;
58
+ close(): void;
59
+ open: boolean;
60
+ };
@@ -0,0 +1,19 @@
1
+ import type { ViewerController } from './controller.js';
2
+ import type { VisioRibbonAction } from './ribbon-action.js';
3
+ /** The controllers a ribbon action can reach. The element supplies each one. */
4
+ export interface RibbonTargets {
5
+ controller: ViewerController;
6
+ history(key: 'undo' | 'redo'): void;
7
+ deleteSelection(): void;
8
+ setTool(tool: 'pointer' | 'rectangle'): void;
9
+ toggleGrid(): void;
10
+ toggleRuler(): void;
11
+ togglePanZoom(): void;
12
+ toggleFullscreen(): void;
13
+ togglePane(pane: 'shapes' | 'inspector'): void;
14
+ reveal(panel: 'edit' | 'notes' | 'selection' | 'layers', focusText: boolean): void;
15
+ fit(mode: 'page' | 'width'): void;
16
+ focusSearch(): void;
17
+ }
18
+ /** Routes a ribbon, status-bar or shortcut action to the controller that owns it. */
19
+ export declare function routeRibbonAction(targets: RibbonTargets, action: VisioRibbonAction): void;
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Microsoft Visio's View tab: Views, Show, Zoom, Visual Aids, Window and Macros. Ruler, Grid,
3
+ * Task Panes, Full Screen and every Zoom command work; the rest is shown disabled with a reason.
4
+ */
5
+ export declare function buildViewPanel(doc: Document, panel: HTMLElement): void;
@@ -0,0 +1,13 @@
1
+ import { buildHomePanel } from './ribbon-home.js';
2
+ import { buildDataPanel, buildDesignPanel, buildHelpPanel, buildInsertPanel, buildProcessPanel, buildReviewPanel } from './ribbon-other-tabs.js';
3
+ import { buildViewPanel } from './ribbon-view.js';
4
+ export type { VisioRibbonAction } from './ribbon-action.js';
5
+ /** Visio's ribbon tab order. File (backstage) belongs to the host application. */
6
+ export declare const RIBBON_TABS: readonly [readonly ['home', 'Home', typeof buildHomePanel], readonly ['insert', 'Insert', typeof buildInsertPanel], readonly ['design', 'Design', typeof buildDesignPanel], readonly ['data', 'Data', typeof buildDataPanel], readonly ['process', 'Process', typeof buildProcessPanel], readonly ['review', 'Review', typeof buildReviewPanel], readonly ['view', 'View', typeof buildViewPanel], readonly ['help', 'Help', typeof buildHelpPanel]];
7
+ export type RibbonTab = (typeof RIBBON_TABS)[number][0];
8
+ /**
9
+ * The Visio ribbon on the shared `office-ui-ribbon`: Quick Access Toolbar, File, one panel per
10
+ * tab and Tell me. The shared element owns the tab row, selection and arrow-key movement;
11
+ * commands emit `ribbon-action` events for the router.
12
+ */
13
+ export declare function createRibbon(doc: Document): HTMLElement;
@@ -0,0 +1,5 @@
1
+ import type { VisioDocument, VisioShape } from 'ooxml-core/visio';
2
+ import type { ViewerState } from './controller.js';
3
+ export declare function selectedShape(document: VisioDocument | null, selection: ViewerState['selectedShape'], pageIndex: number): VisioShape | undefined;
4
+ export declare function safeExternalHref(value: string): string | undefined;
5
+ export declare function shapeDetails(shape: VisioShape): DocumentFragment;
@@ -0,0 +1,28 @@
1
+ /** Drag payload type for a stencil master; the value is the master id. */
2
+ export declare const MASTER_MIME = "application/x-visio-viewer-master";
3
+ interface Master {
4
+ id: string;
5
+ name: string;
6
+ /** Preview outline in a 24x24 box (static application geometry). */
7
+ path: string;
8
+ /** Default size in inches when dropped. */
9
+ size?: {
10
+ width: number;
11
+ height: number;
12
+ };
13
+ }
14
+ /** Visio's Basic Shapes stencil, in Visio's order. */
15
+ export declare const BASIC_SHAPES: readonly Master[];
16
+ /**
17
+ * Visio's Shapes window: Stencils and Search views, More Shapes and Quick Shapes rows and the
18
+ * Basic Shapes stencil. Masters are dragged onto the page; Enter adds one at the page centre.
19
+ */
20
+ export declare function createShapesWindow(doc: Document): HTMLElement;
21
+ /** Default size of a stencil master the viewer can create, or nothing when unsupported. */
22
+ export declare function masterSize(id: string): {
23
+ width: number;
24
+ height: number;
25
+ } | undefined;
26
+ /** Visio's minimised Shapes window: a narrow strip that reopens the window. */
27
+ export declare function createShapesStrip(doc: Document): HTMLButtonElement;
28
+ export {};
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Visio's status bar on the shared `office-ui-status-bar`: page and shape metrics, a live
3
+ * message region, compatibility notes, the host footer slot and the shared zoom slider.
4
+ */
5
+ export declare function createStatusBar(doc: Document): HTMLElement;
6
+ /**
7
+ * Visio's page bar under the drawing: the All pages list, the shared document tab strip and
8
+ * Insert Page, which stays disabled until core can add pages.
9
+ */
10
+ export declare function createPageTabs(doc: Document): HTMLElement;
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Viewer stylesheets as text for the shadow root. New styles are CSS files here; the legacy
3
+ * `styles.ts` string moves into this directory when it is next changed.
4
+ */
5
+ export declare const canvasAndRibbonStyles: string;
@@ -0,0 +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";
@@ -0,0 +1,45 @@
1
+ import type { VisioTextRun } from 'ooxml-core/visio';
2
+ export interface TextLine {
3
+ runs: VisioTextRun[];
4
+ width: number;
5
+ height: number;
6
+ }
7
+ export type MeasureText = (text: string, run: VisioTextRun) => number;
8
+ export interface TextLayoutLimits {
9
+ maxCharacters: number;
10
+ maxMeasurements: number;
11
+ maxLines: number;
12
+ maxFragments: number;
13
+ maxShapeCharacters: number;
14
+ maxShapeMeasurements: number;
15
+ maxShapeLines: number;
16
+ maxShapeFragments: number;
17
+ maxCacheEntries: number;
18
+ }
19
+ export declare class TextLayoutBudgetError extends Error {
20
+ constructor(message: string);
21
+ }
22
+ /** One bounded measurement cache and work budget per render; shape scopes share both. */
23
+ export declare class TextLayoutBudget {
24
+ #private;
25
+ readonly limits: Readonly<TextLayoutLimits>;
26
+ private readonly cache;
27
+ private readonly parent?;
28
+ private constructor();
29
+ static create(options?: Partial<TextLayoutLimits>): TextLayoutBudget;
30
+ get characters(): number;
31
+ get measurements(): number;
32
+ get lines(): number;
33
+ get fragments(): number;
34
+ /** A shape may be omitted without consuming the rest of the page's budget. */
35
+ forShape(): TextLayoutBudget;
36
+ reserveCharacters(count: number): void;
37
+ reserveLine(): void;
38
+ reserveFragment(): void;
39
+ private reserveMeasurement;
40
+ measure(text: string, run: VisioTextRun, measure: MeasureText): number;
41
+ }
42
+ export declare const createTextLayoutBudget: (options?: Partial<TextLayoutLimits>) => TextLayoutBudget;
43
+ export declare const measureBrowserText: MeasureText;
44
+ /** Rendering-only greedy wrapping. Inject one budget across shapes to bound total UI-thread work. */
45
+ export declare function wrapText(runs: VisioTextRun[], width: number, measure?: MeasureText, firstLineIndent?: number, budget?: TextLayoutBudget): TextLine[];
@@ -0,0 +1,33 @@
1
+ import type { ViewerState } from './controller.js';
2
+ import type { VsdxSource } from 'ooxml-core/visio/ui';
3
+ import { type BackstagePage } from './backstage.js';
4
+ /** What the backstage needs from the element; every action delegates to existing APIs. */
5
+ export interface BackstageHost {
6
+ root: ShadowRoot;
7
+ viewport: HTMLElement;
8
+ fileName(): string;
9
+ load(source: VsdxSource): Promise<void>;
10
+ exportVsdx(): {
11
+ bytes: Uint8Array;
12
+ dirty: boolean;
13
+ };
14
+ exportSvg(): {
15
+ svg: string;
16
+ pageIndex: number;
17
+ };
18
+ closeDocument(): void;
19
+ revealNotes(): void;
20
+ showOptions(): void;
21
+ announce(message: string): void;
22
+ noteCount(): number;
23
+ }
24
+ export declare class ViewerBackstage {
25
+ #private;
26
+ private readonly host;
27
+ constructor(host: BackstageHost);
28
+ get open(): boolean;
29
+ show(page?: BackstagePage): void;
30
+ hide(): void;
31
+ wire(): () => void;
32
+ render(state: ViewerState): void;
33
+ }
@@ -0,0 +1,21 @@
1
+ import type { ViewerState } from './controller.js';
2
+ /**
3
+ * The drawing window: renders the current page, owns its resources, lists compatibility notes
4
+ * and marks the selection (revealing search hits). Page re-renders happen only when the
5
+ * document, page or layer overrides change.
6
+ */
7
+ export declare class ViewerCanvas {
8
+ #private;
9
+ private readonly viewport;
10
+ private readonly notes;
11
+ private readonly notesPanel;
12
+ private readonly inspector;
13
+ constructor(viewport: HTMLElement, notes: HTMLUListElement, notesPanel: HTMLElement, inspector: HTMLDetailsElement);
14
+ get warnings(): readonly string[];
15
+ /** Force the next render to redraw the page (fonts loaded, element reconnected). */
16
+ invalidate(): void;
17
+ /** Release page resources and forget selection and search memory. */
18
+ dispose(): void;
19
+ /** Returns true when the page itself was re-rendered. */
20
+ render(state: ViewerState): boolean;
21
+ }
@@ -0,0 +1,22 @@
1
+ import type { ViewerController, ViewerState } from './controller.js';
2
+ /**
3
+ * Static workspace markup (legacy; migrate to builders when next changed). The ribbon, Shapes
4
+ * window, page tabs and status bar are built by their own modules. Visio keeps pages in the
5
+ * bottom tabs and the All pages list, so there is no page pane. Labels are inserted as text.
6
+ */
7
+ export declare const viewerChromeTemplate = "<div class=\"workspace\">\n <div class=\"viewport\" tabindex=\"0\" role=\"region\" aria-label=\"Diagram canvas\"></div>\n <aside id=\"inspector-pane\" class=\"inspector-pane\" aria-label=\"Drawing inspector\">\n <div class=\"pane-heading\"><span>Inspector</span><span class=\"inspector-kind\">Drawing</span><button class=\"pane-close\" type=\"button\" data-chrome=\"inspector\" aria-label=\"Close inspector\">\u00D7</button></div>\n <div class=\"inspector-body\">\n <section class=\"inspector-card document-card\" aria-label=\"Current page\"><h2>Current page</h2><p class=\"current-page-name\" data-page-name>No diagram open</p><dl><dt>Size</dt><dd data-page-size>No page</dd><dt>Shapes</dt><dd data-page-shapes>No shapes</dd></dl></section>\n <p class=\"selection-hint\">Select a shape on the canvas to see its data and links.</p>\n <details class=\"shape-inspector inspector-card\" hidden><summary>Selected shape</summary><div></div></details>\n <details class=\"edit-controls\"><summary>Edit diagram (experimental)</summary><p id=\"edit-warning\">Experimental source-backed editing. Unsupported targets are rejected. Native Visio compatibility is not verified. Keep your original file.</p><p data-edit-target></p><label for=\"edit-text\">Selected shape text</label><textarea id=\"edit-text\" rows=\"3\" aria-describedby=\"edit-warning edit-target edit-status\"></textarea><div class=\"edit-actions\"><button type=\"button\" data-edit=\"apply\">Apply text</button><button type=\"button\" data-edit=\"cancel\">Cancel</button><button type=\"button\" data-edit=\"undo\">Undo</button><button type=\"button\" data-edit=\"redo\">Redo</button></div><p id=\"edit-status\" role=\"status\" aria-live=\"polite\"></p><p data-edit-error role=\"alert\" hidden></p><ul data-edit-diagnostics></ul><fieldset data-geometry><legend>Geometry (experimental)</legend><p>Pin X/Y use drawing inches, bottom-left origin, Y up. Resize holds the rotation pin fixed. Core rejects unsupported formulas, protected cells, unsafe group/master dependencies and referenced deletion. Native Visio reopen fidelity is unverified.</p><label>New rectangle ID <input data-geometry-field=\"id\" type=\"text\" maxlength=\"256\"></label><label>Rectangle text (optional) <input data-geometry-field=\"text\" type=\"text\" maxlength=\"1000000\"></label><label>Pin X (inches) <input data-geometry-field=\"x\" type=\"number\" step=\"any\"></label><label>Pin Y (inches) <input data-geometry-field=\"y\" type=\"number\" step=\"any\"></label><label>Width (inches) <input data-geometry-field=\"width\" type=\"number\" min=\"0\" step=\"any\"></label><label>Height (inches) <input data-geometry-field=\"height\" type=\"number\" min=\"0\" step=\"any\"></label><div class=\"edit-actions\"><button type=\"button\" data-geometry-action=\"create-rectangle\">Create rectangle</button><button type=\"button\" data-geometry-action=\"move-shape\">Move selected</button><button type=\"button\" data-geometry-action=\"resize-shape\">Resize selected</button><button type=\"button\" data-geometry-action=\"delete-shape\">Delete selected</button></div><p data-geometry-error role=\"alert\" hidden></p></fieldset></details><details class=\"layer-controls\" hidden><summary>Layers</summary><p>Display changes only. SVG and print snapshots use saved visibility. Guides, NoShow and unknown hidden reasons remain hidden.</p><div data-layer-list></div><p data-layer-status role=\"status\"></p><button type=\"button\" data-layer-reset=\"all\">Reset all layers</button></details>\n <details class=\"notes inspector-card\"><summary>Compatibility notes</summary><ul></ul></details>\n </div>\n </aside>\n</div>";
8
+ export type TaskPane = 'shapes' | 'inspector';
9
+ /** Presentation state stays local; page navigation uses the same controller as every binding. */
10
+ export declare class ViewerChrome {
11
+ #private;
12
+ constructor(root: ShadowRoot, controller: ViewerController);
13
+ wire(): () => void;
14
+ showTab(tab: string): void;
15
+ /** On phones, close the Tools sheet once a command runs. */
16
+ closeCompactTools(): void;
17
+ /** Show or hide a task pane; compact layouts close the Tools menu afterwards. */
18
+ togglePane(pane: TaskPane): void;
19
+ /** Open an inspector disclosure; text editing may focus the text field directly (F2). */
20
+ reveal(kind: 'notes' | 'selection' | 'edit' | 'layers', focusText?: boolean): void;
21
+ render(state: ViewerState, noteCount: number): void;
22
+ }
@@ -0,0 +1,34 @@
1
+ import type { ViewerController, ViewerState } from './controller.js';
2
+ import { type VisioRibbonAction } from './ribbon-action.js';
3
+ import type { Rulers } from './viewer-ruler.js';
4
+ export type CanvasTool = 'pointer' | 'rectangle';
5
+ interface CommandHost {
6
+ root: ShadowRoot;
7
+ viewport: HTMLElement;
8
+ rulers: Rulers;
9
+ controller: ViewerController;
10
+ fit(mode: 'page' | 'width'): void;
11
+ togglePane(pane: 'shapes' | 'inspector'): void;
12
+ reveal(panel: 'edit' | 'notes' | 'selection' | 'layers', focusText: boolean): void;
13
+ focusSearch(): void;
14
+ togglePanZoom(): void;
15
+ /** Transient command feedback for the status bar; document text is never interpreted as markup. */
16
+ announce(message: string): void;
17
+ }
18
+ /**
19
+ * Visio command state (tool, grid, pending edits) and keyboard shortcuts. Ribbon controls emit
20
+ * typed `ribbon-action` events and shortcuts build the same actions; both go through
21
+ * `routeRibbonAction`. Document mutation stays in the controller and core.
22
+ */
23
+ export declare class ViewerCommands {
24
+ #private;
25
+ private readonly host;
26
+ constructor(host: CommandHost);
27
+ get tool(): CanvasTool;
28
+ /** Run one typed action, exactly as a ribbon control or shortcut would. */
29
+ run(action: VisioRibbonAction): void;
30
+ wire(): () => void;
31
+ setTool(tool: CanvasTool): void;
32
+ render(state: ViewerState): void;
33
+ }
34
+ export {};
@@ -0,0 +1,8 @@
1
+ import type { ViewerController } from './controller.js';
2
+ /** Visio's shape and page context menus; commands the core lacks are shown disabled. */
3
+ export declare function createContextMenus(doc: Document): HTMLElement[];
4
+ /**
5
+ * Right-click, Shift+F10 or the Menu key on the canvas: a shape menu for the shape under the
6
+ * pointer (selecting it first, as Visio does) or a page menu on empty paper.
7
+ */
8
+ export declare function wireContextMenus(root: ShadowRoot, viewport: HTMLElement, controller: ViewerController): () => void;
@@ -0,0 +1,33 @@
1
+ import type { VisioPage } from 'ooxml-core/visio';
2
+ import type { ViewerController } from './controller.js';
3
+ /** Next free numeric shape ID on the page tree. Core still rejects any collision. */
4
+ export declare function nextShapeId(page: VisioPage): string;
5
+ /** Page inches with a top-left origin (SVG user space) from a client point. */
6
+ export declare function pagePoint(svg: SVGSVGElement, page: VisioPage, event: Pick<MouseEvent, 'clientX' | 'clientY'>): {
7
+ x: number;
8
+ y: number;
9
+ } | undefined;
10
+ /**
11
+ * Create one rectangle through core and select it. `centre` is in top-left page inches (SVG
12
+ * space); core pins are centre points in bottom-left, y-up drawing inches.
13
+ */
14
+ export declare function insertRectangle(controller: ViewerController, page: VisioPage, centre: {
15
+ x: number;
16
+ y: number;
17
+ }, size: {
18
+ width: number;
19
+ height: number;
20
+ }): Promise<string>;
21
+ /** Drag-to-draw rectangle tool. The preview is viewer-only; the shape is created by core. */
22
+ export declare class RectangleDrawTool {
23
+ #private;
24
+ private readonly viewport;
25
+ private readonly controller;
26
+ private readonly options;
27
+ constructor(viewport: HTMLElement, controller: ViewerController, options: {
28
+ active(): boolean;
29
+ announce(message: string): void;
30
+ });
31
+ get drawing(): boolean;
32
+ wire(): () => void;
33
+ }
@@ -0,0 +1,12 @@
1
+ import type { ViewerController, ViewerState } from './controller.js';
2
+ /** Static markup only. Document text is assigned exclusively through value/textContent. */
3
+ export declare const editControlsTemplate = "<details class=\"edit-controls\"><summary>Edit diagram (experimental)</summary><p id=\"edit-warning\">Experimental source-backed editing. Unsupported targets are rejected. Native Visio compatibility is not verified. Keep your original file.</p><p data-edit-target></p><label for=\"edit-text\">Selected shape text</label><textarea id=\"edit-text\" rows=\"3\" aria-describedby=\"edit-warning edit-target edit-status\"></textarea><div class=\"edit-actions\"><button type=\"button\" data-edit=\"apply\">Apply text</button><button type=\"button\" data-edit=\"cancel\">Cancel</button><button type=\"button\" data-edit=\"undo\">Undo</button><button type=\"button\" data-edit=\"redo\">Redo</button></div><p id=\"edit-status\" role=\"status\" aria-live=\"polite\"></p><p data-edit-error role=\"alert\" hidden></p><ul data-edit-diagnostics></ul><fieldset data-geometry><legend>Geometry (experimental)</legend><p>Pin X/Y use drawing inches, bottom-left origin, Y up. Resize holds the rotation pin fixed. Core rejects unsupported formulas, protected cells, unsafe group/master dependencies and referenced deletion. Native Visio reopen fidelity is unverified.</p><label>New rectangle ID <input data-geometry-field=\"id\" type=\"text\" maxlength=\"256\"></label><label>Rectangle text (optional) <input data-geometry-field=\"text\" type=\"text\" maxlength=\"1000000\"></label><label>Pin X (inches) <input data-geometry-field=\"x\" type=\"number\" step=\"any\"></label><label>Pin Y (inches) <input data-geometry-field=\"y\" type=\"number\" step=\"any\"></label><label>Width (inches) <input data-geometry-field=\"width\" type=\"number\" min=\"0\" step=\"any\"></label><label>Height (inches) <input data-geometry-field=\"height\" type=\"number\" min=\"0\" step=\"any\"></label><div class=\"edit-actions\"><button type=\"button\" data-geometry-action=\"create-rectangle\">Create rectangle</button><button type=\"button\" data-geometry-action=\"move-shape\">Move selected</button><button type=\"button\" data-geometry-action=\"resize-shape\">Resize selected</button><button type=\"button\" data-geometry-action=\"delete-shape\">Delete selected</button></div><p data-geometry-error role=\"alert\" hidden></p></fieldset></details>";
4
+ export declare class ViewerEditControls {
5
+ #private;
6
+ readonly panel: HTMLDetailsElement;
7
+ readonly input: HTMLTextAreaElement;
8
+ constructor(root: ShadowRoot, controller: ViewerController);
9
+ wire(): () => void;
10
+ reset(focus?: boolean): void;
11
+ render(state: ViewerState): void;
12
+ }
@@ -0,0 +1,51 @@
1
+ import type { VisioDocument, VisioEdit } from 'ooxml-core/visio';
2
+ import type { VsdxSource } from 'ooxml-core/visio/ui';
3
+ import { ViewerController } from './controller.js';
4
+ import { type BackstagePage } from './backstage.js';
5
+ import { type SvgExportOptions, type SvgExportResult } from './export-svg.js';
6
+ import { type CurrentPagePrintSnapshotOptions, type PrintSnapshot } from './print-snapshot.js';
7
+ declare const BaseElement: typeof HTMLElement;
8
+ export declare class VisioViewerElement extends BaseElement {
9
+ #private;
10
+ readonly controller: ViewerController;
11
+ constructor();
12
+ get document(): VisioDocument | null;
13
+ set document(value: VisioDocument | null);
14
+ get pageIndex(): number;
15
+ set pageIndex(value: number);
16
+ get zoom(): number;
17
+ set zoom(value: number);
18
+ get showToolbar(): boolean;
19
+ set showToolbar(value: boolean);
20
+ get renderWarnings(): readonly string[];
21
+ load(source: VsdxSource): Promise<void>;
22
+ /** Leave Visio's File backstage and return to the drawing. */
23
+ closeBackstage(): void;
24
+ /** Open Visio's File backstage at a page (Info by default). */
25
+ openBackstage(page?: BackstagePage): void;
26
+ /** Name of the last opened local file, or empty for bytes, models and closed drawings. */
27
+ get fileName(): string;
28
+ applyEdits(edits: readonly VisioEdit[]): Promise<void>;
29
+ replacePlainText(pageId: string, shapeId: string, text: string): Promise<void>;
30
+ undo(): Promise<void>;
31
+ redo(): Promise<void>;
32
+ cancelEdit(): void;
33
+ exportVsdx(): ReturnType<ViewerController['exportVsdx']>;
34
+ fit(): void;
35
+ setLayerVisibility(pageId: string, layerId: string, visible: boolean | null): void;
36
+ resetLayerVisibility(pageId?: string): void;
37
+ /** Return a portable saved-display current-page snapshot without changing selection or downloading a file. */
38
+ exportSvg(options?: SvgExportOptions): SvgExportResult;
39
+ /** Prepare only the captured current drawing with saved display visibility. No frame, download, print dialog or state change. */
40
+ createPrintSnapshot(options?: CurrentPagePrintSnapshotOptions): PrintSnapshot;
41
+ destroy(): void;
42
+ connectedCallback(): void;
43
+ disconnectedCallback(): void;
44
+ }
45
+ export declare function registerVisioViewer(): void;
46
+ declare global {
47
+ interface HTMLElementTagNameMap {
48
+ 'visio-viewer': VisioViewerElement;
49
+ }
50
+ }
51
+ export {};
@@ -0,0 +1,6 @@
1
+ import type { VisioPage } from 'ooxml-core/visio';
2
+ /**
3
+ * Zoom that fits a page into the drawing window, as Visio's Fit to Window (whole page, never
4
+ * enlarged past 100%) or Page Width (fills the width and scrolls vertically).
5
+ */
6
+ export declare function fitZoom(viewport: HTMLElement, page: VisioPage, mode: 'page' | 'width'): number;
@@ -0,0 +1,14 @@
1
+ import type { ViewerController, ViewerState } from './controller.js';
2
+ export declare const geometryControlsTemplate = "<fieldset data-geometry><legend>Geometry (experimental)</legend><p>Pin X/Y use drawing inches, bottom-left origin, Y up. Resize holds the rotation pin fixed. Core rejects unsupported formulas, protected cells, unsafe group/master dependencies and referenced deletion. Native Visio reopen fidelity is unverified.</p><label>New rectangle ID <input data-geometry-field=\"id\" type=\"text\" maxlength=\"256\"></label><label>Rectangle text (optional) <input data-geometry-field=\"text\" type=\"text\" maxlength=\"1000000\"></label><label>Pin X (inches) <input data-geometry-field=\"x\" type=\"number\" step=\"any\"></label><label>Pin Y (inches) <input data-geometry-field=\"y\" type=\"number\" step=\"any\"></label><label>Width (inches) <input data-geometry-field=\"width\" type=\"number\" min=\"0\" step=\"any\"></label><label>Height (inches) <input data-geometry-field=\"height\" type=\"number\" min=\"0\" step=\"any\"></label><div class=\"edit-actions\"><button type=\"button\" data-geometry-action=\"create-rectangle\">Create rectangle</button><button type=\"button\" data-geometry-action=\"move-shape\">Move selected</button><button type=\"button\" data-geometry-action=\"resize-shape\">Resize selected</button><button type=\"button\" data-geometry-action=\"delete-shape\">Delete selected</button></div><p data-geometry-error role=\"alert\" hidden></p></fieldset>";
3
+ /** Collect explicit coordinates; never infer a Visio pin from rendered SVG transforms. */
4
+ export declare class ViewerGeometryControls {
5
+ #private;
6
+ private readonly panel;
7
+ private readonly controller;
8
+ private readonly draftChanged;
9
+ constructor(panel: HTMLElement, controller: ViewerController, draftChanged?: () => void);
10
+ wire(): () => void;
11
+ get hasDraft(): boolean;
12
+ reset(): void;
13
+ render(state: ViewerState): void;
14
+ }
@@ -0,0 +1,10 @@
1
+ import type { ViewerController } from './controller.js';
2
+ interface Controls {
3
+ viewport: HTMLDivElement;
4
+ zoomSlider: HTMLElement & {
5
+ value: number;
6
+ };
7
+ }
8
+ /** Own every DOM listener and abort them together when the surface is disposed. */
9
+ export declare function wireViewerInputs(controls: Controls, controller: ViewerController, fit: (mode: 'page' | 'width') => void): () => void;
10
+ export {};
@@ -0,0 +1,5 @@
1
+ import type { ViewerController, ViewerState } from './controller.js';
2
+ export declare const layerControlsTemplate = "<details class=\"layer-controls\" hidden><summary>Layers</summary><p>Display changes only. SVG and print snapshots use saved visibility. Guides, NoShow and unknown hidden reasons remain hidden.</p><div data-layer-list></div><p data-layer-status role=\"status\"></p><button type=\"button\" data-layer-reset=\"all\">Reset all layers</button></details>";
3
+ /** Static controls and text-only labels. Document strings never become selectors or markup. */
4
+ export declare function renderLayerControls(panel: HTMLDetailsElement, state: ViewerState): void;
5
+ export declare function wireLayerControls(panel: HTMLDetailsElement, controller: ViewerController): () => void;