@formicoidea/labre-core 0.40.0 → 0.41.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_pkgs/affine-block-attachment/attachment-block.js +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/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 +2 -2
- 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-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/embed-iframe-block.js +3 -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 +12 -6
- 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-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/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/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/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.js +15 -6
- 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/translations.d.ts +61 -0
- package/dist/_pkgs/affine-block-root/translations.js +172 -0
- package/dist/_pkgs/affine-block-surface/extensions/export-manager/export-manager.js +3 -1
- package/dist/_pkgs/affine-block-surface/extensions/index.d.ts +1 -0
- package/dist/_pkgs/affine-block-surface/extensions/index.js +1 -0
- package/dist/_pkgs/affine-block-surface/extensions/interchange-import.js +31 -12
- package/dist/_pkgs/affine-block-surface/extensions/interchange.d.ts +40 -8
- package/dist/_pkgs/affine-block-surface/extensions/interchange.js +27 -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.js +3 -2
- 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-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 +6 -0
- package/dist/_pkgs/affine-components/color-picker/button.js +15 -1
- 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/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 +2 -0
- package/dist/_pkgs/affine-components/edgeless-shape-color-picker/color-picker.js +34 -5
- 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 +19 -4
- 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 +141 -0
- package/dist/_pkgs/affine-components/translations.js +478 -0
- 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/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 +4 -2
- package/dist/_pkgs/affine-gfx-brush/toolbar/configs/highlighter.js +4 -2
- 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/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/text/edgeless-connector-label-editor.js +3 -2
- package/dist/_pkgs/affine-gfx-connector/toolbar/config.d.ts +4 -1
- package/dist/_pkgs/affine-gfx-connector/toolbar/config.js +24 -10
- 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/translations.d.ts +32 -0
- package/dist/_pkgs/affine-gfx-connector/translations.js +79 -0
- 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/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 +24 -0
- package/dist/_pkgs/affine-gfx-group/translations.js +33 -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/toolbar/config.d.ts +2 -0
- package/dist/_pkgs/affine-gfx-shape/toolbar/config.js +29 -8
- 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 +15 -5
- 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/edgeless-text-editor.js +3 -2
- package/dist/_pkgs/affine-gfx-text/toolbar/actions.d.ts +1 -1
- package/dist/_pkgs/affine-gfx-text/toolbar/actions.js +22 -9
- package/dist/_pkgs/affine-gfx-text/toolbar/text-menu.js +1 -0
- package/dist/_pkgs/affine-gfx-text/translations.d.ts +31 -0
- package/dist/_pkgs/affine-gfx-text/translations.js +64 -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/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-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/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/translation-service/chrome.d.ts +362 -0
- package/dist/_pkgs/affine-shared/services/translation-service/chrome.js +955 -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-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.js +2 -2
- 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/edgeless-toolbar.js +2 -1
- 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 +31 -8
- 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-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/std/extension/translation-manifest.d.ts +7 -0
- 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/translations.js +144 -5
- package/package.json +1 -1
|
@@ -97,21 +97,26 @@ export interface InterchangeNote {
|
|
|
97
97
|
message: string;
|
|
98
98
|
/**
|
|
99
99
|
* The i18n key {@link message} is the English default of — set only when the
|
|
100
|
-
* remark is a FIXED sentence
|
|
100
|
+
* remark is a FIXED sentence, one per SHAPE of sentence rather than one per
|
|
101
|
+
* exact string (a `{{name}}` hole is filled by {@link messageParams}, not by
|
|
102
|
+
* minting a new key for every value the file happens to carry).
|
|
101
103
|
*
|
|
102
104
|
* A reader is a pure function of text (`docs/adr/0012`, P3): it has no `std`,
|
|
103
105
|
* so it cannot reach the host's catalogue and hands the key over instead, and
|
|
104
106
|
* `reportInterchangeImport` resolves it when it draws the report. That is the
|
|
105
|
-
* whole of the seam here
|
|
106
|
-
* say the same thing every time.
|
|
107
|
+
* whole of the seam here.
|
|
107
108
|
*
|
|
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.
|
|
109
|
+
* A remark that names something out of the file with no sentence shape worth
|
|
110
|
+
* sharing (a raw dump, a one-off diagnostic) carries no key and stays
|
|
111
|
+
* English — the seam still has no pluralisation, which is the host's.
|
|
113
112
|
*/
|
|
114
113
|
messageKey?: string;
|
|
114
|
+
/**
|
|
115
|
+
* `{{name}}`-style values for {@link messageKey}'s placeholders — the file's
|
|
116
|
+
* own words (a unit, a tag name), never a sentence of their own. Ignored
|
|
117
|
+
* when {@link messageKey} is absent.
|
|
118
|
+
*/
|
|
119
|
+
messageParams?: Record<string, string | number>;
|
|
115
120
|
}
|
|
116
121
|
/**
|
|
117
122
|
* The five things worth saying about one item, and no sixth.
|
|
@@ -161,6 +166,33 @@ export interface InterchangeReport {
|
|
|
161
166
|
*/
|
|
162
167
|
sourceVersion?: string;
|
|
163
168
|
}
|
|
169
|
+
/**
|
|
170
|
+
* A reader's own refusal — THROWN, not returned, because the report's three
|
|
171
|
+
* counts (`InterchangeReport`) cannot say "this is not a file I can read": a
|
|
172
|
+
* report of three zeroes would claim an empty document where there was none
|
|
173
|
+
* (see `importInterchangeFile`, "Failure is an exception, and it says which
|
|
174
|
+
* one", `interchange-import.ts`).
|
|
175
|
+
*
|
|
176
|
+
* Carries the reader's own English sentence as `Error.message`, so every
|
|
177
|
+
* existing `catch` site that only ever did `error.message` keeps reading
|
|
178
|
+
* exactly what it read before — plus the same optional key/params pair
|
|
179
|
+
* {@link InterchangeNote} carries, on the same seam: a reader has no `std`
|
|
180
|
+
* (`docs/adr/0012`, P3) and cannot translate its own refusal, so the catch
|
|
181
|
+
* site that DOES have one (`importInterchangeFile`) resolves it exactly as
|
|
182
|
+
* `remarkLine` resolves a note.
|
|
183
|
+
*
|
|
184
|
+
* Optional and additive: a reader that still throws a plain `Error` (or any
|
|
185
|
+
* other capability's failure) is caught exactly as before — this class only
|
|
186
|
+
* gives the catch site a SECOND thing to check, never a first requirement.
|
|
187
|
+
*/
|
|
188
|
+
export declare class InterchangeImportError extends Error {
|
|
189
|
+
readonly messageKey?: string;
|
|
190
|
+
readonly messageParams?: Record<string, string | number>;
|
|
191
|
+
constructor(message: string, options?: {
|
|
192
|
+
messageKey?: string;
|
|
193
|
+
messageParams?: Record<string, string | number>;
|
|
194
|
+
});
|
|
195
|
+
}
|
|
164
196
|
/** What the caller tells an exporter about the document it is producing. */
|
|
165
197
|
export interface InterchangeExportContext {
|
|
166
198
|
/**
|
|
@@ -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. */
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type ToolbarContext, type ToolbarModuleConfig } from '../../affine-shared/services/index.js';
|
|
2
|
-
import type { FrameworkId } from '../../std/index.js';
|
|
2
|
+
import type { BlockStdScope, FrameworkId } from '../../std/index.js';
|
|
3
3
|
import type { GfxPrimitiveElementModel } from '../../std/gfx/index.js';
|
|
4
4
|
import type { TemplateResult } from 'lit';
|
|
5
5
|
/**
|
|
@@ -148,7 +148,7 @@ export interface MorphSpec<K extends string = string> {
|
|
|
148
148
|
* still says what the SOURCE kind derived may be rewritten, and a line the
|
|
149
149
|
* author typed over is theirs.
|
|
150
150
|
*/
|
|
151
|
-
afterMorph?(model: GfxPrimitiveElementModel, from: K, to: K): void;
|
|
151
|
+
afterMorph?(model: GfxPrimitiveElementModel, from: K, to: K, std?: BlockStdScope): void;
|
|
152
152
|
/** The role a kind means — the `from` / `to` of the telemetry, ids only. */
|
|
153
153
|
roleOf(kind: K): string;
|
|
154
154
|
/**
|
|
@@ -158,8 +158,11 @@ export function applyMorph(ctx, spec, kind) {
|
|
|
158
158
|
entry.target.clearField(field);
|
|
159
159
|
// Inside the loop and inside the one checkpoint above: whatever the rest of
|
|
160
160
|
// a composite owes this morph — C4's type line — is part of the same single
|
|
161
|
-
// ctrl+z as the kind that made it necessary.
|
|
162
|
-
|
|
161
|
+
// ctrl+z as the kind that made it necessary. `ctx.std` is handed through so
|
|
162
|
+
// a rewrite can tell an untouched TRANSLATED placeholder from real content
|
|
163
|
+
// (`c4MorphedTypeLine`, `wardleyMorphedLabel`) — with no host it behaves
|
|
164
|
+
// exactly as it always has, English only.
|
|
165
|
+
spec.afterMorph?.(entry.selected, entry.kind, kind, ctx.std);
|
|
163
166
|
}
|
|
164
167
|
// The one DIRECT emission in this module, and the arbitrated exception is the
|
|
165
168
|
// same one the C4 legend button makes: there is no command behind this
|
|
@@ -32,7 +32,7 @@ var __runInitializers = (this && this.__runInitializers) || function (thisArg, i
|
|
|
32
32
|
}
|
|
33
33
|
return useValue ? value : void 0;
|
|
34
34
|
};
|
|
35
|
-
import { buildOccurrencePatch, getUniverseRegistry, publishOccurrenceMaterialities, translateKey, } from '../../affine-shared/services/index.js';
|
|
35
|
+
import { buildOccurrencePatch, getUniverseRegistry, publishOccurrenceMaterialities, translateKey, translateTagLabel, } from '../../affine-shared/services/index.js';
|
|
36
36
|
import { getRegisteredCommands, runCommand, WidgetViewExtension, } from '../../std/index.js';
|
|
37
37
|
import { resolvePivotBinding } from '../../std/gfx/index.js';
|
|
38
38
|
import { effect } from '@preact/signals-core';
|
|
@@ -330,7 +330,8 @@ let ReadingProposalWidget = (() => {
|
|
|
330
330
|
const def = getUniverseRegistry(this.std).tag(tagId);
|
|
331
331
|
if (!def || def.values === 'open')
|
|
332
332
|
return valueId;
|
|
333
|
-
|
|
333
|
+
const value = def.values.find(value => value.id === valueId);
|
|
334
|
+
return (value && translateTagLabel(this.std, value)) || valueId;
|
|
334
335
|
}
|
|
335
336
|
_field(testid, label, body) {
|
|
336
337
|
return html `<div class="reading-field" data-testid=${testid}>
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { ChromeWording } from '../../affine-shared/services/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* The SVG importer's own remarks (`svg-sketch.ts`) — one key per SENTENCE
|
|
4
|
+
* SHAPE, not per exact string: a `{{name}}` hole is filled by
|
|
5
|
+
* `InterchangeNote.messageParams` at report time
|
|
6
|
+
* (`interchange-import.ts`'s `remarkLine`), never split into two keys or
|
|
7
|
+
* baked into the key itself.
|
|
8
|
+
*
|
|
9
|
+
* The reader that raises these is a pure function of text (`docs/adr/0012`,
|
|
10
|
+
* P3): it has no `std`, so each note carries its key and (where it has one)
|
|
11
|
+
* its params, and `reportInterchangeImport` resolves both when it draws the
|
|
12
|
+
* report — see `InterchangeNote.messageKey` / `.messageParams`.
|
|
13
|
+
*
|
|
14
|
+
* NOT included: the three `throw new Error(...)` refusals `parseSvgRoot`
|
|
15
|
+
* raises for a malformed or empty file. Those are caught by
|
|
16
|
+
* `importInterchangeFile`'s single, format-agnostic `catch` — shared by
|
|
17
|
+
* every interchange reader (BPMN, mermaid, OWM, this one) — which shows
|
|
18
|
+
* `error.message` verbatim BY DESIGN ("shown as it is rather than replaced
|
|
19
|
+
* with a wording of our own that knows less"). Keying them would mean
|
|
20
|
+
* teaching that shared catch to resolve a per-reader key, a mechanism this
|
|
21
|
+
* lot does not own the other readers to touch — flagged in this lot's report
|
|
22
|
+
* instead of invented here.
|
|
23
|
+
*/
|
|
24
|
+
export declare const SVG_SKETCH_FONT_UNIT: ChromeWording;
|
|
25
|
+
export declare const SVG_SKETCH_HIDDEN_DISPLAY: ChromeWording;
|
|
26
|
+
export declare const SVG_SKETCH_HIDDEN_VISIBILITY: ChromeWording;
|
|
27
|
+
export declare const SVG_SKETCH_OPACITY: ChromeWording;
|
|
28
|
+
export declare const SVG_SKETCH_PAINT_SERVER: ChromeWording;
|
|
29
|
+
export declare const SVG_SKETCH_CURRENT_COLOR: ChromeWording;
|
|
30
|
+
export declare const SVG_SKETCH_TRANSFORM: ChromeWording;
|
|
31
|
+
export declare const SVG_SKETCH_LONE_POINT: ChromeWording;
|
|
32
|
+
export declare const SVG_SKETCH_CURVE: ChromeWording;
|
|
33
|
+
export declare const SVG_SKETCH_EMPTY_BOX: ChromeWording;
|
|
34
|
+
export declare const SVG_SKETCH_PERCENT_RADIUS: ChromeWording;
|
|
35
|
+
export declare const SVG_SKETCH_FLAT_POLYGON: ChromeWording;
|
|
36
|
+
export declare const SVG_SKETCH_EMPTY_TEXT: ChromeWording;
|
|
37
|
+
export declare const SVG_SKETCH_SWITCH: ChromeWording;
|
|
38
|
+
export declare const SVG_SKETCH_SKIPPED: ChromeWording;
|
|
39
|
+
export declare const SVG_SKETCH_REMOVED: ChromeWording;
|
|
40
|
+
export declare const SVG_SKETCH_REMOVED_ATTRIBUTE: ChromeWording;
|
|
41
|
+
export declare const SVG_SKETCH_EMPTY: ChromeWording;
|
|
42
|
+
/**
|
|
43
|
+
* Every wording declared above, in declaration order — joined into
|
|
44
|
+
* `PACKAGE_WORDINGS` (`packages/affine/all/src/translations.ts`) alongside
|
|
45
|
+
* `PROVENANCE_FALLBACK`/`SEVERITY_FALLBACK`/`EXEMPTION_FALLBACK`, this
|
|
46
|
+
* package's other manifest contributions.
|
|
47
|
+
*/
|
|
48
|
+
export declare const SVG_SKETCH_WORDINGS: readonly ChromeWording[];
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The SVG importer's own remarks (`svg-sketch.ts`) — one key per SENTENCE
|
|
3
|
+
* SHAPE, not per exact string: a `{{name}}` hole is filled by
|
|
4
|
+
* `InterchangeNote.messageParams` at report time
|
|
5
|
+
* (`interchange-import.ts`'s `remarkLine`), never split into two keys or
|
|
6
|
+
* baked into the key itself.
|
|
7
|
+
*
|
|
8
|
+
* The reader that raises these is a pure function of text (`docs/adr/0012`,
|
|
9
|
+
* P3): it has no `std`, so each note carries its key and (where it has one)
|
|
10
|
+
* its params, and `reportInterchangeImport` resolves both when it draws the
|
|
11
|
+
* report — see `InterchangeNote.messageKey` / `.messageParams`.
|
|
12
|
+
*
|
|
13
|
+
* NOT included: the three `throw new Error(...)` refusals `parseSvgRoot`
|
|
14
|
+
* raises for a malformed or empty file. Those are caught by
|
|
15
|
+
* `importInterchangeFile`'s single, format-agnostic `catch` — shared by
|
|
16
|
+
* every interchange reader (BPMN, mermaid, OWM, this one) — which shows
|
|
17
|
+
* `error.message` verbatim BY DESIGN ("shown as it is rather than replaced
|
|
18
|
+
* with a wording of our own that knows less"). Keying them would mean
|
|
19
|
+
* teaching that shared catch to resolve a per-reader key, a mechanism this
|
|
20
|
+
* lot does not own the other readers to touch — flagged in this lot's report
|
|
21
|
+
* instead of invented here.
|
|
22
|
+
*/
|
|
23
|
+
export const SVG_SKETCH_FONT_UNIT = [
|
|
24
|
+
'com.labre.interchange.svg.font-unit',
|
|
25
|
+
'Font sizes in `{{unit}}` cannot be resolved without a page to measure against; those labels use the inherited size.',
|
|
26
|
+
];
|
|
27
|
+
export const SVG_SKETCH_HIDDEN_DISPLAY = [
|
|
28
|
+
'com.labre.interchange.svg.hidden-display',
|
|
29
|
+
'Parts of the file marked `display:none` were not imported — they draw nothing where the file came from either.',
|
|
30
|
+
];
|
|
31
|
+
export const SVG_SKETCH_HIDDEN_VISIBILITY = [
|
|
32
|
+
'com.labre.interchange.svg.hidden-visibility',
|
|
33
|
+
'Parts of the file marked `visibility:hidden` were not imported — they draw nothing where the file came from either.',
|
|
34
|
+
];
|
|
35
|
+
export const SVG_SKETCH_OPACITY = [
|
|
36
|
+
'com.labre.interchange.svg.opacity',
|
|
37
|
+
'Transparency is not carried: partly transparent shapes arrive at full strength.',
|
|
38
|
+
];
|
|
39
|
+
export const SVG_SKETCH_PAINT_SERVER = [
|
|
40
|
+
'com.labre.interchange.svg.paint-server',
|
|
41
|
+
'Gradients and patterns are not read; the shapes that used one are a flat neutral.',
|
|
42
|
+
];
|
|
43
|
+
export const SVG_SKETCH_CURRENT_COLOR = [
|
|
44
|
+
'com.labre.interchange.svg.current-color',
|
|
45
|
+
'`currentColor` has no page to inherit from here; the shapes that used it are a flat neutral.',
|
|
46
|
+
];
|
|
47
|
+
export const SVG_SKETCH_TRANSFORM = [
|
|
48
|
+
'com.labre.interchange.svg.transform',
|
|
49
|
+
'`{{kind}}` transforms are ignored (best effort): what carried one is placed as if it did not.',
|
|
50
|
+
];
|
|
51
|
+
export const SVG_SKETCH_LONE_POINT = [
|
|
52
|
+
'com.labre.interchange.svg.lone-point',
|
|
53
|
+
'A path that never moved anywhere draws nothing and was skipped.',
|
|
54
|
+
];
|
|
55
|
+
export const SVG_SKETCH_CURVE = [
|
|
56
|
+
'com.labre.interchange.svg.curve',
|
|
57
|
+
'Curves are approximated by their endpoints (best effort), so a curved path arrives as straight segments.',
|
|
58
|
+
];
|
|
59
|
+
export const SVG_SKETCH_EMPTY_BOX = [
|
|
60
|
+
'com.labre.interchange.svg.empty-box',
|
|
61
|
+
'Shapes with no width or height were skipped.',
|
|
62
|
+
];
|
|
63
|
+
export const SVG_SKETCH_PERCENT_RADIUS = [
|
|
64
|
+
'com.labre.interchange.svg.percent-radius',
|
|
65
|
+
'Corner radii given as a percentage were not read; those corners arrive square.',
|
|
66
|
+
];
|
|
67
|
+
export const SVG_SKETCH_FLAT_POLYGON = [
|
|
68
|
+
'com.labre.interchange.svg.flat-polygon',
|
|
69
|
+
'A polygon with fewer than three corners, or flat on one axis, arrives as its bounding rectangle.',
|
|
70
|
+
];
|
|
71
|
+
export const SVG_SKETCH_EMPTY_TEXT = [
|
|
72
|
+
'com.labre.interchange.svg.empty-text',
|
|
73
|
+
'Empty text elements were skipped.',
|
|
74
|
+
];
|
|
75
|
+
export const SVG_SKETCH_SWITCH = [
|
|
76
|
+
'com.labre.interchange.svg.switch',
|
|
77
|
+
'A `<switch>` offers alternative renderings; the first was imported and the others were not.',
|
|
78
|
+
];
|
|
79
|
+
export const SVG_SKETCH_SKIPPED = [
|
|
80
|
+
'com.labre.interchange.svg.skipped',
|
|
81
|
+
'`<{{name}}>` is not recognised and was skipped.',
|
|
82
|
+
];
|
|
83
|
+
export const SVG_SKETCH_REMOVED = [
|
|
84
|
+
'com.labre.interchange.svg.removed',
|
|
85
|
+
'`<{{name}}>` was removed while sanitizing the file — it is one of the constructs an SVG can carry code in — so nothing it drew was imported.',
|
|
86
|
+
];
|
|
87
|
+
export const SVG_SKETCH_REMOVED_ATTRIBUTE = [
|
|
88
|
+
'com.labre.interchange.svg.removed-attribute',
|
|
89
|
+
'Attributes outside the safe SVG drawing vocabulary — event handlers, script URLs, and anything else the sanitizer does not know — were removed before the file was read.',
|
|
90
|
+
];
|
|
91
|
+
export const SVG_SKETCH_EMPTY = [
|
|
92
|
+
'com.labre.interchange.svg.empty',
|
|
93
|
+
'No shape or text was recognised in this SVG, so nothing was drawn.',
|
|
94
|
+
];
|
|
95
|
+
/**
|
|
96
|
+
* Every wording declared above, in declaration order — joined into
|
|
97
|
+
* `PACKAGE_WORDINGS` (`packages/affine/all/src/translations.ts`) alongside
|
|
98
|
+
* `PROVENANCE_FALLBACK`/`SEVERITY_FALLBACK`/`EXEMPTION_FALLBACK`, this
|
|
99
|
+
* package's other manifest contributions.
|
|
100
|
+
*/
|
|
101
|
+
export const SVG_SKETCH_WORDINGS = [
|
|
102
|
+
SVG_SKETCH_FONT_UNIT,
|
|
103
|
+
SVG_SKETCH_HIDDEN_DISPLAY,
|
|
104
|
+
SVG_SKETCH_HIDDEN_VISIBILITY,
|
|
105
|
+
SVG_SKETCH_OPACITY,
|
|
106
|
+
SVG_SKETCH_PAINT_SERVER,
|
|
107
|
+
SVG_SKETCH_CURRENT_COLOR,
|
|
108
|
+
SVG_SKETCH_TRANSFORM,
|
|
109
|
+
SVG_SKETCH_LONE_POINT,
|
|
110
|
+
SVG_SKETCH_CURVE,
|
|
111
|
+
SVG_SKETCH_EMPTY_BOX,
|
|
112
|
+
SVG_SKETCH_PERCENT_RADIUS,
|
|
113
|
+
SVG_SKETCH_FLAT_POLYGON,
|
|
114
|
+
SVG_SKETCH_EMPTY_TEXT,
|
|
115
|
+
SVG_SKETCH_SWITCH,
|
|
116
|
+
SVG_SKETCH_SKIPPED,
|
|
117
|
+
SVG_SKETCH_REMOVED,
|
|
118
|
+
SVG_SKETCH_REMOVED_ATTRIBUTE,
|
|
119
|
+
SVG_SKETCH_EMPTY,
|
|
120
|
+
];
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ShapeStyle, ShapeType, StrokeStyle, TextAlign, } from '../../affine-model/index.js';
|
|
2
2
|
import DOMPurify from 'dompurify';
|
|
3
|
+
import { SVG_SKETCH_CURRENT_COLOR, SVG_SKETCH_CURVE, SVG_SKETCH_EMPTY, SVG_SKETCH_EMPTY_BOX, SVG_SKETCH_EMPTY_TEXT, SVG_SKETCH_FLAT_POLYGON, SVG_SKETCH_FONT_UNIT, SVG_SKETCH_HIDDEN_DISPLAY, SVG_SKETCH_HIDDEN_VISIBILITY, SVG_SKETCH_LONE_POINT, SVG_SKETCH_OPACITY, SVG_SKETCH_PAINT_SERVER, SVG_SKETCH_PERCENT_RADIUS, SVG_SKETCH_REMOVED, SVG_SKETCH_REMOVED_ATTRIBUTE, SVG_SKETCH_SKIPPED, SVG_SKETCH_SWITCH, SVG_SKETCH_TRANSFORM, } from './svg-sketch-translations.js';
|
|
3
4
|
/**
|
|
4
5
|
* **SVG → a canvas sketch.** The platform's VISUAL-tier importer, shared by
|
|
5
6
|
* every framework that declares it (`docs/adr/0012`, P2).
|
|
@@ -169,13 +170,25 @@ class Notebook {
|
|
|
169
170
|
this.seen = new Set();
|
|
170
171
|
this.notes = [];
|
|
171
172
|
}
|
|
172
|
-
|
|
173
|
-
|
|
173
|
+
/**
|
|
174
|
+
* @param dedupKey De-duplication identity — a note fires once per distinct
|
|
175
|
+
* value (`font-unit:px`, `font-unit:pt`…), independent of the i18n key
|
|
176
|
+
* below, which stays the same across all of them.
|
|
177
|
+
* @param message The English sentence, already filled in with the file's
|
|
178
|
+
* own words — shown as is with no host catalogue registered.
|
|
179
|
+
* @param wording The key/fallback pair for this sentence's SHAPE
|
|
180
|
+
* (`svg-sketch-translations.ts`), and the params that fill its
|
|
181
|
+
* `{{name}}` holes when it has any.
|
|
182
|
+
*/
|
|
183
|
+
once(dedupKey, message, wording, params, element) {
|
|
184
|
+
if (this.seen.has(dedupKey))
|
|
174
185
|
return;
|
|
175
|
-
this.seen.add(
|
|
186
|
+
this.seen.add(dedupKey);
|
|
176
187
|
this.notes.push({
|
|
177
188
|
kind: 'warning',
|
|
178
189
|
message,
|
|
190
|
+
messageKey: wording[0],
|
|
191
|
+
...(params ? { messageParams: params } : {}),
|
|
179
192
|
...(element ? { element } : {}),
|
|
180
193
|
});
|
|
181
194
|
}
|
|
@@ -226,7 +239,7 @@ function fontSizeOf(raw, inherited, notes) {
|
|
|
226
239
|
return (value * 4) / 3;
|
|
227
240
|
if (unit === 'em')
|
|
228
241
|
return value * inherited;
|
|
229
|
-
notes.once(`font-unit:${unit}`, `Font sizes in \`${unit}\` cannot be resolved without a page to measure against; those labels use the inherited size
|
|
242
|
+
notes.once(`font-unit:${unit}`, `Font sizes in \`${unit}\` cannot be resolved without a page to measure against; those labels use the inherited size.`, SVG_SKETCH_FONT_UNIT, { unit });
|
|
230
243
|
return undefined;
|
|
231
244
|
}
|
|
232
245
|
/**
|
|
@@ -279,13 +292,13 @@ function isHidden(element, notes) {
|
|
|
279
292
|
const style = styleMap(element);
|
|
280
293
|
const display = style.get('display') ?? element.getAttribute('display');
|
|
281
294
|
if (display?.trim() === 'none') {
|
|
282
|
-
notes.once('hidden:display', 'Parts of the file marked `display:none` were not imported — they draw nothing where the file came from either.');
|
|
295
|
+
notes.once('hidden:display', 'Parts of the file marked `display:none` were not imported — they draw nothing where the file came from either.', SVG_SKETCH_HIDDEN_DISPLAY);
|
|
283
296
|
return true;
|
|
284
297
|
}
|
|
285
298
|
const visibility = style.get('visibility') ?? element.getAttribute('visibility');
|
|
286
299
|
const hidden = visibility?.trim();
|
|
287
300
|
if (hidden === 'hidden' || hidden === 'collapse') {
|
|
288
|
-
notes.once('hidden:visibility', 'Parts of the file marked `visibility:hidden` were not imported — they draw nothing where the file came from either.');
|
|
301
|
+
notes.once('hidden:visibility', 'Parts of the file marked `visibility:hidden` were not imported — they draw nothing where the file came from either.', SVG_SKETCH_HIDDEN_VISIBILITY);
|
|
289
302
|
return true;
|
|
290
303
|
}
|
|
291
304
|
return false;
|
|
@@ -306,7 +319,7 @@ function noteOpacity(element, notes) {
|
|
|
306
319
|
continue;
|
|
307
320
|
const value = Number.parseFloat(raw);
|
|
308
321
|
if (Number.isFinite(value) && value < 1) {
|
|
309
|
-
notes.once('opacity', 'Transparency is not carried: partly transparent shapes arrive at full strength.');
|
|
322
|
+
notes.once('opacity', 'Transparency is not carried: partly transparent shapes arrive at full strength.', SVG_SKETCH_OPACITY);
|
|
310
323
|
return;
|
|
311
324
|
}
|
|
312
325
|
}
|
|
@@ -340,11 +353,11 @@ function colorOf(raw, fallback, notes) {
|
|
|
340
353
|
if (!value || value === 'none' || value === 'transparent')
|
|
341
354
|
return undefined;
|
|
342
355
|
if (value.startsWith('url(')) {
|
|
343
|
-
notes.once('paint-server', 'Gradients and patterns are not read; the shapes that used one are a flat neutral.');
|
|
356
|
+
notes.once('paint-server', 'Gradients and patterns are not read; the shapes that used one are a flat neutral.', SVG_SKETCH_PAINT_SERVER);
|
|
344
357
|
return fallback;
|
|
345
358
|
}
|
|
346
359
|
if (value === 'currentColor') {
|
|
347
|
-
notes.once('current-color', '`currentColor` has no page to inherit from here; the shapes that used it are a flat neutral.');
|
|
360
|
+
notes.once('current-color', '`currentColor` has no page to inherit from here; the shapes that used it are a flat neutral.', SVG_SKETCH_CURRENT_COLOR);
|
|
348
361
|
return fallback;
|
|
349
362
|
}
|
|
350
363
|
return value;
|
|
@@ -412,7 +425,7 @@ function translated(element, frame, notes) {
|
|
|
412
425
|
ty += values[1] ?? 0;
|
|
413
426
|
continue;
|
|
414
427
|
}
|
|
415
|
-
notes.once(`transform:${kind}`, `\`${kind}\` transforms are ignored (best effort): what carried one is placed as if it did not
|
|
428
|
+
notes.once(`transform:${kind}`, `\`${kind}\` transforms are ignored (best effort): what carried one is placed as if it did not.`, SVG_SKETCH_TRANSFORM, { kind });
|
|
416
429
|
}
|
|
417
430
|
// A translate is expressed in the PARENT's user units, so it is scaled by the
|
|
418
431
|
// frame it was written in and never by the one it creates.
|
|
@@ -463,7 +476,7 @@ function samplePath(d, notes) {
|
|
|
463
476
|
if (current.length >= 2)
|
|
464
477
|
subpaths.push(current);
|
|
465
478
|
else if (current.length === 1) {
|
|
466
|
-
notes.once('lone-point', 'A path that never moved anywhere draws nothing and was skipped.');
|
|
479
|
+
notes.once('lone-point', 'A path that never moved anywhere draws nothing and was skipped.', SVG_SKETCH_LONE_POINT);
|
|
467
480
|
}
|
|
468
481
|
current = [];
|
|
469
482
|
};
|
|
@@ -480,7 +493,7 @@ function samplePath(d, notes) {
|
|
|
480
493
|
continue;
|
|
481
494
|
}
|
|
482
495
|
if (CURVE_COMMANDS.has(kind)) {
|
|
483
|
-
notes.once('curve', 'Curves are approximated by their endpoints (best effort), so a curved path arrives as straight segments.');
|
|
496
|
+
notes.once('curve', 'Curves are approximated by their endpoints (best effort), so a curved path arrives as straight segments.', SVG_SKETCH_CURVE);
|
|
484
497
|
}
|
|
485
498
|
// One command letter may carry SEVERAL argument groups (`L 1 2 3 4`), and
|
|
486
499
|
// a repeated `M` group is an implicit lineto — the spec's own rule, and the
|
|
@@ -532,7 +545,7 @@ function readRect(element, frame, paint, sketch) {
|
|
|
532
545
|
const w = num(element, 'width');
|
|
533
546
|
const h = num(element, 'height');
|
|
534
547
|
if (w <= 0 || h <= 0) {
|
|
535
|
-
sketch.notes.once('empty-box', EMPTY_BOX_NOTE);
|
|
548
|
+
sketch.notes.once('empty-box', EMPTY_BOX_NOTE, SVG_SKETCH_EMPTY_BOX);
|
|
536
549
|
return;
|
|
537
550
|
}
|
|
538
551
|
// `rx` is an absolute corner radius in user units, and the shape model reads
|
|
@@ -545,7 +558,7 @@ function readRect(element, frame, paint, sketch) {
|
|
|
545
558
|
const rawRadius = element.getAttribute('rx') ?? element.getAttribute('ry');
|
|
546
559
|
let radius = 0;
|
|
547
560
|
if (rawRadius?.includes('%')) {
|
|
548
|
-
sketch.notes.once('percent-radius', 'Corner radii given as a percentage were not read; those corners arrive square.');
|
|
561
|
+
sketch.notes.once('percent-radius', 'Corner radii given as a percentage were not read; those corners arrive square.', SVG_SKETCH_PERCENT_RADIUS);
|
|
549
562
|
}
|
|
550
563
|
else {
|
|
551
564
|
const scaled = len(frame, num(element, 'rx', num(element, 'ry')));
|
|
@@ -564,7 +577,7 @@ function readEllipse(element, frame, paint, sketch) {
|
|
|
564
577
|
const rx = circle ? r : num(element, 'rx');
|
|
565
578
|
const ry = circle ? r : num(element, 'ry');
|
|
566
579
|
if (rx <= 0 || ry <= 0) {
|
|
567
|
-
sketch.notes.once('empty-box', EMPTY_BOX_NOTE);
|
|
580
|
+
sketch.notes.once('empty-box', EMPTY_BOX_NOTE, SVG_SKETCH_EMPTY_BOX);
|
|
568
581
|
return;
|
|
569
582
|
}
|
|
570
583
|
const cx = num(element, 'cx');
|
|
@@ -600,10 +613,10 @@ function readPolygon(element, frame, paint, sketch) {
|
|
|
600
613
|
const h = Math.max(...ys) - minY;
|
|
601
614
|
if (points.length < 3 || w <= 0 || h <= 0) {
|
|
602
615
|
if (points.length === 0 || w < 0 || h < 0) {
|
|
603
|
-
sketch.notes.once('empty-box', EMPTY_BOX_NOTE);
|
|
616
|
+
sketch.notes.once('empty-box', EMPTY_BOX_NOTE, SVG_SKETCH_EMPTY_BOX);
|
|
604
617
|
return;
|
|
605
618
|
}
|
|
606
|
-
sketch.notes.once('flat-polygon', 'A polygon with fewer than three corners, or flat on one axis, arrives as its bounding rectangle.');
|
|
619
|
+
sketch.notes.once('flat-polygon', 'A polygon with fewer than three corners, or flat on one axis, arrives as its bounding rectangle.', SVG_SKETCH_FLAT_POLYGON);
|
|
607
620
|
sketch.elements.push({
|
|
608
621
|
...shapeProps(paint, frame, sketch),
|
|
609
622
|
shapeType: ShapeType.Rect,
|
|
@@ -710,7 +723,7 @@ function readText(element, frame, paint, sketch) {
|
|
|
710
723
|
}
|
|
711
724
|
}
|
|
712
725
|
if (lines.length === 0) {
|
|
713
|
-
sketch.notes.once('empty-text', 'Empty text elements were skipped.');
|
|
726
|
+
sketch.notes.once('empty-text', 'Empty text elements were skipped.', SVG_SKETCH_EMPTY_TEXT);
|
|
714
727
|
return;
|
|
715
728
|
}
|
|
716
729
|
const fontSize = len(frame, paint.fontSize ?? DEFAULT_FONT_SIZE);
|
|
@@ -780,7 +793,7 @@ function visit(element, frame, inherited, sketch) {
|
|
|
780
793
|
// of a label on top of itself.
|
|
781
794
|
const [first, ...rest] = childElements(element).filter(child => !NON_RENDERING.has(nameOf(child)));
|
|
782
795
|
if (rest.length > 0) {
|
|
783
|
-
sketch.notes.once('switch', 'A `<switch>` offers alternative renderings; the first was imported and the others were not.');
|
|
796
|
+
sketch.notes.once('switch', 'A `<switch>` offers alternative renderings; the first was imported and the others were not.', SVG_SKETCH_SWITCH);
|
|
784
797
|
}
|
|
785
798
|
if (first)
|
|
786
799
|
visit(first, here, paint, sketch);
|
|
@@ -834,7 +847,7 @@ function emit(element, name, frame, paint, sketch) {
|
|
|
834
847
|
// and whatever SVG grows next. A drawing built out of symbol instances
|
|
835
848
|
// arrives nearly empty, and this is the line that tells its author why
|
|
836
849
|
// instead of leaving them to guess.
|
|
837
|
-
sketch.notes.once(`skipped:${name}`, `\`<${name}>\` is not recognised and was skipped.`, name);
|
|
850
|
+
sketch.notes.once(`skipped:${name}`, `\`<${name}>\` is not recognised and was skipped.`, SVG_SKETCH_SKIPPED, { name }, name);
|
|
838
851
|
}
|
|
839
852
|
}
|
|
840
853
|
/* ── The capability's function ────────────────────────────────────────── */
|
|
@@ -896,14 +909,14 @@ function parseSvgRoot(source, notes) {
|
|
|
896
909
|
// plumbing.
|
|
897
910
|
if (PARSER_SCAFFOLDING.has(name.toLowerCase()))
|
|
898
911
|
continue;
|
|
899
|
-
notes.once(`removed:${name.toLowerCase()}`, `\`<${name}>\` was removed while sanitizing the file — it is one of the constructs an SVG can carry code in — so nothing it drew was imported.`, name);
|
|
912
|
+
notes.once(`removed:${name.toLowerCase()}`, `\`<${name}>\` was removed while sanitizing the file — it is one of the constructs an SVG can carry code in — so nothing it drew was imported.`, SVG_SKETCH_REMOVED, { name }, name);
|
|
900
913
|
}
|
|
901
914
|
else if (removed.attribute) {
|
|
902
915
|
// Worded for what this actually is, which is broader than "unsafe": the
|
|
903
916
|
// sanitizer's allow-list drops an event handler AND a `requiredFeatures`,
|
|
904
917
|
// and calling the second one dangerous would be this reader accusing a
|
|
905
918
|
// perfectly ordinary file of something.
|
|
906
|
-
notes.once('removed-attribute', 'Attributes outside the safe SVG drawing vocabulary — event handlers, script URLs, and anything else the sanitizer does not know — were removed before the file was read.');
|
|
919
|
+
notes.once('removed-attribute', 'Attributes outside the safe SVG drawing vocabulary — event handlers, script URLs, and anything else the sanitizer does not know — were removed before the file was read.', SVG_SKETCH_REMOVED_ATTRIBUTE);
|
|
907
920
|
}
|
|
908
921
|
}
|
|
909
922
|
// No cast: `RETURN_DOM: true` in the literal selects DOMPurify's typed
|
|
@@ -937,7 +950,7 @@ export function parseSvgSketch(source, context = {}) {
|
|
|
937
950
|
// every shape under it inherits — and it establishes the outermost viewport.
|
|
938
951
|
walk(root, viewportFrame(root, IDENTITY), paintOf(root, INITIAL_PAINT, sketch.notes), sketch);
|
|
939
952
|
if (sketch.elements.length === 0) {
|
|
940
|
-
sketch.notes.once('empty', 'No shape or text was recognised in this SVG, so nothing was drawn.');
|
|
953
|
+
sketch.notes.once('empty', 'No shape or text was recognised in this SVG, so nothing was drawn.', SVG_SKETCH_EMPTY);
|
|
941
954
|
}
|
|
942
955
|
return {
|
|
943
956
|
elements: sketch.elements,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EditorChevronDown } from '../../affine-components/toolbar/index.js';
|
|
2
|
-
import { getUniverseRegistry, translateKey, } from '../../affine-shared/services/index.js';
|
|
2
|
+
import { getUniverseRegistry, translateKey, translateTagLabel, } from '../../affine-shared/services/index.js';
|
|
3
3
|
import { getRegisteredCommands, runCommand } from '../../std/index.js';
|
|
4
4
|
import { elementTagValues, GfxGroupLikeElementModel, GfxPrimitiveElementModel, } from '../../std/gfx/index.js';
|
|
5
5
|
import { html, nothing } from 'lit';
|
|
@@ -190,10 +190,10 @@ function runTagSet(ctx, target, tag, values) {
|
|
|
190
190
|
/** One titled block of the dropdown — one tag. */
|
|
191
191
|
function renderSection(ctx, target, def) {
|
|
192
192
|
const selected = elementTagValues(target.element, def.id);
|
|
193
|
-
const label =
|
|
193
|
+
const label = translateTagLabel(ctx.std, def) || def.id;
|
|
194
194
|
const options = offeredValues(def, selected).map(value => {
|
|
195
195
|
const on = selected.includes(value.id);
|
|
196
|
-
const valueLabel =
|
|
196
|
+
const valueLabel = translateTagLabel(ctx.std, value) || value.id;
|
|
197
197
|
// `data-toggle` beside `data-option`: the row draws like a native option,
|
|
198
198
|
// but clicking the value in FORCE is how it is un-picked (`toggleValue`),
|
|
199
199
|
// whatever the tag's cardinality. Without it the selected row inherits
|
|
@@ -240,14 +240,14 @@ function triggerLabel(ctx, target) {
|
|
|
240
240
|
const selected = elementTagValues(target.element, def.id);
|
|
241
241
|
return offeredValues(def, selected)
|
|
242
242
|
.filter(value => selected.includes(value.id))
|
|
243
|
-
.map(value =>
|
|
243
|
+
.map(value => translateTagLabel(ctx.std, value) || value.id);
|
|
244
244
|
});
|
|
245
245
|
return chosen.length
|
|
246
246
|
? chosen.join(', ')
|
|
247
247
|
: // One applicable tag names itself ("Nature"); several fall back to the
|
|
248
248
|
// neutral word, since no single tag name is the truth about the element.
|
|
249
249
|
target.tags.length === 1
|
|
250
|
-
? target.tags[0]
|
|
250
|
+
? translateTagLabel(ctx.std, target.tags[0]) || target.tags[0].id
|
|
251
251
|
: translateKey(ctx.std, 'com.labre.tags.toolbar.label', 'Qualify');
|
|
252
252
|
}
|
|
253
253
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ColorScheme } from '../../affine-model/index.js';
|
|
2
|
-
import { ShadowlessElement } from '../../std/index.js';
|
|
2
|
+
import { type BlockStdScope, ShadowlessElement } from '../../std/index.js';
|
|
3
3
|
import { type GfxModel } from '../../std/gfx/index.js';
|
|
4
4
|
import { nothing } from 'lit';
|
|
5
5
|
declare const SurfaceRefPlaceHolder_base: typeof ShadowlessElement & import("../../global/utils/types.js").Constructor<import("../../global/lit/with-disposable.js").DisposableClass>;
|
|
@@ -9,6 +9,7 @@ export declare class SurfaceRefPlaceHolder extends SurfaceRefPlaceHolder_base {
|
|
|
9
9
|
accessor refFlavour: string;
|
|
10
10
|
accessor inEdgeless: boolean;
|
|
11
11
|
accessor theme: ColorScheme;
|
|
12
|
+
accessor std: BlockStdScope;
|
|
12
13
|
render(): import("lit-html").TemplateResult<1> | typeof nothing;
|
|
13
14
|
}
|
|
14
15
|
declare global {
|