@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
|
@@ -1,9 +1,34 @@
|
|
|
1
|
-
import { ConnectorMode } from '../affine-model/index.js';
|
|
1
|
+
import { type ConnectorElementProps, ConnectorMode } from '../affine-model/index.js';
|
|
2
2
|
import type { IVec } from '../global/gfx/index.js';
|
|
3
3
|
import type { PointerEventState } from '../std/index.js';
|
|
4
4
|
import { BaseTool, type GfxModel } from '../std/gfx/index.js';
|
|
5
5
|
export type ConnectorToolOptions = {
|
|
6
6
|
mode: ConnectorMode;
|
|
7
|
+
/**
|
|
8
|
+
* Semantic role (`<framework>:<role>`) stamped on the connectors drawn while
|
|
9
|
+
* this activation lasts — a framework toolbox activates the tool for a typed
|
|
10
|
+
* edge (e.g. `wardley:dependency`). Left out for the plain connector tool:
|
|
11
|
+
* the edge then stays neutral and no `role` key is written.
|
|
12
|
+
*/
|
|
13
|
+
role?: string;
|
|
14
|
+
/**
|
|
15
|
+
* The FIVE stroke-and-marker props a framework toolbox arms its flow with
|
|
16
|
+
* (e.g. solid + filled triangle for a BPMN sequence flow) — the ones the
|
|
17
|
+
* stencils actually distinguish each other by. Applied at creation only,
|
|
18
|
+
* where explicit props win over the user's last plain-connector props, and
|
|
19
|
+
* NEVER recorded into `EditPropsStore`: arming a typed flow must not restyle
|
|
20
|
+
* the plain connector tool (BPMN 2.0 p.40 — other connectors must not adopt
|
|
21
|
+
* a flow's line style). Left out for the plain tool, which keeps drawing
|
|
22
|
+
* with the user's own last props.
|
|
23
|
+
*
|
|
24
|
+
* Deliberately NOT the whole look: a connector's other styled props —
|
|
25
|
+
* `rough`, `labelStyle` and the rest — are outside this bag and still come
|
|
26
|
+
* from the user's last plain-connector props, exactly as they did before
|
|
27
|
+
* this option existed. No framework declares them today, so nothing is lost;
|
|
28
|
+
* a framework that needs one must widen this `Pick` rather than reach for
|
|
29
|
+
* the store.
|
|
30
|
+
*/
|
|
31
|
+
style?: Partial<Pick<ConnectorElementProps, 'stroke' | 'strokeStyle' | 'strokeWidth' | 'frontEndpointStyle' | 'rearEndpointStyle'>>;
|
|
7
32
|
};
|
|
8
33
|
export declare class ConnectorTool extends BaseTool<ConnectorToolOptions> {
|
|
9
34
|
static toolName: string;
|
|
@@ -36,8 +36,13 @@ export class ConnectorTool extends BaseTool {
|
|
|
36
36
|
this.doc.captureSync();
|
|
37
37
|
const id = this.gfx.surface.addElement({
|
|
38
38
|
type: CanvasElementType.CONNECTOR,
|
|
39
|
+
// The activation's own style, if any: explicit props win over the
|
|
40
|
+
// user's last plain-connector props in the edit-props middleware, so a
|
|
41
|
+
// framework look never passes through the shared store.
|
|
42
|
+
...this.activatedOption.style,
|
|
39
43
|
mode: this.activatedOption.mode,
|
|
40
|
-
|
|
44
|
+
// `undefined` writes nothing: a neutral edge keeps no `role` key.
|
|
45
|
+
role: this.activatedOption.role,
|
|
41
46
|
source: this._source,
|
|
42
47
|
target: { position: this._startPoint },
|
|
43
48
|
});
|
|
@@ -159,7 +164,9 @@ export class ConnectorTool extends BaseTool {
|
|
|
159
164
|
}
|
|
160
165
|
// Geometric centroid as a center anchor (gated on the global toggle),
|
|
161
166
|
// mirroring the center anchor offered for other shape types.
|
|
162
|
-
const centerAnchorEnabled = this.std
|
|
167
|
+
const centerAnchorEnabled = this.std
|
|
168
|
+
.getOptional(EditPropsStore)
|
|
169
|
+
?.getStorage('connectorCenterAnchor') ?? true;
|
|
163
170
|
if (centerAnchorEnabled) {
|
|
164
171
|
locations.push(polygonCentroid(verts));
|
|
165
172
|
}
|
|
@@ -170,7 +177,9 @@ export class ConnectorTool extends BaseTool {
|
|
|
170
177
|
this._sourceLocations = [[0.5, 0.5]];
|
|
171
178
|
}
|
|
172
179
|
else {
|
|
173
|
-
const centerAnchorEnabled = this.std
|
|
180
|
+
const centerAnchorEnabled = this.std
|
|
181
|
+
.getOptional(EditPropsStore)
|
|
182
|
+
?.getStorage('connectorCenterAnchor') ?? true;
|
|
174
183
|
this._sourceLocations =
|
|
175
184
|
element instanceof ShapeElementModel &&
|
|
176
185
|
element.shapeType === ShapeType.Triangle
|
|
@@ -39,10 +39,7 @@ function reanchorConnectorsForPolygon(surface, polygonId, elementGetter) {
|
|
|
39
39
|
continue;
|
|
40
40
|
// Convert the stored normalized [0-1] position to absolute model coords.
|
|
41
41
|
const [nx, ny] = connection.position;
|
|
42
|
-
const absPos = [
|
|
43
|
-
bound.x + nx * bound.w,
|
|
44
|
-
bound.y + ny * bound.h,
|
|
45
|
-
];
|
|
42
|
+
const absPos = [bound.x + nx * bound.w, bound.y + ny * bound.h];
|
|
46
43
|
// Find the nearest anchor on the updated polygon boundary.
|
|
47
44
|
let nearestCoord = connection.position;
|
|
48
45
|
let minDist = Infinity;
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import type { ConnectorElementModel } from '../../affine-model/index.js';
|
|
2
|
+
import type { IVec } from '../../global/gfx/index.js';
|
|
3
|
+
import { InteractivityExtension } from '../../std/gfx/index.js';
|
|
4
|
+
import { type TypedEdge } from './typed-edge.js';
|
|
5
|
+
/**
|
|
6
|
+
* **M2 of `docs/adr/0010` — "show it".**
|
|
7
|
+
*
|
|
8
|
+
* A typed edge reveals its orientation on hover and on selection: ONE mark, the
|
|
9
|
+
* role's verb laid ALONG the link — `depends on` — in a box whose far end is a
|
|
10
|
+
* point aimed at the target. At rest the board keeps the canonical arrowless
|
|
11
|
+
* look, because on a Wardley map a permanent head already means something else
|
|
12
|
+
* (evolution movement), and two meanings on one glyph make both unreadable.
|
|
13
|
+
*
|
|
14
|
+
* ## The chevron is gone (PO acceptance of 02/08/2026, point 5)
|
|
15
|
+
*
|
|
16
|
+
* The first cut of M2 drew two marks: a canvas chevron at the target end, and
|
|
17
|
+
* a horizontal DOM tooltip holding the bare verb. Two things were wrong with
|
|
18
|
+
* it, and they had one cause between them.
|
|
19
|
+
*
|
|
20
|
+
* - The label was placed on `path[floor(length / 2)]`, the middle VERTEX. A
|
|
21
|
+
* straight link has exactly two points, so the "middle" vertex IS the target
|
|
22
|
+
* end — the tooltip landed on the tip of the link and covered the chevron it
|
|
23
|
+
* was meant to complement.
|
|
24
|
+
* - Even placed correctly, a horizontal box across a diagonal link reads as a
|
|
25
|
+
* sticker dropped on the map rather than as a statement about that link.
|
|
26
|
+
*
|
|
27
|
+
* The fix is one mark instead of two: the verb, rotated onto the line,
|
|
28
|
+
* ending in the point that used to be a separate chevron. So this file no
|
|
29
|
+
* longer owns a canvas overlay at all — {@link labelAnchorOf} says where the
|
|
30
|
+
* label goes and which way it turns, and the DOM widget draws it. Nothing can
|
|
31
|
+
* overlap something that no longer exists.
|
|
32
|
+
*
|
|
33
|
+
* ## Why a manager, and not the element renderer
|
|
34
|
+
*
|
|
35
|
+
* An `ElementRenderer` is `(model, ctx, matrix, renderer, rc)`: it knows the
|
|
36
|
+
* element and knows nothing about hover or selection, which are the two things
|
|
37
|
+
* this affordance is made of. So the state lives in an `InteractivityExtension`
|
|
38
|
+
* that owns two signals, and the widget reads them.
|
|
39
|
+
*
|
|
40
|
+
* Nothing here touches an element model: no CRDT write, no undo entry, not even
|
|
41
|
+
* a `@local()` field. The reveal is session state and leaves with the pointer.
|
|
42
|
+
*/
|
|
43
|
+
/**
|
|
44
|
+
* The one colour the reveal is drawn in — the house primary, i.e. the colour of
|
|
45
|
+
* an affordance rather than of ink. Deliberately NOT the framework's palette:
|
|
46
|
+
* the label is the tool talking about the drawing, not part of the drawing.
|
|
47
|
+
*/
|
|
48
|
+
export declare const EDGE_DIRECTION_COLOR = "#1e96eb";
|
|
49
|
+
/**
|
|
50
|
+
* Where the label sits on a typed edge, and how it is turned.
|
|
51
|
+
*
|
|
52
|
+
* All of it in MODEL space: the widget projects `at` through the viewport and
|
|
53
|
+
* scales the box by the zoom, so the label is glued to its link the way a
|
|
54
|
+
* street name is glued to its street.
|
|
55
|
+
*/
|
|
56
|
+
export interface EdgeLabelAnchor {
|
|
57
|
+
/** The model point the label CENTRES on — the middle of the drawn path. */
|
|
58
|
+
at: IVec;
|
|
59
|
+
/**
|
|
60
|
+
* Rotation in radians, always within `[-π/2, π/2]`: the angle of the median
|
|
61
|
+
* segment, turned by 180° when that angle would stand the text on its head.
|
|
62
|
+
*/
|
|
63
|
+
angle: number;
|
|
64
|
+
/**
|
|
65
|
+
* Whether that 180° turn happened. It is the whole reason the caller needs
|
|
66
|
+
* this flag: the point of the box must face the TARGET, so on a link running
|
|
67
|
+
* right-to-left — where the turn put the box's right end at the SOURCE — the
|
|
68
|
+
* point moves to the box's left end. The words themselves never reverse; a
|
|
69
|
+
* mirrored `depends on` would be a smudge, not a rotation.
|
|
70
|
+
*/
|
|
71
|
+
flipped: boolean;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Where a typed edge's label goes and how it is turned — the whole geometry
|
|
75
|
+
* of M2 since the chevron was folded into the label.
|
|
76
|
+
*
|
|
77
|
+
* `null` for an edge with no direction to show: no routed path yet, or a path
|
|
78
|
+
* whose points all coincide. Silence, not a guess.
|
|
79
|
+
*/
|
|
80
|
+
export declare function labelAnchorOf(model: ConnectorElementModel): EdgeLabelAnchor | null;
|
|
81
|
+
/**
|
|
82
|
+
* Owns "which typed edges are revealing their direction", and the hint the
|
|
83
|
+
* armed tool shows (M1). Both are session state, both are signals, and both are
|
|
84
|
+
* read by the overlay and by the widget — so the two halves of the affordance
|
|
85
|
+
* can never disagree about what is on screen.
|
|
86
|
+
*
|
|
87
|
+
* No-op until some framework registers a role vocabulary: on a board of
|
|
88
|
+
* generalist connectors this subscribes to nothing at all.
|
|
89
|
+
*/
|
|
90
|
+
export declare class EdgeDirectionManager extends InteractivityExtension {
|
|
91
|
+
static key: string;
|
|
92
|
+
/** Ids of the typed edges revealing their direction: hover ∪ selection. */
|
|
93
|
+
readonly revealed$: import("@preact/signals-core").Signal<readonly string[]>;
|
|
94
|
+
/**
|
|
95
|
+
* The gesture hint of the armed tool, when that tool draws a typed edge —
|
|
96
|
+
* M1's half of the affordance. `null` for every other tool, which is every
|
|
97
|
+
* tool whose gesture decides no persisted orientation.
|
|
98
|
+
*/
|
|
99
|
+
readonly armedHint$: import("@preact/signals-core").Signal<{
|
|
100
|
+
key: string;
|
|
101
|
+
fallback?: string;
|
|
102
|
+
} | null>;
|
|
103
|
+
private _hovered;
|
|
104
|
+
private _subscriptions;
|
|
105
|
+
private _vocabularies;
|
|
106
|
+
private get _roles();
|
|
107
|
+
/**
|
|
108
|
+
* The revealed edges, resolved NOW rather than remembered.
|
|
109
|
+
*
|
|
110
|
+
* The same reasoning as the validation overlay's: the widget re-renders far
|
|
111
|
+
* more often than this state changes, and an edge can lose a binding or a
|
|
112
|
+
* role between two frames. A frozen snapshot would keep labelling a relation
|
|
113
|
+
* that no longer exists.
|
|
114
|
+
*/
|
|
115
|
+
revealedEdges(): TypedEdge[];
|
|
116
|
+
mounted(): void;
|
|
117
|
+
unmounted(): void;
|
|
118
|
+
private _hover;
|
|
119
|
+
private _setHovered;
|
|
120
|
+
private _syncArmed;
|
|
121
|
+
/** Recompute hover ∪ selection, and publish only when it actually changed. */
|
|
122
|
+
private _sync;
|
|
123
|
+
}
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
import { InteractivityExtension } from '../../std/gfx/index.js';
|
|
2
|
+
import { effect, signal } from '@preact/signals-core';
|
|
3
|
+
import { asTypedEdge, edgeIsBound, roleVocabularies, } from './typed-edge.js';
|
|
4
|
+
/**
|
|
5
|
+
* **M2 of `docs/adr/0010` — "show it".**
|
|
6
|
+
*
|
|
7
|
+
* A typed edge reveals its orientation on hover and on selection: ONE mark, the
|
|
8
|
+
* role's verb laid ALONG the link — `depends on` — in a box whose far end is a
|
|
9
|
+
* point aimed at the target. At rest the board keeps the canonical arrowless
|
|
10
|
+
* look, because on a Wardley map a permanent head already means something else
|
|
11
|
+
* (evolution movement), and two meanings on one glyph make both unreadable.
|
|
12
|
+
*
|
|
13
|
+
* ## The chevron is gone (PO acceptance of 02/08/2026, point 5)
|
|
14
|
+
*
|
|
15
|
+
* The first cut of M2 drew two marks: a canvas chevron at the target end, and
|
|
16
|
+
* a horizontal DOM tooltip holding the bare verb. Two things were wrong with
|
|
17
|
+
* it, and they had one cause between them.
|
|
18
|
+
*
|
|
19
|
+
* - The label was placed on `path[floor(length / 2)]`, the middle VERTEX. A
|
|
20
|
+
* straight link has exactly two points, so the "middle" vertex IS the target
|
|
21
|
+
* end — the tooltip landed on the tip of the link and covered the chevron it
|
|
22
|
+
* was meant to complement.
|
|
23
|
+
* - Even placed correctly, a horizontal box across a diagonal link reads as a
|
|
24
|
+
* sticker dropped on the map rather than as a statement about that link.
|
|
25
|
+
*
|
|
26
|
+
* The fix is one mark instead of two: the verb, rotated onto the line,
|
|
27
|
+
* ending in the point that used to be a separate chevron. So this file no
|
|
28
|
+
* longer owns a canvas overlay at all — {@link labelAnchorOf} says where the
|
|
29
|
+
* label goes and which way it turns, and the DOM widget draws it. Nothing can
|
|
30
|
+
* overlap something that no longer exists.
|
|
31
|
+
*
|
|
32
|
+
* ## Why a manager, and not the element renderer
|
|
33
|
+
*
|
|
34
|
+
* An `ElementRenderer` is `(model, ctx, matrix, renderer, rc)`: it knows the
|
|
35
|
+
* element and knows nothing about hover or selection, which are the two things
|
|
36
|
+
* this affordance is made of. So the state lives in an `InteractivityExtension`
|
|
37
|
+
* that owns two signals, and the widget reads them.
|
|
38
|
+
*
|
|
39
|
+
* Nothing here touches an element model: no CRDT write, no undo entry, not even
|
|
40
|
+
* a `@local()` field. The reveal is session state and leaves with the pointer.
|
|
41
|
+
*/
|
|
42
|
+
/**
|
|
43
|
+
* The one colour the reveal is drawn in — the house primary, i.e. the colour of
|
|
44
|
+
* an affordance rather than of ink. Deliberately NOT the framework's palette:
|
|
45
|
+
* the label is the tool talking about the drawing, not part of the drawing.
|
|
46
|
+
*/
|
|
47
|
+
export const EDGE_DIRECTION_COLOR = '#1e96eb';
|
|
48
|
+
const pathOf = (model) => {
|
|
49
|
+
const path = model.absolutePath;
|
|
50
|
+
return Array.isArray(path) && path.length >= 2 ? path : null;
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* The middle of the drawn path by ARC LENGTH, and the segment it falls in.
|
|
54
|
+
*
|
|
55
|
+
* Arc length rather than "the middle vertex": on a two-point path the middle
|
|
56
|
+
* vertex is the target endpoint, which is exactly where the label must not go,
|
|
57
|
+
* and on an elbowed path the vertex nearest the middle can sit far from it.
|
|
58
|
+
*
|
|
59
|
+
* When the middle lands exactly on a corner — two equal arms — the arm the path
|
|
60
|
+
* ARRIVES BY wins (`>=`). Both angles are true there and neither is better; what
|
|
61
|
+
* matters is that the same path always answers the same way, so the label
|
|
62
|
+
* cannot flicker between two rotations across repaints.
|
|
63
|
+
*/
|
|
64
|
+
function median(path) {
|
|
65
|
+
let total = 0;
|
|
66
|
+
for (let i = 1; i < path.length; i++) {
|
|
67
|
+
total += Math.hypot(path[i][0] - path[i - 1][0], path[i][1] - path[i - 1][1]);
|
|
68
|
+
}
|
|
69
|
+
// A path of zero length is a link drawn on a single point: no middle, no
|
|
70
|
+
// angle, nothing to say.
|
|
71
|
+
if (total === 0)
|
|
72
|
+
return null;
|
|
73
|
+
const half = total / 2;
|
|
74
|
+
let walked = 0;
|
|
75
|
+
for (let i = 1; i < path.length; i++) {
|
|
76
|
+
const from = path[i - 1];
|
|
77
|
+
const to = path[i];
|
|
78
|
+
const length = Math.hypot(to[0] - from[0], to[1] - from[1]);
|
|
79
|
+
if (length === 0)
|
|
80
|
+
continue;
|
|
81
|
+
if (walked + length >= half) {
|
|
82
|
+
const t = (half - walked) / length;
|
|
83
|
+
return {
|
|
84
|
+
at: [from[0] + (to[0] - from[0]) * t, from[1] + (to[1] - from[1]) * t],
|
|
85
|
+
from,
|
|
86
|
+
to,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
walked += length;
|
|
90
|
+
}
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Where a typed edge's label goes and how it is turned — the whole geometry
|
|
95
|
+
* of M2 since the chevron was folded into the label.
|
|
96
|
+
*
|
|
97
|
+
* `null` for an edge with no direction to show: no routed path yet, or a path
|
|
98
|
+
* whose points all coincide. Silence, not a guess.
|
|
99
|
+
*/
|
|
100
|
+
export function labelAnchorOf(model) {
|
|
101
|
+
const path = pathOf(model);
|
|
102
|
+
if (!path)
|
|
103
|
+
return null;
|
|
104
|
+
const middle = median(path);
|
|
105
|
+
if (!middle)
|
|
106
|
+
return null;
|
|
107
|
+
const { at, from, to } = middle;
|
|
108
|
+
// Canvas y grows downward and so does CSS's rotation sense, so this angle is
|
|
109
|
+
// handed to `rotate()` unchanged.
|
|
110
|
+
let angle = Math.atan2(to[1] - from[1], to[0] - from[0]);
|
|
111
|
+
let flipped = false;
|
|
112
|
+
if (angle > Math.PI / 2) {
|
|
113
|
+
angle -= Math.PI;
|
|
114
|
+
flipped = true;
|
|
115
|
+
}
|
|
116
|
+
else if (angle < -Math.PI / 2) {
|
|
117
|
+
angle += Math.PI;
|
|
118
|
+
flipped = true;
|
|
119
|
+
}
|
|
120
|
+
return { at, angle, flipped };
|
|
121
|
+
}
|
|
122
|
+
/** The `direction` declaration of a role id, when that role is an edge. */
|
|
123
|
+
function directionOfRole(vocabularies, roleId) {
|
|
124
|
+
for (const defs of vocabularies) {
|
|
125
|
+
const def = defs[roleId];
|
|
126
|
+
if (def !== undefined)
|
|
127
|
+
return def.kind === 'edge' ? def.direction : undefined;
|
|
128
|
+
}
|
|
129
|
+
return undefined;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Owns "which typed edges are revealing their direction", and the hint the
|
|
133
|
+
* armed tool shows (M1). Both are session state, both are signals, and both are
|
|
134
|
+
* read by the overlay and by the widget — so the two halves of the affordance
|
|
135
|
+
* can never disagree about what is on screen.
|
|
136
|
+
*
|
|
137
|
+
* No-op until some framework registers a role vocabulary: on a board of
|
|
138
|
+
* generalist connectors this subscribes to nothing at all.
|
|
139
|
+
*/
|
|
140
|
+
export class EdgeDirectionManager extends InteractivityExtension {
|
|
141
|
+
constructor() {
|
|
142
|
+
super(...arguments);
|
|
143
|
+
/** Ids of the typed edges revealing their direction: hover ∪ selection. */
|
|
144
|
+
this.revealed$ = signal([]);
|
|
145
|
+
/**
|
|
146
|
+
* The gesture hint of the armed tool, when that tool draws a typed edge —
|
|
147
|
+
* M1's half of the affordance. `null` for every other tool, which is every
|
|
148
|
+
* tool whose gesture decides no persisted orientation.
|
|
149
|
+
*/
|
|
150
|
+
this.armedHint$ = signal(null);
|
|
151
|
+
this._hovered = null;
|
|
152
|
+
this._subscriptions = [];
|
|
153
|
+
this._vocabularies = null;
|
|
154
|
+
}
|
|
155
|
+
static { this.key = 'edge-direction'; }
|
|
156
|
+
get _roles() {
|
|
157
|
+
this._vocabularies ??= roleVocabularies(this.std);
|
|
158
|
+
return this._vocabularies;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* The revealed edges, resolved NOW rather than remembered.
|
|
162
|
+
*
|
|
163
|
+
* The same reasoning as the validation overlay's: the widget re-renders far
|
|
164
|
+
* more often than this state changes, and an edge can lose a binding or a
|
|
165
|
+
* role between two frames. A frozen snapshot would keep labelling a relation
|
|
166
|
+
* that no longer exists.
|
|
167
|
+
*/
|
|
168
|
+
revealedEdges() {
|
|
169
|
+
const surface = this.gfx.surface;
|
|
170
|
+
if (!surface)
|
|
171
|
+
return [];
|
|
172
|
+
const edges = [];
|
|
173
|
+
for (const id of this.revealed$.peek()) {
|
|
174
|
+
const edge = asTypedEdge(this._roles, surface.getElementById(id));
|
|
175
|
+
// The ADR's guard: an edge bound to nothing relates nothing, so it says
|
|
176
|
+
// nothing at all.
|
|
177
|
+
if (edge && edgeIsBound(edge.model))
|
|
178
|
+
edges.push(edge);
|
|
179
|
+
}
|
|
180
|
+
return edges;
|
|
181
|
+
}
|
|
182
|
+
mounted() {
|
|
183
|
+
// No framework loaded => no vocabulary => no typed edge can exist. The
|
|
184
|
+
// cheapest possible exit, taken once.
|
|
185
|
+
if (this._roles.length === 0)
|
|
186
|
+
return;
|
|
187
|
+
this._subscriptions.push(this.event.on('pointermove', context => {
|
|
188
|
+
this._hover(context.event.x, context.event.y);
|
|
189
|
+
}),
|
|
190
|
+
// Dragging is not reading: the mark would follow the pointer around and
|
|
191
|
+
// say nothing about the edge underneath it.
|
|
192
|
+
//
|
|
193
|
+
// No `pointerleave` handler, deliberately: nothing in this editor
|
|
194
|
+
// DISPATCHES that event to interactivity extensions (`DefaultTool` emits
|
|
195
|
+
// `pointerdown` and `pointermove`), so subscribing to it would be a line
|
|
196
|
+
// that reads like a guarantee and delivers nothing. Leaving the canvas
|
|
197
|
+
// with the pointer keeps the last hover until the next move or the next
|
|
198
|
+
// selection change, which is what the board already does with every other
|
|
199
|
+
// hover affordance.
|
|
200
|
+
this.event.on('dragstart', () => this._setHovered(null)));
|
|
201
|
+
const selection = this.gfx.selection.slots.updated.subscribe(() => this._sync());
|
|
202
|
+
this._subscriptions.push(() => selection.unsubscribe());
|
|
203
|
+
// An EFFECT over both signals rather than a subscription to the tool name:
|
|
204
|
+
// `setTool` writes the name BEFORE the options, and the two Wardley
|
|
205
|
+
// connector tools share one name ('connector') and differ only by their
|
|
206
|
+
// `role` option — so a name subscription would read a stale role, and would
|
|
207
|
+
// not fire at all when the user switches from the link tool to the arrow.
|
|
208
|
+
this._subscriptions.push(effect(() => {
|
|
209
|
+
const armed = this.gfx.tool.currentToolName$.value;
|
|
210
|
+
const option = this.gfx.tool.currentToolOption$.value;
|
|
211
|
+
this._syncArmed(armed === 'connector' ? option?.options?.role : undefined);
|
|
212
|
+
}));
|
|
213
|
+
}
|
|
214
|
+
unmounted() {
|
|
215
|
+
for (const dispose of this._subscriptions)
|
|
216
|
+
dispose();
|
|
217
|
+
this._subscriptions = [];
|
|
218
|
+
this._hovered = null;
|
|
219
|
+
this.revealed$.value = [];
|
|
220
|
+
this.armedHint$.value = null;
|
|
221
|
+
super.unmounted();
|
|
222
|
+
}
|
|
223
|
+
_hover(vx, vy) {
|
|
224
|
+
// Hovering is a READING gesture: while a tool is armed the user is drawing,
|
|
225
|
+
// and the hint (M1) is what speaks then.
|
|
226
|
+
if (this.gfx.tool.currentToolName$.peek() !== 'default') {
|
|
227
|
+
this._setHovered(null);
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
230
|
+
const [x, y] = this.gfx.viewport.toModelCoord(vx, vy);
|
|
231
|
+
const hits = this.gfx.getElementByPoint(x, y, { all: true });
|
|
232
|
+
let found = null;
|
|
233
|
+
// Topmost first: the last hit is the element the pointer is aiming at.
|
|
234
|
+
for (let i = hits.length - 1; i >= 0; i--) {
|
|
235
|
+
const edge = asTypedEdge(this._roles, hits[i]);
|
|
236
|
+
if (edge && edgeIsBound(edge.model)) {
|
|
237
|
+
found = edge.model.id;
|
|
238
|
+
break;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
this._setHovered(found);
|
|
242
|
+
}
|
|
243
|
+
_setHovered(id) {
|
|
244
|
+
if (this._hovered === id)
|
|
245
|
+
return;
|
|
246
|
+
this._hovered = id;
|
|
247
|
+
this._sync();
|
|
248
|
+
}
|
|
249
|
+
_syncArmed(role) {
|
|
250
|
+
const direction = role === undefined ? undefined : directionOfRole(this._roles, role);
|
|
251
|
+
const key = direction?.gestureHintKey;
|
|
252
|
+
const next = key === undefined
|
|
253
|
+
? null
|
|
254
|
+
: {
|
|
255
|
+
key,
|
|
256
|
+
...(direction?.gestureHintFallback !== undefined
|
|
257
|
+
? { fallback: direction.gestureHintFallback }
|
|
258
|
+
: {}),
|
|
259
|
+
};
|
|
260
|
+
if ((this.armedHint$.peek()?.key ?? null) === (next?.key ?? null))
|
|
261
|
+
return;
|
|
262
|
+
this.armedHint$.value = next;
|
|
263
|
+
}
|
|
264
|
+
/** Recompute hover ∪ selection, and publish only when it actually changed. */
|
|
265
|
+
_sync() {
|
|
266
|
+
const ids = [];
|
|
267
|
+
if (this._hovered)
|
|
268
|
+
ids.push(this._hovered);
|
|
269
|
+
for (const element of this.gfx.selection.selectedElements) {
|
|
270
|
+
const edge = asTypedEdge(this._roles, element);
|
|
271
|
+
if (edge && edgeIsBound(edge.model) && !ids.includes(edge.model.id)) {
|
|
272
|
+
ids.push(edge.model.id);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
const current = this.revealed$.peek();
|
|
276
|
+
if (ids.length === current.length &&
|
|
277
|
+
ids.every((id, i) => id === current[i])) {
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
280
|
+
this.revealed$.value = ids;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type { RootBlockModel } from '../../affine-model/index.js';
|
|
2
|
+
import { WidgetComponent } from '../../std/index.js';
|
|
3
|
+
import { nothing } from 'lit';
|
|
4
|
+
export declare const EDGE_DIRECTION_WIDGET = "affine-edge-direction-widget";
|
|
5
|
+
/**
|
|
6
|
+
* The PROSE of `docs/adr/0010`'s M1 and M2, on the pattern
|
|
7
|
+
* `violation-detail-widget` established one directory away — and, since the
|
|
8
|
+
* chevron was folded into the label, the whole of what M2 draws.
|
|
9
|
+
*
|
|
10
|
+
* Two things, both of them WORDS and therefore both of them here rather than on
|
|
11
|
+
* the canvas (a tooltip rendered at a quarter size is not a smaller tooltip, it
|
|
12
|
+
* is an unreadable one):
|
|
13
|
+
*
|
|
14
|
+
* - **M2** — while a typed edge is hovered or selected, the role's VERB laid
|
|
15
|
+
* along the link: `depends on`, in a box that ends in a point aimed at the
|
|
16
|
+
* provider. Since the PO acceptance of 02/08/2026 this is the only mark the
|
|
17
|
+
* reveal draws; the canvas chevron it used to sit on top of is folded into
|
|
18
|
+
* that point (see `direction-reveal.ts`). Since the second pass of the same
|
|
19
|
+
* recette it is the verb ALONE: the full sentence was longer than the links
|
|
20
|
+
* it was laid on, so it covered the very components it named — and those
|
|
21
|
+
* names are already drawn at both ends of the line.
|
|
22
|
+
* - **M1** — while a tool that draws a typed edge is armed, the sentence that
|
|
23
|
+
* tells the user which way to drag. That is what turns the direction their
|
|
24
|
+
* gesture writes into a statement they made.
|
|
25
|
+
*
|
|
26
|
+
* It knows no framework: the verb is a key declared by a ROLE
|
|
27
|
+
* (`EdgeDirectionDef`) and resolved through the host's catalogue.
|
|
28
|
+
*/
|
|
29
|
+
export declare class EdgeDirectionWidget extends WidgetComponent<RootBlockModel> {
|
|
30
|
+
static styles: import("lit").CSSResult;
|
|
31
|
+
private accessor _revealed;
|
|
32
|
+
private accessor _hint;
|
|
33
|
+
get gfx(): import("../../std/gfx/controller.js").GfxController;
|
|
34
|
+
private get _manager();
|
|
35
|
+
/**
|
|
36
|
+
* Idempotent wiring, called from both `firstUpdated` and a later
|
|
37
|
+
* `connectedCallback`: `WithDisposable` throws its group away on disconnect
|
|
38
|
+
* while lit runs `firstUpdated` once, so wiring done only there never comes
|
|
39
|
+
* back if the widget is detached and re-attached.
|
|
40
|
+
*/
|
|
41
|
+
private _wire;
|
|
42
|
+
connectedCallback(): void;
|
|
43
|
+
firstUpdated(): void;
|
|
44
|
+
/**
|
|
45
|
+
* The word a revealed edge is labelled with, in the framework's own words —
|
|
46
|
+
* the role's verb, said in the host's language.
|
|
47
|
+
*
|
|
48
|
+
* `''` when the role declares neither verb nor label, in which case the
|
|
49
|
+
* caller draws nothing at all.
|
|
50
|
+
*/
|
|
51
|
+
private _verbFor;
|
|
52
|
+
private _renderLabel;
|
|
53
|
+
/**
|
|
54
|
+
* The armed tool's hint, centred near the bottom of the EDITOR VIEWPORT —
|
|
55
|
+
* above the toolbar, where the user's eyes already are while they aim.
|
|
56
|
+
*
|
|
57
|
+
* The viewport rect is the only frame available to a widget host that is a
|
|
58
|
+
* zero-sized box at its origin, and it is the one the other canvas
|
|
59
|
+
* affordances measure against (`violation-detail-widget` flips its bubble
|
|
60
|
+
* against `viewport.width` / `viewport.height` the same way).
|
|
61
|
+
*/
|
|
62
|
+
private _renderHint;
|
|
63
|
+
render(): import("lit-html").TemplateResult<1> | typeof nothing;
|
|
64
|
+
}
|
|
65
|
+
export declare const edgeDirectionWidget: import("../../store/index.js").ExtensionType;
|