@formicoidea/labre-core 0.31.0 → 0.33.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-attachment/attachment-block.js +1 -1
- package/dist/_pkgs/affine-block-callout/callout-block.d.ts +6 -0
- package/dist/_pkgs/affine-block-callout/callout-block.js +26 -4
- 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-inline.js +1 -1
- 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 +54 -5
- package/dist/_pkgs/affine-block-code/code-toolbar/index.js +1 -1
- 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/data-source.js +1 -2
- package/dist/_pkgs/affine-block-database/database-block.js +13 -0
- package/dist/_pkgs/affine-block-database/external-data-source.js +1 -1
- 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 +11 -1
- 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/embed-figma-block/embed-figma-service.js +1 -1
- package/dist/_pkgs/affine-block-embed/embed-iframe-block/configs/toolbar.js +2 -2
- 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/configs/toolbar.js +1 -1
- 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-linked-doc-block/utils.js +1 -1
- package/dist/_pkgs/affine-block-embed-doc/embed-synced-doc-block/configs/toolbar.js +1 -1
- 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 +23 -4
- package/dist/_pkgs/affine-block-frame/frame-manager.d.ts +13 -0
- package/dist/_pkgs/affine-block-frame/frame-manager.js +34 -2
- package/dist/_pkgs/affine-block-frame/frame-tool.js +1 -1
- package/dist/_pkgs/affine-block-image/components/page-image-block.js +1 -1
- package/dist/_pkgs/affine-block-image/image-edgeless-block.js +1 -1
- package/dist/_pkgs/affine-block-latex/styles.js +6 -1
- package/dist/_pkgs/affine-block-list/utils/forward-delete.js +1 -1
- package/dist/_pkgs/affine-block-note/commands/select-block.js +1 -1
- package/dist/_pkgs/affine-block-note/commands/select-blocks-between.js +1 -1
- package/dist/_pkgs/affine-block-note/move-block.js +1 -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-paragraph/utils/forward-delete.js +2 -2
- package/dist/_pkgs/affine-block-paragraph/utils/merge-with-prev.js +1 -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 +10 -3
- 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 +27 -2
- 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/clipboard-utils.js +1 -1
- 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/adapters/markdown/element-adapter/type.js +1 -1
- package/dist/_pkgs/affine-block-surface/adapters/plain-text/element-adapter/type.js +1 -1
- 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 +21 -3
- package/dist/_pkgs/affine-block-surface/element-model/index.js +14 -2
- package/dist/_pkgs/affine-block-surface/extensions/audit.d.ts +107 -0
- package/dist/_pkgs/affine-block-surface/extensions/audit.js +489 -0
- package/dist/_pkgs/affine-block-surface/extensions/crud-extension.d.ts +14 -0
- package/dist/_pkgs/affine-block-surface/extensions/crud-extension.js +37 -5
- 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 +327 -0
- package/dist/_pkgs/affine-block-surface/extensions/element-renderer.js +1 -1
- package/dist/_pkgs/affine-block-surface/extensions/export-manager/export-manager.js +1 -1
- package/dist/_pkgs/affine-block-surface/extensions/index.d.ts +17 -0
- package/dist/_pkgs/affine-block-surface/extensions/index.js +17 -0
- package/dist/_pkgs/affine-block-surface/extensions/interchange-import.d.ts +172 -0
- package/dist/_pkgs/affine-block-surface/extensions/interchange-import.js +393 -0
- package/dist/_pkgs/affine-block-surface/extensions/interchange.d.ts +306 -0
- package/dist/_pkgs/affine-block-surface/extensions/interchange.js +64 -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/morph-toolbar.d.ts +248 -0
- package/dist/_pkgs/affine-block-surface/extensions/morph-toolbar.js +248 -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 +588 -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/svg-sketch.d.ts +107 -0
- package/dist/_pkgs/affine-block-surface/extensions/svg-sketch.js +958 -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 +2129 -0
- package/dist/_pkgs/affine-block-surface/extensions/validation.js +4620 -0
- package/dist/_pkgs/affine-block-surface/extensions/violation-detail-widget.d.ts +330 -0
- package/dist/_pkgs/affine-block-surface/extensions/violation-detail-widget.js +1004 -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 +610 -0
- package/dist/_pkgs/affine-block-surface/framework-background/def.js +206 -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 +99 -0
- package/dist/_pkgs/affine-block-surface/framework-background/labels.js +193 -0
- package/dist/_pkgs/affine-block-surface/framework-background/renderer.d.ts +8 -0
- package/dist/_pkgs/affine-block-surface/framework-background/renderer.js +399 -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/renderer/overlay.js +1 -1
- 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-surface-ref/portal/note.js +2 -2
- package/dist/_pkgs/affine-block-table/commands.js +1 -1
- 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/edgeless-shape-color-picker/color-picker.js +1 -1
- package/dist/_pkgs/affine-components/embed-card-modal/embed-card-edit-modal.js +1 -1
- package/dist/_pkgs/affine-components/filterable-list/styles.js +1 -1
- 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/peek/peekable.js +1 -1
- package/dist/_pkgs/affine-components/portal/portal.d.ts +1 -1
- package/dist/_pkgs/affine-components/toolbar/index.d.ts +1 -0
- package/dist/_pkgs/affine-components/toolbar/index.js +1 -0
- package/dist/_pkgs/affine-components/toolbar/menu-button.js +2 -1
- package/dist/_pkgs/affine-components/toolbar/picker-menu.d.ts +55 -0
- package/dist/_pkgs/affine-components/toolbar/picker-menu.js +47 -0
- package/dist/_pkgs/affine-components/toolbar/toolbar.js +11 -10
- package/dist/_pkgs/affine-foundation/view.js +11 -2
- package/dist/_pkgs/affine-fragment-frame-panel/body/frame-panel-body.js +2 -2
- package/dist/_pkgs/affine-fragment-frame-panel/header/frame-panel-header.js +2 -2
- package/dist/_pkgs/affine-fragment-frame-panel/header/frames-setting-menu.js +1 -1
- package/dist/_pkgs/affine-fragment-outline/mobile-outline-panel.js +1 -1
- 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/toolbar/components/pen/pen-tool-button.js +1 -1
- 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 +39 -16
- package/dist/_pkgs/affine-gfx-connector/connector-tool.d.ts +26 -1
- package/dist/_pkgs/affine-gfx-connector/connector-tool.js +12 -3
- package/dist/_pkgs/affine-gfx-connector/connector-watcher.js +1 -4
- package/dist/_pkgs/affine-gfx-connector/direction/direction-reveal.d.ts +123 -0
- package/dist/_pkgs/affine-gfx-connector/direction/direction-reveal.js +282 -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 +185 -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/element-renderer/index.js +1 -1
- package/dist/_pkgs/affine-gfx-connector/element-renderer/utils.js +1 -1
- 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 +68 -2
- 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-mindmap/adapter/markdown/index.js +1 -1
- package/dist/_pkgs/affine-gfx-mindmap/adapter/utils.js +1 -1
- package/dist/_pkgs/affine-gfx-mindmap/templates/index.js +583 -4
- package/dist/_pkgs/affine-gfx-mindmap/toolbar/mindmap-menu.js +23 -23
- package/dist/_pkgs/affine-gfx-mindmap/toolbar/mindmap-tool-button.js +5 -1
- package/dist/_pkgs/affine-gfx-mindmap/view/utils.js +1 -1
- package/dist/_pkgs/affine-gfx-note/overlay/overlay.js +1 -1
- package/dist/_pkgs/affine-gfx-note/toolbar/note-senior-button.js +1 -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/consts.js +1 -1
- package/dist/_pkgs/affine-gfx-shape/draggable/shape-draggable.js +1 -1
- package/dist/_pkgs/affine-gfx-shape/element-renderer/shape/polygon.js +17 -9
- package/dist/_pkgs/affine-gfx-shape/element-renderer/shape/utils.js +8 -3
- package/dist/_pkgs/affine-gfx-shape/element-renderer/shape-dom/index.js +48 -19
- package/dist/_pkgs/affine-gfx-shape/element-view.js +19 -12
- 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/overlay/polygon-drawing-overlay.js +1 -1
- package/dist/_pkgs/affine-gfx-shape/overlay/polygon-vertex-editing-overlay.js +12 -7
- package/dist/_pkgs/affine-gfx-shape/overlay/shape-overlay.js +1 -1
- package/dist/_pkgs/affine-gfx-shape/polygon-tool.js +4 -2
- package/dist/_pkgs/affine-gfx-shape/shape-tool.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 -15
- package/dist/_pkgs/affine-gfx-shape/view.js +3 -3
- package/dist/_pkgs/affine-gfx-template/builtin/other.js +66 -17
- package/dist/_pkgs/affine-gfx-template/toolbar/overlay-scrollbar.js +1 -1
- package/dist/_pkgs/affine-gfx-template/toolbar/template-panel.js +1 -1
- 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-gfx-text/toolbar/actions.js +1 -1
- 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/command.js +1 -1
- 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-inline-preset/command/format-block.js +1 -1
- package/dist/_pkgs/affine-inline-preset/command/format-native.js +2 -2
- package/dist/_pkgs/affine-inline-preset/command/format-text.js +1 -1
- package/dist/_pkgs/affine-inline-preset/inline-spec.js +1 -1
- package/dist/_pkgs/affine-inline-reference/reference-node/reference-node.js +1 -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/bpmn/node.d.ts +40 -7
- package/dist/_pkgs/affine-model/elements/bpmn/node.js +4 -2
- package/dist/_pkgs/affine-model/elements/bpmn/pool.d.ts +74 -17
- package/dist/_pkgs/affine-model/elements/bpmn/pool.js +55 -26
- package/dist/_pkgs/affine-model/elements/c4/board.d.ts +88 -0
- package/dist/_pkgs/affine-model/elements/c4/board.js +128 -0
- package/dist/_pkgs/affine-model/elements/c4/boundary.d.ts +63 -0
- package/dist/_pkgs/affine-model/elements/c4/boundary.js +134 -0
- package/dist/_pkgs/affine-model/elements/c4/index.d.ts +3 -0
- package/dist/_pkgs/affine-model/elements/c4/index.js +3 -0
- package/dist/_pkgs/affine-model/elements/c4/node.d.ts +97 -0
- package/dist/_pkgs/affine-model/elements/c4/node.js +130 -0
- package/dist/_pkgs/affine-model/elements/connector/connector.js +25 -1
- package/dist/_pkgs/affine-model/elements/context-map/context-map.d.ts +27 -0
- package/dist/_pkgs/affine-model/elements/context-map/context-map.js +94 -0
- package/dist/_pkgs/affine-model/elements/context-map/index.d.ts +1 -0
- package/dist/_pkgs/affine-model/elements/context-map/index.js +1 -0
- package/dist/_pkgs/affine-model/elements/core-domain/core-domain.d.ts +34 -17
- package/dist/_pkgs/affine-model/elements/core-domain/core-domain.js +28 -26
- 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/event-storming/event-storming.d.ts +36 -0
- package/dist/_pkgs/affine-model/elements/event-storming/event-storming.js +103 -0
- package/dist/_pkgs/affine-model/elements/event-storming/index.d.ts +1 -0
- package/dist/_pkgs/affine-model/elements/event-storming/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 +14 -1
- package/dist/_pkgs/affine-model/elements/index.js +4 -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/shape/api/polygon.js +2 -8
- 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/html/block-adapter.js +1 -1
- package/dist/_pkgs/affine-shared/adapters/markdown/block-adapter.js +1 -1
- package/dist/_pkgs/affine-shared/adapters/markdown/delta-converter.d.ts +6 -1
- package/dist/_pkgs/affine-shared/adapters/markdown/delta-converter.js +161 -3
- package/dist/_pkgs/affine-shared/adapters/markdown/markdown.js +5 -1
- package/dist/_pkgs/affine-shared/adapters/notion-html/block-adapter.js +1 -1
- package/dist/_pkgs/affine-shared/adapters/notion-html/delta-converter.js +1 -1
- package/dist/_pkgs/affine-shared/adapters/plain-text/block-adapter.js +1 -1
- package/dist/_pkgs/affine-shared/adapters/plain-text/delta-converter.js +1 -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 +283 -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/commands/model-crud/draft-selected-models.js +1 -1
- package/dist/_pkgs/affine-shared/commands/selection/focus-block-end.js +1 -1
- package/dist/_pkgs/affine-shared/commands/selection/focus-block-start.js +1 -1
- package/dist/_pkgs/affine-shared/consts/index.d.ts +10 -0
- package/dist/_pkgs/affine-shared/consts/index.js +10 -0
- package/dist/_pkgs/affine-shared/services/artefact-catalogue-service.d.ts +55 -0
- package/dist/_pkgs/affine-shared/services/artefact-catalogue-service.js +35 -0
- package/dist/_pkgs/affine-shared/services/audit-service.d.ts +311 -0
- package/dist/_pkgs/affine-shared/services/audit-service.js +228 -0
- package/dist/_pkgs/affine-shared/services/command-usage-service.d.ts +31 -0
- package/dist/_pkgs/affine-shared/services/command-usage-service.js +109 -0
- package/dist/_pkgs/affine-shared/services/comment-service/block-comment-manager.js +1 -1
- package/dist/_pkgs/affine-shared/services/doc-display-meta-service.js +1 -1
- 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/embed-iframe/embed-iframe-config.js +1 -1
- 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 +7 -0
- package/dist/_pkgs/affine-shared/services/index.js +7 -0
- package/dist/_pkgs/affine-shared/services/pivot-materiality-publisher.d.ts +129 -0
- package/dist/_pkgs/affine-shared/services/pivot-materiality-publisher.js +312 -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 +255 -1
- 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/toolbar-service/registry.d.ts +44 -0
- package/dist/_pkgs/affine-shared/services/toolbar-service/registry.js +161 -3
- 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 +256 -0
- package/dist/_pkgs/affine-shared/test-utils/affine-template.js +1 -1
- 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/edgeless.js +1 -1
- package/dist/_pkgs/affine-shared/utils/file/filesys.d.ts +34 -0
- package/dist/_pkgs/affine-shared/utils/file/filesys.js +48 -7
- 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 +25 -1
- package/dist/_pkgs/affine-widget-drag-handle/utils.js +1 -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-auto-connect/index.js +1 -1
- package/dist/_pkgs/affine-widget-edgeless-dragging-area/edgeless-dragging-area-rect.js +1 -1
- 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/catalogue/artefact-catalogue-default.d.ts +14 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/artefact-catalogue-default.js +40 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/artefact-catalogue-widget.d.ts +158 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/artefact-catalogue-widget.js +572 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/catalogue-groups.d.ts +46 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/catalogue-groups.js +66 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/chord-format.d.ts +13 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/chord-format.js +50 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/edgeless-toolbar.d.ts +6 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/edgeless-toolbar.js +15 -5
- package/dist/_pkgs/affine-widget-edgeless-toolbar/effects.d.ts +2 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/effects.js +2 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/extension/index.d.ts +7 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/index.d.ts +5 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/index.js +5 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/menu/command-menu.d.ts +57 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/menu/command-menu.js +140 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/view.js +9 -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-keyboard-toolbar/keyboard-tool-panel.js +1 -1
- package/dist/_pkgs/affine-widget-linked-doc/import-doc/import-doc.js +1 -1
- 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-page-dragging-area/index.js +1 -1
- package/dist/_pkgs/affine-widget-remote-selection/doc/doc-remote-selection.js +1 -1
- 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 +40 -8
- package/dist/_pkgs/affine-widget-toolbar/utils.d.ts +146 -3
- package/dist/_pkgs/affine-widget-toolbar/utils.js +744 -58
- 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 +64 -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 +849 -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 +89 -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 +86 -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 +10 -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 +475 -0
- package/dist/_pkgs/std/extension/command-registry.js +431 -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/shortcut.js +2 -1
- 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/grid.js +1 -1
- 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 +442 -0
- package/dist/_pkgs/std/gfx/model/surface/element-model.js +510 -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 +117 -0
- package/dist/_pkgs/std/gfx/model/surface/surface-model.d.ts +70 -0
- package/dist/_pkgs/std/gfx/model/surface/surface-model.js +305 -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/selection.js +1 -1
- 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 +20 -2
- package/dist/_pkgs/std/inline/extensions/inline-manager.js +1 -1
- package/dist/_pkgs/std/inline/extensions/markdown-matcher.js +1 -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 +10 -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/command-usage.d.ts +23 -0
- package/dist/extensions/command-usage.js +37 -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 +35 -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 +186 -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 +200 -0
- package/package.json +16 -4
- package/dist/_pkgs/affine-block-root/keyboard/shortcuts.d.ts +0 -8
- package/dist/_pkgs/affine-block-root/keyboard/shortcuts.js +0 -48
- package/dist/_pkgs/affine-gfx-shape/shortcuts.d.ts +0 -6
- package/dist/_pkgs/affine-gfx-shape/shortcuts.js +0 -28
- package/dist/_pkgs/data-view/core/utils/cache.d.ts +0 -5
- package/dist/_pkgs/data-view/core/utils/cache.js +0 -28
|
@@ -0,0 +1,572 @@
|
|
|
1
|
+
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
2
|
+
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
3
|
+
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
4
|
+
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
5
|
+
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
6
|
+
var _, done = false;
|
|
7
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
8
|
+
var context = {};
|
|
9
|
+
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
10
|
+
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
11
|
+
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
12
|
+
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
13
|
+
if (kind === "accessor") {
|
|
14
|
+
if (result === void 0) continue;
|
|
15
|
+
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
16
|
+
if (_ = accept(result.get)) descriptor.get = _;
|
|
17
|
+
if (_ = accept(result.set)) descriptor.set = _;
|
|
18
|
+
if (_ = accept(result.init)) initializers.unshift(_);
|
|
19
|
+
}
|
|
20
|
+
else if (_ = accept(result)) {
|
|
21
|
+
if (kind === "field") initializers.unshift(_);
|
|
22
|
+
else descriptor[key] = _;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
26
|
+
done = true;
|
|
27
|
+
};
|
|
28
|
+
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
29
|
+
var useValue = arguments.length > 2;
|
|
30
|
+
for (var i = 0; i < initializers.length; i++) {
|
|
31
|
+
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
32
|
+
}
|
|
33
|
+
return useValue ? value : void 0;
|
|
34
|
+
};
|
|
35
|
+
import { EDITOR_ANCHORED_PANEL_Z_INDEX } from '../../affine-block-surface/index.js';
|
|
36
|
+
import { TOUCH_TARGET_MIN_PX } from '../../affine-shared/consts/index.js';
|
|
37
|
+
import { translateKey } from '../../affine-shared/services/index.js';
|
|
38
|
+
import { IS_MAC } from '../../global/env/index.js';
|
|
39
|
+
import { getCommandIcon, CommandUsageIdentifier, getCommandsForSurface, isCommandAvailable, normalizeLegacyCombo, rankCommandsByUsage, runCommand, ShortcutOverrideIdentifier, WidgetComponent, WidgetViewExtension, } from '../../std/index.js';
|
|
40
|
+
import { css, html, nothing, unsafeCSS } from 'lit';
|
|
41
|
+
import { state } from 'lit/decorators.js';
|
|
42
|
+
import { literal, unsafeStatic } from 'lit/static-html.js';
|
|
43
|
+
import { CATALOGUE_CATEGORY_KEY_PREFIX, groupCommandsByCategory, humanizeCategory, } from './catalogue-groups.js';
|
|
44
|
+
import { formatChord } from './chord-format.js';
|
|
45
|
+
export const EDGELESS_ARTEFACT_CATALOGUE_WIDGET = 'edgeless-artefact-catalogue-widget';
|
|
46
|
+
/** Wide enough for an icon, a label and a chord; never more than most of a phone. */
|
|
47
|
+
const PANEL_WIDTH = 'min(320px, 85vw)';
|
|
48
|
+
/**
|
|
49
|
+
* The **artefact catalogue** sidepanel (PF6).
|
|
50
|
+
*
|
|
51
|
+
* A framework's senior sub-menu is a row of icons, and a row of icons stops
|
|
52
|
+
* working somewhere around fourteen. The BPMN pack is the first framework to
|
|
53
|
+
* pass that line, so the sub-menu shows the thirteen the ranking put first and
|
|
54
|
+
* hands the rest to this panel: everything the owner declares on the
|
|
55
|
+
* `'catalogue'` surface, grouped by the categories the framework itself
|
|
56
|
+
* declared, with the label and the chord spelled out instead of guessed from a
|
|
57
|
+
* glyph.
|
|
58
|
+
*
|
|
59
|
+
* ## Left, full height, inside the editor
|
|
60
|
+
*
|
|
61
|
+
* Not a popover, not a modal. It is a column down the left edge of the editor
|
|
62
|
+
* host — the side no toolbar occupies — the canvas stays live to its right, and
|
|
63
|
+
* a click on the canvas puts it away. Twenty artefacts want a list you scroll,
|
|
64
|
+
* and a list you scroll wants height; a floating box would have had to choose
|
|
65
|
+
* between covering the board and showing four rows at a time.
|
|
66
|
+
*
|
|
67
|
+
* ## Not an `EditorAnchoredPanel`
|
|
68
|
+
*
|
|
69
|
+
* The shared base (ADR 0011) exists for panels pinned ABOVE the senior button
|
|
70
|
+
* bar and measured against it: its host is bottom-left and zero-sized, and
|
|
71
|
+
* `anchorBox()` returns a `bottom` and a width read off the bar. None of that
|
|
72
|
+
* is expressible for a full-height column, so the geometry is this file's own —
|
|
73
|
+
* but the WISDOM is not reinvented. The layer constant is imported from there
|
|
74
|
+
* rather than copied, and the host is zero-WIDTH for the same reason its host is
|
|
75
|
+
* zero-sized (`.widgets-container > * { pointer-events: auto }` is an outer-tree
|
|
76
|
+
* rule that beats `:host { pointer-events: none }`, so a host with a real box
|
|
77
|
+
* would swallow canvas clicks down the whole left side of the board). The
|
|
78
|
+
* click-away, the Escape-on-`std.host` scope and the disconnect cleanup are the
|
|
79
|
+
* same contracts, replicated in about thirty lines.
|
|
80
|
+
*
|
|
81
|
+
* ## What closing does, and does not
|
|
82
|
+
*
|
|
83
|
+
* X, Escape and click-away all close, on the FIRST gesture, and none of them
|
|
84
|
+
* touches the active senior tool: the panel is a way of reaching a command, not
|
|
85
|
+
* a mode. Invoking a row closes it too — the PO's default is one tap and back
|
|
86
|
+
* to the canvas.
|
|
87
|
+
*
|
|
88
|
+
* ## Who opens it
|
|
89
|
+
*
|
|
90
|
+
* `ArtefactCatalogueProvider`. This widget registers itself as the DEFAULT
|
|
91
|
+
* implementation ({@link artefactCatalogueDefaultExtension}); a host with its
|
|
92
|
+
* own sidebar registers `ArtefactCatalogueExtension(service)`, whose
|
|
93
|
+
* `di.override` wins, and this panel is then never asked to open.
|
|
94
|
+
*/
|
|
95
|
+
let EdgelessArtefactCatalogueWidget = (() => {
|
|
96
|
+
let _classSuper = WidgetComponent;
|
|
97
|
+
let __owner_decorators;
|
|
98
|
+
let __owner_initializers = [];
|
|
99
|
+
let __owner_extraInitializers = [];
|
|
100
|
+
return class EdgelessArtefactCatalogueWidget extends _classSuper {
|
|
101
|
+
constructor() {
|
|
102
|
+
super(...arguments);
|
|
103
|
+
this.#_owner_accessor_storage = __runInitializers(this, __owner_initializers, null);
|
|
104
|
+
/** The owner the body was last scrolled to the top for. */
|
|
105
|
+
this._scrolledFor = (__runInitializers(this, __owner_extraInitializers), null);
|
|
106
|
+
/**
|
|
107
|
+
* Put the panel away. Deliberately writes NOTHING but its own state: the
|
|
108
|
+
* senior tool the user armed before opening the catalogue is still armed
|
|
109
|
+
* after, whichever gesture closed it.
|
|
110
|
+
*/
|
|
111
|
+
this.closePanel = () => {
|
|
112
|
+
this._owner = null;
|
|
113
|
+
};
|
|
114
|
+
/** Keep a gesture inside the panel from reaching the canvas behind it. */
|
|
115
|
+
this._swallow = (event) => {
|
|
116
|
+
event.stopPropagation();
|
|
117
|
+
};
|
|
118
|
+
this._onDocumentPointerDown = (event) => {
|
|
119
|
+
if (!this.catalogueOpen)
|
|
120
|
+
return;
|
|
121
|
+
// Anything inside this widget keeps it open. The sub-menu entry that opened
|
|
122
|
+
// it is in another tree, and its own click already landed.
|
|
123
|
+
if (event.composedPath().includes(this))
|
|
124
|
+
return;
|
|
125
|
+
this.closePanel();
|
|
126
|
+
};
|
|
127
|
+
/**
|
|
128
|
+
* Escape is listened for on the EDITOR HOST, not on `document`: a host
|
|
129
|
+
* application keeps its own global Escape, and with the catalogue open the
|
|
130
|
+
* key dismisses the catalogue rather than clearing the canvas selection
|
|
131
|
+
* behind it. Same scope and same reasoning as `EditorAnchoredPanel`.
|
|
132
|
+
*/
|
|
133
|
+
this._onHostKeydown = (event) => {
|
|
134
|
+
if (!this.catalogueOpen || event.key !== 'Escape')
|
|
135
|
+
return;
|
|
136
|
+
event.stopPropagation();
|
|
137
|
+
this.closePanel();
|
|
138
|
+
};
|
|
139
|
+
/**
|
|
140
|
+
* A wheel OVER THE PANEL scrolls the panel, never the board.
|
|
141
|
+
*
|
|
142
|
+
* Same bug and same fix as the violation bubble (PR #103, PO 02/08):
|
|
143
|
+
* `EdgelessRootBlock` takes `wheel` off the event dispatcher on the editor
|
|
144
|
+
* host and `preventDefault()`s unconditionally before panning — so a wheel
|
|
145
|
+
* over the catalogue's overflowing list panned the canvas instead of
|
|
146
|
+
* scrolling the twenty artefacts under the pointer (PO recette, 27/08/2026).
|
|
147
|
+
* One CAPTURE-phase listener on the host stops the event before the
|
|
148
|
+
* dispatcher sees it; no `preventDefault`, because the default action IS the
|
|
149
|
+
* panel scrolling.
|
|
150
|
+
*
|
|
151
|
+
* Narrower than the bubble's freeze, deliberately: the bubble owns the wheel
|
|
152
|
+
* everywhere while open (a reading gesture); the catalogue only claims the
|
|
153
|
+
* wheel over its own box — `composedPath` gate — and the canvas to its right
|
|
154
|
+
* keeps panning, because furnishing a diagram means looking around it.
|
|
155
|
+
*/
|
|
156
|
+
this._onHostWheel = (event) => {
|
|
157
|
+
if (!this.catalogueOpen)
|
|
158
|
+
return;
|
|
159
|
+
if (!event.composedPath().includes(this))
|
|
160
|
+
return;
|
|
161
|
+
event.stopPropagation();
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
static {
|
|
165
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
166
|
+
__owner_decorators = [state()];
|
|
167
|
+
__esDecorate(this, null, __owner_decorators, { kind: "accessor", name: "_owner", static: false, private: false, access: { has: obj => "_owner" in obj, get: obj => obj._owner, set: (obj, value) => { obj._owner = value; } }, metadata: _metadata }, __owner_initializers, __owner_extraInitializers);
|
|
168
|
+
if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
169
|
+
}
|
|
170
|
+
static { this.styles = css `
|
|
171
|
+
/*
|
|
172
|
+
A zero-WIDTH host spanning the editor's full height. See the class
|
|
173
|
+
docstring: a host with a real box would take every pointer event down the
|
|
174
|
+
left edge of the canvas, open or not. The panel below carries the box.
|
|
175
|
+
*/
|
|
176
|
+
:host {
|
|
177
|
+
position: absolute;
|
|
178
|
+
left: 0;
|
|
179
|
+
top: 0;
|
|
180
|
+
bottom: 0;
|
|
181
|
+
width: 0;
|
|
182
|
+
z-index: ${unsafeCSS(EDITOR_ANCHORED_PANEL_Z_INDEX)};
|
|
183
|
+
pointer-events: none;
|
|
184
|
+
font-family: var(--affine-font-family);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
.artefact-catalogue-panel {
|
|
188
|
+
position: absolute;
|
|
189
|
+
left: 0;
|
|
190
|
+
top: 0;
|
|
191
|
+
bottom: 0;
|
|
192
|
+
width: ${unsafeCSS(PANEL_WIDTH)};
|
|
193
|
+
box-sizing: border-box;
|
|
194
|
+
display: flex;
|
|
195
|
+
flex-direction: column;
|
|
196
|
+
background: var(--affine-background-overlay-panel-color, #fff);
|
|
197
|
+
border-right: 1px solid var(--affine-border-color);
|
|
198
|
+
box-shadow: var(--affine-shadow-2);
|
|
199
|
+
color: var(--affine-text-primary-color);
|
|
200
|
+
font-size: 14px;
|
|
201
|
+
line-height: 1.4;
|
|
202
|
+
pointer-events: auto;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
.artefact-catalogue-panel:focus-visible {
|
|
206
|
+
outline: 2px solid var(--affine-primary-color);
|
|
207
|
+
outline-offset: -2px;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
.artefact-catalogue-head {
|
|
211
|
+
display: flex;
|
|
212
|
+
align-items: center;
|
|
213
|
+
justify-content: space-between;
|
|
214
|
+
gap: 8px;
|
|
215
|
+
padding: 8px 8px 8px 16px;
|
|
216
|
+
border-bottom: 1px solid var(--affine-border-color);
|
|
217
|
+
font-weight: 600;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
.artefact-catalogue-title {
|
|
221
|
+
overflow: hidden;
|
|
222
|
+
text-overflow: ellipsis;
|
|
223
|
+
white-space: nowrap;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
/*
|
|
227
|
+
A close button a finger can hit. Square at the touch minimum rather than
|
|
228
|
+
the 6px-padded × the anchored panels use: this one is the only way out of
|
|
229
|
+
a full-height surface on a tablet, where there is no Escape key.
|
|
230
|
+
*/
|
|
231
|
+
.artefact-catalogue-close {
|
|
232
|
+
flex: none;
|
|
233
|
+
display: flex;
|
|
234
|
+
align-items: center;
|
|
235
|
+
justify-content: center;
|
|
236
|
+
width: ${unsafeCSS(TOUCH_TARGET_MIN_PX)}px;
|
|
237
|
+
height: ${unsafeCSS(TOUCH_TARGET_MIN_PX)}px;
|
|
238
|
+
border: none;
|
|
239
|
+
border-radius: 8px;
|
|
240
|
+
background: transparent;
|
|
241
|
+
color: var(--affine-text-secondary-color);
|
|
242
|
+
font-family: inherit;
|
|
243
|
+
font-size: 20px;
|
|
244
|
+
line-height: 1;
|
|
245
|
+
cursor: pointer;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
.artefact-catalogue-close:hover,
|
|
249
|
+
.artefact-catalogue-close:focus-visible {
|
|
250
|
+
background: var(--affine-hover-color);
|
|
251
|
+
color: var(--affine-text-primary-color);
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
.artefact-catalogue-body {
|
|
255
|
+
flex: 1;
|
|
256
|
+
min-height: 0;
|
|
257
|
+
overflow-y: auto;
|
|
258
|
+
overflow-x: hidden;
|
|
259
|
+
/* The canvas behind must never scroll because this list bottomed out. */
|
|
260
|
+
overscroll-behavior: contain;
|
|
261
|
+
-webkit-overflow-scrolling: touch;
|
|
262
|
+
padding: 8px 0 16px;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
.artefact-catalogue-group-label {
|
|
266
|
+
padding: 12px 16px 4px;
|
|
267
|
+
color: var(--affine-text-secondary-color);
|
|
268
|
+
font-size: 12px;
|
|
269
|
+
font-weight: 600;
|
|
270
|
+
letter-spacing: 0.04em;
|
|
271
|
+
text-transform: uppercase;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
/*
|
|
275
|
+
Full-width rows, never narrower than a finger. A minimum and not a fixed
|
|
276
|
+
height: a long label in a translated catalogue wraps and the row grows,
|
|
277
|
+
which is the direction a touch target may move.
|
|
278
|
+
*/
|
|
279
|
+
.artefact-catalogue-entry {
|
|
280
|
+
display: flex;
|
|
281
|
+
align-items: center;
|
|
282
|
+
gap: 12px;
|
|
283
|
+
width: 100%;
|
|
284
|
+
min-height: ${unsafeCSS(TOUCH_TARGET_MIN_PX)}px;
|
|
285
|
+
box-sizing: border-box;
|
|
286
|
+
padding: 6px 16px;
|
|
287
|
+
border: none;
|
|
288
|
+
background: transparent;
|
|
289
|
+
color: inherit;
|
|
290
|
+
font: inherit;
|
|
291
|
+
text-align: left;
|
|
292
|
+
cursor: pointer;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
/*
|
|
296
|
+
Visible states, not hover-only affordances: a finger never hovers, so the
|
|
297
|
+
pressed state is what tells a tablet user the tap landed.
|
|
298
|
+
*/
|
|
299
|
+
.artefact-catalogue-entry:hover {
|
|
300
|
+
background: var(--affine-hover-color);
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
.artefact-catalogue-entry:active {
|
|
304
|
+
background: var(--affine-hover-color);
|
|
305
|
+
filter: brightness(0.97);
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
.artefact-catalogue-entry:focus-visible {
|
|
309
|
+
outline: 2px solid var(--affine-primary-color);
|
|
310
|
+
outline-offset: -2px;
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
.artefact-catalogue-icon {
|
|
314
|
+
flex: none;
|
|
315
|
+
display: flex;
|
|
316
|
+
align-items: center;
|
|
317
|
+
justify-content: center;
|
|
318
|
+
width: 24px;
|
|
319
|
+
height: 24px;
|
|
320
|
+
fill: var(--affine-icon-color);
|
|
321
|
+
color: var(--affine-icon-color);
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
.artefact-catalogue-icon svg {
|
|
325
|
+
width: 24px;
|
|
326
|
+
height: 24px;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
.artefact-catalogue-label {
|
|
330
|
+
flex: 1;
|
|
331
|
+
min-width: 0;
|
|
332
|
+
overflow-wrap: anywhere;
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
.artefact-catalogue-chord {
|
|
336
|
+
flex: none;
|
|
337
|
+
color: var(--affine-text-secondary-color);
|
|
338
|
+
font-size: 12px;
|
|
339
|
+
white-space: nowrap;
|
|
340
|
+
}
|
|
341
|
+
`; }
|
|
342
|
+
#_owner_accessor_storage;
|
|
343
|
+
/** Which framework's catalogue is on screen, or `null` when it is away. */
|
|
344
|
+
get _owner() { return this.#_owner_accessor_storage; }
|
|
345
|
+
set _owner(value) { this.#_owner_accessor_storage = value; }
|
|
346
|
+
get catalogueOpen() {
|
|
347
|
+
return this._owner !== null;
|
|
348
|
+
}
|
|
349
|
+
/**
|
|
350
|
+
* Show `owner`'s catalogue. Called through `ArtefactCatalogueProvider`, never
|
|
351
|
+
* from another widget's DOM — the sub-menu that opens it lives in a different
|
|
352
|
+
* tree, and the seam is what keeps a host's own sidebar substitutable.
|
|
353
|
+
*/
|
|
354
|
+
openFor(owner) {
|
|
355
|
+
this._owner = owner;
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* Idempotent, and called from both `firstUpdated` and a later
|
|
359
|
+
* `connectedCallback`: `WithDisposable` throws the group away on disconnect
|
|
360
|
+
* while lit runs `firstUpdated` exactly once.
|
|
361
|
+
*/
|
|
362
|
+
_wire() {
|
|
363
|
+
document.addEventListener('pointerdown', this._onDocumentPointerDown, true);
|
|
364
|
+
const host = this.std.host;
|
|
365
|
+
host.addEventListener('keydown', this._onHostKeydown, true);
|
|
366
|
+
host.addEventListener('wheel', this._onHostWheel, true);
|
|
367
|
+
this._disposables.add(() => {
|
|
368
|
+
document.removeEventListener('pointerdown', this._onDocumentPointerDown, true);
|
|
369
|
+
host.removeEventListener('keydown', this._onHostKeydown, true);
|
|
370
|
+
host.removeEventListener('wheel', this._onHostWheel, true);
|
|
371
|
+
});
|
|
372
|
+
}
|
|
373
|
+
connectedCallback() {
|
|
374
|
+
super.connectedCallback();
|
|
375
|
+
if (this.hasUpdated)
|
|
376
|
+
this._wire();
|
|
377
|
+
}
|
|
378
|
+
firstUpdated() {
|
|
379
|
+
this._wire();
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* On open: the panel takes the focus and the list starts at the top.
|
|
383
|
+
*
|
|
384
|
+
* The focus is what makes the panel reachable from a keyboard and audible to
|
|
385
|
+
* a screen reader — it carries the dialog's label, so the framework's name is
|
|
386
|
+
* read before the first artefact. `preventScroll` because the host is a
|
|
387
|
+
* zero-width box at the editor's origin and the browser would otherwise
|
|
388
|
+
* scroll the editor to "reveal" it.
|
|
389
|
+
*
|
|
390
|
+
* The scroll reset matters on the second open: a user who scrolled to the
|
|
391
|
+
* bottom of BPMN's twenty artefacts, closed, and opened the panel again for
|
|
392
|
+
* another framework would otherwise land mid-list with no idea what is above.
|
|
393
|
+
*/
|
|
394
|
+
updated() {
|
|
395
|
+
const owner = this._owner;
|
|
396
|
+
if (owner === null || owner === this._scrolledFor) {
|
|
397
|
+
if (owner === null)
|
|
398
|
+
this._scrolledFor = null;
|
|
399
|
+
return;
|
|
400
|
+
}
|
|
401
|
+
const panel = this.shadowRoot?.querySelector('[data-testid="artefact-catalogue-panel"]');
|
|
402
|
+
if (!panel)
|
|
403
|
+
return;
|
|
404
|
+
this._scrolledFor = owner;
|
|
405
|
+
const body = this.shadowRoot?.querySelector('[data-testid="artefact-catalogue-body"]');
|
|
406
|
+
if (body)
|
|
407
|
+
body.scrollTop = 0;
|
|
408
|
+
panel.focus({ preventScroll: true });
|
|
409
|
+
}
|
|
410
|
+
/**
|
|
411
|
+
* The commands this panel draws: the owner's `'catalogue'` surface, minus the
|
|
412
|
+
* ones whose preconditions do not hold.
|
|
413
|
+
*
|
|
414
|
+
* Unavailable commands are DROPPED, not greyed out. A disabled row in a list
|
|
415
|
+
* of twenty is noise a reader has to step over on every pass, and the panel
|
|
416
|
+
* has no room to say why it is disabled; a command that comes back when the
|
|
417
|
+
* selection changes simply reappears.
|
|
418
|
+
*/
|
|
419
|
+
_commands(owner) {
|
|
420
|
+
const { std } = this;
|
|
421
|
+
return getCommandsForSurface(std, owner, 'catalogue').filter(command => isCommandAvailable(std, command) && (!command.when || command.when(std)));
|
|
422
|
+
}
|
|
423
|
+
/**
|
|
424
|
+
* The chord this command answers to on this platform, as the user would type
|
|
425
|
+
* it — or `null` for the many commands that ship keyless (and stay bindable).
|
|
426
|
+
*
|
|
427
|
+
* The host's override table is consulted, so a rebound command shows what it
|
|
428
|
+
* is actually bound to rather than what it shipped with, and a `'disabled'`
|
|
429
|
+
* entry shows nothing at all.
|
|
430
|
+
*/
|
|
431
|
+
_chord(command) {
|
|
432
|
+
const overrides = this.std.getOptional(ShortcutOverrideIdentifier) ?? {};
|
|
433
|
+
const override = overrides[command.id];
|
|
434
|
+
if (override === 'disabled')
|
|
435
|
+
return null;
|
|
436
|
+
const keys = normalizeLegacyCombo(override ?? (IS_MAC ? command.defaultKeys.mac : command.defaultKeys.other));
|
|
437
|
+
return keys.length ? formatChord(keys, IS_MAC) : null;
|
|
438
|
+
}
|
|
439
|
+
/**
|
|
440
|
+
* Run the command. The panel STAYS OPEN.
|
|
441
|
+
*
|
|
442
|
+
* `runCommand` is the one bottleneck (ADR 0008): the telemetry and the usage
|
|
443
|
+
* measure are emitted there, and `surface: 'catalogue'` is what makes this
|
|
444
|
+
* panel distinguishable from the sub-menu in the numbers.
|
|
445
|
+
*
|
|
446
|
+
* Staying open is the PO's call (recette, 27/08/2026), reversing the first
|
|
447
|
+
* default: a catalogue is where a user furnishes a diagram, and furnishing is
|
|
448
|
+
* several artefacts in a row — closing after each one turned that into
|
|
449
|
+
* open-click-reopen. The exits are unchanged and all one gesture: ×, Escape,
|
|
450
|
+
* or a click on the canvas.
|
|
451
|
+
*/
|
|
452
|
+
_invoke(command) {
|
|
453
|
+
runCommand(this.std, command, {
|
|
454
|
+
surface: 'catalogue',
|
|
455
|
+
source: 'toolbar:general',
|
|
456
|
+
});
|
|
457
|
+
}
|
|
458
|
+
_groupLabel(group) {
|
|
459
|
+
const { category } = group;
|
|
460
|
+
if (category === null) {
|
|
461
|
+
return translateKey(this.std, 'com.labre.catalogue.other', 'Other');
|
|
462
|
+
}
|
|
463
|
+
return translateKey(this.std, `${CATALOGUE_CATEGORY_KEY_PREFIX}${category}`, humanizeCategory(category));
|
|
464
|
+
}
|
|
465
|
+
_renderEntry(command) {
|
|
466
|
+
const icon = getCommandIcon(this.std, command.iconKey);
|
|
467
|
+
const label = translateKey(this.std, command.labelKey, command.labelFallback);
|
|
468
|
+
const chord = this._chord(command);
|
|
469
|
+
return html `<button
|
|
470
|
+
class="artefact-catalogue-entry"
|
|
471
|
+
type="button"
|
|
472
|
+
data-testid="artefact-catalogue-entry"
|
|
473
|
+
data-command-id=${command.id}
|
|
474
|
+
@click=${() => this._invoke(command)}
|
|
475
|
+
>
|
|
476
|
+
<span class="artefact-catalogue-icon">${icon ?? nothing}</span>
|
|
477
|
+
<span class="artefact-catalogue-label">${label}</span>
|
|
478
|
+
${chord
|
|
479
|
+
? html `<span class="artefact-catalogue-chord">${chord}</span>`
|
|
480
|
+
: nothing}
|
|
481
|
+
</button>`;
|
|
482
|
+
}
|
|
483
|
+
render() {
|
|
484
|
+
const owner = this._owner;
|
|
485
|
+
if (owner === null)
|
|
486
|
+
return nothing;
|
|
487
|
+
const commands = this._commands(owner);
|
|
488
|
+
const groups = groupCommandsByCategory(commands);
|
|
489
|
+
// The head section: what THIS user reaches for, latest first — the
|
|
490
|
+
// sub-menu's arbitration re-consumed whole (PO recette, 27/08/2026).
|
|
491
|
+
// Absent entirely until something has been used: a "recent" list padded
|
|
492
|
+
// with the never-used would be a label that lies. The rows repeat below in
|
|
493
|
+
// their categories on purpose, the way every launcher does it — the head
|
|
494
|
+
// is a shortcut, not a re-filing.
|
|
495
|
+
//
|
|
496
|
+
// `commands` here is the whole CATALOGUE, deliberately: the eligibility
|
|
497
|
+
// ruling of 2026-08-28 narrowed the SUB-MENU to commands that declare
|
|
498
|
+
// `'senior-menu'`, because that row is a row of things you draw. This panel
|
|
499
|
+
// is the full-catalogue surface, so a board action a user really does reach
|
|
500
|
+
// for — `bpmn.exportXml` — belongs at its head. See `rankCommandsByUsage`.
|
|
501
|
+
//
|
|
502
|
+
// Seven rows at most (`CATALOGUE_HEAD_RANKED_SLOTS`, 4 recent + 3 used),
|
|
503
|
+
// NOT the sub-menu's thirteen: at 44px a row, thirteen would be ~604px of
|
|
504
|
+
// duplicated shortcuts and would push every category below the fold on a
|
|
505
|
+
// laptop. Same arbitration, its own magnitude.
|
|
506
|
+
const usage = this.std.getOptional(CommandUsageIdentifier);
|
|
507
|
+
const ranked = usage
|
|
508
|
+
? rankCommandsByUsage(commands, id => usage.statsOf(id))
|
|
509
|
+
: [];
|
|
510
|
+
const rankedLabel = translateKey(this.std, 'com.labre.catalogue.ranked', 'Recent & frequent');
|
|
511
|
+
// A framework's own name, through the same key the senior button uses. The
|
|
512
|
+
// fallback is the owner id respelled — the library invents no framework
|
|
513
|
+
// prose, and a host with a catalogue always wins.
|
|
514
|
+
const frameworkLabel = translateKey(this.std, `com.labre.framework.${owner}`, humanizeCategory(owner));
|
|
515
|
+
const catalogueTitle = translateKey(this.std, 'com.labre.catalogue.title', 'Artefacts');
|
|
516
|
+
return html `<div
|
|
517
|
+
class="artefact-catalogue-panel"
|
|
518
|
+
role="dialog"
|
|
519
|
+
tabindex="-1"
|
|
520
|
+
aria-label=${`${frameworkLabel} — ${catalogueTitle}`}
|
|
521
|
+
data-testid="artefact-catalogue-panel"
|
|
522
|
+
data-owner=${owner}
|
|
523
|
+
@pointerdown=${this._swallow}
|
|
524
|
+
@pointerup=${this._swallow}
|
|
525
|
+
@click=${this._swallow}
|
|
526
|
+
>
|
|
527
|
+
<div class="artefact-catalogue-head">
|
|
528
|
+
<span class="artefact-catalogue-title">${frameworkLabel}</span>
|
|
529
|
+
<button
|
|
530
|
+
class="artefact-catalogue-close"
|
|
531
|
+
type="button"
|
|
532
|
+
data-testid="artefact-catalogue-close"
|
|
533
|
+
aria-label=${translateKey(this.std, 'com.labre.catalogue.close', 'Close')}
|
|
534
|
+
@click=${this.closePanel}
|
|
535
|
+
>
|
|
536
|
+
×
|
|
537
|
+
</button>
|
|
538
|
+
</div>
|
|
539
|
+
<div
|
|
540
|
+
class="artefact-catalogue-body"
|
|
541
|
+
data-testid="artefact-catalogue-body"
|
|
542
|
+
>
|
|
543
|
+
${ranked.length
|
|
544
|
+
? html `<div
|
|
545
|
+
class="artefact-catalogue-group"
|
|
546
|
+
data-testid="artefact-catalogue-ranked"
|
|
547
|
+
role="group"
|
|
548
|
+
aria-label=${rankedLabel}
|
|
549
|
+
>
|
|
550
|
+
<div class="artefact-catalogue-group-label">${rankedLabel}</div>
|
|
551
|
+
${ranked.map(command => this._renderEntry(command))}
|
|
552
|
+
</div>`
|
|
553
|
+
: nothing}
|
|
554
|
+
${groups.map(group => html `<div
|
|
555
|
+
class="artefact-catalogue-group"
|
|
556
|
+
data-testid="artefact-catalogue-group"
|
|
557
|
+
data-category=${group.category ?? ''}
|
|
558
|
+
role="group"
|
|
559
|
+
aria-label=${this._groupLabel(group)}
|
|
560
|
+
>
|
|
561
|
+
<div class="artefact-catalogue-group-label">
|
|
562
|
+
${this._groupLabel(group)}
|
|
563
|
+
</div>
|
|
564
|
+
${group.commands.map(command => this._renderEntry(command))}
|
|
565
|
+
</div>`)}
|
|
566
|
+
</div>
|
|
567
|
+
</div>`;
|
|
568
|
+
}
|
|
569
|
+
};
|
|
570
|
+
})();
|
|
571
|
+
export { EdgelessArtefactCatalogueWidget };
|
|
572
|
+
export const edgelessArtefactCatalogueWidget = WidgetViewExtension('affine:page', EDGELESS_ARTEFACT_CATALOGUE_WIDGET, literal `${unsafeStatic(EDGELESS_ARTEFACT_CATALOGUE_WIDGET)}`);
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { AnyCommandDescriptor } from '../../std/index.js';
|
|
2
|
+
/** The i18n key prefix every catalogue group header is looked up under. */
|
|
3
|
+
export declare const CATALOGUE_CATEGORY_KEY_PREFIX = "com.labre.catalogue.category.";
|
|
4
|
+
/**
|
|
5
|
+
* One section of the catalogue: a category and the commands declaring it.
|
|
6
|
+
*
|
|
7
|
+
* `category` is `null` for the trailing group of commands that declare none —
|
|
8
|
+
* see {@link groupCommandsByCategory}.
|
|
9
|
+
*/
|
|
10
|
+
export interface CatalogueGroup {
|
|
11
|
+
category: string | null;
|
|
12
|
+
commands: AnyCommandDescriptor[];
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Split a surface's commands into the sections the sidepanel draws.
|
|
16
|
+
*
|
|
17
|
+
* Two rules, and both exist to keep the panel's order the FRAMEWORK's order:
|
|
18
|
+
*
|
|
19
|
+
* - groups appear in the order their category is first met, not alphabetically.
|
|
20
|
+
* `getCommandsForSurface` has already sorted by `CommandDescriptor.order`, so
|
|
21
|
+
* a framework that declared backgrounds before nodes before connectors gets
|
|
22
|
+
* exactly that reading, and sorting the headers by name would quietly
|
|
23
|
+
* overrule it;
|
|
24
|
+
* - a command with no category joins ONE trailing group, and that group exists
|
|
25
|
+
* only when something lands in it. An "Other" header over an empty section —
|
|
26
|
+
* or over a framework whose commands are all uncategorised, where it would be
|
|
27
|
+
* the only header — says nothing a reader can use.
|
|
28
|
+
*
|
|
29
|
+
* Pure on purpose: this is the half of the panel worth unit-testing, and it
|
|
30
|
+
* knows nothing about lit, the DOM or the editor.
|
|
31
|
+
*/
|
|
32
|
+
export declare function groupCommandsByCategory(commands: readonly AnyCommandDescriptor[]): CatalogueGroup[];
|
|
33
|
+
/**
|
|
34
|
+
* The English default for a category header, derived from the category id.
|
|
35
|
+
*
|
|
36
|
+
* `'backgrounds'` → `'Backgrounds'`, `'value-flow'` → `'Value flow'`,
|
|
37
|
+
* `'boundedContext'` → `'Bounded context'`. Sentence case, not title case: a
|
|
38
|
+
* header is a phrase, and capitalising every word turns `'change arrows'` into
|
|
39
|
+
* a product name.
|
|
40
|
+
*
|
|
41
|
+
* It is a FALLBACK and nothing more. A host with a catalogue answers
|
|
42
|
+
* `com.labre.catalogue.category.<id>` and this is never seen; a standalone
|
|
43
|
+
* playground reads a word instead of a raw key. The library still invents no
|
|
44
|
+
* framework prose — a category id is the framework's own word, only respelled.
|
|
45
|
+
*/
|
|
46
|
+
export declare function humanizeCategory(category: string): string;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/** The i18n key prefix every catalogue group header is looked up under. */
|
|
2
|
+
export const CATALOGUE_CATEGORY_KEY_PREFIX = 'com.labre.catalogue.category.';
|
|
3
|
+
/**
|
|
4
|
+
* Split a surface's commands into the sections the sidepanel draws.
|
|
5
|
+
*
|
|
6
|
+
* Two rules, and both exist to keep the panel's order the FRAMEWORK's order:
|
|
7
|
+
*
|
|
8
|
+
* - groups appear in the order their category is first met, not alphabetically.
|
|
9
|
+
* `getCommandsForSurface` has already sorted by `CommandDescriptor.order`, so
|
|
10
|
+
* a framework that declared backgrounds before nodes before connectors gets
|
|
11
|
+
* exactly that reading, and sorting the headers by name would quietly
|
|
12
|
+
* overrule it;
|
|
13
|
+
* - a command with no category joins ONE trailing group, and that group exists
|
|
14
|
+
* only when something lands in it. An "Other" header over an empty section —
|
|
15
|
+
* or over a framework whose commands are all uncategorised, where it would be
|
|
16
|
+
* the only header — says nothing a reader can use.
|
|
17
|
+
*
|
|
18
|
+
* Pure on purpose: this is the half of the panel worth unit-testing, and it
|
|
19
|
+
* knows nothing about lit, the DOM or the editor.
|
|
20
|
+
*/
|
|
21
|
+
export function groupCommandsByCategory(commands) {
|
|
22
|
+
const byCategory = new Map();
|
|
23
|
+
const uncategorised = [];
|
|
24
|
+
for (const command of commands) {
|
|
25
|
+
const { category } = command;
|
|
26
|
+
if (!category) {
|
|
27
|
+
uncategorised.push(command);
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
const group = byCategory.get(category);
|
|
31
|
+
if (group)
|
|
32
|
+
group.push(command);
|
|
33
|
+
else
|
|
34
|
+
byCategory.set(category, [command]);
|
|
35
|
+
}
|
|
36
|
+
const groups = [...byCategory].map(([category, commands]) => ({ category, commands }));
|
|
37
|
+
if (uncategorised.length)
|
|
38
|
+
groups.push({ category: null, commands: uncategorised });
|
|
39
|
+
return groups;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* The English default for a category header, derived from the category id.
|
|
43
|
+
*
|
|
44
|
+
* `'backgrounds'` → `'Backgrounds'`, `'value-flow'` → `'Value flow'`,
|
|
45
|
+
* `'boundedContext'` → `'Bounded context'`. Sentence case, not title case: a
|
|
46
|
+
* header is a phrase, and capitalising every word turns `'change arrows'` into
|
|
47
|
+
* a product name.
|
|
48
|
+
*
|
|
49
|
+
* It is a FALLBACK and nothing more. A host with a catalogue answers
|
|
50
|
+
* `com.labre.catalogue.category.<id>` and this is never seen; a standalone
|
|
51
|
+
* playground reads a word instead of a raw key. The library still invents no
|
|
52
|
+
* framework prose — a category id is the framework's own word, only respelled.
|
|
53
|
+
*/
|
|
54
|
+
export function humanizeCategory(category) {
|
|
55
|
+
const words = category
|
|
56
|
+
// camelCase and PascalCase boundaries, before the separators are split on:
|
|
57
|
+
// `'boundedContext'` has no separator to find otherwise.
|
|
58
|
+
.replace(/([a-z0-9])([A-Z])/g, '$1 $2')
|
|
59
|
+
.split(/[-_\s]+/)
|
|
60
|
+
.filter(Boolean)
|
|
61
|
+
.map(word => word.toLowerCase());
|
|
62
|
+
if (!words.length)
|
|
63
|
+
return category;
|
|
64
|
+
const [first, ...rest] = words;
|
|
65
|
+
return [first.charAt(0).toUpperCase() + first.slice(1), ...rest].join(' ');
|
|
66
|
+
}
|