@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
|
@@ -328,15 +328,15 @@ function backgroundsOf(rule, elements) {
|
|
|
328
328
|
* measures against have nothing to invalidate — and a framework whose only rules
|
|
329
329
|
* are on-demand has no incremental pass to protect in the first place.
|
|
330
330
|
*
|
|
331
|
-
* The
|
|
332
|
-
*
|
|
333
|
-
*
|
|
334
|
-
*
|
|
331
|
+
* The moment is read STATICALLY ({@link couldBeRealtime}) and not per instance:
|
|
332
|
+
* this is a set of ids and not a verdict, so a rule some level could promote
|
|
333
|
+
* costs one extra id and can never make an answer wrong, where reading the
|
|
334
|
+
* chosen levels here would mean re-reading the surface for it.
|
|
335
335
|
*/
|
|
336
|
-
export function backgroundElementIds(rules, elements) {
|
|
336
|
+
export function backgroundElementIds(rules, elements, profiles = []) {
|
|
337
337
|
const ids = new Set();
|
|
338
338
|
for (const rule of rules) {
|
|
339
|
-
if (!
|
|
339
|
+
if (!couldBeRealtime(rule, profiles))
|
|
340
340
|
continue;
|
|
341
341
|
for (const background of backgroundsOf(rule, elements))
|
|
342
342
|
ids.add(background.id);
|
|
@@ -2460,6 +2460,146 @@ function evaluateElementInZone(rule, elements, incremental) {
|
|
|
2460
2460
|
}
|
|
2461
2461
|
return violations;
|
|
2462
2462
|
}
|
|
2463
|
+
/**
|
|
2464
|
+
* How far `p` is from the OUTLINE of `bound` — the rectangle's perimeter, and
|
|
2465
|
+
* not its area.
|
|
2466
|
+
*
|
|
2467
|
+
* Zero on the line, and positive on both sides of it: the distance to the
|
|
2468
|
+
* nearest edge for a point inside, the ordinary distance to the rectangle for a
|
|
2469
|
+
* point outside. That two-sided reading is the whole point of the function —
|
|
2470
|
+
* "on the border" is a claim about a LINE, and a family measuring containment
|
|
2471
|
+
* could not tell a glyph sitting on the edge from one buried in the middle.
|
|
2472
|
+
*
|
|
2473
|
+
* Euclidean rather than squared, unlike {@link gapSquared}: the result is
|
|
2474
|
+
* compared against a tolerance a framework declares in model units, so the root
|
|
2475
|
+
* has to be taken somewhere and taking it here keeps the declaration readable.
|
|
2476
|
+
* One `Math.hypot` per (carrier, carried) couple that actually overlaps, which
|
|
2477
|
+
* is a handful per board.
|
|
2478
|
+
*/
|
|
2479
|
+
function outlineDistance(p, bound) {
|
|
2480
|
+
// Negative inside, positive outside, on each axis independently.
|
|
2481
|
+
const dx = Math.max(bound.x - p[0], p[0] - bound.maxX);
|
|
2482
|
+
const dy = Math.max(bound.y - p[1], p[1] - bound.maxY);
|
|
2483
|
+
if (dx > 0 || dy > 0) {
|
|
2484
|
+
return Math.hypot(Math.max(dx, 0), Math.max(dy, 0));
|
|
2485
|
+
}
|
|
2486
|
+
// Inside: the nearest of the four edges.
|
|
2487
|
+
return Math.min(-dx, -dy);
|
|
2488
|
+
}
|
|
2489
|
+
/**
|
|
2490
|
+
* "Is this glyph still ON the border of the box it was drawn on?"
|
|
2491
|
+
*
|
|
2492
|
+
* The `border-proximity` family (ADR 0024). See {@link BorderProximityDef} for
|
|
2493
|
+
* the requirement and for the three families that cannot state it.
|
|
2494
|
+
*
|
|
2495
|
+
* ## The walk
|
|
2496
|
+
*
|
|
2497
|
+
* Two passes over the surface to index the carriers and the subjects, then per
|
|
2498
|
+
* subject one test against each carrier: do the two boxes share AREA (or does
|
|
2499
|
+
* the carrier contain the subject outright), and if so how far is the subject's
|
|
2500
|
+
* centre from that carrier's outline. The BEST carrier — smallest distance,
|
|
2501
|
+
* ties broken by the smaller id — is the one the finding is measured against and
|
|
2502
|
+
* the one it names, because it is the box the author was aiming at and the only
|
|
2503
|
+
* one a suggestion can point back to.
|
|
2504
|
+
*
|
|
2505
|
+
* Deliberately not sweep-and-pruned the way `no-overlap` is. The two populations
|
|
2506
|
+
* are disjoint by role and both are small — a component sheet carries units of
|
|
2507
|
+
* components and units of ports — so the couple walk is `carriers × subjects`
|
|
2508
|
+
* over two handfuls, and an index would cost more to build than the walk it
|
|
2509
|
+
* saves. If a framework ever writes this family on two crowded roles, the prune
|
|
2510
|
+
* is the same one `evaluateNoOverlap` already documents.
|
|
2511
|
+
*
|
|
2512
|
+
* ## Overlap is the GATE, and the distance is the verdict
|
|
2513
|
+
*
|
|
2514
|
+
* A subject overlapping no carrier at all raises nothing (the family's
|
|
2515
|
+
* proportionality requirement), so the only thing this reports is a glyph the
|
|
2516
|
+
* author put ON a box and then pushed too far into it. Shared AREA and not a
|
|
2517
|
+
* shared edge — {@link boundsOverlap}'s epsilon — because a glyph tangent
|
|
2518
|
+
* OUTSIDE its carrier is within any tolerance worth declaring anyway, and
|
|
2519
|
+
* treating a snapped edge as an overlap would make the gate depend on float
|
|
2520
|
+
* noise.
|
|
2521
|
+
*
|
|
2522
|
+
* ## One finding, two ids
|
|
2523
|
+
*
|
|
2524
|
+
* One per SUBJECT, however many carriers it touches: the mistake is one glyph in
|
|
2525
|
+
* one wrong place, and a square straddling two nested components would otherwise
|
|
2526
|
+
* be reported twice for one drag. Both ids are indicted — the carrier and the
|
|
2527
|
+
* carried — because the finding has two honest readings (the glyph has drifted,
|
|
2528
|
+
* or the box has grown under it) and only the pair shows the user both brackets.
|
|
2529
|
+
* Sorted, like every other multi-element finding in this file, so the same
|
|
2530
|
+
* situation reports the same way whichever order the surface was walked in.
|
|
2531
|
+
*/
|
|
2532
|
+
function evaluateBorderProximity(rule, elements) {
|
|
2533
|
+
const subjectRole = rule.appliesTo;
|
|
2534
|
+
const proximity = rule.borderProximity;
|
|
2535
|
+
if (subjectRole === undefined || proximity === undefined)
|
|
2536
|
+
return [];
|
|
2537
|
+
const carrierRole = proximity.carrierRole;
|
|
2538
|
+
// An outline is a box's, so the carrier has to be one. A rule naming an edge
|
|
2539
|
+
// or a text role can never fire; say so once rather than shrugging.
|
|
2540
|
+
const carrierKind = rule.roles[carrierRole]?.kind;
|
|
2541
|
+
if (carrierKind !== 'node') {
|
|
2542
|
+
warnOnce(`border-proximity rule "${rule.id}" names a ` +
|
|
2543
|
+
`"${carrierKind ?? 'unknown'}" role ("${carrierRole}") as its ` +
|
|
2544
|
+
`carrier — only a "node" role has an outline, and "on the border" is a ` +
|
|
2545
|
+
`distance to one, so this rule can never fire.`);
|
|
2546
|
+
return [];
|
|
2547
|
+
}
|
|
2548
|
+
const tolerance = proximity.tolerance;
|
|
2549
|
+
if (!(tolerance > 0)) {
|
|
2550
|
+
// A centre exactly on the line is a drawing no hand and no snap produces,
|
|
2551
|
+
// so a rule declaring no tolerance would indict every subject on the board.
|
|
2552
|
+
warnOnce(`border-proximity rule "${rule.id}" declares no positive tolerance — ` +
|
|
2553
|
+
`the rule is not evaluated.`);
|
|
2554
|
+
return [];
|
|
2555
|
+
}
|
|
2556
|
+
const carriers = [];
|
|
2557
|
+
const subjects = [];
|
|
2558
|
+
for (const el of elements) {
|
|
2559
|
+
// Cheapest possible exit for a neutral element: no role, no evaluation.
|
|
2560
|
+
if (el.role === undefined)
|
|
2561
|
+
continue;
|
|
2562
|
+
if (roleIsA(el.role, carrierRole, rule.roles)) {
|
|
2563
|
+
carriers.push({ id: el.id, bound: el.elementBound });
|
|
2564
|
+
// A role that is BOTH — a framework specialising one from the other —
|
|
2565
|
+
// would be a declaration that cannot mean anything here, so the carrier
|
|
2566
|
+
// reading wins and the element is not also judged as a subject.
|
|
2567
|
+
continue;
|
|
2568
|
+
}
|
|
2569
|
+
if (roleIsA(el.role, subjectRole, rule.roles)) {
|
|
2570
|
+
subjects.push({ id: el.id, bound: el.elementBound });
|
|
2571
|
+
}
|
|
2572
|
+
}
|
|
2573
|
+
if (carriers.length === 0 || subjects.length === 0)
|
|
2574
|
+
return [];
|
|
2575
|
+
const backgrounds = backgroundsOf(rule, elements);
|
|
2576
|
+
const violations = [];
|
|
2577
|
+
for (const subject of subjects) {
|
|
2578
|
+
const centre = centreOf(subject.bound);
|
|
2579
|
+
let host = null;
|
|
2580
|
+
let distance = Infinity;
|
|
2581
|
+
for (const carrier of carriers) {
|
|
2582
|
+
if (!boundsOverlap(carrier.bound, subject.bound) &&
|
|
2583
|
+
!carrier.bound.contains(subject.bound)) {
|
|
2584
|
+
continue;
|
|
2585
|
+
}
|
|
2586
|
+
const away = outlineDistance(centre, carrier.bound);
|
|
2587
|
+
// Strictly nearer wins; an exact tie goes to the smaller id, never to
|
|
2588
|
+
// whichever carrier the surface happened to be walked past first.
|
|
2589
|
+
if (away < distance ||
|
|
2590
|
+
(away === distance && host !== null && carrier.id < host.id)) {
|
|
2591
|
+
distance = away;
|
|
2592
|
+
host = carrier;
|
|
2593
|
+
}
|
|
2594
|
+
}
|
|
2595
|
+
// On no carrier at all: the glyph is a sketch, and this family says nothing
|
|
2596
|
+
// about where a sketch sits.
|
|
2597
|
+
if (host === null || distance <= tolerance)
|
|
2598
|
+
continue;
|
|
2599
|
+
violations.push(raise(rule, [host.id, subject.id].sort(), attributeBackground(subject.bound, backgrounds)?.id));
|
|
2600
|
+
}
|
|
2601
|
+
return violations;
|
|
2602
|
+
}
|
|
2463
2603
|
/**
|
|
2464
2604
|
* "Does this artefact belong on THIS view?"
|
|
2465
2605
|
*
|
|
@@ -3233,6 +3373,210 @@ function evaluateLabelPresence(rule, elements, incremental) {
|
|
|
3233
3373
|
}
|
|
3234
3374
|
return violations;
|
|
3235
3375
|
}
|
|
3376
|
+
/**
|
|
3377
|
+
* WHERE each {@link LabelTarget} is actually written, in order of preference.
|
|
3378
|
+
*
|
|
3379
|
+
* The one place in this file that names a connector's end-label props:
|
|
3380
|
+
* `sourceLabel` / `targetLabel`, the flat `Y.Text` fields `docs/adr/0020`
|
|
3381
|
+
* chose (mirroring the centre label's `text`). {@link labelSource} also
|
|
3382
|
+
* tolerates a nested `{ text }` under the same key — the shape an importer's
|
|
3383
|
+
* serialized props or a host that modelled the end label as one object would
|
|
3384
|
+
* hand it — so the rule does not break the day the model is reshaped, the same
|
|
3385
|
+
* duck-typing discipline {@link elementLabel} and {@link rawEndpointIds}
|
|
3386
|
+
* already hold.
|
|
3387
|
+
*
|
|
3388
|
+
* Own-property reads only, through {@link labelSource}: these come off a Y.Map
|
|
3389
|
+
* and are whatever a peer or an importer wrote.
|
|
3390
|
+
*/
|
|
3391
|
+
const LABEL_PROPS = {
|
|
3392
|
+
'center-label': ['text'],
|
|
3393
|
+
'source-label': ['sourceLabel'],
|
|
3394
|
+
'target-label': ['targetLabel'],
|
|
3395
|
+
};
|
|
3396
|
+
/**
|
|
3397
|
+
* The RAW words of one of an element's labels — newlines and all, `''` when it
|
|
3398
|
+
* carries none.
|
|
3399
|
+
*
|
|
3400
|
+
* {@link elementLabel} one step earlier: it trims, because "is there anything
|
|
3401
|
+
* here" is the only question that family asks. This family has to keep the line
|
|
3402
|
+
* structure, since a compartment is a LIST and the trimming happens per line.
|
|
3403
|
+
*/
|
|
3404
|
+
function labelSource(el, target) {
|
|
3405
|
+
if (target === 'end-labels') {
|
|
3406
|
+
// The two ends, one per line — see {@link LabelTarget}. An end carrying
|
|
3407
|
+
// nothing contributes no line rather than an empty one, so a connector
|
|
3408
|
+
// labelled at one end alone is one subject and not two.
|
|
3409
|
+
return [labelSource(el, 'source-label'), labelSource(el, 'target-label')]
|
|
3410
|
+
.filter(text => text.trim() !== '')
|
|
3411
|
+
.join('\n');
|
|
3412
|
+
}
|
|
3413
|
+
const props = el;
|
|
3414
|
+
for (const key of LABEL_PROPS[target]) {
|
|
3415
|
+
const raw = props[key];
|
|
3416
|
+
if (raw == null)
|
|
3417
|
+
continue;
|
|
3418
|
+
if (typeof raw === 'string')
|
|
3419
|
+
return raw;
|
|
3420
|
+
if (rendersAsText(raw))
|
|
3421
|
+
return String(raw);
|
|
3422
|
+
// A nested end label — `{ text: Y.Text, xywh }` — read exactly one level
|
|
3423
|
+
// deep. Deeper would be guessing at a shape nobody declared.
|
|
3424
|
+
const nested = raw.text;
|
|
3425
|
+
if (typeof nested === 'string')
|
|
3426
|
+
return nested;
|
|
3427
|
+
if (nested != null && rendersAsText(nested))
|
|
3428
|
+
return String(nested);
|
|
3429
|
+
}
|
|
3430
|
+
return '';
|
|
3431
|
+
}
|
|
3432
|
+
/**
|
|
3433
|
+
* §9.2.4's elision marker, in both spellings. A line that says "there are more
|
|
3434
|
+
* of these, not shown" is notation, and indicting it would indict the author for
|
|
3435
|
+
* having said so.
|
|
3436
|
+
*/
|
|
3437
|
+
const ELISION = new Set(['...', '…']);
|
|
3438
|
+
/**
|
|
3439
|
+
* The lines of a label that SAY something — trimmed, normalised, in order.
|
|
3440
|
+
*
|
|
3441
|
+
* Deliberately the same three rules `gfx/uml/src/grammar.ts` `parseCompartment`
|
|
3442
|
+
* holds (trim, drop blanks, drop the ellipsis), plus the invisible-code-point
|
|
3443
|
+
* strip {@link elementLabel} does: a line of zero-width joiners is a line the
|
|
3444
|
+
* reader cannot see, and handing it to a parser would indict the author for
|
|
3445
|
+
* something invisible on both the canvas and the finding.
|
|
3446
|
+
*
|
|
3447
|
+
* `perLine === false` folds the whole label into ONE subject — the trimmed text,
|
|
3448
|
+
* newlines kept — which is the reading a transition label or a multiplicity
|
|
3449
|
+
* wants: it is one expression, not a list.
|
|
3450
|
+
*/
|
|
3451
|
+
function syntaxLines(text, perLine) {
|
|
3452
|
+
const clean = text.normalize('NFC').replace(INVISIBLE_CHARS, '');
|
|
3453
|
+
const lines = perLine ? clean.split('\n') : [clean];
|
|
3454
|
+
return lines
|
|
3455
|
+
.map(line => line.trim())
|
|
3456
|
+
.filter(line => line.length > 0 && !ELISION.has(line));
|
|
3457
|
+
}
|
|
3458
|
+
/**
|
|
3459
|
+
* How much of an offending line the finding's own sentence repeats.
|
|
3460
|
+
*
|
|
3461
|
+
* A compartment line is normally short, and a pasted one is occasionally a
|
|
3462
|
+
* paragraph. The fallback sentence ends up in a bubble eight units tall, so the
|
|
3463
|
+
* quotation is capped and elided rather than allowed to set the width of the
|
|
3464
|
+
* panel.
|
|
3465
|
+
*/
|
|
3466
|
+
const QUOTED_LINE_MAX = 80;
|
|
3467
|
+
function quoteLine(line) {
|
|
3468
|
+
return line.length <= QUOTED_LINE_MAX
|
|
3469
|
+
? line
|
|
3470
|
+
: `${line.slice(0, QUOTED_LINE_MAX - 1)}…`;
|
|
3471
|
+
}
|
|
3472
|
+
/**
|
|
3473
|
+
* "Is this written the way the notation writes it?"
|
|
3474
|
+
*
|
|
3475
|
+
* {@link evaluateLabelPresence} asks whether the artefact says anything; this
|
|
3476
|
+
* asks whether what it says PARSES. The walk is the same walk — subjects by
|
|
3477
|
+
* role, frame attribution through {@link ValidationRule.backgroundRole}, one
|
|
3478
|
+
* finding per offending element — and everything that makes the verdict is in
|
|
3479
|
+
* the function the framework shipped ({@link LabelSyntaxDef}).
|
|
3480
|
+
*
|
|
3481
|
+
* ## One finding per ELEMENT, naming the FIRST bad line
|
|
3482
|
+
*
|
|
3483
|
+
* Not one per line, and the reason is what a compartment looks like halfway
|
|
3484
|
+
* through being typed: six lines of a class's attributes with three of them
|
|
3485
|
+
* unfinished is three brackets on one text element, three entries in the panel
|
|
3486
|
+
* and one thing to fix. The first offending line is the one the author is going
|
|
3487
|
+
* to look at, so it is the one the sentence names.
|
|
3488
|
+
*
|
|
3489
|
+
* The finding keeps the RULE's `messageKey` and quotes the line in the
|
|
3490
|
+
* FALLBACK, which is the honest limit of this engine: a finding carries no
|
|
3491
|
+
* message parameters, so a host translating the key gets the rule's own
|
|
3492
|
+
* sentence and not the line. Recorded in `docs/adr/0021` rather than worked
|
|
3493
|
+
* around here — inventing a parameter channel for one family would be a change
|
|
3494
|
+
* to every family's contract.
|
|
3495
|
+
*
|
|
3496
|
+
* ## Silence
|
|
3497
|
+
*
|
|
3498
|
+
* The usual proportionality, and one addition. An element with no role is not a
|
|
3499
|
+
* subject; a label with no visible line is nothing to parse (that is
|
|
3500
|
+
* `label-presence`'s question, and a framework asking both asks them with two
|
|
3501
|
+
* rules); a blank line and an ellipsis are notation. And a rule whose `parse` is
|
|
3502
|
+
* not a function evaluates nothing at all and warns once — see the header of
|
|
3503
|
+
* {@link LabelSyntaxDef} on why that case exists.
|
|
3504
|
+
*
|
|
3505
|
+
* ## Cost
|
|
3506
|
+
*
|
|
3507
|
+
* One label read and one `parse` per line, paid only by the elements carrying
|
|
3508
|
+
* the subject role. Linear in the WORDS on the board rather than in its
|
|
3509
|
+
* elements, which is the first time this file can say that — and the reason
|
|
3510
|
+
* every rule of the family this library ships is `audit`, hence on-demand
|
|
3511
|
+
* (PF7.6), hence off the drawing path entirely.
|
|
3512
|
+
*/
|
|
3513
|
+
function evaluateLabelSyntax(rule, elements, incremental) {
|
|
3514
|
+
const subjectRole = rule.appliesTo;
|
|
3515
|
+
const syntax = rule.labelSyntax;
|
|
3516
|
+
if (subjectRole === undefined || syntax === undefined)
|
|
3517
|
+
return [];
|
|
3518
|
+
if (typeof syntax.parse !== 'function') {
|
|
3519
|
+
warnOnce(`label-syntax rule "${rule.id}" carries no parse function — a rule of ` +
|
|
3520
|
+
`this family holds its framework's own grammar and cannot be ` +
|
|
3521
|
+
`serialized; the rule is not evaluated.`);
|
|
3522
|
+
return [];
|
|
3523
|
+
}
|
|
3524
|
+
const target = syntax.target ?? 'center-label';
|
|
3525
|
+
const perLine = syntax.perLine ?? true;
|
|
3526
|
+
// Only resolved when something is actually wrong — a board spelled correctly
|
|
3527
|
+
// pays nothing for the frames it never has to name.
|
|
3528
|
+
let backgrounds = null;
|
|
3529
|
+
const judged = incremental?.subjects;
|
|
3530
|
+
const violations = [];
|
|
3531
|
+
for (const el of elements) {
|
|
3532
|
+
if (judged !== undefined && !judged.has(el.id))
|
|
3533
|
+
continue;
|
|
3534
|
+
// Cheapest possible exit for a neutral element: no role, no evaluation.
|
|
3535
|
+
if (el.role === undefined)
|
|
3536
|
+
continue;
|
|
3537
|
+
if (!roleIsA(el.role, subjectRole, rule.roles))
|
|
3538
|
+
continue;
|
|
3539
|
+
const lines = syntaxLines(labelSource(el, target), perLine);
|
|
3540
|
+
let offending = null;
|
|
3541
|
+
for (const line of lines) {
|
|
3542
|
+
const verdict = syntax.parse(line);
|
|
3543
|
+
if (verdict.ok)
|
|
3544
|
+
continue;
|
|
3545
|
+
offending = {
|
|
3546
|
+
line,
|
|
3547
|
+
...(verdict.reason ? { reason: verdict.reason } : {}),
|
|
3548
|
+
};
|
|
3549
|
+
break;
|
|
3550
|
+
}
|
|
3551
|
+
if (offending === null)
|
|
3552
|
+
continue;
|
|
3553
|
+
const quoted = quoteLine(offending.line);
|
|
3554
|
+
const words = {
|
|
3555
|
+
messageKey: rule.messageKey,
|
|
3556
|
+
...(rule.messageFallback !== undefined
|
|
3557
|
+
? {
|
|
3558
|
+
messageFallback: offending.reason === undefined
|
|
3559
|
+
? `${rule.messageFallback} “${quoted}”`
|
|
3560
|
+
: `${rule.messageFallback} “${quoted}” — ${offending.reason}.`,
|
|
3561
|
+
}
|
|
3562
|
+
: {}),
|
|
3563
|
+
...(rule.suggestionKey !== undefined
|
|
3564
|
+
? { suggestionKey: rule.suggestionKey }
|
|
3565
|
+
: {}),
|
|
3566
|
+
...(rule.suggestionFallback !== undefined
|
|
3567
|
+
? { suggestionFallback: rule.suggestionFallback }
|
|
3568
|
+
: {}),
|
|
3569
|
+
};
|
|
3570
|
+
backgrounds ??= backgroundsOf(rule, elements);
|
|
3571
|
+
const frameId = attributeBackground(el.elementBound, backgrounds)?.id;
|
|
3572
|
+
// The TEXT element, and nothing else. A UML compartment belongs to a group
|
|
3573
|
+
// and the mark is drawn on that group already ({@link anchorOf}) — the
|
|
3574
|
+
// group carries no role, is never evaluated, and by the same contract never
|
|
3575
|
+
// appears in a finding's `elementIds`.
|
|
3576
|
+
violations.push(raise(rule, [el.id], frameId, words));
|
|
3577
|
+
}
|
|
3578
|
+
return violations;
|
|
3579
|
+
}
|
|
3236
3580
|
const RULE_FAMILIES = {
|
|
3237
3581
|
'element-in-background': evaluateElementInBackground,
|
|
3238
3582
|
'orientation-against-axis': evaluateOrientationAgainstAxis,
|
|
@@ -3248,7 +3592,9 @@ const RULE_FAMILIES = {
|
|
|
3248
3592
|
'edge-locality': evaluateEdgeLocality,
|
|
3249
3593
|
reachability: evaluateReachability,
|
|
3250
3594
|
'label-presence': evaluateLabelPresence,
|
|
3595
|
+
'label-syntax': evaluateLabelSyntax,
|
|
3251
3596
|
'view-admissibility': evaluateViewAdmissibility,
|
|
3597
|
+
'border-proximity': evaluateBorderProximity,
|
|
3252
3598
|
};
|
|
3253
3599
|
/**
|
|
3254
3600
|
* What a verdict of each family DEPENDS ON (PF5.3) — read off the evaluator
|
|
@@ -3298,9 +3644,21 @@ export const RULE_SCOPES = {
|
|
|
3298
3644
|
reachability: 'surface',
|
|
3299
3645
|
// Own words; the frame is attribution only.
|
|
3300
3646
|
'label-presence': 'element',
|
|
3647
|
+
// Own words again, one question further on: the verdict is the framework's
|
|
3648
|
+
// parser applied to the subject's OWN label, line by line. Nothing about the
|
|
3649
|
+
// neighbourhood takes part — a compartment is right or wrong whatever is drawn
|
|
3650
|
+
// beside it, and an end label is read off the connector that carries it rather
|
|
3651
|
+
// than off what the connector joins.
|
|
3652
|
+
'label-syntax': 'element',
|
|
3301
3653
|
// Own role against the level the containing view declares; kept at the wider
|
|
3302
3654
|
// level for the same reason as `tone-convention`.
|
|
3303
3655
|
'view-admissibility': 'frame',
|
|
3656
|
+
// Widened from 'element' for the reason `attachment` is: the carriers the
|
|
3657
|
+
// subject is measured against are collected from the WHOLE surface and bounded
|
|
3658
|
+
// by no frame, so a carrier moved, resized or deleted anywhere can flip a
|
|
3659
|
+
// subject's verdict — including from "on a border" to "on no carrier at all",
|
|
3660
|
+
// which is the difference between a finding and silence.
|
|
3661
|
+
'border-proximity': 'surface',
|
|
3304
3662
|
};
|
|
3305
3663
|
/**
|
|
3306
3664
|
* The dependency scope in force for `rule`: the WIDER of its family's and its
|
|
@@ -3407,11 +3765,14 @@ function attributeAll(elements, frames, add) {
|
|
|
3407
3765
|
* it, an incremental pass keeps verdicts measured against a map the user has
|
|
3408
3766
|
* just stopped calling a map, or judged at a level nobody holds any more.
|
|
3409
3767
|
*
|
|
3410
|
-
* Real-time rules only,
|
|
3411
|
-
* {@link backgroundElementIds} and for the same reason: an on-demand rule
|
|
3412
|
-
* takes part in an incremental pass, so it has nothing
|
|
3768
|
+
* Real-time rules only, read statically ({@link couldBeRealtime}), exactly like
|
|
3769
|
+
* {@link backgroundElementIds} and for the same reason: an on-demand rule no
|
|
3770
|
+
* level can promote never takes part in an incremental pass, so it has nothing
|
|
3771
|
+
* to invalidate — and one that a level CAN promote has to be remembered here
|
|
3772
|
+
* before anybody chooses that level, because the memory is what the pass after
|
|
3773
|
+
* the choice reads.
|
|
3413
3774
|
*/
|
|
3414
|
-
export function frameMembership(rules, elements) {
|
|
3775
|
+
export function frameMembership(rules, elements, profiles = []) {
|
|
3415
3776
|
const membership = new Map();
|
|
3416
3777
|
const add = (id, frameId) => {
|
|
3417
3778
|
const held = membership.get(id);
|
|
@@ -3423,7 +3784,7 @@ export function frameMembership(rules, elements) {
|
|
|
3423
3784
|
const done = new Set();
|
|
3424
3785
|
let levelled = false;
|
|
3425
3786
|
for (const rule of rules) {
|
|
3426
|
-
if (!
|
|
3787
|
+
if (!couldBeRealtime(rule, profiles))
|
|
3427
3788
|
continue;
|
|
3428
3789
|
levelled = true;
|
|
3429
3790
|
const key = frameKey(rule);
|
|
@@ -3779,17 +4140,62 @@ export function dirtyClosure(elements, dirty, previous, wasIn) {
|
|
|
3779
4140
|
},
|
|
3780
4141
|
};
|
|
3781
4142
|
}
|
|
4143
|
+
/**
|
|
4144
|
+
* Whether a level in force on this surface PROMOTES `rule` — names it, by id,
|
|
4145
|
+
* at a severity the drawing user is shown.
|
|
4146
|
+
*
|
|
4147
|
+
* Named, and not merely resolved: {@link profileSeverity} falls back to the
|
|
4148
|
+
* rule's own severity for a rule a table is silent about, and a fallback is not
|
|
4149
|
+
* a decision. A promotion is a framework writing `'warning'` beside an id, which
|
|
4150
|
+
* is the one statement strong enough to overrule the rule's own `'on-demand'`
|
|
4151
|
+
* ({@link momentOf}).
|
|
4152
|
+
*
|
|
4153
|
+
* The same walk {@link isRuleAuditOnly} does — the framework's default level
|
|
4154
|
+
* unconditionally, then every level a root instance on this surface has CHOSEN.
|
|
4155
|
+
*/
|
|
4156
|
+
function isRulePromoted(rule, chosen, index) {
|
|
4157
|
+
if (index === null)
|
|
4158
|
+
return false;
|
|
4159
|
+
const promotes = (profile) => profile !== undefined &&
|
|
4160
|
+
profile.framework === rule.framework &&
|
|
4161
|
+
Object.hasOwn(profile.rules, rule.id) &&
|
|
4162
|
+
isDrawn(profile.rules[rule.id]);
|
|
4163
|
+
if (promotes(index.defaults.get(rule.framework)))
|
|
4164
|
+
return true;
|
|
4165
|
+
if (chosen === null)
|
|
4166
|
+
return false;
|
|
4167
|
+
for (const id of chosen.values()) {
|
|
4168
|
+
if (promotes(index.byId.get(id)))
|
|
4169
|
+
return true;
|
|
4170
|
+
}
|
|
4171
|
+
return false;
|
|
4172
|
+
}
|
|
3782
4173
|
/**
|
|
3783
4174
|
* The moment `rule` is evaluated at, GIVEN the levels of requirement in force
|
|
3784
4175
|
* on this surface — the one decision {@link runRules} takes before it reads a
|
|
3785
4176
|
* single element.
|
|
3786
4177
|
*
|
|
3787
|
-
*
|
|
3788
|
-
*
|
|
3789
|
-
*
|
|
3790
|
-
*
|
|
3791
|
-
*
|
|
3792
|
-
*
|
|
4178
|
+
* Everything turns on {@link isRuleAuditOnly}: an `audit` finding is dropped
|
|
4179
|
+
* before anything draws it ({@link userFacingViolations}), so computing one
|
|
4180
|
+
* inside the frame budget buys the user nothing.
|
|
4181
|
+
*
|
|
4182
|
+
* ## A declared `'on-demand'` yields to a level that PROMOTES the rule
|
|
4183
|
+
*
|
|
4184
|
+
* It did not, until the UML recette of 2026-09-16. An explicit `'on-demand'`
|
|
4185
|
+
* used to win against any table, on the argument that a framework which made
|
|
4186
|
+
* that declaration is not overruled by one — and the consequence was a rule a
|
|
4187
|
+
* level had explicitly raised to `'warning'` that still drew nothing, ever, on
|
|
4188
|
+
* any gesture. `uml.strict` promotes nine of them; the PO chose Specification,
|
|
4189
|
+
* emptied a lifeline's head, and the canvas stayed silent.
|
|
4190
|
+
*
|
|
4191
|
+
* So the arbitration is the other way round, and it is the narrow one:
|
|
4192
|
+
* **choosing a level that NAMES the rule at a drawn severity puts it back on
|
|
4193
|
+
* the drawing path** ({@link isRulePromoted}). A framework keeping a rule
|
|
4194
|
+
* `'audit'` at every level keeps the second moment with it — which is how
|
|
4195
|
+
* `uml.unreachable-*` stays a graph walk nobody pays for on a gesture — and a
|
|
4196
|
+
* declaration nothing promotes is untouched. The rule stays the framework's to
|
|
4197
|
+
* make: it makes it in its profile table now, where the rest of the level lives,
|
|
4198
|
+
* instead of in two places that could disagree.
|
|
3793
4199
|
*
|
|
3794
4200
|
* Mixed levels resolve towards EVALUATING, exactly as {@link isRuleSilent}
|
|
3795
4201
|
* needs `'off'` everywhere before it skips: one frame held to a level that
|
|
@@ -3798,8 +4204,9 @@ export function dirtyClosure(elements, dirty, previous, wasIn) {
|
|
|
3798
4204
|
* walk where a wrong one costs a silent verdict.
|
|
3799
4205
|
*/
|
|
3800
4206
|
function momentOf(rule, chosen, index) {
|
|
3801
|
-
if ((rule.moment ?? 'realtime') !== 'realtime')
|
|
3802
|
-
return 'on-demand';
|
|
4207
|
+
if ((rule.moment ?? 'realtime') !== 'realtime') {
|
|
4208
|
+
return isRulePromoted(rule, chosen, index) ? 'realtime' : 'on-demand';
|
|
4209
|
+
}
|
|
3803
4210
|
return isRuleAuditOnly(rule, chosen, index) ? 'on-demand' : 'realtime';
|
|
3804
4211
|
}
|
|
3805
4212
|
/**
|
|
@@ -3814,6 +4221,30 @@ function momentOf(rule, chosen, index) {
|
|
|
3814
4221
|
function isRealtime(rule) {
|
|
3815
4222
|
return (rule.moment ?? 'realtime') === 'realtime';
|
|
3816
4223
|
}
|
|
4224
|
+
/**
|
|
4225
|
+
* Whether the drawing path may EVER have to evaluate `rule` on this assembly:
|
|
4226
|
+
* it declares the real-time moment, or some REGISTERED level promotes it past
|
|
4227
|
+
* `audit`, which is what puts it back on that path ({@link momentOf}).
|
|
4228
|
+
*
|
|
4229
|
+
* The three callers below are the ones with no instance to read a chosen level
|
|
4230
|
+
* from — they are computed once, against the registry, before any surface
|
|
4231
|
+
* exists. Asking "could any level in this assembly promote it" is the honest
|
|
4232
|
+
* static approximation of "does a level in force promote it": it can only
|
|
4233
|
+
* over-answer, and over-answering costs one extra id in a set or one extra
|
|
4234
|
+
* watched property, where under-answering costs a verdict that never appears
|
|
4235
|
+
* and a stale one that never clears.
|
|
4236
|
+
*
|
|
4237
|
+
* `profiles` defaults to none, so a caller that has no registry — every unit
|
|
4238
|
+
* fixture, and every host reading the declarations in the abstract — gets the
|
|
4239
|
+
* declared moment, exactly as before.
|
|
4240
|
+
*/
|
|
4241
|
+
function couldBeRealtime(rule, profiles) {
|
|
4242
|
+
if (isRealtime(rule))
|
|
4243
|
+
return true;
|
|
4244
|
+
return profiles.some(profile => profile.framework === rule.framework &&
|
|
4245
|
+
Object.hasOwn(profile.rules, rule.id) &&
|
|
4246
|
+
isDrawn(profile.rules[rule.id]));
|
|
4247
|
+
}
|
|
3817
4248
|
/** The exceptions an element carries, always an array, never a copy to keep. */
|
|
3818
4249
|
export function elementExceptions(element) {
|
|
3819
4250
|
const stored = element.validationExceptions;
|
|
@@ -3920,7 +4351,7 @@ function runRules(rules, elements, profiles, moment, incremental) {
|
|
|
3920
4351
|
* other moment, which no carry-over and no dirty-set walk can reconstruct. So
|
|
3921
4352
|
* the answer is not "re-judge more", it is "there is nothing here to build
|
|
3922
4353
|
* on", and that applies to {@link evaluateNoOverlap} exactly as it does to
|
|
3923
|
-
* the
|
|
4354
|
+
* the thirteen families that filter on subjects.
|
|
3924
4355
|
*
|
|
3925
4356
|
* A board with no profile registered has no regime to change and pays nothing
|
|
3926
4357
|
* for the question.
|
|
@@ -4037,7 +4468,11 @@ export function checkupRules(rules, elements, profiles = []) {
|
|
|
4037
4468
|
export function evaluateCheckup(rules, elements, profiles = [], seed) {
|
|
4038
4469
|
return runRules(rules, elements, profiles, 'on-demand', seed === undefined
|
|
4039
4470
|
? undefined
|
|
4040
|
-
: {
|
|
4471
|
+
: {
|
|
4472
|
+
dirty: seed,
|
|
4473
|
+
previous: [],
|
|
4474
|
+
wasIn: frameMembership(rules, elements, profiles),
|
|
4475
|
+
});
|
|
4041
4476
|
}
|
|
4042
4477
|
/**
|
|
4043
4478
|
* How long a check-up may hold the thread before yielding it back.
|
|
@@ -4290,28 +4725,41 @@ export const VERDICT_PROPS = [
|
|
|
4290
4725
|
*
|
|
4291
4726
|
* ## `text`, and why it is not in the constant
|
|
4292
4727
|
*
|
|
4293
|
-
* `label-presence`
|
|
4294
|
-
* and words are what a user changes by TYPING. Watched
|
|
4295
|
-
* keystroke in every shape on the board would wake the
|
|
4296
|
-
* a cost paid by every document, for a question most of
|
|
4297
|
-
*
|
|
4298
|
-
*
|
|
4299
|
-
*
|
|
4300
|
-
*
|
|
4301
|
-
*
|
|
4302
|
-
*
|
|
4303
|
-
*
|
|
4304
|
-
*
|
|
4305
|
-
*
|
|
4306
|
-
*
|
|
4307
|
-
*
|
|
4728
|
+
* `label-presence` and `label-syntax` are the two families whose verdict turns
|
|
4729
|
+
* on an element's words, and words are what a user changes by TYPING. Watched
|
|
4730
|
+
* unconditionally, every keystroke in every shape on the board would wake the
|
|
4731
|
+
* debounced evaluation — a cost paid by every document, for a question most of
|
|
4732
|
+
* them never ask.
|
|
4733
|
+
*
|
|
4734
|
+
* So it is added exactly when a rule of either family COULD reach the gesture
|
|
4735
|
+
* path — it declares the real-time moment, or some registered level promotes it
|
|
4736
|
+
* ({@link couldBeRealtime}). The filter mirrors {@link backgroundElementIds}: an
|
|
4737
|
+
* on-demand rule no level can promote is never evaluated on the gesture path, so
|
|
4738
|
+
* waking that path for it would hand back precisely what declaring the second
|
|
4739
|
+
* moment bought.
|
|
4740
|
+
*
|
|
4741
|
+
* The level half of that test is what makes "Specification is the check-up"
|
|
4742
|
+
* true for the two families that read WORDS. `uml.strict` promotes six spelling
|
|
4743
|
+
* rules and three naming ones; without the promoted rules' `text` in this set,
|
|
4744
|
+
* choosing Specification would raise them once, on the switch, and then never
|
|
4745
|
+
* again while the user retyped the very word the finding is about.
|
|
4746
|
+
*
|
|
4747
|
+
* Read STATICALLY, like {@link backgroundElementIds} and for the same reason:
|
|
4748
|
+
* this set is computed ONCE per manager, before any surface exists to read a
|
|
4749
|
+
* chosen level from, and watching a prop nothing turns out to need costs a
|
|
4308
4750
|
* debounced pass that finds nothing — never a wrong verdict.
|
|
4309
4751
|
*/
|
|
4310
|
-
export function verdictPropsOf(rules) {
|
|
4752
|
+
export function verdictPropsOf(rules, profiles = []) {
|
|
4311
4753
|
const props = new Set(VERDICT_PROPS);
|
|
4312
4754
|
for (const rule of rules) {
|
|
4313
|
-
|
|
4755
|
+
// The two families whose verdict turns on an element's words. Neither is
|
|
4756
|
+
// named as a constant: the second reads the same `text` slot (and, for a
|
|
4757
|
+
// connector end label, props that only exist on a connector, which are
|
|
4758
|
+
// watched through their own element's change anyway).
|
|
4759
|
+
if ((rule.family === 'label-presence' || rule.family === 'label-syntax') &&
|
|
4760
|
+
couldBeRealtime(rule, profiles)) {
|
|
4314
4761
|
props.add('text');
|
|
4762
|
+
}
|
|
4315
4763
|
// The level a VIEW declares decides which roles it admits, so changing it —
|
|
4316
4764
|
// or clearing it back to "free sketch", which DELETES the key, which is why
|
|
4317
4765
|
// `touchesVerdict` reads `oldValues` too — re-judges everything drawn on
|
|
@@ -4515,7 +4963,7 @@ export class ValidationManager extends InteractivityExtension {
|
|
|
4515
4963
|
* beside the rules it is derived from — see {@link verdictPropsOf}.
|
|
4516
4964
|
*/
|
|
4517
4965
|
get _watchedProps() {
|
|
4518
|
-
this._verdictProps ??= verdictPropsOf(this._activeRules);
|
|
4966
|
+
this._verdictProps ??= verdictPropsOf(this._activeRules, this._activeProfiles);
|
|
4519
4967
|
return this._verdictProps;
|
|
4520
4968
|
}
|
|
4521
4969
|
/**
|
|
@@ -4672,8 +5120,8 @@ export class ValidationManager extends InteractivityExtension {
|
|
|
4672
5120
|
? { dirty, previous, wasIn: this._membership }
|
|
4673
5121
|
: undefined);
|
|
4674
5122
|
this._evaluated = true;
|
|
4675
|
-
this._backgrounds = backgroundElementIds(rules, surface.elementModels);
|
|
4676
|
-
this._membership = frameMembership(rules, surface.elementModels);
|
|
5123
|
+
this._backgrounds = backgroundElementIds(rules, surface.elementModels, this._activeProfiles);
|
|
5124
|
+
this._membership = frameMembership(rules, surface.elementModels, this._activeProfiles);
|
|
4677
5125
|
// Stay silent when nothing changed: `violations$` is the seam a host panel
|
|
4678
5126
|
// subscribes to, and a clean board must not wake it on every debounce tick.
|
|
4679
5127
|
if (violations.length === 0 && this.violations$.peek().length === 0)
|