@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,311 @@
|
|
|
1
|
+
import type { BlockStdScope } from '../../std/index.js';
|
|
2
|
+
import type { ExtensionType } from '../../store/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* One audit criterion, as DATA owned by its framework and versioned like a
|
|
5
|
+
* validation rule.
|
|
6
|
+
*
|
|
7
|
+
* The criterion carries its own PROSE, in {@link prompt} — and that is a
|
|
8
|
+
* deliberate exception to the library's "no sentences" rule, not an oversight.
|
|
9
|
+
* A rule's message is addressed to a USER and therefore belongs to a host
|
|
10
|
+
* catalogue (hence `messageKey` + `messageFallback`); a criterion's prompt is
|
|
11
|
+
* addressed to an ASSISTANT, is not displayed anywhere, and is exactly the kind
|
|
12
|
+
* of thing that must be reviewable, diffable and versioned in the repository
|
|
13
|
+
* rather than retyped in an app. The user-facing half still goes through
|
|
14
|
+
* {@link labelKey} + {@link fallback}, unchanged.
|
|
15
|
+
*/
|
|
16
|
+
export interface AuditCriterion {
|
|
17
|
+
/** Stable id, namespaced by framework: `wardley.A1`. */
|
|
18
|
+
id: string;
|
|
19
|
+
/** Owning framework, e.g. `wardley`. A criterion never crosses frameworks. */
|
|
20
|
+
framework: string;
|
|
21
|
+
/** i18n key of the human name; resolved by the host. */
|
|
22
|
+
labelKey: string;
|
|
23
|
+
/** The framework's own wording when the host ships no catalogue for the key. */
|
|
24
|
+
fallback: string;
|
|
25
|
+
/**
|
|
26
|
+
* The criterion itself, in words, for the assistant. Never rendered.
|
|
27
|
+
*
|
|
28
|
+
* Written as an instruction to a reviewer, not as a message to a user: it
|
|
29
|
+
* states what to look for and what would make the map fail it.
|
|
30
|
+
*/
|
|
31
|
+
prompt: string;
|
|
32
|
+
/** Bumped when the criterion's meaning changes, so a host can pin behaviour. */
|
|
33
|
+
version: number;
|
|
34
|
+
}
|
|
35
|
+
/** A role, as the assistant sees it. Vocabulary only, no geometry. */
|
|
36
|
+
export interface AuditRoleFact {
|
|
37
|
+
id: string;
|
|
38
|
+
/**
|
|
39
|
+
* Mirrors `RoleKind` structurally rather than importing it: this package sits
|
|
40
|
+
* below `@labre/std/gfx` in the seam, and the DTO must stay a plain shape a
|
|
41
|
+
* host can implement. Kept in sync by the collector, which fails to compile
|
|
42
|
+
* if `RoleKind` gains a member this union does not have — which is exactly
|
|
43
|
+
* how `'text'` arrived here (MF3).
|
|
44
|
+
*/
|
|
45
|
+
kind: 'node' | 'edge' | 'text';
|
|
46
|
+
/** Data hierarchy: `wardley:market` specialises `wardley:component`. */
|
|
47
|
+
parent?: string;
|
|
48
|
+
/** Optional, mirroring `RoleDef.labelKey`: a role may ship without one. */
|
|
49
|
+
labelKey?: string;
|
|
50
|
+
}
|
|
51
|
+
/** An axis of a framework frame. Same facts the rule families read. */
|
|
52
|
+
export interface AuditAxisFact {
|
|
53
|
+
id: string;
|
|
54
|
+
orientation: 'horizontal' | 'vertical';
|
|
55
|
+
/** Unit vector of increasing value, model space (`y` grows downwards). */
|
|
56
|
+
forward: readonly [number, number];
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* A named zone of a framework frame, as PLOT RATIOS.
|
|
60
|
+
*
|
|
61
|
+
* Ratios, never model coordinates: a zone is a statement about the frame, and
|
|
62
|
+
* expressing it in model units would make it a statement about how big the user
|
|
63
|
+
* happened to draw the map. `{ x: 0.4, w: 0.3 }` is "Product" on every Wardley
|
|
64
|
+
* map ever drawn.
|
|
65
|
+
*/
|
|
66
|
+
export interface AuditZoneFact {
|
|
67
|
+
id: string;
|
|
68
|
+
/**
|
|
69
|
+
* The user's own wording, when the zone is one THIS frame declares rather
|
|
70
|
+
* than one the framework does — a BPMN pool's lanes. Namespaced ids keep the
|
|
71
|
+
* two apart (`lane:sales` against `product`), and the name is what makes an
|
|
72
|
+
* instance zone worth reporting at all: `lane:2` says nothing to an assistant,
|
|
73
|
+
* "Facturation" says what the band is for.
|
|
74
|
+
*
|
|
75
|
+
* Absent on every framework zone, whose meaning is the framework's and whose
|
|
76
|
+
* wording is the host's to translate.
|
|
77
|
+
*/
|
|
78
|
+
name?: string;
|
|
79
|
+
rect: {
|
|
80
|
+
x: number;
|
|
81
|
+
y: number;
|
|
82
|
+
w: number;
|
|
83
|
+
h: number;
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
/** One framework frame on the board — a Wardley map, a Cynefin grid. */
|
|
87
|
+
export interface AuditFrameFact {
|
|
88
|
+
elementId: string;
|
|
89
|
+
framework: string;
|
|
90
|
+
/** Background declaration type, e.g. `'wardley'`. */
|
|
91
|
+
type: string;
|
|
92
|
+
/** The level of requirement in force, when the frame names one. */
|
|
93
|
+
profileId?: string;
|
|
94
|
+
axes: readonly AuditAxisFact[];
|
|
95
|
+
zones: readonly AuditZoneFact[];
|
|
96
|
+
}
|
|
97
|
+
/** One element measured against a frame. */
|
|
98
|
+
export interface AuditElementFact {
|
|
99
|
+
id: string;
|
|
100
|
+
/** Role id, e.g. `wardley:component`. Neutral elements are never collected. */
|
|
101
|
+
role: string;
|
|
102
|
+
/** The frame it was attributed to, when it sits on one. */
|
|
103
|
+
frameId?: string;
|
|
104
|
+
/**
|
|
105
|
+
* Where it sits INSIDE that frame's plot, as ratios — `[0.62, 0.31]` reads as
|
|
106
|
+
* "in Product, fairly high up the value chain" on any Wardley map, at any
|
|
107
|
+
* size. Absent when the element is on no frame.
|
|
108
|
+
*/
|
|
109
|
+
at?: readonly [number, number];
|
|
110
|
+
/** The zone its centre falls in, when the frame declares zones. */
|
|
111
|
+
zone?: string;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* A level 1 / level 2 finding, handed to the assistant as a FACT about the map.
|
|
115
|
+
*
|
|
116
|
+
* The deterministic engine's output is an input to the audit and never the
|
|
117
|
+
* other way round. Structurally a subset of the engine's `Violation`, so the
|
|
118
|
+
* collector copies rather than converts — and so this package needs no
|
|
119
|
+
* dependency on `@labre/affine-block-surface`, which depends on it.
|
|
120
|
+
*/
|
|
121
|
+
export interface AuditViolationFact {
|
|
122
|
+
ruleId: string;
|
|
123
|
+
/** Never `'audit'`: an audit finding is not a fact about the map. */
|
|
124
|
+
severity: 'blocking-overridable' | 'warning';
|
|
125
|
+
elementIds: string[];
|
|
126
|
+
messageKey: string;
|
|
127
|
+
backgroundId?: string;
|
|
128
|
+
/** Set when a user already arbitrated this finding away (PF8). */
|
|
129
|
+
exemption?: 'element' | 'map';
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Everything the assistant is told about the board. **Render-free** (ADR 0006
|
|
133
|
+
* § 5): no `TemplateResult`, no element model, no function, no DOM — a plain
|
|
134
|
+
* object that survives `structuredClone` and a `postMessage`.
|
|
135
|
+
*/
|
|
136
|
+
export interface AuditFacts {
|
|
137
|
+
/** The role vocabulary in play, so an id is never an opaque string. */
|
|
138
|
+
roles: readonly AuditRoleFact[];
|
|
139
|
+
frames: readonly AuditFrameFact[];
|
|
140
|
+
elements: readonly AuditElementFact[];
|
|
141
|
+
/** Levels 1 and 2, as computed by the deterministic engine. */
|
|
142
|
+
violations: readonly AuditViolationFact[];
|
|
143
|
+
}
|
|
144
|
+
/** What the assistant is asked to do. */
|
|
145
|
+
export interface AuditRequest {
|
|
146
|
+
criteria: readonly AuditCriterion[];
|
|
147
|
+
facts: AuditFacts;
|
|
148
|
+
}
|
|
149
|
+
/** How far along a run is. Reported, never awaited. */
|
|
150
|
+
export interface AuditProgress {
|
|
151
|
+
/** Criteria settled so far. */
|
|
152
|
+
done: number;
|
|
153
|
+
/** Criteria in the request — `request.criteria.length`. */
|
|
154
|
+
total: number;
|
|
155
|
+
/** The criterion currently being evaluated, when the provider says. */
|
|
156
|
+
criterionId?: string;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* One audit result, in the shape of a violation object at `audit` severity.
|
|
160
|
+
*
|
|
161
|
+
* Structurally assignable to the engine's `Violation` (a test pins that), which
|
|
162
|
+
* is what lets a host panel render an audit finding with the very same code it
|
|
163
|
+
* renders a rule finding with — while `userFacingViolations` keeps it off the
|
|
164
|
+
* canvas, because that is what `audit` severity means.
|
|
165
|
+
*/
|
|
166
|
+
export interface AuditFinding {
|
|
167
|
+
/**
|
|
168
|
+
* Namespaced as `audit:<criterionId>` so it can never collide with a
|
|
169
|
+
* registered rule id, and so `ValidationManager.ruleOf` returns nothing for it
|
|
170
|
+
* — an audit finding is not arbitrable with a user exception. It is an
|
|
171
|
+
* opinion, and an opinion is not a rule to be waived.
|
|
172
|
+
*/
|
|
173
|
+
ruleId: string;
|
|
174
|
+
/**
|
|
175
|
+
* The elements the finding is about — **not validated against the surface**.
|
|
176
|
+
*
|
|
177
|
+
* The library checks that these are strings and nothing more. An id naming an
|
|
178
|
+
* element that no longer exists, or one from another document, is published
|
|
179
|
+
* as-is: validating would cost a lookup per id, and a missing id is not
|
|
180
|
+
* *wrong* so much as *stale* — the board moves on while an audit is in
|
|
181
|
+
* flight, which is the normal case for a call that takes seconds.
|
|
182
|
+
*
|
|
183
|
+
* **A host panel must therefore tolerate absent ids**: resolve them
|
|
184
|
+
* defensively and render what it can, rather than assuming every id is a live
|
|
185
|
+
* element. This is the one place the "render it with the code you already
|
|
186
|
+
* have" claim needs a caveat.
|
|
187
|
+
*/
|
|
188
|
+
elementIds: string[];
|
|
189
|
+
/** Always `'audit'`. Forced by {@link normalizeFinding}, never trusted. */
|
|
190
|
+
severity: 'audit';
|
|
191
|
+
messageKey: string;
|
|
192
|
+
messageFallback?: string;
|
|
193
|
+
suggestion?: string;
|
|
194
|
+
suggestionFallback?: string;
|
|
195
|
+
backgroundId?: string;
|
|
196
|
+
/** The criterion this came from. */
|
|
197
|
+
criterionId: string;
|
|
198
|
+
/** The criterion's `version` at the time of the run. */
|
|
199
|
+
criterionVersion: number;
|
|
200
|
+
/** When the run that produced it finished, `Date.now()`. */
|
|
201
|
+
at: number;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* How a run ended.
|
|
205
|
+
*
|
|
206
|
+
* - `complete` — the provider settled every criterion.
|
|
207
|
+
* - `aborted` — the caller's `AbortSignal` fired. Findings produced before the
|
|
208
|
+
* abort are KEPT: an audit interrupted halfway has still said something true.
|
|
209
|
+
* - `error` — the provider threw or rejected. A host's broken build must not
|
|
210
|
+
* become a crash on a keystroke.
|
|
211
|
+
* - `unavailable` — nothing could answer. Either no provider is registered in
|
|
212
|
+
* this assembly (the standalone playground, where the whole of levels 1 and 2
|
|
213
|
+
* still works), or a registered one **declared itself unavailable** — an
|
|
214
|
+
* assistant behind an app-side feature flag, an exhausted quota, no model
|
|
215
|
+
* configured. The second case is passed through rather than folded into
|
|
216
|
+
* `complete`: `unavailable` is the count of users reaching for an audit this
|
|
217
|
+
* build cannot deliver, and it is worthless if a provider can opt out of it
|
|
218
|
+
* by answering politely.
|
|
219
|
+
* - `superseded` — a NEWER run for the same editor started while this one was
|
|
220
|
+
* in flight. Its `findings` are **always empty**: the answer described a
|
|
221
|
+
* board the user has already moved past, so it is dropped from the return
|
|
222
|
+
* value as well as from the signal, and a host that awaits without checking
|
|
223
|
+
* the status cannot render it. Never returned by {@link requestAudit}:
|
|
224
|
+
* superseding is the library's arbitration between two of its own calls, not
|
|
225
|
+
* something a provider can declare (one that returns it is read as
|
|
226
|
+
* `complete`).
|
|
227
|
+
*/
|
|
228
|
+
export type AuditStatus = 'complete' | 'aborted' | 'error' | 'unavailable' | 'superseded';
|
|
229
|
+
export interface AuditResult {
|
|
230
|
+
status: AuditStatus;
|
|
231
|
+
findings: readonly AuditFinding[];
|
|
232
|
+
/** Free-form diagnostic for `error`. Never rendered. */
|
|
233
|
+
reason?: string;
|
|
234
|
+
}
|
|
235
|
+
export interface AuditRunOptions {
|
|
236
|
+
onProgress?: (progress: AuditProgress) => void;
|
|
237
|
+
signal?: AbortSignal;
|
|
238
|
+
}
|
|
239
|
+
export interface AuditService {
|
|
240
|
+
/**
|
|
241
|
+
* Run the audit. The ONE method of this seam.
|
|
242
|
+
*
|
|
243
|
+
* Contract for hosts:
|
|
244
|
+
* - MUST honour `signal`: stop work and either resolve with what it has or
|
|
245
|
+
* reject with an `AbortError`. Both are accepted — {@link requestAudit}
|
|
246
|
+
* normalises them into `status: 'aborted'`.
|
|
247
|
+
* - MUST NOT mutate anything it is handed. `request` is the library's data.
|
|
248
|
+
* - SHOULD call `onProgress` as criteria settle. Purely advisory: a provider
|
|
249
|
+
* that never calls it is correct, just silent.
|
|
250
|
+
* - MAY reject. The library guards it anyway — see {@link requestAudit}.
|
|
251
|
+
*/
|
|
252
|
+
runAudit(request: AuditRequest, options: AuditRunOptions): Promise<AuditResult>;
|
|
253
|
+
}
|
|
254
|
+
export declare const AuditProvider: import("../../global/di/types.js").ServiceIdentifier<AuditService> & (<U extends AuditService = AuditService>(variant: import("../../global/di/types.js").ServiceVariant) => import("../../global/di/types.js").ServiceIdentifier<U>);
|
|
255
|
+
/**
|
|
256
|
+
* The ONLY way in. **No noop default is registered**, exactly as for
|
|
257
|
+
* `PivotPropertiesProvider`: absence is a *meaningful* state (standalone
|
|
258
|
+
* playground, unit tests, a labreapp build that has not wired its assistant),
|
|
259
|
+
* and making it the tested default is what keeps the degraded path honest.
|
|
260
|
+
*/
|
|
261
|
+
export declare function AuditExtension(service: AuditService): ExtensionType;
|
|
262
|
+
/** Multi-instance: one registered {@link AuditCriterion} per impl. */
|
|
263
|
+
export declare const AuditCriterionIdentifier: import("../../global/di/types.js").ServiceIdentifier<AuditCriterion> & (<U extends AuditCriterion = AuditCriterion>(variant: import("../../global/di/types.js").ServiceVariant) => import("../../global/di/types.js").ServiceIdentifier<U>);
|
|
264
|
+
/**
|
|
265
|
+
* Register a framework's audit criteria. Call it from the FLAG-GATED view
|
|
266
|
+
* extension, beside `ValidationRuleExtension`: criteria are tooling, so a
|
|
267
|
+
* disabled framework contributes none and an audit of its maps has nothing to
|
|
268
|
+
* ask about.
|
|
269
|
+
*
|
|
270
|
+
* ```ts
|
|
271
|
+
* context.register(AuditCriterionExtension(WARDLEY_AUDIT_CRITERIA));
|
|
272
|
+
* ```
|
|
273
|
+
*/
|
|
274
|
+
export declare function AuditCriterionExtension(criteria: readonly AuditCriterion[]): ExtensionType;
|
|
275
|
+
/** Every criterion registered in this editor assembly. */
|
|
276
|
+
export declare function getAuditCriteria(std: BlockStdScope): AuditCriterion[];
|
|
277
|
+
/**
|
|
278
|
+
* The guarded call every in-library consumer uses — the one place the provider
|
|
279
|
+
* contract is enforced rather than trusted.
|
|
280
|
+
*
|
|
281
|
+
* - **No provider registered** → `{ status: 'unavailable', findings: [] }`. A
|
|
282
|
+
* clean refusal, not a throw and not a crash: levels 1 and 2 are untouched
|
|
283
|
+
* and the caller reports nothing.
|
|
284
|
+
* - **The provider throws or rejects** → `{ status: 'error' }`, with the reason
|
|
285
|
+
* kept for logs and never rendered.
|
|
286
|
+
* - **The caller aborted** → `{ status: 'aborted' }`, keeping whatever findings
|
|
287
|
+
* the provider had already returned.
|
|
288
|
+
* - **`onProgress` throws** → swallowed. A broken progress bar must not kill
|
|
289
|
+
* the run that feeds it.
|
|
290
|
+
*
|
|
291
|
+
* ## The request is ISOLATED before it crosses (the outbound half)
|
|
292
|
+
*
|
|
293
|
+
* `normalizeFinding` exists because a provider is not believed on the way back.
|
|
294
|
+
* This is the same statement on the way out, and it was missing: the facts a
|
|
295
|
+
* collector assembles are not all fresh objects. `backgroundAxisFacts` returns
|
|
296
|
+
* `forward` straight from a module constant (`FORWARD` in
|
|
297
|
+
* `framework-background/facts.ts`) — `as const` is compile-time only and
|
|
298
|
+
* nothing is frozen — so every `frames[].axes[].forward` handed over WAS the
|
|
299
|
+
* very array the engine multiplies against in `evaluateOrientationAgainstAxis`.
|
|
300
|
+
* A provider writing into the facts it is given (normalising a vector in place,
|
|
301
|
+
* say) flipped the axis convention for the whole process, and correct arrows
|
|
302
|
+
* started reporting as violations on the canvas. That is precisely what this
|
|
303
|
+
* file's header declares impossible.
|
|
304
|
+
*
|
|
305
|
+
* `structuredClone` at the boundary fixes the whole class rather than that one
|
|
306
|
+
* field: no future fact can leak identity either, and the cost is a constraint
|
|
307
|
+
* the seam already claims (ADR 0006 § 5 — the request must be serializable, and
|
|
308
|
+
* a test round-trips it). Value-comparing tests were structurally blind to it;
|
|
309
|
+
* an identity assertion (`.toBe`) now guards it.
|
|
310
|
+
*/
|
|
311
|
+
export declare function requestAudit(std: BlockStdScope, request: AuditRequest, options?: AuditRunOptions): Promise<AuditResult>;
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `AuditProvider` — the injectable seam the **Labre Assistant** plugs into
|
|
3
|
+
* (PF14.1, ADR 0008 § surface `'agent'`, ADR 0006 § render-free host seam).
|
|
4
|
+
*
|
|
5
|
+
* ## What this is, and above all what it is not
|
|
6
|
+
*
|
|
7
|
+
* The executor is the Labre Assistant, app-side (PO decision, 01/08/2026). The
|
|
8
|
+
* library embarks **no model, no prompt runner and no dependency on one**. What
|
|
9
|
+
* it owns is the seam and only the seam:
|
|
10
|
+
*
|
|
11
|
+
* - the criteria, as versioned DATA a framework declares
|
|
12
|
+
* ({@link AuditCriterion}) — the same declarative, host-shippable shape a
|
|
13
|
+
* validation rule, a role or a background already has;
|
|
14
|
+
* - the FACTS of a map, collected render-free ({@link AuditFacts});
|
|
15
|
+
* - a channel out: {@link AuditFinding}s in `audit` severity, timestamped and
|
|
16
|
+
* carrying the criterion they came from.
|
|
17
|
+
*
|
|
18
|
+
* ## The one invariant everything else defends
|
|
19
|
+
*
|
|
20
|
+
* **The deterministic engine never depends on the AI.** Levels 1 and 2 —
|
|
21
|
+
* `blocking-overridable` and `warning`, evaluated by `evaluateRules` inside the
|
|
22
|
+
* 16 ms budget — are computed, rendered and arbitrated with no knowledge that
|
|
23
|
+
* this file exists. An audit READS their output as a fact and writes into a
|
|
24
|
+
* separate signal. There is no path by which a provider (slow, absent, hostile
|
|
25
|
+
* or simply wrong) can change a verdict, delay a frame or move a mark on the
|
|
26
|
+
* canvas.
|
|
27
|
+
*
|
|
28
|
+
* That is why {@link normalizeFinding} FORCES `severity: 'audit'` rather than
|
|
29
|
+
* trusting the provider: `audit` is the severity that is invisible to the
|
|
30
|
+
* drawing user (`userFacingViolations`), so a provider returning `'warning'`
|
|
31
|
+
* would otherwise put an AI opinion behind a canvas bracket.
|
|
32
|
+
*/
|
|
33
|
+
import { createIdentifier } from '../../global/di/index.js';
|
|
34
|
+
export const AuditProvider = createIdentifier('LabreAuditService');
|
|
35
|
+
/**
|
|
36
|
+
* The ONLY way in. **No noop default is registered**, exactly as for
|
|
37
|
+
* `PivotPropertiesProvider`: absence is a *meaningful* state (standalone
|
|
38
|
+
* playground, unit tests, a labreapp build that has not wired its assistant),
|
|
39
|
+
* and making it the tested default is what keeps the degraded path honest.
|
|
40
|
+
*/
|
|
41
|
+
export function AuditExtension(service) {
|
|
42
|
+
return {
|
|
43
|
+
setup: di => {
|
|
44
|
+
di.override(AuditProvider, () => service);
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
/** Multi-instance: one registered {@link AuditCriterion} per impl. */
|
|
49
|
+
export const AuditCriterionIdentifier = createIdentifier('AuditCriterion');
|
|
50
|
+
/**
|
|
51
|
+
* Register a framework's audit criteria. Call it from the FLAG-GATED view
|
|
52
|
+
* extension, beside `ValidationRuleExtension`: criteria are tooling, so a
|
|
53
|
+
* disabled framework contributes none and an audit of its maps has nothing to
|
|
54
|
+
* ask about.
|
|
55
|
+
*
|
|
56
|
+
* ```ts
|
|
57
|
+
* context.register(AuditCriterionExtension(WARDLEY_AUDIT_CRITERIA));
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
export function AuditCriterionExtension(criteria) {
|
|
61
|
+
return {
|
|
62
|
+
setup: di => {
|
|
63
|
+
for (const criterion of criteria) {
|
|
64
|
+
di.addImpl(AuditCriterionIdentifier(criterion.id), () => criterion);
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
/** Every criterion registered in this editor assembly. */
|
|
70
|
+
export function getAuditCriteria(std) {
|
|
71
|
+
return [...std.provider.getAll(AuditCriterionIdentifier).values()];
|
|
72
|
+
}
|
|
73
|
+
/** Whether a rejection is the caller's own abort rather than a failure. */
|
|
74
|
+
function isAbort(error, signal) {
|
|
75
|
+
if (signal?.aborted)
|
|
76
|
+
return true;
|
|
77
|
+
return error instanceof Error && error.name === 'AbortError';
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Force a provider's answer into the ONE shape the library is willing to
|
|
81
|
+
* publish. Nothing here is a formality:
|
|
82
|
+
*
|
|
83
|
+
* - `severity` is OVERWRITTEN, never read. `'audit'` is the severity that stays
|
|
84
|
+
* off the canvas; a provider returning `'blocking-overridable'` would
|
|
85
|
+
* otherwise raise a bracket on an element over a sentence a model wrote.
|
|
86
|
+
* - `ruleId` is re-derived from the criterion, so a provider cannot attach its
|
|
87
|
+
* finding to a registered rule id and inherit that rule's exceptions,
|
|
88
|
+
* profile or toolbar arbitration.
|
|
89
|
+
* - a finding naming a criterion that was not in the request is DROPPED. The
|
|
90
|
+
* library asked three questions; an answer to a fourth is not an answer.
|
|
91
|
+
* - `at` is stamped library-side from one clock, so every finding of one run
|
|
92
|
+
* carries the same timestamp whatever the provider believes the time is.
|
|
93
|
+
*/
|
|
94
|
+
function normalizeFinding(raw, criteria, at) {
|
|
95
|
+
const criterion = criteria.get(raw.criterionId);
|
|
96
|
+
if (!criterion)
|
|
97
|
+
return null;
|
|
98
|
+
return {
|
|
99
|
+
...raw,
|
|
100
|
+
ruleId: `audit:${criterion.id}`,
|
|
101
|
+
// Whatever came back: an id list is the only part a provider authors, and
|
|
102
|
+
// it must be an array of strings or nothing at all.
|
|
103
|
+
elementIds: Array.isArray(raw.elementIds)
|
|
104
|
+
? raw.elementIds.filter((id) => typeof id === 'string')
|
|
105
|
+
: [],
|
|
106
|
+
severity: 'audit',
|
|
107
|
+
criterionId: criterion.id,
|
|
108
|
+
criterionVersion: criterion.version,
|
|
109
|
+
at,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* The guarded call every in-library consumer uses — the one place the provider
|
|
114
|
+
* contract is enforced rather than trusted.
|
|
115
|
+
*
|
|
116
|
+
* - **No provider registered** → `{ status: 'unavailable', findings: [] }`. A
|
|
117
|
+
* clean refusal, not a throw and not a crash: levels 1 and 2 are untouched
|
|
118
|
+
* and the caller reports nothing.
|
|
119
|
+
* - **The provider throws or rejects** → `{ status: 'error' }`, with the reason
|
|
120
|
+
* kept for logs and never rendered.
|
|
121
|
+
* - **The caller aborted** → `{ status: 'aborted' }`, keeping whatever findings
|
|
122
|
+
* the provider had already returned.
|
|
123
|
+
* - **`onProgress` throws** → swallowed. A broken progress bar must not kill
|
|
124
|
+
* the run that feeds it.
|
|
125
|
+
*
|
|
126
|
+
* ## The request is ISOLATED before it crosses (the outbound half)
|
|
127
|
+
*
|
|
128
|
+
* `normalizeFinding` exists because a provider is not believed on the way back.
|
|
129
|
+
* This is the same statement on the way out, and it was missing: the facts a
|
|
130
|
+
* collector assembles are not all fresh objects. `backgroundAxisFacts` returns
|
|
131
|
+
* `forward` straight from a module constant (`FORWARD` in
|
|
132
|
+
* `framework-background/facts.ts`) — `as const` is compile-time only and
|
|
133
|
+
* nothing is frozen — so every `frames[].axes[].forward` handed over WAS the
|
|
134
|
+
* very array the engine multiplies against in `evaluateOrientationAgainstAxis`.
|
|
135
|
+
* A provider writing into the facts it is given (normalising a vector in place,
|
|
136
|
+
* say) flipped the axis convention for the whole process, and correct arrows
|
|
137
|
+
* started reporting as violations on the canvas. That is precisely what this
|
|
138
|
+
* file's header declares impossible.
|
|
139
|
+
*
|
|
140
|
+
* `structuredClone` at the boundary fixes the whole class rather than that one
|
|
141
|
+
* field: no future fact can leak identity either, and the cost is a constraint
|
|
142
|
+
* the seam already claims (ADR 0006 § 5 — the request must be serializable, and
|
|
143
|
+
* a test round-trips it). Value-comparing tests were structurally blind to it;
|
|
144
|
+
* an identity assertion (`.toBe`) now guards it.
|
|
145
|
+
*/
|
|
146
|
+
export async function requestAudit(std, request, options = {}) {
|
|
147
|
+
const provider = std.getOptional(AuditProvider);
|
|
148
|
+
if (!provider)
|
|
149
|
+
return { status: 'unavailable', findings: [] };
|
|
150
|
+
const criteria = new Map(request.criteria.map(c => [c.id, c]));
|
|
151
|
+
const { signal } = options;
|
|
152
|
+
// Asked before the call as well as after: a caller that aborts between
|
|
153
|
+
// building the request and issuing it must not start a run at all.
|
|
154
|
+
if (signal?.aborted)
|
|
155
|
+
return { status: 'aborted', findings: [] };
|
|
156
|
+
const onProgress = options.onProgress
|
|
157
|
+
? (progress) => {
|
|
158
|
+
try {
|
|
159
|
+
options.onProgress?.(progress);
|
|
160
|
+
}
|
|
161
|
+
catch (error) {
|
|
162
|
+
console.error('AuditProvider onProgress threw', error);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
: undefined;
|
|
166
|
+
// The outbound half of "a provider is not believed" — see the note above.
|
|
167
|
+
// A throw here means the facts stopped being serializable, which is a library
|
|
168
|
+
// bug and not a host one; it is reported loudly and degraded rather than
|
|
169
|
+
// allowed to become a crash in front of a user.
|
|
170
|
+
let isolated;
|
|
171
|
+
try {
|
|
172
|
+
isolated = structuredClone(request);
|
|
173
|
+
}
|
|
174
|
+
catch (error) {
|
|
175
|
+
console.error('audit facts are not structured-cloneable — the request cannot be ' +
|
|
176
|
+
'isolated, so it is not sent (ADR 0006 § 5)', error);
|
|
177
|
+
return {
|
|
178
|
+
status: 'error',
|
|
179
|
+
findings: [],
|
|
180
|
+
reason: error instanceof Error ? error.message : String(error),
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
let raw;
|
|
184
|
+
try {
|
|
185
|
+
raw = await provider.runAudit(isolated, {
|
|
186
|
+
...(onProgress ? { onProgress } : {}),
|
|
187
|
+
...(signal ? { signal } : {}),
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
catch (error) {
|
|
191
|
+
if (isAbort(error, signal))
|
|
192
|
+
return { status: 'aborted', findings: [] };
|
|
193
|
+
console.error('AuditProvider.runAudit threw', error);
|
|
194
|
+
return {
|
|
195
|
+
status: 'error',
|
|
196
|
+
findings: [],
|
|
197
|
+
reason: error instanceof Error ? error.message : String(error),
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
const at = Date.now();
|
|
201
|
+
const findings = (raw?.findings ?? [])
|
|
202
|
+
.map(finding => normalizeFinding(finding, criteria, at))
|
|
203
|
+
.filter((finding) => finding !== null);
|
|
204
|
+
// A provider that resolved normally while the caller was aborting is still an
|
|
205
|
+
// abort: the caller asked to stop, and honouring that is not the provider's
|
|
206
|
+
// decision to make.
|
|
207
|
+
//
|
|
208
|
+
// `unavailable` passes through with `aborted` and `error`. A registered
|
|
209
|
+
// provider CAN be unable to answer — assistant behind an app-side feature
|
|
210
|
+
// flag, quota exhausted, no model configured — and folding that into
|
|
211
|
+
// `complete` would both inflate the completion series and empty the one
|
|
212
|
+
// number that says how often users reach for an audit this build cannot
|
|
213
|
+
// deliver. `superseded` is deliberately absent: it is the library's own
|
|
214
|
+
// arbitration between two of its calls, so a provider claiming it is read as
|
|
215
|
+
// `complete` and the arbitration stays where it belongs.
|
|
216
|
+
const status = signal?.aborted
|
|
217
|
+
? 'aborted'
|
|
218
|
+
: raw?.status === 'aborted' ||
|
|
219
|
+
raw?.status === 'error' ||
|
|
220
|
+
raw?.status === 'unavailable'
|
|
221
|
+
? raw.status
|
|
222
|
+
: 'complete';
|
|
223
|
+
return {
|
|
224
|
+
status,
|
|
225
|
+
findings,
|
|
226
|
+
...(raw?.reason !== undefined ? { reason: raw.reason } : {}),
|
|
227
|
+
};
|
|
228
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type CommandUsageStore } from '../../std/index.js';
|
|
2
|
+
import type { ExtensionType } from '../../store/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Where `createLocalCommandUsageStore` persists. Namespaced like the rest of
|
|
5
|
+
* Labre's browser-local state, and versionless on purpose: the shape is two
|
|
6
|
+
* numbers per command, and a reader that does not recognise an entry drops it.
|
|
7
|
+
*/
|
|
8
|
+
export declare const COMMAND_USAGE_KEY = "labre:command-usage";
|
|
9
|
+
/**
|
|
10
|
+
* The default {@link CommandUsageStore}: recency and frequency in this
|
|
11
|
+
* browser's `localStorage`, per command id.
|
|
12
|
+
*
|
|
13
|
+
* It measures only. Nothing ranks anything here — PF6's "seven most-recent +
|
|
14
|
+
* six most-used" sub-menu reads these numbers, and a host that
|
|
15
|
+
* wants the measure to follow the user across devices replaces the whole store
|
|
16
|
+
* through {@link CommandUsageExtension}.
|
|
17
|
+
*/
|
|
18
|
+
export declare function createLocalCommandUsageStore(): CommandUsageStore;
|
|
19
|
+
/**
|
|
20
|
+
* Host override seam: replace the browser-local measure with the host's own.
|
|
21
|
+
*
|
|
22
|
+
* This is where a host persists command usage in ITS database — so the ranking
|
|
23
|
+
* follows the user from laptop to browser to tablet instead of restarting at
|
|
24
|
+
* zero, which is exactly what a "most-used" sub-menu is judged on. The library
|
|
25
|
+
* ships the local store as the default (`CommandUsageViewExtension`) and never
|
|
26
|
+
* requires a host to care.
|
|
27
|
+
*
|
|
28
|
+
* Mirrors `EditorSettingExtension` / `KeymapOverrideExtension`: `di.override`,
|
|
29
|
+
* so a host registering after the library's own extensions always wins.
|
|
30
|
+
*/
|
|
31
|
+
export declare function CommandUsageExtension(store: CommandUsageStore): ExtensionType;
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { CommandUsageIdentifier, } from '../../std/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Where `createLocalCommandUsageStore` persists. Namespaced like the rest of
|
|
4
|
+
* Labre's browser-local state, and versionless on purpose: the shape is two
|
|
5
|
+
* numbers per command, and a reader that does not recognise an entry drops it.
|
|
6
|
+
*/
|
|
7
|
+
export const COMMAND_USAGE_KEY = 'labre:command-usage';
|
|
8
|
+
/**
|
|
9
|
+
* Enough for every command of every framework several times over (the registry
|
|
10
|
+
* holds 76 today), small enough that the JSON stays a few kilobytes. Overflow
|
|
11
|
+
* evicts the least recently used entry, so the measure a ranking cares about —
|
|
12
|
+
* what this user reached for lately — is the last thing lost.
|
|
13
|
+
*/
|
|
14
|
+
const MAX_ENTRIES = 200;
|
|
15
|
+
/**
|
|
16
|
+
* `localStorage` throws outright in a few environments (private mode quotas,
|
|
17
|
+
* sandboxed frames, some test runners), and a usage measure is never important
|
|
18
|
+
* enough to take a command down with it — every access is therefore
|
|
19
|
+
* best-effort. Same rule and same shape as the icon picker's recent store.
|
|
20
|
+
*/
|
|
21
|
+
const storage = () => {
|
|
22
|
+
try {
|
|
23
|
+
return globalThis.localStorage ?? null;
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
const readUsage = () => {
|
|
30
|
+
try {
|
|
31
|
+
const raw = storage()?.getItem(COMMAND_USAGE_KEY);
|
|
32
|
+
if (!raw)
|
|
33
|
+
return {};
|
|
34
|
+
const parsed = JSON.parse(raw);
|
|
35
|
+
if (!parsed || typeof parsed !== 'object')
|
|
36
|
+
return {};
|
|
37
|
+
// Entry by entry: one corrupted record must not discard the whole table.
|
|
38
|
+
const usage = {};
|
|
39
|
+
for (const [id, value] of Object.entries(parsed)) {
|
|
40
|
+
const { c, t } = (value ?? {});
|
|
41
|
+
if (typeof c === 'number' && typeof t === 'number')
|
|
42
|
+
usage[id] = { c, t };
|
|
43
|
+
}
|
|
44
|
+
return usage;
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return {};
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
const writeUsage = (usage) => {
|
|
51
|
+
try {
|
|
52
|
+
storage()?.setItem(COMMAND_USAGE_KEY, JSON.stringify(usage));
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
// best-effort: this session keeps working, the measure just misses a run
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
/** Keeps the {@link MAX_ENTRIES} most recently used entries, nothing else. */
|
|
59
|
+
const evictOverflow = (usage) => {
|
|
60
|
+
const ids = Object.keys(usage);
|
|
61
|
+
if (ids.length <= MAX_ENTRIES)
|
|
62
|
+
return usage;
|
|
63
|
+
const kept = ids
|
|
64
|
+
.sort((a, b) => usage[b].t - usage[a].t)
|
|
65
|
+
.slice(0, MAX_ENTRIES);
|
|
66
|
+
return Object.fromEntries(kept.map(id => [id, usage[id]]));
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* The default {@link CommandUsageStore}: recency and frequency in this
|
|
70
|
+
* browser's `localStorage`, per command id.
|
|
71
|
+
*
|
|
72
|
+
* It measures only. Nothing ranks anything here — PF6's "seven most-recent +
|
|
73
|
+
* six most-used" sub-menu reads these numbers, and a host that
|
|
74
|
+
* wants the measure to follow the user across devices replaces the whole store
|
|
75
|
+
* through {@link CommandUsageExtension}.
|
|
76
|
+
*/
|
|
77
|
+
export function createLocalCommandUsageStore() {
|
|
78
|
+
return {
|
|
79
|
+
record: (command) => {
|
|
80
|
+
const usage = readUsage();
|
|
81
|
+
const previous = usage[command.id];
|
|
82
|
+
usage[command.id] = { c: (previous?.c ?? 0) + 1, t: Date.now() };
|
|
83
|
+
writeUsage(evictOverflow(usage));
|
|
84
|
+
},
|
|
85
|
+
statsOf: (commandId) => {
|
|
86
|
+
const entry = readUsage()[commandId];
|
|
87
|
+
return entry ? { count: entry.c, lastUsedAt: entry.t } : undefined;
|
|
88
|
+
},
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Host override seam: replace the browser-local measure with the host's own.
|
|
93
|
+
*
|
|
94
|
+
* This is where a host persists command usage in ITS database — so the ranking
|
|
95
|
+
* follows the user from laptop to browser to tablet instead of restarting at
|
|
96
|
+
* zero, which is exactly what a "most-used" sub-menu is judged on. The library
|
|
97
|
+
* ships the local store as the default (`CommandUsageViewExtension`) and never
|
|
98
|
+
* requires a host to care.
|
|
99
|
+
*
|
|
100
|
+
* Mirrors `EditorSettingExtension` / `KeymapOverrideExtension`: `di.override`,
|
|
101
|
+
* so a host registering after the library's own extensions always wins.
|
|
102
|
+
*/
|
|
103
|
+
export function CommandUsageExtension(store) {
|
|
104
|
+
return {
|
|
105
|
+
setup: di => {
|
|
106
|
+
di.override(CommandUsageIdentifier, () => store);
|
|
107
|
+
},
|
|
108
|
+
};
|
|
109
|
+
}
|