ooxml-ui 1.14.0 → 1.16.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 (321) hide show
  1. package/custom-elements.json +139 -2
  2. package/dist/{chunk-LAVVSCRJ.js → chunk-CHFMXUPK.js} +195 -12
  3. package/dist/chunk-GSWCAZQ3.js +3533 -0
  4. package/dist/{chunk-C3MXKNNK.js → chunk-JVNIZBG7.js} +1462 -781
  5. package/dist/{chunk-C5F7454A.js → chunk-QUG6IRQQ.js} +2 -2
  6. package/dist/{chunk-DSQBXLMO.js → chunk-UIVYZERK.js} +1 -1
  7. package/dist/controls.d.ts +1 -1
  8. package/dist/controls.d.ts.map +1 -1
  9. package/dist/controls.js +1 -1
  10. package/dist/docx.js +3 -3
  11. package/dist/index.js +5 -5
  12. package/dist/pptx/{chart-3d-view-scene-CFUVOILD.cjs → chart-3d-view-scene-3HDRDXX6.cjs} +38 -38
  13. package/dist/pptx/{chart-3d-view-scene-BEAJCQIS.mjs → chart-3d-view-scene-NMFMG76N.mjs} +2 -2
  14. package/dist/pptx/{chunk-5UGJC25J.cjs → chunk-3DGTZWI5.cjs} +1 -1
  15. package/dist/pptx/{chunk-4NBVWV6I.cjs → chunk-A2X5BP7J.cjs} +581 -0
  16. package/dist/pptx/{chunk-2JTHIDMD.cjs → chunk-CEH63AZB.cjs} +1172 -85
  17. package/dist/pptx/{chunk-DWUC6LZK.mjs → chunk-GCHJRKXZ.mjs} +10 -30
  18. package/dist/pptx/{chunk-VXKFXPCU.mjs → chunk-HL53SH7C.mjs} +1169 -86
  19. package/dist/pptx/{chunk-5DUBDWOU.cjs → chunk-KTHBMVMQ.cjs} +10436 -6294
  20. package/dist/pptx/{chunk-HULZNSHL.cjs → chunk-L2LK7TEC.cjs} +19 -40
  21. package/dist/pptx/{chunk-GUAP5VUN.mjs → chunk-RACO4FQT.mjs} +9643 -5546
  22. package/dist/pptx/{chunk-P3YE5LT2.mjs → chunk-XOMYHWQ3.mjs} +1 -1
  23. package/dist/pptx/{chunk-OJXPN2WX.mjs → chunk-ZNXKAINY.mjs} +581 -0
  24. package/dist/pptx/dom/element-styles.d.ts.map +1 -1
  25. package/dist/pptx/dom/elements/chart-editable.d.ts +11 -0
  26. package/dist/pptx/dom/elements/chart-editable.d.ts.map +1 -1
  27. package/dist/pptx/dom/elements/chart.d.ts.map +1 -1
  28. package/dist/pptx/dom/index.cjs +278 -265
  29. package/dist/pptx/dom/index.mjs +37 -25
  30. package/dist/pptx/export/html2canvas-clone.cjs +2 -2
  31. package/dist/pptx/export/html2canvas-clone.mjs +1 -1
  32. package/dist/pptx/i18n/index.cjs +6 -6
  33. package/dist/pptx/i18n/index.mjs +1 -1
  34. package/dist/pptx/i18n/translations-en-chart-format.d.ts +3 -0
  35. package/dist/pptx/i18n/translations-en-chart-format.d.ts.map +1 -0
  36. package/dist/pptx/i18n/translations-en-compare.d.ts +3 -0
  37. package/dist/pptx/i18n/translations-en-compare.d.ts.map +1 -0
  38. package/dist/pptx/i18n/translations-en-design-galleries.d.ts +3 -0
  39. package/dist/pptx/i18n/translations-en-design-galleries.d.ts.map +1 -0
  40. package/dist/pptx/i18n/translations-en-galleries-smartart-layouts.d.ts +6 -0
  41. package/dist/pptx/i18n/translations-en-galleries-smartart-layouts.d.ts.map +1 -0
  42. package/dist/pptx/i18n/translations-en-shape-gallery.d.ts +7 -0
  43. package/dist/pptx/i18n/translations-en-shape-gallery.d.ts.map +1 -0
  44. package/dist/pptx/i18n/translations-en.d.ts.map +1 -1
  45. package/dist/pptx/index.cjs +3338 -3146
  46. package/dist/pptx/index.mjs +6 -6
  47. package/dist/pptx/render/chart-axis-primitives.d.ts.map +1 -1
  48. package/dist/pptx/render/chart-canvas-drag.d.ts.map +1 -1
  49. package/dist/pptx/render/chart-cartesian-bars.d.ts.map +1 -1
  50. package/dist/pptx/render/chart-category-axis.d.ts.map +1 -1
  51. package/dist/pptx/render/chart-combo-stock.cjs +3 -3
  52. package/dist/pptx/render/chart-combo-stock.mjs +1 -1
  53. package/dist/pptx/render/chart-date-axis.d.ts.map +1 -1
  54. package/dist/pptx/render/chart-format/chart-area-outer-effects.d.ts +20 -0
  55. package/dist/pptx/render/chart-format/chart-area-outer-effects.d.ts.map +1 -0
  56. package/dist/pptx/render/chart-format/chart-format-3d-svg.d.ts +23 -0
  57. package/dist/pptx/render/chart-format/chart-format-3d-svg.d.ts.map +1 -0
  58. package/dist/pptx/render/chart-format/chart-format-context-menu.d.ts +11 -0
  59. package/dist/pptx/render/chart-format/chart-format-context-menu.d.ts.map +1 -0
  60. package/dist/pptx/render/chart-format/chart-format-effects-svg.d.ts +87 -0
  61. package/dist/pptx/render/chart-format/chart-format-effects-svg.d.ts.map +1 -0
  62. package/dist/pptx/render/chart-format/chart-format-fixtures.test-util.d.ts +10 -0
  63. package/dist/pptx/render/chart-format/chart-format-fixtures.test-util.d.ts.map +1 -0
  64. package/dist/pptx/render/chart-format/chart-format-geometry.d.ts +25 -0
  65. package/dist/pptx/render/chart-format/chart-format-geometry.d.ts.map +1 -0
  66. package/dist/pptx/render/chart-format/chart-format-hit-test.d.ts +42 -0
  67. package/dist/pptx/render/chart-format/chart-format-hit-test.d.ts.map +1 -0
  68. package/dist/pptx/render/chart-format/chart-format-paint-svg.d.ts +38 -0
  69. package/dist/pptx/render/chart-format/chart-format-paint-svg.d.ts.map +1 -0
  70. package/dist/pptx/render/chart-format/chart-format-pane-3d.d.ts +13 -0
  71. package/dist/pptx/render/chart-format/chart-format-pane-3d.d.ts.map +1 -0
  72. package/dist/pptx/render/chart-format/chart-format-pane-axis.d.ts +12 -0
  73. package/dist/pptx/render/chart-format/chart-format-pane-axis.d.ts.map +1 -0
  74. package/dist/pptx/render/chart-format/chart-format-pane-common.d.ts +14 -0
  75. package/dist/pptx/render/chart-format/chart-format-pane-common.d.ts.map +1 -0
  76. package/dist/pptx/render/chart-format/chart-format-pane-edit-extra.d.ts +28 -0
  77. package/dist/pptx/render/chart-format/chart-format-pane-edit-extra.d.ts.map +1 -0
  78. package/dist/pptx/render/chart-format/chart-format-pane-edit.d.ts +18 -0
  79. package/dist/pptx/render/chart-format/chart-format-pane-edit.d.ts.map +1 -0
  80. package/dist/pptx/render/chart-format/chart-format-pane-effects.d.ts +31 -0
  81. package/dist/pptx/render/chart-format/chart-format-pane-effects.d.ts.map +1 -0
  82. package/dist/pptx/render/chart-format/chart-format-pane-fill-kinds.d.ts +15 -0
  83. package/dist/pptx/render/chart-format/chart-format-pane-fill-kinds.d.ts.map +1 -0
  84. package/dist/pptx/render/chart-format/chart-format-pane-fill-line.d.ts +12 -0
  85. package/dist/pptx/render/chart-format/chart-format-pane-fill-line.d.ts.map +1 -0
  86. package/dist/pptx/render/chart-format/chart-format-pane-model.d.ts +17 -0
  87. package/dist/pptx/render/chart-format/chart-format-pane-model.d.ts.map +1 -0
  88. package/dist/pptx/render/chart-format/chart-format-pane-options.d.ts +13 -0
  89. package/dist/pptx/render/chart-format/chart-format-pane-options.d.ts.map +1 -0
  90. package/dist/pptx/render/chart-format/chart-format-pane-text.d.ts +14 -0
  91. package/dist/pptx/render/chart-format/chart-format-pane-text.d.ts.map +1 -0
  92. package/dist/pptx/render/chart-format/chart-format-pane-types.d.ts +96 -0
  93. package/dist/pptx/render/chart-format/chart-format-pane-types.d.ts.map +1 -0
  94. package/dist/pptx/render/chart-format/chart-format-render-labels.d.ts +26 -0
  95. package/dist/pptx/render/chart-format/chart-format-render-labels.d.ts.map +1 -0
  96. package/dist/pptx/render/chart-format/chart-format-render-lines.d.ts +36 -0
  97. package/dist/pptx/render/chart-format/chart-format-render-lines.d.ts.map +1 -0
  98. package/dist/pptx/render/chart-format/chart-format-render-series.d.ts +30 -0
  99. package/dist/pptx/render/chart-format/chart-format-render-series.d.ts.map +1 -0
  100. package/dist/pptx/render/chart-format/chart-format-render-text.d.ts +28 -0
  101. package/dist/pptx/render/chart-format/chart-format-render-text.d.ts.map +1 -0
  102. package/dist/pptx/render/chart-format/chart-format-render.d.ts +26 -0
  103. package/dist/pptx/render/chart-format/chart-format-render.d.ts.map +1 -0
  104. package/dist/pptx/render/chart-format/chart-format-targets.d.ts +36 -0
  105. package/dist/pptx/render/chart-format/chart-format-targets.d.ts.map +1 -0
  106. package/dist/pptx/render/chart-format/chart-selection-strip.d.ts +39 -0
  107. package/dist/pptx/render/chart-format/chart-selection-strip.d.ts.map +1 -0
  108. package/dist/pptx/render/chart-format/index.d.ts +16 -0
  109. package/dist/pptx/render/chart-format/index.d.ts.map +1 -0
  110. package/dist/pptx/render/chart-legend-layout.d.ts +3 -1
  111. package/dist/pptx/render/chart-legend-layout.d.ts.map +1 -1
  112. package/dist/pptx/render/chart-overlays.cjs +7 -7
  113. package/dist/pptx/render/chart-overlays.mjs +1 -1
  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-svg-primitives.d.ts +6 -0
  117. package/dist/pptx/render/chart-svg-primitives.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-dom.d.ts +17 -2
  120. package/dist/pptx/render/chart-view-model-dom.d.ts.map +1 -1
  121. package/dist/pptx/render/chart-view-model-types.d.ts +3 -0
  122. package/dist/pptx/render/chart-view-model-types.d.ts.map +1 -1
  123. package/dist/pptx/render/chart-view-model.cjs +44 -44
  124. package/dist/pptx/render/chart-view-model.mjs +1 -1
  125. package/dist/pptx/render/chart-waterfall-map.cjs +6 -6
  126. package/dist/pptx/render/chart-waterfall-map.mjs +1 -1
  127. package/dist/pptx/render/context-menu-commands.d.ts +6 -1
  128. package/dist/pptx/render/context-menu-commands.d.ts.map +1 -1
  129. package/dist/pptx/render/customization/customization-catalog.d.ts +1 -1
  130. package/dist/pptx/render/customization/customization-catalog.d.ts.map +1 -1
  131. package/dist/pptx/render/customization/customization-descriptions.d.ts.map +1 -1
  132. package/dist/pptx/render/customization/ribbon-control-catalog-core.d.ts +11 -1
  133. package/dist/pptx/render/customization/ribbon-control-catalog-core.d.ts.map +1 -1
  134. package/dist/pptx/render/customization/ribbon-control-catalog-tail.d.ts +10 -0
  135. package/dist/pptx/render/customization/ribbon-control-catalog-tail.d.ts.map +1 -1
  136. package/dist/pptx/render/customization/ribbon-control-catalog.d.ts +21 -1
  137. package/dist/pptx/render/customization/ribbon-control-catalog.d.ts.map +1 -1
  138. package/dist/pptx/render/deck-style.d.ts +126 -0
  139. package/dist/pptx/render/deck-style.d.ts.map +1 -0
  140. package/dist/pptx/render/editor-chrome/metrics.d.ts +7 -0
  141. package/dist/pptx/render/editor-chrome/metrics.d.ts.map +1 -1
  142. package/dist/pptx/render/frame-effect-style.d.ts +22 -0
  143. package/dist/pptx/render/frame-effect-style.d.ts.map +1 -0
  144. package/dist/pptx/render/index.d.ts +6 -0
  145. package/dist/pptx/render/index.d.ts.map +1 -1
  146. package/dist/pptx/render/ribbon-design-commands.d.ts.map +1 -1
  147. package/dist/pptx/render/ribbon-galleries/gallery-module.d.ts +2 -1
  148. package/dist/pptx/render/ribbon-galleries/gallery-module.d.ts.map +1 -1
  149. package/dist/pptx/render/ribbon-galleries/gallery-placements.d.ts +1 -1
  150. package/dist/pptx/render/ribbon-galleries/gallery-placements.d.ts.map +1 -1
  151. package/dist/pptx/render/ribbon-galleries/gallery-registry.d.ts +1 -1
  152. package/dist/pptx/render/ribbon-galleries/gallery-registry.d.ts.map +1 -1
  153. package/dist/pptx/render/ribbon-galleries/gallery-types.d.ts +52 -3
  154. package/dist/pptx/render/ribbon-galleries/gallery-types.d.ts.map +1 -1
  155. package/dist/pptx/render/ribbon-galleries/gallery-view.d.ts.map +1 -1
  156. package/dist/pptx/render/ribbon-galleries/smartart-layouts-gallery.d.ts +5 -0
  157. package/dist/pptx/render/ribbon-galleries/smartart-layouts-gallery.d.ts.map +1 -1
  158. package/dist/pptx/render/ribbon-galleries/theme-backgrounds-gallery.d.ts +7 -0
  159. package/dist/pptx/render/ribbon-galleries/theme-backgrounds-gallery.d.ts.map +1 -0
  160. package/dist/pptx/render/ribbon-galleries/theme-colors-gallery.d.ts.map +1 -1
  161. package/dist/pptx/render/ribbon-galleries/theme-effects-gallery.d.ts +6 -0
  162. package/dist/pptx/render/ribbon-galleries/theme-effects-gallery.d.ts.map +1 -0
  163. package/dist/pptx/render/ribbon-galleries/theme-fonts-gallery.d.ts.map +1 -1
  164. package/dist/pptx/render/ribbon-galleries/theme-variants-gallery.d.ts +32 -0
  165. package/dist/pptx/render/ribbon-galleries/theme-variants-gallery.d.ts.map +1 -0
  166. package/dist/pptx/render/ribbon-galleries/themes-gallery.d.ts +17 -0
  167. package/dist/pptx/render/ribbon-galleries/themes-gallery.d.ts.map +1 -0
  168. package/dist/pptx/render/ribbon-home-families-objects.d.ts.map +1 -1
  169. package/dist/pptx/render/ribbon-home-families.d.ts.map +1 -1
  170. package/dist/pptx/render/ribbon-home-menus.d.ts +1 -1
  171. package/dist/pptx/render/ribbon-home-menus.d.ts.map +1 -1
  172. package/dist/pptx/render/ribbon-home-spec.d.ts +9 -1
  173. package/dist/pptx/render/ribbon-home-spec.d.ts.map +1 -1
  174. package/dist/pptx/render/ribbon-home-state-objects.d.ts.map +1 -1
  175. package/dist/pptx/render/ribbon-icons/chart-format-icons.d.ts +4 -0
  176. package/dist/pptx/render/ribbon-icons/chart-format-icons.d.ts.map +1 -0
  177. package/dist/pptx/render/ribbon-icons.d.ts.map +1 -1
  178. package/dist/pptx/render/ribbon-insert-layout.d.ts.map +1 -1
  179. package/dist/pptx/render/ribbon-insert-state.d.ts +6 -0
  180. package/dist/pptx/render/ribbon-insert-state.d.ts.map +1 -1
  181. package/dist/pptx/render/shape-gallery-home.d.ts +6 -0
  182. package/dist/pptx/render/shape-gallery-home.d.ts.map +1 -0
  183. package/dist/pptx/render/shape-gallery.d.ts +51 -0
  184. package/dist/pptx/render/shape-gallery.d.ts.map +1 -0
  185. package/dist/pptx/render/slide-compare-text.d.ts +13 -0
  186. package/dist/pptx/render/slide-compare-text.d.ts.map +1 -0
  187. package/dist/pptx/render/slide-compare.d.ts +10 -0
  188. package/dist/pptx/render/slide-compare.d.ts.map +1 -1
  189. package/dist/pptx/render/table-style-presets.d.ts +2 -0
  190. package/dist/pptx/render/table-style-presets.d.ts.map +1 -1
  191. package/dist/pptx/render/text-3d-presets.d.ts +4 -0
  192. package/dist/pptx/render/text-3d-presets.d.ts.map +1 -1
  193. package/dist/pptx/render/text-warp-presets.d.ts +2 -0
  194. package/dist/pptx/render/text-warp-presets.d.ts.map +1 -1
  195. package/dist/pptx/render/toolbar-actions.d.ts +1 -1
  196. package/dist/pptx/render/toolbar-actions.d.ts.map +1 -1
  197. package/dist/pptx/render/visual-effects.d.ts.map +1 -1
  198. package/dist/pptx/theme/index.cjs +16 -16
  199. package/dist/pptx/theme/index.mjs +1 -1
  200. package/dist/pptx/web-components/chart-format-pane-fields.d.ts +17 -0
  201. package/dist/pptx/web-components/chart-format-pane-fields.d.ts.map +1 -0
  202. package/dist/pptx/web-components/chart-format-pane-styles.d.ts +3 -0
  203. package/dist/pptx/web-components/chart-format-pane-styles.d.ts.map +1 -0
  204. package/dist/pptx/web-components/chart-format-pane.d.ts +34 -0
  205. package/dist/pptx/web-components/chart-format-pane.d.ts.map +1 -0
  206. package/dist/pptx/web-components/index.d.ts +3 -1
  207. package/dist/pptx/web-components/index.d.ts.map +1 -1
  208. package/dist/pptx/web-components/mobile-insert-styles.d.ts +2 -0
  209. package/dist/pptx/web-components/mobile-insert-styles.d.ts.map +1 -0
  210. package/dist/pptx/web-components/mobile-insert.d.ts +21 -0
  211. package/dist/pptx/web-components/mobile-insert.d.ts.map +1 -0
  212. package/dist/pptx/web-components/ribbon-gallery.d.ts +11 -0
  213. package/dist/pptx/web-components/ribbon-gallery.d.ts.map +1 -1
  214. package/dist/pptx/web-components/ribbon-home-controls.d.ts.map +1 -1
  215. package/dist/pptx/web-components/ribbon-home-layout.d.ts +6 -0
  216. package/dist/pptx/web-components/ribbon-home-layout.d.ts.map +1 -1
  217. package/dist/pptx/web-components/ribbon-home-menu.d.ts +1 -1
  218. package/dist/pptx/web-components/ribbon-home-menu.d.ts.map +1 -1
  219. package/dist/pptx/web-components/ribbon-home-styles.d.ts +1 -1
  220. package/dist/pptx/web-components/ribbon-home-styles.d.ts.map +1 -1
  221. package/dist/pptx/web-components/ribbon-home.d.ts +2 -0
  222. package/dist/pptx/web-components/ribbon-home.d.ts.map +1 -1
  223. package/dist/pptx/web-components/ribbon-icons.d.ts.map +1 -1
  224. package/dist/pptx/web-components/ribbon-insert-styles.d.ts.map +1 -1
  225. package/dist/pptx/web-components/ribbon-insert-table-picker.d.ts +2 -0
  226. package/dist/pptx/web-components/ribbon-insert-table-picker.d.ts.map +1 -1
  227. package/dist/pptx/web-components/ribbon-insert-view.d.ts.map +1 -1
  228. package/dist/pptx/web-components/ribbon-overflow.d.ts.map +1 -1
  229. package/dist/pptx/web-components/theme-editor-dock.d.ts +12 -1
  230. package/dist/pptx/web-components/theme-editor-dock.d.ts.map +1 -1
  231. package/dist/{presentation-preview-HVKJ3KJN.js → presentation-preview-HMEBDYEL.js} +1 -1
  232. package/dist/ribbon/gallery.d.ts +50 -0
  233. package/dist/ribbon/gallery.d.ts.map +1 -1
  234. package/dist/ribbon/ribbon-group.d.ts +1 -1
  235. package/dist/ribbon/ribbon-group.d.ts.map +1 -1
  236. package/dist/teams/activity-feed.d.ts +1 -1
  237. package/dist/teams/app/add-tab-dialog.d.ts +11 -10
  238. package/dist/teams/app/bind.d.ts +2 -0
  239. package/dist/teams/app/channel-tab.d.ts +3 -2
  240. package/dist/teams/app/chat-app.d.ts +2 -1
  241. package/dist/teams/app/content-preview.d.ts +3 -2
  242. package/dist/teams/app/create-channel-dialog.d.ts +3 -2
  243. package/dist/teams/app/draft-list.d.ts +2 -1
  244. package/dist/teams/app/file-actions.d.ts +3 -2
  245. package/dist/teams/app/files-panel.d.ts +3 -2
  246. package/dist/teams/app/followed-threads.d.ts +2 -1
  247. package/dist/teams/app/markdown-preview.d.ts +2 -1
  248. package/dist/teams/app/meeting-dialog.d.ts +11 -3
  249. package/dist/teams/app/message-transfers.d.ts +2 -1
  250. package/dist/teams/app/notify-delivery.d.ts +3 -2
  251. package/dist/teams/app/pinned-bar.d.ts +3 -2
  252. package/dist/teams/app/presentation-preview.d.ts +3 -2
  253. package/dist/teams/app/profile-menu.d.ts +12 -2
  254. package/dist/teams/app/repeat-text.d.ts +26 -0
  255. package/dist/teams/app/settings-density.d.ts +2 -1
  256. package/dist/teams/app/settings-notifications.d.ts +2 -1
  257. package/dist/teams/app/settings-search.d.ts +6 -4
  258. package/dist/teams/app/settings-theme.d.ts +2 -1
  259. package/dist/teams/app/sign-in-flow.d.ts +49 -0
  260. package/dist/teams/app/sign-in-strings.d.ts +4 -0
  261. package/dist/teams/app/teams-app.d.ts +12 -2
  262. package/dist/teams/app/teams-settings.d.ts +3 -2
  263. package/dist/teams/app/teams-sign-in.d.ts +57 -0
  264. package/dist/teams/app/thread-pane.d.ts +2 -1
  265. package/dist/teams/app/workbook-actions.d.ts +2 -1
  266. package/dist/teams/app-rail.d.ts +1 -0
  267. package/dist/teams/base.d.ts +25 -5
  268. package/dist/teams/calendar-view.d.ts +1 -0
  269. package/dist/teams/call-controls.d.ts +1 -0
  270. package/dist/teams/call-grid.d.ts +1 -0
  271. package/dist/teams/chat-list.d.ts +1 -0
  272. package/dist/teams/i18n/core-text.d.ts +3 -0
  273. package/dist/teams/i18n/describe.d.ts +4 -0
  274. package/dist/teams/i18n/lit-element.d.ts +16 -0
  275. package/dist/teams/i18n/locales/de/calendar.d.ts +2 -0
  276. package/dist/teams/i18n/locales/de/chat.d.ts +2 -0
  277. package/dist/teams/i18n/locales/de/core.d.ts +2 -0
  278. package/dist/teams/i18n/locales/de/files.d.ts +2 -0
  279. package/dist/teams/i18n/locales/de/settings.d.ts +2 -0
  280. package/dist/teams/i18n/locales/de/shell.d.ts +2 -0
  281. package/dist/teams/i18n/locales/de.d.ts +617 -0
  282. package/dist/teams/i18n/locales/en/calendar.d.ts +78 -0
  283. package/dist/teams/i18n/locales/en/chat.d.ts +109 -0
  284. package/dist/teams/i18n/locales/en/core.d.ts +34 -0
  285. package/dist/teams/i18n/locales/en/files.d.ts +128 -0
  286. package/dist/teams/i18n/locales/en/settings.d.ts +131 -0
  287. package/dist/teams/i18n/locales/en/shell.d.ts +146 -0
  288. package/dist/teams/i18n/locales/en.d.ts +617 -0
  289. package/dist/teams/i18n/locales/es/calendar.d.ts +2 -0
  290. package/dist/teams/i18n/locales/es/chat.d.ts +2 -0
  291. package/dist/teams/i18n/locales/es/core.d.ts +2 -0
  292. package/dist/teams/i18n/locales/es/files.d.ts +2 -0
  293. package/dist/teams/i18n/locales/es/settings.d.ts +2 -0
  294. package/dist/teams/i18n/locales/es/shell.d.ts +2 -0
  295. package/dist/teams/i18n/locales/es.d.ts +617 -0
  296. package/dist/teams/i18n/locales/fr/calendar.d.ts +2 -0
  297. package/dist/teams/i18n/locales/fr/chat.d.ts +2 -0
  298. package/dist/teams/i18n/locales/fr/core.d.ts +2 -0
  299. package/dist/teams/i18n/locales/fr/files.d.ts +2 -0
  300. package/dist/teams/i18n/locales/fr/settings.d.ts +2 -0
  301. package/dist/teams/i18n/locales/fr/shell.d.ts +2 -0
  302. package/dist/teams/i18n/locales/fr.d.ts +617 -0
  303. package/dist/teams/i18n/locales/zh-CN/calendar.d.ts +2 -0
  304. package/dist/teams/i18n/locales/zh-CN/chat.d.ts +2 -0
  305. package/dist/teams/i18n/locales/zh-CN/core.d.ts +2 -0
  306. package/dist/teams/i18n/locales/zh-CN/files.d.ts +2 -0
  307. package/dist/teams/i18n/locales/zh-CN/settings.d.ts +2 -0
  308. package/dist/teams/i18n/locales/zh-CN/shell.d.ts +2 -0
  309. package/dist/teams/i18n/locales/zh-CN.d.ts +617 -0
  310. package/dist/teams/i18n/runtime.d.ts +15 -0
  311. package/dist/teams/i18n/translator.d.ts +28 -0
  312. package/dist/teams.js +3 -3
  313. package/dist/visio.js +31 -4
  314. package/dist/xlsx/dialogs/help-dialogs.d.ts +1 -1
  315. package/dist/xlsx/dialogs/pivot-field-settings.d.ts +3 -3
  316. package/dist/xlsx/dialogs/pivot-page-filter.d.ts +1 -1
  317. package/dist/xlsx.js +68 -37
  318. package/package.json +2 -2
  319. package/dist/chunk-VRVFLYGI.js +0 -236
  320. /package/dist/pptx/{chunk-47FYJVMH.cjs → chunk-BDXQX6RA.cjs} +0 -0
  321. /package/dist/pptx/{chunk-XRWEURSV.mjs → chunk-ZAOD6O2D.mjs} +0 -0
@@ -50,6 +50,9 @@
50
50
  {
51
51
  "name": "filter"
52
52
  },
53
+ {
54
+ "name": "locale"
55
+ },
53
56
  {
54
57
  "name": "selected-id"
55
58
  }
@@ -66,6 +69,13 @@
66
69
  "kind": "field",
67
70
  "name": "items"
68
71
  },
72
+ {
73
+ "kind": "field",
74
+ "name": "locale",
75
+ "type": {
76
+ "text": "string"
77
+ }
78
+ },
69
79
  {
70
80
  "kind": "field",
71
81
  "name": "selectedId",
@@ -115,6 +125,9 @@
115
125
  {
116
126
  "name": "hide-labels"
117
127
  },
128
+ {
129
+ "name": "locale"
130
+ },
118
131
  {
119
132
  "name": "selected"
120
133
  }
@@ -132,6 +145,13 @@
132
145
  "kind": "field",
133
146
  "name": "items"
134
147
  },
148
+ {
149
+ "kind": "field",
150
+ "name": "locale",
151
+ "type": {
152
+ "text": "string"
153
+ }
154
+ },
135
155
  {
136
156
  "kind": "field",
137
157
  "name": "moreOpen"
@@ -175,6 +195,9 @@
175
195
  {
176
196
  "name": "color"
177
197
  },
198
+ {
199
+ "name": "locale"
200
+ },
178
201
  {
179
202
  "name": "name"
180
203
  },
@@ -196,6 +219,13 @@
196
219
  "text": "string"
197
220
  }
198
221
  },
222
+ {
223
+ "kind": "field",
224
+ "name": "locale",
225
+ "type": {
226
+ "text": "string"
227
+ }
228
+ },
199
229
  {
200
230
  "kind": "field",
201
231
  "name": "name",
@@ -415,6 +445,9 @@
415
445
  "customElement": true,
416
446
  "description": "The Calendar app's side list: meetings in the next two weeks grouped by day, each with its time and a Join button once it is near or live. Properties: `meetings`, `zone`, `now` (the clock, for tests). Emits `office-agenda-open` `{ meetingId, start }`, `office-agenda-join` `{ meetingId }` and `office-agenda-new` `{}`.",
417
447
  "attributes": [
448
+ {
449
+ "name": "locale"
450
+ },
418
451
  {
419
452
  "name": "now"
420
453
  },
@@ -423,6 +456,13 @@
423
456
  }
424
457
  ],
425
458
  "members": [
459
+ {
460
+ "kind": "field",
461
+ "name": "locale",
462
+ "type": {
463
+ "text": "string"
464
+ }
465
+ },
426
466
  {
427
467
  "kind": "field",
428
468
  "name": "meetings"
@@ -476,6 +516,9 @@
476
516
  "customElement": true,
477
517
  "description": "A Teams-style calendar: a time grid for the work week, the full week or one day in the viewer's zone, with Today, previous and next, and the view switch. Overlapping meetings share a column. Properties: `meetings` (core `MeetingView[]`), `zone` (default: this device's), `now` (the clock, for tests), `mode`. Events: `office-calendar-open` `{ meetingId, start }`, `office-calendar-new` `{ start }` (a click on an empty slot, or the New meeting button), and `office-calendar-mode` `{ mode }`.",
478
518
  "attributes": [
519
+ {
520
+ "name": "locale"
521
+ },
479
522
  {
480
523
  "name": "mode"
481
524
  },
@@ -491,6 +534,13 @@
491
534
  "kind": "field",
492
535
  "name": "anchor"
493
536
  },
537
+ {
538
+ "kind": "field",
539
+ "name": "locale",
540
+ "type": {
541
+ "text": "string"
542
+ }
543
+ },
494
544
  {
495
545
  "kind": "field",
496
546
  "name": "meetings"
@@ -564,6 +614,9 @@
564
614
  {
565
615
  "name": "heading"
566
616
  },
617
+ {
618
+ "name": "locale"
619
+ },
567
620
  {
568
621
  "name": "mic"
569
622
  },
@@ -602,6 +655,13 @@
602
655
  "text": "string"
603
656
  }
604
657
  },
658
+ {
659
+ "kind": "field",
660
+ "name": "locale",
661
+ "type": {
662
+ "text": "string"
663
+ }
664
+ },
605
665
  {
606
666
  "kind": "field",
607
667
  "name": "mic",
@@ -671,8 +731,19 @@
671
731
  "tagName": "office-ui-call-grid",
672
732
  "customElement": true,
673
733
  "description": "The meeting stage. Property `participants` (`CallTile[]`). Someone sharing their screen is spotlighted with everyone else in a side strip. Your own tile is muted (no echo) and mirrored unless it shows a screen; tiles without video show the avatar. The grid only attaches the streams it is handed; capture and connections belong to the host.",
674
- "attributes": [],
734
+ "attributes": [
735
+ {
736
+ "name": "locale"
737
+ }
738
+ ],
675
739
  "members": [
740
+ {
741
+ "kind": "field",
742
+ "name": "locale",
743
+ "type": {
744
+ "text": "string"
745
+ }
746
+ },
676
747
  {
677
748
  "kind": "field",
678
749
  "name": "participants"
@@ -705,6 +776,9 @@
705
776
  {
706
777
  "name": "heading"
707
778
  },
779
+ {
780
+ "name": "locale"
781
+ },
708
782
  {
709
783
  "name": "selected-id"
710
784
  }
@@ -725,6 +799,13 @@
725
799
  "text": "string"
726
800
  }
727
801
  },
802
+ {
803
+ "kind": "field",
804
+ "name": "locale",
805
+ "type": {
806
+ "text": "string"
807
+ }
808
+ },
728
809
  {
729
810
  "kind": "field",
730
811
  "name": "selectedId",
@@ -771,6 +852,9 @@
771
852
  {
772
853
  "name": "editing"
773
854
  },
855
+ {
856
+ "name": "locale"
857
+ },
774
858
  {
775
859
  "name": "placeholder"
776
860
  },
@@ -801,6 +885,13 @@
801
885
  "kind": "field",
802
886
  "name": "files"
803
887
  },
888
+ {
889
+ "kind": "field",
890
+ "name": "locale",
891
+ "type": {
892
+ "text": "string"
893
+ }
894
+ },
804
895
  {
805
896
  "kind": "field",
806
897
  "name": "mentionTargets"
@@ -880,6 +971,9 @@
880
971
  {
881
972
  "name": "highlight-id"
882
973
  },
974
+ {
975
+ "name": "locale"
976
+ },
883
977
  {
884
978
  "name": "self-id"
885
979
  }
@@ -893,6 +987,13 @@
893
987
  },
894
988
  "attribute": "highlight-id"
895
989
  },
990
+ {
991
+ "kind": "field",
992
+ "name": "locale",
993
+ "type": {
994
+ "text": "string"
995
+ }
996
+ },
896
997
  {
897
998
  "kind": "field",
898
999
  "name": "meetings"
@@ -967,6 +1068,9 @@
967
1068
  "customElement": true,
968
1069
  "description": "The Chat app's list: 1:1 and group chats, most recent first, with presence on the avatar, the last message and an unread badge. Properties: `chats` (core `ChatView[]`), `selectedId`. Emits `office-chat-select` `{ id }` and `office-chat-new` `{}` (the host asks who to chat with).",
969
1070
  "attributes": [
1071
+ {
1072
+ "name": "locale"
1073
+ },
970
1074
  {
971
1075
  "name": "selected-id"
972
1076
  }
@@ -976,6 +1080,13 @@
976
1080
  "kind": "field",
977
1081
  "name": "chats"
978
1082
  },
1083
+ {
1084
+ "kind": "field",
1085
+ "name": "locale",
1086
+ "type": {
1087
+ "text": "string"
1088
+ }
1089
+ },
979
1090
  {
980
1091
  "kind": "field",
981
1092
  "name": "selectedId",
@@ -1960,6 +2071,12 @@
1960
2071
  "events": [
1961
2072
  {
1962
2073
  "name": "office-gallery-pick"
2074
+ },
2075
+ {
2076
+ "name": "office-gallery-preview"
2077
+ },
2078
+ {
2079
+ "name": "office-gallery-preview-end"
1963
2080
  }
1964
2081
  ]
1965
2082
  }
@@ -2408,6 +2525,9 @@
2408
2525
  "attributes": [
2409
2526
  {
2410
2527
  "name": "label"
2528
+ },
2529
+ {
2530
+ "name": "locale"
2411
2531
  }
2412
2532
  ],
2413
2533
  "members": [
@@ -2426,6 +2546,13 @@
2426
2546
  "text": "string"
2427
2547
  }
2428
2548
  },
2549
+ {
2550
+ "kind": "field",
2551
+ "name": "locale",
2552
+ "type": {
2553
+ "text": "string"
2554
+ }
2555
+ },
2429
2556
  {
2430
2557
  "kind": "field",
2431
2558
  "name": "query"
@@ -2472,6 +2599,9 @@
2472
2599
  {
2473
2600
  "name": "heading"
2474
2601
  },
2602
+ {
2603
+ "name": "locale"
2604
+ },
2475
2605
  {
2476
2606
  "name": "name"
2477
2607
  },
@@ -2501,6 +2631,13 @@
2501
2631
  "text": "string"
2502
2632
  }
2503
2633
  },
2634
+ {
2635
+ "kind": "field",
2636
+ "name": "locale",
2637
+ "type": {
2638
+ "text": "string"
2639
+ }
2640
+ },
2504
2641
  {
2505
2642
  "kind": "field",
2506
2643
  "name": "name",
@@ -3075,7 +3212,7 @@
3075
3212
  "name": "OfficeUiRibbonGroup",
3076
3213
  "tagName": "office-ui-ribbon-group",
3077
3214
  "customElement": true,
3078
- "description": "Labelled group of ribbon commands: `role=\"group\"`, `label` is the caption and name. `launcher` adds Office's corner dialog launcher (`launcher=\"<command>\"` emits `office-command` `{ command }`; `launcher-label` names it; `launcher-disabled` disables it). For narrow windows an overflow controller sets `data-collapsed` (the group becomes one button showing `icon` and the label; activating it emits `office-ribbon-collapse-toggle`) and `data-open` (its commands open in a popup at `--office-ribbon-collapse-x/-y`). The group marks itself `data-compact-row` when every command is one line tall (they centre vertically) and `data-stack` when it holds only small drop-down galleries (`[mode=\"dropdown\"]` without `data-command-large`), which stack in columns. Static `launcherEvent`/`collapseEvent` and `launcherDetail()` let a product subclass keep its published events.",
3215
+ "description": "Labelled group of ribbon commands: `role=\"group\"`, `label` is the caption and name. `launcher` adds Office's corner dialog launcher (`launcher=\"<command>\"` emits `office-command` `{ command }`; `launcher-label` names it; `launcher-disabled` disables it). For narrow windows an overflow controller sets `data-collapsed` (the group becomes one button showing `icon` and the label; activating it emits `office-ribbon-collapse-toggle`) and `data-open` (its commands open in a popup at `--office-ribbon-collapse-x/-y`). The group marks itself `data-compact-row` when every command is one line tall (they centre vertically) and `data-stack` when it holds only small drop-down galleries (`[mode=\"dropdown\"]` without `data-command-large`), which stack in columns (`data-stack-beside` when an inline gallery sits next to them). Static `launcherEvent`/`collapseEvent` and `launcherDetail()` let a product subclass keep its published events.",
3079
3216
  "attributes": [
3080
3217
  {
3081
3218
  "name": "data-open"
@@ -1916,7 +1916,7 @@ var OfficeUiButton = class extends OfficeElement {
1916
1916
  var defineButton = definer("office-ui-button", () => OfficeUiButton);
1917
1917
 
1918
1918
  // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/ribbon/ribbon-group.css?raw
1919
- var ribbon_group_default = ":host {\n display: inline-flex;\n flex: none;\n align-self: stretch;\n}\n.group {\n position: relative;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n min-height: var(--office-ribbon-group-height);\n padding: var(--office-ribbon-group-padding);\n}\n/* Office draws a hairline between groups; a product may stop it short of the top and bottom. */\n.group::after {\n content: '';\n position: absolute;\n top: var(--office-ribbon-separator-inset);\n bottom: var(--office-ribbon-separator-inset);\n inset-inline-end: 0;\n width: var(--office-border-width);\n background: var(--office-ribbon-separator);\n}\n:host(:last-child) .group::after {\n content: none;\n}\n.row {\n display: flex;\n align-items: flex-start;\n gap: var(--office-space-1);\n flex: 1;\n}\n/* One-line groups centre their commands on the whole group box. */\n:host([data-compact-row]) .row {\n align-items: center;\n}\n/* Several small drop-down galleries stack in columns of three. */\n:host([data-stack]) .row {\n flex-direction: column;\n align-items: stretch;\n align-content: flex-start;\n flex-wrap: wrap;\n max-height: var(--office-ribbon-stack-max-height);\n gap: var(--office-space-0);\n}\n::slotted(*) {\n flex-shrink: 0;\n}\n.foot {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--office-ribbon-caption-padding);\n}\n.caption {\n color: var(--office-muted-foreground);\n font-size: var(--office-ribbon-caption-size);\n line-height: var(--office-ribbon-caption-line-height);\n text-align: center;\n white-space: nowrap;\n}\n.launcher {\n position: absolute;\n inset-inline-end: var(--office-launcher-inset-end);\n bottom: var(--office-launcher-inset-bottom);\n display: inline-grid;\n place-items: center;\n width: var(--office-launcher-width);\n height: var(--office-launcher-height);\n padding: 0;\n border: 0;\n border-radius: var(--office-radius-xs);\n background: transparent;\n color: var(--office-muted-foreground);\n cursor: pointer;\n}\n.launcher:hover:not(:disabled) {\n background: var(--office-surface);\n color: var(--office-foreground);\n}\n.launcher:focus-visible {\n outline: var(--office-focus-width) solid var(--office-ring);\n}\n.launcher:disabled {\n opacity: 0.45;\n cursor: not-allowed;\n}\n.launcher[hidden] {\n display: none;\n}\n.launcher svg {\n width: var(--office-icon-size-xs);\n height: var(--office-icon-size-xs);\n fill: none;\n stroke: currentColor;\n stroke-width: var(--office-icon-stroke);\n stroke-linecap: round;\n stroke-linejoin: round;\n}\n\n/* Collapsed (narrow window): the group is one button; its commands open in a popup. */\n.face {\n display: none;\n}\n:host([data-collapsed]) .face {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: flex-start;\n gap: var(--office-space-0);\n min-width: var(--office-collapsed-group-min-width);\n height: var(--office-command-large-height);\n padding: var(--office-space-0) var(--office-space-1-5);\n border: 0;\n border-radius: var(--office-radius);\n background: transparent;\n color: var(--office-foreground);\n font: inherit;\n font-size: var(--office-font-size-sm);\n cursor: pointer;\n}\n:host([data-collapsed]) .face:hover,\n:host([data-open]) .face {\n background: var(--office-selected);\n}\n.face:focus-visible {\n outline: var(--office-focus-width) solid var(--office-ring);\n outline-offset: var(--office-focus-offset);\n}\n.face svg {\n width: var(--office-command-large-icon);\n height: var(--office-command-large-icon);\n fill: none;\n stroke: currentColor;\n stroke-width: var(--office-icon-stroke);\n stroke-linecap: round;\n stroke-linejoin: round;\n color: var(--office-command-icon-color);\n}\n.face svg.chev {\n width: var(--office-icon-size-xs);\n height: var(--office-icon-size-xs);\n color: currentColor;\n}\n:host([data-collapsed]) .foot,\n:host([data-collapsed]) .row {\n display: none;\n}\n:host([data-collapsed][data-open]) .row {\n display: flex;\n flex-wrap: wrap;\n position: fixed;\n top: var(--office-ribbon-collapse-y);\n left: var(--office-ribbon-collapse-x);\n z-index: var(--office-z-popover);\n box-sizing: border-box;\n max-width: calc(100vw - 2 * var(--office-space-2));\n padding: var(--office-space-2);\n background: var(--office-popover);\n color: var(--office-popover-foreground);\n border: var(--office-border-width) solid var(--office-border);\n border-radius: var(--office-radius-md);\n box-shadow: var(--office-shadow);\n}\n\n@media (forced-colors: active) {\n .group::after {\n background: CanvasText;\n }\n .caption,\n .launcher {\n color: CanvasText;\n }\n :host([data-collapsed][data-open]) .row {\n border-color: CanvasText;\n }\n}\n";
1919
+ var ribbon_group_default = ":host {\n display: inline-flex;\n flex: none;\n align-self: stretch;\n}\n.group {\n position: relative;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n min-height: var(--office-ribbon-group-height);\n padding: var(--office-ribbon-group-padding);\n}\n/* Office draws a hairline between groups; a product may stop it short of the top and bottom. */\n.group::after {\n content: '';\n position: absolute;\n top: var(--office-ribbon-separator-inset);\n bottom: var(--office-ribbon-separator-inset);\n inset-inline-end: 0;\n width: var(--office-border-width);\n background: var(--office-ribbon-separator);\n}\n:host(:last-child) .group::after {\n content: none;\n}\n.row {\n display: flex;\n align-items: flex-start;\n gap: var(--office-space-1);\n flex: 1;\n}\n/* One-line groups centre their commands on the whole group box. */\n:host([data-compact-row]) .row {\n align-items: center;\n}\n/* Several small drop-down galleries stack in columns of three. */\n:host([data-stack]) .row {\n flex-direction: column;\n align-items: stretch;\n align-content: flex-start;\n flex-wrap: wrap;\n max-height: var(--office-ribbon-stack-max-height);\n gap: var(--office-space-0);\n}\n/* An inline gallery with several small drop-downs beside it: three rows, the gallery spans them. */\n:host([data-stack-beside]) .row {\n display: grid;\n grid-auto-flow: column;\n grid-template-rows: repeat(3, auto);\n align-items: center;\n gap: var(--office-space-0) var(--office-space-1);\n}\n:host([data-stack-beside]) ::slotted([data-stack-span]) {\n grid-row: 1 / span 3;\n}\n::slotted(*) {\n flex-shrink: 0;\n}\n.foot {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--office-ribbon-caption-padding);\n}\n.caption {\n color: var(--office-muted-foreground);\n font-size: var(--office-ribbon-caption-size);\n line-height: var(--office-ribbon-caption-line-height);\n text-align: center;\n white-space: nowrap;\n}\n.launcher {\n position: absolute;\n inset-inline-end: var(--office-launcher-inset-end);\n bottom: var(--office-launcher-inset-bottom);\n display: inline-grid;\n place-items: center;\n width: var(--office-launcher-width);\n height: var(--office-launcher-height);\n padding: 0;\n border: 0;\n border-radius: var(--office-radius-xs);\n background: transparent;\n color: var(--office-muted-foreground);\n cursor: pointer;\n}\n.launcher:hover:not(:disabled) {\n background: var(--office-surface);\n color: var(--office-foreground);\n}\n.launcher:focus-visible {\n outline: var(--office-focus-width) solid var(--office-ring);\n}\n.launcher:disabled {\n opacity: 0.45;\n cursor: not-allowed;\n}\n.launcher[hidden] {\n display: none;\n}\n.launcher svg {\n width: var(--office-icon-size-xs);\n height: var(--office-icon-size-xs);\n fill: none;\n stroke: currentColor;\n stroke-width: var(--office-icon-stroke);\n stroke-linecap: round;\n stroke-linejoin: round;\n}\n\n/* Collapsed (narrow window): the group is one button; its commands open in a popup. */\n.face {\n display: none;\n}\n:host([data-collapsed]) .face {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: flex-start;\n gap: var(--office-space-0);\n min-width: var(--office-collapsed-group-min-width);\n height: var(--office-command-large-height);\n padding: var(--office-space-0) var(--office-space-1-5);\n border: 0;\n border-radius: var(--office-radius);\n background: transparent;\n color: var(--office-foreground);\n font: inherit;\n font-size: var(--office-font-size-sm);\n cursor: pointer;\n}\n:host([data-collapsed]) .face:hover,\n:host([data-open]) .face {\n background: var(--office-selected);\n}\n.face:focus-visible {\n outline: var(--office-focus-width) solid var(--office-ring);\n outline-offset: var(--office-focus-offset);\n}\n.face svg {\n width: var(--office-command-large-icon);\n height: var(--office-command-large-icon);\n fill: none;\n stroke: currentColor;\n stroke-width: var(--office-icon-stroke);\n stroke-linecap: round;\n stroke-linejoin: round;\n color: var(--office-command-icon-color);\n}\n.face svg.chev {\n width: var(--office-icon-size-xs);\n height: var(--office-icon-size-xs);\n color: currentColor;\n}\n:host([data-collapsed]) .foot,\n:host([data-collapsed]) .row {\n display: none;\n}\n:host([data-collapsed][data-open]) .row {\n display: flex;\n flex-wrap: wrap;\n position: fixed;\n top: var(--office-ribbon-collapse-y);\n left: var(--office-ribbon-collapse-x);\n z-index: var(--office-z-popover);\n box-sizing: border-box;\n max-width: calc(100vw - 2 * var(--office-space-2));\n padding: var(--office-space-2);\n background: var(--office-popover);\n color: var(--office-popover-foreground);\n border: var(--office-border-width) solid var(--office-border);\n border-radius: var(--office-radius-md);\n box-shadow: var(--office-shadow);\n}\n\n@media (forced-colors: active) {\n .group::after {\n background: CanvasText;\n }\n .caption,\n .launcher {\n color: CanvasText;\n }\n :host([data-collapsed][data-open]) .row {\n border-color: CanvasText;\n }\n}\n";
1920
1920
 
1921
1921
  // src/ribbon/ribbon-group.ts
1922
1922
  function tokenPx(el, name, fallback) {
@@ -1974,6 +1974,12 @@ var OfficeUiRibbonGroup = class extends OfficeElement {
1974
1974
  "data-stack",
1975
1975
  stackable.length > 1 && stackable.length === children.length
1976
1976
  );
1977
+ const inline = children.filter(
1978
+ (el) => el.matches('[mode="inline"]') || el.querySelector('[mode="inline"]') !== null
1979
+ );
1980
+ const beside = inline.length > 0 && stackable.length > 1 && stackable.length + inline.length === children.length;
1981
+ this.toggleAttribute("data-stack-beside", beside);
1982
+ for (const el of children) el.toggleAttribute("data-stack-span", beside && inline.includes(el));
1977
1983
  const tallest = Math.max(0, ...children.map((el) => el.getBoundingClientRect().height));
1978
1984
  if (tallest > 0)
1979
1985
  this.toggleAttribute(
@@ -2140,7 +2146,7 @@ var defineRibbonSection = definer(
2140
2146
  );
2141
2147
 
2142
2148
  // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/ribbon/gallery.css?raw
2143
- var gallery_default = "[data-office-gallery] {\n display: inline-flex;\n position: relative;\n flex: none;\n color: var(--office-foreground);\n}\n[data-office-gallery] .gallery-view {\n display: contents;\n}\n[data-office-gallery] button {\n box-sizing: border-box;\n font: inherit;\n color: inherit;\n cursor: pointer;\n border: var(--office-border-width) solid var(--office-border);\n border-radius: var(--office-radius);\n background: var(--office-background);\n}\n[data-office-gallery] button:hover:not(:disabled) {\n background: var(--office-selected);\n}\n[data-office-gallery] button:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n[data-office-gallery] button:focus-visible {\n outline: var(--office-focus-width) solid var(--office-ring);\n outline-offset: var(--office-focus-offset);\n}\n[data-office-gallery] .trigger {\n display: inline-flex;\n align-items: center;\n gap: var(--office-space-1-5);\n min-height: var(--office-gallery-trigger-height);\n padding: 0 var(--office-space-1-5);\n font-size: var(--office-font-size-sm);\n white-space: nowrap;\n}\n[data-office-gallery]:not([mode='inline']) .trigger {\n border-color: transparent;\n background: transparent;\n}\n[data-office-gallery] .trigger svg {\n width: var(--office-icon-size-md);\n height: var(--office-icon-size-md);\n fill: none;\n stroke: currentColor;\n stroke-width: var(--office-icon-stroke);\n stroke-linecap: round;\n stroke-linejoin: round;\n}\n[data-office-gallery][mode='inline'] .trigger,\n[data-office-gallery][chevron-only] .trigger {\n align-self: stretch;\n padding: 0 var(--office-space-1);\n}\n[data-office-gallery] .strip {\n display: flex;\n gap: var(--office-space-0);\n padding: var(--office-space-0);\n align-items: center;\n}\n[data-office-gallery] .tile {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex: none;\n padding: var(--office-space-0);\n}\n[data-office-gallery] .tile[aria-pressed='true'] {\n border: var(--office-border-width-thick) solid var(--office-accent);\n background: color-mix(in srgb, var(--office-accent) 15%, var(--office-background));\n}\n[data-office-gallery] .tile svg {\n max-width: 100%;\n max-height: 100%;\n}\n[data-office-gallery][mode='inline'] .strip {\n gap: 0;\n border: var(--office-border-width) solid var(--office-border);\n border-inline-end: 0;\n border-radius: var(--office-radius-sm) 0 0 var(--office-radius-sm);\n background: var(--office-gallery-strip-background);\n}\n[data-office-gallery][mode='inline'] .trigger {\n border-radius: 0 var(--office-radius-sm) var(--office-radius-sm) 0;\n background: var(--office-gallery-strip-background);\n}\n[data-office-gallery] .trigger.command {\n border-color: transparent;\n background: transparent;\n justify-content: flex-start;\n}\n[data-office-gallery] .trigger.command:hover:not(:disabled) {\n border-color: var(--office-border);\n background: var(--office-selected);\n}\n[data-office-gallery] .trigger.command svg {\n color: var(--office-command-icon-color);\n}\n[data-office-gallery] .trigger.command-large {\n flex-direction: column;\n align-items: center;\n justify-content: flex-start;\n gap: var(--office-space-0);\n min-width: var(--office-gallery-command-min-width);\n max-width: var(--office-gallery-command-max-width);\n height: var(--office-gallery-command-height);\n padding: var(--office-space-1);\n font-size: var(--office-font-size-2xs);\n line-height: var(--office-line-height-tight);\n white-space: normal;\n text-align: center;\n}\n[data-office-gallery] .trigger.command-large svg {\n width: var(--office-gallery-command-icon);\n height: var(--office-gallery-command-icon);\n}\n[data-office-gallery] .popup {\n box-sizing: border-box;\n position: fixed;\n z-index: var(--office-z-popover);\n max-width: calc(100vw - var(--office-space-4));\n max-height: var(--office-gallery-popup-max-height);\n overflow: auto;\n padding: var(--office-space-2);\n border: var(--office-border-width) solid var(--office-border);\n border-radius: var(--office-radius-md);\n background: var(--office-popover);\n color: var(--office-popover-foreground);\n box-shadow: var(--office-shadow-lg);\n}\n[data-office-gallery] .popup[hidden] {\n display: none;\n}\n[data-office-gallery] .grid {\n display: grid;\n gap: var(--office-space-1);\n width: max-content;\n max-width: 100%;\n}\n[data-office-gallery] .heading {\n margin: var(--office-space-1) 0 var(--office-space-1-5);\n font-size: var(--office-font-size-xs);\n font-weight: var(--office-font-weight-bold);\n}\n[data-office-gallery] .section + .section {\n margin-top: var(--office-space-2-5);\n}\n[data-office-gallery][mode='panel'] {\n display: block;\n}\n[data-office-gallery][mode='panel'] .grid {\n width: 100%;\n}\n[data-office-gallery][mode='panel'] .tile {\n flex-direction: column;\n gap: var(--office-space-1);\n width: 100% !important;\n height: auto !important;\n min-height: var(--office-target-size-touch);\n padding: var(--office-space-1);\n}\n[data-office-gallery][mode='panel'] .tile-label {\n font-size: var(--office-font-size-xs);\n}\n[data-office-gallery][mode='panel'] .tile svg {\n width: var(--office-gallery-preview-width);\n height: var(--office-gallery-preview-height);\n}\n@media (pointer: coarse), (max-width: 1023px) {\n [data-office-gallery] .trigger,\n [data-office-gallery] .tile {\n min-height: var(--office-target-size-touch);\n min-width: var(--office-target-size-touch);\n }\n}\n@media (forced-colors: active) {\n [data-office-gallery] button,\n [data-office-gallery] .popup {\n color: ButtonText;\n background: Canvas;\n border-color: ButtonText;\n }\n [data-office-gallery] button:disabled {\n color: GrayText;\n opacity: 1;\n }\n [data-office-gallery] button:focus-visible,\n [data-office-gallery] .tile[aria-pressed='true'] {\n outline: var(--office-focus-width) solid Highlight;\n border-color: Highlight;\n }\n}\n";
2149
+ var gallery_default = "[data-office-gallery] {\n display: inline-flex;\n position: relative;\n flex: none;\n color: var(--office-foreground);\n}\n[data-office-gallery] .gallery-view {\n display: contents;\n}\n[data-office-gallery] button {\n box-sizing: border-box;\n font: inherit;\n color: inherit;\n cursor: pointer;\n border: var(--office-border-width) solid var(--office-border);\n border-radius: var(--office-radius);\n background: var(--office-background);\n}\n[data-office-gallery] button:hover:not(:disabled) {\n background: var(--office-selected);\n}\n[data-office-gallery] button:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n[data-office-gallery] button:focus-visible {\n outline: var(--office-focus-width) solid var(--office-ring);\n outline-offset: var(--office-focus-offset);\n}\n[data-office-gallery] .trigger {\n display: inline-flex;\n align-items: center;\n gap: var(--office-space-1-5);\n min-height: var(--office-gallery-trigger-height);\n padding: 0 var(--office-space-1-5);\n font-size: var(--office-font-size-sm);\n white-space: nowrap;\n}\n[data-office-gallery]:not([mode='inline']) .trigger {\n border-color: transparent;\n background: transparent;\n}\n[data-office-gallery] .trigger svg {\n width: var(--office-icon-size-md);\n height: var(--office-icon-size-md);\n fill: none;\n stroke: currentColor;\n stroke-width: var(--office-icon-stroke);\n stroke-linecap: round;\n stroke-linejoin: round;\n}\n[data-office-gallery][mode='inline'] .trigger,\n[data-office-gallery][chevron-only] .trigger {\n align-self: stretch;\n padding: 0 var(--office-space-1);\n}\n[data-office-gallery] .strip {\n display: flex;\n gap: var(--office-space-0);\n padding: var(--office-space-0);\n align-items: center;\n}\n[data-office-gallery] .tile {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex: none;\n padding: var(--office-space-0);\n}\n[data-office-gallery] .tile[aria-pressed='true'] {\n border: var(--office-border-width-thick) solid var(--office-accent);\n background: color-mix(in srgb, var(--office-accent) 15%, var(--office-background));\n}\n[data-office-gallery] .tile svg {\n max-width: 100%;\n max-height: 100%;\n}\n[data-office-gallery][mode='inline'] .strip {\n gap: 0;\n border: var(--office-border-width) solid var(--office-border);\n border-inline-end: 0;\n border-radius: var(--office-radius-sm) 0 0 var(--office-radius-sm);\n background: var(--office-gallery-strip-background);\n}\n[data-office-gallery][mode='inline'] .trigger {\n border-radius: 0 var(--office-radius-sm) var(--office-radius-sm) 0;\n background: var(--office-gallery-strip-background);\n}\n[data-office-gallery] .trigger.command {\n border-color: transparent;\n background: transparent;\n justify-content: flex-start;\n}\n[data-office-gallery] .trigger.command:hover:not(:disabled) {\n border-color: var(--office-border);\n background: var(--office-selected);\n}\n[data-office-gallery] .trigger.command svg {\n color: var(--office-command-icon-color);\n}\n[data-office-gallery] .trigger.command-large {\n flex-direction: column;\n align-items: center;\n justify-content: flex-start;\n gap: var(--office-space-0);\n min-width: var(--office-gallery-command-min-width);\n max-width: var(--office-gallery-command-max-width);\n height: var(--office-gallery-command-height);\n padding: var(--office-space-1);\n font-size: var(--office-font-size-2xs);\n line-height: var(--office-line-height-tight);\n white-space: normal;\n text-align: center;\n}\n[data-office-gallery] .trigger.command-large svg {\n width: var(--office-gallery-command-icon);\n height: var(--office-gallery-command-icon);\n}\n[data-office-gallery] .popup {\n box-sizing: border-box;\n position: fixed;\n z-index: var(--office-z-popover);\n max-width: calc(100vw - var(--office-space-4));\n max-height: var(--office-gallery-popup-max-height);\n overflow: auto;\n padding: var(--office-space-2);\n border: var(--office-border-width) solid var(--office-border);\n border-radius: var(--office-radius-md);\n background: var(--office-popover);\n color: var(--office-popover-foreground);\n box-shadow: var(--office-shadow-lg);\n}\n[data-office-gallery] .popup[hidden] {\n display: none;\n}\n[data-office-gallery] .grid {\n display: grid;\n gap: var(--office-space-1);\n width: max-content;\n max-width: 100%;\n}\n[data-office-gallery] .heading {\n margin: var(--office-space-1) 0 var(--office-space-1-5);\n font-size: var(--office-font-size-xs);\n font-weight: var(--office-font-weight-bold);\n}\n[data-office-gallery] .section + .section {\n margin-top: var(--office-space-2-5);\n}\n[data-office-gallery][mode='panel'] {\n display: block;\n}\n[data-office-gallery][mode='panel'] .grid {\n width: 100%;\n}\n[data-office-gallery][mode='panel'] .tile {\n flex-direction: column;\n gap: var(--office-space-1);\n width: 100% !important;\n height: auto !important;\n min-height: var(--office-target-size-touch);\n padding: var(--office-space-1);\n}\n[data-office-gallery][mode='panel'] .tile-label {\n font-size: var(--office-font-size-xs);\n}\n[data-office-gallery][mode='panel'] .tile svg {\n width: var(--office-gallery-preview-width);\n height: var(--office-gallery-preview-height);\n}\n[data-office-gallery] .footer {\n display: flex;\n flex-direction: column;\n margin-top: var(--office-space-2);\n padding-top: var(--office-space-1);\n border-top: var(--office-border-width) solid var(--office-border);\n}\n[data-office-gallery] .footer-item,\n[data-office-gallery] .tile-menu-item {\n display: block;\n padding: var(--office-space-1) var(--office-space-2);\n border-color: transparent;\n background: transparent;\n font-size: var(--office-font-size-sm);\n text-align: start;\n white-space: nowrap;\n}\n[data-office-gallery] .tile-menu {\n box-sizing: border-box;\n position: fixed;\n z-index: calc(var(--office-z-popover) + 1);\n display: flex;\n flex-direction: column;\n min-width: 12rem;\n padding: var(--office-space-1);\n border: var(--office-border-width) solid var(--office-border);\n border-radius: var(--office-radius-md);\n background: var(--office-popover);\n color: var(--office-popover-foreground);\n box-shadow: var(--office-shadow-lg);\n}\n@media (pointer: coarse), (max-width: 1023px) {\n [data-office-gallery] .trigger,\n [data-office-gallery] .tile {\n min-height: var(--office-target-size-touch);\n min-width: var(--office-target-size-touch);\n }\n}\n@media (forced-colors: active) {\n [data-office-gallery] button,\n [data-office-gallery] .popup {\n color: ButtonText;\n background: Canvas;\n border-color: ButtonText;\n }\n [data-office-gallery] button:disabled {\n color: GrayText;\n opacity: 1;\n }\n [data-office-gallery] button:focus-visible,\n [data-office-gallery] .tile[aria-pressed='true'] {\n outline: var(--office-focus-width) solid Highlight;\n border-color: Highlight;\n }\n}\n";
2144
2150
 
2145
2151
  // src/ribbon/gallery-styles.ts
2146
2152
  var GALLERY_LIGHT_CSS = withTokens(gallery_default);
@@ -2195,6 +2201,12 @@ function parseSvgPreview(doc, svg2) {
2195
2201
  var HOST_CSS = ":host { display: inline-flex; position: relative; flex: none; }";
2196
2202
  var OfficeUiGallery = class extends OfficeElement {
2197
2203
  static pickEvent = "office-gallery-pick";
2204
+ static previewEvent = "office-gallery-preview";
2205
+ static previewEndEvent = "office-gallery-preview-end";
2206
+ /** Hover time before the first preview shows, so sweeping across the strip does not flash. */
2207
+ static previewDelayMs = 120;
2208
+ /** Grace before a preview ends, so moving between tiles does not flash the original. */
2209
+ static previewEndDelayMs = 60;
2198
2210
  static triggerAttribute = "data-gallery";
2199
2211
  static popupAttribute = "data-gallery-popup";
2200
2212
  static itemAttribute = "data-gallery-item";
@@ -2207,6 +2219,10 @@ var OfficeUiGallery = class extends OfficeElement {
2207
2219
  model;
2208
2220
  locked = false;
2209
2221
  opened = false;
2222
+ previewing;
2223
+ previewStartTimer;
2224
+ previewEndTimer;
2225
+ menu;
2210
2226
  attributeChangedCallback(name, old, value) {
2211
2227
  super.attributeChangedCallback(name, old, value);
2212
2228
  if (name === "mode" && value === "panel") this.close();
@@ -2245,8 +2261,132 @@ var OfficeUiGallery = class extends OfficeElement {
2245
2261
  }
2246
2262
  }
2247
2263
  close() {
2264
+ this.endPreview(true);
2265
+ this.closeMenu();
2266
+ this.open = false;
2267
+ }
2268
+ /** Close the popup and menu but leave a running preview for the pick that follows to settle. */
2269
+ dismiss() {
2270
+ clearTimeout(this.previewStartTimer);
2271
+ this.previewStartTimer = void 0;
2272
+ this.closeMenu();
2248
2273
  this.open = false;
2249
2274
  }
2275
+ // ---- Preview and context menu ---------------------------------------------------------
2276
+ canPreview() {
2277
+ return this.model?.preview === true && !this.model.command && !this.unavailable() && this.getAttribute("mode") !== "panel";
2278
+ }
2279
+ startPreview(itemId) {
2280
+ if (!this.canPreview() || this.menu) return;
2281
+ clearTimeout(this.previewEndTimer);
2282
+ if (this.previewing === itemId) return;
2283
+ clearTimeout(this.previewStartTimer);
2284
+ const show = () => {
2285
+ const state = this.model;
2286
+ if (!state || !this.canPreview()) return;
2287
+ this.previewing = itemId;
2288
+ this.fire(this.constructor.previewEvent, {
2289
+ gallery: state.id,
2290
+ itemId
2291
+ });
2292
+ };
2293
+ const statics = this.constructor;
2294
+ if (this.previewing !== void 0) show();
2295
+ else this.previewStartTimer = setTimeout(show, statics.previewDelayMs);
2296
+ }
2297
+ endPreview(immediate = false) {
2298
+ clearTimeout(this.previewStartTimer);
2299
+ this.previewStartTimer = void 0;
2300
+ clearTimeout(this.previewEndTimer);
2301
+ this.previewEndTimer = void 0;
2302
+ if (this.previewing === void 0) return;
2303
+ const end = () => {
2304
+ this.previewEndTimer = void 0;
2305
+ const state = this.model;
2306
+ if (this.previewing === void 0) return;
2307
+ this.previewing = void 0;
2308
+ this.fire(this.constructor.previewEndEvent, {
2309
+ gallery: state?.id ?? ""
2310
+ });
2311
+ };
2312
+ const statics = this.constructor;
2313
+ if (immediate) end();
2314
+ else this.previewEndTimer = setTimeout(end, statics.previewEndDelayMs);
2315
+ }
2316
+ findItem(itemId) {
2317
+ for (const section of this.model?.sections ?? []) {
2318
+ const found = section.items.find((item) => item.id === itemId);
2319
+ if (found) return found;
2320
+ }
2321
+ return this.model?.inline?.find((item) => item.id === itemId);
2322
+ }
2323
+ openMenu(itemId, x, y) {
2324
+ if (this.unavailable() || !this.findItem(itemId)?.actions?.length) return;
2325
+ this.endPreview(true);
2326
+ this.menu = { itemId, x, y };
2327
+ this.ownerDocument.addEventListener("pointerdown", this.onMenuOutside, true);
2328
+ this.requestUpdate();
2329
+ }
2330
+ closeMenu() {
2331
+ if (!this.menu) return;
2332
+ this.menu = void 0;
2333
+ this.ownerDocument.removeEventListener("pointerdown", this.onMenuOutside, true);
2334
+ this.requestUpdate();
2335
+ }
2336
+ onMenuOutside = (event) => {
2337
+ if (!event.composedPath().some((node) => node.classList?.contains("tile-menu")))
2338
+ this.closeMenu();
2339
+ };
2340
+ onTileContextMenu(event, itemId) {
2341
+ if (!this.findItem(itemId)?.actions?.length) return;
2342
+ event.preventDefault();
2343
+ event.stopPropagation();
2344
+ this.openMenu(itemId, event.clientX, event.clientY);
2345
+ }
2346
+ onMenuKey(event) {
2347
+ const items = Array.from(
2348
+ event.currentTarget.querySelectorAll("button")
2349
+ );
2350
+ const index = items.indexOf(event.target);
2351
+ if (event.key === "Escape") {
2352
+ event.preventDefault();
2353
+ event.stopPropagation();
2354
+ const itemId = this.menu?.itemId;
2355
+ this.closeMenu();
2356
+ const statics = this.constructor;
2357
+ this.querySelector(`[${statics.itemAttribute}="${itemId}"]`)?.focus();
2358
+ } else if (event.key === "ArrowDown" || event.key === "ArrowUp") {
2359
+ event.preventDefault();
2360
+ event.stopPropagation();
2361
+ const step = event.key === "ArrowDown" ? 1 : -1;
2362
+ items[(index + step + items.length) % items.length]?.focus();
2363
+ } else if (event.key === "Tab") {
2364
+ this.closeMenu();
2365
+ }
2366
+ }
2367
+ menuTemplate() {
2368
+ const menu = this.menu;
2369
+ const item = menu ? this.findItem(menu.itemId) : void 0;
2370
+ if (!menu || !item?.actions?.length) return "";
2371
+ return html`<div
2372
+ class="tile-menu"
2373
+ role="menu"
2374
+ aria-label=${item.label}
2375
+ style="left:${menu.x}px;top:${menu.y}px"
2376
+ @keydown=${this.onMenuKey}
2377
+ >
2378
+ ${item.actions.map(
2379
+ (action) => html`<button
2380
+ type="button"
2381
+ role="menuitem"
2382
+ class="tile-menu-item"
2383
+ data-gallery-action=${action.id}
2384
+ @click=${() => this.pick(menu.itemId, action.id)}
2385
+ >${action.label}</button
2386
+ >`
2387
+ )}
2388
+ </div>`;
2389
+ }
2250
2390
  get trigger() {
2251
2391
  this.ensureRendered();
2252
2392
  return this.querySelector(".trigger");
@@ -2289,20 +2429,24 @@ var OfficeUiGallery = class extends OfficeElement {
2289
2429
  super.disconnectedCallback();
2290
2430
  this.close();
2291
2431
  this.cleanup();
2432
+ clearTimeout(this.previewStartTimer);
2433
+ clearTimeout(this.previewEndTimer);
2292
2434
  }
2293
2435
  unavailable() {
2294
2436
  const state = this.model;
2295
2437
  return this.locked || !state || state.disabled === true || !state.sections.some((section) => section.items.length > 0);
2296
2438
  }
2297
- pick(itemId) {
2439
+ pick(itemId, action) {
2298
2440
  const state = this.model;
2299
- if (this.unavailable() || !state?.sections.some((section) => section.items.some((item) => item.id === itemId)))
2441
+ if (this.unavailable() || !state || !(state.sections.some((section) => section.items.some((item) => item.id === itemId)) || state.footer?.some((entry) => entry.id === itemId)))
2300
2442
  return;
2301
- if (this.getAttribute("mode") !== "panel") {
2302
- this.close();
2303
- this.trigger.focus();
2304
- }
2305
- this.fire(this.constructor.pickEvent, { gallery: state.id, itemId });
2443
+ this.dismiss();
2444
+ if (this.getAttribute("mode") !== "panel") this.trigger.focus();
2445
+ this.fire(
2446
+ this.constructor.pickEvent,
2447
+ action === void 0 ? { gallery: state.id, itemId } : { gallery: state.id, itemId, action }
2448
+ );
2449
+ this.endPreview(true);
2306
2450
  }
2307
2451
  onTrigger() {
2308
2452
  if (this.model?.command) {
@@ -2350,6 +2494,15 @@ var OfficeUiGallery = class extends OfficeElement {
2350
2494
  }
2351
2495
  if (event.key === "Enter" || event.key === " ") event.stopPropagation();
2352
2496
  }
2497
+ /** The Menu key and Shift+F10 open a tile's context menu where the tile is. */
2498
+ onTileKey(event, itemId) {
2499
+ if (event.key !== "ContextMenu" && !(event.key === "F10" && event.shiftKey)) return;
2500
+ if (!this.findItem(itemId)?.actions?.length) return;
2501
+ event.preventDefault();
2502
+ event.stopPropagation();
2503
+ const box = event.currentTarget.getBoundingClientRect();
2504
+ this.openMenu(itemId, box.left, box.bottom);
2505
+ }
2353
2506
  onOutside = (event) => {
2354
2507
  if (!event.composedPath().includes(this)) this.close();
2355
2508
  };
@@ -2401,6 +2554,17 @@ var OfficeUiGallery = class extends OfficeElement {
2401
2554
  title=${item.label}
2402
2555
  style="width:${width + 6}px;height:${height + 6}px;--office-gallery-preview-width:${width}px;--office-gallery-preview-height:${height}px"
2403
2556
  @click=${() => this.pick(item.id)}
2557
+ @pointerenter=${(event) => {
2558
+ if (event.pointerType !== "touch") this.startPreview(item.id);
2559
+ }}
2560
+ @pointerleave=${() => this.endPreview()}
2561
+ @focus=${(event) => {
2562
+ if (event.currentTarget.matches(":focus-visible"))
2563
+ this.startPreview(item.id);
2564
+ }}
2565
+ @blur=${() => this.endPreview()}
2566
+ @contextmenu=${(event) => this.onTileContextMenu(event, item.id)}
2567
+ @keydown=${(event) => this.onTileKey(event, item.id)}
2404
2568
  >${preview}${this.getAttribute("mode") === "panel" ? html`<span class="tile-label">${item.label}</span>` : ""}</button>`;
2405
2569
  }
2406
2570
  lightTemplate() {
@@ -2440,7 +2604,7 @@ var OfficeUiGallery = class extends OfficeElement {
2440
2604
  role="dialog"
2441
2605
  aria-label=${title}
2442
2606
  ${unsafeStatic(statics.popupAttribute)}=${ifDefined(state?.id)}
2443
- >${(state?.sections ?? []).map((section) => this.section(section, disabled))}</div>`;
2607
+ >${(state?.sections ?? []).map((section) => this.section(section, disabled))}${this.footer(disabled)}</div>`;
2444
2608
  return html`<span class="gallery-view" @keydown=${this.onKey}>
2445
2609
  <div class="strip" ?hidden=${!inline} style=${inline ? "" : "display:none"}>
2446
2610
  ${inline ? repeat(
@@ -2449,9 +2613,25 @@ var OfficeUiGallery = class extends OfficeElement {
2449
2613
  (item) => this.tile(item, first?.tileWidth ?? 40, first?.tileHeight ?? 30, disabled)
2450
2614
  ) : ""}
2451
2615
  </div>
2452
- ${trigger}${this.opened ? popup : ""}
2616
+ ${trigger}${this.opened ? popup : ""}${this.menuTemplate()}
2453
2617
  </span>`;
2454
2618
  }
2619
+ footer(disabled) {
2620
+ const entries = this.model?.footer ?? [];
2621
+ if (entries.length === 0) return "";
2622
+ return html`<div class="footer" role="group">
2623
+ ${entries.map(
2624
+ (entry) => html`<button
2625
+ type="button"
2626
+ class="footer-item"
2627
+ data-gallery-footer=${entry.id}
2628
+ ?disabled=${disabled}
2629
+ @click=${() => this.pick(entry.id)}
2630
+ >${entry.label}</button
2631
+ >`
2632
+ )}
2633
+ </div>`;
2634
+ }
2455
2635
  section(section, disabled) {
2456
2636
  return html`<section class="section">
2457
2637
  ${section.title ? html`<div class="heading">${section.title}</div>` : ""}
@@ -2475,6 +2655,9 @@ var OfficeUiGallery = class extends OfficeElement {
2475
2655
  render(this.lightTemplate(), this, { host: this });
2476
2656
  this.markHost();
2477
2657
  if (this.opened) this.position();
2658
+ const menu = this.querySelector(".tile-menu");
2659
+ if (menu && !menu.contains(this.ownerDocument.activeElement))
2660
+ menu.querySelector("button")?.focus();
2478
2661
  }
2479
2662
  };
2480
2663
  var defineGallery = definer("office-ui-gallery", () => OfficeUiGallery);
@@ -6069,7 +6252,7 @@ function runKeyTips(root, targets, onDone, className) {
6069
6252
  }
6070
6253
 
6071
6254
  // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/ribbon/scroll-more.css?raw
6072
- var scroll_more_default = ".ribbon-scroll-more {\n position: sticky;\n right: 0;\n z-index: 2;\n flex: none;\n align-self: center;\n margin-left: auto;\n width: 28px;\n height: 40px;\n padding: 0;\n border: 1px solid var(--office-border, #c8c6c4);\n border-radius: 4px;\n background: var(--office-background, #fff);\n color: var(--office-foreground, #201f1e);\n font-size: 20px;\n line-height: 1;\n box-shadow: -6px 0 6px -2px rgb(0 0 0 / 12%);\n cursor: pointer;\n}\n\n@media (pointer: coarse) {\n .ribbon-scroll-more {\n width: var(--office-target-size-touch, 44px);\n height: var(--office-target-size-touch, 44px);\n }\n /* The ribbon grows to fit 44px targets instead of clipping them. */\n .ribbon-panel {\n height: auto !important;\n min-height: 104px;\n -webkit-overflow-scrolling: touch;\n }\n .ribbon-panel .ribbon-group button,\n .ribbon-panel .ribbon-group select,\n .ribbon-panel .ribbon-group input,\n .ribbon-panel .ribbon-group .ribbon-overflow-button {\n min-width: var(--office-target-size-touch, 44px);\n min-height: var(--office-target-size-touch, 44px);\n }\n}\n";
6255
+ var scroll_more_default = ".ribbon-scroll-more {\n position: sticky;\n right: 0;\n z-index: 2;\n flex: none;\n align-self: center;\n margin-left: auto;\n width: 28px;\n height: 40px;\n padding: 0;\n border: 1px solid var(--office-border, #c8c6c4);\n border-radius: 4px;\n background: var(--office-background, #fff);\n color: var(--office-foreground, #201f1e);\n font-size: 20px;\n line-height: 1;\n cursor: pointer;\n}\n/* A fade into the chevron: content scrolling under it dims out instead of being cut off by the box. */\n.ribbon-scroll-more::before {\n content: '';\n position: absolute;\n top: -1px;\n right: calc(100% + 1px);\n bottom: -1px;\n width: 32px;\n background: linear-gradient(to right, transparent, var(--office-background, #fff));\n pointer-events: none;\n}\n\n@media (pointer: coarse) {\n .ribbon-scroll-more {\n width: var(--office-target-size-touch, 44px);\n height: var(--office-target-size-touch, 44px);\n }\n /* The ribbon grows to fit 44px targets instead of clipping them. */\n .ribbon-panel {\n height: auto !important;\n min-height: 104px;\n -webkit-overflow-scrolling: touch;\n }\n .ribbon-panel .ribbon-group button,\n .ribbon-panel .ribbon-group select,\n .ribbon-panel .ribbon-group input,\n .ribbon-panel .ribbon-group .ribbon-overflow-button {\n min-width: var(--office-target-size-touch, 44px);\n min-height: var(--office-target-size-touch, 44px);\n }\n}\n";
6073
6256
 
6074
6257
  // src/ribbon/scroll-more.ts
6075
6258
  var STYLE_ID = "office-ui-ribbon-touch-style";