@formicoidea/labre-core 0.31.0 → 0.32.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_pkgs/affine-block-callout/callout-block.d.ts +6 -0
- package/dist/_pkgs/affine-block-callout/callout-block.js +25 -3
- package/dist/_pkgs/affine-block-callout/callout-keymap.js +59 -19
- package/dist/_pkgs/affine-block-callout/commands/callout-to-paragraph.d.ts +20 -0
- package/dist/_pkgs/affine-block-callout/commands/callout-to-paragraph.js +60 -0
- package/dist/_pkgs/affine-block-callout/commands/split-callout.d.ts +17 -0
- package/dist/_pkgs/affine-block-callout/commands/split-callout.js +42 -0
- package/dist/_pkgs/affine-block-callout/configs/slash-menu.js +9 -6
- package/dist/_pkgs/affine-block-callout/emoji-margin.d.ts +9 -0
- package/dist/_pkgs/affine-block-callout/emoji-margin.js +36 -0
- package/dist/_pkgs/affine-block-callout/emoji-menu.d.ts +5 -1
- package/dist/_pkgs/affine-block-callout/emoji-menu.js +5 -0
- package/dist/_pkgs/affine-block-code/code-block.d.ts +14 -0
- package/dist/_pkgs/affine-block-code/code-block.js +44 -6
- package/dist/_pkgs/affine-block-code/code-toolbar/components/code-toolbar.d.ts +2 -0
- package/dist/_pkgs/affine-block-code/code-toolbar/components/code-toolbar.js +23 -14
- package/dist/_pkgs/affine-block-code/code-toolbar/components/more-menu.d.ts +16 -0
- package/dist/_pkgs/affine-block-code/code-toolbar/components/more-menu.js +93 -0
- package/dist/_pkgs/affine-block-code/code-toolbar/config.js +52 -5
- package/dist/_pkgs/affine-block-code/effects.d.ts +2 -0
- package/dist/_pkgs/affine-block-code/effects.js +2 -0
- package/dist/_pkgs/affine-block-code/highlight/affine-code-unit.js +6 -1
- package/dist/_pkgs/affine-block-code/index.d.ts +1 -0
- package/dist/_pkgs/affine-block-code/index.js +1 -0
- package/dist/_pkgs/affine-block-code/line-numbers.d.ts +25 -0
- package/dist/_pkgs/affine-block-code/line-numbers.js +27 -0
- package/dist/_pkgs/affine-block-code/styles.js +31 -0
- package/dist/_pkgs/affine-block-data-view/data-view-block.js +1 -0
- package/dist/_pkgs/affine-block-database/components/title/index.js +4 -1
- package/dist/_pkgs/affine-block-database/configs/slash-menu.js +28 -1
- package/dist/_pkgs/affine-block-database/database-block.js +13 -0
- package/dist/_pkgs/affine-block-database/properties/paste-url.d.ts +24 -0
- package/dist/_pkgs/affine-block-database/properties/paste-url.js +98 -0
- package/dist/_pkgs/affine-block-database/properties/rich-text/cell-renderer.js +9 -19
- package/dist/_pkgs/affine-block-database/properties/title/text.js +20 -25
- package/dist/_pkgs/affine-block-database/views/index.js +1 -0
- package/dist/_pkgs/affine-block-edgeless-text/edgeless-text-block.js +10 -0
- package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/config.d.ts +3 -0
- package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/config.js +48 -1
- package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/font-size.d.ts +17 -0
- package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/font-size.js +24 -0
- package/dist/_pkgs/affine-block-embed-doc/common/doc-trashed.d.ts +9 -0
- package/dist/_pkgs/affine-block-embed-doc/common/doc-trashed.js +10 -0
- package/dist/_pkgs/affine-block-embed-doc/embed-linked-doc-block/embed-linked-doc-block.js +8 -4
- package/dist/_pkgs/affine-block-embed-doc/embed-synced-doc-block/embed-synced-doc-block.d.ts +4 -0
- package/dist/_pkgs/affine-block-embed-doc/embed-synced-doc-block/embed-synced-doc-block.js +22 -3
- package/dist/_pkgs/affine-block-frame/frame-manager.d.ts +13 -0
- package/dist/_pkgs/affine-block-frame/frame-manager.js +32 -2
- package/dist/_pkgs/affine-block-latex/styles.js +6 -1
- package/dist/_pkgs/affine-block-note/note-edgeless-block.d.ts +9 -0
- package/dist/_pkgs/affine-block-note/note-edgeless-block.js +29 -1
- package/dist/_pkgs/affine-block-root/commands/pivot-commands.d.ts +37 -0
- package/dist/_pkgs/affine-block-root/commands/pivot-commands.js +168 -0
- package/dist/_pkgs/affine-block-root/commands/reading-commands.d.ts +23 -0
- package/dist/_pkgs/affine-block-root/commands/reading-commands.js +107 -0
- package/dist/_pkgs/affine-block-root/commands/tag-commands.d.ts +47 -0
- package/dist/_pkgs/affine-block-root/commands/tag-commands.js +159 -0
- package/dist/_pkgs/affine-block-root/configs/toolbar.d.ts +1 -0
- package/dist/_pkgs/affine-block-root/edgeless/configs/toolbar/more.js +9 -2
- package/dist/_pkgs/affine-block-root/edgeless/configs/toolbar/render-linked-doc.js +1 -1
- package/dist/_pkgs/affine-block-root/edgeless/edgeless-keyboard.js +26 -1
- package/dist/_pkgs/affine-block-root/edgeless/edgeless-root-block.js +11 -2
- package/dist/_pkgs/affine-block-root/edgeless/edgeless-root-service.js +14 -0
- package/dist/_pkgs/affine-block-root/edgeless/index.d.ts +1 -0
- package/dist/_pkgs/affine-block-root/edgeless/index.js +1 -0
- package/dist/_pkgs/affine-block-root/edgeless/reserved-keys.d.ts +21 -0
- package/dist/_pkgs/affine-block-root/edgeless/reserved-keys.js +34 -0
- package/dist/_pkgs/affine-block-root/edgeless/utils/clone-utils.d.ts +7 -1
- package/dist/_pkgs/affine-block-root/edgeless/utils/clone-utils.js +11 -2
- package/dist/_pkgs/affine-block-root/index.d.ts +4 -1
- package/dist/_pkgs/affine-block-root/index.js +4 -1
- package/dist/_pkgs/affine-block-root/keyboard/commands.d.ts +2 -0
- package/dist/_pkgs/affine-block-root/keyboard/commands.js +147 -0
- package/dist/_pkgs/affine-block-root/view.js +13 -4
- package/dist/_pkgs/affine-block-surface/commands/reassociate-connectors.js +0 -1
- package/dist/_pkgs/affine-block-surface/effects.js +6 -0
- package/dist/_pkgs/affine-block-surface/element-model/index.d.ts +5 -2
- package/dist/_pkgs/affine-block-surface/element-model/index.js +4 -2
- package/dist/_pkgs/affine-block-surface/extensions/audit.d.ts +107 -0
- package/dist/_pkgs/affine-block-surface/extensions/audit.js +472 -0
- package/dist/_pkgs/affine-block-surface/extensions/crud-extension.d.ts +14 -0
- package/dist/_pkgs/affine-block-surface/extensions/crud-extension.js +27 -0
- package/dist/_pkgs/affine-block-surface/extensions/editor-anchored-panel.d.ts +133 -0
- package/dist/_pkgs/affine-block-surface/extensions/editor-anchored-panel.js +326 -0
- package/dist/_pkgs/affine-block-surface/extensions/index.d.ts +13 -0
- package/dist/_pkgs/affine-block-surface/extensions/index.js +13 -0
- package/dist/_pkgs/affine-block-surface/extensions/map-quality-widget.d.ts +146 -0
- package/dist/_pkgs/affine-block-surface/extensions/map-quality-widget.js +528 -0
- package/dist/_pkgs/affine-block-surface/extensions/map-quality.d.ts +109 -0
- package/dist/_pkgs/affine-block-surface/extensions/map-quality.js +84 -0
- package/dist/_pkgs/affine-block-surface/extensions/reading-toolbar.d.ts +15 -0
- package/dist/_pkgs/affine-block-surface/extensions/reading-toolbar.js +158 -0
- package/dist/_pkgs/affine-block-surface/extensions/reading-widget.d.ts +145 -0
- package/dist/_pkgs/affine-block-surface/extensions/reading-widget.js +590 -0
- package/dist/_pkgs/affine-block-surface/extensions/reading.d.ts +494 -0
- package/dist/_pkgs/affine-block-surface/extensions/reading.js +767 -0
- package/dist/_pkgs/affine-block-surface/extensions/spotlight.d.ts +45 -0
- package/dist/_pkgs/affine-block-surface/extensions/spotlight.js +177 -0
- package/dist/_pkgs/affine-block-surface/extensions/tags-toolbar.d.ts +10 -0
- package/dist/_pkgs/affine-block-surface/extensions/tags-toolbar.js +295 -0
- package/dist/_pkgs/affine-block-surface/extensions/validation-toolbar.d.ts +27 -0
- package/dist/_pkgs/affine-block-surface/extensions/validation-toolbar.js +361 -0
- package/dist/_pkgs/affine-block-surface/extensions/validation.d.ts +1340 -0
- package/dist/_pkgs/affine-block-surface/extensions/validation.js +3009 -0
- package/dist/_pkgs/affine-block-surface/extensions/violation-detail-widget.d.ts +286 -0
- package/dist/_pkgs/affine-block-surface/extensions/violation-detail-widget.js +907 -0
- package/dist/_pkgs/affine-block-surface/extensions/violation-timeline.d.ts +80 -0
- package/dist/_pkgs/affine-block-surface/extensions/violation-timeline.js +123 -0
- package/dist/_pkgs/affine-block-surface/framework-background/def.d.ts +321 -0
- package/dist/_pkgs/affine-block-surface/framework-background/def.js +81 -0
- package/dist/_pkgs/affine-block-surface/framework-background/facts.d.ts +188 -0
- package/dist/_pkgs/affine-block-surface/framework-background/facts.js +284 -0
- package/dist/_pkgs/affine-block-surface/framework-background/index.d.ts +5 -0
- package/dist/_pkgs/affine-block-surface/framework-background/index.js +5 -0
- package/dist/_pkgs/affine-block-surface/framework-background/interaction.d.ts +12 -0
- package/dist/_pkgs/affine-block-surface/framework-background/interaction.js +24 -0
- package/dist/_pkgs/affine-block-surface/framework-background/labels.d.ts +59 -0
- package/dist/_pkgs/affine-block-surface/framework-background/labels.js +117 -0
- package/dist/_pkgs/affine-block-surface/framework-background/renderer.d.ts +8 -0
- package/dist/_pkgs/affine-block-surface/framework-background/renderer.js +238 -0
- package/dist/_pkgs/affine-block-surface/index.d.ts +1 -0
- package/dist/_pkgs/affine-block-surface/index.js +1 -0
- package/dist/_pkgs/affine-block-surface/renderer/canvas-renderer.d.ts +69 -3
- package/dist/_pkgs/affine-block-surface/renderer/canvas-renderer.js +333 -44
- package/dist/_pkgs/affine-block-surface/renderer/dom-renderer.js +18 -2
- package/dist/_pkgs/affine-block-surface/tool/default-tool.js +8 -0
- package/dist/_pkgs/affine-block-surface/utils/font.js +9 -3
- package/dist/_pkgs/affine-block-surface/view.d.ts +17 -0
- package/dist/_pkgs/affine-block-surface/view.js +57 -2
- package/dist/_pkgs/affine-block-table/selection-controller.d.ts +6 -0
- package/dist/_pkgs/affine-block-table/selection-controller.js +24 -1
- package/dist/_pkgs/affine-block-table/table-block.js +8 -2
- package/dist/_pkgs/affine-block-table/table-cell.js +5 -6
- package/dist/_pkgs/affine-block-table/table-keymap.d.ts +18 -0
- package/dist/_pkgs/affine-block-table/table-keymap.js +41 -0
- package/dist/_pkgs/affine-block-table/utils.d.ts +7 -0
- package/dist/_pkgs/affine-block-table/utils.js +12 -0
- package/dist/_pkgs/affine-block-table/view.js +2 -0
- package/dist/_pkgs/affine-components/caption/captioned-block-component.js +2 -1
- package/dist/_pkgs/affine-components/context-menu/button.d.ts +7 -0
- package/dist/_pkgs/affine-components/context-menu/button.js +7 -2
- package/dist/_pkgs/affine-components/context-menu/input.d.ts +4 -0
- package/dist/_pkgs/affine-components/context-menu/input.js +12 -0
- package/dist/_pkgs/affine-components/context-menu/menu-all.d.ts +2 -0
- package/dist/_pkgs/affine-components/context-menu/menu-renderer.js +8 -1
- package/dist/_pkgs/affine-components/context-menu/sub-menu.js +3 -0
- package/dist/_pkgs/affine-components/highlight-dropdown-menu/highlight-duotone-icon.js +8 -8
- package/dist/_pkgs/affine-components/highlight-dropdown-menu/text-duotone-icon.js +11 -11
- package/dist/_pkgs/affine-components/icon-picker/affine-icon-picker-panel.d.ts +28 -0
- package/dist/_pkgs/affine-components/icon-picker/affine-icon-picker-panel.js +231 -0
- package/dist/_pkgs/affine-components/icon-picker/emoji-data.d.ts +40 -0
- package/dist/_pkgs/affine-components/icon-picker/emoji-data.js +99 -0
- package/dist/_pkgs/affine-components/icon-picker/emoji-picker-panel.d.ts +32 -0
- package/dist/_pkgs/affine-components/icon-picker/emoji-picker-panel.js +276 -0
- package/dist/_pkgs/affine-components/icon-picker/icon-data.d.ts +34 -0
- package/dist/_pkgs/affine-components/icon-picker/icon-data.js +83 -0
- package/dist/_pkgs/affine-components/icon-picker/icon-picker.d.ts +39 -0
- package/dist/_pkgs/affine-components/icon-picker/icon-picker.js +233 -0
- package/dist/_pkgs/affine-components/icon-picker/index.d.ts +8 -0
- package/dist/_pkgs/affine-components/icon-picker/index.js +15 -0
- package/dist/_pkgs/affine-components/icon-picker/recent-store.d.ts +8 -0
- package/dist/_pkgs/affine-components/icon-picker/recent-store.js +41 -0
- package/dist/_pkgs/affine-components/icon-picker/styles.d.ts +5 -0
- package/dist/_pkgs/affine-components/icon-picker/styles.js +166 -0
- package/dist/_pkgs/affine-components/icon-picker/types.d.ts +22 -0
- package/dist/_pkgs/affine-components/icon-picker/types.js +10 -0
- package/dist/_pkgs/affine-components/icons/text.js +426 -426
- package/dist/_pkgs/affine-components/open-doc-dropdown-menu/dropdown-menu.d.ts +1 -0
- package/dist/_pkgs/affine-components/portal/portal.d.ts +1 -1
- package/dist/_pkgs/affine-components/toolbar/menu-button.js +1 -0
- package/dist/_pkgs/affine-components/toolbar/toolbar.js +11 -10
- package/dist/_pkgs/affine-foundation/view.js +11 -2
- package/dist/_pkgs/affine-gfx-brush/index.d.ts +1 -0
- package/dist/_pkgs/affine-gfx-brush/index.js +1 -0
- package/dist/_pkgs/affine-gfx-brush/renderer/dom/brush.d.ts +1 -0
- package/dist/_pkgs/affine-gfx-brush/renderer/dom/brush.js +11 -0
- package/dist/_pkgs/affine-gfx-brush/renderer/dom/highlighter.d.ts +1 -0
- package/dist/_pkgs/affine-gfx-brush/renderer/dom/highlighter.js +11 -0
- package/dist/_pkgs/affine-gfx-brush/renderer/dom/index.d.ts +2 -0
- package/dist/_pkgs/affine-gfx-brush/renderer/dom/index.js +2 -0
- package/dist/_pkgs/affine-gfx-brush/renderer/dom/shared.d.ts +14 -0
- package/dist/_pkgs/affine-gfx-brush/renderer/dom/shared.js +54 -0
- package/dist/_pkgs/affine-gfx-brush/renderer/index.d.ts +1 -0
- package/dist/_pkgs/affine-gfx-brush/renderer/index.js +4 -0
- package/dist/_pkgs/affine-gfx-brush/view.d.ts +14 -0
- package/dist/_pkgs/affine-gfx-brush/view.js +29 -3
- package/dist/_pkgs/affine-gfx-connector/connector-manager.js +32 -6
- package/dist/_pkgs/affine-gfx-connector/connector-tool.d.ts +7 -0
- package/dist/_pkgs/affine-gfx-connector/connector-tool.js +2 -1
- package/dist/_pkgs/affine-gfx-connector/direction/direction-reveal.d.ts +123 -0
- package/dist/_pkgs/affine-gfx-connector/direction/direction-reveal.js +281 -0
- package/dist/_pkgs/affine-gfx-connector/direction/direction-widget.d.ts +65 -0
- package/dist/_pkgs/affine-gfx-connector/direction/direction-widget.js +395 -0
- package/dist/_pkgs/affine-gfx-connector/direction/index.d.ts +4 -0
- package/dist/_pkgs/affine-gfx-connector/direction/index.js +4 -0
- package/dist/_pkgs/affine-gfx-connector/direction/invert-direction.d.ts +72 -0
- package/dist/_pkgs/affine-gfx-connector/direction/invert-direction.js +187 -0
- package/dist/_pkgs/affine-gfx-connector/direction/typed-edge.d.ts +69 -0
- package/dist/_pkgs/affine-gfx-connector/direction/typed-edge.js +66 -0
- package/dist/_pkgs/affine-gfx-connector/effects.d.ts +2 -0
- package/dist/_pkgs/affine-gfx-connector/effects.js +2 -0
- package/dist/_pkgs/affine-gfx-connector/element-renderer/connector-dom/index.js +78 -41
- package/dist/_pkgs/affine-gfx-connector/index.d.ts +1 -0
- package/dist/_pkgs/affine-gfx-connector/index.js +1 -0
- package/dist/_pkgs/affine-gfx-connector/toolbar/config.d.ts +50 -0
- package/dist/_pkgs/affine-gfx-connector/toolbar/config.js +67 -1
- package/dist/_pkgs/affine-gfx-connector/view.js +16 -0
- package/dist/_pkgs/affine-gfx-group/command/group-api.js +150 -62
- package/dist/_pkgs/affine-gfx-group/text/edgeless-group-title-editor.js +4 -1
- package/dist/_pkgs/affine-gfx-pointer/tools/pan-tool.d.ts +16 -0
- package/dist/_pkgs/affine-gfx-pointer/tools/pan-tool.js +102 -32
- package/dist/_pkgs/affine-gfx-shape/commands.d.ts +2 -0
- package/dist/_pkgs/affine-gfx-shape/commands.js +33 -0
- package/dist/_pkgs/affine-gfx-shape/element-renderer/shape-dom/index.js +48 -19
- package/dist/_pkgs/affine-gfx-shape/index.d.ts +1 -1
- package/dist/_pkgs/affine-gfx-shape/index.js +1 -1
- package/dist/_pkgs/affine-gfx-shape/text/edgeless-shape-text-editor.d.ts +26 -0
- package/dist/_pkgs/affine-gfx-shape/text/edgeless-shape-text-editor.js +124 -13
- package/dist/_pkgs/affine-gfx-shape/view.js +3 -3
- package/dist/_pkgs/affine-gfx-template/toolbar/template-tool-button.d.ts +2 -0
- package/dist/_pkgs/affine-gfx-template/toolbar/template-tool-button.js +18 -1
- package/dist/_pkgs/affine-gfx-text/edgeless-text-editor.js +9 -5
- package/dist/_pkgs/affine-inline-latex/command.js +46 -26
- package/dist/_pkgs/affine-inline-latex/latex-node/latex-node.d.ts +10 -0
- package/dist/_pkgs/affine-inline-latex/latex-node/latex-node.js +23 -0
- package/dist/_pkgs/affine-inline-link/link-node/affine-link.js +4 -1
- package/dist/_pkgs/affine-inline-preset/adapters/html/html-inline.d.ts +3 -0
- package/dist/_pkgs/affine-inline-preset/adapters/html/html-inline.js +29 -1
- package/dist/_pkgs/affine-model/blocks/code/code-model.d.ts +1 -0
- package/dist/_pkgs/affine-model/blocks/code/code-model.js +1 -0
- package/dist/_pkgs/affine-model/elements/connector/connector.js +24 -0
- package/dist/_pkgs/affine-model/elements/edgy/board.d.ts +32 -0
- package/dist/_pkgs/affine-model/elements/edgy/board.js +112 -0
- package/dist/_pkgs/affine-model/elements/edgy/facets.d.ts +12 -0
- package/dist/_pkgs/affine-model/elements/edgy/facets.js +25 -1
- package/dist/_pkgs/affine-model/elements/edgy/index.d.ts +1 -0
- package/dist/_pkgs/affine-model/elements/edgy/index.js +1 -0
- package/dist/_pkgs/affine-model/elements/framework-background/background.d.ts +42 -0
- package/dist/_pkgs/affine-model/elements/framework-background/background.js +42 -0
- package/dist/_pkgs/affine-model/elements/framework-background/index.d.ts +1 -0
- package/dist/_pkgs/affine-model/elements/framework-background/index.js +1 -0
- package/dist/_pkgs/affine-model/elements/index.d.ts +3 -1
- package/dist/_pkgs/affine-model/elements/index.js +1 -0
- package/dist/_pkgs/affine-model/elements/mindmap/mindmap.js +8 -3
- package/dist/_pkgs/affine-model/elements/mindmap/style.d.ts +10 -0
- package/dist/_pkgs/affine-model/elements/mindmap/style.js +8 -0
- package/dist/_pkgs/affine-model/elements/wardley/wardley.d.ts +21 -29
- package/dist/_pkgs/affine-model/elements/wardley/wardley.js +41 -48
- package/dist/_pkgs/affine-shared/adapters/markdown/delta-converter.d.ts +6 -1
- package/dist/_pkgs/affine-shared/adapters/markdown/delta-converter.js +160 -2
- package/dist/_pkgs/affine-shared/adapters/markdown/markdown.js +5 -1
- package/dist/_pkgs/affine-shared/adapters/types/delta-converter.d.ts +1 -0
- package/dist/_pkgs/affine-shared/adapters/utils/color.d.ts +24 -0
- package/dist/_pkgs/affine-shared/adapters/utils/color.js +280 -0
- package/dist/_pkgs/affine-shared/adapters/utils/index.d.ts +1 -0
- package/dist/_pkgs/affine-shared/adapters/utils/index.js +1 -0
- package/dist/_pkgs/affine-shared/commands/block-crud/get-selected-blocks.js +10 -2
- package/dist/_pkgs/affine-shared/services/audit-service.d.ts +300 -0
- package/dist/_pkgs/affine-shared/services/audit-service.js +228 -0
- package/dist/_pkgs/affine-shared/services/edit-props-store.d.ts +7 -0
- package/dist/_pkgs/affine-shared/services/edit-props-store.js +11 -0
- package/dist/_pkgs/affine-shared/services/font-loader/font-loader-service.d.ts +26 -1
- package/dist/_pkgs/affine-shared/services/font-loader/font-loader-service.js +124 -7
- package/dist/_pkgs/affine-shared/services/index.d.ts +5 -0
- package/dist/_pkgs/affine-shared/services/index.js +5 -0
- package/dist/_pkgs/affine-shared/services/pivot-materiality-publisher.d.ts +129 -0
- package/dist/_pkgs/affine-shared/services/pivot-materiality-publisher.js +311 -0
- package/dist/_pkgs/affine-shared/services/pivot-properties-service.d.ts +217 -0
- package/dist/_pkgs/affine-shared/services/pivot-properties-service.js +114 -0
- package/dist/_pkgs/affine-shared/services/telemetry-service/code-block.d.ts +1 -1
- package/dist/_pkgs/affine-shared/services/telemetry-service/lifecycle.d.ts +182 -0
- package/dist/_pkgs/affine-shared/services/telemetry-service/telemetry-service.d.ts +2 -2
- package/dist/_pkgs/affine-shared/services/telemetry-service/types.d.ts +6 -1
- package/dist/_pkgs/affine-shared/services/toolbar-service/action.d.ts +10 -0
- package/dist/_pkgs/affine-shared/services/toolbar-service/index.d.ts +1 -0
- package/dist/_pkgs/affine-shared/services/toolbar-service/index.js +1 -0
- package/dist/_pkgs/affine-shared/services/toolbar-service/layout.d.ts +134 -0
- package/dist/_pkgs/affine-shared/services/toolbar-service/layout.js +146 -0
- package/dist/_pkgs/affine-shared/services/translation-service/index.d.ts +68 -0
- package/dist/_pkgs/affine-shared/services/translation-service/index.js +39 -0
- package/dist/_pkgs/affine-shared/services/universe-tag-defs-service.d.ts +155 -0
- package/dist/_pkgs/affine-shared/services/universe-tag-defs-service.js +254 -0
- package/dist/_pkgs/affine-shared/utils/dom/point-to-range.d.ts +4 -0
- package/dist/_pkgs/affine-shared/utils/dom/point-to-range.js +58 -2
- package/dist/_pkgs/affine-shared/utils/dom/viewport.d.ts +60 -0
- package/dist/_pkgs/affine-shared/utils/dom/viewport.js +58 -0
- package/dist/_pkgs/affine-shared/utils/print-to-pdf.d.ts +21 -0
- package/dist/_pkgs/affine-shared/utils/print-to-pdf.js +166 -32
- package/dist/_pkgs/affine-shared/utils/zod-schema.d.ts +7 -0
- package/dist/_pkgs/affine-shared/utils/zod-schema.js +27 -1
- package/dist/_pkgs/affine-widget-drag-handle/watchers/edgeless-watcher.d.ts +19 -10
- package/dist/_pkgs/affine-widget-drag-handle/watchers/edgeless-watcher.js +122 -23
- package/dist/_pkgs/affine-widget-drag-handle/watchers/pointer-event-watcher.d.ts +2 -0
- package/dist/_pkgs/affine-widget-drag-handle/watchers/pointer-event-watcher.js +25 -4
- package/dist/_pkgs/affine-widget-edgeless-selected-rect/auto-complete-panel.js +10 -5
- package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-auto-complete.d.ts +15 -1
- package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-auto-complete.js +37 -32
- package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-element-link.js +5 -4
- package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-selected-rect.js +19 -9
- package/dist/_pkgs/affine-widget-edgeless-selected-rect/utils.d.ts +16 -2
- package/dist/_pkgs/affine-widget-edgeless-selected-rect/utils.js +19 -2
- package/dist/_pkgs/affine-widget-edgeless-toolbar/index.d.ts +1 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/index.js +1 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/menu/command-menu.d.ts +38 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/menu/command-menu.js +99 -0
- package/dist/_pkgs/affine-widget-frame-title/edgeless-frame-title-editor.js +4 -1
- package/dist/_pkgs/affine-widget-keyboard-toolbar/icons.js +98 -98
- package/dist/_pkgs/affine-widget-linked-doc/linked-doc-popover.js +2 -15
- package/dist/_pkgs/affine-widget-linked-doc/transformers/markdown.d.ts +10 -1
- package/dist/_pkgs/affine-widget-linked-doc/transformers/markdown.js +133 -6
- package/dist/_pkgs/affine-widget-linked-doc/transformers/utils.d.ts +10 -0
- package/dist/_pkgs/affine-widget-linked-doc/transformers/utils.js +120 -3
- package/dist/_pkgs/affine-widget-linked-doc/utils.d.ts +12 -0
- package/dist/_pkgs/affine-widget-linked-doc/utils.js +33 -0
- package/dist/_pkgs/affine-widget-remote-selection/edgeless/index.js +6 -4
- package/dist/_pkgs/affine-widget-slash-menu/slash-menu-popover.js +8 -4
- package/dist/_pkgs/affine-widget-slash-menu/utils.d.ts +9 -0
- package/dist/_pkgs/affine-widget-slash-menu/utils.js +24 -0
- package/dist/_pkgs/affine-widget-toolbar/toolbar.d.ts +6 -0
- package/dist/_pkgs/affine-widget-toolbar/toolbar.js +34 -6
- package/dist/_pkgs/affine-widget-toolbar/utils.d.ts +146 -3
- package/dist/_pkgs/affine-widget-toolbar/utils.js +738 -56
- package/dist/_pkgs/data-view/core/common/property-menu.js +3 -16
- package/dist/_pkgs/data-view/core/component/tags/multi-tag-select.d.ts +4 -0
- package/dist/_pkgs/data-view/core/component/tags/multi-tag-select.js +28 -1
- package/dist/_pkgs/data-view/core/data-view.d.ts +3 -1
- package/dist/_pkgs/data-view/core/data-view.js +25 -3
- package/dist/_pkgs/data-view/core/detail/field.js +2 -2
- package/dist/_pkgs/data-view/core/detail/selection.d.ts +4 -2
- package/dist/_pkgs/data-view/core/detail/selection.js +23 -7
- package/dist/_pkgs/data-view/core/effect.js +2 -0
- package/dist/_pkgs/data-view/core/filter/eval.js +36 -23
- package/dist/_pkgs/data-view/core/filter/filter-fn/matcher.d.ts +7 -0
- package/dist/_pkgs/data-view/core/filter/filter-fn/matcher.js +12 -0
- package/dist/_pkgs/data-view/core/group-by/compare-date-keys.d.ts +11 -0
- package/dist/_pkgs/data-view/core/group-by/compare-date-keys.js +55 -0
- package/dist/_pkgs/data-view/core/group-by/define.d.ts +6 -0
- package/dist/_pkgs/data-view/core/group-by/define.js +114 -0
- package/dist/_pkgs/data-view/core/group-by/matcher.d.ts +7 -0
- package/dist/_pkgs/data-view/core/group-by/matcher.js +13 -0
- package/dist/_pkgs/data-view/core/group-by/renderer/boolean-group.js +11 -11
- package/dist/_pkgs/data-view/core/group-by/renderer/date-group.d.ts +9 -0
- package/dist/_pkgs/data-view/core/group-by/renderer/date-group.js +97 -0
- package/dist/_pkgs/data-view/core/group-by/setting.js +86 -7
- package/dist/_pkgs/data-view/core/group-by/trait.d.ts +34 -0
- package/dist/_pkgs/data-view/core/group-by/trait.js +106 -10
- package/dist/_pkgs/data-view/core/utils/menu-title.js +17 -17
- package/dist/_pkgs/data-view/property-presets/multi-select/cell-renderer.js +3 -1
- package/dist/_pkgs/data-view/property-presets/number/define.js +2 -1
- package/dist/_pkgs/data-view/property-presets/select/cell-renderer.js +3 -1
- package/dist/_pkgs/data-view/view-presets/calendar/calendar-view-manager.d.ts +70 -0
- package/dist/_pkgs/data-view/view-presets/calendar/calendar-view-manager.js +449 -0
- package/dist/_pkgs/data-view/view-presets/calendar/define.d.ts +10 -0
- package/dist/_pkgs/data-view/view-presets/calendar/define.js +27 -0
- package/dist/_pkgs/data-view/view-presets/calendar/effect.d.ts +1 -0
- package/dist/_pkgs/data-view/view-presets/calendar/effect.js +4 -0
- package/dist/_pkgs/data-view/view-presets/calendar/index.d.ts +6 -0
- package/dist/_pkgs/data-view/view-presets/calendar/index.js +6 -0
- package/dist/_pkgs/data-view/view-presets/calendar/layout.d.ts +37 -0
- package/dist/_pkgs/data-view/view-presets/calendar/layout.js +138 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/actions.d.ts +7 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/actions.js +68 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/dnd.d.ts +32 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/dnd.js +159 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/effect.d.ts +1 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/effect.js +7 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/hit-test.d.ts +1 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/hit-test.js +28 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/styles.d.ts +1 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/styles.js +707 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/view.d.ts +89 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/view.js +837 -0
- package/dist/_pkgs/data-view/view-presets/calendar/renderer.d.ts +2 -0
- package/dist/_pkgs/data-view/view-presets/calendar/renderer.js +8 -0
- package/dist/_pkgs/data-view/view-presets/calendar/source.d.ts +8 -0
- package/dist/_pkgs/data-view/view-presets/calendar/source.js +3 -0
- package/dist/_pkgs/data-view/view-presets/calendar/types.d.ts +79 -0
- package/dist/_pkgs/data-view/view-presets/calendar/types.js +1 -0
- package/dist/_pkgs/data-view/view-presets/convert.js +28 -0
- package/dist/_pkgs/data-view/view-presets/effect.js +2 -0
- package/dist/_pkgs/data-view/view-presets/index.d.ts +2 -0
- package/dist/_pkgs/data-view/view-presets/index.js +3 -0
- package/dist/_pkgs/data-view/view-presets/kanban/kanban-view-manager.js +3 -1
- package/dist/_pkgs/data-view/view-presets/kanban/mobile/cell.js +2 -2
- package/dist/_pkgs/data-view/view-presets/table/collapsed-state.d.ts +18 -0
- package/dist/_pkgs/data-view/view-presets/table/collapsed-state.js +36 -0
- package/dist/_pkgs/data-view/view-presets/table/mobile/cell.js +2 -2
- package/dist/_pkgs/data-view/view-presets/table/mobile/group.d.ts +11 -0
- package/dist/_pkgs/data-view/view-presets/table/mobile/group.js +87 -4
- package/dist/_pkgs/data-view/view-presets/table/pc/cell.d.ts +3 -0
- package/dist/_pkgs/data-view/view-presets/table/pc/cell.js +11 -2
- package/dist/_pkgs/data-view/view-presets/table/pc/controller/hotkeys.d.ts +1 -0
- package/dist/_pkgs/data-view/view-presets/table/pc/controller/hotkeys.js +39 -33
- package/dist/_pkgs/data-view/view-presets/table/pc/group.d.ts +10 -0
- package/dist/_pkgs/data-view/view-presets/table/pc/group.js +84 -5
- package/dist/_pkgs/data-view/view-presets/table/pc-virtual/controller/hotkeys.d.ts +1 -0
- package/dist/_pkgs/data-view/view-presets/table/pc-virtual/controller/hotkeys.js +39 -33
- package/dist/_pkgs/data-view/view-presets/table/pc-virtual/group/top/group-title.js +18 -18
- package/dist/_pkgs/data-view/view-presets/table/pc-virtual/row/cell.d.ts +3 -0
- package/dist/_pkgs/data-view/view-presets/table/pc-virtual/row/cell.js +8 -0
- package/dist/_pkgs/data-view/view-presets/table/table-view-manager.js +3 -1
- package/dist/_pkgs/data-view/view-presets/table/utils.d.ts +3 -0
- package/dist/_pkgs/data-view/view-presets/table/utils.js +16 -1
- package/dist/_pkgs/data-view/widget-presets/tools/presets/view-options/view-options.js +3 -1
- package/dist/_pkgs/global/gfx/curve.js +4 -3
- package/dist/_pkgs/std/clipboard/clipboard.js +13 -3
- package/dist/_pkgs/std/clipboard/utils.d.ts +5 -0
- package/dist/_pkgs/std/clipboard/utils.js +7 -0
- package/dist/_pkgs/std/event/dispatcher.js +27 -1
- package/dist/_pkgs/std/event/keymap.js +16 -6
- package/dist/_pkgs/std/extension/command-registry.d.ts +321 -0
- package/dist/_pkgs/std/extension/command-registry.js +233 -0
- package/dist/_pkgs/std/extension/dnd/index.d.ts +1 -1
- package/dist/_pkgs/std/extension/index.d.ts +2 -0
- package/dist/_pkgs/std/extension/index.js +2 -0
- package/dist/_pkgs/std/extension/translation-manifest.d.ts +49 -0
- package/dist/_pkgs/std/extension/translation-manifest.js +71 -0
- package/dist/_pkgs/std/gfx/index.d.ts +7 -3
- package/dist/_pkgs/std/gfx/index.js +6 -2
- package/dist/_pkgs/std/gfx/interactivity/gfx-view-event-handler.js +6 -1
- package/dist/_pkgs/std/gfx/interactivity/manager.d.ts +8 -0
- package/dist/_pkgs/std/gfx/interactivity/manager.js +18 -0
- package/dist/_pkgs/std/gfx/layer.d.ts +1 -1
- package/dist/_pkgs/std/gfx/layer.js +1 -2
- package/dist/_pkgs/std/gfx/model/surface/decorators/field.js +9 -0
- package/dist/_pkgs/std/gfx/model/surface/decorators/index.d.ts +2 -2
- package/dist/_pkgs/std/gfx/model/surface/decorators/index.js +2 -2
- package/dist/_pkgs/std/gfx/model/surface/decorators/local.d.ts +14 -0
- package/dist/_pkgs/std/gfx/model/surface/decorators/local.js +22 -0
- package/dist/_pkgs/std/gfx/model/surface/decorators/observer.d.ts +2 -0
- package/dist/_pkgs/std/gfx/model/surface/decorators/observer.js +40 -1
- package/dist/_pkgs/std/gfx/model/surface/element-model.d.ts +282 -0
- package/dist/_pkgs/std/gfx/model/surface/element-model.js +436 -25
- package/dist/_pkgs/std/gfx/model/surface/pivot.d.ts +48 -0
- package/dist/_pkgs/std/gfx/model/surface/pivot.js +34 -0
- package/dist/_pkgs/std/gfx/model/surface/role.d.ts +153 -0
- package/dist/_pkgs/std/gfx/model/surface/role.js +115 -0
- package/dist/_pkgs/std/gfx/model/surface/surface-model.d.ts +70 -0
- package/dist/_pkgs/std/gfx/model/surface/surface-model.js +304 -17
- package/dist/_pkgs/std/gfx/model/surface/tags.d.ts +77 -0
- package/dist/_pkgs/std/gfx/model/surface/tags.js +246 -0
- package/dist/_pkgs/std/gfx/perf.d.ts +10 -0
- package/dist/_pkgs/std/gfx/perf.js +30 -0
- package/dist/_pkgs/std/gfx/tool/tool-controller.d.ts +13 -0
- package/dist/_pkgs/std/gfx/tool/tool-controller.js +26 -0
- package/dist/_pkgs/std/gfx/viewport.d.ts +12 -0
- package/dist/_pkgs/std/gfx/viewport.js +19 -1
- package/dist/_pkgs/std/inline/services/event.d.ts +2 -0
- package/dist/_pkgs/std/inline/services/event.js +96 -21
- package/dist/_pkgs/std/utils/layer.js +2 -6
- package/dist/_pkgs/std/utils/tree.d.ts +14 -0
- package/dist/_pkgs/std/utils/tree.js +59 -8
- package/dist/_pkgs/std/view/element/gfx-block-component.js +23 -13
- package/dist/_pkgs/store/extension/workspace/workspace-meta.d.ts +10 -0
- package/dist/_pkgs/store/model/block/flat-sync-controller.js +2 -12
- package/dist/_pkgs/store/model/store/crud.js +7 -4
- package/dist/_pkgs/store/reactive/flat-native-y/index.d.ts +1 -1
- package/dist/_pkgs/store/reactive/flat-native-y/index.js +24 -2
- package/dist/commands.d.ts +58 -0
- package/dist/commands.js +66 -0
- package/dist/extensions/command-telemetry.d.ts +21 -0
- package/dist/extensions/command-telemetry.js +89 -0
- package/dist/extensions/store.d.ts +9 -4
- package/dist/extensions/store.js +27 -24
- package/dist/extensions/view.d.ts +9 -4
- package/dist/extensions/view.js +23 -8
- package/dist/flags.d.ts +98 -21
- package/dist/flags.js +103 -22
- package/dist/frameworks.d.ts +45 -0
- package/dist/frameworks.js +154 -0
- package/dist/schemas.d.ts +8 -5
- package/dist/schemas.js +28 -32
- package/dist/shortcuts.d.ts +16 -16
- package/dist/shortcuts.js +8 -36
- package/dist/translations.d.ts +56 -0
- package/dist/translations.js +112 -0
- package/package.json +16 -4
- package/dist/_pkgs/affine-block-root/keyboard/shortcuts.d.ts +0 -8
- package/dist/_pkgs/affine-block-root/keyboard/shortcuts.js +0 -48
- package/dist/_pkgs/affine-gfx-shape/shortcuts.d.ts +0 -6
- package/dist/_pkgs/affine-gfx-shape/shortcuts.js +0 -28
- package/dist/_pkgs/data-view/core/utils/cache.d.ts +0 -5
- package/dist/_pkgs/data-view/core/utils/cache.js +0 -28
|
@@ -0,0 +1,590 @@
|
|
|
1
|
+
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
2
|
+
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
3
|
+
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
4
|
+
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
5
|
+
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
6
|
+
var _, done = false;
|
|
7
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
8
|
+
var context = {};
|
|
9
|
+
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
10
|
+
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
11
|
+
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
12
|
+
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
13
|
+
if (kind === "accessor") {
|
|
14
|
+
if (result === void 0) continue;
|
|
15
|
+
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
16
|
+
if (_ = accept(result.get)) descriptor.get = _;
|
|
17
|
+
if (_ = accept(result.set)) descriptor.set = _;
|
|
18
|
+
if (_ = accept(result.init)) initializers.unshift(_);
|
|
19
|
+
}
|
|
20
|
+
else if (_ = accept(result)) {
|
|
21
|
+
if (kind === "field") initializers.unshift(_);
|
|
22
|
+
else descriptor[key] = _;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
26
|
+
done = true;
|
|
27
|
+
};
|
|
28
|
+
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
29
|
+
var useValue = arguments.length > 2;
|
|
30
|
+
for (var i = 0; i < initializers.length; i++) {
|
|
31
|
+
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
32
|
+
}
|
|
33
|
+
return useValue ? value : void 0;
|
|
34
|
+
};
|
|
35
|
+
import { buildOccurrencePatch, getUniverseRegistry, publishOccurrenceMaterialities, translateKey, } from '../../affine-shared/services/index.js';
|
|
36
|
+
import { getRegisteredCommands, runCommand, WidgetViewExtension, } from '../../std/index.js';
|
|
37
|
+
import { isPivotBound } from '../../std/gfx/index.js';
|
|
38
|
+
import { effect } from '@preact/signals-core';
|
|
39
|
+
import { css, html, nothing } from 'lit';
|
|
40
|
+
import { state } from 'lit/decorators.js';
|
|
41
|
+
import { literal, unsafeStatic } from 'lit/static-html.js';
|
|
42
|
+
import { EditorAnchoredPanel, editorAnchoredPanelStyles, } from './editor-anchored-panel.js';
|
|
43
|
+
import { PivotRecordPickerProvider, ReadingManager, readRecord, readValueFlows, } from './reading.js';
|
|
44
|
+
export const READING_PROPOSAL_WIDGET = 'affine-reading-proposal-widget';
|
|
45
|
+
/** The two commands the confirmations drive. Spelled once. */
|
|
46
|
+
const TAG_SET_ID = 'tag.set';
|
|
47
|
+
const PIVOT_BIND_ID = 'pivot.bind';
|
|
48
|
+
/**
|
|
49
|
+
* How the panel names each side of a parent-child relation, keyed under
|
|
50
|
+
* `com.labre.reading.relations.`. Chrome, and only chrome.
|
|
51
|
+
*
|
|
52
|
+
* Exported because it is DATA: the translation-key manifest walks it rather
|
|
53
|
+
* than restating the two wordings, which a source scan could not check — the
|
|
54
|
+
* key is built as a template literal and the fallback reaches `translateKey`
|
|
55
|
+
* through a local helper.
|
|
56
|
+
*/
|
|
57
|
+
export const RELATION_SIDE_FALLBACK = {
|
|
58
|
+
consumers: 'Consumers (above)',
|
|
59
|
+
suppliers: 'Suppliers (below)',
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* **The proposal panel** — what the tool reads of one component, offered for
|
|
63
|
+
* confirmation (MF3).
|
|
64
|
+
*
|
|
65
|
+
* It opens on a click and on nothing else: `ReadingManager.open$` is written by
|
|
66
|
+
* the `element.read` command, which the element's own toolbar and the palette
|
|
67
|
+
* invoke. Rendering it costs the document nothing — every line is a function of
|
|
68
|
+
* the board, recomputed at render time, and there is no code path from a render
|
|
69
|
+
* to a write. The invariant has a test of its own: opening and closing this
|
|
70
|
+
* panel a hundred times leaves the document byte-identical.
|
|
71
|
+
*
|
|
72
|
+
* ## What a confirmation is
|
|
73
|
+
*
|
|
74
|
+
* The two writes a user can ask for are the two EXISTING promotion commands:
|
|
75
|
+
* `tag.set` for a nature and `pivot.bind` for the link to a record. The panel
|
|
76
|
+
* owns neither — it invokes them through the registry, exactly as
|
|
77
|
+
* `tags-toolbar.ts` does, so one gesture stays one telemetry event, one undo
|
|
78
|
+
* step and one read-only guard, wherever it was triggered from.
|
|
79
|
+
*
|
|
80
|
+
* A confirmation appears only where there is something to confirm: a value the
|
|
81
|
+
* RECORD carries and the element does not. The library never proposes a nature
|
|
82
|
+
* of its own — no derivation, no inference from the name, from the shape or
|
|
83
|
+
* from the position. An unqualified component with no record simply reads as
|
|
84
|
+
* unqualified, and the panel says so.
|
|
85
|
+
*
|
|
86
|
+
* ## Drift
|
|
87
|
+
*
|
|
88
|
+
* A bound element whose drawing has moved away from its record gets one extra
|
|
89
|
+
* line, informative and non-blocking, with the way to bring the record up to
|
|
90
|
+
* date: the existing materiality publisher, fire-and-forget, host-side. Nothing
|
|
91
|
+
* is refused, nothing is blocked and nothing is written to the DOCUMENT — the
|
|
92
|
+
* board is always right about itself.
|
|
93
|
+
*
|
|
94
|
+
* ## Where it sits
|
|
95
|
+
*
|
|
96
|
+
* **Anchored to the EDITOR, above the senior button bar and at its width** —
|
|
97
|
+
* the PO's recette of 02/08/2026 and its second pass, now the shared contract
|
|
98
|
+
* of ADR 0011. It shipped as a bubble floating beside the element and came back
|
|
99
|
+
* with two faults: it rendered BEHIND the contextual toolbar, and a paragraph
|
|
100
|
+
* of prose is not a thing to read out of the corner of a shape. The first pass
|
|
101
|
+
* made it a bottom-centre panel at a fixed 480px; the second replaced that
|
|
102
|
+
* arbitrary measure with the toolbar's own, so the two boxes share their left
|
|
103
|
+
* and right edges. All of that geometry — and the layer above every toolbar
|
|
104
|
+
* that goes with it — lives in {@link EditorAnchoredPanel}; what is left here
|
|
105
|
+
* is the reading itself.
|
|
106
|
+
*
|
|
107
|
+
* The mechanics that are easy to get wrong are the base class's too: a
|
|
108
|
+
* zero-sized host so the canvas stays clickable, the pointer pair swallowed on
|
|
109
|
+
* the panel itself, Escape listened for on the EDITOR HOST rather than on
|
|
110
|
+
* `document`, and click-away that observes without swallowing.
|
|
111
|
+
*/
|
|
112
|
+
let ReadingProposalWidget = (() => {
|
|
113
|
+
let _classSuper = EditorAnchoredPanel;
|
|
114
|
+
let __revision_decorators;
|
|
115
|
+
let __revision_initializers = [];
|
|
116
|
+
let __revision_extraInitializers = [];
|
|
117
|
+
return class ReadingProposalWidget extends _classSuper {
|
|
118
|
+
constructor() {
|
|
119
|
+
super(...arguments);
|
|
120
|
+
this.#_revision_accessor_storage = __runInitializers(this, __revision_initializers, 0);
|
|
121
|
+
this._elementSubscription = (__runInitializers(this, __revision_extraInitializers), null);
|
|
122
|
+
this._confirmNature = (elementId, tag, values) => (event) => {
|
|
123
|
+
event.stopPropagation();
|
|
124
|
+
this._run(TAG_SET_ID, { tag, values, elementIds: [elementId] });
|
|
125
|
+
this._revision++;
|
|
126
|
+
};
|
|
127
|
+
this._linkRecord = (elementId) => (event) => {
|
|
128
|
+
event.stopPropagation();
|
|
129
|
+
const picker = this.std.getOptional(PivotRecordPickerProvider);
|
|
130
|
+
if (!picker)
|
|
131
|
+
return;
|
|
132
|
+
// `Promise.resolve().then(...)` rather than calling `pick` directly: the
|
|
133
|
+
// contract says a picker MUST NOT throw, and this `.catch` is the only line
|
|
134
|
+
// of defence behind that sentence. A picker that throws SYNCHRONOUSLY
|
|
135
|
+
// escapes a `.catch` on its return value entirely — it never returns one —
|
|
136
|
+
// and surfaces as an unhandled error out of a lit event handler. Wrapping
|
|
137
|
+
// the CALL folds both failures onto the same behaviour as a cancel.
|
|
138
|
+
Promise.resolve()
|
|
139
|
+
.then(() => picker.pick(this.std, elementId))
|
|
140
|
+
.then(pivotDocId => {
|
|
141
|
+
// A cancelled picker writes nothing — the whole point of the rung.
|
|
142
|
+
if (!pivotDocId)
|
|
143
|
+
return;
|
|
144
|
+
this._run(PIVOT_BIND_ID, { pivotDocId, elementIds: [elementId] });
|
|
145
|
+
this._revision++;
|
|
146
|
+
})
|
|
147
|
+
.catch(error => {
|
|
148
|
+
console.error('PivotRecordPicker.pick threw', error);
|
|
149
|
+
});
|
|
150
|
+
};
|
|
151
|
+
/**
|
|
152
|
+
* Announce the occurrence's current materialities to the host — the existing
|
|
153
|
+
* fire-and-forget publisher, and no new channel.
|
|
154
|
+
*
|
|
155
|
+
* What crosses is what the seam carries: the occurrence's role and its
|
|
156
|
+
* type-3 tags (`OccurrenceMaterialityPatch`). A PHASE is a reading of the
|
|
157
|
+
* board, and the seam has no field for it: the drift line reports it so the
|
|
158
|
+
* user can settle it on whichever side is wrong, and the library does not
|
|
159
|
+
* invent a transport for a fact the host never agreed to receive.
|
|
160
|
+
*/
|
|
161
|
+
this._updateRecord = (elementId, pivotDocId) => (event) => {
|
|
162
|
+
event.stopPropagation();
|
|
163
|
+
const element = this.gfx.surface?.getElementById(elementId);
|
|
164
|
+
if (!element)
|
|
165
|
+
return;
|
|
166
|
+
publishOccurrenceMaterialities(this.std, buildOccurrencePatch(element, pivotDocId));
|
|
167
|
+
// The disagreement has been answered; the next local change re-checks it
|
|
168
|
+
// from scratch, so nothing here has to remember it.
|
|
169
|
+
const manager = this._manager;
|
|
170
|
+
if (manager)
|
|
171
|
+
manager.drift$.value = null;
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
static {
|
|
175
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
176
|
+
__revision_decorators = [state()];
|
|
177
|
+
__esDecorate(this, null, __revision_decorators, { kind: "accessor", name: "_revision", static: false, private: false, access: { has: obj => "_revision" in obj, get: obj => obj._revision, set: (obj, value) => { obj._revision = value; } }, metadata: _metadata }, __revision_initializers, __revision_extraInitializers);
|
|
178
|
+
if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
179
|
+
}
|
|
180
|
+
static { this.styles = [
|
|
181
|
+
editorAnchoredPanelStyles,
|
|
182
|
+
css `
|
|
183
|
+
.reading-title {
|
|
184
|
+
font-weight: 600;
|
|
185
|
+
margin-bottom: 8px;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
.reading-field + .reading-field {
|
|
189
|
+
margin-top: 10px;
|
|
190
|
+
padding-top: 10px;
|
|
191
|
+
border-top: 1px solid var(--affine-border-color);
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
.reading-label {
|
|
195
|
+
color: var(--affine-text-secondary-color);
|
|
196
|
+
font-size: 11px;
|
|
197
|
+
text-transform: uppercase;
|
|
198
|
+
letter-spacing: 0.04em;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
.reading-value {
|
|
202
|
+
overflow-wrap: anywhere;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
.reading-empty {
|
|
206
|
+
color: var(--affine-text-secondary-color);
|
|
207
|
+
font-style: italic;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
.reading-note {
|
|
211
|
+
margin-top: 2px;
|
|
212
|
+
color: var(--affine-text-secondary-color);
|
|
213
|
+
font-size: 13px;
|
|
214
|
+
overflow-wrap: anywhere;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
.reading-actions {
|
|
218
|
+
display: flex;
|
|
219
|
+
flex-wrap: wrap;
|
|
220
|
+
gap: 8px;
|
|
221
|
+
margin-top: 8px;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
.reading-action {
|
|
225
|
+
padding: 2px 8px;
|
|
226
|
+
border-radius: 4px;
|
|
227
|
+
border: 1px solid var(--affine-border-color);
|
|
228
|
+
background: transparent;
|
|
229
|
+
color: var(--affine-text-secondary-color);
|
|
230
|
+
font-family: inherit;
|
|
231
|
+
font-size: 12px;
|
|
232
|
+
cursor: pointer;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
.reading-action:hover {
|
|
236
|
+
background: var(--affine-hover-color);
|
|
237
|
+
color: var(--affine-text-primary-color);
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
.reading-action:focus-visible {
|
|
241
|
+
outline: 2px solid var(--affine-primary-color);
|
|
242
|
+
outline-offset: 1px;
|
|
243
|
+
}
|
|
244
|
+
`,
|
|
245
|
+
]; }
|
|
246
|
+
#_revision_accessor_storage;
|
|
247
|
+
/** Bumped to force a re-render; the reading itself is never stored. */
|
|
248
|
+
get _revision() { return this.#_revision_accessor_storage; }
|
|
249
|
+
set _revision(value) { this.#_revision_accessor_storage = value; }
|
|
250
|
+
get _manager() {
|
|
251
|
+
return this.std.getOptional(ReadingManager) ?? null;
|
|
252
|
+
}
|
|
253
|
+
get panelOpen() {
|
|
254
|
+
return Boolean(this._manager?.open$.value);
|
|
255
|
+
}
|
|
256
|
+
closePanel() {
|
|
257
|
+
this._manager?.close();
|
|
258
|
+
}
|
|
259
|
+
_wire() {
|
|
260
|
+
const { _disposables, gfx } = this;
|
|
261
|
+
const manager = this._manager;
|
|
262
|
+
if (manager) {
|
|
263
|
+
// `effect` runs once on creation, and that first run happens INSIDE the
|
|
264
|
+
// widget's own first update — bumping state there is the "scheduled an
|
|
265
|
+
// update after an update completed" lit warns about, for a render that is
|
|
266
|
+
// already happening. Every later run is a real change and is wanted.
|
|
267
|
+
let primed = false;
|
|
268
|
+
_disposables.add(effect(() => {
|
|
269
|
+
// Read both signals so the panel follows an open/close and a drift.
|
|
270
|
+
void manager.open$.value;
|
|
271
|
+
void manager.drift$.value;
|
|
272
|
+
if (!primed) {
|
|
273
|
+
primed = true;
|
|
274
|
+
return;
|
|
275
|
+
}
|
|
276
|
+
this._revision++;
|
|
277
|
+
}));
|
|
278
|
+
}
|
|
279
|
+
// Click-away, Escape, and the re-measure of the bar the panel is aligned
|
|
280
|
+
// on — one call, and the same one Map quality makes (ADR 0011). The panel
|
|
281
|
+
// used to CLOSE on a viewport change, because it hung off an element that a
|
|
282
|
+
// pan or a zoom moved out from under it; anchored to the editor it merely
|
|
283
|
+
// re-measures, and panning to look at what the reading is talking about
|
|
284
|
+
// while the reading is on screen keeps working.
|
|
285
|
+
this.wireAnchoredPanel();
|
|
286
|
+
// The surface is a signal, not a fact: it can arrive after the widget and
|
|
287
|
+
// be replaced under it. Anything on the board can change what is read — a
|
|
288
|
+
// link redrawn, a supplier moved, the map itself resized — so while a panel
|
|
289
|
+
// is open every update is a reason to read again.
|
|
290
|
+
_disposables.add(effect(() => {
|
|
291
|
+
const surface = gfx.surface$.value;
|
|
292
|
+
this._elementSubscription?.unsubscribe();
|
|
293
|
+
this._elementSubscription = surface
|
|
294
|
+
? surface.elementUpdated.subscribe(() => {
|
|
295
|
+
if (this._manager?.open$.value)
|
|
296
|
+
this._revision++;
|
|
297
|
+
})
|
|
298
|
+
: null;
|
|
299
|
+
}));
|
|
300
|
+
_disposables.add(() => {
|
|
301
|
+
this._elementSubscription?.unsubscribe();
|
|
302
|
+
this._elementSubscription = null;
|
|
303
|
+
});
|
|
304
|
+
}
|
|
305
|
+
connectedCallback() {
|
|
306
|
+
super.connectedCallback();
|
|
307
|
+
if (this.hasUpdated)
|
|
308
|
+
this._wire();
|
|
309
|
+
}
|
|
310
|
+
firstUpdated() {
|
|
311
|
+
this._wire();
|
|
312
|
+
}
|
|
313
|
+
/** The label a nature value id reads as, or the raw id when no def explains it. */
|
|
314
|
+
_natureLabel(tagId, valueId) {
|
|
315
|
+
const def = getUniverseRegistry(this.std).tag(tagId);
|
|
316
|
+
if (!def || def.values === 'open')
|
|
317
|
+
return valueId;
|
|
318
|
+
return def.values.find(value => value.id === valueId)?.label || valueId;
|
|
319
|
+
}
|
|
320
|
+
_field(testid, label, body) {
|
|
321
|
+
return html `<div class="reading-field" data-testid=${testid}>
|
|
322
|
+
<div class="reading-label">${label}</div>
|
|
323
|
+
${body}
|
|
324
|
+
</div>`;
|
|
325
|
+
}
|
|
326
|
+
_renderNodeType(reading, profile) {
|
|
327
|
+
const { nodeType } = reading;
|
|
328
|
+
const label = translateKey(this.std, nodeType.labelKey ?? nodeType.roleId, nodeType.roleId);
|
|
329
|
+
// The hierarchy, resolved through the SAME vocabulary the reading used:
|
|
330
|
+
// `market` reads as "a kind of Component" because the framework said so in
|
|
331
|
+
// its role defs, not because this panel knows what a market is.
|
|
332
|
+
const chain = nodeType.specialises
|
|
333
|
+
.map(roleId => translateKey(this.std, profile.roles[roleId]?.labelKey ?? roleId, roleId))
|
|
334
|
+
.join(' › ');
|
|
335
|
+
return this._field('reading-node-type', translateKey(this.std, 'com.labre.reading.field.type', 'Type of node'), html `<div class="reading-value">${label}</div>
|
|
336
|
+
${chain
|
|
337
|
+
? html `<div class="reading-note" data-testid="reading-specialises">
|
|
338
|
+
${translateKey(this.std, 'com.labre.reading.field.specialises', 'A kind of')}
|
|
339
|
+
${chain}
|
|
340
|
+
</div>`
|
|
341
|
+
: nothing}`);
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* The nature the element CARRIES — and, when the record carries a different
|
|
345
|
+
* one, the record's, offered for confirmation. Never a derived one, and never
|
|
346
|
+
* a word the framework does not describe.
|
|
347
|
+
*
|
|
348
|
+
* `record.nature` has already been resolved against the tag def
|
|
349
|
+
* (`resolveRecordNature`), so what this button writes is always a value id the
|
|
350
|
+
* vocabulary knows. What could NOT be resolved is named in a sentence with no
|
|
351
|
+
* button beside it: the honest thing to say about `"Activity"` when the def
|
|
352
|
+
* describes `wardley:nature/activity` is that the record says something this
|
|
353
|
+
* framework does not recognise — not to offer a click that would put the
|
|
354
|
+
* host's word into the document.
|
|
355
|
+
*/
|
|
356
|
+
_renderNature(reading, profile, record, writable) {
|
|
357
|
+
const tagId = profile.nature?.tagId;
|
|
358
|
+
if (!tagId)
|
|
359
|
+
return nothing;
|
|
360
|
+
const carried = reading.nature?.valueIds ?? [];
|
|
361
|
+
const proposed = record?.nature ?? [];
|
|
362
|
+
const differs = proposed.length > 0 &&
|
|
363
|
+
(carried.length !== proposed.length ||
|
|
364
|
+
!carried.every(value => proposed.includes(value)));
|
|
365
|
+
const value = carried.length
|
|
366
|
+
? html `<div class="reading-value">
|
|
367
|
+
${carried.map(id => this._natureLabel(tagId, id)).join(', ')}
|
|
368
|
+
</div>`
|
|
369
|
+
: html `<div class="reading-empty" data-testid="reading-nature-empty">
|
|
370
|
+
${translateKey(this.std, 'com.labre.reading.nature.none', 'Not qualified — the reading proposes nothing of its own.')}
|
|
371
|
+
</div>`;
|
|
372
|
+
const unknown = record?.unknownNature ?? [];
|
|
373
|
+
return this._field('reading-nature', translateKey(this.std, 'com.labre.reading.field.nature', 'Nature'), html `${value}
|
|
374
|
+
${unknown.length
|
|
375
|
+
? html `<div class="reading-note" data-testid="reading-nature-unknown">
|
|
376
|
+
${translateKey(this.std, 'com.labre.reading.nature.unknown-record-value', 'The record says')}
|
|
377
|
+
“${unknown.join('”, “')}”,
|
|
378
|
+
${translateKey(this.std, 'com.labre.reading.nature.unknown-record-value.suffix', 'a value this framework does not describe.')}
|
|
379
|
+
</div>`
|
|
380
|
+
: nothing}
|
|
381
|
+
${differs && writable
|
|
382
|
+
? html `<div class="reading-actions">
|
|
383
|
+
<button
|
|
384
|
+
class="reading-action"
|
|
385
|
+
type="button"
|
|
386
|
+
data-testid="reading-confirm-nature"
|
|
387
|
+
@pointerdown=${this.swallow}
|
|
388
|
+
@pointerup=${this.swallow}
|
|
389
|
+
@click=${this._confirmNature(reading.elementId, tagId, proposed)}
|
|
390
|
+
>
|
|
391
|
+
${translateKey(this.std, 'com.labre.reading.action.confirm-nature', 'Confirm')}
|
|
392
|
+
·
|
|
393
|
+
${proposed.map(id => this._natureLabel(tagId, id)).join(', ')}
|
|
394
|
+
</button>
|
|
395
|
+
</div>`
|
|
396
|
+
: nothing}`);
|
|
397
|
+
}
|
|
398
|
+
_renderRelations(reading) {
|
|
399
|
+
const consumers = reading.relations.filter(r => r.side === 'consumer');
|
|
400
|
+
const suppliers = reading.relations.filter(r => r.side === 'supplier');
|
|
401
|
+
const line = (relations, key) => relations.length
|
|
402
|
+
? html `<div class="reading-value" data-testid=${`reading-${key}`}>
|
|
403
|
+
${translateKey(this.std, `com.labre.reading.relations.${key}`, RELATION_SIDE_FALLBACK[key])}:
|
|
404
|
+
${relations
|
|
405
|
+
.map(relation => relation.otherName || relation.otherId)
|
|
406
|
+
.join(', ')}
|
|
407
|
+
</div>`
|
|
408
|
+
: nothing;
|
|
409
|
+
const contradictions = reading.relations.filter(r => r.contradictsGeometry);
|
|
410
|
+
return this._field('reading-relations', translateKey(this.std, 'com.labre.reading.field.relations', 'Parent-child relations'), html `${reading.relations.length === 0
|
|
411
|
+
? html `<div class="reading-empty">
|
|
412
|
+
${translateKey(this.std, 'com.labre.reading.relations.none', 'No typed link touches this component.')}
|
|
413
|
+
</div>`
|
|
414
|
+
: nothing}
|
|
415
|
+
${line(consumers, 'consumers')}
|
|
416
|
+
${line(suppliers, 'suppliers')}
|
|
417
|
+
${contradictions.length
|
|
418
|
+
? html `<div class="reading-note" data-testid="reading-contradiction">
|
|
419
|
+
${translateKey(this.std, 'com.labre.reading.relations.contradiction', 'A link states the opposite of what the positions show')}:
|
|
420
|
+
${contradictions
|
|
421
|
+
.map(relation => relation.otherName || relation.otherId)
|
|
422
|
+
.join(', ')}
|
|
423
|
+
</div>`
|
|
424
|
+
: nothing}`);
|
|
425
|
+
}
|
|
426
|
+
/**
|
|
427
|
+
* **Value flow** — the same typed edges as the relations above, said the way
|
|
428
|
+
* a value chain is read: from the bottom up.
|
|
429
|
+
*
|
|
430
|
+
* One sentence per typed edge, and no section at all when the element has
|
|
431
|
+
* none: an empty "Value flow" heading states nothing a user wants, and the
|
|
432
|
+
* relations field already says in its own words that no link touches this
|
|
433
|
+
* component.
|
|
434
|
+
*
|
|
435
|
+
* The sentence is assembled from two halves rather than interpolated, because
|
|
436
|
+
* `translateKey` returns a plain string and a host catalogue that returned
|
|
437
|
+
* markup would then be injected into the panel. The fallback reads
|
|
438
|
+
* "Value flows up from X to Y"; a host that translates
|
|
439
|
+
* `com.labre.reading.value-flow` gets the same two slots in its own order via
|
|
440
|
+
* the `.to` suffix key.
|
|
441
|
+
*/
|
|
442
|
+
_renderValueFlow(reading) {
|
|
443
|
+
const flows = readValueFlows(reading);
|
|
444
|
+
if (flows.length === 0)
|
|
445
|
+
return nothing;
|
|
446
|
+
const from = translateKey(this.std, 'com.labre.reading.value-flow', 'Value flows up from');
|
|
447
|
+
const to = translateKey(this.std, 'com.labre.reading.value-flow.to', 'to');
|
|
448
|
+
return this._field('reading-value-flow', translateKey(this.std, 'com.labre.reading.field.value-flow', 'Value flow'), html `${flows.map(flow => html `<div
|
|
449
|
+
class="reading-value"
|
|
450
|
+
data-testid="reading-value-flow-line"
|
|
451
|
+
data-edge-id=${flow.edgeId}
|
|
452
|
+
>
|
|
453
|
+
${from} ${flow.from} ${to} ${flow.to}
|
|
454
|
+
</div>`)}`);
|
|
455
|
+
}
|
|
456
|
+
_renderPhase(reading) {
|
|
457
|
+
const { phase } = reading;
|
|
458
|
+
return this._field('reading-phase', translateKey(this.std, 'com.labre.reading.field.phase', 'Evolution phase'), phase
|
|
459
|
+
? html `<div class="reading-value" data-zone-id=${phase.zoneId}>
|
|
460
|
+
${translateKey(this.std, phase.labelKey ?? phase.zoneId, phase.labelFallback ?? phase.zoneId)}
|
|
461
|
+
</div>
|
|
462
|
+
${phase.inTransitionBand
|
|
463
|
+
? html `<div class="reading-note" data-testid="reading-phase-band">
|
|
464
|
+
${translateKey(this.std, 'com.labre.reading.phase.band', 'In the zone of punctuated equilibrium')}
|
|
465
|
+
${phase.bandId ? html `(${phase.bandId})` : nothing}
|
|
466
|
+
</div>`
|
|
467
|
+
: nothing}`
|
|
468
|
+
: html `<div class="reading-empty" data-testid="reading-phase-none">
|
|
469
|
+
${translateKey(this.std, 'com.labre.reading.phase.none', 'Not on a framework background — no phase to read.')}
|
|
470
|
+
</div>`);
|
|
471
|
+
}
|
|
472
|
+
_renderNaming(reading) {
|
|
473
|
+
const { naming } = reading;
|
|
474
|
+
if (!naming)
|
|
475
|
+
return nothing;
|
|
476
|
+
return this._field('reading-naming', translateKey(this.std, 'com.labre.reading.field.naming', 'Naming convention'), html `<div class="reading-value" data-conforms=${String(naming.conforms)}>
|
|
477
|
+
${naming.conforms
|
|
478
|
+
? translateKey(this.std, 'com.labre.reading.naming.conforms', 'The name follows the convention of its nature.')
|
|
479
|
+
: translateKey(this.std, naming.hintKey, naming.hintFallback)}
|
|
480
|
+
</div>`);
|
|
481
|
+
}
|
|
482
|
+
/**
|
|
483
|
+
* The link to a pivot record, and the only place this panel can create one.
|
|
484
|
+
*
|
|
485
|
+
* The action exists only when the host registered a picker: the library
|
|
486
|
+
* cannot choose a document, so with no picker there is nothing to offer and
|
|
487
|
+
* the affordance is HIDDEN rather than disabled — the `QuickSearchProvider`
|
|
488
|
+
* precedent, and the same rule `queryPivotProperties` follows.
|
|
489
|
+
*/
|
|
490
|
+
_renderRecord(reading, writable) {
|
|
491
|
+
const surface = this.gfx.surface;
|
|
492
|
+
const element = surface?.getElementById(reading.elementId);
|
|
493
|
+
if (!element)
|
|
494
|
+
return nothing;
|
|
495
|
+
const bound = isPivotBound(element);
|
|
496
|
+
const picker = this.std.getOptional(PivotRecordPickerProvider);
|
|
497
|
+
return this._field('reading-record', translateKey(this.std, 'com.labre.reading.field.record', 'Record'), html `<div class="reading-value">
|
|
498
|
+
${bound
|
|
499
|
+
? translateKey(this.std, 'com.labre.reading.record.linked', 'Linked')
|
|
500
|
+
: html `<span class="reading-empty"
|
|
501
|
+
>${translateKey(this.std, 'com.labre.reading.record.none', 'Not linked to a record.')}</span
|
|
502
|
+
>`}
|
|
503
|
+
</div>
|
|
504
|
+
${!bound && picker && writable
|
|
505
|
+
? html `<div class="reading-actions">
|
|
506
|
+
<button
|
|
507
|
+
class="reading-action"
|
|
508
|
+
type="button"
|
|
509
|
+
data-testid="reading-link-record"
|
|
510
|
+
@pointerdown=${this.swallow}
|
|
511
|
+
@pointerup=${this.swallow}
|
|
512
|
+
@click=${this._linkRecord(reading.elementId)}
|
|
513
|
+
>
|
|
514
|
+
${translateKey(this.std, 'com.labre.reading.action.link', 'Link to a record')}
|
|
515
|
+
</button>
|
|
516
|
+
</div>`
|
|
517
|
+
: nothing}`);
|
|
518
|
+
}
|
|
519
|
+
/** The drift line: informative, never blocking, with one way to settle it. */
|
|
520
|
+
_renderDrift(reading) {
|
|
521
|
+
const drift = this._manager?.drift$.value;
|
|
522
|
+
if (!drift || drift.elementId !== reading.elementId)
|
|
523
|
+
return nothing;
|
|
524
|
+
return this._field('reading-drift', translateKey(this.std, 'com.labre.reading.field.drift', 'Drift'), html `<div class="reading-value">
|
|
525
|
+
${translateKey(this.std, 'com.labre.reading.drift.message', 'The board and the record disagree')}:
|
|
526
|
+
${drift.fields
|
|
527
|
+
.map(field => `${field.field} — ${field.read || '—'} / ${field.record}`)
|
|
528
|
+
.join('; ')}
|
|
529
|
+
</div>
|
|
530
|
+
<div class="reading-actions">
|
|
531
|
+
<button
|
|
532
|
+
class="reading-action"
|
|
533
|
+
type="button"
|
|
534
|
+
data-testid="reading-update-record"
|
|
535
|
+
@pointerdown=${this.swallow}
|
|
536
|
+
@pointerup=${this.swallow}
|
|
537
|
+
@click=${this._updateRecord(drift.elementId, drift.pivotDocId)}
|
|
538
|
+
>
|
|
539
|
+
${translateKey(this.std, 'com.labre.reading.action.update-record', 'Update the record')}
|
|
540
|
+
</button>
|
|
541
|
+
</div>`);
|
|
542
|
+
}
|
|
543
|
+
/** Invoke a registered command; a build without it simply has no action. */
|
|
544
|
+
_run(id, params) {
|
|
545
|
+
const command = getRegisteredCommands(this.std).find(c => c.id === id);
|
|
546
|
+
if (!command)
|
|
547
|
+
return;
|
|
548
|
+
// The panel hangs off the selected element and is opened from its toolbar,
|
|
549
|
+
// so that is the surface a confirmation is reported against — never the
|
|
550
|
+
// palette it was not opened from.
|
|
551
|
+
runCommand(this.std, command, { surface: 'contextual-toolbar', source: 'toolbar:general' }, params);
|
|
552
|
+
}
|
|
553
|
+
render() {
|
|
554
|
+
// Read the revision so lit re-renders when a signal moved.
|
|
555
|
+
void this._revision;
|
|
556
|
+
const manager = this._manager;
|
|
557
|
+
const elementId = manager?.open$.value;
|
|
558
|
+
if (!manager || !elementId)
|
|
559
|
+
return nothing;
|
|
560
|
+
const reading = manager.reading(elementId);
|
|
561
|
+
const profile = manager.profileOf(elementId);
|
|
562
|
+
if (!reading || !profile)
|
|
563
|
+
return nothing;
|
|
564
|
+
const element = this.gfx.surface?.getElementById(elementId);
|
|
565
|
+
// The record's side of the reading, guarded and synchronous. `undefined`
|
|
566
|
+
// on every degraded path: no binding, no provider, no configured fields.
|
|
567
|
+
const record = element ? readRecord(this.std, element, profile) : undefined;
|
|
568
|
+
// Read-only: the readings are all there, the confirmations are not. A
|
|
569
|
+
// gesture that cannot be carried out must not be offered — the two commands
|
|
570
|
+
// would refuse it anyway, silently, which is worse.
|
|
571
|
+
const writable = !this.std.store.readonly;
|
|
572
|
+
return this.renderAnchoredPanel({
|
|
573
|
+
testid: 'reading-panel',
|
|
574
|
+
variant: 'reading-panel',
|
|
575
|
+
elementId,
|
|
576
|
+
label: translateKey(this.std, 'com.labre.reading.panel.label', 'Proposed record'),
|
|
577
|
+
}, html `<div class="reading-title">
|
|
578
|
+
${translateKey(this.std, 'com.labre.reading.panel.title', 'What this map says about this component')}
|
|
579
|
+
</div>
|
|
580
|
+
${this._renderNodeType(reading, profile)}
|
|
581
|
+
${this._renderNature(reading, profile, record, writable)}
|
|
582
|
+
${this._renderRelations(reading)} ${this._renderValueFlow(reading)}
|
|
583
|
+
${this._renderPhase(reading)}
|
|
584
|
+
${this._renderNaming(reading)} ${this._renderRecord(reading, writable)}
|
|
585
|
+
${writable ? this._renderDrift(reading) : nothing}`);
|
|
586
|
+
}
|
|
587
|
+
};
|
|
588
|
+
})();
|
|
589
|
+
export { ReadingProposalWidget };
|
|
590
|
+
export const readingProposalWidget = WidgetViewExtension('affine:page', READING_PROPOSAL_WIDGET, literal `${unsafeStatic(READING_PROPOSAL_WIDGET)}`);
|