@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.
Files changed (483) hide show
  1. package/dist/_pkgs/affine-block-callout/callout-block.d.ts +6 -0
  2. package/dist/_pkgs/affine-block-callout/callout-block.js +25 -3
  3. package/dist/_pkgs/affine-block-callout/callout-keymap.js +59 -19
  4. package/dist/_pkgs/affine-block-callout/commands/callout-to-paragraph.d.ts +20 -0
  5. package/dist/_pkgs/affine-block-callout/commands/callout-to-paragraph.js +60 -0
  6. package/dist/_pkgs/affine-block-callout/commands/split-callout.d.ts +17 -0
  7. package/dist/_pkgs/affine-block-callout/commands/split-callout.js +42 -0
  8. package/dist/_pkgs/affine-block-callout/configs/slash-menu.js +9 -6
  9. package/dist/_pkgs/affine-block-callout/emoji-margin.d.ts +9 -0
  10. package/dist/_pkgs/affine-block-callout/emoji-margin.js +36 -0
  11. package/dist/_pkgs/affine-block-callout/emoji-menu.d.ts +5 -1
  12. package/dist/_pkgs/affine-block-callout/emoji-menu.js +5 -0
  13. package/dist/_pkgs/affine-block-code/code-block.d.ts +14 -0
  14. package/dist/_pkgs/affine-block-code/code-block.js +44 -6
  15. package/dist/_pkgs/affine-block-code/code-toolbar/components/code-toolbar.d.ts +2 -0
  16. package/dist/_pkgs/affine-block-code/code-toolbar/components/code-toolbar.js +23 -14
  17. package/dist/_pkgs/affine-block-code/code-toolbar/components/more-menu.d.ts +16 -0
  18. package/dist/_pkgs/affine-block-code/code-toolbar/components/more-menu.js +93 -0
  19. package/dist/_pkgs/affine-block-code/code-toolbar/config.js +52 -5
  20. package/dist/_pkgs/affine-block-code/effects.d.ts +2 -0
  21. package/dist/_pkgs/affine-block-code/effects.js +2 -0
  22. package/dist/_pkgs/affine-block-code/highlight/affine-code-unit.js +6 -1
  23. package/dist/_pkgs/affine-block-code/index.d.ts +1 -0
  24. package/dist/_pkgs/affine-block-code/index.js +1 -0
  25. package/dist/_pkgs/affine-block-code/line-numbers.d.ts +25 -0
  26. package/dist/_pkgs/affine-block-code/line-numbers.js +27 -0
  27. package/dist/_pkgs/affine-block-code/styles.js +31 -0
  28. package/dist/_pkgs/affine-block-data-view/data-view-block.js +1 -0
  29. package/dist/_pkgs/affine-block-database/components/title/index.js +4 -1
  30. package/dist/_pkgs/affine-block-database/configs/slash-menu.js +28 -1
  31. package/dist/_pkgs/affine-block-database/database-block.js +13 -0
  32. package/dist/_pkgs/affine-block-database/properties/paste-url.d.ts +24 -0
  33. package/dist/_pkgs/affine-block-database/properties/paste-url.js +98 -0
  34. package/dist/_pkgs/affine-block-database/properties/rich-text/cell-renderer.js +9 -19
  35. package/dist/_pkgs/affine-block-database/properties/title/text.js +20 -25
  36. package/dist/_pkgs/affine-block-database/views/index.js +1 -0
  37. package/dist/_pkgs/affine-block-edgeless-text/edgeless-text-block.js +10 -0
  38. package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/config.d.ts +3 -0
  39. package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/config.js +48 -1
  40. package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/font-size.d.ts +17 -0
  41. package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/font-size.js +24 -0
  42. package/dist/_pkgs/affine-block-embed-doc/common/doc-trashed.d.ts +9 -0
  43. package/dist/_pkgs/affine-block-embed-doc/common/doc-trashed.js +10 -0
  44. package/dist/_pkgs/affine-block-embed-doc/embed-linked-doc-block/embed-linked-doc-block.js +8 -4
  45. package/dist/_pkgs/affine-block-embed-doc/embed-synced-doc-block/embed-synced-doc-block.d.ts +4 -0
  46. package/dist/_pkgs/affine-block-embed-doc/embed-synced-doc-block/embed-synced-doc-block.js +22 -3
  47. package/dist/_pkgs/affine-block-frame/frame-manager.d.ts +13 -0
  48. package/dist/_pkgs/affine-block-frame/frame-manager.js +32 -2
  49. package/dist/_pkgs/affine-block-latex/styles.js +6 -1
  50. package/dist/_pkgs/affine-block-note/note-edgeless-block.d.ts +9 -0
  51. package/dist/_pkgs/affine-block-note/note-edgeless-block.js +29 -1
  52. package/dist/_pkgs/affine-block-root/commands/pivot-commands.d.ts +37 -0
  53. package/dist/_pkgs/affine-block-root/commands/pivot-commands.js +168 -0
  54. package/dist/_pkgs/affine-block-root/commands/reading-commands.d.ts +23 -0
  55. package/dist/_pkgs/affine-block-root/commands/reading-commands.js +107 -0
  56. package/dist/_pkgs/affine-block-root/commands/tag-commands.d.ts +47 -0
  57. package/dist/_pkgs/affine-block-root/commands/tag-commands.js +159 -0
  58. package/dist/_pkgs/affine-block-root/configs/toolbar.d.ts +1 -0
  59. package/dist/_pkgs/affine-block-root/edgeless/configs/toolbar/more.js +9 -2
  60. package/dist/_pkgs/affine-block-root/edgeless/configs/toolbar/render-linked-doc.js +1 -1
  61. package/dist/_pkgs/affine-block-root/edgeless/edgeless-keyboard.js +26 -1
  62. package/dist/_pkgs/affine-block-root/edgeless/edgeless-root-block.js +11 -2
  63. package/dist/_pkgs/affine-block-root/edgeless/edgeless-root-service.js +14 -0
  64. package/dist/_pkgs/affine-block-root/edgeless/index.d.ts +1 -0
  65. package/dist/_pkgs/affine-block-root/edgeless/index.js +1 -0
  66. package/dist/_pkgs/affine-block-root/edgeless/reserved-keys.d.ts +21 -0
  67. package/dist/_pkgs/affine-block-root/edgeless/reserved-keys.js +34 -0
  68. package/dist/_pkgs/affine-block-root/edgeless/utils/clone-utils.d.ts +7 -1
  69. package/dist/_pkgs/affine-block-root/edgeless/utils/clone-utils.js +11 -2
  70. package/dist/_pkgs/affine-block-root/index.d.ts +4 -1
  71. package/dist/_pkgs/affine-block-root/index.js +4 -1
  72. package/dist/_pkgs/affine-block-root/keyboard/commands.d.ts +2 -0
  73. package/dist/_pkgs/affine-block-root/keyboard/commands.js +147 -0
  74. package/dist/_pkgs/affine-block-root/view.js +13 -4
  75. package/dist/_pkgs/affine-block-surface/commands/reassociate-connectors.js +0 -1
  76. package/dist/_pkgs/affine-block-surface/effects.js +6 -0
  77. package/dist/_pkgs/affine-block-surface/element-model/index.d.ts +5 -2
  78. package/dist/_pkgs/affine-block-surface/element-model/index.js +4 -2
  79. package/dist/_pkgs/affine-block-surface/extensions/audit.d.ts +107 -0
  80. package/dist/_pkgs/affine-block-surface/extensions/audit.js +472 -0
  81. package/dist/_pkgs/affine-block-surface/extensions/crud-extension.d.ts +14 -0
  82. package/dist/_pkgs/affine-block-surface/extensions/crud-extension.js +27 -0
  83. package/dist/_pkgs/affine-block-surface/extensions/editor-anchored-panel.d.ts +133 -0
  84. package/dist/_pkgs/affine-block-surface/extensions/editor-anchored-panel.js +326 -0
  85. package/dist/_pkgs/affine-block-surface/extensions/index.d.ts +13 -0
  86. package/dist/_pkgs/affine-block-surface/extensions/index.js +13 -0
  87. package/dist/_pkgs/affine-block-surface/extensions/map-quality-widget.d.ts +146 -0
  88. package/dist/_pkgs/affine-block-surface/extensions/map-quality-widget.js +528 -0
  89. package/dist/_pkgs/affine-block-surface/extensions/map-quality.d.ts +109 -0
  90. package/dist/_pkgs/affine-block-surface/extensions/map-quality.js +84 -0
  91. package/dist/_pkgs/affine-block-surface/extensions/reading-toolbar.d.ts +15 -0
  92. package/dist/_pkgs/affine-block-surface/extensions/reading-toolbar.js +158 -0
  93. package/dist/_pkgs/affine-block-surface/extensions/reading-widget.d.ts +145 -0
  94. package/dist/_pkgs/affine-block-surface/extensions/reading-widget.js +590 -0
  95. package/dist/_pkgs/affine-block-surface/extensions/reading.d.ts +494 -0
  96. package/dist/_pkgs/affine-block-surface/extensions/reading.js +767 -0
  97. package/dist/_pkgs/affine-block-surface/extensions/spotlight.d.ts +45 -0
  98. package/dist/_pkgs/affine-block-surface/extensions/spotlight.js +177 -0
  99. package/dist/_pkgs/affine-block-surface/extensions/tags-toolbar.d.ts +10 -0
  100. package/dist/_pkgs/affine-block-surface/extensions/tags-toolbar.js +295 -0
  101. package/dist/_pkgs/affine-block-surface/extensions/validation-toolbar.d.ts +27 -0
  102. package/dist/_pkgs/affine-block-surface/extensions/validation-toolbar.js +361 -0
  103. package/dist/_pkgs/affine-block-surface/extensions/validation.d.ts +1340 -0
  104. package/dist/_pkgs/affine-block-surface/extensions/validation.js +3009 -0
  105. package/dist/_pkgs/affine-block-surface/extensions/violation-detail-widget.d.ts +286 -0
  106. package/dist/_pkgs/affine-block-surface/extensions/violation-detail-widget.js +907 -0
  107. package/dist/_pkgs/affine-block-surface/extensions/violation-timeline.d.ts +80 -0
  108. package/dist/_pkgs/affine-block-surface/extensions/violation-timeline.js +123 -0
  109. package/dist/_pkgs/affine-block-surface/framework-background/def.d.ts +321 -0
  110. package/dist/_pkgs/affine-block-surface/framework-background/def.js +81 -0
  111. package/dist/_pkgs/affine-block-surface/framework-background/facts.d.ts +188 -0
  112. package/dist/_pkgs/affine-block-surface/framework-background/facts.js +284 -0
  113. package/dist/_pkgs/affine-block-surface/framework-background/index.d.ts +5 -0
  114. package/dist/_pkgs/affine-block-surface/framework-background/index.js +5 -0
  115. package/dist/_pkgs/affine-block-surface/framework-background/interaction.d.ts +12 -0
  116. package/dist/_pkgs/affine-block-surface/framework-background/interaction.js +24 -0
  117. package/dist/_pkgs/affine-block-surface/framework-background/labels.d.ts +59 -0
  118. package/dist/_pkgs/affine-block-surface/framework-background/labels.js +117 -0
  119. package/dist/_pkgs/affine-block-surface/framework-background/renderer.d.ts +8 -0
  120. package/dist/_pkgs/affine-block-surface/framework-background/renderer.js +238 -0
  121. package/dist/_pkgs/affine-block-surface/index.d.ts +1 -0
  122. package/dist/_pkgs/affine-block-surface/index.js +1 -0
  123. package/dist/_pkgs/affine-block-surface/renderer/canvas-renderer.d.ts +69 -3
  124. package/dist/_pkgs/affine-block-surface/renderer/canvas-renderer.js +333 -44
  125. package/dist/_pkgs/affine-block-surface/renderer/dom-renderer.js +18 -2
  126. package/dist/_pkgs/affine-block-surface/tool/default-tool.js +8 -0
  127. package/dist/_pkgs/affine-block-surface/utils/font.js +9 -3
  128. package/dist/_pkgs/affine-block-surface/view.d.ts +17 -0
  129. package/dist/_pkgs/affine-block-surface/view.js +57 -2
  130. package/dist/_pkgs/affine-block-table/selection-controller.d.ts +6 -0
  131. package/dist/_pkgs/affine-block-table/selection-controller.js +24 -1
  132. package/dist/_pkgs/affine-block-table/table-block.js +8 -2
  133. package/dist/_pkgs/affine-block-table/table-cell.js +5 -6
  134. package/dist/_pkgs/affine-block-table/table-keymap.d.ts +18 -0
  135. package/dist/_pkgs/affine-block-table/table-keymap.js +41 -0
  136. package/dist/_pkgs/affine-block-table/utils.d.ts +7 -0
  137. package/dist/_pkgs/affine-block-table/utils.js +12 -0
  138. package/dist/_pkgs/affine-block-table/view.js +2 -0
  139. package/dist/_pkgs/affine-components/caption/captioned-block-component.js +2 -1
  140. package/dist/_pkgs/affine-components/context-menu/button.d.ts +7 -0
  141. package/dist/_pkgs/affine-components/context-menu/button.js +7 -2
  142. package/dist/_pkgs/affine-components/context-menu/input.d.ts +4 -0
  143. package/dist/_pkgs/affine-components/context-menu/input.js +12 -0
  144. package/dist/_pkgs/affine-components/context-menu/menu-all.d.ts +2 -0
  145. package/dist/_pkgs/affine-components/context-menu/menu-renderer.js +8 -1
  146. package/dist/_pkgs/affine-components/context-menu/sub-menu.js +3 -0
  147. package/dist/_pkgs/affine-components/highlight-dropdown-menu/highlight-duotone-icon.js +8 -8
  148. package/dist/_pkgs/affine-components/highlight-dropdown-menu/text-duotone-icon.js +11 -11
  149. package/dist/_pkgs/affine-components/icon-picker/affine-icon-picker-panel.d.ts +28 -0
  150. package/dist/_pkgs/affine-components/icon-picker/affine-icon-picker-panel.js +231 -0
  151. package/dist/_pkgs/affine-components/icon-picker/emoji-data.d.ts +40 -0
  152. package/dist/_pkgs/affine-components/icon-picker/emoji-data.js +99 -0
  153. package/dist/_pkgs/affine-components/icon-picker/emoji-picker-panel.d.ts +32 -0
  154. package/dist/_pkgs/affine-components/icon-picker/emoji-picker-panel.js +276 -0
  155. package/dist/_pkgs/affine-components/icon-picker/icon-data.d.ts +34 -0
  156. package/dist/_pkgs/affine-components/icon-picker/icon-data.js +83 -0
  157. package/dist/_pkgs/affine-components/icon-picker/icon-picker.d.ts +39 -0
  158. package/dist/_pkgs/affine-components/icon-picker/icon-picker.js +233 -0
  159. package/dist/_pkgs/affine-components/icon-picker/index.d.ts +8 -0
  160. package/dist/_pkgs/affine-components/icon-picker/index.js +15 -0
  161. package/dist/_pkgs/affine-components/icon-picker/recent-store.d.ts +8 -0
  162. package/dist/_pkgs/affine-components/icon-picker/recent-store.js +41 -0
  163. package/dist/_pkgs/affine-components/icon-picker/styles.d.ts +5 -0
  164. package/dist/_pkgs/affine-components/icon-picker/styles.js +166 -0
  165. package/dist/_pkgs/affine-components/icon-picker/types.d.ts +22 -0
  166. package/dist/_pkgs/affine-components/icon-picker/types.js +10 -0
  167. package/dist/_pkgs/affine-components/icons/text.js +426 -426
  168. package/dist/_pkgs/affine-components/open-doc-dropdown-menu/dropdown-menu.d.ts +1 -0
  169. package/dist/_pkgs/affine-components/portal/portal.d.ts +1 -1
  170. package/dist/_pkgs/affine-components/toolbar/menu-button.js +1 -0
  171. package/dist/_pkgs/affine-components/toolbar/toolbar.js +11 -10
  172. package/dist/_pkgs/affine-foundation/view.js +11 -2
  173. package/dist/_pkgs/affine-gfx-brush/index.d.ts +1 -0
  174. package/dist/_pkgs/affine-gfx-brush/index.js +1 -0
  175. package/dist/_pkgs/affine-gfx-brush/renderer/dom/brush.d.ts +1 -0
  176. package/dist/_pkgs/affine-gfx-brush/renderer/dom/brush.js +11 -0
  177. package/dist/_pkgs/affine-gfx-brush/renderer/dom/highlighter.d.ts +1 -0
  178. package/dist/_pkgs/affine-gfx-brush/renderer/dom/highlighter.js +11 -0
  179. package/dist/_pkgs/affine-gfx-brush/renderer/dom/index.d.ts +2 -0
  180. package/dist/_pkgs/affine-gfx-brush/renderer/dom/index.js +2 -0
  181. package/dist/_pkgs/affine-gfx-brush/renderer/dom/shared.d.ts +14 -0
  182. package/dist/_pkgs/affine-gfx-brush/renderer/dom/shared.js +54 -0
  183. package/dist/_pkgs/affine-gfx-brush/renderer/index.d.ts +1 -0
  184. package/dist/_pkgs/affine-gfx-brush/renderer/index.js +4 -0
  185. package/dist/_pkgs/affine-gfx-brush/view.d.ts +14 -0
  186. package/dist/_pkgs/affine-gfx-brush/view.js +29 -3
  187. package/dist/_pkgs/affine-gfx-connector/connector-manager.js +32 -6
  188. package/dist/_pkgs/affine-gfx-connector/connector-tool.d.ts +7 -0
  189. package/dist/_pkgs/affine-gfx-connector/connector-tool.js +2 -1
  190. package/dist/_pkgs/affine-gfx-connector/direction/direction-reveal.d.ts +123 -0
  191. package/dist/_pkgs/affine-gfx-connector/direction/direction-reveal.js +281 -0
  192. package/dist/_pkgs/affine-gfx-connector/direction/direction-widget.d.ts +65 -0
  193. package/dist/_pkgs/affine-gfx-connector/direction/direction-widget.js +395 -0
  194. package/dist/_pkgs/affine-gfx-connector/direction/index.d.ts +4 -0
  195. package/dist/_pkgs/affine-gfx-connector/direction/index.js +4 -0
  196. package/dist/_pkgs/affine-gfx-connector/direction/invert-direction.d.ts +72 -0
  197. package/dist/_pkgs/affine-gfx-connector/direction/invert-direction.js +187 -0
  198. package/dist/_pkgs/affine-gfx-connector/direction/typed-edge.d.ts +69 -0
  199. package/dist/_pkgs/affine-gfx-connector/direction/typed-edge.js +66 -0
  200. package/dist/_pkgs/affine-gfx-connector/effects.d.ts +2 -0
  201. package/dist/_pkgs/affine-gfx-connector/effects.js +2 -0
  202. package/dist/_pkgs/affine-gfx-connector/element-renderer/connector-dom/index.js +78 -41
  203. package/dist/_pkgs/affine-gfx-connector/index.d.ts +1 -0
  204. package/dist/_pkgs/affine-gfx-connector/index.js +1 -0
  205. package/dist/_pkgs/affine-gfx-connector/toolbar/config.d.ts +50 -0
  206. package/dist/_pkgs/affine-gfx-connector/toolbar/config.js +67 -1
  207. package/dist/_pkgs/affine-gfx-connector/view.js +16 -0
  208. package/dist/_pkgs/affine-gfx-group/command/group-api.js +150 -62
  209. package/dist/_pkgs/affine-gfx-group/text/edgeless-group-title-editor.js +4 -1
  210. package/dist/_pkgs/affine-gfx-pointer/tools/pan-tool.d.ts +16 -0
  211. package/dist/_pkgs/affine-gfx-pointer/tools/pan-tool.js +102 -32
  212. package/dist/_pkgs/affine-gfx-shape/commands.d.ts +2 -0
  213. package/dist/_pkgs/affine-gfx-shape/commands.js +33 -0
  214. package/dist/_pkgs/affine-gfx-shape/element-renderer/shape-dom/index.js +48 -19
  215. package/dist/_pkgs/affine-gfx-shape/index.d.ts +1 -1
  216. package/dist/_pkgs/affine-gfx-shape/index.js +1 -1
  217. package/dist/_pkgs/affine-gfx-shape/text/edgeless-shape-text-editor.d.ts +26 -0
  218. package/dist/_pkgs/affine-gfx-shape/text/edgeless-shape-text-editor.js +124 -13
  219. package/dist/_pkgs/affine-gfx-shape/view.js +3 -3
  220. package/dist/_pkgs/affine-gfx-template/toolbar/template-tool-button.d.ts +2 -0
  221. package/dist/_pkgs/affine-gfx-template/toolbar/template-tool-button.js +18 -1
  222. package/dist/_pkgs/affine-gfx-text/edgeless-text-editor.js +9 -5
  223. package/dist/_pkgs/affine-inline-latex/command.js +46 -26
  224. package/dist/_pkgs/affine-inline-latex/latex-node/latex-node.d.ts +10 -0
  225. package/dist/_pkgs/affine-inline-latex/latex-node/latex-node.js +23 -0
  226. package/dist/_pkgs/affine-inline-link/link-node/affine-link.js +4 -1
  227. package/dist/_pkgs/affine-inline-preset/adapters/html/html-inline.d.ts +3 -0
  228. package/dist/_pkgs/affine-inline-preset/adapters/html/html-inline.js +29 -1
  229. package/dist/_pkgs/affine-model/blocks/code/code-model.d.ts +1 -0
  230. package/dist/_pkgs/affine-model/blocks/code/code-model.js +1 -0
  231. package/dist/_pkgs/affine-model/elements/connector/connector.js +24 -0
  232. package/dist/_pkgs/affine-model/elements/edgy/board.d.ts +32 -0
  233. package/dist/_pkgs/affine-model/elements/edgy/board.js +112 -0
  234. package/dist/_pkgs/affine-model/elements/edgy/facets.d.ts +12 -0
  235. package/dist/_pkgs/affine-model/elements/edgy/facets.js +25 -1
  236. package/dist/_pkgs/affine-model/elements/edgy/index.d.ts +1 -0
  237. package/dist/_pkgs/affine-model/elements/edgy/index.js +1 -0
  238. package/dist/_pkgs/affine-model/elements/framework-background/background.d.ts +42 -0
  239. package/dist/_pkgs/affine-model/elements/framework-background/background.js +42 -0
  240. package/dist/_pkgs/affine-model/elements/framework-background/index.d.ts +1 -0
  241. package/dist/_pkgs/affine-model/elements/framework-background/index.js +1 -0
  242. package/dist/_pkgs/affine-model/elements/index.d.ts +3 -1
  243. package/dist/_pkgs/affine-model/elements/index.js +1 -0
  244. package/dist/_pkgs/affine-model/elements/mindmap/mindmap.js +8 -3
  245. package/dist/_pkgs/affine-model/elements/mindmap/style.d.ts +10 -0
  246. package/dist/_pkgs/affine-model/elements/mindmap/style.js +8 -0
  247. package/dist/_pkgs/affine-model/elements/wardley/wardley.d.ts +21 -29
  248. package/dist/_pkgs/affine-model/elements/wardley/wardley.js +41 -48
  249. package/dist/_pkgs/affine-shared/adapters/markdown/delta-converter.d.ts +6 -1
  250. package/dist/_pkgs/affine-shared/adapters/markdown/delta-converter.js +160 -2
  251. package/dist/_pkgs/affine-shared/adapters/markdown/markdown.js +5 -1
  252. package/dist/_pkgs/affine-shared/adapters/types/delta-converter.d.ts +1 -0
  253. package/dist/_pkgs/affine-shared/adapters/utils/color.d.ts +24 -0
  254. package/dist/_pkgs/affine-shared/adapters/utils/color.js +280 -0
  255. package/dist/_pkgs/affine-shared/adapters/utils/index.d.ts +1 -0
  256. package/dist/_pkgs/affine-shared/adapters/utils/index.js +1 -0
  257. package/dist/_pkgs/affine-shared/commands/block-crud/get-selected-blocks.js +10 -2
  258. package/dist/_pkgs/affine-shared/services/audit-service.d.ts +300 -0
  259. package/dist/_pkgs/affine-shared/services/audit-service.js +228 -0
  260. package/dist/_pkgs/affine-shared/services/edit-props-store.d.ts +7 -0
  261. package/dist/_pkgs/affine-shared/services/edit-props-store.js +11 -0
  262. package/dist/_pkgs/affine-shared/services/font-loader/font-loader-service.d.ts +26 -1
  263. package/dist/_pkgs/affine-shared/services/font-loader/font-loader-service.js +124 -7
  264. package/dist/_pkgs/affine-shared/services/index.d.ts +5 -0
  265. package/dist/_pkgs/affine-shared/services/index.js +5 -0
  266. package/dist/_pkgs/affine-shared/services/pivot-materiality-publisher.d.ts +129 -0
  267. package/dist/_pkgs/affine-shared/services/pivot-materiality-publisher.js +311 -0
  268. package/dist/_pkgs/affine-shared/services/pivot-properties-service.d.ts +217 -0
  269. package/dist/_pkgs/affine-shared/services/pivot-properties-service.js +114 -0
  270. package/dist/_pkgs/affine-shared/services/telemetry-service/code-block.d.ts +1 -1
  271. package/dist/_pkgs/affine-shared/services/telemetry-service/lifecycle.d.ts +182 -0
  272. package/dist/_pkgs/affine-shared/services/telemetry-service/telemetry-service.d.ts +2 -2
  273. package/dist/_pkgs/affine-shared/services/telemetry-service/types.d.ts +6 -1
  274. package/dist/_pkgs/affine-shared/services/toolbar-service/action.d.ts +10 -0
  275. package/dist/_pkgs/affine-shared/services/toolbar-service/index.d.ts +1 -0
  276. package/dist/_pkgs/affine-shared/services/toolbar-service/index.js +1 -0
  277. package/dist/_pkgs/affine-shared/services/toolbar-service/layout.d.ts +134 -0
  278. package/dist/_pkgs/affine-shared/services/toolbar-service/layout.js +146 -0
  279. package/dist/_pkgs/affine-shared/services/translation-service/index.d.ts +68 -0
  280. package/dist/_pkgs/affine-shared/services/translation-service/index.js +39 -0
  281. package/dist/_pkgs/affine-shared/services/universe-tag-defs-service.d.ts +155 -0
  282. package/dist/_pkgs/affine-shared/services/universe-tag-defs-service.js +254 -0
  283. package/dist/_pkgs/affine-shared/utils/dom/point-to-range.d.ts +4 -0
  284. package/dist/_pkgs/affine-shared/utils/dom/point-to-range.js +58 -2
  285. package/dist/_pkgs/affine-shared/utils/dom/viewport.d.ts +60 -0
  286. package/dist/_pkgs/affine-shared/utils/dom/viewport.js +58 -0
  287. package/dist/_pkgs/affine-shared/utils/print-to-pdf.d.ts +21 -0
  288. package/dist/_pkgs/affine-shared/utils/print-to-pdf.js +166 -32
  289. package/dist/_pkgs/affine-shared/utils/zod-schema.d.ts +7 -0
  290. package/dist/_pkgs/affine-shared/utils/zod-schema.js +27 -1
  291. package/dist/_pkgs/affine-widget-drag-handle/watchers/edgeless-watcher.d.ts +19 -10
  292. package/dist/_pkgs/affine-widget-drag-handle/watchers/edgeless-watcher.js +122 -23
  293. package/dist/_pkgs/affine-widget-drag-handle/watchers/pointer-event-watcher.d.ts +2 -0
  294. package/dist/_pkgs/affine-widget-drag-handle/watchers/pointer-event-watcher.js +25 -4
  295. package/dist/_pkgs/affine-widget-edgeless-selected-rect/auto-complete-panel.js +10 -5
  296. package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-auto-complete.d.ts +15 -1
  297. package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-auto-complete.js +37 -32
  298. package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-element-link.js +5 -4
  299. package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-selected-rect.js +19 -9
  300. package/dist/_pkgs/affine-widget-edgeless-selected-rect/utils.d.ts +16 -2
  301. package/dist/_pkgs/affine-widget-edgeless-selected-rect/utils.js +19 -2
  302. package/dist/_pkgs/affine-widget-edgeless-toolbar/index.d.ts +1 -0
  303. package/dist/_pkgs/affine-widget-edgeless-toolbar/index.js +1 -0
  304. package/dist/_pkgs/affine-widget-edgeless-toolbar/menu/command-menu.d.ts +38 -0
  305. package/dist/_pkgs/affine-widget-edgeless-toolbar/menu/command-menu.js +99 -0
  306. package/dist/_pkgs/affine-widget-frame-title/edgeless-frame-title-editor.js +4 -1
  307. package/dist/_pkgs/affine-widget-keyboard-toolbar/icons.js +98 -98
  308. package/dist/_pkgs/affine-widget-linked-doc/linked-doc-popover.js +2 -15
  309. package/dist/_pkgs/affine-widget-linked-doc/transformers/markdown.d.ts +10 -1
  310. package/dist/_pkgs/affine-widget-linked-doc/transformers/markdown.js +133 -6
  311. package/dist/_pkgs/affine-widget-linked-doc/transformers/utils.d.ts +10 -0
  312. package/dist/_pkgs/affine-widget-linked-doc/transformers/utils.js +120 -3
  313. package/dist/_pkgs/affine-widget-linked-doc/utils.d.ts +12 -0
  314. package/dist/_pkgs/affine-widget-linked-doc/utils.js +33 -0
  315. package/dist/_pkgs/affine-widget-remote-selection/edgeless/index.js +6 -4
  316. package/dist/_pkgs/affine-widget-slash-menu/slash-menu-popover.js +8 -4
  317. package/dist/_pkgs/affine-widget-slash-menu/utils.d.ts +9 -0
  318. package/dist/_pkgs/affine-widget-slash-menu/utils.js +24 -0
  319. package/dist/_pkgs/affine-widget-toolbar/toolbar.d.ts +6 -0
  320. package/dist/_pkgs/affine-widget-toolbar/toolbar.js +34 -6
  321. package/dist/_pkgs/affine-widget-toolbar/utils.d.ts +146 -3
  322. package/dist/_pkgs/affine-widget-toolbar/utils.js +738 -56
  323. package/dist/_pkgs/data-view/core/common/property-menu.js +3 -16
  324. package/dist/_pkgs/data-view/core/component/tags/multi-tag-select.d.ts +4 -0
  325. package/dist/_pkgs/data-view/core/component/tags/multi-tag-select.js +28 -1
  326. package/dist/_pkgs/data-view/core/data-view.d.ts +3 -1
  327. package/dist/_pkgs/data-view/core/data-view.js +25 -3
  328. package/dist/_pkgs/data-view/core/detail/field.js +2 -2
  329. package/dist/_pkgs/data-view/core/detail/selection.d.ts +4 -2
  330. package/dist/_pkgs/data-view/core/detail/selection.js +23 -7
  331. package/dist/_pkgs/data-view/core/effect.js +2 -0
  332. package/dist/_pkgs/data-view/core/filter/eval.js +36 -23
  333. package/dist/_pkgs/data-view/core/filter/filter-fn/matcher.d.ts +7 -0
  334. package/dist/_pkgs/data-view/core/filter/filter-fn/matcher.js +12 -0
  335. package/dist/_pkgs/data-view/core/group-by/compare-date-keys.d.ts +11 -0
  336. package/dist/_pkgs/data-view/core/group-by/compare-date-keys.js +55 -0
  337. package/dist/_pkgs/data-view/core/group-by/define.d.ts +6 -0
  338. package/dist/_pkgs/data-view/core/group-by/define.js +114 -0
  339. package/dist/_pkgs/data-view/core/group-by/matcher.d.ts +7 -0
  340. package/dist/_pkgs/data-view/core/group-by/matcher.js +13 -0
  341. package/dist/_pkgs/data-view/core/group-by/renderer/boolean-group.js +11 -11
  342. package/dist/_pkgs/data-view/core/group-by/renderer/date-group.d.ts +9 -0
  343. package/dist/_pkgs/data-view/core/group-by/renderer/date-group.js +97 -0
  344. package/dist/_pkgs/data-view/core/group-by/setting.js +86 -7
  345. package/dist/_pkgs/data-view/core/group-by/trait.d.ts +34 -0
  346. package/dist/_pkgs/data-view/core/group-by/trait.js +106 -10
  347. package/dist/_pkgs/data-view/core/utils/menu-title.js +17 -17
  348. package/dist/_pkgs/data-view/property-presets/multi-select/cell-renderer.js +3 -1
  349. package/dist/_pkgs/data-view/property-presets/number/define.js +2 -1
  350. package/dist/_pkgs/data-view/property-presets/select/cell-renderer.js +3 -1
  351. package/dist/_pkgs/data-view/view-presets/calendar/calendar-view-manager.d.ts +70 -0
  352. package/dist/_pkgs/data-view/view-presets/calendar/calendar-view-manager.js +449 -0
  353. package/dist/_pkgs/data-view/view-presets/calendar/define.d.ts +10 -0
  354. package/dist/_pkgs/data-view/view-presets/calendar/define.js +27 -0
  355. package/dist/_pkgs/data-view/view-presets/calendar/effect.d.ts +1 -0
  356. package/dist/_pkgs/data-view/view-presets/calendar/effect.js +4 -0
  357. package/dist/_pkgs/data-view/view-presets/calendar/index.d.ts +6 -0
  358. package/dist/_pkgs/data-view/view-presets/calendar/index.js +6 -0
  359. package/dist/_pkgs/data-view/view-presets/calendar/layout.d.ts +37 -0
  360. package/dist/_pkgs/data-view/view-presets/calendar/layout.js +138 -0
  361. package/dist/_pkgs/data-view/view-presets/calendar/pc/actions.d.ts +7 -0
  362. package/dist/_pkgs/data-view/view-presets/calendar/pc/actions.js +68 -0
  363. package/dist/_pkgs/data-view/view-presets/calendar/pc/dnd.d.ts +32 -0
  364. package/dist/_pkgs/data-view/view-presets/calendar/pc/dnd.js +159 -0
  365. package/dist/_pkgs/data-view/view-presets/calendar/pc/effect.d.ts +1 -0
  366. package/dist/_pkgs/data-view/view-presets/calendar/pc/effect.js +7 -0
  367. package/dist/_pkgs/data-view/view-presets/calendar/pc/hit-test.d.ts +1 -0
  368. package/dist/_pkgs/data-view/view-presets/calendar/pc/hit-test.js +28 -0
  369. package/dist/_pkgs/data-view/view-presets/calendar/pc/styles.d.ts +1 -0
  370. package/dist/_pkgs/data-view/view-presets/calendar/pc/styles.js +707 -0
  371. package/dist/_pkgs/data-view/view-presets/calendar/pc/view.d.ts +89 -0
  372. package/dist/_pkgs/data-view/view-presets/calendar/pc/view.js +837 -0
  373. package/dist/_pkgs/data-view/view-presets/calendar/renderer.d.ts +2 -0
  374. package/dist/_pkgs/data-view/view-presets/calendar/renderer.js +8 -0
  375. package/dist/_pkgs/data-view/view-presets/calendar/source.d.ts +8 -0
  376. package/dist/_pkgs/data-view/view-presets/calendar/source.js +3 -0
  377. package/dist/_pkgs/data-view/view-presets/calendar/types.d.ts +79 -0
  378. package/dist/_pkgs/data-view/view-presets/calendar/types.js +1 -0
  379. package/dist/_pkgs/data-view/view-presets/convert.js +28 -0
  380. package/dist/_pkgs/data-view/view-presets/effect.js +2 -0
  381. package/dist/_pkgs/data-view/view-presets/index.d.ts +2 -0
  382. package/dist/_pkgs/data-view/view-presets/index.js +3 -0
  383. package/dist/_pkgs/data-view/view-presets/kanban/kanban-view-manager.js +3 -1
  384. package/dist/_pkgs/data-view/view-presets/kanban/mobile/cell.js +2 -2
  385. package/dist/_pkgs/data-view/view-presets/table/collapsed-state.d.ts +18 -0
  386. package/dist/_pkgs/data-view/view-presets/table/collapsed-state.js +36 -0
  387. package/dist/_pkgs/data-view/view-presets/table/mobile/cell.js +2 -2
  388. package/dist/_pkgs/data-view/view-presets/table/mobile/group.d.ts +11 -0
  389. package/dist/_pkgs/data-view/view-presets/table/mobile/group.js +87 -4
  390. package/dist/_pkgs/data-view/view-presets/table/pc/cell.d.ts +3 -0
  391. package/dist/_pkgs/data-view/view-presets/table/pc/cell.js +11 -2
  392. package/dist/_pkgs/data-view/view-presets/table/pc/controller/hotkeys.d.ts +1 -0
  393. package/dist/_pkgs/data-view/view-presets/table/pc/controller/hotkeys.js +39 -33
  394. package/dist/_pkgs/data-view/view-presets/table/pc/group.d.ts +10 -0
  395. package/dist/_pkgs/data-view/view-presets/table/pc/group.js +84 -5
  396. package/dist/_pkgs/data-view/view-presets/table/pc-virtual/controller/hotkeys.d.ts +1 -0
  397. package/dist/_pkgs/data-view/view-presets/table/pc-virtual/controller/hotkeys.js +39 -33
  398. package/dist/_pkgs/data-view/view-presets/table/pc-virtual/group/top/group-title.js +18 -18
  399. package/dist/_pkgs/data-view/view-presets/table/pc-virtual/row/cell.d.ts +3 -0
  400. package/dist/_pkgs/data-view/view-presets/table/pc-virtual/row/cell.js +8 -0
  401. package/dist/_pkgs/data-view/view-presets/table/table-view-manager.js +3 -1
  402. package/dist/_pkgs/data-view/view-presets/table/utils.d.ts +3 -0
  403. package/dist/_pkgs/data-view/view-presets/table/utils.js +16 -1
  404. package/dist/_pkgs/data-view/widget-presets/tools/presets/view-options/view-options.js +3 -1
  405. package/dist/_pkgs/global/gfx/curve.js +4 -3
  406. package/dist/_pkgs/std/clipboard/clipboard.js +13 -3
  407. package/dist/_pkgs/std/clipboard/utils.d.ts +5 -0
  408. package/dist/_pkgs/std/clipboard/utils.js +7 -0
  409. package/dist/_pkgs/std/event/dispatcher.js +27 -1
  410. package/dist/_pkgs/std/event/keymap.js +16 -6
  411. package/dist/_pkgs/std/extension/command-registry.d.ts +321 -0
  412. package/dist/_pkgs/std/extension/command-registry.js +233 -0
  413. package/dist/_pkgs/std/extension/dnd/index.d.ts +1 -1
  414. package/dist/_pkgs/std/extension/index.d.ts +2 -0
  415. package/dist/_pkgs/std/extension/index.js +2 -0
  416. package/dist/_pkgs/std/extension/translation-manifest.d.ts +49 -0
  417. package/dist/_pkgs/std/extension/translation-manifest.js +71 -0
  418. package/dist/_pkgs/std/gfx/index.d.ts +7 -3
  419. package/dist/_pkgs/std/gfx/index.js +6 -2
  420. package/dist/_pkgs/std/gfx/interactivity/gfx-view-event-handler.js +6 -1
  421. package/dist/_pkgs/std/gfx/interactivity/manager.d.ts +8 -0
  422. package/dist/_pkgs/std/gfx/interactivity/manager.js +18 -0
  423. package/dist/_pkgs/std/gfx/layer.d.ts +1 -1
  424. package/dist/_pkgs/std/gfx/layer.js +1 -2
  425. package/dist/_pkgs/std/gfx/model/surface/decorators/field.js +9 -0
  426. package/dist/_pkgs/std/gfx/model/surface/decorators/index.d.ts +2 -2
  427. package/dist/_pkgs/std/gfx/model/surface/decorators/index.js +2 -2
  428. package/dist/_pkgs/std/gfx/model/surface/decorators/local.d.ts +14 -0
  429. package/dist/_pkgs/std/gfx/model/surface/decorators/local.js +22 -0
  430. package/dist/_pkgs/std/gfx/model/surface/decorators/observer.d.ts +2 -0
  431. package/dist/_pkgs/std/gfx/model/surface/decorators/observer.js +40 -1
  432. package/dist/_pkgs/std/gfx/model/surface/element-model.d.ts +282 -0
  433. package/dist/_pkgs/std/gfx/model/surface/element-model.js +436 -25
  434. package/dist/_pkgs/std/gfx/model/surface/pivot.d.ts +48 -0
  435. package/dist/_pkgs/std/gfx/model/surface/pivot.js +34 -0
  436. package/dist/_pkgs/std/gfx/model/surface/role.d.ts +153 -0
  437. package/dist/_pkgs/std/gfx/model/surface/role.js +115 -0
  438. package/dist/_pkgs/std/gfx/model/surface/surface-model.d.ts +70 -0
  439. package/dist/_pkgs/std/gfx/model/surface/surface-model.js +304 -17
  440. package/dist/_pkgs/std/gfx/model/surface/tags.d.ts +77 -0
  441. package/dist/_pkgs/std/gfx/model/surface/tags.js +246 -0
  442. package/dist/_pkgs/std/gfx/perf.d.ts +10 -0
  443. package/dist/_pkgs/std/gfx/perf.js +30 -0
  444. package/dist/_pkgs/std/gfx/tool/tool-controller.d.ts +13 -0
  445. package/dist/_pkgs/std/gfx/tool/tool-controller.js +26 -0
  446. package/dist/_pkgs/std/gfx/viewport.d.ts +12 -0
  447. package/dist/_pkgs/std/gfx/viewport.js +19 -1
  448. package/dist/_pkgs/std/inline/services/event.d.ts +2 -0
  449. package/dist/_pkgs/std/inline/services/event.js +96 -21
  450. package/dist/_pkgs/std/utils/layer.js +2 -6
  451. package/dist/_pkgs/std/utils/tree.d.ts +14 -0
  452. package/dist/_pkgs/std/utils/tree.js +59 -8
  453. package/dist/_pkgs/std/view/element/gfx-block-component.js +23 -13
  454. package/dist/_pkgs/store/extension/workspace/workspace-meta.d.ts +10 -0
  455. package/dist/_pkgs/store/model/block/flat-sync-controller.js +2 -12
  456. package/dist/_pkgs/store/model/store/crud.js +7 -4
  457. package/dist/_pkgs/store/reactive/flat-native-y/index.d.ts +1 -1
  458. package/dist/_pkgs/store/reactive/flat-native-y/index.js +24 -2
  459. package/dist/commands.d.ts +58 -0
  460. package/dist/commands.js +66 -0
  461. package/dist/extensions/command-telemetry.d.ts +21 -0
  462. package/dist/extensions/command-telemetry.js +89 -0
  463. package/dist/extensions/store.d.ts +9 -4
  464. package/dist/extensions/store.js +27 -24
  465. package/dist/extensions/view.d.ts +9 -4
  466. package/dist/extensions/view.js +23 -8
  467. package/dist/flags.d.ts +98 -21
  468. package/dist/flags.js +103 -22
  469. package/dist/frameworks.d.ts +45 -0
  470. package/dist/frameworks.js +154 -0
  471. package/dist/schemas.d.ts +8 -5
  472. package/dist/schemas.js +28 -32
  473. package/dist/shortcuts.d.ts +16 -16
  474. package/dist/shortcuts.js +8 -36
  475. package/dist/translations.d.ts +56 -0
  476. package/dist/translations.js +112 -0
  477. package/package.json +16 -4
  478. package/dist/_pkgs/affine-block-root/keyboard/shortcuts.d.ts +0 -8
  479. package/dist/_pkgs/affine-block-root/keyboard/shortcuts.js +0 -48
  480. package/dist/_pkgs/affine-gfx-shape/shortcuts.d.ts +0 -6
  481. package/dist/_pkgs/affine-gfx-shape/shortcuts.js +0 -28
  482. package/dist/_pkgs/data-view/core/utils/cache.d.ts +0 -5
  483. 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)}`);