@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
|
@@ -5,6 +5,12 @@ export declare class CalloutBlockComponent extends CaptionedBlockComponent<Callo
|
|
|
5
5
|
static styles: import("lit").CSSResult;
|
|
6
6
|
private _emojiMenuAbortController;
|
|
7
7
|
private readonly _toggleEmojiMenu;
|
|
8
|
+
/**
|
|
9
|
+
* A callout with no children has no text to click into, so the click lands on
|
|
10
|
+
* the container and nothing happens — the block looks inert. Give it a
|
|
11
|
+
* paragraph and put the caret in it.
|
|
12
|
+
*/
|
|
13
|
+
private readonly _handleBlockClick;
|
|
8
14
|
get attributeRenderer(): import("../std/inline/types.js").AttributeRenderer<import("../affine-shared/types/index.js").AffineTextAttributes>;
|
|
9
15
|
get attributesSchema(): import("zod").ZodType<any, import("zod").ZodTypeDef, any>;
|
|
10
16
|
get embedChecker(): (delta: import("../store/index.js").DeltaInsert<import("../affine-shared/types/index.js").AffineTextAttributes>) => boolean;
|
|
@@ -36,6 +36,7 @@ import { CaptionedBlockComponent } from '../affine-components/caption/index.js';
|
|
|
36
36
|
import { createLitPortal } from '../affine-components/portal/index.js';
|
|
37
37
|
import { DefaultInlineManagerExtension } from '../affine-inline-preset/index.js';
|
|
38
38
|
import {} from '../affine-model/index.js';
|
|
39
|
+
import { focusTextModel } from '../affine-rich-text/index.js';
|
|
39
40
|
import { EDGELESS_TOP_CONTENTEDITABLE_SELECTOR } from '../affine-shared/consts/index.js';
|
|
40
41
|
import { DocModeProvider, ThemeProvider, } from '../affine-shared/services/index.js';
|
|
41
42
|
import { unsafeCSSVarV2 } from '../affine-shared/theme/index.js';
|
|
@@ -43,6 +44,7 @@ import { flip, offset } from '@floating-ui/dom';
|
|
|
43
44
|
import { css, html } from 'lit';
|
|
44
45
|
import { query } from 'lit/decorators.js';
|
|
45
46
|
import { styleMap } from 'lit/directives/style-map.js';
|
|
47
|
+
import { getCalloutEmojiMarginTop } from './emoji-margin.js';
|
|
46
48
|
let CalloutBlockComponent = (() => {
|
|
47
49
|
let _classSuper = CaptionedBlockComponent;
|
|
48
50
|
let __emojiButton_decorators;
|
|
@@ -63,14 +65,13 @@ let CalloutBlockComponent = (() => {
|
|
|
63
65
|
|
|
64
66
|
.affine-callout-block-container {
|
|
65
67
|
display: flex;
|
|
68
|
+
align-items: flex-start;
|
|
66
69
|
padding: 5px 10px;
|
|
67
70
|
border-radius: 8px;
|
|
68
71
|
background-color: ${unsafeCSSVarV2('block/callout/background/grey')};
|
|
69
72
|
}
|
|
70
73
|
|
|
71
74
|
.affine-callout-emoji-container {
|
|
72
|
-
margin-right: 10px;
|
|
73
|
-
margin-top: 14px;
|
|
74
75
|
user-select: none;
|
|
75
76
|
font-size: 1.2em;
|
|
76
77
|
width: 24px;
|
|
@@ -78,6 +79,9 @@ let CalloutBlockComponent = (() => {
|
|
|
78
79
|
display: flex;
|
|
79
80
|
align-items: center;
|
|
80
81
|
justify-content: center;
|
|
82
|
+
/* margin-top is set per render: it depends on the first child's type. */
|
|
83
|
+
margin-bottom: 10px;
|
|
84
|
+
flex-shrink: 0;
|
|
81
85
|
}
|
|
82
86
|
.affine-callout-emoji:hover {
|
|
83
87
|
cursor: pointer;
|
|
@@ -114,13 +118,17 @@ let CalloutBlockComponent = (() => {
|
|
|
114
118
|
renderBlock() {
|
|
115
119
|
const emoji = this.model.props.emoji$.value;
|
|
116
120
|
return html `
|
|
117
|
-
<div
|
|
121
|
+
<div
|
|
122
|
+
class="affine-callout-block-container"
|
|
123
|
+
@click=${this._handleBlockClick}
|
|
124
|
+
>
|
|
118
125
|
<div
|
|
119
126
|
@click=${this._toggleEmojiMenu}
|
|
120
127
|
contenteditable="false"
|
|
121
128
|
class="affine-callout-emoji-container"
|
|
122
129
|
style=${styleMap({
|
|
123
130
|
display: emoji.length === 0 ? 'none' : undefined,
|
|
131
|
+
marginTop: getCalloutEmojiMarginTop(this.model),
|
|
124
132
|
})}
|
|
125
133
|
>
|
|
126
134
|
<span class="affine-callout-emoji">${emoji}</span>
|
|
@@ -161,6 +169,20 @@ let CalloutBlockComponent = (() => {
|
|
|
161
169
|
closeOnClickAway: true,
|
|
162
170
|
});
|
|
163
171
|
};
|
|
172
|
+
/**
|
|
173
|
+
* A callout with no children has no text to click into, so the click lands on
|
|
174
|
+
* the container and nothing happens — the block looks inert. Give it a
|
|
175
|
+
* paragraph and put the caret in it.
|
|
176
|
+
*/
|
|
177
|
+
this._handleBlockClick = (event) => {
|
|
178
|
+
const target = event.target;
|
|
179
|
+
if (target.closest('.affine-callout-emoji-container'))
|
|
180
|
+
return;
|
|
181
|
+
if (this.model.children.length > 0)
|
|
182
|
+
return;
|
|
183
|
+
event.stopPropagation();
|
|
184
|
+
focusTextModel(this.std, this.store.addBlock('affine:paragraph', {}, this.model));
|
|
185
|
+
};
|
|
164
186
|
this.#_emojiButton_accessor_storage = __runInitializers(this, __emojiButton_initializers, void 0);
|
|
165
187
|
__runInitializers(this, __emojiButton_extraInitializers);
|
|
166
188
|
}
|
|
@@ -1,29 +1,69 @@
|
|
|
1
|
-
import { CalloutBlockModel } from '../affine-model/index.js';
|
|
1
|
+
import { CalloutBlockModel, ParagraphBlockModel } from '../affine-model/index.js';
|
|
2
2
|
import { matchModels } from '../affine-shared/utils/index.js';
|
|
3
|
-
import { BlockSelection, KeymapExtension, TextSelection
|
|
3
|
+
import { BlockSelection, KeymapExtension, TextSelection } from '../std/index.js';
|
|
4
|
+
import { calloutToParagraphCommand } from './commands/callout-to-paragraph.js';
|
|
5
|
+
import { splitCalloutCommand } from './commands/split-callout.js';
|
|
4
6
|
export const CalloutKeymapExtension = KeymapExtension(std => {
|
|
5
7
|
return {
|
|
6
|
-
|
|
8
|
+
Enter: ctx => {
|
|
7
9
|
const text = std.selection.find(TextSelection);
|
|
8
|
-
if (text
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
10
|
+
if (!text)
|
|
11
|
+
return false;
|
|
12
|
+
const currentBlock = std.store.getBlock(text.from.blockId);
|
|
13
|
+
if (!currentBlock)
|
|
14
|
+
return false;
|
|
15
|
+
// The caret is either on the callout itself (an empty one) or on one of
|
|
16
|
+
// its children.
|
|
17
|
+
let calloutId = currentBlock.model.id;
|
|
18
|
+
if (!matchModels(currentBlock.model, [CalloutBlockModel])) {
|
|
19
|
+
const parent = std.store.getParent(currentBlock.model);
|
|
20
|
+
if (!parent || !matchModels(parent, [CalloutBlockModel]))
|
|
16
21
|
return false;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
calloutId = parent.id;
|
|
23
|
+
}
|
|
24
|
+
ctx.get('keyboardState').raw.preventDefault();
|
|
25
|
+
std.command
|
|
26
|
+
.chain()
|
|
27
|
+
.pipe(splitCalloutCommand, {
|
|
28
|
+
calloutId,
|
|
29
|
+
currentBlockId: text.from.blockId,
|
|
30
|
+
inlineIndex: text.from.index,
|
|
31
|
+
})
|
|
32
|
+
.run();
|
|
33
|
+
return true;
|
|
34
|
+
},
|
|
35
|
+
Backspace: ctx => {
|
|
36
|
+
const text = std.selection.find(TextSelection);
|
|
37
|
+
if (!text || !text.isCollapsed() || text.from.index !== 0)
|
|
38
|
+
return false;
|
|
39
|
+
const block = std.store.getBlock(text.from.blockId);
|
|
40
|
+
if (!block)
|
|
41
|
+
return false;
|
|
42
|
+
const parent = std.store.getParent(block.model);
|
|
43
|
+
if (!parent)
|
|
44
|
+
return false;
|
|
45
|
+
if (!matchModels(parent, [CalloutBlockModel]))
|
|
46
|
+
return false;
|
|
47
|
+
// Nothing above was a callout, so nothing above was ours to swallow: the
|
|
48
|
+
// event is only default-prevented once the callout is what we are in.
|
|
49
|
+
const event = ctx.get('defaultState').event;
|
|
50
|
+
event.preventDefault();
|
|
51
|
+
// A paragraph merges into the previous paragraph of the same callout,
|
|
52
|
+
// the way it would anywhere else in the document.
|
|
53
|
+
if (matchModels(block.model, [ParagraphBlockModel])) {
|
|
54
|
+
std.command
|
|
55
|
+
.chain()
|
|
56
|
+
.pipe(calloutToParagraphCommand, { id: block.model.id })
|
|
57
|
+
.run();
|
|
24
58
|
return true;
|
|
25
59
|
}
|
|
26
|
-
|
|
60
|
+
// Anything else hands the user the callout itself.
|
|
61
|
+
std.selection.setGroup('note', [
|
|
62
|
+
std.selection.create(BlockSelection, {
|
|
63
|
+
blockId: parent.id,
|
|
64
|
+
}),
|
|
65
|
+
]);
|
|
66
|
+
return true;
|
|
27
67
|
},
|
|
28
68
|
};
|
|
29
69
|
});
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Command } from '../../std/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Backspace at the very start of a paragraph inside a callout.
|
|
4
|
+
*
|
|
5
|
+
* Outside a callout that keystroke merges the paragraph into the one above.
|
|
6
|
+
* Inside one it used to do nothing but select the whole callout, so a line
|
|
7
|
+
* broken by mistake could not be joined back — the text had to be cut and
|
|
8
|
+
* pasted by hand.
|
|
9
|
+
*
|
|
10
|
+
* The paragraph now merges into the previous paragraph of the SAME callout,
|
|
11
|
+
* keeping its formatting, and the caret lands at the seam. With no previous
|
|
12
|
+
* paragraph to merge into, the callout itself is selected — the old behaviour,
|
|
13
|
+
* and the way one deletes a callout without losing what it holds.
|
|
14
|
+
*/
|
|
15
|
+
export declare const calloutToParagraphCommand: Command<{
|
|
16
|
+
id: string;
|
|
17
|
+
stopCapturing?: boolean;
|
|
18
|
+
}, {
|
|
19
|
+
success: boolean;
|
|
20
|
+
}>;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { CalloutBlockModel, ParagraphBlockModel } from '../../affine-model/index.js';
|
|
2
|
+
import { focusTextModel } from '../../affine-rich-text/index.js';
|
|
3
|
+
import { matchModels } from '../../affine-shared/utils/index.js';
|
|
4
|
+
import { BlockSelection } from '../../std/index.js';
|
|
5
|
+
/**
|
|
6
|
+
* Backspace at the very start of a paragraph inside a callout.
|
|
7
|
+
*
|
|
8
|
+
* Outside a callout that keystroke merges the paragraph into the one above.
|
|
9
|
+
* Inside one it used to do nothing but select the whole callout, so a line
|
|
10
|
+
* broken by mistake could not be joined back — the text had to be cut and
|
|
11
|
+
* pasted by hand.
|
|
12
|
+
*
|
|
13
|
+
* The paragraph now merges into the previous paragraph of the SAME callout,
|
|
14
|
+
* keeping its formatting, and the caret lands at the seam. With no previous
|
|
15
|
+
* paragraph to merge into, the callout itself is selected — the old behaviour,
|
|
16
|
+
* and the way one deletes a callout without losing what it holds.
|
|
17
|
+
*/
|
|
18
|
+
export const calloutToParagraphCommand = (ctx, next) => {
|
|
19
|
+
const { id, stopCapturing = true } = ctx;
|
|
20
|
+
const std = ctx.std;
|
|
21
|
+
const doc = std.store;
|
|
22
|
+
const model = doc.getBlock(id)?.model;
|
|
23
|
+
if (!model || !matchModels(model, [ParagraphBlockModel]))
|
|
24
|
+
return;
|
|
25
|
+
const parent = doc.getParent(model);
|
|
26
|
+
if (!parent || !matchModels(parent, [CalloutBlockModel]))
|
|
27
|
+
return;
|
|
28
|
+
// The previous paragraph of this callout, skipping siblings that hold no
|
|
29
|
+
// text of their own.
|
|
30
|
+
const currentIndex = parent.children.indexOf(model);
|
|
31
|
+
let previous = null;
|
|
32
|
+
for (let i = currentIndex - 1; i >= 0; i--) {
|
|
33
|
+
const sibling = parent.children[i];
|
|
34
|
+
if (matchModels(sibling, [ParagraphBlockModel])) {
|
|
35
|
+
previous = sibling;
|
|
36
|
+
break;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
if (!previous) {
|
|
40
|
+
// Nothing to merge into. Select the callout rather than delete anything:
|
|
41
|
+
// a second Backspace then removes it, text included, in one undo step.
|
|
42
|
+
std.selection.setGroup('note', [
|
|
43
|
+
std.selection.create(BlockSelection, {
|
|
44
|
+
blockId: parent.id,
|
|
45
|
+
}),
|
|
46
|
+
]);
|
|
47
|
+
next({ success: true });
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
if (stopCapturing)
|
|
51
|
+
doc.captureSync();
|
|
52
|
+
const previousText = previous.props.text;
|
|
53
|
+
// Read the seam BEFORE joining: that is where the caret must land.
|
|
54
|
+
const mergeIndex = previousText.length;
|
|
55
|
+
// `join` replays the deltas, so bold, links and the rest survive the merge.
|
|
56
|
+
previousText.join(model.props.text);
|
|
57
|
+
doc.deleteBlock(model, { deleteChildren: false });
|
|
58
|
+
focusTextModel(std, previous.id, mergeIndex);
|
|
59
|
+
next({ success: true });
|
|
60
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Command } from '../../std/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Enter inside a callout: break the line WITHOUT leaving the callout.
|
|
4
|
+
*
|
|
5
|
+
* The paragraph keymap deliberately steps aside for a paragraph whose parent is
|
|
6
|
+
* a callout, so this command is the only thing standing between the user and a
|
|
7
|
+
* dead Enter key. The new paragraph is a sibling INSIDE the callout, never
|
|
8
|
+
* after it — leaving a callout is what the down arrow is for.
|
|
9
|
+
*/
|
|
10
|
+
export declare const splitCalloutCommand: Command<{
|
|
11
|
+
/** The callout the caret is in — the fallback target for an empty one. */
|
|
12
|
+
calloutId: string;
|
|
13
|
+
/** The block the caret is in; a paragraph in every ordinary case. */
|
|
14
|
+
currentBlockId: string;
|
|
15
|
+
/** Where the caret sits inside that block's text. */
|
|
16
|
+
inlineIndex: number;
|
|
17
|
+
}>;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { CalloutBlockModel, ParagraphBlockModel } from '../../affine-model/index.js';
|
|
2
|
+
import { focusTextModel } from '../../affine-rich-text/index.js';
|
|
3
|
+
import { matchModels } from '../../affine-shared/utils/index.js';
|
|
4
|
+
/**
|
|
5
|
+
* Enter inside a callout: break the line WITHOUT leaving the callout.
|
|
6
|
+
*
|
|
7
|
+
* The paragraph keymap deliberately steps aside for a paragraph whose parent is
|
|
8
|
+
* a callout, so this command is the only thing standing between the user and a
|
|
9
|
+
* dead Enter key. The new paragraph is a sibling INSIDE the callout, never
|
|
10
|
+
* after it — leaving a callout is what the down arrow is for.
|
|
11
|
+
*/
|
|
12
|
+
export const splitCalloutCommand = (ctx, next) => {
|
|
13
|
+
const { calloutId, currentBlockId, inlineIndex, std } = ctx;
|
|
14
|
+
const store = std.store;
|
|
15
|
+
const callout = store.getBlock(calloutId)?.model;
|
|
16
|
+
if (!callout || !matchModels(callout, [CalloutBlockModel]))
|
|
17
|
+
return;
|
|
18
|
+
const current = store.getBlock(currentBlockId)?.model;
|
|
19
|
+
store.captureSync();
|
|
20
|
+
if (!current || !matchModels(current, [ParagraphBlockModel])) {
|
|
21
|
+
// No paragraph under the caret — an empty callout. Give it one.
|
|
22
|
+
focusTextModel(std, store.addBlock('affine:paragraph', {}, callout));
|
|
23
|
+
next();
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const parent = store.getParent(current);
|
|
27
|
+
if (!parent)
|
|
28
|
+
return;
|
|
29
|
+
const index = parent.children.indexOf(current);
|
|
30
|
+
if (index < 0)
|
|
31
|
+
return;
|
|
32
|
+
// `split` truncates the current text and hands back the tail.
|
|
33
|
+
const right = current.props.text.split(inlineIndex);
|
|
34
|
+
const newId = store.addBlock('affine:paragraph', {
|
|
35
|
+
text: right,
|
|
36
|
+
// Breaking a heading in two keeps two headings; pressing Enter at its end
|
|
37
|
+
// starts an ordinary line, as it does everywhere else in the editor.
|
|
38
|
+
type: right.length === 0 ? 'text' : current.props.type,
|
|
39
|
+
}, parent, index + 1);
|
|
40
|
+
focusTextModel(std, newId);
|
|
41
|
+
next();
|
|
42
|
+
};
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { CalloutBlockModel } from '../../affine-model/index.js';
|
|
2
1
|
import { focusBlockEnd } from '../../affine-shared/commands/index.js';
|
|
3
2
|
import { FeatureFlagService } from '../../affine-shared/services/index.js';
|
|
4
|
-
import {
|
|
3
|
+
import { isInsideBlockByFlavour } from '../../affine-shared/utils/index.js';
|
|
5
4
|
import {} from '../../affine-widget-slash-menu/index.js';
|
|
6
5
|
import { FontIcon } from '@blocksuite/icons/lit';
|
|
7
6
|
import { calloutTooltip } from './tooltips.js';
|
|
7
|
+
// No `disableWhen` here on purpose. The widget ORs every config's `disableWhen`
|
|
8
|
+
// together and then refuses to open at all, so the callout's own guard used to
|
|
9
|
+
// silence the WHOLE slash menu inside a callout — every block, every framework,
|
|
10
|
+
// not just this one entry.
|
|
8
11
|
export const calloutSlashMenuConfig = {
|
|
9
|
-
disableWhen: ({ model }) => {
|
|
10
|
-
return (findAncestorModel(model, ancestor => matchModels(ancestor, [CalloutBlockModel])) !== null);
|
|
11
|
-
},
|
|
12
12
|
items: [
|
|
13
13
|
{
|
|
14
14
|
name: 'Callout',
|
|
@@ -22,7 +22,10 @@ export const calloutSlashMenuConfig = {
|
|
|
22
22
|
group: '0_Basic@9',
|
|
23
23
|
when: ({ std, model }) => {
|
|
24
24
|
return (std.get(FeatureFlagService).getFlag('enable_callout') &&
|
|
25
|
-
!isInsideBlockByFlavour(model.store, model, 'affine:edgeless-text')
|
|
25
|
+
!isInsideBlockByFlavour(model.store, model, 'affine:edgeless-text') &&
|
|
26
|
+
// The schema forbids a callout inside a callout, so offering the item
|
|
27
|
+
// there would only produce a thrown insertion.
|
|
28
|
+
!isInsideBlockByFlavour(model.store, model, 'affine:callout'));
|
|
26
29
|
},
|
|
27
30
|
action: ({ model, std }) => {
|
|
28
31
|
const { store } = model;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type CalloutBlockModel } from '../affine-model/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* The emoji's `margin-top` for a callout, read from its FIRST child — the only
|
|
4
|
+
* line the emoji is ever level with.
|
|
5
|
+
*
|
|
6
|
+
* Reading `type$` rather than `type` keeps the caller reactive: turning the
|
|
7
|
+
* first line into a heading re-renders the callout and moves the emoji with it.
|
|
8
|
+
*/
|
|
9
|
+
export declare function getCalloutEmojiMarginTop(model: CalloutBlockModel): string;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { ParagraphBlockModel, } from '../affine-model/index.js';
|
|
2
|
+
import { matchModels } from '../affine-shared/utils/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* How far the emoji has to drop to sit on the first line's baseline.
|
|
5
|
+
*
|
|
6
|
+
* The emoji is a fixed 24px box next to a column whose first line can be
|
|
7
|
+
* anything from an H1 to an ordinary paragraph. A single margin therefore
|
|
8
|
+
* cannot be right twice: level with a paragraph it floats above an H1, level
|
|
9
|
+
* with an H1 it sinks below a paragraph. These are the drops measured per
|
|
10
|
+
* heading level.
|
|
11
|
+
*/
|
|
12
|
+
const EMOJI_MARGIN_TOP_BY_TYPE = {
|
|
13
|
+
h1: '23px',
|
|
14
|
+
h2: '20px',
|
|
15
|
+
h3: '16px',
|
|
16
|
+
h4: '15px',
|
|
17
|
+
h5: '14px',
|
|
18
|
+
h6: '13px',
|
|
19
|
+
};
|
|
20
|
+
/** What a paragraph, a list, or an empty callout gets. */
|
|
21
|
+
const DEFAULT_EMOJI_MARGIN_TOP = '10px';
|
|
22
|
+
/**
|
|
23
|
+
* The emoji's `margin-top` for a callout, read from its FIRST child — the only
|
|
24
|
+
* line the emoji is ever level with.
|
|
25
|
+
*
|
|
26
|
+
* Reading `type$` rather than `type` keeps the caller reactive: turning the
|
|
27
|
+
* first line into a heading re-renders the callout and moves the emoji with it.
|
|
28
|
+
*/
|
|
29
|
+
export function getCalloutEmojiMarginTop(model) {
|
|
30
|
+
const first = model.children[0];
|
|
31
|
+
if (!first || !matchModels(first, [ParagraphBlockModel])) {
|
|
32
|
+
return DEFAULT_EMOJI_MARGIN_TOP;
|
|
33
|
+
}
|
|
34
|
+
return (EMOJI_MARGIN_TOP_BY_TYPE[first.props.type$.value] ??
|
|
35
|
+
DEFAULT_EMOJI_MARGIN_TOP);
|
|
36
|
+
}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { LitElement, type PropertyValues } from 'lit';
|
|
2
|
+
/** The part of emoji-mart's selection payload a callout reads. */
|
|
3
|
+
export type EmojiSelection = {
|
|
4
|
+
native: string;
|
|
5
|
+
};
|
|
2
6
|
declare const EmojiMenu_base: typeof LitElement & import("../global/utils/types.js").Constructor<import("../global/lit/with-disposable.js").DisposableClass>;
|
|
3
7
|
export declare class EmojiMenu extends EmojiMenu_base {
|
|
4
8
|
firstUpdated(props: PropertyValues): void;
|
|
5
|
-
accessor onEmojiSelect: (
|
|
9
|
+
accessor onEmojiSelect: (emoji: EmojiSelection) => void;
|
|
6
10
|
accessor theme: 'light' | 'dark';
|
|
7
11
|
accessor emojiMenu: HTMLElement;
|
|
8
12
|
render(): import("lit-html").TemplateResult<1>;
|
|
@@ -68,6 +68,11 @@ let EmojiMenu = (() => {
|
|
|
68
68
|
theme: this.theme,
|
|
69
69
|
});
|
|
70
70
|
this.emojiMenu.append(picker);
|
|
71
|
+
// The picker is built imperatively, outside Lit's template, so nothing in
|
|
72
|
+
// this component takes it down when the menu goes away. It holds a
|
|
73
|
+
// document click listener and a `prefers-color-scheme` listener until it
|
|
74
|
+
// is unmounted, so unmount it with the menu.
|
|
75
|
+
this.disposables.add(() => picker.remove());
|
|
71
76
|
return result;
|
|
72
77
|
}
|
|
73
78
|
#onEmojiSelect_accessor_storage = __runInitializers(this, _onEmojiSelect_initializers, () => { });
|
|
@@ -10,6 +10,7 @@ export declare class CodeBlockComponent extends CaptionedBlockComponent<CodeBloc
|
|
|
10
10
|
private _inlineRangeProvider;
|
|
11
11
|
private readonly _localPreview$;
|
|
12
12
|
preview$: Signal<boolean>;
|
|
13
|
+
collapsed$: Signal<boolean>;
|
|
13
14
|
highlightTokens$: Signal<ThemedToken[][]>;
|
|
14
15
|
languageName$: Signal<string>;
|
|
15
16
|
get inlineEditor(): import("../std/inline/inline-editor.js").InlineEditor<{
|
|
@@ -25,14 +26,27 @@ export declare class CodeBlockComponent extends CaptionedBlockComponent<CodeBloc
|
|
|
25
26
|
get readonly(): boolean;
|
|
26
27
|
get langs(): import("shiki").BundledLanguageInfo[];
|
|
27
28
|
get highlighter(): CodeBlockHighlighter;
|
|
29
|
+
/**
|
|
30
|
+
* Whether line numbers are currently shown for this block, accounting for the
|
|
31
|
+
* global setting and feature flags.
|
|
32
|
+
*/
|
|
33
|
+
get showLineNumbers(): boolean;
|
|
28
34
|
get topContenteditableElement(): BlockComponent<import("../store/index.js").BlockModel<object>, import("../std/index.js").BlockService, string> | null;
|
|
29
35
|
private _updateHighlightTokens;
|
|
36
|
+
/**
|
|
37
|
+
* Stable signal: true when the global editor setting enables line numbers.
|
|
38
|
+
* Defaults to true. Updated reactively by an effect in connectedCallback.
|
|
39
|
+
* Using a writable signal (not reassigned to computed) keeps the reference
|
|
40
|
+
* stable so any downstream computed/effect that captures it stays correct.
|
|
41
|
+
*/
|
|
42
|
+
private readonly _showLineNumbersGlobal$;
|
|
30
43
|
connectedCallback(): void;
|
|
31
44
|
copyCode(): void;
|
|
32
45
|
get isCommentHighlighted(): boolean;
|
|
33
46
|
getUpdateComplete(): Promise<boolean>;
|
|
34
47
|
renderBlock(): TemplateResult<1>;
|
|
35
48
|
setWrap(wrap: boolean): void;
|
|
49
|
+
setCollapsed(collapsed: boolean): void;
|
|
36
50
|
private accessor _richTextElement;
|
|
37
51
|
accessor blockContainerStyles: {
|
|
38
52
|
margin: string;
|
|
@@ -35,7 +35,7 @@ var __runInitializers = (this && this.__runInitializers) || function (thisArg, i
|
|
|
35
35
|
import { CaptionedBlockComponent } from '../affine-components/caption/index.js';
|
|
36
36
|
import { focusTextModel } from '../affine-rich-text/index.js';
|
|
37
37
|
import { BRACKET_PAIRS, EDGELESS_TOP_CONTENTEDITABLE_SELECTOR, } from '../affine-shared/consts/index.js';
|
|
38
|
-
import { BlockCommentManager, DocModeProvider, NotificationProvider, } from '../affine-shared/services/index.js';
|
|
38
|
+
import { BlockCommentManager, DocModeProvider, EditorSettingProvider, NotificationProvider, } from '../affine-shared/services/index.js';
|
|
39
39
|
import { getViewportElement } from '../affine-shared/utils/index.js';
|
|
40
40
|
import { IS_MAC, IS_MOBILE } from '../global/env/index.js';
|
|
41
41
|
import { noop } from '../global/utils/index.js';
|
|
@@ -52,6 +52,7 @@ import { CodeBlockConfigExtension } from './code-block-config.js';
|
|
|
52
52
|
import { CodeBlockInlineManagerExtension } from './code-block-inline.js';
|
|
53
53
|
import { CodeBlockHighlighter } from './code-block-service.js';
|
|
54
54
|
import { CodeBlockPreviewIdentifier } from './code-preview-extension.js';
|
|
55
|
+
import { readGlobalLineNumbers, resolveShowLineNumbers, } from './line-numbers.js';
|
|
55
56
|
import { codeBlockStyles } from './styles.js';
|
|
56
57
|
let CodeBlockComponent = (() => {
|
|
57
58
|
let _classSuper = CaptionedBlockComponent;
|
|
@@ -70,6 +71,7 @@ let CodeBlockComponent = (() => {
|
|
|
70
71
|
}
|
|
71
72
|
return modelPreview;
|
|
72
73
|
});
|
|
74
|
+
this.collapsed$ = computed(() => !!this.model.props.collapsed$.value);
|
|
73
75
|
this.highlightTokens$ = signal([]);
|
|
74
76
|
this.languageName$ = computed(() => {
|
|
75
77
|
const lang = this.model.props.language$.value;
|
|
@@ -79,6 +81,13 @@ let CodeBlockComponent = (() => {
|
|
|
79
81
|
const matchedInfo = this.langs.find(info => info.id === lang);
|
|
80
82
|
return matchedInfo ? matchedInfo.name : 'Plain Text';
|
|
81
83
|
});
|
|
84
|
+
/**
|
|
85
|
+
* Stable signal: true when the global editor setting enables line numbers.
|
|
86
|
+
* Defaults to true. Updated reactively by an effect in connectedCallback.
|
|
87
|
+
* Using a writable signal (not reassigned to computed) keeps the reference
|
|
88
|
+
* stable so any downstream computed/effect that captures it stays correct.
|
|
89
|
+
*/
|
|
90
|
+
this._showLineNumbersGlobal$ = signal(true);
|
|
82
91
|
this.#_richTextElement_accessor_storage = __runInitializers(this, __richTextElement_initializers, null);
|
|
83
92
|
this.#blockContainerStyles_accessor_storage = (__runInitializers(this, __richTextElement_extraInitializers), {
|
|
84
93
|
margin: '18px 0',
|
|
@@ -113,6 +122,20 @@ let CodeBlockComponent = (() => {
|
|
|
113
122
|
get highlighter() {
|
|
114
123
|
return this.std.get(CodeBlockHighlighter);
|
|
115
124
|
}
|
|
125
|
+
/**
|
|
126
|
+
* Whether line numbers are currently shown for this block, accounting for the
|
|
127
|
+
* global setting and feature flags.
|
|
128
|
+
*/
|
|
129
|
+
get showLineNumbers() {
|
|
130
|
+
return resolveShowLineNumbers({
|
|
131
|
+
// Feature flag: mobile (or any other consumer) can hard-disable via
|
|
132
|
+
// CodeBlockConfigExtension.
|
|
133
|
+
featureEnabled: this.std.getOptional(CodeBlockConfigExtension.identifier)
|
|
134
|
+
?.showLineNumbers ?? true,
|
|
135
|
+
blockOverride: this.model.props.lineNumber,
|
|
136
|
+
globalDefault: this._showLineNumbersGlobal$.value,
|
|
137
|
+
});
|
|
138
|
+
}
|
|
116
139
|
get topContenteditableElement() {
|
|
117
140
|
if (this.std.get(DocModeProvider).getEditorMode() === 'edgeless') {
|
|
118
141
|
return this.closest(EDGELESS_TOP_CONTENTEDITABLE_SELECTOR);
|
|
@@ -167,6 +190,16 @@ let CodeBlockComponent = (() => {
|
|
|
167
190
|
}
|
|
168
191
|
connectedCallback() {
|
|
169
192
|
super.connectedCallback();
|
|
193
|
+
// Reactively sync the global line-number preference from EditorSettingProvider
|
|
194
|
+
// into the stable _showLineNumbersGlobal$ signal. The host owns the storage:
|
|
195
|
+
// the library only reads whatever the injected setting service exposes, the
|
|
196
|
+
// same seam as the telemetry adapter.
|
|
197
|
+
const editorSetting = this.std.getOptional(EditorSettingProvider);
|
|
198
|
+
if (editorSetting) {
|
|
199
|
+
this.disposables.add(effect(() => {
|
|
200
|
+
this._showLineNumbersGlobal$.value = readGlobalLineNumbers(editorSetting.setting$.value);
|
|
201
|
+
}));
|
|
202
|
+
}
|
|
170
203
|
// set highlight options getter used by "exportToHtml"
|
|
171
204
|
this.disposables.add(effect(() => {
|
|
172
205
|
this._updateHighlightTokens();
|
|
@@ -371,13 +404,11 @@ let CodeBlockComponent = (() => {
|
|
|
371
404
|
return result;
|
|
372
405
|
}
|
|
373
406
|
renderBlock() {
|
|
374
|
-
const showLineNumbers =
|
|
375
|
-
?.showLineNumbers ??
|
|
376
|
-
true) &&
|
|
377
|
-
(this.model.props.lineNumber ?? true);
|
|
407
|
+
const showLineNumbers = this.showLineNumbers;
|
|
378
408
|
const preview = this.preview$.value;
|
|
379
409
|
const previewContext = this.std.getOptional(CodeBlockPreviewIdentifier(this.model.props.language ?? ''));
|
|
380
410
|
const shouldRenderPreview = preview && previewContext;
|
|
411
|
+
const collapsed = this.collapsed$.value;
|
|
381
412
|
return html `
|
|
382
413
|
<div
|
|
383
414
|
class=${classMap({
|
|
@@ -386,6 +417,7 @@ let CodeBlockComponent = (() => {
|
|
|
386
417
|
mobile: IS_MOBILE,
|
|
387
418
|
wrap: this.model.props.wrap,
|
|
388
419
|
'disable-line-numbers': !showLineNumbers,
|
|
420
|
+
collapsed,
|
|
389
421
|
})}
|
|
390
422
|
>
|
|
391
423
|
<rich-text
|
|
@@ -413,9 +445,12 @@ let CodeBlockComponent = (() => {
|
|
|
413
445
|
}}
|
|
414
446
|
>
|
|
415
447
|
</rich-text>
|
|
448
|
+
${collapsed
|
|
449
|
+
? html `<div class="code-collapsed-fade" aria-hidden="true"></div>`
|
|
450
|
+
: nothing}
|
|
416
451
|
<div
|
|
417
452
|
style=${styleMap({
|
|
418
|
-
display: shouldRenderPreview ? undefined : 'none',
|
|
453
|
+
display: shouldRenderPreview && !collapsed ? undefined : 'none',
|
|
419
454
|
})}
|
|
420
455
|
contenteditable="false"
|
|
421
456
|
class="affine-code-block-preview"
|
|
@@ -429,6 +464,9 @@ let CodeBlockComponent = (() => {
|
|
|
429
464
|
setWrap(wrap) {
|
|
430
465
|
this.store.updateBlock(this.model, { wrap });
|
|
431
466
|
}
|
|
467
|
+
setCollapsed(collapsed) {
|
|
468
|
+
this.store.updateBlock(this.model, { collapsed });
|
|
469
|
+
}
|
|
432
470
|
#_richTextElement_accessor_storage;
|
|
433
471
|
get _richTextElement() { return this.#_richTextElement_accessor_storage; }
|
|
434
472
|
set _richTextElement(value) { this.#_richTextElement_accessor_storage = value; }
|
|
@@ -9,9 +9,11 @@ export declare class AffineCodeToolbar extends AffineCodeToolbar_base {
|
|
|
9
9
|
closeCurrentMenu: () => void;
|
|
10
10
|
private _toggleMoreMenu;
|
|
11
11
|
disconnectedCallback(): void;
|
|
12
|
+
connectedCallback(): void;
|
|
12
13
|
render(): import("lit-html").TemplateResult<1>;
|
|
13
14
|
private accessor _moreButton;
|
|
14
15
|
private accessor _moreMenuOpen;
|
|
16
|
+
private accessor _collapsed;
|
|
15
17
|
accessor context: CodeBlockToolbarContext;
|
|
16
18
|
accessor moreGroups: MenuItemGroup<CodeBlockToolbarContext>[];
|
|
17
19
|
accessor onActiveStatusChange: (active: boolean) => void;
|