@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,188 @@
|
|
|
1
|
+
import type { Bound } from '../../global/gfx/index.js';
|
|
2
|
+
import { type FrameworkBackgroundDef, type Ratio } from './def.js';
|
|
3
|
+
import type { BackgroundModelLike } from './labels.js';
|
|
4
|
+
/**
|
|
5
|
+
* The framework-background declaration read as EVALUATION FACTS (PF5.15/PF5.16).
|
|
6
|
+
*
|
|
7
|
+
* `def.ts` describes a background so it can be PAINTED. The same declaration
|
|
8
|
+
* already says everything a rule needs to know about the frame of reference —
|
|
9
|
+
* which axes exist, which way they run, where one zone ends and the next
|
|
10
|
+
* begins — and this file is the semantic accessor onto that, so the validation
|
|
11
|
+
* engine never re-derives geometry a framework already declared, and never
|
|
12
|
+
* imports a renderer to find out.
|
|
13
|
+
*
|
|
14
|
+
* Pure data in, pure data out: no canvas, no element model, no DI. Everything
|
|
15
|
+
* here is a function of the declaration (plus, for the model-space helpers, the
|
|
16
|
+
* bounds of ONE instance of it, and — for the transition bands — the bag of
|
|
17
|
+
* props that instance carries, which is data too).
|
|
18
|
+
*/
|
|
19
|
+
/**
|
|
20
|
+
* An axis, as a rule sees it.
|
|
21
|
+
*
|
|
22
|
+
* {@link forward} is the unit vector of INCREASING value in MODEL space, where
|
|
23
|
+
* `y` grows DOWNWARDS. So a horizontal axis runs `[1, 0]` and a vertical one
|
|
24
|
+
* `[0, -1]` — "more" is up, which is the opposite of increasing screen `y` and
|
|
25
|
+
* exactly what {@link BackgroundAxisDef} documents.
|
|
26
|
+
*
|
|
27
|
+
* Derived from `orientation` rather than from a new declared field: the
|
|
28
|
+
* direction of progression is not a free choice a framework makes, it is the
|
|
29
|
+
* convention every axis in `def.ts` is already written against ("`forward` is
|
|
30
|
+
* the direction of increasing value"). A framework that one day needs a
|
|
31
|
+
* reversed axis adds a field there and this reads it — until then, inventing
|
|
32
|
+
* one would be a knob nobody turns.
|
|
33
|
+
*
|
|
34
|
+
* ponytail: a ROTATED instance is not accounted for. `forward` is a function of
|
|
35
|
+
* the declaration alone, so it describes an upright background — turn a map
|
|
36
|
+
* 180° on the canvas and W1 reads a correct change arrow as pointing backwards
|
|
37
|
+
* (and a correct one as fine), because the axis it is compared against never
|
|
38
|
+
* turned with it. Distinct from the reversed-axis case above: that one is a
|
|
39
|
+
* framework declaring a different convention, this one is a user rotating one
|
|
40
|
+
* instance of the same convention. Left as is because nothing rotates a
|
|
41
|
+
* framework background today and no user has asked to. Upgrade: fold the
|
|
42
|
+
* instance's `rotate` into the vector — a rotation of `forward` by the
|
|
43
|
+
* instance's angle at the one call site that has the element in hand, not a new
|
|
44
|
+
* declared field.
|
|
45
|
+
*/
|
|
46
|
+
export interface BackgroundAxisFact {
|
|
47
|
+
id: string;
|
|
48
|
+
orientation: 'horizontal' | 'vertical';
|
|
49
|
+
/** Unit vector of increasing value, in model space (`y` grows downwards). */
|
|
50
|
+
forward: readonly [number, number];
|
|
51
|
+
/**
|
|
52
|
+
* The model prop that SHOWS this axis' graduations — the dividers a reader
|
|
53
|
+
* sees the zone transitions BY.
|
|
54
|
+
*
|
|
55
|
+
* `undefined` when the axis declares no graduations, or declares them
|
|
56
|
+
* ungated, i.e. always drawn. Read straight off
|
|
57
|
+
* {@link BackgroundTicksDef.visibleProp}: the line that paints the frontier
|
|
58
|
+
* is the line that names its own toggle, so a rule judging against that
|
|
59
|
+
* frontier and the renderer drawing it can never disagree about whether it
|
|
60
|
+
* is there.
|
|
61
|
+
*/
|
|
62
|
+
transitionsVisibleProp?: string;
|
|
63
|
+
}
|
|
64
|
+
/** The declared axes, as facts. Empty for a background that declares none. */
|
|
65
|
+
export declare function backgroundAxisFacts(def: FrameworkBackgroundDef): readonly BackgroundAxisFact[];
|
|
66
|
+
/** The declared axis with this id, as a fact. */
|
|
67
|
+
export declare function backgroundAxisFact(def: FrameworkBackgroundDef, axisId: string): BackgroundAxisFact | undefined;
|
|
68
|
+
/**
|
|
69
|
+
* Where one zone ends and the next begins, as PLOT RATIOS, split by the plot
|
|
70
|
+
* axis the transition runs across.
|
|
71
|
+
*
|
|
72
|
+
* `x` holds the ratios of the vertical lines separating zones left to right —
|
|
73
|
+
* on a Wardley map, the three phase transitions (`0.175`, `0.4`, `0.7`). `y`
|
|
74
|
+
* holds the horizontal ones.
|
|
75
|
+
*
|
|
76
|
+
* INTERIOR edges only: `0` and `1` are the borders of the plot, not transitions
|
|
77
|
+
* between two zones, and a rule saying "sit on a transition" must not accept
|
|
78
|
+
* the left edge of the map as one. Sorted and de-duplicated, so adjacent zones
|
|
79
|
+
* sharing an edge contribute it once.
|
|
80
|
+
*/
|
|
81
|
+
export declare function backgroundZoneBoundaries(def: FrameworkBackgroundDef): {
|
|
82
|
+
x: readonly Ratio[];
|
|
83
|
+
y: readonly Ratio[];
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* The same transitions in MODEL coordinates, for ONE instance of the
|
|
87
|
+
* background occupying `bound`.
|
|
88
|
+
*
|
|
89
|
+
* Ratios are of the PLOT, i.e. the element box minus the declared margin — so
|
|
90
|
+
* this is the only place that knows a transition drawn at `0.175` does not sit
|
|
91
|
+
* at 17.5% of the element's width. A rule asking "is this element on a phase
|
|
92
|
+
* transition" compares against these numbers and nothing else.
|
|
93
|
+
*/
|
|
94
|
+
export declare function backgroundBoundaryCoords(def: FrameworkBackgroundDef, bound: Bound): {
|
|
95
|
+
x: number[];
|
|
96
|
+
y: number[];
|
|
97
|
+
};
|
|
98
|
+
/**
|
|
99
|
+
* One transition, taken as the BAND it really is, in model coordinates.
|
|
100
|
+
*
|
|
101
|
+
* The line a renderer draws is where two zones meet; the band is the region in
|
|
102
|
+
* which a reader would say something is "at" that frontier. Wardley calls it
|
|
103
|
+
* the zone of PUNCTUATED EQUILIBRIUM — inertia lives at the transition, not on
|
|
104
|
+
* a coordinate — and it is the shape any rule asking "is this on the boundary"
|
|
105
|
+
* has to measure against.
|
|
106
|
+
*/
|
|
107
|
+
export interface BackgroundTransitionBand {
|
|
108
|
+
/**
|
|
109
|
+
* The two zones the transition separates, `custom-built|product`. A name, not
|
|
110
|
+
* an index: it comes from the declaration, so it survives a zone being added
|
|
111
|
+
* between two others and says which frontier a finding is about.
|
|
112
|
+
*/
|
|
113
|
+
id: string;
|
|
114
|
+
/** The transition line itself. The band's centre. */
|
|
115
|
+
at: number;
|
|
116
|
+
/** The band, in model coordinates: `at` ± half the declared width. */
|
|
117
|
+
min: number;
|
|
118
|
+
max: number;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Whether the part of ONE instance that DRAWS the transitions across a plot
|
|
122
|
+
* axis is currently shown.
|
|
123
|
+
*
|
|
124
|
+
* The frontier a rule measures against is only a frontier the user can see
|
|
125
|
+
* while the graduations that draw it are on the canvas. A framework says which
|
|
126
|
+
* prop shows them — `axes[].ticks.visibleProp`, the very line the renderer
|
|
127
|
+
* reads — and this resolves it against the instance's own props.
|
|
128
|
+
*
|
|
129
|
+
* `true` when nothing gates them: an axis with ungated graduations, an axis
|
|
130
|
+
* with none at all, a framework declaring no axis. A background that never
|
|
131
|
+
* offered the toggle is a background whose frontiers are always there, which is
|
|
132
|
+
* exactly the behaviour every framework had before this existed.
|
|
133
|
+
*/
|
|
134
|
+
export declare function backgroundTransitionsShown(def: FrameworkBackgroundDef, plotAxis: 'x' | 'y', model: BackgroundModelLike | undefined): boolean;
|
|
135
|
+
/**
|
|
136
|
+
* Every model prop that can make a transition appear or disappear on this
|
|
137
|
+
* background.
|
|
138
|
+
*
|
|
139
|
+
* The reactive half of {@link backgroundTransitionsShown}: whoever recomputes
|
|
140
|
+
* verdicts has to know which props change one. Data, so the engine learns the
|
|
141
|
+
* list from the declarations it was handed and names no framework.
|
|
142
|
+
*/
|
|
143
|
+
export declare function backgroundTransitionVisibleProps(def: FrameworkBackgroundDef): readonly string[];
|
|
144
|
+
/**
|
|
145
|
+
* Every transition of ONE instance of the background, as named BANDS in model
|
|
146
|
+
* coordinates.
|
|
147
|
+
*
|
|
148
|
+
* The width comes from {@link FrameworkBackgroundDef.transitionBandWidth},
|
|
149
|
+
* which is a ratio of the plot — so a map stretched to twice its size keeps a
|
|
150
|
+
* band twice as wide in model units and exactly as wide to the eye. That is the
|
|
151
|
+
* whole point of declaring it there rather than as a number of units in a rule:
|
|
152
|
+
* an absolute slack is four times as strict on a map four times as big, and a
|
|
153
|
+
* user who drops a symbol on the drawn line has no way of knowing which.
|
|
154
|
+
*
|
|
155
|
+
* Empty on a background that declares no width: silence, not a guessed one.
|
|
156
|
+
*
|
|
157
|
+
* ## Two shapes a band may not silently take
|
|
158
|
+
*
|
|
159
|
+
* A declaration is data, and data gets typos. Both are caught here rather than
|
|
160
|
+
* downstream, because the failure modes are invisible on the canvas:
|
|
161
|
+
*
|
|
162
|
+
* - a width of `0` or less would make an INVERTED band (`min > max`) that
|
|
163
|
+
* nothing can be inside — a rule requiring one would indict every subject on
|
|
164
|
+
* the board, over a number nobody meant. The requirement is dropped instead;
|
|
165
|
+
* - a width wider than the gap between two transitions would make OVERLAPPING
|
|
166
|
+
* bands, so a point could be "at" two frontiers at once and the middle of a
|
|
167
|
+
* phase would qualify as a boundary. The width is narrowed to that gap.
|
|
168
|
+
*
|
|
169
|
+
* Both warn once in the console: a declaration that quietly means something
|
|
170
|
+
* other than what it says is worse than one that fails loudly.
|
|
171
|
+
*
|
|
172
|
+
* ## A hidden frontier is not a frontier
|
|
173
|
+
*
|
|
174
|
+
* `model` is the bag of props of the instance being measured. Given one, an
|
|
175
|
+
* axis whose graduations the user has switched off contributes NO band along
|
|
176
|
+
* its plot axis (see {@link backgroundTransitionsShown}) — a caller asking "is
|
|
177
|
+
* this at a transition" gets the same silence as on a frame that declares no
|
|
178
|
+
* transition at all. Nothing is judged against a line nobody can see.
|
|
179
|
+
*
|
|
180
|
+
* Omitting `model` asks the question of the DECLARATION alone: every declared
|
|
181
|
+
* transition, whatever any instance shows. That is what a caller describing the
|
|
182
|
+
* map's meaning rather than judging its drawing wants, and it is what every
|
|
183
|
+
* caller got before this argument existed.
|
|
184
|
+
*/
|
|
185
|
+
export declare function backgroundTransitionBands(def: FrameworkBackgroundDef, bound: Bound, model?: BackgroundModelLike): {
|
|
186
|
+
x: BackgroundTransitionBand[];
|
|
187
|
+
y: BackgroundTransitionBand[];
|
|
188
|
+
};
|
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
import { backgroundPlot, } from './def.js';
|
|
2
|
+
const FORWARD = {
|
|
3
|
+
horizontal: [1, 0],
|
|
4
|
+
vertical: [0, -1],
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Frozen at module load, and not as a formality.
|
|
8
|
+
*
|
|
9
|
+
* `as const` is a COMPILE-TIME claim: it stops `FORWARD.horizontal[0] = -1`
|
|
10
|
+
* from type-checking and does nothing whatsoever at runtime. These vectors are
|
|
11
|
+
* handed out by reference — {@link backgroundAxisFacts} returns the constant
|
|
12
|
+
* itself, not a copy — and they are what
|
|
13
|
+
* `evaluateOrientationAgainstAxis` multiplies a subject's direction against. A
|
|
14
|
+
* single write into one of them flips the axis convention for the whole
|
|
15
|
+
* process: correct arrows start reporting as violations, on every map, for the
|
|
16
|
+
* rest of the session.
|
|
17
|
+
*
|
|
18
|
+
* `AuditProvider` made that reachable — the audit seam hands the facts to a
|
|
19
|
+
* host-supplied assistant (PF14.1). `requestAudit` clones the whole request, so
|
|
20
|
+
* that path is closed at the boundary; this closes the class at the SOURCE, for
|
|
21
|
+
* every other caller of {@link collectAuditFacts} and of these accessors,
|
|
22
|
+
* present and future. Two defences, and the cheap one is the one that cannot be
|
|
23
|
+
* forgotten by a caller who has not read the boundary.
|
|
24
|
+
*
|
|
25
|
+
* Cost: three `Object.freeze` calls, once, at module load. Effect: a mutation
|
|
26
|
+
* throws in strict mode (every ES module) instead of silently corrupting the
|
|
27
|
+
* engine three frames later.
|
|
28
|
+
*/
|
|
29
|
+
Object.freeze(FORWARD.horizontal);
|
|
30
|
+
Object.freeze(FORWARD.vertical);
|
|
31
|
+
Object.freeze(FORWARD);
|
|
32
|
+
/** The declared axes, as facts. Empty for a background that declares none. */
|
|
33
|
+
export function backgroundAxisFacts(def) {
|
|
34
|
+
return (def.axes ?? []).map(axis => ({
|
|
35
|
+
id: axis.id,
|
|
36
|
+
orientation: axis.orientation,
|
|
37
|
+
forward: FORWARD[axis.orientation],
|
|
38
|
+
...(axis.ticks?.visibleProp !== undefined
|
|
39
|
+
? { transitionsVisibleProp: axis.ticks.visibleProp }
|
|
40
|
+
: {}),
|
|
41
|
+
}));
|
|
42
|
+
}
|
|
43
|
+
/** The declared axis with this id, as a fact. */
|
|
44
|
+
export function backgroundAxisFact(def, axisId) {
|
|
45
|
+
return backgroundAxisFacts(def).find(axis => axis.id === axisId);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Where one zone ends and the next begins, as PLOT RATIOS, split by the plot
|
|
49
|
+
* axis the transition runs across.
|
|
50
|
+
*
|
|
51
|
+
* `x` holds the ratios of the vertical lines separating zones left to right —
|
|
52
|
+
* on a Wardley map, the three phase transitions (`0.175`, `0.4`, `0.7`). `y`
|
|
53
|
+
* holds the horizontal ones.
|
|
54
|
+
*
|
|
55
|
+
* INTERIOR edges only: `0` and `1` are the borders of the plot, not transitions
|
|
56
|
+
* between two zones, and a rule saying "sit on a transition" must not accept
|
|
57
|
+
* the left edge of the map as one. Sorted and de-duplicated, so adjacent zones
|
|
58
|
+
* sharing an edge contribute it once.
|
|
59
|
+
*/
|
|
60
|
+
export function backgroundZoneBoundaries(def) {
|
|
61
|
+
const x = new Set();
|
|
62
|
+
const y = new Set();
|
|
63
|
+
for (const zone of def.zones ?? []) {
|
|
64
|
+
const { rect } = zone;
|
|
65
|
+
for (const [set, edge] of [
|
|
66
|
+
[x, rect.x],
|
|
67
|
+
[x, rect.x + rect.w],
|
|
68
|
+
[y, rect.y],
|
|
69
|
+
[y, rect.y + rect.h],
|
|
70
|
+
]) {
|
|
71
|
+
if (edge > 0 && edge < 1)
|
|
72
|
+
set.add(edge);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
const sorted = (set) => Array.from(set).sort((a, b) => a - b);
|
|
76
|
+
return { x: sorted(x), y: sorted(y) };
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* The same transitions in MODEL coordinates, for ONE instance of the
|
|
80
|
+
* background occupying `bound`.
|
|
81
|
+
*
|
|
82
|
+
* Ratios are of the PLOT, i.e. the element box minus the declared margin — so
|
|
83
|
+
* this is the only place that knows a transition drawn at `0.175` does not sit
|
|
84
|
+
* at 17.5% of the element's width. A rule asking "is this element on a phase
|
|
85
|
+
* transition" compares against these numbers and nothing else.
|
|
86
|
+
*/
|
|
87
|
+
export function backgroundBoundaryCoords(def, bound) {
|
|
88
|
+
const plot = backgroundPlot(def, bound.w, bound.h);
|
|
89
|
+
const ratios = backgroundZoneBoundaries(def);
|
|
90
|
+
return {
|
|
91
|
+
x: ratios.x.map(at => bound.x + plot.x0 + at * plot.width),
|
|
92
|
+
y: ratios.y.map(at => bound.y + plot.y0 + at * plot.height),
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
/** The plot axis a transition drawn by this axis' graduations runs across. */
|
|
96
|
+
function plotAxisOf(orientation) {
|
|
97
|
+
// A HORIZONTAL axis is graduated by VERTICAL lines, which sit at `x` ratios.
|
|
98
|
+
return orientation === 'horizontal' ? 'x' : 'y';
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Whether a visibility gate is open, asked ON BEHALF OF A RULE.
|
|
102
|
+
*
|
|
103
|
+
* Deliberately not `backgroundVisible`, which the renderer uses. Painting asks
|
|
104
|
+
* "do I draw this", and a prop the model does not carry means there is nothing
|
|
105
|
+
* to draw. A rule asks the opposite question — "has the user HIDDEN the line I
|
|
106
|
+
* am about to judge against" — and a prop the model does not carry is not the
|
|
107
|
+
* user hiding anything. So the gate closes only on a value the instance
|
|
108
|
+
* actually carries and that reads false; an instance that has never heard of
|
|
109
|
+
* the prop keeps the rule it has always had.
|
|
110
|
+
*
|
|
111
|
+
* In a real document the two never diverge: a visibility toggle is declared
|
|
112
|
+
* `@field(true)`, so every element carries it from the moment it is created.
|
|
113
|
+
*/
|
|
114
|
+
function gateOpen(prop, model) {
|
|
115
|
+
if (model === undefined)
|
|
116
|
+
return true;
|
|
117
|
+
const value = model[prop];
|
|
118
|
+
return value === undefined ? true : Boolean(value);
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Whether the part of ONE instance that DRAWS the transitions across a plot
|
|
122
|
+
* axis is currently shown.
|
|
123
|
+
*
|
|
124
|
+
* The frontier a rule measures against is only a frontier the user can see
|
|
125
|
+
* while the graduations that draw it are on the canvas. A framework says which
|
|
126
|
+
* prop shows them — `axes[].ticks.visibleProp`, the very line the renderer
|
|
127
|
+
* reads — and this resolves it against the instance's own props.
|
|
128
|
+
*
|
|
129
|
+
* `true` when nothing gates them: an axis with ungated graduations, an axis
|
|
130
|
+
* with none at all, a framework declaring no axis. A background that never
|
|
131
|
+
* offered the toggle is a background whose frontiers are always there, which is
|
|
132
|
+
* exactly the behaviour every framework had before this existed.
|
|
133
|
+
*/
|
|
134
|
+
export function backgroundTransitionsShown(def, plotAxis, model) {
|
|
135
|
+
let gated = false;
|
|
136
|
+
for (const axis of def.axes ?? []) {
|
|
137
|
+
const prop = axis.ticks?.visibleProp;
|
|
138
|
+
if (prop === undefined)
|
|
139
|
+
continue;
|
|
140
|
+
if (plotAxisOf(axis.orientation) !== plotAxis)
|
|
141
|
+
continue;
|
|
142
|
+
gated = true;
|
|
143
|
+
// Several axes may graduate the same plot axis; one of them being drawn is
|
|
144
|
+
// enough for the frontier to be on the canvas.
|
|
145
|
+
if (gateOpen(prop, model))
|
|
146
|
+
return true;
|
|
147
|
+
}
|
|
148
|
+
return !gated;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Every model prop that can make a transition appear or disappear on this
|
|
152
|
+
* background.
|
|
153
|
+
*
|
|
154
|
+
* The reactive half of {@link backgroundTransitionsShown}: whoever recomputes
|
|
155
|
+
* verdicts has to know which props change one. Data, so the engine learns the
|
|
156
|
+
* list from the declarations it was handed and names no framework.
|
|
157
|
+
*/
|
|
158
|
+
export function backgroundTransitionVisibleProps(def) {
|
|
159
|
+
const props = [];
|
|
160
|
+
for (const axis of def.axes ?? []) {
|
|
161
|
+
const prop = axis.ticks?.visibleProp;
|
|
162
|
+
if (prop !== undefined && !props.includes(prop))
|
|
163
|
+
props.push(prop);
|
|
164
|
+
}
|
|
165
|
+
return props;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Complain once per distinct problem. These accessors run on every evaluation,
|
|
169
|
+
* so a bare `console.warn` about a malformed declaration would fill the console
|
|
170
|
+
* at 8 Hz while somebody drags.
|
|
171
|
+
*/
|
|
172
|
+
const warned = new Set();
|
|
173
|
+
function warnOnce(reason) {
|
|
174
|
+
if (warned.has(reason))
|
|
175
|
+
return;
|
|
176
|
+
warned.add(reason);
|
|
177
|
+
console.warn(`[framework-background] ${reason}`);
|
|
178
|
+
}
|
|
179
|
+
/** The ids of the zones meeting at `edge`, along one plot axis. */
|
|
180
|
+
function zonesMeetingAt(def, axis, edge) {
|
|
181
|
+
let before = '';
|
|
182
|
+
let after = '';
|
|
183
|
+
for (const { id, rect } of def.zones ?? []) {
|
|
184
|
+
const start = axis === 'x' ? rect.x : rect.y;
|
|
185
|
+
const span = axis === 'x' ? rect.w : rect.h;
|
|
186
|
+
if (start + span === edge)
|
|
187
|
+
before = id;
|
|
188
|
+
if (start === edge)
|
|
189
|
+
after = id;
|
|
190
|
+
}
|
|
191
|
+
return `${before}|${after}`;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Every transition of ONE instance of the background, as named BANDS in model
|
|
195
|
+
* coordinates.
|
|
196
|
+
*
|
|
197
|
+
* The width comes from {@link FrameworkBackgroundDef.transitionBandWidth},
|
|
198
|
+
* which is a ratio of the plot — so a map stretched to twice its size keeps a
|
|
199
|
+
* band twice as wide in model units and exactly as wide to the eye. That is the
|
|
200
|
+
* whole point of declaring it there rather than as a number of units in a rule:
|
|
201
|
+
* an absolute slack is four times as strict on a map four times as big, and a
|
|
202
|
+
* user who drops a symbol on the drawn line has no way of knowing which.
|
|
203
|
+
*
|
|
204
|
+
* Empty on a background that declares no width: silence, not a guessed one.
|
|
205
|
+
*
|
|
206
|
+
* ## Two shapes a band may not silently take
|
|
207
|
+
*
|
|
208
|
+
* A declaration is data, and data gets typos. Both are caught here rather than
|
|
209
|
+
* downstream, because the failure modes are invisible on the canvas:
|
|
210
|
+
*
|
|
211
|
+
* - a width of `0` or less would make an INVERTED band (`min > max`) that
|
|
212
|
+
* nothing can be inside — a rule requiring one would indict every subject on
|
|
213
|
+
* the board, over a number nobody meant. The requirement is dropped instead;
|
|
214
|
+
* - a width wider than the gap between two transitions would make OVERLAPPING
|
|
215
|
+
* bands, so a point could be "at" two frontiers at once and the middle of a
|
|
216
|
+
* phase would qualify as a boundary. The width is narrowed to that gap.
|
|
217
|
+
*
|
|
218
|
+
* Both warn once in the console: a declaration that quietly means something
|
|
219
|
+
* other than what it says is worse than one that fails loudly.
|
|
220
|
+
*
|
|
221
|
+
* ## A hidden frontier is not a frontier
|
|
222
|
+
*
|
|
223
|
+
* `model` is the bag of props of the instance being measured. Given one, an
|
|
224
|
+
* axis whose graduations the user has switched off contributes NO band along
|
|
225
|
+
* its plot axis (see {@link backgroundTransitionsShown}) — a caller asking "is
|
|
226
|
+
* this at a transition" gets the same silence as on a frame that declares no
|
|
227
|
+
* transition at all. Nothing is judged against a line nobody can see.
|
|
228
|
+
*
|
|
229
|
+
* Omitting `model` asks the question of the DECLARATION alone: every declared
|
|
230
|
+
* transition, whatever any instance shows. That is what a caller describing the
|
|
231
|
+
* map's meaning rather than judging its drawing wants, and it is what every
|
|
232
|
+
* caller got before this argument existed.
|
|
233
|
+
*/
|
|
234
|
+
export function backgroundTransitionBands(def, bound, model) {
|
|
235
|
+
const declared = def.transitionBandWidth;
|
|
236
|
+
if (declared === undefined)
|
|
237
|
+
return { x: [], y: [] };
|
|
238
|
+
if (!(declared > 0)) {
|
|
239
|
+
warnOnce(`"${def.type}" declares a transitionBandWidth of ${declared} — a band ` +
|
|
240
|
+
`with no width is a band nothing can be inside, so the requirement is ` +
|
|
241
|
+
`dropped rather than refusing every subject on the board.`);
|
|
242
|
+
return { x: [], y: [] };
|
|
243
|
+
}
|
|
244
|
+
const plot = backgroundPlot(def, bound.w, bound.h);
|
|
245
|
+
const ratios = backgroundZoneBoundaries(def);
|
|
246
|
+
const bands = (axis, along, origin, span) => {
|
|
247
|
+
const width = fittedWidth(def, declared, along);
|
|
248
|
+
return along.map(at => {
|
|
249
|
+
const centre = origin + at * span;
|
|
250
|
+
const half = (width * span) / 2;
|
|
251
|
+
return {
|
|
252
|
+
id: zonesMeetingAt(def, axis, at),
|
|
253
|
+
at: centre,
|
|
254
|
+
min: centre - half,
|
|
255
|
+
max: centre + half,
|
|
256
|
+
};
|
|
257
|
+
});
|
|
258
|
+
};
|
|
259
|
+
const shown = (plotAxis) => model === undefined || backgroundTransitionsShown(def, plotAxis, model);
|
|
260
|
+
return {
|
|
261
|
+
x: shown('x') ? bands('x', ratios.x, bound.x + plot.x0, plot.width) : [],
|
|
262
|
+
y: shown('y') ? bands('y', ratios.y, bound.y + plot.y0, plot.height) : [],
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* The declared width, narrowed so that two adjacent bands cannot overlap.
|
|
267
|
+
*
|
|
268
|
+
* Clamped to the smallest gap between two transitions, which is the widest a
|
|
269
|
+
* band can be while every point still belongs to at most one frontier (the two
|
|
270
|
+
* neighbours then meet at a single point). Nothing to clamp when the axis
|
|
271
|
+
* carries fewer than two transitions.
|
|
272
|
+
*/
|
|
273
|
+
function fittedWidth(def, declared, along) {
|
|
274
|
+
let gap = Infinity;
|
|
275
|
+
for (let i = 1; i < along.length; i++) {
|
|
276
|
+
gap = Math.min(gap, along[i] - along[i - 1]);
|
|
277
|
+
}
|
|
278
|
+
if (declared <= gap)
|
|
279
|
+
return declared;
|
|
280
|
+
warnOnce(`"${def.type}" declares a transitionBandWidth of ${declared}, wider than ` +
|
|
281
|
+
`the ${gap} between two of its transitions — the bands would overlap and ` +
|
|
282
|
+
`a point would sit at two frontiers at once. Narrowed to ${gap}.`);
|
|
283
|
+
return gap;
|
|
284
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ExtensionType } from '../../store/index.js';
|
|
2
|
+
import type { FrameworkBackgroundDef } from './def.js';
|
|
3
|
+
/**
|
|
4
|
+
* Resize gating for a framework background, driven by its declaration.
|
|
5
|
+
*
|
|
6
|
+
* `beforeResize` is re-evaluated every time the allowed handles are computed,
|
|
7
|
+
* so toggling `resizeEnabled` from the toolbar updates the handles reactively.
|
|
8
|
+
* An element carrying no such prop falls back to the declaration's
|
|
9
|
+
* `geometry.resizable` — which is what makes that field live data rather than
|
|
10
|
+
* documentation. Moving and selecting stay available throughout.
|
|
11
|
+
*/
|
|
12
|
+
export declare function FrameworkBackgroundInteractionExtension(def: FrameworkBackgroundDef): ExtensionType;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { GfxViewInteractionExtension } from '../../std/gfx/index.js';
|
|
2
|
+
import { backgroundResizeAllowed } from './def.js';
|
|
3
|
+
/**
|
|
4
|
+
* Resize gating for a framework background, driven by its declaration.
|
|
5
|
+
*
|
|
6
|
+
* `beforeResize` is re-evaluated every time the allowed handles are computed,
|
|
7
|
+
* so toggling `resizeEnabled` from the toolbar updates the handles reactively.
|
|
8
|
+
* An element carrying no such prop falls back to the declaration's
|
|
9
|
+
* `geometry.resizable` — which is what makes that field live data rather than
|
|
10
|
+
* documentation. Moving and selecting stay available throughout.
|
|
11
|
+
*/
|
|
12
|
+
export function FrameworkBackgroundInteractionExtension(def) {
|
|
13
|
+
return GfxViewInteractionExtension(def.type, {
|
|
14
|
+
handleResize({ model }) {
|
|
15
|
+
return {
|
|
16
|
+
beforeResize({ set }) {
|
|
17
|
+
const allowed = backgroundResizeAllowed(def, model);
|
|
18
|
+
if (!allowed)
|
|
19
|
+
set({ allowedHandlers: [] });
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { TranslationService } from '../../affine-shared/services/index.js';
|
|
2
|
+
import type { BackgroundLabelSource, BackgroundTextDef, FrameworkBackgroundDef } from './def.js';
|
|
3
|
+
/** A background element, seen from the primitive: a bag of declared props. */
|
|
4
|
+
export type BackgroundModelLike = Record<string, unknown>;
|
|
5
|
+
/**
|
|
6
|
+
* The words a label actually says.
|
|
7
|
+
*
|
|
8
|
+
* The user's own text wins over the vocabulary, and the vocabulary over the
|
|
9
|
+
* shipped default — so a framework can be fully i18n'd while still letting the
|
|
10
|
+
* user rename an axis on the canvas.
|
|
11
|
+
*
|
|
12
|
+
* i18n goes through the house seam (`TranslationProvider` /
|
|
13
|
+
* {@link translateKey}), which the host injects and the library never bundles.
|
|
14
|
+
* A key the catalogue does not know falls back to the wording the declaration
|
|
15
|
+
* ships, and a declaration that ships none shows the RAW KEY — ugly on purpose,
|
|
16
|
+
* exactly as everywhere else in the library: a dangling key is a bug the host
|
|
17
|
+
* must see, not an excuse for us to invent somebody else's wording.
|
|
18
|
+
*/
|
|
19
|
+
export declare function backgroundLabelText(source: BackgroundLabelSource, model: BackgroundModelLike, translation?: TranslationService | null): string;
|
|
20
|
+
/** Whether a `visibleProp` gate is open. No gate means always drawn. */
|
|
21
|
+
export declare function backgroundVisible(visibleProp: string | undefined, model: BackgroundModelLike): boolean;
|
|
22
|
+
/** A label's clickable box in element-local coordinates (axis-aligned, padded). */
|
|
23
|
+
export interface BackgroundLabelHit {
|
|
24
|
+
/** The declaration id of the text. */
|
|
25
|
+
id: string;
|
|
26
|
+
/** The model prop the in-place editor must write back to. */
|
|
27
|
+
prop: string;
|
|
28
|
+
/**
|
|
29
|
+
* The words currently DRAWN there.
|
|
30
|
+
*
|
|
31
|
+
* The editor must open on this, not on `model[prop]`: a label whose prop has
|
|
32
|
+
* never been written shows its vocabulary, and opening an empty box on it
|
|
33
|
+
* would silently offer to erase a name the user can see.
|
|
34
|
+
*/
|
|
35
|
+
text: string;
|
|
36
|
+
minX: number;
|
|
37
|
+
minY: number;
|
|
38
|
+
maxX: number;
|
|
39
|
+
maxY: number;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Every text of a declaration, in PAINTING ORDER: zone labels, then each axis'
|
|
43
|
+
* title followed by its end labels.
|
|
44
|
+
*
|
|
45
|
+
* One walk, used by both the renderer and the hit tester, so a label can never
|
|
46
|
+
* be drawn in one place and clicked in another.
|
|
47
|
+
*/
|
|
48
|
+
export declare function backgroundTexts(def: FrameworkBackgroundDef): BackgroundTextDef[];
|
|
49
|
+
/**
|
|
50
|
+
* Clickable boxes of every VISIBLE, EDITABLE label — those the declaration
|
|
51
|
+
* binds to a model prop; a label that only names an i18n key is vocabulary,
|
|
52
|
+
* not user text, and is not offered for editing.
|
|
53
|
+
*
|
|
54
|
+
* Positions come from the same declaration the renderer paints from, so the
|
|
55
|
+
* boxes track the drawn text by construction.
|
|
56
|
+
*/
|
|
57
|
+
export declare function backgroundLabelHits(def: FrameworkBackgroundDef, model: BackgroundModelLike, w: number, h: number, translation?: TranslationService | null): BackgroundLabelHit[];
|
|
58
|
+
/** First label whose padded box contains the element-local point, or null. */
|
|
59
|
+
export declare function hitTestBackgroundLabel(hits: readonly BackgroundLabelHit[], lx: number, ly: number): BackgroundLabelHit | null;
|