@formicoidea/labre-core 0.31.0 → 0.33.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-attachment/attachment-block.js +1 -1
- package/dist/_pkgs/affine-block-callout/callout-block.d.ts +6 -0
- package/dist/_pkgs/affine-block-callout/callout-block.js +26 -4
- 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-inline.js +1 -1
- 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 +54 -5
- package/dist/_pkgs/affine-block-code/code-toolbar/index.js +1 -1
- 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/data-source.js +1 -2
- package/dist/_pkgs/affine-block-database/database-block.js +13 -0
- package/dist/_pkgs/affine-block-database/external-data-source.js +1 -1
- 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 +11 -1
- 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/embed-figma-block/embed-figma-service.js +1 -1
- package/dist/_pkgs/affine-block-embed/embed-iframe-block/configs/toolbar.js +2 -2
- 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/configs/toolbar.js +1 -1
- 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-linked-doc-block/utils.js +1 -1
- package/dist/_pkgs/affine-block-embed-doc/embed-synced-doc-block/configs/toolbar.js +1 -1
- 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 +23 -4
- package/dist/_pkgs/affine-block-frame/frame-manager.d.ts +13 -0
- package/dist/_pkgs/affine-block-frame/frame-manager.js +34 -2
- package/dist/_pkgs/affine-block-frame/frame-tool.js +1 -1
- package/dist/_pkgs/affine-block-image/components/page-image-block.js +1 -1
- package/dist/_pkgs/affine-block-image/image-edgeless-block.js +1 -1
- package/dist/_pkgs/affine-block-latex/styles.js +6 -1
- package/dist/_pkgs/affine-block-list/utils/forward-delete.js +1 -1
- package/dist/_pkgs/affine-block-note/commands/select-block.js +1 -1
- package/dist/_pkgs/affine-block-note/commands/select-blocks-between.js +1 -1
- package/dist/_pkgs/affine-block-note/move-block.js +1 -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-paragraph/utils/forward-delete.js +2 -2
- package/dist/_pkgs/affine-block-paragraph/utils/merge-with-prev.js +1 -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 +10 -3
- 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 +27 -2
- 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/clipboard-utils.js +1 -1
- 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/adapters/markdown/element-adapter/type.js +1 -1
- package/dist/_pkgs/affine-block-surface/adapters/plain-text/element-adapter/type.js +1 -1
- 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 +21 -3
- package/dist/_pkgs/affine-block-surface/element-model/index.js +14 -2
- package/dist/_pkgs/affine-block-surface/extensions/audit.d.ts +107 -0
- package/dist/_pkgs/affine-block-surface/extensions/audit.js +489 -0
- package/dist/_pkgs/affine-block-surface/extensions/crud-extension.d.ts +14 -0
- package/dist/_pkgs/affine-block-surface/extensions/crud-extension.js +37 -5
- 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 +327 -0
- package/dist/_pkgs/affine-block-surface/extensions/element-renderer.js +1 -1
- package/dist/_pkgs/affine-block-surface/extensions/export-manager/export-manager.js +1 -1
- package/dist/_pkgs/affine-block-surface/extensions/index.d.ts +17 -0
- package/dist/_pkgs/affine-block-surface/extensions/index.js +17 -0
- package/dist/_pkgs/affine-block-surface/extensions/interchange-import.d.ts +172 -0
- package/dist/_pkgs/affine-block-surface/extensions/interchange-import.js +393 -0
- package/dist/_pkgs/affine-block-surface/extensions/interchange.d.ts +306 -0
- package/dist/_pkgs/affine-block-surface/extensions/interchange.js +64 -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/morph-toolbar.d.ts +248 -0
- package/dist/_pkgs/affine-block-surface/extensions/morph-toolbar.js +248 -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 +588 -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/svg-sketch.d.ts +107 -0
- package/dist/_pkgs/affine-block-surface/extensions/svg-sketch.js +958 -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 +2129 -0
- package/dist/_pkgs/affine-block-surface/extensions/validation.js +4620 -0
- package/dist/_pkgs/affine-block-surface/extensions/violation-detail-widget.d.ts +330 -0
- package/dist/_pkgs/affine-block-surface/extensions/violation-detail-widget.js +1004 -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 +610 -0
- package/dist/_pkgs/affine-block-surface/framework-background/def.js +206 -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 +99 -0
- package/dist/_pkgs/affine-block-surface/framework-background/labels.js +193 -0
- package/dist/_pkgs/affine-block-surface/framework-background/renderer.d.ts +8 -0
- package/dist/_pkgs/affine-block-surface/framework-background/renderer.js +399 -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/renderer/overlay.js +1 -1
- 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-surface-ref/portal/note.js +2 -2
- package/dist/_pkgs/affine-block-table/commands.js +1 -1
- 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/edgeless-shape-color-picker/color-picker.js +1 -1
- package/dist/_pkgs/affine-components/embed-card-modal/embed-card-edit-modal.js +1 -1
- package/dist/_pkgs/affine-components/filterable-list/styles.js +1 -1
- 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/peek/peekable.js +1 -1
- package/dist/_pkgs/affine-components/portal/portal.d.ts +1 -1
- package/dist/_pkgs/affine-components/toolbar/index.d.ts +1 -0
- package/dist/_pkgs/affine-components/toolbar/index.js +1 -0
- package/dist/_pkgs/affine-components/toolbar/menu-button.js +2 -1
- package/dist/_pkgs/affine-components/toolbar/picker-menu.d.ts +55 -0
- package/dist/_pkgs/affine-components/toolbar/picker-menu.js +47 -0
- package/dist/_pkgs/affine-components/toolbar/toolbar.js +11 -10
- package/dist/_pkgs/affine-foundation/view.js +11 -2
- package/dist/_pkgs/affine-fragment-frame-panel/body/frame-panel-body.js +2 -2
- package/dist/_pkgs/affine-fragment-frame-panel/header/frame-panel-header.js +2 -2
- package/dist/_pkgs/affine-fragment-frame-panel/header/frames-setting-menu.js +1 -1
- package/dist/_pkgs/affine-fragment-outline/mobile-outline-panel.js +1 -1
- 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/toolbar/components/pen/pen-tool-button.js +1 -1
- 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 +39 -16
- package/dist/_pkgs/affine-gfx-connector/connector-tool.d.ts +26 -1
- package/dist/_pkgs/affine-gfx-connector/connector-tool.js +12 -3
- package/dist/_pkgs/affine-gfx-connector/connector-watcher.js +1 -4
- package/dist/_pkgs/affine-gfx-connector/direction/direction-reveal.d.ts +123 -0
- package/dist/_pkgs/affine-gfx-connector/direction/direction-reveal.js +282 -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 +185 -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/element-renderer/index.js +1 -1
- package/dist/_pkgs/affine-gfx-connector/element-renderer/utils.js +1 -1
- 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 +68 -2
- 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-mindmap/adapter/markdown/index.js +1 -1
- package/dist/_pkgs/affine-gfx-mindmap/adapter/utils.js +1 -1
- package/dist/_pkgs/affine-gfx-mindmap/templates/index.js +583 -4
- package/dist/_pkgs/affine-gfx-mindmap/toolbar/mindmap-menu.js +23 -23
- package/dist/_pkgs/affine-gfx-mindmap/toolbar/mindmap-tool-button.js +5 -1
- package/dist/_pkgs/affine-gfx-mindmap/view/utils.js +1 -1
- package/dist/_pkgs/affine-gfx-note/overlay/overlay.js +1 -1
- package/dist/_pkgs/affine-gfx-note/toolbar/note-senior-button.js +1 -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/consts.js +1 -1
- package/dist/_pkgs/affine-gfx-shape/draggable/shape-draggable.js +1 -1
- package/dist/_pkgs/affine-gfx-shape/element-renderer/shape/polygon.js +17 -9
- package/dist/_pkgs/affine-gfx-shape/element-renderer/shape/utils.js +8 -3
- package/dist/_pkgs/affine-gfx-shape/element-renderer/shape-dom/index.js +48 -19
- package/dist/_pkgs/affine-gfx-shape/element-view.js +19 -12
- 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/overlay/polygon-drawing-overlay.js +1 -1
- package/dist/_pkgs/affine-gfx-shape/overlay/polygon-vertex-editing-overlay.js +12 -7
- package/dist/_pkgs/affine-gfx-shape/overlay/shape-overlay.js +1 -1
- package/dist/_pkgs/affine-gfx-shape/polygon-tool.js +4 -2
- package/dist/_pkgs/affine-gfx-shape/shape-tool.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 -15
- package/dist/_pkgs/affine-gfx-shape/view.js +3 -3
- package/dist/_pkgs/affine-gfx-template/builtin/other.js +66 -17
- package/dist/_pkgs/affine-gfx-template/toolbar/overlay-scrollbar.js +1 -1
- package/dist/_pkgs/affine-gfx-template/toolbar/template-panel.js +1 -1
- 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-gfx-text/toolbar/actions.js +1 -1
- 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/command.js +1 -1
- 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-inline-preset/command/format-block.js +1 -1
- package/dist/_pkgs/affine-inline-preset/command/format-native.js +2 -2
- package/dist/_pkgs/affine-inline-preset/command/format-text.js +1 -1
- package/dist/_pkgs/affine-inline-preset/inline-spec.js +1 -1
- package/dist/_pkgs/affine-inline-reference/reference-node/reference-node.js +1 -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/bpmn/node.d.ts +40 -7
- package/dist/_pkgs/affine-model/elements/bpmn/node.js +4 -2
- package/dist/_pkgs/affine-model/elements/bpmn/pool.d.ts +74 -17
- package/dist/_pkgs/affine-model/elements/bpmn/pool.js +55 -26
- package/dist/_pkgs/affine-model/elements/c4/board.d.ts +88 -0
- package/dist/_pkgs/affine-model/elements/c4/board.js +128 -0
- package/dist/_pkgs/affine-model/elements/c4/boundary.d.ts +63 -0
- package/dist/_pkgs/affine-model/elements/c4/boundary.js +134 -0
- package/dist/_pkgs/affine-model/elements/c4/index.d.ts +3 -0
- package/dist/_pkgs/affine-model/elements/c4/index.js +3 -0
- package/dist/_pkgs/affine-model/elements/c4/node.d.ts +97 -0
- package/dist/_pkgs/affine-model/elements/c4/node.js +130 -0
- package/dist/_pkgs/affine-model/elements/connector/connector.js +25 -1
- package/dist/_pkgs/affine-model/elements/context-map/context-map.d.ts +27 -0
- package/dist/_pkgs/affine-model/elements/context-map/context-map.js +94 -0
- package/dist/_pkgs/affine-model/elements/context-map/index.d.ts +1 -0
- package/dist/_pkgs/affine-model/elements/context-map/index.js +1 -0
- package/dist/_pkgs/affine-model/elements/core-domain/core-domain.d.ts +34 -17
- package/dist/_pkgs/affine-model/elements/core-domain/core-domain.js +28 -26
- 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/event-storming/event-storming.d.ts +36 -0
- package/dist/_pkgs/affine-model/elements/event-storming/event-storming.js +103 -0
- package/dist/_pkgs/affine-model/elements/event-storming/index.d.ts +1 -0
- package/dist/_pkgs/affine-model/elements/event-storming/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 +14 -1
- package/dist/_pkgs/affine-model/elements/index.js +4 -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/shape/api/polygon.js +2 -8
- 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/html/block-adapter.js +1 -1
- package/dist/_pkgs/affine-shared/adapters/markdown/block-adapter.js +1 -1
- package/dist/_pkgs/affine-shared/adapters/markdown/delta-converter.d.ts +6 -1
- package/dist/_pkgs/affine-shared/adapters/markdown/delta-converter.js +161 -3
- package/dist/_pkgs/affine-shared/adapters/markdown/markdown.js +5 -1
- package/dist/_pkgs/affine-shared/adapters/notion-html/block-adapter.js +1 -1
- package/dist/_pkgs/affine-shared/adapters/notion-html/delta-converter.js +1 -1
- package/dist/_pkgs/affine-shared/adapters/plain-text/block-adapter.js +1 -1
- package/dist/_pkgs/affine-shared/adapters/plain-text/delta-converter.js +1 -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 +283 -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/commands/model-crud/draft-selected-models.js +1 -1
- package/dist/_pkgs/affine-shared/commands/selection/focus-block-end.js +1 -1
- package/dist/_pkgs/affine-shared/commands/selection/focus-block-start.js +1 -1
- package/dist/_pkgs/affine-shared/consts/index.d.ts +10 -0
- package/dist/_pkgs/affine-shared/consts/index.js +10 -0
- package/dist/_pkgs/affine-shared/services/artefact-catalogue-service.d.ts +55 -0
- package/dist/_pkgs/affine-shared/services/artefact-catalogue-service.js +35 -0
- package/dist/_pkgs/affine-shared/services/audit-service.d.ts +311 -0
- package/dist/_pkgs/affine-shared/services/audit-service.js +228 -0
- package/dist/_pkgs/affine-shared/services/command-usage-service.d.ts +31 -0
- package/dist/_pkgs/affine-shared/services/command-usage-service.js +109 -0
- package/dist/_pkgs/affine-shared/services/comment-service/block-comment-manager.js +1 -1
- package/dist/_pkgs/affine-shared/services/doc-display-meta-service.js +1 -1
- 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/embed-iframe/embed-iframe-config.js +1 -1
- 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 +7 -0
- package/dist/_pkgs/affine-shared/services/index.js +7 -0
- package/dist/_pkgs/affine-shared/services/pivot-materiality-publisher.d.ts +129 -0
- package/dist/_pkgs/affine-shared/services/pivot-materiality-publisher.js +312 -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 +255 -1
- 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/toolbar-service/registry.d.ts +44 -0
- package/dist/_pkgs/affine-shared/services/toolbar-service/registry.js +161 -3
- 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 +256 -0
- package/dist/_pkgs/affine-shared/test-utils/affine-template.js +1 -1
- 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/edgeless.js +1 -1
- package/dist/_pkgs/affine-shared/utils/file/filesys.d.ts +34 -0
- package/dist/_pkgs/affine-shared/utils/file/filesys.js +48 -7
- 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 +25 -1
- package/dist/_pkgs/affine-widget-drag-handle/utils.js +1 -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-auto-connect/index.js +1 -1
- package/dist/_pkgs/affine-widget-edgeless-dragging-area/edgeless-dragging-area-rect.js +1 -1
- 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/catalogue/artefact-catalogue-default.d.ts +14 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/artefact-catalogue-default.js +40 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/artefact-catalogue-widget.d.ts +158 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/artefact-catalogue-widget.js +572 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/catalogue-groups.d.ts +46 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/catalogue-groups.js +66 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/chord-format.d.ts +13 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/chord-format.js +50 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/edgeless-toolbar.d.ts +6 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/edgeless-toolbar.js +15 -5
- package/dist/_pkgs/affine-widget-edgeless-toolbar/effects.d.ts +2 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/effects.js +2 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/extension/index.d.ts +7 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/index.d.ts +5 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/index.js +5 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/menu/command-menu.d.ts +57 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/menu/command-menu.js +140 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/view.js +9 -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-keyboard-toolbar/keyboard-tool-panel.js +1 -1
- package/dist/_pkgs/affine-widget-linked-doc/import-doc/import-doc.js +1 -1
- 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-page-dragging-area/index.js +1 -1
- package/dist/_pkgs/affine-widget-remote-selection/doc/doc-remote-selection.js +1 -1
- 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 +40 -8
- package/dist/_pkgs/affine-widget-toolbar/utils.d.ts +146 -3
- package/dist/_pkgs/affine-widget-toolbar/utils.js +744 -58
- 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 +64 -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 +849 -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 +89 -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 +86 -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 +10 -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 +475 -0
- package/dist/_pkgs/std/extension/command-registry.js +431 -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/shortcut.js +2 -1
- 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/grid.js +1 -1
- 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 +442 -0
- package/dist/_pkgs/std/gfx/model/surface/element-model.js +510 -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 +117 -0
- package/dist/_pkgs/std/gfx/model/surface/surface-model.d.ts +70 -0
- package/dist/_pkgs/std/gfx/model/surface/surface-model.js +305 -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/selection.js +1 -1
- 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 +20 -2
- package/dist/_pkgs/std/inline/extensions/inline-manager.js +1 -1
- package/dist/_pkgs/std/inline/extensions/markdown-matcher.js +1 -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 +10 -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/command-usage.d.ts +23 -0
- package/dist/extensions/command-usage.js +37 -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 +35 -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 +186 -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 +200 -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,528 @@
|
|
|
1
|
+
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
2
|
+
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
3
|
+
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
4
|
+
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
5
|
+
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
6
|
+
var _, done = false;
|
|
7
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
8
|
+
var context = {};
|
|
9
|
+
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
10
|
+
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
11
|
+
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
12
|
+
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
13
|
+
if (kind === "accessor") {
|
|
14
|
+
if (result === void 0) continue;
|
|
15
|
+
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
16
|
+
if (_ = accept(result.get)) descriptor.get = _;
|
|
17
|
+
if (_ = accept(result.set)) descriptor.set = _;
|
|
18
|
+
if (_ = accept(result.init)) initializers.unshift(_);
|
|
19
|
+
}
|
|
20
|
+
else if (_ = accept(result)) {
|
|
21
|
+
if (kind === "field") initializers.unshift(_);
|
|
22
|
+
else descriptor[key] = _;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
26
|
+
done = true;
|
|
27
|
+
};
|
|
28
|
+
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
29
|
+
var useValue = arguments.length > 2;
|
|
30
|
+
for (var i = 0; i < initializers.length; i++) {
|
|
31
|
+
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
32
|
+
}
|
|
33
|
+
return useValue ? value : void 0;
|
|
34
|
+
};
|
|
35
|
+
import { TelemetryProvider, translateKey } from '../../affine-shared/services/index.js';
|
|
36
|
+
import { WidgetViewExtension, } from '../../std/index.js';
|
|
37
|
+
import { GfxControllerIdentifier, GfxPrimitiveElementModel, } from '../../std/gfx/index.js';
|
|
38
|
+
import { effect } from '@preact/signals-core';
|
|
39
|
+
import { css, html, nothing, unsafeCSS } from 'lit';
|
|
40
|
+
import { state } from 'lit/decorators.js';
|
|
41
|
+
import { literal, unsafeStatic } from 'lit/static-html.js';
|
|
42
|
+
import { EditorAnchoredPanel, editorAnchoredPanelStyles, } from './editor-anchored-panel.js';
|
|
43
|
+
import { checkedNudges, setNudgeChecked, } from './map-quality.js';
|
|
44
|
+
import { ValidationManager } from './validation.js';
|
|
45
|
+
export const MAP_QUALITY_WIDGET = 'affine-map-quality-widget';
|
|
46
|
+
/**
|
|
47
|
+
* Width of the column the checkboxes live in, in screen pixels.
|
|
48
|
+
*
|
|
49
|
+
* One vertical line runs down the left edge of every sentence in the panel: the
|
|
50
|
+
* box sits in this column, the words in the next. The alternative the PO offered
|
|
51
|
+
* (boxes aligned right) would have put the control furthest from the words it
|
|
52
|
+
* governs.
|
|
53
|
+
*/
|
|
54
|
+
const CHECKBOX_GUTTER = 22;
|
|
55
|
+
/**
|
|
56
|
+
* The **Map quality** panel (PF7.11): the checklist of nudges a framework
|
|
57
|
+
* declares (PF7.10), on one root instance.
|
|
58
|
+
*
|
|
59
|
+
* ## One kind of statement, and only one (PO, 02/08/2026)
|
|
60
|
+
*
|
|
61
|
+
* The panel used to carry three: the checklist, a "Run check-up" button with the
|
|
62
|
+
* remarks and the families it had walked, and a count of the real-time warnings
|
|
63
|
+
* on the map. All three were true and the reader had to work out which was
|
|
64
|
+
* speaking — a check-up saying "Nothing to report" over a map wearing amber
|
|
65
|
+
* badges reads as a contradiction until you know it never looked at them. The
|
|
66
|
+
* PO's answer was not more wording: it was to take the other two away. What is
|
|
67
|
+
* left is the one thing the panel is FOR, the expectations the tool cannot judge
|
|
68
|
+
* and the user says they have taken care of.
|
|
69
|
+
*
|
|
70
|
+
* Nothing was removed from the engine. The on-demand moment (PF5.14) and the
|
|
71
|
+
* families that used it are still there, still tested; the canvas still carries
|
|
72
|
+
* the real-time findings, which is where they were always legible. Only this
|
|
73
|
+
* panel got shorter.
|
|
74
|
+
*
|
|
75
|
+
* ## Generic, not Wardley
|
|
76
|
+
*
|
|
77
|
+
* Nothing here names a framework, a role or a rule. The panel asks the ENGINE
|
|
78
|
+
* what this instance has ({@link ValidationManager.nudgesFor}) and renders the
|
|
79
|
+
* answer. A second framework declaring nudges gets the toolbar entry and this
|
|
80
|
+
* panel with no code written anywhere — which is the acceptance criterion of
|
|
81
|
+
* PF7.11 and the reason none of this lives in `gfx/wardley`.
|
|
82
|
+
*
|
|
83
|
+
* ## Why a widget and not a menu
|
|
84
|
+
*
|
|
85
|
+
* Because a dropdown closes on the first click, and this is a surface you WORK
|
|
86
|
+
* in: four boxes to tick, one at a time, while looking at the map. The entry in
|
|
87
|
+
* the Validation dropdown opens it and gets out of the way
|
|
88
|
+
* (`validation-toolbar.ts`); `ValidationManager.mapQualityFor$` is the seam
|
|
89
|
+
* between the two, because the entry lives in `editor-menu-button`'s shadow root
|
|
90
|
+
* and the panel lives on the root block — two trees with no DOM path between
|
|
91
|
+
* them.
|
|
92
|
+
*
|
|
93
|
+
* ## Where it sits
|
|
94
|
+
*
|
|
95
|
+
* **Anchored to the EDITOR, above the senior button bar and at its width** —
|
|
96
|
+
* the same place, the same layer and the same shared class as the reversed
|
|
97
|
+
* reading's panel (ADR 0011, PO decision of 02/08/2026). It shipped as a
|
|
98
|
+
* popover hanging off the map's top-right corner, at 320px, flipping sides and
|
|
99
|
+
* ends to stay on screen; every line of that arithmetic is gone, and with it
|
|
100
|
+
* the two faults the PO named — a floating box that loses the z-order contest
|
|
101
|
+
* with the toolbars, and a measure that lines up with nothing.
|
|
102
|
+
*
|
|
103
|
+
* Only the PRESENTATION moved. The entry in the background's contextual menu is
|
|
104
|
+
* still the trigger, the panel is still about one root instance and still says
|
|
105
|
+
* so in `data-element-id`, and nothing about what it renders changed.
|
|
106
|
+
*
|
|
107
|
+
* ## Read-only
|
|
108
|
+
*
|
|
109
|
+
* Ticking a nudge WRITES on the document, so every checkbox is disabled in a
|
|
110
|
+
* read-only store — and `setNudgeChecked` is behind the same guard, because a
|
|
111
|
+
* disabled input is a UI promise and not an enforcement. Opening the panel
|
|
112
|
+
* writes nothing, so a reviewer still reads the checklist.
|
|
113
|
+
*
|
|
114
|
+
* ## Ticking is assuming
|
|
115
|
+
*
|
|
116
|
+
* The panel never claims a nudge is satisfied. It records that somebody said so
|
|
117
|
+
* — the same contract as an exception (PF8), and the reason the checklist is
|
|
118
|
+
* introduced as "To be checked by you" rather than as "Checklist", which left
|
|
119
|
+
* the reader to guess whether the tool had already been through it.
|
|
120
|
+
*/
|
|
121
|
+
let MapQualityWidget = (() => {
|
|
122
|
+
let _classSuper = EditorAnchoredPanel;
|
|
123
|
+
let __openFor_decorators;
|
|
124
|
+
let __openFor_initializers = [];
|
|
125
|
+
let __openFor_extraInitializers = [];
|
|
126
|
+
let __revision_decorators;
|
|
127
|
+
let __revision_initializers = [];
|
|
128
|
+
let __revision_extraInitializers = [];
|
|
129
|
+
return class MapQualityWidget extends _classSuper {
|
|
130
|
+
constructor() {
|
|
131
|
+
super(...arguments);
|
|
132
|
+
this.#_openFor_accessor_storage = __runInitializers(this, __openFor_initializers, null);
|
|
133
|
+
this.#_revision_accessor_storage = (__runInitializers(this, __openFor_extraInitializers), __runInitializers(this, __revision_initializers, 0));
|
|
134
|
+
this._elementSubscriptions = (__runInitializers(this, __revision_extraInitializers), []);
|
|
135
|
+
/** The instance whose panel has already been given the focus, if any. */
|
|
136
|
+
this._focused = null;
|
|
137
|
+
this._close = () => {
|
|
138
|
+
this._validation?.closeMapQuality();
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
static {
|
|
142
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
143
|
+
__openFor_decorators = [state()];
|
|
144
|
+
__revision_decorators = [state()];
|
|
145
|
+
__esDecorate(this, null, __openFor_decorators, { kind: "accessor", name: "_openFor", static: false, private: false, access: { has: obj => "_openFor" in obj, get: obj => obj._openFor, set: (obj, value) => { obj._openFor = value; } }, metadata: _metadata }, __openFor_initializers, __openFor_extraInitializers);
|
|
146
|
+
__esDecorate(this, null, __revision_decorators, { kind: "accessor", name: "_revision", static: false, private: false, access: { has: obj => "_revision" in obj, get: obj => obj._revision, set: (obj, value) => { obj._revision = value; } }, metadata: _metadata }, __revision_initializers, __revision_extraInitializers);
|
|
147
|
+
if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
148
|
+
}
|
|
149
|
+
static { this.styles = [
|
|
150
|
+
editorAnchoredPanelStyles,
|
|
151
|
+
css `
|
|
152
|
+
/* The box, the layer and the anchoring come from the shared pattern; this
|
|
153
|
+
is the panel's own stacking of sections inside it. */
|
|
154
|
+
.map-quality-panel {
|
|
155
|
+
display: flex;
|
|
156
|
+
flex-direction: column;
|
|
157
|
+
gap: 12px;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
.map-quality-head {
|
|
161
|
+
display: flex;
|
|
162
|
+
align-items: center;
|
|
163
|
+
justify-content: space-between;
|
|
164
|
+
gap: 8px;
|
|
165
|
+
font-weight: 600;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
.map-quality-close {
|
|
169
|
+
border: none;
|
|
170
|
+
background: transparent;
|
|
171
|
+
color: var(--affine-text-secondary-color);
|
|
172
|
+
font-family: inherit;
|
|
173
|
+
font-size: 16px;
|
|
174
|
+
line-height: 1;
|
|
175
|
+
padding: 2px 6px;
|
|
176
|
+
border-radius: 4px;
|
|
177
|
+
cursor: pointer;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
.map-quality-close:hover {
|
|
181
|
+
background: var(--affine-hover-color);
|
|
182
|
+
color: var(--affine-text-primary-color);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
.map-quality-group-label {
|
|
186
|
+
color: var(--affine-text-secondary-color);
|
|
187
|
+
font-size: 12px;
|
|
188
|
+
text-transform: uppercase;
|
|
189
|
+
letter-spacing: 0.04em;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/* One column for the control, one for the words. */
|
|
193
|
+
.map-quality-nudge {
|
|
194
|
+
display: grid;
|
|
195
|
+
grid-template-columns: ${unsafeCSS(CHECKBOX_GUTTER)}px 1fr;
|
|
196
|
+
align-items: start;
|
|
197
|
+
padding: 4px 0;
|
|
198
|
+
cursor: pointer;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
.map-quality-nudge input[disabled] {
|
|
202
|
+
cursor: not-allowed;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
.map-quality-nudge input {
|
|
206
|
+
margin: 2px 0 0;
|
|
207
|
+
justify-self: start;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
.map-quality-nudge[data-checked='true'] .map-quality-nudge-label {
|
|
211
|
+
color: var(--affine-text-secondary-color);
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
.map-quality-nudge-label {
|
|
215
|
+
overflow-wrap: anywhere;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
.map-quality-close:focus-visible,
|
|
219
|
+
.map-quality-nudge input:focus-visible {
|
|
220
|
+
outline: 2px solid var(--affine-primary-color);
|
|
221
|
+
outline-offset: 1px;
|
|
222
|
+
}
|
|
223
|
+
`,
|
|
224
|
+
]; }
|
|
225
|
+
#_openFor_accessor_storage;
|
|
226
|
+
/** The instance whose panel is open, mirrored off the manager's signal. */
|
|
227
|
+
get _openFor() { return this.#_openFor_accessor_storage; }
|
|
228
|
+
set _openFor(value) { this.#_openFor_accessor_storage = value; }
|
|
229
|
+
#_revision_accessor_storage;
|
|
230
|
+
/**
|
|
231
|
+
* Bumped to force a re-render when the document changes underneath — a peer
|
|
232
|
+
* ticking a nudge, an undo, the instance moving. The checklist state lives in
|
|
233
|
+
* the Y.Map, not here: this widget renders it, it never caches it.
|
|
234
|
+
*/
|
|
235
|
+
get _revision() { return this.#_revision_accessor_storage; }
|
|
236
|
+
set _revision(value) { this.#_revision_accessor_storage = value; }
|
|
237
|
+
get _validation() {
|
|
238
|
+
return this.std.getOptional(ValidationManager);
|
|
239
|
+
}
|
|
240
|
+
get panelOpen() {
|
|
241
|
+
return this._openFor !== null;
|
|
242
|
+
}
|
|
243
|
+
closePanel() {
|
|
244
|
+
this._close();
|
|
245
|
+
}
|
|
246
|
+
/** The open instance, if it still exists and still has a panel to show. */
|
|
247
|
+
get _element() {
|
|
248
|
+
if (this._openFor === null)
|
|
249
|
+
return null;
|
|
250
|
+
const element = this.gfx.surface?.getElementById(this._openFor) ?? null;
|
|
251
|
+
if (!(element instanceof GfxPrimitiveElementModel))
|
|
252
|
+
return null;
|
|
253
|
+
return this._validation?.hasMapQuality(element) ? element : null;
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Follow the open instance, and only while one is open. On a board with no
|
|
257
|
+
* panel these subscriptions do not exist, so the busiest signals on the
|
|
258
|
+
* surface cost the widget nothing.
|
|
259
|
+
*
|
|
260
|
+
* `elementRemoved` as well as `elementUpdated`, and that is not symmetry for
|
|
261
|
+
* its own sake: DELETING the instance is the one change that must close the
|
|
262
|
+
* panel, and it is the one change `elementUpdated` never reports. Without it
|
|
263
|
+
* the panel floats over a map that is gone, with a checkbox that writes to a
|
|
264
|
+
* dead element.
|
|
265
|
+
*/
|
|
266
|
+
_watchElements() {
|
|
267
|
+
const wanted = this._openFor !== null;
|
|
268
|
+
if (wanted === this._elementSubscriptions.length > 0)
|
|
269
|
+
return;
|
|
270
|
+
for (const subscription of this._elementSubscriptions) {
|
|
271
|
+
subscription.unsubscribe();
|
|
272
|
+
}
|
|
273
|
+
this._elementSubscriptions = [];
|
|
274
|
+
if (!wanted)
|
|
275
|
+
return;
|
|
276
|
+
const surface = this.gfx.surface;
|
|
277
|
+
if (!surface)
|
|
278
|
+
return;
|
|
279
|
+
this._elementSubscriptions.push(surface.elementUpdated.subscribe(() => {
|
|
280
|
+
this._revision += 1;
|
|
281
|
+
}), surface.elementRemoved.subscribe(({ id }) => {
|
|
282
|
+
if (id === this._openFor)
|
|
283
|
+
this._close();
|
|
284
|
+
else
|
|
285
|
+
this._revision += 1;
|
|
286
|
+
}));
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Idempotent wiring, called from both `firstUpdated` and a later
|
|
290
|
+
* `connectedCallback` — `WithDisposable` throws the group away on disconnect
|
|
291
|
+
* while lit runs `firstUpdated` exactly once.
|
|
292
|
+
*/
|
|
293
|
+
_wire() {
|
|
294
|
+
const { _disposables } = this;
|
|
295
|
+
const validation = this._validation;
|
|
296
|
+
if (validation) {
|
|
297
|
+
_disposables.add(effect(() => {
|
|
298
|
+
this._openFor = validation.mapQualityFor$.value;
|
|
299
|
+
this._watchElements();
|
|
300
|
+
}));
|
|
301
|
+
}
|
|
302
|
+
// Click-away, Escape, and the re-measure of the bar the panel is aligned
|
|
303
|
+
// on — the shared pattern, and the same call the reading panel makes.
|
|
304
|
+
//
|
|
305
|
+
// The panel no longer follows the instance on a pan or a zoom, because it
|
|
306
|
+
// no longer hangs off it: it is anchored to the EDITOR, so a gesture that
|
|
307
|
+
// moves the map leaves the surface somebody is halfway through ticking
|
|
308
|
+
// exactly where they left it — which was the point of not closing on pan in
|
|
309
|
+
// the first place, now obtained by construction.
|
|
310
|
+
this.wireAnchoredPanel();
|
|
311
|
+
_disposables.add(() => {
|
|
312
|
+
for (const subscription of this._elementSubscriptions) {
|
|
313
|
+
subscription.unsubscribe();
|
|
314
|
+
}
|
|
315
|
+
this._elementSubscriptions = [];
|
|
316
|
+
});
|
|
317
|
+
}
|
|
318
|
+
connectedCallback() {
|
|
319
|
+
super.connectedCallback();
|
|
320
|
+
if (this.hasUpdated)
|
|
321
|
+
this._wire();
|
|
322
|
+
}
|
|
323
|
+
firstUpdated() {
|
|
324
|
+
this._wire();
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* Move the focus into the panel when it opens, once.
|
|
328
|
+
*
|
|
329
|
+
* Without it the panel is unreachable from the keyboard and silent to a screen
|
|
330
|
+
* reader — which matters most on the path the toolbar does not cover: opened
|
|
331
|
+
* from the command palette, the focus is still in the host's own UI, so
|
|
332
|
+
* nothing is announced and the Escape handler (on the editor host, which is
|
|
333
|
+
* the right scope) never sees the key.
|
|
334
|
+
*
|
|
335
|
+
* The panel itself takes the focus, not the first checkbox: it carries the
|
|
336
|
+
* dialog's label, so a screen reader reads "Map quality" before it reads the
|
|
337
|
+
* first expectation. `preventScroll` because the host is a zero-sized box at
|
|
338
|
+
* the viewport origin and the browser would otherwise scroll the editor to
|
|
339
|
+
* "reveal" it.
|
|
340
|
+
*
|
|
341
|
+
* The dialog semantics themselves — `role`, `tabindex`, and the deliberate
|
|
342
|
+
* absence of `aria-modal` — come from {@link EditorAnchoredPanel}, which is
|
|
343
|
+
* also where the reasoning for that absence now lives.
|
|
344
|
+
*/
|
|
345
|
+
updated() {
|
|
346
|
+
super.updated();
|
|
347
|
+
if (this._openFor === null || this._openFor === this._focused) {
|
|
348
|
+
if (this._openFor === null)
|
|
349
|
+
this._focused = null;
|
|
350
|
+
return;
|
|
351
|
+
}
|
|
352
|
+
const panel = this.shadowRoot?.querySelector('[data-testid="map-quality-panel"]');
|
|
353
|
+
if (!panel)
|
|
354
|
+
return;
|
|
355
|
+
this._focused = this._openFor;
|
|
356
|
+
panel.focus({ preventScroll: true });
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* Tick or untick, and report it.
|
|
360
|
+
*
|
|
361
|
+
* `captureSync` opens an undo checkpoint first, like every other write the
|
|
362
|
+
* validation surfaces make, so one click is one undo.
|
|
363
|
+
*
|
|
364
|
+
* The read-only test here is the CHEAP half — it keeps `captureSync` and the
|
|
365
|
+
* telemetry from firing for a write that will not happen. The one that
|
|
366
|
+
* actually protects the document is inside `setNudgeChecked`, at the seam,
|
|
367
|
+
* where every caller meets it (see the note there).
|
|
368
|
+
*/
|
|
369
|
+
_toggleNudge(element, nudge, checked) {
|
|
370
|
+
if (this.std.store.readonly)
|
|
371
|
+
return;
|
|
372
|
+
this.std.store.captureSync();
|
|
373
|
+
if (!setNudgeChecked(element, nudge.id, checked))
|
|
374
|
+
return;
|
|
375
|
+
this._revision += 1;
|
|
376
|
+
this.std.getOptional(TelemetryProvider)?.track('MapQualityNudgeToggled', {
|
|
377
|
+
page: 'whiteboard editor',
|
|
378
|
+
segment: 'whiteboard',
|
|
379
|
+
module: 'map quality panel',
|
|
380
|
+
control: 'nudge',
|
|
381
|
+
framework: nudge.framework,
|
|
382
|
+
nudgeId: nudge.id,
|
|
383
|
+
checked,
|
|
384
|
+
});
|
|
385
|
+
}
|
|
386
|
+
_renderNudges(element) {
|
|
387
|
+
const nudges = this._validation?.nudgesFor(element) ?? [];
|
|
388
|
+
if (nudges.length === 0)
|
|
389
|
+
return nothing;
|
|
390
|
+
const checked = new Set(checkedNudges(element));
|
|
391
|
+
const readonly = this.std.store.readonly;
|
|
392
|
+
return html `<div>
|
|
393
|
+
<div class="map-quality-group-label" id="map-quality-checklist-label">
|
|
394
|
+
${
|
|
395
|
+
// Who is doing the checking, said in the label itself (PO, 02/08).
|
|
396
|
+
// "Checklist" left the reader to guess whether the tool had already
|
|
397
|
+
// been through it — and the whole contract of a nudge is that it has
|
|
398
|
+
// not, and cannot. Ticking is assuming; the label now says so before
|
|
399
|
+
// the first box rather than in a comment in this file.
|
|
400
|
+
translateKey(this.std, 'com.labre.validation.map-quality.checklist.yours', 'To be checked by you:')}
|
|
401
|
+
</div>
|
|
402
|
+
<div role="group" aria-labelledby="map-quality-checklist-label">
|
|
403
|
+
${nudges.map(nudge => {
|
|
404
|
+
const on = checked.has(nudge.id);
|
|
405
|
+
const label = translateKey(this.std, nudge.labelKey, nudge.fallback);
|
|
406
|
+
return html `<label
|
|
407
|
+
class="map-quality-nudge"
|
|
408
|
+
data-testid="map-quality-nudge"
|
|
409
|
+
data-nudge-id=${nudge.id}
|
|
410
|
+
data-checked=${on ? 'true' : 'false'}
|
|
411
|
+
>
|
|
412
|
+
<input
|
|
413
|
+
type="checkbox"
|
|
414
|
+
.checked=${on}
|
|
415
|
+
?disabled=${readonly}
|
|
416
|
+
aria-label=${label}
|
|
417
|
+
@pointerdown=${this.swallow}
|
|
418
|
+
@pointerup=${this.swallow}
|
|
419
|
+
@change=${(event) => this._toggleNudge(element, nudge, event.target.checked)}
|
|
420
|
+
/>
|
|
421
|
+
<span class="map-quality-nudge-label">${label}</span>
|
|
422
|
+
</label>`;
|
|
423
|
+
})}
|
|
424
|
+
</div>
|
|
425
|
+
</div>`;
|
|
426
|
+
}
|
|
427
|
+
render() {
|
|
428
|
+
const element = this._element;
|
|
429
|
+
// An instance that lost its role, or whose framework was flagged off while
|
|
430
|
+
// the panel was open, takes the panel with it — and the manager is told, so
|
|
431
|
+
// a stale id can never match a later element. Deletion is caught earlier, by
|
|
432
|
+
// the `elementRemoved` subscription; this is the backstop for the changes
|
|
433
|
+
// that leave the element in place.
|
|
434
|
+
//
|
|
435
|
+
// Deferred out of the render pass on purpose: `_close` writes a signal the
|
|
436
|
+
// widget itself reads, and lit forbids scheduling an update from inside one.
|
|
437
|
+
if (!element) {
|
|
438
|
+
if (this._openFor !== null)
|
|
439
|
+
queueMicrotask(this._close);
|
|
440
|
+
return nothing;
|
|
441
|
+
}
|
|
442
|
+
// Read so lit re-renders on a document change; the value itself means
|
|
443
|
+
// nothing.
|
|
444
|
+
void this._revision;
|
|
445
|
+
const title = translateKey(this.std, 'com.labre.validation.map-quality.section', 'Map quality');
|
|
446
|
+
return this.renderAnchoredPanel({
|
|
447
|
+
testid: 'map-quality-panel',
|
|
448
|
+
variant: 'map-quality-panel',
|
|
449
|
+
elementId: element.id,
|
|
450
|
+
label: title,
|
|
451
|
+
}, html `<div class="map-quality-head">
|
|
452
|
+
<span>${title}</span>
|
|
453
|
+
<button
|
|
454
|
+
class="map-quality-close"
|
|
455
|
+
type="button"
|
|
456
|
+
data-testid="map-quality-close"
|
|
457
|
+
aria-label=${translateKey(this.std, 'com.labre.validation.map-quality.close', 'Close')}
|
|
458
|
+
@pointerdown=${this.swallow}
|
|
459
|
+
@pointerup=${this.swallow}
|
|
460
|
+
@click=${this._close}
|
|
461
|
+
>
|
|
462
|
+
×
|
|
463
|
+
</button>
|
|
464
|
+
</div>
|
|
465
|
+
${this._renderNudges(element)}`);
|
|
466
|
+
}
|
|
467
|
+
};
|
|
468
|
+
})();
|
|
469
|
+
export { MapQualityWidget };
|
|
470
|
+
export const mapQualityWidget = WidgetViewExtension('affine:page', MAP_QUALITY_WIDGET, literal `${unsafeStatic(MAP_QUALITY_WIDGET)}`);
|
|
471
|
+
/**
|
|
472
|
+
* The single selected root instance with a Map quality panel, or `null` — the
|
|
473
|
+
* same answer the toolbar entry computes, asked without a `ToolbarContext`.
|
|
474
|
+
*/
|
|
475
|
+
function mapQualityTarget(std) {
|
|
476
|
+
const validation = std.getOptional(ValidationManager);
|
|
477
|
+
if (!validation)
|
|
478
|
+
return null;
|
|
479
|
+
const selected = std.get(GfxControllerIdentifier).selection.selectedElements;
|
|
480
|
+
if (selected.length !== 1)
|
|
481
|
+
return null;
|
|
482
|
+
const [element] = selected;
|
|
483
|
+
if (!(element instanceof GfxPrimitiveElementModel))
|
|
484
|
+
return null;
|
|
485
|
+
return validation.hasMapQuality(element) ? element : null;
|
|
486
|
+
}
|
|
487
|
+
/**
|
|
488
|
+
* "Open Map quality", in the command registry (PF3 / ADR 0008).
|
|
489
|
+
*
|
|
490
|
+
* The toolbar entry is one SURFACE of this command, not a second implementation:
|
|
491
|
+
* the palette, a host panel and the agent reach the same panel through the same
|
|
492
|
+
* registry entry, and Settings › Shortcuts can bind it like anything else.
|
|
493
|
+
*
|
|
494
|
+
* `owner: 'core'` and not a framework's, because the panel belongs to none: it
|
|
495
|
+
* is generic surface tooling that appears for whichever framework declared a
|
|
496
|
+
* nudge. Its gating rides on `when`, which asks the engine
|
|
497
|
+
* exactly what the toolbar asks — so a board with every framework flagged off
|
|
498
|
+
* offers the command nowhere, with no flag test written here.
|
|
499
|
+
*
|
|
500
|
+
* Opening writes NOTHING, so there is no read-only guard: reading the quality of
|
|
501
|
+
* a map you cannot edit is precisely what a reviewer does. The write is the
|
|
502
|
+
* checkbox, and that one is guarded twice (see {@link MapQualityWidget}).
|
|
503
|
+
*/
|
|
504
|
+
const openMapQuality = {
|
|
505
|
+
id: 'validation.mapQuality',
|
|
506
|
+
owner: 'core',
|
|
507
|
+
kind: 'action',
|
|
508
|
+
labelKey: 'com.labre.command.validation.map-quality',
|
|
509
|
+
labelFallback: 'Map quality',
|
|
510
|
+
descriptionKey: 'com.labre.command.validation.map-quality.description',
|
|
511
|
+
surfaces: ['palette', 'agent'],
|
|
512
|
+
scope: 'edgeless',
|
|
513
|
+
// Keyless by intent — still bindable from Settings › Shortcuts, which is what
|
|
514
|
+
// `toShortcutDescriptor` being total buys.
|
|
515
|
+
defaultKeys: { mac: [], other: [] },
|
|
516
|
+
// The serializable precondition a host catalogue can show. `when` narrows it
|
|
517
|
+
// to "…and that selection is a root instance that HAS a panel", which no
|
|
518
|
+
// member of the closed union can express.
|
|
519
|
+
availability: 'selection:framework',
|
|
520
|
+
when: std => mapQualityTarget(std) !== null,
|
|
521
|
+
run: std => {
|
|
522
|
+
const element = mapQualityTarget(std);
|
|
523
|
+
if (!element)
|
|
524
|
+
return;
|
|
525
|
+
std.getOptional(ValidationManager)?.openMapQuality(element);
|
|
526
|
+
},
|
|
527
|
+
};
|
|
528
|
+
export const mapQualityCommands = [openMapQuality];
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import type { GfxPrimitiveElementModel } from '../../std/gfx/index.js';
|
|
2
|
+
import type { ExtensionType } from '../../store/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Map quality — the NUDGES half (PF7.10).
|
|
5
|
+
*
|
|
6
|
+
* A nudge is an expectation a framework holds and the tool cannot judge: "the
|
|
7
|
+
* map has a title that frames the study", "the map is legended". The content can
|
|
8
|
+
* exist without being good, so there is nothing to compute — and a rule that
|
|
9
|
+
* pretended to compute it would be the worst kind of validation, one that says
|
|
10
|
+
* "valid" about something it never looked at.
|
|
11
|
+
*
|
|
12
|
+
* So a nudge is declarative DATA, exactly like a rule, a role or a profile, and
|
|
13
|
+
* it is never evaluated by anything. It is presented as a CHECKLIST the user
|
|
14
|
+
* ticks, and ticking is the same gesture as granting an exception (PF8):
|
|
15
|
+
* **ticking is assuming**. The tool records that the user took responsibility;
|
|
16
|
+
* it never claims to have checked.
|
|
17
|
+
*
|
|
18
|
+
* ## Where the state lives
|
|
19
|
+
*
|
|
20
|
+
* On the framework's BACKGROUND element — `GfxPrimitiveElementModel.qualityChecklist`
|
|
21
|
+
* — for the same reason the validation profile does: two maps on one canvas are
|
|
22
|
+
* two independent pieces of work. It is one flat array of ids in a declared
|
|
23
|
+
* `@field()`, so it syncs, it undoes, it survives a copy and an export, and it
|
|
24
|
+
* needs no block schema change and no migration.
|
|
25
|
+
*
|
|
26
|
+
* It also survives the framework's flag going off and coming back, which is the
|
|
27
|
+
* whole point of storing it as document data rather than as tooling state: the
|
|
28
|
+
* flag takes the CHECKLIST away, never the decisions somebody recorded on it.
|
|
29
|
+
*
|
|
30
|
+
* ## Gating
|
|
31
|
+
*
|
|
32
|
+
* A framework registers its nudges from its FLAG-GATED view extension, beside
|
|
33
|
+
* its rules and its profiles: a checklist is tooling. Flag off, nothing is
|
|
34
|
+
* registered, the panel offers nothing, and the ids already written go unread
|
|
35
|
+
* until the flag comes back.
|
|
36
|
+
*/
|
|
37
|
+
/**
|
|
38
|
+
* One expectation, as data. Deliberately three fields: an id to persist, a key
|
|
39
|
+
* to translate, and the framework's own wording for a host that ships no
|
|
40
|
+
* catalogue for it — the same `labelKey` + `fallback` pair a profile and a
|
|
41
|
+
* background label already carry. The library never invents the wording of
|
|
42
|
+
* somebody else's expectation.
|
|
43
|
+
*/
|
|
44
|
+
export interface QualityNudge {
|
|
45
|
+
/** Stable id, namespaced by framework: `wardley.q1-title`. This is what is persisted. */
|
|
46
|
+
id: string;
|
|
47
|
+
/** Owning framework, `wardley`. A nudge never applies across frameworks. */
|
|
48
|
+
framework: string;
|
|
49
|
+
/** i18n key of the expectation, resolved by the host. */
|
|
50
|
+
labelKey: string;
|
|
51
|
+
/** The framework's own wording, when the host ships no catalogue for the key. */
|
|
52
|
+
fallback?: string;
|
|
53
|
+
/** Ascending rank in the checklist. Ties keep declaration order. */
|
|
54
|
+
order?: number;
|
|
55
|
+
}
|
|
56
|
+
/** A framework registers its nudges here; nothing else registers nudges. */
|
|
57
|
+
export declare const QualityNudgeIdentifier: import("../../global/di/types.js").ServiceIdentifier<QualityNudge> & (<U extends QualityNudge = QualityNudge>(variant: import("../../global/di/types.js").ServiceVariant) => import("../../global/di/types.js").ServiceIdentifier<U>);
|
|
58
|
+
/**
|
|
59
|
+
* Register a framework's nudges. Call it from the FLAG-GATED view extension,
|
|
60
|
+
* beside {@link ValidationRuleExtension}.
|
|
61
|
+
*
|
|
62
|
+
* ```ts
|
|
63
|
+
* context.register(QualityNudgeExtension(WARDLEY_NUDGES));
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
66
|
+
export declare function QualityNudgeExtension(nudges: readonly QualityNudge[]): ExtensionType;
|
|
67
|
+
/**
|
|
68
|
+
* The nudge ids ticked on `element` — always an array, never a copy to keep.
|
|
69
|
+
*
|
|
70
|
+
* The value comes out of a Y.Map, so it is whatever a peer wrote: a client that
|
|
71
|
+
* got it wrong must not break the panel on this one. Non-string members are
|
|
72
|
+
* dropped rather than shown, for the same reason.
|
|
73
|
+
*/
|
|
74
|
+
export declare function checkedNudges(element: GfxPrimitiveElementModel): readonly string[];
|
|
75
|
+
/** Whether `nudgeId` is ticked on `element`. */
|
|
76
|
+
export declare function isNudgeChecked(element: GfxPrimitiveElementModel, nudgeId: string): boolean;
|
|
77
|
+
/**
|
|
78
|
+
* Tick or untick `nudgeId` on `element`.
|
|
79
|
+
*
|
|
80
|
+
* The write goes through the declared `@field()` accessor, so it lands in the
|
|
81
|
+
* Y.Map, syncs to every peer, joins the undo stack and survives a copy — see the
|
|
82
|
+
* note on `GfxPrimitiveElementModel.qualityChecklist`.
|
|
83
|
+
*
|
|
84
|
+
* Unticking the LAST one removes the key rather than leaving an empty array
|
|
85
|
+
* behind: assigning `[]` through the accessor would keep a key in the Y.Map,
|
|
86
|
+
* invisible in the panel but synced to every peer and shipped in every snapshot.
|
|
87
|
+
* `clearField` removes it, so an element whose checklist was emptied really is
|
|
88
|
+
* indistinguishable from one that never had a nudge ticked — in the document,
|
|
89
|
+
* and not just in this tab. Exactly what `revokeException` does with the last
|
|
90
|
+
* exception (PF8).
|
|
91
|
+
*
|
|
92
|
+
* ## Read-only is enforced HERE, not only in the panel
|
|
93
|
+
*
|
|
94
|
+
* The house convention for these writes: the seam guards itself
|
|
95
|
+
* (`setProfile`, `setException`, `revokeExceptionsOn` all do). A `disabled`
|
|
96
|
+
* checkbox is a UI promise and covers exactly one caller; an agent, a host or a
|
|
97
|
+
* future surface reaching this function directly would have no net at all. And
|
|
98
|
+
* the failure is not a no-op: `clearField` goes through `Store.transact`, which
|
|
99
|
+
* — unlike `addBlock` / `updateBlock` / `deleteBlock` — carries no read-only
|
|
100
|
+
* guard of its own, so unticking would genuinely delete the key from a document
|
|
101
|
+
* the user cannot edit.
|
|
102
|
+
*
|
|
103
|
+
* The store is reached through the element's own surface. An element not yet
|
|
104
|
+
* attached to one carries no document to protect and is written normally, which
|
|
105
|
+
* is what a unit fixture is.
|
|
106
|
+
*
|
|
107
|
+
* @returns whether the document actually changed.
|
|
108
|
+
*/
|
|
109
|
+
export declare function setNudgeChecked(element: GfxPrimitiveElementModel, nudgeId: string, checked: boolean): boolean;
|