@next-buildr/editor 2.0.0 → 3.0.0-rc.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/README.md +7 -0
- package/UPGRADING.md +322 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/app/builder-editor.test.js +223 -18
- package/dist/app/config.d.ts +27 -4
- package/dist/app/config.d.ts.map +1 -1
- package/dist/app/config.js +4 -3
- package/dist/app/contracts.d.ts +40 -0
- package/dist/app/contracts.d.ts.map +1 -0
- package/dist/app/contracts.js +4 -0
- package/dist/app/editor-app.d.ts.map +1 -1
- package/dist/app/editor-app.js +316 -24
- package/dist/app/editor-app.test.js +144 -6
- package/dist/app/layout.d.ts +11 -2
- package/dist/app/layout.d.ts.map +1 -1
- package/dist/app/layout.js +170 -9
- package/dist/app/manifest.d.ts +7 -2
- package/dist/app/manifest.d.ts.map +1 -1
- package/dist/app/manifest.js +16 -4
- package/dist/app/shell-panels.d.ts +15 -0
- package/dist/app/shell-panels.d.ts.map +1 -1
- package/dist/app/small-screen.test.js +2 -2
- package/dist/app/stage-slots.d.ts +9 -0
- package/dist/app/stage-slots.d.ts.map +1 -0
- package/dist/app/stage-slots.js +10 -0
- package/dist/app/status-info.d.ts +2 -3
- package/dist/app/status-info.d.ts.map +1 -1
- package/dist/app/status-info.js +49 -16
- package/dist/canvas-host/canvas-frame.d.ts +13 -1
- package/dist/canvas-host/canvas-frame.d.ts.map +1 -1
- package/dist/canvas-host/canvas-frame.js +96 -8
- package/dist/canvas-host/canvas-frame.test.js +156 -3
- package/dist/canvas-host/host.d.ts +6 -0
- package/dist/canvas-host/host.d.ts.map +1 -1
- package/dist/canvas-host/host.js +116 -4
- package/dist/canvas-host/host.test.js +195 -6
- package/dist/clipboard/clipboard.d.ts +1 -1
- package/dist/clipboard/clipboard.d.ts.map +1 -1
- package/dist/clipboard/clipboard.js +5 -0
- package/dist/clipboard/clipboard.test.js +21 -1
- package/dist/clipboard/format.d.ts +3 -1
- package/dist/clipboard/format.d.ts.map +1 -1
- package/dist/clipboard/react.d.ts +1 -1
- package/dist/clipboard/react.d.ts.map +1 -1
- package/dist/clipboard/react.js +49 -3
- package/dist/dialogs/external-source.d.ts +15 -0
- package/dist/dialogs/external-source.d.ts.map +1 -0
- package/dist/dialogs/external-source.js +18 -0
- package/dist/dialogs/index.d.ts +4 -0
- package/dist/dialogs/index.d.ts.map +1 -1
- package/dist/dialogs/index.js +2 -0
- package/dist/dialogs/media-picker/index.d.ts +2 -2
- package/dist/dialogs/media-picker/index.d.ts.map +1 -1
- package/dist/dialogs/media-picker/index.js +1 -1
- package/dist/dialogs/media-picker/media-picker.d.ts +5 -0
- package/dist/dialogs/media-picker/media-picker.d.ts.map +1 -1
- package/dist/dialogs/media-picker/media-picker.js +67 -5
- package/dist/dialogs/media-picker/media-picker.test.js +72 -1
- package/dist/dialogs/media-picker/media-ref.d.ts +15 -0
- package/dist/dialogs/media-picker/media-ref.d.ts.map +1 -1
- package/dist/dialogs/media-picker/media-ref.js +29 -0
- package/dist/dialogs/remove-confirm.d.ts +14 -0
- package/dist/dialogs/remove-confirm.d.ts.map +1 -0
- package/dist/dialogs/remove-confirm.js +42 -0
- package/dist/dialogs/remove-confirm.test.d.ts +2 -0
- package/dist/dialogs/remove-confirm.test.d.ts.map +1 -0
- package/dist/dialogs/remove-confirm.test.js +118 -0
- package/dist/dnd/dnd-react.test.js +11 -2
- package/dist/dnd/dnd.test.js +23 -0
- package/dist/dnd/engine.d.ts +4 -2
- package/dist/dnd/engine.d.ts.map +1 -1
- package/dist/dnd/engine.js +6 -0
- package/dist/dnd/move-to-dialog.d.ts +4 -3
- package/dist/dnd/move-to-dialog.d.ts.map +1 -1
- package/dist/dnd/move-to-dialog.js +67 -10
- package/dist/dnd/react.d.ts.map +1 -1
- package/dist/dnd/react.js +5 -0
- package/dist/i18n/diagnostics.d.ts +22 -0
- package/dist/i18n/diagnostics.d.ts.map +1 -0
- package/dist/i18n/diagnostics.js +153 -0
- package/dist/i18n/diagnostics.test.d.ts +2 -0
- package/dist/i18n/diagnostics.test.d.ts.map +1 -0
- package/dist/i18n/diagnostics.test.js +74 -0
- package/dist/i18n/label-catalog.d.ts +20 -0
- package/dist/i18n/label-catalog.d.ts.map +1 -0
- package/dist/i18n/label-catalog.js +1 -0
- package/dist/i18n/locale-name.d.ts +7 -0
- package/dist/i18n/locale-name.d.ts.map +1 -0
- package/dist/i18n/locale-name.js +31 -0
- package/dist/i18n/localize-manifest.d.ts +11 -0
- package/dist/i18n/localize-manifest.d.ts.map +1 -0
- package/dist/i18n/localize-manifest.js +78 -0
- package/dist/i18n/localize-manifest.test.d.ts +2 -0
- package/dist/i18n/localize-manifest.test.d.ts.map +1 -0
- package/dist/i18n/localize-manifest.test.js +71 -0
- package/dist/messages/catalogs.test.d.ts +2 -0
- package/dist/messages/catalogs.test.d.ts.map +1 -0
- package/dist/messages/catalogs.test.js +80 -0
- package/dist/messages/en/app.d.ts +8 -0
- package/dist/messages/en/app.d.ts.map +1 -0
- package/dist/messages/en/app.js +7 -0
- package/dist/messages/en/blocks.d.ts +54 -0
- package/dist/messages/en/blocks.d.ts.map +1 -0
- package/dist/messages/en/blocks.js +53 -0
- package/dist/messages/en/canvas.d.ts +31 -0
- package/dist/messages/en/canvas.d.ts.map +1 -0
- package/dist/messages/en/canvas.js +30 -0
- package/dist/messages/en/clipboard.d.ts +13 -0
- package/dist/messages/en/clipboard.d.ts.map +1 -0
- package/dist/messages/en/clipboard.js +12 -0
- package/dist/messages/en/colorPicker.d.ts +20 -0
- package/dist/messages/en/colorPicker.d.ts.map +1 -0
- package/dist/messages/en/colorPicker.js +19 -0
- package/dist/messages/en/diagnostics.d.ts +40 -0
- package/dist/messages/en/diagnostics.d.ts.map +1 -0
- package/dist/messages/en/diagnostics.js +39 -0
- package/dist/messages/en/dialogs/common.d.ts +6 -0
- package/dist/messages/en/dialogs/common.d.ts.map +1 -0
- package/dist/messages/en/dialogs/common.js +5 -0
- package/dist/messages/en/dialogs/conflict.d.ts +15 -0
- package/dist/messages/en/dialogs/conflict.d.ts.map +1 -0
- package/dist/messages/en/dialogs/conflict.js +14 -0
- package/dist/messages/en/dialogs/delete.d.ts +19 -0
- package/dist/messages/en/dialogs/delete.d.ts.map +1 -0
- package/dist/messages/en/dialogs/delete.js +18 -0
- package/dist/messages/en/dialogs/pageOptions.d.ts +9 -0
- package/dist/messages/en/dialogs/pageOptions.d.ts.map +1 -0
- package/dist/messages/en/dialogs/pageOptions.js +8 -0
- package/dist/messages/en/dialogs/publish.d.ts +15 -0
- package/dist/messages/en/dialogs/publish.d.ts.map +1 -0
- package/dist/messages/en/dialogs/publish.js +14 -0
- package/dist/messages/en/dnd.d.ts +19 -0
- package/dist/messages/en/dnd.d.ts.map +1 -0
- package/dist/messages/en/dnd.js +18 -0
- package/dist/messages/en/editor.d.ts +30 -0
- package/dist/messages/en/editor.d.ts.map +1 -0
- package/dist/messages/en/editor.js +29 -0
- package/dist/messages/en/external.d.ts +6 -0
- package/dist/messages/en/external.d.ts.map +1 -0
- package/dist/messages/en/external.js +5 -0
- package/dist/messages/en/insert.d.ts +25 -0
- package/dist/messages/en/insert.d.ts.map +1 -0
- package/dist/messages/en/insert.js +24 -0
- package/dist/messages/en/inspector.d.ts +176 -0
- package/dist/messages/en/inspector.d.ts.map +1 -0
- package/dist/messages/en/inspector.js +175 -0
- package/dist/messages/en/issues.d.ts +36 -0
- package/dist/messages/en/issues.d.ts.map +1 -0
- package/dist/messages/en/issues.js +35 -0
- package/dist/messages/en/layers.d.ts +29 -0
- package/dist/messages/en/layers.d.ts.map +1 -0
- package/dist/messages/en/layers.js +28 -0
- package/dist/messages/en/leftPanel.d.ts +15 -0
- package/dist/messages/en/leftPanel.d.ts.map +1 -0
- package/dist/messages/en/leftPanel.js +14 -0
- package/dist/messages/en/list.d.ts +9 -0
- package/dist/messages/en/list.d.ts.map +1 -0
- package/dist/messages/en/list.js +8 -0
- package/dist/messages/en/locale.d.ts +4 -0
- package/dist/messages/en/locale.d.ts.map +1 -0
- package/dist/messages/en/locale.js +3 -0
- package/dist/messages/en/media.d.ts +51 -0
- package/dist/messages/en/media.d.ts.map +1 -0
- package/dist/messages/en/media.js +50 -0
- package/dist/messages/en/menu.d.ts +12 -0
- package/dist/messages/en/menu.d.ts.map +1 -0
- package/dist/messages/en/menu.js +11 -0
- package/dist/messages/en/patterns.d.ts +24 -0
- package/dist/messages/en/patterns.d.ts.map +1 -0
- package/dist/messages/en/patterns.js +23 -0
- package/dist/messages/en/preview.d.ts +8 -0
- package/dist/messages/en/preview.d.ts.map +1 -0
- package/dist/messages/en/preview.js +7 -0
- package/dist/messages/en/publish.d.ts +19 -0
- package/dist/messages/en/publish.d.ts.map +1 -0
- package/dist/messages/en/publish.js +18 -0
- package/dist/messages/en/richText.d.ts +21 -0
- package/dist/messages/en/richText.d.ts.map +1 -0
- package/dist/messages/en/richText.js +20 -0
- package/dist/messages/en/sample.d.ts +5 -0
- package/dist/messages/en/sample.d.ts.map +1 -0
- package/dist/messages/en/sample.js +4 -0
- package/dist/messages/en/save.d.ts +15 -0
- package/dist/messages/en/save.d.ts.map +1 -0
- package/dist/messages/en/save.js +14 -0
- package/dist/messages/en/shortcut.d.ts +36 -0
- package/dist/messages/en/shortcut.d.ts.map +1 -0
- package/dist/messages/en/shortcut.js +35 -0
- package/dist/messages/en/statusBar.d.ts +14 -0
- package/dist/messages/en/statusBar.d.ts.map +1 -0
- package/dist/messages/en/statusBar.js +13 -0
- package/dist/messages/en/structure.d.ts +28 -0
- package/dist/messages/en/structure.d.ts.map +1 -0
- package/dist/messages/en/structure.js +27 -0
- package/dist/messages/en/style.d.ts +168 -0
- package/dist/messages/en/style.d.ts.map +1 -0
- package/dist/messages/en/style.js +167 -0
- package/dist/messages/en/styleField.d.ts +301 -0
- package/dist/messages/en/styleField.d.ts.map +1 -0
- package/dist/messages/en/styleField.js +300 -0
- package/dist/messages/en/styleOption.d.ts +128 -0
- package/dist/messages/en/styleOption.d.ts.map +1 -0
- package/dist/messages/en/styleOption.js +127 -0
- package/dist/messages/en/styleSection.d.ts +16 -0
- package/dist/messages/en/styleSection.d.ts.map +1 -0
- package/dist/messages/en/styleSection.js +15 -0
- package/dist/messages/en/toast.d.ts +22 -0
- package/dist/messages/en/toast.d.ts.map +1 -0
- package/dist/messages/en/toast.js +21 -0
- package/dist/messages/en/toolbar.d.ts +47 -0
- package/dist/messages/en/toolbar.d.ts.map +1 -0
- package/dist/messages/en/toolbar.js +46 -0
- package/dist/messages/en/translation.d.ts +7 -0
- package/dist/messages/en/translation.d.ts.map +1 -0
- package/dist/messages/en/translation.js +6 -0
- package/dist/messages/en/ui.d.ts +4 -0
- package/dist/messages/en/ui.d.ts.map +1 -0
- package/dist/messages/en/ui.js +3 -0
- package/dist/messages/en/values.d.ts +45 -0
- package/dist/messages/en/values.d.ts.map +1 -0
- package/dist/messages/en/values.js +44 -0
- package/dist/messages/en.d.ts +1298 -202
- package/dist/messages/en.d.ts.map +1 -1
- package/dist/messages/en.js +82 -330
- package/dist/messages/index.d.ts +12 -0
- package/dist/messages/index.d.ts.map +1 -1
- package/dist/messages/index.js +28 -1
- package/dist/messages/pl/app.d.ts +8 -0
- package/dist/messages/pl/app.d.ts.map +1 -0
- package/dist/messages/pl/app.js +7 -0
- package/dist/messages/pl/blocks.d.ts +54 -0
- package/dist/messages/pl/blocks.d.ts.map +1 -0
- package/dist/messages/pl/blocks.js +53 -0
- package/dist/messages/pl/canvas.d.ts +31 -0
- package/dist/messages/pl/canvas.d.ts.map +1 -0
- package/dist/messages/pl/canvas.js +30 -0
- package/dist/messages/pl/clipboard.d.ts +13 -0
- package/dist/messages/pl/clipboard.d.ts.map +1 -0
- package/dist/messages/pl/clipboard.js +12 -0
- package/dist/messages/pl/colorPicker.d.ts +20 -0
- package/dist/messages/pl/colorPicker.d.ts.map +1 -0
- package/dist/messages/pl/colorPicker.js +19 -0
- package/dist/messages/pl/componentLabels.d.ts +9 -0
- package/dist/messages/pl/componentLabels.d.ts.map +1 -0
- package/dist/messages/pl/componentLabels.js +308 -0
- package/dist/messages/pl/diagnostics.d.ts +39 -0
- package/dist/messages/pl/diagnostics.d.ts.map +1 -0
- package/dist/messages/pl/diagnostics.js +38 -0
- package/dist/messages/pl/dialogs/common.d.ts +6 -0
- package/dist/messages/pl/dialogs/common.d.ts.map +1 -0
- package/dist/messages/pl/dialogs/common.js +5 -0
- package/dist/messages/pl/dialogs/conflict.d.ts +15 -0
- package/dist/messages/pl/dialogs/conflict.d.ts.map +1 -0
- package/dist/messages/pl/dialogs/conflict.js +14 -0
- package/dist/messages/pl/dialogs/delete.d.ts +19 -0
- package/dist/messages/pl/dialogs/delete.d.ts.map +1 -0
- package/dist/messages/pl/dialogs/delete.js +18 -0
- package/dist/messages/pl/dialogs/pageOptions.d.ts +9 -0
- package/dist/messages/pl/dialogs/pageOptions.d.ts.map +1 -0
- package/dist/messages/pl/dialogs/pageOptions.js +8 -0
- package/dist/messages/pl/dialogs/publish.d.ts +15 -0
- package/dist/messages/pl/dialogs/publish.d.ts.map +1 -0
- package/dist/messages/pl/dialogs/publish.js +14 -0
- package/dist/messages/pl/dnd.d.ts +19 -0
- package/dist/messages/pl/dnd.d.ts.map +1 -0
- package/dist/messages/pl/dnd.js +18 -0
- package/dist/messages/pl/editor.d.ts +30 -0
- package/dist/messages/pl/editor.d.ts.map +1 -0
- package/dist/messages/pl/editor.js +29 -0
- package/dist/messages/pl/external.d.ts +6 -0
- package/dist/messages/pl/external.d.ts.map +1 -0
- package/dist/messages/pl/external.js +5 -0
- package/dist/messages/pl/insert.d.ts +25 -0
- package/dist/messages/pl/insert.d.ts.map +1 -0
- package/dist/messages/pl/insert.js +24 -0
- package/dist/messages/pl/inspector.d.ts +176 -0
- package/dist/messages/pl/inspector.d.ts.map +1 -0
- package/dist/messages/pl/inspector.js +175 -0
- package/dist/messages/pl/issues.d.ts +36 -0
- package/dist/messages/pl/issues.d.ts.map +1 -0
- package/dist/messages/pl/issues.js +35 -0
- package/dist/messages/pl/layers.d.ts +29 -0
- package/dist/messages/pl/layers.d.ts.map +1 -0
- package/dist/messages/pl/layers.js +28 -0
- package/dist/messages/pl/leftPanel.d.ts +15 -0
- package/dist/messages/pl/leftPanel.d.ts.map +1 -0
- package/dist/messages/pl/leftPanel.js +14 -0
- package/dist/messages/pl/list.d.ts +9 -0
- package/dist/messages/pl/list.d.ts.map +1 -0
- package/dist/messages/pl/list.js +8 -0
- package/dist/messages/pl/locale.d.ts +4 -0
- package/dist/messages/pl/locale.d.ts.map +1 -0
- package/dist/messages/pl/locale.js +3 -0
- package/dist/messages/pl/media.d.ts +51 -0
- package/dist/messages/pl/media.d.ts.map +1 -0
- package/dist/messages/pl/media.js +50 -0
- package/dist/messages/pl/menu.d.ts +12 -0
- package/dist/messages/pl/menu.d.ts.map +1 -0
- package/dist/messages/pl/menu.js +11 -0
- package/dist/messages/pl/patterns.d.ts +24 -0
- package/dist/messages/pl/patterns.d.ts.map +1 -0
- package/dist/messages/pl/patterns.js +23 -0
- package/dist/messages/pl/preview.d.ts +8 -0
- package/dist/messages/pl/preview.d.ts.map +1 -0
- package/dist/messages/pl/preview.js +7 -0
- package/dist/messages/pl/publish.d.ts +19 -0
- package/dist/messages/pl/publish.d.ts.map +1 -0
- package/dist/messages/pl/publish.js +18 -0
- package/dist/messages/pl/richText.d.ts +21 -0
- package/dist/messages/pl/richText.d.ts.map +1 -0
- package/dist/messages/pl/richText.js +20 -0
- package/dist/messages/pl/sample.d.ts +5 -0
- package/dist/messages/pl/sample.d.ts.map +1 -0
- package/dist/messages/pl/sample.js +4 -0
- package/dist/messages/pl/save.d.ts +15 -0
- package/dist/messages/pl/save.d.ts.map +1 -0
- package/dist/messages/pl/save.js +14 -0
- package/dist/messages/pl/shortcut.d.ts +36 -0
- package/dist/messages/pl/shortcut.d.ts.map +1 -0
- package/dist/messages/pl/shortcut.js +35 -0
- package/dist/messages/pl/statusBar.d.ts +14 -0
- package/dist/messages/pl/statusBar.d.ts.map +1 -0
- package/dist/messages/pl/statusBar.js +13 -0
- package/dist/messages/pl/structure.d.ts +28 -0
- package/dist/messages/pl/structure.d.ts.map +1 -0
- package/dist/messages/pl/structure.js +27 -0
- package/dist/messages/pl/style.d.ts +168 -0
- package/dist/messages/pl/style.d.ts.map +1 -0
- package/dist/messages/pl/style.js +167 -0
- package/dist/messages/pl/styleField.d.ts +301 -0
- package/dist/messages/pl/styleField.d.ts.map +1 -0
- package/dist/messages/pl/styleField.js +300 -0
- package/dist/messages/pl/styleOption.d.ts +128 -0
- package/dist/messages/pl/styleOption.d.ts.map +1 -0
- package/dist/messages/pl/styleOption.js +127 -0
- package/dist/messages/pl/styleSection.d.ts +16 -0
- package/dist/messages/pl/styleSection.d.ts.map +1 -0
- package/dist/messages/pl/styleSection.js +15 -0
- package/dist/messages/pl/toast.d.ts +22 -0
- package/dist/messages/pl/toast.d.ts.map +1 -0
- package/dist/messages/pl/toast.js +21 -0
- package/dist/messages/pl/toolbar.d.ts +47 -0
- package/dist/messages/pl/toolbar.d.ts.map +1 -0
- package/dist/messages/pl/toolbar.js +46 -0
- package/dist/messages/pl/translation.d.ts +7 -0
- package/dist/messages/pl/translation.d.ts.map +1 -0
- package/dist/messages/pl/translation.js +6 -0
- package/dist/messages/pl/ui.d.ts +4 -0
- package/dist/messages/pl/ui.d.ts.map +1 -0
- package/dist/messages/pl/ui.js +3 -0
- package/dist/messages/pl/values.d.ts +45 -0
- package/dist/messages/pl/values.d.ts.map +1 -0
- package/dist/messages/pl/values.js +44 -0
- package/dist/messages/pl.d.ts.map +1 -1
- package/dist/messages/pl.js +82 -325
- package/dist/messages/plural.test.d.ts +2 -0
- package/dist/messages/plural.test.d.ts.map +1 -0
- package/dist/messages/plural.test.js +50 -0
- package/dist/panels/breadcrumbs/breadcrumbs.d.ts +1 -1
- package/dist/panels/breadcrumbs/breadcrumbs.d.ts.map +1 -1
- package/dist/panels/breadcrumbs/breadcrumbs.js +10 -3
- package/dist/panels/breadcrumbs/breadcrumbs.test.js +9 -2
- package/dist/panels/index.d.ts +3 -0
- package/dist/panels/index.d.ts.map +1 -1
- package/dist/panels/index.js +1 -0
- package/dist/panels/insert/catalog.d.ts +21 -1
- package/dist/panels/insert/catalog.d.ts.map +1 -1
- package/dist/panels/insert/catalog.js +85 -3
- package/dist/panels/insert/catalog.order.test.js +106 -1
- package/dist/panels/insert/index.d.ts +1 -0
- package/dist/panels/insert/index.d.ts.map +1 -1
- package/dist/panels/insert/insert-panel.d.ts +14 -4
- package/dist/panels/insert/insert-panel.d.ts.map +1 -1
- package/dist/panels/insert/insert-panel.js +128 -69
- package/dist/panels/insert/insert-panel.test.js +278 -37
- package/dist/panels/insert/target.d.ts +5 -1
- package/dist/panels/insert/target.d.ts.map +1 -1
- package/dist/panels/insert/target.js +11 -1
- package/dist/panels/inspector/author-fields.d.ts +21 -0
- package/dist/panels/inspector/author-fields.d.ts.map +1 -0
- package/dist/panels/inspector/author-fields.js +191 -0
- package/dist/panels/inspector/author-fields.test.d.ts +2 -0
- package/dist/panels/inspector/author-fields.test.d.ts.map +1 -0
- package/dist/panels/inspector/author-fields.test.js +237 -0
- package/dist/panels/inspector/controls/external-link.d.ts +24 -0
- package/dist/panels/inspector/controls/external-link.d.ts.map +1 -0
- package/dist/panels/inspector/controls/external-link.js +43 -0
- package/dist/panels/inspector/controls/external-link.test.d.ts +2 -0
- package/dist/panels/inspector/controls/external-link.test.d.ts.map +1 -0
- package/dist/panels/inspector/controls/external-link.test.js +105 -0
- package/dist/panels/inspector/controls/index.d.ts +1 -0
- package/dist/panels/inspector/controls/index.d.ts.map +1 -1
- package/dist/panels/inspector/controls/index.js +1 -0
- package/dist/panels/inspector/controls/media.d.ts +3 -1
- package/dist/panels/inspector/controls/media.d.ts.map +1 -1
- package/dist/panels/inspector/controls/media.js +8 -3
- package/dist/panels/inspector/controls/rich-text.d.ts.map +1 -1
- package/dist/panels/inspector/controls/rich-text.js +36 -6
- package/dist/panels/inspector/controls/textarea.d.ts +7 -2
- package/dist/panels/inspector/controls/textarea.d.ts.map +1 -1
- package/dist/panels/inspector/controls/textarea.js +37 -2
- package/dist/panels/inspector/default-hint.d.ts +13 -0
- package/dist/panels/inspector/default-hint.d.ts.map +1 -0
- package/dist/panels/inspector/default-hint.js +30 -0
- package/dist/panels/inspector/default-hint.test.d.ts +2 -0
- package/dist/panels/inspector/default-hint.test.d.ts.map +1 -0
- package/dist/panels/inspector/default-hint.test.js +46 -0
- package/dist/panels/inspector/index.d.ts +3 -3
- package/dist/panels/inspector/index.d.ts.map +1 -1
- package/dist/panels/inspector/index.js +2 -2
- package/dist/panels/inspector/inspector.d.ts +20 -2
- package/dist/panels/inspector/inspector.d.ts.map +1 -1
- package/dist/panels/inspector/inspector.js +246 -26
- package/dist/panels/inspector/inspector.test.js +276 -11
- package/dist/panels/inspector/props-panel.d.ts +36 -0
- package/dist/panels/inspector/props-panel.d.ts.map +1 -1
- package/dist/panels/inspector/props-panel.js +99 -17
- package/dist/panels/inspector/props-panel.test.d.ts +2 -0
- package/dist/panels/inspector/props-panel.test.d.ts.map +1 -0
- package/dist/panels/inspector/props-panel.test.js +17 -0
- package/dist/panels/inspector/scrub-label.d.ts +14 -0
- package/dist/panels/inspector/scrub-label.d.ts.map +1 -0
- package/dist/panels/inspector/scrub-label.js +75 -0
- package/dist/panels/inspector/scrub-label.test.d.ts +2 -0
- package/dist/panels/inspector/scrub-label.test.d.ts.map +1 -0
- package/dist/panels/inspector/scrub-label.test.js +132 -0
- package/dist/panels/inspector/styles/background-media.d.ts +28 -0
- package/dist/panels/inspector/styles/background-media.d.ts.map +1 -0
- package/dist/panels/inspector/styles/background-media.js +78 -0
- package/dist/panels/inspector/styles/box-model.d.ts +13 -16
- package/dist/panels/inspector/styles/box-model.d.ts.map +1 -1
- package/dist/panels/inspector/styles/box-model.js +10 -25
- package/dist/panels/inspector/styles/color-input.d.ts +3 -0
- package/dist/panels/inspector/styles/color-input.d.ts.map +1 -0
- package/dist/panels/inspector/styles/color-input.js +72 -0
- package/dist/panels/inspector/styles/gradient-fields.d.ts +9 -0
- package/dist/panels/inspector/styles/gradient-fields.d.ts.map +1 -0
- package/dist/panels/inspector/styles/gradient-fields.js +50 -0
- package/dist/panels/inspector/styles/index.d.ts +2 -0
- package/dist/panels/inspector/styles/index.d.ts.map +1 -1
- package/dist/panels/inspector/styles/index.js +2 -0
- package/dist/panels/inspector/styles/model.d.ts +27 -5
- package/dist/panels/inspector/styles/model.d.ts.map +1 -1
- package/dist/panels/inspector/styles/model.js +101 -3
- package/dist/panels/inspector/styles/motion-rows.d.ts +17 -0
- package/dist/panels/inspector/styles/motion-rows.d.ts.map +1 -0
- package/dist/panels/inspector/styles/motion-rows.js +117 -0
- package/dist/panels/inspector/styles/number-input.d.ts +4 -0
- package/dist/panels/inspector/styles/number-input.d.ts.map +1 -0
- package/dist/panels/inspector/styles/number-input.js +12 -0
- package/dist/panels/inspector/styles/option-label.d.ts +7 -0
- package/dist/panels/inspector/styles/option-label.d.ts.map +1 -0
- package/dist/panels/inspector/styles/option-label.js +9 -0
- package/dist/panels/inspector/styles/property-label.d.ts +9 -0
- package/dist/panels/inspector/styles/property-label.d.ts.map +1 -0
- package/dist/panels/inspector/styles/property-label.js +11 -0
- package/dist/panels/inspector/styles/section-state.d.ts +22 -0
- package/dist/panels/inspector/styles/section-state.d.ts.map +1 -0
- package/dist/panels/inspector/styles/section-state.js +96 -0
- package/dist/panels/inspector/styles/section.d.ts +25 -0
- package/dist/panels/inspector/styles/section.d.ts.map +1 -0
- package/dist/panels/inspector/styles/section.js +43 -0
- package/dist/panels/inspector/styles/sections-context.d.ts +13 -0
- package/dist/panels/inspector/styles/sections-context.d.ts.map +1 -0
- package/dist/panels/inspector/styles/sections-context.js +19 -0
- package/dist/panels/inspector/styles/sections-context.test.d.ts +2 -0
- package/dist/panels/inspector/styles/sections-context.test.d.ts.map +1 -0
- package/dist/panels/inspector/styles/sections-context.test.js +18 -0
- package/dist/panels/inspector/styles/sections-toggle.d.ts +6 -0
- package/dist/panels/inspector/styles/sections-toggle.d.ts.map +1 -0
- package/dist/panels/inspector/styles/sections-toggle.js +18 -0
- package/dist/panels/inspector/styles/segments.d.ts +3 -0
- package/dist/panels/inspector/styles/segments.d.ts.map +1 -1
- package/dist/panels/inspector/styles/segments.js +11 -4
- package/dist/panels/inspector/styles/sides-editor.d.ts +1 -1
- package/dist/panels/inspector/styles/sides-editor.d.ts.map +1 -1
- package/dist/panels/inspector/styles/sides-editor.js +33 -4
- package/dist/panels/inspector/styles/style-inspector.d.ts +3 -1
- package/dist/panels/inspector/styles/style-inspector.d.ts.map +1 -1
- package/dist/panels/inspector/styles/style-inspector.js +610 -42
- package/dist/panels/inspector/styles/style-inspector.test.js +694 -14
- package/dist/panels/inspector/styles/token-picker.d.ts +1 -1
- package/dist/panels/inspector/styles/token-picker.d.ts.map +1 -1
- package/dist/panels/inspector/styles/token-picker.js +10 -3
- package/dist/panels/inspector/styles/widgets.d.ts +116 -0
- package/dist/panels/inspector/styles/widgets.d.ts.map +1 -0
- package/dist/panels/inspector/styles/widgets.js +304 -0
- package/dist/panels/inspector/styles/widgets.test.d.ts +2 -0
- package/dist/panels/inspector/styles/widgets.test.d.ts.map +1 -0
- package/dist/panels/inspector/styles/widgets.test.js +247 -0
- package/dist/panels/inspector/values/value-editor.d.ts +1 -1
- package/dist/panels/inspector/values/value-editor.d.ts.map +1 -1
- package/dist/panels/inspector/values/value-editor.js +9 -8
- package/dist/panels/inspector/values/values.test.js +9 -3
- package/dist/panels/issues/collect.d.ts +2 -0
- package/dist/panels/issues/collect.d.ts.map +1 -1
- package/dist/panels/issues/collect.js +1 -0
- package/dist/panels/issues/index.d.ts +1 -0
- package/dist/panels/issues/index.d.ts.map +1 -1
- package/dist/panels/issues/index.js +1 -0
- package/dist/panels/issues/issues-panel.d.ts +4 -3
- package/dist/panels/issues/issues-panel.d.ts.map +1 -1
- package/dist/panels/issues/issues-panel.js +22 -35
- package/dist/panels/issues/path.d.ts +7 -0
- package/dist/panels/issues/path.d.ts.map +1 -0
- package/dist/panels/issues/path.js +21 -0
- package/dist/panels/layers/flatten.d.ts +16 -2
- package/dist/panels/layers/flatten.d.ts.map +1 -1
- package/dist/panels/layers/flatten.js +48 -4
- package/dist/panels/layers/layers-panel.d.ts +5 -2
- package/dist/panels/layers/layers-panel.d.ts.map +1 -1
- package/dist/panels/layers/layers-panel.js +177 -35
- package/dist/panels/layers/layers-panel.test.js +173 -15
- package/dist/panels/left-panel.d.ts +17 -0
- package/dist/panels/left-panel.d.ts.map +1 -0
- package/dist/panels/left-panel.js +47 -0
- package/dist/panels/left-panel.test.d.ts +2 -0
- package/dist/panels/left-panel.test.d.ts.map +1 -0
- package/dist/panels/left-panel.test.js +77 -0
- package/dist/persistence/persistence.test.js +9 -3
- package/dist/persistence/react.d.ts.map +1 -1
- package/dist/persistence/react.js +2 -2
- package/dist/preview/preview.d.ts +8 -0
- package/dist/preview/preview.d.ts.map +1 -1
- package/dist/preview/preview.js +21 -1
- package/dist/preview/preview.test.js +18 -1
- package/dist/shortcuts/actions.d.ts +13 -2
- package/dist/shortcuts/actions.d.ts.map +1 -1
- package/dist/shortcuts/actions.js +70 -15
- package/dist/shortcuts/help.d.ts +11 -0
- package/dist/shortcuts/help.d.ts.map +1 -0
- package/dist/shortcuts/help.js +77 -0
- package/dist/shortcuts/index.d.ts +5 -2
- package/dist/shortcuts/index.d.ts.map +1 -1
- package/dist/shortcuts/index.js +3 -1
- package/dist/shortcuts/map.d.ts +1 -1
- package/dist/shortcuts/map.d.ts.map +1 -1
- package/dist/shortcuts/map.js +14 -8
- package/dist/shortcuts/navigation.d.ts +13 -0
- package/dist/shortcuts/navigation.d.ts.map +1 -0
- package/dist/shortcuts/navigation.js +48 -0
- package/dist/shortcuts/shortcuts.d.ts +12 -1
- package/dist/shortcuts/shortcuts.d.ts.map +1 -1
- package/dist/shortcuts/shortcuts.js +61 -14
- package/dist/shortcuts/shortcuts.test.js +206 -5
- package/dist/store/create-store.d.ts.map +1 -1
- package/dist/store/create-store.js +19 -1
- package/dist/store/index.d.ts +4 -1
- package/dist/store/index.d.ts.map +1 -1
- package/dist/store/index.js +3 -1
- package/dist/store/react.d.ts +4 -0
- package/dist/store/react.d.ts.map +1 -1
- package/dist/store/react.js +7 -0
- package/dist/store/store.test.js +24 -0
- package/dist/store/structure-lock.d.ts +16 -0
- package/dist/store/structure-lock.d.ts.map +1 -0
- package/dist/store/structure-lock.js +43 -0
- package/dist/store/structure-lock.test.d.ts +2 -0
- package/dist/store/structure-lock.test.d.ts.map +1 -0
- package/dist/store/structure-lock.test.js +49 -0
- package/dist/store/types.d.ts +9 -0
- package/dist/store/types.d.ts.map +1 -1
- package/dist/store/view.d.ts +20 -0
- package/dist/store/view.d.ts.map +1 -0
- package/dist/store/view.js +17 -0
- package/dist/store/view.test.d.ts +2 -0
- package/dist/store/view.test.d.ts.map +1 -0
- package/dist/store/view.test.js +103 -0
- package/dist/styles/tokens.test.js +88 -9
- package/dist/styles.css +4112 -586
- package/dist/toolbar/brand.d.ts +2 -2
- package/dist/toolbar/brand.d.ts.map +1 -1
- package/dist/toolbar/brand.js +4 -4
- package/dist/toolbar/breakpoint-control.d.ts +4 -0
- package/dist/toolbar/breakpoint-control.d.ts.map +1 -1
- package/dist/toolbar/breakpoint-control.js +11 -4
- package/dist/toolbar/editable-title.d.ts +4 -1
- package/dist/toolbar/editable-title.d.ts.map +1 -1
- package/dist/toolbar/editable-title.js +2 -2
- package/dist/toolbar/editable-title.test.js +10 -0
- package/dist/toolbar/locale-chip.d.ts +10 -0
- package/dist/toolbar/locale-chip.d.ts.map +1 -0
- package/dist/toolbar/locale-chip.js +27 -0
- package/dist/toolbar/locale-switcher.d.ts.map +1 -1
- package/dist/toolbar/locale-switcher.js +4 -1
- package/dist/toolbar/more-menu.d.ts +26 -4
- package/dist/toolbar/more-menu.d.ts.map +1 -1
- package/dist/toolbar/more-menu.js +60 -13
- package/dist/toolbar/page-chip.d.ts +10 -0
- package/dist/toolbar/page-chip.d.ts.map +1 -0
- package/dist/toolbar/page-chip.js +12 -0
- package/dist/toolbar/page-options-dialog.d.ts +16 -0
- package/dist/toolbar/page-options-dialog.d.ts.map +1 -0
- package/dist/toolbar/page-options-dialog.js +13 -0
- package/dist/toolbar/panel-toggles.d.ts +3 -2
- package/dist/toolbar/panel-toggles.d.ts.map +1 -1
- package/dist/toolbar/panel-toggles.js +9 -4
- package/dist/toolbar/publish-dialog.d.ts +3 -0
- package/dist/toolbar/publish-dialog.d.ts.map +1 -1
- package/dist/toolbar/publish-dialog.js +34 -7
- package/dist/toolbar/publish.test.js +63 -19
- package/dist/toolbar/safe-history.d.ts +3 -0
- package/dist/toolbar/safe-history.d.ts.map +1 -0
- package/dist/toolbar/safe-history.js +5 -0
- package/dist/toolbar/sample-picker.d.ts +24 -4
- package/dist/toolbar/sample-picker.d.ts.map +1 -1
- package/dist/toolbar/sample-picker.js +42 -18
- package/dist/toolbar/toolbar-centre.d.ts +3 -11
- package/dist/toolbar/toolbar-centre.d.ts.map +1 -1
- package/dist/toolbar/toolbar-centre.js +4 -5
- package/dist/toolbar/toolbar-left.d.ts +4 -7
- package/dist/toolbar/toolbar-left.d.ts.map +1 -1
- package/dist/toolbar/toolbar-left.js +13 -11
- package/dist/toolbar/toolbar-right.d.ts +21 -6
- package/dist/toolbar/toolbar-right.d.ts.map +1 -1
- package/dist/toolbar/toolbar-right.js +28 -14
- package/dist/toolbar/toolbar.d.ts +23 -17
- package/dist/toolbar/toolbar.d.ts.map +1 -1
- package/dist/toolbar/toolbar.js +28 -11
- package/dist/toolbar/toolbar.test.js +238 -23
- package/dist/toolbar/use-overflow-level.d.ts +2 -1
- package/dist/toolbar/use-overflow-level.d.ts.map +1 -1
- package/dist/toolbar/use-overflow-level.js +9 -3
- package/dist/toolbar/zoom-menu.d.ts +5 -1
- package/dist/toolbar/zoom-menu.d.ts.map +1 -1
- package/dist/toolbar/zoom-menu.js +3 -2
- package/dist/ui/icon.d.ts +53 -0
- package/dist/ui/icon.d.ts.map +1 -1
- package/dist/ui/icon.js +58 -1
- package/dist/ui/icon.test.js +101 -3
- package/dist/ui/index.d.ts +4 -3
- package/dist/ui/index.d.ts.map +1 -1
- package/dist/ui/index.js +3 -2
- package/dist/ui/primitives.d.ts +97 -14
- package/dist/ui/primitives.d.ts.map +1 -1
- package/dist/ui/primitives.js +108 -22
- package/dist/ui/primitives.test.js +204 -3
- package/dist/ui/structure-locked.d.ts +9 -0
- package/dist/ui/structure-locked.d.ts.map +1 -0
- package/dist/ui/structure-locked.js +28 -0
- package/dist/ui/toast.d.ts +3 -1
- package/dist/ui/toast.d.ts.map +1 -1
- package/dist/ui/toast.js +21 -5
- package/dist/ui/toast.test.js +34 -0
- package/package.json +6 -4
|
@@ -4,6 +4,7 @@ import { createRegistryMeta, createSeededIdGenerator, p, s, } from '@next-buildr
|
|
|
4
4
|
import { act } from 'react';
|
|
5
5
|
import { createRoot } from 'react-dom/client';
|
|
6
6
|
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
|
7
|
+
import { StageSlotsContext } from '../app/stage-slots.js';
|
|
7
8
|
import { MessagesProvider } from '../messages/index.js';
|
|
8
9
|
import { collectIssues, countIssues, filterIssues, IssuesPanel, publishGate, } from '../panels/issues/index.js';
|
|
9
10
|
import { createPersistence, PersistenceProvider, } from '../persistence/index.js';
|
|
@@ -142,32 +143,75 @@ describe('the Issues panel and the publish dialog', () => {
|
|
|
142
143
|
await act(async () => target.click());
|
|
143
144
|
expect(store.getState().selectedIds).toEqual(['widget0001']);
|
|
144
145
|
});
|
|
145
|
-
it('
|
|
146
|
+
it('lists issues worst first as rows with the severity icon, the message and the path', async () => {
|
|
146
147
|
const { store, view } = setup(broken(), 'warn');
|
|
147
148
|
await view(false);
|
|
148
149
|
await act(async () => void store.validateNow());
|
|
149
|
-
const
|
|
150
|
-
expect(
|
|
151
|
-
const order =
|
|
152
|
-
expect(order).toEqual(['error', 'warning', 'info'].
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
expect(
|
|
156
|
-
expect(
|
|
150
|
+
const rows = [...container.querySelectorAll('.bd-issues-list .bd-issue')];
|
|
151
|
+
expect(rows.length).toBeGreaterThan(0);
|
|
152
|
+
const order = rows.map((row) => row.getAttribute('data-severity'));
|
|
153
|
+
expect(order).toEqual([...order].sort((x, y) => ['error', 'warning', 'info'].indexOf(x ?? '') -
|
|
154
|
+
['error', 'warning', 'info'].indexOf(y ?? '')));
|
|
155
|
+
for (const row of rows) {
|
|
156
|
+
expect(row.querySelector('.bd-issue-severity[role=img]')).not.toBeNull();
|
|
157
|
+
expect(row.querySelector('.bd-issue-message')?.textContent).not.toBe('');
|
|
158
|
+
expect(row.querySelector('.bd-issue-path')?.textContent).not.toBe('');
|
|
157
159
|
}
|
|
160
|
+
expect(container.querySelector('.bd-issues-count')?.textContent).toBe(String(rows.length));
|
|
161
|
+
expect(container.querySelector('.bd-issues-head h2')?.textContent).toBe('Issues on the page');
|
|
158
162
|
});
|
|
159
|
-
it('
|
|
163
|
+
it('renders the help text of an issue under its message', async () => {
|
|
164
|
+
const { store, view } = setup(broken(), 'warn');
|
|
165
|
+
await view(false);
|
|
166
|
+
await act(async () => {
|
|
167
|
+
const snapshot = store.validateNow();
|
|
168
|
+
store.setState({
|
|
169
|
+
validation: {
|
|
170
|
+
...snapshot,
|
|
171
|
+
a11y: [
|
|
172
|
+
{
|
|
173
|
+
ruleId: 'r',
|
|
174
|
+
severity: 'warning',
|
|
175
|
+
nodeId: 'widget0001',
|
|
176
|
+
message: 'Missing label',
|
|
177
|
+
help: 'Give it a label.',
|
|
178
|
+
},
|
|
179
|
+
],
|
|
180
|
+
},
|
|
181
|
+
});
|
|
182
|
+
});
|
|
183
|
+
const helps = [...container.querySelectorAll('.bd-issues-list .bd-issue-help')];
|
|
184
|
+
expect(helps.map((help) => help.textContent)).toEqual(['Give it a label.']);
|
|
185
|
+
});
|
|
186
|
+
it('shows an all-good row when nothing was found', async () => {
|
|
187
|
+
const { store, view } = setup(clean(), 'warn');
|
|
188
|
+
await view(false);
|
|
189
|
+
await act(async () => void store.validateNow());
|
|
190
|
+
expect(container.querySelector('.bd-issue-ok')?.textContent).toContain('All good');
|
|
191
|
+
expect(container.querySelector('.bd-issues-count')?.textContent).toBe('0');
|
|
192
|
+
});
|
|
193
|
+
it('closes the drawer through the stage slots, and has no close button without them', async () => {
|
|
194
|
+
const { store, view } = setup(clean(), 'warn');
|
|
195
|
+
await view(false);
|
|
196
|
+
expect(container.querySelector('.bd-issues-head button')).toBeNull();
|
|
197
|
+
const setIssuesOpen = vi.fn();
|
|
198
|
+
await act(async () => root.render(_jsx(MessagesProvider, { locale: "en", children: _jsx(EditorStoreProvider, { store: store, children: _jsx(StageSlotsContext.Provider, { value: { stage: null, issuesOpen: true, setIssuesOpen }, children: _jsx(IssuesPanel, {}) }) }) })));
|
|
199
|
+
const close = container.querySelector('.bd-issues-head button[aria-label="Close issues panel"]');
|
|
200
|
+
expect(close).not.toBeNull();
|
|
201
|
+
await act(async () => close?.click());
|
|
202
|
+
expect(setIssuesOpen).toHaveBeenCalledWith(false);
|
|
203
|
+
});
|
|
204
|
+
it('shows the publish rows and the counts sentence, with scheduling disabled and the primary action focused', async () => {
|
|
160
205
|
const { view } = setup(broken(), 'warn');
|
|
161
206
|
await view(true);
|
|
162
|
-
const
|
|
163
|
-
expect(
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
]);
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
expect(badges[0]?.textContent).toMatch(/[0-9] errors/);
|
|
207
|
+
const dialog = document.querySelector('[role=dialog]');
|
|
208
|
+
expect(dialog?.querySelector('.bd-dialog-icon')).not.toBeNull();
|
|
209
|
+
expect(dialog?.querySelectorAll('.bd-publish-row').length).toBeGreaterThan(0);
|
|
210
|
+
expect(dialog?.querySelector('.bd-publish-counts')?.textContent).toMatch(/[0-9]+ (error|warning|note)/);
|
|
211
|
+
const options = [...(dialog?.querySelectorAll('.bd-publish-option') ?? [])];
|
|
212
|
+
expect(options.map((o) => o.getAttribute('aria-pressed'))).toEqual(['true', 'false']);
|
|
213
|
+
expect(options[1]?.getAttribute('aria-disabled')).toBe('true');
|
|
214
|
+
expect(document.activeElement?.textContent).toBe('Publish');
|
|
171
215
|
});
|
|
172
216
|
it('refuses to publish while errors exist under the block policy', async () => {
|
|
173
217
|
const { publish, view } = setup(broken(), 'block');
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safe-history.d.ts","sourceRoot":"","sources":["../../src/toolbar/safe-history.ts"],"names":[],"mappings":"AAEA,mGAAmG;AACnG,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,EACrE,OAAO,EAAE,CAAC,GACT,CAAC,GAAG,SAAS,CAEf"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { isSafePreviewUrl } from '../preview/index.js';
|
|
2
|
+
/** The version history link of the host: a callback as it is, a URL only when it is a safe one. */
|
|
3
|
+
export function safeHistory(history) {
|
|
4
|
+
return typeof history === 'string' && !isSafePreviewUrl(history) ? undefined : history;
|
|
5
|
+
}
|
|
@@ -9,10 +9,30 @@ export interface SamplePickerProps {
|
|
|
9
9
|
/** Where the choice is remembered; `localStorage` unless a test or host gives another. */
|
|
10
10
|
readonly storage?: Pick<Storage, 'getItem' | 'setItem'> | undefined;
|
|
11
11
|
}
|
|
12
|
+
export interface SamplesState {
|
|
13
|
+
readonly samples: readonly {
|
|
14
|
+
id: string;
|
|
15
|
+
label: string;
|
|
16
|
+
}[];
|
|
17
|
+
/** The chosen sample id, or DEFAULT_SAMPLE. */
|
|
18
|
+
readonly value: string;
|
|
19
|
+
/** The chosen entry's label; undefined while the default entry is in use. */
|
|
20
|
+
readonly label: string | undefined;
|
|
21
|
+
select(next: string): void;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* The samples the adapter lists for a document and the remembered choice (docs/editor.md#sample-data):
|
|
25
|
+
* the choice is sent to the canvas as its context and remembered per document. Does nothing without
|
|
26
|
+
* props; samples stays empty when the adapter lists none (a page, not a template).
|
|
27
|
+
*/
|
|
28
|
+
export declare function useSamples(props: SamplePickerProps | undefined): SamplesState;
|
|
29
|
+
/** The select that chooses the sample entry, for a useSamples state; nothing when there are none. */
|
|
30
|
+
export declare function SampleSelect({ state }: {
|
|
31
|
+
readonly state: SamplesState;
|
|
32
|
+
}): import("react").JSX.Element | null;
|
|
12
33
|
/**
|
|
13
|
-
* Chooses which entry a template is shown with (docs/editor.md#sample-data)
|
|
14
|
-
* lists
|
|
15
|
-
* when the adapter lists no samples (a page, not a template).
|
|
34
|
+
* Chooses which entry a template is shown with (docs/editor.md#sample-data). Renders nothing when the
|
|
35
|
+
* adapter lists no samples.
|
|
16
36
|
*/
|
|
17
|
-
export declare function SamplePicker(
|
|
37
|
+
export declare function SamplePicker(props: SamplePickerProps): import("react").JSX.Element;
|
|
18
38
|
//# sourceMappingURL=sample-picker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sample-picker.d.ts","sourceRoot":"","sources":["../../src/toolbar/sample-picker.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAG5E,4EAA4E;AAC5E,eAAO,MAAM,cAAc,gBAAgB,CAAC;AAE5C,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;IACvD,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,gFAAgF;IAChF,QAAQ,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACvD,0FAA0F;IAC1F,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;CACrE;AAmBD;;;;GAIG;AACH,wBAAgB,
|
|
1
|
+
{"version":3,"file":"sample-picker.d.ts","sourceRoot":"","sources":["../../src/toolbar/sample-picker.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAG5E,4EAA4E;AAC5E,eAAO,MAAM,cAAc,gBAAgB,CAAC;AAE5C,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;IACvD,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,gFAAgF;IAChF,QAAQ,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACvD,0FAA0F;IAC1F,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;CACrE;AAmBD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,EAAE,SAAS;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC3D,+CAA+C;IAC/C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,6EAA6E;IAC7E,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,iBAAiB,GAAG,SAAS,GAAG,YAAY,CAgD7E;AAED,qGAAqG;AACrG,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAA;CAAE,sCAcvE;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,+BAEpD"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { useEffect, useState } from 'react';
|
|
2
|
+
import { useEffect, useRef, useState } from 'react';
|
|
3
3
|
import { useT } from '../messages/index.js';
|
|
4
4
|
import { Select } from '../ui/index.js';
|
|
5
5
|
/** The choice that leaves the canvas on the adapter's own default entry. */
|
|
@@ -22,19 +22,23 @@ const write = (storage, key, value) => {
|
|
|
22
22
|
}
|
|
23
23
|
};
|
|
24
24
|
/**
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
* when the adapter lists
|
|
25
|
+
* The samples the adapter lists for a document and the remembered choice (docs/editor.md#sample-data):
|
|
26
|
+
* the choice is sent to the canvas as its context and remembered per document. Does nothing without
|
|
27
|
+
* props; samples stays empty when the adapter lists none (a page, not a template).
|
|
28
28
|
*/
|
|
29
|
-
export function
|
|
30
|
-
const t = useT();
|
|
29
|
+
export function useSamples(props) {
|
|
31
30
|
const [samples, setSamples] = useState([]);
|
|
32
31
|
const [value, setValue] = useState(DEFAULT_SAMPLE);
|
|
33
|
-
const
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
|
|
32
|
+
const adapter = props?.adapter;
|
|
33
|
+
const storage = props?.storage;
|
|
34
|
+
const collection = props?.docRef.collection;
|
|
35
|
+
const id = props?.docRef.id;
|
|
36
|
+
// The latest callback, so a fresh closure every render does not restart the effect.
|
|
37
|
+
const onChange = useRef(props?.onChange);
|
|
38
|
+
onChange.current = props?.onChange;
|
|
37
39
|
useEffect(() => {
|
|
40
|
+
if (adapter === undefined || collection === undefined || id === undefined)
|
|
41
|
+
return;
|
|
38
42
|
let cancelled = false;
|
|
39
43
|
const ref = { collection, id };
|
|
40
44
|
void (async () => {
|
|
@@ -52,21 +56,41 @@ export function SamplePicker({ adapter, docRef, onChange, storage }) {
|
|
|
52
56
|
// A remembered entry that no longer exists is forgotten, not sent to the canvas.
|
|
53
57
|
if (saved !== null && list.some((sample) => sample.id === saved)) {
|
|
54
58
|
setValue(saved);
|
|
55
|
-
onChange(saved);
|
|
59
|
+
onChange.current?.(saved);
|
|
56
60
|
}
|
|
57
61
|
})();
|
|
58
62
|
return () => {
|
|
59
63
|
cancelled = true;
|
|
60
64
|
};
|
|
61
65
|
}, [adapter, collection, id, storage]);
|
|
62
|
-
|
|
66
|
+
const select = (next) => {
|
|
67
|
+
if (collection === undefined || id === undefined)
|
|
68
|
+
return;
|
|
69
|
+
setValue(next);
|
|
70
|
+
write(storage, keyOf({ collection, id }), next);
|
|
71
|
+
onChange.current?.(next === DEFAULT_SAMPLE ? null : next);
|
|
72
|
+
};
|
|
73
|
+
return {
|
|
74
|
+
samples,
|
|
75
|
+
value,
|
|
76
|
+
label: samples.find((sample) => sample.id === value)?.label,
|
|
77
|
+
select,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
/** The select that chooses the sample entry, for a useSamples state; nothing when there are none. */
|
|
81
|
+
export function SampleSelect({ state }) {
|
|
82
|
+
const t = useT();
|
|
83
|
+
if (state.samples.length === 0)
|
|
63
84
|
return null;
|
|
64
|
-
return (_jsx(Select, { label: t('sample.label'), value: value, onValueChange:
|
|
65
|
-
setValue(next);
|
|
66
|
-
write(storage, keyOf({ collection, id }), next);
|
|
67
|
-
onChange(next === DEFAULT_SAMPLE ? null : next);
|
|
68
|
-
}, options: [
|
|
85
|
+
return (_jsx(Select, { label: t('sample.label'), value: state.value, onValueChange: state.select, options: [
|
|
69
86
|
{ value: DEFAULT_SAMPLE, label: t('sample.default') },
|
|
70
|
-
...samples.map((sample) => ({ value: sample.id, label: sample.label })),
|
|
87
|
+
...state.samples.map((sample) => ({ value: sample.id, label: sample.label })),
|
|
71
88
|
] }));
|
|
72
89
|
}
|
|
90
|
+
/**
|
|
91
|
+
* Chooses which entry a template is shown with (docs/editor.md#sample-data). Renders nothing when the
|
|
92
|
+
* adapter lists no samples.
|
|
93
|
+
*/
|
|
94
|
+
export function SamplePicker(props) {
|
|
95
|
+
return _jsx(SampleSelect, { state: useSamples(props) });
|
|
96
|
+
}
|
|
@@ -1,13 +1,5 @@
|
|
|
1
|
-
import type
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
readonly breakpoints: readonly BreakpointConfig[];
|
|
5
|
-
readonly breakpoint: string;
|
|
6
|
-
readonly onBreakpointChange: (id: string) => void;
|
|
7
|
-
/** The canvas zoom and how to change it (`host.setZoom`); the zoom menu is left out without a handler. */
|
|
8
|
-
readonly zoom?: Zoom | undefined;
|
|
9
|
-
readonly onZoomChange?: ((zoom: Zoom) => void) | undefined;
|
|
10
|
-
}
|
|
11
|
-
/** The screen-size control and the zoom menu. */
|
|
1
|
+
import { type PageChipProps } from './page-chip.tsx';
|
|
2
|
+
export type ToolbarCentreProps = PageChipProps;
|
|
3
|
+
/** The page chip, which opens the page options. */
|
|
12
4
|
export declare function ToolbarCentre(props: ToolbarCentreProps): import("react").JSX.Element;
|
|
13
5
|
//# sourceMappingURL=toolbar-centre.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolbar-centre.d.ts","sourceRoot":"","sources":["../../src/toolbar/toolbar-centre.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"toolbar-centre.d.ts","sourceRoot":"","sources":["../../src/toolbar/toolbar-centre.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAE/D,MAAM,MAAM,kBAAkB,GAAG,aAAa,CAAC;AAE/C,mDAAmD;AACnD,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,+BAMtD"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { jsx as _jsx
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
/** The screen-size control and the zoom menu. */
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { PageChip } from './page-chip.js';
|
|
3
|
+
/** The page chip, which opens the page options. */
|
|
5
4
|
export function ToolbarCentre(props) {
|
|
6
|
-
return (
|
|
5
|
+
return (_jsx("div", { className: "bd-toolbar-cluster", "data-zone": "centre", children: _jsx(PageChip, { ...props }) }));
|
|
7
6
|
}
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
export interface ToolbarLeftProps {
|
|
2
|
-
readonly title: string;
|
|
3
|
-
/** Saves a new page name; without it (the backend cannot rename) the title is plain text. */
|
|
4
|
-
readonly onRename?: ((title: string) => Promise<void>) | undefined;
|
|
5
|
-
/** Draft or published; the pill is left out without it. */
|
|
6
|
-
readonly status?: 'draft' | 'published' | undefined;
|
|
7
2
|
/** The page in the CMS's admin; the link is left out without it, or when it moved to the more menu. */
|
|
8
3
|
readonly cmsUrl?: string | undefined;
|
|
4
|
+
/** A phone-wide row: only the panel toggle, undo and redo stay (the mark and the back link are left out). */
|
|
5
|
+
readonly compact?: boolean;
|
|
9
6
|
}
|
|
10
|
-
/**
|
|
11
|
-
export declare function ToolbarLeft({
|
|
7
|
+
/** Back to the CMS, the product mark, a divider, the left panel toggle, undo and redo. */
|
|
8
|
+
export declare function ToolbarLeft({ cmsUrl, compact }: ToolbarLeftProps): import("react").JSX.Element;
|
|
12
9
|
//# sourceMappingURL=toolbar-left.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolbar-left.d.ts","sourceRoot":"","sources":["../../src/toolbar/toolbar-left.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"toolbar-left.d.ts","sourceRoot":"","sources":["../../src/toolbar/toolbar-left.tsx"],"names":[],"mappings":"AAOA,MAAM,WAAW,gBAAgB;IAC/B,uGAAuG;IACvG,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,6GAA6G;IAC7G,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,0FAA0F;AAC1F,wBAAgB,WAAW,CAAC,EAAE,MAAM,EAAE,OAAe,EAAE,EAAE,gBAAgB,+BA+CxE"}
|
|
@@ -1,16 +1,18 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useT } from '../messages/index.js';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { useShortcutHint } from '../shortcuts/index.js';
|
|
4
|
+
import { useEditor, useEditorState } from '../store/index.js';
|
|
5
|
+
import { Icon, IconButton, Tooltip } from '../ui/index.js';
|
|
5
6
|
import { Brand } from './brand.js';
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
published: 'toolbar.status.published',
|
|
10
|
-
};
|
|
11
|
-
/** The product mark, back to the CMS as an icon button, the page name and its draft or published pill. */
|
|
12
|
-
export function ToolbarLeft({ title, onRename, status, cmsUrl }) {
|
|
7
|
+
import { PanelToggle } from './panel-toggles.js';
|
|
8
|
+
/** Back to the CMS, the product mark, a divider, the left panel toggle, undo and redo. */
|
|
9
|
+
export function ToolbarLeft({ cmsUrl, compact = false }) {
|
|
13
10
|
const t = useT();
|
|
11
|
+
const store = useEditor();
|
|
12
|
+
const canUndo = useEditorState((state) => state.canUndo);
|
|
13
|
+
const canRedo = useEditorState((state) => state.canRedo);
|
|
14
14
|
const readOnly = useEditorState((state) => state.readOnly);
|
|
15
|
-
|
|
15
|
+
const undoHint = useShortcutHint('edit.undo');
|
|
16
|
+
const redoHint = useShortcutHint('edit.redo');
|
|
17
|
+
return (_jsxs("div", { className: "bd-toolbar-cluster", "data-zone": "left", children: [cmsUrl !== undefined && !compact && (_jsx(Tooltip, { content: t('toolbar.backToCms'), children: _jsx("a", { className: "bd-button bd-icon-button bd-toolbar-link", "data-variant": "ghost", href: cmsUrl, "aria-label": t('toolbar.backToCms'), children: _jsx(Icon, { name: "arrow-left" }) }) })), !compact && (_jsxs(_Fragment, { children: [_jsx(Brand, {}), _jsx("span", { className: "bd-toolbar-divider", "aria-hidden": "true" })] })), _jsx(PanelToggle, { side: "left" }), _jsx(IconButton, { label: t('toolbar.undo'), hint: undoHint, icon: "undo-2", variant: "ghost", disabled: !canUndo || readOnly, onClick: () => store.undo() }), _jsx(IconButton, { label: t('toolbar.redo'), hint: redoHint, icon: "redo-2", variant: "ghost", disabled: !canRedo || readOnly, onClick: () => store.redo() })] }));
|
|
16
18
|
}
|
|
@@ -1,19 +1,34 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { BreakpointConfig } from '../app/config.ts';
|
|
2
|
+
import { type MoreMenuProps } from './more-menu.tsx';
|
|
2
3
|
export interface ToolbarRightProps {
|
|
3
|
-
|
|
4
|
-
readonly
|
|
4
|
+
readonly breakpoints: readonly BreakpointConfig[];
|
|
5
|
+
readonly breakpoint: string;
|
|
6
|
+
readonly onBreakpointChange: (id: string) => void;
|
|
5
7
|
readonly status: string;
|
|
8
|
+
readonly onLocaleChange?: ((locale: string) => void) | undefined;
|
|
6
9
|
readonly onPreview?: (() => void) | undefined;
|
|
7
10
|
readonly onPublish?: (() => void) | undefined;
|
|
8
11
|
readonly canPublish?: boolean | undefined;
|
|
9
12
|
/** The save text is visually hidden (the row is tight). */
|
|
10
13
|
readonly compactSave: boolean;
|
|
11
|
-
/**
|
|
12
|
-
|
|
14
|
+
/**
|
|
15
|
+
* A phone-wide row: the screen size, the content language and Preview move into the more menu, and
|
|
16
|
+
* Publish keeps its icon (`tight`: without its text).
|
|
17
|
+
*/
|
|
18
|
+
readonly compact?: boolean;
|
|
19
|
+
readonly tight?: boolean;
|
|
20
|
+
/** The version history: an icon link in the row, or an item of the more menu when the row is tight. */
|
|
21
|
+
readonly historyUrl?: string | (() => void) | undefined;
|
|
13
22
|
readonly historyInMenu: boolean;
|
|
14
23
|
/** The CMS link, when the row had no room for it; the more menu lists it. */
|
|
15
24
|
readonly moreCmsUrl?: string | undefined;
|
|
25
|
+
readonly sample?: MoreMenuProps['sample'];
|
|
26
|
+
readonly helpUrl?: string | undefined;
|
|
27
|
+
readonly onOpenShortcuts?: (() => void) | undefined;
|
|
16
28
|
}
|
|
17
|
-
/**
|
|
29
|
+
/**
|
|
30
|
+
* Screen size, save status, content language, version history, Preview, the more menu, the right
|
|
31
|
+
* panel toggle and Publish (the one primary action).
|
|
32
|
+
*/
|
|
18
33
|
export declare function ToolbarRight(props: ToolbarRightProps): import("react").JSX.Element;
|
|
19
34
|
//# sourceMappingURL=toolbar-right.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolbar-right.d.ts","sourceRoot":"","sources":["../../src/toolbar/toolbar-right.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"toolbar-right.d.ts","sourceRoot":"","sources":["../../src/toolbar/toolbar-right.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAMzD,OAAO,EAAY,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAK/D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,WAAW,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAClD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,kBAAkB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAClD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACjE,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1C,2DAA2D;IAC3D,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,uGAAuG;IACvG,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IACxD,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,6EAA6E;IAC7E,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC1C,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;CACrD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,+BA+FpD"}
|
|
@@ -1,21 +1,35 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useT } from '../messages/index.js';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
3
|
+
import { useEditorState } from '../store/index.js';
|
|
4
|
+
import { Button, Icon, Tooltip } from '../ui/index.js';
|
|
5
|
+
import { BreakpointControl } from './breakpoint-control.js';
|
|
6
|
+
import { LocaleChip } from './locale-chip.js';
|
|
6
7
|
import { MoreMenu } from './more-menu.js';
|
|
8
|
+
import { PanelToggle } from './panel-toggles.js';
|
|
9
|
+
import { safeHistory } from './safe-history.js';
|
|
7
10
|
import { SaveIndicator } from './save-indicator.js';
|
|
8
|
-
/**
|
|
11
|
+
/**
|
|
12
|
+
* Screen size, save status, content language, version history, Preview, the more menu, the right
|
|
13
|
+
* panel toggle and Publish (the one primary action).
|
|
14
|
+
*/
|
|
9
15
|
export function ToolbarRight(props) {
|
|
10
16
|
const t = useT();
|
|
11
|
-
const store = useEditor();
|
|
12
|
-
const canUndo = useEditorState((state) => state.canUndo);
|
|
13
|
-
const canRedo = useEditorState((state) => state.canRedo);
|
|
14
17
|
const readOnly = useEditorState((state) => state.readOnly);
|
|
15
|
-
const
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
const compact = props.compact === true;
|
|
19
|
+
const historyUrl = safeHistory(props.historyUrl);
|
|
20
|
+
const publishDisabled = props.onPublish === undefined ||
|
|
21
|
+
props.canPublish === false ||
|
|
22
|
+
readOnly ||
|
|
23
|
+
props.status === 'conflict';
|
|
24
|
+
return (_jsxs("div", { className: "bd-toolbar-cluster", "data-zone": "right", children: [!compact && (_jsxs(_Fragment, { children: [_jsx(BreakpointControl, { breakpoints: props.breakpoints, breakpoint: props.breakpoint, onChange: props.onBreakpointChange }), _jsx("span", { className: "bd-toolbar-divider", "aria-hidden": "true" })] })), _jsx(SaveIndicator, { compact: props.compactSave }), !compact && _jsx(LocaleChip, { onChange: props.onLocaleChange }), historyUrl !== undefined &&
|
|
25
|
+
!props.historyInMenu &&
|
|
26
|
+
(typeof historyUrl === 'function' ? (_jsx(Tooltip, { content: t('toolbar.versions'), children: _jsx(Button, { variant: "ghost", className: "bd-icon-button", "aria-label": t('toolbar.versions'), onClick: historyUrl, children: _jsx(Icon, { name: "history" }) }) })) : (_jsx(Tooltip, { content: t('toolbar.versions'), children: _jsx("a", { className: "bd-button bd-icon-button bd-toolbar-link", "data-variant": "ghost", href: historyUrl, "aria-label": t('toolbar.versions'), children: _jsx(Icon, { name: "history" }) }) }))), !compact && (_jsx(Tooltip, { content: t('toolbar.preview.newTab'), children: _jsx(Button, { variant: "ghost", className: "bd-icon-button", "aria-label": t('toolbar.preview.page'), onClick: props.onPreview, disabled: props.onPreview === undefined, children: _jsx(Icon, { name: "eye" }) }) })), _jsx(MoreMenu, { compact: compact
|
|
27
|
+
? {
|
|
28
|
+
breakpoints: props.breakpoints,
|
|
29
|
+
breakpoint: props.breakpoint,
|
|
30
|
+
onBreakpointChange: props.onBreakpointChange,
|
|
31
|
+
onPreview: props.onPreview,
|
|
32
|
+
onLocaleChange: props.onLocaleChange,
|
|
33
|
+
}
|
|
34
|
+
: undefined, historyUrl: props.historyInMenu ? historyUrl : undefined, cmsUrl: props.moreCmsUrl, sample: props.sample, helpUrl: props.helpUrl, onOpenShortcuts: props.onOpenShortcuts }), _jsx(PanelToggle, { side: "right" }), _jsxs(Button, { variant: "primary", className: "bd-publish", "aria-haspopup": "dialog", "aria-label": props.tight === true ? t('toolbar.publish') : undefined, "data-icon-only": props.tight === true, onClick: props.onPublish, disabled: publishDisabled, children: [compact && _jsx(Icon, { name: "send" }), props.tight !== true && t('toolbar.publish')] })] }));
|
|
21
35
|
}
|
|
@@ -1,26 +1,32 @@
|
|
|
1
|
-
import { type ReactNode } from 'react';
|
|
2
1
|
import type { BreakpointConfig } from '../app/config.ts';
|
|
3
|
-
import type
|
|
2
|
+
import { type SamplePickerProps } from './sample-picker.tsx';
|
|
4
3
|
export interface ToolbarProps {
|
|
5
|
-
/** The document's title, shown
|
|
4
|
+
/** The document's title, shown in the page chip and renamed in the page options. */
|
|
6
5
|
readonly title: string;
|
|
7
|
-
/** Saves a new page name (`adapter.rename`); the
|
|
6
|
+
/** Saves a new page name (`adapter.rename`); the name is read-only without it. */
|
|
8
7
|
readonly onTitleChange?: ((title: string) => Promise<void>) | undefined;
|
|
9
|
-
/**
|
|
8
|
+
/** The page's address, read-only in the page options; the row is left out without it. */
|
|
9
|
+
readonly slug?: string | undefined;
|
|
10
|
+
/** Draft or published, as a small chip in the page chip. */
|
|
10
11
|
readonly status?: 'draft' | 'published' | undefined;
|
|
11
12
|
readonly breakpoints: readonly BreakpointConfig[];
|
|
12
13
|
readonly breakpoint: string;
|
|
13
14
|
readonly onBreakpointChange: (id: string) => void;
|
|
14
|
-
/** The canvas zoom (`host.setZoom`); `fit` when left out. */
|
|
15
|
-
readonly zoom?: Zoom | undefined;
|
|
16
|
-
/** Changes the canvas zoom; the zoom menu is left out without it. */
|
|
17
|
-
readonly onZoomChange?: ((zoom: Zoom) => void) | undefined;
|
|
18
15
|
/** The page in the CMS's admin (`adapter.cmsUrl`); the link is left out without it. */
|
|
19
16
|
readonly cmsUrl?: string | undefined;
|
|
20
|
-
/** The version history
|
|
21
|
-
readonly historyUrl?: string | undefined;
|
|
22
|
-
/** The
|
|
23
|
-
readonly
|
|
17
|
+
/** The version history: an address (a link) or a function (a button); the icon is left out without it. */
|
|
18
|
+
readonly historyUrl?: string | (() => void) | undefined;
|
|
19
|
+
/** The help page; the Help row of the more menu is left out without it. */
|
|
20
|
+
readonly helpUrl?: string | undefined;
|
|
21
|
+
/** Opens the shortcuts dialog from the more menu; without it the shortcut provider's own opener is used. */
|
|
22
|
+
readonly onOpenShortcuts?: (() => void) | undefined;
|
|
23
|
+
/** Tells the canvas which content language to render (`CanvasHost.setLocale`). */
|
|
24
|
+
readonly onLocaleChange?: ((locale: string) => void) | undefined;
|
|
25
|
+
/** The sample data source (templates); without it there is no sample data. */
|
|
26
|
+
readonly sample?: SamplePickerProps | undefined;
|
|
27
|
+
/** The page options dialog's state, when the shell controls it (the inspector's "Page settings" opens it too). */
|
|
28
|
+
readonly pageOptionsOpen?: boolean | undefined;
|
|
29
|
+
readonly onPageOptionsOpenChange?: ((open: boolean) => void) | undefined;
|
|
24
30
|
/** Flushes the save and opens the preview (PB-091). */
|
|
25
31
|
readonly onPreview?: (() => void) | undefined;
|
|
26
32
|
/** Opens the publish dialog (PB-088). */
|
|
@@ -29,10 +35,10 @@ export interface ToolbarProps {
|
|
|
29
35
|
readonly canPublish?: boolean | undefined;
|
|
30
36
|
}
|
|
31
37
|
/**
|
|
32
|
-
* The editor's primary actions (docs/editor.md#toolbar-pb-083) in
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
* controller from context;
|
|
38
|
+
* The editor's primary actions (docs/editor.md#toolbar-pb-083) in a `1fr / auto / 1fr` grid. Left:
|
|
39
|
+
* back, mark, left panel toggle, undo, redo. Centre: the page chip (opens the page options). Right:
|
|
40
|
+
* screen size, save status, content language, history, Preview, more, right panel toggle, Publish.
|
|
41
|
+
* It reads the store and the persistence controller from context; shortcuts show in the tooltips.
|
|
36
42
|
*/
|
|
37
43
|
export declare function Toolbar(props: ToolbarProps): import("react").JSX.Element;
|
|
38
44
|
//# sourceMappingURL=toolbar.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolbar.d.ts","sourceRoot":"","sources":["../../src/toolbar/toolbar.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"toolbar.d.ts","sourceRoot":"","sources":["../../src/toolbar/toolbar.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAKzD,OAAO,EAAE,KAAK,iBAAiB,EAAc,MAAM,qBAAqB,CAAC;AAMzE,MAAM,WAAW,YAAY;IAC3B,oFAAoF;IACpF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,kFAAkF;IAClF,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;IACxE,yFAAyF;IACzF,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,4DAA4D;IAC5D,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC;IACpD,QAAQ,CAAC,WAAW,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAClD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,kBAAkB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAClD,uFAAuF;IACvF,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,0GAA0G;IAC1G,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IACxD,2EAA2E;IAC3E,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,4GAA4G;IAC5G,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IACpD,kFAAkF;IAClF,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACjE,8EAA8E;IAC9E,QAAQ,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAChD,kHAAkH;IAClH,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/C,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACzE,uDAAuD;IACvD,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IAC9C,yCAAyC;IACzC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IAC9C,mEAAmE;IACnE,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC3C;AASD;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,+BA6D1C"}
|
package/dist/toolbar/toolbar.js
CHANGED
|
@@ -1,27 +1,44 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useRef } from 'react';
|
|
2
|
+
import { useRef, useState } from 'react';
|
|
3
|
+
import { useShellPanels } from '../app/shell-panels.js';
|
|
3
4
|
import { usePersistenceState } from '../persistence/index.js';
|
|
4
|
-
import {
|
|
5
|
+
import { useEditorState } from '../store/index.js';
|
|
6
|
+
import { PageOptionsDialog } from './page-options-dialog.js';
|
|
7
|
+
import { useSamples } from './sample-picker.js';
|
|
5
8
|
import { ToolbarCentre } from './toolbar-centre.js';
|
|
6
9
|
import { ToolbarLeft } from './toolbar-left.js';
|
|
7
10
|
import { ToolbarRight } from './toolbar-right.js';
|
|
8
11
|
import { useOverflowLevel } from './use-overflow-level.js';
|
|
9
12
|
/**
|
|
10
|
-
* What changes as the row runs out of room, in order (a step is taken only when
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
+
* What changes as the row runs out of room, in order (a step is taken only when a zone overflows):
|
|
14
|
+
* 1 the version history moves into the more menu, 2 the save text becomes icon only, 3 the link
|
|
15
|
+
* back to the CMS moves into the more menu, 4 the page name and the product name are hidden.
|
|
13
16
|
*/
|
|
14
17
|
const COLLAPSE = { versions: 1, saveText: 2, cms: 3, title: 4 };
|
|
15
18
|
/**
|
|
16
|
-
* The editor's primary actions (docs/editor.md#toolbar-pb-083) in
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* controller from context;
|
|
19
|
+
* The editor's primary actions (docs/editor.md#toolbar-pb-083) in a `1fr / auto / 1fr` grid. Left:
|
|
20
|
+
* back, mark, left panel toggle, undo, redo. Centre: the page chip (opens the page options). Right:
|
|
21
|
+
* screen size, save status, content language, history, Preview, more, right panel toggle, Publish.
|
|
22
|
+
* It reads the store and the persistence controller from context; shortcuts show in the tooltips.
|
|
20
23
|
*/
|
|
21
24
|
export function Toolbar(props) {
|
|
22
25
|
const row = useRef(null);
|
|
23
26
|
const level = useOverflowLevel(row, COLLAPSE.title);
|
|
24
27
|
const status = usePersistenceState((state) => state.status);
|
|
25
|
-
const
|
|
26
|
-
|
|
28
|
+
const readOnly = useEditorState((state) => state.readOnly);
|
|
29
|
+
const [ownOpen, setOwnOpen] = useState(false);
|
|
30
|
+
const optionsOpen = props.pageOptionsOpen ?? ownOpen;
|
|
31
|
+
const setOptionsOpen = (open) => {
|
|
32
|
+
setOwnOpen(open);
|
|
33
|
+
props.onPageOptionsOpenChange?.(open);
|
|
34
|
+
};
|
|
35
|
+
const samples = useSamples(props.sample);
|
|
36
|
+
// A phone-wide editor (the layout says so) collapses the row by design, not by measuring.
|
|
37
|
+
const panels = useShellPanels();
|
|
38
|
+
const compact = panels?.compact === true;
|
|
39
|
+
const tight = panels?.tight === true;
|
|
40
|
+
const cmsMoved = compact || level >= COLLAPSE.cms;
|
|
41
|
+
return (_jsxs("div", { className: "bd-toolbar-row", ref: row, "data-level": level, "data-compact": compact, children: [_jsx(ToolbarLeft, { cmsUrl: cmsMoved ? undefined : props.cmsUrl, compact: compact }), _jsx(ToolbarCentre, { title: props.title, status: props.status, open: optionsOpen, onOpen: () => setOptionsOpen(true) }), _jsx(ToolbarRight, { breakpoints: props.breakpoints, breakpoint: props.breakpoint, onBreakpointChange: props.onBreakpointChange, status: status, onLocaleChange: props.onLocaleChange, onPreview: props.onPreview, onPublish: props.onPublish, canPublish: props.canPublish, compactSave: compact || level >= COLLAPSE.saveText, compact: compact, tight: tight, historyUrl: props.historyUrl, historyInMenu: compact || level >= COLLAPSE.versions, moreCmsUrl: cmsMoved ? props.cmsUrl : undefined, sample: samples.samples.length > 0
|
|
42
|
+
? { entry: samples.label, onOpen: () => setOptionsOpen(true) }
|
|
43
|
+
: undefined, helpUrl: props.helpUrl, onOpenShortcuts: props.onOpenShortcuts }), _jsx(PageOptionsDialog, { open: optionsOpen, onOpenChange: setOptionsOpen, title: props.title, onRename: props.onTitleChange, slug: props.slug, readOnly: readOnly, samples: samples })] }));
|
|
27
44
|
}
|