@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
|
@@ -12,6 +12,12 @@ export declare class EdgelessAutoComplete extends EdgelessAutoComplete_base {
|
|
|
12
12
|
private readonly _onPointerDown;
|
|
13
13
|
private _pathGenerator;
|
|
14
14
|
private _timer;
|
|
15
|
+
/**
|
|
16
|
+
* Whether `this.current` is a thing the auto-complete knows how to clone: a
|
|
17
|
+
* shape (subclasses included) or a note block. Deliberately says nothing
|
|
18
|
+
* about the selection — the drag-out path consults it *after* clearing the
|
|
19
|
+
* selection to open the shape picker.
|
|
20
|
+
*/
|
|
15
21
|
get canShowAutoComplete(): boolean;
|
|
16
22
|
get connectionOverlay(): ConnectionOverlay;
|
|
17
23
|
get crud(): import("../affine-block-surface/index.js").EdgelessCRUDExtension;
|
|
@@ -30,10 +36,18 @@ export declare class EdgelessAutoComplete extends EdgelessAutoComplete_base {
|
|
|
30
36
|
private _showNextShape;
|
|
31
37
|
connectedCallback(): void;
|
|
32
38
|
firstUpdated(): void;
|
|
39
|
+
/**
|
|
40
|
+
* The single predicate the arrows are rendered on. It must stay stricter
|
|
41
|
+
* than, or equal to, what the click handlers can actually do: an arrow the
|
|
42
|
+
* click cannot honour is a crash waiting to happen (see
|
|
43
|
+
* `createEdgelessElement`). Hence the identity check — `current` is a
|
|
44
|
+
* property set by the selected-rect on the previous render, so it can lag
|
|
45
|
+
* behind the selection by a frame, and it is `current`, not the selection,
|
|
46
|
+
* that the click acts on.
|
|
47
|
+
*/
|
|
33
48
|
private _canAutoComplete;
|
|
34
49
|
removeOverlay(): void;
|
|
35
50
|
render(): import("lit-html").TemplateResult<1> | typeof nothing;
|
|
36
|
-
private accessor _isHover;
|
|
37
51
|
private accessor _isMoving;
|
|
38
52
|
accessor current: ShapeElementModel | NoteBlockModel;
|
|
39
53
|
accessor edgeless: BlockComponent;
|
|
@@ -37,7 +37,7 @@ import { ConnectorPathGenerator, } from '../affine-gfx-connector/index.js';
|
|
|
37
37
|
import { mountShapeTextEditor } from '../affine-gfx-shape/index.js';
|
|
38
38
|
import { DEFAULT_NOTE_HEIGHT, DefaultTheme, LayoutType, MindmapElementModel, ShapeElementModel, shapeMethods, } from '../affine-model/index.js';
|
|
39
39
|
import { ToolbarRegistryIdentifier } from '../affine-shared/services/index.js';
|
|
40
|
-
import { handleNativeRangeAtPoint } from '../affine-shared/utils/index.js';
|
|
40
|
+
import { handleNativeRangeAtPoint, toClientCoord, } from '../affine-shared/utils/index.js';
|
|
41
41
|
import { DisposableGroup } from '../global/disposable/index.js';
|
|
42
42
|
import { Vec } from '../global/gfx/index.js';
|
|
43
43
|
import { WithDisposable } from '../global/lit/index.js';
|
|
@@ -77,9 +77,6 @@ class AutoCompleteOverlay extends Overlay {
|
|
|
77
77
|
}
|
|
78
78
|
let EdgelessAutoComplete = (() => {
|
|
79
79
|
let _classSuper = WithDisposable(LitElement);
|
|
80
|
-
let __isHover_decorators;
|
|
81
|
-
let __isHover_initializers = [];
|
|
82
|
-
let __isHover_extraInitializers = [];
|
|
83
80
|
let __isMoving_decorators;
|
|
84
81
|
let __isMoving_initializers = [];
|
|
85
82
|
let __isMoving_extraInitializers = [];
|
|
@@ -98,7 +95,6 @@ let EdgelessAutoComplete = (() => {
|
|
|
98
95
|
return class EdgelessAutoComplete extends _classSuper {
|
|
99
96
|
static {
|
|
100
97
|
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
101
|
-
__isHover_decorators = [state()];
|
|
102
98
|
__isMoving_decorators = [state()];
|
|
103
99
|
_current_decorators = [property({ attribute: false })];
|
|
104
100
|
_edgeless_decorators = [property({ attribute: false })];
|
|
@@ -106,7 +102,6 @@ let EdgelessAutoComplete = (() => {
|
|
|
106
102
|
_std_decorators = [consume({
|
|
107
103
|
context: stdContext,
|
|
108
104
|
})];
|
|
109
|
-
__esDecorate(this, null, __isHover_decorators, { kind: "accessor", name: "_isHover", static: false, private: false, access: { has: obj => "_isHover" in obj, get: obj => obj._isHover, set: (obj, value) => { obj._isHover = value; } }, metadata: _metadata }, __isHover_initializers, __isHover_extraInitializers);
|
|
110
105
|
__esDecorate(this, null, __isMoving_decorators, { kind: "accessor", name: "_isMoving", static: false, private: false, access: { has: obj => "_isMoving" in obj, get: obj => obj._isMoving, set: (obj, value) => { obj._isMoving = value; } }, metadata: _metadata }, __isMoving_initializers, __isMoving_extraInitializers);
|
|
111
106
|
__esDecorate(this, null, _current_decorators, { kind: "accessor", name: "current", static: false, private: false, access: { has: obj => "current" in obj, get: obj => obj.current, set: (obj, value) => { obj.current = value; } }, metadata: _metadata }, _current_initializers, _current_extraInitializers);
|
|
112
107
|
__esDecorate(this, null, _edgeless_decorators, { kind: "accessor", name: "edgeless", static: false, private: false, access: { has: obj => "edgeless" in obj, get: obj => obj.edgeless, set: (obj, value) => { obj.edgeless = value; } }, metadata: _metadata }, _edgeless_initializers, _edgeless_extraInitializers);
|
|
@@ -195,6 +190,12 @@ let EdgelessAutoComplete = (() => {
|
|
|
195
190
|
get _surface() {
|
|
196
191
|
return getSurfaceBlock(this.std.store);
|
|
197
192
|
}
|
|
193
|
+
/**
|
|
194
|
+
* Whether `this.current` is a thing the auto-complete knows how to clone: a
|
|
195
|
+
* shape (subclasses included) or a note block. Deliberately says nothing
|
|
196
|
+
* about the selection — the drag-out path consults it *after* clearing the
|
|
197
|
+
* selection to open the shape picker.
|
|
198
|
+
*/
|
|
198
199
|
get canShowAutoComplete() {
|
|
199
200
|
const { current } = this;
|
|
200
201
|
return isShape(current) || isNoteBlock(current);
|
|
@@ -283,11 +284,18 @@ let EdgelessAutoComplete = (() => {
|
|
|
283
284
|
_createAutoCompletePanel(e, connector) {
|
|
284
285
|
if (!this.canShowAutoComplete)
|
|
285
286
|
return;
|
|
286
|
-
|
|
287
|
+
// `clientX`/`clientY` are window coordinates: read them as such, or the
|
|
288
|
+
// panel opens at the viewport's own offset away from the pointer.
|
|
289
|
+
const position = this.gfx.viewport.toModelCoordFromClientCoord([
|
|
290
|
+
e.clientX,
|
|
291
|
+
e.clientY,
|
|
292
|
+
]);
|
|
287
293
|
const autoCompletePanel = new EdgelessAutoCompletePanel(position, this.edgeless, this.current, connector);
|
|
288
294
|
this.edgeless.append(autoCompletePanel);
|
|
289
295
|
}
|
|
290
296
|
_generateElementOnClick(type) {
|
|
297
|
+
if (!this.canShowAutoComplete)
|
|
298
|
+
return;
|
|
291
299
|
const { store } = this.edgeless;
|
|
292
300
|
const bound = this._computeNextBound(type);
|
|
293
301
|
const id = createEdgelessElement(this.edgeless, this.current, bound);
|
|
@@ -309,7 +317,11 @@ let EdgelessAutoComplete = (() => {
|
|
|
309
317
|
if (!model) {
|
|
310
318
|
return;
|
|
311
319
|
}
|
|
312
|
-
|
|
320
|
+
// `handleNativeRangeAtPoint` hands the point to
|
|
321
|
+
// `document.caretRangeFromPoint`, which speaks client coordinates: the
|
|
322
|
+
// viewport's own offset in the window has to be there, or the caret is
|
|
323
|
+
// placed by that offset away from the note that was just created.
|
|
324
|
+
const [x, y] = toClientCoord(this.gfx.viewport, bound.center[0], bound.y + DEFAULT_NOTE_HEIGHT / 2);
|
|
313
325
|
requestAnimationFrame(() => {
|
|
314
326
|
handleNativeRangeAtPoint(x, y);
|
|
315
327
|
});
|
|
@@ -524,7 +536,7 @@ let EdgelessAutoComplete = (() => {
|
|
|
524
536
|
this._initOverlay();
|
|
525
537
|
}
|
|
526
538
|
firstUpdated() {
|
|
527
|
-
const { _disposables,
|
|
539
|
+
const { _disposables, gfx } = this;
|
|
528
540
|
_disposables.add(this.gfx.selection.slots.updated.subscribe(() => {
|
|
529
541
|
this._autoCompleteOverlay.linePoints = [];
|
|
530
542
|
this._autoCompleteOverlay.renderShape = null;
|
|
@@ -533,16 +545,6 @@ let EdgelessAutoComplete = (() => {
|
|
|
533
545
|
this.requestUpdate();
|
|
534
546
|
}));
|
|
535
547
|
_disposables.add(() => this.removeOverlay());
|
|
536
|
-
_disposables.add(edgeless.host.event.add('pointerMove', ctx => {
|
|
537
|
-
const evt = ctx.get('pointerState');
|
|
538
|
-
const [x, y] = gfx.viewport.toModelCoord(evt.x, evt.y);
|
|
539
|
-
const elm = gfx.getElementByPoint(x, y);
|
|
540
|
-
if (!elm) {
|
|
541
|
-
this._isHover = false;
|
|
542
|
-
return;
|
|
543
|
-
}
|
|
544
|
-
this._isHover = elm === this.current ? true : false;
|
|
545
|
-
}));
|
|
546
548
|
this.edgeless.handleEvent('dragStart', () => {
|
|
547
549
|
this._isMoving = true;
|
|
548
550
|
});
|
|
@@ -550,11 +552,20 @@ let EdgelessAutoComplete = (() => {
|
|
|
550
552
|
this._isMoving = false;
|
|
551
553
|
});
|
|
552
554
|
}
|
|
555
|
+
/**
|
|
556
|
+
* The single predicate the arrows are rendered on. It must stay stricter
|
|
557
|
+
* than, or equal to, what the click handlers can actually do: an arrow the
|
|
558
|
+
* click cannot honour is a crash waiting to happen (see
|
|
559
|
+
* `createEdgelessElement`). Hence the identity check — `current` is a
|
|
560
|
+
* property set by the selected-rect on the previous render, so it can lag
|
|
561
|
+
* behind the selection by a frame, and it is `current`, not the selection,
|
|
562
|
+
* that the click acts on.
|
|
563
|
+
*/
|
|
553
564
|
_canAutoComplete() {
|
|
554
|
-
const
|
|
555
|
-
return (
|
|
556
|
-
|
|
557
|
-
|
|
565
|
+
const selected = this.gfx.selection.selectedElements;
|
|
566
|
+
return (selected.length === 1 &&
|
|
567
|
+
selected[0] === this.current &&
|
|
568
|
+
this.canShowAutoComplete);
|
|
558
569
|
}
|
|
559
570
|
removeOverlay() {
|
|
560
571
|
this._timer && clearTimeout(this._timer);
|
|
@@ -564,13 +575,11 @@ let EdgelessAutoComplete = (() => {
|
|
|
564
575
|
surface.renderer.removeOverlay(this._autoCompleteOverlay);
|
|
565
576
|
}
|
|
566
577
|
render() {
|
|
567
|
-
|
|
568
|
-
const isMindMap = this.current.group instanceof MindmapElementModel;
|
|
569
|
-
if (this._isMoving ||
|
|
570
|
-
(this._isHover && !isShape && !this._canAutoComplete())) {
|
|
578
|
+
if (this._isMoving || !this._canAutoComplete()) {
|
|
571
579
|
this.removeOverlay();
|
|
572
580
|
return nothing;
|
|
573
581
|
}
|
|
582
|
+
const isMindMap = this.current.group instanceof MindmapElementModel;
|
|
574
583
|
const { selectedRect } = this;
|
|
575
584
|
return html `<div
|
|
576
585
|
class="edgeless-auto-complete-container"
|
|
@@ -585,9 +594,6 @@ let EdgelessAutoComplete = (() => {
|
|
|
585
594
|
${isMindMap ? this._renderMindMapButtons() : this._renderArrow()}
|
|
586
595
|
</div>`;
|
|
587
596
|
}
|
|
588
|
-
#_isHover_accessor_storage;
|
|
589
|
-
get _isHover() { return this.#_isHover_accessor_storage; }
|
|
590
|
-
set _isHover(value) { this.#_isHover_accessor_storage = value; }
|
|
591
597
|
#_isMoving_accessor_storage;
|
|
592
598
|
get _isMoving() { return this.#_isMoving_accessor_storage; }
|
|
593
599
|
set _isMoving(value) { this.#_isMoving_accessor_storage = value; }
|
|
@@ -650,8 +656,7 @@ let EdgelessAutoComplete = (() => {
|
|
|
650
656
|
});
|
|
651
657
|
};
|
|
652
658
|
this._timer = null;
|
|
653
|
-
this.#
|
|
654
|
-
this.#_isMoving_accessor_storage = (__runInitializers(this, __isHover_extraInitializers), __runInitializers(this, __isMoving_initializers, false));
|
|
659
|
+
this.#_isMoving_accessor_storage = __runInitializers(this, __isMoving_initializers, false);
|
|
655
660
|
this.#current_accessor_storage = (__runInitializers(this, __isMoving_extraInitializers), __runInitializers(this, _current_initializers, void 0));
|
|
656
661
|
this.#edgeless_accessor_storage = (__runInitializers(this, _current_extraInitializers), __runInitializers(this, _edgeless_initializers, void 0));
|
|
657
662
|
this.#selectedRect_accessor_storage = (__runInitializers(this, _edgeless_extraInitializers), __runInitializers(this, _selectedRect_initializers, void 0));
|
|
@@ -33,7 +33,7 @@ var __runInitializers = (this && this.__runInitializers) || function (thisArg, i
|
|
|
33
33
|
return useValue ? value : void 0;
|
|
34
34
|
};
|
|
35
35
|
import { RefNodeSlotsProvider } from '../affine-inline-reference/index.js';
|
|
36
|
-
import { requestThrottledConnectedFrame } from '../affine-shared/utils/index.js';
|
|
36
|
+
import { overlayScale, requestThrottledConnectedFrame, toOverlayCoord, } from '../affine-shared/utils/index.js';
|
|
37
37
|
import { WidgetComponent } from '../std/index.js';
|
|
38
38
|
import { GfxControllerIdentifier, GfxPrimitiveElementModel, } from '../std/gfx/index.js';
|
|
39
39
|
import { OpenInNewIcon, RightSidebarIcon } from '@blocksuite/icons/lit';
|
|
@@ -72,12 +72,13 @@ let EdgelessElementLinkWidget = (() => {
|
|
|
72
72
|
}
|
|
73
73
|
const bound = el.elementBound;
|
|
74
74
|
const { viewport } = this.gfx;
|
|
75
|
-
const [left, top] = viewport
|
|
75
|
+
const [left, top] = toOverlayCoord(viewport, bound.x, bound.y);
|
|
76
|
+
const scale = overlayScale(viewport);
|
|
76
77
|
this._rect = {
|
|
77
78
|
left,
|
|
78
79
|
top,
|
|
79
|
-
width: bound.w *
|
|
80
|
-
height: bound.h *
|
|
80
|
+
width: bound.w * scale,
|
|
81
|
+
height: bound.h * scale,
|
|
81
82
|
};
|
|
82
83
|
}, this));
|
|
83
84
|
this._open = (e) => {
|
|
@@ -36,7 +36,7 @@ import {} from '../affine-block-frame/index.js';
|
|
|
36
36
|
import { EdgelessLegacySlotIdentifier, OverlayIdentifier, } from '../affine-block-surface/index.js';
|
|
37
37
|
import { ConnectorElementModel, } from '../affine-model/index.js';
|
|
38
38
|
import { unsafeCSSVarV2 } from '../affine-shared/theme/index.js';
|
|
39
|
-
import { getSelectedRect, requestThrottledConnectedFrame, stopPropagation, } from '../affine-shared/utils/index.js';
|
|
39
|
+
import { getSelectedRect, overlayScale, requestThrottledConnectedFrame, stopPropagation, toOverlayCoord, } from '../affine-shared/utils/index.js';
|
|
40
40
|
import { deserializeXYWH } from '../global/gfx/index.js';
|
|
41
41
|
import { WidgetComponent } from '../std/index.js';
|
|
42
42
|
import { GfxControllerIdentifier, InteractivityIdentifier, } from '../std/gfx/index.js';
|
|
@@ -523,13 +523,14 @@ let EdgelessSelectedRectWidget = (() => {
|
|
|
523
523
|
borderStyle: 'solid',
|
|
524
524
|
});
|
|
525
525
|
this._updateSelectedRect = (__runInitializers(this, __selectedRect_extraInitializers), requestThrottledConnectedFrame(() => {
|
|
526
|
-
const {
|
|
526
|
+
const { selection, gfx } = this;
|
|
527
527
|
const elements = selection.selectedElements;
|
|
528
528
|
// in surface
|
|
529
529
|
const rect = getSelectedRect(elements);
|
|
530
|
-
// in viewport
|
|
531
|
-
const [left, top] = gfx.viewport
|
|
532
|
-
const
|
|
530
|
+
// in viewport, inside the container the host may have scaled
|
|
531
|
+
const [left, top] = toOverlayCoord(gfx.viewport, rect.left, rect.top);
|
|
532
|
+
const scale = overlayScale(gfx.viewport);
|
|
533
|
+
const [width, height] = [rect.width * scale, rect.height * scale];
|
|
533
534
|
let rotate = 0;
|
|
534
535
|
if (elements.length === 1 && elements[0].rotate) {
|
|
535
536
|
rotate = elements[0].rotate;
|
|
@@ -571,7 +572,15 @@ let EdgelessSelectedRectWidget = (() => {
|
|
|
571
572
|
}
|
|
572
573
|
_disposables.add(this.store.slots.blockUpdated.subscribe(this._updateOnElementChange));
|
|
573
574
|
_disposables.add(selection.slots.updated.subscribe(this._updateOnSelectionChange));
|
|
574
|
-
_disposables.add(
|
|
575
|
+
_disposables.add(
|
|
576
|
+
// `_updateHandles` already refuses on readonly, but it only ran on
|
|
577
|
+
// selection change: a board switched to readonly while something was
|
|
578
|
+
// selected kept its 8 resize handles — and dragging one of them wrote
|
|
579
|
+
// `xywh`. Recompute on the flip, in both directions.
|
|
580
|
+
this._slots.readonlyUpdated.subscribe(() => {
|
|
581
|
+
this._updateHandles();
|
|
582
|
+
this.requestUpdate();
|
|
583
|
+
}));
|
|
575
584
|
_disposables.add(this._slots.elementResizeEnd.subscribe(() => (this._isResizing = false)));
|
|
576
585
|
if (this._interaction) {
|
|
577
586
|
_disposables.add(this._interaction.activeInteraction$.subscribe(val => {
|
|
@@ -686,15 +695,16 @@ let EdgelessSelectedRectWidget = (() => {
|
|
|
686
695
|
!elements.some(e => e instanceof ConnectorElementModel)) {
|
|
687
696
|
handles.push(repeat(elements, element => element.id, element => {
|
|
688
697
|
const [modelX, modelY, w, h] = deserializeXYWH(element.xywh);
|
|
689
|
-
const [x, y] = gfx.viewport
|
|
698
|
+
const [x, y] = toOverlayCoord(gfx.viewport, modelX, modelY);
|
|
699
|
+
const scale = overlayScale(gfx.viewport);
|
|
690
700
|
const { left, top, borderWidth } = this._selectedRect;
|
|
691
701
|
const style = {
|
|
692
702
|
position: 'absolute',
|
|
693
703
|
boxSizing: 'border-box',
|
|
694
704
|
left: `${x - left - borderWidth}px`,
|
|
695
705
|
top: `${y - top - borderWidth}px`,
|
|
696
|
-
width: `${w *
|
|
697
|
-
height: `${h *
|
|
706
|
+
width: `${w * scale}px`,
|
|
707
|
+
height: `${h * scale}px`,
|
|
698
708
|
transform: `rotate(${element.rotate}deg)`,
|
|
699
709
|
border: `1px solid var(--affine-primary-color)`,
|
|
700
710
|
};
|
|
@@ -2,7 +2,7 @@ import { type Options, Overlay, type RoughCanvas } from '../affine-block-surface
|
|
|
2
2
|
import { type NoteBlockModel, ShapeElementModel, type ShapeName, type ShapeStyle } from '../affine-model/index.js';
|
|
3
3
|
import { Bound, type XYWH } from '../global/gfx/index.js';
|
|
4
4
|
import type { BlockComponent } from '../std/index.js';
|
|
5
|
-
import type { CursorType, GfxController, ResizeHandle, StandardCursor } from '../std/gfx/index.js';
|
|
5
|
+
import type { CursorType, GfxController, GfxModel, ResizeHandle, StandardCursor } from '../std/gfx/index.js';
|
|
6
6
|
export declare enum Direction {
|
|
7
7
|
Right = 0,
|
|
8
8
|
Bottom = 1,
|
|
@@ -49,7 +49,21 @@ export declare function getPosition(type: Direction): {
|
|
|
49
49
|
};
|
|
50
50
|
export declare function isShape(element: unknown): element is ShapeElementModel;
|
|
51
51
|
export declare function capitalizeFirstLetter(str: string): string;
|
|
52
|
-
|
|
52
|
+
/**
|
|
53
|
+
* Clone `current` one bound further along, so an auto-complete arrow can drop a
|
|
54
|
+
* sibling of what is selected.
|
|
55
|
+
*
|
|
56
|
+
* Only two kinds of thing can be cloned this way: a shape (any
|
|
57
|
+
* `ShapeElementModel`, subclasses included — a wardley node, an EDGY node, a
|
|
58
|
+
* BPMN node) and a note block. Everything else on the canvas — a group, a free
|
|
59
|
+
* text label, a connector, a framework background — has no `props` bag at all,
|
|
60
|
+
* and reading one blindly is what used to throw
|
|
61
|
+
* `Cannot read properties of undefined (reading 'background')` the moment an
|
|
62
|
+
* arrow was offered on a selected wardley component (which selects the *group*
|
|
63
|
+
* wrapping node + label, not the node). We return `null` instead: the caller
|
|
64
|
+
* already treats a falsy id as "nothing to complete".
|
|
65
|
+
*/
|
|
66
|
+
export declare function createEdgelessElement(edgeless: BlockComponent, current: GfxModel, bound: Bound): string | null;
|
|
53
67
|
export declare function createShapeElement(edgeless: BlockComponent, current: ShapeElementModel | NoteBlockModel, targetType: TARGET_SHAPE_TYPE): string | null;
|
|
54
68
|
export declare function generateCursorUrl(angle: number | undefined, handle: ResizeHandle, fallback?: StandardCursor): CursorType;
|
|
55
69
|
export declare function getRotatedResizeCursor(option: {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { EdgelessCRUDIdentifier, Overlay, } from '../affine-block-surface/index.js';
|
|
1
|
+
import { EdgelessCRUDIdentifier, isNoteBlock, Overlay, } from '../affine-block-surface/index.js';
|
|
2
2
|
import { ShapeFactory } from '../affine-gfx-shape/index.js';
|
|
3
3
|
import { getShapeRadius, getShapeType, GroupElementModel, ShapeElementModel, } from '../affine-model/index.js';
|
|
4
4
|
import { BlockSuiteError, ErrorCode } from '../global/exceptions/index.js';
|
|
@@ -203,6 +203,20 @@ export function isShape(element) {
|
|
|
203
203
|
export function capitalizeFirstLetter(str) {
|
|
204
204
|
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
205
205
|
}
|
|
206
|
+
/**
|
|
207
|
+
* Clone `current` one bound further along, so an auto-complete arrow can drop a
|
|
208
|
+
* sibling of what is selected.
|
|
209
|
+
*
|
|
210
|
+
* Only two kinds of thing can be cloned this way: a shape (any
|
|
211
|
+
* `ShapeElementModel`, subclasses included — a wardley node, an EDGY node, a
|
|
212
|
+
* BPMN node) and a note block. Everything else on the canvas — a group, a free
|
|
213
|
+
* text label, a connector, a framework background — has no `props` bag at all,
|
|
214
|
+
* and reading one blindly is what used to throw
|
|
215
|
+
* `Cannot read properties of undefined (reading 'background')` the moment an
|
|
216
|
+
* arrow was offered on a selected wardley component (which selects the *group*
|
|
217
|
+
* wrapping node + label, not the node). We return `null` instead: the caller
|
|
218
|
+
* already treats a falsy id as "nothing to complete".
|
|
219
|
+
*/
|
|
206
220
|
export function createEdgelessElement(edgeless, current, bound) {
|
|
207
221
|
const crud = edgeless.std.get(EdgelessCRUDIdentifier);
|
|
208
222
|
let id;
|
|
@@ -217,7 +231,7 @@ export function createEdgelessElement(edgeless, current, bound) {
|
|
|
217
231
|
return null;
|
|
218
232
|
element = crud.getElementById(id);
|
|
219
233
|
}
|
|
220
|
-
else {
|
|
234
|
+
else if (isNoteBlock(current)) {
|
|
221
235
|
const { store } = edgeless;
|
|
222
236
|
id = store.addBlock('affine:note', {
|
|
223
237
|
background: current.props.background,
|
|
@@ -236,6 +250,9 @@ export function createEdgelessElement(edgeless, current, bound) {
|
|
|
236
250
|
store.addBlock('affine:paragraph', {}, note.id);
|
|
237
251
|
element = note;
|
|
238
252
|
}
|
|
253
|
+
else {
|
|
254
|
+
return null;
|
|
255
|
+
}
|
|
239
256
|
if (!element) {
|
|
240
257
|
throw new BlockSuiteError(ErrorCode.GfxBlockElementError, 'Element is not found after creation');
|
|
241
258
|
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { type CommandDescriptor, type CommandOwner } from '../../std/index.js';
|
|
2
|
+
import { type CSSResultGroup, LitElement } from 'lit';
|
|
3
|
+
declare const EdgelessCommandMenu_base: typeof LitElement & import("../../global/utils/types.js").Constructor<import("../index.js").EdgelessToolbarToolClass>;
|
|
4
|
+
/**
|
|
5
|
+
* The senior button sub-menu, rendered FROM the command registry.
|
|
6
|
+
*
|
|
7
|
+
* Before PF3 each framework hand-wrote this popover with a literal button per
|
|
8
|
+
* artefact, an inline English tooltip and its own `_track()` helper — which is
|
|
9
|
+
* how Wardley's menu drifted to 13 artefacts against 7 in the shortcut
|
|
10
|
+
* manifest, and how cynefin-estuarine ended up emitting no telemetry at all.
|
|
11
|
+
* There is now exactly one renderer, and it enumerates
|
|
12
|
+
* `getCommandsForSurface(std, owner, 'senior-menu')`. A framework subclass
|
|
13
|
+
* declares its owner and its tool type, nothing else. See `docs/adr/0008`.
|
|
14
|
+
*/
|
|
15
|
+
export declare abstract class EdgelessCommandMenu extends EdgelessCommandMenu_base {
|
|
16
|
+
/**
|
|
17
|
+
* Typed as a group so a subclass can extend rather than replace it — the DDD
|
|
18
|
+
* palettes narrow `--labre-command-menu-gap`.
|
|
19
|
+
*/
|
|
20
|
+
static styles: CSSResultGroup;
|
|
21
|
+
/** Which framework's commands this popover shows. */
|
|
22
|
+
protected abstract owner: CommandOwner;
|
|
23
|
+
get commands(): CommandDescriptor[];
|
|
24
|
+
private _invoke;
|
|
25
|
+
/**
|
|
26
|
+
* What the button says on hover: its label, plus — when the command declares
|
|
27
|
+
* one — the sentence that tells the user what its GESTURE means.
|
|
28
|
+
*
|
|
29
|
+
* That second line is M1 of `docs/adr/0010`: a link tool whose drag decides
|
|
30
|
+
* the orientation of a persisted relation has to SAY so, or the direction it
|
|
31
|
+
* writes is a by-product rather than a statement. The library still puts no
|
|
32
|
+
* words in a framework's mouth — both halves are the framework's own keys and
|
|
33
|
+
* fallbacks, resolved through the host's catalogue.
|
|
34
|
+
*/
|
|
35
|
+
private _tooltip;
|
|
36
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
37
|
+
}
|
|
38
|
+
export {};
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { translateKey } from '../../affine-shared/services/index.js';
|
|
2
|
+
import { getCommandIcon, getCommandsForSurface, runCommand, } from '../../std/index.js';
|
|
3
|
+
import { css, html, LitElement } from 'lit';
|
|
4
|
+
import { EdgelessToolbarToolMixin } from '../mixins/tool.mixin.js';
|
|
5
|
+
/**
|
|
6
|
+
* The senior button sub-menu, rendered FROM the command registry.
|
|
7
|
+
*
|
|
8
|
+
* Before PF3 each framework hand-wrote this popover with a literal button per
|
|
9
|
+
* artefact, an inline English tooltip and its own `_track()` helper — which is
|
|
10
|
+
* how Wardley's menu drifted to 13 artefacts against 7 in the shortcut
|
|
11
|
+
* manifest, and how cynefin-estuarine ended up emitting no telemetry at all.
|
|
12
|
+
* There is now exactly one renderer, and it enumerates
|
|
13
|
+
* `getCommandsForSurface(std, owner, 'senior-menu')`. A framework subclass
|
|
14
|
+
* declares its owner and its tool type, nothing else. See `docs/adr/0008`.
|
|
15
|
+
*/
|
|
16
|
+
export class EdgelessCommandMenu extends EdgelessToolbarToolMixin(LitElement) {
|
|
17
|
+
/**
|
|
18
|
+
* Typed as a group so a subclass can extend rather than replace it — the DDD
|
|
19
|
+
* palettes narrow `--labre-command-menu-gap`.
|
|
20
|
+
*/
|
|
21
|
+
static { this.styles = css `
|
|
22
|
+
:host {
|
|
23
|
+
display: flex;
|
|
24
|
+
z-index: -1;
|
|
25
|
+
justify-content: center;
|
|
26
|
+
}
|
|
27
|
+
.menu-content {
|
|
28
|
+
display: flex;
|
|
29
|
+
align-items: center;
|
|
30
|
+
justify-content: center;
|
|
31
|
+
}
|
|
32
|
+
.button-group-container {
|
|
33
|
+
display: flex;
|
|
34
|
+
align-items: center;
|
|
35
|
+
gap: var(--labre-command-menu-gap, 14px);
|
|
36
|
+
fill: var(--affine-icon-color);
|
|
37
|
+
}
|
|
38
|
+
.button-group-container svg {
|
|
39
|
+
width: 24px;
|
|
40
|
+
height: 24px;
|
|
41
|
+
}
|
|
42
|
+
`; }
|
|
43
|
+
get commands() {
|
|
44
|
+
return getCommandsForSurface(this.edgeless.std, this.owner, 'senior-menu');
|
|
45
|
+
}
|
|
46
|
+
_invoke(command) {
|
|
47
|
+
// The ONE emission point: no `_track()` helper anywhere in the menus.
|
|
48
|
+
runCommand(this.edgeless.std, command, {
|
|
49
|
+
surface: 'senior-menu',
|
|
50
|
+
source: 'toolbar:general',
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* What the button says on hover: its label, plus — when the command declares
|
|
55
|
+
* one — the sentence that tells the user what its GESTURE means.
|
|
56
|
+
*
|
|
57
|
+
* That second line is M1 of `docs/adr/0010`: a link tool whose drag decides
|
|
58
|
+
* the orientation of a persisted relation has to SAY so, or the direction it
|
|
59
|
+
* writes is a by-product rather than a statement. The library still puts no
|
|
60
|
+
* words in a framework's mouth — both halves are the framework's own keys and
|
|
61
|
+
* fallbacks, resolved through the host's catalogue.
|
|
62
|
+
*/
|
|
63
|
+
_tooltip(command) {
|
|
64
|
+
const label = translateKey(this.edgeless.std, command.labelKey, command.labelFallback);
|
|
65
|
+
const { descriptionKey, descriptionFallback } = command;
|
|
66
|
+
if (!descriptionKey && !descriptionFallback)
|
|
67
|
+
return label;
|
|
68
|
+
const hint = descriptionKey
|
|
69
|
+
? translateKey(this.edgeless.std, descriptionKey, descriptionFallback)
|
|
70
|
+
: descriptionFallback;
|
|
71
|
+
// A key with no catalogue entry and no fallback resolves to itself — show
|
|
72
|
+
// the label alone rather than a raw i18n key under it.
|
|
73
|
+
if (!hint || hint === descriptionKey)
|
|
74
|
+
return label;
|
|
75
|
+
// Inline, not a class: the template is rendered inside the icon button's
|
|
76
|
+
// own shadow root, where this component's stylesheet does not reach.
|
|
77
|
+
return html `${label}<span
|
|
78
|
+
style="display:block;max-width:220px;margin-top:2px;opacity:0.75;font-size:11px;line-height:1.35;white-space:normal"
|
|
79
|
+
>${hint}</span
|
|
80
|
+
>`;
|
|
81
|
+
}
|
|
82
|
+
render() {
|
|
83
|
+
const std = this.edgeless.std;
|
|
84
|
+
return html `
|
|
85
|
+
<edgeless-slide-menu>
|
|
86
|
+
<div class="menu-content">
|
|
87
|
+
<div class="button-group-container">
|
|
88
|
+
${this.commands.map(command => html `<edgeless-tool-icon-button
|
|
89
|
+
.tooltip=${this._tooltip(command)}
|
|
90
|
+
@click=${() => this._invoke(command)}
|
|
91
|
+
>
|
|
92
|
+
${getCommandIcon(std, command.iconKey)}
|
|
93
|
+
</edgeless-tool-icon-button>`)}
|
|
94
|
+
</div>
|
|
95
|
+
</div>
|
|
96
|
+
</edgeless-slide-menu>
|
|
97
|
+
`;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
@@ -33,6 +33,7 @@ var __runInitializers = (this && this.__runInitializers) || function (thisArg, i
|
|
|
33
33
|
return useValue ? value : void 0;
|
|
34
34
|
};
|
|
35
35
|
import { FrameBlockModel } from '../affine-model/index.js';
|
|
36
|
+
import { toOverlayCoord } from '../affine-shared/utils/index.js';
|
|
36
37
|
import { Bound } from '../global/gfx/index.js';
|
|
37
38
|
import { WithDisposable } from '../global/lit/index.js';
|
|
38
39
|
import { ShadowlessElement } from '../std/index.js';
|
|
@@ -152,7 +153,9 @@ let EdgelessFrameTitleEditor = (() => {
|
|
|
152
153
|
return nothing;
|
|
153
154
|
const viewport = this.gfx.viewport;
|
|
154
155
|
const bound = Bound.deserialize(this.frameModel.xywh);
|
|
155
|
-
|
|
156
|
+
// The editor is mounted inside the container the host may have scaled, so
|
|
157
|
+
// it is placed the way the title it replaces is, not in screen pixels.
|
|
158
|
+
const [x, y] = toOverlayCoord(viewport, bound.x, bound.y);
|
|
156
159
|
const isInner = this.gfx.grid.has(this.frameModel.elementBound, true, true, model => model !== this.frameModel && model instanceof FrameBlockModel);
|
|
157
160
|
const frameTitleWidget = this.edgeless.std.view.getWidget(AFFINE_FRAME_TITLE_WIDGET, this.frameModel.id);
|
|
158
161
|
if (!frameTitleWidget)
|