@formicoidea/labre-core 0.31.0 → 0.32.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-callout/callout-block.d.ts +6 -0
- package/dist/_pkgs/affine-block-callout/callout-block.js +25 -3
- package/dist/_pkgs/affine-block-callout/callout-keymap.js +59 -19
- package/dist/_pkgs/affine-block-callout/commands/callout-to-paragraph.d.ts +20 -0
- package/dist/_pkgs/affine-block-callout/commands/callout-to-paragraph.js +60 -0
- package/dist/_pkgs/affine-block-callout/commands/split-callout.d.ts +17 -0
- package/dist/_pkgs/affine-block-callout/commands/split-callout.js +42 -0
- package/dist/_pkgs/affine-block-callout/configs/slash-menu.js +9 -6
- package/dist/_pkgs/affine-block-callout/emoji-margin.d.ts +9 -0
- package/dist/_pkgs/affine-block-callout/emoji-margin.js +36 -0
- package/dist/_pkgs/affine-block-callout/emoji-menu.d.ts +5 -1
- package/dist/_pkgs/affine-block-callout/emoji-menu.js +5 -0
- package/dist/_pkgs/affine-block-code/code-block.d.ts +14 -0
- package/dist/_pkgs/affine-block-code/code-block.js +44 -6
- package/dist/_pkgs/affine-block-code/code-toolbar/components/code-toolbar.d.ts +2 -0
- package/dist/_pkgs/affine-block-code/code-toolbar/components/code-toolbar.js +23 -14
- package/dist/_pkgs/affine-block-code/code-toolbar/components/more-menu.d.ts +16 -0
- package/dist/_pkgs/affine-block-code/code-toolbar/components/more-menu.js +93 -0
- package/dist/_pkgs/affine-block-code/code-toolbar/config.js +52 -5
- package/dist/_pkgs/affine-block-code/effects.d.ts +2 -0
- package/dist/_pkgs/affine-block-code/effects.js +2 -0
- package/dist/_pkgs/affine-block-code/highlight/affine-code-unit.js +6 -1
- package/dist/_pkgs/affine-block-code/index.d.ts +1 -0
- package/dist/_pkgs/affine-block-code/index.js +1 -0
- package/dist/_pkgs/affine-block-code/line-numbers.d.ts +25 -0
- package/dist/_pkgs/affine-block-code/line-numbers.js +27 -0
- package/dist/_pkgs/affine-block-code/styles.js +31 -0
- package/dist/_pkgs/affine-block-data-view/data-view-block.js +1 -0
- package/dist/_pkgs/affine-block-database/components/title/index.js +4 -1
- package/dist/_pkgs/affine-block-database/configs/slash-menu.js +28 -1
- package/dist/_pkgs/affine-block-database/database-block.js +13 -0
- package/dist/_pkgs/affine-block-database/properties/paste-url.d.ts +24 -0
- package/dist/_pkgs/affine-block-database/properties/paste-url.js +98 -0
- package/dist/_pkgs/affine-block-database/properties/rich-text/cell-renderer.js +9 -19
- package/dist/_pkgs/affine-block-database/properties/title/text.js +20 -25
- package/dist/_pkgs/affine-block-database/views/index.js +1 -0
- package/dist/_pkgs/affine-block-edgeless-text/edgeless-text-block.js +10 -0
- package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/config.d.ts +3 -0
- package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/config.js +48 -1
- package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/font-size.d.ts +17 -0
- package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/font-size.js +24 -0
- package/dist/_pkgs/affine-block-embed-doc/common/doc-trashed.d.ts +9 -0
- package/dist/_pkgs/affine-block-embed-doc/common/doc-trashed.js +10 -0
- package/dist/_pkgs/affine-block-embed-doc/embed-linked-doc-block/embed-linked-doc-block.js +8 -4
- package/dist/_pkgs/affine-block-embed-doc/embed-synced-doc-block/embed-synced-doc-block.d.ts +4 -0
- package/dist/_pkgs/affine-block-embed-doc/embed-synced-doc-block/embed-synced-doc-block.js +22 -3
- package/dist/_pkgs/affine-block-frame/frame-manager.d.ts +13 -0
- package/dist/_pkgs/affine-block-frame/frame-manager.js +32 -2
- package/dist/_pkgs/affine-block-latex/styles.js +6 -1
- package/dist/_pkgs/affine-block-note/note-edgeless-block.d.ts +9 -0
- package/dist/_pkgs/affine-block-note/note-edgeless-block.js +29 -1
- package/dist/_pkgs/affine-block-root/commands/pivot-commands.d.ts +37 -0
- package/dist/_pkgs/affine-block-root/commands/pivot-commands.js +168 -0
- package/dist/_pkgs/affine-block-root/commands/reading-commands.d.ts +23 -0
- package/dist/_pkgs/affine-block-root/commands/reading-commands.js +107 -0
- package/dist/_pkgs/affine-block-root/commands/tag-commands.d.ts +47 -0
- package/dist/_pkgs/affine-block-root/commands/tag-commands.js +159 -0
- package/dist/_pkgs/affine-block-root/configs/toolbar.d.ts +1 -0
- package/dist/_pkgs/affine-block-root/edgeless/configs/toolbar/more.js +9 -2
- package/dist/_pkgs/affine-block-root/edgeless/configs/toolbar/render-linked-doc.js +1 -1
- package/dist/_pkgs/affine-block-root/edgeless/edgeless-keyboard.js +26 -1
- package/dist/_pkgs/affine-block-root/edgeless/edgeless-root-block.js +11 -2
- package/dist/_pkgs/affine-block-root/edgeless/edgeless-root-service.js +14 -0
- package/dist/_pkgs/affine-block-root/edgeless/index.d.ts +1 -0
- package/dist/_pkgs/affine-block-root/edgeless/index.js +1 -0
- package/dist/_pkgs/affine-block-root/edgeless/reserved-keys.d.ts +21 -0
- package/dist/_pkgs/affine-block-root/edgeless/reserved-keys.js +34 -0
- package/dist/_pkgs/affine-block-root/edgeless/utils/clone-utils.d.ts +7 -1
- package/dist/_pkgs/affine-block-root/edgeless/utils/clone-utils.js +11 -2
- package/dist/_pkgs/affine-block-root/index.d.ts +4 -1
- package/dist/_pkgs/affine-block-root/index.js +4 -1
- package/dist/_pkgs/affine-block-root/keyboard/commands.d.ts +2 -0
- package/dist/_pkgs/affine-block-root/keyboard/commands.js +147 -0
- package/dist/_pkgs/affine-block-root/view.js +13 -4
- package/dist/_pkgs/affine-block-surface/commands/reassociate-connectors.js +0 -1
- package/dist/_pkgs/affine-block-surface/effects.js +6 -0
- package/dist/_pkgs/affine-block-surface/element-model/index.d.ts +5 -2
- package/dist/_pkgs/affine-block-surface/element-model/index.js +4 -2
- package/dist/_pkgs/affine-block-surface/extensions/audit.d.ts +107 -0
- package/dist/_pkgs/affine-block-surface/extensions/audit.js +472 -0
- package/dist/_pkgs/affine-block-surface/extensions/crud-extension.d.ts +14 -0
- package/dist/_pkgs/affine-block-surface/extensions/crud-extension.js +27 -0
- package/dist/_pkgs/affine-block-surface/extensions/editor-anchored-panel.d.ts +133 -0
- package/dist/_pkgs/affine-block-surface/extensions/editor-anchored-panel.js +326 -0
- package/dist/_pkgs/affine-block-surface/extensions/index.d.ts +13 -0
- package/dist/_pkgs/affine-block-surface/extensions/index.js +13 -0
- package/dist/_pkgs/affine-block-surface/extensions/map-quality-widget.d.ts +146 -0
- package/dist/_pkgs/affine-block-surface/extensions/map-quality-widget.js +528 -0
- package/dist/_pkgs/affine-block-surface/extensions/map-quality.d.ts +109 -0
- package/dist/_pkgs/affine-block-surface/extensions/map-quality.js +84 -0
- package/dist/_pkgs/affine-block-surface/extensions/reading-toolbar.d.ts +15 -0
- package/dist/_pkgs/affine-block-surface/extensions/reading-toolbar.js +158 -0
- package/dist/_pkgs/affine-block-surface/extensions/reading-widget.d.ts +145 -0
- package/dist/_pkgs/affine-block-surface/extensions/reading-widget.js +590 -0
- package/dist/_pkgs/affine-block-surface/extensions/reading.d.ts +494 -0
- package/dist/_pkgs/affine-block-surface/extensions/reading.js +767 -0
- package/dist/_pkgs/affine-block-surface/extensions/spotlight.d.ts +45 -0
- package/dist/_pkgs/affine-block-surface/extensions/spotlight.js +177 -0
- package/dist/_pkgs/affine-block-surface/extensions/tags-toolbar.d.ts +10 -0
- package/dist/_pkgs/affine-block-surface/extensions/tags-toolbar.js +295 -0
- package/dist/_pkgs/affine-block-surface/extensions/validation-toolbar.d.ts +27 -0
- package/dist/_pkgs/affine-block-surface/extensions/validation-toolbar.js +361 -0
- package/dist/_pkgs/affine-block-surface/extensions/validation.d.ts +1340 -0
- package/dist/_pkgs/affine-block-surface/extensions/validation.js +3009 -0
- package/dist/_pkgs/affine-block-surface/extensions/violation-detail-widget.d.ts +286 -0
- package/dist/_pkgs/affine-block-surface/extensions/violation-detail-widget.js +907 -0
- package/dist/_pkgs/affine-block-surface/extensions/violation-timeline.d.ts +80 -0
- package/dist/_pkgs/affine-block-surface/extensions/violation-timeline.js +123 -0
- package/dist/_pkgs/affine-block-surface/framework-background/def.d.ts +321 -0
- package/dist/_pkgs/affine-block-surface/framework-background/def.js +81 -0
- package/dist/_pkgs/affine-block-surface/framework-background/facts.d.ts +188 -0
- package/dist/_pkgs/affine-block-surface/framework-background/facts.js +284 -0
- package/dist/_pkgs/affine-block-surface/framework-background/index.d.ts +5 -0
- package/dist/_pkgs/affine-block-surface/framework-background/index.js +5 -0
- package/dist/_pkgs/affine-block-surface/framework-background/interaction.d.ts +12 -0
- package/dist/_pkgs/affine-block-surface/framework-background/interaction.js +24 -0
- package/dist/_pkgs/affine-block-surface/framework-background/labels.d.ts +59 -0
- package/dist/_pkgs/affine-block-surface/framework-background/labels.js +117 -0
- package/dist/_pkgs/affine-block-surface/framework-background/renderer.d.ts +8 -0
- package/dist/_pkgs/affine-block-surface/framework-background/renderer.js +238 -0
- package/dist/_pkgs/affine-block-surface/index.d.ts +1 -0
- package/dist/_pkgs/affine-block-surface/index.js +1 -0
- package/dist/_pkgs/affine-block-surface/renderer/canvas-renderer.d.ts +69 -3
- package/dist/_pkgs/affine-block-surface/renderer/canvas-renderer.js +333 -44
- package/dist/_pkgs/affine-block-surface/renderer/dom-renderer.js +18 -2
- package/dist/_pkgs/affine-block-surface/tool/default-tool.js +8 -0
- package/dist/_pkgs/affine-block-surface/utils/font.js +9 -3
- package/dist/_pkgs/affine-block-surface/view.d.ts +17 -0
- package/dist/_pkgs/affine-block-surface/view.js +57 -2
- package/dist/_pkgs/affine-block-table/selection-controller.d.ts +6 -0
- package/dist/_pkgs/affine-block-table/selection-controller.js +24 -1
- package/dist/_pkgs/affine-block-table/table-block.js +8 -2
- package/dist/_pkgs/affine-block-table/table-cell.js +5 -6
- package/dist/_pkgs/affine-block-table/table-keymap.d.ts +18 -0
- package/dist/_pkgs/affine-block-table/table-keymap.js +41 -0
- package/dist/_pkgs/affine-block-table/utils.d.ts +7 -0
- package/dist/_pkgs/affine-block-table/utils.js +12 -0
- package/dist/_pkgs/affine-block-table/view.js +2 -0
- package/dist/_pkgs/affine-components/caption/captioned-block-component.js +2 -1
- package/dist/_pkgs/affine-components/context-menu/button.d.ts +7 -0
- package/dist/_pkgs/affine-components/context-menu/button.js +7 -2
- package/dist/_pkgs/affine-components/context-menu/input.d.ts +4 -0
- package/dist/_pkgs/affine-components/context-menu/input.js +12 -0
- package/dist/_pkgs/affine-components/context-menu/menu-all.d.ts +2 -0
- package/dist/_pkgs/affine-components/context-menu/menu-renderer.js +8 -1
- package/dist/_pkgs/affine-components/context-menu/sub-menu.js +3 -0
- package/dist/_pkgs/affine-components/highlight-dropdown-menu/highlight-duotone-icon.js +8 -8
- package/dist/_pkgs/affine-components/highlight-dropdown-menu/text-duotone-icon.js +11 -11
- package/dist/_pkgs/affine-components/icon-picker/affine-icon-picker-panel.d.ts +28 -0
- package/dist/_pkgs/affine-components/icon-picker/affine-icon-picker-panel.js +231 -0
- package/dist/_pkgs/affine-components/icon-picker/emoji-data.d.ts +40 -0
- package/dist/_pkgs/affine-components/icon-picker/emoji-data.js +99 -0
- package/dist/_pkgs/affine-components/icon-picker/emoji-picker-panel.d.ts +32 -0
- package/dist/_pkgs/affine-components/icon-picker/emoji-picker-panel.js +276 -0
- package/dist/_pkgs/affine-components/icon-picker/icon-data.d.ts +34 -0
- package/dist/_pkgs/affine-components/icon-picker/icon-data.js +83 -0
- package/dist/_pkgs/affine-components/icon-picker/icon-picker.d.ts +39 -0
- package/dist/_pkgs/affine-components/icon-picker/icon-picker.js +233 -0
- package/dist/_pkgs/affine-components/icon-picker/index.d.ts +8 -0
- package/dist/_pkgs/affine-components/icon-picker/index.js +15 -0
- package/dist/_pkgs/affine-components/icon-picker/recent-store.d.ts +8 -0
- package/dist/_pkgs/affine-components/icon-picker/recent-store.js +41 -0
- package/dist/_pkgs/affine-components/icon-picker/styles.d.ts +5 -0
- package/dist/_pkgs/affine-components/icon-picker/styles.js +166 -0
- package/dist/_pkgs/affine-components/icon-picker/types.d.ts +22 -0
- package/dist/_pkgs/affine-components/icon-picker/types.js +10 -0
- package/dist/_pkgs/affine-components/icons/text.js +426 -426
- package/dist/_pkgs/affine-components/open-doc-dropdown-menu/dropdown-menu.d.ts +1 -0
- package/dist/_pkgs/affine-components/portal/portal.d.ts +1 -1
- package/dist/_pkgs/affine-components/toolbar/menu-button.js +1 -0
- package/dist/_pkgs/affine-components/toolbar/toolbar.js +11 -10
- package/dist/_pkgs/affine-foundation/view.js +11 -2
- package/dist/_pkgs/affine-gfx-brush/index.d.ts +1 -0
- package/dist/_pkgs/affine-gfx-brush/index.js +1 -0
- package/dist/_pkgs/affine-gfx-brush/renderer/dom/brush.d.ts +1 -0
- package/dist/_pkgs/affine-gfx-brush/renderer/dom/brush.js +11 -0
- package/dist/_pkgs/affine-gfx-brush/renderer/dom/highlighter.d.ts +1 -0
- package/dist/_pkgs/affine-gfx-brush/renderer/dom/highlighter.js +11 -0
- package/dist/_pkgs/affine-gfx-brush/renderer/dom/index.d.ts +2 -0
- package/dist/_pkgs/affine-gfx-brush/renderer/dom/index.js +2 -0
- package/dist/_pkgs/affine-gfx-brush/renderer/dom/shared.d.ts +14 -0
- package/dist/_pkgs/affine-gfx-brush/renderer/dom/shared.js +54 -0
- package/dist/_pkgs/affine-gfx-brush/renderer/index.d.ts +1 -0
- package/dist/_pkgs/affine-gfx-brush/renderer/index.js +4 -0
- package/dist/_pkgs/affine-gfx-brush/view.d.ts +14 -0
- package/dist/_pkgs/affine-gfx-brush/view.js +29 -3
- package/dist/_pkgs/affine-gfx-connector/connector-manager.js +32 -6
- package/dist/_pkgs/affine-gfx-connector/connector-tool.d.ts +7 -0
- package/dist/_pkgs/affine-gfx-connector/connector-tool.js +2 -1
- package/dist/_pkgs/affine-gfx-connector/direction/direction-reveal.d.ts +123 -0
- package/dist/_pkgs/affine-gfx-connector/direction/direction-reveal.js +281 -0
- package/dist/_pkgs/affine-gfx-connector/direction/direction-widget.d.ts +65 -0
- package/dist/_pkgs/affine-gfx-connector/direction/direction-widget.js +395 -0
- package/dist/_pkgs/affine-gfx-connector/direction/index.d.ts +4 -0
- package/dist/_pkgs/affine-gfx-connector/direction/index.js +4 -0
- package/dist/_pkgs/affine-gfx-connector/direction/invert-direction.d.ts +72 -0
- package/dist/_pkgs/affine-gfx-connector/direction/invert-direction.js +187 -0
- package/dist/_pkgs/affine-gfx-connector/direction/typed-edge.d.ts +69 -0
- package/dist/_pkgs/affine-gfx-connector/direction/typed-edge.js +66 -0
- package/dist/_pkgs/affine-gfx-connector/effects.d.ts +2 -0
- package/dist/_pkgs/affine-gfx-connector/effects.js +2 -0
- package/dist/_pkgs/affine-gfx-connector/element-renderer/connector-dom/index.js +78 -41
- package/dist/_pkgs/affine-gfx-connector/index.d.ts +1 -0
- package/dist/_pkgs/affine-gfx-connector/index.js +1 -0
- package/dist/_pkgs/affine-gfx-connector/toolbar/config.d.ts +50 -0
- package/dist/_pkgs/affine-gfx-connector/toolbar/config.js +67 -1
- package/dist/_pkgs/affine-gfx-connector/view.js +16 -0
- package/dist/_pkgs/affine-gfx-group/command/group-api.js +150 -62
- package/dist/_pkgs/affine-gfx-group/text/edgeless-group-title-editor.js +4 -1
- package/dist/_pkgs/affine-gfx-pointer/tools/pan-tool.d.ts +16 -0
- package/dist/_pkgs/affine-gfx-pointer/tools/pan-tool.js +102 -32
- package/dist/_pkgs/affine-gfx-shape/commands.d.ts +2 -0
- package/dist/_pkgs/affine-gfx-shape/commands.js +33 -0
- package/dist/_pkgs/affine-gfx-shape/element-renderer/shape-dom/index.js +48 -19
- package/dist/_pkgs/affine-gfx-shape/index.d.ts +1 -1
- package/dist/_pkgs/affine-gfx-shape/index.js +1 -1
- package/dist/_pkgs/affine-gfx-shape/text/edgeless-shape-text-editor.d.ts +26 -0
- package/dist/_pkgs/affine-gfx-shape/text/edgeless-shape-text-editor.js +124 -13
- package/dist/_pkgs/affine-gfx-shape/view.js +3 -3
- package/dist/_pkgs/affine-gfx-template/toolbar/template-tool-button.d.ts +2 -0
- package/dist/_pkgs/affine-gfx-template/toolbar/template-tool-button.js +18 -1
- package/dist/_pkgs/affine-gfx-text/edgeless-text-editor.js +9 -5
- package/dist/_pkgs/affine-inline-latex/command.js +46 -26
- package/dist/_pkgs/affine-inline-latex/latex-node/latex-node.d.ts +10 -0
- package/dist/_pkgs/affine-inline-latex/latex-node/latex-node.js +23 -0
- package/dist/_pkgs/affine-inline-link/link-node/affine-link.js +4 -1
- package/dist/_pkgs/affine-inline-preset/adapters/html/html-inline.d.ts +3 -0
- package/dist/_pkgs/affine-inline-preset/adapters/html/html-inline.js +29 -1
- package/dist/_pkgs/affine-model/blocks/code/code-model.d.ts +1 -0
- package/dist/_pkgs/affine-model/blocks/code/code-model.js +1 -0
- package/dist/_pkgs/affine-model/elements/connector/connector.js +24 -0
- package/dist/_pkgs/affine-model/elements/edgy/board.d.ts +32 -0
- package/dist/_pkgs/affine-model/elements/edgy/board.js +112 -0
- package/dist/_pkgs/affine-model/elements/edgy/facets.d.ts +12 -0
- package/dist/_pkgs/affine-model/elements/edgy/facets.js +25 -1
- package/dist/_pkgs/affine-model/elements/edgy/index.d.ts +1 -0
- package/dist/_pkgs/affine-model/elements/edgy/index.js +1 -0
- package/dist/_pkgs/affine-model/elements/framework-background/background.d.ts +42 -0
- package/dist/_pkgs/affine-model/elements/framework-background/background.js +42 -0
- package/dist/_pkgs/affine-model/elements/framework-background/index.d.ts +1 -0
- package/dist/_pkgs/affine-model/elements/framework-background/index.js +1 -0
- package/dist/_pkgs/affine-model/elements/index.d.ts +3 -1
- package/dist/_pkgs/affine-model/elements/index.js +1 -0
- package/dist/_pkgs/affine-model/elements/mindmap/mindmap.js +8 -3
- package/dist/_pkgs/affine-model/elements/mindmap/style.d.ts +10 -0
- package/dist/_pkgs/affine-model/elements/mindmap/style.js +8 -0
- package/dist/_pkgs/affine-model/elements/wardley/wardley.d.ts +21 -29
- package/dist/_pkgs/affine-model/elements/wardley/wardley.js +41 -48
- package/dist/_pkgs/affine-shared/adapters/markdown/delta-converter.d.ts +6 -1
- package/dist/_pkgs/affine-shared/adapters/markdown/delta-converter.js +160 -2
- package/dist/_pkgs/affine-shared/adapters/markdown/markdown.js +5 -1
- package/dist/_pkgs/affine-shared/adapters/types/delta-converter.d.ts +1 -0
- package/dist/_pkgs/affine-shared/adapters/utils/color.d.ts +24 -0
- package/dist/_pkgs/affine-shared/adapters/utils/color.js +280 -0
- 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/commands/block-crud/get-selected-blocks.js +10 -2
- package/dist/_pkgs/affine-shared/services/audit-service.d.ts +300 -0
- package/dist/_pkgs/affine-shared/services/audit-service.js +228 -0
- package/dist/_pkgs/affine-shared/services/edit-props-store.d.ts +7 -0
- package/dist/_pkgs/affine-shared/services/edit-props-store.js +11 -0
- package/dist/_pkgs/affine-shared/services/font-loader/font-loader-service.d.ts +26 -1
- package/dist/_pkgs/affine-shared/services/font-loader/font-loader-service.js +124 -7
- package/dist/_pkgs/affine-shared/services/index.d.ts +5 -0
- package/dist/_pkgs/affine-shared/services/index.js +5 -0
- package/dist/_pkgs/affine-shared/services/pivot-materiality-publisher.d.ts +129 -0
- package/dist/_pkgs/affine-shared/services/pivot-materiality-publisher.js +311 -0
- package/dist/_pkgs/affine-shared/services/pivot-properties-service.d.ts +217 -0
- package/dist/_pkgs/affine-shared/services/pivot-properties-service.js +114 -0
- package/dist/_pkgs/affine-shared/services/telemetry-service/code-block.d.ts +1 -1
- package/dist/_pkgs/affine-shared/services/telemetry-service/lifecycle.d.ts +182 -0
- package/dist/_pkgs/affine-shared/services/telemetry-service/telemetry-service.d.ts +2 -2
- package/dist/_pkgs/affine-shared/services/telemetry-service/types.d.ts +6 -1
- package/dist/_pkgs/affine-shared/services/toolbar-service/action.d.ts +10 -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/toolbar-service/layout.d.ts +134 -0
- package/dist/_pkgs/affine-shared/services/toolbar-service/layout.js +146 -0
- package/dist/_pkgs/affine-shared/services/translation-service/index.d.ts +68 -0
- package/dist/_pkgs/affine-shared/services/translation-service/index.js +39 -0
- package/dist/_pkgs/affine-shared/services/universe-tag-defs-service.d.ts +155 -0
- package/dist/_pkgs/affine-shared/services/universe-tag-defs-service.js +254 -0
- package/dist/_pkgs/affine-shared/utils/dom/point-to-range.d.ts +4 -0
- package/dist/_pkgs/affine-shared/utils/dom/point-to-range.js +58 -2
- package/dist/_pkgs/affine-shared/utils/dom/viewport.d.ts +60 -0
- package/dist/_pkgs/affine-shared/utils/dom/viewport.js +58 -0
- package/dist/_pkgs/affine-shared/utils/print-to-pdf.d.ts +21 -0
- package/dist/_pkgs/affine-shared/utils/print-to-pdf.js +166 -32
- package/dist/_pkgs/affine-shared/utils/zod-schema.d.ts +7 -0
- package/dist/_pkgs/affine-shared/utils/zod-schema.js +27 -1
- package/dist/_pkgs/affine-widget-drag-handle/watchers/edgeless-watcher.d.ts +19 -10
- package/dist/_pkgs/affine-widget-drag-handle/watchers/edgeless-watcher.js +122 -23
- package/dist/_pkgs/affine-widget-drag-handle/watchers/pointer-event-watcher.d.ts +2 -0
- package/dist/_pkgs/affine-widget-drag-handle/watchers/pointer-event-watcher.js +25 -4
- package/dist/_pkgs/affine-widget-edgeless-selected-rect/auto-complete-panel.js +10 -5
- package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-auto-complete.d.ts +15 -1
- package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-auto-complete.js +37 -32
- package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-element-link.js +5 -4
- package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-selected-rect.js +19 -9
- package/dist/_pkgs/affine-widget-edgeless-selected-rect/utils.d.ts +16 -2
- package/dist/_pkgs/affine-widget-edgeless-selected-rect/utils.js +19 -2
- package/dist/_pkgs/affine-widget-edgeless-toolbar/index.d.ts +1 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/index.js +1 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/menu/command-menu.d.ts +38 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/menu/command-menu.js +99 -0
- package/dist/_pkgs/affine-widget-frame-title/edgeless-frame-title-editor.js +4 -1
- package/dist/_pkgs/affine-widget-keyboard-toolbar/icons.js +98 -98
- package/dist/_pkgs/affine-widget-linked-doc/linked-doc-popover.js +2 -15
- package/dist/_pkgs/affine-widget-linked-doc/transformers/markdown.d.ts +10 -1
- package/dist/_pkgs/affine-widget-linked-doc/transformers/markdown.js +133 -6
- package/dist/_pkgs/affine-widget-linked-doc/transformers/utils.d.ts +10 -0
- package/dist/_pkgs/affine-widget-linked-doc/transformers/utils.js +120 -3
- package/dist/_pkgs/affine-widget-linked-doc/utils.d.ts +12 -0
- package/dist/_pkgs/affine-widget-linked-doc/utils.js +33 -0
- package/dist/_pkgs/affine-widget-remote-selection/edgeless/index.js +6 -4
- package/dist/_pkgs/affine-widget-slash-menu/slash-menu-popover.js +8 -4
- package/dist/_pkgs/affine-widget-slash-menu/utils.d.ts +9 -0
- package/dist/_pkgs/affine-widget-slash-menu/utils.js +24 -0
- package/dist/_pkgs/affine-widget-toolbar/toolbar.d.ts +6 -0
- package/dist/_pkgs/affine-widget-toolbar/toolbar.js +34 -6
- package/dist/_pkgs/affine-widget-toolbar/utils.d.ts +146 -3
- package/dist/_pkgs/affine-widget-toolbar/utils.js +738 -56
- package/dist/_pkgs/data-view/core/common/property-menu.js +3 -16
- package/dist/_pkgs/data-view/core/component/tags/multi-tag-select.d.ts +4 -0
- package/dist/_pkgs/data-view/core/component/tags/multi-tag-select.js +28 -1
- package/dist/_pkgs/data-view/core/data-view.d.ts +3 -1
- package/dist/_pkgs/data-view/core/data-view.js +25 -3
- package/dist/_pkgs/data-view/core/detail/field.js +2 -2
- package/dist/_pkgs/data-view/core/detail/selection.d.ts +4 -2
- package/dist/_pkgs/data-view/core/detail/selection.js +23 -7
- package/dist/_pkgs/data-view/core/effect.js +2 -0
- package/dist/_pkgs/data-view/core/filter/eval.js +36 -23
- package/dist/_pkgs/data-view/core/filter/filter-fn/matcher.d.ts +7 -0
- package/dist/_pkgs/data-view/core/filter/filter-fn/matcher.js +12 -0
- package/dist/_pkgs/data-view/core/group-by/compare-date-keys.d.ts +11 -0
- package/dist/_pkgs/data-view/core/group-by/compare-date-keys.js +55 -0
- package/dist/_pkgs/data-view/core/group-by/define.d.ts +6 -0
- package/dist/_pkgs/data-view/core/group-by/define.js +114 -0
- package/dist/_pkgs/data-view/core/group-by/matcher.d.ts +7 -0
- package/dist/_pkgs/data-view/core/group-by/matcher.js +13 -0
- package/dist/_pkgs/data-view/core/group-by/renderer/boolean-group.js +11 -11
- package/dist/_pkgs/data-view/core/group-by/renderer/date-group.d.ts +9 -0
- package/dist/_pkgs/data-view/core/group-by/renderer/date-group.js +97 -0
- package/dist/_pkgs/data-view/core/group-by/setting.js +86 -7
- package/dist/_pkgs/data-view/core/group-by/trait.d.ts +34 -0
- package/dist/_pkgs/data-view/core/group-by/trait.js +106 -10
- package/dist/_pkgs/data-view/core/utils/menu-title.js +17 -17
- package/dist/_pkgs/data-view/property-presets/multi-select/cell-renderer.js +3 -1
- package/dist/_pkgs/data-view/property-presets/number/define.js +2 -1
- package/dist/_pkgs/data-view/property-presets/select/cell-renderer.js +3 -1
- package/dist/_pkgs/data-view/view-presets/calendar/calendar-view-manager.d.ts +70 -0
- package/dist/_pkgs/data-view/view-presets/calendar/calendar-view-manager.js +449 -0
- package/dist/_pkgs/data-view/view-presets/calendar/define.d.ts +10 -0
- package/dist/_pkgs/data-view/view-presets/calendar/define.js +27 -0
- package/dist/_pkgs/data-view/view-presets/calendar/effect.d.ts +1 -0
- package/dist/_pkgs/data-view/view-presets/calendar/effect.js +4 -0
- package/dist/_pkgs/data-view/view-presets/calendar/index.d.ts +6 -0
- package/dist/_pkgs/data-view/view-presets/calendar/index.js +6 -0
- package/dist/_pkgs/data-view/view-presets/calendar/layout.d.ts +37 -0
- package/dist/_pkgs/data-view/view-presets/calendar/layout.js +138 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/actions.d.ts +7 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/actions.js +68 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/dnd.d.ts +32 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/dnd.js +159 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/effect.d.ts +1 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/effect.js +7 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/hit-test.d.ts +1 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/hit-test.js +28 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/styles.d.ts +1 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/styles.js +707 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/view.d.ts +89 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/view.js +837 -0
- package/dist/_pkgs/data-view/view-presets/calendar/renderer.d.ts +2 -0
- package/dist/_pkgs/data-view/view-presets/calendar/renderer.js +8 -0
- package/dist/_pkgs/data-view/view-presets/calendar/source.d.ts +8 -0
- package/dist/_pkgs/data-view/view-presets/calendar/source.js +3 -0
- package/dist/_pkgs/data-view/view-presets/calendar/types.d.ts +79 -0
- package/dist/_pkgs/data-view/view-presets/calendar/types.js +1 -0
- package/dist/_pkgs/data-view/view-presets/convert.js +28 -0
- package/dist/_pkgs/data-view/view-presets/effect.js +2 -0
- package/dist/_pkgs/data-view/view-presets/index.d.ts +2 -0
- package/dist/_pkgs/data-view/view-presets/index.js +3 -0
- package/dist/_pkgs/data-view/view-presets/kanban/kanban-view-manager.js +3 -1
- package/dist/_pkgs/data-view/view-presets/kanban/mobile/cell.js +2 -2
- package/dist/_pkgs/data-view/view-presets/table/collapsed-state.d.ts +18 -0
- package/dist/_pkgs/data-view/view-presets/table/collapsed-state.js +36 -0
- package/dist/_pkgs/data-view/view-presets/table/mobile/cell.js +2 -2
- package/dist/_pkgs/data-view/view-presets/table/mobile/group.d.ts +11 -0
- package/dist/_pkgs/data-view/view-presets/table/mobile/group.js +87 -4
- package/dist/_pkgs/data-view/view-presets/table/pc/cell.d.ts +3 -0
- package/dist/_pkgs/data-view/view-presets/table/pc/cell.js +11 -2
- package/dist/_pkgs/data-view/view-presets/table/pc/controller/hotkeys.d.ts +1 -0
- package/dist/_pkgs/data-view/view-presets/table/pc/controller/hotkeys.js +39 -33
- package/dist/_pkgs/data-view/view-presets/table/pc/group.d.ts +10 -0
- package/dist/_pkgs/data-view/view-presets/table/pc/group.js +84 -5
- package/dist/_pkgs/data-view/view-presets/table/pc-virtual/controller/hotkeys.d.ts +1 -0
- package/dist/_pkgs/data-view/view-presets/table/pc-virtual/controller/hotkeys.js +39 -33
- package/dist/_pkgs/data-view/view-presets/table/pc-virtual/group/top/group-title.js +18 -18
- package/dist/_pkgs/data-view/view-presets/table/pc-virtual/row/cell.d.ts +3 -0
- package/dist/_pkgs/data-view/view-presets/table/pc-virtual/row/cell.js +8 -0
- package/dist/_pkgs/data-view/view-presets/table/table-view-manager.js +3 -1
- package/dist/_pkgs/data-view/view-presets/table/utils.d.ts +3 -0
- package/dist/_pkgs/data-view/view-presets/table/utils.js +16 -1
- package/dist/_pkgs/data-view/widget-presets/tools/presets/view-options/view-options.js +3 -1
- package/dist/_pkgs/global/gfx/curve.js +4 -3
- package/dist/_pkgs/std/clipboard/clipboard.js +13 -3
- package/dist/_pkgs/std/clipboard/utils.d.ts +5 -0
- package/dist/_pkgs/std/clipboard/utils.js +7 -0
- package/dist/_pkgs/std/event/dispatcher.js +27 -1
- package/dist/_pkgs/std/event/keymap.js +16 -6
- package/dist/_pkgs/std/extension/command-registry.d.ts +321 -0
- package/dist/_pkgs/std/extension/command-registry.js +233 -0
- package/dist/_pkgs/std/extension/dnd/index.d.ts +1 -1
- package/dist/_pkgs/std/extension/index.d.ts +2 -0
- package/dist/_pkgs/std/extension/index.js +2 -0
- package/dist/_pkgs/std/extension/translation-manifest.d.ts +49 -0
- package/dist/_pkgs/std/extension/translation-manifest.js +71 -0
- package/dist/_pkgs/std/gfx/index.d.ts +7 -3
- package/dist/_pkgs/std/gfx/index.js +6 -2
- package/dist/_pkgs/std/gfx/interactivity/gfx-view-event-handler.js +6 -1
- package/dist/_pkgs/std/gfx/interactivity/manager.d.ts +8 -0
- package/dist/_pkgs/std/gfx/interactivity/manager.js +18 -0
- package/dist/_pkgs/std/gfx/layer.d.ts +1 -1
- package/dist/_pkgs/std/gfx/layer.js +1 -2
- package/dist/_pkgs/std/gfx/model/surface/decorators/field.js +9 -0
- package/dist/_pkgs/std/gfx/model/surface/decorators/index.d.ts +2 -2
- package/dist/_pkgs/std/gfx/model/surface/decorators/index.js +2 -2
- package/dist/_pkgs/std/gfx/model/surface/decorators/local.d.ts +14 -0
- package/dist/_pkgs/std/gfx/model/surface/decorators/local.js +22 -0
- package/dist/_pkgs/std/gfx/model/surface/decorators/observer.d.ts +2 -0
- package/dist/_pkgs/std/gfx/model/surface/decorators/observer.js +40 -1
- package/dist/_pkgs/std/gfx/model/surface/element-model.d.ts +282 -0
- package/dist/_pkgs/std/gfx/model/surface/element-model.js +436 -25
- package/dist/_pkgs/std/gfx/model/surface/pivot.d.ts +48 -0
- package/dist/_pkgs/std/gfx/model/surface/pivot.js +34 -0
- package/dist/_pkgs/std/gfx/model/surface/role.d.ts +153 -0
- package/dist/_pkgs/std/gfx/model/surface/role.js +115 -0
- package/dist/_pkgs/std/gfx/model/surface/surface-model.d.ts +70 -0
- package/dist/_pkgs/std/gfx/model/surface/surface-model.js +304 -17
- package/dist/_pkgs/std/gfx/model/surface/tags.d.ts +77 -0
- package/dist/_pkgs/std/gfx/model/surface/tags.js +246 -0
- package/dist/_pkgs/std/gfx/perf.d.ts +10 -0
- package/dist/_pkgs/std/gfx/perf.js +30 -0
- package/dist/_pkgs/std/gfx/tool/tool-controller.d.ts +13 -0
- package/dist/_pkgs/std/gfx/tool/tool-controller.js +26 -0
- package/dist/_pkgs/std/gfx/viewport.d.ts +12 -0
- package/dist/_pkgs/std/gfx/viewport.js +19 -1
- package/dist/_pkgs/std/inline/services/event.d.ts +2 -0
- package/dist/_pkgs/std/inline/services/event.js +96 -21
- package/dist/_pkgs/std/utils/layer.js +2 -6
- package/dist/_pkgs/std/utils/tree.d.ts +14 -0
- package/dist/_pkgs/std/utils/tree.js +59 -8
- package/dist/_pkgs/std/view/element/gfx-block-component.js +23 -13
- package/dist/_pkgs/store/extension/workspace/workspace-meta.d.ts +10 -0
- package/dist/_pkgs/store/model/block/flat-sync-controller.js +2 -12
- package/dist/_pkgs/store/model/store/crud.js +7 -4
- package/dist/_pkgs/store/reactive/flat-native-y/index.d.ts +1 -1
- package/dist/_pkgs/store/reactive/flat-native-y/index.js +24 -2
- package/dist/commands.d.ts +58 -0
- package/dist/commands.js +66 -0
- package/dist/extensions/command-telemetry.d.ts +21 -0
- package/dist/extensions/command-telemetry.js +89 -0
- package/dist/extensions/store.d.ts +9 -4
- package/dist/extensions/store.js +27 -24
- package/dist/extensions/view.d.ts +9 -4
- package/dist/extensions/view.js +23 -8
- package/dist/flags.d.ts +98 -21
- package/dist/flags.js +103 -22
- package/dist/frameworks.d.ts +45 -0
- package/dist/frameworks.js +154 -0
- package/dist/schemas.d.ts +8 -5
- package/dist/schemas.js +28 -32
- package/dist/shortcuts.d.ts +16 -16
- package/dist/shortcuts.js +8 -36
- package/dist/translations.d.ts +56 -0
- package/dist/translations.js +112 -0
- package/package.json +16 -4
- package/dist/_pkgs/affine-block-root/keyboard/shortcuts.d.ts +0 -8
- package/dist/_pkgs/affine-block-root/keyboard/shortcuts.js +0 -48
- package/dist/_pkgs/affine-gfx-shape/shortcuts.d.ts +0 -6
- package/dist/_pkgs/affine-gfx-shape/shortcuts.js +0 -28
- package/dist/_pkgs/data-view/core/utils/cache.d.ts +0 -5
- package/dist/_pkgs/data-view/core/utils/cache.js +0 -28
|
@@ -0,0 +1,361 @@
|
|
|
1
|
+
import { EditorChevronDown } from '../../affine-components/toolbar/index.js';
|
|
2
|
+
import { TelemetryProvider, ToolbarModuleExtension, translateKey, } from '../../affine-shared/services/index.js';
|
|
3
|
+
import { BlockFlavourIdentifier } from '../../std/index.js';
|
|
4
|
+
import { GfxPrimitiveElementModel } from '../../std/gfx/index.js';
|
|
5
|
+
import { html, nothing } from 'lit';
|
|
6
|
+
import { ValidationManager } from './validation.js';
|
|
7
|
+
/**
|
|
8
|
+
* The tick on the profile in force. Drawn inline rather than pulled from
|
|
9
|
+
* `@blocksuite/icons`, which this package does not depend on and which is not
|
|
10
|
+
* worth a new dependency for one glyph — the same call the framework toolbars
|
|
11
|
+
* already make for their own icons.
|
|
12
|
+
*/
|
|
13
|
+
const CheckIcon = html `<svg
|
|
14
|
+
width="20"
|
|
15
|
+
height="20"
|
|
16
|
+
viewBox="0 0 24 24"
|
|
17
|
+
fill="none"
|
|
18
|
+
stroke="currentColor"
|
|
19
|
+
stroke-width="2"
|
|
20
|
+
stroke-linecap="round"
|
|
21
|
+
stroke-linejoin="round"
|
|
22
|
+
>
|
|
23
|
+
<path d="M5 12.5l4.5 4.5L19 7.5" />
|
|
24
|
+
</svg>`;
|
|
25
|
+
/**
|
|
26
|
+
* The single selected canvas element the dropdown is about, or `null`.
|
|
27
|
+
*
|
|
28
|
+
* A single element on purpose: every entry in this menu is one decision about
|
|
29
|
+
* one instance, and a multi-selection spanning two maps has no honest "current"
|
|
30
|
+
* value to show.
|
|
31
|
+
*/
|
|
32
|
+
function selectedInstance(ctx) {
|
|
33
|
+
const models = ctx.getSurfaceModels();
|
|
34
|
+
if (models.length !== 1)
|
|
35
|
+
return null;
|
|
36
|
+
const [element] = models;
|
|
37
|
+
return element instanceof GfxPrimitiveElementModel ? element : null;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* The selection, if it is a single root instance with a choice to make.
|
|
41
|
+
*
|
|
42
|
+
* Fewer than two profiles is not a choice — a picker with one entry is chrome
|
|
43
|
+
* that decides nothing.
|
|
44
|
+
*/
|
|
45
|
+
function profileTarget(ctx) {
|
|
46
|
+
const validation = ctx.std.getOptional(ValidationManager);
|
|
47
|
+
if (!validation)
|
|
48
|
+
return null;
|
|
49
|
+
const element = selectedInstance(ctx);
|
|
50
|
+
if (!element)
|
|
51
|
+
return null;
|
|
52
|
+
const profiles = validation.profilesFor(element);
|
|
53
|
+
if (profiles.length < 2)
|
|
54
|
+
return null;
|
|
55
|
+
return { element, profiles, active: validation.profileOf(element) };
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* The selection, if it is a root instance whose framework declares a nudge
|
|
59
|
+
* (PF7.11).
|
|
60
|
+
*
|
|
61
|
+
* Independent of {@link profileTarget}: a framework may ship a checklist and no
|
|
62
|
+
* second profile, or the other way round, and the dropdown must show whichever
|
|
63
|
+
* of its sections has something to say.
|
|
64
|
+
*/
|
|
65
|
+
function mapQualityTarget(ctx) {
|
|
66
|
+
const validation = ctx.std.getOptional(ValidationManager);
|
|
67
|
+
if (!validation)
|
|
68
|
+
return null;
|
|
69
|
+
const element = selectedInstance(ctx);
|
|
70
|
+
if (!element)
|
|
71
|
+
return null;
|
|
72
|
+
return validation.hasMapQuality(element) ? element : null;
|
|
73
|
+
}
|
|
74
|
+
/** Whether the dropdown has anything at all to offer for this selection. */
|
|
75
|
+
function hasValidationMenu(ctx) {
|
|
76
|
+
return profileTarget(ctx) !== null || mapQualityTarget(ctx) !== null;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Put the instance on `profile`, and report it.
|
|
80
|
+
*
|
|
81
|
+
* The write, the "choosing the default clears the key" rule and the immediate
|
|
82
|
+
* re-evaluation all belong to {@link ValidationManager.setProfile}; this is the
|
|
83
|
+
* gesture and the event. `captureSync` opens an undo checkpoint first, like
|
|
84
|
+
* every other write this toolbar makes, so one click is one undo.
|
|
85
|
+
*/
|
|
86
|
+
function pickProfile(ctx, element, profile) {
|
|
87
|
+
const validation = ctx.std.getOptional(ValidationManager);
|
|
88
|
+
if (!validation)
|
|
89
|
+
return;
|
|
90
|
+
const previous = validation.profileOf(element);
|
|
91
|
+
ctx.std.store.captureSync();
|
|
92
|
+
// A choice that changes nothing is not a decision and is not reported.
|
|
93
|
+
if (!validation.setProfile(element, profile.id))
|
|
94
|
+
return;
|
|
95
|
+
ctx.std.getOptional(TelemetryProvider)?.track('ValidationProfileChanged', {
|
|
96
|
+
page: 'whiteboard editor',
|
|
97
|
+
segment: 'whiteboard',
|
|
98
|
+
module: 'validation toolbar',
|
|
99
|
+
control: 'profile',
|
|
100
|
+
framework: profile.framework,
|
|
101
|
+
profileId: profile.id,
|
|
102
|
+
...(previous !== undefined ? { previousProfileId: previous.id } : {}),
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
/** One titled block of the dropdown. */
|
|
106
|
+
function renderSection(label, testid, items) {
|
|
107
|
+
return html `<div
|
|
108
|
+
role="group"
|
|
109
|
+
aria-label=${label}
|
|
110
|
+
data-testid=${testid}
|
|
111
|
+
style="display: flex; flex-direction: column;"
|
|
112
|
+
>
|
|
113
|
+
<div
|
|
114
|
+
style="padding: 4px 8px; font-size: 12px; color: var(--affine-text-secondary-color);"
|
|
115
|
+
>
|
|
116
|
+
${label}
|
|
117
|
+
</div>
|
|
118
|
+
${items}
|
|
119
|
+
</div>`;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* The Map quality section (PF7.11): one entry, which OPENS the panel.
|
|
123
|
+
*
|
|
124
|
+
* A menu is the wrong shape for a checklist — four tickable lines do not belong
|
|
125
|
+
* in a dropdown that closes on the first click. So the entry does the one thing
|
|
126
|
+
* a menu entry is good at, which is to open something;
|
|
127
|
+
* `ValidationManager.mapQualityFor$` carries the request across to the widget
|
|
128
|
+
* that draws it (`map-quality-widget.ts`).
|
|
129
|
+
*
|
|
130
|
+
* Nothing here names a framework: the entry appears when the ENGINE says the
|
|
131
|
+
* selected instance has a checklist
|
|
132
|
+
* ({@link ValidationManager.hasMapQuality}), which is derived from what the
|
|
133
|
+
* frameworks registered. A second framework declaring nudges gets this entry
|
|
134
|
+
* with no change to this file.
|
|
135
|
+
*/
|
|
136
|
+
function renderMapQualitySection(ctx, element) {
|
|
137
|
+
const label = translateKey(ctx.std, 'com.labre.validation.map-quality.open', 'Map quality…');
|
|
138
|
+
return renderSection(translateKey(ctx.std, 'com.labre.validation.map-quality.section', 'Map quality'), 'validation-map-quality-section', [
|
|
139
|
+
html `<editor-menu-action
|
|
140
|
+
data-testid="validation-map-quality-open"
|
|
141
|
+
aria-label=${label}
|
|
142
|
+
@click=${() => {
|
|
143
|
+
ctx.std.getOptional(ValidationManager)?.openMapQuality(element);
|
|
144
|
+
}}
|
|
145
|
+
>
|
|
146
|
+
<span style="width: 20px;"></span>
|
|
147
|
+
<span class="label">${label}</span>
|
|
148
|
+
</editor-menu-action>`,
|
|
149
|
+
]);
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Everything the Validation dropdown offers: the level of requirement (PF9) and
|
|
153
|
+
* the map quality panel (PF7.11), each appearing on its own merits.
|
|
154
|
+
*/
|
|
155
|
+
function renderSections(ctx, target, quality) {
|
|
156
|
+
const sections = [];
|
|
157
|
+
if (target) {
|
|
158
|
+
const { element, profiles, active } = target;
|
|
159
|
+
const options = profiles.map(profile => {
|
|
160
|
+
const selected = profile.id === active?.id;
|
|
161
|
+
return html `<editor-menu-action
|
|
162
|
+
data-testid="validation-profile-option"
|
|
163
|
+
data-profile-id=${profile.id}
|
|
164
|
+
data-selected=${selected ? 'true' : nothing}
|
|
165
|
+
aria-label=${translateKey(ctx.std, profile.labelKey, profile.fallback)}
|
|
166
|
+
aria-pressed=${selected}
|
|
167
|
+
@click=${() => pickProfile(ctx, element, profile)}
|
|
168
|
+
>
|
|
169
|
+
${selected ? CheckIcon : html `<span style="width: 20px;"></span>`}
|
|
170
|
+
<span class="label"
|
|
171
|
+
>${translateKey(ctx.std, profile.labelKey, profile.fallback)}</span
|
|
172
|
+
>
|
|
173
|
+
</editor-menu-action>`;
|
|
174
|
+
});
|
|
175
|
+
sections.push(renderSection(translateKey(ctx.std, 'com.labre.validation.profile.section', 'Profile'), 'validation-profile-section', options));
|
|
176
|
+
}
|
|
177
|
+
if (quality)
|
|
178
|
+
sections.push(renderMapQualitySection(ctx, quality));
|
|
179
|
+
return sections;
|
|
180
|
+
}
|
|
181
|
+
export const validationToolbarConfig = {
|
|
182
|
+
actions: [
|
|
183
|
+
{
|
|
184
|
+
// Sorted after a framework's own per-instance toggles (`a.` … `d.`), and
|
|
185
|
+
// before anything the generic surface module places at the End: the
|
|
186
|
+
// level of requirement is a setting of this instance, read last.
|
|
187
|
+
id: 'z.validation',
|
|
188
|
+
when: hasValidationMenu,
|
|
189
|
+
content(ctx) {
|
|
190
|
+
const target = profileTarget(ctx);
|
|
191
|
+
const quality = mapQualityTarget(ctx);
|
|
192
|
+
if (!target && !quality)
|
|
193
|
+
return null;
|
|
194
|
+
const label = translateKey(ctx.std, 'com.labre.validation.toolbar.label', 'Validation');
|
|
195
|
+
// The dropdown's own trigger names the level in force, so the current
|
|
196
|
+
// profile is readable without opening anything. An instance whose
|
|
197
|
+
// framework ships no second profile has no level to name, and the
|
|
198
|
+
// trigger falls back to the menu's own label.
|
|
199
|
+
const current = target?.active === undefined
|
|
200
|
+
? label
|
|
201
|
+
: translateKey(ctx.std, target.active.labelKey, target.active.fallback);
|
|
202
|
+
// The testid sits on the HOST as well as on the trigger: the trigger
|
|
203
|
+
// is handed to `editor-menu-button` as a property and rendered into
|
|
204
|
+
// its shadow root, so the host is the only handle from the toolbar's
|
|
205
|
+
// own DOM.
|
|
206
|
+
return html `<editor-menu-button
|
|
207
|
+
data-testid="validation-toolbar-entry"
|
|
208
|
+
.contentPadding=${'8px'}
|
|
209
|
+
.button=${html `
|
|
210
|
+
<editor-icon-button
|
|
211
|
+
data-testid="validation-toolbar-button"
|
|
212
|
+
aria-label=${label}
|
|
213
|
+
.tooltip=${label}
|
|
214
|
+
.justify=${'space-between'}
|
|
215
|
+
.labelHeight=${'20px'}
|
|
216
|
+
>
|
|
217
|
+
<span class="label">${current}</span>
|
|
218
|
+
${EditorChevronDown}
|
|
219
|
+
</editor-icon-button>
|
|
220
|
+
`}
|
|
221
|
+
>
|
|
222
|
+
<div
|
|
223
|
+
data-testid="validation-toolbar-menu"
|
|
224
|
+
data-orientation="vertical"
|
|
225
|
+
data-size="large"
|
|
226
|
+
>
|
|
227
|
+
${renderSections(ctx, target, quality)}
|
|
228
|
+
</div>
|
|
229
|
+
</editor-menu-button>`;
|
|
230
|
+
},
|
|
231
|
+
},
|
|
232
|
+
],
|
|
233
|
+
// The whole module stands down unless the selection has a choice to make, so
|
|
234
|
+
// a framework registering it pays one length check per selection change.
|
|
235
|
+
when: hasValidationMenu,
|
|
236
|
+
};
|
|
237
|
+
/**
|
|
238
|
+
* "Revoke the exception", on the contextual toolbar of the element that carries
|
|
239
|
+
* it (PF8, PO acceptance of 01/08).
|
|
240
|
+
*
|
|
241
|
+
* ## Why the toolbar and not the badge
|
|
242
|
+
*
|
|
243
|
+
* PF8 shipped the way back on a grey badge pinned to the canvas: an excused
|
|
244
|
+
* finding kept a marker, and clicking it opened the bubble that could revoke.
|
|
245
|
+
* That put a permanent dot on the board for something the user had explicitly
|
|
246
|
+
* decided to stop caring about — the affordance argued with the decision it was
|
|
247
|
+
* reporting. Selecting the element is the path everybody already knows, so the
|
|
248
|
+
* way back lives where every other thing you can do to an element lives, and
|
|
249
|
+
* the canvas goes quiet. The amber badge of a LIVE violation is untouched: that
|
|
250
|
+
* one is still asking for something (PF7).
|
|
251
|
+
*
|
|
252
|
+
* The same reasoning that moved the profile chip into this file, one entry up.
|
|
253
|
+
*
|
|
254
|
+
* ## Which element gets the entry
|
|
255
|
+
*
|
|
256
|
+
* Whichever one ANSWERS for the exception, in exactly the sense the canvas mark
|
|
257
|
+
* uses ({@link ValidationManager.revocableExceptionsOn} →
|
|
258
|
+
* `exceptionsAnchoredOn` → `anchorOf`): the outermost enclosing canvas group —
|
|
259
|
+
* i.e. the whole Wardley component built by the senior menu — or the element
|
|
260
|
+
* itself when it is not grouped. Dissolve the group and the entry moves down to
|
|
261
|
+
* the element, with nothing to invalidate. A framework background answers for
|
|
262
|
+
* the map-wide arbitration written on it, so the same entry on the background
|
|
263
|
+
* revokes the map scope.
|
|
264
|
+
*
|
|
265
|
+
* ## Where it is registered, and how it shares an element with Validation
|
|
266
|
+
*
|
|
267
|
+
* `custom:affine:surface:*` — the free wildcard slot, merged into the toolbar of
|
|
268
|
+
* EVERY canvas element. One registration therefore covers a group, a bare
|
|
269
|
+
* framework element and a background alike, and no framework's own toolbar
|
|
270
|
+
* config is touched.
|
|
271
|
+
*
|
|
272
|
+
* It coexists with the Validation dropdown above, which a framework registers on
|
|
273
|
+
* its OWN flavour (`custom:affine:surface:wardley`): `renderToolbar` collects
|
|
274
|
+
* the flavour slot, the `custom:` flavour slot, both surface wildcards and both
|
|
275
|
+
* `affine:*` slots, and CONCATENATES their actions. Selecting a Wardley map
|
|
276
|
+
* therefore offers Revoke exception (`c.validation-revoke-exception`, from
|
|
277
|
+
* here) and Validation (`z.validation`, from the framework) side by side,
|
|
278
|
+
* ordered by id. `affine:surface:*` is taken by the root's built-in module, and
|
|
279
|
+
* two modules on one key would collide — hence the `custom:` wildcard.
|
|
280
|
+
*
|
|
281
|
+
* The two are gated independently and that is the point: Validation is a
|
|
282
|
+
* framework's tooling and dies with its flag; this one asks the ENGINE whether a
|
|
283
|
+
* registered rule can still be arbitrated on, so it dies with the flag too,
|
|
284
|
+
* without either module knowing the other exists.
|
|
285
|
+
*/
|
|
286
|
+
const REVOKE_LABEL_KEY = 'com.labre.validation.action.revoke-exception';
|
|
287
|
+
const REVOKE_LABEL_FALLBACK = 'Revoke exception';
|
|
288
|
+
/**
|
|
289
|
+
* The single selected canvas element, or `null`.
|
|
290
|
+
*
|
|
291
|
+
* One element only: "revoke the exception" has no honest meaning across a mixed
|
|
292
|
+
* bag of shapes, and the entry is about one arbitration on one thing.
|
|
293
|
+
*/
|
|
294
|
+
function selectedElement(ctx) {
|
|
295
|
+
const models = ctx.getSurfaceModels();
|
|
296
|
+
if (models.length !== 1)
|
|
297
|
+
return null;
|
|
298
|
+
const [model] = models;
|
|
299
|
+
return model instanceof GfxPrimitiveElementModel ? model : null;
|
|
300
|
+
}
|
|
301
|
+
function revocableOn(ctx) {
|
|
302
|
+
const element = selectedElement(ctx);
|
|
303
|
+
if (!element)
|
|
304
|
+
return [];
|
|
305
|
+
return (ctx.std.getOptional(ValidationManager)?.revocableExceptionsOn(element) ?? []);
|
|
306
|
+
}
|
|
307
|
+
export const validationExceptionToolbarConfig = {
|
|
308
|
+
actions: [
|
|
309
|
+
{
|
|
310
|
+
// Ordered after a framework's own per-instance toggles, before the
|
|
311
|
+
// built-in surface actions and before `z.validation`.
|
|
312
|
+
id: 'c.validation-revoke-exception',
|
|
313
|
+
// Sorting early is right — it is a decision about this element, read
|
|
314
|
+
// before the generic canvas actions — but on a narrow row the default
|
|
315
|
+
// "later entries give way first" would then keep this ahead of the core
|
|
316
|
+
// actions, which is backwards: it is the rarest entry of the toolbar and
|
|
317
|
+
// the wordiest, with no icon to fall back to. So it says so, and it is
|
|
318
|
+
// the first thing to move into the "⋮" — where it keeps its full label
|
|
319
|
+
// and its behaviour.
|
|
320
|
+
priority: -1,
|
|
321
|
+
// No exception answered for by this element — including every board with
|
|
322
|
+
// no framework enabled — means no entry at all.
|
|
323
|
+
when: (ctx) => revocableOn(ctx).length > 0,
|
|
324
|
+
// `label` is static on a ToolbarAction, so the i18n seam needs the
|
|
325
|
+
// generator form: it is the only shape that receives the context, and
|
|
326
|
+
// `translateKey` needs `std` to reach the host's catalogue.
|
|
327
|
+
generate: (ctx) => {
|
|
328
|
+
const label = translateKey(ctx.std, REVOKE_LABEL_KEY, REVOKE_LABEL_FALLBACK);
|
|
329
|
+
return {
|
|
330
|
+
label,
|
|
331
|
+
// Shown as words, not as a mystery glyph: taking back a recorded
|
|
332
|
+
// decision is not something to guess at from an icon.
|
|
333
|
+
showLabel: true,
|
|
334
|
+
tooltip: label,
|
|
335
|
+
run: (runCtx) => {
|
|
336
|
+
const element = selectedElement(runCtx);
|
|
337
|
+
if (!element)
|
|
338
|
+
return;
|
|
339
|
+
const validation = runCtx.std.getOptional(ValidationManager);
|
|
340
|
+
// One click is one undo, like every other write this toolbar makes.
|
|
341
|
+
runCtx.std.store.captureSync();
|
|
342
|
+
const revoked = validation?.revokeExceptionsOn(element) ?? [];
|
|
343
|
+
for (const entry of revoked) {
|
|
344
|
+
runCtx.track('ValidationExceptionRevoked', {
|
|
345
|
+
control: 'revoke exception',
|
|
346
|
+
ruleId: entry.ruleId,
|
|
347
|
+
framework: entry.framework,
|
|
348
|
+
scope: entry.scope,
|
|
349
|
+
elementCount: entry.elementCount,
|
|
350
|
+
});
|
|
351
|
+
}
|
|
352
|
+
},
|
|
353
|
+
};
|
|
354
|
+
},
|
|
355
|
+
},
|
|
356
|
+
],
|
|
357
|
+
};
|
|
358
|
+
export const validationExceptionToolbarExtension = ToolbarModuleExtension({
|
|
359
|
+
id: BlockFlavourIdentifier('custom:affine:surface:*'),
|
|
360
|
+
config: validationExceptionToolbarConfig,
|
|
361
|
+
});
|