@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
|
@@ -1,6 +1,68 @@
|
|
|
1
1
|
import { EdgelessCRUDIdentifier } from '../../affine-block-surface/index.js';
|
|
2
2
|
import { MindmapElementModel, } from '../../affine-model/index.js';
|
|
3
|
-
import { GfxControllerIdentifier } from '../../std/gfx/index.js';
|
|
3
|
+
import { batchAddChildren, batchRemoveChildren, generateKeyBetween, generateNKeysBetween, GfxControllerIdentifier, measureOperation, } from '../../std/gfx/index.js';
|
|
4
|
+
/**
|
|
5
|
+
* Every element that sits at the root of the board, in painting order.
|
|
6
|
+
*/
|
|
7
|
+
const getTopLevelOrderedElements = (gfx) => {
|
|
8
|
+
const topLevelElements = gfx.layer.layers.reduce((elements, layer) => {
|
|
9
|
+
layer.elements.forEach(element => {
|
|
10
|
+
if (element.group === null) {
|
|
11
|
+
elements.push(element);
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
return elements;
|
|
15
|
+
}, []);
|
|
16
|
+
topLevelElements.sort((a, b) => gfx.layer.compare(a, b));
|
|
17
|
+
return topLevelElements;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* The indexes the children of an ungrouped group should take: the slot the
|
|
21
|
+
* group itself occupied, so that everything it contained stays where the user
|
|
22
|
+
* last saw it instead of jumping to the top of the stack.
|
|
23
|
+
*
|
|
24
|
+
* The fallbacks go from "the exact slot" to "always valid", because the
|
|
25
|
+
* interval between the two siblings can be unusable — a document written by an
|
|
26
|
+
* older version, or two siblings sharing an index.
|
|
27
|
+
*/
|
|
28
|
+
const buildUngroupIndexes = (orderedElements, afterIndex, beforeIndex, fallbackAnchorIndex) => {
|
|
29
|
+
if (orderedElements.length === 0) {
|
|
30
|
+
return [];
|
|
31
|
+
}
|
|
32
|
+
const count = orderedElements.length;
|
|
33
|
+
const tryGenerateN = (left, right) => {
|
|
34
|
+
try {
|
|
35
|
+
const generated = generateNKeysBetween(left, right, count);
|
|
36
|
+
return generated.length === count ? generated : null;
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
const tryGenerateOneByOne = (left, right) => {
|
|
43
|
+
try {
|
|
44
|
+
let cursor = left;
|
|
45
|
+
return orderedElements.map(() => {
|
|
46
|
+
cursor = generateKeyBetween(cursor, right);
|
|
47
|
+
return cursor;
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
// Preferred: keep ungrouped children in the original group slot.
|
|
55
|
+
return (tryGenerateN(afterIndex, beforeIndex) ??
|
|
56
|
+
// Fallback: ignore the upper bound when legacy/broken data has reversed interval.
|
|
57
|
+
tryGenerateN(afterIndex, null) ??
|
|
58
|
+
// Fallback: use group index as anchor when sibling interval is unavailable.
|
|
59
|
+
tryGenerateN(fallbackAnchorIndex, null) ??
|
|
60
|
+
// Last resort: always valid.
|
|
61
|
+
tryGenerateN(null, null) ??
|
|
62
|
+
// Defensive fallback for unexpected library behavior.
|
|
63
|
+
tryGenerateOneByOne(null, null) ??
|
|
64
|
+
[]);
|
|
65
|
+
};
|
|
4
66
|
export const createGroupCommand = (ctx, next) => {
|
|
5
67
|
const { std, elements } = ctx;
|
|
6
68
|
const gfx = std.get(GfxControllerIdentifier);
|
|
@@ -20,73 +82,99 @@ export const createGroupCommand = (ctx, next) => {
|
|
|
20
82
|
next({ groupId });
|
|
21
83
|
};
|
|
22
84
|
export const createGroupFromSelectedCommand = (ctx, next) => {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
selection.selectedElements.
|
|
37
|
-
|
|
38
|
-
|
|
85
|
+
measureOperation('edgeless:create-group-from-selected', () => {
|
|
86
|
+
const { std } = ctx;
|
|
87
|
+
const gfx = std.get(GfxControllerIdentifier);
|
|
88
|
+
const { selection, surface } = gfx;
|
|
89
|
+
if (!surface) {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
// Guarded BEFORE the child rewrites below: they write through raw
|
|
93
|
+
// transactions, and `crud.addElement` would refuse afterwards — leaving the
|
|
94
|
+
// selection orphaned from its parent group on a readonly board.
|
|
95
|
+
if (std.store.readonly) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
if (selection.selectedElements.length === 0 ||
|
|
99
|
+
!selection.selectedElements.every(element => element.group === selection.firstElement.group &&
|
|
100
|
+
!(element.group instanceof MindmapElementModel))) {
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
const parent = selection.firstElement.group;
|
|
104
|
+
const selectedElements = [...selection.selectedElements];
|
|
105
|
+
let groupId;
|
|
106
|
+
// One transaction for the whole regrouping, so a single undo takes the
|
|
107
|
+
// board back to where it was.
|
|
108
|
+
std.store.transact(() => {
|
|
109
|
+
const [_, result] = std.command.exec(createGroupCommand, {
|
|
110
|
+
elements: selectedElements,
|
|
111
|
+
});
|
|
112
|
+
if (!result.groupId) {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
groupId = result.groupId;
|
|
116
|
+
const group = surface.getElementById(groupId);
|
|
117
|
+
if (parent !== null && group) {
|
|
118
|
+
batchRemoveChildren(parent, selectedElements);
|
|
119
|
+
batchAddChildren(parent, [group]);
|
|
120
|
+
}
|
|
39
121
|
});
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
if (parent !== null && group) {
|
|
49
|
-
parent.addChild(group);
|
|
50
|
-
}
|
|
51
|
-
selection.set({
|
|
52
|
-
editing: false,
|
|
53
|
-
elements: [result.groupId],
|
|
122
|
+
if (!groupId) {
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
selection.set({
|
|
126
|
+
editing: false,
|
|
127
|
+
elements: [groupId],
|
|
128
|
+
});
|
|
129
|
+
next({ groupId });
|
|
54
130
|
});
|
|
55
|
-
next({ groupId: result.groupId });
|
|
56
131
|
};
|
|
57
132
|
export const ungroupCommand = (ctx, next) => {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
//
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
133
|
+
measureOperation('edgeless:ungroup', () => {
|
|
134
|
+
const { std, group } = ctx;
|
|
135
|
+
const gfx = std.get(GfxControllerIdentifier);
|
|
136
|
+
const { selection } = gfx;
|
|
137
|
+
const parent = group.group;
|
|
138
|
+
const elements = [...group.childElements];
|
|
139
|
+
if (group instanceof MindmapElementModel) {
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
// The child rewrites and the index rewrites below are raw transactions.
|
|
143
|
+
if (std.store.readonly) {
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
const orderedElements = [...elements].sort((a, b) => gfx.layer.compare(a, b));
|
|
147
|
+
const siblings = parent
|
|
148
|
+
? [...parent.childElements].sort((a, b) => gfx.layer.compare(a, b))
|
|
149
|
+
: getTopLevelOrderedElements(gfx);
|
|
150
|
+
const groupPosition = siblings.indexOf(group);
|
|
151
|
+
const beforeSiblingIndex = groupPosition > 0 ? (siblings[groupPosition - 1]?.index ?? null) : null;
|
|
152
|
+
const afterSiblingIndex = groupPosition === -1
|
|
153
|
+
? null
|
|
154
|
+
: (siblings[groupPosition + 1]?.index ?? null);
|
|
155
|
+
const nextIndexes = buildUngroupIndexes(orderedElements, beforeSiblingIndex, afterSiblingIndex, group.index);
|
|
156
|
+
// One transaction for the whole ungrouping: opening one per child made a
|
|
157
|
+
// single undo put a single child back.
|
|
78
158
|
std.store.transact(() => {
|
|
79
|
-
|
|
159
|
+
if (parent !== null) {
|
|
160
|
+
batchRemoveChildren(parent, [group]);
|
|
161
|
+
}
|
|
162
|
+
batchRemoveChildren(group, elements);
|
|
163
|
+
// keep relative index order of group children after ungroup
|
|
164
|
+
orderedElements.forEach((element, idx) => {
|
|
165
|
+
const index = nextIndexes[idx];
|
|
166
|
+
if (element.index !== index) {
|
|
167
|
+
element.index = index;
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
if (parent !== null) {
|
|
171
|
+
batchAddChildren(parent, orderedElements);
|
|
172
|
+
}
|
|
80
173
|
});
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
parent.addChild(element);
|
|
174
|
+
selection.set({
|
|
175
|
+
editing: false,
|
|
176
|
+
elements: orderedElements.map(ele => ele.id),
|
|
85
177
|
});
|
|
86
|
-
|
|
87
|
-
selection.set({
|
|
88
|
-
editing: false,
|
|
89
|
-
elements: elements.map(ele => ele.id),
|
|
178
|
+
next();
|
|
90
179
|
});
|
|
91
|
-
next();
|
|
92
180
|
};
|
|
@@ -33,6 +33,7 @@ var __runInitializers = (this && this.__runInitializers) || function (thisArg, i
|
|
|
33
33
|
return useValue ? value : void 0;
|
|
34
34
|
};
|
|
35
35
|
import { DefaultTool } from '../../affine-block-surface/index.js';
|
|
36
|
+
import { toOverlayCoord } from '../../affine-shared/utils/index.js';
|
|
36
37
|
import { BlockSuiteError, ErrorCode } from '../../global/exceptions/index.js';
|
|
37
38
|
import { Bound } from '../../global/gfx/index.js';
|
|
38
39
|
import { WithDisposable } from '../../global/lit/index.js';
|
|
@@ -156,7 +157,9 @@ let EdgelessGroupTitleEditor = (() => {
|
|
|
156
157
|
}
|
|
157
158
|
const viewport = this.gfx.viewport;
|
|
158
159
|
const bound = Bound.deserialize(this.group.externalXYWH);
|
|
159
|
-
|
|
160
|
+
// The editor is mounted inside the container the host may have scaled, so
|
|
161
|
+
// it is placed the way the title it replaces is, not in screen pixels.
|
|
162
|
+
const [x, y] = toOverlayCoord(viewport, bound.x, bound.y);
|
|
160
163
|
const inlineEditorStyle = styleMap({
|
|
161
164
|
transformOrigin: 'top left',
|
|
162
165
|
borderRadius: '2px',
|
|
@@ -7,10 +7,26 @@ export type PanToolOption = {
|
|
|
7
7
|
export declare class PanTool extends BaseTool<PanToolOption> {
|
|
8
8
|
static toolName: string;
|
|
9
9
|
private _lastPoint;
|
|
10
|
+
/**
|
|
11
|
+
* Set while a finger drag has borrowed the pan tool; calling it gives the
|
|
12
|
+
* previous tool — and the selection it was holding — back.
|
|
13
|
+
*/
|
|
14
|
+
private _fingerPanRestore;
|
|
10
15
|
readonly panning$: Signal<boolean>;
|
|
11
16
|
get allowDragWithRightButton(): boolean;
|
|
12
17
|
dragEnd(_: PointerEventState): void;
|
|
13
18
|
dragMove(e: PointerEventState): void;
|
|
14
19
|
dragStart(e: PointerEventState): void;
|
|
15
20
|
mounted(): void;
|
|
21
|
+
/**
|
|
22
|
+
* Activate the pan tool for the duration of a gesture.
|
|
23
|
+
*
|
|
24
|
+
* @returns a function restoring the previous tool and the selection it was
|
|
25
|
+
* holding, or `null` when the pan tool is already the user's own choice —
|
|
26
|
+
* there is then nothing to restore.
|
|
27
|
+
*/
|
|
28
|
+
private _borrowPanTool;
|
|
29
|
+
private _releaseFingerPan;
|
|
30
|
+
/** Whether this drag is a bare finger sliding over empty canvas. */
|
|
31
|
+
private _shouldPanWithFinger;
|
|
16
32
|
}
|
|
@@ -2,10 +2,19 @@ import { EdgelessLegacySlotIdentifier } from '../../affine-block-surface/index.j
|
|
|
2
2
|
import { on } from '../../affine-shared/utils/index.js';
|
|
3
3
|
import { BaseTool, MouseButton } from '../../std/gfx/index.js';
|
|
4
4
|
import { Signal } from '@preact/signals-core';
|
|
5
|
+
/** The presentation tool, named here because it is not importable from gfx. */
|
|
6
|
+
const PRESENT_TOOL_NAME = 'frameNavigator';
|
|
7
|
+
/** The selection tool, named here because it is not importable from gfx. */
|
|
8
|
+
const DEFAULT_TOOL_NAME = 'default';
|
|
5
9
|
export class PanTool extends BaseTool {
|
|
6
10
|
constructor() {
|
|
7
11
|
super(...arguments);
|
|
8
12
|
this._lastPoint = null;
|
|
13
|
+
/**
|
|
14
|
+
* Set while a finger drag has borrowed the pan tool; calling it gives the
|
|
15
|
+
* previous tool — and the selection it was holding — back.
|
|
16
|
+
*/
|
|
17
|
+
this._fingerPanRestore = null;
|
|
9
18
|
this.panning$ = new Signal(false);
|
|
10
19
|
}
|
|
11
20
|
static { this.toolName = 'pan'; }
|
|
@@ -15,6 +24,7 @@ export class PanTool extends BaseTool {
|
|
|
15
24
|
dragEnd(_) {
|
|
16
25
|
this._lastPoint = null;
|
|
17
26
|
this.panning$.value = false;
|
|
27
|
+
this._releaseFingerPan();
|
|
18
28
|
}
|
|
19
29
|
dragMove(e) {
|
|
20
30
|
if (!this._lastPoint)
|
|
@@ -37,45 +47,105 @@ export class PanTool extends BaseTool {
|
|
|
37
47
|
if (!shouldPanWithMiddle) {
|
|
38
48
|
return;
|
|
39
49
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
return;
|
|
47
|
-
let finalOptions = originalToolOptions;
|
|
48
|
-
const PRESENT_TOOL_NAME = 'frameNavigator';
|
|
49
|
-
if (toolType.toolName === PRESENT_TOOL_NAME) {
|
|
50
|
-
// When restoring PresentTool (frameNavigator) after a temporary pan (e.g., via middle mouse button),
|
|
51
|
-
// set 'restoredAfterPan' to true. This allows PresentTool to avoid an unwanted viewport reset
|
|
52
|
-
// and maintain the panned position.
|
|
53
|
-
const currentPresentOptions = originalToolOptions;
|
|
54
|
-
finalOptions = {
|
|
55
|
-
...currentPresentOptions,
|
|
56
|
-
restoredAfterPan: true,
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
this.controller.setTool(toolType, finalOptions);
|
|
60
|
-
this.gfx.selection.set(selectionToRestore);
|
|
61
|
-
};
|
|
62
|
-
// If in presentation mode, disable black background after middle mouse drag
|
|
63
|
-
if (currentTool.toolType?.toolName === 'frameNavigator') {
|
|
64
|
-
const slots = this.std.get(EdgelessLegacySlotIdentifier);
|
|
65
|
-
slots.navigatorSettingUpdated.next({
|
|
66
|
-
blackBackground: false,
|
|
67
|
-
});
|
|
50
|
+
const restoreToPrevious = this._borrowPanTool();
|
|
51
|
+
// Already panning — the pan tool is the user's own choice, not a
|
|
52
|
+
// temporary borrow. There is nothing to switch to and nothing to
|
|
53
|
+
// restore, so stay out of the way and let the gesture through.
|
|
54
|
+
if (!restoreToPrevious) {
|
|
55
|
+
return;
|
|
68
56
|
}
|
|
69
|
-
|
|
70
|
-
panning: true,
|
|
71
|
-
});
|
|
57
|
+
evt.raw.preventDefault();
|
|
72
58
|
const dispose = on(document, 'pointerup', evt => {
|
|
73
59
|
if (evt.button === MouseButton.MIDDLE) {
|
|
74
60
|
restoreToPrevious();
|
|
75
|
-
dispose();
|
|
76
61
|
}
|
|
62
|
+
// Whatever button ended the gesture, this listener has done its job:
|
|
63
|
+
// release it, or a right-click after a middle-click would leave it
|
|
64
|
+
// hanging on `document` and restore a stale tool later on.
|
|
65
|
+
dispose();
|
|
77
66
|
});
|
|
78
67
|
return false;
|
|
79
68
|
});
|
|
69
|
+
// A finger dragging bare canvas slides the canvas, the way every touch
|
|
70
|
+
// surface behaves. Borrowing happens on `dragStart`, not on `pointerDown`:
|
|
71
|
+
// a tap must stay a tap, and the selection tool is still the one that has
|
|
72
|
+
// to answer it. The `dragStart` hook runs BEFORE the controller resolves
|
|
73
|
+
// which tool receives the event, so the pan tool below gets the whole
|
|
74
|
+
// gesture — moves and end alike.
|
|
75
|
+
this.addHook('dragStart', evt => {
|
|
76
|
+
if (!this._shouldPanWithFinger(evt))
|
|
77
|
+
return;
|
|
78
|
+
this._fingerPanRestore = this._borrowPanTool();
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Activate the pan tool for the duration of a gesture.
|
|
83
|
+
*
|
|
84
|
+
* @returns a function restoring the previous tool and the selection it was
|
|
85
|
+
* holding, or `null` when the pan tool is already the user's own choice —
|
|
86
|
+
* there is then nothing to restore.
|
|
87
|
+
*/
|
|
88
|
+
_borrowPanTool() {
|
|
89
|
+
const { toolType, options: originalToolOptions } = this.controller.currentToolOption$.peek();
|
|
90
|
+
if (toolType?.toolName === PanTool.toolName) {
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
// Snapshot the selection NOW. Activating the pan tool below goes through
|
|
94
|
+
// `ToolController.setTool`, which clears the selection, so reading it
|
|
95
|
+
// back at the end of the gesture would only ever restore an empty one.
|
|
96
|
+
const selectionToRestore = this.gfx.selection.surfaceSelections.slice();
|
|
97
|
+
const restoreToPrevious = () => {
|
|
98
|
+
if (!toolType)
|
|
99
|
+
return;
|
|
100
|
+
let finalOptions = originalToolOptions;
|
|
101
|
+
if (toolType.toolName === PRESENT_TOOL_NAME) {
|
|
102
|
+
// When restoring PresentTool (frameNavigator) after a temporary pan (e.g., via middle mouse button),
|
|
103
|
+
// set 'restoredAfterPan' to true. This allows PresentTool to avoid an unwanted viewport reset
|
|
104
|
+
// and maintain the panned position.
|
|
105
|
+
const currentPresentOptions = originalToolOptions;
|
|
106
|
+
finalOptions = {
|
|
107
|
+
...currentPresentOptions,
|
|
108
|
+
restoredAfterPan: true,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
this.controller.setTool(toolType, finalOptions);
|
|
112
|
+
// AFTER the switch, never before: `setTool` clears the selection.
|
|
113
|
+
this.gfx.selection.set(selectionToRestore);
|
|
114
|
+
};
|
|
115
|
+
// If in presentation mode, disable black background after middle mouse drag
|
|
116
|
+
if (toolType?.toolName === PRESENT_TOOL_NAME) {
|
|
117
|
+
const slots = this.std.get(EdgelessLegacySlotIdentifier);
|
|
118
|
+
slots.navigatorSettingUpdated.next({
|
|
119
|
+
blackBackground: false,
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
this.controller.setTool(PanTool, {
|
|
123
|
+
panning: true,
|
|
124
|
+
});
|
|
125
|
+
return restoreToPrevious;
|
|
126
|
+
}
|
|
127
|
+
_releaseFingerPan() {
|
|
128
|
+
const restore = this._fingerPanRestore;
|
|
129
|
+
this._fingerPanRestore = null;
|
|
130
|
+
restore?.();
|
|
131
|
+
}
|
|
132
|
+
/** Whether this drag is a bare finger sliding over empty canvas. */
|
|
133
|
+
_shouldPanWithFinger(e) {
|
|
134
|
+
// A second finger is a two-finger gesture — pan or pinch — and the
|
|
135
|
+
// edgeless root answers those itself. It never reaches here anyway: the
|
|
136
|
+
// drag controller ends the drag as soon as a non-primary pointer lands.
|
|
137
|
+
if (e.raw.pointerType !== 'touch' || !e.raw.isPrimary)
|
|
138
|
+
return false;
|
|
139
|
+
// Only the selection tool lends its gesture away. Every other tool —
|
|
140
|
+
// brush, shape, connector, the framework tools — draws on empty canvas,
|
|
141
|
+
// and a finger is precisely how it is meant to draw.
|
|
142
|
+
const { toolType } = this.controller.currentToolOption$.peek();
|
|
143
|
+
if (toolType?.toolName !== DEFAULT_TOOL_NAME)
|
|
144
|
+
return false;
|
|
145
|
+
// A finger landing on something moves that something; only bare canvas
|
|
146
|
+
// slides. This is what keeps dragging a Wardley or EDGY element by hand
|
|
147
|
+
// working.
|
|
148
|
+
const [modelX, modelY] = this.gfx.viewport.toModelCoord(e.x, e.y);
|
|
149
|
+
return !this.gfx.getElementByPoint(modelX, modelY);
|
|
80
150
|
}
|
|
81
151
|
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ShapeElementModel, TextFitMode } from '../affine-model/index.js';
|
|
2
|
+
import { GfxControllerIdentifier } from '../std/gfx/index.js';
|
|
3
|
+
import { applyTextFitMode, nextTextFitMode } from './text-fit.js';
|
|
4
|
+
/**
|
|
5
|
+
* Shape commands (edgeless scope, always-on — shapes are core canvas), so
|
|
6
|
+
* `owner: 'core'` rather than a framework. Host-rebindable through
|
|
7
|
+
* `ShortcutOverrides` exactly as before (`docs/adr/0008`).
|
|
8
|
+
*/
|
|
9
|
+
/** The selected shapes that carry text — the ones the gesture would cycle. */
|
|
10
|
+
const textShapes = (std) => std
|
|
11
|
+
.get(GfxControllerIdentifier)
|
|
12
|
+
.selection.selectedElements.filter((el) => el instanceof ShapeElementModel && !!el.text);
|
|
13
|
+
export const shapeCommands = [
|
|
14
|
+
{
|
|
15
|
+
id: 'shape.cycleTextFit',
|
|
16
|
+
owner: 'core',
|
|
17
|
+
kind: 'action',
|
|
18
|
+
labelKey: 'com.labre.keyboardShortcuts.shape.cycleTextFit',
|
|
19
|
+
labelFallback: 'Cycle text fit',
|
|
20
|
+
surfaces: ['palette', 'agent'],
|
|
21
|
+
scope: 'edgeless',
|
|
22
|
+
defaultKeys: { mac: ['Mod-Shift-f'], other: ['Mod-Shift-f'] },
|
|
23
|
+
availability: 'selection',
|
|
24
|
+
when: std => textShapes(std).length > 0,
|
|
25
|
+
run: std => {
|
|
26
|
+
const models = textShapes(std);
|
|
27
|
+
if (!models.length)
|
|
28
|
+
return;
|
|
29
|
+
const mode = models[0].textFitMode ?? TextFitMode.Grow;
|
|
30
|
+
applyTextFitMode(std, models, nextTextFitMode(mode));
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
];
|
|
@@ -1,17 +1,52 @@
|
|
|
1
1
|
import { DefaultTheme } from '../../../affine-model/index.js';
|
|
2
2
|
import { SVGShapeBuilder } from '../../../global/gfx/index.js';
|
|
3
3
|
import { manageClassNames, setStyles } from './utils.js';
|
|
4
|
+
const SVG_NS = 'http://www.w3.org/2000/svg';
|
|
5
|
+
/**
|
|
6
|
+
* The nodes a shape host already owns, kept across renders. Rebuilding the
|
|
7
|
+
* `<svg>` on every frame made each pan or zoom allocate a fresh element per
|
|
8
|
+
* shape on the board; the attributes are cheap to overwrite in place.
|
|
9
|
+
*/
|
|
10
|
+
const retainedShapeDom = new WeakMap();
|
|
11
|
+
function getRetainedShapeDom(element) {
|
|
12
|
+
const existing = retainedShapeDom.get(element);
|
|
13
|
+
if (existing) {
|
|
14
|
+
return existing;
|
|
15
|
+
}
|
|
16
|
+
const retained = {
|
|
17
|
+
svg: null,
|
|
18
|
+
polygon: null,
|
|
19
|
+
};
|
|
20
|
+
retainedShapeDom.set(element, retained);
|
|
21
|
+
return retained;
|
|
22
|
+
}
|
|
23
|
+
function getOrCreateSvg(retained, element) {
|
|
24
|
+
if (retained.svg && retained.polygon) {
|
|
25
|
+
return {
|
|
26
|
+
svg: retained.svg,
|
|
27
|
+
polygon: retained.polygon,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
const svg = document.createElementNS(SVG_NS, 'svg');
|
|
31
|
+
svg.setAttribute('width', '100%');
|
|
32
|
+
svg.setAttribute('height', '100%');
|
|
33
|
+
svg.setAttribute('preserveAspectRatio', 'none');
|
|
34
|
+
const polygon = document.createElementNS(SVG_NS, 'polygon');
|
|
35
|
+
svg.append(polygon);
|
|
36
|
+
retained.svg = svg;
|
|
37
|
+
retained.polygon = polygon;
|
|
38
|
+
element.prepend(svg);
|
|
39
|
+
return { svg, polygon };
|
|
40
|
+
}
|
|
41
|
+
function removeSvg(retained) {
|
|
42
|
+
retained.svg?.remove();
|
|
43
|
+
retained.svg = null;
|
|
44
|
+
retained.polygon = null;
|
|
45
|
+
}
|
|
4
46
|
function applyShapeSpecificStyles(model, element, zoom) {
|
|
5
47
|
// Reset properties that might be set by different shape types
|
|
6
48
|
element.style.removeProperty('clip-path');
|
|
7
49
|
element.style.removeProperty('border-radius');
|
|
8
|
-
// Clear DOM for shapes that don't use SVG, or if type changes from SVG-based to non-SVG-based
|
|
9
|
-
if (model.shapeType !== 'diamond' &&
|
|
10
|
-
model.shapeType !== 'triangle' &&
|
|
11
|
-
model.shapeType !== 'polygon') {
|
|
12
|
-
while (element.firstChild)
|
|
13
|
-
element.firstChild.remove();
|
|
14
|
-
}
|
|
15
50
|
switch (model.shapeType) {
|
|
16
51
|
case 'rect': {
|
|
17
52
|
const w = model.w * zoom;
|
|
@@ -91,6 +126,7 @@ export const shapeDomRenderer = (model, element, renderer) => {
|
|
|
91
126
|
const { zoom } = renderer.viewport;
|
|
92
127
|
const unscaledWidth = model.w;
|
|
93
128
|
const unscaledHeight = model.h;
|
|
129
|
+
const retained = getRetainedShapeDom(element);
|
|
94
130
|
const fillColor = renderer.getColorValue(model.fillColor, DefaultTheme.shapeFillColor, true);
|
|
95
131
|
const strokeColor = renderer.getColorValue(model.strokeColor, DefaultTheme.shapeStrokeColor, true);
|
|
96
132
|
element.style.width = `${unscaledWidth * zoom}px`;
|
|
@@ -104,6 +140,7 @@ export const shapeDomRenderer = (model, element, renderer) => {
|
|
|
104
140
|
// For diamond and triangle, fill and border are handled by inline SVG
|
|
105
141
|
element.style.border = 'none'; // Ensure no standard CSS border interferes
|
|
106
142
|
element.style.backgroundColor = 'transparent'; // Host element is transparent
|
|
143
|
+
const { polygon, svg } = getOrCreateSvg(retained, element);
|
|
107
144
|
const strokeW = model.strokeWidth;
|
|
108
145
|
let svgPoints = '';
|
|
109
146
|
if (model.shapeType === 'diamond') {
|
|
@@ -140,14 +177,7 @@ export const shapeDomRenderer = (model, element, renderer) => {
|
|
|
140
177
|
: 'none';
|
|
141
178
|
// Determine fill color
|
|
142
179
|
const finalFillColor = model.filled ? fillColor : 'transparent';
|
|
143
|
-
// Build SVG safely with DOM-API
|
|
144
|
-
const SVG_NS = 'http://www.w3.org/2000/svg';
|
|
145
|
-
const svg = document.createElementNS(SVG_NS, 'svg');
|
|
146
|
-
svg.setAttribute('width', '100%');
|
|
147
|
-
svg.setAttribute('height', '100%');
|
|
148
180
|
svg.setAttribute('viewBox', `0 0 ${unscaledWidth} ${unscaledHeight}`);
|
|
149
|
-
svg.setAttribute('preserveAspectRatio', 'none');
|
|
150
|
-
const polygon = document.createElementNS(SVG_NS, 'polygon');
|
|
151
181
|
polygon.setAttribute('points', svgPoints);
|
|
152
182
|
polygon.setAttribute('fill', finalFillColor);
|
|
153
183
|
polygon.setAttribute('stroke', finalStrokeColor);
|
|
@@ -155,18 +185,17 @@ export const shapeDomRenderer = (model, element, renderer) => {
|
|
|
155
185
|
if (finalStrokeDasharray !== 'none') {
|
|
156
186
|
polygon.setAttribute('stroke-dasharray', finalStrokeDasharray);
|
|
157
187
|
}
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
188
|
+
else {
|
|
189
|
+
polygon.removeAttribute('stroke-dasharray');
|
|
190
|
+
}
|
|
161
191
|
}
|
|
162
192
|
else {
|
|
163
193
|
// Standard rendering for other shapes (e.g., rect, ellipse)
|
|
164
|
-
|
|
194
|
+
removeSvg(retained);
|
|
165
195
|
element.style.backgroundColor = model.filled ? fillColor : 'transparent';
|
|
166
196
|
applyBorderStyles(model, element, strokeColor, zoom); // Uses standard CSS border
|
|
167
197
|
}
|
|
168
198
|
applyTransformStyles(model, element);
|
|
169
|
-
element.style.zIndex = renderer.layerManager.getZIndex(model).toString();
|
|
170
199
|
manageClassNames(model, element);
|
|
171
200
|
applyShadowStyles(model, element, renderer);
|
|
172
201
|
};
|
|
@@ -6,7 +6,7 @@ export * from './element-view.js';
|
|
|
6
6
|
export * from './overlay/index.js';
|
|
7
7
|
export * from './polygon-tool.js';
|
|
8
8
|
export * from './shape-tool.js';
|
|
9
|
-
export * from './
|
|
9
|
+
export * from './commands.js';
|
|
10
10
|
export * from './text/index.js';
|
|
11
11
|
export * from './text-fit.js';
|
|
12
12
|
export * from './toolbar/index.js';
|
|
@@ -6,7 +6,7 @@ export * from './element-view.js';
|
|
|
6
6
|
export * from './overlay/index.js';
|
|
7
7
|
export * from './polygon-tool.js';
|
|
8
8
|
export * from './shape-tool.js';
|
|
9
|
-
export * from './
|
|
9
|
+
export * from './commands.js';
|
|
10
10
|
export * from './text/index.js';
|
|
11
11
|
export * from './text-fit.js';
|
|
12
12
|
export * from './toolbar/index.js';
|
|
@@ -5,6 +5,7 @@ import { nothing } from 'lit';
|
|
|
5
5
|
export declare function mountShapeTextEditor(shapeElement: ShapeElementModel, edgeless: BlockComponent): void;
|
|
6
6
|
declare const EdgelessShapeTextEditor_base: typeof ShadowlessElement & import("../../global/utils/types.js").Constructor<import("../../global/lit/with-disposable.js").DisposableClass>;
|
|
7
7
|
export declare class EdgelessShapeTextEditor extends EdgelessShapeTextEditor_base {
|
|
8
|
+
private _compositionUpdateRaf;
|
|
8
9
|
private _keeping;
|
|
9
10
|
private _lastXYWH;
|
|
10
11
|
private _resizeObserver;
|
|
@@ -17,6 +18,31 @@ export declare class EdgelessShapeTextEditor extends EdgelessShapeTextEditor_bas
|
|
|
17
18
|
private _initMindmapKeyBindings;
|
|
18
19
|
private _stashMindMapTree;
|
|
19
20
|
private _unmount;
|
|
21
|
+
private _cancelScheduledElementWHUpdate;
|
|
22
|
+
/**
|
|
23
|
+
* While an IME composition is in progress the text is only in the DOM, not
|
|
24
|
+
* yet in the model, so `renderComplete` never fires and the shape keeps the
|
|
25
|
+
* size it had before the user started composing — the preedit string spills
|
|
26
|
+
* out of it. Remeasure once per frame instead, and once more when the
|
|
27
|
+
* composition ends.
|
|
28
|
+
*/
|
|
29
|
+
private _scheduleElementWHUpdate;
|
|
30
|
+
private _getInlineEditorContentRect;
|
|
31
|
+
/**
|
|
32
|
+
* The size the shape should take, measured on the editor DOM.
|
|
33
|
+
*
|
|
34
|
+
* Without a numeric `maxWidth` the editor box *is* the text box, so its own
|
|
35
|
+
* offset size is the whole measure. Every framework shape (Wardley, EDGY,
|
|
36
|
+
* DDD, Cynefin) is in that case, and takes exactly the path it took before
|
|
37
|
+
* mind map nodes gained a maximum width.
|
|
38
|
+
*
|
|
39
|
+
* With a numeric `maxWidth` the box is capped by CSS and wraps, so
|
|
40
|
+
* `offsetWidth` alone no longer describes the text: a preedit string the
|
|
41
|
+
* browser has not reflowed yet extends past the box it is painted in. Take
|
|
42
|
+
* the widest measure available, then clamp it back to `maxWidth` so the
|
|
43
|
+
* shape never grows past the cap.
|
|
44
|
+
*/
|
|
45
|
+
private _measureEditorSize;
|
|
20
46
|
private _updateElementWH;
|
|
21
47
|
connectedCallback(): void;
|
|
22
48
|
firstUpdated(): void;
|