@formicoidea/labre-core 0.31.0 → 0.33.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_pkgs/affine-block-attachment/attachment-block.js +1 -1
- package/dist/_pkgs/affine-block-callout/callout-block.d.ts +6 -0
- package/dist/_pkgs/affine-block-callout/callout-block.js +26 -4
- package/dist/_pkgs/affine-block-callout/callout-keymap.js +59 -19
- package/dist/_pkgs/affine-block-callout/commands/callout-to-paragraph.d.ts +20 -0
- package/dist/_pkgs/affine-block-callout/commands/callout-to-paragraph.js +60 -0
- package/dist/_pkgs/affine-block-callout/commands/split-callout.d.ts +17 -0
- package/dist/_pkgs/affine-block-callout/commands/split-callout.js +42 -0
- package/dist/_pkgs/affine-block-callout/configs/slash-menu.js +9 -6
- package/dist/_pkgs/affine-block-callout/emoji-margin.d.ts +9 -0
- package/dist/_pkgs/affine-block-callout/emoji-margin.js +36 -0
- package/dist/_pkgs/affine-block-callout/emoji-menu.d.ts +5 -1
- package/dist/_pkgs/affine-block-callout/emoji-menu.js +5 -0
- package/dist/_pkgs/affine-block-code/code-block-inline.js +1 -1
- package/dist/_pkgs/affine-block-code/code-block.d.ts +14 -0
- package/dist/_pkgs/affine-block-code/code-block.js +44 -6
- package/dist/_pkgs/affine-block-code/code-toolbar/components/code-toolbar.d.ts +2 -0
- package/dist/_pkgs/affine-block-code/code-toolbar/components/code-toolbar.js +23 -14
- package/dist/_pkgs/affine-block-code/code-toolbar/components/more-menu.d.ts +16 -0
- package/dist/_pkgs/affine-block-code/code-toolbar/components/more-menu.js +93 -0
- package/dist/_pkgs/affine-block-code/code-toolbar/config.js +54 -5
- package/dist/_pkgs/affine-block-code/code-toolbar/index.js +1 -1
- package/dist/_pkgs/affine-block-code/effects.d.ts +2 -0
- package/dist/_pkgs/affine-block-code/effects.js +2 -0
- package/dist/_pkgs/affine-block-code/highlight/affine-code-unit.js +6 -1
- package/dist/_pkgs/affine-block-code/index.d.ts +1 -0
- package/dist/_pkgs/affine-block-code/index.js +1 -0
- package/dist/_pkgs/affine-block-code/line-numbers.d.ts +25 -0
- package/dist/_pkgs/affine-block-code/line-numbers.js +27 -0
- package/dist/_pkgs/affine-block-code/styles.js +31 -0
- package/dist/_pkgs/affine-block-data-view/data-view-block.js +1 -0
- package/dist/_pkgs/affine-block-database/components/title/index.js +4 -1
- package/dist/_pkgs/affine-block-database/configs/slash-menu.js +28 -1
- package/dist/_pkgs/affine-block-database/data-source.js +1 -2
- package/dist/_pkgs/affine-block-database/database-block.js +13 -0
- package/dist/_pkgs/affine-block-database/external-data-source.js +1 -1
- package/dist/_pkgs/affine-block-database/properties/paste-url.d.ts +24 -0
- package/dist/_pkgs/affine-block-database/properties/paste-url.js +98 -0
- package/dist/_pkgs/affine-block-database/properties/rich-text/cell-renderer.js +9 -19
- package/dist/_pkgs/affine-block-database/properties/title/text.js +20 -25
- package/dist/_pkgs/affine-block-database/views/index.js +1 -0
- package/dist/_pkgs/affine-block-edgeless-text/edgeless-text-block.js +11 -1
- package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/config.d.ts +3 -0
- package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/config.js +48 -1
- package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/font-size.d.ts +17 -0
- package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/font-size.js +24 -0
- package/dist/_pkgs/affine-block-embed/embed-figma-block/embed-figma-service.js +1 -1
- package/dist/_pkgs/affine-block-embed/embed-iframe-block/configs/toolbar.js +2 -2
- package/dist/_pkgs/affine-block-embed-doc/common/doc-trashed.d.ts +9 -0
- package/dist/_pkgs/affine-block-embed-doc/common/doc-trashed.js +10 -0
- package/dist/_pkgs/affine-block-embed-doc/embed-linked-doc-block/configs/toolbar.js +1 -1
- package/dist/_pkgs/affine-block-embed-doc/embed-linked-doc-block/embed-linked-doc-block.js +8 -4
- package/dist/_pkgs/affine-block-embed-doc/embed-linked-doc-block/utils.js +1 -1
- package/dist/_pkgs/affine-block-embed-doc/embed-synced-doc-block/configs/toolbar.js +1 -1
- package/dist/_pkgs/affine-block-embed-doc/embed-synced-doc-block/embed-synced-doc-block.d.ts +4 -0
- package/dist/_pkgs/affine-block-embed-doc/embed-synced-doc-block/embed-synced-doc-block.js +23 -4
- package/dist/_pkgs/affine-block-frame/frame-manager.d.ts +13 -0
- package/dist/_pkgs/affine-block-frame/frame-manager.js +34 -2
- package/dist/_pkgs/affine-block-frame/frame-tool.js +1 -1
- package/dist/_pkgs/affine-block-image/components/page-image-block.js +1 -1
- package/dist/_pkgs/affine-block-image/image-edgeless-block.js +1 -1
- package/dist/_pkgs/affine-block-latex/styles.js +6 -1
- package/dist/_pkgs/affine-block-list/utils/forward-delete.js +1 -1
- package/dist/_pkgs/affine-block-note/commands/select-block.js +1 -1
- package/dist/_pkgs/affine-block-note/commands/select-blocks-between.js +1 -1
- package/dist/_pkgs/affine-block-note/move-block.js +1 -1
- package/dist/_pkgs/affine-block-note/note-edgeless-block.d.ts +9 -0
- package/dist/_pkgs/affine-block-note/note-edgeless-block.js +29 -1
- package/dist/_pkgs/affine-block-paragraph/utils/forward-delete.js +2 -2
- package/dist/_pkgs/affine-block-paragraph/utils/merge-with-prev.js +1 -1
- package/dist/_pkgs/affine-block-root/commands/pivot-commands.d.ts +37 -0
- package/dist/_pkgs/affine-block-root/commands/pivot-commands.js +168 -0
- package/dist/_pkgs/affine-block-root/commands/reading-commands.d.ts +23 -0
- package/dist/_pkgs/affine-block-root/commands/reading-commands.js +107 -0
- package/dist/_pkgs/affine-block-root/commands/tag-commands.d.ts +47 -0
- package/dist/_pkgs/affine-block-root/commands/tag-commands.js +159 -0
- package/dist/_pkgs/affine-block-root/configs/toolbar.d.ts +1 -0
- package/dist/_pkgs/affine-block-root/edgeless/configs/toolbar/more.js +10 -3
- package/dist/_pkgs/affine-block-root/edgeless/configs/toolbar/render-linked-doc.js +1 -1
- package/dist/_pkgs/affine-block-root/edgeless/edgeless-keyboard.js +27 -2
- package/dist/_pkgs/affine-block-root/edgeless/edgeless-root-block.js +11 -2
- package/dist/_pkgs/affine-block-root/edgeless/edgeless-root-service.js +14 -0
- package/dist/_pkgs/affine-block-root/edgeless/index.d.ts +1 -0
- package/dist/_pkgs/affine-block-root/edgeless/index.js +1 -0
- package/dist/_pkgs/affine-block-root/edgeless/reserved-keys.d.ts +21 -0
- package/dist/_pkgs/affine-block-root/edgeless/reserved-keys.js +34 -0
- package/dist/_pkgs/affine-block-root/edgeless/utils/clipboard-utils.js +1 -1
- package/dist/_pkgs/affine-block-root/edgeless/utils/clone-utils.d.ts +7 -1
- package/dist/_pkgs/affine-block-root/edgeless/utils/clone-utils.js +11 -2
- package/dist/_pkgs/affine-block-root/index.d.ts +4 -1
- package/dist/_pkgs/affine-block-root/index.js +4 -1
- package/dist/_pkgs/affine-block-root/keyboard/commands.d.ts +2 -0
- package/dist/_pkgs/affine-block-root/keyboard/commands.js +147 -0
- package/dist/_pkgs/affine-block-root/view.js +13 -4
- package/dist/_pkgs/affine-block-surface/adapters/markdown/element-adapter/type.js +1 -1
- package/dist/_pkgs/affine-block-surface/adapters/plain-text/element-adapter/type.js +1 -1
- package/dist/_pkgs/affine-block-surface/commands/reassociate-connectors.js +0 -1
- package/dist/_pkgs/affine-block-surface/effects.js +6 -0
- package/dist/_pkgs/affine-block-surface/element-model/index.d.ts +21 -3
- package/dist/_pkgs/affine-block-surface/element-model/index.js +14 -2
- package/dist/_pkgs/affine-block-surface/extensions/audit.d.ts +107 -0
- package/dist/_pkgs/affine-block-surface/extensions/audit.js +489 -0
- package/dist/_pkgs/affine-block-surface/extensions/crud-extension.d.ts +14 -0
- package/dist/_pkgs/affine-block-surface/extensions/crud-extension.js +37 -5
- package/dist/_pkgs/affine-block-surface/extensions/editor-anchored-panel.d.ts +133 -0
- package/dist/_pkgs/affine-block-surface/extensions/editor-anchored-panel.js +327 -0
- package/dist/_pkgs/affine-block-surface/extensions/element-renderer.js +1 -1
- package/dist/_pkgs/affine-block-surface/extensions/export-manager/export-manager.js +1 -1
- package/dist/_pkgs/affine-block-surface/extensions/index.d.ts +17 -0
- package/dist/_pkgs/affine-block-surface/extensions/index.js +17 -0
- package/dist/_pkgs/affine-block-surface/extensions/interchange-import.d.ts +172 -0
- package/dist/_pkgs/affine-block-surface/extensions/interchange-import.js +393 -0
- package/dist/_pkgs/affine-block-surface/extensions/interchange.d.ts +306 -0
- package/dist/_pkgs/affine-block-surface/extensions/interchange.js +64 -0
- package/dist/_pkgs/affine-block-surface/extensions/map-quality-widget.d.ts +146 -0
- package/dist/_pkgs/affine-block-surface/extensions/map-quality-widget.js +528 -0
- package/dist/_pkgs/affine-block-surface/extensions/map-quality.d.ts +109 -0
- package/dist/_pkgs/affine-block-surface/extensions/map-quality.js +84 -0
- package/dist/_pkgs/affine-block-surface/extensions/morph-toolbar.d.ts +248 -0
- package/dist/_pkgs/affine-block-surface/extensions/morph-toolbar.js +248 -0
- package/dist/_pkgs/affine-block-surface/extensions/reading-toolbar.d.ts +15 -0
- package/dist/_pkgs/affine-block-surface/extensions/reading-toolbar.js +158 -0
- package/dist/_pkgs/affine-block-surface/extensions/reading-widget.d.ts +145 -0
- package/dist/_pkgs/affine-block-surface/extensions/reading-widget.js +588 -0
- package/dist/_pkgs/affine-block-surface/extensions/reading.d.ts +494 -0
- package/dist/_pkgs/affine-block-surface/extensions/reading.js +767 -0
- package/dist/_pkgs/affine-block-surface/extensions/spotlight.d.ts +45 -0
- package/dist/_pkgs/affine-block-surface/extensions/spotlight.js +177 -0
- package/dist/_pkgs/affine-block-surface/extensions/svg-sketch.d.ts +107 -0
- package/dist/_pkgs/affine-block-surface/extensions/svg-sketch.js +958 -0
- package/dist/_pkgs/affine-block-surface/extensions/tags-toolbar.d.ts +10 -0
- package/dist/_pkgs/affine-block-surface/extensions/tags-toolbar.js +295 -0
- package/dist/_pkgs/affine-block-surface/extensions/validation-toolbar.d.ts +27 -0
- package/dist/_pkgs/affine-block-surface/extensions/validation-toolbar.js +361 -0
- package/dist/_pkgs/affine-block-surface/extensions/validation.d.ts +2129 -0
- package/dist/_pkgs/affine-block-surface/extensions/validation.js +4620 -0
- package/dist/_pkgs/affine-block-surface/extensions/violation-detail-widget.d.ts +330 -0
- package/dist/_pkgs/affine-block-surface/extensions/violation-detail-widget.js +1004 -0
- package/dist/_pkgs/affine-block-surface/extensions/violation-timeline.d.ts +80 -0
- package/dist/_pkgs/affine-block-surface/extensions/violation-timeline.js +123 -0
- package/dist/_pkgs/affine-block-surface/framework-background/def.d.ts +610 -0
- package/dist/_pkgs/affine-block-surface/framework-background/def.js +206 -0
- package/dist/_pkgs/affine-block-surface/framework-background/facts.d.ts +188 -0
- package/dist/_pkgs/affine-block-surface/framework-background/facts.js +284 -0
- package/dist/_pkgs/affine-block-surface/framework-background/index.d.ts +5 -0
- package/dist/_pkgs/affine-block-surface/framework-background/index.js +5 -0
- package/dist/_pkgs/affine-block-surface/framework-background/interaction.d.ts +12 -0
- package/dist/_pkgs/affine-block-surface/framework-background/interaction.js +24 -0
- package/dist/_pkgs/affine-block-surface/framework-background/labels.d.ts +99 -0
- package/dist/_pkgs/affine-block-surface/framework-background/labels.js +193 -0
- package/dist/_pkgs/affine-block-surface/framework-background/renderer.d.ts +8 -0
- package/dist/_pkgs/affine-block-surface/framework-background/renderer.js +399 -0
- package/dist/_pkgs/affine-block-surface/index.d.ts +1 -0
- package/dist/_pkgs/affine-block-surface/index.js +1 -0
- package/dist/_pkgs/affine-block-surface/renderer/canvas-renderer.d.ts +69 -3
- package/dist/_pkgs/affine-block-surface/renderer/canvas-renderer.js +333 -44
- package/dist/_pkgs/affine-block-surface/renderer/dom-renderer.js +18 -2
- package/dist/_pkgs/affine-block-surface/renderer/overlay.js +1 -1
- package/dist/_pkgs/affine-block-surface/tool/default-tool.js +8 -0
- package/dist/_pkgs/affine-block-surface/utils/font.js +9 -3
- package/dist/_pkgs/affine-block-surface/view.d.ts +17 -0
- package/dist/_pkgs/affine-block-surface/view.js +57 -2
- package/dist/_pkgs/affine-block-surface-ref/portal/note.js +2 -2
- package/dist/_pkgs/affine-block-table/commands.js +1 -1
- package/dist/_pkgs/affine-block-table/selection-controller.d.ts +6 -0
- package/dist/_pkgs/affine-block-table/selection-controller.js +24 -1
- package/dist/_pkgs/affine-block-table/table-block.js +8 -2
- package/dist/_pkgs/affine-block-table/table-cell.js +5 -6
- package/dist/_pkgs/affine-block-table/table-keymap.d.ts +18 -0
- package/dist/_pkgs/affine-block-table/table-keymap.js +41 -0
- package/dist/_pkgs/affine-block-table/utils.d.ts +7 -0
- package/dist/_pkgs/affine-block-table/utils.js +12 -0
- package/dist/_pkgs/affine-block-table/view.js +2 -0
- package/dist/_pkgs/affine-components/caption/captioned-block-component.js +2 -1
- package/dist/_pkgs/affine-components/context-menu/button.d.ts +7 -0
- package/dist/_pkgs/affine-components/context-menu/button.js +7 -2
- package/dist/_pkgs/affine-components/context-menu/input.d.ts +4 -0
- package/dist/_pkgs/affine-components/context-menu/input.js +12 -0
- package/dist/_pkgs/affine-components/context-menu/menu-all.d.ts +2 -0
- package/dist/_pkgs/affine-components/context-menu/menu-renderer.js +8 -1
- package/dist/_pkgs/affine-components/context-menu/sub-menu.js +3 -0
- package/dist/_pkgs/affine-components/edgeless-shape-color-picker/color-picker.js +1 -1
- package/dist/_pkgs/affine-components/embed-card-modal/embed-card-edit-modal.js +1 -1
- package/dist/_pkgs/affine-components/filterable-list/styles.js +1 -1
- package/dist/_pkgs/affine-components/highlight-dropdown-menu/highlight-duotone-icon.js +8 -8
- package/dist/_pkgs/affine-components/highlight-dropdown-menu/text-duotone-icon.js +11 -11
- package/dist/_pkgs/affine-components/icon-picker/affine-icon-picker-panel.d.ts +28 -0
- package/dist/_pkgs/affine-components/icon-picker/affine-icon-picker-panel.js +231 -0
- package/dist/_pkgs/affine-components/icon-picker/emoji-data.d.ts +40 -0
- package/dist/_pkgs/affine-components/icon-picker/emoji-data.js +99 -0
- package/dist/_pkgs/affine-components/icon-picker/emoji-picker-panel.d.ts +32 -0
- package/dist/_pkgs/affine-components/icon-picker/emoji-picker-panel.js +276 -0
- package/dist/_pkgs/affine-components/icon-picker/icon-data.d.ts +34 -0
- package/dist/_pkgs/affine-components/icon-picker/icon-data.js +83 -0
- package/dist/_pkgs/affine-components/icon-picker/icon-picker.d.ts +39 -0
- package/dist/_pkgs/affine-components/icon-picker/icon-picker.js +233 -0
- package/dist/_pkgs/affine-components/icon-picker/index.d.ts +8 -0
- package/dist/_pkgs/affine-components/icon-picker/index.js +15 -0
- package/dist/_pkgs/affine-components/icon-picker/recent-store.d.ts +8 -0
- package/dist/_pkgs/affine-components/icon-picker/recent-store.js +41 -0
- package/dist/_pkgs/affine-components/icon-picker/styles.d.ts +5 -0
- package/dist/_pkgs/affine-components/icon-picker/styles.js +166 -0
- package/dist/_pkgs/affine-components/icon-picker/types.d.ts +22 -0
- package/dist/_pkgs/affine-components/icon-picker/types.js +10 -0
- package/dist/_pkgs/affine-components/icons/text.js +426 -426
- package/dist/_pkgs/affine-components/open-doc-dropdown-menu/dropdown-menu.d.ts +1 -0
- package/dist/_pkgs/affine-components/peek/peekable.js +1 -1
- package/dist/_pkgs/affine-components/portal/portal.d.ts +1 -1
- package/dist/_pkgs/affine-components/toolbar/index.d.ts +1 -0
- package/dist/_pkgs/affine-components/toolbar/index.js +1 -0
- package/dist/_pkgs/affine-components/toolbar/menu-button.js +2 -1
- package/dist/_pkgs/affine-components/toolbar/picker-menu.d.ts +55 -0
- package/dist/_pkgs/affine-components/toolbar/picker-menu.js +47 -0
- package/dist/_pkgs/affine-components/toolbar/toolbar.js +11 -10
- package/dist/_pkgs/affine-foundation/view.js +11 -2
- package/dist/_pkgs/affine-fragment-frame-panel/body/frame-panel-body.js +2 -2
- package/dist/_pkgs/affine-fragment-frame-panel/header/frame-panel-header.js +2 -2
- package/dist/_pkgs/affine-fragment-frame-panel/header/frames-setting-menu.js +1 -1
- package/dist/_pkgs/affine-fragment-outline/mobile-outline-panel.js +1 -1
- package/dist/_pkgs/affine-gfx-brush/index.d.ts +1 -0
- package/dist/_pkgs/affine-gfx-brush/index.js +1 -0
- package/dist/_pkgs/affine-gfx-brush/renderer/dom/brush.d.ts +1 -0
- package/dist/_pkgs/affine-gfx-brush/renderer/dom/brush.js +11 -0
- package/dist/_pkgs/affine-gfx-brush/renderer/dom/highlighter.d.ts +1 -0
- package/dist/_pkgs/affine-gfx-brush/renderer/dom/highlighter.js +11 -0
- package/dist/_pkgs/affine-gfx-brush/renderer/dom/index.d.ts +2 -0
- package/dist/_pkgs/affine-gfx-brush/renderer/dom/index.js +2 -0
- package/dist/_pkgs/affine-gfx-brush/renderer/dom/shared.d.ts +14 -0
- package/dist/_pkgs/affine-gfx-brush/renderer/dom/shared.js +54 -0
- package/dist/_pkgs/affine-gfx-brush/renderer/index.d.ts +1 -0
- package/dist/_pkgs/affine-gfx-brush/renderer/index.js +4 -0
- package/dist/_pkgs/affine-gfx-brush/toolbar/components/pen/pen-tool-button.js +1 -1
- package/dist/_pkgs/affine-gfx-brush/view.d.ts +14 -0
- package/dist/_pkgs/affine-gfx-brush/view.js +29 -3
- package/dist/_pkgs/affine-gfx-connector/connector-manager.js +39 -16
- package/dist/_pkgs/affine-gfx-connector/connector-tool.d.ts +26 -1
- package/dist/_pkgs/affine-gfx-connector/connector-tool.js +12 -3
- package/dist/_pkgs/affine-gfx-connector/connector-watcher.js +1 -4
- package/dist/_pkgs/affine-gfx-connector/direction/direction-reveal.d.ts +123 -0
- package/dist/_pkgs/affine-gfx-connector/direction/direction-reveal.js +282 -0
- package/dist/_pkgs/affine-gfx-connector/direction/direction-widget.d.ts +65 -0
- package/dist/_pkgs/affine-gfx-connector/direction/direction-widget.js +395 -0
- package/dist/_pkgs/affine-gfx-connector/direction/index.d.ts +4 -0
- package/dist/_pkgs/affine-gfx-connector/direction/index.js +4 -0
- package/dist/_pkgs/affine-gfx-connector/direction/invert-direction.d.ts +72 -0
- package/dist/_pkgs/affine-gfx-connector/direction/invert-direction.js +185 -0
- package/dist/_pkgs/affine-gfx-connector/direction/typed-edge.d.ts +69 -0
- package/dist/_pkgs/affine-gfx-connector/direction/typed-edge.js +66 -0
- package/dist/_pkgs/affine-gfx-connector/effects.d.ts +2 -0
- package/dist/_pkgs/affine-gfx-connector/effects.js +2 -0
- package/dist/_pkgs/affine-gfx-connector/element-renderer/connector-dom/index.js +78 -41
- package/dist/_pkgs/affine-gfx-connector/element-renderer/index.js +1 -1
- package/dist/_pkgs/affine-gfx-connector/element-renderer/utils.js +1 -1
- package/dist/_pkgs/affine-gfx-connector/index.d.ts +1 -0
- package/dist/_pkgs/affine-gfx-connector/index.js +1 -0
- package/dist/_pkgs/affine-gfx-connector/toolbar/config.d.ts +50 -0
- package/dist/_pkgs/affine-gfx-connector/toolbar/config.js +68 -2
- package/dist/_pkgs/affine-gfx-connector/view.js +16 -0
- package/dist/_pkgs/affine-gfx-group/command/group-api.js +150 -62
- package/dist/_pkgs/affine-gfx-group/text/edgeless-group-title-editor.js +4 -1
- package/dist/_pkgs/affine-gfx-mindmap/adapter/markdown/index.js +1 -1
- package/dist/_pkgs/affine-gfx-mindmap/adapter/utils.js +1 -1
- package/dist/_pkgs/affine-gfx-mindmap/templates/index.js +583 -4
- package/dist/_pkgs/affine-gfx-mindmap/toolbar/mindmap-menu.js +23 -23
- package/dist/_pkgs/affine-gfx-mindmap/toolbar/mindmap-tool-button.js +5 -1
- package/dist/_pkgs/affine-gfx-mindmap/view/utils.js +1 -1
- package/dist/_pkgs/affine-gfx-note/overlay/overlay.js +1 -1
- package/dist/_pkgs/affine-gfx-note/toolbar/note-senior-button.js +1 -1
- package/dist/_pkgs/affine-gfx-pointer/tools/pan-tool.d.ts +16 -0
- package/dist/_pkgs/affine-gfx-pointer/tools/pan-tool.js +102 -32
- package/dist/_pkgs/affine-gfx-shape/commands.d.ts +2 -0
- package/dist/_pkgs/affine-gfx-shape/commands.js +33 -0
- package/dist/_pkgs/affine-gfx-shape/consts.js +1 -1
- package/dist/_pkgs/affine-gfx-shape/draggable/shape-draggable.js +1 -1
- package/dist/_pkgs/affine-gfx-shape/element-renderer/shape/polygon.js +17 -9
- package/dist/_pkgs/affine-gfx-shape/element-renderer/shape/utils.js +8 -3
- package/dist/_pkgs/affine-gfx-shape/element-renderer/shape-dom/index.js +48 -19
- package/dist/_pkgs/affine-gfx-shape/element-view.js +19 -12
- package/dist/_pkgs/affine-gfx-shape/index.d.ts +1 -1
- package/dist/_pkgs/affine-gfx-shape/index.js +1 -1
- package/dist/_pkgs/affine-gfx-shape/overlay/polygon-drawing-overlay.js +1 -1
- package/dist/_pkgs/affine-gfx-shape/overlay/polygon-vertex-editing-overlay.js +12 -7
- package/dist/_pkgs/affine-gfx-shape/overlay/shape-overlay.js +1 -1
- package/dist/_pkgs/affine-gfx-shape/polygon-tool.js +4 -2
- package/dist/_pkgs/affine-gfx-shape/shape-tool.js +1 -1
- package/dist/_pkgs/affine-gfx-shape/text/edgeless-shape-text-editor.d.ts +26 -0
- package/dist/_pkgs/affine-gfx-shape/text/edgeless-shape-text-editor.js +124 -15
- package/dist/_pkgs/affine-gfx-shape/view.js +3 -3
- package/dist/_pkgs/affine-gfx-template/builtin/other.js +66 -17
- package/dist/_pkgs/affine-gfx-template/toolbar/overlay-scrollbar.js +1 -1
- package/dist/_pkgs/affine-gfx-template/toolbar/template-panel.js +1 -1
- package/dist/_pkgs/affine-gfx-template/toolbar/template-tool-button.d.ts +2 -0
- package/dist/_pkgs/affine-gfx-template/toolbar/template-tool-button.js +18 -1
- package/dist/_pkgs/affine-gfx-text/edgeless-text-editor.js +9 -5
- package/dist/_pkgs/affine-gfx-text/toolbar/actions.js +1 -1
- package/dist/_pkgs/affine-inline-latex/command.js +46 -26
- package/dist/_pkgs/affine-inline-latex/latex-node/latex-node.d.ts +10 -0
- package/dist/_pkgs/affine-inline-latex/latex-node/latex-node.js +23 -0
- package/dist/_pkgs/affine-inline-link/command.js +1 -1
- package/dist/_pkgs/affine-inline-link/link-node/affine-link.js +4 -1
- package/dist/_pkgs/affine-inline-preset/adapters/html/html-inline.d.ts +3 -0
- package/dist/_pkgs/affine-inline-preset/adapters/html/html-inline.js +29 -1
- package/dist/_pkgs/affine-inline-preset/command/format-block.js +1 -1
- package/dist/_pkgs/affine-inline-preset/command/format-native.js +2 -2
- package/dist/_pkgs/affine-inline-preset/command/format-text.js +1 -1
- package/dist/_pkgs/affine-inline-preset/inline-spec.js +1 -1
- package/dist/_pkgs/affine-inline-reference/reference-node/reference-node.js +1 -1
- package/dist/_pkgs/affine-model/blocks/code/code-model.d.ts +1 -0
- package/dist/_pkgs/affine-model/blocks/code/code-model.js +1 -0
- package/dist/_pkgs/affine-model/elements/bpmn/node.d.ts +40 -7
- package/dist/_pkgs/affine-model/elements/bpmn/node.js +4 -2
- package/dist/_pkgs/affine-model/elements/bpmn/pool.d.ts +74 -17
- package/dist/_pkgs/affine-model/elements/bpmn/pool.js +55 -26
- package/dist/_pkgs/affine-model/elements/c4/board.d.ts +88 -0
- package/dist/_pkgs/affine-model/elements/c4/board.js +128 -0
- package/dist/_pkgs/affine-model/elements/c4/boundary.d.ts +63 -0
- package/dist/_pkgs/affine-model/elements/c4/boundary.js +134 -0
- package/dist/_pkgs/affine-model/elements/c4/index.d.ts +3 -0
- package/dist/_pkgs/affine-model/elements/c4/index.js +3 -0
- package/dist/_pkgs/affine-model/elements/c4/node.d.ts +97 -0
- package/dist/_pkgs/affine-model/elements/c4/node.js +130 -0
- package/dist/_pkgs/affine-model/elements/connector/connector.js +25 -1
- package/dist/_pkgs/affine-model/elements/context-map/context-map.d.ts +27 -0
- package/dist/_pkgs/affine-model/elements/context-map/context-map.js +94 -0
- package/dist/_pkgs/affine-model/elements/context-map/index.d.ts +1 -0
- package/dist/_pkgs/affine-model/elements/context-map/index.js +1 -0
- package/dist/_pkgs/affine-model/elements/core-domain/core-domain.d.ts +34 -17
- package/dist/_pkgs/affine-model/elements/core-domain/core-domain.js +28 -26
- package/dist/_pkgs/affine-model/elements/edgy/board.d.ts +32 -0
- package/dist/_pkgs/affine-model/elements/edgy/board.js +112 -0
- package/dist/_pkgs/affine-model/elements/edgy/facets.d.ts +12 -0
- package/dist/_pkgs/affine-model/elements/edgy/facets.js +25 -1
- package/dist/_pkgs/affine-model/elements/edgy/index.d.ts +1 -0
- package/dist/_pkgs/affine-model/elements/edgy/index.js +1 -0
- package/dist/_pkgs/affine-model/elements/event-storming/event-storming.d.ts +36 -0
- package/dist/_pkgs/affine-model/elements/event-storming/event-storming.js +103 -0
- package/dist/_pkgs/affine-model/elements/event-storming/index.d.ts +1 -0
- package/dist/_pkgs/affine-model/elements/event-storming/index.js +1 -0
- package/dist/_pkgs/affine-model/elements/framework-background/background.d.ts +42 -0
- package/dist/_pkgs/affine-model/elements/framework-background/background.js +42 -0
- package/dist/_pkgs/affine-model/elements/framework-background/index.d.ts +1 -0
- package/dist/_pkgs/affine-model/elements/framework-background/index.js +1 -0
- package/dist/_pkgs/affine-model/elements/index.d.ts +14 -1
- package/dist/_pkgs/affine-model/elements/index.js +4 -0
- package/dist/_pkgs/affine-model/elements/mindmap/mindmap.js +8 -3
- package/dist/_pkgs/affine-model/elements/mindmap/style.d.ts +10 -0
- package/dist/_pkgs/affine-model/elements/mindmap/style.js +8 -0
- package/dist/_pkgs/affine-model/elements/shape/api/polygon.js +2 -8
- package/dist/_pkgs/affine-model/elements/wardley/wardley.d.ts +21 -29
- package/dist/_pkgs/affine-model/elements/wardley/wardley.js +41 -48
- package/dist/_pkgs/affine-shared/adapters/html/block-adapter.js +1 -1
- package/dist/_pkgs/affine-shared/adapters/markdown/block-adapter.js +1 -1
- package/dist/_pkgs/affine-shared/adapters/markdown/delta-converter.d.ts +6 -1
- package/dist/_pkgs/affine-shared/adapters/markdown/delta-converter.js +161 -3
- package/dist/_pkgs/affine-shared/adapters/markdown/markdown.js +5 -1
- package/dist/_pkgs/affine-shared/adapters/notion-html/block-adapter.js +1 -1
- package/dist/_pkgs/affine-shared/adapters/notion-html/delta-converter.js +1 -1
- package/dist/_pkgs/affine-shared/adapters/plain-text/block-adapter.js +1 -1
- package/dist/_pkgs/affine-shared/adapters/plain-text/delta-converter.js +1 -1
- package/dist/_pkgs/affine-shared/adapters/types/delta-converter.d.ts +1 -0
- package/dist/_pkgs/affine-shared/adapters/utils/color.d.ts +24 -0
- package/dist/_pkgs/affine-shared/adapters/utils/color.js +283 -0
- package/dist/_pkgs/affine-shared/adapters/utils/index.d.ts +1 -0
- package/dist/_pkgs/affine-shared/adapters/utils/index.js +1 -0
- package/dist/_pkgs/affine-shared/commands/block-crud/get-selected-blocks.js +10 -2
- package/dist/_pkgs/affine-shared/commands/model-crud/draft-selected-models.js +1 -1
- package/dist/_pkgs/affine-shared/commands/selection/focus-block-end.js +1 -1
- package/dist/_pkgs/affine-shared/commands/selection/focus-block-start.js +1 -1
- package/dist/_pkgs/affine-shared/consts/index.d.ts +10 -0
- package/dist/_pkgs/affine-shared/consts/index.js +10 -0
- package/dist/_pkgs/affine-shared/services/artefact-catalogue-service.d.ts +55 -0
- package/dist/_pkgs/affine-shared/services/artefact-catalogue-service.js +35 -0
- package/dist/_pkgs/affine-shared/services/audit-service.d.ts +311 -0
- package/dist/_pkgs/affine-shared/services/audit-service.js +228 -0
- package/dist/_pkgs/affine-shared/services/command-usage-service.d.ts +31 -0
- package/dist/_pkgs/affine-shared/services/command-usage-service.js +109 -0
- package/dist/_pkgs/affine-shared/services/comment-service/block-comment-manager.js +1 -1
- package/dist/_pkgs/affine-shared/services/doc-display-meta-service.js +1 -1
- package/dist/_pkgs/affine-shared/services/edit-props-store.d.ts +7 -0
- package/dist/_pkgs/affine-shared/services/edit-props-store.js +11 -0
- package/dist/_pkgs/affine-shared/services/embed-iframe/embed-iframe-config.js +1 -1
- package/dist/_pkgs/affine-shared/services/font-loader/font-loader-service.d.ts +26 -1
- package/dist/_pkgs/affine-shared/services/font-loader/font-loader-service.js +124 -7
- package/dist/_pkgs/affine-shared/services/index.d.ts +7 -0
- package/dist/_pkgs/affine-shared/services/index.js +7 -0
- package/dist/_pkgs/affine-shared/services/pivot-materiality-publisher.d.ts +129 -0
- package/dist/_pkgs/affine-shared/services/pivot-materiality-publisher.js +312 -0
- package/dist/_pkgs/affine-shared/services/pivot-properties-service.d.ts +217 -0
- package/dist/_pkgs/affine-shared/services/pivot-properties-service.js +114 -0
- package/dist/_pkgs/affine-shared/services/telemetry-service/code-block.d.ts +1 -1
- package/dist/_pkgs/affine-shared/services/telemetry-service/lifecycle.d.ts +255 -1
- package/dist/_pkgs/affine-shared/services/telemetry-service/telemetry-service.d.ts +2 -2
- package/dist/_pkgs/affine-shared/services/telemetry-service/types.d.ts +6 -1
- package/dist/_pkgs/affine-shared/services/toolbar-service/action.d.ts +10 -0
- package/dist/_pkgs/affine-shared/services/toolbar-service/index.d.ts +1 -0
- package/dist/_pkgs/affine-shared/services/toolbar-service/index.js +1 -0
- package/dist/_pkgs/affine-shared/services/toolbar-service/layout.d.ts +134 -0
- package/dist/_pkgs/affine-shared/services/toolbar-service/layout.js +146 -0
- package/dist/_pkgs/affine-shared/services/toolbar-service/registry.d.ts +44 -0
- package/dist/_pkgs/affine-shared/services/toolbar-service/registry.js +161 -3
- package/dist/_pkgs/affine-shared/services/translation-service/index.d.ts +68 -0
- package/dist/_pkgs/affine-shared/services/translation-service/index.js +39 -0
- package/dist/_pkgs/affine-shared/services/universe-tag-defs-service.d.ts +155 -0
- package/dist/_pkgs/affine-shared/services/universe-tag-defs-service.js +256 -0
- package/dist/_pkgs/affine-shared/test-utils/affine-template.js +1 -1
- package/dist/_pkgs/affine-shared/utils/dom/point-to-range.d.ts +4 -0
- package/dist/_pkgs/affine-shared/utils/dom/point-to-range.js +58 -2
- package/dist/_pkgs/affine-shared/utils/dom/viewport.d.ts +60 -0
- package/dist/_pkgs/affine-shared/utils/dom/viewport.js +58 -0
- package/dist/_pkgs/affine-shared/utils/edgeless.js +1 -1
- package/dist/_pkgs/affine-shared/utils/file/filesys.d.ts +34 -0
- package/dist/_pkgs/affine-shared/utils/file/filesys.js +48 -7
- package/dist/_pkgs/affine-shared/utils/print-to-pdf.d.ts +21 -0
- package/dist/_pkgs/affine-shared/utils/print-to-pdf.js +166 -32
- package/dist/_pkgs/affine-shared/utils/zod-schema.d.ts +7 -0
- package/dist/_pkgs/affine-shared/utils/zod-schema.js +25 -1
- package/dist/_pkgs/affine-widget-drag-handle/utils.js +1 -1
- package/dist/_pkgs/affine-widget-drag-handle/watchers/edgeless-watcher.d.ts +19 -10
- package/dist/_pkgs/affine-widget-drag-handle/watchers/edgeless-watcher.js +122 -23
- package/dist/_pkgs/affine-widget-drag-handle/watchers/pointer-event-watcher.d.ts +2 -0
- package/dist/_pkgs/affine-widget-drag-handle/watchers/pointer-event-watcher.js +25 -4
- package/dist/_pkgs/affine-widget-edgeless-auto-connect/index.js +1 -1
- package/dist/_pkgs/affine-widget-edgeless-dragging-area/edgeless-dragging-area-rect.js +1 -1
- package/dist/_pkgs/affine-widget-edgeless-selected-rect/auto-complete-panel.js +10 -5
- package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-auto-complete.d.ts +15 -1
- package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-auto-complete.js +37 -32
- package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-element-link.js +5 -4
- package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-selected-rect.js +19 -9
- package/dist/_pkgs/affine-widget-edgeless-selected-rect/utils.d.ts +16 -2
- package/dist/_pkgs/affine-widget-edgeless-selected-rect/utils.js +19 -2
- package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/artefact-catalogue-default.d.ts +14 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/artefact-catalogue-default.js +40 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/artefact-catalogue-widget.d.ts +158 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/artefact-catalogue-widget.js +572 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/catalogue-groups.d.ts +46 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/catalogue-groups.js +66 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/chord-format.d.ts +13 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/chord-format.js +50 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/edgeless-toolbar.d.ts +6 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/edgeless-toolbar.js +15 -5
- package/dist/_pkgs/affine-widget-edgeless-toolbar/effects.d.ts +2 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/effects.js +2 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/extension/index.d.ts +7 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/index.d.ts +5 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/index.js +5 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/menu/command-menu.d.ts +57 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/menu/command-menu.js +140 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/view.js +9 -0
- package/dist/_pkgs/affine-widget-frame-title/edgeless-frame-title-editor.js +4 -1
- package/dist/_pkgs/affine-widget-keyboard-toolbar/icons.js +98 -98
- package/dist/_pkgs/affine-widget-keyboard-toolbar/keyboard-tool-panel.js +1 -1
- package/dist/_pkgs/affine-widget-linked-doc/import-doc/import-doc.js +1 -1
- package/dist/_pkgs/affine-widget-linked-doc/linked-doc-popover.js +2 -15
- package/dist/_pkgs/affine-widget-linked-doc/transformers/markdown.d.ts +10 -1
- package/dist/_pkgs/affine-widget-linked-doc/transformers/markdown.js +133 -6
- package/dist/_pkgs/affine-widget-linked-doc/transformers/utils.d.ts +10 -0
- package/dist/_pkgs/affine-widget-linked-doc/transformers/utils.js +120 -3
- package/dist/_pkgs/affine-widget-linked-doc/utils.d.ts +12 -0
- package/dist/_pkgs/affine-widget-linked-doc/utils.js +33 -0
- package/dist/_pkgs/affine-widget-page-dragging-area/index.js +1 -1
- package/dist/_pkgs/affine-widget-remote-selection/doc/doc-remote-selection.js +1 -1
- package/dist/_pkgs/affine-widget-remote-selection/edgeless/index.js +6 -4
- package/dist/_pkgs/affine-widget-slash-menu/slash-menu-popover.js +8 -4
- package/dist/_pkgs/affine-widget-slash-menu/utils.d.ts +9 -0
- package/dist/_pkgs/affine-widget-slash-menu/utils.js +24 -0
- package/dist/_pkgs/affine-widget-toolbar/toolbar.d.ts +6 -0
- package/dist/_pkgs/affine-widget-toolbar/toolbar.js +40 -8
- package/dist/_pkgs/affine-widget-toolbar/utils.d.ts +146 -3
- package/dist/_pkgs/affine-widget-toolbar/utils.js +744 -58
- package/dist/_pkgs/data-view/core/common/property-menu.js +3 -16
- package/dist/_pkgs/data-view/core/component/tags/multi-tag-select.d.ts +4 -0
- package/dist/_pkgs/data-view/core/component/tags/multi-tag-select.js +28 -1
- package/dist/_pkgs/data-view/core/data-view.d.ts +3 -1
- package/dist/_pkgs/data-view/core/data-view.js +25 -3
- package/dist/_pkgs/data-view/core/detail/field.js +2 -2
- package/dist/_pkgs/data-view/core/detail/selection.d.ts +4 -2
- package/dist/_pkgs/data-view/core/detail/selection.js +23 -7
- package/dist/_pkgs/data-view/core/effect.js +2 -0
- package/dist/_pkgs/data-view/core/filter/eval.js +36 -23
- package/dist/_pkgs/data-view/core/filter/filter-fn/matcher.d.ts +7 -0
- package/dist/_pkgs/data-view/core/filter/filter-fn/matcher.js +12 -0
- package/dist/_pkgs/data-view/core/group-by/compare-date-keys.d.ts +11 -0
- package/dist/_pkgs/data-view/core/group-by/compare-date-keys.js +55 -0
- package/dist/_pkgs/data-view/core/group-by/define.d.ts +6 -0
- package/dist/_pkgs/data-view/core/group-by/define.js +114 -0
- package/dist/_pkgs/data-view/core/group-by/matcher.d.ts +7 -0
- package/dist/_pkgs/data-view/core/group-by/matcher.js +13 -0
- package/dist/_pkgs/data-view/core/group-by/renderer/boolean-group.js +11 -11
- package/dist/_pkgs/data-view/core/group-by/renderer/date-group.d.ts +9 -0
- package/dist/_pkgs/data-view/core/group-by/renderer/date-group.js +97 -0
- package/dist/_pkgs/data-view/core/group-by/setting.js +86 -7
- package/dist/_pkgs/data-view/core/group-by/trait.d.ts +34 -0
- package/dist/_pkgs/data-view/core/group-by/trait.js +106 -10
- package/dist/_pkgs/data-view/core/utils/menu-title.js +17 -17
- package/dist/_pkgs/data-view/property-presets/multi-select/cell-renderer.js +3 -1
- package/dist/_pkgs/data-view/property-presets/number/define.js +2 -1
- package/dist/_pkgs/data-view/property-presets/select/cell-renderer.js +3 -1
- package/dist/_pkgs/data-view/view-presets/calendar/calendar-view-manager.d.ts +70 -0
- package/dist/_pkgs/data-view/view-presets/calendar/calendar-view-manager.js +449 -0
- package/dist/_pkgs/data-view/view-presets/calendar/define.d.ts +10 -0
- package/dist/_pkgs/data-view/view-presets/calendar/define.js +27 -0
- package/dist/_pkgs/data-view/view-presets/calendar/effect.d.ts +1 -0
- package/dist/_pkgs/data-view/view-presets/calendar/effect.js +4 -0
- package/dist/_pkgs/data-view/view-presets/calendar/index.d.ts +6 -0
- package/dist/_pkgs/data-view/view-presets/calendar/index.js +6 -0
- package/dist/_pkgs/data-view/view-presets/calendar/layout.d.ts +37 -0
- package/dist/_pkgs/data-view/view-presets/calendar/layout.js +138 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/actions.d.ts +7 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/actions.js +64 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/dnd.d.ts +32 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/dnd.js +159 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/effect.d.ts +1 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/effect.js +7 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/hit-test.d.ts +1 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/hit-test.js +28 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/styles.d.ts +1 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/styles.js +707 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/view.d.ts +89 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/view.js +849 -0
- package/dist/_pkgs/data-view/view-presets/calendar/renderer.d.ts +2 -0
- package/dist/_pkgs/data-view/view-presets/calendar/renderer.js +8 -0
- package/dist/_pkgs/data-view/view-presets/calendar/source.d.ts +8 -0
- package/dist/_pkgs/data-view/view-presets/calendar/source.js +3 -0
- package/dist/_pkgs/data-view/view-presets/calendar/types.d.ts +79 -0
- package/dist/_pkgs/data-view/view-presets/calendar/types.js +1 -0
- package/dist/_pkgs/data-view/view-presets/convert.js +28 -0
- package/dist/_pkgs/data-view/view-presets/effect.js +2 -0
- package/dist/_pkgs/data-view/view-presets/index.d.ts +2 -0
- package/dist/_pkgs/data-view/view-presets/index.js +3 -0
- package/dist/_pkgs/data-view/view-presets/kanban/kanban-view-manager.js +3 -1
- package/dist/_pkgs/data-view/view-presets/kanban/mobile/cell.js +2 -2
- package/dist/_pkgs/data-view/view-presets/table/collapsed-state.d.ts +18 -0
- package/dist/_pkgs/data-view/view-presets/table/collapsed-state.js +36 -0
- package/dist/_pkgs/data-view/view-presets/table/mobile/cell.js +2 -2
- package/dist/_pkgs/data-view/view-presets/table/mobile/group.d.ts +11 -0
- package/dist/_pkgs/data-view/view-presets/table/mobile/group.js +89 -4
- package/dist/_pkgs/data-view/view-presets/table/pc/cell.d.ts +3 -0
- package/dist/_pkgs/data-view/view-presets/table/pc/cell.js +11 -2
- package/dist/_pkgs/data-view/view-presets/table/pc/controller/hotkeys.d.ts +1 -0
- package/dist/_pkgs/data-view/view-presets/table/pc/controller/hotkeys.js +39 -33
- package/dist/_pkgs/data-view/view-presets/table/pc/group.d.ts +10 -0
- package/dist/_pkgs/data-view/view-presets/table/pc/group.js +86 -5
- package/dist/_pkgs/data-view/view-presets/table/pc-virtual/controller/hotkeys.d.ts +1 -0
- package/dist/_pkgs/data-view/view-presets/table/pc-virtual/controller/hotkeys.js +39 -33
- package/dist/_pkgs/data-view/view-presets/table/pc-virtual/group/top/group-title.js +18 -18
- package/dist/_pkgs/data-view/view-presets/table/pc-virtual/row/cell.d.ts +3 -0
- package/dist/_pkgs/data-view/view-presets/table/pc-virtual/row/cell.js +8 -0
- package/dist/_pkgs/data-view/view-presets/table/table-view-manager.js +3 -1
- package/dist/_pkgs/data-view/view-presets/table/utils.d.ts +3 -0
- package/dist/_pkgs/data-view/view-presets/table/utils.js +16 -1
- package/dist/_pkgs/data-view/widget-presets/tools/presets/view-options/view-options.js +3 -1
- package/dist/_pkgs/global/gfx/curve.js +4 -3
- package/dist/_pkgs/std/clipboard/clipboard.js +13 -3
- package/dist/_pkgs/std/clipboard/utils.d.ts +5 -0
- package/dist/_pkgs/std/clipboard/utils.js +10 -0
- package/dist/_pkgs/std/event/dispatcher.js +27 -1
- package/dist/_pkgs/std/event/keymap.js +16 -6
- package/dist/_pkgs/std/extension/command-registry.d.ts +475 -0
- package/dist/_pkgs/std/extension/command-registry.js +431 -0
- package/dist/_pkgs/std/extension/dnd/index.d.ts +1 -1
- package/dist/_pkgs/std/extension/index.d.ts +2 -0
- package/dist/_pkgs/std/extension/index.js +2 -0
- package/dist/_pkgs/std/extension/shortcut.js +2 -1
- package/dist/_pkgs/std/extension/translation-manifest.d.ts +49 -0
- package/dist/_pkgs/std/extension/translation-manifest.js +71 -0
- package/dist/_pkgs/std/gfx/grid.js +1 -1
- package/dist/_pkgs/std/gfx/index.d.ts +7 -3
- package/dist/_pkgs/std/gfx/index.js +6 -2
- package/dist/_pkgs/std/gfx/interactivity/gfx-view-event-handler.js +6 -1
- package/dist/_pkgs/std/gfx/interactivity/manager.d.ts +8 -0
- package/dist/_pkgs/std/gfx/interactivity/manager.js +18 -0
- package/dist/_pkgs/std/gfx/layer.d.ts +1 -1
- package/dist/_pkgs/std/gfx/layer.js +1 -2
- package/dist/_pkgs/std/gfx/model/surface/decorators/field.js +9 -0
- package/dist/_pkgs/std/gfx/model/surface/decorators/index.d.ts +2 -2
- package/dist/_pkgs/std/gfx/model/surface/decorators/index.js +2 -2
- package/dist/_pkgs/std/gfx/model/surface/decorators/local.d.ts +14 -0
- package/dist/_pkgs/std/gfx/model/surface/decorators/local.js +22 -0
- package/dist/_pkgs/std/gfx/model/surface/decorators/observer.d.ts +2 -0
- package/dist/_pkgs/std/gfx/model/surface/decorators/observer.js +40 -1
- package/dist/_pkgs/std/gfx/model/surface/element-model.d.ts +442 -0
- package/dist/_pkgs/std/gfx/model/surface/element-model.js +510 -25
- package/dist/_pkgs/std/gfx/model/surface/pivot.d.ts +48 -0
- package/dist/_pkgs/std/gfx/model/surface/pivot.js +34 -0
- package/dist/_pkgs/std/gfx/model/surface/role.d.ts +153 -0
- package/dist/_pkgs/std/gfx/model/surface/role.js +117 -0
- package/dist/_pkgs/std/gfx/model/surface/surface-model.d.ts +70 -0
- package/dist/_pkgs/std/gfx/model/surface/surface-model.js +305 -17
- package/dist/_pkgs/std/gfx/model/surface/tags.d.ts +77 -0
- package/dist/_pkgs/std/gfx/model/surface/tags.js +246 -0
- package/dist/_pkgs/std/gfx/perf.d.ts +10 -0
- package/dist/_pkgs/std/gfx/perf.js +30 -0
- package/dist/_pkgs/std/gfx/selection.js +1 -1
- package/dist/_pkgs/std/gfx/tool/tool-controller.d.ts +13 -0
- package/dist/_pkgs/std/gfx/tool/tool-controller.js +26 -0
- package/dist/_pkgs/std/gfx/viewport.d.ts +12 -0
- package/dist/_pkgs/std/gfx/viewport.js +20 -2
- package/dist/_pkgs/std/inline/extensions/inline-manager.js +1 -1
- package/dist/_pkgs/std/inline/extensions/markdown-matcher.js +1 -1
- package/dist/_pkgs/std/inline/services/event.d.ts +2 -0
- package/dist/_pkgs/std/inline/services/event.js +96 -21
- package/dist/_pkgs/std/utils/layer.js +2 -6
- package/dist/_pkgs/std/utils/tree.d.ts +14 -0
- package/dist/_pkgs/std/utils/tree.js +59 -8
- package/dist/_pkgs/std/view/element/gfx-block-component.js +23 -13
- package/dist/_pkgs/store/extension/workspace/workspace-meta.d.ts +10 -0
- package/dist/_pkgs/store/model/block/flat-sync-controller.js +2 -12
- package/dist/_pkgs/store/model/store/crud.js +10 -4
- package/dist/_pkgs/store/reactive/flat-native-y/index.d.ts +1 -1
- package/dist/_pkgs/store/reactive/flat-native-y/index.js +24 -2
- package/dist/commands.d.ts +58 -0
- package/dist/commands.js +66 -0
- package/dist/extensions/command-telemetry.d.ts +21 -0
- package/dist/extensions/command-telemetry.js +89 -0
- package/dist/extensions/command-usage.d.ts +23 -0
- package/dist/extensions/command-usage.js +37 -0
- package/dist/extensions/store.d.ts +9 -4
- package/dist/extensions/store.js +27 -24
- package/dist/extensions/view.d.ts +9 -4
- package/dist/extensions/view.js +35 -8
- package/dist/flags.d.ts +98 -21
- package/dist/flags.js +103 -22
- package/dist/frameworks.d.ts +45 -0
- package/dist/frameworks.js +186 -0
- package/dist/schemas.d.ts +8 -5
- package/dist/schemas.js +28 -32
- package/dist/shortcuts.d.ts +16 -16
- package/dist/shortcuts.js +8 -36
- package/dist/translations.d.ts +56 -0
- package/dist/translations.js +200 -0
- package/package.json +16 -4
- package/dist/_pkgs/affine-block-root/keyboard/shortcuts.d.ts +0 -8
- package/dist/_pkgs/affine-block-root/keyboard/shortcuts.js +0 -48
- package/dist/_pkgs/affine-gfx-shape/shortcuts.d.ts +0 -6
- package/dist/_pkgs/affine-gfx-shape/shortcuts.js +0 -28
- package/dist/_pkgs/data-view/core/utils/cache.d.ts +0 -5
- package/dist/_pkgs/data-view/core/utils/cache.js +0 -28
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
/** The default card: a plain white rectangle, no border, no radius. */
|
|
2
|
+
export const DEFAULT_BACKGROUND_SURFACE = {
|
|
3
|
+
fill: '#ffffff',
|
|
4
|
+
};
|
|
5
|
+
/** The plot rectangle of a background of size `w × h`, in element-local units. */
|
|
6
|
+
export function backgroundPlot(def, w, h) {
|
|
7
|
+
const { margin } = def.geometry;
|
|
8
|
+
const x0 = margin.left;
|
|
9
|
+
const y0 = margin.top;
|
|
10
|
+
const x1 = w - margin.right;
|
|
11
|
+
const y1 = h - margin.bottom;
|
|
12
|
+
return { x0, y0, x1, y1, width: x1 - x0, height: y1 - y0 };
|
|
13
|
+
}
|
|
14
|
+
/** Element-local point of an anchor, given the plot it is expressed against. */
|
|
15
|
+
export function backgroundPoint(anchor, plot) {
|
|
16
|
+
return [
|
|
17
|
+
plot.x0 + anchor.x * plot.width + (anchor.dx ?? 0),
|
|
18
|
+
plot.y0 + anchor.y * plot.height + (anchor.dy ?? 0),
|
|
19
|
+
];
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* The colour a broken declaration paints in.
|
|
23
|
+
*
|
|
24
|
+
* Loud magenta on purpose: a background is DATA, and the cost of getting it
|
|
25
|
+
* wrong must be seen on the canvas in one glance rather than debugged from a
|
|
26
|
+
* `rgba(NaN,NaN,NaN,0.4)` that silently paints nothing.
|
|
27
|
+
*/
|
|
28
|
+
export const BROKEN_BACKGROUND_COLOR = '#ff00ff';
|
|
29
|
+
/** Warn once per distinct problem: a renderer runs on every frame. */
|
|
30
|
+
const warned = new Set();
|
|
31
|
+
function warnOnce(reason) {
|
|
32
|
+
if (warned.has(reason))
|
|
33
|
+
return;
|
|
34
|
+
warned.add(reason);
|
|
35
|
+
console.warn(`[framework-background] ${reason}`);
|
|
36
|
+
}
|
|
37
|
+
export function warnBrokenBackgroundColor(reason) {
|
|
38
|
+
warnOnce(reason);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Resolve `@name` against the palette; anything else is a literal colour.
|
|
42
|
+
*
|
|
43
|
+
* A name the palette does not carry is a typo in the declaration, not a
|
|
44
|
+
* request for transparency: it warns and returns {@link BROKEN_BACKGROUND_COLOR}.
|
|
45
|
+
*/
|
|
46
|
+
export function backgroundColor(color, palette) {
|
|
47
|
+
if (!color)
|
|
48
|
+
return 'transparent';
|
|
49
|
+
if (!color.startsWith('@'))
|
|
50
|
+
return color;
|
|
51
|
+
const resolved = palette?.[color.slice(1)];
|
|
52
|
+
if (resolved !== undefined)
|
|
53
|
+
return resolved;
|
|
54
|
+
warnBrokenBackgroundColor(`no palette entry for "${color}"`);
|
|
55
|
+
return BROKEN_BACKGROUND_COLOR;
|
|
56
|
+
}
|
|
57
|
+
/** Nothing to report, shared so the common case allocates no array. */
|
|
58
|
+
const NO_INSTANCE_ZONES = Object.freeze([]);
|
|
59
|
+
/**
|
|
60
|
+
* The plot partition ONE instance carries, as rectangles in plot ratios.
|
|
61
|
+
*
|
|
62
|
+
* The semantic accessor onto {@link BackgroundInstanceZonesDef}: everything
|
|
63
|
+
* that has to know where a user's own zones sit — the renderer that draws their
|
|
64
|
+
* dividers and their names, the audit that reports them, the rules a later
|
|
65
|
+
* tranche will judge inside them — reads them here, so a lane is one shape and
|
|
66
|
+
* not four that must agree. Named consumer: the BPMN pool's lanes (couloirs).
|
|
67
|
+
*
|
|
68
|
+
* Pure: declaration plus the instance's bag of props in, plain data out. Ratios
|
|
69
|
+
* and not model units, for the reason every position in this file is a ratio —
|
|
70
|
+
* an instance stretched to twice its height keeps the same partition.
|
|
71
|
+
*
|
|
72
|
+
* ## What a malformed partition does
|
|
73
|
+
*
|
|
74
|
+
* A partition is data the user edits, so it gets typos and half-written rows,
|
|
75
|
+
* and none of them may take the frame down or paint a picture that lies:
|
|
76
|
+
*
|
|
77
|
+
* - a missing, empty or non-array prop yields `[]` — a background that simply
|
|
78
|
+
* has no partition yet, which is what every instance looks like the moment it
|
|
79
|
+
* is created;
|
|
80
|
+
* - an entry that is not an object, or carries no string id, is dropped;
|
|
81
|
+
* - a size that is not a finite number, or is `0` or less, is dropped with a
|
|
82
|
+
* warning: a zero-height band is a band nothing can be in, and a negative one
|
|
83
|
+
* would eat into its neighbours. Dropped rather than clamped, for the reason
|
|
84
|
+
* {@link FrameworkBackgroundDef.transitionBandWidth} drops its own degenerate
|
|
85
|
+
* case — silently inventing a size is worse than showing one band fewer;
|
|
86
|
+
* - once for each distinct problem, like every other diagnostic on the paint
|
|
87
|
+
* path (see {@link warnBrokenBackgroundColor}).
|
|
88
|
+
*
|
|
89
|
+
* The survivors keep their declaration ORDER, and their sizes are normalised
|
|
90
|
+
* over the sum of the survivors — so dropping a broken row redistributes its
|
|
91
|
+
* space rather than leaving a hole where it was.
|
|
92
|
+
*/
|
|
93
|
+
export function backgroundInstanceZones(def, model) {
|
|
94
|
+
const spec = def.instanceZones;
|
|
95
|
+
if (spec === undefined)
|
|
96
|
+
return NO_INSTANCE_ZONES;
|
|
97
|
+
const raw = model[spec.prop];
|
|
98
|
+
if (!Array.isArray(raw) || raw.length === 0)
|
|
99
|
+
return NO_INSTANCE_ZONES;
|
|
100
|
+
const items = [];
|
|
101
|
+
let total = 0;
|
|
102
|
+
for (const entry of raw) {
|
|
103
|
+
if (typeof entry !== 'object' || entry === null)
|
|
104
|
+
continue;
|
|
105
|
+
const item = entry;
|
|
106
|
+
if (typeof item.id !== 'string' || item.id === '')
|
|
107
|
+
continue;
|
|
108
|
+
const size = item.size;
|
|
109
|
+
if (typeof size !== 'number' || !Number.isFinite(size) || size <= 0) {
|
|
110
|
+
warnOnce(`"${def.type}" instance zone "${item.id}" declares a size of ${String(size)} — a zone with no extent is one nothing can be inside, so it is ` +
|
|
111
|
+
`dropped and its neighbours share the space.`);
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
items.push({
|
|
115
|
+
id: item.id,
|
|
116
|
+
...(typeof item.name === 'string' ? { name: item.name } : {}),
|
|
117
|
+
size,
|
|
118
|
+
});
|
|
119
|
+
total += size;
|
|
120
|
+
}
|
|
121
|
+
if (items.length === 0 || !(total > 0))
|
|
122
|
+
return NO_INSTANCE_ZONES;
|
|
123
|
+
const zones = [];
|
|
124
|
+
let at = 0;
|
|
125
|
+
for (const item of items) {
|
|
126
|
+
const share = item.size / total;
|
|
127
|
+
zones.push({
|
|
128
|
+
id: `${spec.idPrefix}:${item.id}`,
|
|
129
|
+
...(item.name !== undefined ? { name: item.name } : {}),
|
|
130
|
+
rect: spec.stack === 'y'
|
|
131
|
+
? { x: 0, y: at, w: 1, h: share }
|
|
132
|
+
: { x: at, y: 0, w: share, h: 1 },
|
|
133
|
+
});
|
|
134
|
+
at += share;
|
|
135
|
+
}
|
|
136
|
+
return zones;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* The label STRIP of one instance zone, in element-local model units.
|
|
140
|
+
*
|
|
141
|
+
* `null` when the declaration asks for no band, or when there is no room for
|
|
142
|
+
* one. THE one place that knows where a lane title sits: the renderer paints
|
|
143
|
+
* from it and the framework's view hit-tests a double-click against it, so the
|
|
144
|
+
* words a user aims at and the words they get are the same rectangle by
|
|
145
|
+
* construction rather than by two constants that must agree.
|
|
146
|
+
*
|
|
147
|
+
* Clamped to the plot, the way a side band clamps to an element narrower than
|
|
148
|
+
* its own margin ({@link BackgroundSideBandDef}) — the same degenerate case,
|
|
149
|
+
* and the same answer.
|
|
150
|
+
*/
|
|
151
|
+
export function backgroundInstanceZoneBand(def, zone, plot) {
|
|
152
|
+
const spec = def.instanceZones;
|
|
153
|
+
const band = spec?.label?.band;
|
|
154
|
+
if (spec === undefined || band === undefined)
|
|
155
|
+
return null;
|
|
156
|
+
if (!(band.width > 0))
|
|
157
|
+
return null;
|
|
158
|
+
if (spec.stack === 'y') {
|
|
159
|
+
const width = Math.min(band.width, plot.width);
|
|
160
|
+
if (!(width > 0))
|
|
161
|
+
return null;
|
|
162
|
+
return {
|
|
163
|
+
x: plot.x0,
|
|
164
|
+
y: plot.y0 + zone.rect.y * plot.height,
|
|
165
|
+
w: width,
|
|
166
|
+
h: zone.rect.h * plot.height,
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
const height = Math.min(band.width, plot.height);
|
|
170
|
+
if (!(height > 0))
|
|
171
|
+
return null;
|
|
172
|
+
return {
|
|
173
|
+
x: plot.x0 + zone.rect.x * plot.width,
|
|
174
|
+
y: plot.y0,
|
|
175
|
+
w: zone.rect.w * plot.width,
|
|
176
|
+
h: height,
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Whether the resize handles are offered for this element.
|
|
181
|
+
*
|
|
182
|
+
* The element's own `resizeEnabled` decides — it is what the toolbar toggle
|
|
183
|
+
* writes. The declaration's {@link BackgroundGeometry.resizable} is the
|
|
184
|
+
* fallback for an element that carries no such prop, which is what makes it
|
|
185
|
+
* live data rather than documentation.
|
|
186
|
+
*/
|
|
187
|
+
export function backgroundResizeAllowed(def, model) {
|
|
188
|
+
return model.resizeEnabled ?? def.geometry.resizable;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* The size a fresh background of this framework is created at, never smaller
|
|
192
|
+
* than the bounds it is asked to cover — so a second map dropped on a board
|
|
193
|
+
* matches the biggest one already there instead of shrinking beside it.
|
|
194
|
+
*/
|
|
195
|
+
export function backgroundSize(def, atLeastWidth = 0, atLeastHeight = 0) {
|
|
196
|
+
const { width: refWidth, height: refHeight, lockAspectRatio } = def.geometry;
|
|
197
|
+
if (!lockAspectRatio) {
|
|
198
|
+
return {
|
|
199
|
+
width: Math.max(refWidth, atLeastWidth),
|
|
200
|
+
height: Math.max(refHeight, atLeastHeight),
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
const ratio = refHeight / refWidth;
|
|
204
|
+
const width = Math.max(refWidth, atLeastWidth, atLeastHeight / ratio);
|
|
205
|
+
return { width, height: width * ratio };
|
|
206
|
+
}
|
|
@@ -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
|
+
}
|