@next-buildr/editor 0.0.0-stage → 2.0.1
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/LICENSE +21 -0
- package/README.md +4 -2
- package/dist/.tsbuildinfo +1 -0
- package/dist/app/builder-editor.d.ts +8 -0
- package/dist/app/builder-editor.d.ts.map +1 -0
- package/dist/app/builder-editor.js +14 -0
- package/dist/app/builder-editor.test.d.ts +2 -0
- package/dist/app/builder-editor.test.d.ts.map +1 -0
- package/dist/app/builder-editor.test.js +199 -0
- package/dist/app/config.d.ts +59 -0
- package/dist/app/config.d.ts.map +1 -0
- package/dist/app/config.js +18 -0
- package/dist/app/content-language.test.d.ts +2 -0
- package/dist/app/content-language.test.d.ts.map +1 -0
- package/dist/app/content-language.test.js +157 -0
- package/dist/app/editor-app.d.ts +17 -0
- package/dist/app/editor-app.d.ts.map +1 -0
- package/dist/app/editor-app.js +206 -0
- package/dist/app/editor-app.test.d.ts +2 -0
- package/dist/app/editor-app.test.d.ts.map +1 -0
- package/dist/app/editor-app.test.js +135 -0
- package/dist/app/layout.d.ts +32 -0
- package/dist/app/layout.d.ts.map +1 -0
- package/dist/app/layout.js +82 -0
- package/dist/app/manifest.d.ts +12 -0
- package/dist/app/manifest.d.ts.map +1 -0
- package/dist/app/manifest.js +17 -0
- package/dist/app/shell-panels.d.ts +15 -0
- package/dist/app/shell-panels.d.ts.map +1 -0
- package/dist/app/shell-panels.js +5 -0
- package/dist/app/small-screen.d.ts +12 -0
- package/dist/app/small-screen.d.ts.map +1 -0
- package/dist/app/small-screen.js +33 -0
- package/dist/app/small-screen.test.d.ts +2 -0
- package/dist/app/small-screen.test.d.ts.map +1 -0
- package/dist/app/small-screen.test.js +108 -0
- package/dist/app/status-info.d.ts +14 -0
- package/dist/app/status-info.d.ts.map +1 -0
- package/dist/app/status-info.js +34 -0
- package/dist/app/use-resizable.d.ts +34 -0
- package/dist/app/use-resizable.d.ts.map +1 -0
- package/dist/app/use-resizable.js +84 -0
- package/dist/canvas-host/canvas-frame.d.ts +53 -0
- package/dist/canvas-host/canvas-frame.d.ts.map +1 -0
- package/dist/canvas-host/canvas-frame.js +146 -0
- package/dist/canvas-host/canvas-frame.test.d.ts +2 -0
- package/dist/canvas-host/canvas-frame.test.d.ts.map +1 -0
- package/dist/canvas-host/canvas-frame.test.js +91 -0
- package/dist/canvas-host/host.d.ts +109 -0
- package/dist/canvas-host/host.d.ts.map +1 -0
- package/dist/canvas-host/host.js +293 -0
- package/dist/canvas-host/host.test.d.ts +2 -0
- package/dist/canvas-host/host.test.d.ts.map +1 -0
- package/dist/canvas-host/host.test.js +398 -0
- package/dist/canvas-host/index.d.ts +5 -0
- package/dist/canvas-host/index.d.ts.map +1 -0
- package/dist/canvas-host/index.js +2 -0
- package/dist/clipboard/clipboard.d.ts +38 -0
- package/dist/clipboard/clipboard.d.ts.map +1 -0
- package/dist/clipboard/clipboard.js +160 -0
- package/dist/clipboard/clipboard.test.d.ts +2 -0
- package/dist/clipboard/clipboard.test.d.ts.map +1 -0
- package/dist/clipboard/clipboard.test.js +457 -0
- package/dist/clipboard/format.d.ts +27 -0
- package/dist/clipboard/format.d.ts.map +1 -0
- package/dist/clipboard/format.js +37 -0
- package/dist/clipboard/index.d.ts +6 -0
- package/dist/clipboard/index.d.ts.map +1 -0
- package/dist/clipboard/index.js +3 -0
- package/dist/clipboard/react.d.ts +20 -0
- package/dist/clipboard/react.d.ts.map +1 -0
- package/dist/clipboard/react.js +71 -0
- package/dist/dialogs/index.d.ts +2 -0
- package/dist/dialogs/index.d.ts.map +1 -0
- package/dist/dialogs/index.js +1 -0
- package/dist/dialogs/media-picker/index.d.ts +7 -0
- package/dist/dialogs/media-picker/index.d.ts.map +1 -0
- package/dist/dialogs/media-picker/index.js +3 -0
- package/dist/dialogs/media-picker/library.d.ts +17 -0
- package/dist/dialogs/media-picker/library.d.ts.map +1 -0
- package/dist/dialogs/media-picker/library.js +9 -0
- package/dist/dialogs/media-picker/media-picker.d.ts +18 -0
- package/dist/dialogs/media-picker/media-picker.d.ts.map +1 -0
- package/dist/dialogs/media-picker/media-picker.js +99 -0
- package/dist/dialogs/media-picker/media-picker.test.d.ts +2 -0
- package/dist/dialogs/media-picker/media-picker.test.d.ts.map +1 -0
- package/dist/dialogs/media-picker/media-picker.test.js +161 -0
- package/dist/dialogs/media-picker/media-ref.d.ts +28 -0
- package/dist/dialogs/media-picker/media-ref.d.ts.map +1 -0
- package/dist/dialogs/media-picker/media-ref.js +52 -0
- package/dist/dnd/check.d.ts +8 -0
- package/dist/dnd/check.d.ts.map +1 -0
- package/dist/dnd/check.js +12 -0
- package/dist/dnd/destinations.d.ts +15 -0
- package/dist/dnd/destinations.d.ts.map +1 -0
- package/dist/dnd/destinations.js +43 -0
- package/dist/dnd/dnd-react.test.d.ts +2 -0
- package/dist/dnd/dnd-react.test.d.ts.map +1 -0
- package/dist/dnd/dnd-react.test.js +93 -0
- package/dist/dnd/dnd.test.d.ts +2 -0
- package/dist/dnd/dnd.test.d.ts.map +1 -0
- package/dist/dnd/dnd.test.js +327 -0
- package/dist/dnd/engine.d.ts +85 -0
- package/dist/dnd/engine.d.ts.map +1 -0
- package/dist/dnd/engine.js +185 -0
- package/dist/dnd/fragment.d.ts +6 -0
- package/dist/dnd/fragment.d.ts.map +1 -0
- package/dist/dnd/fragment.js +18 -0
- package/dist/dnd/geometry.d.ts +30 -0
- package/dist/dnd/geometry.d.ts.map +1 -0
- package/dist/dnd/geometry.js +31 -0
- package/dist/dnd/index.d.ts +14 -0
- package/dist/dnd/index.d.ts.map +1 -0
- package/dist/dnd/index.js +7 -0
- package/dist/dnd/move-to-dialog.d.ts +13 -0
- package/dist/dnd/move-to-dialog.d.ts.map +1 -0
- package/dist/dnd/move-to-dialog.js +30 -0
- package/dist/dnd/react.d.ts +43 -0
- package/dist/dnd/react.d.ts.map +1 -0
- package/dist/dnd/react.js +185 -0
- package/dist/dnd/tree-target.d.ts +29 -0
- package/dist/dnd/tree-target.d.ts.map +1 -0
- package/dist/dnd/tree-target.js +97 -0
- package/dist/fonts/LICENSE-inter.txt +93 -0
- package/dist/fonts/inter-latin-400-normal.woff2 +0 -0
- package/dist/fonts/inter-latin-500-normal.woff2 +0 -0
- package/dist/fonts/inter-latin-600-normal.woff2 +0 -0
- package/dist/fonts/inter-latin-ext-400-normal.woff2 +0 -0
- package/dist/fonts/inter-latin-ext-500-normal.woff2 +0 -0
- package/dist/fonts/inter-latin-ext-600-normal.woff2 +0 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/messages/en.d.ts +335 -0
- package/dist/messages/en.d.ts.map +1 -0
- package/dist/messages/en.js +332 -0
- package/dist/messages/index.d.ts +16 -0
- package/dist/messages/index.d.ts.map +1 -0
- package/dist/messages/index.js +22 -0
- package/dist/messages/pl.d.ts +3 -0
- package/dist/messages/pl.d.ts.map +1 -0
- package/dist/messages/pl.js +327 -0
- package/dist/panels/breadcrumbs/breadcrumbs.d.ts +6 -0
- package/dist/panels/breadcrumbs/breadcrumbs.d.ts.map +1 -0
- package/dist/panels/breadcrumbs/breadcrumbs.js +24 -0
- package/dist/panels/breadcrumbs/breadcrumbs.test.d.ts +2 -0
- package/dist/panels/breadcrumbs/breadcrumbs.test.d.ts.map +1 -0
- package/dist/panels/breadcrumbs/breadcrumbs.test.js +56 -0
- package/dist/panels/index.d.ts +9 -0
- package/dist/panels/index.d.ts.map +1 -0
- package/dist/panels/index.js +6 -0
- package/dist/panels/insert/catalog.d.ts +30 -0
- package/dist/panels/insert/catalog.d.ts.map +1 -0
- package/dist/panels/insert/catalog.js +76 -0
- package/dist/panels/insert/catalog.order.test.d.ts +2 -0
- package/dist/panels/insert/catalog.order.test.d.ts.map +1 -0
- package/dist/panels/insert/catalog.order.test.js +17 -0
- package/dist/panels/insert/category-name.d.ts +4 -0
- package/dist/panels/insert/category-name.d.ts.map +1 -0
- package/dist/panels/insert/category-name.js +8 -0
- package/dist/panels/insert/index.d.ts +3 -0
- package/dist/panels/insert/index.d.ts.map +1 -0
- package/dist/panels/insert/index.js +2 -0
- package/dist/panels/insert/insert-panel.d.ts +7 -0
- package/dist/panels/insert/insert-panel.d.ts.map +1 -0
- package/dist/panels/insert/insert-panel.js +155 -0
- package/dist/panels/insert/insert-panel.test.d.ts +2 -0
- package/dist/panels/insert/insert-panel.test.d.ts.map +1 -0
- package/dist/panels/insert/insert-panel.test.js +323 -0
- package/dist/panels/insert/target.d.ts +17 -0
- package/dist/panels/insert/target.d.ts.map +1 -0
- package/dist/panels/insert/target.js +48 -0
- package/dist/panels/inspector/controls/boolean.d.ts +4 -0
- package/dist/panels/inspector/controls/boolean.d.ts.map +1 -0
- package/dist/panels/inspector/controls/boolean.js +4 -0
- package/dist/panels/inspector/controls/compound.d.ts +15 -0
- package/dist/panels/inspector/controls/compound.d.ts.map +1 -0
- package/dist/panels/inspector/controls/compound.js +99 -0
- package/dist/panels/inspector/controls/compound.test.d.ts +2 -0
- package/dist/panels/inspector/controls/compound.test.d.ts.map +1 -0
- package/dist/panels/inspector/controls/compound.test.js +195 -0
- package/dist/panels/inspector/controls/icon.d.ts +5 -0
- package/dist/panels/inspector/controls/icon.d.ts.map +1 -0
- package/dist/panels/inspector/controls/icon.js +6 -0
- package/dist/panels/inspector/controls/index.d.ts +13 -0
- package/dist/panels/inspector/controls/index.d.ts.map +1 -0
- package/dist/panels/inspector/controls/index.js +11 -0
- package/dist/panels/inspector/controls/label.d.ts +4 -0
- package/dist/panels/inspector/controls/label.d.ts.map +1 -0
- package/dist/panels/inspector/controls/label.js +8 -0
- package/dist/panels/inspector/controls/link.d.ts +5 -0
- package/dist/panels/inspector/controls/link.d.ts.map +1 -0
- package/dist/panels/inspector/controls/link.js +6 -0
- package/dist/panels/inspector/controls/media.d.ts +9 -0
- package/dist/panels/inspector/controls/media.d.ts.map +1 -0
- package/dist/panels/inspector/controls/media.js +21 -0
- package/dist/panels/inspector/controls/number.d.ts +10 -0
- package/dist/panels/inspector/controls/number.d.ts.map +1 -0
- package/dist/panels/inspector/controls/number.js +33 -0
- package/dist/panels/inspector/controls/rich-text-model.d.ts +20 -0
- package/dist/panels/inspector/controls/rich-text-model.d.ts.map +1 -0
- package/dist/panels/inspector/controls/rich-text-model.js +91 -0
- package/dist/panels/inspector/controls/rich-text.d.ts +10 -0
- package/dist/panels/inspector/controls/rich-text.d.ts.map +1 -0
- package/dist/panels/inspector/controls/rich-text.js +159 -0
- package/dist/panels/inspector/controls/select.d.ts +5 -0
- package/dist/panels/inspector/controls/select.d.ts.map +1 -0
- package/dist/panels/inspector/controls/select.js +16 -0
- package/dist/panels/inspector/controls/select.test.d.ts +2 -0
- package/dist/panels/inspector/controls/select.test.d.ts.map +1 -0
- package/dist/panels/inspector/controls/select.test.js +43 -0
- package/dist/panels/inspector/controls/text.d.ts +4 -0
- package/dist/panels/inspector/controls/text.d.ts.map +1 -0
- package/dist/panels/inspector/controls/text.js +5 -0
- package/dist/panels/inspector/controls/textarea.d.ts +4 -0
- package/dist/panels/inspector/controls/textarea.d.ts.map +1 -0
- package/dist/panels/inspector/controls/textarea.js +4 -0
- package/dist/panels/inspector/controls/types.d.ts +16 -0
- package/dist/panels/inspector/controls/types.d.ts.map +1 -0
- package/dist/panels/inspector/controls/types.js +1 -0
- package/dist/panels/inspector/index.d.ts +17 -0
- package/dist/panels/inspector/index.d.ts.map +1 -0
- package/dist/panels/inspector/index.js +9 -0
- package/dist/panels/inspector/inspector.d.ts +16 -0
- package/dist/panels/inspector/inspector.d.ts.map +1 -0
- package/dist/panels/inspector/inspector.js +116 -0
- package/dist/panels/inspector/inspector.test.d.ts +2 -0
- package/dist/panels/inspector/inspector.test.d.ts.map +1 -0
- package/dist/panels/inspector/inspector.test.js +328 -0
- package/dist/panels/inspector/props-panel.d.ts +26 -0
- package/dist/panels/inspector/props-panel.d.ts.map +1 -0
- package/dist/panels/inspector/props-panel.js +117 -0
- package/dist/panels/inspector/styles/box-model.d.ts +20 -0
- package/dist/panels/inspector/styles/box-model.d.ts.map +1 -0
- package/dist/panels/inspector/styles/box-model.js +31 -0
- package/dist/panels/inspector/styles/index.d.ts +5 -0
- package/dist/panels/inspector/styles/index.d.ts.map +1 -0
- package/dist/panels/inspector/styles/index.js +2 -0
- package/dist/panels/inspector/styles/model.d.ts +55 -0
- package/dist/panels/inspector/styles/model.d.ts.map +1 -0
- package/dist/panels/inspector/styles/model.js +111 -0
- package/dist/panels/inspector/styles/segments.d.ts +18 -0
- package/dist/panels/inspector/styles/segments.d.ts.map +1 -0
- package/dist/panels/inspector/styles/segments.js +75 -0
- package/dist/panels/inspector/styles/sides-editor.d.ts +34 -0
- package/dist/panels/inspector/styles/sides-editor.d.ts.map +1 -0
- package/dist/panels/inspector/styles/sides-editor.js +86 -0
- package/dist/panels/inspector/styles/style-inspector.d.ts +15 -0
- package/dist/panels/inspector/styles/style-inspector.d.ts.map +1 -0
- package/dist/panels/inspector/styles/style-inspector.js +219 -0
- package/dist/panels/inspector/styles/style-inspector.test.d.ts +2 -0
- package/dist/panels/inspector/styles/style-inspector.test.d.ts.map +1 -0
- package/dist/panels/inspector/styles/style-inspector.test.js +265 -0
- package/dist/panels/inspector/styles/token-picker.d.ts +15 -0
- package/dist/panels/inspector/styles/token-picker.d.ts.map +1 -0
- package/dist/panels/inspector/styles/token-picker.js +23 -0
- package/dist/panels/inspector/styles/use-style-value.d.ts +28 -0
- package/dist/panels/inspector/styles/use-style-value.d.ts.map +1 -0
- package/dist/panels/inspector/styles/use-style-value.js +51 -0
- package/dist/panels/inspector/value.d.ts +20 -0
- package/dist/panels/inspector/value.d.ts.map +1 -0
- package/dist/panels/inspector/value.js +32 -0
- package/dist/panels/inspector/values/analyze.d.ts +49 -0
- package/dist/panels/inspector/values/analyze.d.ts.map +1 -0
- package/dist/panels/inspector/values/analyze.js +115 -0
- package/dist/panels/inspector/values/data.d.ts +18 -0
- package/dist/panels/inspector/values/data.d.ts.map +1 -0
- package/dist/panels/inspector/values/data.js +10 -0
- package/dist/panels/inspector/values/translation.d.ts +20 -0
- package/dist/panels/inspector/values/translation.d.ts.map +1 -0
- package/dist/panels/inspector/values/translation.js +25 -0
- package/dist/panels/inspector/values/value-editor.d.ts +30 -0
- package/dist/panels/inspector/values/value-editor.d.ts.map +1 -0
- package/dist/panels/inspector/values/value-editor.js +191 -0
- package/dist/panels/inspector/values/values.test.d.ts +2 -0
- package/dist/panels/inspector/values/values.test.d.ts.map +1 -0
- package/dist/panels/inspector/values/values.test.js +173 -0
- package/dist/panels/issues/collect.d.ts +70 -0
- package/dist/panels/issues/collect.d.ts.map +1 -0
- package/dist/panels/issues/collect.js +96 -0
- package/dist/panels/issues/index.d.ts +5 -0
- package/dist/panels/issues/index.d.ts.map +1 -0
- package/dist/panels/issues/index.js +2 -0
- package/dist/panels/issues/issues-panel.d.ts +17 -0
- package/dist/panels/issues/issues-panel.d.ts.map +1 -0
- package/dist/panels/issues/issues-panel.js +77 -0
- package/dist/panels/layers/flatten.d.ts +28 -0
- package/dist/panels/layers/flatten.d.ts.map +1 -0
- package/dist/panels/layers/flatten.js +61 -0
- package/dist/panels/layers/layers-panel.d.ts +14 -0
- package/dist/panels/layers/layers-panel.d.ts.map +1 -0
- package/dist/panels/layers/layers-panel.js +428 -0
- package/dist/panels/layers/layers-panel.test.d.ts +2 -0
- package/dist/panels/layers/layers-panel.test.d.ts.map +1 -0
- package/dist/panels/layers/layers-panel.test.js +315 -0
- package/dist/persistence/controller.d.ts +55 -0
- package/dist/persistence/controller.d.ts.map +1 -0
- package/dist/persistence/controller.js +341 -0
- package/dist/persistence/index.d.ts +6 -0
- package/dist/persistence/index.d.ts.map +1 -0
- package/dist/persistence/index.js +3 -0
- package/dist/persistence/load.d.ts +35 -0
- package/dist/persistence/load.d.ts.map +1 -0
- package/dist/persistence/load.js +67 -0
- package/dist/persistence/persistence.test.d.ts +2 -0
- package/dist/persistence/persistence.test.d.ts.map +1 -0
- package/dist/persistence/persistence.test.js +483 -0
- package/dist/persistence/react.d.ts +18 -0
- package/dist/persistence/react.d.ts.map +1 -0
- package/dist/persistence/react.js +105 -0
- package/dist/persistence/types.d.ts +182 -0
- package/dist/persistence/types.d.ts.map +1 -0
- package/dist/persistence/types.js +1 -0
- package/dist/preview/index.d.ts +3 -0
- package/dist/preview/index.d.ts.map +1 -0
- package/dist/preview/index.js +2 -0
- package/dist/preview/prepare.d.ts +16 -0
- package/dist/preview/prepare.d.ts.map +1 -0
- package/dist/preview/prepare.js +21 -0
- package/dist/preview/preview.d.ts +27 -0
- package/dist/preview/preview.d.ts.map +1 -0
- package/dist/preview/preview.js +51 -0
- package/dist/preview/preview.test.d.ts +2 -0
- package/dist/preview/preview.test.d.ts.map +1 -0
- package/dist/preview/preview.test.js +129 -0
- package/dist/shortcuts/actions.d.ts +17 -0
- package/dist/shortcuts/actions.d.ts.map +1 -0
- package/dist/shortcuts/actions.js +85 -0
- package/dist/shortcuts/index.d.ts +11 -0
- package/dist/shortcuts/index.d.ts.map +1 -0
- package/dist/shortcuts/index.js +5 -0
- package/dist/shortcuts/keys.d.ts +29 -0
- package/dist/shortcuts/keys.d.ts.map +1 -0
- package/dist/shortcuts/keys.js +100 -0
- package/dist/shortcuts/map.d.ts +17 -0
- package/dist/shortcuts/map.d.ts.map +1 -0
- package/dist/shortcuts/map.js +31 -0
- package/dist/shortcuts/registry.d.ts +32 -0
- package/dist/shortcuts/registry.d.ts.map +1 -0
- package/dist/shortcuts/registry.js +53 -0
- package/dist/shortcuts/shortcuts.d.ts +32 -0
- package/dist/shortcuts/shortcuts.d.ts.map +1 -0
- package/dist/shortcuts/shortcuts.js +95 -0
- package/dist/shortcuts/shortcuts.test.d.ts +2 -0
- package/dist/shortcuts/shortcuts.test.d.ts.map +1 -0
- package/dist/shortcuts/shortcuts.test.js +263 -0
- package/dist/store/create-store.d.ts +13 -0
- package/dist/store/create-store.d.ts.map +1 -0
- package/dist/store/create-store.js +248 -0
- package/dist/store/index.d.ts +9 -0
- package/dist/store/index.d.ts.map +1 -0
- package/dist/store/index.js +5 -0
- package/dist/store/locale.d.ts +23 -0
- package/dist/store/locale.d.ts.map +1 -0
- package/dist/store/locale.js +31 -0
- package/dist/store/react.d.ts +17 -0
- package/dist/store/react.d.ts.map +1 -0
- package/dist/store/react.js +32 -0
- package/dist/store/selection.d.ts +32 -0
- package/dist/store/selection.d.ts.map +1 -0
- package/dist/store/selection.js +84 -0
- package/dist/store/selection.test.d.ts +2 -0
- package/dist/store/selection.test.d.ts.map +1 -0
- package/dist/store/selection.test.js +95 -0
- package/dist/store/selectors.d.ts +18 -0
- package/dist/store/selectors.d.ts.map +1 -0
- package/dist/store/selectors.js +39 -0
- package/dist/store/store.test.d.ts +2 -0
- package/dist/store/store.test.d.ts.map +1 -0
- package/dist/store/store.test.js +331 -0
- package/dist/store/types.d.ts +114 -0
- package/dist/store/types.d.ts.map +1 -0
- package/dist/store/types.js +1 -0
- package/dist/styles/tokens.test.d.ts +2 -0
- package/dist/styles/tokens.test.d.ts.map +1 -0
- package/dist/styles/tokens.test.js +199 -0
- package/dist/styles.css +2885 -0
- package/dist/toolbar/brand.d.ts +7 -0
- package/dist/toolbar/brand.d.ts.map +1 -0
- package/dist/toolbar/brand.js +11 -0
- package/dist/toolbar/breakpoint-control.d.ts +9 -0
- package/dist/toolbar/breakpoint-control.d.ts.map +1 -0
- package/dist/toolbar/breakpoint-control.js +23 -0
- package/dist/toolbar/editable-title.d.ts +14 -0
- package/dist/toolbar/editable-title.d.ts.map +1 -0
- package/dist/toolbar/editable-title.js +46 -0
- package/dist/toolbar/editable-title.test.d.ts +2 -0
- package/dist/toolbar/editable-title.test.d.ts.map +1 -0
- package/dist/toolbar/editable-title.test.js +53 -0
- package/dist/toolbar/index.d.ts +12 -0
- package/dist/toolbar/index.d.ts.map +1 -0
- package/dist/toolbar/index.js +5 -0
- package/dist/toolbar/locale-switcher.d.ts +10 -0
- package/dist/toolbar/locale-switcher.d.ts.map +1 -0
- package/dist/toolbar/locale-switcher.js +20 -0
- package/dist/toolbar/more-menu.d.ts +12 -0
- package/dist/toolbar/more-menu.d.ts.map +1 -0
- package/dist/toolbar/more-menu.js +47 -0
- package/dist/toolbar/panel-toggles.d.ts +9 -0
- package/dist/toolbar/panel-toggles.d.ts.map +1 -0
- package/dist/toolbar/panel-toggles.js +19 -0
- package/dist/toolbar/publish-dialog.d.ts +18 -0
- package/dist/toolbar/publish-dialog.d.ts.map +1 -0
- package/dist/toolbar/publish-dialog.js +49 -0
- package/dist/toolbar/publish.test.d.ts +2 -0
- package/dist/toolbar/publish.test.d.ts.map +1 -0
- package/dist/toolbar/publish.test.js +258 -0
- package/dist/toolbar/sample-picker.d.ts +18 -0
- package/dist/toolbar/sample-picker.d.ts.map +1 -0
- package/dist/toolbar/sample-picker.js +72 -0
- package/dist/toolbar/sample-picker.test.d.ts +2 -0
- package/dist/toolbar/sample-picker.test.d.ts.map +1 -0
- package/dist/toolbar/sample-picker.test.js +78 -0
- package/dist/toolbar/save-indicator.d.ts +8 -0
- package/dist/toolbar/save-indicator.d.ts.map +1 -0
- package/dist/toolbar/save-indicator.js +30 -0
- package/dist/toolbar/theme.d.ts +22 -0
- package/dist/toolbar/theme.d.ts.map +1 -0
- package/dist/toolbar/theme.js +46 -0
- package/dist/toolbar/theme.test.d.ts +2 -0
- package/dist/toolbar/theme.test.d.ts.map +1 -0
- package/dist/toolbar/theme.test.js +49 -0
- package/dist/toolbar/toolbar-centre.d.ts +13 -0
- package/dist/toolbar/toolbar-centre.d.ts.map +1 -0
- package/dist/toolbar/toolbar-centre.js +7 -0
- package/dist/toolbar/toolbar-left.d.ts +12 -0
- package/dist/toolbar/toolbar-left.d.ts.map +1 -0
- package/dist/toolbar/toolbar-left.js +16 -0
- package/dist/toolbar/toolbar-right.d.ts +19 -0
- package/dist/toolbar/toolbar-right.d.ts.map +1 -0
- package/dist/toolbar/toolbar-right.js +21 -0
- package/dist/toolbar/toolbar.d.ts +38 -0
- package/dist/toolbar/toolbar.d.ts.map +1 -0
- package/dist/toolbar/toolbar.js +27 -0
- package/dist/toolbar/toolbar.test.d.ts +2 -0
- package/dist/toolbar/toolbar.test.d.ts.map +1 -0
- package/dist/toolbar/toolbar.test.js +289 -0
- package/dist/toolbar/use-overflow-level.d.ts +9 -0
- package/dist/toolbar/use-overflow-level.d.ts.map +1 -0
- package/dist/toolbar/use-overflow-level.js +40 -0
- package/dist/toolbar/zoom-menu.d.ts +10 -0
- package/dist/toolbar/zoom-menu.d.ts.map +1 -0
- package/dist/toolbar/zoom-menu.js +17 -0
- package/dist/ui/icon.d.ts +102 -0
- package/dist/ui/icon.d.ts.map +1 -0
- package/dist/ui/icon.js +182 -0
- package/dist/ui/icon.test.d.ts +2 -0
- package/dist/ui/icon.test.d.ts.map +1 -0
- package/dist/ui/icon.test.js +115 -0
- package/dist/ui/index.d.ts +11 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +5 -0
- package/dist/ui/panel.d.ts +18 -0
- package/dist/ui/panel.d.ts.map +1 -0
- package/dist/ui/panel.js +21 -0
- package/dist/ui/portal.d.ts +14 -0
- package/dist/ui/portal.d.ts.map +1 -0
- package/dist/ui/portal.js +14 -0
- package/dist/ui/primitives.d.ts +190 -0
- package/dist/ui/primitives.d.ts.map +1 -0
- package/dist/ui/primitives.js +164 -0
- package/dist/ui/primitives.test.d.ts +2 -0
- package/dist/ui/primitives.test.d.ts.map +1 -0
- package/dist/ui/primitives.test.js +215 -0
- package/dist/ui/toast.d.ts +39 -0
- package/dist/ui/toast.d.ts.map +1 -0
- package/dist/ui/toast.js +76 -0
- package/dist/ui/toast.test.d.ts +2 -0
- package/dist/ui/toast.test.d.ts.map +1 -0
- package/dist/ui/toast.test.js +95 -0
- package/package.json +67 -3
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
const RANK = { error: 0, warning: 1, info: 2 };
|
|
2
|
+
/** The node a diagnostic is about: the one its path points into, else the one it names in `details`. */
|
|
3
|
+
export function nodeOfDiagnostic(diagnostic) {
|
|
4
|
+
const [head, id] = diagnostic.path ?? [];
|
|
5
|
+
if (head === 'nodes' && typeof id === 'string')
|
|
6
|
+
return id;
|
|
7
|
+
const named = diagnostic.details?.['nodeId'];
|
|
8
|
+
return typeof named === 'string' ? named : undefined;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Merges the findings of validation, the accessibility rules and the canvas into one list: worst
|
|
12
|
+
* first, then in the order the checks reported them. A finding about a node that is gone keeps its
|
|
13
|
+
* text but loses its node, so clicking it does nothing rather than selecting a stale id.
|
|
14
|
+
*/
|
|
15
|
+
export function collectIssues(input) {
|
|
16
|
+
const { doc } = input;
|
|
17
|
+
const known = (id) => id !== undefined && Object.hasOwn(doc.nodes, id) ? id : undefined;
|
|
18
|
+
const items = [];
|
|
19
|
+
for (const [index, issue] of (input.validation ?? []).entries()) {
|
|
20
|
+
items.push({
|
|
21
|
+
key: `validation:${index}`,
|
|
22
|
+
source: 'validation',
|
|
23
|
+
severity: issue.severity,
|
|
24
|
+
code: issue.code,
|
|
25
|
+
message: issue.message,
|
|
26
|
+
nodeId: known(nodeOfDiagnostic(issue)),
|
|
27
|
+
blocking: issue.blocking,
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
for (const [index, issue] of (input.a11y ?? []).entries()) {
|
|
31
|
+
items.push({
|
|
32
|
+
key: `a11y:${index}`,
|
|
33
|
+
source: 'a11y',
|
|
34
|
+
severity: issue.severity,
|
|
35
|
+
code: issue.ruleId,
|
|
36
|
+
message: issue.message,
|
|
37
|
+
help: issue.help,
|
|
38
|
+
nodeId: known(issue.nodeId),
|
|
39
|
+
blocking: false,
|
|
40
|
+
fix: issue.fix,
|
|
41
|
+
locale: issue.locale,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
for (const [index, issue] of (input.canvas ?? []).entries()) {
|
|
45
|
+
items.push({
|
|
46
|
+
key: `canvas:${index}`,
|
|
47
|
+
source: 'canvas',
|
|
48
|
+
severity: issue.severity,
|
|
49
|
+
code: issue.code,
|
|
50
|
+
message: issue.message,
|
|
51
|
+
nodeId: known(nodeOfDiagnostic(issue)),
|
|
52
|
+
blocking: false,
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
// `sort` is stable, so the order the checks gave is kept within a severity.
|
|
56
|
+
return items.sort((a, b) => RANK[a.severity] - RANK[b.severity]);
|
|
57
|
+
}
|
|
58
|
+
export function filterIssues(items, filter) {
|
|
59
|
+
return filter === 'all' ? [...items] : items.filter((item) => item.severity === filter);
|
|
60
|
+
}
|
|
61
|
+
export function countIssues(items) {
|
|
62
|
+
const counts = { all: items.length, error: 0, warning: 0, info: 0 };
|
|
63
|
+
for (const item of items)
|
|
64
|
+
counts[item.severity] += 1;
|
|
65
|
+
return counts;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Whether the findings allow publishing. A blocking validation issue (a corrupt structure) stops
|
|
69
|
+
* it under any policy; under `publishPolicy: 'block'` so does any error, from validation or from
|
|
70
|
+
* the accessibility rules. Under `'warn'` (the default) the author is told and may go on.
|
|
71
|
+
*/
|
|
72
|
+
export function publishGate(items, policy = 'warn') {
|
|
73
|
+
const counts = countIssues(items);
|
|
74
|
+
if (items.some((item) => item.blocking))
|
|
75
|
+
return { blocked: true, reason: 'blocking', counts };
|
|
76
|
+
if (policy === 'block' && counts.error > 0)
|
|
77
|
+
return { blocked: true, reason: 'errors', counts };
|
|
78
|
+
return { blocked: false, reason: undefined, counts };
|
|
79
|
+
}
|
|
80
|
+
/** The rule that flags a translatable text with no translation; the panel lists its findings per language. */
|
|
81
|
+
export const MISSING_TRANSLATION = 'missing-translation';
|
|
82
|
+
/** Splits the findings into the ordinary ones and the missing translations, those grouped by language in the order the languages first appear. */
|
|
83
|
+
export function groupMissingTranslations(items) {
|
|
84
|
+
const rest = [];
|
|
85
|
+
const byLocale = new Map();
|
|
86
|
+
for (const item of items) {
|
|
87
|
+
if (item.code !== MISSING_TRANSLATION || item.locale === undefined) {
|
|
88
|
+
rest.push(item);
|
|
89
|
+
continue;
|
|
90
|
+
}
|
|
91
|
+
const list = byLocale.get(item.locale) ?? [];
|
|
92
|
+
list.push(item);
|
|
93
|
+
byLocale.set(item.locale, list);
|
|
94
|
+
}
|
|
95
|
+
return { rest, groups: [...byLocale].map(([locale, list]) => ({ locale, items: list })) };
|
|
96
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export type { CollectInput, IssueCounts, IssueItem, IssueSeverity, IssueSource, MissingGroup, PublishGate, PublishPolicy, SeverityFilter, } from './collect.ts';
|
|
2
|
+
export { collectIssues, countIssues, filterIssues, groupMissingTranslations, MISSING_TRANSLATION, nodeOfDiagnostic, publishGate, } from './collect.ts';
|
|
3
|
+
export type { IssuesPanelProps } from './issues-panel.tsx';
|
|
4
|
+
export { IssuesPanel, SEVERITY_ICON, useIssues } from './issues-panel.tsx';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/panels/issues/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,YAAY,EACZ,WAAW,EACX,SAAS,EACT,aAAa,EACb,WAAW,EACX,YAAY,EACZ,WAAW,EACX,aAAa,EACb,cAAc,GACf,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,aAAa,EACb,WAAW,EACX,YAAY,EACZ,wBAAwB,EACxB,mBAAmB,EACnB,gBAAgB,EAChB,WAAW,GACZ,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Diagnostic } from '@next-buildr/core';
|
|
2
|
+
import { type IconName } from '../../ui/index.ts';
|
|
3
|
+
import { type IssueItem, type IssueSeverity } from './collect.ts';
|
|
4
|
+
export interface IssuesPanelProps {
|
|
5
|
+
/** What the canvas reported; the host keeps them from the protocol's `diagnostics` messages. */
|
|
6
|
+
readonly canvasDiagnostics?: readonly Diagnostic[] | undefined;
|
|
7
|
+
}
|
|
8
|
+
/** Everything the checks found, as one list: validation, accessibility and the canvas. */
|
|
9
|
+
export declare function useIssues(canvasDiagnostics?: readonly Diagnostic[]): IssueItem[];
|
|
10
|
+
export declare const SEVERITY_ICON: Readonly<Record<IssueSeverity, IconName>>;
|
|
11
|
+
/**
|
|
12
|
+
* The Issues panel (docs/editor.md#issues-and-publishing): the findings of validation, the
|
|
13
|
+
* accessibility rules and the canvas, filterable by severity. Choosing one selects the node it is
|
|
14
|
+
* about; a finding with an unambiguous repair offers it as a button that runs it as a command.
|
|
15
|
+
*/
|
|
16
|
+
export declare function IssuesPanel({ canvasDiagnostics }: IssuesPanelProps): import("react").JSX.Element;
|
|
17
|
+
//# sourceMappingURL=issues-panel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issues-panel.d.ts","sourceRoot":"","sources":["../../../src/panels/issues/issues-panel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAMpD,OAAO,EAA+B,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAKL,KAAK,SAAS,EACd,KAAK,aAAa,EAEnB,MAAM,cAAc,CAAC;AAEtB,MAAM,WAAW,gBAAgB;IAC/B,gGAAgG;IAChG,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,UAAU,EAAE,GAAG,SAAS,CAAC;CAChE;AAED,0FAA0F;AAC1F,wBAAgB,SAAS,CAAC,iBAAiB,CAAC,EAAE,SAAS,UAAU,EAAE,GAAG,SAAS,EAAE,CAahF;AAWD,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,QAAQ,CAAC,CAInE,CAAC;AAQF;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,EAAE,iBAAiB,EAAE,EAAE,gBAAgB,+BA4GlE"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo, useState } from 'react';
|
|
3
|
+
import { componentMeta, useManifest } from '../../app/manifest.js';
|
|
4
|
+
import { useT } from '../../messages/index.js';
|
|
5
|
+
import { useEditor, useEditorState, useLocaleState } from '../../store/index.js';
|
|
6
|
+
import { Button, ComponentIcon, Icon } from '../../ui/index.js';
|
|
7
|
+
import { collectIssues, countIssues, filterIssues, groupMissingTranslations, } from './collect.js';
|
|
8
|
+
/** Everything the checks found, as one list: validation, accessibility and the canvas. */
|
|
9
|
+
export function useIssues(canvasDiagnostics) {
|
|
10
|
+
const doc = useEditorState((state) => state.doc);
|
|
11
|
+
const validation = useEditorState((state) => state.validation);
|
|
12
|
+
return useMemo(() => collectIssues({
|
|
13
|
+
doc,
|
|
14
|
+
validation: validation?.issues,
|
|
15
|
+
a11y: validation?.a11y,
|
|
16
|
+
canvas: canvasDiagnostics,
|
|
17
|
+
}), [doc, validation, canvasDiagnostics]);
|
|
18
|
+
}
|
|
19
|
+
const FILTERS = [
|
|
20
|
+
{ filter: 'all', key: 'issues.filter.all' },
|
|
21
|
+
{ filter: 'error', key: 'issues.filter.error' },
|
|
22
|
+
{ filter: 'warning', key: 'issues.filter.warning' },
|
|
23
|
+
{ filter: 'info', key: 'issues.filter.info' },
|
|
24
|
+
];
|
|
25
|
+
const SEVERITIES = ['error', 'warning', 'info'];
|
|
26
|
+
export const SEVERITY_ICON = {
|
|
27
|
+
error: 'circle-alert',
|
|
28
|
+
warning: 'triangle-alert',
|
|
29
|
+
info: 'info',
|
|
30
|
+
};
|
|
31
|
+
const SOURCE_KEY = {
|
|
32
|
+
validation: 'issues.source.validation',
|
|
33
|
+
a11y: 'issues.source.a11y',
|
|
34
|
+
canvas: 'issues.source.canvas',
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* The Issues panel (docs/editor.md#issues-and-publishing): the findings of validation, the
|
|
38
|
+
* accessibility rules and the canvas, filterable by severity. Choosing one selects the node it is
|
|
39
|
+
* about; a finding with an unambiguous repair offers it as a button that runs it as a command.
|
|
40
|
+
*/
|
|
41
|
+
export function IssuesPanel({ canvasDiagnostics }) {
|
|
42
|
+
const t = useT();
|
|
43
|
+
const store = useEditor();
|
|
44
|
+
const readOnly = useEditorState((state) => state.readOnly);
|
|
45
|
+
const checked = useEditorState((state) => state.validation !== undefined);
|
|
46
|
+
const items = useIssues(canvasDiagnostics);
|
|
47
|
+
const [filter, setFilter] = useState('all');
|
|
48
|
+
const [failed, setFailed] = useState();
|
|
49
|
+
const counts = countIssues(items);
|
|
50
|
+
const shown = filterIssues(items, filter);
|
|
51
|
+
const config = useLocaleState((state) => state.config);
|
|
52
|
+
const doc = useEditorState((state) => state.doc);
|
|
53
|
+
const manifest = useManifest();
|
|
54
|
+
const fix = (item) => {
|
|
55
|
+
if (item.fix === undefined)
|
|
56
|
+
return;
|
|
57
|
+
const result = store.dispatch(item.fix, { label: item.message });
|
|
58
|
+
setFailed(result.ok ? undefined : item.key);
|
|
59
|
+
};
|
|
60
|
+
const row = (item) => {
|
|
61
|
+
const node = item.nodeId === undefined ? undefined : doc.nodes[item.nodeId];
|
|
62
|
+
const meta = node === undefined ? undefined : componentMeta(manifest, node.type);
|
|
63
|
+
const owner = node === undefined ? t('issues.nodeless') : (node.name ?? meta?.label ?? node.type);
|
|
64
|
+
return (_jsxs("li", { className: "bd-issue", "data-severity": item.severity, children: [_jsxs("button", { type: "button", className: "bd-issue-target", disabled: item.nodeId === undefined, onClick: () => {
|
|
65
|
+
if (item.nodeId !== undefined)
|
|
66
|
+
store.select(item.nodeId);
|
|
67
|
+
}, children: [_jsxs("span", { className: "bd-issue-head", children: [_jsx(Icon, { name: SEVERITY_ICON[item.severity], label: t(`issues.filter.${item.severity}`), className: "bd-issue-severity" }), node !== undefined && _jsx(ComponentIcon, { meta: meta, className: "bd-issue-component" }), _jsx("span", { className: "bd-issue-owner", children: owner })] }), _jsx("span", { className: "bd-issue-message", children: item.message }), _jsxs("span", { className: "bd-issue-source", children: [t(SOURCE_KEY[item.source]), " \u00B7 ", item.code] })] }), item.help !== undefined ? _jsx("p", { className: "bd-issue-help", children: item.help }) : null, item.fix !== undefined ? (_jsx(Button, { disabled: readOnly, onClick: () => fix(item), children: t('issues.fix') })) : null, failed === item.key ? (_jsx("p", { role: "alert", className: "bd-issue-error", children: t('issues.fix.failed') })) : null] }, item.key));
|
|
68
|
+
};
|
|
69
|
+
const severitySection = (severity) => {
|
|
70
|
+
const own = shown.filter((item) => item.severity === severity);
|
|
71
|
+
if (own.length === 0)
|
|
72
|
+
return null;
|
|
73
|
+
const { rest, groups } = groupMissingTranslations(own);
|
|
74
|
+
return (_jsxs("section", { className: "bd-issues-severity", "data-severity": severity, children: [_jsxs("h3", { className: "bd-issues-heading", children: [_jsx(Icon, { name: SEVERITY_ICON[severity] }), t(`issues.group.${severity}`), " (", own.length, ")"] }), rest.length > 0 ? _jsx("ul", { className: "bd-issues-list", children: rest.map(row) }) : null, groups.map((group) => (_jsxs("details", { className: "bd-issues-group", "data-locale": group.locale, open: true, children: [_jsxs("summary", { children: [t('issues.missingTranslations'), ": ", config.intl[group.locale] ?? group.locale, " (", group.items.length, ")"] }), _jsx("ul", { className: "bd-issues-list", children: group.items.map(row) })] }, group.locale)))] }, severity));
|
|
75
|
+
};
|
|
76
|
+
return (_jsxs("section", { className: "bd-issues", "aria-label": t('issues.title'), children: [_jsx("h2", { className: "bd-panel-title", children: t('issues.title') }), _jsx("fieldset", { className: "bd-issues-filters", "aria-label": t('issues.filter'), children: FILTERS.map((entry) => (_jsxs(Button, { variant: "ghost", "aria-pressed": filter === entry.filter, onClick: () => setFilter(entry.filter), children: [t(entry.key), " (", counts[entry.filter], ")"] }, entry.filter))) }), !checked ? _jsx("p", { className: "bd-field-hint", children: t('issues.pending') }) : null, checked && shown.length === 0 ? _jsx("p", { className: "bd-field-hint", children: t('issues.empty') }) : null, SEVERITIES.map(severitySection)] }));
|
|
77
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { BuilderDocument, NodeId, PageNode } from '@next-buildr/core';
|
|
2
|
+
/** One line of the layers tree. */
|
|
3
|
+
export interface LayerRow {
|
|
4
|
+
readonly id: NodeId;
|
|
5
|
+
readonly node: PageNode;
|
|
6
|
+
readonly parentId: NodeId | null;
|
|
7
|
+
/** 1 for the root (ARIA levels start at 1). */
|
|
8
|
+
readonly level: number;
|
|
9
|
+
/** Position among its parent's children, and how many there are (1-based, for `aria-posinset` / `aria-setsize`). */
|
|
10
|
+
readonly posInSet: number;
|
|
11
|
+
readonly setSize: number;
|
|
12
|
+
readonly hasChildren: boolean;
|
|
13
|
+
readonly expanded: boolean;
|
|
14
|
+
/** The slot of the parent it sits in; `'default'` for the usual one. */
|
|
15
|
+
readonly slot: string;
|
|
16
|
+
}
|
|
17
|
+
/** The children of a node in slot order, with the slot each is in; ids the document lacks are skipped. */
|
|
18
|
+
export declare function childrenWithSlots(doc: BuilderDocument, node: PageNode): {
|
|
19
|
+
id: NodeId;
|
|
20
|
+
slot: string;
|
|
21
|
+
}[];
|
|
22
|
+
/**
|
|
23
|
+
* The tree as the rows that are visible: a node's children follow it when it is expanded. Iterative
|
|
24
|
+
* (a document may be deep) and guarded against a node reached twice, so a corrupt document cannot
|
|
25
|
+
* loop it.
|
|
26
|
+
*/
|
|
27
|
+
export declare function flattenTree(doc: BuilderDocument, expanded: ReadonlySet<NodeId>): LayerRow[];
|
|
28
|
+
//# sourceMappingURL=flatten.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flatten.d.ts","sourceRoot":"","sources":["../../../src/panels/layers/flatten.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE3E,mCAAmC;AACnC,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,+CAA+C;IAC/C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,oHAAoH;IACpH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,wEAAwE;IACxE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,0GAA0G;AAC1G,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,QAAQ,GACb;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,CAMhC;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,eAAe,EAAE,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,QAAQ,EAAE,CAmD3F"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/** The children of a node in slot order, with the slot each is in; ids the document lacks are skipped. */
|
|
2
|
+
export function childrenWithSlots(doc, node) {
|
|
3
|
+
const out = [];
|
|
4
|
+
for (const [slot, ids] of Object.entries(node.slots ?? {})) {
|
|
5
|
+
for (const id of ids)
|
|
6
|
+
if (Object.hasOwn(doc.nodes, id))
|
|
7
|
+
out.push({ id, slot });
|
|
8
|
+
}
|
|
9
|
+
return out;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* The tree as the rows that are visible: a node's children follow it when it is expanded. Iterative
|
|
13
|
+
* (a document may be deep) and guarded against a node reached twice, so a corrupt document cannot
|
|
14
|
+
* loop it.
|
|
15
|
+
*/
|
|
16
|
+
export function flattenTree(doc, expanded) {
|
|
17
|
+
const rows = [];
|
|
18
|
+
const seen = new Set();
|
|
19
|
+
const root = doc.nodes[doc.root];
|
|
20
|
+
if (root === undefined)
|
|
21
|
+
return rows;
|
|
22
|
+
const stack = [
|
|
23
|
+
{ id: doc.root, parentId: null, level: 1, pos: 1, size: 1, slot: 'default' },
|
|
24
|
+
];
|
|
25
|
+
while (stack.length > 0) {
|
|
26
|
+
const frame = stack.pop();
|
|
27
|
+
if (seen.has(frame.id))
|
|
28
|
+
continue;
|
|
29
|
+
seen.add(frame.id);
|
|
30
|
+
const node = doc.nodes[frame.id];
|
|
31
|
+
if (node === undefined)
|
|
32
|
+
continue;
|
|
33
|
+
const children = childrenWithSlots(doc, node);
|
|
34
|
+
const open = children.length > 0 && expanded.has(frame.id);
|
|
35
|
+
rows.push({
|
|
36
|
+
id: frame.id,
|
|
37
|
+
node,
|
|
38
|
+
parentId: frame.parentId,
|
|
39
|
+
level: frame.level,
|
|
40
|
+
posInSet: frame.pos,
|
|
41
|
+
setSize: frame.size,
|
|
42
|
+
hasChildren: children.length > 0,
|
|
43
|
+
expanded: open,
|
|
44
|
+
slot: frame.slot,
|
|
45
|
+
});
|
|
46
|
+
if (open) {
|
|
47
|
+
for (let i = children.length - 1; i >= 0; i--) {
|
|
48
|
+
const child = children[i];
|
|
49
|
+
stack.push({
|
|
50
|
+
id: child.id,
|
|
51
|
+
parentId: frame.id,
|
|
52
|
+
level: frame.level + 1,
|
|
53
|
+
pos: i + 1,
|
|
54
|
+
size: children.length,
|
|
55
|
+
slot: child.slot,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return rows;
|
|
61
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** Every row is this tall, which is what lets the list render only the rows in view. */
|
|
2
|
+
export declare const ROW_HEIGHT = 28;
|
|
3
|
+
export interface LayersPanelProps {
|
|
4
|
+
/** The component a "Wrap in container" wraps the selection in. */
|
|
5
|
+
readonly wrapperType?: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* The document as a tree (docs/editor.md#layers): a WAI-ARIA tree that is fully operable with the
|
|
9
|
+
* keyboard, virtualized (only the rows in view exist), kept in step with the selection and hover in
|
|
10
|
+
* the store (the canvas and the tree show the same node), with rename, badges and a context menu.
|
|
11
|
+
* Focus stays on the tree and `aria-activedescendant` names the row; the selection follows it.
|
|
12
|
+
*/
|
|
13
|
+
export declare function LayersPanel({ wrapperType }: LayersPanelProps): import("react").JSX.Element;
|
|
14
|
+
//# sourceMappingURL=layers-panel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layers-panel.d.ts","sourceRoot":"","sources":["../../../src/panels/layers/layers-panel.tsx"],"names":[],"mappings":"AAqCA,wFAAwF;AACxF,eAAO,MAAM,UAAU,KAAK,CAAC;AAS7B,MAAM,WAAW,gBAAgB;IAC/B,kEAAkE;IAClE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAmBD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,EAAE,WAA0B,EAAE,EAAE,gBAAgB,+BA8X3E"}
|