ooxml-ui 1.12.3 → 1.14.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.
- package/custom-elements.json +395 -5
- package/dist/chrome/status-layout.d.ts +23 -0
- package/dist/{chunk-S6ZXU442.js → chunk-7E3HU7RL.js} +1 -1
- package/dist/{chunk-PXIYHFZ5.js → chunk-ANPFMQ6E.js} +1 -1
- package/dist/{chunk-UKXJLI3N.js → chunk-C3MXKNNK.js} +2431 -311
- package/dist/{chunk-MML6EKFH.js → chunk-C5F7454A.js} +5 -5
- package/dist/{chunk-OGNNNTKI.js → chunk-CWBSXK7P.js} +1 -1
- package/dist/{chunk-LHS5DYLT.js → chunk-DSQBXLMO.js} +1 -1
- package/dist/{chunk-L7JV5FVE.js → chunk-KNC2UEUR.js} +1 -1
- package/dist/{chunk-735S7V4M.js → chunk-LAVVSCRJ.js} +415 -116
- package/dist/{chunk-SPNWHKSR.js → chunk-LD3K2RDN.js} +7 -5
- package/dist/chunk-UBBC5FH7.js +31 -0
- package/dist/controls.d.ts +2 -1
- package/dist/controls.d.ts.map +1 -1
- package/dist/controls.js +4 -4
- package/dist/dialog/options-categories.d.ts +39 -0
- package/dist/dialog/options-categories.d.ts.map +1 -0
- package/dist/dialog/options-controls.d.ts +49 -0
- package/dist/dialog/options-controls.d.ts.map +1 -0
- package/dist/dialog/options-dialog.d.ts +76 -41
- package/dist/dialog/options-dialog.d.ts.map +1 -1
- package/dist/docx/auto-fit.d.ts +10 -0
- package/dist/docx/backstage-customize.d.ts +7 -0
- package/dist/docx/backstage-options.d.ts +13 -3
- package/dist/docx/backstage-pages.d.ts +0 -6
- package/dist/docx/backstage.d.ts +3 -0
- package/dist/docx/canvas-click.d.ts +7 -0
- package/dist/docx/content-control-calendar.d.ts +7 -0
- package/dist/docx/content-control-dialog.d.ts +7 -0
- package/dist/docx/content-control-view.d.ts +2 -0
- package/dist/docx/editor-core.d.ts +7 -0
- package/dist/docx/equation-commands.d.ts +17 -0
- package/dist/docx/equation-dialog.d.ts +7 -0
- package/dist/docx/format-dialogs.d.ts +1 -1
- package/dist/docx/insert-controller.d.ts +4 -0
- package/dist/docx/locales/en-app.d.ts +1 -0
- package/dist/docx/locales/en.d.ts +123 -0
- package/dist/docx/locales/objects.d.ts +37 -0
- package/dist/docx/locales/options.d.ts +11 -0
- package/dist/docx/locales/shapes.d.ts +101 -0
- package/dist/docx/localization-strings.d.ts +123 -0
- package/dist/docx/note-editor.d.ts +7 -1
- package/dist/docx/page-controller.d.ts +17 -3
- package/dist/docx/parts-controller.d.ts +27 -1
- package/dist/docx/print-caret-affinity.d.ts +15 -0
- package/dist/docx/print-editing-index.d.ts +1 -0
- package/dist/docx/print-editing.d.ts +4 -1
- package/dist/docx/print-float-geometry.d.ts +28 -0
- package/dist/docx/print-float-locate.d.ts +25 -0
- package/dist/docx/print-float-selection.d.ts +24 -0
- package/dist/docx/print-float-text.d.ts +8 -0
- package/dist/docx/print-keyboard-navigation.d.ts +4 -3
- package/dist/docx/print-layout-view.d.ts +8 -0
- package/dist/docx/print-layout.d.ts +1 -1
- package/dist/docx/print-note-editing.d.ts +47 -0
- package/dist/docx/print-page-window.d.ts +2 -1
- package/dist/docx/print-picture.d.ts +7 -0
- package/dist/docx/print-story-editing.d.ts +16 -0
- package/dist/docx/print-vertical-step.d.ts +7 -0
- package/dist/docx/ribbon-action.d.ts +15 -0
- package/dist/docx/ribbon-icons.d.ts +3 -0
- package/dist/docx/schema.d.ts +1 -1
- package/dist/docx/shape-commands.d.ts +40 -0
- package/dist/docx/shape-draw.d.ts +12 -0
- package/dist/docx/shape-format-ribbon.d.ts +4 -0
- package/dist/docx/shape-node-view.d.ts +4 -0
- package/dist/docx/shape-picker.d.ts +5 -0
- package/dist/docx/shape-text-dialog.d.ts +4 -0
- package/dist/docx/status-bar.d.ts +1 -1
- package/dist/docx/table-model-adapter.d.ts +1 -1
- package/dist/docx/table-navigation.d.ts +8 -0
- package/dist/docx.js +3578 -595
- package/dist/index.d.ts +1 -1
- package/dist/index.js +9 -9
- package/dist/pptx/{chart-3d-view-scene-MYQRQDNF.mjs → chart-3d-view-scene-BEAJCQIS.mjs} +2 -2
- package/dist/pptx/{chart-3d-view-scene-WX23DR2E.cjs → chart-3d-view-scene-CFUVOILD.cjs} +38 -38
- package/dist/pptx/{chunk-VFPVEVF4.cjs → chunk-2JTHIDMD.cjs} +173 -873
- package/dist/pptx/{chunk-ZN4T6CYA.cjs → chunk-4NBVWV6I.cjs} +134 -0
- package/dist/pptx/{chunk-TTX4TDHU.cjs → chunk-5DUBDWOU.cjs} +5580 -2709
- package/dist/pptx/{chunk-C5OJXCCB.cjs → chunk-5UGJC25J.cjs} +1 -1
- package/dist/pptx/{chunk-NAFUYAQP.mjs → chunk-DWUC6LZK.mjs} +1 -1
- package/dist/pptx/{chunk-5OMQM4GF.mjs → chunk-GUAP5VUN.mjs} +4799 -1979
- package/dist/pptx/{chunk-K3S2A64B.cjs → chunk-HULZNSHL.cjs} +13 -13
- package/dist/pptx/{chunk-FRB6BRVU.mjs → chunk-OJXPN2WX.mjs} +134 -0
- package/dist/pptx/{chunk-QCP2XYJW.mjs → chunk-P3YE5LT2.mjs} +1 -1
- package/dist/pptx/{chunk-DPOES4WM.mjs → chunk-VXKFXPCU.mjs} +116 -829
- package/dist/pptx/dom/index.cjs +253 -253
- package/dist/pptx/dom/index.mjs +8 -8
- package/dist/pptx/export/html2canvas-clone.cjs +2 -2
- package/dist/pptx/export/html2canvas-clone.mjs +1 -1
- package/dist/pptx/i18n/index.cjs +6 -6
- package/dist/pptx/i18n/index.mjs +1 -1
- package/dist/pptx/i18n/translations-en-table-layout.d.ts +3 -0
- package/dist/pptx/i18n/translations-en-table-layout.d.ts.map +1 -0
- package/dist/pptx/i18n/translations-en.d.ts.map +1 -1
- package/dist/pptx/index.cjs +3280 -3084
- package/dist/pptx/index.mjs +5 -5
- package/dist/pptx/render/chart-auto-title.d.ts +10 -15
- package/dist/pptx/render/chart-auto-title.d.ts.map +1 -1
- package/dist/pptx/render/chart-cartesian-bubbles.d.ts.map +1 -1
- package/dist/pptx/render/chart-combo-stock.cjs +3 -3
- package/dist/pptx/render/chart-combo-stock.mjs +1 -1
- package/dist/pptx/render/chart-data-label-text.d.ts +1 -1
- package/dist/pptx/render/chart-error-bars.d.ts.map +1 -1
- package/dist/pptx/render/chart-helpers.d.ts +3 -10
- package/dist/pptx/render/chart-helpers.d.ts.map +1 -1
- package/dist/pptx/render/chart-overlays-trendline-fit.d.ts +7 -9
- package/dist/pptx/render/chart-overlays-trendline-fit.d.ts.map +1 -1
- package/dist/pptx/render/chart-overlays.cjs +7 -7
- package/dist/pptx/render/chart-overlays.mjs +1 -1
- package/dist/pptx/render/chart-stock-candles.d.ts +0 -21
- package/dist/pptx/render/chart-stock-candles.d.ts.map +1 -1
- package/dist/pptx/render/chart-style-palette.d.ts +3 -28
- package/dist/pptx/render/chart-style-palette.d.ts.map +1 -1
- package/dist/pptx/render/chart-sunburst-hierarchy.d.ts +8 -28
- package/dist/pptx/render/chart-sunburst-hierarchy.d.ts.map +1 -1
- package/dist/pptx/render/chart-surface-treemap.cjs +4 -4
- package/dist/pptx/render/chart-surface-treemap.mjs +1 -1
- package/dist/pptx/render/chart-treemap-hierarchy.d.ts +7 -9
- package/dist/pptx/render/chart-treemap-hierarchy.d.ts.map +1 -1
- package/dist/pptx/render/chart-trendlines.d.ts +3 -17
- package/dist/pptx/render/chart-trendlines.d.ts.map +1 -1
- package/dist/pptx/render/chart-view-model-points.d.ts +2 -23
- package/dist/pptx/render/chart-view-model-points.d.ts.map +1 -1
- package/dist/pptx/render/chart-view-model.cjs +44 -44
- package/dist/pptx/render/chart-view-model.mjs +1 -1
- package/dist/pptx/render/chart-waterfall-map.cjs +6 -6
- package/dist/pptx/render/chart-waterfall-map.mjs +1 -1
- package/dist/pptx/render/comment-navigation.d.ts +51 -0
- package/dist/pptx/render/comment-navigation.d.ts.map +1 -0
- package/dist/pptx/render/customization/customization-catalog.d.ts +9 -2
- package/dist/pptx/render/customization/customization-catalog.d.ts.map +1 -1
- package/dist/pptx/render/customization/customization-controller.d.ts +9 -1
- package/dist/pptx/render/customization/customization-controller.d.ts.map +1 -1
- package/dist/pptx/render/customization/customization-descriptions.d.ts +5 -1
- package/dist/pptx/render/customization/customization-descriptions.d.ts.map +1 -1
- package/dist/pptx/render/customization/customization-entry-points.d.ts +46 -0
- package/dist/pptx/render/customization/customization-entry-points.d.ts.map +1 -0
- package/dist/pptx/render/customization/customization-reference.d.ts.map +1 -1
- package/dist/pptx/render/customization/customization-regions.d.ts +131 -0
- package/dist/pptx/render/customization/customization-regions.d.ts.map +1 -0
- package/dist/pptx/render/customization/customization-resolve-regions.d.ts +11 -0
- package/dist/pptx/render/customization/customization-resolve-regions.d.ts.map +1 -0
- package/dist/pptx/render/customization/customization-resolve.d.ts +21 -2
- package/dist/pptx/render/customization/customization-resolve.d.ts.map +1 -1
- package/dist/pptx/render/customization/customization-surfaces.d.ts +21 -0
- package/dist/pptx/render/customization/customization-surfaces.d.ts.map +1 -1
- package/dist/pptx/render/customization/customization-types.d.ts +28 -2
- package/dist/pptx/render/customization/customization-types.d.ts.map +1 -1
- package/dist/pptx/render/customization/index.d.ts +2 -0
- package/dist/pptx/render/customization/index.d.ts.map +1 -1
- package/dist/pptx/render/customization/ribbon-control-catalog-core.d.ts +34 -2
- package/dist/pptx/render/customization/ribbon-control-catalog-core.d.ts.map +1 -1
- package/dist/pptx/render/customization/ribbon-control-catalog-tail.d.ts +61 -0
- package/dist/pptx/render/customization/ribbon-control-catalog-tail.d.ts.map +1 -1
- package/dist/pptx/render/customization/ribbon-control-catalog.d.ts +95 -2
- package/dist/pptx/render/customization/ribbon-control-catalog.d.ts.map +1 -1
- package/dist/pptx/render/customization/ribbon-control-visibility.d.ts +6 -1
- package/dist/pptx/render/customization/ribbon-control-visibility.d.ts.map +1 -1
- package/dist/pptx/render/editor-chrome/ribbon-css.d.ts +1 -1
- package/dist/pptx/render/editor-chrome/ribbon-css.d.ts.map +1 -1
- package/dist/pptx/render/index.d.ts +3 -1
- package/dist/pptx/render/index.d.ts.map +1 -1
- package/dist/pptx/render/morph-plan.d.ts.map +1 -1
- package/dist/pptx/render/ole-actions.d.ts +5 -3
- package/dist/pptx/render/ole-actions.d.ts.map +1 -1
- package/dist/pptx/render/options/index.d.ts +2 -0
- package/dist/pptx/render/options/index.d.ts.map +1 -1
- package/dist/pptx/render/options/options-dialog-binding.d.ts +60 -0
- package/dist/pptx/render/options/options-dialog-binding.d.ts.map +1 -0
- package/dist/pptx/render/options/options-dialog-model.d.ts +35 -0
- package/dist/pptx/render/options/options-dialog-model.d.ts.map +1 -0
- package/dist/pptx/render/review-comment-commands.d.ts +42 -0
- package/dist/pptx/render/review-comment-commands.d.ts.map +1 -0
- package/dist/pptx/render/ribbon-galleries/gallery-placements.d.ts.map +1 -1
- package/dist/pptx/render/ribbon-galleries/gallery-registry.d.ts.map +1 -1
- package/dist/pptx/render/ribbon-galleries/gallery-types.d.ts +9 -1
- package/dist/pptx/render/ribbon-galleries/gallery-types.d.ts.map +1 -1
- package/dist/pptx/render/ribbon-galleries/index.d.ts +2 -0
- package/dist/pptx/render/ribbon-galleries/index.d.ts.map +1 -1
- package/dist/pptx/render/ribbon-galleries/table-layout-commands.d.ts +7 -0
- package/dist/pptx/render/ribbon-galleries/table-layout-commands.d.ts.map +1 -0
- package/dist/pptx/render/ribbon-galleries/table-layout-ops.d.ts +64 -0
- package/dist/pptx/render/ribbon-galleries/table-layout-ops.d.ts.map +1 -0
- package/dist/pptx/render/ribbon-galleries/table-text-direction-gallery.d.ts +3 -0
- package/dist/pptx/render/ribbon-galleries/table-text-direction-gallery.d.ts.map +1 -0
- package/dist/pptx/render/ribbon-insert-layout.d.ts +56 -0
- package/dist/pptx/render/ribbon-insert-layout.d.ts.map +1 -0
- package/dist/pptx/render/ribbon-insert-state.d.ts +42 -2
- package/dist/pptx/render/ribbon-insert-state.d.ts.map +1 -1
- package/dist/pptx/render/ribbon-review-commands.d.ts +7 -0
- package/dist/pptx/render/ribbon-review-commands.d.ts.map +1 -1
- package/dist/pptx/render/toolbar-actions.d.ts +1 -1
- package/dist/pptx/render/toolbar-actions.d.ts.map +1 -1
- package/dist/pptx/render/viewer-props-manifest.d.ts +54 -0
- package/dist/pptx/render/viewer-props-manifest.d.ts.map +1 -0
- package/dist/pptx/web-components/index.d.ts.map +1 -1
- package/dist/pptx/web-components/office-aliases.d.ts +13 -0
- package/dist/pptx/web-components/office-aliases.d.ts.map +1 -1
- package/dist/pptx/web-components/office-token-bridge.d.ts +1 -1
- package/dist/pptx/web-components/office-token-bridge.d.ts.map +1 -1
- package/dist/pptx/web-components/options-dialog.d.ts +7 -0
- package/dist/pptx/web-components/options-dialog.d.ts.map +1 -0
- package/dist/pptx/web-components/ribbon-insert-dom.d.ts +28 -1
- package/dist/pptx/web-components/ribbon-insert-dom.d.ts.map +1 -1
- package/dist/pptx/web-components/ribbon-insert-icons.d.ts.map +1 -1
- package/dist/pptx/web-components/ribbon-insert-styles.d.ts.map +1 -1
- package/dist/pptx/web-components/ribbon-insert-table-picker.d.ts +16 -0
- package/dist/pptx/web-components/ribbon-insert-table-picker.d.ts.map +1 -0
- package/dist/pptx/web-components/ribbon-insert-view.d.ts +2 -1
- package/dist/pptx/web-components/ribbon-insert-view.d.ts.map +1 -1
- package/dist/pptx/web-components/ribbon-overflow.d.ts.map +1 -1
- package/dist/presence.js +3 -3
- package/dist/ribbon/auto-collapse.d.ts +8 -0
- package/dist/ribbon/auto-collapse.d.ts.map +1 -0
- package/dist/ribbon/group-overflow.d.ts +7 -0
- package/dist/ribbon/group-overflow.d.ts.map +1 -1
- package/dist/ribbon/overflow.d.ts +7 -0
- package/dist/ribbon/overflow.d.ts.map +1 -1
- package/dist/ribbon/ribbon-tabs.d.ts +5 -0
- package/dist/ribbon/ribbon-tabs.d.ts.map +1 -1
- package/dist/ribbon/scroll-more.d.ts +17 -0
- package/dist/ribbon/scroll-more.d.ts.map +1 -0
- package/dist/smartart.js +3 -3
- package/dist/teams/activity-feed.d.ts +36 -0
- package/dist/teams/app/activity.d.ts +5 -0
- package/dist/teams/app/calendar-app.d.ts +2 -0
- package/dist/teams/app/chat-app.d.ts +11 -0
- package/dist/teams/app/chat-people-dialog.d.ts +38 -0
- package/dist/teams/app/controller.d.ts +3 -2
- package/dist/teams/app/dialog-base.d.ts +18 -0
- package/dist/teams/app/meeting-details.d.ts +63 -0
- package/dist/teams/app/meeting-dialog.d.ts +103 -0
- package/dist/teams/app/new-chat-dialog.d.ts +42 -0
- package/dist/teams/app/notify-delivery.d.ts +28 -0
- package/dist/teams/app/pinned-bar.d.ts +24 -0
- package/dist/teams/app/profile-menu.d.ts +18 -1
- package/dist/teams/app/settings-notifications.d.ts +9 -0
- package/dist/teams/app/store.d.ts +1 -1
- package/dist/teams/app/teams-app.d.ts +72 -5
- package/dist/teams/app/teams-settings.d.ts +5 -1
- package/dist/teams/app/thread-pane.d.ts +1 -1
- package/dist/teams/app-rail.d.ts +17 -3
- package/dist/teams/avatar.d.ts +2 -2
- package/dist/teams/base.d.ts +2 -0
- package/dist/teams/calendar-agenda.d.ts +30 -0
- package/dist/teams/calendar-view.d.ts +61 -0
- package/dist/teams/chat-composer.d.ts +32 -2
- package/dist/teams/chat-list.d.ts +41 -3
- package/dist/teams/chat-sidebar.d.ts +25 -0
- package/dist/teams/index.d.ts +6 -1
- package/dist/teams/people-picker.d.ts +37 -0
- package/dist/teams.js +6 -6
- package/dist/theme.js +2 -2
- package/dist/tokens.d.ts +7 -5
- package/dist/tokens.d.ts.map +1 -1
- package/dist/visio/locales/de-commands.d.ts +2 -0
- package/dist/visio/locales/de-text.d.ts +2 -0
- package/dist/visio/locales/en-commands.d.ts +2 -0
- package/dist/visio/locales/en-text.d.ts +2 -0
- package/dist/visio/locales/es-commands.d.ts +2 -0
- package/dist/visio/locales/es-text.d.ts +2 -0
- package/dist/visio/locales/fr-commands.d.ts +2 -0
- package/dist/visio/locales/fr-text.d.ts +2 -0
- package/dist/visio/locales/zh-CN-commands.d.ts +2 -0
- package/dist/visio/locales/zh-CN-text.d.ts +2 -0
- package/dist/visio/ribbon-home.d.ts +1 -1
- package/dist/visio/ribbon-locale.d.ts +11 -0
- package/dist/visio/ribbon-localize.d.ts +9 -0
- package/dist/visio/ribbon-tab-cue.d.ts +8 -0
- package/dist/visio/shapes-document.d.ts +5 -0
- package/dist/visio/shapes-files-ui.d.ts +13 -0
- package/dist/visio/shapes-master-list.d.ts +5 -0
- package/dist/visio/shapes-sections.d.ts +1 -4
- package/dist/visio/stencil-files.d.ts +36 -0
- package/dist/visio/styles.d.ts +1 -1
- package/dist/visio/viewer-chrome.d.ts +3 -3
- package/dist/visio/viewer-element.d.ts +2 -0
- package/dist/visio/viewer-gesture-state.d.ts +54 -0
- package/dist/visio/viewer-options-categories.d.ts +8 -0
- package/dist/visio/viewer-options.d.ts +3 -7
- package/dist/visio/viewer-touch-gestures.d.ts +17 -0
- package/dist/visio/viewer-touch-hit.d.ts +3 -0
- package/dist/visio/viewer-touch-long-press.d.ts +13 -0
- package/dist/visio/viewer-touch-math.d.ts +44 -0
- package/dist/visio.js +2425 -295
- package/dist/xlsx/backstage/index.d.ts +3 -0
- package/dist/xlsx/backstage/options-customize.d.ts +7 -0
- package/dist/xlsx/backstage/options-dialog.d.ts +13 -0
- package/dist/xlsx/commands/slicers.d.ts +9 -0
- package/dist/xlsx/commands/view.d.ts +3 -0
- package/dist/xlsx/dialogs/pivot-field-settings.d.ts +7 -0
- package/dist/xlsx/dialogs/pivot-group-dates.d.ts +6 -0
- package/dist/xlsx/dialogs/pivot-group.d.ts +3 -0
- package/dist/xlsx/dialogs/pivot-rows.d.ts +21 -0
- package/dist/xlsx/dialogs/pivot-values.d.ts +1 -1
- package/dist/xlsx/dialogs/scenario-manager.d.ts +2 -0
- package/dist/xlsx/dialogs/slicers.d.ts +9 -0
- package/dist/xlsx/dialogs/styles.d.ts +1 -1
- package/dist/xlsx/dialogs/what-if.d.ts +5 -0
- package/dist/xlsx/grid/page-break-layer.d.ts +3 -0
- package/dist/xlsx/grid/slicer.d.ts +22 -0
- package/dist/xlsx/grid/styles.d.ts +1 -1
- package/dist/xlsx/grid/timeline.d.ts +12 -0
- package/dist/xlsx/modules.d.ts +1 -0
- package/dist/xlsx/page-views/index.d.ts +7 -0
- package/dist/xlsx/page-views/page-layout-bands.d.ts +17 -0
- package/dist/xlsx/page-views/page-layout-css.d.ts +1 -0
- package/dist/xlsx/page-views/page-layout-editor.d.ts +21 -0
- package/dist/xlsx/page-views/page-layout-rulers.d.ts +3 -0
- package/dist/xlsx/page-views/page-layout-view.d.ts +8 -0
- package/dist/xlsx/print-pages.d.ts +7 -1
- package/dist/xlsx/ribbon/ribbon.d.ts +1 -1
- package/dist/xlsx/ribbon/tabs/contextual.d.ts +4 -0
- package/dist/xlsx/status-bar.d.ts +1 -1
- package/dist/xlsx.js +3015 -546
- package/package.json +2 -2
- package/dist/pptx/render/chart-number-format-pattern.d.ts +0 -35
- package/dist/pptx/render/chart-number-format-pattern.d.ts.map +0 -1
- package/dist/pptx/render/chart-number-format.d.ts +0 -21
- package/dist/pptx/render/chart-number-format.d.ts.map +0 -1
- package/dist/pptx/render/chart-waterfall-layout.d.ts +0 -20
- package/dist/pptx/render/chart-waterfall-layout.d.ts.map +0 -1
- package/dist/teams/app/navigation-drawer.d.ts +0 -26
- package/dist/xlsx/backstage/pages-options.d.ts +0 -7
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createIconSvg, paintIcon, getIcon } from './chunk-M6GF5ED2.js';
|
|
2
|
-
import { initialsOf } from './chunk-
|
|
3
|
-
import { OfficeElement, controlStyles, definer, valueOn, flag, present, triState, withTokens, emit } from './chunk-
|
|
4
|
-
import { tok, OFFICE_TOKENS } from './chunk-
|
|
2
|
+
import { initialsOf } from './chunk-KNC2UEUR.js';
|
|
3
|
+
import { OfficeElement, controlStyles, definer, valueOn, flag, present, triState, withTokens, emit } from './chunk-CWBSXK7P.js';
|
|
4
|
+
import { tok, OFFICE_TOKENS } from './chunk-LD3K2RDN.js';
|
|
5
5
|
import { html, LitElement, nothing, render, svg } from 'lit';
|
|
6
6
|
import { ifDefined } from 'lit/directives/if-defined.js';
|
|
7
7
|
import { repeat } from 'lit/directives/repeat.js';
|
|
@@ -1496,8 +1496,14 @@ var OfficeUiPrintPreview = class extends OfficeElement {
|
|
|
1496
1496
|
};
|
|
1497
1497
|
var definePrintPreview = definer("office-ui-print-preview", () => OfficeUiPrintPreview);
|
|
1498
1498
|
|
|
1499
|
+
// src/ribbon/auto-collapse.ts
|
|
1500
|
+
var SHORT_VIEWPORT_MEDIA = "(max-height: 500px)";
|
|
1501
|
+
function resolveCollapsed(shortViewport, userChoice) {
|
|
1502
|
+
return userChoice ?? shortViewport;
|
|
1503
|
+
}
|
|
1504
|
+
|
|
1499
1505
|
// raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/ribbon/ribbon-tabs.css?raw
|
|
1500
|
-
var ribbon_tabs_default = ":host {\n display: block;\n min-width: 0;\n}\n.head {\n display: flex;\n align-items: stretch;\n min-width: 0;\n border-bottom: var(--office-border-width) solid var(--office-border);\n}\n.file {\n flex: none;\n min-height: var(--office-ribbon-tab-height);\n margin: 0 var(--office-space-1) 0 0;\n padding: var(--office-space-1-5) var(--office-space-4);\n border: 0;\n border-radius: 0;\n background: var(--office-accent);\n color: var(--office-accent-foreground);\n font: inherit;\n font-size: var(--office-font-size);\n cursor: pointer;\n}\n.file:hover {\n background: var(--office-accent-hover);\n}\n.file[hidden] {\n display: none;\n}\n[role='tablist'] {\n display: flex;\n flex: 0 1 auto;\n align-items: stretch;\n min-width: 0;\n overflow-x: auto;\n scrollbar-width: none;\n}\n[role='tab'] {\n position: relative;\n flex: none;\n min-height: var(--office-ribbon-tab-height);\n padding: var(--office-space-1-5) var(--office-space-3);\n border: 0;\n border-radius: 0;\n background: transparent;\n color: var(--office-muted-foreground);\n font: inherit;\n font-size: var(--office-font-size);\n cursor: pointer;\n}\n[role='tab']:hover {\n color: var(--office-foreground);\n background: var(--office-surface);\n}\n[role='tab'][aria-selected='true'] {\n color: var(--office-accent);\n}\n[role='tab'][aria-selected='true']::after {\n content: '';\n position: absolute;\n inset: auto 0 0;\n height: var(--office-tab-indicator-width);\n background: var(--office-accent);\n}\n[role='tab'][data-contextual],\n[role='tab'][data-contextual][aria-selected='true'] {\n color: var(--office-ribbon-contextual);\n}\n[role='tab'][data-contextual][aria-selected='true']::after {\n background: var(--office-ribbon-contextual);\n}\n.file:focus-visible,\n[role='tab']:focus-visible {\n outline: var(--office-focus-width) solid var(--office-ring);\n outline-offset: calc(-1 * var(--office-focus-width));\n}\n::slotted([slot='search']) {\n align-self: center;\n}\n/* The auto start margin keeps the actions, and the collapse button after them, at the right end of\n the tab row even while the slot is empty. */\nslot[name='actions'] {\n display: flex;\n flex: none;\n align-items: center;\n gap: var(--office-space-1);\n margin-inline: auto var(--office-space-1);\n}\n\n.collapse {\n flex: none;\n align-self: center;\n width: var(--office-target-size);\n height: var(--office-target-size);\n margin-inline: 0 var(--office-space-1);\n padding: 0;\n border: 0;\n border-radius: var(--office-radius-sm);\n background: none;\n color: var(--office-muted-foreground);\n cursor: pointer;\n}\n.collapse[hidden] {\n display: none;\n}\n.collapse:hover {\n background: var(--office-surface);\n}\n.collapse:focus-visible {\n outline: var(--office-focus-width) solid var(--office-ring);\n}\n.collapse .glyph {\n width: var(--office-icon-size);\n height: var(--office-icon-size);\n fill: none;\n stroke: currentColor;\n stroke-width: 1.5;\n transform: rotate(90deg);\n}\n.collapse[aria-pressed='true'] .glyph {\n transform: rotate(-90deg);\n}\n:host([collapsed][peek]) {\n position: relative;\n}\n:host([collapsed][peek]) ::slotted([data-ribbon-tab]:not([hidden])) {\n position: absolute;\n inset: 100% 0 auto;\n z-index: 60;\n border-bottom: var(--office-border-width) solid var(--office-border);\n background: var(--office-background);\n box-shadow: var(--office-shadow);\n}\n\n@media (max-width: 760px), (pointer: coarse) {\n .file,\n [role='tab'] {\n min-height: var(--office-target-size-touch);\n }\n .file {\n min-width: var(--office-ribbon-file-min-width);\n }\n}\n@media (forced-colors: active) {\n .file {\n border: var(--office-border-width) solid ButtonText;\n }\n [role='tab'][aria-selected='true']::after {\n background: Highlight;\n }\n}\n";
|
|
1506
|
+
var ribbon_tabs_default = ":host {\n display: block;\n min-width: 0;\n}\n.head {\n display: flex;\n align-items: stretch;\n min-width: 0;\n border-bottom: var(--office-border-width) solid var(--office-border);\n}\n.file {\n flex: none;\n min-height: var(--office-ribbon-tab-height);\n margin: 0 var(--office-space-1) 0 0;\n padding: var(--office-space-1-5) var(--office-space-4);\n border: 0;\n border-radius: 0;\n background: var(--office-accent);\n color: var(--office-accent-foreground);\n font: inherit;\n font-size: var(--office-font-size);\n cursor: pointer;\n}\n.file:hover {\n background: var(--office-accent-hover);\n}\n.file[hidden] {\n display: none;\n}\n[role='tablist'] {\n display: flex;\n flex: 0 1 auto;\n align-items: stretch;\n min-width: 0;\n overflow-x: auto;\n scrollbar-width: none;\n scroll-snap-type: x proximity;\n scroll-padding-inline: var(--office-space-4);\n overscroll-behavior-x: contain;\n -webkit-overflow-scrolling: touch;\n}\n[role='tablist']::-webkit-scrollbar {\n display: none;\n}\n[role='tab'] {\n scroll-snap-align: start;\n position: relative;\n flex: none;\n min-height: var(--office-ribbon-tab-height);\n padding: var(--office-space-1-5) var(--office-space-3);\n border: 0;\n border-radius: 0;\n background: transparent;\n color: var(--office-muted-foreground);\n font: inherit;\n font-size: var(--office-font-size);\n cursor: pointer;\n}\n[role='tab']:hover {\n color: var(--office-foreground);\n background: var(--office-surface);\n}\n[role='tab'][aria-selected='true'] {\n color: var(--office-accent);\n}\n[role='tab'][aria-selected='true']::after {\n content: '';\n position: absolute;\n inset: auto 0 0;\n height: var(--office-tab-indicator-width);\n background: var(--office-accent);\n}\n[role='tab'][data-contextual],\n[role='tab'][data-contextual][aria-selected='true'] {\n color: var(--office-ribbon-contextual);\n}\n[role='tab'][data-contextual][aria-selected='true']::after {\n background: var(--office-ribbon-contextual);\n}\n.file:focus-visible,\n[role='tab']:focus-visible {\n outline: var(--office-focus-width) solid var(--office-ring);\n outline-offset: calc(-1 * var(--office-focus-width));\n}\n::slotted([slot='search']) {\n align-self: center;\n}\n/* The auto start margin keeps the actions, and the collapse button after them, at the right end of\n the tab row even while the slot is empty. */\nslot[name='actions'] {\n display: flex;\n flex: none;\n align-items: center;\n gap: var(--office-space-1);\n margin-inline: auto var(--office-space-1);\n}\n\n.collapse {\n flex: none;\n align-self: center;\n width: var(--office-target-size);\n height: var(--office-target-size);\n margin-inline: 0 var(--office-space-1);\n padding: 0;\n border: 0;\n border-radius: var(--office-radius-sm);\n background: none;\n color: var(--office-muted-foreground);\n cursor: pointer;\n}\n.collapse[hidden] {\n display: none;\n}\n.collapse:hover {\n background: var(--office-surface);\n}\n.collapse:focus-visible {\n outline: var(--office-focus-width) solid var(--office-ring);\n}\n.collapse .glyph {\n width: var(--office-icon-size);\n height: var(--office-icon-size);\n fill: none;\n stroke: currentColor;\n stroke-width: 1.5;\n transform: rotate(90deg);\n}\n.collapse[aria-pressed='true'] .glyph {\n transform: rotate(-90deg);\n}\n:host([collapsed][peek]) {\n position: relative;\n}\n:host([collapsed][peek]) ::slotted([data-ribbon-tab]:not([hidden])) {\n position: absolute;\n inset: 100% 0 auto;\n z-index: 60;\n border-bottom: var(--office-border-width) solid var(--office-border);\n background: var(--office-background);\n box-shadow: var(--office-shadow);\n}\n\n@media (max-width: 760px), (pointer: coarse) {\n .file,\n [role='tab'] {\n min-height: var(--office-target-size-touch);\n }\n [role='tab'] {\n min-width: var(--office-target-size-touch);\n }\n}\n@media (pointer: coarse) {\n .collapse {\n width: var(--office-target-size-touch);\n height: var(--office-target-size-touch);\n }\n}\n@media (max-width: 760px), (pointer: coarse) {\n .file {\n min-width: var(--office-ribbon-file-min-width);\n }\n}\n/* A phone portrait row cannot hold the tabs and the actions: the tabs keep the first row (File and a\n scrolling tab strip) and the actions wrap under them. */\n@media (max-width: 520px) {\n .head {\n flex-wrap: wrap;\n }\n [role='tablist'] {\n flex: 1 1 12rem;\n }\n slot[name='actions'] {\n order: 2;\n }\n .collapse {\n order: 3;\n }\n}\n@media (forced-colors: active) {\n .file {\n border: var(--office-border-width) solid ButtonText;\n }\n [role='tab'][aria-selected='true']::after {\n background: Highlight;\n }\n}\n";
|
|
1501
1507
|
|
|
1502
1508
|
// src/ribbon/ribbon-tabs.ts
|
|
1503
1509
|
var OfficeUiRibbon = class extends OfficeElement {
|
|
@@ -1596,7 +1602,19 @@ var OfficeUiRibbon = class extends OfficeElement {
|
|
|
1596
1602
|
};
|
|
1597
1603
|
});
|
|
1598
1604
|
}
|
|
1605
|
+
/** The user's own collapse choice; it wins over the automatic one on short viewports. */
|
|
1606
|
+
userCollapsed;
|
|
1607
|
+
shortQuery;
|
|
1608
|
+
/** Collapses to the tab row on a short viewport (phone landscape) unless the user chose. */
|
|
1609
|
+
applyAuto = () => {
|
|
1610
|
+
if (!this.collapsible) return;
|
|
1611
|
+
const next = resolveCollapsed(this.shortQuery?.matches ?? false, this.userCollapsed);
|
|
1612
|
+
if (next === this.collapsed) return;
|
|
1613
|
+
this.collapsed = next;
|
|
1614
|
+
this.peek = false;
|
|
1615
|
+
};
|
|
1599
1616
|
setCollapsed(value) {
|
|
1617
|
+
this.userCollapsed = value;
|
|
1600
1618
|
if (value === this.collapsed) return;
|
|
1601
1619
|
this.collapsed = value;
|
|
1602
1620
|
this.peek = false;
|
|
@@ -1617,6 +1635,7 @@ var OfficeUiRibbon = class extends OfficeElement {
|
|
|
1617
1635
|
this.peek = false;
|
|
1618
1636
|
}
|
|
1619
1637
|
willUpdate(changed) {
|
|
1638
|
+
if (changed.has("collapsible")) this.applyAuto();
|
|
1620
1639
|
if (changed.has("peek")) {
|
|
1621
1640
|
const doc = this.ownerDocument;
|
|
1622
1641
|
if (this.peek) doc.addEventListener("pointerdown", this.onOutside, true);
|
|
@@ -1656,6 +1675,9 @@ var OfficeUiRibbon = class extends OfficeElement {
|
|
|
1656
1675
|
this.build();
|
|
1657
1676
|
super.connectedCallback();
|
|
1658
1677
|
this.addEventListener("keydown", this.onHostKey);
|
|
1678
|
+
this.shortQuery = this.ownerDocument.defaultView?.matchMedia?.(SHORT_VIEWPORT_MEDIA);
|
|
1679
|
+
this.shortQuery?.addEventListener("change", this.applyAuto);
|
|
1680
|
+
this.applyAuto();
|
|
1659
1681
|
const Observer = this.ownerDocument.defaultView?.MutationObserver;
|
|
1660
1682
|
this.watcher = Observer ? new Observer(() => this.build()) : void 0;
|
|
1661
1683
|
this.watcher?.observe(this, {
|
|
@@ -1668,6 +1690,7 @@ var OfficeUiRibbon = class extends OfficeElement {
|
|
|
1668
1690
|
super.disconnectedCallback();
|
|
1669
1691
|
this.removeEventListener("keydown", this.onHostKey);
|
|
1670
1692
|
this.watcher?.disconnect();
|
|
1693
|
+
this.shortQuery?.removeEventListener("change", this.applyAuto);
|
|
1671
1694
|
this.ownerDocument.removeEventListener("pointerdown", this.onOutside, true);
|
|
1672
1695
|
this.watcher = void 0;
|
|
1673
1696
|
}
|
|
@@ -1677,6 +1700,14 @@ var OfficeUiRibbon = class extends OfficeElement {
|
|
|
1677
1700
|
const hideAll = this.collapsed && !this.peek;
|
|
1678
1701
|
for (const panel of this.panels())
|
|
1679
1702
|
panel.hidden = hideAll || panel.dataset.ribbonTab !== selected;
|
|
1703
|
+
const active = this.tabButton(selected);
|
|
1704
|
+
const list = active?.parentElement;
|
|
1705
|
+
if (active && list && list.scrollWidth > list.clientWidth) {
|
|
1706
|
+
const tab = active.getBoundingClientRect();
|
|
1707
|
+
const view = list.getBoundingClientRect();
|
|
1708
|
+
if (tab.left < view.left) list.scrollLeft -= view.left - tab.left;
|
|
1709
|
+
else if (tab.right > view.right) list.scrollLeft += tab.right - view.right;
|
|
1710
|
+
}
|
|
1680
1711
|
}
|
|
1681
1712
|
render() {
|
|
1682
1713
|
const selected = this.selected;
|
|
@@ -3772,39 +3803,123 @@ var OfficeUiMenuButton = class _OfficeUiMenuButton extends OfficeElement {
|
|
|
3772
3803
|
}
|
|
3773
3804
|
};
|
|
3774
3805
|
var defineMenuButton = definer("office-ui-menu-button", () => OfficeUiMenuButton);
|
|
3775
|
-
|
|
3776
|
-
// raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/dialog/options-dialog.css?raw
|
|
3777
|
-
var options_dialog_default = ":host {\n display: contents;\n}\noffice-ui-dialog {\n --office-dialog-width: var(--office-options-width);\n --office-dialog-max-width: var(--office-options-width);\n}\n.layout {\n display: grid;\n grid-template-columns: var(--office-options-nav-width) minmax(0, 1fr);\n gap: 0;\n min-height: var(--office-options-min-height);\n margin: calc(-1 * var(--office-space-4));\n}\nnav {\n display: flex;\n flex-direction: column;\n padding: var(--office-space-2) 0;\n border-inline-end: var(--office-border-width) solid var(--office-border);\n background: var(--office-surface);\n overflow: auto;\n}\nnav button {\n min-height: var(--office-options-row-height);\n padding: var(--office-space-1) var(--office-space-3-5);\n border: 0;\n border-radius: 0;\n background: transparent;\n color: inherit;\n font: inherit;\n text-align: start;\n cursor: pointer;\n}\nnav button[aria-selected='true'] {\n background: var(--office-selected);\n font-weight: 600;\n box-shadow: inset var(--office-selection-bar-width) 0 0 var(--office-accent);\n}\nnav button:focus-visible {\n outline: var(--office-focus-width) solid var(--office-ring);\n outline-offset: calc(-1 * var(--office-focus-width));\n}\n[role='tabpanel'] {\n padding: var(--office-space-4) var(--office-space-5);\n overflow: auto;\n}\n.lead {\n margin: 0 0 var(--office-space-3);\n font-size: var(--office-font-size-md);\n}\n.unavailable {\n margin: 0 0 var(--office-space-3);\n color: var(--office-muted-foreground);\n}\nsection + section {\n margin-top: var(--office-space-4);\n}\nh3 {\n margin: 0 0 var(--office-space-2);\n padding-bottom: var(--office-space-1);\n border-bottom: var(--office-border-width) solid var(--office-border);\n font-size: var(--office-font-size);\n font-weight: 600;\n}\n.desc {\n margin: 0 0 var(--office-space-2);\n color: var(--office-muted-foreground);\n}\n.row {\n display: flex;\n align-items: center;\n gap: var(--office-space-2);\n min-height: var(--office-options-row-height);\n}\n.row.indent {\n padding-inline-start: var(--office-space-6);\n}\n.row.field > span:first-child {\n min-width: var(--office-options-label-width);\n}\n.row[data-disabled] {\n color: var(--office-muted-foreground);\n}\ninput[type='text'],\ninput[type='number'],\nselect {\n min-height: var(--office-input-height);\n box-sizing: border-box;\n font: inherit;\n border: var(--office-border-width) solid var(--office-border);\n border-radius: var(--office-radius-sm);\n background: var(--office-background);\n color: inherit;\n}\ninput[type='number'] {\n width: var(--office-options-number-width);\n}\n.info {\n display: inline-grid;\n place-items: center;\n width: var(--office-info-size);\n height: var(--office-info-size);\n border: var(--office-border-width) solid currentColor;\n border-radius: 50%;\n font-size: var(--office-font-size-2xs);\n color: var(--office-muted-foreground);\n cursor: help;\n}\n.actions {\n display: flex;\n gap: var(--office-space-2);\n}\n.actions button {\n min-width: var(--office-dialog-button-min-width);\n min-height: var(--office-control-height-md);\n font: inherit;\n cursor: pointer;\n}\n@media (max-width: 600px) {\n .layout {\n grid-template-columns: 1fr;\n }\n nav {\n flex-direction: row;\n border-inline-end: 0;\n border-bottom: var(--office-border-width) solid var(--office-border);\n }\n nav button {\n white-space: nowrap;\n }\n .row.field {\n flex-wrap: wrap;\n }\n}\n";
|
|
3778
|
-
|
|
3779
|
-
// src/dialog/options-dialog.ts
|
|
3780
3806
|
function clampOptionNumber(raw, min, max) {
|
|
3781
3807
|
const parsed = Number(raw);
|
|
3782
3808
|
return Number.isFinite(parsed) && raw.trim() !== "" ? Math.min(max, Math.max(min, parsed)) : void 0;
|
|
3783
3809
|
}
|
|
3810
|
+
function optionRow(host, control) {
|
|
3811
|
+
const { draft } = host;
|
|
3812
|
+
const value = draft[control.key];
|
|
3813
|
+
const locked = Boolean(control.disabled) || control.enabledBy && draft[control.enabledBy] !== true;
|
|
3814
|
+
const disabled = Boolean(locked);
|
|
3815
|
+
const info = control.info ? html`<span class="info" title=${control.info} role="img" aria-label=${control.info}>i</span>` : "";
|
|
3816
|
+
const label = html`<span class="label">${control.label}${info}</span>`;
|
|
3817
|
+
let body;
|
|
3818
|
+
if (control.kind === "toggle")
|
|
3819
|
+
body = html`${label}<input
|
|
3820
|
+
type="checkbox"
|
|
3821
|
+
.checked=${value === true}
|
|
3822
|
+
?disabled=${disabled}
|
|
3823
|
+
@change=${(event) => host.set(control.key, event.target.checked)}
|
|
3824
|
+
/>`;
|
|
3825
|
+
else if (control.kind === "select") {
|
|
3826
|
+
const current = String(value ?? control.choices[0]?.value ?? "");
|
|
3827
|
+
body = html`${label}<select
|
|
3828
|
+
aria-label=${control.label}
|
|
3829
|
+
?disabled=${disabled}
|
|
3830
|
+
@change=${(event) => host.set(control.key, event.target.value)}
|
|
3831
|
+
>
|
|
3832
|
+
${control.choices.map(
|
|
3833
|
+
(choice) => html`<option value=${choice.value} .selected=${choice.value === current}
|
|
3834
|
+
>${choice.label}</option
|
|
3835
|
+
>`
|
|
3836
|
+
)}
|
|
3837
|
+
</select>`;
|
|
3838
|
+
} else if (control.kind === "number")
|
|
3839
|
+
body = html`${label}<span class="number"
|
|
3840
|
+
><input
|
|
3841
|
+
type="number"
|
|
3842
|
+
min=${control.min}
|
|
3843
|
+
max=${control.max}
|
|
3844
|
+
step=${ifDefined(control.step ? String(control.step) : void 0)}
|
|
3845
|
+
aria-label=${control.label}
|
|
3846
|
+
.value=${value === void 0 ? "" : String(value)}
|
|
3847
|
+
?disabled=${disabled}
|
|
3848
|
+
@change=${(event) => {
|
|
3849
|
+
const field = event.target;
|
|
3850
|
+
const next = clampOptionNumber(field.value, control.min, control.max);
|
|
3851
|
+
if (next === void 0) field.value = String(draft[control.key] ?? "");
|
|
3852
|
+
else {
|
|
3853
|
+
field.value = String(next);
|
|
3854
|
+
host.set(control.key, next);
|
|
3855
|
+
}
|
|
3856
|
+
}}
|
|
3857
|
+
/>${control.unit ? html`<span class="unit">${control.unit}</span>` : ""}</span
|
|
3858
|
+
>`;
|
|
3859
|
+
else
|
|
3860
|
+
body = html`${label}<input
|
|
3861
|
+
type="text"
|
|
3862
|
+
maxlength=${ifDefined(control.maxLength ? String(control.maxLength) : void 0)}
|
|
3863
|
+
aria-label=${control.label}
|
|
3864
|
+
.value=${value === void 0 ? "" : String(value)}
|
|
3865
|
+
?disabled=${disabled}
|
|
3866
|
+
@input=${(event) => host.set(control.key, event.target.value)}
|
|
3867
|
+
/>`;
|
|
3868
|
+
return html`<label
|
|
3869
|
+
class="row${control.indent ? " indent" : ""}"
|
|
3870
|
+
data-key=${control.key}
|
|
3871
|
+
?data-disabled=${disabled}
|
|
3872
|
+
title=${ifDefined(control.disabled)}
|
|
3873
|
+
>${body}</label
|
|
3874
|
+
>`;
|
|
3875
|
+
}
|
|
3876
|
+
|
|
3877
|
+
// raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/dialog/options-dialog.css?raw
|
|
3878
|
+
var options_dialog_default = ":host {\n display: contents;\n}\noffice-ui-dialog {\n --office-dialog-width: var(--office-options-width);\n --office-dialog-max-width: var(--office-options-width);\n --office-dialog-max-height: 88vh;\n}\n.custom {\n max-height: calc(88vh - var(--office-options-chrome-height));\n overflow: auto;\n font-size: var(--office-font-size-sm);\n}\n.layout {\n display: grid;\n grid-template-columns: var(--office-options-nav-width) minmax(0, 1fr);\n height: var(--office-options-height);\n max-height: calc(88vh - var(--office-options-chrome-height));\n margin: calc(-1 * var(--office-space-4));\n font-size: var(--office-font-size-sm);\n}\nnav {\n display: flex;\n flex-direction: column;\n gap: var(--office-space-0);\n padding: var(--office-space-2);\n border-inline-end: var(--office-border-width) solid var(--office-border);\n overflow: auto;\n}\nnav button {\n padding: var(--office-space-2) var(--office-space-2-5);\n border: 0;\n border-radius: var(--office-radius);\n background: transparent;\n color: inherit;\n font: inherit;\n text-align: start;\n white-space: nowrap;\n cursor: pointer;\n}\nnav button:hover {\n background: var(--office-selected);\n}\nnav button[aria-selected='true'] {\n background: color-mix(in srgb, var(--office-accent) 14%, transparent);\n color: var(--office-accent);\n font-weight: 600;\n}\nnav button:focus-visible {\n outline: var(--office-focus-width) solid var(--office-ring);\n outline-offset: calc(-1 * var(--office-focus-width));\n}\n[role='tabpanel'] {\n min-width: 0;\n padding: var(--office-space-3-5) var(--office-space-5);\n overflow: auto;\n}\n.lead {\n margin: 0 0 var(--office-space-3);\n font-weight: 600;\n}\n.unavailable {\n margin: 0 0 var(--office-space-3);\n color: var(--office-muted-foreground);\n}\nsection {\n margin: 0 0 var(--office-space-4);\n}\nh3 {\n margin: 0 0 var(--office-space-1);\n padding-bottom: var(--office-space-0);\n border-bottom: var(--office-border-width) solid var(--office-border);\n color: var(--office-muted-foreground);\n font-size: var(--office-font-size-2xs);\n font-weight: 700;\n letter-spacing: 0.04em;\n text-transform: uppercase;\n}\n.desc {\n margin: 0 0 var(--office-space-2);\n color: var(--office-muted-foreground);\n font-size: var(--office-font-size-xs);\n}\n.row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--office-space-3);\n min-height: var(--office-options-row-height);\n padding: var(--office-space-0) 0;\n cursor: pointer;\n}\n.row.indent {\n padding-inline-start: var(--office-space-6);\n}\n.row[data-disabled] {\n color: var(--office-muted-foreground);\n cursor: default;\n}\n.label {\n display: inline-flex;\n align-items: center;\n gap: var(--office-space-1);\n min-width: 0;\n}\ninput[type='text'],\ninput[type='number'],\nselect {\n box-sizing: border-box;\n max-width: 55%;\n padding: var(--office-space-1) var(--office-space-1-5);\n border: var(--office-border-width) solid var(--office-field-border);\n border-radius: var(--office-field-radius);\n background: var(--office-field-background);\n color: var(--office-field-foreground);\n font: inherit;\n}\ninput[type='text']:focus-visible,\ninput[type='number']:focus-visible,\nselect:focus-visible {\n border-color: var(--office-field-border-focus);\n outline: var(--office-focus-width) solid var(--office-ring);\n outline-offset: calc(-1 * var(--office-focus-width));\n}\ninput[type='text'] {\n width: var(--office-options-text-width);\n}\ninput[type='number'] {\n width: var(--office-options-number-width);\n text-align: end;\n}\ninput:disabled,\nselect:disabled {\n opacity: 0.55;\n}\ninput[type='checkbox'] {\n flex: none;\n width: var(--office-options-check-size);\n height: var(--office-options-check-size);\n margin: 0;\n appearance: none;\n display: inline-grid;\n place-content: center;\n box-sizing: border-box;\n border: var(--office-border-width) solid var(--office-checkbox-border);\n border-radius: var(--office-checkbox-radius);\n background: var(--office-checkbox-background);\n cursor: inherit;\n}\ninput[type='checkbox']:checked {\n border-color: var(--office-checkbox-accent);\n background: var(--office-checkbox-accent);\n}\ninput[type='checkbox']:checked::after {\n content: '';\n width: calc(var(--office-options-check-size) * 0.7);\n height: calc(var(--office-options-check-size) * 0.7);\n background: var(--office-checkbox-accent-foreground);\n clip-path: polygon(14% 52%, 0 66%, 38% 100%, 100% 22%, 86% 8%, 38% 72%);\n}\ninput[type='checkbox']:focus-visible {\n outline: var(--office-focus-width) solid var(--office-ring);\n outline-offset: var(--office-focus-offset);\n}\n@media (forced-colors: active) {\n input[type='checkbox']:checked {\n background: Highlight;\n }\n input[type='checkbox']:checked::after {\n background: HighlightText;\n }\n}\n.number {\n display: inline-flex;\n align-items: center;\n gap: var(--office-space-1-5);\n}\n.unit {\n color: var(--office-muted-foreground);\n font-size: var(--office-font-size-xs);\n}\n.info {\n display: inline-grid;\n place-items: center;\n flex: none;\n width: var(--office-info-size);\n height: var(--office-info-size);\n border: var(--office-border-width) solid currentColor;\n border-radius: 50%;\n font-size: var(--office-font-size-3xs);\n font-style: normal;\n color: var(--office-accent);\n opacity: 0.75;\n cursor: help;\n}\n.actions {\n display: flex;\n flex: 1;\n justify-content: flex-end;\n gap: var(--office-space-2);\n}\n.actions button {\n min-width: var(--office-dialog-button-min-width);\n min-height: var(--office-control-height-md);\n padding: 0 var(--office-space-3);\n border: var(--office-border-width) solid var(--office-border);\n border-radius: var(--office-radius);\n background: var(--office-surface);\n color: inherit;\n font: inherit;\n font-size: var(--office-font-size-sm);\n cursor: pointer;\n}\n.actions button:hover {\n background: var(--office-selected);\n}\n.actions .primary {\n border-color: var(--office-accent);\n background: var(--office-accent);\n color: var(--office-accent-foreground);\n}\n.actions .primary:hover {\n background: var(--office-accent);\n filter: brightness(1.08);\n}\n@media (max-width: 767px) {\n .layout {\n grid-template-columns: minmax(0, 1fr);\n grid-template-rows: auto minmax(0, 1fr);\n }\n nav {\n flex-direction: row;\n border-inline-end: 0;\n border-bottom: var(--office-border-width) solid var(--office-border);\n }\n nav button,\n .actions button {\n min-height: var(--office-target-size-touch);\n }\n .row {\n min-height: var(--office-target-size-touch);\n }\n input[type='text'],\n input[type='number'],\n select {\n min-height: var(--office-target-size-touch);\n }\n .actions {\n flex-wrap: wrap;\n }\n}\n@media (forced-colors: active) {\n nav button[aria-selected='true'] {\n outline: var(--office-border-width) solid Highlight;\n }\n}\n";
|
|
3879
|
+
|
|
3880
|
+
// src/dialog/options-dialog.ts
|
|
3881
|
+
var DEFAULT_LABELS = {
|
|
3882
|
+
ok: "OK",
|
|
3883
|
+
cancel: "Cancel",
|
|
3884
|
+
reset: "Reset all options",
|
|
3885
|
+
categories: "Categories",
|
|
3886
|
+
close: "Close"
|
|
3887
|
+
};
|
|
3784
3888
|
var OfficeUiOptionsDialog = class extends OfficeElement {
|
|
3785
3889
|
static styles = controlStyles(options_dialog_default);
|
|
3786
3890
|
static properties = {
|
|
3787
3891
|
open: flag,
|
|
3892
|
+
live: flag,
|
|
3893
|
+
customBody: { ...flag, attribute: "custom-body" },
|
|
3788
3894
|
heading: { type: String },
|
|
3789
3895
|
categories: { attribute: false },
|
|
3896
|
+
defaults: { attribute: false },
|
|
3897
|
+
labels: { attribute: false },
|
|
3790
3898
|
// `values` keeps a private copy and `category` validates its id, so both have accessors.
|
|
3791
3899
|
active: { state: true }
|
|
3792
3900
|
};
|
|
3793
3901
|
committed = {};
|
|
3794
|
-
|
|
3902
|
+
draftValues = {};
|
|
3795
3903
|
constructor() {
|
|
3796
3904
|
super();
|
|
3797
3905
|
this.open = false;
|
|
3906
|
+
this.live = false;
|
|
3907
|
+
this.customBody = false;
|
|
3798
3908
|
this.heading = null;
|
|
3799
3909
|
this.categories = [];
|
|
3910
|
+
this.defaults = null;
|
|
3911
|
+
this.labels = {};
|
|
3800
3912
|
this.active = "";
|
|
3801
3913
|
}
|
|
3914
|
+
get draft() {
|
|
3915
|
+
return this.draftValues;
|
|
3916
|
+
}
|
|
3802
3917
|
get values() {
|
|
3803
3918
|
return { ...this.committed };
|
|
3804
3919
|
}
|
|
3805
3920
|
set values(value) {
|
|
3806
3921
|
this.committed = { ...value };
|
|
3807
|
-
if (!present(this.open)) this.
|
|
3922
|
+
if (!present(this.open) || present(this.live)) this.draftValues = { ...value };
|
|
3808
3923
|
this.requestUpdate("values");
|
|
3809
3924
|
}
|
|
3810
3925
|
/** The selected category id. */
|
|
@@ -3817,16 +3932,33 @@ var OfficeUiOptionsDialog = class extends OfficeElement {
|
|
|
3817
3932
|
show() {
|
|
3818
3933
|
this.open = true;
|
|
3819
3934
|
}
|
|
3935
|
+
/** Closes without applying: the draft is dropped and `office-options-cancel` is emitted. */
|
|
3820
3936
|
close() {
|
|
3937
|
+
const wasOpen = present(this.open);
|
|
3821
3938
|
this.open = false;
|
|
3939
|
+
if (wasOpen) this.fire("office-options-cancel", {});
|
|
3822
3940
|
}
|
|
3823
3941
|
commit() {
|
|
3824
|
-
const changed = Object.keys(this.
|
|
3825
|
-
(key) => this.
|
|
3942
|
+
const changed = Object.keys(this.draftValues).filter(
|
|
3943
|
+
(key) => this.draftValues[key] !== this.committed[key]
|
|
3826
3944
|
);
|
|
3827
|
-
this.committed = { ...this.
|
|
3945
|
+
this.committed = { ...this.draftValues };
|
|
3828
3946
|
this.fire("office-options-change", { values: { ...this.committed }, changed });
|
|
3829
|
-
this.
|
|
3947
|
+
this.open = false;
|
|
3948
|
+
}
|
|
3949
|
+
resetAll() {
|
|
3950
|
+
if (present(this.live)) {
|
|
3951
|
+
this.fire("office-options-reset", {});
|
|
3952
|
+
return;
|
|
3953
|
+
}
|
|
3954
|
+
this.draftValues = { ...this.draftValues, ...this.defaults };
|
|
3955
|
+
this.requestUpdate();
|
|
3956
|
+
}
|
|
3957
|
+
/** Panes the product slots in sit outside the dialog's own focus trap: let Tab walk through them. */
|
|
3958
|
+
onPaneKey(event) {
|
|
3959
|
+
if (event.key !== "Tab") return;
|
|
3960
|
+
const origin = event.composedPath()[0];
|
|
3961
|
+
if (origin instanceof Node && !this.renderRoot.contains(origin)) event.stopPropagation();
|
|
3830
3962
|
}
|
|
3831
3963
|
onNavKey(event) {
|
|
3832
3964
|
const tabs = [...this.renderRoot.querySelectorAll('nav [role="tab"]')];
|
|
@@ -3838,76 +3970,37 @@ var OfficeUiOptionsDialog = class extends OfficeElement {
|
|
|
3838
3970
|
this.category = target.dataset.category;
|
|
3839
3971
|
this.renderRoot.querySelector('nav [aria-selected="true"]')?.focus();
|
|
3840
3972
|
}
|
|
3973
|
+
/** Native controls and popups follow the theme: dark when `--office-background` is dark. */
|
|
3974
|
+
syncColorScheme() {
|
|
3975
|
+
const probe = this.ownerDocument.createElement("span");
|
|
3976
|
+
probe.style.cssText = "display:none;background-color:var(--office-background)";
|
|
3977
|
+
this.renderRoot.append(probe);
|
|
3978
|
+
const match = /\d+(\.\d+)?/g;
|
|
3979
|
+
let background = "";
|
|
3980
|
+
try {
|
|
3981
|
+
background = getComputedStyle(probe).backgroundColor;
|
|
3982
|
+
} catch {
|
|
3983
|
+
}
|
|
3984
|
+
probe.remove();
|
|
3985
|
+
if (!background) return;
|
|
3986
|
+
const [r = 255, g = 255, b = 255] = (background.match(match) ?? []).slice(0, 3).map(Number);
|
|
3987
|
+
this.style.colorScheme = 0.2126 * r + 0.7152 * g + 0.0722 * b < 128 ? "dark" : "light";
|
|
3988
|
+
}
|
|
3989
|
+
updated(changed) {
|
|
3990
|
+
if (changed.has("open") && present(this.open)) this.syncColorScheme();
|
|
3991
|
+
if (changed.has("active") && this.active)
|
|
3992
|
+
this.fire("office-options-category", { id: this.active });
|
|
3993
|
+
}
|
|
3841
3994
|
willUpdate(changed) {
|
|
3842
3995
|
if (!this.categories.some((category) => category.id === this.active))
|
|
3843
3996
|
this.active = this.categories[0]?.id ?? "";
|
|
3844
|
-
if (changed.has("open") && present(this.open)) this.
|
|
3997
|
+
if (changed.has("open") && present(this.open)) this.draftValues = { ...this.committed };
|
|
3845
3998
|
}
|
|
3846
3999
|
set(key, next) {
|
|
3847
|
-
this.
|
|
3848
|
-
|
|
3849
|
-
|
|
3850
|
-
|
|
3851
|
-
const disabled = Boolean(control.disabled);
|
|
3852
|
-
const info = control.info ? html`<span class="info" title=${control.info} role="img" aria-label=${control.info}
|
|
3853
|
-
>i</span
|
|
3854
|
-
>` : "";
|
|
3855
|
-
let body;
|
|
3856
|
-
if (control.kind === "toggle")
|
|
3857
|
-
body = html`<input
|
|
3858
|
-
type="checkbox"
|
|
3859
|
-
.checked=${value === true}
|
|
3860
|
-
?disabled=${disabled}
|
|
3861
|
-
@change=${(event) => this.set(control.key, event.target.checked)}
|
|
3862
|
-
/><span>${control.label}</span>`;
|
|
3863
|
-
else if (control.kind === "select") {
|
|
3864
|
-
const current = String(value ?? control.choices[0]?.value ?? "");
|
|
3865
|
-
body = html`<span>${control.label}</span
|
|
3866
|
-
><select
|
|
3867
|
-
?disabled=${disabled}
|
|
3868
|
-
@change=${(event) => this.set(control.key, event.target.value)}
|
|
3869
|
-
>
|
|
3870
|
-
${control.choices.map(
|
|
3871
|
-
(choice) => html`<option value=${choice.value} ?selected=${choice.value === current}
|
|
3872
|
-
>${choice.label}</option
|
|
3873
|
-
>`
|
|
3874
|
-
)}
|
|
3875
|
-
</select>`;
|
|
3876
|
-
} else if (control.kind === "number")
|
|
3877
|
-
body = html`<span>${control.label}</span
|
|
3878
|
-
><input
|
|
3879
|
-
type="number"
|
|
3880
|
-
min=${control.min}
|
|
3881
|
-
max=${control.max}
|
|
3882
|
-
step=${ifDefined(control.step ? String(control.step) : void 0)}
|
|
3883
|
-
.value=${value === void 0 ? "" : String(value)}
|
|
3884
|
-
?disabled=${disabled}
|
|
3885
|
-
@change=${(event) => {
|
|
3886
|
-
const field = event.target;
|
|
3887
|
-
const next = clampOptionNumber(field.value, control.min, control.max);
|
|
3888
|
-
if (next === void 0) field.value = String(this.draft[control.key] ?? "");
|
|
3889
|
-
else {
|
|
3890
|
-
field.value = String(next);
|
|
3891
|
-
this.set(control.key, next);
|
|
3892
|
-
}
|
|
3893
|
-
}}
|
|
3894
|
-
/>${control.unit ? html`<span>${control.unit}</span>` : ""}`;
|
|
3895
|
-
else
|
|
3896
|
-
body = html`<span>${control.label}</span
|
|
3897
|
-
><input
|
|
3898
|
-
type="text"
|
|
3899
|
-
maxlength=${ifDefined(control.maxLength ? String(control.maxLength) : void 0)}
|
|
3900
|
-
.value=${value === void 0 ? "" : String(value)}
|
|
3901
|
-
?disabled=${disabled}
|
|
3902
|
-
@input=${(event) => this.set(control.key, event.target.value)}
|
|
3903
|
-
/>`;
|
|
3904
|
-
return html`<label
|
|
3905
|
-
class="row${control.indent ? " indent" : ""}${control.kind === "toggle" ? "" : " field"}"
|
|
3906
|
-
data-key=${control.key}
|
|
3907
|
-
?data-disabled=${disabled}
|
|
3908
|
-
title=${ifDefined(control.disabled)}
|
|
3909
|
-
>${body}${info}</label
|
|
3910
|
-
>`;
|
|
4000
|
+
this.draftValues[key] = next;
|
|
4001
|
+
if (present(this.live)) this.committed[key] = next;
|
|
4002
|
+
this.fire("office-option-input", { key, value: next });
|
|
4003
|
+
this.requestUpdate();
|
|
3911
4004
|
}
|
|
3912
4005
|
pane(category) {
|
|
3913
4006
|
if (!category) return "";
|
|
@@ -3918,54 +4011,71 @@ var OfficeUiOptionsDialog = class extends OfficeElement {
|
|
|
3918
4011
|
(section) => html`<section>
|
|
3919
4012
|
<h3>${section.title}</h3>
|
|
3920
4013
|
${section.description ? html`<p class="desc">${section.description}</p>` : ""}
|
|
3921
|
-
${section.controls.map((control) => this
|
|
4014
|
+
${section.controls.map((control) => optionRow(this, control))}
|
|
4015
|
+
${section.slot ? html`<slot name=${section.slot}></slot>` : ""}
|
|
3922
4016
|
</section>`
|
|
3923
4017
|
)}
|
|
4018
|
+
${category.custom ? html`<slot name="pane-${category.id}"></slot>` : ""}
|
|
3924
4019
|
`;
|
|
3925
4020
|
}
|
|
3926
4021
|
render() {
|
|
3927
4022
|
const category = this.categories.find((entry) => entry.id === this.active);
|
|
4023
|
+
const text = { ...DEFAULT_LABELS, ...this.labels };
|
|
3928
4024
|
return html`
|
|
3929
4025
|
<office-ui-dialog
|
|
3930
4026
|
heading=${this.heading ?? "Options"}
|
|
4027
|
+
close-label=${text.close}
|
|
3931
4028
|
?open=${present(this.open)}
|
|
3932
4029
|
@office-dialog-close=${(event) => {
|
|
3933
|
-
if (
|
|
4030
|
+
if (event.defaultPrevented) return;
|
|
4031
|
+
if (present(this.live)) this.commit();
|
|
4032
|
+
else this.close();
|
|
3934
4033
|
}}
|
|
3935
4034
|
>
|
|
3936
|
-
|
|
3937
|
-
|
|
3938
|
-
|
|
3939
|
-
|
|
3940
|
-
|
|
3941
|
-
|
|
3942
|
-
|
|
3943
|
-
|
|
4035
|
+
${present(this.customBody) ? html`<div class="custom" @keydown=${this.onPaneKey}><slot name="body"></slot></div>` : this.layout(category, text)}
|
|
4036
|
+
</office-ui-dialog>
|
|
4037
|
+
`;
|
|
4038
|
+
}
|
|
4039
|
+
layout(category, text) {
|
|
4040
|
+
return html`
|
|
4041
|
+
<div class="layout">
|
|
4042
|
+
<nav
|
|
4043
|
+
role="tablist"
|
|
4044
|
+
aria-orientation="vertical"
|
|
4045
|
+
aria-label=${text.categories}
|
|
4046
|
+
@keydown=${this.onNavKey}
|
|
4047
|
+
>
|
|
4048
|
+
${this.categories.map(
|
|
3944
4049
|
(entry) => html`<button
|
|
3945
|
-
|
|
3946
|
-
|
|
3947
|
-
|
|
3948
|
-
|
|
3949
|
-
|
|
3950
|
-
|
|
3951
|
-
|
|
3952
|
-
|
|
3953
|
-
|
|
3954
|
-
|
|
4050
|
+
type="button"
|
|
4051
|
+
role="tab"
|
|
4052
|
+
id="tab-${entry.id}"
|
|
4053
|
+
data-category=${entry.id}
|
|
4054
|
+
aria-controls="pane"
|
|
4055
|
+
aria-selected=${String(entry.id === this.active)}
|
|
4056
|
+
tabindex=${entry.id === this.active ? 0 : -1}
|
|
4057
|
+
@click=${() => this.category = entry.id}
|
|
4058
|
+
>${entry.label}</button
|
|
4059
|
+
>`
|
|
3955
4060
|
)}
|
|
3956
|
-
|
|
3957
|
-
|
|
3958
|
-
|
|
3959
|
-
|
|
3960
|
-
|
|
3961
|
-
|
|
3962
|
-
|
|
3963
|
-
|
|
3964
|
-
|
|
3965
|
-
|
|
3966
|
-
|
|
3967
|
-
|
|
3968
|
-
|
|
4061
|
+
</nav>
|
|
4062
|
+
<div
|
|
4063
|
+
role="tabpanel"
|
|
4064
|
+
id="pane"
|
|
4065
|
+
@keydown=${this.onPaneKey}
|
|
4066
|
+
aria-labelledby=${ifDefined(category ? `tab-${category.id}` : void 0)}
|
|
4067
|
+
>${this.pane(category)}</div
|
|
4068
|
+
>
|
|
4069
|
+
</div>
|
|
4070
|
+
<div slot="footer" class="actions">
|
|
4071
|
+
${this.defaults ? html`<button type="button" class="reset" data-action="reset" @click=${this.resetAll}>
|
|
4072
|
+
${text.reset}
|
|
4073
|
+
</button>` : ""}
|
|
4074
|
+
<button type="button" data-action="cancel" @click=${this.close}>${text.cancel}</button>
|
|
4075
|
+
<button type="button" class="primary" data-action="ok" @click=${this.commit}>
|
|
4076
|
+
${text.ok}
|
|
4077
|
+
</button>
|
|
4078
|
+
</div>
|
|
3969
4079
|
`;
|
|
3970
4080
|
}
|
|
3971
4081
|
};
|
|
@@ -4430,7 +4540,7 @@ var OfficeUiSelect = class extends OfficeElement {
|
|
|
4430
4540
|
var defineSelect = definer("office-ui-select", () => OfficeUiSelect);
|
|
4431
4541
|
|
|
4432
4542
|
// raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/chrome/status-bar.css?raw
|
|
4433
|
-
var status_bar_default = ":host {\n display: flex;\n align-items: center;\n gap: var(--office-space-3);\n min-height: var(--office-status-bar-height);\n padding: 0 var(--office-space-2);\n font-size: var(--office-font-size-xs);\n background: var(--office-surface);\n color: var(--office-foreground);\n border-top: var(--office-border-width) solid var(--office-border);\n font-family: var(--office-font);\n}\n::slotted([slot='end']) {\n margin-inline-start: auto;\n}\n.bar {\n display: contents;\n}\n[hidden] {\n display: none !important;\n}\n:host([data-controlled]) {\n display: block;\n flex: none;\n padding: 0;\n gap: 0;\n}\n:host([data-controlled]) .bar {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: var(--office-space-1);\n width: 100%;\n min-height: var(--office-status-bar-height);\n padding: var(--office-space-0) var(--office-space-2);\n color: var(--office-muted-foreground);\n}\n:host([data-controlled]) ::slotted([slot='end']) {\n margin-inline-start: 0;\n}\n.items {\n display: flex;\n align-items: center;\n min-width: 0;\n}\n.item {\n flex:
|
|
4543
|
+
var status_bar_default = ":host {\n display: flex;\n align-items: center;\n gap: var(--office-space-3);\n min-height: var(--office-status-bar-height);\n padding: 0 var(--office-space-2);\n font-size: var(--office-font-size-xs);\n background: var(--office-surface);\n color: var(--office-foreground);\n border-top: var(--office-border-width) solid var(--office-border);\n font-family: var(--office-font);\n}\n::slotted([slot='end']) {\n margin-inline-start: auto;\n}\n.bar {\n display: contents;\n}\n[hidden] {\n display: none !important;\n}\n:host([data-controlled]) {\n display: block;\n flex: none;\n padding: 0;\n gap: 0;\n}\n:host([data-controlled]) .bar {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: var(--office-space-1);\n width: 100%;\n min-height: var(--office-status-bar-height);\n padding: var(--office-space-0) var(--office-space-2);\n color: var(--office-muted-foreground);\n}\n:host([data-controlled]) ::slotted([slot='end']) {\n margin-inline-start: 0;\n}\n.items {\n display: flex;\n flex: 0 1 auto;\n align-items: center;\n min-width: 0;\n overflow: hidden;\n}\n.item {\n flex: 0 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n/* The page counter is the one text that stays whole. */\n.item[aria-live] {\n flex: none;\n}\n.item + .item::before {\n content: '';\n display: inline-block;\n width: var(--office-border-width);\n height: var(--office-space-3);\n margin: 0 var(--office-space-2);\n vertical-align: middle;\n background: var(--office-border);\n opacity: var(--office-status-bar-separator-opacity);\n}\n.item.saving {\n color: var(--office-warning);\n}\n.item.error {\n color: var(--office-danger);\n}\n.spacer {\n flex: 1;\n}\n.toggles,\n.group {\n display: flex;\n align-items: center;\n gap: var(--office-space-0);\n}\n.sep {\n flex: none;\n width: var(--office-border-width);\n height: var(--office-space-3);\n margin: 0 var(--office-space-0);\n background: var(--office-border);\n opacity: var(--office-status-bar-separator-opacity);\n}\n.bar button {\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--office-space-1);\n min-width: var(--office-control-height-xs);\n min-height: var(--office-control-height-xs);\n padding: var(--office-space-1);\n border: 0;\n border-radius: var(--office-radius-sm);\n background: transparent;\n color: inherit;\n font: inherit;\n cursor: pointer;\n touch-action: manipulation;\n}\n.bar button:hover {\n background: var(--office-selected);\n color: var(--office-foreground);\n}\n.bar button[aria-pressed='true'] {\n color: var(--office-accent);\n}\n.bar button:active {\n opacity: 0.8;\n}\n.bar button:focus-visible {\n outline: var(--office-focus-width) solid var(--office-ring);\n outline-offset: var(--office-focus-offset);\n}\n.bar svg {\n flex: none;\n width: var(--office-icon-size);\n height: var(--office-icon-size);\n fill: none;\n stroke: currentColor;\n stroke-width: var(--office-icon-stroke);\n stroke-linecap: round;\n stroke-linejoin: round;\n}\n.toggle svg,\n.zoom-step svg {\n width: var(--office-icon-size-sm);\n height: var(--office-icon-size-sm);\n}\n.zoom-fit {\n min-width: var(--office-zoom-value-width);\n font-variant-numeric: tabular-nums;\n}\n@media (max-width: 767px) {\n .narrow-hide,\n .toggle .label {\n display: none !important;\n }\n}\n@media (pointer: coarse) {\n .bar button {\n min-width: var(--office-touch-target, 44px);\n min-height: var(--office-touch-target, 44px);\n }\n}\n@media (forced-colors: active) {\n :host {\n background: Canvas;\n color: CanvasText;\n border-top-color: CanvasText;\n }\n .bar button {\n color: ButtonText;\n }\n .bar button:hover {\n background: Highlight;\n color: HighlightText;\n }\n .bar button[aria-pressed='true'] {\n border: var(--office-border-width) solid Highlight;\n }\n .bar button:focus-visible {\n outline-color: Highlight;\n }\n .sep,\n .item + .item::before {\n background: CanvasText;\n }\n}\n";
|
|
4434
4544
|
|
|
4435
4545
|
// src/chrome/status-bar.ts
|
|
4436
4546
|
var OfficeUiStatusBar = class extends OfficeElement {
|
|
@@ -5958,6 +6068,43 @@ function runKeyTips(root, targets, onDone, className) {
|
|
|
5958
6068
|
return stop;
|
|
5959
6069
|
}
|
|
5960
6070
|
|
|
6071
|
+
// 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";
|
|
6073
|
+
|
|
6074
|
+
// src/ribbon/scroll-more.ts
|
|
6075
|
+
var STYLE_ID = "office-ui-ribbon-touch-style";
|
|
6076
|
+
var CLASS = "ribbon-scroll-more";
|
|
6077
|
+
function ensureRibbonTouchStyle(node) {
|
|
6078
|
+
const root = node.getRootNode();
|
|
6079
|
+
const doc = node.ownerDocument ?? node;
|
|
6080
|
+
const host = root instanceof ShadowRoot ? root : doc.head;
|
|
6081
|
+
if (!host || host.querySelector(`#${STYLE_ID}`)) return;
|
|
6082
|
+
const style = doc.createElement("style");
|
|
6083
|
+
style.id = STYLE_ID;
|
|
6084
|
+
style.textContent = scroll_more_default;
|
|
6085
|
+
host.append(style);
|
|
6086
|
+
}
|
|
6087
|
+
function syncScrollMore(panel, label = "More") {
|
|
6088
|
+
panel.querySelector(`:scope > .${CLASS}`)?.remove();
|
|
6089
|
+
if (panel.hidden || panel.scrollWidth <= panel.clientWidth + 1) return;
|
|
6090
|
+
ensureRibbonTouchStyle(panel);
|
|
6091
|
+
const doc = panel.ownerDocument;
|
|
6092
|
+
const text = typeof label === "function" ? label(panel) : label;
|
|
6093
|
+
const button = doc.createElement("button");
|
|
6094
|
+
button.type = "button";
|
|
6095
|
+
button.className = CLASS;
|
|
6096
|
+
button.setAttribute("aria-label", text);
|
|
6097
|
+
button.title = text;
|
|
6098
|
+
button.textContent = "\u203A";
|
|
6099
|
+
button.addEventListener("mousedown", (event) => event.preventDefault());
|
|
6100
|
+
button.addEventListener("click", () => {
|
|
6101
|
+
const end = panel.scrollWidth - panel.clientWidth - 2;
|
|
6102
|
+
const left = panel.scrollLeft >= end ? 0 : panel.scrollLeft + panel.clientWidth * 0.8;
|
|
6103
|
+
panel.scrollTo({ left, behavior: "smooth" });
|
|
6104
|
+
});
|
|
6105
|
+
panel.append(button);
|
|
6106
|
+
}
|
|
6107
|
+
|
|
5961
6108
|
// src/ribbon/overflow.ts
|
|
5962
6109
|
function createRibbonOverflow(options) {
|
|
5963
6110
|
let closeOpen;
|
|
@@ -6043,6 +6190,8 @@ function createRibbonOverflow(options) {
|
|
|
6043
6190
|
}
|
|
6044
6191
|
function fitPanel(panel) {
|
|
6045
6192
|
if (panel.hidden || !panel.clientWidth) return;
|
|
6193
|
+
ensureRibbonTouchStyle(panel);
|
|
6194
|
+
panel.querySelector(":scope > .ribbon-scroll-more")?.remove();
|
|
6046
6195
|
if (closeOpen && panel.dataset.fittedWidth === String(panel.clientWidth)) return;
|
|
6047
6196
|
panel.dataset.fittedWidth = String(panel.clientWidth);
|
|
6048
6197
|
closeOpen?.();
|
|
@@ -6069,6 +6218,7 @@ function createRibbonOverflow(options) {
|
|
|
6069
6218
|
button.title = label;
|
|
6070
6219
|
group.setAttribute("data-collapsed", "");
|
|
6071
6220
|
}
|
|
6221
|
+
syncScrollMore(panel, options.moreLabel);
|
|
6072
6222
|
}
|
|
6073
6223
|
const panelsOf2 = (root) => root.querySelectorAll(".ribbon-panel");
|
|
6074
6224
|
return {
|
|
@@ -6080,7 +6230,32 @@ function createRibbonOverflow(options) {
|
|
|
6080
6230
|
for (const entry of entries) fitPanel(entry.target);
|
|
6081
6231
|
});
|
|
6082
6232
|
for (const panel of panelsOf2(root)) observer.observe(panel);
|
|
6083
|
-
|
|
6233
|
+
let frame = 0;
|
|
6234
|
+
const mutations = new MutationObserver(() => {
|
|
6235
|
+
if (frame) return;
|
|
6236
|
+
frame = requestAnimationFrame(() => {
|
|
6237
|
+
frame = 0;
|
|
6238
|
+
refitVisible();
|
|
6239
|
+
mutations.takeRecords();
|
|
6240
|
+
});
|
|
6241
|
+
});
|
|
6242
|
+
const refitVisible = () => {
|
|
6243
|
+
for (const panel of panelsOf2(root)) {
|
|
6244
|
+
if (panel.hidden || panel.querySelector('[aria-expanded="true"].ribbon-overflow-button'))
|
|
6245
|
+
continue;
|
|
6246
|
+
const more = panel.querySelector(":scope > .ribbon-scroll-more");
|
|
6247
|
+
const clipped = panel.scrollWidth - (more?.offsetWidth ?? 0) > panel.clientWidth + 1;
|
|
6248
|
+
const unfolded = panel.querySelector(":scope > .ribbon-group:not([data-collapsed])");
|
|
6249
|
+
if (clipped && unfolded) fitPanel(panel);
|
|
6250
|
+
}
|
|
6251
|
+
};
|
|
6252
|
+
for (const panel of panelsOf2(root))
|
|
6253
|
+
mutations.observe(panel, { childList: true, subtree: true });
|
|
6254
|
+
return () => {
|
|
6255
|
+
observer.disconnect();
|
|
6256
|
+
mutations.disconnect();
|
|
6257
|
+
if (frame) cancelAnimationFrame(frame);
|
|
6258
|
+
};
|
|
6084
6259
|
},
|
|
6085
6260
|
refit(root) {
|
|
6086
6261
|
for (const panel of panelsOf2(root)) fitPanel(panel);
|
|
@@ -6104,6 +6279,7 @@ function fitRibbonGroups(panel, options = {}) {
|
|
|
6104
6279
|
group.removeAttribute("data-open");
|
|
6105
6280
|
group.removeAttribute("data-collapsed");
|
|
6106
6281
|
}
|
|
6282
|
+
panel.querySelector(":scope > .ribbon-scroll-more")?.remove();
|
|
6107
6283
|
const width = panel.ownerDocument.defaultView?.innerWidth ?? Number.POSITIVE_INFINITY;
|
|
6108
6284
|
if (panel.hidden || width < (options.minWidth ?? 0)) return [];
|
|
6109
6285
|
const overflows = () => panel.scrollWidth - panel.clientWidth > 1;
|
|
@@ -6116,6 +6292,7 @@ function fitRibbonGroups(panel, options = {}) {
|
|
|
6116
6292
|
collapsed.push(group.getAttribute("label") ?? "");
|
|
6117
6293
|
if (!overflows()) break;
|
|
6118
6294
|
}
|
|
6295
|
+
syncScrollMore(panel, options.moreLabel);
|
|
6119
6296
|
return collapsed;
|
|
6120
6297
|
}
|
|
6121
6298
|
function place(group) {
|
|
@@ -6225,6 +6402,128 @@ function attachRibbonGroupOverflow(ribbon, options = {}) {
|
|
|
6225
6402
|
};
|
|
6226
6403
|
}
|
|
6227
6404
|
|
|
6405
|
+
// src/dialog/options-categories.ts
|
|
6406
|
+
var UNAVAILABLE = {
|
|
6407
|
+
proofing: {
|
|
6408
|
+
id: "proofing",
|
|
6409
|
+
label: "Proofing",
|
|
6410
|
+
description: "Change how {product} corrects and formats your text.",
|
|
6411
|
+
reason: "Not available yet. Needs rich text formatting."
|
|
6412
|
+
},
|
|
6413
|
+
save: {
|
|
6414
|
+
id: "save",
|
|
6415
|
+
label: "Save",
|
|
6416
|
+
description: "Customize how documents are saved.",
|
|
6417
|
+
reason: "Not available yet. Documents are saved to this device; AutoRecover is not kept."
|
|
6418
|
+
},
|
|
6419
|
+
language: {
|
|
6420
|
+
id: "language",
|
|
6421
|
+
label: "Language",
|
|
6422
|
+
description: "Set the Office Language Preferences.",
|
|
6423
|
+
reason: "Not available yet. The display language is fixed."
|
|
6424
|
+
},
|
|
6425
|
+
accessibility: {
|
|
6426
|
+
id: "accessibility",
|
|
6427
|
+
label: "Accessibility",
|
|
6428
|
+
description: "Make {product} easier to work with.",
|
|
6429
|
+
reason: "Not available yet. There are no accessibility settings to change."
|
|
6430
|
+
},
|
|
6431
|
+
advanced: {
|
|
6432
|
+
id: "advanced",
|
|
6433
|
+
label: "Advanced",
|
|
6434
|
+
description: "Advanced options for working with {product}.",
|
|
6435
|
+
reason: "Not available yet. The editing behaviour is fixed."
|
|
6436
|
+
},
|
|
6437
|
+
ribbon: {
|
|
6438
|
+
id: "ribbon",
|
|
6439
|
+
label: "Customize Ribbon",
|
|
6440
|
+
description: "Customize the Ribbon and keyboard shortcuts.",
|
|
6441
|
+
reason: "Not available yet. The ribbon layout is fixed."
|
|
6442
|
+
},
|
|
6443
|
+
qat: {
|
|
6444
|
+
id: "qat",
|
|
6445
|
+
label: "Quick Access Toolbar",
|
|
6446
|
+
description: "Customize the Quick Access Toolbar.",
|
|
6447
|
+
reason: "Not available yet. The Quick Access Toolbar is fixed."
|
|
6448
|
+
},
|
|
6449
|
+
addins: {
|
|
6450
|
+
id: "add-ins",
|
|
6451
|
+
label: "Add-ins",
|
|
6452
|
+
description: "View and manage Microsoft Office Add-ins.",
|
|
6453
|
+
reason: "Not available. Add-ins and macros are never run."
|
|
6454
|
+
},
|
|
6455
|
+
trust: {
|
|
6456
|
+
id: "trust",
|
|
6457
|
+
label: "Trust Center",
|
|
6458
|
+
description: "Help keep your documents safe and your computer secure and healthy.",
|
|
6459
|
+
reason: "Not available. Documents stay local and active content is never run."
|
|
6460
|
+
}
|
|
6461
|
+
};
|
|
6462
|
+
function optionText(context, text) {
|
|
6463
|
+
return context.t(text).replace("{product}", context.product);
|
|
6464
|
+
}
|
|
6465
|
+
function unavailableCategory(context, kind, text = {}) {
|
|
6466
|
+
const entry = UNAVAILABLE[kind];
|
|
6467
|
+
return {
|
|
6468
|
+
id: entry.id,
|
|
6469
|
+
label: context.t(entry.label),
|
|
6470
|
+
description: optionText(context, text.description ?? entry.description),
|
|
6471
|
+
sections: [],
|
|
6472
|
+
disabled: optionText(context, text.reason ?? entry.reason)
|
|
6473
|
+
};
|
|
6474
|
+
}
|
|
6475
|
+
function unavailableControl(context, control, reason) {
|
|
6476
|
+
return { ...control, disabled: context.t(reason) };
|
|
6477
|
+
}
|
|
6478
|
+
function userInterfaceSection(context) {
|
|
6479
|
+
const { t } = context;
|
|
6480
|
+
return {
|
|
6481
|
+
id: "ui",
|
|
6482
|
+
title: t("User Interface options"),
|
|
6483
|
+
controls: [
|
|
6484
|
+
{
|
|
6485
|
+
kind: "toggle",
|
|
6486
|
+
key: "miniToolbar",
|
|
6487
|
+
label: t("Show Mini Toolbar on selection"),
|
|
6488
|
+
disabled: t("Not available yet. Needs rich text formatting.")
|
|
6489
|
+
},
|
|
6490
|
+
{
|
|
6491
|
+
kind: "toggle",
|
|
6492
|
+
key: "livePreview",
|
|
6493
|
+
label: t("Enable Live Preview"),
|
|
6494
|
+
disabled: t(
|
|
6495
|
+
"Not available yet. Styles are applied on click; hover previews are not drawn yet."
|
|
6496
|
+
)
|
|
6497
|
+
},
|
|
6498
|
+
{
|
|
6499
|
+
kind: "select",
|
|
6500
|
+
key: "screenTips",
|
|
6501
|
+
label: t("ScreenTip style"),
|
|
6502
|
+
choices: [{ value: "descriptions", label: t("Show feature descriptions in ScreenTips") }],
|
|
6503
|
+
disabled: t("Not available yet. ScreenTips always describe the command.")
|
|
6504
|
+
}
|
|
6505
|
+
]
|
|
6506
|
+
};
|
|
6507
|
+
}
|
|
6508
|
+
function personalizeSection(context, controls, description) {
|
|
6509
|
+
return {
|
|
6510
|
+
id: "personalize",
|
|
6511
|
+
title: context.t("Personalize your copy of Microsoft Office"),
|
|
6512
|
+
...description ? { description } : {},
|
|
6513
|
+
controls
|
|
6514
|
+
};
|
|
6515
|
+
}
|
|
6516
|
+
function optionsLabels(context) {
|
|
6517
|
+
const { t } = context;
|
|
6518
|
+
return {
|
|
6519
|
+
ok: t("OK"),
|
|
6520
|
+
cancel: t("Cancel"),
|
|
6521
|
+
reset: t("Reset all options"),
|
|
6522
|
+
categories: t("Categories"),
|
|
6523
|
+
close: t("Close")
|
|
6524
|
+
};
|
|
6525
|
+
}
|
|
6526
|
+
|
|
6228
6527
|
// src/controls.ts
|
|
6229
6528
|
var CONTROL_DEFINERS = [
|
|
6230
6529
|
defineIcon,
|
|
@@ -6273,4 +6572,4 @@ function registerControls(registry) {
|
|
|
6273
6572
|
for (const define of CONTROL_DEFINERS) define(registry);
|
|
6274
6573
|
}
|
|
6275
6574
|
|
|
6276
|
-
export { CONTROL_DEFINERS, DEFAULT_COMMENTS_LABELS, DEFAULT_OFFICE_PROFILE, EMPTY_MENU_STATE, OFFICE_AVATAR_SWATCHES, OFFICE_COLOR_SWATCHES, OFFICE_COLOR_SWATCH_HEXES, OFFICE_PROFILE_STORAGE_KEY, OFFICE_SYMBOLS, OFFICE_TITLE_BAR_SEARCH_LIMIT, OFFICE_TOAST_VISIBLE_LIMIT, assignKeyTips, attachKeyTips, attachRibbonGroupOverflow, clampFlyoutPosition, clampOptionNumber, clearOfficeProfile, commentInitials, createRibbonOverflow, defineAccount, defineBackstage, defineButton, defineCheckbox, defineColorCustom, defineColorGrid, defineCommandSearch, defineCommentsPane, defineContextMenu, defineDialog, defineDialogFooter, defineFindBar, defineGallery, defineIcon, defineMenuButton, defineMenuItem, defineMenuSeparator, defineOptionsDialog, definePasteOptions, definePrintPreview, defineRadio, defineReadOnlyBanner, defineRibbon, defineRibbonActions, defineRibbonGroup, defineRibbonSection, defineRibbonStack, defineRibbonToggle, defineRuler, defineSearchField, defineSelect, defineStatusBar, defineStatusItem, defineSwitch, defineSymbolPicker, defineTabStrip, defineTaskPane, defineTitleBar, defineToasts, defineToolbar, defineZoomSlider, fitRibbonGroups, formatCommentTime, glyph, nextEnabledIndex, parseOfficeSymbolCode, parseSvgPreview, profileInitials, rangeControl, range_control_default, readOfficeProfile, registerControls, rulerDivisions, runKeyTips, sanitizeOfficeProfile, typeAheadIndex, writeOfficeProfile };
|
|
6575
|
+
export { CONTROL_DEFINERS, DEFAULT_COMMENTS_LABELS, DEFAULT_OFFICE_PROFILE, EMPTY_MENU_STATE, OFFICE_AVATAR_SWATCHES, OFFICE_COLOR_SWATCHES, OFFICE_COLOR_SWATCH_HEXES, OFFICE_PROFILE_STORAGE_KEY, OFFICE_SYMBOLS, OFFICE_TITLE_BAR_SEARCH_LIMIT, OFFICE_TOAST_VISIBLE_LIMIT, assignKeyTips, attachKeyTips, attachRibbonGroupOverflow, clampFlyoutPosition, clampOptionNumber, clearOfficeProfile, commentInitials, createRibbonOverflow, defineAccount, defineBackstage, defineButton, defineCheckbox, defineColorCustom, defineColorGrid, defineCommandSearch, defineCommentsPane, defineContextMenu, defineDialog, defineDialogFooter, defineFindBar, defineGallery, defineIcon, defineMenuButton, defineMenuItem, defineMenuSeparator, defineOptionsDialog, definePasteOptions, definePrintPreview, defineRadio, defineReadOnlyBanner, defineRibbon, defineRibbonActions, defineRibbonGroup, defineRibbonSection, defineRibbonStack, defineRibbonToggle, defineRuler, defineSearchField, defineSelect, defineStatusBar, defineStatusItem, defineSwitch, defineSymbolPicker, defineTabStrip, defineTaskPane, defineTitleBar, defineToasts, defineToolbar, defineZoomSlider, fitRibbonGroups, formatCommentTime, glyph, nextEnabledIndex, optionText, optionsLabels, parseOfficeSymbolCode, parseSvgPreview, personalizeSection, profileInitials, rangeControl, range_control_default, readOfficeProfile, registerControls, rulerDivisions, runKeyTips, sanitizeOfficeProfile, typeAheadIndex, unavailableCategory, unavailableControl, userInterfaceSection, writeOfficeProfile };
|