@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
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { ConnectorElementModel } from '../../affine-model/index.js';
|
|
2
|
-
import { NotificationProvider, translateKey, } from '../../affine-shared/services/index.js';
|
|
2
|
+
import { fillPlaceholders, NotificationProvider, translateKey, } from '../../affine-shared/services/index.js';
|
|
3
3
|
import { openSingleFileWithSpec } from '../../affine-shared/utils/index.js';
|
|
4
|
-
import { getCommonBound } from '../../global/gfx/index.js';
|
|
4
|
+
import { Bound, getCommonBound } from '../../global/gfx/index.js';
|
|
5
5
|
import { GfxControllerIdentifier } from '../../std/gfx/index.js';
|
|
6
6
|
import { DefaultTool } from '../tool/default-tool.js';
|
|
7
|
-
import { interchangeCapabilities, } from './interchange.js';
|
|
7
|
+
import { InterchangeImportError, interchangeCapabilities, } from './interchange.js';
|
|
8
8
|
/**
|
|
9
9
|
* **The public import API** — what an editor, a host application or a plugin
|
|
10
10
|
* calls to turn a foreign file into a board (`docs/adr/0012`).
|
|
@@ -55,17 +55,70 @@ import { interchangeCapabilities, } from './interchange.js';
|
|
|
55
55
|
* whole blob and `addElement` writes it with everything else, which is the
|
|
56
56
|
* whole-record LWW the field's own contract asks for (D2).
|
|
57
57
|
*
|
|
58
|
+
* ## The reader's OWN names, and why there is a second map
|
|
59
|
+
*
|
|
60
|
+
* A source id is the file's, and there are two things a reader has to point at
|
|
61
|
+
* that the file never named: an element it MINTED (a framework artefact is
|
|
62
|
+
* routinely several elements — a shape, its compartments, and the group that
|
|
63
|
+
* makes them one thing), and the group membership between them. So a reader may
|
|
64
|
+
* also hand each element a provisional `id` of its own. `surface.addElement`
|
|
65
|
+
* overwrites it with a nanoid and is documented to, which is precisely what
|
|
66
|
+
* makes it safe to use as a local name: it reaches no document, and it is read
|
|
67
|
+
* here and nowhere else.
|
|
68
|
+
*
|
|
69
|
+
* A GROUP's `children` are therefore rewritten BEFORE the group is created, out
|
|
70
|
+
* of the map built so far — which costs nothing and asks the reader for the one
|
|
71
|
+
* thing it can always give: emit an element before the group that holds it. A
|
|
72
|
+
* connector is the opposite case (a flow may be written before either of its
|
|
73
|
+
* ends) and keeps its second pass.
|
|
74
|
+
*
|
|
75
|
+
* Source ids win over provisional ones wherever both could answer, so a reader
|
|
76
|
+
* that mints no local name behaves exactly as it did before this was here.
|
|
77
|
+
*
|
|
78
|
+
* ## Beside what is already drawn
|
|
79
|
+
*
|
|
80
|
+
* A reader writes the coordinates its FILE gave it, so importing the same file
|
|
81
|
+
* twice put the second board exactly on top of the first. The offset is applied
|
|
82
|
+
* here, once, for every framework, because the only thing that knows what the
|
|
83
|
+
* canvas already holds is the function doing the writing — see
|
|
84
|
+
* {@link importOffset}, and note that an empty surface is left alone.
|
|
85
|
+
*
|
|
86
|
+
* ## A read-only document is answered, not thrown at
|
|
87
|
+
*
|
|
88
|
+
* This is a public API — a host (labre-mcp) writes through it with no command
|
|
89
|
+
* in front of it — so the guard belongs here too and not only at the callers:
|
|
90
|
+
* a readonly document answers the empty array, which is the same "nothing was
|
|
91
|
+
* minted" every other refusal of this function returns, rather than an
|
|
92
|
+
* exception a caller would have to know to catch.
|
|
93
|
+
*
|
|
58
94
|
* @param formatId the format whose payload key carries the source ids — the
|
|
59
95
|
* `id` of the capability's {@link InterchangeFormat}, and the ONLY thing this
|
|
60
96
|
* function ever knew about BPMN.
|
|
61
97
|
*/
|
|
62
|
-
export function materializeInterchangeImport(std, formatId, elements) {
|
|
98
|
+
export function materializeInterchangeImport(std, formatId, elements, options = {}) {
|
|
63
99
|
const surface = std.get(GfxControllerIdentifier).surface;
|
|
64
100
|
if (!surface)
|
|
65
101
|
return [];
|
|
102
|
+
if (std.store.readonly)
|
|
103
|
+
return [];
|
|
104
|
+
const shift = importOffset(surface.elementModels, elements);
|
|
66
105
|
const bySource = new Map();
|
|
106
|
+
const byLocal = new Map();
|
|
107
|
+
const resolve = (name) => bySource.get(name) ?? byLocal.get(name);
|
|
67
108
|
const created = elements.map(props => {
|
|
68
|
-
const
|
|
109
|
+
const written = shift
|
|
110
|
+
? translateProps(props, shift)
|
|
111
|
+
: { ...props };
|
|
112
|
+
const children = written.children;
|
|
113
|
+
if (written.type === 'group' &&
|
|
114
|
+
children !== null &&
|
|
115
|
+
typeof children === 'object') {
|
|
116
|
+
written.children = Object.fromEntries(Object.keys(children).map(child => [
|
|
117
|
+
resolve(child) ?? child,
|
|
118
|
+
true,
|
|
119
|
+
]));
|
|
120
|
+
}
|
|
121
|
+
const id = surface.addElement(written);
|
|
69
122
|
const carried = props.interchange;
|
|
70
123
|
const source = carried?.[formatId]?.id;
|
|
71
124
|
// FIRST wins, matching a reader's own answer to a file that used one id
|
|
@@ -73,6 +126,31 @@ export function materializeInterchangeImport(std, formatId, elements) {
|
|
|
73
126
|
// naming that id means the first of them.
|
|
74
127
|
if (source !== undefined && !bySource.has(source))
|
|
75
128
|
bySource.set(source, id);
|
|
129
|
+
const local = props.id;
|
|
130
|
+
if (typeof local === 'string') {
|
|
131
|
+
// FIRST wins here too, and for the same reason — but where a duplicated
|
|
132
|
+
// SOURCE id is the FILE's mistake and the reader has already reported it,
|
|
133
|
+
// a duplicated provisional name is the READER's, and nothing else in the
|
|
134
|
+
// pipeline is in a position to notice. So it is named: every element is
|
|
135
|
+
// still imported, and the remark says which of the two a group or a
|
|
136
|
+
// connector naming it will have landed on.
|
|
137
|
+
if (byLocal.has(local)) {
|
|
138
|
+
// The English is FILLED from the wording rather than restated beside
|
|
139
|
+
// it, so the sentence a host translates and the sentence a playground
|
|
140
|
+
// with no catalogue reads cannot drift apart.
|
|
141
|
+
const messageParams = { name: local };
|
|
142
|
+
options.onNote?.({
|
|
143
|
+
kind: 'substituted-id',
|
|
144
|
+
elementId: id,
|
|
145
|
+
messageKey: IMPORT_DUPLICATE_NAME_KEY,
|
|
146
|
+
message: fillPlaceholders(IMPORT_DUPLICATE_NAME_FALLBACK, messageParams),
|
|
147
|
+
messageParams,
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
byLocal.set(local, id);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
76
154
|
return id;
|
|
77
155
|
});
|
|
78
156
|
for (const id of created) {
|
|
@@ -83,16 +161,129 @@ export function materializeInterchangeImport(std, formatId, elements) {
|
|
|
83
161
|
const end = model[side];
|
|
84
162
|
if (end?.id === undefined)
|
|
85
163
|
continue;
|
|
86
|
-
model[side] = { ...end, id:
|
|
164
|
+
model[side] = { ...end, id: resolve(end.id) ?? end.id };
|
|
87
165
|
}
|
|
88
166
|
}
|
|
89
167
|
return created;
|
|
90
168
|
}
|
|
169
|
+
/* ── Beside what is already there ─────────────────────────────────────── */
|
|
170
|
+
/**
|
|
171
|
+
* The space left between a board that is already drawn and one just imported.
|
|
172
|
+
*
|
|
173
|
+
* Wide enough that the two read as two documents rather than as one crowded
|
|
174
|
+
* sheet, and narrow enough that the viewport fit which follows still shows the
|
|
175
|
+
* new one at a useful zoom.
|
|
176
|
+
*/
|
|
177
|
+
const IMPORT_BESIDE_GAP = 200;
|
|
178
|
+
/** A box off one element's props, or nothing — `[x,y,w,h]`, as the store holds it. */
|
|
179
|
+
function propsBound(props) {
|
|
180
|
+
const xywh = props.xywh;
|
|
181
|
+
if (typeof xywh !== 'string')
|
|
182
|
+
return undefined;
|
|
183
|
+
try {
|
|
184
|
+
return Bound.deserialize(xywh);
|
|
185
|
+
}
|
|
186
|
+
catch {
|
|
187
|
+
return undefined;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* How far to move an imported board so it lands BESIDE what is already drawn.
|
|
192
|
+
*
|
|
193
|
+
* ## Why this is the seam's job and not each reader's
|
|
194
|
+
*
|
|
195
|
+
* "What arrives is a NEW board, never a merge" is already this file's rule
|
|
196
|
+
* ({@link importInterchangeFile}) — but a reader has no surface to look at, so
|
|
197
|
+
* it writes the coordinates the FILE gave it, and a second import of the same
|
|
198
|
+
* file therefore landed exactly on top of the first. Every framework had the
|
|
199
|
+
* bug and none of them could fix it: the only thing that knows what the canvas
|
|
200
|
+
* already holds is the function doing the writing.
|
|
201
|
+
*
|
|
202
|
+
* `undefined` on an EMPTY surface, and deliberately: with nothing to avoid, the
|
|
203
|
+
* board keeps the file's own coordinates, which is what every golden and every
|
|
204
|
+
* round-trip assertion is written against. Only a second import moves, which is
|
|
205
|
+
* exactly the case that was wrong.
|
|
206
|
+
*
|
|
207
|
+
* Connectors are excluded from the measurement for the reason
|
|
208
|
+
* {@link importInterchangeFile} excludes them from the viewport fit: a
|
|
209
|
+
* connector's bound is derived from a path the router has not computed yet, and
|
|
210
|
+
* it answers `[0, 0, 0, 0]` — which would anchor every offset to the origin.
|
|
211
|
+
*
|
|
212
|
+
* The list is read defensively because a SURFACE is not the only thing that ever
|
|
213
|
+
* reaches this function: several framework specs drive the pipeline through a
|
|
214
|
+
* hand-built stub that answers `addElement` and little else. A stub with no
|
|
215
|
+
* elements is an empty canvas, which is the one case that must not move.
|
|
216
|
+
*/
|
|
217
|
+
function importOffset(drawn, arriving) {
|
|
218
|
+
const occupied = getCommonBound((drawn ?? [])
|
|
219
|
+
.map(model => model.elementBound)
|
|
220
|
+
.filter((bound) => !!bound && bound.w > 0 && bound.h > 0));
|
|
221
|
+
if (!occupied)
|
|
222
|
+
return undefined;
|
|
223
|
+
const boxes = arriving
|
|
224
|
+
.map(propsBound)
|
|
225
|
+
.filter((bound) => bound !== undefined);
|
|
226
|
+
const incoming = getCommonBound(boxes);
|
|
227
|
+
if (!incoming)
|
|
228
|
+
return undefined;
|
|
229
|
+
return {
|
|
230
|
+
x: occupied.x + occupied.w + IMPORT_BESIDE_GAP - incoming.x,
|
|
231
|
+
y: occupied.y - incoming.y,
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* One element's props, moved.
|
|
236
|
+
*
|
|
237
|
+
* `xywh` and the label boxes, with one exception: a connector end that names no
|
|
238
|
+
* element carries an ABSOLUTE position rather than an anchor within a shape, and
|
|
239
|
+
* an end left behind would stretch the line back to where the file drew it. An
|
|
240
|
+
* end WITH an id carries a fraction of its shape's box and must not be touched.
|
|
241
|
+
*
|
|
242
|
+
* A connector's three label boxes (`labelXYWH`, and ADR 0020's two per-end
|
|
243
|
+
* siblings) are absolute `[x, y, w, h]` in the same space as `xywh`, so they
|
|
244
|
+
* move with everything else. A reader that creates a connector with an end label
|
|
245
|
+
* already positioned — `gfx/uml`'s materializer does — would otherwise drop the
|
|
246
|
+
* text at the origin of a board it was not imported onto.
|
|
247
|
+
*/
|
|
248
|
+
function translateProps(props, shift) {
|
|
249
|
+
const moved = { ...props };
|
|
250
|
+
const bound = propsBound(props);
|
|
251
|
+
if (bound) {
|
|
252
|
+
moved.xywh = new Bound(bound.x + shift.x, bound.y + shift.y, bound.w, bound.h).serialize();
|
|
253
|
+
}
|
|
254
|
+
for (const key of ['labelXYWH', 'sourceLabelXYWH', 'targetLabelXYWH']) {
|
|
255
|
+
const box = props[key];
|
|
256
|
+
if (!Array.isArray(box) || box.length !== 4)
|
|
257
|
+
continue;
|
|
258
|
+
if (!box.every(each => typeof each === 'number'))
|
|
259
|
+
continue;
|
|
260
|
+
const [x, y, w, h] = box;
|
|
261
|
+
moved[key] = [x + shift.x, y + shift.y, w, h];
|
|
262
|
+
}
|
|
263
|
+
for (const side of ['source', 'target']) {
|
|
264
|
+
const end = props[side];
|
|
265
|
+
if (!end || end.id !== undefined || !Array.isArray(end.position))
|
|
266
|
+
continue;
|
|
267
|
+
moved[side] = {
|
|
268
|
+
...end,
|
|
269
|
+
position: [end.position[0] + shift.x, end.position[1] + shift.y],
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
return moved;
|
|
273
|
+
}
|
|
91
274
|
/* ── Saying what it cost ──────────────────────────────────────────────── */
|
|
92
275
|
const IMPORT_DONE_KEY = 'com.labre.interchange.import.done';
|
|
93
276
|
const IMPORT_DONE_FALLBACK = 'file imported';
|
|
94
277
|
const IMPORT_FAILED_KEY = 'com.labre.interchange.import.failed';
|
|
95
278
|
const IMPORT_FAILED_FALLBACK = 'This file could not be imported';
|
|
279
|
+
/**
|
|
280
|
+
* The document went read-only between the moment the file was accepted and the
|
|
281
|
+
* moment its board was about to be written — see the second guard in
|
|
282
|
+
* {@link importInterchangeFile}. Its own sentence rather than the reader's,
|
|
283
|
+
* because nothing is wrong with the FILE.
|
|
284
|
+
*/
|
|
285
|
+
const IMPORT_READONLY_KEY = 'com.labre.interchange.import.readonly';
|
|
286
|
+
const IMPORT_READONLY_FALLBACK = 'This document became read-only while the file was being read, so nothing was imported.';
|
|
96
287
|
const IMPORT_REMARKS_KEY = 'com.labre.interchange.import.remarks';
|
|
97
288
|
const IMPORT_REMARKS_FALLBACK = 'What the import could not keep as it was';
|
|
98
289
|
const IMPORT_CONSOLE_KEY = 'com.labre.interchange.import.console';
|
|
@@ -103,6 +294,16 @@ const IMPORT_CARRIED_KEY = 'com.labre.interchange.import.carried';
|
|
|
103
294
|
const IMPORT_CARRIED_FALLBACK = 'carried';
|
|
104
295
|
const IMPORT_QUARANTINED_KEY = 'com.labre.interchange.import.quarantined';
|
|
105
296
|
const IMPORT_QUARANTINED_FALLBACK = 'quarantined';
|
|
297
|
+
/**
|
|
298
|
+
* The one remark the MATERIALIZER raises itself (see the provisional-name note
|
|
299
|
+
* on `SerializedElementProps`) — this pipeline's own words about its own
|
|
300
|
+
* substitution, not a reader's, so it is keyed here with the rest of the
|
|
301
|
+
* pipeline's chrome rather than in any one format's table. `{{name}}` is the
|
|
302
|
+
* provisional name the reader minted, filled from `messageParams` by
|
|
303
|
+
* `resolveNoteMessage` exactly as a reader's own remark is.
|
|
304
|
+
*/
|
|
305
|
+
const IMPORT_DUPLICATE_NAME_KEY = 'com.labre.interchange.import.duplicate-provisional-name';
|
|
306
|
+
const IMPORT_DUPLICATE_NAME_FALLBACK = 'Two imported elements were handed the same provisional name "{{name}}". Both are on the board; anything referring to that name points at the first of them.';
|
|
106
307
|
/**
|
|
107
308
|
* How many remarks the second notification spells out before it hands the
|
|
108
309
|
* reader to the console.
|
|
@@ -126,18 +327,28 @@ const REMARKS_IN_A_NOTIFICATION = 5;
|
|
|
126
327
|
*/
|
|
127
328
|
const formatLabel = (format) => format.id.toUpperCase();
|
|
128
329
|
/**
|
|
129
|
-
* One remark
|
|
330
|
+
* One remark's own wording — the reader that produced it had no `std` and
|
|
331
|
+
* could not translate it (P3), so this is where a remark that declared a key
|
|
332
|
+
* (`InterchangeNote.messageKey`) gets it, `{{name}}` holes filled from
|
|
333
|
+
* `messageParams` with no host catalogue exactly as they were filled by the
|
|
334
|
+
* reader's own string interpolation before either field existed. A remark
|
|
335
|
+
* with no key is one that names something out of the file with no sentence
|
|
336
|
+
* shape worth sharing, and is shown as the reader wrote it.
|
|
130
337
|
*
|
|
131
|
-
* The
|
|
132
|
-
*
|
|
133
|
-
* `
|
|
134
|
-
*
|
|
135
|
-
*
|
|
338
|
+
* The one function every READER of `note.message` goes through — the
|
|
339
|
+
* notification line below (`remarkLine`) and the console table
|
|
340
|
+
* (`reportInterchangeImport`) both resolve through it, so a note keyed via
|
|
341
|
+
* the `TABLE.key[1]` pattern (its OWN fallback, not a hand-rebuilt literal)
|
|
342
|
+
* reads identically in both rather than showing raw `{{tag}}` in the console.
|
|
136
343
|
*/
|
|
137
|
-
function
|
|
138
|
-
|
|
139
|
-
? translateKey(std, note.messageKey, note.message)
|
|
344
|
+
function resolveNoteMessage(std, note) {
|
|
345
|
+
return note.messageKey
|
|
346
|
+
? translateKey(std, note.messageKey, note.message, note.messageParams)
|
|
140
347
|
: note.message;
|
|
348
|
+
}
|
|
349
|
+
/** One remark, as the line a reader sees. */
|
|
350
|
+
function remarkLine(std, note) {
|
|
351
|
+
const message = resolveNoteMessage(std, note);
|
|
141
352
|
const subject = note.sourceId ?? note.element;
|
|
142
353
|
return subject ? `${subject}: ${message}` : message;
|
|
143
354
|
}
|
|
@@ -220,7 +431,7 @@ export function reportInterchangeImport(std, format, report) {
|
|
|
220
431
|
kind: note.kind,
|
|
221
432
|
source: note.sourceId ?? '',
|
|
222
433
|
element: note.element ?? '',
|
|
223
|
-
message: note
|
|
434
|
+
message: resolveNoteMessage(std, note),
|
|
224
435
|
})));
|
|
225
436
|
notifyImport(std, {
|
|
226
437
|
title: translateKey(std, IMPORT_REMARKS_KEY, IMPORT_REMARKS_FALLBACK),
|
|
@@ -255,7 +466,7 @@ export function reportInterchangeImport(std, format, report) {
|
|
|
255
466
|
* deliberately so: a dialog a document cannot honour should never open in the
|
|
256
467
|
* first place.
|
|
257
468
|
*/
|
|
258
|
-
export async function runInterchangeImportFile(std, capability) {
|
|
469
|
+
export async function runInterchangeImportFile(std, capability, options = {}) {
|
|
259
470
|
const gfx = std.get(GfxControllerIdentifier);
|
|
260
471
|
if (!gfx.surface || std.store.readonly)
|
|
261
472
|
return;
|
|
@@ -268,7 +479,7 @@ export async function runInterchangeImportFile(std, capability) {
|
|
|
268
479
|
// know what they just did.
|
|
269
480
|
if (!file)
|
|
270
481
|
return;
|
|
271
|
-
await importInterchangeFile(std, capability, file);
|
|
482
|
+
await importInterchangeFile(std, capability, file, options);
|
|
272
483
|
}
|
|
273
484
|
/**
|
|
274
485
|
* The import itself, over a file the caller ALREADY HAS: run the declared
|
|
@@ -307,19 +518,48 @@ export async function runInterchangeImportFile(std, capability) {
|
|
|
307
518
|
* its refusals it was, so it is shown as it is rather than replaced with a
|
|
308
519
|
* wording of our own that knows less.
|
|
309
520
|
*/
|
|
310
|
-
export async function importInterchangeFile(std, capability, file) {
|
|
521
|
+
export async function importInterchangeFile(std, capability, file, options = {}) {
|
|
311
522
|
const gfx = std.get(GfxControllerIdentifier);
|
|
312
523
|
if (!gfx.surface || std.store.readonly)
|
|
313
524
|
return;
|
|
314
525
|
const { format } = capability;
|
|
315
526
|
let result;
|
|
316
527
|
try {
|
|
317
|
-
|
|
528
|
+
const text = await file.text();
|
|
529
|
+
// The container, opened — see {@link InterchangeImportOptions.decode}. Inside
|
|
530
|
+
// the same `try` as the reader, deliberately: "this .drawio could not be
|
|
531
|
+
// inflated" and "this is not a BPMN document" are the same event to the
|
|
532
|
+
// person who picked the file, and they take the same notification.
|
|
533
|
+
const source = options.decode ? await options.decode(text, file) : text;
|
|
534
|
+
result = capability.run(source, { name: file.name });
|
|
318
535
|
}
|
|
319
536
|
catch (error) {
|
|
537
|
+
// `InterchangeImportError` checked FIRST: a reader that throws it declared
|
|
538
|
+
// a key for its own refusal, resolved exactly like a note's `messageKey`
|
|
539
|
+
// (see `remarkLine`, above). Any other `Error` (or a non-`Error` throw)
|
|
540
|
+
// reads as it always did.
|
|
541
|
+
const message = error instanceof InterchangeImportError && error.messageKey
|
|
542
|
+
? translateKey(std, error.messageKey, error.message, error.messageParams)
|
|
543
|
+
: error instanceof Error
|
|
544
|
+
? error.message
|
|
545
|
+
: String(error);
|
|
320
546
|
notifyImport(std, {
|
|
321
547
|
title: translateKey(std, IMPORT_FAILED_KEY, IMPORT_FAILED_FALLBACK),
|
|
322
|
-
message
|
|
548
|
+
message,
|
|
549
|
+
accent: 'error',
|
|
550
|
+
});
|
|
551
|
+
return;
|
|
552
|
+
}
|
|
553
|
+
// The guard at the top was a decision taken BEFORE two `await`s, and rights
|
|
554
|
+
// can be lost while they run: a remote cascade turning the store read-only
|
|
555
|
+
// between the picker and this line is the same class of defect as issue #324
|
|
556
|
+
// ("Cannot remove element in readonly mode"). Writing anyway rejects a
|
|
557
|
+
// promise nobody awaits, and returning in silence loses a file the user
|
|
558
|
+
// chose — so it is said, through the channel every other import failure uses.
|
|
559
|
+
if (std.store.readonly) {
|
|
560
|
+
notifyImport(std, {
|
|
561
|
+
title: translateKey(std, IMPORT_FAILED_KEY, IMPORT_FAILED_FALLBACK),
|
|
562
|
+
message: translateKey(std, IMPORT_READONLY_KEY, IMPORT_READONLY_FALLBACK),
|
|
323
563
|
accent: 'error',
|
|
324
564
|
});
|
|
325
565
|
return;
|
|
@@ -328,8 +568,15 @@ export async function importInterchangeFile(std, capability, file) {
|
|
|
328
568
|
// `captureSync` before opens a boundary, the writes land inside it, and the
|
|
329
569
|
// second one closes it. An import a user has to undo forty times is an import
|
|
330
570
|
// they cannot undo.
|
|
571
|
+
// What the WRITING found that the reading could not: a provisional name the
|
|
572
|
+
// reader handed out twice. Collected here rather than pushed into the
|
|
573
|
+
// reader's own array, which is `readonly` and is the reader's statement about
|
|
574
|
+
// the file — this is a statement about the import.
|
|
575
|
+
const written = [];
|
|
331
576
|
std.store.captureSync();
|
|
332
|
-
const created = materializeInterchangeImport(std, format.id, result.elements
|
|
577
|
+
const created = materializeInterchangeImport(std, format.id, result.elements, {
|
|
578
|
+
onNote: note => written.push(note),
|
|
579
|
+
});
|
|
333
580
|
std.store.captureSync();
|
|
334
581
|
// …and then bring it into view, which is what template insertion does for
|
|
335
582
|
// the same reason: a board that landed off-screen looks like a command that
|
|
@@ -362,7 +609,9 @@ export async function importInterchangeFile(std, capability, file) {
|
|
|
362
609
|
gfx.viewport.setViewportByBound(bound, [padding, padding, padding, padding], true);
|
|
363
610
|
}
|
|
364
611
|
gfx.tool.setTool(DefaultTool);
|
|
365
|
-
reportInterchangeImport(std, format,
|
|
612
|
+
reportInterchangeImport(std, format, written.length === 0
|
|
613
|
+
? result.report
|
|
614
|
+
: { ...result.report, notes: [...result.report.notes, ...written] });
|
|
366
615
|
}
|
|
367
616
|
/* ── What can read a file called this ─────────────────────────────────── */
|
|
368
617
|
/**
|
|
@@ -69,6 +69,24 @@ export type InterchangeDirection = 'import' | 'export';
|
|
|
69
69
|
* One element as it is handed to `surface.addElement` — the exact shape the
|
|
70
70
|
* store already takes, so an importer's output is written with no translation
|
|
71
71
|
* step in between and no live model in sight.
|
|
72
|
+
*
|
|
73
|
+
* ## The provisional `id`, and how a reader points at itself
|
|
74
|
+
*
|
|
75
|
+
* A reader names things the FILE named through `interchange[formatId].id`, and
|
|
76
|
+
* that is the identity `materializeInterchangeImport` remaps endpoints from. It
|
|
77
|
+
* is not enough on its own: a framework artefact is routinely several elements
|
|
78
|
+
* the file never mentioned — a shape, its compartment texts, and the group that
|
|
79
|
+
* makes them one thing — so a reader may also put an `id` of its own on each
|
|
80
|
+
* element. `surface.addElement` OVERWRITES it with a nanoid and is documented
|
|
81
|
+
* to, which is exactly what makes it safe as a local name: it reaches no
|
|
82
|
+
* document, it is read by the materializer and nowhere else, and it cannot
|
|
83
|
+
* collide with a real surface id. Two rules make it work — a reader emits an
|
|
84
|
+
* element BEFORE any group that holds it (a group's `children` are rewritten
|
|
85
|
+
* from the map built so far, in one pass, rather than deferred like a
|
|
86
|
+
* connector's two ends), and a SOURCE id wins wherever both could answer, so a
|
|
87
|
+
* reader that mints no local name behaves exactly as it did before this
|
|
88
|
+
* existed. A provisional name used twice resolves to the FIRST element that
|
|
89
|
+
* claimed it, and the import says so in a `substituted-id` note.
|
|
72
90
|
*/
|
|
73
91
|
export type SerializedElementProps = Record<string, unknown> & {
|
|
74
92
|
type: string;
|
|
@@ -97,21 +115,26 @@ export interface InterchangeNote {
|
|
|
97
115
|
message: string;
|
|
98
116
|
/**
|
|
99
117
|
* The i18n key {@link message} is the English default of — set only when the
|
|
100
|
-
* remark is a FIXED sentence
|
|
118
|
+
* remark is a FIXED sentence, one per SHAPE of sentence rather than one per
|
|
119
|
+
* exact string (a `{{name}}` hole is filled by {@link messageParams}, not by
|
|
120
|
+
* minting a new key for every value the file happens to carry).
|
|
101
121
|
*
|
|
102
122
|
* A reader is a pure function of text (`docs/adr/0012`, P3): it has no `std`,
|
|
103
123
|
* so it cannot reach the host's catalogue and hands the key over instead, and
|
|
104
124
|
* `reportInterchangeImport` resolves it when it draws the report. That is the
|
|
105
|
-
* whole of the seam here
|
|
106
|
-
* say the same thing every time.
|
|
125
|
+
* whole of the seam here.
|
|
107
126
|
*
|
|
108
|
-
* A remark that
|
|
109
|
-
*
|
|
110
|
-
*
|
|
111
|
-
* invent a grammar for sentences with holes in them, which is exactly what
|
|
112
|
-
* the three interchange count labels already refuse to do.
|
|
127
|
+
* A remark that names something out of the file with no sentence shape worth
|
|
128
|
+
* sharing (a raw dump, a one-off diagnostic) carries no key and stays
|
|
129
|
+
* English — the seam still has no pluralisation, which is the host's.
|
|
113
130
|
*/
|
|
114
131
|
messageKey?: string;
|
|
132
|
+
/**
|
|
133
|
+
* `{{name}}`-style values for {@link messageKey}'s placeholders — the file's
|
|
134
|
+
* own words (a unit, a tag name), never a sentence of their own. Ignored
|
|
135
|
+
* when {@link messageKey} is absent.
|
|
136
|
+
*/
|
|
137
|
+
messageParams?: Record<string, string | number>;
|
|
115
138
|
}
|
|
116
139
|
/**
|
|
117
140
|
* The five things worth saying about one item, and no sixth.
|
|
@@ -161,6 +184,33 @@ export interface InterchangeReport {
|
|
|
161
184
|
*/
|
|
162
185
|
sourceVersion?: string;
|
|
163
186
|
}
|
|
187
|
+
/**
|
|
188
|
+
* A reader's own refusal — THROWN, not returned, because the report's three
|
|
189
|
+
* counts (`InterchangeReport`) cannot say "this is not a file I can read": a
|
|
190
|
+
* report of three zeroes would claim an empty document where there was none
|
|
191
|
+
* (see `importInterchangeFile`, "Failure is an exception, and it says which
|
|
192
|
+
* one", `interchange-import.ts`).
|
|
193
|
+
*
|
|
194
|
+
* Carries the reader's own English sentence as `Error.message`, so every
|
|
195
|
+
* existing `catch` site that only ever did `error.message` keeps reading
|
|
196
|
+
* exactly what it read before — plus the same optional key/params pair
|
|
197
|
+
* {@link InterchangeNote} carries, on the same seam: a reader has no `std`
|
|
198
|
+
* (`docs/adr/0012`, P3) and cannot translate its own refusal, so the catch
|
|
199
|
+
* site that DOES have one (`importInterchangeFile`) resolves it exactly as
|
|
200
|
+
* `remarkLine` resolves a note.
|
|
201
|
+
*
|
|
202
|
+
* Optional and additive: a reader that still throws a plain `Error` (or any
|
|
203
|
+
* other capability's failure) is caught exactly as before — this class only
|
|
204
|
+
* gives the catch site a SECOND thing to check, never a first requirement.
|
|
205
|
+
*/
|
|
206
|
+
export declare class InterchangeImportError extends Error {
|
|
207
|
+
readonly messageKey?: string;
|
|
208
|
+
readonly messageParams?: Record<string, string | number>;
|
|
209
|
+
constructor(message: string, options?: {
|
|
210
|
+
messageKey?: string;
|
|
211
|
+
messageParams?: Record<string, string | number>;
|
|
212
|
+
});
|
|
213
|
+
}
|
|
164
214
|
/** What the caller tells an exporter about the document it is producing. */
|
|
165
215
|
export interface InterchangeExportContext {
|
|
166
216
|
/**
|
|
@@ -1,4 +1,31 @@
|
|
|
1
1
|
import { createIdentifier } from '../../global/di/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* A reader's own refusal — THROWN, not returned, because the report's three
|
|
4
|
+
* counts (`InterchangeReport`) cannot say "this is not a file I can read": a
|
|
5
|
+
* report of three zeroes would claim an empty document where there was none
|
|
6
|
+
* (see `importInterchangeFile`, "Failure is an exception, and it says which
|
|
7
|
+
* one", `interchange-import.ts`).
|
|
8
|
+
*
|
|
9
|
+
* Carries the reader's own English sentence as `Error.message`, so every
|
|
10
|
+
* existing `catch` site that only ever did `error.message` keeps reading
|
|
11
|
+
* exactly what it read before — plus the same optional key/params pair
|
|
12
|
+
* {@link InterchangeNote} carries, on the same seam: a reader has no `std`
|
|
13
|
+
* (`docs/adr/0012`, P3) and cannot translate its own refusal, so the catch
|
|
14
|
+
* site that DOES have one (`importInterchangeFile`) resolves it exactly as
|
|
15
|
+
* `remarkLine` resolves a note.
|
|
16
|
+
*
|
|
17
|
+
* Optional and additive: a reader that still throws a plain `Error` (or any
|
|
18
|
+
* other capability's failure) is caught exactly as before — this class only
|
|
19
|
+
* gives the catch site a SECOND thing to check, never a first requirement.
|
|
20
|
+
*/
|
|
21
|
+
export class InterchangeImportError extends Error {
|
|
22
|
+
constructor(message, options) {
|
|
23
|
+
super(message);
|
|
24
|
+
this.name = 'InterchangeImportError';
|
|
25
|
+
this.messageKey = options?.messageKey;
|
|
26
|
+
this.messageParams = options?.messageParams;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
2
29
|
/** The separator the triple is built from, and therefore reserved in its parts. */
|
|
3
30
|
const ID_SEPARATOR = ':';
|
|
4
31
|
/** The one way to spell a capability's id. */
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { type ChromeWording, type FrameworkElementEvent, type ToolbarAction } from '../../affine-shared/services/index.js';
|
|
2
|
+
import type { BlockStdScope, CommandOwner } from '../../std/index.js';
|
|
3
|
+
import { type TemplateResult } from 'lit';
|
|
4
|
+
/**
|
|
5
|
+
* The legend BUTTON — one factory and one emitter for every framework that has
|
|
6
|
+
* a legend, where there were seven copies of the same twenty lines.
|
|
7
|
+
*
|
|
8
|
+
* The legend deliberately stays a BUTTON and never becomes a command (PO
|
|
9
|
+
* arbitration of 27/08/2026, R6 of `docs/add-a-framework/02-framework-rules.md`):
|
|
10
|
+
* generating one belongs to a board you have SELECTED and to nothing else, so
|
|
11
|
+
* it is absent from the catalogue, the palette and Settings › Shortcuts — and
|
|
12
|
+
* the command registry's per-framework counts must not move because of it.
|
|
13
|
+
*
|
|
14
|
+
* The cost of staying outside `runCommand` is that the telemetry it owes is
|
|
15
|
+
* emitted by hand. {@link trackLegendCreated} is where, once, so the wire
|
|
16
|
+
* values cannot drift apart across seven files again.
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* The HISTORICAL PostHog value of the `framework` dimension — `context-map`,
|
|
20
|
+
* not `ddd-context-map`, and `event-storming`, not `ddd-event-storming`. Taken
|
|
21
|
+
* from the event's own closed union rather than restated, so a framework that
|
|
22
|
+
* never joined the taxonomy cannot be passed here by mistake.
|
|
23
|
+
*/
|
|
24
|
+
export type LegendFramework = FrameworkElementEvent['framework'];
|
|
25
|
+
/**
|
|
26
|
+
* Contextual-toolbar glyph — "generate the legend of what is on this board".
|
|
27
|
+
* One icon because it is one gesture; the Core Domain chart has drawn this exact
|
|
28
|
+
* box-and-rows since its legend button shipped and the others borrowed it.
|
|
29
|
+
*
|
|
30
|
+
* `html` rather than `svg`: a toolbar action's `icon` is rendered as a
|
|
31
|
+
* standalone template, unlike the senior-button glyphs that are interpolated
|
|
32
|
+
* into an outer `<svg>`.
|
|
33
|
+
*/
|
|
34
|
+
export declare const legendIcon: TemplateResult<1>;
|
|
35
|
+
/**
|
|
36
|
+
* The ONE `FrameworkLegendCreated` emission, with the wire values every
|
|
37
|
+
* framework's own button has been sending.
|
|
38
|
+
*
|
|
39
|
+
* `framework` is the HISTORICAL PostHog value (`FrameworkDescriptor.
|
|
40
|
+
* telemetryKey`): `context-map`, not `ddd-context-map`. It is a parameter and
|
|
41
|
+
* not derived from anything, because the two spellings differ for three of the
|
|
42
|
+
* eight frameworks and a prefix rule would quietly rename a metric.
|
|
43
|
+
*/
|
|
44
|
+
export declare function trackLegendCreated(std: BlockStdScope, framework: LegendFramework, module: string): void;
|
|
45
|
+
export interface LegendToolbarActionOptions<M extends {
|
|
46
|
+
xywh: string;
|
|
47
|
+
}> {
|
|
48
|
+
/**
|
|
49
|
+
* Sort key inside the row, and NOT a constant across frameworks: the toolbar
|
|
50
|
+
* orders lexicographically by id, so a legend that must land after "remove a
|
|
51
|
+
* lane" is `c.legend` while C4's is `b.legend` and Wardley's `d.legend`.
|
|
52
|
+
* Defaults to `b.legend`, the commonest.
|
|
53
|
+
*/
|
|
54
|
+
id?: string;
|
|
55
|
+
/** The board element this button documents — how it finds it in the selection. */
|
|
56
|
+
Model: abstract new (...args: any[]) => M;
|
|
57
|
+
/** Whose commands the rows are derived from. See {@link createBoardLegend}. */
|
|
58
|
+
owner: CommandOwner;
|
|
59
|
+
/** The HISTORICAL telemetry value. See {@link trackLegendCreated}. */
|
|
60
|
+
framework: LegendFramework;
|
|
61
|
+
/**
|
|
62
|
+
* The `module` dimension. Defaults to `` `${framework} toolbar` ``, which is
|
|
63
|
+
* what six of the seven buttons send; UML's is `uml toolbox` and says so.
|
|
64
|
+
*/
|
|
65
|
+
module?: string;
|
|
66
|
+
tooltipWording?: ChromeWording;
|
|
67
|
+
icon?: TemplateResult;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* The shared legend entry of a board's contextual toolbar.
|
|
71
|
+
*
|
|
72
|
+
* Registered by each framework in its OWN flag-gated module
|
|
73
|
+
* (`custom:affine:surface:<board>`), merged with `validationToolbarConfig`'s
|
|
74
|
+
* actions: a flavour may carry exactly one toolbar module, and generating a
|
|
75
|
+
* legend is tooling a flag may take away. What the gesture already WROTE is
|
|
76
|
+
* document content and keeps being painted with the flag off — the box is made
|
|
77
|
+
* of plain shapes, text and the framework's own always-on renderers.
|
|
78
|
+
*/
|
|
79
|
+
export declare function legendToolbarAction<M extends {
|
|
80
|
+
xywh: string;
|
|
81
|
+
}>({ id, Model, owner, framework, module, tooltipWording, icon, }: LegendToolbarActionOptions<M>): ToolbarAction;
|