@formicoidea/labre-core 0.41.0 → 0.42.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +384 -0
- package/dist/_pkgs/affine-block-bookmark/bookmark-block.js +2 -2
- package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/config.js +7 -1
- package/dist/_pkgs/affine-block-embed/embed-figma-block/embed-figma-block.js +2 -1
- package/dist/_pkgs/affine-block-embed/embed-github-block/embed-github-block.js +2 -1
- package/dist/_pkgs/affine-block-embed/embed-iframe-block/consts.d.ts +2 -0
- package/dist/_pkgs/affine-block-embed/embed-iframe-block/consts.js +5 -0
- package/dist/_pkgs/affine-block-embed/embed-iframe-block/embed-iframe-block.d.ts +1 -0
- package/dist/_pkgs/affine-block-embed/embed-iframe-block/embed-iframe-block.js +30 -8
- package/dist/_pkgs/affine-block-embed/embed-iframe-block/utils.d.ts +8 -0
- package/dist/_pkgs/affine-block-embed/embed-iframe-block/utils.js +19 -0
- package/dist/_pkgs/affine-block-embed/embed-loom-block/embed-loom-block.js +2 -1
- package/dist/_pkgs/affine-block-embed/embed-youtube-block/embed-youtube-block.js +2 -1
- package/dist/_pkgs/affine-block-frame/frame-manager.js +1 -1
- package/dist/_pkgs/affine-block-frame/frame-tool.js +1 -1
- package/dist/_pkgs/affine-block-frame/frame-toolbar.js +6 -1
- package/dist/_pkgs/affine-block-list/list-keymap.js +7 -0
- package/dist/_pkgs/affine-block-note/note-keymap.js +7 -1
- package/dist/_pkgs/affine-block-paragraph/paragraph-keymap.js +7 -1
- package/dist/_pkgs/affine-block-root/commands/pivot-commands.js +1 -8
- package/dist/_pkgs/affine-block-root/commands/tag-commands.js +1 -8
- package/dist/_pkgs/affine-block-root/edgeless/edgeless-keyboard.d.ts +9 -0
- package/dist/_pkgs/affine-block-root/edgeless/edgeless-keyboard.js +51 -0
- package/dist/_pkgs/affine-block-root/edgeless/edgeless-root-block.d.ts +22 -0
- package/dist/_pkgs/affine-block-root/edgeless/edgeless-root-block.js +46 -0
- package/dist/_pkgs/affine-block-root/edgeless/utils/pinch-zoom.d.ts +21 -0
- package/dist/_pkgs/affine-block-root/edgeless/utils/pinch-zoom.js +24 -0
- package/dist/_pkgs/affine-block-root/edgeless/utils/query.js +8 -0
- package/dist/_pkgs/affine-block-root/keyboard/keymap.js +1 -16
- package/dist/_pkgs/affine-block-surface/element-model/index.d.ts +21 -3
- package/dist/_pkgs/affine-block-surface/element-model/index.js +14 -2
- package/dist/_pkgs/affine-block-surface/extensions/export-svg/command.d.ts +23 -0
- package/dist/_pkgs/affine-block-surface/extensions/export-svg/command.js +89 -0
- package/dist/_pkgs/affine-block-surface/extensions/export-svg/index.d.ts +7 -0
- package/dist/_pkgs/affine-block-surface/extensions/export-svg/index.js +5 -0
- package/dist/_pkgs/affine-block-surface/extensions/export-svg/render.d.ts +41 -0
- package/dist/_pkgs/affine-block-surface/extensions/export-svg/render.js +70 -0
- package/dist/_pkgs/affine-block-surface/extensions/export-svg/svg-context.d.ts +49 -0
- package/dist/_pkgs/affine-block-surface/extensions/export-svg/svg-context.js +257 -0
- package/dist/_pkgs/affine-block-surface/extensions/export-svg/tagged-path.d.ts +16 -0
- package/dist/_pkgs/affine-block-surface/extensions/export-svg/tagged-path.js +24 -0
- package/dist/_pkgs/affine-block-surface/extensions/export-svg/toolbar.d.ts +24 -0
- package/dist/_pkgs/affine-block-surface/extensions/export-svg/toolbar.js +66 -0
- package/dist/_pkgs/affine-block-surface/extensions/index.d.ts +4 -0
- package/dist/_pkgs/affine-block-surface/extensions/index.js +4 -0
- package/dist/_pkgs/affine-block-surface/extensions/interchange-import.d.ts +66 -4
- package/dist/_pkgs/affine-block-surface/extensions/interchange-import.js +241 -11
- package/dist/_pkgs/affine-block-surface/extensions/interchange.d.ts +18 -0
- package/dist/_pkgs/affine-block-surface/extensions/legend-toolbar.d.ts +81 -0
- package/dist/_pkgs/affine-block-surface/extensions/legend-toolbar.js +81 -0
- package/dist/_pkgs/affine-block-surface/extensions/legend.d.ts +136 -0
- package/dist/_pkgs/affine-block-surface/extensions/legend.js +439 -0
- package/dist/_pkgs/affine-block-surface/extensions/reading-widget.d.ts +17 -3
- package/dist/_pkgs/affine-block-surface/extensions/reading-widget.js +35 -13
- package/dist/_pkgs/affine-block-surface/extensions/reading.d.ts +61 -1
- package/dist/_pkgs/affine-block-surface/extensions/reading.js +85 -39
- package/dist/_pkgs/affine-block-surface/extensions/record-action.d.ts +66 -0
- package/dist/_pkgs/affine-block-surface/extensions/record-action.js +145 -0
- package/dist/_pkgs/affine-block-surface/extensions/validation.d.ts +253 -28
- package/dist/_pkgs/affine-block-surface/extensions/validation.js +489 -41
- package/dist/_pkgs/affine-block-surface/framework-background/background-view.d.ts +115 -0
- package/dist/_pkgs/affine-block-surface/framework-background/background-view.js +185 -0
- package/dist/_pkgs/affine-block-surface/framework-background/index.d.ts +1 -0
- package/dist/_pkgs/affine-block-surface/framework-background/index.js +1 -0
- package/dist/_pkgs/affine-block-surface/framework-background/labels.d.ts +16 -1
- package/dist/_pkgs/affine-block-surface/framework-background/labels.js +31 -21
- package/dist/_pkgs/affine-block-surface/framework-background/renderer.js +29 -5
- package/dist/_pkgs/affine-block-surface/framework-background/stacking.d.ts +6 -4
- package/dist/_pkgs/affine-block-surface/framework-background/stacking.js +56 -8
- package/dist/_pkgs/affine-block-surface/renderer/canvas-renderer.d.ts +12 -0
- package/dist/_pkgs/affine-block-surface/renderer/canvas-renderer.js +15 -0
- package/dist/_pkgs/affine-block-surface/view.js +8 -1
- package/dist/_pkgs/affine-block-surface-ref/configs/slash-menu.js +1 -1
- package/dist/_pkgs/affine-components/color-picker/button.d.ts +56 -1
- package/dist/_pkgs/affine-components/color-picker/button.js +168 -23
- package/dist/_pkgs/affine-components/color-picker/framework-palette.d.ts +106 -0
- package/dist/_pkgs/affine-components/color-picker/framework-palette.js +177 -0
- package/dist/_pkgs/affine-components/color-picker/index.d.ts +2 -0
- package/dist/_pkgs/affine-components/color-picker/index.js +2 -0
- package/dist/_pkgs/affine-components/color-picker/palette-carousel.d.ts +85 -0
- package/dist/_pkgs/affine-components/color-picker/palette-carousel.js +440 -0
- package/dist/_pkgs/affine-components/edgeless-shape-color-picker/color-picker.d.ts +31 -1
- package/dist/_pkgs/affine-components/edgeless-shape-color-picker/color-picker.js +189 -63
- package/dist/_pkgs/affine-components/resource/resource.js +29 -16
- package/dist/_pkgs/affine-components/translations.d.ts +8 -0
- package/dist/_pkgs/affine-components/translations.js +17 -0
- package/dist/_pkgs/affine-foundation/view.js +2 -1
- package/dist/_pkgs/affine-gfx-brush/element-renderer.js +2 -2
- package/dist/_pkgs/affine-gfx-brush/toolbar/configs/brush.js +6 -1
- package/dist/_pkgs/affine-gfx-brush/toolbar/configs/highlighter.js +6 -1
- package/dist/_pkgs/affine-gfx-connector/connector-manager.d.ts +9 -1
- package/dist/_pkgs/affine-gfx-connector/connector-manager.js +61 -0
- package/dist/_pkgs/affine-gfx-connector/element-renderer/connector-dom/index.d.ts +7 -1
- package/dist/_pkgs/affine-gfx-connector/element-renderer/connector-dom/index.js +87 -17
- package/dist/_pkgs/affine-gfx-connector/element-renderer/index.js +78 -17
- package/dist/_pkgs/affine-gfx-connector/element-renderer/utils.d.ts +24 -2
- package/dist/_pkgs/affine-gfx-connector/element-renderer/utils.js +31 -8
- package/dist/_pkgs/affine-gfx-connector/text/edgeless-connector-label-editor.d.ts +124 -3
- package/dist/_pkgs/affine-gfx-connector/text/edgeless-connector-label-editor.js +216 -54
- package/dist/_pkgs/affine-gfx-connector/text/text.d.ts +13 -4
- package/dist/_pkgs/affine-gfx-connector/text/text.js +13 -44
- package/dist/_pkgs/affine-gfx-connector/toolbar/config.d.ts +56 -0
- package/dist/_pkgs/affine-gfx-connector/toolbar/config.js +72 -4
- package/dist/_pkgs/affine-gfx-connector/toolbar/hollow-endpoint-icons.d.ts +8 -0
- package/dist/_pkgs/affine-gfx-connector/toolbar/hollow-endpoint-icons.js +118 -0
- package/dist/_pkgs/affine-gfx-connector/view/view.d.ts +37 -1
- package/dist/_pkgs/affine-gfx-connector/view/view.js +97 -8
- package/dist/_pkgs/affine-gfx-group/command/group-api.js +1 -1
- package/dist/_pkgs/affine-gfx-group/store.js +0 -2
- package/dist/_pkgs/affine-gfx-group/translations.d.ts +9 -10
- package/dist/_pkgs/affine-gfx-group/translations.js +9 -13
- package/dist/_pkgs/affine-gfx-mindmap/templates/index.js +1 -1
- package/dist/_pkgs/affine-gfx-mindmap/toolbar/basket-elements.js +1 -1
- package/dist/_pkgs/affine-gfx-mindmap/toolbar/utils/import-mindmap.js +2 -2
- package/dist/_pkgs/affine-gfx-mindmap/translations.d.ts +1 -1
- package/dist/_pkgs/affine-gfx-mindmap/translations.js +1 -1
- package/dist/_pkgs/affine-gfx-shape/element-renderer/highlighter.js +2 -2
- package/dist/_pkgs/affine-gfx-shape/overlay/polygon-drawing-overlay.d.ts +6 -0
- package/dist/_pkgs/affine-gfx-shape/overlay/polygon-drawing-overlay.js +30 -1
- package/dist/_pkgs/affine-gfx-shape/polygon-tool.d.ts +20 -1
- package/dist/_pkgs/affine-gfx-shape/polygon-tool.js +9 -1
- package/dist/_pkgs/affine-gfx-shape/toolbar/config.js +6 -1
- package/dist/_pkgs/affine-gfx-shape/toolbar/palette-color-action.js +11 -1
- package/dist/_pkgs/affine-gfx-template/builtin/other.js +1 -1
- package/dist/_pkgs/affine-gfx-template/snapshot-from-action.js +32 -119
- package/dist/_pkgs/affine-gfx-template/toolbar/template-type.d.ts +1 -1
- package/dist/_pkgs/affine-gfx-text/dblclick-add-edgeless-text.d.ts +13 -1
- package/dist/_pkgs/affine-gfx-text/dblclick-add-edgeless-text.js +19 -4
- package/dist/_pkgs/affine-gfx-text/edgeless-text-editor.d.ts +41 -0
- package/dist/_pkgs/affine-gfx-text/edgeless-text-editor.js +57 -2
- package/dist/_pkgs/affine-gfx-text/toolbar/actions.d.ts +8 -1
- package/dist/_pkgs/affine-gfx-text/toolbar/actions.js +12 -2
- package/dist/_pkgs/affine-gfx-text/translations.d.ts +1 -0
- package/dist/_pkgs/affine-gfx-text/translations.js +2 -1
- package/dist/_pkgs/affine-inline-preset/markdown.js +5 -1
- package/dist/_pkgs/affine-model/consts/connector.d.ts +28 -2
- package/dist/_pkgs/affine-model/consts/connector.js +26 -0
- package/dist/_pkgs/affine-model/elements/bpmn/pool.js +1 -1
- package/dist/_pkgs/affine-model/elements/brush/brush.js +1 -1
- package/dist/_pkgs/affine-model/elements/c4/board.js +1 -1
- package/dist/_pkgs/affine-model/elements/c4/boundary.js +1 -1
- package/dist/_pkgs/affine-model/elements/connector/connector.d.ts +135 -0
- package/dist/_pkgs/affine-model/elements/connector/connector.js +246 -5
- package/dist/_pkgs/affine-model/elements/connector/end-label.d.ts +83 -0
- package/dist/_pkgs/affine-model/elements/connector/end-label.js +119 -0
- package/dist/_pkgs/affine-model/elements/connector/index.d.ts +1 -0
- package/dist/_pkgs/affine-model/elements/connector/index.js +1 -0
- package/dist/_pkgs/affine-model/elements/context-map/context-map.js +1 -1
- package/dist/_pkgs/affine-model/elements/core-domain/core-domain.d.ts +28 -0
- package/dist/_pkgs/affine-model/elements/core-domain/core-domain.js +129 -2
- package/dist/_pkgs/affine-model/elements/cynefin/cynefin.d.ts +8 -0
- package/dist/_pkgs/affine-model/elements/cynefin/cynefin.js +45 -2
- package/dist/_pkgs/affine-model/elements/edgy/board.js +1 -1
- package/dist/_pkgs/affine-model/elements/edgy/facets.js +1 -1
- package/dist/_pkgs/affine-model/elements/estuarine/estuarine.d.ts +6 -0
- package/dist/_pkgs/affine-model/elements/estuarine/estuarine.js +36 -2
- package/dist/_pkgs/affine-model/elements/event-storming/event-storming.d.ts +18 -7
- package/dist/_pkgs/affine-model/elements/event-storming/event-storming.js +23 -8
- package/dist/_pkgs/affine-model/elements/framework-background/background.d.ts +16 -0
- package/dist/_pkgs/affine-model/elements/framework-background/background.js +18 -0
- package/dist/_pkgs/affine-model/elements/highlighter/highlighter.js +1 -1
- package/dist/_pkgs/affine-model/elements/index.d.ts +8 -0
- package/dist/_pkgs/affine-model/elements/index.js +1 -0
- package/dist/_pkgs/affine-model/elements/shape/shape.js +1 -1
- package/dist/_pkgs/affine-model/elements/text/text.js +1 -1
- package/dist/_pkgs/affine-model/elements/uml/band.d.ts +39 -0
- package/dist/_pkgs/affine-model/elements/uml/band.js +31 -0
- package/dist/_pkgs/affine-model/elements/uml/diagram.d.ts +158 -0
- package/dist/_pkgs/affine-model/elements/uml/diagram.js +229 -0
- package/dist/_pkgs/affine-model/elements/uml/fragment.d.ts +161 -0
- package/dist/_pkgs/affine-model/elements/uml/fragment.js +205 -0
- package/dist/_pkgs/affine-model/elements/uml/index.d.ts +8 -0
- package/dist/_pkgs/affine-model/elements/uml/index.js +8 -0
- package/dist/_pkgs/affine-model/elements/uml/lifeline.d.ts +77 -0
- package/dist/_pkgs/affine-model/elements/uml/lifeline.js +89 -0
- package/dist/_pkgs/affine-model/elements/uml/node.d.ts +142 -0
- package/dist/_pkgs/affine-model/elements/uml/node.js +190 -0
- package/dist/_pkgs/affine-model/elements/uml/partition.d.ts +106 -0
- package/dist/_pkgs/affine-model/elements/uml/partition.js +172 -0
- package/dist/_pkgs/affine-model/elements/uml/region.d.ts +75 -0
- package/dist/_pkgs/affine-model/elements/uml/region.js +150 -0
- package/dist/_pkgs/affine-model/elements/uml/subject.d.ts +37 -0
- package/dist/_pkgs/affine-model/elements/uml/subject.js +108 -0
- package/dist/_pkgs/affine-model/elements/wardley/wardley.js +1 -1
- package/dist/_pkgs/affine-shared/services/embed-iframe/embed-iframe-config.d.ts +1 -0
- package/dist/_pkgs/affine-shared/services/font-loader/config.d.ts +7 -0
- package/dist/_pkgs/affine-shared/services/font-loader/config.js +43 -0
- package/dist/_pkgs/affine-shared/services/pivot-materiality-publisher.js +1 -9
- package/dist/_pkgs/affine-shared/services/telemetry-service/document-damage-watcher.d.ts +53 -0
- package/dist/_pkgs/affine-shared/services/telemetry-service/document-damage-watcher.js +95 -0
- package/dist/_pkgs/affine-shared/services/telemetry-service/index.d.ts +1 -0
- package/dist/_pkgs/affine-shared/services/telemetry-service/index.js +1 -0
- package/dist/_pkgs/affine-shared/services/telemetry-service/lifecycle.d.ts +26 -1
- package/dist/_pkgs/affine-shared/services/telemetry-service/telemetry-service.d.ts +2 -2
- package/dist/_pkgs/affine-shared/services/toolbar-service/command-action.d.ts +34 -0
- package/dist/_pkgs/affine-shared/services/toolbar-service/command-action.js +63 -0
- package/dist/_pkgs/affine-shared/services/toolbar-service/index.d.ts +1 -0
- package/dist/_pkgs/affine-shared/services/toolbar-service/index.js +1 -0
- package/dist/_pkgs/affine-shared/services/translation-service/chrome.d.ts +77 -7
- package/dist/_pkgs/affine-shared/services/translation-service/chrome.js +97 -7
- package/dist/_pkgs/affine-shared/styles/index.d.ts +1 -0
- package/dist/_pkgs/affine-shared/styles/index.js +1 -0
- package/dist/_pkgs/affine-shared/styles/motion.d.ts +14 -0
- package/dist/_pkgs/affine-shared/styles/motion.js +38 -0
- package/dist/_pkgs/affine-shared/utils/event.d.ts +10 -0
- package/dist/_pkgs/affine-shared/utils/event.js +20 -0
- package/dist/_pkgs/affine-shared/utils/file/filesys.d.ts +16 -0
- package/dist/_pkgs/affine-shared/utils/file/filesys.js +25 -0
- package/dist/_pkgs/affine-shared/utils/index.d.ts +1 -0
- package/dist/_pkgs/affine-shared/utils/index.js +1 -0
- package/dist/_pkgs/affine-shared/utils/link-preview-refresh.d.ts +12 -0
- package/dist/_pkgs/affine-shared/utils/link-preview-refresh.js +13 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/artefact-catalogue-widget.d.ts +12 -4
- package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/artefact-catalogue-widget.js +27 -4
- package/dist/_pkgs/affine-widget-edgeless-toolbar/create-popper.js +13 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/index.d.ts +2 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/index.js +2 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/menu/command-menu.d.ts +80 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/menu/command-menu.js +270 -81
- package/dist/_pkgs/affine-widget-edgeless-toolbar/menu/senior-menu-selection.d.ts +15 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/menu/senior-menu-selection.js +15 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/panel/font-weight-and-style-panel.js +8 -1
- package/dist/_pkgs/affine-widget-edgeless-toolbar/placement/artefact-ghost-overlay.d.ts +42 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/placement/artefact-ghost-overlay.js +100 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/placement/artefact-placement-tool.d.ts +100 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/placement/artefact-placement-tool.js +274 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/placement/index.d.ts +3 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/placement/index.js +3 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/placement/translate-created.d.ts +25 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/placement/translate-created.js +67 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/view.js +5 -0
- package/dist/_pkgs/global/gfx/xywh.js +7 -0
- package/dist/_pkgs/std/extension/command-registry.d.ts +158 -1
- package/dist/_pkgs/std/extension/command-registry.js +22 -0
- package/dist/_pkgs/std/gfx/index.d.ts +1 -1
- package/dist/_pkgs/std/gfx/interactivity/gfx-view-event-handler.d.ts +12 -0
- package/dist/_pkgs/std/gfx/interactivity/gfx-view-event-handler.js +20 -1
- package/dist/_pkgs/std/gfx/interactivity/manager.d.ts +10 -0
- package/dist/_pkgs/std/gfx/interactivity/manager.js +12 -0
- package/dist/_pkgs/std/gfx/model/surface/element-model.js +12 -7
- package/dist/_pkgs/std/gfx/model/surface/surface-model.d.ts +56 -0
- package/dist/_pkgs/std/gfx/model/surface/surface-model.js +84 -3
- package/dist/_pkgs/std/gfx/view/view.d.ts +11 -2
- package/dist/_pkgs/std/gfx/view/view.js +16 -2
- package/dist/commands.d.ts +6 -0
- package/dist/commands.js +8 -1
- package/dist/frameworks.d.ts +9 -0
- package/dist/frameworks.js +19 -0
- package/dist/translations.js +16 -0
- package/package.json +9 -4
- package/dist/_pkgs/affine-gfx-group/group-watcher.d.ts +0 -1
- package/dist/_pkgs/affine-gfx-group/group-watcher.js +0 -20
|
@@ -146,7 +146,7 @@ export class EdgelessFrameManager extends GfxExtension {
|
|
|
146
146
|
.get(EditPropsStore)
|
|
147
147
|
.applyLastProps('affine:frame', {
|
|
148
148
|
// Translated HERE and once: the title is document content the moment
|
|
149
|
-
// it lands (ADR
|
|
149
|
+
// it lands (ADR 0023), so the host's catalogue is asked at placement
|
|
150
150
|
// and never again — a renamed frame keeps its name.
|
|
151
151
|
title: new Text(new Y.Text(translateKey(this.gfx.std, ...FRAME_SEED_NAME, {
|
|
152
152
|
n: this.frames.length + 1,
|
|
@@ -50,7 +50,7 @@ export class FrameTool extends BaseTool {
|
|
|
50
50
|
.get(EditPropsStore)
|
|
51
51
|
.applyLastProps('affine:frame', {
|
|
52
52
|
// Translated HERE and once, like `EdgelessFrameManager._addFrameBlock`:
|
|
53
|
-
// the title is document content the moment it lands (ADR
|
|
53
|
+
// the title is document content the moment it lands (ADR 0023).
|
|
54
54
|
title: new Text(new Y.Text(translateKey(this.std, ...FRAME_SEED_NAME, {
|
|
55
55
|
n: frames.length + 1,
|
|
56
56
|
}))),
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EdgelessCRUDIdentifier } from '../affine-block-surface/index.js';
|
|
2
|
-
import { packColor, } from '../affine-components/color-picker/index.js';
|
|
2
|
+
import { frameworkPaletteGroups, packColor, } from '../affine-components/color-picker/index.js';
|
|
3
3
|
import { toast } from '../affine-components/toast/index.js';
|
|
4
4
|
import { DEFAULT_NOTE_HEIGHT, DefaultTheme, FrameBlockModel, FrameBlockSchema, NoteBlockModel, NoteBlockSchema, NoteDisplayMode, resolveColor, SurfaceRefBlockSchema, } from '../affine-model/index.js';
|
|
5
5
|
import { NotificationProvider, TOAST_FRAME_INSERTED_INTO_PAGE, TOOLBAR_RENAME, ToolbarModuleExtension, translateKey, } from '../affine-shared/services/index.js';
|
|
@@ -135,6 +135,9 @@ const builtinSurfaceToolbarConfig = {
|
|
|
135
135
|
break;
|
|
136
136
|
}
|
|
137
137
|
};
|
|
138
|
+
// A frame drawn over a framework board opens on that framework's hues
|
|
139
|
+
// (`docs/adr/0027`); the editor palette stays page one.
|
|
140
|
+
const carousel = frameworkPaletteGroups(ctx.std, models, DefaultTheme.Palettes);
|
|
138
141
|
return html `
|
|
139
142
|
<edgeless-color-picker-button
|
|
140
143
|
class="background"
|
|
@@ -144,6 +147,8 @@ const builtinSurfaceToolbarConfig = {
|
|
|
144
147
|
.theme=${theme}
|
|
145
148
|
.std=${ctx.std}
|
|
146
149
|
.originalColor=${firstModel.props.background}
|
|
150
|
+
.paletteGroups=${carousel.groups}
|
|
151
|
+
.activeGroupKey=${carousel.activeKey}
|
|
147
152
|
.enableCustomColor=${enableCustomColor}
|
|
148
153
|
>
|
|
149
154
|
</edgeless-color-picker-button>
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { textKeymap } from '../affine-inline-preset/index.js';
|
|
2
2
|
import { ListBlockSchema } from '../affine-model/index.js';
|
|
3
3
|
import { getSelectedModelsCommand } from '../affine-shared/commands/index.js';
|
|
4
|
+
import { isNativeFocusableTarget } from '../affine-shared/utils/index.js';
|
|
4
5
|
import { IS_MAC } from '../global/env/index.js';
|
|
5
6
|
import { KeymapExtension, TextSelection } from '../std/index.js';
|
|
6
7
|
import { canDedentListCommand, dedentListCommand, } from './commands/dedent-list.js';
|
|
@@ -11,6 +12,8 @@ import { forwardDelete } from './utils/forward-delete.js';
|
|
|
11
12
|
export const ListKeymapExtension = KeymapExtension(std => {
|
|
12
13
|
return {
|
|
13
14
|
Enter: ctx => {
|
|
15
|
+
if (isNativeFocusableTarget(ctx.get('keyboardState').raw.target))
|
|
16
|
+
return;
|
|
14
17
|
const text = std.selection.find(TextSelection);
|
|
15
18
|
if (!text)
|
|
16
19
|
return false;
|
|
@@ -39,6 +42,8 @@ export const ListKeymapExtension = KeymapExtension(std => {
|
|
|
39
42
|
return true;
|
|
40
43
|
},
|
|
41
44
|
Tab: ctx => {
|
|
45
|
+
if (isNativeFocusableTarget(ctx.get('keyboardState').raw.target))
|
|
46
|
+
return;
|
|
42
47
|
const [_, { selectedModels }] = std.command
|
|
43
48
|
.chain()
|
|
44
49
|
.pipe(getSelectedModelsCommand, {
|
|
@@ -63,6 +68,8 @@ export const ListKeymapExtension = KeymapExtension(std => {
|
|
|
63
68
|
return true;
|
|
64
69
|
},
|
|
65
70
|
'Shift-Tab': ctx => {
|
|
71
|
+
if (isNativeFocusableTarget(ctx.get('keyboardState').raw.target))
|
|
72
|
+
return;
|
|
66
73
|
const [_, { selectedModels }] = std.command
|
|
67
74
|
.chain()
|
|
68
75
|
.pipe(getSelectedModelsCommand, {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { CodeBlockModel, ListBlockModel, NoteBlockModel, NoteBlockSchema, ParagraphBlockModel, } from '../affine-model/index.js';
|
|
2
2
|
import { textConversionConfigs } from '../affine-rich-text/index.js';
|
|
3
3
|
import { focusBlockEnd, focusBlockStart, getBlockSelectionsCommand, getNextBlockCommand, getPrevBlockCommand, getTextSelectionCommand, } from '../affine-shared/commands/index.js';
|
|
4
|
-
import { asyncGetBlockComponent, matchModels, } from '../affine-shared/utils/index.js';
|
|
4
|
+
import { asyncGetBlockComponent, isNativeFocusableTarget, matchModels, } from '../affine-shared/utils/index.js';
|
|
5
5
|
import { BlockSelection, KeymapExtension, TextSelection, } from '../std/index.js';
|
|
6
6
|
import { dedentBlocks, dedentBlocksToRoot, indentBlocks, selectBlock, selectBlocksBetween, updateBlockType, } from './commands/index.js';
|
|
7
7
|
import { moveBlockConfigs } from './move-block.js';
|
|
@@ -338,6 +338,8 @@ class NoteKeymap {
|
|
|
338
338
|
};
|
|
339
339
|
this._onEnter = (ctx) => {
|
|
340
340
|
const event = ctx.get('defaultState').event;
|
|
341
|
+
if (isNativeFocusableTarget(event.target))
|
|
342
|
+
return;
|
|
341
343
|
const [result] = this._std.command
|
|
342
344
|
.chain()
|
|
343
345
|
.pipe(getBlockSelectionsCommand)
|
|
@@ -448,6 +450,8 @@ class NoteKeymap {
|
|
|
448
450
|
...this._bindQuickActionHotKey(),
|
|
449
451
|
...this._bindTextConversionHotKey(),
|
|
450
452
|
Tab: ctx => {
|
|
453
|
+
if (isNativeFocusableTarget(ctx.get('keyboardState').raw.target))
|
|
454
|
+
return;
|
|
451
455
|
const [success] = this.std.command.exec(indentBlocks);
|
|
452
456
|
if (!success)
|
|
453
457
|
return;
|
|
@@ -455,6 +459,8 @@ class NoteKeymap {
|
|
|
455
459
|
return true;
|
|
456
460
|
},
|
|
457
461
|
'Shift-Tab': ctx => {
|
|
462
|
+
if (isNativeFocusableTarget(ctx.get('keyboardState').raw.target))
|
|
463
|
+
return;
|
|
458
464
|
const [success] = this.std.command.exec(dedentBlocks);
|
|
459
465
|
if (!success)
|
|
460
466
|
return;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { textKeymap } from '../affine-inline-preset/index.js';
|
|
2
2
|
import { CalloutBlockModel, ParagraphBlockModel, ParagraphBlockSchema, } from '../affine-model/index.js';
|
|
3
3
|
import { focusTextModel, getInlineEditorByModel, } from '../affine-rich-text/index.js';
|
|
4
|
-
import { calculateCollapsedSiblings, matchModels, } from '../affine-shared/utils/index.js';
|
|
4
|
+
import { calculateCollapsedSiblings, isNativeFocusableTarget, matchModels, } from '../affine-shared/utils/index.js';
|
|
5
5
|
import { IS_MAC } from '../global/env/index.js';
|
|
6
6
|
import { KeymapExtension, TextSelection } from '../std/index.js';
|
|
7
7
|
import { addParagraphCommand } from './commands/add-paragraph.js';
|
|
@@ -76,6 +76,8 @@ export const ParagraphKeymapExtension = KeymapExtension(std => {
|
|
|
76
76
|
return true;
|
|
77
77
|
},
|
|
78
78
|
Enter: ctx => {
|
|
79
|
+
if (isNativeFocusableTarget(ctx.get('keyboardState').raw.target))
|
|
80
|
+
return;
|
|
79
81
|
const { store } = std;
|
|
80
82
|
const text = std.selection.find(TextSelection);
|
|
81
83
|
if (!text)
|
|
@@ -157,6 +159,8 @@ export const ParagraphKeymapExtension = KeymapExtension(std => {
|
|
|
157
159
|
return true;
|
|
158
160
|
},
|
|
159
161
|
Tab: ctx => {
|
|
162
|
+
if (isNativeFocusableTarget(ctx.get('keyboardState').raw.target))
|
|
163
|
+
return;
|
|
160
164
|
const [success] = std.command
|
|
161
165
|
.chain()
|
|
162
166
|
.pipe(canIndentParagraphCommand)
|
|
@@ -169,6 +173,8 @@ export const ParagraphKeymapExtension = KeymapExtension(std => {
|
|
|
169
173
|
return true;
|
|
170
174
|
},
|
|
171
175
|
'Shift-Tab': ctx => {
|
|
176
|
+
if (isNativeFocusableTarget(ctx.get('keyboardState').raw.target))
|
|
177
|
+
return;
|
|
172
178
|
const [success] = std.command
|
|
173
179
|
.chain()
|
|
174
180
|
.pipe(canDedentParagraphCommand)
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* makes the command usable by the agent surface with no UI at all.
|
|
9
9
|
*/
|
|
10
10
|
import { TelemetryProvider } from '../../affine-shared/services/index.js';
|
|
11
|
-
import {
|
|
11
|
+
import { frameworkOfRole, } from '../../std/index.js';
|
|
12
12
|
import { GfxControllerIdentifier, GfxPrimitiveElementModel, } from '../../std/gfx/index.js';
|
|
13
13
|
import { z } from 'zod';
|
|
14
14
|
const PIVOT_DOC_ID = 'pivotDocId';
|
|
@@ -58,13 +58,6 @@ function pivotTargets(std, elementIds) {
|
|
|
58
58
|
* which is bad in a different way.
|
|
59
59
|
*/
|
|
60
60
|
const isBindable = (std) => !std.store.readonly;
|
|
61
|
-
/** `'wardley:component'` → `'wardley'`, when that names a real framework. */
|
|
62
|
-
function frameworkOfRole(role) {
|
|
63
|
-
const namespace = role?.split(':')[0];
|
|
64
|
-
return FRAMEWORK_IDS.includes(namespace ?? '')
|
|
65
|
-
? namespace
|
|
66
|
-
: undefined;
|
|
67
|
-
}
|
|
68
61
|
/** The single value shared by every target, or `undefined` if they disagree. */
|
|
69
62
|
function unanimous(values) {
|
|
70
63
|
const distinct = new Set(values);
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* tags with no `pivotDocId`, and a `pivotDocId` with no `role`.
|
|
15
15
|
*/
|
|
16
16
|
import { TelemetryProvider } from '../../affine-shared/services/index.js';
|
|
17
|
-
import {
|
|
17
|
+
import { frameworkOfRole, } from '../../std/index.js';
|
|
18
18
|
import { GfxControllerIdentifier, GfxPrimitiveElementModel, setElementTag, } from '../../std/gfx/index.js';
|
|
19
19
|
import { z } from 'zod';
|
|
20
20
|
/**
|
|
@@ -69,13 +69,6 @@ function tagTargets(std, elementIds) {
|
|
|
69
69
|
* guard of their own.
|
|
70
70
|
*/
|
|
71
71
|
const isQualifiable = (std) => !std.store.readonly;
|
|
72
|
-
/** `'wardley:component'` → `'wardley'`, when that names a real framework. */
|
|
73
|
-
function frameworkOfRole(role) {
|
|
74
|
-
const namespace = role?.split(':')[0];
|
|
75
|
-
return FRAMEWORK_IDS.includes(namespace ?? '')
|
|
76
|
-
? namespace
|
|
77
|
-
: undefined;
|
|
78
|
-
}
|
|
79
72
|
/** The single value shared by every target, or `undefined` if they disagree. */
|
|
80
73
|
function unanimous(values) {
|
|
81
74
|
const distinct = new Set(values);
|
|
@@ -18,6 +18,15 @@ export declare class EdgelessPageKeyboardManager extends PageKeyboardManager {
|
|
|
18
18
|
toolbarLocked: import("rxjs").Subject<boolean>;
|
|
19
19
|
};
|
|
20
20
|
get std(): import("../../std/index.js").BlockStdScope;
|
|
21
|
+
/**
|
|
22
|
+
* The framework sub-menu the toolbar has open, when it has one open.
|
|
23
|
+
*
|
|
24
|
+
* Asked of the widget rather than of a service because the popover is not a
|
|
25
|
+
* tool: it is a transient element the toolbar parks in `activePopper`, and
|
|
26
|
+
* only the generic command menu answers to the keys below — a colour picker
|
|
27
|
+
* or a note sub-menu sitting in the same slot keeps its own behaviour.
|
|
28
|
+
*/
|
|
29
|
+
private get _seniorMenu();
|
|
21
30
|
constructor(rootComponent: EdgelessRootBlockComponent);
|
|
22
31
|
private _bindToggleHand;
|
|
23
32
|
private _delete;
|
|
@@ -14,6 +14,7 @@ import { TextTool } from '../../affine-gfx-text/index.js';
|
|
|
14
14
|
import { ConnectorElementModel, EdgelessTextBlockModel, GroupElementModel, LayoutType, MindmapElementModel, NoteBlockModel, NoteDisplayMode, } from '../../affine-model/index.js';
|
|
15
15
|
import { BLOCK_NAME_TEXT, EditPropsStore, TelemetryProvider, translateKey, } from '../../affine-shared/services/index.js';
|
|
16
16
|
import { matchModels } from '../../affine-shared/utils/index.js';
|
|
17
|
+
import { cycleArmedArtefact, EDGELESS_TOOLBAR_WIDGET, EdgelessCommandMenu, } from '../../affine-widget-edgeless-toolbar/index.js';
|
|
17
18
|
import { IS_MAC } from '../../global/env/index.js';
|
|
18
19
|
import { Bound, getCommonBound } from '../../global/gfx/index.js';
|
|
19
20
|
import { SurfaceSelection, TextSelection } from '../../std/index.js';
|
|
@@ -33,6 +34,23 @@ export class EdgelessPageKeyboardManager extends PageKeyboardManager {
|
|
|
33
34
|
get std() {
|
|
34
35
|
return this.rootComponent.std;
|
|
35
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* The framework sub-menu the toolbar has open, when it has one open.
|
|
39
|
+
*
|
|
40
|
+
* Asked of the widget rather than of a service because the popover is not a
|
|
41
|
+
* tool: it is a transient element the toolbar parks in `activePopper`, and
|
|
42
|
+
* only the generic command menu answers to the keys below — a colour picker
|
|
43
|
+
* or a note sub-menu sitting in the same slot keeps its own behaviour.
|
|
44
|
+
*/
|
|
45
|
+
get _seniorMenu() {
|
|
46
|
+
// A keystroke aimed at a canvas text editor belongs to that editor, open
|
|
47
|
+
// menu or not — the same condition the shape cycling below already has.
|
|
48
|
+
if (this.rootComponent.service.selection.editing)
|
|
49
|
+
return null;
|
|
50
|
+
const toolbar = this.rootComponent.widgetComponents[EDGELESS_TOOLBAR_WIDGET];
|
|
51
|
+
const element = toolbar?.activePopper?.element;
|
|
52
|
+
return element instanceof EdgelessCommandMenu ? element : null;
|
|
53
|
+
}
|
|
36
54
|
constructor(rootComponent) {
|
|
37
55
|
super(rootComponent);
|
|
38
56
|
this.rootComponent = rootComponent;
|
|
@@ -157,8 +175,24 @@ export class EdgelessPageKeyboardManager extends PageKeyboardManager {
|
|
|
157
175
|
.catch(console.error);
|
|
158
176
|
},
|
|
159
177
|
'Shift-s': () => {
|
|
178
|
+
// Over an open senior menu the very same keystroke steps backwards
|
|
179
|
+
// through the artefacts it offers — the shape tool's "previous
|
|
180
|
+
// variant", applied to the row a framework opened. With an artefact
|
|
181
|
+
// armed the menu walks the TOOL instead, so the ghost moves with the
|
|
182
|
+
// highlight.
|
|
183
|
+
const menu = this._seniorMenu;
|
|
184
|
+
if (menu) {
|
|
185
|
+
menu.cycle(-1);
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
160
188
|
if (this.rootComponent.service.locked)
|
|
161
189
|
return;
|
|
190
|
+
// The same walk with no menu open: the framework's row is what the
|
|
191
|
+
// armed artefact belongs to, whether or not it is on screen.
|
|
192
|
+
if (!this.rootComponent.service.selection.editing &&
|
|
193
|
+
cycleArmedArtefact(rootComponent.gfx, -1)) {
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
162
196
|
const controller = rootComponent.gfx.tool.currentTool$.peek();
|
|
163
197
|
if (this.rootComponent.service.selection.editing ||
|
|
164
198
|
!(controller instanceof ShapeTool)) {
|
|
@@ -265,9 +299,22 @@ export class EdgelessPageKeyboardManager extends PageKeyboardManager {
|
|
|
265
299
|
this._move('ArrowDown');
|
|
266
300
|
},
|
|
267
301
|
ArrowLeft: () => {
|
|
302
|
+
// Same highlight as Shift+S, spelled the way a row of buttons is
|
|
303
|
+
// normally walked. The guard also keeps the arrows from nudging the
|
|
304
|
+
// selection behind a menu the user is reading.
|
|
305
|
+
const menu = this._seniorMenu;
|
|
306
|
+
if (menu) {
|
|
307
|
+
menu.cycle(-1);
|
|
308
|
+
return;
|
|
309
|
+
}
|
|
268
310
|
this._move('ArrowLeft');
|
|
269
311
|
},
|
|
270
312
|
ArrowRight: () => {
|
|
313
|
+
const menu = this._seniorMenu;
|
|
314
|
+
if (menu) {
|
|
315
|
+
menu.cycle(1);
|
|
316
|
+
return;
|
|
317
|
+
}
|
|
271
318
|
this._move('ArrowRight');
|
|
272
319
|
},
|
|
273
320
|
'Shift-ArrowUp': () => {
|
|
@@ -283,6 +330,10 @@ export class EdgelessPageKeyboardManager extends PageKeyboardManager {
|
|
|
283
330
|
this._move('ArrowRight', true);
|
|
284
331
|
},
|
|
285
332
|
Enter: () => {
|
|
333
|
+
// A highlighted sub-menu button consumes Enter; with nothing
|
|
334
|
+
// highlighted the menu takes nothing and the canvas keeps its own.
|
|
335
|
+
if (this._seniorMenu?.activate())
|
|
336
|
+
return;
|
|
286
337
|
const { service } = rootComponent;
|
|
287
338
|
const selection = service.selection;
|
|
288
339
|
const elements = selection.selectedElements;
|
|
@@ -23,6 +23,28 @@ export declare class EdgelessRootBlockComponent extends BlockComponent<RootBlock
|
|
|
23
23
|
private _initResizeEffect;
|
|
24
24
|
private _initSlotEffects;
|
|
25
25
|
private _initViewport;
|
|
26
|
+
/**
|
|
27
|
+
* A pinch (or ctrl+wheel) that the capture handler below has already turned
|
|
28
|
+
* into a canvas zoom. The dispatcher's own handler still receives the event
|
|
29
|
+
* when nothing swallowed it, and must not zoom a second time.
|
|
30
|
+
*/
|
|
31
|
+
private readonly _pinchZoomed;
|
|
32
|
+
/**
|
|
33
|
+
* Ctrl+wheel and trackpad pinch zoom the CANVAS, never the browser page.
|
|
34
|
+
*
|
|
35
|
+
* What stops a browser from page-zooming is `preventDefault()`, and the only
|
|
36
|
+
* handler that calls it hangs off the event dispatcher — a bubble-phase
|
|
37
|
+
* listener on the editor host. Two kinds of overlay keep it from ever
|
|
38
|
+
* running: popups portalled out to `document.body` (the event never reaches
|
|
39
|
+
* the host), and in-host overlays that stop the wheel on purpose so they
|
|
40
|
+
* scroll instead of the board (the element toolbar, the validation bubble,
|
|
41
|
+
* the artefact catalogue…). Under either one the page zoomed.
|
|
42
|
+
*
|
|
43
|
+
* One capture-phase listener on `document` sees the gesture before all of
|
|
44
|
+
* them, and it is deliberately narrow: pinches only — a plain wheel still
|
|
45
|
+
* belongs to whatever is under the pointer — and only inside this editor.
|
|
46
|
+
*/
|
|
47
|
+
private readonly _onDocumentPinch;
|
|
26
48
|
private _initWheelEvent;
|
|
27
49
|
bindHotKey(keymap: Record<string, UIEventHandler>, options?: {
|
|
28
50
|
global?: boolean;
|
|
@@ -49,6 +49,7 @@ import { css, html } from 'lit';
|
|
|
49
49
|
import { query } from 'lit/decorators.js';
|
|
50
50
|
import { repeat } from 'lit/directives/repeat.js';
|
|
51
51
|
import { EdgelessPageKeyboardManager } from './edgeless-keyboard.js';
|
|
52
|
+
import { pinchZoomAction } from './utils/pinch-zoom.js';
|
|
52
53
|
import { isCanvasElement } from './utils/query.js';
|
|
53
54
|
let EdgelessRootBlockComponent = (() => {
|
|
54
55
|
let _classSuper = BlockComponent;
|
|
@@ -268,11 +269,20 @@ let EdgelessRootBlockComponent = (() => {
|
|
|
268
269
|
});
|
|
269
270
|
}
|
|
270
271
|
_initWheelEvent() {
|
|
272
|
+
this._disposables.addFromEvent(document, 'wheel', this._onDocumentPinch, {
|
|
273
|
+
passive: false,
|
|
274
|
+
capture: true,
|
|
275
|
+
});
|
|
271
276
|
this._disposables.add(this.std.event.add('wheel', ctx => {
|
|
272
277
|
const config = this.std.getOptional(EditorSettingProvider)?.setting$;
|
|
273
278
|
const state = ctx.get('defaultState');
|
|
274
279
|
const e = state.event;
|
|
275
280
|
const edgelessScrollZoom = config?.peek().edgelessScrollZoom ?? false;
|
|
281
|
+
// Already zoomed, on the way down: the default action is cancelled too.
|
|
282
|
+
if (this._pinchZoomed.has(e)) {
|
|
283
|
+
e.stopPropagation();
|
|
284
|
+
return;
|
|
285
|
+
}
|
|
276
286
|
e.preventDefault();
|
|
277
287
|
const { viewport } = this.gfx;
|
|
278
288
|
if (viewport.locked)
|
|
@@ -436,6 +446,42 @@ let EdgelessRootBlockComponent = (() => {
|
|
|
436
446
|
}, this);
|
|
437
447
|
this._resizeObserver = null;
|
|
438
448
|
this.keyboardManager = null;
|
|
449
|
+
/**
|
|
450
|
+
* A pinch (or ctrl+wheel) that the capture handler below has already turned
|
|
451
|
+
* into a canvas zoom. The dispatcher's own handler still receives the event
|
|
452
|
+
* when nothing swallowed it, and must not zoom a second time.
|
|
453
|
+
*/
|
|
454
|
+
this._pinchZoomed = new WeakSet();
|
|
455
|
+
/**
|
|
456
|
+
* Ctrl+wheel and trackpad pinch zoom the CANVAS, never the browser page.
|
|
457
|
+
*
|
|
458
|
+
* What stops a browser from page-zooming is `preventDefault()`, and the only
|
|
459
|
+
* handler that calls it hangs off the event dispatcher — a bubble-phase
|
|
460
|
+
* listener on the editor host. Two kinds of overlay keep it from ever
|
|
461
|
+
* running: popups portalled out to `document.body` (the event never reaches
|
|
462
|
+
* the host), and in-host overlays that stop the wheel on purpose so they
|
|
463
|
+
* scroll instead of the board (the element toolbar, the validation bubble,
|
|
464
|
+
* the artefact catalogue…). Under either one the page zoomed.
|
|
465
|
+
*
|
|
466
|
+
* One capture-phase listener on `document` sees the gesture before all of
|
|
467
|
+
* them, and it is deliberately narrow: pinches only — a plain wheel still
|
|
468
|
+
* belongs to whatever is under the pointer — and only inside this editor.
|
|
469
|
+
*/
|
|
470
|
+
this._onDocumentPinch = (e) => {
|
|
471
|
+
const action = pinchZoomAction(e, this.std.host);
|
|
472
|
+
if (action === 'ignore')
|
|
473
|
+
return;
|
|
474
|
+
e.preventDefault();
|
|
475
|
+
if (action === 'swallow')
|
|
476
|
+
return;
|
|
477
|
+
const { viewport } = this.gfx;
|
|
478
|
+
if (viewport.locked)
|
|
479
|
+
return;
|
|
480
|
+
const rect = this.getBoundingClientRect();
|
|
481
|
+
const [baseX, baseY] = viewport.toModelCoord(e.clientX - rect.x, e.clientY - rect.y);
|
|
482
|
+
viewport.setZoom(normalizeWheelDeltaY(e.deltaY, viewport.zoom), new Point(baseX, baseY), true);
|
|
483
|
+
this._pinchZoomed.add(e);
|
|
484
|
+
};
|
|
439
485
|
this.#backgroundElm_accessor_storage = __runInitializers(this, _backgroundElm_initializers, null);
|
|
440
486
|
this.#gfxViewportElm_accessor_storage = (__runInitializers(this, _backgroundElm_extraInitializers), __runInitializers(this, _gfxViewportElm_initializers, void 0));
|
|
441
487
|
this.#mountElm_accessor_storage = (__runInitializers(this, _gfxViewportElm_extraInitializers), __runInitializers(this, _mountElm_initializers, null));
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The class `createSimplePortal` stamps on every portal root it appends to
|
|
3
|
+
* `document.body` — the only thing a popup rendered OUTSIDE the editor host
|
|
4
|
+
* still has in common with the editor that opened it.
|
|
5
|
+
*/
|
|
6
|
+
export declare const PORTAL_CLASS = "blocksuite-portal";
|
|
7
|
+
/**
|
|
8
|
+
* What the edgeless board owes a wheel event seen on `document`, in capture:
|
|
9
|
+
*
|
|
10
|
+
* - `ignore`: not a pinch, or not this editor's business — the page keeps it.
|
|
11
|
+
* - `swallow`: a pinch inside a popup the editor portalled out to
|
|
12
|
+
* `document.body`. The browser must not page-zoom, but the board must not
|
|
13
|
+
* move either: zooming under an anchored popup leaves it pointing at nothing.
|
|
14
|
+
* - `zoom`: a pinch inside the editor — the canvas zooms.
|
|
15
|
+
*/
|
|
16
|
+
export type PinchZoomAction = 'ignore' | 'swallow' | 'zoom';
|
|
17
|
+
/**
|
|
18
|
+
* The whole decision, readable from the event and the host alone so it can be
|
|
19
|
+
* tested without a live editor.
|
|
20
|
+
*/
|
|
21
|
+
export declare function pinchZoomAction(event: WheelEvent, host: EventTarget): PinchZoomAction;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { isTouchPadPinchEvent } from '../../../affine-shared/utils/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* The class `createSimplePortal` stamps on every portal root it appends to
|
|
4
|
+
* `document.body` — the only thing a popup rendered OUTSIDE the editor host
|
|
5
|
+
* still has in common with the editor that opened it.
|
|
6
|
+
*/
|
|
7
|
+
export const PORTAL_CLASS = 'blocksuite-portal';
|
|
8
|
+
/**
|
|
9
|
+
* The whole decision, readable from the event and the host alone so it can be
|
|
10
|
+
* tested without a live editor.
|
|
11
|
+
*/
|
|
12
|
+
export function pinchZoomAction(event, host) {
|
|
13
|
+
// A plain wheel still belongs to whatever is under the pointer: an
|
|
14
|
+
// overflowing toolbar, a bubble, a panel. Only the zoom gesture is claimed.
|
|
15
|
+
if (!isTouchPadPinchEvent(event))
|
|
16
|
+
return 'ignore';
|
|
17
|
+
const path = event.composedPath();
|
|
18
|
+
if (path.includes(host))
|
|
19
|
+
return 'zoom';
|
|
20
|
+
if (path.some(node => node instanceof Element && node.classList.contains(PORTAL_CLASS))) {
|
|
21
|
+
return 'swallow';
|
|
22
|
+
}
|
|
23
|
+
return 'ignore';
|
|
24
|
+
}
|
|
@@ -43,6 +43,14 @@ export function getCursorMode(edgelessTool) {
|
|
|
43
43
|
return drawingCursor;
|
|
44
44
|
case 'eraser':
|
|
45
45
|
case 'shape':
|
|
46
|
+
// The polygon tool is armed long before it draws anything — the first
|
|
47
|
+
// click only places a corner — so the cursor is the only thing that says
|
|
48
|
+
// the next click lands on the canvas rather than selecting.
|
|
49
|
+
case 'polygon':
|
|
50
|
+
// An armed framework artefact: the ghost says WHAT lands, the crosshair
|
|
51
|
+
// says WHERE — and it is all there is for an artefact with nothing drawable
|
|
52
|
+
// to preview (a lone connector).
|
|
53
|
+
case 'artefact-placement':
|
|
46
54
|
case 'connector':
|
|
47
55
|
case 'frame':
|
|
48
56
|
case 'affine:note':
|
|
@@ -1,20 +1,5 @@
|
|
|
1
|
+
import { isNativeFocusableTarget } from '../../affine-shared/utils/index.js';
|
|
1
2
|
import { KeymapExtension } from '../../std/index.js';
|
|
2
|
-
const NATIVE_FOCUSABLE_SELECTOR = 'button, a[href], input, select, textarea, [tabindex]:not([tabindex="-1"])';
|
|
3
|
-
/**
|
|
4
|
-
* The editor host swallows Tab and Shift-Tab so that indentation stays under
|
|
5
|
-
* the control of the block-scoped handlers. That would however trap the focus
|
|
6
|
-
* on the native controls the editor renders (the collapse button of headings
|
|
7
|
-
* and lists, for instance), which then could neither be reached nor left with
|
|
8
|
-
* the keyboard. When the event originates from such a control — and not from
|
|
9
|
-
* editable text — the native tabbing behaviour is let through.
|
|
10
|
-
*/
|
|
11
|
-
const isNativeFocusableTarget = (target) => {
|
|
12
|
-
if (!(target instanceof Element))
|
|
13
|
-
return false;
|
|
14
|
-
if (target instanceof HTMLElement && target.isContentEditable)
|
|
15
|
-
return false;
|
|
16
|
-
return !!target.closest(NATIVE_FOCUSABLE_SELECTOR);
|
|
17
|
-
};
|
|
18
3
|
export const fallbackKeymap = KeymapExtension(() => {
|
|
19
4
|
return {
|
|
20
5
|
Tab: ctx => {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BpmnNodeElementModel, BpmnPoolElementModel, BrushElementModel, C4BoardElementModel, C4BoundaryElementModel, C4NodeElementModel, ConnectorElementModel, ContextMapBoardElementModel, CoreDomainChartElementModel, CynefinElementModel, EdgyBoardElementModel, EdgyFacetsElementModel, EdgyNodeElementModel, EstuarineElementModel, EventStormingBoardElementModel, GroupElementModel, HighlighterElementModel, MindmapElementModel, ShapeElementModel, TextElementModel, WardleyBackgroundElementModel, WardleyNodeElementModel } from '../../affine-model/index.js';
|
|
1
|
+
import { BpmnNodeElementModel, BpmnPoolElementModel, BrushElementModel, C4BoardElementModel, C4BoundaryElementModel, C4NodeElementModel, ConnectorElementModel, ContextMapBoardElementModel, CoreDomainChartElementModel, CynefinElementModel, EdgyBoardElementModel, EdgyFacetsElementModel, EdgyNodeElementModel, EstuarineElementModel, EventStormingBoardElementModel, GroupElementModel, HighlighterElementModel, MindmapElementModel, ShapeElementModel, TextElementModel, UmlDiagramElementModel, UmlFragmentElementModel, UmlNodeElementModel, UmlPartitionElementModel, UmlRegionElementModel, UmlSubjectElementModel, WardleyBackgroundElementModel, WardleyNodeElementModel } from '../../affine-model/index.js';
|
|
2
2
|
import { SurfaceElementModel } from './base.js';
|
|
3
3
|
export declare const elementsCtorMap: {
|
|
4
4
|
group: typeof GroupElementModel;
|
|
@@ -23,8 +23,14 @@ export declare const elementsCtorMap: {
|
|
|
23
23
|
c4Node: typeof C4NodeElementModel;
|
|
24
24
|
c4Board: typeof C4BoardElementModel;
|
|
25
25
|
c4Boundary: typeof C4BoundaryElementModel;
|
|
26
|
+
umlNode: typeof UmlNodeElementModel;
|
|
27
|
+
umlDiagram: typeof UmlDiagramElementModel;
|
|
28
|
+
umlSubject: typeof UmlSubjectElementModel;
|
|
29
|
+
umlPartition: typeof UmlPartitionElementModel;
|
|
30
|
+
umlRegion: typeof UmlRegionElementModel;
|
|
31
|
+
umlFragment: typeof UmlFragmentElementModel;
|
|
26
32
|
};
|
|
27
|
-
export { BpmnNodeElementModel, BpmnPoolElementModel, BrushElementModel, C4BoardElementModel, C4BoundaryElementModel, C4NodeElementModel, ConnectorElementModel, ContextMapBoardElementModel, CoreDomainChartElementModel, CynefinElementModel, EdgyBoardElementModel, EdgyFacetsElementModel, EdgyNodeElementModel, EstuarineElementModel, EventStormingBoardElementModel, GroupElementModel, HighlighterElementModel, MindmapElementModel, ShapeElementModel, SurfaceElementModel, TextElementModel, WardleyBackgroundElementModel, WardleyNodeElementModel, };
|
|
33
|
+
export { BpmnNodeElementModel, BpmnPoolElementModel, BrushElementModel, C4BoardElementModel, C4BoundaryElementModel, C4NodeElementModel, ConnectorElementModel, ContextMapBoardElementModel, CoreDomainChartElementModel, CynefinElementModel, EdgyBoardElementModel, EdgyFacetsElementModel, EdgyNodeElementModel, EstuarineElementModel, EventStormingBoardElementModel, GroupElementModel, HighlighterElementModel, MindmapElementModel, ShapeElementModel, SurfaceElementModel, TextElementModel, UmlDiagramElementModel, UmlFragmentElementModel, UmlNodeElementModel, UmlPartitionElementModel, UmlRegionElementModel, UmlSubjectElementModel, WardleyBackgroundElementModel, WardleyNodeElementModel, };
|
|
28
34
|
export declare enum CanvasElementType {
|
|
29
35
|
BRUSH = "brush",
|
|
30
36
|
CONNECTOR = "connector",
|
|
@@ -47,7 +53,13 @@ export declare enum CanvasElementType {
|
|
|
47
53
|
BPMNPOOL = "bpmnPool",
|
|
48
54
|
C4NODE = "c4Node",
|
|
49
55
|
C4BOARD = "c4Board",
|
|
50
|
-
C4BOUNDARY = "c4Boundary"
|
|
56
|
+
C4BOUNDARY = "c4Boundary",
|
|
57
|
+
UMLNODE = "umlNode",
|
|
58
|
+
UMLDIAGRAM = "umlDiagram",
|
|
59
|
+
UMLSUBJECT = "umlSubject",
|
|
60
|
+
UMLPARTITION = "umlPartition",
|
|
61
|
+
UMLREGION = "umlRegion",
|
|
62
|
+
UMLFRAGMENT = "umlFragment"
|
|
51
63
|
}
|
|
52
64
|
export type ElementModelMap = {
|
|
53
65
|
['shape']: ShapeElementModel;
|
|
@@ -72,5 +84,11 @@ export type ElementModelMap = {
|
|
|
72
84
|
['c4Node']: C4NodeElementModel;
|
|
73
85
|
['c4Board']: C4BoardElementModel;
|
|
74
86
|
['c4Boundary']: C4BoundaryElementModel;
|
|
87
|
+
['umlNode']: UmlNodeElementModel;
|
|
88
|
+
['umlDiagram']: UmlDiagramElementModel;
|
|
89
|
+
['umlSubject']: UmlSubjectElementModel;
|
|
90
|
+
['umlPartition']: UmlPartitionElementModel;
|
|
91
|
+
['umlRegion']: UmlRegionElementModel;
|
|
92
|
+
['umlFragment']: UmlFragmentElementModel;
|
|
75
93
|
};
|
|
76
94
|
export declare function isCanvasElementType(type: string): type is CanvasElementType;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BpmnNodeElementModel, BpmnPoolElementModel, BrushElementModel, C4BoardElementModel, C4BoundaryElementModel, C4NodeElementModel, ConnectorElementModel, ContextMapBoardElementModel, CoreDomainChartElementModel, CynefinElementModel, EdgyBoardElementModel, EdgyFacetsElementModel, EdgyNodeElementModel, EstuarineElementModel, EventStormingBoardElementModel, GroupElementModel, HighlighterElementModel, MindmapElementModel, ShapeElementModel, TextElementModel, WardleyBackgroundElementModel, WardleyNodeElementModel, } from '../../affine-model/index.js';
|
|
1
|
+
import { BpmnNodeElementModel, BpmnPoolElementModel, BrushElementModel, C4BoardElementModel, C4BoundaryElementModel, C4NodeElementModel, ConnectorElementModel, ContextMapBoardElementModel, CoreDomainChartElementModel, CynefinElementModel, EdgyBoardElementModel, EdgyFacetsElementModel, EdgyNodeElementModel, EstuarineElementModel, EventStormingBoardElementModel, GroupElementModel, HighlighterElementModel, MindmapElementModel, ShapeElementModel, TextElementModel, UmlDiagramElementModel, UmlFragmentElementModel, UmlNodeElementModel, UmlPartitionElementModel, UmlRegionElementModel, UmlSubjectElementModel, WardleyBackgroundElementModel, WardleyNodeElementModel, } from '../../affine-model/index.js';
|
|
2
2
|
import { SurfaceElementModel } from './base.js';
|
|
3
3
|
export const elementsCtorMap = {
|
|
4
4
|
group: GroupElementModel,
|
|
@@ -23,8 +23,14 @@ export const elementsCtorMap = {
|
|
|
23
23
|
c4Node: C4NodeElementModel,
|
|
24
24
|
c4Board: C4BoardElementModel,
|
|
25
25
|
c4Boundary: C4BoundaryElementModel,
|
|
26
|
+
umlNode: UmlNodeElementModel,
|
|
27
|
+
umlDiagram: UmlDiagramElementModel,
|
|
28
|
+
umlSubject: UmlSubjectElementModel,
|
|
29
|
+
umlPartition: UmlPartitionElementModel,
|
|
30
|
+
umlRegion: UmlRegionElementModel,
|
|
31
|
+
umlFragment: UmlFragmentElementModel,
|
|
26
32
|
};
|
|
27
|
-
export { BpmnNodeElementModel, BpmnPoolElementModel, BrushElementModel, C4BoardElementModel, C4BoundaryElementModel, C4NodeElementModel, ConnectorElementModel, ContextMapBoardElementModel, CoreDomainChartElementModel, CynefinElementModel, EdgyBoardElementModel, EdgyFacetsElementModel, EdgyNodeElementModel, EstuarineElementModel, EventStormingBoardElementModel, GroupElementModel, HighlighterElementModel, MindmapElementModel, ShapeElementModel, SurfaceElementModel, TextElementModel, WardleyBackgroundElementModel, WardleyNodeElementModel, };
|
|
33
|
+
export { BpmnNodeElementModel, BpmnPoolElementModel, BrushElementModel, C4BoardElementModel, C4BoundaryElementModel, C4NodeElementModel, ConnectorElementModel, ContextMapBoardElementModel, CoreDomainChartElementModel, CynefinElementModel, EdgyBoardElementModel, EdgyFacetsElementModel, EdgyNodeElementModel, EstuarineElementModel, EventStormingBoardElementModel, GroupElementModel, HighlighterElementModel, MindmapElementModel, ShapeElementModel, SurfaceElementModel, TextElementModel, UmlDiagramElementModel, UmlFragmentElementModel, UmlNodeElementModel, UmlPartitionElementModel, UmlRegionElementModel, UmlSubjectElementModel, WardleyBackgroundElementModel, WardleyNodeElementModel, };
|
|
28
34
|
export var CanvasElementType;
|
|
29
35
|
(function (CanvasElementType) {
|
|
30
36
|
CanvasElementType["BRUSH"] = "brush";
|
|
@@ -49,6 +55,12 @@ export var CanvasElementType;
|
|
|
49
55
|
CanvasElementType["C4NODE"] = "c4Node";
|
|
50
56
|
CanvasElementType["C4BOARD"] = "c4Board";
|
|
51
57
|
CanvasElementType["C4BOUNDARY"] = "c4Boundary";
|
|
58
|
+
CanvasElementType["UMLNODE"] = "umlNode";
|
|
59
|
+
CanvasElementType["UMLDIAGRAM"] = "umlDiagram";
|
|
60
|
+
CanvasElementType["UMLSUBJECT"] = "umlSubject";
|
|
61
|
+
CanvasElementType["UMLPARTITION"] = "umlPartition";
|
|
62
|
+
CanvasElementType["UMLREGION"] = "umlRegion";
|
|
63
|
+
CanvasElementType["UMLFRAGMENT"] = "umlFragment";
|
|
52
64
|
})(CanvasElementType || (CanvasElementType = {}));
|
|
53
65
|
export function isCanvasElementType(type) {
|
|
54
66
|
return type.toLocaleUpperCase() in CanvasElementType;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { FrameworkBackgroundElementModel } from '../../../affine-model/index.js';
|
|
2
|
+
import type { AnyCommandDescriptor, BlockStdScope } from '../../../std/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* The framework boards in the current canvas selection.
|
|
5
|
+
*
|
|
6
|
+
* `FrameworkBackgroundElementModel` is the whole test, and that is the point of
|
|
7
|
+
* this command: eleven board kinds today — a Wardley map, a BPMN pool, a C4
|
|
8
|
+
* board and its boundaries, the three DDD boards, Cynefin, Estuarine, the two
|
|
9
|
+
* EDGY ones — and whatever a framework adds next, because a board IS the class
|
|
10
|
+
* and nothing about SVG is per framework (ADR 0025).
|
|
11
|
+
*/
|
|
12
|
+
export declare function selectedBoards(std: BlockStdScope): FrameworkBackgroundElementModel[];
|
|
13
|
+
/**
|
|
14
|
+
* Render the selected board and hand it to the browser.
|
|
15
|
+
*
|
|
16
|
+
* ponytail: ONE board per click, the first of the selection. Browsers throttle
|
|
17
|
+
* (and Safari silently drops) programmatic downloads fired in a burst, so a
|
|
18
|
+
* selection of three boards would yield one file, two files or three depending
|
|
19
|
+
* on the browser — a result nobody can read off the gesture. One board, one
|
|
20
|
+
* file, every time.
|
|
21
|
+
*/
|
|
22
|
+
export declare function exportBoardSvg(std: BlockStdScope): void;
|
|
23
|
+
export declare const exportSvgCommands: AnyCommandDescriptor[];
|