@formicoidea/labre-core 0.40.0 → 0.42.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/LICENSE +384 -0
- package/dist/_pkgs/affine-block-attachment/attachment-block.js +7 -2
- package/dist/_pkgs/affine-block-attachment/components/rename-model.js +3 -2
- package/dist/_pkgs/affine-block-attachment/configs/slash-menu.js +7 -0
- package/dist/_pkgs/affine-block-attachment/configs/toolbar.js +11 -3
- package/dist/_pkgs/affine-block-attachment/configs/tooltips.js +4 -4
- package/dist/_pkgs/affine-block-attachment/translations.d.ts +49 -0
- package/dist/_pkgs/affine-block-attachment/translations.js +98 -0
- package/dist/_pkgs/affine-block-attachment/utils.js +9 -6
- package/dist/_pkgs/affine-block-bookmark/bookmark-block.js +2 -2
- package/dist/_pkgs/affine-block-bookmark/components/bookmark-card.js +13 -6
- package/dist/_pkgs/affine-block-bookmark/configs/slash-menu.js +6 -1
- package/dist/_pkgs/affine-block-bookmark/configs/toolbar.js +9 -1
- package/dist/_pkgs/affine-block-bookmark/configs/tooltips.js +2 -2
- package/dist/_pkgs/affine-block-bookmark/translations.d.ts +26 -0
- package/dist/_pkgs/affine-block-bookmark/translations.js +55 -0
- package/dist/_pkgs/affine-block-callout/configs/slash-menu.js +4 -0
- package/dist/_pkgs/affine-block-callout/configs/tooltips.js +2 -2
- package/dist/_pkgs/affine-block-callout/translations.d.ts +16 -0
- package/dist/_pkgs/affine-block-callout/translations.js +24 -0
- package/dist/_pkgs/affine-block-code/code-block.js +6 -3
- package/dist/_pkgs/affine-block-code/code-toolbar/components/code-toolbar.js +4 -2
- package/dist/_pkgs/affine-block-code/code-toolbar/components/lang-button.js +3 -2
- package/dist/_pkgs/affine-block-code/code-toolbar/components/preview-button.js +4 -3
- package/dist/_pkgs/affine-block-code/code-toolbar/config.js +116 -72
- package/dist/_pkgs/affine-block-code/translations.d.ts +30 -0
- package/dist/_pkgs/affine-block-code/translations.js +84 -0
- package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/config.js +9 -3
- package/dist/_pkgs/affine-block-embed/common/render-linked-doc.js +7 -6
- package/dist/_pkgs/affine-block-embed/configs/toolbar.js +11 -2
- package/dist/_pkgs/affine-block-embed/embed-figma-block/embed-figma-block.js +2 -1
- package/dist/_pkgs/affine-block-embed/embed-github-block/embed-github-block.js +2 -1
- package/dist/_pkgs/affine-block-embed/embed-html-block/components/fullscreen-toolbar.js +4 -3
- package/dist/_pkgs/affine-block-embed/embed-html-block/configs/toolbar.js +5 -1
- package/dist/_pkgs/affine-block-embed/embed-html-block/configs/tooltips.js +14 -14
- package/dist/_pkgs/affine-block-embed/embed-html-block/embed-html-block.js +7 -1
- package/dist/_pkgs/affine-block-embed/embed-iframe-block/components/embed-iframe-error-card.js +11 -4
- package/dist/_pkgs/affine-block-embed/embed-iframe-block/components/embed-iframe-idle-card.d.ts +2 -0
- package/dist/_pkgs/affine-block-embed/embed-iframe-block/components/embed-iframe-idle-card.js +13 -3
- package/dist/_pkgs/affine-block-embed/embed-iframe-block/components/embed-iframe-link-edit-popup.js +4 -2
- package/dist/_pkgs/affine-block-embed/embed-iframe-block/components/embed-iframe-link-input-base.js +8 -5
- package/dist/_pkgs/affine-block-embed/embed-iframe-block/components/embed-iframe-link-input-popup.js +21 -5
- package/dist/_pkgs/affine-block-embed/embed-iframe-block/components/embed-iframe-loading-card.js +4 -1
- package/dist/_pkgs/affine-block-embed/embed-iframe-block/configs/slash-menu/slash-menu.js +4 -0
- package/dist/_pkgs/affine-block-embed/embed-iframe-block/configs/toolbar.d.ts +2 -0
- package/dist/_pkgs/affine-block-embed/embed-iframe-block/configs/toolbar.js +6 -1
- package/dist/_pkgs/affine-block-embed/embed-iframe-block/consts.d.ts +2 -0
- package/dist/_pkgs/affine-block-embed/embed-iframe-block/consts.js +5 -0
- package/dist/_pkgs/affine-block-embed/embed-iframe-block/embed-iframe-block.d.ts +1 -0
- package/dist/_pkgs/affine-block-embed/embed-iframe-block/embed-iframe-block.js +33 -9
- package/dist/_pkgs/affine-block-embed/embed-iframe-block/utils.d.ts +8 -0
- package/dist/_pkgs/affine-block-embed/embed-iframe-block/utils.js +19 -0
- package/dist/_pkgs/affine-block-embed/embed-loom-block/embed-loom-block.js +2 -1
- package/dist/_pkgs/affine-block-embed/embed-youtube-block/embed-youtube-block.js +2 -1
- package/dist/_pkgs/affine-block-embed/translations.d.ts +46 -0
- package/dist/_pkgs/affine-block-embed/translations.js +114 -0
- package/dist/_pkgs/affine-block-embed-doc/embed-linked-doc-block/configs/slash-menu.js +7 -0
- package/dist/_pkgs/affine-block-embed-doc/embed-linked-doc-block/configs/toolbar.js +29 -12
- package/dist/_pkgs/affine-block-embed-doc/embed-linked-doc-block/configs/tooltips.js +4 -4
- package/dist/_pkgs/affine-block-embed-doc/embed-linked-doc-block/embed-linked-doc-block.js +10 -4
- package/dist/_pkgs/affine-block-embed-doc/embed-synced-doc-block/components/embed-synced-doc-card.js +8 -4
- package/dist/_pkgs/affine-block-embed-doc/embed-synced-doc-block/configs/toolbar.js +28 -13
- package/dist/_pkgs/affine-block-embed-doc/embed-synced-doc-block/embed-edgeless-synced-doc-block.js +3 -2
- package/dist/_pkgs/affine-block-embed-doc/embed-synced-doc-block/embed-synced-doc-block.js +3 -2
- package/dist/_pkgs/affine-block-embed-doc/translations.d.ts +40 -0
- package/dist/_pkgs/affine-block-embed-doc/translations.js +85 -0
- package/dist/_pkgs/affine-block-frame/edgeless-toolbar/frame-dense-menu.js +29 -22
- package/dist/_pkgs/affine-block-frame/edgeless-toolbar/frame-menu.js +5 -1
- package/dist/_pkgs/affine-block-frame/edgeless-toolbar/frame-tool-button.js +2 -1
- package/dist/_pkgs/affine-block-frame/edgeless-toolbar/presentation-toolbar.js +12 -9
- package/dist/_pkgs/affine-block-frame/frame-manager.js +8 -2
- package/dist/_pkgs/affine-block-frame/frame-tool.js +7 -2
- package/dist/_pkgs/affine-block-frame/frame-toolbar.js +18 -7
- package/dist/_pkgs/affine-block-frame/index.d.ts +1 -0
- package/dist/_pkgs/affine-block-frame/index.js +1 -0
- package/dist/_pkgs/affine-block-frame/present/frame-order-button.js +5 -1
- package/dist/_pkgs/affine-block-frame/present/navigator-setting-button.js +16 -6
- package/dist/_pkgs/affine-block-frame/present/present-button.js +3 -1
- package/dist/_pkgs/affine-block-frame/translations.d.ts +64 -0
- package/dist/_pkgs/affine-block-frame/translations.js +131 -0
- package/dist/_pkgs/affine-block-image/components/page-image-block.js +5 -2
- package/dist/_pkgs/affine-block-image/configs/slash-menu.js +4 -0
- package/dist/_pkgs/affine-block-image/configs/toolbar.js +7 -1
- package/dist/_pkgs/affine-block-image/configs/tooltips.js +1 -1
- package/dist/_pkgs/affine-block-image/image-block.js +3 -2
- package/dist/_pkgs/affine-block-image/image-edgeless-block.js +6 -3
- package/dist/_pkgs/affine-block-image/preview-image/page.js +5 -1
- package/dist/_pkgs/affine-block-image/translations.d.ts +35 -0
- package/dist/_pkgs/affine-block-image/translations.js +68 -0
- package/dist/_pkgs/affine-block-image/utils.js +9 -8
- package/dist/_pkgs/affine-block-latex/configs/slash-menu.d.ts +8 -0
- package/dist/_pkgs/affine-block-latex/configs/slash-menu.js +19 -3
- package/dist/_pkgs/affine-block-latex/latex-block.js +6 -2
- package/dist/_pkgs/affine-block-latex/translations.d.ts +35 -0
- package/dist/_pkgs/affine-block-latex/translations.js +60 -0
- package/dist/_pkgs/affine-block-list/list-keymap.js +7 -0
- package/dist/_pkgs/affine-block-note/components/edgeless-note-border-dropdown-menu.d.ts +9 -0
- package/dist/_pkgs/affine-block-note/components/edgeless-note-border-dropdown-menu.js +23 -6
- package/dist/_pkgs/affine-block-note/components/edgeless-note-display-mode-dropdown-menu.d.ts +4 -1
- package/dist/_pkgs/affine-block-note/components/edgeless-note-display-mode-dropdown-menu.js +26 -6
- package/dist/_pkgs/affine-block-note/components/edgeless-note-shadow-menu.d.ts +3 -0
- package/dist/_pkgs/affine-block-note/components/edgeless-note-shadow-menu.js +21 -10
- package/dist/_pkgs/affine-block-note/components/edgeless-note-style-panel.js +22 -8
- package/dist/_pkgs/affine-block-note/configs/slash-menu.js +13 -0
- package/dist/_pkgs/affine-block-note/configs/toolbar.js +26 -19
- package/dist/_pkgs/affine-block-note/configs/tooltips.js +57 -30
- package/dist/_pkgs/affine-block-note/move-block.js +8 -2
- package/dist/_pkgs/affine-block-note/note-keymap.js +7 -1
- package/dist/_pkgs/affine-block-note/translations.d.ts +91 -0
- package/dist/_pkgs/affine-block-note/translations.js +253 -0
- package/dist/_pkgs/affine-block-paragraph/paragraph-block.js +7 -2
- package/dist/_pkgs/affine-block-paragraph/paragraph-keymap.js +7 -1
- package/dist/_pkgs/affine-block-paragraph/translations.d.ts +31 -0
- package/dist/_pkgs/affine-block-paragraph/translations.js +44 -0
- package/dist/_pkgs/affine-block-paragraph/view.js +6 -1
- package/dist/_pkgs/affine-block-root/commands/pivot-commands.js +1 -8
- package/dist/_pkgs/affine-block-root/commands/tag-commands.js +1 -8
- package/dist/_pkgs/affine-block-root/configs/toolbar.d.ts +3 -1
- package/dist/_pkgs/affine-block-root/configs/toolbar.js +6 -3
- package/dist/_pkgs/affine-block-root/edgeless/clipboard/utils.js +1 -1
- package/dist/_pkgs/affine-block-root/edgeless/configs/toolbar/alignment.js +26 -4
- package/dist/_pkgs/affine-block-root/edgeless/configs/toolbar/misc.d.ts +14 -0
- package/dist/_pkgs/affine-block-root/edgeless/configs/toolbar/misc.js +10 -3
- package/dist/_pkgs/affine-block-root/edgeless/configs/toolbar/more.d.ts +8 -0
- package/dist/_pkgs/affine-block-root/edgeless/configs/toolbar/more.js +9 -0
- package/dist/_pkgs/affine-block-root/edgeless/edgeless-keyboard.d.ts +9 -0
- package/dist/_pkgs/affine-block-root/edgeless/edgeless-keyboard.js +66 -6
- package/dist/_pkgs/affine-block-root/edgeless/edgeless-root-block.d.ts +22 -0
- package/dist/_pkgs/affine-block-root/edgeless/edgeless-root-block.js +46 -0
- package/dist/_pkgs/affine-block-root/edgeless/utils/consts.d.ts +0 -1
- package/dist/_pkgs/affine-block-root/edgeless/utils/consts.js +0 -1
- package/dist/_pkgs/affine-block-root/edgeless/utils/pinch-zoom.d.ts +21 -0
- package/dist/_pkgs/affine-block-root/edgeless/utils/pinch-zoom.js +24 -0
- package/dist/_pkgs/affine-block-root/edgeless/utils/query.js +8 -0
- package/dist/_pkgs/affine-block-root/keyboard/keymap.js +1 -16
- package/dist/_pkgs/affine-block-root/translations.d.ts +61 -0
- package/dist/_pkgs/affine-block-root/translations.js +172 -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/export-manager/export-manager.js +3 -1
- package/dist/_pkgs/affine-block-surface/extensions/export-svg/command.d.ts +23 -0
- package/dist/_pkgs/affine-block-surface/extensions/export-svg/command.js +89 -0
- package/dist/_pkgs/affine-block-surface/extensions/export-svg/index.d.ts +7 -0
- package/dist/_pkgs/affine-block-surface/extensions/export-svg/index.js +5 -0
- package/dist/_pkgs/affine-block-surface/extensions/export-svg/render.d.ts +41 -0
- package/dist/_pkgs/affine-block-surface/extensions/export-svg/render.js +70 -0
- package/dist/_pkgs/affine-block-surface/extensions/export-svg/svg-context.d.ts +49 -0
- package/dist/_pkgs/affine-block-surface/extensions/export-svg/svg-context.js +257 -0
- package/dist/_pkgs/affine-block-surface/extensions/export-svg/tagged-path.d.ts +16 -0
- package/dist/_pkgs/affine-block-surface/extensions/export-svg/tagged-path.js +24 -0
- package/dist/_pkgs/affine-block-surface/extensions/export-svg/toolbar.d.ts +24 -0
- package/dist/_pkgs/affine-block-surface/extensions/export-svg/toolbar.js +66 -0
- package/dist/_pkgs/affine-block-surface/extensions/index.d.ts +5 -0
- package/dist/_pkgs/affine-block-surface/extensions/index.js +5 -0
- package/dist/_pkgs/affine-block-surface/extensions/interchange-import.d.ts +66 -4
- package/dist/_pkgs/affine-block-surface/extensions/interchange-import.js +272 -23
- package/dist/_pkgs/affine-block-surface/extensions/interchange.d.ts +58 -8
- package/dist/_pkgs/affine-block-surface/extensions/interchange.js +27 -0
- package/dist/_pkgs/affine-block-surface/extensions/legend-toolbar.d.ts +81 -0
- package/dist/_pkgs/affine-block-surface/extensions/legend-toolbar.js +81 -0
- package/dist/_pkgs/affine-block-surface/extensions/legend.d.ts +136 -0
- package/dist/_pkgs/affine-block-surface/extensions/legend.js +439 -0
- package/dist/_pkgs/affine-block-surface/extensions/morph-toolbar.d.ts +2 -2
- package/dist/_pkgs/affine-block-surface/extensions/morph-toolbar.js +5 -2
- package/dist/_pkgs/affine-block-surface/extensions/reading-widget.d.ts +17 -3
- package/dist/_pkgs/affine-block-surface/extensions/reading-widget.js +38 -15
- package/dist/_pkgs/affine-block-surface/extensions/reading.d.ts +61 -1
- package/dist/_pkgs/affine-block-surface/extensions/reading.js +85 -39
- package/dist/_pkgs/affine-block-surface/extensions/record-action.d.ts +66 -0
- package/dist/_pkgs/affine-block-surface/extensions/record-action.js +145 -0
- package/dist/_pkgs/affine-block-surface/extensions/svg-sketch-translations.d.ts +48 -0
- package/dist/_pkgs/affine-block-surface/extensions/svg-sketch-translations.js +120 -0
- package/dist/_pkgs/affine-block-surface/extensions/svg-sketch.js +36 -23
- package/dist/_pkgs/affine-block-surface/extensions/tags-toolbar.js +5 -5
- package/dist/_pkgs/affine-block-surface/extensions/validation.d.ts +253 -28
- package/dist/_pkgs/affine-block-surface/extensions/validation.js +489 -41
- package/dist/_pkgs/affine-block-surface/framework-background/background-view.d.ts +115 -0
- package/dist/_pkgs/affine-block-surface/framework-background/background-view.js +185 -0
- package/dist/_pkgs/affine-block-surface/framework-background/index.d.ts +1 -0
- package/dist/_pkgs/affine-block-surface/framework-background/index.js +1 -0
- package/dist/_pkgs/affine-block-surface/framework-background/labels.d.ts +16 -1
- package/dist/_pkgs/affine-block-surface/framework-background/labels.js +31 -21
- package/dist/_pkgs/affine-block-surface/framework-background/renderer.js +29 -5
- package/dist/_pkgs/affine-block-surface/framework-background/stacking.d.ts +6 -4
- package/dist/_pkgs/affine-block-surface/framework-background/stacking.js +56 -8
- package/dist/_pkgs/affine-block-surface/renderer/canvas-renderer.d.ts +12 -0
- package/dist/_pkgs/affine-block-surface/renderer/canvas-renderer.js +15 -0
- package/dist/_pkgs/affine-block-surface/view.js +8 -1
- package/dist/_pkgs/affine-block-surface-ref/components/placeholder.d.ts +2 -1
- package/dist/_pkgs/affine-block-surface-ref/components/placeholder.js +21 -6
- package/dist/_pkgs/affine-block-surface-ref/configs/slash-menu.js +24 -7
- package/dist/_pkgs/affine-block-surface-ref/configs/tooltips.js +2 -2
- package/dist/_pkgs/affine-block-surface-ref/index.d.ts +1 -0
- package/dist/_pkgs/affine-block-surface-ref/index.js +1 -0
- package/dist/_pkgs/affine-block-surface-ref/surface-ref-block-edgeless.js +1 -0
- package/dist/_pkgs/affine-block-surface-ref/surface-ref-block.js +1 -0
- package/dist/_pkgs/affine-block-surface-ref/translations.d.ts +83 -0
- package/dist/_pkgs/affine-block-surface-ref/translations.js +175 -0
- package/dist/_pkgs/affine-block-surface-ref/utils.d.ts +8 -1
- package/dist/_pkgs/affine-block-surface-ref/utils.js +12 -4
- package/dist/_pkgs/affine-components/caption/block-caption.js +3 -1
- package/dist/_pkgs/affine-components/card-style-dropdown-menu/dropdown-menu.js +4 -3
- package/dist/_pkgs/affine-components/citation/citation.d.ts +2 -0
- package/dist/_pkgs/affine-components/citation/citation.js +19 -3
- package/dist/_pkgs/affine-components/color-picker/button.d.ts +62 -1
- package/dist/_pkgs/affine-components/color-picker/button.js +182 -23
- package/dist/_pkgs/affine-components/color-picker/color-panel.d.ts +8 -0
- package/dist/_pkgs/affine-components/color-picker/color-panel.js +17 -2
- package/dist/_pkgs/affine-components/color-picker/color-picker.d.ts +4 -0
- package/dist/_pkgs/affine-components/color-picker/color-picker.js +27 -3
- package/dist/_pkgs/affine-components/color-picker/framework-palette.d.ts +106 -0
- package/dist/_pkgs/affine-components/color-picker/framework-palette.js +177 -0
- package/dist/_pkgs/affine-components/color-picker/index.d.ts +2 -0
- package/dist/_pkgs/affine-components/color-picker/index.js +2 -0
- package/dist/_pkgs/affine-components/color-picker/palette-carousel.d.ts +85 -0
- package/dist/_pkgs/affine-components/color-picker/palette-carousel.js +440 -0
- package/dist/_pkgs/affine-components/color-picker/types.d.ts +21 -0
- package/dist/_pkgs/affine-components/color-picker/utils.d.ts +28 -2
- package/dist/_pkgs/affine-components/color-picker/utils.js +32 -0
- package/dist/_pkgs/affine-components/context-menu/menu-renderer.d.ts +3 -0
- package/dist/_pkgs/affine-components/context-menu/menu-renderer.js +34 -7
- package/dist/_pkgs/affine-components/edgeless-line-styles-panel/line-styles-panel.d.ts +2 -0
- package/dist/_pkgs/affine-components/edgeless-line-styles-panel/line-styles-panel.js +21 -2
- package/dist/_pkgs/affine-components/edgeless-line-width-panel/line-width-panel.d.ts +2 -0
- package/dist/_pkgs/affine-components/edgeless-line-width-panel/line-width-panel.js +18 -2
- package/dist/_pkgs/affine-components/edgeless-shape-color-picker/color-picker.d.ts +33 -1
- package/dist/_pkgs/affine-components/edgeless-shape-color-picker/color-picker.js +211 -56
- package/dist/_pkgs/affine-components/embed-card-modal/embed-card-create-modal.js +5 -4
- package/dist/_pkgs/affine-components/embed-card-modal/embed-card-edit-modal.js +11 -9
- package/dist/_pkgs/affine-components/filterable-list/index.d.ts +2 -0
- package/dist/_pkgs/affine-components/filterable-list/index.js +17 -2
- package/dist/_pkgs/affine-components/highlight-dropdown-menu/dropdown-menu.d.ts +3 -0
- package/dist/_pkgs/affine-components/highlight-dropdown-menu/dropdown-menu.js +40 -7
- package/dist/_pkgs/affine-components/icon-button/index.d.ts +1 -1
- package/dist/_pkgs/affine-components/icon-button/index.js +1 -1
- package/dist/_pkgs/affine-components/icon-picker/affine-icon-picker-panel.d.ts +6 -0
- package/dist/_pkgs/affine-components/icon-picker/affine-icon-picker-panel.js +42 -7
- package/dist/_pkgs/affine-components/icon-picker/emoji-picker-panel.d.ts +4 -0
- package/dist/_pkgs/affine-components/icon-picker/emoji-picker-panel.js +35 -5
- package/dist/_pkgs/affine-components/icon-picker/icon-picker.d.ts +2 -0
- package/dist/_pkgs/affine-components/icon-picker/icon-picker.js +22 -5
- package/dist/_pkgs/affine-components/linked-doc-title/doc-title.d.ts +2 -0
- package/dist/_pkgs/affine-components/linked-doc-title/doc-title.js +16 -3
- package/dist/_pkgs/affine-components/notification/linked-doc.js +5 -4
- package/dist/_pkgs/affine-components/open-doc-dropdown-menu/dropdown-menu.js +7 -4
- package/dist/_pkgs/affine-components/resource/resource.d.ts +16 -1
- package/dist/_pkgs/affine-components/resource/resource.js +48 -20
- package/dist/_pkgs/affine-components/resource/status.d.ts +2 -0
- package/dist/_pkgs/affine-components/resource/status.js +27 -12
- package/dist/_pkgs/affine-components/size-dropdown-menu/dropdown-menu.d.ts +4 -1
- package/dist/_pkgs/affine-components/size-dropdown-menu/dropdown-menu.js +23 -4
- package/dist/_pkgs/affine-components/toast/toast.d.ts +1 -1
- package/dist/_pkgs/affine-components/toast/toast.js +1 -1
- package/dist/_pkgs/affine-components/toggle-button/toggle-button.d.ts +3 -0
- package/dist/_pkgs/affine-components/toggle-button/toggle-button.js +18 -3
- package/dist/_pkgs/affine-components/toolbar/icon-button.d.ts +2 -0
- package/dist/_pkgs/affine-components/toolbar/icon-button.js +18 -2
- package/dist/_pkgs/affine-components/toolbar/tooltip.d.ts +3 -3
- package/dist/_pkgs/affine-components/toolbar/tooltip.js +3 -3
- package/dist/_pkgs/affine-components/translations.d.ts +149 -0
- package/dist/_pkgs/affine-components/translations.js +495 -0
- package/dist/_pkgs/affine-foundation/view.js +2 -1
- package/dist/_pkgs/affine-fragment-adapter-panel/adapter-panel.d.ts +3 -0
- package/dist/_pkgs/affine-fragment-adapter-panel/adapter-panel.js +12 -1
- package/dist/_pkgs/affine-fragment-adapter-panel/body/adapter-panel-body.js +4 -3
- package/dist/_pkgs/affine-fragment-adapter-panel/config.d.ts +13 -0
- package/dist/_pkgs/affine-fragment-adapter-panel/config.js +18 -4
- package/dist/_pkgs/affine-fragment-adapter-panel/header/adapter-menu.js +2 -2
- package/dist/_pkgs/affine-fragment-adapter-panel/header/adapter-panel-header.js +2 -2
- package/dist/_pkgs/affine-fragment-adapter-panel/translations.d.ts +24 -0
- package/dist/_pkgs/affine-fragment-adapter-panel/translations.js +37 -0
- package/dist/_pkgs/affine-fragment-doc-title/doc-title.d.ts +1 -0
- package/dist/_pkgs/affine-fragment-doc-title/doc-title.js +9 -1
- package/dist/_pkgs/affine-fragment-doc-title/translations.d.ts +13 -0
- package/dist/_pkgs/affine-fragment-doc-title/translations.js +17 -0
- package/dist/_pkgs/affine-fragment-frame-panel/body/frame-panel-body.js +3 -2
- package/dist/_pkgs/affine-fragment-frame-panel/header/frame-panel-header.js +10 -4
- package/dist/_pkgs/affine-fragment-frame-panel/header/frames-setting-menu.js +18 -6
- package/dist/_pkgs/affine-fragment-frame-panel/translations.d.ts +16 -0
- package/dist/_pkgs/affine-fragment-frame-panel/translations.js +44 -0
- package/dist/_pkgs/affine-fragment-outline/body/outline-notice.js +10 -4
- package/dist/_pkgs/affine-fragment-outline/body/outline-panel-body.js +6 -3
- package/dist/_pkgs/affine-fragment-outline/card/outline-card.js +13 -6
- package/dist/_pkgs/affine-fragment-outline/card/outline-preview.d.ts +1 -0
- package/dist/_pkgs/affine-fragment-outline/card/outline-preview.js +16 -9
- package/dist/_pkgs/affine-fragment-outline/config.d.ts +1 -20
- package/dist/_pkgs/affine-fragment-outline/config.js +8 -23
- package/dist/_pkgs/affine-fragment-outline/header/outline-panel-header.js +10 -3
- package/dist/_pkgs/affine-fragment-outline/header/outline-setting-menu.js +9 -2
- package/dist/_pkgs/affine-fragment-outline/outline-viewer.js +6 -3
- package/dist/_pkgs/affine-fragment-outline/translations.d.ts +54 -0
- package/dist/_pkgs/affine-fragment-outline/translations.js +110 -0
- package/dist/_pkgs/affine-gfx-brush/element-renderer.js +2 -2
- package/dist/_pkgs/affine-gfx-brush/toolbar/components/eraser/eraser-tool-button.js +3 -2
- package/dist/_pkgs/affine-gfx-brush/toolbar/components/pen/consts.d.ts +3 -0
- package/dist/_pkgs/affine-gfx-brush/toolbar/components/pen/consts.js +3 -0
- package/dist/_pkgs/affine-gfx-brush/toolbar/components/pen/pen-menu.js +5 -4
- package/dist/_pkgs/affine-gfx-brush/toolbar/components/pen/pen-tool-button.js +3 -2
- package/dist/_pkgs/affine-gfx-brush/toolbar/configs/brush.js +10 -3
- package/dist/_pkgs/affine-gfx-brush/toolbar/configs/highlighter.js +10 -3
- package/dist/_pkgs/affine-gfx-brush/translations.d.ts +17 -0
- package/dist/_pkgs/affine-gfx-brush/translations.js +30 -0
- package/dist/_pkgs/affine-gfx-connector/connector-manager.d.ts +9 -1
- package/dist/_pkgs/affine-gfx-connector/connector-manager.js +61 -0
- package/dist/_pkgs/affine-gfx-connector/direction/invert-direction.d.ts +8 -1
- package/dist/_pkgs/affine-gfx-connector/direction/invert-direction.js +7 -1
- package/dist/_pkgs/affine-gfx-connector/element-renderer/connector-dom/index.d.ts +7 -1
- package/dist/_pkgs/affine-gfx-connector/element-renderer/connector-dom/index.js +87 -17
- package/dist/_pkgs/affine-gfx-connector/element-renderer/index.js +78 -17
- package/dist/_pkgs/affine-gfx-connector/element-renderer/utils.d.ts +24 -2
- package/dist/_pkgs/affine-gfx-connector/element-renderer/utils.js +31 -8
- package/dist/_pkgs/affine-gfx-connector/text/edgeless-connector-label-editor.d.ts +124 -3
- package/dist/_pkgs/affine-gfx-connector/text/edgeless-connector-label-editor.js +219 -56
- package/dist/_pkgs/affine-gfx-connector/text/text.d.ts +13 -4
- package/dist/_pkgs/affine-gfx-connector/text/text.js +13 -44
- package/dist/_pkgs/affine-gfx-connector/toolbar/config.d.ts +60 -1
- package/dist/_pkgs/affine-gfx-connector/toolbar/config.js +95 -13
- package/dist/_pkgs/affine-gfx-connector/toolbar/connector-dense-menu.js +7 -5
- package/dist/_pkgs/affine-gfx-connector/toolbar/connector-menu.js +8 -6
- package/dist/_pkgs/affine-gfx-connector/toolbar/connector-tool-button.js +4 -3
- package/dist/_pkgs/affine-gfx-connector/toolbar/hollow-endpoint-icons.d.ts +8 -0
- package/dist/_pkgs/affine-gfx-connector/toolbar/hollow-endpoint-icons.js +118 -0
- package/dist/_pkgs/affine-gfx-connector/translations.d.ts +32 -0
- package/dist/_pkgs/affine-gfx-connector/translations.js +79 -0
- package/dist/_pkgs/affine-gfx-connector/view/view.d.ts +37 -1
- package/dist/_pkgs/affine-gfx-connector/view/view.js +97 -8
- package/dist/_pkgs/affine-gfx-group/command/group-api.js +6 -1
- package/dist/_pkgs/affine-gfx-group/index.d.ts +1 -0
- package/dist/_pkgs/affine-gfx-group/index.js +1 -0
- package/dist/_pkgs/affine-gfx-group/store.js +0 -2
- package/dist/_pkgs/affine-gfx-group/toolbar/config.d.ts +6 -2
- package/dist/_pkgs/affine-gfx-group/toolbar/config.js +9 -4
- package/dist/_pkgs/affine-gfx-group/translations.d.ts +23 -0
- package/dist/_pkgs/affine-gfx-group/translations.js +29 -0
- package/dist/_pkgs/affine-gfx-link/toolbar/undo-dense-menu.js +2 -1
- package/dist/_pkgs/affine-gfx-link/toolbar/undo-tool-button.js +2 -1
- package/dist/_pkgs/affine-gfx-mindmap/index.d.ts +1 -0
- package/dist/_pkgs/affine-gfx-mindmap/index.js +1 -0
- package/dist/_pkgs/affine-gfx-mindmap/templates/index.js +628 -577
- package/dist/_pkgs/affine-gfx-mindmap/toolbar/basket-elements.js +7 -3
- package/dist/_pkgs/affine-gfx-mindmap/toolbar/config.js +9 -1
- package/dist/_pkgs/affine-gfx-mindmap/toolbar/mindmap-importing-placeholder.d.ts +4 -0
- package/dist/_pkgs/affine-gfx-mindmap/toolbar/mindmap-importing-placeholder.js +70 -7
- package/dist/_pkgs/affine-gfx-mindmap/toolbar/mindmap-menu.js +8 -5
- package/dist/_pkgs/affine-gfx-mindmap/toolbar/mindmap-tool-button.js +4 -2
- package/dist/_pkgs/affine-gfx-mindmap/toolbar/senior-tool.js +7 -2
- package/dist/_pkgs/affine-gfx-mindmap/toolbar/utils/import-mindmap.d.ts +2 -1
- package/dist/_pkgs/affine-gfx-mindmap/toolbar/utils/import-mindmap.js +16 -8
- package/dist/_pkgs/affine-gfx-mindmap/translations.d.ts +84 -0
- package/dist/_pkgs/affine-gfx-mindmap/translations.js +171 -0
- package/dist/_pkgs/affine-gfx-note/components/note-display-mode-panel.d.ts +8 -0
- package/dist/_pkgs/affine-gfx-note/components/note-display-mode-panel.js +24 -9
- package/dist/_pkgs/affine-gfx-note/components/note-shadow-panel.d.ts +9 -0
- package/dist/_pkgs/affine-gfx-note/components/note-shadow-panel.js +28 -8
- package/dist/_pkgs/affine-gfx-note/toolbar/note-menu-config.d.ts +2 -1
- package/dist/_pkgs/affine-gfx-note/toolbar/note-menu-config.js +42 -73
- package/dist/_pkgs/affine-gfx-note/toolbar/note-menu.js +21 -17
- package/dist/_pkgs/affine-gfx-note/toolbar/note-senior-button.js +3 -2
- package/dist/_pkgs/affine-gfx-note/toolbar/note-tool-button.js +3 -1
- package/dist/_pkgs/affine-gfx-note/toolbar/senior-tool.js +3 -1
- package/dist/_pkgs/affine-gfx-note/translations.d.ts +27 -0
- package/dist/_pkgs/affine-gfx-note/translations.js +59 -0
- package/dist/_pkgs/affine-gfx-pointer/quick-tool/default-tool-button.js +10 -2
- package/dist/_pkgs/affine-gfx-pointer/translations.d.ts +9 -0
- package/dist/_pkgs/affine-gfx-pointer/translations.js +17 -0
- package/dist/_pkgs/affine-gfx-shape/components/shape-panel.d.ts +4 -0
- package/dist/_pkgs/affine-gfx-shape/components/shape-panel.js +17 -3
- package/dist/_pkgs/affine-gfx-shape/components/shape-style-panel.d.ts +4 -0
- package/dist/_pkgs/affine-gfx-shape/components/shape-style-panel.js +23 -5
- package/dist/_pkgs/affine-gfx-shape/draggable/shape-menu.d.ts +0 -1
- package/dist/_pkgs/affine-gfx-shape/draggable/shape-menu.js +6 -46
- package/dist/_pkgs/affine-gfx-shape/draggable/shape-tool-button.js +3 -1
- package/dist/_pkgs/affine-gfx-shape/element-renderer/highlighter.js +2 -2
- package/dist/_pkgs/affine-gfx-shape/overlay/polygon-drawing-overlay.d.ts +6 -0
- package/dist/_pkgs/affine-gfx-shape/overlay/polygon-drawing-overlay.js +30 -1
- package/dist/_pkgs/affine-gfx-shape/polygon-tool.d.ts +20 -1
- package/dist/_pkgs/affine-gfx-shape/polygon-tool.js +9 -1
- package/dist/_pkgs/affine-gfx-shape/toolbar/config.d.ts +2 -0
- package/dist/_pkgs/affine-gfx-shape/toolbar/config.js +35 -9
- package/dist/_pkgs/affine-gfx-shape/toolbar/palette-color-action.js +11 -1
- package/dist/_pkgs/affine-gfx-shape/toolbar/senior-tool.js +2 -0
- package/dist/_pkgs/affine-gfx-shape/toolbar/shape-menu-config.d.ts +3 -0
- package/dist/_pkgs/affine-gfx-shape/toolbar/shape-menu-config.js +7 -0
- package/dist/_pkgs/affine-gfx-shape/translations.d.ts +37 -0
- package/dist/_pkgs/affine-gfx-shape/translations.js +93 -0
- package/dist/_pkgs/affine-gfx-template/builtin/other.js +70 -42
- package/dist/_pkgs/affine-gfx-template/contribute.js +8 -1
- package/dist/_pkgs/affine-gfx-template/index.d.ts +2 -0
- package/dist/_pkgs/affine-gfx-template/index.js +2 -0
- package/dist/_pkgs/affine-gfx-template/snapshot-from-action.d.ts +6 -1
- package/dist/_pkgs/affine-gfx-template/snapshot-from-action.js +43 -120
- package/dist/_pkgs/affine-gfx-template/toolbar/builtin-templates.d.ts +1 -0
- package/dist/_pkgs/affine-gfx-template/toolbar/builtin-templates.js +12 -0
- package/dist/_pkgs/affine-gfx-template/toolbar/resolve-name.d.ts +25 -0
- package/dist/_pkgs/affine-gfx-template/toolbar/resolve-name.js +36 -0
- package/dist/_pkgs/affine-gfx-template/toolbar/senior-tool.js +3 -1
- package/dist/_pkgs/affine-gfx-template/toolbar/template-panel.d.ts +1 -0
- package/dist/_pkgs/affine-gfx-template/toolbar/template-panel.js +30 -8
- package/dist/_pkgs/affine-gfx-template/toolbar/template-type.d.ts +41 -0
- package/dist/_pkgs/affine-gfx-template/translations.d.ts +71 -0
- package/dist/_pkgs/affine-gfx-template/translations.js +209 -0
- package/dist/_pkgs/affine-gfx-text/dblclick-add-edgeless-text.d.ts +13 -1
- package/dist/_pkgs/affine-gfx-text/dblclick-add-edgeless-text.js +19 -4
- package/dist/_pkgs/affine-gfx-text/edgeless-text-editor.d.ts +41 -0
- package/dist/_pkgs/affine-gfx-text/edgeless-text-editor.js +60 -4
- package/dist/_pkgs/affine-gfx-text/toolbar/actions.d.ts +9 -2
- package/dist/_pkgs/affine-gfx-text/toolbar/actions.js +33 -10
- package/dist/_pkgs/affine-gfx-text/toolbar/text-menu.js +1 -0
- package/dist/_pkgs/affine-gfx-text/translations.d.ts +32 -0
- package/dist/_pkgs/affine-gfx-text/translations.js +65 -0
- package/dist/_pkgs/affine-inline-footnote/footnote-node/footnote-popup.js +8 -2
- package/dist/_pkgs/affine-inline-latex/latex-node/latex-editor-menu.js +5 -2
- package/dist/_pkgs/affine-inline-latex/latex-node/latex-node.js +7 -2
- package/dist/_pkgs/affine-inline-latex/translations.d.ts +13 -0
- package/dist/_pkgs/affine-inline-latex/translations.js +16 -0
- package/dist/_pkgs/affine-inline-link/link-node/configs/toolbar.d.ts +3 -3
- package/dist/_pkgs/affine-inline-link/link-node/configs/toolbar.js +6 -5
- package/dist/_pkgs/affine-inline-link/link-node/link-popup/link-popup.js +11 -5
- package/dist/_pkgs/affine-inline-link/translations.d.ts +23 -0
- package/dist/_pkgs/affine-inline-link/translations.js +44 -0
- package/dist/_pkgs/affine-inline-mention/affine-mention.js +11 -5
- package/dist/_pkgs/affine-inline-mention/translations.d.ts +16 -0
- package/dist/_pkgs/affine-inline-mention/translations.js +29 -0
- package/dist/_pkgs/affine-inline-preset/command/config.d.ts +3 -0
- package/dist/_pkgs/affine-inline-preset/command/config.js +8 -0
- package/dist/_pkgs/affine-inline-preset/markdown.js +5 -1
- package/dist/_pkgs/affine-inline-preset/translations.d.ts +25 -0
- package/dist/_pkgs/affine-inline-preset/translations.js +28 -0
- package/dist/_pkgs/affine-inline-reference/reference-node/configs/toolbar.js +2 -2
- package/dist/_pkgs/affine-inline-reference/reference-node/reference-node.js +3 -3
- package/dist/_pkgs/affine-inline-reference/reference-node/reference-popup/reference-popup.js +8 -6
- package/dist/_pkgs/affine-inline-reference/translations.d.ts +8 -0
- package/dist/_pkgs/affine-inline-reference/translations.js +13 -0
- package/dist/_pkgs/affine-model/consts/connector.d.ts +28 -2
- package/dist/_pkgs/affine-model/consts/connector.js +26 -0
- package/dist/_pkgs/affine-model/elements/bpmn/pool.js +1 -1
- package/dist/_pkgs/affine-model/elements/brush/brush.js +1 -1
- package/dist/_pkgs/affine-model/elements/c4/board.js +1 -1
- package/dist/_pkgs/affine-model/elements/c4/boundary.js +1 -1
- package/dist/_pkgs/affine-model/elements/connector/connector.d.ts +135 -0
- package/dist/_pkgs/affine-model/elements/connector/connector.js +246 -5
- package/dist/_pkgs/affine-model/elements/connector/end-label.d.ts +83 -0
- package/dist/_pkgs/affine-model/elements/connector/end-label.js +119 -0
- package/dist/_pkgs/affine-model/elements/connector/index.d.ts +1 -0
- package/dist/_pkgs/affine-model/elements/connector/index.js +1 -0
- package/dist/_pkgs/affine-model/elements/context-map/context-map.js +1 -1
- package/dist/_pkgs/affine-model/elements/core-domain/core-domain.d.ts +28 -0
- package/dist/_pkgs/affine-model/elements/core-domain/core-domain.js +129 -2
- package/dist/_pkgs/affine-model/elements/cynefin/cynefin.d.ts +8 -0
- package/dist/_pkgs/affine-model/elements/cynefin/cynefin.js +45 -2
- package/dist/_pkgs/affine-model/elements/edgy/board.js +1 -1
- package/dist/_pkgs/affine-model/elements/edgy/facets.js +1 -1
- package/dist/_pkgs/affine-model/elements/estuarine/estuarine.d.ts +6 -0
- package/dist/_pkgs/affine-model/elements/estuarine/estuarine.js +36 -2
- package/dist/_pkgs/affine-model/elements/event-storming/event-storming.d.ts +18 -7
- package/dist/_pkgs/affine-model/elements/event-storming/event-storming.js +23 -8
- package/dist/_pkgs/affine-model/elements/framework-background/background.d.ts +16 -0
- package/dist/_pkgs/affine-model/elements/framework-background/background.js +18 -0
- package/dist/_pkgs/affine-model/elements/highlighter/highlighter.js +1 -1
- package/dist/_pkgs/affine-model/elements/index.d.ts +8 -0
- package/dist/_pkgs/affine-model/elements/index.js +1 -0
- package/dist/_pkgs/affine-model/elements/shape/shape.js +1 -1
- package/dist/_pkgs/affine-model/elements/text/text.js +1 -1
- package/dist/_pkgs/affine-model/elements/uml/band.d.ts +39 -0
- package/dist/_pkgs/affine-model/elements/uml/band.js +31 -0
- package/dist/_pkgs/affine-model/elements/uml/diagram.d.ts +158 -0
- package/dist/_pkgs/affine-model/elements/uml/diagram.js +229 -0
- package/dist/_pkgs/affine-model/elements/uml/fragment.d.ts +161 -0
- package/dist/_pkgs/affine-model/elements/uml/fragment.js +205 -0
- package/dist/_pkgs/affine-model/elements/uml/index.d.ts +8 -0
- package/dist/_pkgs/affine-model/elements/uml/index.js +8 -0
- package/dist/_pkgs/affine-model/elements/uml/lifeline.d.ts +77 -0
- package/dist/_pkgs/affine-model/elements/uml/lifeline.js +89 -0
- package/dist/_pkgs/affine-model/elements/uml/node.d.ts +142 -0
- package/dist/_pkgs/affine-model/elements/uml/node.js +190 -0
- package/dist/_pkgs/affine-model/elements/uml/partition.d.ts +106 -0
- package/dist/_pkgs/affine-model/elements/uml/partition.js +172 -0
- package/dist/_pkgs/affine-model/elements/uml/region.d.ts +75 -0
- package/dist/_pkgs/affine-model/elements/uml/region.js +150 -0
- package/dist/_pkgs/affine-model/elements/uml/subject.d.ts +37 -0
- package/dist/_pkgs/affine-model/elements/uml/subject.js +108 -0
- package/dist/_pkgs/affine-model/elements/wardley/wardley.js +1 -1
- package/dist/_pkgs/affine-rich-text/conversion.d.ts +13 -0
- package/dist/_pkgs/affine-rich-text/conversion.js +27 -0
- package/dist/_pkgs/affine-shared/adapters/clipboard/clipboard.js +1 -1
- package/dist/_pkgs/affine-shared/adapters/clipboard/utils.d.ts +2 -1
- package/dist/_pkgs/affine-shared/adapters/clipboard/utils.js +6 -3
- package/dist/_pkgs/affine-shared/adapters/markdown/markdown.js +5 -2
- package/dist/_pkgs/affine-shared/adapters/mix-text.js +5 -2
- package/dist/_pkgs/affine-shared/adapters/plain-text/plain-text.js +5 -2
- 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/adapters/utils/wording.d.ts +9 -0
- package/dist/_pkgs/affine-shared/adapters/utils/wording.js +12 -0
- package/dist/_pkgs/affine-shared/services/comment-service/utils.js +2 -0
- package/dist/_pkgs/affine-shared/services/doc-display-meta-service.js +6 -3
- package/dist/_pkgs/affine-shared/services/embed-iframe/embed-iframe-config.d.ts +1 -0
- package/dist/_pkgs/affine-shared/services/font-loader/config.d.ts +7 -0
- package/dist/_pkgs/affine-shared/services/font-loader/config.js +43 -0
- package/dist/_pkgs/affine-shared/services/notification-service.js +18 -1
- package/dist/_pkgs/affine-shared/services/open-doc-config.d.ts +0 -1
- package/dist/_pkgs/affine-shared/services/open-doc-config.js +0 -2
- package/dist/_pkgs/affine-shared/services/pivot-materiality-publisher.js +1 -9
- package/dist/_pkgs/affine-shared/services/telemetry-service/document-damage-watcher.d.ts +53 -0
- package/dist/_pkgs/affine-shared/services/telemetry-service/document-damage-watcher.js +95 -0
- package/dist/_pkgs/affine-shared/services/telemetry-service/index.d.ts +1 -0
- package/dist/_pkgs/affine-shared/services/telemetry-service/index.js +1 -0
- package/dist/_pkgs/affine-shared/services/telemetry-service/lifecycle.d.ts +26 -1
- package/dist/_pkgs/affine-shared/services/telemetry-service/telemetry-service.d.ts +2 -2
- package/dist/_pkgs/affine-shared/services/toolbar-service/command-action.d.ts +34 -0
- package/dist/_pkgs/affine-shared/services/toolbar-service/command-action.js +63 -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/translation-service/chrome.d.ts +432 -0
- package/dist/_pkgs/affine-shared/services/translation-service/chrome.js +1045 -3
- package/dist/_pkgs/affine-shared/services/translation-service/index.d.ts +40 -2
- package/dist/_pkgs/affine-shared/services/translation-service/index.js +44 -3
- package/dist/_pkgs/affine-shared/services/universe-tag-defs-service.d.ts +83 -2
- package/dist/_pkgs/affine-shared/services/universe-tag-defs-service.js +92 -0
- package/dist/_pkgs/affine-shared/styles/index.d.ts +1 -0
- package/dist/_pkgs/affine-shared/styles/index.js +1 -0
- package/dist/_pkgs/affine-shared/styles/motion.d.ts +14 -0
- package/dist/_pkgs/affine-shared/styles/motion.js +38 -0
- package/dist/_pkgs/affine-shared/utils/event.d.ts +10 -0
- package/dist/_pkgs/affine-shared/utils/event.js +20 -0
- package/dist/_pkgs/affine-shared/utils/file/filesys.d.ts +16 -0
- package/dist/_pkgs/affine-shared/utils/file/filesys.js +25 -0
- package/dist/_pkgs/affine-shared/utils/index.d.ts +1 -0
- package/dist/_pkgs/affine-shared/utils/index.js +1 -0
- package/dist/_pkgs/affine-shared/utils/link-preview-refresh.d.ts +12 -0
- package/dist/_pkgs/affine-shared/utils/link-preview-refresh.js +13 -0
- package/dist/_pkgs/affine-widget-drag-handle/components/edgeless-preview/preview.d.ts +4 -0
- package/dist/_pkgs/affine-widget-drag-handle/components/edgeless-preview/preview.js +21 -8
- package/dist/_pkgs/affine-widget-drag-handle/helpers/preview-helper.js +1 -0
- package/dist/_pkgs/affine-widget-drag-handle/translations.d.ts +14 -0
- package/dist/_pkgs/affine-widget-drag-handle/translations.js +35 -0
- package/dist/_pkgs/affine-widget-edgeless-auto-connect/index.js +4 -3
- package/dist/_pkgs/affine-widget-edgeless-auto-connect/translations.d.ts +6 -0
- package/dist/_pkgs/affine-widget-edgeless-auto-connect/translations.js +14 -0
- package/dist/_pkgs/affine-widget-edgeless-selected-rect/auto-complete-panel.js +8 -5
- package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-auto-complete.js +3 -2
- package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-element-link.js +3 -1
- package/dist/_pkgs/affine-widget-edgeless-selected-rect/translations.d.ts +17 -0
- package/dist/_pkgs/affine-widget-edgeless-selected-rect/translations.js +30 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/button/tool-icon-button.d.ts +4 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/button/tool-icon-button.js +18 -2
- package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/artefact-catalogue-widget.d.ts +12 -4
- package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/artefact-catalogue-widget.js +29 -6
- package/dist/_pkgs/affine-widget-edgeless-toolbar/config/consts.d.ts +2 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/config/consts.js +3 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/config/types.d.ts +18 -1
- package/dist/_pkgs/affine-widget-edgeless-toolbar/config/utils.d.ts +8 -3
- package/dist/_pkgs/affine-widget-edgeless-toolbar/config/utils.js +38 -18
- package/dist/_pkgs/affine-widget-edgeless-toolbar/create-popper.js +13 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/edgeless-toolbar.js +2 -1
- package/dist/_pkgs/affine-widget-edgeless-toolbar/index.d.ts +2 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/index.js +2 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/menu/command-menu.d.ts +80 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/menu/command-menu.js +270 -81
- package/dist/_pkgs/affine-widget-edgeless-toolbar/menu/senior-menu-selection.d.ts +15 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/menu/senior-menu-selection.js +15 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/panel/font-weight-and-style-panel.d.ts +8 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/panel/font-weight-and-style-panel.js +38 -8
- package/dist/_pkgs/affine-widget-edgeless-toolbar/placement/artefact-ghost-overlay.d.ts +42 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/placement/artefact-ghost-overlay.js +100 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/placement/artefact-placement-tool.d.ts +100 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/placement/artefact-placement-tool.js +274 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/placement/index.d.ts +3 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/placement/index.js +3 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/placement/translate-created.d.ts +25 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/placement/translate-created.js +67 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/translations.d.ts +15 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/translations.js +20 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/view.js +5 -0
- package/dist/_pkgs/affine-widget-edgeless-zoom-toolbar/translations.d.ts +7 -0
- package/dist/_pkgs/affine-widget-edgeless-zoom-toolbar/translations.js +23 -0
- package/dist/_pkgs/affine-widget-edgeless-zoom-toolbar/zoom-bar-toggle-button.js +3 -1
- package/dist/_pkgs/affine-widget-edgeless-zoom-toolbar/zoom-toolbar.js +5 -3
- package/dist/_pkgs/affine-widget-linked-doc/config.js +15 -10
- package/dist/_pkgs/affine-widget-linked-doc/import-doc/import-doc.d.ts +12 -1
- package/dist/_pkgs/affine-widget-linked-doc/import-doc/import-doc.js +27 -18
- package/dist/_pkgs/affine-widget-linked-doc/import-doc/index.d.ts +4 -1
- package/dist/_pkgs/affine-widget-linked-doc/import-doc/index.js +2 -2
- package/dist/_pkgs/affine-widget-linked-doc/linked-doc-popover.js +4 -1
- package/dist/_pkgs/affine-widget-linked-doc/mobile-linked-doc-menu.js +6 -2
- package/dist/_pkgs/affine-widget-linked-doc/transformers/html.js +3 -2
- package/dist/_pkgs/affine-widget-linked-doc/transformers/markdown.js +3 -2
- package/dist/_pkgs/affine-widget-linked-doc/translations.d.ts +53 -0
- package/dist/_pkgs/affine-widget-linked-doc/translations.js +104 -0
- package/dist/_pkgs/affine-widget-remote-selection/edgeless/index.js +4 -1
- package/dist/_pkgs/affine-widget-remote-selection/translations.d.ts +12 -0
- package/dist/_pkgs/affine-widget-remote-selection/translations.js +12 -0
- package/dist/_pkgs/affine-widget-slash-menu/config.js +15 -0
- package/dist/_pkgs/affine-widget-slash-menu/index.d.ts +1 -0
- package/dist/_pkgs/affine-widget-slash-menu/index.js +1 -0
- package/dist/_pkgs/affine-widget-slash-menu/slash-menu-popover.js +30 -15
- package/dist/_pkgs/affine-widget-slash-menu/tooltips/copy.js +1 -1
- package/dist/_pkgs/affine-widget-slash-menu/tooltips/delete.js +2 -2
- package/dist/_pkgs/affine-widget-slash-menu/tooltips/index.js +9 -0
- package/dist/_pkgs/affine-widget-slash-menu/tooltips/move-down.js +2 -2
- package/dist/_pkgs/affine-widget-slash-menu/tooltips/move-up.js +2 -2
- package/dist/_pkgs/affine-widget-slash-menu/tooltips/now.js +3 -3
- package/dist/_pkgs/affine-widget-slash-menu/tooltips/today.js +2 -2
- package/dist/_pkgs/affine-widget-slash-menu/tooltips/tomorrow.js +3 -3
- package/dist/_pkgs/affine-widget-slash-menu/tooltips/yesterday.js +3 -3
- package/dist/_pkgs/affine-widget-slash-menu/translations.d.ts +91 -0
- package/dist/_pkgs/affine-widget-slash-menu/translations.js +175 -0
- package/dist/_pkgs/affine-widget-slash-menu/types.d.ts +18 -0
- package/dist/_pkgs/affine-widget-slash-menu/utils.d.ts +20 -1
- package/dist/_pkgs/affine-widget-slash-menu/utils.js +37 -0
- package/dist/_pkgs/affine-widget-toolbar/translations.d.ts +9 -0
- package/dist/_pkgs/affine-widget-toolbar/translations.js +13 -0
- package/dist/_pkgs/affine-widget-toolbar/utils.js +2 -1
- package/dist/_pkgs/global/gfx/xywh.js +7 -0
- package/dist/_pkgs/std/extension/command-registry.d.ts +158 -1
- package/dist/_pkgs/std/extension/command-registry.js +22 -0
- package/dist/_pkgs/std/extension/translation-manifest.d.ts +7 -0
- package/dist/_pkgs/std/gfx/index.d.ts +1 -1
- package/dist/_pkgs/std/gfx/interactivity/gfx-view-event-handler.d.ts +12 -0
- package/dist/_pkgs/std/gfx/interactivity/gfx-view-event-handler.js +20 -1
- package/dist/_pkgs/std/gfx/interactivity/manager.d.ts +10 -0
- package/dist/_pkgs/std/gfx/interactivity/manager.js +12 -0
- package/dist/_pkgs/std/gfx/model/surface/element-model.js +12 -7
- package/dist/_pkgs/std/gfx/model/surface/surface-model.d.ts +56 -0
- package/dist/_pkgs/std/gfx/model/surface/surface-model.js +84 -3
- package/dist/_pkgs/std/gfx/view/view.d.ts +11 -2
- package/dist/_pkgs/std/gfx/view/view.js +16 -2
- package/dist/_pkgs/std/translations.d.ts +24 -0
- package/dist/_pkgs/std/translations.js +28 -0
- package/dist/_pkgs/std/view/element/block-component.js +24 -7
- package/dist/commands.d.ts +6 -0
- package/dist/commands.js +8 -1
- package/dist/frameworks.d.ts +9 -0
- package/dist/frameworks.js +19 -0
- package/dist/translations.js +160 -5
- package/package.json +9 -4
- package/dist/_pkgs/affine-gfx-group/group-watcher.d.ts +0 -1
- package/dist/_pkgs/affine-gfx-group/group-watcher.js +0 -20
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { BOARD_LEGEND_NOTATION, TelemetryProvider, } from '../../affine-shared/services/index.js';
|
|
2
|
+
import { html } from 'lit';
|
|
3
|
+
import { createBoardLegend } from './legend.js';
|
|
4
|
+
/**
|
|
5
|
+
* Contextual-toolbar glyph — "generate the legend of what is on this board".
|
|
6
|
+
* One icon because it is one gesture; the Core Domain chart has drawn this exact
|
|
7
|
+
* box-and-rows since its legend button shipped and the others borrowed it.
|
|
8
|
+
*
|
|
9
|
+
* `html` rather than `svg`: a toolbar action's `icon` is rendered as a
|
|
10
|
+
* standalone template, unlike the senior-button glyphs that are interpolated
|
|
11
|
+
* into an outer `<svg>`.
|
|
12
|
+
*/
|
|
13
|
+
export const legendIcon = html `<svg
|
|
14
|
+
width="24"
|
|
15
|
+
height="24"
|
|
16
|
+
viewBox="0 0 24 24"
|
|
17
|
+
fill="none"
|
|
18
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
19
|
+
>
|
|
20
|
+
<rect
|
|
21
|
+
x="3"
|
|
22
|
+
y="4"
|
|
23
|
+
width="18"
|
|
24
|
+
height="16"
|
|
25
|
+
rx="2"
|
|
26
|
+
stroke="currentColor"
|
|
27
|
+
stroke-width="1.6"
|
|
28
|
+
/>
|
|
29
|
+
<circle cx="7" cy="9" r="1.6" fill="currentColor" />
|
|
30
|
+
<circle cx="7" cy="14" r="1.6" fill="currentColor" />
|
|
31
|
+
<path d="M11 9 H18 M11 14 H18" stroke="currentColor" stroke-width="1.4" />
|
|
32
|
+
</svg>`;
|
|
33
|
+
/**
|
|
34
|
+
* The ONE `FrameworkLegendCreated` emission, with the wire values every
|
|
35
|
+
* framework's own button has been sending.
|
|
36
|
+
*
|
|
37
|
+
* `framework` is the HISTORICAL PostHog value (`FrameworkDescriptor.
|
|
38
|
+
* telemetryKey`): `context-map`, not `ddd-context-map`. It is a parameter and
|
|
39
|
+
* not derived from anything, because the two spellings differ for three of the
|
|
40
|
+
* eight frameworks and a prefix rule would quietly rename a metric.
|
|
41
|
+
*/
|
|
42
|
+
export function trackLegendCreated(std, framework, module) {
|
|
43
|
+
std.getOptional(TelemetryProvider)?.track('FrameworkLegendCreated', {
|
|
44
|
+
framework,
|
|
45
|
+
element: 'legend',
|
|
46
|
+
page: 'whiteboard editor',
|
|
47
|
+
segment: 'element toolbar',
|
|
48
|
+
module,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* The shared legend entry of a board's contextual toolbar.
|
|
53
|
+
*
|
|
54
|
+
* Registered by each framework in its OWN flag-gated module
|
|
55
|
+
* (`custom:affine:surface:<board>`), merged with `validationToolbarConfig`'s
|
|
56
|
+
* actions: a flavour may carry exactly one toolbar module, and generating a
|
|
57
|
+
* legend is tooling a flag may take away. What the gesture already WROTE is
|
|
58
|
+
* document content and keeps being painted with the flag off — the box is made
|
|
59
|
+
* of plain shapes, text and the framework's own always-on renderers.
|
|
60
|
+
*/
|
|
61
|
+
export function legendToolbarAction({ id = 'b.legend', Model, owner, framework, module = `${framework} toolbar`, tooltipWording = BOARD_LEGEND_NOTATION, icon = legendIcon, }) {
|
|
62
|
+
const boardOf = (ctx) => ctx.getSurfaceModelsByType(Model)[0];
|
|
63
|
+
return {
|
|
64
|
+
id,
|
|
65
|
+
tooltipWording,
|
|
66
|
+
icon,
|
|
67
|
+
run(ctx) {
|
|
68
|
+
if (ctx.std.store.readonly)
|
|
69
|
+
return;
|
|
70
|
+
// The FIRST selected board and no other: a legend is placed relative to
|
|
71
|
+
// one board, and two of them would put two boxes on top of whatever sits
|
|
72
|
+
// in that corner.
|
|
73
|
+
const board = boardOf(ctx);
|
|
74
|
+
if (!board)
|
|
75
|
+
return;
|
|
76
|
+
createBoardLegend(ctx.std, board, owner);
|
|
77
|
+
trackLegendCreated(ctx.std, framework, module);
|
|
78
|
+
},
|
|
79
|
+
when: (ctx) => boardOf(ctx) !== undefined,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { Bound } from '../../global/gfx/index.js';
|
|
2
|
+
import { type BlockStdScope, type CommandLegendExtra, type CommandLegendRow, type CommandOwner } from '../../std/index.js';
|
|
3
|
+
import { type GfxController, type RoleId } from '../../std/gfx/index.js';
|
|
4
|
+
/**
|
|
5
|
+
* The legend PLATFORM: one engine, one box, for every framework that documents
|
|
6
|
+
* itself.
|
|
7
|
+
*
|
|
8
|
+
* Two things it deliberately does not do, and they are the whole design:
|
|
9
|
+
*
|
|
10
|
+
* - **detection is by ROLE, never by `instanceof` or by fill colour.** A role is
|
|
11
|
+
* the semantic identity of an artefact (`framework/std`'s `role.ts`); a shape
|
|
12
|
+
* type is not, and a colour is a restyle away from lying. Reading roles also
|
|
13
|
+
* means a legend and a validation rule agree on what is on the board, because
|
|
14
|
+
* they read the same field;
|
|
15
|
+
* - **a framework writes no legend code.** {@link legendFromCommands} derives
|
|
16
|
+
* the whole thing from the commands it already declares — their order, their
|
|
17
|
+
* category, the role each stamps and the swatch each subscribes
|
|
18
|
+
* (`CommandDescriptor.legend`). Scanning the perimeter, resolving
|
|
19
|
+
* specialisations, dropping empty sections, placing and grouping the box all
|
|
20
|
+
* happen here, once.
|
|
21
|
+
*
|
|
22
|
+
* It lives in the surface block rather than with any framework bundle for the
|
|
23
|
+
* reason `validation.ts` next door does: BPMN and Wardley must not take a
|
|
24
|
+
* dependency on a DDD bundle to draw their own legend.
|
|
25
|
+
*
|
|
26
|
+
* See `docs/adr/0026`.
|
|
27
|
+
*/
|
|
28
|
+
type Surface = NonNullable<GfxController['surface']>;
|
|
29
|
+
/** A {@link CommandLegendRow} with the label the engine resolved for it. */
|
|
30
|
+
export interface LegendRow extends CommandLegendRow {
|
|
31
|
+
label: string;
|
|
32
|
+
}
|
|
33
|
+
export interface LegendSection {
|
|
34
|
+
title?: string;
|
|
35
|
+
rows: LegendRow[];
|
|
36
|
+
}
|
|
37
|
+
/** How the box is laid out, for a legend whose swatches are not 16-unit chips. */
|
|
38
|
+
export interface LegendLayout {
|
|
39
|
+
width?: number;
|
|
40
|
+
/** Row pitch; the swatch is drawn centred in it. Defaults to 28. */
|
|
41
|
+
rowHeight?: number;
|
|
42
|
+
/** Swatch box, defaults to a 16 × 16 chip. */
|
|
43
|
+
swatchWidth?: number;
|
|
44
|
+
swatchHeight?: number;
|
|
45
|
+
}
|
|
46
|
+
/** A block of the box that is not a row. See {@link CommandLegendBox.extras}. */
|
|
47
|
+
export type LegendExtra = CommandLegendExtra;
|
|
48
|
+
/**
|
|
49
|
+
* The ink and the type a notation writes its labels in: this box's rows, and
|
|
50
|
+
* the words the DDD prefabs set beside a dot or a marker.
|
|
51
|
+
*
|
|
52
|
+
* Declared HERE and re-exported by `@labre/affine-gfx-ddd-shared`, rather than
|
|
53
|
+
* the other way round, because that bundle depends on this one and a legend
|
|
54
|
+
* must not depend on a DDD bundle to be drawn.
|
|
55
|
+
*/
|
|
56
|
+
export declare const LABEL_COLOR: string;
|
|
57
|
+
export declare const LABEL_FONT = "blocksuite:surface:Inter";
|
|
58
|
+
export declare const LABEL_FONT_SIZE = 14;
|
|
59
|
+
/**
|
|
60
|
+
* The role the legend's GROUP carries — the one thing on a generated legend
|
|
61
|
+
* that says what it is.
|
|
62
|
+
*
|
|
63
|
+
* Its glyphs deliberately carry none (see {@link addShape}), which is what
|
|
64
|
+
* keeps a legend out of the scan and out of every validation rule. But "made of
|
|
65
|
+
* nothing in particular" is unreadable to anything that has to tell a legend
|
|
66
|
+
* from a drawing, and something does: the `.bpmn` export counts what it left
|
|
67
|
+
* behind inside a pool, and a legend's fourteen glyphs would be reported as
|
|
68
|
+
* fourteen losses. The wrapper says so instead, once, structurally — no title
|
|
69
|
+
* to match on, no framework name, no geometry.
|
|
70
|
+
*
|
|
71
|
+
* `core:` because it belongs to no framework: no `RoleDefs` declares it, so
|
|
72
|
+
* `roleIsA` matches it against nothing, no rule evaluates it and no legend row
|
|
73
|
+
* lights because of it. Nothing is backfilled, as ever — a legend drawn before
|
|
74
|
+
* this shipped carries no role and is not recognised.
|
|
75
|
+
*/
|
|
76
|
+
export declare const LEGEND_ROLE = "core:legend";
|
|
77
|
+
/**
|
|
78
|
+
* How big the box {@link addLegend} would draw for these sections is — without
|
|
79
|
+
* drawing it. The engine needs the height to drop the box bottom-left of a
|
|
80
|
+
* board, and measuring is the only honest way to get it: the box grows with the
|
|
81
|
+
* number of sub-titles, rows and extras, which is exactly what the detection
|
|
82
|
+
* pass decides.
|
|
83
|
+
*/
|
|
84
|
+
export declare function measureLegend(sections: readonly LegendSection[], layout?: LegendLayout, extras?: readonly LegendExtra[]): {
|
|
85
|
+
width: number;
|
|
86
|
+
height: number;
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* A boxed legend: a bordered container with a bold title and bold section
|
|
90
|
+
* sub-titles, each row a swatch + label, then whatever `extras` add below.
|
|
91
|
+
* Returns the grouped id.
|
|
92
|
+
*/
|
|
93
|
+
export declare function addLegend(surface: Surface, std: BlockStdScope, x: number, y: number, opts: {
|
|
94
|
+
title: string;
|
|
95
|
+
sections: LegendSection[];
|
|
96
|
+
extras?: readonly LegendExtra[];
|
|
97
|
+
} & LegendLayout): string;
|
|
98
|
+
/**
|
|
99
|
+
* Every role carried by an element inside `bound`.
|
|
100
|
+
*
|
|
101
|
+
* Neutral elements (no role) contribute nothing, which is the whole
|
|
102
|
+
* compatibility promise: a board drawn before the vocabularies existed produces
|
|
103
|
+
* an empty set and therefore a legend with no rows, exactly like an empty board.
|
|
104
|
+
* It is also why a legend never lists itself: nothing it draws carries a role.
|
|
105
|
+
*/
|
|
106
|
+
export declare function rolesInBound(gfx: GfxController, bound: Bound): Set<RoleId>;
|
|
107
|
+
/**
|
|
108
|
+
* The legend of a board, derived from the commands of the framework that owns
|
|
109
|
+
* it: every subscribed row whose role is present (directly or through a
|
|
110
|
+
* specialisation, unless the entry asks for {@link CommandLegendEntry.exact}),
|
|
111
|
+
* in command order, grouped under the section each declares — or under its
|
|
112
|
+
* command's category — with empty sections dropped.
|
|
113
|
+
*
|
|
114
|
+
* The SUB-TITLES come out in the order the framework first declares them,
|
|
115
|
+
* walking every command whether its row lights or not: a legend is a key to a
|
|
116
|
+
* notation, so the same framework reads in the same order on every board, and
|
|
117
|
+
* only the rows change.
|
|
118
|
+
*
|
|
119
|
+
* Rows are de-duplicated BY ROLE, first declaration winning: two commands draw
|
|
120
|
+
* a Wardley area (a rectangle and a polygon) and the notation has one "Area".
|
|
121
|
+
*
|
|
122
|
+
* When nothing is recognised the result is an EMPTY array, and the caller still
|
|
123
|
+
* draws the box: a legend of a board with nothing on it lists nothing, rather
|
|
124
|
+
* than inventing the full notation the user has not used.
|
|
125
|
+
*/
|
|
126
|
+
export declare function legendFromCommands(std: BlockStdScope, owner: CommandOwner, present: ReadonlySet<RoleId>): LegendSection[];
|
|
127
|
+
/**
|
|
128
|
+
* Build the legend of what is drawn inside `board` and drop it bottom-left of
|
|
129
|
+
* it, grouped and selected. THE gesture the shared toolbar button runs.
|
|
130
|
+
*
|
|
131
|
+
* Returns the group id, or `undefined` when there is no surface to draw on.
|
|
132
|
+
*/
|
|
133
|
+
export declare function createBoardLegend(std: BlockStdScope, board: {
|
|
134
|
+
xywh: string;
|
|
135
|
+
}, owner: CommandOwner): string | undefined;
|
|
136
|
+
export {};
|
|
@@ -0,0 +1,439 @@
|
|
|
1
|
+
import { ConnectorMode, FontWeight, PointStyle, ShapeStyle, } from '../../affine-model/index.js';
|
|
2
|
+
import { NOTATION_NEUTRALS } from '../../affine-shared/consts/index.js';
|
|
3
|
+
import { BOARD_LEGEND_TITLE, GROUP_SEED_NAME, translateKey, } from '../../affine-shared/services/index.js';
|
|
4
|
+
import { Bound } from '../../global/gfx/index.js';
|
|
5
|
+
import { CATALOGUE_CATEGORY_KEY_PREFIX, getRegisteredCommands, humanizeCategory, } from '../../std/index.js';
|
|
6
|
+
import { GfxControllerIdentifier, roleIsA, RoleVocabularyIdentifier, } from '../../std/gfx/index.js';
|
|
7
|
+
import { EdgelessCRUDIdentifier } from './crud-extension.js';
|
|
8
|
+
/**
|
|
9
|
+
* The ink and the type a notation writes its labels in: this box's rows, and
|
|
10
|
+
* the words the DDD prefabs set beside a dot or a marker.
|
|
11
|
+
*
|
|
12
|
+
* Declared HERE and re-exported by `@labre/affine-gfx-ddd-shared`, rather than
|
|
13
|
+
* the other way round, because that bundle depends on this one and a legend
|
|
14
|
+
* must not depend on a DDD bundle to be drawn.
|
|
15
|
+
*/
|
|
16
|
+
export const LABEL_COLOR = NOTATION_NEUTRALS.ink;
|
|
17
|
+
export const LABEL_FONT = 'blocksuite:surface:Inter';
|
|
18
|
+
export const LABEL_FONT_SIZE = 14;
|
|
19
|
+
const NO_STROKE = '#00000000';
|
|
20
|
+
/**
|
|
21
|
+
* The box's geometry, in one place because two callers need it: the one that
|
|
22
|
+
* DRAWS the box and the one that has to know how tall it will be before drawing
|
|
23
|
+
* it (see {@link measureLegend}).
|
|
24
|
+
*/
|
|
25
|
+
const LEGEND_METRICS = {
|
|
26
|
+
DEFAULT_W: 260,
|
|
27
|
+
PAD: 16,
|
|
28
|
+
TITLE_H: 32,
|
|
29
|
+
SUB_H: 26,
|
|
30
|
+
ROW_H: 28,
|
|
31
|
+
/** Swatch side (a `line` swatch is this long). */
|
|
32
|
+
SW: 16,
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* The minimal shape write this module needs — deliberately NOT the DDD
|
|
36
|
+
* `dddShapeProps`, and deliberately without a `role` parameter.
|
|
37
|
+
*
|
|
38
|
+
* That absence is the invariant: a legend is drawn ON the board it describes
|
|
39
|
+
* and the scan detects by role, so a glyph carrying one would list itself the
|
|
40
|
+
* next time a legend was generated and would be counted by every validation
|
|
41
|
+
* rule. Here it is not a rule to remember but a parameter that does not exist.
|
|
42
|
+
*/
|
|
43
|
+
function addShape(surface, x, y, w, h, opts) {
|
|
44
|
+
const { shapeType = 'rect', fill, stroke = NO_STROKE, strokeWidth = 0, radius = 0, } = opts;
|
|
45
|
+
return surface.addElement({
|
|
46
|
+
type: 'shape',
|
|
47
|
+
shapeType,
|
|
48
|
+
filled: true,
|
|
49
|
+
fillColor: fill,
|
|
50
|
+
strokeColor: stroke,
|
|
51
|
+
strokeWidth,
|
|
52
|
+
shapeStyle: ShapeStyle.General,
|
|
53
|
+
roughness: 0,
|
|
54
|
+
radius,
|
|
55
|
+
xywh: new Bound(x, y, w, h).serialize(),
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
/** A left-aligned (or centred) line of text. No `role`, same reason as above. */
|
|
59
|
+
function addText(surface, x, y, w, text, fontSize, textAlign = 'center', bold = false) {
|
|
60
|
+
return surface.addElement({
|
|
61
|
+
type: 'text',
|
|
62
|
+
text,
|
|
63
|
+
color: LABEL_COLOR,
|
|
64
|
+
fontFamily: LABEL_FONT,
|
|
65
|
+
fontSize,
|
|
66
|
+
textAlign,
|
|
67
|
+
fontWeight: bold ? FontWeight.SemiBold : FontWeight.Regular,
|
|
68
|
+
xywh: new Bound(x, y, w, fontSize + 10).serialize(),
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* A swatch the FRAMEWORK described: its props, plus the geometry the layout
|
|
73
|
+
* decides — and MINUS any `role`, stripped here so the invariant holds
|
|
74
|
+
* structurally whatever a table says.
|
|
75
|
+
*
|
|
76
|
+
* Cast in one place because the props arrive as data — a table in a framework
|
|
77
|
+
* module, not a literal this file can type — and the surface's own factory is
|
|
78
|
+
* what validates them.
|
|
79
|
+
*/
|
|
80
|
+
function addSwatchElement(surface, props) {
|
|
81
|
+
const { role: _role, ...neutral } = props;
|
|
82
|
+
return surface.addElement(neutral);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* The role the legend's GROUP carries — the one thing on a generated legend
|
|
86
|
+
* that says what it is.
|
|
87
|
+
*
|
|
88
|
+
* Its glyphs deliberately carry none (see {@link addShape}), which is what
|
|
89
|
+
* keeps a legend out of the scan and out of every validation rule. But "made of
|
|
90
|
+
* nothing in particular" is unreadable to anything that has to tell a legend
|
|
91
|
+
* from a drawing, and something does: the `.bpmn` export counts what it left
|
|
92
|
+
* behind inside a pool, and a legend's fourteen glyphs would be reported as
|
|
93
|
+
* fourteen losses. The wrapper says so instead, once, structurally — no title
|
|
94
|
+
* to match on, no framework name, no geometry.
|
|
95
|
+
*
|
|
96
|
+
* `core:` because it belongs to no framework: no `RoleDefs` declares it, so
|
|
97
|
+
* `roleIsA` matches it against nothing, no rule evaluates it and no legend row
|
|
98
|
+
* lights because of it. Nothing is backfilled, as ever — a legend drawn before
|
|
99
|
+
* this shipped carries no role and is not recognised.
|
|
100
|
+
*/
|
|
101
|
+
export const LEGEND_ROLE = 'core:legend';
|
|
102
|
+
/**
|
|
103
|
+
* Group the box's elements under one titled group, without
|
|
104
|
+
* `@labre/affine-gfx-group`'s `createGroupCommand`: that package depends on
|
|
105
|
+
* THIS one, so importing it would close a cycle. The twelve lines below are
|
|
106
|
+
* that command's whole body, run against the same `EdgelessCRUDIdentifier` it
|
|
107
|
+
* uses, so a legend group is what the gesture says a group is — plus the one
|
|
108
|
+
* thing a plain group is not, {@link LEGEND_ROLE}.
|
|
109
|
+
*/
|
|
110
|
+
function groupLegendElements(std, ids) {
|
|
111
|
+
const gfx = std.get(GfxControllerIdentifier);
|
|
112
|
+
const crud = std.get(EdgelessCRUDIdentifier);
|
|
113
|
+
const groups = gfx.layer.canvasElements.filter(el => el.type === 'group');
|
|
114
|
+
const groupId = crud.addElement('group', {
|
|
115
|
+
children: Object.fromEntries(ids.map(id => [id, true])),
|
|
116
|
+
// Translated HERE and once: the title is document content the moment it
|
|
117
|
+
// lands (ADR 0023), so the host's catalogue is asked at placement and never
|
|
118
|
+
// again — a renamed group keeps its name.
|
|
119
|
+
title: translateKey(std, ...GROUP_SEED_NAME, { n: groups.length + 1 }),
|
|
120
|
+
role: LEGEND_ROLE,
|
|
121
|
+
});
|
|
122
|
+
return groupId || ids[0];
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* How big the box {@link addLegend} would draw for these sections is — without
|
|
126
|
+
* drawing it. The engine needs the height to drop the box bottom-left of a
|
|
127
|
+
* board, and measuring is the only honest way to get it: the box grows with the
|
|
128
|
+
* number of sub-titles, rows and extras, which is exactly what the detection
|
|
129
|
+
* pass decides.
|
|
130
|
+
*/
|
|
131
|
+
export function measureLegend(sections, layout = {}, extras = []) {
|
|
132
|
+
const { DEFAULT_W, PAD, TITLE_H, SUB_H, ROW_H } = LEGEND_METRICS;
|
|
133
|
+
let subs = 0;
|
|
134
|
+
let rows = 0;
|
|
135
|
+
for (const s of sections) {
|
|
136
|
+
if (s.title)
|
|
137
|
+
subs++;
|
|
138
|
+
rows += s.rows.length;
|
|
139
|
+
}
|
|
140
|
+
return {
|
|
141
|
+
width: layout.width ?? DEFAULT_W,
|
|
142
|
+
height: PAD * 2 +
|
|
143
|
+
TITLE_H +
|
|
144
|
+
subs * SUB_H +
|
|
145
|
+
rows * (layout.rowHeight ?? ROW_H) +
|
|
146
|
+
extras.reduce((sum, extra) => sum + extra.height, 0),
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* A boxed legend: a bordered container with a bold title and bold section
|
|
151
|
+
* sub-titles, each row a swatch + label, then whatever `extras` add below.
|
|
152
|
+
* Returns the grouped id.
|
|
153
|
+
*/
|
|
154
|
+
export function addLegend(surface, std, x, y, opts) {
|
|
155
|
+
const { PAD, TITLE_H, SUB_H, SW } = LEGEND_METRICS;
|
|
156
|
+
const ROW_H = opts.rowHeight ?? LEGEND_METRICS.ROW_H;
|
|
157
|
+
/** The swatch COLUMN: as wide as the widest sample any row may draw. */
|
|
158
|
+
const SWW = opts.swatchWidth ?? SW;
|
|
159
|
+
const SWH = opts.swatchHeight ?? SW;
|
|
160
|
+
const extras = opts.extras ?? [];
|
|
161
|
+
const { width: W, height: H } = measureLegend(opts.sections, opts, extras);
|
|
162
|
+
const ids = [
|
|
163
|
+
addShape(surface, x, y, W, H, {
|
|
164
|
+
fill: NOTATION_NEUTRALS.cardFill,
|
|
165
|
+
stroke: NOTATION_NEUTRALS.legendBorder,
|
|
166
|
+
strokeWidth: 1.5,
|
|
167
|
+
radius: 8,
|
|
168
|
+
}),
|
|
169
|
+
];
|
|
170
|
+
let cy = y + PAD;
|
|
171
|
+
ids.push(addText(surface, x + PAD, cy, W - PAD * 2, opts.title, 18, 'left', true));
|
|
172
|
+
cy += TITLE_H;
|
|
173
|
+
for (const sec of opts.sections) {
|
|
174
|
+
if (sec.title) {
|
|
175
|
+
ids.push(addText(surface, x + PAD, cy, W - PAD * 2, sec.title, 14, 'left', true));
|
|
176
|
+
cy += SUB_H;
|
|
177
|
+
}
|
|
178
|
+
for (const row of sec.rows) {
|
|
179
|
+
const sx = x + PAD;
|
|
180
|
+
const midY = cy + ROW_H / 2;
|
|
181
|
+
if (row.swatch === 'dot') {
|
|
182
|
+
ids.push(addShape(surface, sx, midY - SW / 2, SW, SW, {
|
|
183
|
+
shapeType: 'ellipse',
|
|
184
|
+
fill: row.color,
|
|
185
|
+
stroke: NOTATION_NEUTRALS.ink,
|
|
186
|
+
strokeWidth: 1,
|
|
187
|
+
}));
|
|
188
|
+
}
|
|
189
|
+
else if (row.swatch === 'square') {
|
|
190
|
+
ids.push(addShape(surface, sx, midY - SW / 2, SW, SW, {
|
|
191
|
+
fill: row.color,
|
|
192
|
+
stroke: NOTATION_NEUTRALS.ink,
|
|
193
|
+
strokeWidth: 1,
|
|
194
|
+
radius: 3,
|
|
195
|
+
}));
|
|
196
|
+
if (row.letter)
|
|
197
|
+
ids.push(addText(surface, sx, midY - 8, SW, row.letter, 11));
|
|
198
|
+
}
|
|
199
|
+
else if (row.swatch === 'glyph') {
|
|
200
|
+
// The artefact itself, at swatch size. `size` wins when the framework
|
|
201
|
+
// declares one — a gradation of sizes IS notation for Wardley, and
|
|
202
|
+
// fitting every pastille to the same box would erase it; otherwise the
|
|
203
|
+
// artefact's own aspect is fitted inside the box and centred, so a
|
|
204
|
+
// portrait picture stays portrait.
|
|
205
|
+
const aspect = row.aspect && row.aspect > 0 ? row.aspect : 1;
|
|
206
|
+
const [gw, gh] = row.size ?? [
|
|
207
|
+
Math.min(SWW, SWH * aspect),
|
|
208
|
+
Math.min(SWW, SWH * aspect) / aspect,
|
|
209
|
+
];
|
|
210
|
+
ids.push(addSwatchElement(surface, {
|
|
211
|
+
...row.props,
|
|
212
|
+
xywh: new Bound(sx + (SWW - gw) / 2, midY - gh / 2, gw, gh).serialize(),
|
|
213
|
+
}));
|
|
214
|
+
}
|
|
215
|
+
else if (row.swatch === 'edge') {
|
|
216
|
+
// A real connector across the swatch column, so the endpoint the
|
|
217
|
+
// notation puts on the line — a hollow diamond, a hollow triangle, a
|
|
218
|
+
// stick head — is drawn by the connector renderer rather than guessed at.
|
|
219
|
+
ids.push(addSwatchElement(surface, {
|
|
220
|
+
mode: ConnectorMode.Straight,
|
|
221
|
+
stroke: row.color,
|
|
222
|
+
strokeWidth: 1.5,
|
|
223
|
+
frontEndpointStyle: PointStyle.None,
|
|
224
|
+
rearEndpointStyle: PointStyle.None,
|
|
225
|
+
...row.props,
|
|
226
|
+
type: 'connector',
|
|
227
|
+
source: { position: [sx, midY] },
|
|
228
|
+
target: { position: [sx + SWW, midY] },
|
|
229
|
+
}));
|
|
230
|
+
}
|
|
231
|
+
else if (row.swatch === 'custom' && row.draw) {
|
|
232
|
+
// A composite the framework draws itself, in the box we hand it. The
|
|
233
|
+
// ids come back so the whole thing joins the group like any other row.
|
|
234
|
+
ids.push(...row.draw(surface, { x: sx, y: midY - SWH / 2, w: SWW, h: SWH }, std));
|
|
235
|
+
}
|
|
236
|
+
else if (row.dashed) {
|
|
237
|
+
// Two 6-unit segments with a 4-unit gap: the same 16 units as a solid
|
|
238
|
+
// bar, read as a dash.
|
|
239
|
+
const seg = 6;
|
|
240
|
+
ids.push(addShape(surface, sx, midY - 2, seg, 4, {
|
|
241
|
+
fill: row.color,
|
|
242
|
+
radius: 1,
|
|
243
|
+
}));
|
|
244
|
+
ids.push(addShape(surface, sx + SW - seg, midY - 2, seg, 4, {
|
|
245
|
+
fill: row.color,
|
|
246
|
+
radius: 1,
|
|
247
|
+
}));
|
|
248
|
+
}
|
|
249
|
+
else {
|
|
250
|
+
ids.push(addShape(surface, sx, midY - 2, SW, 4, { fill: row.color, radius: 1 }));
|
|
251
|
+
}
|
|
252
|
+
ids.push(addText(surface, sx + SWW + 10, midY - LABEL_FONT_SIZE / 2, W - PAD * 2 - SWW - 10, row.label, 13, 'left'));
|
|
253
|
+
cy += ROW_H;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
for (const extra of extras) {
|
|
257
|
+
ids.push(...extra.draw(surface, std, x, cy, W));
|
|
258
|
+
cy += extra.height;
|
|
259
|
+
}
|
|
260
|
+
return groupLegendElements(std, ids);
|
|
261
|
+
}
|
|
262
|
+
/* ── The scan ──────────────────────────────────────────────────────────── */
|
|
263
|
+
/**
|
|
264
|
+
* Distance from the board's left edge / bottom edge, in model units. Wardley's
|
|
265
|
+
* numbers, kept identical so every legend lands in the same place relative to
|
|
266
|
+
* its board.
|
|
267
|
+
*/
|
|
268
|
+
const INSET_X = 50;
|
|
269
|
+
const INSET_BOTTOM = 56;
|
|
270
|
+
/**
|
|
271
|
+
* Every role carried by an element inside `bound`.
|
|
272
|
+
*
|
|
273
|
+
* Neutral elements (no role) contribute nothing, which is the whole
|
|
274
|
+
* compatibility promise: a board drawn before the vocabularies existed produces
|
|
275
|
+
* an empty set and therefore a legend with no rows, exactly like an empty board.
|
|
276
|
+
* It is also why a legend never lists itself: nothing it draws carries a role.
|
|
277
|
+
*/
|
|
278
|
+
export function rolesInBound(gfx, bound) {
|
|
279
|
+
const present = new Set();
|
|
280
|
+
for (const el of gfx.getElementsByBound(bound, { type: 'canvas' })) {
|
|
281
|
+
if (el.role !== undefined)
|
|
282
|
+
present.add(el.role);
|
|
283
|
+
}
|
|
284
|
+
return present;
|
|
285
|
+
}
|
|
286
|
+
/** Every registered vocabulary, merged — a role id is namespaced, so it is flat. */
|
|
287
|
+
function vocabularyOf(std) {
|
|
288
|
+
const merged = {};
|
|
289
|
+
for (const defs of std.provider.getAll(RoleVocabularyIdentifier).values()) {
|
|
290
|
+
Object.assign(merged, defs);
|
|
291
|
+
}
|
|
292
|
+
return merged;
|
|
293
|
+
}
|
|
294
|
+
function entriesOf(command) {
|
|
295
|
+
const { legend } = command;
|
|
296
|
+
if (!legend)
|
|
297
|
+
return [];
|
|
298
|
+
return Array.isArray(legend) ? legend : [legend];
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* One row's label, through the host's catalogue, in the order of who owns the
|
|
302
|
+
* word:
|
|
303
|
+
*
|
|
304
|
+
* 1. the entry's own {@link CommandLegendEntry.labelWording} — a row that
|
|
305
|
+
* EXPLAINS the notation rather than naming it (Wardley's "Need / capability
|
|
306
|
+
* (activity, practice, data…)" against the role's bare "Component");
|
|
307
|
+
* 2. the ROLE's wording, which is the usual case and the reason a table never
|
|
308
|
+
* restates a label: renaming a role renames its legend row;
|
|
309
|
+
* 3. the COMMAND's wording, for a row whose role declares none.
|
|
310
|
+
*
|
|
311
|
+
* `labelPrefix` (the Context Map's "PS — ") is stitched back on AFTER
|
|
312
|
+
* translation: an abbreviation is never a translatable word.
|
|
313
|
+
*/
|
|
314
|
+
function resolveRowLabel(std, roles, command, entry) {
|
|
315
|
+
const def = roles[entry.role];
|
|
316
|
+
const text = entry.labelWording
|
|
317
|
+
? translateKey(std, ...entry.labelWording)
|
|
318
|
+
: def?.labelKey
|
|
319
|
+
? translateKey(std, def.labelKey, def.labelFallback ?? entry.role)
|
|
320
|
+
: (def?.labelFallback ??
|
|
321
|
+
translateKey(std, command.labelKey, command.labelFallback ?? command.id));
|
|
322
|
+
return entry.labelPrefix ? `${entry.labelPrefix} — ${text}` : text;
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* The sub-title a row files itself under: its own {@link
|
|
326
|
+
* CommandLegendEntry.section} when it declares one, otherwise the command's
|
|
327
|
+
* `category` through the catalogue's own header key — the same word the
|
|
328
|
+
* artefact panel puts above the same group of commands, and therefore no new
|
|
329
|
+
* i18n key.
|
|
330
|
+
*
|
|
331
|
+
* A row with neither goes into an untitled bucket, which is what a framework
|
|
332
|
+
* with one flat notation wants.
|
|
333
|
+
*/
|
|
334
|
+
function resolveSection(std, command, entry) {
|
|
335
|
+
if (entry.section) {
|
|
336
|
+
return {
|
|
337
|
+
key: entry.section[0],
|
|
338
|
+
title: translateKey(std, ...entry.section),
|
|
339
|
+
};
|
|
340
|
+
}
|
|
341
|
+
const category = command.category;
|
|
342
|
+
if (!category)
|
|
343
|
+
return { key: '' };
|
|
344
|
+
return {
|
|
345
|
+
key: `${CATALOGUE_CATEGORY_KEY_PREFIX}${category}`,
|
|
346
|
+
title: translateKey(std, `${CATALOGUE_CATEGORY_KEY_PREFIX}${category}`, humanizeCategory(category)),
|
|
347
|
+
};
|
|
348
|
+
}
|
|
349
|
+
/**
|
|
350
|
+
* The legend of a board, derived from the commands of the framework that owns
|
|
351
|
+
* it: every subscribed row whose role is present (directly or through a
|
|
352
|
+
* specialisation, unless the entry asks for {@link CommandLegendEntry.exact}),
|
|
353
|
+
* in command order, grouped under the section each declares — or under its
|
|
354
|
+
* command's category — with empty sections dropped.
|
|
355
|
+
*
|
|
356
|
+
* The SUB-TITLES come out in the order the framework first declares them,
|
|
357
|
+
* walking every command whether its row lights or not: a legend is a key to a
|
|
358
|
+
* notation, so the same framework reads in the same order on every board, and
|
|
359
|
+
* only the rows change.
|
|
360
|
+
*
|
|
361
|
+
* Rows are de-duplicated BY ROLE, first declaration winning: two commands draw
|
|
362
|
+
* a Wardley area (a rectangle and a polygon) and the notation has one "Area".
|
|
363
|
+
*
|
|
364
|
+
* When nothing is recognised the result is an EMPTY array, and the caller still
|
|
365
|
+
* draws the box: a legend of a board with nothing on it lists nothing, rather
|
|
366
|
+
* than inventing the full notation the user has not used.
|
|
367
|
+
*/
|
|
368
|
+
export function legendFromCommands(std, owner, present) {
|
|
369
|
+
const roles = vocabularyOf(std);
|
|
370
|
+
const commands = getRegisteredCommands(std)
|
|
371
|
+
.filter(command => command.owner === owner && command.legend)
|
|
372
|
+
.sort((a, b) => (a.order ?? 0) - (b.order ?? 0));
|
|
373
|
+
const drafts = [];
|
|
374
|
+
const seen = new Set();
|
|
375
|
+
const presentRoles = [...present];
|
|
376
|
+
for (const command of commands) {
|
|
377
|
+
for (const entry of entriesOf(command)) {
|
|
378
|
+
// The bucket is opened for EVERY declared row, lit or not, and emptied
|
|
379
|
+
// ones are dropped at the end. That is what makes the order of the
|
|
380
|
+
// sub-titles a property of the framework's declarations rather than of
|
|
381
|
+
// what happens to be on this board: opening it only when a row lit put
|
|
382
|
+
// BPMN's "Activities" after "Gateways" and "Flows" on a pool that had a
|
|
383
|
+
// user task but no plain task, and the same pool with a plain task read
|
|
384
|
+
// in a different order again.
|
|
385
|
+
const { key, title } = resolveSection(std, command, entry);
|
|
386
|
+
let draft = drafts.find(d => d.key === key);
|
|
387
|
+
if (!draft)
|
|
388
|
+
drafts.push((draft = { key, title, rows: [] }));
|
|
389
|
+
const lit = entry.exact
|
|
390
|
+
? present.has(entry.role)
|
|
391
|
+
: presentRoles.some(role => roleIsA(role, entry.role, roles));
|
|
392
|
+
if (!lit || seen.has(entry.role))
|
|
393
|
+
continue;
|
|
394
|
+
seen.add(entry.role);
|
|
395
|
+
draft.rows.push({
|
|
396
|
+
...entry.row,
|
|
397
|
+
label: resolveRowLabel(std, roles, command, entry),
|
|
398
|
+
});
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
return drafts
|
|
402
|
+
.filter(draft => draft.rows.length > 0)
|
|
403
|
+
.map(({ title, rows }) => ({ title, rows }));
|
|
404
|
+
}
|
|
405
|
+
/** The `legendBox` of the framework's BOARD command, if it declares one. */
|
|
406
|
+
function boardLegendBox(std, owner) {
|
|
407
|
+
return getRegisteredCommands(std).find(command => command.owner === owner && command.legendBox)?.legendBox;
|
|
408
|
+
}
|
|
409
|
+
/**
|
|
410
|
+
* Build the legend of what is drawn inside `board` and drop it bottom-left of
|
|
411
|
+
* it, grouped and selected. THE gesture the shared toolbar button runs.
|
|
412
|
+
*
|
|
413
|
+
* Returns the group id, or `undefined` when there is no surface to draw on.
|
|
414
|
+
*/
|
|
415
|
+
export function createBoardLegend(std, board, owner) {
|
|
416
|
+
const gfx = std.get(GfxControllerIdentifier);
|
|
417
|
+
const surface = gfx.surface;
|
|
418
|
+
if (!surface)
|
|
419
|
+
return undefined;
|
|
420
|
+
const bound = Bound.deserialize(board.xywh);
|
|
421
|
+
const present = rolesInBound(gfx, bound);
|
|
422
|
+
const sections = legendFromCommands(std, owner, present);
|
|
423
|
+
const box = boardLegendBox(std, owner);
|
|
424
|
+
const layout = {
|
|
425
|
+
width: box?.width,
|
|
426
|
+
rowHeight: box?.rowHeight,
|
|
427
|
+
swatchWidth: box?.swatchWidth,
|
|
428
|
+
swatchHeight: box?.swatchHeight,
|
|
429
|
+
};
|
|
430
|
+
// Resolved ONCE, in front of the drawing: an extra states its height as a
|
|
431
|
+
// value, so the box can be measured before it is placed.
|
|
432
|
+
const extras = box?.extras?.({ std, board, present }) ?? [];
|
|
433
|
+
const title = translateKey(std, ...(box?.titleWording ?? BOARD_LEGEND_TITLE));
|
|
434
|
+
const { height } = measureLegend(sections, layout, extras);
|
|
435
|
+
std.store.captureSync();
|
|
436
|
+
const id = addLegend(surface, std, bound.x + INSET_X, bound.y + bound.h - INSET_BOTTOM - height, { title, sections, extras, ...layout });
|
|
437
|
+
gfx.selection.set({ elements: [id], editing: false });
|
|
438
|
+
return id;
|
|
439
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type ToolbarContext, type ToolbarModuleConfig } from '../../affine-shared/services/index.js';
|
|
2
|
-
import type { FrameworkId } from '../../std/index.js';
|
|
2
|
+
import type { BlockStdScope, FrameworkId } from '../../std/index.js';
|
|
3
3
|
import type { GfxPrimitiveElementModel } from '../../std/gfx/index.js';
|
|
4
4
|
import type { TemplateResult } from 'lit';
|
|
5
5
|
/**
|
|
@@ -148,7 +148,7 @@ export interface MorphSpec<K extends string = string> {
|
|
|
148
148
|
* still says what the SOURCE kind derived may be rewritten, and a line the
|
|
149
149
|
* author typed over is theirs.
|
|
150
150
|
*/
|
|
151
|
-
afterMorph?(model: GfxPrimitiveElementModel, from: K, to: K): void;
|
|
151
|
+
afterMorph?(model: GfxPrimitiveElementModel, from: K, to: K, std?: BlockStdScope): void;
|
|
152
152
|
/** The role a kind means — the `from` / `to` of the telemetry, ids only. */
|
|
153
153
|
roleOf(kind: K): string;
|
|
154
154
|
/**
|