@formicoidea/labre-core 0.31.0 → 0.32.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/dist/_pkgs/affine-block-callout/callout-block.d.ts +6 -0
- package/dist/_pkgs/affine-block-callout/callout-block.js +25 -3
- package/dist/_pkgs/affine-block-callout/callout-keymap.js +59 -19
- package/dist/_pkgs/affine-block-callout/commands/callout-to-paragraph.d.ts +20 -0
- package/dist/_pkgs/affine-block-callout/commands/callout-to-paragraph.js +60 -0
- package/dist/_pkgs/affine-block-callout/commands/split-callout.d.ts +17 -0
- package/dist/_pkgs/affine-block-callout/commands/split-callout.js +42 -0
- package/dist/_pkgs/affine-block-callout/configs/slash-menu.js +9 -6
- package/dist/_pkgs/affine-block-callout/emoji-margin.d.ts +9 -0
- package/dist/_pkgs/affine-block-callout/emoji-margin.js +36 -0
- package/dist/_pkgs/affine-block-callout/emoji-menu.d.ts +5 -1
- package/dist/_pkgs/affine-block-callout/emoji-menu.js +5 -0
- package/dist/_pkgs/affine-block-code/code-block.d.ts +14 -0
- package/dist/_pkgs/affine-block-code/code-block.js +44 -6
- package/dist/_pkgs/affine-block-code/code-toolbar/components/code-toolbar.d.ts +2 -0
- package/dist/_pkgs/affine-block-code/code-toolbar/components/code-toolbar.js +23 -14
- package/dist/_pkgs/affine-block-code/code-toolbar/components/more-menu.d.ts +16 -0
- package/dist/_pkgs/affine-block-code/code-toolbar/components/more-menu.js +93 -0
- package/dist/_pkgs/affine-block-code/code-toolbar/config.js +52 -5
- package/dist/_pkgs/affine-block-code/effects.d.ts +2 -0
- package/dist/_pkgs/affine-block-code/effects.js +2 -0
- package/dist/_pkgs/affine-block-code/highlight/affine-code-unit.js +6 -1
- package/dist/_pkgs/affine-block-code/index.d.ts +1 -0
- package/dist/_pkgs/affine-block-code/index.js +1 -0
- package/dist/_pkgs/affine-block-code/line-numbers.d.ts +25 -0
- package/dist/_pkgs/affine-block-code/line-numbers.js +27 -0
- package/dist/_pkgs/affine-block-code/styles.js +31 -0
- package/dist/_pkgs/affine-block-data-view/data-view-block.js +1 -0
- package/dist/_pkgs/affine-block-database/components/title/index.js +4 -1
- package/dist/_pkgs/affine-block-database/configs/slash-menu.js +28 -1
- package/dist/_pkgs/affine-block-database/database-block.js +13 -0
- package/dist/_pkgs/affine-block-database/properties/paste-url.d.ts +24 -0
- package/dist/_pkgs/affine-block-database/properties/paste-url.js +98 -0
- package/dist/_pkgs/affine-block-database/properties/rich-text/cell-renderer.js +9 -19
- package/dist/_pkgs/affine-block-database/properties/title/text.js +20 -25
- package/dist/_pkgs/affine-block-database/views/index.js +1 -0
- package/dist/_pkgs/affine-block-edgeless-text/edgeless-text-block.js +10 -0
- package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/config.d.ts +3 -0
- package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/config.js +48 -1
- package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/font-size.d.ts +17 -0
- package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/font-size.js +24 -0
- package/dist/_pkgs/affine-block-embed-doc/common/doc-trashed.d.ts +9 -0
- package/dist/_pkgs/affine-block-embed-doc/common/doc-trashed.js +10 -0
- package/dist/_pkgs/affine-block-embed-doc/embed-linked-doc-block/embed-linked-doc-block.js +8 -4
- package/dist/_pkgs/affine-block-embed-doc/embed-synced-doc-block/embed-synced-doc-block.d.ts +4 -0
- package/dist/_pkgs/affine-block-embed-doc/embed-synced-doc-block/embed-synced-doc-block.js +22 -3
- package/dist/_pkgs/affine-block-frame/frame-manager.d.ts +13 -0
- package/dist/_pkgs/affine-block-frame/frame-manager.js +32 -2
- package/dist/_pkgs/affine-block-latex/styles.js +6 -1
- package/dist/_pkgs/affine-block-note/note-edgeless-block.d.ts +9 -0
- package/dist/_pkgs/affine-block-note/note-edgeless-block.js +29 -1
- package/dist/_pkgs/affine-block-root/commands/pivot-commands.d.ts +37 -0
- package/dist/_pkgs/affine-block-root/commands/pivot-commands.js +168 -0
- package/dist/_pkgs/affine-block-root/commands/reading-commands.d.ts +23 -0
- package/dist/_pkgs/affine-block-root/commands/reading-commands.js +107 -0
- package/dist/_pkgs/affine-block-root/commands/tag-commands.d.ts +47 -0
- package/dist/_pkgs/affine-block-root/commands/tag-commands.js +159 -0
- package/dist/_pkgs/affine-block-root/configs/toolbar.d.ts +1 -0
- package/dist/_pkgs/affine-block-root/edgeless/configs/toolbar/more.js +9 -2
- package/dist/_pkgs/affine-block-root/edgeless/configs/toolbar/render-linked-doc.js +1 -1
- package/dist/_pkgs/affine-block-root/edgeless/edgeless-keyboard.js +26 -1
- package/dist/_pkgs/affine-block-root/edgeless/edgeless-root-block.js +11 -2
- package/dist/_pkgs/affine-block-root/edgeless/edgeless-root-service.js +14 -0
- package/dist/_pkgs/affine-block-root/edgeless/index.d.ts +1 -0
- package/dist/_pkgs/affine-block-root/edgeless/index.js +1 -0
- package/dist/_pkgs/affine-block-root/edgeless/reserved-keys.d.ts +21 -0
- package/dist/_pkgs/affine-block-root/edgeless/reserved-keys.js +34 -0
- package/dist/_pkgs/affine-block-root/edgeless/utils/clone-utils.d.ts +7 -1
- package/dist/_pkgs/affine-block-root/edgeless/utils/clone-utils.js +11 -2
- package/dist/_pkgs/affine-block-root/index.d.ts +4 -1
- package/dist/_pkgs/affine-block-root/index.js +4 -1
- package/dist/_pkgs/affine-block-root/keyboard/commands.d.ts +2 -0
- package/dist/_pkgs/affine-block-root/keyboard/commands.js +147 -0
- package/dist/_pkgs/affine-block-root/view.js +13 -4
- package/dist/_pkgs/affine-block-surface/commands/reassociate-connectors.js +0 -1
- package/dist/_pkgs/affine-block-surface/effects.js +6 -0
- package/dist/_pkgs/affine-block-surface/element-model/index.d.ts +5 -2
- package/dist/_pkgs/affine-block-surface/element-model/index.js +4 -2
- package/dist/_pkgs/affine-block-surface/extensions/audit.d.ts +107 -0
- package/dist/_pkgs/affine-block-surface/extensions/audit.js +472 -0
- package/dist/_pkgs/affine-block-surface/extensions/crud-extension.d.ts +14 -0
- package/dist/_pkgs/affine-block-surface/extensions/crud-extension.js +27 -0
- package/dist/_pkgs/affine-block-surface/extensions/editor-anchored-panel.d.ts +133 -0
- package/dist/_pkgs/affine-block-surface/extensions/editor-anchored-panel.js +326 -0
- package/dist/_pkgs/affine-block-surface/extensions/index.d.ts +13 -0
- package/dist/_pkgs/affine-block-surface/extensions/index.js +13 -0
- package/dist/_pkgs/affine-block-surface/extensions/map-quality-widget.d.ts +146 -0
- package/dist/_pkgs/affine-block-surface/extensions/map-quality-widget.js +528 -0
- package/dist/_pkgs/affine-block-surface/extensions/map-quality.d.ts +109 -0
- package/dist/_pkgs/affine-block-surface/extensions/map-quality.js +84 -0
- package/dist/_pkgs/affine-block-surface/extensions/reading-toolbar.d.ts +15 -0
- package/dist/_pkgs/affine-block-surface/extensions/reading-toolbar.js +158 -0
- package/dist/_pkgs/affine-block-surface/extensions/reading-widget.d.ts +145 -0
- package/dist/_pkgs/affine-block-surface/extensions/reading-widget.js +590 -0
- package/dist/_pkgs/affine-block-surface/extensions/reading.d.ts +494 -0
- package/dist/_pkgs/affine-block-surface/extensions/reading.js +767 -0
- package/dist/_pkgs/affine-block-surface/extensions/spotlight.d.ts +45 -0
- package/dist/_pkgs/affine-block-surface/extensions/spotlight.js +177 -0
- package/dist/_pkgs/affine-block-surface/extensions/tags-toolbar.d.ts +10 -0
- package/dist/_pkgs/affine-block-surface/extensions/tags-toolbar.js +295 -0
- package/dist/_pkgs/affine-block-surface/extensions/validation-toolbar.d.ts +27 -0
- package/dist/_pkgs/affine-block-surface/extensions/validation-toolbar.js +361 -0
- package/dist/_pkgs/affine-block-surface/extensions/validation.d.ts +1340 -0
- package/dist/_pkgs/affine-block-surface/extensions/validation.js +3009 -0
- package/dist/_pkgs/affine-block-surface/extensions/violation-detail-widget.d.ts +286 -0
- package/dist/_pkgs/affine-block-surface/extensions/violation-detail-widget.js +907 -0
- package/dist/_pkgs/affine-block-surface/extensions/violation-timeline.d.ts +80 -0
- package/dist/_pkgs/affine-block-surface/extensions/violation-timeline.js +123 -0
- package/dist/_pkgs/affine-block-surface/framework-background/def.d.ts +321 -0
- package/dist/_pkgs/affine-block-surface/framework-background/def.js +81 -0
- package/dist/_pkgs/affine-block-surface/framework-background/facts.d.ts +188 -0
- package/dist/_pkgs/affine-block-surface/framework-background/facts.js +284 -0
- package/dist/_pkgs/affine-block-surface/framework-background/index.d.ts +5 -0
- package/dist/_pkgs/affine-block-surface/framework-background/index.js +5 -0
- package/dist/_pkgs/affine-block-surface/framework-background/interaction.d.ts +12 -0
- package/dist/_pkgs/affine-block-surface/framework-background/interaction.js +24 -0
- package/dist/_pkgs/affine-block-surface/framework-background/labels.d.ts +59 -0
- package/dist/_pkgs/affine-block-surface/framework-background/labels.js +117 -0
- package/dist/_pkgs/affine-block-surface/framework-background/renderer.d.ts +8 -0
- package/dist/_pkgs/affine-block-surface/framework-background/renderer.js +238 -0
- package/dist/_pkgs/affine-block-surface/index.d.ts +1 -0
- package/dist/_pkgs/affine-block-surface/index.js +1 -0
- package/dist/_pkgs/affine-block-surface/renderer/canvas-renderer.d.ts +69 -3
- package/dist/_pkgs/affine-block-surface/renderer/canvas-renderer.js +333 -44
- package/dist/_pkgs/affine-block-surface/renderer/dom-renderer.js +18 -2
- package/dist/_pkgs/affine-block-surface/tool/default-tool.js +8 -0
- package/dist/_pkgs/affine-block-surface/utils/font.js +9 -3
- package/dist/_pkgs/affine-block-surface/view.d.ts +17 -0
- package/dist/_pkgs/affine-block-surface/view.js +57 -2
- package/dist/_pkgs/affine-block-table/selection-controller.d.ts +6 -0
- package/dist/_pkgs/affine-block-table/selection-controller.js +24 -1
- package/dist/_pkgs/affine-block-table/table-block.js +8 -2
- package/dist/_pkgs/affine-block-table/table-cell.js +5 -6
- package/dist/_pkgs/affine-block-table/table-keymap.d.ts +18 -0
- package/dist/_pkgs/affine-block-table/table-keymap.js +41 -0
- package/dist/_pkgs/affine-block-table/utils.d.ts +7 -0
- package/dist/_pkgs/affine-block-table/utils.js +12 -0
- package/dist/_pkgs/affine-block-table/view.js +2 -0
- package/dist/_pkgs/affine-components/caption/captioned-block-component.js +2 -1
- package/dist/_pkgs/affine-components/context-menu/button.d.ts +7 -0
- package/dist/_pkgs/affine-components/context-menu/button.js +7 -2
- package/dist/_pkgs/affine-components/context-menu/input.d.ts +4 -0
- package/dist/_pkgs/affine-components/context-menu/input.js +12 -0
- package/dist/_pkgs/affine-components/context-menu/menu-all.d.ts +2 -0
- package/dist/_pkgs/affine-components/context-menu/menu-renderer.js +8 -1
- package/dist/_pkgs/affine-components/context-menu/sub-menu.js +3 -0
- package/dist/_pkgs/affine-components/highlight-dropdown-menu/highlight-duotone-icon.js +8 -8
- package/dist/_pkgs/affine-components/highlight-dropdown-menu/text-duotone-icon.js +11 -11
- package/dist/_pkgs/affine-components/icon-picker/affine-icon-picker-panel.d.ts +28 -0
- package/dist/_pkgs/affine-components/icon-picker/affine-icon-picker-panel.js +231 -0
- package/dist/_pkgs/affine-components/icon-picker/emoji-data.d.ts +40 -0
- package/dist/_pkgs/affine-components/icon-picker/emoji-data.js +99 -0
- package/dist/_pkgs/affine-components/icon-picker/emoji-picker-panel.d.ts +32 -0
- package/dist/_pkgs/affine-components/icon-picker/emoji-picker-panel.js +276 -0
- package/dist/_pkgs/affine-components/icon-picker/icon-data.d.ts +34 -0
- package/dist/_pkgs/affine-components/icon-picker/icon-data.js +83 -0
- package/dist/_pkgs/affine-components/icon-picker/icon-picker.d.ts +39 -0
- package/dist/_pkgs/affine-components/icon-picker/icon-picker.js +233 -0
- package/dist/_pkgs/affine-components/icon-picker/index.d.ts +8 -0
- package/dist/_pkgs/affine-components/icon-picker/index.js +15 -0
- package/dist/_pkgs/affine-components/icon-picker/recent-store.d.ts +8 -0
- package/dist/_pkgs/affine-components/icon-picker/recent-store.js +41 -0
- package/dist/_pkgs/affine-components/icon-picker/styles.d.ts +5 -0
- package/dist/_pkgs/affine-components/icon-picker/styles.js +166 -0
- package/dist/_pkgs/affine-components/icon-picker/types.d.ts +22 -0
- package/dist/_pkgs/affine-components/icon-picker/types.js +10 -0
- package/dist/_pkgs/affine-components/icons/text.js +426 -426
- package/dist/_pkgs/affine-components/open-doc-dropdown-menu/dropdown-menu.d.ts +1 -0
- package/dist/_pkgs/affine-components/portal/portal.d.ts +1 -1
- package/dist/_pkgs/affine-components/toolbar/menu-button.js +1 -0
- package/dist/_pkgs/affine-components/toolbar/toolbar.js +11 -10
- package/dist/_pkgs/affine-foundation/view.js +11 -2
- package/dist/_pkgs/affine-gfx-brush/index.d.ts +1 -0
- package/dist/_pkgs/affine-gfx-brush/index.js +1 -0
- package/dist/_pkgs/affine-gfx-brush/renderer/dom/brush.d.ts +1 -0
- package/dist/_pkgs/affine-gfx-brush/renderer/dom/brush.js +11 -0
- package/dist/_pkgs/affine-gfx-brush/renderer/dom/highlighter.d.ts +1 -0
- package/dist/_pkgs/affine-gfx-brush/renderer/dom/highlighter.js +11 -0
- package/dist/_pkgs/affine-gfx-brush/renderer/dom/index.d.ts +2 -0
- package/dist/_pkgs/affine-gfx-brush/renderer/dom/index.js +2 -0
- package/dist/_pkgs/affine-gfx-brush/renderer/dom/shared.d.ts +14 -0
- package/dist/_pkgs/affine-gfx-brush/renderer/dom/shared.js +54 -0
- package/dist/_pkgs/affine-gfx-brush/renderer/index.d.ts +1 -0
- package/dist/_pkgs/affine-gfx-brush/renderer/index.js +4 -0
- package/dist/_pkgs/affine-gfx-brush/view.d.ts +14 -0
- package/dist/_pkgs/affine-gfx-brush/view.js +29 -3
- package/dist/_pkgs/affine-gfx-connector/connector-manager.js +32 -6
- package/dist/_pkgs/affine-gfx-connector/connector-tool.d.ts +7 -0
- package/dist/_pkgs/affine-gfx-connector/connector-tool.js +2 -1
- package/dist/_pkgs/affine-gfx-connector/direction/direction-reveal.d.ts +123 -0
- package/dist/_pkgs/affine-gfx-connector/direction/direction-reveal.js +281 -0
- package/dist/_pkgs/affine-gfx-connector/direction/direction-widget.d.ts +65 -0
- package/dist/_pkgs/affine-gfx-connector/direction/direction-widget.js +395 -0
- package/dist/_pkgs/affine-gfx-connector/direction/index.d.ts +4 -0
- package/dist/_pkgs/affine-gfx-connector/direction/index.js +4 -0
- package/dist/_pkgs/affine-gfx-connector/direction/invert-direction.d.ts +72 -0
- package/dist/_pkgs/affine-gfx-connector/direction/invert-direction.js +187 -0
- package/dist/_pkgs/affine-gfx-connector/direction/typed-edge.d.ts +69 -0
- package/dist/_pkgs/affine-gfx-connector/direction/typed-edge.js +66 -0
- package/dist/_pkgs/affine-gfx-connector/effects.d.ts +2 -0
- package/dist/_pkgs/affine-gfx-connector/effects.js +2 -0
- package/dist/_pkgs/affine-gfx-connector/element-renderer/connector-dom/index.js +78 -41
- package/dist/_pkgs/affine-gfx-connector/index.d.ts +1 -0
- package/dist/_pkgs/affine-gfx-connector/index.js +1 -0
- package/dist/_pkgs/affine-gfx-connector/toolbar/config.d.ts +50 -0
- package/dist/_pkgs/affine-gfx-connector/toolbar/config.js +67 -1
- package/dist/_pkgs/affine-gfx-connector/view.js +16 -0
- package/dist/_pkgs/affine-gfx-group/command/group-api.js +150 -62
- package/dist/_pkgs/affine-gfx-group/text/edgeless-group-title-editor.js +4 -1
- package/dist/_pkgs/affine-gfx-pointer/tools/pan-tool.d.ts +16 -0
- package/dist/_pkgs/affine-gfx-pointer/tools/pan-tool.js +102 -32
- package/dist/_pkgs/affine-gfx-shape/commands.d.ts +2 -0
- package/dist/_pkgs/affine-gfx-shape/commands.js +33 -0
- package/dist/_pkgs/affine-gfx-shape/element-renderer/shape-dom/index.js +48 -19
- package/dist/_pkgs/affine-gfx-shape/index.d.ts +1 -1
- package/dist/_pkgs/affine-gfx-shape/index.js +1 -1
- package/dist/_pkgs/affine-gfx-shape/text/edgeless-shape-text-editor.d.ts +26 -0
- package/dist/_pkgs/affine-gfx-shape/text/edgeless-shape-text-editor.js +124 -13
- package/dist/_pkgs/affine-gfx-shape/view.js +3 -3
- package/dist/_pkgs/affine-gfx-template/toolbar/template-tool-button.d.ts +2 -0
- package/dist/_pkgs/affine-gfx-template/toolbar/template-tool-button.js +18 -1
- package/dist/_pkgs/affine-gfx-text/edgeless-text-editor.js +9 -5
- package/dist/_pkgs/affine-inline-latex/command.js +46 -26
- package/dist/_pkgs/affine-inline-latex/latex-node/latex-node.d.ts +10 -0
- package/dist/_pkgs/affine-inline-latex/latex-node/latex-node.js +23 -0
- package/dist/_pkgs/affine-inline-link/link-node/affine-link.js +4 -1
- package/dist/_pkgs/affine-inline-preset/adapters/html/html-inline.d.ts +3 -0
- package/dist/_pkgs/affine-inline-preset/adapters/html/html-inline.js +29 -1
- package/dist/_pkgs/affine-model/blocks/code/code-model.d.ts +1 -0
- package/dist/_pkgs/affine-model/blocks/code/code-model.js +1 -0
- package/dist/_pkgs/affine-model/elements/connector/connector.js +24 -0
- package/dist/_pkgs/affine-model/elements/edgy/board.d.ts +32 -0
- package/dist/_pkgs/affine-model/elements/edgy/board.js +112 -0
- package/dist/_pkgs/affine-model/elements/edgy/facets.d.ts +12 -0
- package/dist/_pkgs/affine-model/elements/edgy/facets.js +25 -1
- package/dist/_pkgs/affine-model/elements/edgy/index.d.ts +1 -0
- package/dist/_pkgs/affine-model/elements/edgy/index.js +1 -0
- package/dist/_pkgs/affine-model/elements/framework-background/background.d.ts +42 -0
- package/dist/_pkgs/affine-model/elements/framework-background/background.js +42 -0
- package/dist/_pkgs/affine-model/elements/framework-background/index.d.ts +1 -0
- package/dist/_pkgs/affine-model/elements/framework-background/index.js +1 -0
- package/dist/_pkgs/affine-model/elements/index.d.ts +3 -1
- package/dist/_pkgs/affine-model/elements/index.js +1 -0
- package/dist/_pkgs/affine-model/elements/mindmap/mindmap.js +8 -3
- package/dist/_pkgs/affine-model/elements/mindmap/style.d.ts +10 -0
- package/dist/_pkgs/affine-model/elements/mindmap/style.js +8 -0
- package/dist/_pkgs/affine-model/elements/wardley/wardley.d.ts +21 -29
- package/dist/_pkgs/affine-model/elements/wardley/wardley.js +41 -48
- package/dist/_pkgs/affine-shared/adapters/markdown/delta-converter.d.ts +6 -1
- package/dist/_pkgs/affine-shared/adapters/markdown/delta-converter.js +160 -2
- package/dist/_pkgs/affine-shared/adapters/markdown/markdown.js +5 -1
- package/dist/_pkgs/affine-shared/adapters/types/delta-converter.d.ts +1 -0
- package/dist/_pkgs/affine-shared/adapters/utils/color.d.ts +24 -0
- package/dist/_pkgs/affine-shared/adapters/utils/color.js +280 -0
- package/dist/_pkgs/affine-shared/adapters/utils/index.d.ts +1 -0
- package/dist/_pkgs/affine-shared/adapters/utils/index.js +1 -0
- package/dist/_pkgs/affine-shared/commands/block-crud/get-selected-blocks.js +10 -2
- package/dist/_pkgs/affine-shared/services/audit-service.d.ts +300 -0
- package/dist/_pkgs/affine-shared/services/audit-service.js +228 -0
- package/dist/_pkgs/affine-shared/services/edit-props-store.d.ts +7 -0
- package/dist/_pkgs/affine-shared/services/edit-props-store.js +11 -0
- package/dist/_pkgs/affine-shared/services/font-loader/font-loader-service.d.ts +26 -1
- package/dist/_pkgs/affine-shared/services/font-loader/font-loader-service.js +124 -7
- package/dist/_pkgs/affine-shared/services/index.d.ts +5 -0
- package/dist/_pkgs/affine-shared/services/index.js +5 -0
- package/dist/_pkgs/affine-shared/services/pivot-materiality-publisher.d.ts +129 -0
- package/dist/_pkgs/affine-shared/services/pivot-materiality-publisher.js +311 -0
- package/dist/_pkgs/affine-shared/services/pivot-properties-service.d.ts +217 -0
- package/dist/_pkgs/affine-shared/services/pivot-properties-service.js +114 -0
- package/dist/_pkgs/affine-shared/services/telemetry-service/code-block.d.ts +1 -1
- package/dist/_pkgs/affine-shared/services/telemetry-service/lifecycle.d.ts +182 -0
- package/dist/_pkgs/affine-shared/services/telemetry-service/telemetry-service.d.ts +2 -2
- package/dist/_pkgs/affine-shared/services/telemetry-service/types.d.ts +6 -1
- package/dist/_pkgs/affine-shared/services/toolbar-service/action.d.ts +10 -0
- package/dist/_pkgs/affine-shared/services/toolbar-service/index.d.ts +1 -0
- package/dist/_pkgs/affine-shared/services/toolbar-service/index.js +1 -0
- package/dist/_pkgs/affine-shared/services/toolbar-service/layout.d.ts +134 -0
- package/dist/_pkgs/affine-shared/services/toolbar-service/layout.js +146 -0
- package/dist/_pkgs/affine-shared/services/translation-service/index.d.ts +68 -0
- package/dist/_pkgs/affine-shared/services/translation-service/index.js +39 -0
- package/dist/_pkgs/affine-shared/services/universe-tag-defs-service.d.ts +155 -0
- package/dist/_pkgs/affine-shared/services/universe-tag-defs-service.js +254 -0
- package/dist/_pkgs/affine-shared/utils/dom/point-to-range.d.ts +4 -0
- package/dist/_pkgs/affine-shared/utils/dom/point-to-range.js +58 -2
- package/dist/_pkgs/affine-shared/utils/dom/viewport.d.ts +60 -0
- package/dist/_pkgs/affine-shared/utils/dom/viewport.js +58 -0
- package/dist/_pkgs/affine-shared/utils/print-to-pdf.d.ts +21 -0
- package/dist/_pkgs/affine-shared/utils/print-to-pdf.js +166 -32
- package/dist/_pkgs/affine-shared/utils/zod-schema.d.ts +7 -0
- package/dist/_pkgs/affine-shared/utils/zod-schema.js +27 -1
- package/dist/_pkgs/affine-widget-drag-handle/watchers/edgeless-watcher.d.ts +19 -10
- package/dist/_pkgs/affine-widget-drag-handle/watchers/edgeless-watcher.js +122 -23
- package/dist/_pkgs/affine-widget-drag-handle/watchers/pointer-event-watcher.d.ts +2 -0
- package/dist/_pkgs/affine-widget-drag-handle/watchers/pointer-event-watcher.js +25 -4
- package/dist/_pkgs/affine-widget-edgeless-selected-rect/auto-complete-panel.js +10 -5
- package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-auto-complete.d.ts +15 -1
- package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-auto-complete.js +37 -32
- package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-element-link.js +5 -4
- package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-selected-rect.js +19 -9
- package/dist/_pkgs/affine-widget-edgeless-selected-rect/utils.d.ts +16 -2
- package/dist/_pkgs/affine-widget-edgeless-selected-rect/utils.js +19 -2
- package/dist/_pkgs/affine-widget-edgeless-toolbar/index.d.ts +1 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/index.js +1 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/menu/command-menu.d.ts +38 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/menu/command-menu.js +99 -0
- package/dist/_pkgs/affine-widget-frame-title/edgeless-frame-title-editor.js +4 -1
- package/dist/_pkgs/affine-widget-keyboard-toolbar/icons.js +98 -98
- package/dist/_pkgs/affine-widget-linked-doc/linked-doc-popover.js +2 -15
- package/dist/_pkgs/affine-widget-linked-doc/transformers/markdown.d.ts +10 -1
- package/dist/_pkgs/affine-widget-linked-doc/transformers/markdown.js +133 -6
- package/dist/_pkgs/affine-widget-linked-doc/transformers/utils.d.ts +10 -0
- package/dist/_pkgs/affine-widget-linked-doc/transformers/utils.js +120 -3
- package/dist/_pkgs/affine-widget-linked-doc/utils.d.ts +12 -0
- package/dist/_pkgs/affine-widget-linked-doc/utils.js +33 -0
- package/dist/_pkgs/affine-widget-remote-selection/edgeless/index.js +6 -4
- package/dist/_pkgs/affine-widget-slash-menu/slash-menu-popover.js +8 -4
- package/dist/_pkgs/affine-widget-slash-menu/utils.d.ts +9 -0
- package/dist/_pkgs/affine-widget-slash-menu/utils.js +24 -0
- package/dist/_pkgs/affine-widget-toolbar/toolbar.d.ts +6 -0
- package/dist/_pkgs/affine-widget-toolbar/toolbar.js +34 -6
- package/dist/_pkgs/affine-widget-toolbar/utils.d.ts +146 -3
- package/dist/_pkgs/affine-widget-toolbar/utils.js +738 -56
- package/dist/_pkgs/data-view/core/common/property-menu.js +3 -16
- package/dist/_pkgs/data-view/core/component/tags/multi-tag-select.d.ts +4 -0
- package/dist/_pkgs/data-view/core/component/tags/multi-tag-select.js +28 -1
- package/dist/_pkgs/data-view/core/data-view.d.ts +3 -1
- package/dist/_pkgs/data-view/core/data-view.js +25 -3
- package/dist/_pkgs/data-view/core/detail/field.js +2 -2
- package/dist/_pkgs/data-view/core/detail/selection.d.ts +4 -2
- package/dist/_pkgs/data-view/core/detail/selection.js +23 -7
- package/dist/_pkgs/data-view/core/effect.js +2 -0
- package/dist/_pkgs/data-view/core/filter/eval.js +36 -23
- package/dist/_pkgs/data-view/core/filter/filter-fn/matcher.d.ts +7 -0
- package/dist/_pkgs/data-view/core/filter/filter-fn/matcher.js +12 -0
- package/dist/_pkgs/data-view/core/group-by/compare-date-keys.d.ts +11 -0
- package/dist/_pkgs/data-view/core/group-by/compare-date-keys.js +55 -0
- package/dist/_pkgs/data-view/core/group-by/define.d.ts +6 -0
- package/dist/_pkgs/data-view/core/group-by/define.js +114 -0
- package/dist/_pkgs/data-view/core/group-by/matcher.d.ts +7 -0
- package/dist/_pkgs/data-view/core/group-by/matcher.js +13 -0
- package/dist/_pkgs/data-view/core/group-by/renderer/boolean-group.js +11 -11
- package/dist/_pkgs/data-view/core/group-by/renderer/date-group.d.ts +9 -0
- package/dist/_pkgs/data-view/core/group-by/renderer/date-group.js +97 -0
- package/dist/_pkgs/data-view/core/group-by/setting.js +86 -7
- package/dist/_pkgs/data-view/core/group-by/trait.d.ts +34 -0
- package/dist/_pkgs/data-view/core/group-by/trait.js +106 -10
- package/dist/_pkgs/data-view/core/utils/menu-title.js +17 -17
- package/dist/_pkgs/data-view/property-presets/multi-select/cell-renderer.js +3 -1
- package/dist/_pkgs/data-view/property-presets/number/define.js +2 -1
- package/dist/_pkgs/data-view/property-presets/select/cell-renderer.js +3 -1
- package/dist/_pkgs/data-view/view-presets/calendar/calendar-view-manager.d.ts +70 -0
- package/dist/_pkgs/data-view/view-presets/calendar/calendar-view-manager.js +449 -0
- package/dist/_pkgs/data-view/view-presets/calendar/define.d.ts +10 -0
- package/dist/_pkgs/data-view/view-presets/calendar/define.js +27 -0
- package/dist/_pkgs/data-view/view-presets/calendar/effect.d.ts +1 -0
- package/dist/_pkgs/data-view/view-presets/calendar/effect.js +4 -0
- package/dist/_pkgs/data-view/view-presets/calendar/index.d.ts +6 -0
- package/dist/_pkgs/data-view/view-presets/calendar/index.js +6 -0
- package/dist/_pkgs/data-view/view-presets/calendar/layout.d.ts +37 -0
- package/dist/_pkgs/data-view/view-presets/calendar/layout.js +138 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/actions.d.ts +7 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/actions.js +68 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/dnd.d.ts +32 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/dnd.js +159 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/effect.d.ts +1 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/effect.js +7 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/hit-test.d.ts +1 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/hit-test.js +28 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/styles.d.ts +1 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/styles.js +707 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/view.d.ts +89 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/view.js +837 -0
- package/dist/_pkgs/data-view/view-presets/calendar/renderer.d.ts +2 -0
- package/dist/_pkgs/data-view/view-presets/calendar/renderer.js +8 -0
- package/dist/_pkgs/data-view/view-presets/calendar/source.d.ts +8 -0
- package/dist/_pkgs/data-view/view-presets/calendar/source.js +3 -0
- package/dist/_pkgs/data-view/view-presets/calendar/types.d.ts +79 -0
- package/dist/_pkgs/data-view/view-presets/calendar/types.js +1 -0
- package/dist/_pkgs/data-view/view-presets/convert.js +28 -0
- package/dist/_pkgs/data-view/view-presets/effect.js +2 -0
- package/dist/_pkgs/data-view/view-presets/index.d.ts +2 -0
- package/dist/_pkgs/data-view/view-presets/index.js +3 -0
- package/dist/_pkgs/data-view/view-presets/kanban/kanban-view-manager.js +3 -1
- package/dist/_pkgs/data-view/view-presets/kanban/mobile/cell.js +2 -2
- package/dist/_pkgs/data-view/view-presets/table/collapsed-state.d.ts +18 -0
- package/dist/_pkgs/data-view/view-presets/table/collapsed-state.js +36 -0
- package/dist/_pkgs/data-view/view-presets/table/mobile/cell.js +2 -2
- package/dist/_pkgs/data-view/view-presets/table/mobile/group.d.ts +11 -0
- package/dist/_pkgs/data-view/view-presets/table/mobile/group.js +87 -4
- package/dist/_pkgs/data-view/view-presets/table/pc/cell.d.ts +3 -0
- package/dist/_pkgs/data-view/view-presets/table/pc/cell.js +11 -2
- package/dist/_pkgs/data-view/view-presets/table/pc/controller/hotkeys.d.ts +1 -0
- package/dist/_pkgs/data-view/view-presets/table/pc/controller/hotkeys.js +39 -33
- package/dist/_pkgs/data-view/view-presets/table/pc/group.d.ts +10 -0
- package/dist/_pkgs/data-view/view-presets/table/pc/group.js +84 -5
- package/dist/_pkgs/data-view/view-presets/table/pc-virtual/controller/hotkeys.d.ts +1 -0
- package/dist/_pkgs/data-view/view-presets/table/pc-virtual/controller/hotkeys.js +39 -33
- package/dist/_pkgs/data-view/view-presets/table/pc-virtual/group/top/group-title.js +18 -18
- package/dist/_pkgs/data-view/view-presets/table/pc-virtual/row/cell.d.ts +3 -0
- package/dist/_pkgs/data-view/view-presets/table/pc-virtual/row/cell.js +8 -0
- package/dist/_pkgs/data-view/view-presets/table/table-view-manager.js +3 -1
- package/dist/_pkgs/data-view/view-presets/table/utils.d.ts +3 -0
- package/dist/_pkgs/data-view/view-presets/table/utils.js +16 -1
- package/dist/_pkgs/data-view/widget-presets/tools/presets/view-options/view-options.js +3 -1
- package/dist/_pkgs/global/gfx/curve.js +4 -3
- package/dist/_pkgs/std/clipboard/clipboard.js +13 -3
- package/dist/_pkgs/std/clipboard/utils.d.ts +5 -0
- package/dist/_pkgs/std/clipboard/utils.js +7 -0
- package/dist/_pkgs/std/event/dispatcher.js +27 -1
- package/dist/_pkgs/std/event/keymap.js +16 -6
- package/dist/_pkgs/std/extension/command-registry.d.ts +321 -0
- package/dist/_pkgs/std/extension/command-registry.js +233 -0
- package/dist/_pkgs/std/extension/dnd/index.d.ts +1 -1
- package/dist/_pkgs/std/extension/index.d.ts +2 -0
- package/dist/_pkgs/std/extension/index.js +2 -0
- package/dist/_pkgs/std/extension/translation-manifest.d.ts +49 -0
- package/dist/_pkgs/std/extension/translation-manifest.js +71 -0
- package/dist/_pkgs/std/gfx/index.d.ts +7 -3
- package/dist/_pkgs/std/gfx/index.js +6 -2
- package/dist/_pkgs/std/gfx/interactivity/gfx-view-event-handler.js +6 -1
- package/dist/_pkgs/std/gfx/interactivity/manager.d.ts +8 -0
- package/dist/_pkgs/std/gfx/interactivity/manager.js +18 -0
- package/dist/_pkgs/std/gfx/layer.d.ts +1 -1
- package/dist/_pkgs/std/gfx/layer.js +1 -2
- package/dist/_pkgs/std/gfx/model/surface/decorators/field.js +9 -0
- package/dist/_pkgs/std/gfx/model/surface/decorators/index.d.ts +2 -2
- package/dist/_pkgs/std/gfx/model/surface/decorators/index.js +2 -2
- package/dist/_pkgs/std/gfx/model/surface/decorators/local.d.ts +14 -0
- package/dist/_pkgs/std/gfx/model/surface/decorators/local.js +22 -0
- package/dist/_pkgs/std/gfx/model/surface/decorators/observer.d.ts +2 -0
- package/dist/_pkgs/std/gfx/model/surface/decorators/observer.js +40 -1
- package/dist/_pkgs/std/gfx/model/surface/element-model.d.ts +282 -0
- package/dist/_pkgs/std/gfx/model/surface/element-model.js +436 -25
- package/dist/_pkgs/std/gfx/model/surface/pivot.d.ts +48 -0
- package/dist/_pkgs/std/gfx/model/surface/pivot.js +34 -0
- package/dist/_pkgs/std/gfx/model/surface/role.d.ts +153 -0
- package/dist/_pkgs/std/gfx/model/surface/role.js +115 -0
- package/dist/_pkgs/std/gfx/model/surface/surface-model.d.ts +70 -0
- package/dist/_pkgs/std/gfx/model/surface/surface-model.js +304 -17
- package/dist/_pkgs/std/gfx/model/surface/tags.d.ts +77 -0
- package/dist/_pkgs/std/gfx/model/surface/tags.js +246 -0
- package/dist/_pkgs/std/gfx/perf.d.ts +10 -0
- package/dist/_pkgs/std/gfx/perf.js +30 -0
- package/dist/_pkgs/std/gfx/tool/tool-controller.d.ts +13 -0
- package/dist/_pkgs/std/gfx/tool/tool-controller.js +26 -0
- package/dist/_pkgs/std/gfx/viewport.d.ts +12 -0
- package/dist/_pkgs/std/gfx/viewport.js +19 -1
- package/dist/_pkgs/std/inline/services/event.d.ts +2 -0
- package/dist/_pkgs/std/inline/services/event.js +96 -21
- package/dist/_pkgs/std/utils/layer.js +2 -6
- package/dist/_pkgs/std/utils/tree.d.ts +14 -0
- package/dist/_pkgs/std/utils/tree.js +59 -8
- package/dist/_pkgs/std/view/element/gfx-block-component.js +23 -13
- package/dist/_pkgs/store/extension/workspace/workspace-meta.d.ts +10 -0
- package/dist/_pkgs/store/model/block/flat-sync-controller.js +2 -12
- package/dist/_pkgs/store/model/store/crud.js +7 -4
- package/dist/_pkgs/store/reactive/flat-native-y/index.d.ts +1 -1
- package/dist/_pkgs/store/reactive/flat-native-y/index.js +24 -2
- package/dist/commands.d.ts +58 -0
- package/dist/commands.js +66 -0
- package/dist/extensions/command-telemetry.d.ts +21 -0
- package/dist/extensions/command-telemetry.js +89 -0
- package/dist/extensions/store.d.ts +9 -4
- package/dist/extensions/store.js +27 -24
- package/dist/extensions/view.d.ts +9 -4
- package/dist/extensions/view.js +23 -8
- package/dist/flags.d.ts +98 -21
- package/dist/flags.js +103 -22
- package/dist/frameworks.d.ts +45 -0
- package/dist/frameworks.js +154 -0
- package/dist/schemas.d.ts +8 -5
- package/dist/schemas.js +28 -32
- package/dist/shortcuts.d.ts +16 -16
- package/dist/shortcuts.js +8 -36
- package/dist/translations.d.ts +56 -0
- package/dist/translations.js +112 -0
- package/package.json +16 -4
- package/dist/_pkgs/affine-block-root/keyboard/shortcuts.d.ts +0 -8
- package/dist/_pkgs/affine-block-root/keyboard/shortcuts.js +0 -48
- package/dist/_pkgs/affine-gfx-shape/shortcuts.d.ts +0 -6
- package/dist/_pkgs/affine-gfx-shape/shortcuts.js +0 -28
- package/dist/_pkgs/data-view/core/utils/cache.d.ts +0 -5
- package/dist/_pkgs/data-view/core/utils/cache.js +0 -28
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import type { RootBlockModel } from '../../affine-model/index.js';
|
|
2
|
+
import { WidgetComponent } from '../../std/index.js';
|
|
3
|
+
import { type CSSResultGroup, type TemplateResult } from 'lit';
|
|
4
|
+
/**
|
|
5
|
+
* **Above every toolbar, the contextual one included.**
|
|
6
|
+
*
|
|
7
|
+
* The ceiling inside `.widgets-container` is `--affine-z-index-popover`, which
|
|
8
|
+
* the theme sets to `1000`: `editor-toolbar` — the contextual toolbar the PO
|
|
9
|
+
* found the reading panel hiding behind — takes it verbatim, and so does the
|
|
10
|
+
* zoom bar. The bottom `edgeless-toolbar` is only `z-index: 1`, and its senior
|
|
11
|
+
* sub-menus are appended INSIDE its own subtree, so they are capped at that 1
|
|
12
|
+
* with it. Ten above the variable clears the lot with headroom to spare.
|
|
13
|
+
*
|
|
14
|
+
* The fallback matters as much as the value: it is the host's theme stylesheet
|
|
15
|
+
* that defines the variable, never this library.
|
|
16
|
+
*
|
|
17
|
+
* It is set on the HOST rather than on the panel. Every widget host is a
|
|
18
|
+
* sibling in `.widgets-container`, and `affine-toolbar-widget` declares no
|
|
19
|
+
* stacking context of its own, so `editor-toolbar`'s 1000 competes at that
|
|
20
|
+
* level — which makes it the only level where this contest can be won.
|
|
21
|
+
*
|
|
22
|
+
* What still paints above it, correctly and by design: `popMenu` context menus
|
|
23
|
+
* (1001) and the toolbar drag preview (9999), both mounted on `editor-host`
|
|
24
|
+
* outside the contained widgets layer. A dropdown opened FROM one of these
|
|
25
|
+
* panels would go through `popMenu` and land on top of it, which is what one
|
|
26
|
+
* wants.
|
|
27
|
+
*/
|
|
28
|
+
export declare const EDITOR_ANCHORED_PANEL_Z_INDEX = "calc(var(--affine-z-index-popover, 1000) + 10)";
|
|
29
|
+
/** Where the panel goes, in pixels relative to its own zero-sized host. */
|
|
30
|
+
export type AnchoredPanelBox = {
|
|
31
|
+
left: number;
|
|
32
|
+
width: number;
|
|
33
|
+
bottom: number;
|
|
34
|
+
maxHeight: number;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* The host geometry, the layer and the panel's chrome — the half of the pattern
|
|
38
|
+
* that is CSS.
|
|
39
|
+
*
|
|
40
|
+
* Exported as a stylesheet rather than inherited, because a lit component that
|
|
41
|
+
* declares `static styles` REPLACES its base class's: a subclass composes with
|
|
42
|
+
* `static override styles = [editorAnchoredPanelStyles, css\`…\`]` and adds only
|
|
43
|
+
* what its own content needs.
|
|
44
|
+
*/
|
|
45
|
+
export declare const editorAnchoredPanelStyles: import("lit").CSSResult;
|
|
46
|
+
/**
|
|
47
|
+
* The base every editor-anchored info panel extends.
|
|
48
|
+
*
|
|
49
|
+
* A subclass says WHEN it is open and HOW it closes; everything else — where it
|
|
50
|
+
* sits, what layer it is in, what dismisses it and when it re-measures — comes
|
|
51
|
+
* from here.
|
|
52
|
+
*/
|
|
53
|
+
export declare abstract class EditorAnchoredPanel extends WidgetComponent<RootBlockModel> {
|
|
54
|
+
static styles: CSSResultGroup;
|
|
55
|
+
/** The bar this panel is currently observing, so it can stop observing it. */
|
|
56
|
+
private _observedBar;
|
|
57
|
+
private _anchorObserver;
|
|
58
|
+
get gfx(): import("../../std/gfx/controller.js").GfxController;
|
|
59
|
+
/** Whether a panel is on screen — the subclass's own open state. */
|
|
60
|
+
protected abstract get panelOpen(): boolean;
|
|
61
|
+
/** Put the panel away. The subclass owns what "away" means for its state. */
|
|
62
|
+
protected abstract closePanel(): void;
|
|
63
|
+
/** Keep a click inside the panel from reaching the canvas behind it. */
|
|
64
|
+
protected readonly swallow: (event: Event) => void;
|
|
65
|
+
private readonly _onDocumentPointerDown;
|
|
66
|
+
/**
|
|
67
|
+
* Escape is listened for on the EDITOR HOST, not on `document`, so a host
|
|
68
|
+
* application keeps its own global Escape while the panel handles its own:
|
|
69
|
+
* with a panel open Escape dismisses the panel rather than clearing the
|
|
70
|
+
* canvas selection behind it, and a library has no business making that call
|
|
71
|
+
* for the whole page.
|
|
72
|
+
*/
|
|
73
|
+
private readonly _onHostKeydown;
|
|
74
|
+
/** The visible senior bar, or `null` when there is none to measure. */
|
|
75
|
+
protected anchorBar(): HTMLElement | null;
|
|
76
|
+
/**
|
|
77
|
+
* The panel's box: the bar's own left edge and width, lifted clear of it.
|
|
78
|
+
*
|
|
79
|
+
* Measured, and deliberately NOT clamped to a minimum when the measure
|
|
80
|
+
* succeeded — "same width as the bar" is the decision, and a panel that
|
|
81
|
+
* quietly stopped matching under some width would be the one bug this whole
|
|
82
|
+
* pattern exists to remove. The floors apply to the FALLBACK, which has no
|
|
83
|
+
* bar to agree with.
|
|
84
|
+
*
|
|
85
|
+
* The vertical is read off the same rect: the panel's bottom sits
|
|
86
|
+
* {@link PANEL_BAR_GAP} above the bar's top, which stays true whatever the
|
|
87
|
+
* bar's height and however the host's theme pads it.
|
|
88
|
+
*/
|
|
89
|
+
protected anchorBox(): AnchoredPanelBox;
|
|
90
|
+
/**
|
|
91
|
+
* The panel's frame: the box, the dialog semantics and the pointer
|
|
92
|
+
* swallowing. The subclass passes its own body and nothing else.
|
|
93
|
+
*
|
|
94
|
+
* Deliberately NOT `aria-modal`: it promises everything behind the dialog is
|
|
95
|
+
* inert, and these panels promise the opposite — the canvas stays usable
|
|
96
|
+
* behind them, which is why they follow the editor instead of closing on a
|
|
97
|
+
* pan. Claiming modality without trapping focus is a label that lies to a
|
|
98
|
+
* screen reader, and trapping Tab from a host that is still interactive would
|
|
99
|
+
* be the library taking something that is not its to take.
|
|
100
|
+
*/
|
|
101
|
+
protected renderAnchoredPanel(options: {
|
|
102
|
+
testid: string;
|
|
103
|
+
label: string;
|
|
104
|
+
/** The panel's own class, for the content styles it adds. */
|
|
105
|
+
variant: string;
|
|
106
|
+
/** The element the panel is about, when it is about one. */
|
|
107
|
+
elementId?: string;
|
|
108
|
+
}, body: unknown): TemplateResult;
|
|
109
|
+
/**
|
|
110
|
+
* Click-away, Escape, and the two things that move the bar under the panel.
|
|
111
|
+
*
|
|
112
|
+
* Idempotent by convention: a subclass calls it from both `firstUpdated` and
|
|
113
|
+
* a later `connectedCallback`, because `WithDisposable` throws the group away
|
|
114
|
+
* on disconnect while lit runs `firstUpdated` exactly once.
|
|
115
|
+
*
|
|
116
|
+
* `viewportUpdated` covers a resize and a zoom. The ResizeObserver on the bar
|
|
117
|
+
* covers what a viewport event CANNOT: the bar's own width is `fit-content`
|
|
118
|
+
* over a tool count the toolbar recomputes on a debounce of its own, so the
|
|
119
|
+
* measure taken during the resize is legitimately stale a frame later. The
|
|
120
|
+
* observer is the second look that lands on the settled value.
|
|
121
|
+
*/
|
|
122
|
+
protected wireAnchoredPanel(): void;
|
|
123
|
+
/**
|
|
124
|
+
* Point the observer at whichever bar is on screen NOW.
|
|
125
|
+
*
|
|
126
|
+
* The bar is not a fixed element: a read-only board renders no toolbar at
|
|
127
|
+
* all, and lit's `cache` swaps the presentation toolbar in and out — so the
|
|
128
|
+
* node observed on mount can be gone, and a different one in its place, by
|
|
129
|
+
* the time a panel opens.
|
|
130
|
+
*/
|
|
131
|
+
private _syncAnchorObserver;
|
|
132
|
+
updated(): void;
|
|
133
|
+
}
|
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
import { WidgetComponent } from '../../std/index.js';
|
|
2
|
+
import { GfxControllerIdentifier } from '../../std/gfx/index.js';
|
|
3
|
+
import { css, html, unsafeCSS, } from 'lit';
|
|
4
|
+
import { ifDefined } from 'lit/directives/if-defined.js';
|
|
5
|
+
import { styleMap } from 'lit/directives/style-map.js';
|
|
6
|
+
/**
|
|
7
|
+
* **The editor-anchored info panel** — ADR 0011.
|
|
8
|
+
*
|
|
9
|
+
* One place where the canvas tells you about itself: a panel pinned to the
|
|
10
|
+
* EDITOR, sitting just above the senior button bar and taking exactly its
|
|
11
|
+
* width. Not a popover beside the element it talks about.
|
|
12
|
+
*
|
|
13
|
+
* The PO's decision of 02/08/2026, in one sentence: *the metadata of the canvas
|
|
14
|
+
* is shown in a panel anchored to the editor, above the senior button bar, at
|
|
15
|
+
* its width*. Two surfaces answer to it today — the reversed reading
|
|
16
|
+
* (`reading-widget.ts`) and Map quality (`map-quality-widget.ts`) — and they
|
|
17
|
+
* answer to it through this class rather than through two copies of the same
|
|
18
|
+
* geometry.
|
|
19
|
+
*
|
|
20
|
+
* ## Why the toolbar is the ruler
|
|
21
|
+
*
|
|
22
|
+
* Because it is the only horizontal measure on the board that a user already
|
|
23
|
+
* reads as "the tool's own furniture". A fixed 480px panel was a second,
|
|
24
|
+
* arbitrary measure that lined up with nothing; the recette capture drew the
|
|
25
|
+
* alignment as two red rules down the toolbar's edges, which is precisely what
|
|
26
|
+
* {@link EditorAnchoredPanel.anchorBox} computes. The bar is measured, never
|
|
27
|
+
* predicted: its width is `fit-content` over a tool count that changes with the
|
|
28
|
+
* editor's width, so any arithmetic here would be a copy of `edgeless-toolbar`'s
|
|
29
|
+
* layout that drifts the first time a tool is added.
|
|
30
|
+
*
|
|
31
|
+
* ## What is shared, and what is not
|
|
32
|
+
*
|
|
33
|
+
* Shared: the host geometry and its layer, the panel's box and chrome, the
|
|
34
|
+
* click-away and Escape contracts, and the re-measure wiring. Not shared: a
|
|
35
|
+
* single line of CONTENT — each panel renders its own body into
|
|
36
|
+
* {@link EditorAnchoredPanel.renderAnchoredPanel}, and neither knows the other
|
|
37
|
+
* exists.
|
|
38
|
+
*/
|
|
39
|
+
/** The bottom toolbar widget — the senior button bar this pattern aligns on. */
|
|
40
|
+
const ANCHOR_WIDGET_TAG = 'edgeless-toolbar-widget';
|
|
41
|
+
/**
|
|
42
|
+
* The visible, rounded bar inside that widget's shadow root.
|
|
43
|
+
*
|
|
44
|
+
* The WIDGET is `width: 100%` up to a 900px cap and mostly empty space; the
|
|
45
|
+
* BAR is the box a user sees and the one the alignment is about.
|
|
46
|
+
*/
|
|
47
|
+
const ANCHOR_BAR_SELECTOR = '.edgeless-toolbar-container';
|
|
48
|
+
/**
|
|
49
|
+
* The measure used when the bar cannot be measured at all — a read-only board
|
|
50
|
+
* renders no toolbar, and a widget can be asked to paint before the toolbar has
|
|
51
|
+
* mounted. Centred, so the fallback looks deliberate rather than broken.
|
|
52
|
+
*/
|
|
53
|
+
const PANEL_FALLBACK_WIDTH = 480;
|
|
54
|
+
/** Never narrower than this, however cramped the editor gets. */
|
|
55
|
+
const PANEL_MIN_WIDTH = 240;
|
|
56
|
+
/** Breathing room at the sides and at the top of a small editor. */
|
|
57
|
+
const PANEL_MARGIN = 16;
|
|
58
|
+
/** Clearance kept between the panel's bottom edge and the bar's top edge. */
|
|
59
|
+
const PANEL_BAR_GAP = 12;
|
|
60
|
+
/**
|
|
61
|
+
* Clearance above the editor's bottom edge when there is no bar to measure.
|
|
62
|
+
*
|
|
63
|
+
* `edgeless-toolbar` is 64px tall over a 16px bottom padding; the remainder is
|
|
64
|
+
* the gap.
|
|
65
|
+
*/
|
|
66
|
+
const PANEL_FALLBACK_BOTTOM = 96;
|
|
67
|
+
const PANEL_MAX_HEIGHT = 420;
|
|
68
|
+
const PANEL_MIN_HEIGHT = 160;
|
|
69
|
+
/**
|
|
70
|
+
* **Above every toolbar, the contextual one included.**
|
|
71
|
+
*
|
|
72
|
+
* The ceiling inside `.widgets-container` is `--affine-z-index-popover`, which
|
|
73
|
+
* the theme sets to `1000`: `editor-toolbar` — the contextual toolbar the PO
|
|
74
|
+
* found the reading panel hiding behind — takes it verbatim, and so does the
|
|
75
|
+
* zoom bar. The bottom `edgeless-toolbar` is only `z-index: 1`, and its senior
|
|
76
|
+
* sub-menus are appended INSIDE its own subtree, so they are capped at that 1
|
|
77
|
+
* with it. Ten above the variable clears the lot with headroom to spare.
|
|
78
|
+
*
|
|
79
|
+
* The fallback matters as much as the value: it is the host's theme stylesheet
|
|
80
|
+
* that defines the variable, never this library.
|
|
81
|
+
*
|
|
82
|
+
* It is set on the HOST rather than on the panel. Every widget host is a
|
|
83
|
+
* sibling in `.widgets-container`, and `affine-toolbar-widget` declares no
|
|
84
|
+
* stacking context of its own, so `editor-toolbar`'s 1000 competes at that
|
|
85
|
+
* level — which makes it the only level where this contest can be won.
|
|
86
|
+
*
|
|
87
|
+
* What still paints above it, correctly and by design: `popMenu` context menus
|
|
88
|
+
* (1001) and the toolbar drag preview (9999), both mounted on `editor-host`
|
|
89
|
+
* outside the contained widgets layer. A dropdown opened FROM one of these
|
|
90
|
+
* panels would go through `popMenu` and land on top of it, which is what one
|
|
91
|
+
* wants.
|
|
92
|
+
*/
|
|
93
|
+
export const EDITOR_ANCHORED_PANEL_Z_INDEX = 'calc(var(--affine-z-index-popover, 1000) + 10)';
|
|
94
|
+
/**
|
|
95
|
+
* The host geometry, the layer and the panel's chrome — the half of the pattern
|
|
96
|
+
* that is CSS.
|
|
97
|
+
*
|
|
98
|
+
* Exported as a stylesheet rather than inherited, because a lit component that
|
|
99
|
+
* declares `static styles` REPLACES its base class's: a subclass composes with
|
|
100
|
+
* `static override styles = [editorAnchoredPanelStyles, css\`…\`]` and adds only
|
|
101
|
+
* what its own content needs.
|
|
102
|
+
*/
|
|
103
|
+
export const editorAnchoredPanelStyles = css `
|
|
104
|
+
/*
|
|
105
|
+
A ZERO-SIZED host, pinned to the bottom-left corner of the editor.
|
|
106
|
+
|
|
107
|
+
Zero-sized is not a style choice, it is the only safe one:
|
|
108
|
+
\`.widgets-container > * { pointer-events: auto }\` is an OUTER-tree rule on
|
|
109
|
+
a shadowless block component, so it beats \`:host { pointer-events: none }\`
|
|
110
|
+
outright. A host with a real box would swallow canvas clicks across the
|
|
111
|
+
whole bottom of the board. The panel below carries the box.
|
|
112
|
+
|
|
113
|
+
\`left: 0\` rather than the \`left: 50%\` a centred panel would want: the
|
|
114
|
+
panel is placed against the MEASURED bar, and a zero-width host at the
|
|
115
|
+
container's own origin is what turns a viewport rect into an offset with no
|
|
116
|
+
arithmetic to get wrong.
|
|
117
|
+
*/
|
|
118
|
+
:host {
|
|
119
|
+
position: absolute;
|
|
120
|
+
left: 0;
|
|
121
|
+
bottom: 0;
|
|
122
|
+
z-index: ${unsafeCSS(EDITOR_ANCHORED_PANEL_Z_INDEX)};
|
|
123
|
+
pointer-events: none;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
.editor-anchored-panel {
|
|
127
|
+
position: absolute;
|
|
128
|
+
box-sizing: border-box;
|
|
129
|
+
overflow-y: auto;
|
|
130
|
+
padding: 12px;
|
|
131
|
+
border-radius: 8px;
|
|
132
|
+
border: 1px solid var(--affine-border-color);
|
|
133
|
+
background: var(--affine-background-overlay-panel-color, #fff);
|
|
134
|
+
box-shadow: var(--affine-shadow-2);
|
|
135
|
+
color: var(--affine-text-primary-color);
|
|
136
|
+
font-family: var(--affine-font-family);
|
|
137
|
+
font-size: 14px;
|
|
138
|
+
line-height: 1.4;
|
|
139
|
+
pointer-events: auto;
|
|
140
|
+
}
|
|
141
|
+
`;
|
|
142
|
+
/**
|
|
143
|
+
* The base every editor-anchored info panel extends.
|
|
144
|
+
*
|
|
145
|
+
* A subclass says WHEN it is open and HOW it closes; everything else — where it
|
|
146
|
+
* sits, what layer it is in, what dismisses it and when it re-measures — comes
|
|
147
|
+
* from here.
|
|
148
|
+
*/
|
|
149
|
+
export class EditorAnchoredPanel extends WidgetComponent {
|
|
150
|
+
constructor() {
|
|
151
|
+
super(...arguments);
|
|
152
|
+
/** The bar this panel is currently observing, so it can stop observing it. */
|
|
153
|
+
this._observedBar = null;
|
|
154
|
+
this._anchorObserver = null;
|
|
155
|
+
/** Keep a click inside the panel from reaching the canvas behind it. */
|
|
156
|
+
this.swallow = (event) => {
|
|
157
|
+
event.stopPropagation();
|
|
158
|
+
};
|
|
159
|
+
this._onDocumentPointerDown = (event) => {
|
|
160
|
+
if (!this.panelOpen)
|
|
161
|
+
return;
|
|
162
|
+
// Anything inside this widget keeps it open. The toolbar entry that opened
|
|
163
|
+
// it is in another tree, and its own click already landed.
|
|
164
|
+
if (event.composedPath().includes(this))
|
|
165
|
+
return;
|
|
166
|
+
this.closePanel();
|
|
167
|
+
};
|
|
168
|
+
/**
|
|
169
|
+
* Escape is listened for on the EDITOR HOST, not on `document`, so a host
|
|
170
|
+
* application keeps its own global Escape while the panel handles its own:
|
|
171
|
+
* with a panel open Escape dismisses the panel rather than clearing the
|
|
172
|
+
* canvas selection behind it, and a library has no business making that call
|
|
173
|
+
* for the whole page.
|
|
174
|
+
*/
|
|
175
|
+
this._onHostKeydown = (event) => {
|
|
176
|
+
if (!this.panelOpen || event.key !== 'Escape')
|
|
177
|
+
return;
|
|
178
|
+
event.stopPropagation();
|
|
179
|
+
this.closePanel();
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
// Typed as the GROUP, not as the single sheet it defaults to: a subclass
|
|
183
|
+
// composes with `[editorAnchoredPanelStyles, css\`…\`]`, and a narrower
|
|
184
|
+
// declaration here would make that composition a type error.
|
|
185
|
+
static { this.styles = editorAnchoredPanelStyles; }
|
|
186
|
+
get gfx() {
|
|
187
|
+
return this.std.get(GfxControllerIdentifier);
|
|
188
|
+
}
|
|
189
|
+
/** The visible senior bar, or `null` when there is none to measure. */
|
|
190
|
+
anchorBar() {
|
|
191
|
+
const widget = this.std.host.querySelector(ANCHOR_WIDGET_TAG);
|
|
192
|
+
return (widget?.shadowRoot?.querySelector(ANCHOR_BAR_SELECTOR) ?? null);
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* The panel's box: the bar's own left edge and width, lifted clear of it.
|
|
196
|
+
*
|
|
197
|
+
* Measured, and deliberately NOT clamped to a minimum when the measure
|
|
198
|
+
* succeeded — "same width as the bar" is the decision, and a panel that
|
|
199
|
+
* quietly stopped matching under some width would be the one bug this whole
|
|
200
|
+
* pattern exists to remove. The floors apply to the FALLBACK, which has no
|
|
201
|
+
* bar to agree with.
|
|
202
|
+
*
|
|
203
|
+
* The vertical is read off the same rect: the panel's bottom sits
|
|
204
|
+
* {@link PANEL_BAR_GAP} above the bar's top, which stays true whatever the
|
|
205
|
+
* bar's height and however the host's theme pads it.
|
|
206
|
+
*/
|
|
207
|
+
anchorBox() {
|
|
208
|
+
const { width: editorWidth, height: editorHeight } = this.gfx.viewport;
|
|
209
|
+
// A zero-sized host at the container's origin: `top` is the container's
|
|
210
|
+
// bottom edge, `left` its left edge.
|
|
211
|
+
const origin = this.getBoundingClientRect();
|
|
212
|
+
const bar = this.anchorBar()?.getBoundingClientRect() ?? null;
|
|
213
|
+
let left;
|
|
214
|
+
let width;
|
|
215
|
+
let bottom;
|
|
216
|
+
if (bar && bar.width > 0) {
|
|
217
|
+
left = bar.left - origin.left;
|
|
218
|
+
width = bar.width;
|
|
219
|
+
bottom = Math.max(origin.top - bar.top + PANEL_BAR_GAP, PANEL_BAR_GAP);
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
width = Math.max(PANEL_MIN_WIDTH, Math.min(PANEL_FALLBACK_WIDTH, editorWidth - PANEL_MARGIN * 2));
|
|
223
|
+
left = Math.max(PANEL_MARGIN, (editorWidth - width) / 2);
|
|
224
|
+
bottom = PANEL_FALLBACK_BOTTOM;
|
|
225
|
+
}
|
|
226
|
+
return {
|
|
227
|
+
left,
|
|
228
|
+
width,
|
|
229
|
+
bottom,
|
|
230
|
+
maxHeight: Math.max(PANEL_MIN_HEIGHT, Math.min(PANEL_MAX_HEIGHT, editorHeight - bottom - PANEL_MARGIN)),
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* The panel's frame: the box, the dialog semantics and the pointer
|
|
235
|
+
* swallowing. The subclass passes its own body and nothing else.
|
|
236
|
+
*
|
|
237
|
+
* Deliberately NOT `aria-modal`: it promises everything behind the dialog is
|
|
238
|
+
* inert, and these panels promise the opposite — the canvas stays usable
|
|
239
|
+
* behind them, which is why they follow the editor instead of closing on a
|
|
240
|
+
* pan. Claiming modality without trapping focus is a label that lies to a
|
|
241
|
+
* screen reader, and trapping Tab from a host that is still interactive would
|
|
242
|
+
* be the library taking something that is not its to take.
|
|
243
|
+
*/
|
|
244
|
+
renderAnchoredPanel(options, body) {
|
|
245
|
+
const { left, width, bottom, maxHeight } = this.anchorBox();
|
|
246
|
+
return html `<div
|
|
247
|
+
class="editor-anchored-panel ${options.variant}"
|
|
248
|
+
role="dialog"
|
|
249
|
+
tabindex="-1"
|
|
250
|
+
aria-label=${options.label}
|
|
251
|
+
data-testid=${options.testid}
|
|
252
|
+
data-element-id=${ifDefined(options.elementId)}
|
|
253
|
+
style=${styleMap({
|
|
254
|
+
left: `${left}px`,
|
|
255
|
+
width: `${width}px`,
|
|
256
|
+
bottom: `${bottom}px`,
|
|
257
|
+
maxHeight: `${maxHeight}px`,
|
|
258
|
+
})}
|
|
259
|
+
@pointerdown=${this.swallow}
|
|
260
|
+
@pointerup=${this.swallow}
|
|
261
|
+
@click=${this.swallow}
|
|
262
|
+
>
|
|
263
|
+
${body}
|
|
264
|
+
</div>`;
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Click-away, Escape, and the two things that move the bar under the panel.
|
|
268
|
+
*
|
|
269
|
+
* Idempotent by convention: a subclass calls it from both `firstUpdated` and
|
|
270
|
+
* a later `connectedCallback`, because `WithDisposable` throws the group away
|
|
271
|
+
* on disconnect while lit runs `firstUpdated` exactly once.
|
|
272
|
+
*
|
|
273
|
+
* `viewportUpdated` covers a resize and a zoom. The ResizeObserver on the bar
|
|
274
|
+
* covers what a viewport event CANNOT: the bar's own width is `fit-content`
|
|
275
|
+
* over a tool count the toolbar recomputes on a debounce of its own, so the
|
|
276
|
+
* measure taken during the resize is legitimately stale a frame later. The
|
|
277
|
+
* observer is the second look that lands on the settled value.
|
|
278
|
+
*/
|
|
279
|
+
wireAnchoredPanel() {
|
|
280
|
+
const { _disposables } = this;
|
|
281
|
+
_disposables.add(this.gfx.viewport.viewportUpdated.subscribe(() => {
|
|
282
|
+
if (this.panelOpen)
|
|
283
|
+
this.requestUpdate();
|
|
284
|
+
}));
|
|
285
|
+
const observer = new ResizeObserver(() => {
|
|
286
|
+
if (this.panelOpen)
|
|
287
|
+
this.requestUpdate();
|
|
288
|
+
});
|
|
289
|
+
this._anchorObserver = observer;
|
|
290
|
+
this._syncAnchorObserver();
|
|
291
|
+
document.addEventListener('pointerdown', this._onDocumentPointerDown, true);
|
|
292
|
+
const host = this.std.host;
|
|
293
|
+
host.addEventListener('keydown', this._onHostKeydown, true);
|
|
294
|
+
_disposables.add(() => {
|
|
295
|
+
document.removeEventListener('pointerdown', this._onDocumentPointerDown, true);
|
|
296
|
+
host.removeEventListener('keydown', this._onHostKeydown, true);
|
|
297
|
+
observer.disconnect();
|
|
298
|
+
this._anchorObserver = null;
|
|
299
|
+
this._observedBar = null;
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Point the observer at whichever bar is on screen NOW.
|
|
304
|
+
*
|
|
305
|
+
* The bar is not a fixed element: a read-only board renders no toolbar at
|
|
306
|
+
* all, and lit's `cache` swaps the presentation toolbar in and out — so the
|
|
307
|
+
* node observed on mount can be gone, and a different one in its place, by
|
|
308
|
+
* the time a panel opens.
|
|
309
|
+
*/
|
|
310
|
+
_syncAnchorObserver() {
|
|
311
|
+
const observer = this._anchorObserver;
|
|
312
|
+
if (!observer)
|
|
313
|
+
return;
|
|
314
|
+
const bar = this.anchorBar();
|
|
315
|
+
if (bar === this._observedBar)
|
|
316
|
+
return;
|
|
317
|
+
if (this._observedBar)
|
|
318
|
+
observer.unobserve(this._observedBar);
|
|
319
|
+
this._observedBar = bar;
|
|
320
|
+
if (bar)
|
|
321
|
+
observer.observe(bar);
|
|
322
|
+
}
|
|
323
|
+
updated() {
|
|
324
|
+
this._syncAnchorObserver();
|
|
325
|
+
}
|
|
326
|
+
}
|
|
@@ -1,9 +1,22 @@
|
|
|
1
|
+
export * from './audit.js';
|
|
1
2
|
export * from './clipboard-config.js';
|
|
2
3
|
export * from './crud-extension.js';
|
|
3
4
|
export * from './dom-element-renderer.js';
|
|
4
5
|
export * from './edit-props-middleware-builder.js';
|
|
6
|
+
export * from './editor-anchored-panel.js';
|
|
5
7
|
export * from './element-renderer.js';
|
|
6
8
|
export * from './export-manager/index.js';
|
|
7
9
|
export * from './legacy-slot-extension.js';
|
|
10
|
+
export * from './map-quality.js';
|
|
11
|
+
export * from './map-quality-widget.js';
|
|
8
12
|
export * from './query.js';
|
|
13
|
+
export * from './reading.js';
|
|
14
|
+
export * from './reading-toolbar.js';
|
|
15
|
+
export * from './reading-widget.js';
|
|
16
|
+
export * from './spotlight.js';
|
|
9
17
|
export * from './surface-middleware.js';
|
|
18
|
+
export * from './tags-toolbar.js';
|
|
19
|
+
export * from './validation.js';
|
|
20
|
+
export * from './validation-toolbar.js';
|
|
21
|
+
export * from './violation-detail-widget.js';
|
|
22
|
+
export * from './violation-timeline.js';
|
|
@@ -1,9 +1,22 @@
|
|
|
1
|
+
export * from './audit.js';
|
|
1
2
|
export * from './clipboard-config.js';
|
|
2
3
|
export * from './crud-extension.js';
|
|
3
4
|
export * from './dom-element-renderer.js';
|
|
4
5
|
export * from './edit-props-middleware-builder.js';
|
|
6
|
+
export * from './editor-anchored-panel.js';
|
|
5
7
|
export * from './element-renderer.js';
|
|
6
8
|
export * from './export-manager/index.js';
|
|
7
9
|
export * from './legacy-slot-extension.js';
|
|
10
|
+
export * from './map-quality.js';
|
|
11
|
+
export * from './map-quality-widget.js';
|
|
8
12
|
export * from './query.js';
|
|
13
|
+
export * from './reading.js';
|
|
14
|
+
export * from './reading-toolbar.js';
|
|
15
|
+
export * from './reading-widget.js';
|
|
16
|
+
export * from './spotlight.js';
|
|
9
17
|
export * from './surface-middleware.js';
|
|
18
|
+
export * from './tags-toolbar.js';
|
|
19
|
+
export * from './validation.js';
|
|
20
|
+
export * from './validation-toolbar.js';
|
|
21
|
+
export * from './violation-detail-widget.js';
|
|
22
|
+
export * from './violation-timeline.js';
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { type AnyCommandDescriptor } from '../../std/index.js';
|
|
2
|
+
import { nothing } from 'lit';
|
|
3
|
+
import { EditorAnchoredPanel } from './editor-anchored-panel.js';
|
|
4
|
+
export declare const MAP_QUALITY_WIDGET = "affine-map-quality-widget";
|
|
5
|
+
/**
|
|
6
|
+
* The **Map quality** panel (PF7.11): the checklist of nudges a framework
|
|
7
|
+
* declares (PF7.10), on one root instance.
|
|
8
|
+
*
|
|
9
|
+
* ## One kind of statement, and only one (PO, 02/08/2026)
|
|
10
|
+
*
|
|
11
|
+
* The panel used to carry three: the checklist, a "Run check-up" button with the
|
|
12
|
+
* remarks and the families it had walked, and a count of the real-time warnings
|
|
13
|
+
* on the map. All three were true and the reader had to work out which was
|
|
14
|
+
* speaking — a check-up saying "Nothing to report" over a map wearing amber
|
|
15
|
+
* badges reads as a contradiction until you know it never looked at them. The
|
|
16
|
+
* PO's answer was not more wording: it was to take the other two away. What is
|
|
17
|
+
* left is the one thing the panel is FOR, the expectations the tool cannot judge
|
|
18
|
+
* and the user says they have taken care of.
|
|
19
|
+
*
|
|
20
|
+
* Nothing was removed from the engine. The on-demand moment (PF5.14) and the
|
|
21
|
+
* families that used it are still there, still tested; the canvas still carries
|
|
22
|
+
* the real-time findings, which is where they were always legible. Only this
|
|
23
|
+
* panel got shorter.
|
|
24
|
+
*
|
|
25
|
+
* ## Generic, not Wardley
|
|
26
|
+
*
|
|
27
|
+
* Nothing here names a framework, a role or a rule. The panel asks the ENGINE
|
|
28
|
+
* what this instance has ({@link ValidationManager.nudgesFor}) and renders the
|
|
29
|
+
* answer. A second framework declaring nudges gets the toolbar entry and this
|
|
30
|
+
* panel with no code written anywhere — which is the acceptance criterion of
|
|
31
|
+
* PF7.11 and the reason none of this lives in `gfx/wardley`.
|
|
32
|
+
*
|
|
33
|
+
* ## Why a widget and not a menu
|
|
34
|
+
*
|
|
35
|
+
* Because a dropdown closes on the first click, and this is a surface you WORK
|
|
36
|
+
* in: four boxes to tick, one at a time, while looking at the map. The entry in
|
|
37
|
+
* the Validation dropdown opens it and gets out of the way
|
|
38
|
+
* (`validation-toolbar.ts`); `ValidationManager.mapQualityFor$` is the seam
|
|
39
|
+
* between the two, because the entry lives in `editor-menu-button`'s shadow root
|
|
40
|
+
* and the panel lives on the root block — two trees with no DOM path between
|
|
41
|
+
* them.
|
|
42
|
+
*
|
|
43
|
+
* ## Where it sits
|
|
44
|
+
*
|
|
45
|
+
* **Anchored to the EDITOR, above the senior button bar and at its width** —
|
|
46
|
+
* the same place, the same layer and the same shared class as the reversed
|
|
47
|
+
* reading's panel (ADR 0011, PO decision of 02/08/2026). It shipped as a
|
|
48
|
+
* popover hanging off the map's top-right corner, at 320px, flipping sides and
|
|
49
|
+
* ends to stay on screen; every line of that arithmetic is gone, and with it
|
|
50
|
+
* the two faults the PO named — a floating box that loses the z-order contest
|
|
51
|
+
* with the toolbars, and a measure that lines up with nothing.
|
|
52
|
+
*
|
|
53
|
+
* Only the PRESENTATION moved. The entry in the background's contextual menu is
|
|
54
|
+
* still the trigger, the panel is still about one root instance and still says
|
|
55
|
+
* so in `data-element-id`, and nothing about what it renders changed.
|
|
56
|
+
*
|
|
57
|
+
* ## Read-only
|
|
58
|
+
*
|
|
59
|
+
* Ticking a nudge WRITES on the document, so every checkbox is disabled in a
|
|
60
|
+
* read-only store — and `setNudgeChecked` is behind the same guard, because a
|
|
61
|
+
* disabled input is a UI promise and not an enforcement. Opening the panel
|
|
62
|
+
* writes nothing, so a reviewer still reads the checklist.
|
|
63
|
+
*
|
|
64
|
+
* ## Ticking is assuming
|
|
65
|
+
*
|
|
66
|
+
* The panel never claims a nudge is satisfied. It records that somebody said so
|
|
67
|
+
* — the same contract as an exception (PF8), and the reason the checklist is
|
|
68
|
+
* introduced as "To be checked by you" rather than as "Checklist", which left
|
|
69
|
+
* the reader to guess whether the tool had already been through it.
|
|
70
|
+
*/
|
|
71
|
+
export declare class MapQualityWidget extends EditorAnchoredPanel {
|
|
72
|
+
static styles: import("lit").CSSResult[];
|
|
73
|
+
/** The instance whose panel is open, mirrored off the manager's signal. */
|
|
74
|
+
private accessor _openFor;
|
|
75
|
+
/**
|
|
76
|
+
* Bumped to force a re-render when the document changes underneath — a peer
|
|
77
|
+
* ticking a nudge, an undo, the instance moving. The checklist state lives in
|
|
78
|
+
* the Y.Map, not here: this widget renders it, it never caches it.
|
|
79
|
+
*/
|
|
80
|
+
private accessor _revision;
|
|
81
|
+
private _elementSubscriptions;
|
|
82
|
+
/** The instance whose panel has already been given the focus, if any. */
|
|
83
|
+
private _focused;
|
|
84
|
+
private get _validation();
|
|
85
|
+
protected get panelOpen(): boolean;
|
|
86
|
+
protected closePanel(): void;
|
|
87
|
+
/** The open instance, if it still exists and still has a panel to show. */
|
|
88
|
+
private get _element();
|
|
89
|
+
private readonly _close;
|
|
90
|
+
/**
|
|
91
|
+
* Follow the open instance, and only while one is open. On a board with no
|
|
92
|
+
* panel these subscriptions do not exist, so the busiest signals on the
|
|
93
|
+
* surface cost the widget nothing.
|
|
94
|
+
*
|
|
95
|
+
* `elementRemoved` as well as `elementUpdated`, and that is not symmetry for
|
|
96
|
+
* its own sake: DELETING the instance is the one change that must close the
|
|
97
|
+
* panel, and it is the one change `elementUpdated` never reports. Without it
|
|
98
|
+
* the panel floats over a map that is gone, with a checkbox that writes to a
|
|
99
|
+
* dead element.
|
|
100
|
+
*/
|
|
101
|
+
private _watchElements;
|
|
102
|
+
/**
|
|
103
|
+
* Idempotent wiring, called from both `firstUpdated` and a later
|
|
104
|
+
* `connectedCallback` — `WithDisposable` throws the group away on disconnect
|
|
105
|
+
* while lit runs `firstUpdated` exactly once.
|
|
106
|
+
*/
|
|
107
|
+
private _wire;
|
|
108
|
+
connectedCallback(): void;
|
|
109
|
+
firstUpdated(): void;
|
|
110
|
+
/**
|
|
111
|
+
* Move the focus into the panel when it opens, once.
|
|
112
|
+
*
|
|
113
|
+
* Without it the panel is unreachable from the keyboard and silent to a screen
|
|
114
|
+
* reader — which matters most on the path the toolbar does not cover: opened
|
|
115
|
+
* from the command palette, the focus is still in the host's own UI, so
|
|
116
|
+
* nothing is announced and the Escape handler (on the editor host, which is
|
|
117
|
+
* the right scope) never sees the key.
|
|
118
|
+
*
|
|
119
|
+
* The panel itself takes the focus, not the first checkbox: it carries the
|
|
120
|
+
* dialog's label, so a screen reader reads "Map quality" before it reads the
|
|
121
|
+
* first expectation. `preventScroll` because the host is a zero-sized box at
|
|
122
|
+
* the viewport origin and the browser would otherwise scroll the editor to
|
|
123
|
+
* "reveal" it.
|
|
124
|
+
*
|
|
125
|
+
* The dialog semantics themselves — `role`, `tabindex`, and the deliberate
|
|
126
|
+
* absence of `aria-modal` — come from {@link EditorAnchoredPanel}, which is
|
|
127
|
+
* also where the reasoning for that absence now lives.
|
|
128
|
+
*/
|
|
129
|
+
updated(): void;
|
|
130
|
+
/**
|
|
131
|
+
* Tick or untick, and report it.
|
|
132
|
+
*
|
|
133
|
+
* `captureSync` opens an undo checkpoint first, like every other write the
|
|
134
|
+
* validation surfaces make, so one click is one undo.
|
|
135
|
+
*
|
|
136
|
+
* The read-only test here is the CHEAP half — it keeps `captureSync` and the
|
|
137
|
+
* telemetry from firing for a write that will not happen. The one that
|
|
138
|
+
* actually protects the document is inside `setNudgeChecked`, at the seam,
|
|
139
|
+
* where every caller meets it (see the note there).
|
|
140
|
+
*/
|
|
141
|
+
private _toggleNudge;
|
|
142
|
+
private _renderNudges;
|
|
143
|
+
render(): import("lit-html").TemplateResult | typeof nothing;
|
|
144
|
+
}
|
|
145
|
+
export declare const mapQualityWidget: import("../../store/index.js").ExtensionType;
|
|
146
|
+
export declare const mapQualityCommands: AnyCommandDescriptor[];
|