@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
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { backgroundPlot, backgroundPoint } from './def.js';
|
|
2
|
+
/**
|
|
3
|
+
* The words a label actually says.
|
|
4
|
+
*
|
|
5
|
+
* The user's own text wins over the vocabulary, and the vocabulary over the
|
|
6
|
+
* shipped default — so a framework can be fully i18n'd while still letting the
|
|
7
|
+
* user rename an axis on the canvas.
|
|
8
|
+
*
|
|
9
|
+
* i18n goes through the house seam (`TranslationProvider` /
|
|
10
|
+
* {@link translateKey}), which the host injects and the library never bundles.
|
|
11
|
+
* A key the catalogue does not know falls back to the wording the declaration
|
|
12
|
+
* ships, and a declaration that ships none shows the RAW KEY — ugly on purpose,
|
|
13
|
+
* exactly as everywhere else in the library: a dangling key is a bug the host
|
|
14
|
+
* must see, not an excuse for us to invent somebody else's wording.
|
|
15
|
+
*/
|
|
16
|
+
export function backgroundLabelText(source, model, translation) {
|
|
17
|
+
if (source.prop !== undefined) {
|
|
18
|
+
const value = model[source.prop];
|
|
19
|
+
if (value !== undefined && value !== null)
|
|
20
|
+
return String(value);
|
|
21
|
+
}
|
|
22
|
+
if (source.labelKey !== undefined) {
|
|
23
|
+
const resolved = translation?.t(source.labelKey);
|
|
24
|
+
if (resolved !== undefined && resolved !== '')
|
|
25
|
+
return resolved;
|
|
26
|
+
return source.fallback ?? source.labelKey;
|
|
27
|
+
}
|
|
28
|
+
return source.fallback ?? '';
|
|
29
|
+
}
|
|
30
|
+
/** Whether a `visibleProp` gate is open. No gate means always drawn. */
|
|
31
|
+
export function backgroundVisible(visibleProp, model) {
|
|
32
|
+
return visibleProp === undefined ? true : Boolean(model[visibleProp]);
|
|
33
|
+
}
|
|
34
|
+
/** Rough per-character advance — only used to size generous hit boxes. */
|
|
35
|
+
const approxTextWidth = (text, fontSize) => Math.max(fontSize, text.length * fontSize * 0.6);
|
|
36
|
+
/** Padding so double-clicking a label is forgiving. */
|
|
37
|
+
const HIT_PAD = 6;
|
|
38
|
+
/**
|
|
39
|
+
* Every text of a declaration, in PAINTING ORDER: zone labels, then each axis'
|
|
40
|
+
* title followed by its end labels.
|
|
41
|
+
*
|
|
42
|
+
* One walk, used by both the renderer and the hit tester, so a label can never
|
|
43
|
+
* be drawn in one place and clicked in another.
|
|
44
|
+
*/
|
|
45
|
+
export function backgroundTexts(def) {
|
|
46
|
+
const texts = [];
|
|
47
|
+
for (const zone of def.zones ?? []) {
|
|
48
|
+
if (zone.label)
|
|
49
|
+
texts.push(zone.label);
|
|
50
|
+
}
|
|
51
|
+
for (const axis of def.axes ?? []) {
|
|
52
|
+
// The title shares the axis' visibility; the end labels have their own.
|
|
53
|
+
if (axis.title) {
|
|
54
|
+
texts.push(axis.visibleProp === undefined
|
|
55
|
+
? axis.title
|
|
56
|
+
: { ...axis.title, visibleProp: axis.visibleProp });
|
|
57
|
+
}
|
|
58
|
+
texts.push(...(axis.endLabels ?? []));
|
|
59
|
+
}
|
|
60
|
+
return texts;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Clickable boxes of every VISIBLE, EDITABLE label — those the declaration
|
|
64
|
+
* binds to a model prop; a label that only names an i18n key is vocabulary,
|
|
65
|
+
* not user text, and is not offered for editing.
|
|
66
|
+
*
|
|
67
|
+
* Positions come from the same declaration the renderer paints from, so the
|
|
68
|
+
* boxes track the drawn text by construction.
|
|
69
|
+
*/
|
|
70
|
+
export function backgroundLabelHits(def, model, w, h, translation) {
|
|
71
|
+
const plot = backgroundPlot(def, w, h);
|
|
72
|
+
const hits = [];
|
|
73
|
+
for (const text of backgroundTexts(def)) {
|
|
74
|
+
if (text.prop === undefined)
|
|
75
|
+
continue;
|
|
76
|
+
if (!backgroundVisible(text.visibleProp, model))
|
|
77
|
+
continue;
|
|
78
|
+
const words = backgroundLabelText(text, model, translation);
|
|
79
|
+
const size = text.style.size;
|
|
80
|
+
const tw = approxTextWidth(words, size);
|
|
81
|
+
const [ax, ay] = backgroundPoint(text.anchor, plot);
|
|
82
|
+
if (text.vertical) {
|
|
83
|
+
hits.push({
|
|
84
|
+
id: text.id,
|
|
85
|
+
prop: text.prop,
|
|
86
|
+
text: words,
|
|
87
|
+
minX: ax - size - HIT_PAD,
|
|
88
|
+
maxX: ax + size * 0.4 + HIT_PAD,
|
|
89
|
+
minY: ay - tw / 2 - HIT_PAD,
|
|
90
|
+
maxY: ay + tw / 2 + HIT_PAD,
|
|
91
|
+
});
|
|
92
|
+
continue;
|
|
93
|
+
}
|
|
94
|
+
const align = text.align ?? 'left';
|
|
95
|
+
const minX = align === 'right' ? ax - tw : align === 'center' ? ax - tw / 2 : ax;
|
|
96
|
+
const maxX = align === 'right' ? ax : align === 'center' ? ax + tw / 2 : ax + tw;
|
|
97
|
+
hits.push({
|
|
98
|
+
id: text.id,
|
|
99
|
+
prop: text.prop,
|
|
100
|
+
text: words,
|
|
101
|
+
minX: minX - HIT_PAD,
|
|
102
|
+
maxX: maxX + HIT_PAD,
|
|
103
|
+
minY: ay - size - HIT_PAD,
|
|
104
|
+
maxY: ay + size * 0.3 + HIT_PAD,
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
return hits;
|
|
108
|
+
}
|
|
109
|
+
/** First label whose padded box contains the element-local point, or null. */
|
|
110
|
+
export function hitTestBackgroundLabel(hits, lx, ly) {
|
|
111
|
+
for (const hit of hits) {
|
|
112
|
+
if (lx >= hit.minX && lx <= hit.maxX && ly >= hit.minY && ly <= hit.maxY) {
|
|
113
|
+
return hit;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return null;
|
|
117
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { GfxPrimitiveElementModel } from '../../std/gfx/index.js';
|
|
2
|
+
import type { ElementRenderer } from '../renderer/elements/index.js';
|
|
3
|
+
import type { FrameworkBackgroundDef } from './def.js';
|
|
4
|
+
/**
|
|
5
|
+
* Build the canvas renderer of one declaration. Pure: the same declaration
|
|
6
|
+
* always paints the same picture for the same model and size.
|
|
7
|
+
*/
|
|
8
|
+
export declare function createFrameworkBackgroundRenderer<T extends GfxPrimitiveElementModel>(def: FrameworkBackgroundDef): ElementRenderer<T>;
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
import { TranslationProvider } from '../../affine-shared/services/index.js';
|
|
2
|
+
import { backgroundColor, backgroundPlot, backgroundPoint, BROKEN_BACKGROUND_COLOR, DEFAULT_BACKGROUND_SURFACE, warnBrokenBackgroundColor, } from './def.js';
|
|
3
|
+
import { backgroundLabelText, backgroundTexts, backgroundVisible, } from './labels.js';
|
|
4
|
+
/**
|
|
5
|
+
* The framework-background PRIMITIVE (PF2.1): one renderer, driven entirely by
|
|
6
|
+
* a {@link FrameworkBackgroundDef}. A framework gets its background by
|
|
7
|
+
* declaring it — not one line of drawing code per framework.
|
|
8
|
+
*
|
|
9
|
+
* ## The painting pipeline
|
|
10
|
+
*
|
|
11
|
+
* Fixed, and the whole of it. Order is the only thing a declaration cannot
|
|
12
|
+
* change, because order is what makes two backgrounds look like the same
|
|
13
|
+
* product rather than two drawings:
|
|
14
|
+
*
|
|
15
|
+
* 1. the card — the element rectangle;
|
|
16
|
+
* 2. the washes, over the plot;
|
|
17
|
+
* 3. the zone tints;
|
|
18
|
+
* 4. the graduations of every axis;
|
|
19
|
+
* 5. the axis lines and their arrowheads;
|
|
20
|
+
* 6. every text — zone names, then per axis its title and its end labels.
|
|
21
|
+
*
|
|
22
|
+
* A declaration that says nothing but its size therefore paints a plain white
|
|
23
|
+
* rectangle: no axis, no zone, no decoration.
|
|
24
|
+
*
|
|
25
|
+
* ## Units
|
|
26
|
+
*
|
|
27
|
+
* Ratios scale with the element; everything beside them — margins, font sizes,
|
|
28
|
+
* stroke widths, label offsets — is FIXED model units, so the furniture stays
|
|
29
|
+
* legible however large the background is stretched. Only the plot interior
|
|
30
|
+
* moves.
|
|
31
|
+
*/
|
|
32
|
+
function roundRectPath(ctx, x, y, w, h, r) {
|
|
33
|
+
const rr = Math.min(r, w / 2, h / 2);
|
|
34
|
+
ctx.beginPath();
|
|
35
|
+
ctx.moveTo(x + rr, y);
|
|
36
|
+
ctx.arcTo(x + w, y, x + w, y + h, rr);
|
|
37
|
+
ctx.arcTo(x + w, y + h, x, y + h, rr);
|
|
38
|
+
ctx.arcTo(x, y + h, x, y, rr);
|
|
39
|
+
ctx.arcTo(x, y, x + w, y, rr);
|
|
40
|
+
ctx.closePath();
|
|
41
|
+
}
|
|
42
|
+
const HEX6 = /^#[0-9a-fA-F]{6}$/;
|
|
43
|
+
/**
|
|
44
|
+
* A wash stop, as `rgba(...)`.
|
|
45
|
+
*
|
|
46
|
+
* Only `#rrggbb` can carry an alpha this way. Anything else — a named CSS
|
|
47
|
+
* colour, a short hex, a palette entry that did not resolve — used to reach
|
|
48
|
+
* `parseInt` and produce `rgba(NaN,NaN,NaN,0.4)`, which paints nothing at all
|
|
49
|
+
* and says nothing about why. It now warns and paints
|
|
50
|
+
* {@link BROKEN_BACKGROUND_COLOR}.
|
|
51
|
+
*/
|
|
52
|
+
function rgba(hex, alpha) {
|
|
53
|
+
if (!HEX6.test(hex)) {
|
|
54
|
+
warnBrokenBackgroundColor(`wash colour "${hex}" is not a #rrggbb literal, so it cannot take an alpha`);
|
|
55
|
+
hex = BROKEN_BACKGROUND_COLOR;
|
|
56
|
+
}
|
|
57
|
+
const r = parseInt(hex.slice(1, 3), 16);
|
|
58
|
+
const g = parseInt(hex.slice(3, 5), 16);
|
|
59
|
+
const b = parseInt(hex.slice(5, 7), 16);
|
|
60
|
+
return `rgba(${r},${g},${b},${alpha})`;
|
|
61
|
+
}
|
|
62
|
+
function fontOf(style, fallbackFamily) {
|
|
63
|
+
const italic = style.italic ? 'italic ' : '';
|
|
64
|
+
const weight = style.weight ? `${style.weight} ` : '';
|
|
65
|
+
return `${italic}${weight}${style.size}px ${style.family ?? fallbackFamily}`;
|
|
66
|
+
}
|
|
67
|
+
/** The family a declaration that names none falls back to. */
|
|
68
|
+
const DEFAULT_FONT_FAMILY = 'Inter, sans-serif';
|
|
69
|
+
/**
|
|
70
|
+
* Build the canvas renderer of one declaration. Pure: the same declaration
|
|
71
|
+
* always paints the same picture for the same model and size.
|
|
72
|
+
*/
|
|
73
|
+
export function createFrameworkBackgroundRenderer(def) {
|
|
74
|
+
const palette = def.chrome?.palette;
|
|
75
|
+
const family = def.chrome?.fontFamily ?? DEFAULT_FONT_FAMILY;
|
|
76
|
+
const surface = def.chrome?.surface ?? DEFAULT_BACKGROUND_SURFACE;
|
|
77
|
+
const color = (c) => backgroundColor(c, palette);
|
|
78
|
+
const texts = backgroundTexts(def);
|
|
79
|
+
return (model, ctx, matrix, renderer) => {
|
|
80
|
+
const props = model;
|
|
81
|
+
const visible = (prop) => backgroundVisible(prop, props);
|
|
82
|
+
// The host's catalogue, resolved once per paint. Absent in a bare unit
|
|
83
|
+
// test (the renderer is called with three arguments) and absent in a host
|
|
84
|
+
// that ships no locale pack — both fall back to the declared wording.
|
|
85
|
+
const translation = renderer?.std.getOptional(TranslationProvider) ?? null;
|
|
86
|
+
const [, , w, h] = model.deserializedXYWH;
|
|
87
|
+
const cx = w / 2;
|
|
88
|
+
const cy = h / 2;
|
|
89
|
+
ctx.setTransform(matrix
|
|
90
|
+
.translateSelf(cx, cy)
|
|
91
|
+
.rotateSelf(model.rotate)
|
|
92
|
+
.translateSelf(-cx, -cy));
|
|
93
|
+
const plot = backgroundPlot(def, w, h);
|
|
94
|
+
const { x0, y0, x1, y1 } = plot;
|
|
95
|
+
const pw = plot.width;
|
|
96
|
+
const ph = plot.height;
|
|
97
|
+
const line = (ax, ay, bx, by) => {
|
|
98
|
+
ctx.beginPath();
|
|
99
|
+
ctx.moveTo(ax, ay);
|
|
100
|
+
ctx.lineTo(bx, by);
|
|
101
|
+
ctx.stroke();
|
|
102
|
+
};
|
|
103
|
+
const drawText = (words, ax, ay, style, align, vertical) => {
|
|
104
|
+
if (!words)
|
|
105
|
+
return;
|
|
106
|
+
if (vertical) {
|
|
107
|
+
ctx.save();
|
|
108
|
+
ctx.translate(ax, ay);
|
|
109
|
+
ctx.rotate(-Math.PI / 2);
|
|
110
|
+
ctx.font = fontOf(style, family);
|
|
111
|
+
ctx.fillStyle = color(style.color);
|
|
112
|
+
ctx.textAlign = align ?? 'center';
|
|
113
|
+
ctx.textBaseline = 'alphabetic';
|
|
114
|
+
ctx.fillText(words, 0, 0);
|
|
115
|
+
ctx.restore();
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
ctx.font = fontOf(style, family);
|
|
119
|
+
ctx.fillStyle = color(style.color);
|
|
120
|
+
ctx.textAlign = align ?? 'left';
|
|
121
|
+
ctx.textBaseline = 'alphabetic';
|
|
122
|
+
ctx.fillText(words, ax, ay);
|
|
123
|
+
};
|
|
124
|
+
// ── 1. The card ─────────────────────────────────────────────────────
|
|
125
|
+
const border = surface.border;
|
|
126
|
+
const inset = border ? border.width / 2 : 0;
|
|
127
|
+
roundRectPath(ctx, inset, inset, w - inset * 2, h - inset * 2, border?.radius ?? 0);
|
|
128
|
+
if (surface.fill) {
|
|
129
|
+
ctx.fillStyle = color(surface.fill);
|
|
130
|
+
ctx.fill();
|
|
131
|
+
}
|
|
132
|
+
if (border) {
|
|
133
|
+
ctx.strokeStyle = color(border.color);
|
|
134
|
+
ctx.lineWidth = border.width;
|
|
135
|
+
ctx.stroke();
|
|
136
|
+
}
|
|
137
|
+
// ── 2. Washes over the plot ─────────────────────────────────────────
|
|
138
|
+
const washes = def.chrome?.washes;
|
|
139
|
+
if (washes?.length) {
|
|
140
|
+
const variant = def.variantProp === undefined ? undefined : props[def.variantProp];
|
|
141
|
+
for (const wash of washes) {
|
|
142
|
+
if (wash.variants && !wash.variants.includes(String(variant)))
|
|
143
|
+
continue;
|
|
144
|
+
if (!visible(wash.visibleProp))
|
|
145
|
+
continue;
|
|
146
|
+
const gradient = ctx.createLinearGradient(x0, 0, x1, 0);
|
|
147
|
+
const hex = color(wash.color);
|
|
148
|
+
for (const [offset, alpha] of wash.stops) {
|
|
149
|
+
gradient.addColorStop(offset, rgba(hex, alpha));
|
|
150
|
+
}
|
|
151
|
+
ctx.fillStyle = gradient;
|
|
152
|
+
ctx.fillRect(x0, y0, pw, ph);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
// ── 3. Zone tints ───────────────────────────────────────────────────
|
|
156
|
+
for (const zone of def.zones ?? []) {
|
|
157
|
+
if (!zone.fill)
|
|
158
|
+
continue;
|
|
159
|
+
if (!visible(zone.fillVisibleProp))
|
|
160
|
+
continue;
|
|
161
|
+
ctx.fillStyle = color(zone.fill);
|
|
162
|
+
ctx.fillRect(x0 + zone.rect.x * pw, y0 + zone.rect.y * ph, zone.rect.w * pw, zone.rect.h * ph);
|
|
163
|
+
}
|
|
164
|
+
// ── 4. Graduations ──────────────────────────────────────────────────
|
|
165
|
+
for (const axis of def.axes ?? []) {
|
|
166
|
+
const graduations = axis.ticks;
|
|
167
|
+
if (!graduations || !visible(graduations.visibleProp))
|
|
168
|
+
continue;
|
|
169
|
+
ctx.strokeStyle = color(graduations.stroke.color);
|
|
170
|
+
ctx.lineWidth = graduations.stroke.width;
|
|
171
|
+
ctx.setLineDash(graduations.stroke.dash ? [...graduations.stroke.dash] : []);
|
|
172
|
+
for (const tick of graduations.ticks) {
|
|
173
|
+
if (axis.orientation === 'horizontal') {
|
|
174
|
+
const tx = x0 + tick.at * pw;
|
|
175
|
+
line(tx, y0, tx, y1);
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
// A vertical axis is graduated from the BOTTOM up: `at: 0` is the
|
|
179
|
+
// origin of the value it measures, not the top of the screen.
|
|
180
|
+
const ty = y1 - tick.at * ph;
|
|
181
|
+
line(x0, ty, x1, ty);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
ctx.setLineDash([]);
|
|
185
|
+
}
|
|
186
|
+
// ── 5. Axis lines and arrowheads ────────────────────────────────────
|
|
187
|
+
for (const axis of def.axes ?? []) {
|
|
188
|
+
if (!visible(axis.visibleProp))
|
|
189
|
+
continue;
|
|
190
|
+
drawAxis(ctx, axis, plot, color, line);
|
|
191
|
+
}
|
|
192
|
+
// ── 6. Every text, in declaration order ─────────────────────────────
|
|
193
|
+
for (const text of texts) {
|
|
194
|
+
if (!visible(text.visibleProp))
|
|
195
|
+
continue;
|
|
196
|
+
const [tx, ty] = backgroundPoint(text.anchor, plot);
|
|
197
|
+
drawText(backgroundLabelText(text, props, translation), tx, ty, text.style, text.align, text.vertical === true);
|
|
198
|
+
}
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* One axis: its line, stopping one unit inside the base of each arrowhead so
|
|
203
|
+
* the stroke never pokes past the tip at any zoom, then the filled triangles.
|
|
204
|
+
*/
|
|
205
|
+
function drawAxis(ctx, axis, plot, color, line) {
|
|
206
|
+
const { x0, y0, x1, y1 } = plot;
|
|
207
|
+
const arrow = axis.arrow ?? 'none';
|
|
208
|
+
const a = axis.arrowSize ?? 10;
|
|
209
|
+
const forward = arrow === 'forward' || arrow === 'both';
|
|
210
|
+
const backward = arrow === 'backward' || arrow === 'both';
|
|
211
|
+
ctx.strokeStyle = color(axis.stroke.color);
|
|
212
|
+
ctx.lineWidth = axis.stroke.width;
|
|
213
|
+
ctx.fillStyle = color(axis.stroke.color);
|
|
214
|
+
const triangle = (tipX, tipY, baseX, baseY, spreadX, spreadY) => {
|
|
215
|
+
ctx.beginPath();
|
|
216
|
+
ctx.moveTo(tipX, tipY);
|
|
217
|
+
ctx.lineTo(baseX - spreadX, baseY - spreadY);
|
|
218
|
+
ctx.lineTo(baseX + spreadX, baseY + spreadY);
|
|
219
|
+
ctx.closePath();
|
|
220
|
+
ctx.fill();
|
|
221
|
+
};
|
|
222
|
+
if (axis.orientation === 'horizontal') {
|
|
223
|
+
const y = y0 + axis.at * plot.height;
|
|
224
|
+
line(backward ? x0 + a - 1 : x0, y, forward ? x1 - a + 1 : x1, y);
|
|
225
|
+
if (forward)
|
|
226
|
+
triangle(x1, y, x1 - a, y, 0, a / 2);
|
|
227
|
+
if (backward)
|
|
228
|
+
triangle(x0, y, x0 + a, y, 0, a / 2);
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
// Vertical: `forward` points UP — where a reader expects "more" to be.
|
|
232
|
+
const x = x0 + axis.at * plot.width;
|
|
233
|
+
line(x, backward ? y1 - a + 1 : y1, x, forward ? y0 + a - 1 : y0);
|
|
234
|
+
if (forward)
|
|
235
|
+
triangle(x, y0, x, y0 + a, a / 2, 0);
|
|
236
|
+
if (backward)
|
|
237
|
+
triangle(x, y1, x, y1 - a, a / 2, 0);
|
|
238
|
+
}
|
|
@@ -11,6 +11,7 @@ export { ToolOverlay } from './renderer/tool-overlay.js';
|
|
|
11
11
|
import { getFontFacesByFontFamily, wrapFontFamily } from './utils/font.js';
|
|
12
12
|
export * from './adapters/index.js';
|
|
13
13
|
export * from './extensions/index.js';
|
|
14
|
+
export * from './framework-background/index.js';
|
|
14
15
|
export type { SurfaceContext } from './surface-block.js';
|
|
15
16
|
export { SurfaceBlockComponent } from './surface-block.js';
|
|
16
17
|
export { SurfaceBlockModel, SurfaceBlockSchema, SurfaceBlockSchemaExtension, } from './surface-model.js';
|
|
@@ -12,6 +12,7 @@ export { ToolOverlay } from './renderer/tool-overlay.js';
|
|
|
12
12
|
import { getFontFaces, getFontFacesByFontFamily, isSameFontFamily, wrapFontFamily, } from './utils/font.js';
|
|
13
13
|
export * from './adapters/index.js';
|
|
14
14
|
export * from './extensions/index.js';
|
|
15
|
+
export * from './framework-background/index.js';
|
|
15
16
|
export { SurfaceBlockComponent } from './surface-block.js';
|
|
16
17
|
export { SurfaceBlockModel, SurfaceBlockSchema, SurfaceBlockSchemaExtension, } from './surface-model.js';
|
|
17
18
|
export { SurfaceBlockTransformer } from './surface-transformer.js';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type Color, ColorScheme } from '../../affine-model/index.js';
|
|
2
|
-
import type
|
|
2
|
+
import { type IBound } from '../../global/gfx/index.js';
|
|
3
3
|
import type { BlockStdScope } from '../../std/index.js';
|
|
4
|
-
import type { GridManager, LayerManager, SurfaceBlockModel, Viewport } from '../../std/gfx/index.js';
|
|
4
|
+
import type { GfxLocalElementModel, GridManager, LayerManager, SurfaceBlockModel, Viewport } from '../../std/gfx/index.js';
|
|
5
5
|
import { Subject } from 'rxjs';
|
|
6
6
|
import type { SurfaceElementModel } from '../element-model/base.js';
|
|
7
7
|
import type { Overlay } from './overlay.js';
|
|
@@ -22,13 +22,66 @@ type RendererOptions = {
|
|
|
22
22
|
gridManager: GridManager;
|
|
23
23
|
surfaceModel: SurfaceBlockModel;
|
|
24
24
|
};
|
|
25
|
+
export type CanvasRenderPassMetrics = {
|
|
26
|
+
overlayCount: number;
|
|
27
|
+
placeholderElementCount: number;
|
|
28
|
+
renderByBoundCallCount: number;
|
|
29
|
+
renderedElementCount: number;
|
|
30
|
+
visibleElementCount: number;
|
|
31
|
+
};
|
|
32
|
+
export type CanvasMemorySnapshot = {
|
|
33
|
+
bytes: number;
|
|
34
|
+
datasetLayerId: string | null;
|
|
35
|
+
height: number;
|
|
36
|
+
kind: 'main' | 'stacking';
|
|
37
|
+
width: number;
|
|
38
|
+
zIndex: string;
|
|
39
|
+
};
|
|
40
|
+
export type CanvasRendererDebugMetrics = {
|
|
41
|
+
canvasLayerCount: number;
|
|
42
|
+
canvasMemoryBytes: number;
|
|
43
|
+
canvasMemorySnapshots: CanvasMemorySnapshot[];
|
|
44
|
+
canvasMemoryMegabytes: number;
|
|
45
|
+
canvasPixelCount: number;
|
|
46
|
+
coalescedRefreshCount: number;
|
|
47
|
+
dirtyLayerRenderCount: number;
|
|
48
|
+
fallbackElementCount: number;
|
|
49
|
+
lastRenderDurationMs: number;
|
|
50
|
+
lastRenderMetrics: CanvasRenderPassMetrics;
|
|
51
|
+
maxRenderDurationMs: number;
|
|
52
|
+
pooledStackingCanvasCount: number;
|
|
53
|
+
refreshCount: number;
|
|
54
|
+
renderCount: number;
|
|
55
|
+
stackingCanvasCount: number;
|
|
56
|
+
totalLayerCount: number;
|
|
57
|
+
totalRenderDurationMs: number;
|
|
58
|
+
visibleStackingCanvasCount: number;
|
|
59
|
+
};
|
|
60
|
+
type RefreshTarget = {
|
|
61
|
+
type: 'all';
|
|
62
|
+
} | {
|
|
63
|
+
type: 'main';
|
|
64
|
+
} | {
|
|
65
|
+
type: 'element';
|
|
66
|
+
element: SurfaceElementModel | GfxLocalElementModel;
|
|
67
|
+
} | {
|
|
68
|
+
type: 'elements';
|
|
69
|
+
elements: Array<SurfaceElementModel | GfxLocalElementModel>;
|
|
70
|
+
};
|
|
25
71
|
export declare class CanvasRenderer {
|
|
26
72
|
private _container;
|
|
27
73
|
private readonly _disposables;
|
|
74
|
+
private readonly _gfx;
|
|
28
75
|
private readonly _turboEnabled;
|
|
29
76
|
private readonly _overlays;
|
|
30
77
|
private _refreshRafId;
|
|
31
78
|
private _stackingCanvas;
|
|
79
|
+
private readonly _stackingCanvasPool;
|
|
80
|
+
private readonly _stackingCanvasState;
|
|
81
|
+
private readonly _dirtyStackingCanvasIndexes;
|
|
82
|
+
private _mainCanvasDirty;
|
|
83
|
+
private _needsFullRender;
|
|
84
|
+
private _debugMetrics;
|
|
32
85
|
canvas: HTMLCanvasElement;
|
|
33
86
|
ctx: CanvasRenderingContext2D;
|
|
34
87
|
std: BlockStdScope;
|
|
@@ -52,9 +105,20 @@ export declare class CanvasRenderer {
|
|
|
52
105
|
* It is not recommended to set width and height to 100%.
|
|
53
106
|
*/
|
|
54
107
|
private _canvasSizeUpdater;
|
|
108
|
+
private _applyStackingCanvasLayout;
|
|
109
|
+
private _clampBoundToViewport;
|
|
110
|
+
private _createCanvasForLayer;
|
|
111
|
+
private _findLayerIndexByElement;
|
|
112
|
+
private _getLayerRenderBound;
|
|
113
|
+
private _getResolvedStackingCanvasBound;
|
|
114
|
+
private _invalidate;
|
|
115
|
+
private _resetPooledCanvas;
|
|
55
116
|
private _initStackingCanvas;
|
|
56
117
|
private _initViewport;
|
|
118
|
+
private _createRenderPassStats;
|
|
119
|
+
private _getCanvasMemorySnapshots;
|
|
57
120
|
private _render;
|
|
121
|
+
private _lastDebugSnapshot;
|
|
58
122
|
private _renderByBound;
|
|
59
123
|
private _resetSize;
|
|
60
124
|
private _watchSurface;
|
|
@@ -70,7 +134,9 @@ export declare class CanvasRenderer {
|
|
|
70
134
|
getColorScheme(): ColorScheme;
|
|
71
135
|
getColorValue(color: Color, fallback?: Color, real?: boolean): string;
|
|
72
136
|
getPropertyValue(property: string): string;
|
|
73
|
-
|
|
137
|
+
getDebugMetrics(): CanvasRendererDebugMetrics;
|
|
138
|
+
resetDebugMetrics(): void;
|
|
139
|
+
refresh(target?: RefreshTarget): void;
|
|
74
140
|
removeOverlay(overlay: Overlay): void;
|
|
75
141
|
}
|
|
76
142
|
export {};
|