@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
@@ -17,6 +17,7 @@ export declare class OpenDocDropdownMenu extends OpenDocDropdownMenu_base {
17
17
  when?: ((cx: ToolbarContext) => boolean) | boolean;
18
18
  active?: ((cx: ToolbarContext) => boolean) | boolean;
19
19
  placement?: import("../../affine-shared/services/index.js").ActionPlacement;
20
+ priority?: number;
20
21
  } & {
21
22
  label?: string;
22
23
  showLabel?: boolean;
@@ -17,7 +17,7 @@ import { LitElement, type TemplateResult } from 'lit';
17
17
  */
18
18
  export declare class Portal extends LitElement {
19
19
  private _portalRoot;
20
- createRenderRoot(): ShadowRoot | HTMLDivElement;
20
+ createRenderRoot(): HTMLDivElement | ShadowRoot;
21
21
  disconnectedCallback(): void;
22
22
  render(): TemplateResult | undefined;
23
23
  accessor container: HTMLElement;
@@ -235,6 +235,7 @@ export class EditorMenuAction extends LitElement {
235
235
  color: var(--affine-text-primary-color);
236
236
  font-weight: 400;
237
237
  min-height: 30px; // 22 + 8
238
+ user-select: none;
238
239
  }
239
240
 
240
241
  :host(:hover),
@@ -6,14 +6,13 @@ export class EditorToolbar extends WithDisposable(LitElement) {
6
6
  static { this.styles = css `
7
7
  ${panelBaseStyle(':host')}
8
8
  :host {
9
- min-height: 36px;
9
+ /* ONE line, always: the toolbar's height never depends on the selection,
10
+ so it never moves under the cursor. When the row runs out of room the
11
+ widget spends its entries — icon only first, then into the "⋮" menu —
12
+ rather than growing a second row (PO arbitration of 02/08/2026). */
13
+ height: 36px;
10
14
  box-sizing: content-box;
11
- /* ponytail: wrap to a second row instead of overflowing on mobile. The
12
- width is capped to availableWidth by floating-ui's size middleware;
13
- wrapping (not scrolling) keeps the "More" dropdown clickable — it is a
14
- descendant of this toolbar, so an overflow container would clip it. */
15
- flex-wrap: wrap;
16
- row-gap: 4px;
15
+ flex-wrap: nowrap;
17
16
  }
18
17
 
19
18
  :host([data-without-bg]) {
@@ -24,9 +23,11 @@ export class EditorToolbar extends WithDisposable(LitElement) {
24
23
 
25
24
  ::slotted(*) {
26
25
  display: flex;
27
- /* fixed row height (not 100%) so each item stays one row tall when the
28
- toolbar wraps to multiple rows */
29
- height: 36px;
26
+ height: 100%;
27
+ /* Entries keep their natural width: squashing them into the row would
28
+ hide the overflow the widget has to measure, and a button squeezed to
29
+ half a word is worse than the same button in the "⋮" menu. */
30
+ flex-shrink: 0;
30
31
  justify-content: center;
31
32
  align-items: center;
32
33
  gap: 8px;
@@ -1,7 +1,7 @@
1
1
  import { FileDropExtension } from '../affine-components/drop-indicator/index.js';
2
2
  import { PeekViewExtension, } from '../affine-components/peek/index.js';
3
3
  import { ViewExtensionProvider, } from '../affine-ext-loader/index.js';
4
- import { AutoClearSelectionService, BlockCommentManager, BlockLifecycleTelemetryWatcher, CitationService, DefaultOpenDocExtension, DNDAPIExtension, DocDisplayMetaService, DocModeService, EditPropsStore, EmbedOptionService, FileSizeLimitService, FontConfigExtension, fontConfigSchema, FontLoaderService, LinkPreviewCache, LinkPreviewCacheConfigSchema, LinkPreviewCacheExtension, LinkPreviewService, PageViewportServiceExtension, TelemetryExtension, ThemeService, ToolbarRegistryExtension, } from '../affine-shared/services/index.js';
4
+ import { AutoClearSelectionService, BlockCommentManager, BlockLifecycleTelemetryWatcher, CitationService, DefaultOpenDocExtension, DNDAPIExtension, DocDisplayMetaService, DocModeService, EditPropsStore, EmbedOptionService, FileSizeLimitService, FontConfigExtension, fontConfigSchema, FontLoaderService, LinkPreviewCache, LinkPreviewCacheConfigSchema, LinkPreviewCacheExtension, LinkPreviewService, PageViewportServiceExtension, PivotMaterialityPublisher, TelemetryExtension, ThemeService, ToolbarRegistryExtension, } from '../affine-shared/services/index.js';
5
5
  import { InteractivityManager, ToolController } from '../std/gfx/index.js';
6
6
  import { z } from 'zod';
7
7
  import { clipboardConfigs } from './clipboard.js';
@@ -47,7 +47,16 @@ export class FoundationViewExtension extends ViewExtensionProvider {
47
47
  ]);
48
48
  context.register(clipboardConfigs);
49
49
  if (this.isEdgeless(context.scope)) {
50
- context.register([InteractivityManager, ToolController]);
50
+ context.register([
51
+ InteractivityManager,
52
+ ToolController,
53
+ // Inert without a host `PivotPropertiesProvider` that implements the
54
+ // write-back; see ADR 0006 § 4. NOT flag-gated: reflecting a bound
55
+ // element's qualification onto its record is a property of the
56
+ // document, not a piece of framework tooling, and it must keep working
57
+ // for a board whose framework flag is off.
58
+ PivotMaterialityPublisher,
59
+ ]);
51
60
  }
52
61
  const fontConfig = options?.fontConfig;
53
62
  if (fontConfig) {
@@ -3,5 +3,6 @@ export * from './brush-tool.js';
3
3
  export * from './element-renderer.js';
4
4
  export * from './eraser-tool.js';
5
5
  export * from './highlighter-tool.js';
6
+ export * from './renderer/index.js';
6
7
  export * from './toolbar/configs/index.js';
7
8
  export * from './toolbar/senior-tool.js';
@@ -3,5 +3,6 @@ export * from './brush-tool.js';
3
3
  export * from './element-renderer.js';
4
4
  export * from './eraser-tool.js';
5
5
  export * from './highlighter-tool.js';
6
+ export * from './renderer/index.js';
6
7
  export * from './toolbar/configs/index.js';
7
8
  export * from './toolbar/senior-tool.js';
@@ -0,0 +1 @@
1
+ export declare const BrushDomRendererExtension: import("../../../store/index.js").ExtensionType;
@@ -0,0 +1,11 @@
1
+ import { DomElementRendererExtension, } from '../../../affine-block-surface/index.js';
2
+ import { DefaultTheme } from '../../../affine-model/index.js';
3
+ import { renderBrushLikeDom } from './shared.js';
4
+ export const BrushDomRendererExtension = DomElementRendererExtension('brush', (model, domElement, renderer) => {
5
+ renderBrushLikeDom({
6
+ model,
7
+ domElement,
8
+ renderer,
9
+ color: renderer.getColorValue(model.color, DefaultTheme.black, true),
10
+ });
11
+ });
@@ -0,0 +1 @@
1
+ export declare const HighlighterDomRendererExtension: import("../../../store/index.js").ExtensionType;
@@ -0,0 +1,11 @@
1
+ import { DomElementRendererExtension, } from '../../../affine-block-surface/index.js';
2
+ import { DefaultTheme } from '../../../affine-model/index.js';
3
+ import { renderBrushLikeDom } from './shared.js';
4
+ export const HighlighterDomRendererExtension = DomElementRendererExtension('highlighter', (model, domElement, renderer) => {
5
+ renderBrushLikeDom({
6
+ model,
7
+ domElement,
8
+ renderer,
9
+ color: renderer.getColorValue(model.color, DefaultTheme.hightlighterColor, true),
10
+ });
11
+ });
@@ -0,0 +1,2 @@
1
+ export { BrushDomRendererExtension } from './brush.js';
2
+ export { HighlighterDomRendererExtension } from './highlighter.js';
@@ -0,0 +1,2 @@
1
+ export { BrushDomRendererExtension } from './brush.js';
2
+ export { HighlighterDomRendererExtension } from './highlighter.js';
@@ -0,0 +1,14 @@
1
+ import type { DomRenderer } from '../../../affine-block-surface/index.js';
2
+ import type { BrushElementModel, HighlighterElementModel } from '../../../affine-model/index.js';
3
+ type BrushLikeModel = BrushElementModel | HighlighterElementModel;
4
+ /**
5
+ * Paints a brush or highlighter stroke into its host element. The z-index is
6
+ * owned by `DomRenderer`, which reads it from the layer manager.
7
+ */
8
+ export declare function renderBrushLikeDom({ color, domElement, model, renderer, }: {
9
+ color: string;
10
+ domElement: HTMLElement;
11
+ model: BrushLikeModel;
12
+ renderer: DomRenderer;
13
+ }): void;
14
+ export {};
@@ -0,0 +1,54 @@
1
+ const SVG_NS = 'http://www.w3.org/2000/svg';
2
+ /**
3
+ * The nodes a stroke host already owns, kept across renders. Rebuilding the
4
+ * `<svg>` on every frame allocated one element per stroke per pan or zoom;
5
+ * the attributes are cheap to overwrite in place.
6
+ */
7
+ const retainedBrushDom = new WeakMap();
8
+ function clearBrushLikeDom(domElement) {
9
+ retainedBrushDom.delete(domElement);
10
+ domElement.replaceChildren();
11
+ }
12
+ function getRetainedBrushDom(domElement) {
13
+ const existing = retainedBrushDom.get(domElement);
14
+ if (existing) {
15
+ return existing;
16
+ }
17
+ const svg = document.createElementNS(SVG_NS, 'svg');
18
+ svg.style.position = 'absolute';
19
+ svg.style.left = '0';
20
+ svg.style.top = '0';
21
+ svg.style.overflow = 'visible';
22
+ svg.style.pointerEvents = 'none';
23
+ const path = document.createElementNS(SVG_NS, 'path');
24
+ path.setAttribute('stroke', 'none');
25
+ svg.append(path);
26
+ const retained = { svg, path };
27
+ retainedBrushDom.set(domElement, retained);
28
+ domElement.replaceChildren(svg);
29
+ return retained;
30
+ }
31
+ /**
32
+ * Paints a brush or highlighter stroke into its host element. The z-index is
33
+ * owned by `DomRenderer`, which reads it from the layer manager.
34
+ */
35
+ export function renderBrushLikeDom({ color, domElement, model, renderer, }) {
36
+ const { zoom } = renderer.viewport;
37
+ const [, , w, h] = model.deserializedXYWH;
38
+ if (w <= 0 || h <= 0 || !model.commands) {
39
+ clearBrushLikeDom(domElement);
40
+ return;
41
+ }
42
+ const { path, svg } = getRetainedBrushDom(domElement);
43
+ svg.style.width = `${w * zoom}px`;
44
+ svg.style.height = `${h * zoom}px`;
45
+ svg.style.transform = model.rotate === 0 ? '' : `rotate(${model.rotate}deg)`;
46
+ svg.style.transformOrigin = model.rotate === 0 ? '' : 'center';
47
+ svg.setAttribute('viewBox', `0 0 ${w} ${h}`);
48
+ path.setAttribute('d', model.commands);
49
+ path.setAttribute('fill', color);
50
+ domElement.style.width = `${w * zoom}px`;
51
+ domElement.style.height = `${h * zoom}px`;
52
+ domElement.style.overflow = 'visible';
53
+ domElement.style.pointerEvents = 'none';
54
+ }
@@ -0,0 +1 @@
1
+ export * from './dom/index.js';
@@ -0,0 +1,4 @@
1
+ // The canvas (2d context) renderers still live in `../element-renderer.ts`
2
+ // (brush) and in `@labre/affine-gfx-shape` (highlighter); only the DOM
3
+ // variants are collected here.
4
+ export * from './dom/index.js';
@@ -1,4 +1,18 @@
1
1
  import { type ViewExtensionContext, ViewExtensionProvider } from '../affine-ext-loader/index.js';
2
+ /**
3
+ * Brush / highlighter rendering — ALWAYS registered, independent of any flag.
4
+ * Disabling `brush` hides only the pen senior button and the tools it opens
5
+ * (see {@link BrushViewExtension}); strokes already drawn must still paint,
6
+ * stay selectable and keep their contextual toolbar. See `docs/adr/0009`.
7
+ */
8
+ export declare class BrushRenderViewExtension extends ViewExtensionProvider {
9
+ name: string;
10
+ setup(context: ViewExtensionContext): void;
11
+ }
12
+ /**
13
+ * Pen creation tooling — flag-gated (`brush`): the senior toolbar button and
14
+ * the brush / highlighter / eraser tools it opens.
15
+ */
2
16
  export declare class BrushViewExtension extends ViewExtensionProvider {
3
17
  name: string;
4
18
  effect(): void;
@@ -4,8 +4,36 @@ import { effects } from './effects.js';
4
4
  import { BrushElementRendererExtension } from './element-renderer.js';
5
5
  import { EraserTool } from './eraser-tool.js';
6
6
  import { HighlighterTool } from './highlighter-tool.js';
7
+ import { BrushDomRendererExtension, HighlighterDomRendererExtension, } from './renderer/index.js';
7
8
  import { brushToolbarExtension, highlighterToolbarExtension, } from './toolbar/configs/index.js';
8
9
  import { penSeniorTool } from './toolbar/senior-tool.js';
10
+ /**
11
+ * Brush / highlighter rendering — ALWAYS registered, independent of any flag.
12
+ * Disabling `brush` hides only the pen senior button and the tools it opens
13
+ * (see {@link BrushViewExtension}); strokes already drawn must still paint,
14
+ * stay selectable and keep their contextual toolbar. See `docs/adr/0009`.
15
+ */
16
+ export class BrushRenderViewExtension extends ViewExtensionProvider {
17
+ constructor() {
18
+ super(...arguments);
19
+ this.name = 'affine-brush-render-gfx';
20
+ }
21
+ setup(context) {
22
+ super.setup(context);
23
+ context.register(BrushElementRendererExtension);
24
+ // DOM variants of the same two strokes. The canvas renderer for the
25
+ // highlighter still ships with `@labre/affine-gfx-shape`; both providers
26
+ // are always-on, so the pair stays complete whatever the `brush` flag says.
27
+ context.register(BrushDomRendererExtension);
28
+ context.register(HighlighterDomRendererExtension);
29
+ context.register(brushToolbarExtension);
30
+ context.register(highlighterToolbarExtension);
31
+ }
32
+ }
33
+ /**
34
+ * Pen creation tooling — flag-gated (`brush`): the senior toolbar button and
35
+ * the brush / highlighter / eraser tools it opens.
36
+ */
9
37
  export class BrushViewExtension extends ViewExtensionProvider {
10
38
  constructor() {
11
39
  super(...arguments);
@@ -13,6 +41,7 @@ export class BrushViewExtension extends ViewExtensionProvider {
13
41
  }
14
42
  effect() {
15
43
  super.effect();
44
+ // Defines the pen/eraser tool buttons and the pen menu — tooling only.
16
45
  effects();
17
46
  }
18
47
  setup(context) {
@@ -20,9 +49,6 @@ export class BrushViewExtension extends ViewExtensionProvider {
20
49
  context.register(BrushTool);
21
50
  context.register(EraserTool);
22
51
  context.register(HighlighterTool);
23
- context.register(BrushElementRendererExtension);
24
- context.register(brushToolbarExtension);
25
- context.register(highlighterToolbarExtension);
26
52
  context.register(penSeniorTool);
27
53
  }
28
54
  }
@@ -985,6 +985,17 @@ export class ConnectorPathGenerator extends PathGenerator {
985
985
  getElementById: elementGetter ?? (() => null),
986
986
  });
987
987
  const points = path ?? instance._generateConnectorPath(connector) ?? [];
988
+ // Degraded state: no resolvable endpoints (an endpoint references a
989
+ // missing element and has no fallback position). Keep the last bound and
990
+ // paint nothing rather than derive a bbox from an empty point set.
991
+ if (points.length === 0) {
992
+ if (connector.path.length > 0) {
993
+ connector.updatingPath = true;
994
+ connector.path = [];
995
+ connector.updatingPath = false;
996
+ }
997
+ return;
998
+ }
988
999
  const bound = connector.mode === ConnectorMode.Curve
989
1000
  ? getBezierCurveBoundingBox(getBezierParameters(points))
990
1001
  : getBoundFromPoints(points);
@@ -1052,6 +1063,11 @@ export class ConnectorPathGenerator extends PathGenerator {
1052
1063
  const start = this._getConnectorEndElement(connector, 'source');
1053
1064
  const end = this._getConnectorEndElement(connector, 'target');
1054
1065
  const [startPoint, endPoint] = this._computeStartEndPoint(connector);
1066
+ // _computeStartEndPoint returns [] when an endpoint cannot be resolved
1067
+ // (e.g. its element is gone and no position is stored) — bail out
1068
+ // instead of feeding undefined points to the orthogonal router.
1069
+ if (!startPoint || !endPoint)
1070
+ return [];
1055
1071
  const startBound = start
1056
1072
  ? Bound.from(getBoundWithRotation(rBound(start)))
1057
1073
  : null;
@@ -1076,9 +1092,12 @@ export class ConnectorPathGenerator extends PathGenerator {
1076
1092
  let startPoint = null;
1077
1093
  let endPoint = null;
1078
1094
  if (source.id || target.id) {
1079
- if (!source.position && !target.position) {
1080
- const start = this._getConnectorEndElement(connector, 'source');
1081
- const end = this._getConnectorEndElement(connector, 'target');
1095
+ const start = this._getConnectorEndElement(connector, 'source');
1096
+ const end = this._getConnectorEndElement(connector, 'target');
1097
+ // An endpoint id may reference an element that no longer exists.
1098
+ // Only take the anchor-to-anchor shortcut when both resolve; otherwise
1099
+ // degrade through _getConnectionPoint (stored position or empty path).
1100
+ if (start && end && !source.position && !target.position) {
1082
1101
  const sb = Bound.deserialize(start.xywh);
1083
1102
  const eb = Bound.deserialize(end.xywh);
1084
1103
  startPoint = getNearestConnectableAnchor(start, eb.center);
@@ -1150,9 +1169,16 @@ export class ConnectorPathGenerator extends PathGenerator {
1150
1169
  }
1151
1170
  _generateStraightConnectorPath(connector) {
1152
1171
  const { source, target } = connector;
1153
- if (source.id && !source.position && target.id && !target.position) {
1154
- const start = this._getConnectorEndElement(connector, 'source');
1155
- const end = this._getConnectorEndElement(connector, 'target');
1172
+ const start = this._getConnectorEndElement(connector, 'source');
1173
+ const end = this._getConnectorEndElement(connector, 'target');
1174
+ // Same degraded state as in _generateCurveConnectorPath: an endpoint id
1175
+ // whose element is gone falls through to _getConnectionPoint.
1176
+ if (source.id &&
1177
+ !source.position &&
1178
+ target.id &&
1179
+ !target.position &&
1180
+ start &&
1181
+ end) {
1156
1182
  const sb = Bound.deserialize(start.xywh);
1157
1183
  const eb = Bound.deserialize(end.xywh);
1158
1184
  const startPoint = getNearestConnectableAnchor(start, eb.center);
@@ -4,6 +4,13 @@ import type { PointerEventState } from '../std/index.js';
4
4
  import { BaseTool, type GfxModel } from '../std/gfx/index.js';
5
5
  export type ConnectorToolOptions = {
6
6
  mode: ConnectorMode;
7
+ /**
8
+ * Semantic role (`<framework>:<role>`) stamped on the connectors drawn while
9
+ * this activation lasts — a framework toolbox activates the tool for a typed
10
+ * edge (e.g. `wardley:dependency`). Left out for the plain connector tool:
11
+ * the edge then stays neutral and no `role` key is written.
12
+ */
13
+ role?: string;
7
14
  };
8
15
  export declare class ConnectorTool extends BaseTool<ConnectorToolOptions> {
9
16
  static toolName: string;
@@ -37,7 +37,8 @@ export class ConnectorTool extends BaseTool {
37
37
  const id = this.gfx.surface.addElement({
38
38
  type: CanvasElementType.CONNECTOR,
39
39
  mode: this.activatedOption.mode,
40
- controllers: [],
40
+ // `undefined` writes nothing: a neutral edge keeps no `role` key.
41
+ role: this.activatedOption.role,
41
42
  source: this._source,
42
43
  target: { position: this._startPoint },
43
44
  });
@@ -0,0 +1,123 @@
1
+ import type { ConnectorElementModel } from '../../affine-model/index.js';
2
+ import type { IVec } from '../../global/gfx/index.js';
3
+ import { InteractivityExtension } from '../../std/gfx/index.js';
4
+ import { type TypedEdge } from './typed-edge.js';
5
+ /**
6
+ * **M2 of `docs/adr/0010` — "show it".**
7
+ *
8
+ * A typed edge reveals its orientation on hover and on selection: ONE mark, the
9
+ * role's verb laid ALONG the link — `depends on` — in a box whose far end is a
10
+ * point aimed at the target. At rest the board keeps the canonical arrowless
11
+ * look, because on a Wardley map a permanent head already means something else
12
+ * (evolution movement), and two meanings on one glyph make both unreadable.
13
+ *
14
+ * ## The chevron is gone (PO acceptance of 02/08/2026, point 5)
15
+ *
16
+ * The first cut of M2 drew two marks: a canvas chevron at the target end, and
17
+ * a horizontal DOM tooltip holding the bare verb. Two things were wrong with
18
+ * it, and they had one cause between them.
19
+ *
20
+ * - The label was placed on `path[floor(length / 2)]`, the middle VERTEX. A
21
+ * straight link has exactly two points, so the "middle" vertex IS the target
22
+ * end — the tooltip landed on the tip of the link and covered the chevron it
23
+ * was meant to complement.
24
+ * - Even placed correctly, a horizontal box across a diagonal link reads as a
25
+ * sticker dropped on the map rather than as a statement about that link.
26
+ *
27
+ * The fix is one mark instead of two: the verb, rotated onto the line,
28
+ * ending in the point that used to be a separate chevron. So this file no
29
+ * longer owns a canvas overlay at all — {@link labelAnchorOf} says where the
30
+ * label goes and which way it turns, and the DOM widget draws it. Nothing can
31
+ * overlap something that no longer exists.
32
+ *
33
+ * ## Why a manager, and not the element renderer
34
+ *
35
+ * An `ElementRenderer` is `(model, ctx, matrix, renderer, rc)`: it knows the
36
+ * element and knows nothing about hover or selection, which are the two things
37
+ * this affordance is made of. So the state lives in an `InteractivityExtension`
38
+ * that owns two signals, and the widget reads them.
39
+ *
40
+ * Nothing here touches an element model: no CRDT write, no undo entry, not even
41
+ * a `@local()` field. The reveal is session state and leaves with the pointer.
42
+ */
43
+ /**
44
+ * The one colour the reveal is drawn in — the house primary, i.e. the colour of
45
+ * an affordance rather than of ink. Deliberately NOT the framework's palette:
46
+ * the label is the tool talking about the drawing, not part of the drawing.
47
+ */
48
+ export declare const EDGE_DIRECTION_COLOR = "#1e96eb";
49
+ /**
50
+ * Where the label sits on a typed edge, and how it is turned.
51
+ *
52
+ * All of it in MODEL space: the widget projects `at` through the viewport and
53
+ * scales the box by the zoom, so the label is glued to its link the way a
54
+ * street name is glued to its street.
55
+ */
56
+ export interface EdgeLabelAnchor {
57
+ /** The model point the label CENTRES on — the middle of the drawn path. */
58
+ at: IVec;
59
+ /**
60
+ * Rotation in radians, always within `[-π/2, π/2]`: the angle of the median
61
+ * segment, turned by 180° when that angle would stand the text on its head.
62
+ */
63
+ angle: number;
64
+ /**
65
+ * Whether that 180° turn happened. It is the whole reason the caller needs
66
+ * this flag: the point of the box must face the TARGET, so on a link running
67
+ * right-to-left — where the turn put the box's right end at the SOURCE — the
68
+ * point moves to the box's left end. The words themselves never reverse; a
69
+ * mirrored `depends on` would be a smudge, not a rotation.
70
+ */
71
+ flipped: boolean;
72
+ }
73
+ /**
74
+ * Where a typed edge's label goes and how it is turned — the whole geometry
75
+ * of M2 since the chevron was folded into the label.
76
+ *
77
+ * `null` for an edge with no direction to show: no routed path yet, or a path
78
+ * whose points all coincide. Silence, not a guess.
79
+ */
80
+ export declare function labelAnchorOf(model: ConnectorElementModel): EdgeLabelAnchor | null;
81
+ /**
82
+ * Owns "which typed edges are revealing their direction", and the hint the
83
+ * armed tool shows (M1). Both are session state, both are signals, and both are
84
+ * read by the overlay and by the widget — so the two halves of the affordance
85
+ * can never disagree about what is on screen.
86
+ *
87
+ * No-op until some framework registers a role vocabulary: on a board of
88
+ * generalist connectors this subscribes to nothing at all.
89
+ */
90
+ export declare class EdgeDirectionManager extends InteractivityExtension {
91
+ static key: string;
92
+ /** Ids of the typed edges revealing their direction: hover ∪ selection. */
93
+ readonly revealed$: import("@preact/signals-core").Signal<readonly string[]>;
94
+ /**
95
+ * The gesture hint of the armed tool, when that tool draws a typed edge —
96
+ * M1's half of the affordance. `null` for every other tool, which is every
97
+ * tool whose gesture decides no persisted orientation.
98
+ */
99
+ readonly armedHint$: import("@preact/signals-core").Signal<{
100
+ key: string;
101
+ fallback?: string;
102
+ } | null>;
103
+ private _hovered;
104
+ private _subscriptions;
105
+ private _vocabularies;
106
+ private get _roles();
107
+ /**
108
+ * The revealed edges, resolved NOW rather than remembered.
109
+ *
110
+ * The same reasoning as the validation overlay's: the widget re-renders far
111
+ * more often than this state changes, and an edge can lose a binding or a
112
+ * role between two frames. A frozen snapshot would keep labelling a relation
113
+ * that no longer exists.
114
+ */
115
+ revealedEdges(): TypedEdge[];
116
+ mounted(): void;
117
+ unmounted(): void;
118
+ private _hover;
119
+ private _setHovered;
120
+ private _syncArmed;
121
+ /** Recompute hover ∪ selection, and publish only when it actually changed. */
122
+ private _sync;
123
+ }