@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,84 @@
|
|
|
1
|
+
import { createIdentifier } from '../../global/di/index.js';
|
|
2
|
+
/** A framework registers its nudges here; nothing else registers nudges. */
|
|
3
|
+
export const QualityNudgeIdentifier = createIdentifier('QualityNudge');
|
|
4
|
+
/**
|
|
5
|
+
* Register a framework's nudges. Call it from the FLAG-GATED view extension,
|
|
6
|
+
* beside {@link ValidationRuleExtension}.
|
|
7
|
+
*
|
|
8
|
+
* ```ts
|
|
9
|
+
* context.register(QualityNudgeExtension(WARDLEY_NUDGES));
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
export function QualityNudgeExtension(nudges) {
|
|
13
|
+
return {
|
|
14
|
+
setup: di => {
|
|
15
|
+
for (const nudge of nudges) {
|
|
16
|
+
di.addImpl(QualityNudgeIdentifier(nudge.id), () => nudge);
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* The nudge ids ticked on `element` — always an array, never a copy to keep.
|
|
23
|
+
*
|
|
24
|
+
* The value comes out of a Y.Map, so it is whatever a peer wrote: a client that
|
|
25
|
+
* got it wrong must not break the panel on this one. Non-string members are
|
|
26
|
+
* dropped rather than shown, for the same reason.
|
|
27
|
+
*/
|
|
28
|
+
export function checkedNudges(element) {
|
|
29
|
+
const stored = element.qualityChecklist;
|
|
30
|
+
if (!Array.isArray(stored))
|
|
31
|
+
return [];
|
|
32
|
+
return stored.filter((id) => typeof id === 'string');
|
|
33
|
+
}
|
|
34
|
+
/** Whether `nudgeId` is ticked on `element`. */
|
|
35
|
+
export function isNudgeChecked(element, nudgeId) {
|
|
36
|
+
return checkedNudges(element).includes(nudgeId);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Tick or untick `nudgeId` on `element`.
|
|
40
|
+
*
|
|
41
|
+
* The write goes through the declared `@field()` accessor, so it lands in the
|
|
42
|
+
* Y.Map, syncs to every peer, joins the undo stack and survives a copy — see the
|
|
43
|
+
* note on `GfxPrimitiveElementModel.qualityChecklist`.
|
|
44
|
+
*
|
|
45
|
+
* Unticking the LAST one removes the key rather than leaving an empty array
|
|
46
|
+
* behind: assigning `[]` through the accessor would keep a key in the Y.Map,
|
|
47
|
+
* invisible in the panel but synced to every peer and shipped in every snapshot.
|
|
48
|
+
* `clearField` removes it, so an element whose checklist was emptied really is
|
|
49
|
+
* indistinguishable from one that never had a nudge ticked — in the document,
|
|
50
|
+
* and not just in this tab. Exactly what `revokeException` does with the last
|
|
51
|
+
* exception (PF8).
|
|
52
|
+
*
|
|
53
|
+
* ## Read-only is enforced HERE, not only in the panel
|
|
54
|
+
*
|
|
55
|
+
* The house convention for these writes: the seam guards itself
|
|
56
|
+
* (`setProfile`, `setException`, `revokeExceptionsOn` all do). A `disabled`
|
|
57
|
+
* checkbox is a UI promise and covers exactly one caller; an agent, a host or a
|
|
58
|
+
* future surface reaching this function directly would have no net at all. And
|
|
59
|
+
* the failure is not a no-op: `clearField` goes through `Store.transact`, which
|
|
60
|
+
* — unlike `addBlock` / `updateBlock` / `deleteBlock` — carries no read-only
|
|
61
|
+
* guard of its own, so unticking would genuinely delete the key from a document
|
|
62
|
+
* the user cannot edit.
|
|
63
|
+
*
|
|
64
|
+
* The store is reached through the element's own surface. An element not yet
|
|
65
|
+
* attached to one carries no document to protect and is written normally, which
|
|
66
|
+
* is what a unit fixture is.
|
|
67
|
+
*
|
|
68
|
+
* @returns whether the document actually changed.
|
|
69
|
+
*/
|
|
70
|
+
export function setNudgeChecked(element, nudgeId, checked) {
|
|
71
|
+
if (element.surface?.store?.readonly)
|
|
72
|
+
return false;
|
|
73
|
+
const current = checkedNudges(element);
|
|
74
|
+
if (current.includes(nudgeId) === checked)
|
|
75
|
+
return false;
|
|
76
|
+
const next = checked
|
|
77
|
+
? [...current, nudgeId]
|
|
78
|
+
: current.filter(id => id !== nudgeId);
|
|
79
|
+
if (next.length === 0)
|
|
80
|
+
element.clearField('qualityChecklist');
|
|
81
|
+
else
|
|
82
|
+
element.qualityChecklist = next;
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
import { type ToolbarContext, type ToolbarModuleConfig } from '../../affine-shared/services/index.js';
|
|
2
|
+
import type { FrameworkId } from '../../std/index.js';
|
|
3
|
+
import type { GfxPrimitiveElementModel } from '../../std/gfx/index.js';
|
|
4
|
+
import type { TemplateResult } from 'lit';
|
|
5
|
+
/**
|
|
6
|
+
* **Morph** — a framework element becomes a NEARBY kind of itself, from its own
|
|
7
|
+
* contextual toolbar, without being replaced.
|
|
8
|
+
*
|
|
9
|
+
* A user task is a task that says who performs it; a timer start is a start
|
|
10
|
+
* event that says what triggers it. Discovering mid-draft that the rectangle
|
|
11
|
+
* should have been a user task is not a modelling mistake, it is modelling —
|
|
12
|
+
* and today the only way through it is delete, re-draw, re-connect, re-type.
|
|
13
|
+
* That gesture loses the geometry, every sequence flow attached to the node and
|
|
14
|
+
* the label somebody wrote; this one writes `kind`, `role` and the target's
|
|
15
|
+
* preset APPEARANCE, and touches nothing else. The appearance is deliberately
|
|
16
|
+
* in that list — see {@link MorphSpec.propsOf}: a morph resets styling to what
|
|
17
|
+
* the target kind is born as, so a morphed artefact and a freshly drawn one are
|
|
18
|
+
* the same element.
|
|
19
|
+
*
|
|
20
|
+
* ## Why this is not "Switch shape type"
|
|
21
|
+
*
|
|
22
|
+
* The shape toolbar's dropdown (`gfx/shape/src/toolbar/config.ts`, `c.switch-type`)
|
|
23
|
+
* is the visual template and deliberately not the mechanism. It offers EVERY
|
|
24
|
+
* shape to every shape, because a rectangle and an ellipse mean nothing and are
|
|
25
|
+
* therefore interchangeable. A framework artefact means something: a task is not
|
|
26
|
+
* an end event, and a menu that offered the swap would be a menu that invites
|
|
27
|
+
* nonsense. So the reachable set is DATA the framework declares — an explicit
|
|
28
|
+
* table of families, not a derivation from the role tree, from the icon set or
|
|
29
|
+
* from anything else clever. `roleIsA` would have made `bpmn:task` reach
|
|
30
|
+
* `bpmn:activity` and thence the sub-process and the call activity, which is one
|
|
31
|
+
* inference too many: a task and a sub-process are not the same size of thing,
|
|
32
|
+
* and only a human knows which pairs a reader would accept as "the same artefact,
|
|
33
|
+
* said more precisely".
|
|
34
|
+
*
|
|
35
|
+
* ## What a morph is NOT
|
|
36
|
+
*
|
|
37
|
+
* It is not a creation: nothing is inserted, nothing is deleted, no id changes.
|
|
38
|
+
* `xywh`, every connector endpoint pointing at the element, and the text it
|
|
39
|
+
* carries are all untouched — see {@link MorphSpec.propsOf}, whose contract is
|
|
40
|
+
* that it returns NEITHER `type`, NOR `xywh`, NOR `text`. {@link applyMorph}
|
|
41
|
+
* strips those three from whatever the spec hands back, so the contract is
|
|
42
|
+
* ENFORCED here rather than merely asked for.
|
|
43
|
+
*
|
|
44
|
+
* It is also not a style change, which is why it is not `FrameworkElementAdded`
|
|
45
|
+
* that reports it. `FrameworkElementMorphed` is its own event for the reason
|
|
46
|
+
* `FrameworkElementPromoted` is: a creation event emitted where nothing was
|
|
47
|
+
* created inflates "elements added per framework" forever.
|
|
48
|
+
*
|
|
49
|
+
* ## Generic in shape, framework-registered — like `tags-toolbar.ts`
|
|
50
|
+
*
|
|
51
|
+
* Nothing in this file names a framework, a kind or a role. Everything it needs
|
|
52
|
+
* arrives in one {@link MorphSpec}, which a framework's own FLAG-GATED view
|
|
53
|
+
* extension registers against its element flavour — morph is TOOLING, so the
|
|
54
|
+
* flag takes the menu away and leaves every stored document loading, painting
|
|
55
|
+
* and round-tripping exactly as before (`docs/adr/0009`).
|
|
56
|
+
*
|
|
57
|
+
* ## One element, or a composite of several
|
|
58
|
+
*
|
|
59
|
+
* A BPMN node is one element: what the user selects, what carries `kind` and
|
|
60
|
+
* what the patch lands on are the same object. A C4 component is not — it is a
|
|
61
|
+
* native `group` holding the shape and its three lines of words — and two
|
|
62
|
+
* optional hooks are the whole of the difference: {@link MorphSpec.resolveTarget}
|
|
63
|
+
* says which element inside the selection the kind is written on (and refuses
|
|
64
|
+
* every group that is not one of this framework's components), and
|
|
65
|
+
* {@link MorphSpec.afterMorph} writes whatever else the artefact owes the
|
|
66
|
+
* change, inside the same undo step. Both default to nothing, so a framework
|
|
67
|
+
* whose artefact is one element declares neither.
|
|
68
|
+
*/
|
|
69
|
+
/** A piece of chrome's wording: the host's key, and the English behind it. */
|
|
70
|
+
export interface MorphLabel {
|
|
71
|
+
/** `com.labre.*` key handed to `TranslationProvider.t`, when there is one. */
|
|
72
|
+
key?: string;
|
|
73
|
+
/** What a standalone editor shows. */
|
|
74
|
+
fallback: string;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* One wording, key and English adjacent.
|
|
78
|
+
*
|
|
79
|
+
* A two-argument helper rather than an object literal at the declaration site,
|
|
80
|
+
* because that is the shape the manifest's drift guard reads: it pairs two
|
|
81
|
+
* adjacent literals in one argument list, so a key restated in
|
|
82
|
+
* `affine/all/src/translations.ts` is confirmed against the wording actually
|
|
83
|
+
* shipped instead of joining the unpairable residue.
|
|
84
|
+
*/
|
|
85
|
+
export declare const morphLabel: (key: string, fallback: string) => MorphLabel;
|
|
86
|
+
/**
|
|
87
|
+
* Everything the module needs, and nothing it could ask a registry for.
|
|
88
|
+
*
|
|
89
|
+
* DI-free on purpose, exactly like `tagsToolbarConfig(roles)`: the kind
|
|
90
|
+
* vocabularies are lib-side data modules owned by the framework that renders
|
|
91
|
+
* them, and ADR 0007 § 2bis kept them out of the DI registry. A second framework
|
|
92
|
+
* gets this dropdown by registering its own spec.
|
|
93
|
+
*/
|
|
94
|
+
export interface MorphSpec<K extends string = string> {
|
|
95
|
+
/** Telemetry segment — the WIRE value, as `reportCommandTelemetry` sends it. */
|
|
96
|
+
framework: FrameworkId;
|
|
97
|
+
/**
|
|
98
|
+
* The morphable sets, declared. Each inner array is one family whose members
|
|
99
|
+
* are mutually reachable, and DECLARATION ORDER IS MENU ORDER. A kind in no
|
|
100
|
+
* family can never be morphed and never offers the menu — which is how a BPMN
|
|
101
|
+
* group and a text annotation stay out of it.
|
|
102
|
+
*/
|
|
103
|
+
families: readonly (readonly K[])[];
|
|
104
|
+
/** Filters the selection, via `getSurfaceModelsByType`. */
|
|
105
|
+
modelType: abstract new (...args: never[]) => GfxPrimitiveElementModel;
|
|
106
|
+
/**
|
|
107
|
+
* The element the kind is actually WRITTEN on, given what the user selected.
|
|
108
|
+
*
|
|
109
|
+
* Identity by default, which is the whole of BPMN's case: a node is one
|
|
110
|
+
* element, it is what the selection holds and it is what the patch lands on.
|
|
111
|
+
*
|
|
112
|
+
* A COMPOSITE artefact is the reason this exists. A C4 component is a native
|
|
113
|
+
* `group` holding the `c4Node` shape and its three lines of words: one click
|
|
114
|
+
* selects the group, the `kind` lives on the shape, and a patch written to
|
|
115
|
+
* the group would put `kind` and `role` on a wrapper that means nothing (see
|
|
116
|
+
* `gfx/c4/src/roles.ts` on why the group is deliberately role-less). So the
|
|
117
|
+
* spec maps the selection to the element it is about, and everything
|
|
118
|
+
* downstream — {@link kindOf}, the patch, the clears — speaks about THAT.
|
|
119
|
+
*
|
|
120
|
+
* Returning `undefined` is a REFUSAL and the main gate a composite framework
|
|
121
|
+
* has: a plain group somebody drew round three shapes, a group belonging to
|
|
122
|
+
* another framework, a group holding two components — none of them resolves,
|
|
123
|
+
* so none of them is offered the menu. It is checked per element, so a
|
|
124
|
+
* selection mixing a C4 component with a Wardley one offers nothing at all.
|
|
125
|
+
*/
|
|
126
|
+
resolveTarget?(model: GfxPrimitiveElementModel): GfxPrimitiveElementModel | undefined;
|
|
127
|
+
/**
|
|
128
|
+
* This element's current kind, or `undefined` when it carries none.
|
|
129
|
+
*
|
|
130
|
+
* Asked of the RESOLVED element ({@link resolveTarget}), never of the
|
|
131
|
+
* selection.
|
|
132
|
+
*/
|
|
133
|
+
kindOf(model: GfxPrimitiveElementModel): K | undefined;
|
|
134
|
+
/**
|
|
135
|
+
* Anything else the morph owes the artefact, written in the SAME gesture.
|
|
136
|
+
*
|
|
137
|
+
* Called once per element actually changed, inside the one `captureSync`, so
|
|
138
|
+
* whatever it writes is part of the same single ctrl+z as the patch — and
|
|
139
|
+
* called with the SELECTED model, because what it has to reach is the rest of
|
|
140
|
+
* the composite rather than the shape the patch just landed on.
|
|
141
|
+
*
|
|
142
|
+
* C4 is the one caller today: a component's type line reads `[Container:
|
|
143
|
+
* Java]`, and the bracketed word is the NOTATION's — derived from `kind` —
|
|
144
|
+
* while the technology after the colon is the author's. A kind rewritten
|
|
145
|
+
* without that line rewritten with it is a picture that contradicts its own
|
|
146
|
+
* caption. Both kinds are handed over because the decision needs the one the
|
|
147
|
+
* element is leaving as much as the one it is arriving at: only a line that
|
|
148
|
+
* still says what the SOURCE kind derived may be rewritten, and a line the
|
|
149
|
+
* author typed over is theirs.
|
|
150
|
+
*/
|
|
151
|
+
afterMorph?(model: GfxPrimitiveElementModel, from: K, to: K): void;
|
|
152
|
+
/** The role a kind means — the `from` / `to` of the telemetry, ids only. */
|
|
153
|
+
roleOf(kind: K): string;
|
|
154
|
+
/**
|
|
155
|
+
* The WHOLE patch a kind is worth: `kind`, `role`, and every preset the
|
|
156
|
+
* target's own appearance depends on.
|
|
157
|
+
*
|
|
158
|
+
* Must NOT contain `type` (the element is not being re-typed), `xywh` (the
|
|
159
|
+
* geometry is the user's) or `text` (the words are the user's). Those three
|
|
160
|
+
* are stripped by {@link applyMorph} whatever the spec returns, so this is a
|
|
161
|
+
* contract the module enforces and not one it trusts.
|
|
162
|
+
*
|
|
163
|
+
* ## Why the whole preset, and not just `{kind, role}`
|
|
164
|
+
*
|
|
165
|
+
* Because the appearance of a framework artefact is written by the preset of
|
|
166
|
+
* the kind it was CREATED as, and nothing else will ever rewrite it. BPMN has
|
|
167
|
+
* one shipped pair where that bites today: `subProcess` → `callActivity`
|
|
168
|
+
* differ only in `strokeWidth` (2 ⇄ 4), and the thick border IS what tells a
|
|
169
|
+
* reader that this box stands for a process defined elsewhere. A two-key
|
|
170
|
+
* patch would produce a call activity indistinguishable from the sub-process
|
|
171
|
+
* it no longer is.
|
|
172
|
+
*
|
|
173
|
+
* Every other shipped BPMN family currently shares one preset across its
|
|
174
|
+
* members, so for those the full patch is a no-op — and that is the second
|
|
175
|
+
* reason to require it rather than to optimise it away. It is insurance for
|
|
176
|
+
* the day a family gains a member whose preset differs (a family is DATA and
|
|
177
|
+
* grows by declaration, with no code change to prompt the question), and it
|
|
178
|
+
* is the guarantee that a morphed artefact and one freshly drawn from the
|
|
179
|
+
* palette are byte-for-byte the same element. A framework that derives this
|
|
180
|
+
* from its creation builder — as BPMN's `bpmnMorphProps` does — cannot let
|
|
181
|
+
* the two drift apart.
|
|
182
|
+
*/
|
|
183
|
+
propsOf(kind: K): Record<string, unknown>;
|
|
184
|
+
/**
|
|
185
|
+
* Field names to DELETE after patching — the keys the target's props do not
|
|
186
|
+
* carry.
|
|
187
|
+
*
|
|
188
|
+
* A patch cannot express absence: a preset that spreads a key conditionally
|
|
189
|
+
* (BPMN's `textVerticalAlign`) simply omits it, and an omitted key leaves the
|
|
190
|
+
* PREVIOUS kind's value sitting in the Y.Map, silently in force. `clearField`
|
|
191
|
+
* removes it, which is the same call `writeLanes` makes for the same reason.
|
|
192
|
+
*/
|
|
193
|
+
clearOf?(kind: K): readonly string[];
|
|
194
|
+
/** One menu item's tooltip. */
|
|
195
|
+
labelOf(kind: K): MorphLabel;
|
|
196
|
+
/** One menu item's icon — the framework's own, reused. */
|
|
197
|
+
iconOf(kind: K): TemplateResult;
|
|
198
|
+
/** The dropdown's own name. */
|
|
199
|
+
label: MorphLabel;
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Write one kind onto every element of the selection that is not already it.
|
|
203
|
+
*
|
|
204
|
+
* Exported because it is the WRITE and the menu is only the chrome around it:
|
|
205
|
+
* the unit suite exercises the mutation without a DOM, and the integration
|
|
206
|
+
* suite performs the same gesture a click performs. It re-derives the target
|
|
207
|
+
* itself, so there is no way to reach it with a selection the menu would have
|
|
208
|
+
* refused.
|
|
209
|
+
*
|
|
210
|
+
* ## Straight to the surface, and why not through `EdgelessCRUDIdentifier`
|
|
211
|
+
*
|
|
212
|
+
* `EdgelessCRUDExtension.updateElement` calls `recordLastProps` on its way
|
|
213
|
+
* past, which teaches the editor "the last thing you made looked like this" —
|
|
214
|
+
* and the props here are a WHOLE preset, not the one field a user just changed.
|
|
215
|
+
* For any element type the last-props schema names, morphing one artefact would
|
|
216
|
+
* therefore restyle the next one drawn from the palette — one morph to a
|
|
217
|
+
* thick-bordered call activity, and the next artefact of that type comes out
|
|
218
|
+
* wearing a border nobody asked for. No BPMN type is in that schema today, so
|
|
219
|
+
* nothing is broken right now, which is exactly the kind of accident that lands
|
|
220
|
+
* the day one is added. This module is generic and must not depend on which
|
|
221
|
+
* types happen to be listed. (The crud now skips recording for role-carrying
|
|
222
|
+
* elements, so the bypass here is belt-and-braces — kept as the lighter write.)
|
|
223
|
+
*
|
|
224
|
+
* `surface.updateElement` is the same write without the memory; the read-only
|
|
225
|
+
* refusal the CRUD also carries is restated in {@link morphTarget}.
|
|
226
|
+
*
|
|
227
|
+
* One `updateElement` per element, then its `clearField`s: kind, role and the
|
|
228
|
+
* presets land together, so no repaint and no rule ever sees an element that is
|
|
229
|
+
* half one artefact and half another. `role` is in `VERDICT_PROPS`, so the
|
|
230
|
+
* validation engine re-judges the board on its own within one debounce tick —
|
|
231
|
+
* which is the whole reason role is never written without kind, nor kind
|
|
232
|
+
* without role.
|
|
233
|
+
*
|
|
234
|
+
* One `captureSync` before the loop, so a morph of nine elements is one ctrl+z.
|
|
235
|
+
*/
|
|
236
|
+
export declare function applyMorph<K extends string>(ctx: ToolbarContext, spec: MorphSpec<K>, kind: K): void;
|
|
237
|
+
/**
|
|
238
|
+
* The toolbar module, parameterized by one framework's morph declaration.
|
|
239
|
+
*
|
|
240
|
+
* The dropdown is `renderPickerMenu` (`@labre/affine-components/toolbar`) — the
|
|
241
|
+
* SAME one-of-many picker "Switch shape type" is, chevron, tooltips, active
|
|
242
|
+
* background and all, so a user meets one affordance rather than two that
|
|
243
|
+
* resemble each other. It lives in the component package and not in
|
|
244
|
+
* `@labre/affine-widget-edgeless-toolbar`, where the picker was first written,
|
|
245
|
+
* because that widget package depends on THIS one: importing it here would
|
|
246
|
+
* close a cycle, and the component package is below both.
|
|
247
|
+
*/
|
|
248
|
+
export declare function morphToolbarConfig<K extends string>(spec: MorphSpec<K>): ToolbarModuleConfig;
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
import { renderPickerMenu } from '../../affine-components/toolbar/index.js';
|
|
2
|
+
import { MindmapElementModel } from '../../affine-model/index.js';
|
|
3
|
+
import { translateKey, } from '../../affine-shared/services/index.js';
|
|
4
|
+
import { getMostCommonValue } from '../../affine-shared/utils/index.js';
|
|
5
|
+
/**
|
|
6
|
+
* One wording, key and English adjacent.
|
|
7
|
+
*
|
|
8
|
+
* A two-argument helper rather than an object literal at the declaration site,
|
|
9
|
+
* because that is the shape the manifest's drift guard reads: it pairs two
|
|
10
|
+
* adjacent literals in one argument list, so a key restated in
|
|
11
|
+
* `affine/all/src/translations.ts` is confirmed against the wording actually
|
|
12
|
+
* shipped instead of joining the unpairable residue.
|
|
13
|
+
*/
|
|
14
|
+
export const morphLabel = (key, fallback) => ({
|
|
15
|
+
key,
|
|
16
|
+
fallback,
|
|
17
|
+
});
|
|
18
|
+
/**
|
|
19
|
+
* Mirrors `hasGrouped` in the shape toolbar: a mindmap node's appearance is the
|
|
20
|
+
* mindmap's to decide, so it is not a thing a per-element dropdown may rewrite.
|
|
21
|
+
* A plain canvas group is NOT a refusal — grouping some tasks together says
|
|
22
|
+
* nothing about what any of them is.
|
|
23
|
+
*/
|
|
24
|
+
function inMindmap(model) {
|
|
25
|
+
return model.group instanceof MindmapElementModel;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* The selection, if there is exactly one honest morph to offer for it.
|
|
29
|
+
*
|
|
30
|
+
* Five conditions, and each removes a way for the menu to lie:
|
|
31
|
+
*
|
|
32
|
+
* - the document is editable — this writes to the surface DIRECTLY (see
|
|
33
|
+
* {@link applyMorph}), so it does not inherit `EdgelessCRUDExtension`'s
|
|
34
|
+
* read-only refusal and states its own;
|
|
35
|
+
* - the selection is non-empty and HOMOGENEOUS on the spec's model type — a
|
|
36
|
+
* selection holding a task and a connector has no current value to show;
|
|
37
|
+
* - nothing in it is locked or belongs to a mindmap;
|
|
38
|
+
* - every element RESOLVES ({@link MorphSpec.resolveTarget}) and the element it
|
|
39
|
+
* resolves to is itself unlocked — which for a composite framework is the
|
|
40
|
+
* whole gate: a plain group, another framework's group and a group holding
|
|
41
|
+
* two components all resolve to nothing and are all refused here;
|
|
42
|
+
* - every resolved element's kind is one the spec knows;
|
|
43
|
+
* - and they all belong to the SAME family. Mixed families means the answer
|
|
44
|
+
* would differ per element, and the simplest correct rule is to offer
|
|
45
|
+
* nothing rather than to guess which of two menus the user meant.
|
|
46
|
+
*/
|
|
47
|
+
function morphTarget(ctx, spec) {
|
|
48
|
+
if (ctx.readonly)
|
|
49
|
+
return null;
|
|
50
|
+
const models = ctx.getSurfaceModelsByType(spec.modelType);
|
|
51
|
+
if (!models.length)
|
|
52
|
+
return null;
|
|
53
|
+
if (models.length !== ctx.getSurfaceModels().length)
|
|
54
|
+
return null;
|
|
55
|
+
if (models.some(model => model.isLocked() || inMindmap(model)))
|
|
56
|
+
return null;
|
|
57
|
+
const entries = [];
|
|
58
|
+
for (const selected of models) {
|
|
59
|
+
// Never `?? selected`: `undefined` is the spec REFUSING this element, and
|
|
60
|
+
// falling back to the selection would write a framework's kind onto the
|
|
61
|
+
// very wrapper the spec just declined.
|
|
62
|
+
const target = spec.resolveTarget ? spec.resolveTarget(selected) : selected;
|
|
63
|
+
// Tested on the resolved element too: a composite's shape can be locked
|
|
64
|
+
// while the group holding it is not, and the write would then be refused
|
|
65
|
+
// after the menu had already offered it.
|
|
66
|
+
if (!target || target.isLocked() || inMindmap(target))
|
|
67
|
+
return null;
|
|
68
|
+
const kind = spec.kindOf(target);
|
|
69
|
+
if (kind === undefined)
|
|
70
|
+
return null;
|
|
71
|
+
entries.push({ selected, target, kind });
|
|
72
|
+
}
|
|
73
|
+
const kinds = entries.map(entry => entry.kind);
|
|
74
|
+
const family = spec.families.find(candidate => candidate.includes(kinds[0]));
|
|
75
|
+
if (!family)
|
|
76
|
+
return null;
|
|
77
|
+
if (!kinds.every(kind => family.includes(kind)))
|
|
78
|
+
return null;
|
|
79
|
+
const current = getMostCommonValue(kinds.map(kind => ({ kind })), 'kind') ?? kinds[0];
|
|
80
|
+
return { entries, family, current };
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* What a morph may never rewrite, whatever a spec hands back: the element's
|
|
84
|
+
* identity, its geometry, and the user's words.
|
|
85
|
+
*/
|
|
86
|
+
const NOT_A_MORPH = ['type', 'xywh', 'text'];
|
|
87
|
+
/**
|
|
88
|
+
* The spec's patch with those three removed.
|
|
89
|
+
*
|
|
90
|
+
* {@link MorphSpec.propsOf} already promises not to include them, and BPMN's
|
|
91
|
+
* builder honours the promise by construction. This is the second lock, and it
|
|
92
|
+
* belongs here rather than in each framework: a spec is DATA a framework
|
|
93
|
+
* author writes, `propsOf` is most naturally derived from a CREATION builder
|
|
94
|
+
* (which of course emits `type` and `xywh`), and the failure mode of forgetting
|
|
95
|
+
* one strip is a morph that silently moves an element to `[0,0,0,0]` or empties
|
|
96
|
+
* its label. A contract worth stating in the type is worth enforcing at the
|
|
97
|
+
* one place that writes.
|
|
98
|
+
*/
|
|
99
|
+
function morphPatch(props) {
|
|
100
|
+
const patch = { ...props };
|
|
101
|
+
for (const key of NOT_A_MORPH)
|
|
102
|
+
delete patch[key];
|
|
103
|
+
return patch;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Write one kind onto every element of the selection that is not already it.
|
|
107
|
+
*
|
|
108
|
+
* Exported because it is the WRITE and the menu is only the chrome around it:
|
|
109
|
+
* the unit suite exercises the mutation without a DOM, and the integration
|
|
110
|
+
* suite performs the same gesture a click performs. It re-derives the target
|
|
111
|
+
* itself, so there is no way to reach it with a selection the menu would have
|
|
112
|
+
* refused.
|
|
113
|
+
*
|
|
114
|
+
* ## Straight to the surface, and why not through `EdgelessCRUDIdentifier`
|
|
115
|
+
*
|
|
116
|
+
* `EdgelessCRUDExtension.updateElement` calls `recordLastProps` on its way
|
|
117
|
+
* past, which teaches the editor "the last thing you made looked like this" —
|
|
118
|
+
* and the props here are a WHOLE preset, not the one field a user just changed.
|
|
119
|
+
* For any element type the last-props schema names, morphing one artefact would
|
|
120
|
+
* therefore restyle the next one drawn from the palette — one morph to a
|
|
121
|
+
* thick-bordered call activity, and the next artefact of that type comes out
|
|
122
|
+
* wearing a border nobody asked for. No BPMN type is in that schema today, so
|
|
123
|
+
* nothing is broken right now, which is exactly the kind of accident that lands
|
|
124
|
+
* the day one is added. This module is generic and must not depend on which
|
|
125
|
+
* types happen to be listed. (The crud now skips recording for role-carrying
|
|
126
|
+
* elements, so the bypass here is belt-and-braces — kept as the lighter write.)
|
|
127
|
+
*
|
|
128
|
+
* `surface.updateElement` is the same write without the memory; the read-only
|
|
129
|
+
* refusal the CRUD also carries is restated in {@link morphTarget}.
|
|
130
|
+
*
|
|
131
|
+
* One `updateElement` per element, then its `clearField`s: kind, role and the
|
|
132
|
+
* presets land together, so no repaint and no rule ever sees an element that is
|
|
133
|
+
* half one artefact and half another. `role` is in `VERDICT_PROPS`, so the
|
|
134
|
+
* validation engine re-judges the board on its own within one debounce tick —
|
|
135
|
+
* which is the whole reason role is never written without kind, nor kind
|
|
136
|
+
* without role.
|
|
137
|
+
*
|
|
138
|
+
* One `captureSync` before the loop, so a morph of nine elements is one ctrl+z.
|
|
139
|
+
*/
|
|
140
|
+
export function applyMorph(ctx, spec, kind) {
|
|
141
|
+
// Re-resolved rather than closed over: the selection may have moved on
|
|
142
|
+
// between the render that drew this line and the click that reached it, and
|
|
143
|
+
// the write must never land somewhere the menu would not have been offered.
|
|
144
|
+
const target = morphTarget(ctx, spec);
|
|
145
|
+
if (!target || !target.family.includes(kind))
|
|
146
|
+
return;
|
|
147
|
+
const changing = target.entries.filter(entry => entry.kind !== kind);
|
|
148
|
+
// A gesture that changes nothing is not a morph, writes nothing and reports
|
|
149
|
+
// nothing — the rule every arbitration gesture in this repo already follows.
|
|
150
|
+
if (!changing.length)
|
|
151
|
+
return;
|
|
152
|
+
const props = morphPatch(spec.propsOf(kind));
|
|
153
|
+
const cleared = spec.clearOf?.(kind) ?? [];
|
|
154
|
+
ctx.std.store.captureSync();
|
|
155
|
+
for (const entry of changing) {
|
|
156
|
+
entry.target.surface.updateElement(entry.target.id, props);
|
|
157
|
+
for (const field of cleared)
|
|
158
|
+
entry.target.clearField(field);
|
|
159
|
+
// Inside the loop and inside the one checkpoint above: whatever the rest of
|
|
160
|
+
// a composite owes this morph — C4's type line — is part of the same single
|
|
161
|
+
// ctrl+z as the kind that made it necessary.
|
|
162
|
+
spec.afterMorph?.(entry.selected, entry.kind, kind);
|
|
163
|
+
}
|
|
164
|
+
// The one DIRECT emission in this module, and the arbitrated exception is the
|
|
165
|
+
// same one the C4 legend button makes: there is no command behind this
|
|
166
|
+
// gesture to carry the telemetry for it, because a morph is declared by the
|
|
167
|
+
// element's own toolbar module and reachable from nowhere else. The values
|
|
168
|
+
// must therefore stay aligned by hand with what `reportCommandTelemetry`
|
|
169
|
+
// would send — `framework` is the descriptor's wire key, and `ctx.track`
|
|
170
|
+
// supplies `page` / `segment` / `module` exactly as the other toolbar
|
|
171
|
+
// emitters get them. A morph reachable from the palette one day takes its
|
|
172
|
+
// telemetry from the command and this call goes away.
|
|
173
|
+
ctx.track('FrameworkElementMorphed', {
|
|
174
|
+
framework: spec.framework,
|
|
175
|
+
fromRole: spec.roleOf(target.current),
|
|
176
|
+
toRole: spec.roleOf(kind),
|
|
177
|
+
elementCount: changing.length,
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
/** One wording, resolved against the host's catalogue when it named a key. */
|
|
181
|
+
function wording(ctx, { key, fallback }) {
|
|
182
|
+
return key ? translateKey(ctx.std, key, fallback) : fallback;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* The toolbar module, parameterized by one framework's morph declaration.
|
|
186
|
+
*
|
|
187
|
+
* The dropdown is `renderPickerMenu` (`@labre/affine-components/toolbar`) — the
|
|
188
|
+
* SAME one-of-many picker "Switch shape type" is, chevron, tooltips, active
|
|
189
|
+
* background and all, so a user meets one affordance rather than two that
|
|
190
|
+
* resemble each other. It lives in the component package and not in
|
|
191
|
+
* `@labre/affine-widget-edgeless-toolbar`, where the picker was first written,
|
|
192
|
+
* because that widget package depends on THIS one: importing it here would
|
|
193
|
+
* close a cycle, and the component package is below both.
|
|
194
|
+
*/
|
|
195
|
+
export function morphToolbarConfig(spec) {
|
|
196
|
+
return {
|
|
197
|
+
actions: [
|
|
198
|
+
{
|
|
199
|
+
// After a framework's own per-instance toggles (`a.` … `d.`), before
|
|
200
|
+
// `y.element-tags` and `z.validation`: WHICH artefact this is reads
|
|
201
|
+
// before how it is qualified, and both read before how hard it is
|
|
202
|
+
// checked.
|
|
203
|
+
//
|
|
204
|
+
// SCOPED by the declaring framework, because `renderToolbar` merges
|
|
205
|
+
// the actions of every module on a row BY ID — `groupBy(a => a.id)`,
|
|
206
|
+
// then a deep merge. One flavour can now carry several morph modules
|
|
207
|
+
// (a group is a C4 component and a Wardley component), and two entries
|
|
208
|
+
// both called `e.morph` would be merged into one whose `content` came
|
|
209
|
+
// from whichever was registered last: a single dropdown, silently
|
|
210
|
+
// answering for one framework and not the other. `e.morph.c4` and
|
|
211
|
+
// `e.morph.wardley` sort adjacently, in the same slot, and never
|
|
212
|
+
// collide. The TESTIDs stay `element-morph` / `element-morph-option`,
|
|
213
|
+
// because the row draws one of these at a time and the DOM handle is
|
|
214
|
+
// about the affordance, not about who declared it.
|
|
215
|
+
id: `e.morph.${spec.framework}`,
|
|
216
|
+
when: (ctx) => morphTarget(ctx, spec) !== null,
|
|
217
|
+
content(ctx) {
|
|
218
|
+
const target = morphTarget(ctx, spec);
|
|
219
|
+
if (!target)
|
|
220
|
+
return null;
|
|
221
|
+
// `testId` puts `element-morph` on the host and
|
|
222
|
+
// `element-morph-option` on each line. The host matters: the trigger
|
|
223
|
+
// is handed to `editor-menu-button` as a PROPERTY and rendered into
|
|
224
|
+
// its shadow root, so the host is the only handle the toolbar's own
|
|
225
|
+
// DOM offers.
|
|
226
|
+
return renderPickerMenu({
|
|
227
|
+
testId: 'element-morph',
|
|
228
|
+
label: wording(ctx, spec.label),
|
|
229
|
+
// The current kind's own icon on the closed button, exactly as the
|
|
230
|
+
// shape picker shows the current shape: the dropdown reads as a
|
|
231
|
+
// statement about the selection before it is opened.
|
|
232
|
+
icon: spec.iconOf(target.current),
|
|
233
|
+
items: target.family.map(kind => ({
|
|
234
|
+
key: wording(ctx, spec.labelOf(kind)),
|
|
235
|
+
value: kind,
|
|
236
|
+
icon: spec.iconOf(kind),
|
|
237
|
+
})),
|
|
238
|
+
currentValue: target.current,
|
|
239
|
+
onPick: (picked) => applyMorph(ctx, spec, picked),
|
|
240
|
+
});
|
|
241
|
+
},
|
|
242
|
+
},
|
|
243
|
+
],
|
|
244
|
+
// The whole module stands down unless the selection has something to morph,
|
|
245
|
+
// so a framework registering it pays one resolution per selection change.
|
|
246
|
+
when: (ctx) => morphTarget(ctx, spec) !== null,
|
|
247
|
+
};
|
|
248
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type ToolbarContext } from '../../affine-shared/services/index.js';
|
|
2
|
+
export declare const readingToolbarConfig: {
|
|
3
|
+
readonly actions: [{
|
|
4
|
+
readonly id: "y1.element-reading";
|
|
5
|
+
readonly when: (ctx: ToolbarContext) => boolean;
|
|
6
|
+
readonly generate: (ctx: ToolbarContext) => {
|
|
7
|
+
label: string;
|
|
8
|
+
icon: import("lit-html").TemplateResult<1>;
|
|
9
|
+
showLabel: true;
|
|
10
|
+
tooltip: string;
|
|
11
|
+
run: (runCtx: ToolbarContext) => void;
|
|
12
|
+
};
|
|
13
|
+
}];
|
|
14
|
+
};
|
|
15
|
+
export declare const readingToolbarExtension: import("../../store/index.js").ExtensionType;
|