@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,115 @@
|
|
|
1
|
+
import type { EditorHost } from '../../std/index.js';
|
|
2
|
+
import type { GfxPrimitiveElementModel, PointTestOptions } from '../../std/gfx/index.js';
|
|
3
|
+
import { GfxElementModelView } from '../../std/gfx/index.js';
|
|
4
|
+
import type { FrameworkBackgroundDef } from './def.js';
|
|
5
|
+
/** A label a double-click may rename: the prop to write, and the words shown. */
|
|
6
|
+
export interface EditableBackgroundLabel {
|
|
7
|
+
/** The model prop the in-place editor writes back to. */
|
|
8
|
+
prop: string;
|
|
9
|
+
/**
|
|
10
|
+
* The words currently DRAWN there.
|
|
11
|
+
*
|
|
12
|
+
* The editor opens on this, not on `model[prop]`: a label whose prop has
|
|
13
|
+
* never been written shows its vocabulary, and opening an empty box on it
|
|
14
|
+
* would silently offer to erase a name the user can see.
|
|
15
|
+
*/
|
|
16
|
+
text: string;
|
|
17
|
+
/**
|
|
18
|
+
* Where the edited words go, when a flat `{ [prop]: value }` patch cannot say
|
|
19
|
+
* it. Absent — the case for every label a declaration binds — the editor
|
|
20
|
+
* writes `updateElement(id, { [prop]: value })`.
|
|
21
|
+
*
|
|
22
|
+
* The one label shape that needs it is a name kept INSIDE a structured prop:
|
|
23
|
+
* a UML combined fragment's operand guard lives in `operands[i].name`, and
|
|
24
|
+
* renaming it means rewriting that array (trimmed, the key dropped when
|
|
25
|
+
* cleared), which no single-prop patch expresses. A write hook on the label
|
|
26
|
+
* rather than on the view, because the target is a property of the label hit
|
|
27
|
+
* — one view carries labels of both kinds.
|
|
28
|
+
*
|
|
29
|
+
* Called only for an ACTUAL change (the untouched-value rule below still
|
|
30
|
+
* applies), after the editor has closed and after the undo boundary has been
|
|
31
|
+
* captured: the hook writes, and nothing else.
|
|
32
|
+
*/
|
|
33
|
+
commit?: (value: string) => void;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* The rename gesture every framework background shares: double-click a label,
|
|
37
|
+
* type, Enter or click away.
|
|
38
|
+
*
|
|
39
|
+
* Written ONCE here, and that is the whole point of the file. The Wardley map
|
|
40
|
+
* shipped it first, EDGY copied the half it needed, C4 and BPMN copied other
|
|
41
|
+
* halves — and the three backgrounds that never got a copy (the Core Domain
|
|
42
|
+
* Chart, the Event Storming board, Cynefin and Estuarine) simply had no way to
|
|
43
|
+
* rename anything, which is how issue #355 was reported. R14 of
|
|
44
|
+
* `docs/add-a-framework/02-framework-rules.md` — extend, never copy — applies
|
|
45
|
+
* to a view's overrides exactly as it applies to a model's: seven copies of an
|
|
46
|
+
* `<input>` is not a seam, it is six places for the next fix to miss.
|
|
47
|
+
*
|
|
48
|
+
* A subclass says only WHERE its labels are, through {@link labelAt}. Almost
|
|
49
|
+
* every framework answers that from its declaration and should extend
|
|
50
|
+
* {@link DeclaredBackgroundView} instead; a framework that paints its words by
|
|
51
|
+
* hand (Cynefin, Estuarine — figurative reproductions of an official drawing,
|
|
52
|
+
* with no `FrameworkBackgroundDef` behind them) extends this class and hit-tests
|
|
53
|
+
* in its own reference space.
|
|
54
|
+
*
|
|
55
|
+
* UML's five frames were the last copy standing and now extend
|
|
56
|
+
* {@link DeclaredBackgroundView} like the rest (2026-09-17); the combined
|
|
57
|
+
* fragment's operand guards are why a label may carry its own
|
|
58
|
+
* {@link EditableBackgroundLabel.commit}.
|
|
59
|
+
*/
|
|
60
|
+
export declare abstract class FrameworkBackgroundView<T extends GfxPrimitiveElementModel = GfxPrimitiveElementModel> extends GfxElementModelView<T> {
|
|
61
|
+
/** The in-place `<input>` used to edit a label, or null when idle. */
|
|
62
|
+
private _labelEditor;
|
|
63
|
+
onCreated(): void;
|
|
64
|
+
onDestroyed(): void;
|
|
65
|
+
/**
|
|
66
|
+
* The editable label under an ELEMENT-LOCAL point, or null.
|
|
67
|
+
*
|
|
68
|
+
* `lx` / `ly` are already de-rotated and relative to the element's top-left
|
|
69
|
+
* corner, and `w` / `h` are its current size: a subclass never repeats the
|
|
70
|
+
* rotation arithmetic, which is precisely what four copies of it got wrong in
|
|
71
|
+
* four slightly different ways.
|
|
72
|
+
*/
|
|
73
|
+
protected abstract labelAt(lx: number, ly: number, w: number, h: number): EditableBackgroundLabel | null;
|
|
74
|
+
/**
|
|
75
|
+
* A background is SELECTED by its border (`FrameworkBackgroundElementModel`,
|
|
76
|
+
* issue #194) — but the words written on it must still receive the
|
|
77
|
+
* double-click that renames them.
|
|
78
|
+
*
|
|
79
|
+
* So the two areas differ, and this is where they are allowed to: the pointer
|
|
80
|
+
* router asks the VIEW (`GfxViewEventManager`), and the view adds the zones
|
|
81
|
+
* its labels are drawn in. Picking is unaffected — `getElementByPoint` still
|
|
82
|
+
* asks the model, so a click in the middle of the frame still goes to
|
|
83
|
+
* whatever the user put there.
|
|
84
|
+
*/
|
|
85
|
+
includesPoint(x: number, y: number, options: PointTestOptions, host: EditorHost): boolean;
|
|
86
|
+
/** The editable label under a MODEL-space point, or null. */
|
|
87
|
+
private _labelAtModelPoint;
|
|
88
|
+
/** Double-click on a label → edit its text in place. */
|
|
89
|
+
private _onDblClick;
|
|
90
|
+
/**
|
|
91
|
+
* @param label the label aimed at. The editor opens on `label.text`, the
|
|
92
|
+
* words currently DRAWN — which is the vocabulary, not `model[prop]`, for a
|
|
93
|
+
* label the user has never renamed. Opening on the raw prop would show an
|
|
94
|
+
* empty box for a label that plainly reads "Evolution".
|
|
95
|
+
*/
|
|
96
|
+
private _openLabelEditor;
|
|
97
|
+
private _closeLabelEditor;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* The same gesture, aimed by the DECLARATION the renderer paints.
|
|
101
|
+
*
|
|
102
|
+
* Which labels exist, where they sit, what they SAY and which are editable all
|
|
103
|
+
* come from one place, resolved through the same catalogue — so a label can
|
|
104
|
+
* never be drawn in one place and clicked in another, nor read one thing and
|
|
105
|
+
* open on another. A subclass supplies its {@link def} and nothing else.
|
|
106
|
+
*
|
|
107
|
+
* A framework that needs to narrow the answer — a closed list of writable
|
|
108
|
+
* props, a hit region wider than the words — overrides {@link labelAt} and
|
|
109
|
+
* calls `super.labelAt` for the declaration's answer first.
|
|
110
|
+
*/
|
|
111
|
+
export declare abstract class DeclaredBackgroundView<T extends GfxPrimitiveElementModel = GfxPrimitiveElementModel> extends FrameworkBackgroundView<T> {
|
|
112
|
+
/** The declaration this view hit-tests against — the one the renderer paints. */
|
|
113
|
+
protected abstract get def(): FrameworkBackgroundDef;
|
|
114
|
+
protected labelAt(lx: number, ly: number, w: number, h: number): EditableBackgroundLabel | null;
|
|
115
|
+
}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import { TranslationProvider } from '../../affine-shared/services/index.js';
|
|
2
|
+
import { rotatePoint } from '../../global/gfx/index.js';
|
|
3
|
+
import { GfxElementModelView } from '../../std/gfx/index.js';
|
|
4
|
+
import { EdgelessCRUDIdentifier } from '../extensions/crud-extension.js';
|
|
5
|
+
import { backgroundLabelHits, hitTestBackgroundLabel } from './labels.js';
|
|
6
|
+
/**
|
|
7
|
+
* The rename gesture every framework background shares: double-click a label,
|
|
8
|
+
* type, Enter or click away.
|
|
9
|
+
*
|
|
10
|
+
* Written ONCE here, and that is the whole point of the file. The Wardley map
|
|
11
|
+
* shipped it first, EDGY copied the half it needed, C4 and BPMN copied other
|
|
12
|
+
* halves — and the three backgrounds that never got a copy (the Core Domain
|
|
13
|
+
* Chart, the Event Storming board, Cynefin and Estuarine) simply had no way to
|
|
14
|
+
* rename anything, which is how issue #355 was reported. R14 of
|
|
15
|
+
* `docs/add-a-framework/02-framework-rules.md` — extend, never copy — applies
|
|
16
|
+
* to a view's overrides exactly as it applies to a model's: seven copies of an
|
|
17
|
+
* `<input>` is not a seam, it is six places for the next fix to miss.
|
|
18
|
+
*
|
|
19
|
+
* A subclass says only WHERE its labels are, through {@link labelAt}. Almost
|
|
20
|
+
* every framework answers that from its declaration and should extend
|
|
21
|
+
* {@link DeclaredBackgroundView} instead; a framework that paints its words by
|
|
22
|
+
* hand (Cynefin, Estuarine — figurative reproductions of an official drawing,
|
|
23
|
+
* with no `FrameworkBackgroundDef` behind them) extends this class and hit-tests
|
|
24
|
+
* in its own reference space.
|
|
25
|
+
*
|
|
26
|
+
* UML's five frames were the last copy standing and now extend
|
|
27
|
+
* {@link DeclaredBackgroundView} like the rest (2026-09-17); the combined
|
|
28
|
+
* fragment's operand guards are why a label may carry its own
|
|
29
|
+
* {@link EditableBackgroundLabel.commit}.
|
|
30
|
+
*/
|
|
31
|
+
export class FrameworkBackgroundView extends GfxElementModelView {
|
|
32
|
+
constructor() {
|
|
33
|
+
super(...arguments);
|
|
34
|
+
/** The in-place `<input>` used to edit a label, or null when idle. */
|
|
35
|
+
this._labelEditor = null;
|
|
36
|
+
}
|
|
37
|
+
onCreated() {
|
|
38
|
+
super.onCreated();
|
|
39
|
+
this.on('dblclick', e => this._onDblClick(e));
|
|
40
|
+
}
|
|
41
|
+
onDestroyed() {
|
|
42
|
+
this._closeLabelEditor();
|
|
43
|
+
super.onDestroyed();
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* A background is SELECTED by its border (`FrameworkBackgroundElementModel`,
|
|
47
|
+
* issue #194) — but the words written on it must still receive the
|
|
48
|
+
* double-click that renames them.
|
|
49
|
+
*
|
|
50
|
+
* So the two areas differ, and this is where they are allowed to: the pointer
|
|
51
|
+
* router asks the VIEW (`GfxViewEventManager`), and the view adds the zones
|
|
52
|
+
* its labels are drawn in. Picking is unaffected — `getElementByPoint` still
|
|
53
|
+
* asks the model, so a click in the middle of the frame still goes to
|
|
54
|
+
* whatever the user put there.
|
|
55
|
+
*/
|
|
56
|
+
includesPoint(x, y, options, host) {
|
|
57
|
+
if (super.includesPoint(x, y, options, host))
|
|
58
|
+
return true;
|
|
59
|
+
return this._labelAtModelPoint(x, y) !== null;
|
|
60
|
+
}
|
|
61
|
+
/** The editable label under a MODEL-space point, or null. */
|
|
62
|
+
_labelAtModelPoint(mx, my) {
|
|
63
|
+
const [bx, by, w, h] = this.model.deserializedXYWH;
|
|
64
|
+
// Element-local coordinates, undoing the element rotation about its centre.
|
|
65
|
+
let lx = mx - bx;
|
|
66
|
+
let ly = my - by;
|
|
67
|
+
const rot = this.model.rotate ?? 0;
|
|
68
|
+
if (rot) {
|
|
69
|
+
const center = [bx + w / 2, by + h / 2];
|
|
70
|
+
const [ux, uy] = rotatePoint([mx, my], center, -rot);
|
|
71
|
+
lx = ux - bx;
|
|
72
|
+
ly = uy - by;
|
|
73
|
+
}
|
|
74
|
+
return this.labelAt(lx, ly, w, h);
|
|
75
|
+
}
|
|
76
|
+
/** Double-click on a label → edit its text in place. */
|
|
77
|
+
_onDblClick(e) {
|
|
78
|
+
if (this.gfx.std.store.readonly || this.model.isLocked())
|
|
79
|
+
return;
|
|
80
|
+
const [mx, my] = this.gfx.viewport.toModelCoord(e.x, e.y);
|
|
81
|
+
const hit = this._labelAtModelPoint(mx, my);
|
|
82
|
+
if (!hit)
|
|
83
|
+
return;
|
|
84
|
+
this._openLabelEditor(hit, e);
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* @param label the label aimed at. The editor opens on `label.text`, the
|
|
88
|
+
* words currently DRAWN — which is the vocabulary, not `model[prop]`, for a
|
|
89
|
+
* label the user has never renamed. Opening on the raw prop would show an
|
|
90
|
+
* empty box for a label that plainly reads "Evolution".
|
|
91
|
+
*/
|
|
92
|
+
_openLabelEditor(label, e) {
|
|
93
|
+
this._closeLabelEditor();
|
|
94
|
+
const current = label.text;
|
|
95
|
+
const input = document.createElement('input');
|
|
96
|
+
input.value = current;
|
|
97
|
+
Object.assign(input.style, {
|
|
98
|
+
position: 'fixed',
|
|
99
|
+
left: `${e.raw.clientX}px`,
|
|
100
|
+
top: `${e.raw.clientY}px`,
|
|
101
|
+
transform: 'translate(-50%, -50%)',
|
|
102
|
+
zIndex: '10000',
|
|
103
|
+
minWidth: '140px',
|
|
104
|
+
padding: '3px 8px',
|
|
105
|
+
font: '14px Inter, sans-serif',
|
|
106
|
+
color: 'var(--affine-text-primary-color, #1f2328)',
|
|
107
|
+
background: 'var(--affine-background-overlay-panel-color, #ffffff)',
|
|
108
|
+
border: '1px solid var(--affine-primary-color, #1e96eb)',
|
|
109
|
+
borderRadius: '6px',
|
|
110
|
+
boxShadow: 'var(--affine-shadow-2, 0 2px 8px rgba(0,0,0,0.18))',
|
|
111
|
+
outline: 'none',
|
|
112
|
+
});
|
|
113
|
+
document.body.append(input);
|
|
114
|
+
this._labelEditor = input;
|
|
115
|
+
// Mark the element as "editing" so the global edgeless key handlers
|
|
116
|
+
// (delete, escape, etc.) don't act on it while the user types.
|
|
117
|
+
this.gfx.selection.set({ elements: [this.model.id], editing: true });
|
|
118
|
+
input.focus();
|
|
119
|
+
input.select();
|
|
120
|
+
const commit = () => {
|
|
121
|
+
// Guard against re-entrancy: removing the input fires `blur` — Chrome
|
|
122
|
+
// fires it SYNCHRONOUSLY inside `remove()` — which would otherwise call
|
|
123
|
+
// `commit` a second time. `_closeLabelEditor` clears the field before it
|
|
124
|
+
// removes the node, so that nested call finds it gone and returns.
|
|
125
|
+
if (this._labelEditor !== input)
|
|
126
|
+
return;
|
|
127
|
+
const value = input.value;
|
|
128
|
+
this._closeLabelEditor();
|
|
129
|
+
// Opening an editor is not renaming. Writing back an untouched value
|
|
130
|
+
// would persist the resolved VOCABULARY as the user's own text, freezing
|
|
131
|
+
// the label in whatever language it was read in and putting it beyond
|
|
132
|
+
// any catalogue for good — and it would push an empty entry onto undo.
|
|
133
|
+
if (value === current)
|
|
134
|
+
return;
|
|
135
|
+
this.gfx.std.store.captureSync();
|
|
136
|
+
if (label.commit) {
|
|
137
|
+
label.commit(value);
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
this.gfx.std
|
|
141
|
+
.get(EdgelessCRUDIdentifier)
|
|
142
|
+
.updateElement(this.model.id, { [label.prop]: value });
|
|
143
|
+
};
|
|
144
|
+
input.addEventListener('keydown', ev => {
|
|
145
|
+
ev.stopPropagation();
|
|
146
|
+
if (ev.key === 'Enter') {
|
|
147
|
+
ev.preventDefault();
|
|
148
|
+
commit();
|
|
149
|
+
}
|
|
150
|
+
else if (ev.key === 'Escape') {
|
|
151
|
+
ev.preventDefault();
|
|
152
|
+
this._closeLabelEditor();
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
input.addEventListener('blur', commit);
|
|
156
|
+
}
|
|
157
|
+
_closeLabelEditor() {
|
|
158
|
+
if (!this._labelEditor)
|
|
159
|
+
return;
|
|
160
|
+
const input = this._labelEditor;
|
|
161
|
+
this._labelEditor = null;
|
|
162
|
+
input.remove();
|
|
163
|
+
if (this.isConnected) {
|
|
164
|
+
this.gfx.selection.set({ elements: [this.model.id], editing: false });
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* The same gesture, aimed by the DECLARATION the renderer paints.
|
|
170
|
+
*
|
|
171
|
+
* Which labels exist, where they sit, what they SAY and which are editable all
|
|
172
|
+
* come from one place, resolved through the same catalogue — so a label can
|
|
173
|
+
* never be drawn in one place and clicked in another, nor read one thing and
|
|
174
|
+
* open on another. A subclass supplies its {@link def} and nothing else.
|
|
175
|
+
*
|
|
176
|
+
* A framework that needs to narrow the answer — a closed list of writable
|
|
177
|
+
* props, a hit region wider than the words — overrides {@link labelAt} and
|
|
178
|
+
* calls `super.labelAt` for the declaration's answer first.
|
|
179
|
+
*/
|
|
180
|
+
export class DeclaredBackgroundView extends FrameworkBackgroundView {
|
|
181
|
+
labelAt(lx, ly, w, h) {
|
|
182
|
+
const hit = hitTestBackgroundLabel(backgroundLabelHits(this.def, this.model, w, h, this.gfx.std.getOptional(TranslationProvider)), lx, ly);
|
|
183
|
+
return hit ? { prop: hit.prop, text: hit.text } : null;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
@@ -36,7 +36,7 @@ export declare function backgroundVisible(visibleProp: string | undefined, model
|
|
|
36
36
|
*/
|
|
37
37
|
export declare function backgroundInVariant(def: FrameworkBackgroundDef, variants: readonly string[] | undefined, model: BackgroundModelLike): boolean;
|
|
38
38
|
/** A label's clickable box in element-local coordinates (axis-aligned, padded). */
|
|
39
|
-
export interface BackgroundLabelHit {
|
|
39
|
+
export interface BackgroundLabelHit extends BackgroundTextBox {
|
|
40
40
|
/** The declaration id of the text. */
|
|
41
41
|
id: string;
|
|
42
42
|
/** The model prop the in-place editor must write back to. */
|
|
@@ -49,11 +49,26 @@ export interface BackgroundLabelHit {
|
|
|
49
49
|
* would silently offer to erase a name the user can see.
|
|
50
50
|
*/
|
|
51
51
|
text: string;
|
|
52
|
+
}
|
|
53
|
+
/** The padded box of one drawn word, in the space its anchor is expressed in. */
|
|
54
|
+
export interface BackgroundTextBox {
|
|
52
55
|
minX: number;
|
|
53
56
|
minY: number;
|
|
54
57
|
maxX: number;
|
|
55
58
|
maxY: number;
|
|
56
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* The clickable box of a word drawn at `(ax, ay)` on an ALPHABETIC baseline —
|
|
62
|
+
* the one convention every background in the library paints its text on.
|
|
63
|
+
*
|
|
64
|
+
* Exported because two frameworks place their words without a declaration
|
|
65
|
+
* (Cynefin and Estuarine are figurative reproductions of an official drawing,
|
|
66
|
+
* scaled by their own fit) and still have to offer the same forgiving target as
|
|
67
|
+
* everybody else. They pass a point already mapped into element coordinates;
|
|
68
|
+
* the padding, the rough advance and the baseline arithmetic stay here, in one
|
|
69
|
+
* place, so a label is not easier to hit on one framework than on the next.
|
|
70
|
+
*/
|
|
71
|
+
export declare function backgroundTextHitBox(words: string, fontSize: number, ax: number, ay: number, align?: 'left' | 'center' | 'right', vertical?: boolean): BackgroundTextBox;
|
|
57
72
|
/**
|
|
58
73
|
* Every text of a declaration, in PAINTING ORDER: the side-band labels, the
|
|
59
74
|
* zone labels, then each axis' title followed by its end labels.
|
|
@@ -75,6 +75,36 @@ export function backgroundInVariant(def, variants, model) {
|
|
|
75
75
|
const approxTextWidth = (text, fontSize) => Math.max(fontSize, text.length * fontSize * 0.6);
|
|
76
76
|
/** Padding so double-clicking a label is forgiving. */
|
|
77
77
|
const HIT_PAD = 6;
|
|
78
|
+
/**
|
|
79
|
+
* The clickable box of a word drawn at `(ax, ay)` on an ALPHABETIC baseline —
|
|
80
|
+
* the one convention every background in the library paints its text on.
|
|
81
|
+
*
|
|
82
|
+
* Exported because two frameworks place their words without a declaration
|
|
83
|
+
* (Cynefin and Estuarine are figurative reproductions of an official drawing,
|
|
84
|
+
* scaled by their own fit) and still have to offer the same forgiving target as
|
|
85
|
+
* everybody else. They pass a point already mapped into element coordinates;
|
|
86
|
+
* the padding, the rough advance and the baseline arithmetic stay here, in one
|
|
87
|
+
* place, so a label is not easier to hit on one framework than on the next.
|
|
88
|
+
*/
|
|
89
|
+
export function backgroundTextHitBox(words, fontSize, ax, ay, align = 'left', vertical = false) {
|
|
90
|
+
const tw = approxTextWidth(words, fontSize);
|
|
91
|
+
if (vertical) {
|
|
92
|
+
return {
|
|
93
|
+
minX: ax - fontSize - HIT_PAD,
|
|
94
|
+
maxX: ax + fontSize * 0.4 + HIT_PAD,
|
|
95
|
+
minY: ay - tw / 2 - HIT_PAD,
|
|
96
|
+
maxY: ay + tw / 2 + HIT_PAD,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
const minX = align === 'right' ? ax - tw : align === 'center' ? ax - tw / 2 : ax;
|
|
100
|
+
const maxX = align === 'right' ? ax : align === 'center' ? ax + tw / 2 : ax + tw;
|
|
101
|
+
return {
|
|
102
|
+
minX: minX - HIT_PAD,
|
|
103
|
+
maxX: maxX + HIT_PAD,
|
|
104
|
+
minY: ay - fontSize - HIT_PAD,
|
|
105
|
+
maxY: ay + fontSize * 0.3 + HIT_PAD,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
78
108
|
/**
|
|
79
109
|
* Every text of a declaration, in PAINTING ORDER: the side-band labels, the
|
|
80
110
|
* zone labels, then each axis' title followed by its end labels.
|
|
@@ -152,32 +182,12 @@ export function backgroundLabelHits(def, model, w, h, translation) {
|
|
|
152
182
|
if (!backgroundVisible(text.visibleProp, model))
|
|
153
183
|
continue;
|
|
154
184
|
const words = backgroundLabelText(text, model, translation);
|
|
155
|
-
const size = text.style.size;
|
|
156
|
-
const tw = approxTextWidth(words, size);
|
|
157
185
|
const [ax, ay] = backgroundPoint(text.anchor, plot);
|
|
158
|
-
if (text.vertical) {
|
|
159
|
-
hits.push({
|
|
160
|
-
id: text.id,
|
|
161
|
-
prop: text.prop,
|
|
162
|
-
text: words,
|
|
163
|
-
minX: ax - size - HIT_PAD,
|
|
164
|
-
maxX: ax + size * 0.4 + HIT_PAD,
|
|
165
|
-
minY: ay - tw / 2 - HIT_PAD,
|
|
166
|
-
maxY: ay + tw / 2 + HIT_PAD,
|
|
167
|
-
});
|
|
168
|
-
continue;
|
|
169
|
-
}
|
|
170
|
-
const align = text.align ?? 'left';
|
|
171
|
-
const minX = align === 'right' ? ax - tw : align === 'center' ? ax - tw / 2 : ax;
|
|
172
|
-
const maxX = align === 'right' ? ax : align === 'center' ? ax + tw / 2 : ax + tw;
|
|
173
186
|
hits.push({
|
|
174
187
|
id: text.id,
|
|
175
188
|
prop: text.prop,
|
|
176
189
|
text: words,
|
|
177
|
-
|
|
178
|
-
maxX: maxX + HIT_PAD,
|
|
179
|
-
minY: ay - size - HIT_PAD,
|
|
180
|
-
maxY: ay + size * 0.3 + HIT_PAD,
|
|
190
|
+
...backgroundTextHitBox(words, text.style.size, ax, ay, text.align, text.vertical),
|
|
181
191
|
});
|
|
182
192
|
}
|
|
183
193
|
return hits;
|
|
@@ -33,8 +33,22 @@ import { backgroundInVariant, backgroundLabelText, backgroundTexts, backgroundVi
|
|
|
33
33
|
* legible however large the background is stretched. Only the plot interior
|
|
34
34
|
* moves.
|
|
35
35
|
*/
|
|
36
|
+
/**
|
|
37
|
+
* Trace the card, and say whether there was one to trace.
|
|
38
|
+
*
|
|
39
|
+
* The drawable box has the border subtracted from it, so a background dragged
|
|
40
|
+
* to nothing — or one whose `xywh` came back degenerate from a damaged
|
|
41
|
+
* document — asks for a negative radius: a 1.5 border on a 1-unit card gives
|
|
42
|
+
* -0.75. `arcTo` throws `IndexSizeError` on that rather than clamping, and the
|
|
43
|
+
* surface render loop wraps no renderer in a `try`, so one such throw aborts
|
|
44
|
+
* the rest of the frame with an unbalanced save stack. Returning `false` lets
|
|
45
|
+
* the caller skip the fill and the stroke too, rather than painting a
|
|
46
|
+
* degenerate path.
|
|
47
|
+
*/
|
|
36
48
|
function roundRectPath(ctx, x, y, w, h, r) {
|
|
37
|
-
|
|
49
|
+
if (!(w > 0) || !(h > 0))
|
|
50
|
+
return false;
|
|
51
|
+
const rr = Math.max(0, Math.min(r, w / 2, h / 2));
|
|
38
52
|
ctx.beginPath();
|
|
39
53
|
ctx.moveTo(x + rr, y);
|
|
40
54
|
ctx.arcTo(x + w, y, x + w, y + h, rr);
|
|
@@ -42,6 +56,7 @@ function roundRectPath(ctx, x, y, w, h, r) {
|
|
|
42
56
|
ctx.arcTo(x, y + h, x, y, rr);
|
|
43
57
|
ctx.arcTo(x, y, x + w, y, rr);
|
|
44
58
|
ctx.closePath();
|
|
59
|
+
return true;
|
|
45
60
|
}
|
|
46
61
|
const HEX6 = /^#[0-9a-fA-F]{6}$/;
|
|
47
62
|
/**
|
|
@@ -108,6 +123,13 @@ export function createFrameworkBackgroundRenderer(def) {
|
|
|
108
123
|
// that ships no locale pack — both fall back to the declared wording.
|
|
109
124
|
const translation = renderer?.std.getOptional(TranslationProvider) ?? null;
|
|
110
125
|
const [, , w, h] = model.deserializedXYWH;
|
|
126
|
+
// A background with no area has no card, no bands, no plot and no text, so
|
|
127
|
+
// there is nothing to paint and every ratio below would divide by zero.
|
|
128
|
+
// Bailing here is also what keeps a degenerate element from reaching
|
|
129
|
+
// `arcTo` at all; `roundRectPath` stays the second line of defence for a
|
|
130
|
+
// card that is positive but smaller than its own border.
|
|
131
|
+
if (!(w > 0) || !(h > 0))
|
|
132
|
+
return;
|
|
111
133
|
const cx = w / 2;
|
|
112
134
|
const cy = h / 2;
|
|
113
135
|
ctx.setTransform(matrix
|
|
@@ -149,8 +171,10 @@ export function createFrameworkBackgroundRenderer(def) {
|
|
|
149
171
|
const border = surface.border;
|
|
150
172
|
const inset = border ? border.width / 2 : 0;
|
|
151
173
|
const cardPath = () => roundRectPath(ctx, inset, inset, w - inset * 2, h - inset * 2, border?.radius ?? 0);
|
|
152
|
-
|
|
153
|
-
|
|
174
|
+
// A card whose border eats the whole element is not traced at all, and then
|
|
175
|
+
// neither its fill nor its frame is painted.
|
|
176
|
+
const carded = cardPath();
|
|
177
|
+
if (carded && surface.fill) {
|
|
154
178
|
ctx.fillStyle = color(surface.fill);
|
|
155
179
|
ctx.fill();
|
|
156
180
|
}
|
|
@@ -191,10 +215,10 @@ export function createFrameworkBackgroundRenderer(def) {
|
|
|
191
215
|
ctx.setLineDash([]);
|
|
192
216
|
}
|
|
193
217
|
}
|
|
194
|
-
if (border)
|
|
218
|
+
if (border && carded)
|
|
195
219
|
cardPath();
|
|
196
220
|
}
|
|
197
|
-
if (border) {
|
|
221
|
+
if (border && carded) {
|
|
198
222
|
ctx.strokeStyle = color(border.color);
|
|
199
223
|
ctx.lineWidth = border.width;
|
|
200
224
|
if (border.dash?.length)
|
|
@@ -62,10 +62,12 @@ export declare function indexOverBackgrounds(siblings: readonly StackedElement[]
|
|
|
62
62
|
* is still below every artefact already drawn there. Otherwise nothing.
|
|
63
63
|
* 2. `element` IS a background. If another background it overlaps sits above
|
|
64
64
|
* it, the same raise applies — superposed boards stack in the order they
|
|
65
|
-
* were placed, each still under its own artefacts
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
*
|
|
65
|
+
* were placed, each still under its own artefacts — unless it ENCLOSES that
|
|
66
|
+
* background, in which case it is the sheet the other is drawn on and stays
|
|
67
|
+
* under it ({@link encloses}). Otherwise, if it covers an artefact it
|
|
68
|
+
* overlaps, it is acting as a lid: lower it to just above the floor it lies
|
|
69
|
+
* on, or to the back of the surface when it lies on bare canvas. Otherwise
|
|
70
|
+
* nothing.
|
|
69
71
|
*
|
|
70
72
|
* `siblings` are the OTHER top-level elements of the surface — canvas elements
|
|
71
73
|
* and blocks alike, since the surface paints both by index — with `element`
|
|
@@ -61,10 +61,12 @@ export function indexOverBackgrounds(siblings, box) {
|
|
|
61
61
|
* is still below every artefact already drawn there. Otherwise nothing.
|
|
62
62
|
* 2. `element` IS a background. If another background it overlaps sits above
|
|
63
63
|
* it, the same raise applies — superposed boards stack in the order they
|
|
64
|
-
* were placed, each still under its own artefacts
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
*
|
|
64
|
+
* were placed, each still under its own artefacts — unless it ENCLOSES that
|
|
65
|
+
* background, in which case it is the sheet the other is drawn on and stays
|
|
66
|
+
* under it ({@link encloses}). Otherwise, if it covers an artefact it
|
|
67
|
+
* overlaps, it is acting as a lid: lower it to just above the floor it lies
|
|
68
|
+
* on, or to the back of the surface when it lies on bare canvas. Otherwise
|
|
69
|
+
* nothing.
|
|
68
70
|
*
|
|
69
71
|
* `siblings` are the OTHER top-level elements of the surface — canvas elements
|
|
70
72
|
* and blocks alike, since the surface paints both by index — with `element`
|
|
@@ -89,18 +91,64 @@ export function indexOverBackgrounds(siblings, box) {
|
|
|
89
91
|
export function stackingIndexFor(element, siblings) {
|
|
90
92
|
const box = Bound.deserialize(element.xywh);
|
|
91
93
|
const overlapping = siblings.filter(sibling => Bound.deserialize(sibling.xywh).isOverlapWithBound(box));
|
|
92
|
-
|
|
94
|
+
// The stack {@link indexOverBackgrounds} is allowed to land ON, which is the
|
|
95
|
+
// same carve-out as `buried`'s applied to the DESTINATION rather than to the
|
|
96
|
+
// question. The recette of 2026-09-15 needed both halves: a frame buried under
|
|
97
|
+
// a PEER board is raised, and the depth it was raised to was read off the
|
|
98
|
+
// unfiltered list — whose topmost overlapping background is the frame's OWN
|
|
99
|
+
// inner subject. So the sheet cleared the peer and landed just above the thing
|
|
100
|
+
// drawn on it, which is the very state `encloses` exists to prevent.
|
|
101
|
+
//
|
|
102
|
+
// DEMOTED, not removed: what it encloses is not a floor it may stand on, but
|
|
103
|
+
// it is still something the minted key has to stay UNDER. Dropping those
|
|
104
|
+
// entries would take the upper bound away with them and `generateKeyBetween`
|
|
105
|
+
// would append past its own content instead of slotting in below it.
|
|
106
|
+
const floors = siblings.map(sibling => encloses(element, box, sibling)
|
|
107
|
+
? { ...sibling, isBackground: false }
|
|
108
|
+
: sibling);
|
|
109
|
+
const buried = overlapping.some(sibling => sibling.isBackground &&
|
|
110
|
+
sibling.index > element.index &&
|
|
111
|
+
!encloses(element, box, sibling));
|
|
93
112
|
const lidding = element.isBackground &&
|
|
94
113
|
overlapping.some(sibling => !sibling.isBackground && sibling.index < element.index);
|
|
95
114
|
const next = buried
|
|
96
|
-
? indexOverBackgrounds(
|
|
115
|
+
? indexOverBackgrounds(floors, box)
|
|
97
116
|
: lidding
|
|
98
117
|
? // Down to the floor it lies on, or to the back of the surface when
|
|
99
|
-
// there is none — the depth `createWardleyArea` mints by hand.
|
|
100
|
-
|
|
118
|
+
// there is none — the depth `createWardleyArea` mints by hand. The back
|
|
119
|
+
// is measured against EVERY sibling: "under everything" means under the
|
|
120
|
+
// content too, enclosed or not.
|
|
121
|
+
(indexOverBackgrounds(floors, box) ?? backOf(siblings))
|
|
101
122
|
: null;
|
|
102
123
|
return next === element.index ? null : next;
|
|
103
124
|
}
|
|
125
|
+
/**
|
|
126
|
+
* Whether `element` is the SHEET `sibling` is drawn on — a background that
|
|
127
|
+
* strictly encloses another background.
|
|
128
|
+
*
|
|
129
|
+
* The carve-out the "superposed boards" clause needs, and the recette of
|
|
130
|
+
* 2026-09-15 is what named it: a UML diagram frame holds inner backgrounds of
|
|
131
|
+
* its own — a use case subject (§18.1.4), an activity partition (§15.6.4), a
|
|
132
|
+
* composite state (§14.2.4), a combined fragment (§17.6.4) — and a C4 board
|
|
133
|
+
* holds boundaries. Every one of them is drawn INSIDE the sheet and therefore
|
|
134
|
+
* above it, which made the sheet permanently "buried" under its own content:
|
|
135
|
+
* moving or resizing it raised it just above the topmost background it
|
|
136
|
+
* overlapped, and when that background was the topmost element of the stack the
|
|
137
|
+
* opaque sheet went to the very front and hid everything drawn on it.
|
|
138
|
+
*
|
|
139
|
+
* Two superposed PEER boards are a different gesture and keep the old answer.
|
|
140
|
+
* The discriminator is containment and not mere overlap: a sheet is bigger than
|
|
141
|
+
* what is drawn on it, so `element` is its floor only when it wholly encloses
|
|
142
|
+
* it AND covers more ground than it. Equal boxes — two boards dropped on the
|
|
143
|
+
* same spot — enclose each other, which is no statement at all, so they are
|
|
144
|
+
* peers and the raise still applies.
|
|
145
|
+
*/
|
|
146
|
+
function encloses(element, box, sibling) {
|
|
147
|
+
if (!element.isBackground)
|
|
148
|
+
return false;
|
|
149
|
+
const inner = Bound.deserialize(sibling.xywh);
|
|
150
|
+
return box.contains(inner) && inner.w * inner.h < box.w * box.h;
|
|
151
|
+
}
|
|
104
152
|
/** A key below every sibling: the back of the surface. */
|
|
105
153
|
function backOf(siblings) {
|
|
106
154
|
const lowest = siblings.reduce((min, sibling) => min === null || sibling.index < min ? sibling.index : min, null);
|
|
@@ -4,6 +4,7 @@ import type { BlockStdScope } from '../../std/index.js';
|
|
|
4
4
|
import type { GfxLocalElementModel, GridManager, LayerManager, SurfaceBlockModel, Viewport } from '../../std/gfx/index.js';
|
|
5
5
|
import { Subject } from 'rxjs';
|
|
6
6
|
import type { SurfaceElementModel } from '../element-model/base.js';
|
|
7
|
+
import { RoughCanvas } from '../utils/rough/canvas.js';
|
|
7
8
|
import type { Overlay } from './overlay.js';
|
|
8
9
|
type EnvProvider = {
|
|
9
10
|
generateColorProperty: (color: Color, fallback?: Color) => string;
|
|
@@ -131,6 +132,17 @@ export declare class CanvasRenderer {
|
|
|
131
132
|
dispose(): void;
|
|
132
133
|
generateColorProperty(color: Color, fallback?: Color): string;
|
|
133
134
|
getCanvasByBound(bound?: IBound, surfaceElements?: SurfaceElementModel[], canvas?: HTMLCanvasElement, clearBeforeDrawing?: boolean, withZoom?: boolean): HTMLCanvasElement;
|
|
135
|
+
/**
|
|
136
|
+
* Paint `bound` into any 2D context at 1:1 — no device pixel ratio, no zoom.
|
|
137
|
+
* The SVG export's door: it hands the same element renderers an SVG-emitting
|
|
138
|
+
* context instead of a canvas one.
|
|
139
|
+
*
|
|
140
|
+
* `surfaceElements` is painted in the order given, so a caller that wants the
|
|
141
|
+
* canvas' z-order passes what `GfxController.getElementsByBound` returned
|
|
142
|
+
* (already sorted by `layer.compare`). Omitting it falls back to the grid
|
|
143
|
+
* search, which is NOT layer-ordered.
|
|
144
|
+
*/
|
|
145
|
+
renderBoundTo(ctx: CanvasRenderingContext2D, rc: RoughCanvas, bound: IBound, surfaceElements?: SurfaceElementModel[]): void;
|
|
134
146
|
getColorScheme(): ColorScheme;
|
|
135
147
|
getColorValue(color: Color, fallback?: Color, real?: boolean): string;
|
|
136
148
|
getPropertyValue(property: string): string;
|
|
@@ -527,6 +527,21 @@ export class CanvasRenderer {
|
|
|
527
527
|
this._renderByBound(ctx, matrix, rc, bound, surfaceElements);
|
|
528
528
|
return canvas;
|
|
529
529
|
}
|
|
530
|
+
/**
|
|
531
|
+
* Paint `bound` into any 2D context at 1:1 — no device pixel ratio, no zoom.
|
|
532
|
+
* The SVG export's door: it hands the same element renderers an SVG-emitting
|
|
533
|
+
* context instead of a canvas one.
|
|
534
|
+
*
|
|
535
|
+
* `surfaceElements` is painted in the order given, so a caller that wants the
|
|
536
|
+
* canvas' z-order passes what `GfxController.getElementsByBound` returned
|
|
537
|
+
* (already sorted by `layer.compare`). Omitting it falls back to the grid
|
|
538
|
+
* search, which is NOT layer-ordered.
|
|
539
|
+
*/
|
|
540
|
+
renderBoundTo(ctx, rc, bound, surfaceElements) {
|
|
541
|
+
const matrix = new DOMMatrix();
|
|
542
|
+
ctx.setTransform(matrix);
|
|
543
|
+
this._renderByBound(ctx, matrix, rc, bound, surfaceElements);
|
|
544
|
+
}
|
|
530
545
|
getColorScheme() {
|
|
531
546
|
return this.provider.getColorScheme?.() ?? ColorScheme.Light;
|
|
532
547
|
}
|