@formicoidea/labre-core 0.31.0 → 0.33.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (637) hide show
  1. package/dist/_pkgs/affine-block-attachment/attachment-block.js +1 -1
  2. package/dist/_pkgs/affine-block-callout/callout-block.d.ts +6 -0
  3. package/dist/_pkgs/affine-block-callout/callout-block.js +26 -4
  4. package/dist/_pkgs/affine-block-callout/callout-keymap.js +59 -19
  5. package/dist/_pkgs/affine-block-callout/commands/callout-to-paragraph.d.ts +20 -0
  6. package/dist/_pkgs/affine-block-callout/commands/callout-to-paragraph.js +60 -0
  7. package/dist/_pkgs/affine-block-callout/commands/split-callout.d.ts +17 -0
  8. package/dist/_pkgs/affine-block-callout/commands/split-callout.js +42 -0
  9. package/dist/_pkgs/affine-block-callout/configs/slash-menu.js +9 -6
  10. package/dist/_pkgs/affine-block-callout/emoji-margin.d.ts +9 -0
  11. package/dist/_pkgs/affine-block-callout/emoji-margin.js +36 -0
  12. package/dist/_pkgs/affine-block-callout/emoji-menu.d.ts +5 -1
  13. package/dist/_pkgs/affine-block-callout/emoji-menu.js +5 -0
  14. package/dist/_pkgs/affine-block-code/code-block-inline.js +1 -1
  15. package/dist/_pkgs/affine-block-code/code-block.d.ts +14 -0
  16. package/dist/_pkgs/affine-block-code/code-block.js +44 -6
  17. package/dist/_pkgs/affine-block-code/code-toolbar/components/code-toolbar.d.ts +2 -0
  18. package/dist/_pkgs/affine-block-code/code-toolbar/components/code-toolbar.js +23 -14
  19. package/dist/_pkgs/affine-block-code/code-toolbar/components/more-menu.d.ts +16 -0
  20. package/dist/_pkgs/affine-block-code/code-toolbar/components/more-menu.js +93 -0
  21. package/dist/_pkgs/affine-block-code/code-toolbar/config.js +54 -5
  22. package/dist/_pkgs/affine-block-code/code-toolbar/index.js +1 -1
  23. package/dist/_pkgs/affine-block-code/effects.d.ts +2 -0
  24. package/dist/_pkgs/affine-block-code/effects.js +2 -0
  25. package/dist/_pkgs/affine-block-code/highlight/affine-code-unit.js +6 -1
  26. package/dist/_pkgs/affine-block-code/index.d.ts +1 -0
  27. package/dist/_pkgs/affine-block-code/index.js +1 -0
  28. package/dist/_pkgs/affine-block-code/line-numbers.d.ts +25 -0
  29. package/dist/_pkgs/affine-block-code/line-numbers.js +27 -0
  30. package/dist/_pkgs/affine-block-code/styles.js +31 -0
  31. package/dist/_pkgs/affine-block-data-view/data-view-block.js +1 -0
  32. package/dist/_pkgs/affine-block-database/components/title/index.js +4 -1
  33. package/dist/_pkgs/affine-block-database/configs/slash-menu.js +28 -1
  34. package/dist/_pkgs/affine-block-database/data-source.js +1 -2
  35. package/dist/_pkgs/affine-block-database/database-block.js +13 -0
  36. package/dist/_pkgs/affine-block-database/external-data-source.js +1 -1
  37. package/dist/_pkgs/affine-block-database/properties/paste-url.d.ts +24 -0
  38. package/dist/_pkgs/affine-block-database/properties/paste-url.js +98 -0
  39. package/dist/_pkgs/affine-block-database/properties/rich-text/cell-renderer.js +9 -19
  40. package/dist/_pkgs/affine-block-database/properties/title/text.js +20 -25
  41. package/dist/_pkgs/affine-block-database/views/index.js +1 -0
  42. package/dist/_pkgs/affine-block-edgeless-text/edgeless-text-block.js +11 -1
  43. package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/config.d.ts +3 -0
  44. package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/config.js +48 -1
  45. package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/font-size.d.ts +17 -0
  46. package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/font-size.js +24 -0
  47. package/dist/_pkgs/affine-block-embed/embed-figma-block/embed-figma-service.js +1 -1
  48. package/dist/_pkgs/affine-block-embed/embed-iframe-block/configs/toolbar.js +2 -2
  49. package/dist/_pkgs/affine-block-embed-doc/common/doc-trashed.d.ts +9 -0
  50. package/dist/_pkgs/affine-block-embed-doc/common/doc-trashed.js +10 -0
  51. package/dist/_pkgs/affine-block-embed-doc/embed-linked-doc-block/configs/toolbar.js +1 -1
  52. package/dist/_pkgs/affine-block-embed-doc/embed-linked-doc-block/embed-linked-doc-block.js +8 -4
  53. package/dist/_pkgs/affine-block-embed-doc/embed-linked-doc-block/utils.js +1 -1
  54. package/dist/_pkgs/affine-block-embed-doc/embed-synced-doc-block/configs/toolbar.js +1 -1
  55. package/dist/_pkgs/affine-block-embed-doc/embed-synced-doc-block/embed-synced-doc-block.d.ts +4 -0
  56. package/dist/_pkgs/affine-block-embed-doc/embed-synced-doc-block/embed-synced-doc-block.js +23 -4
  57. package/dist/_pkgs/affine-block-frame/frame-manager.d.ts +13 -0
  58. package/dist/_pkgs/affine-block-frame/frame-manager.js +34 -2
  59. package/dist/_pkgs/affine-block-frame/frame-tool.js +1 -1
  60. package/dist/_pkgs/affine-block-image/components/page-image-block.js +1 -1
  61. package/dist/_pkgs/affine-block-image/image-edgeless-block.js +1 -1
  62. package/dist/_pkgs/affine-block-latex/styles.js +6 -1
  63. package/dist/_pkgs/affine-block-list/utils/forward-delete.js +1 -1
  64. package/dist/_pkgs/affine-block-note/commands/select-block.js +1 -1
  65. package/dist/_pkgs/affine-block-note/commands/select-blocks-between.js +1 -1
  66. package/dist/_pkgs/affine-block-note/move-block.js +1 -1
  67. package/dist/_pkgs/affine-block-note/note-edgeless-block.d.ts +9 -0
  68. package/dist/_pkgs/affine-block-note/note-edgeless-block.js +29 -1
  69. package/dist/_pkgs/affine-block-paragraph/utils/forward-delete.js +2 -2
  70. package/dist/_pkgs/affine-block-paragraph/utils/merge-with-prev.js +1 -1
  71. package/dist/_pkgs/affine-block-root/commands/pivot-commands.d.ts +37 -0
  72. package/dist/_pkgs/affine-block-root/commands/pivot-commands.js +168 -0
  73. package/dist/_pkgs/affine-block-root/commands/reading-commands.d.ts +23 -0
  74. package/dist/_pkgs/affine-block-root/commands/reading-commands.js +107 -0
  75. package/dist/_pkgs/affine-block-root/commands/tag-commands.d.ts +47 -0
  76. package/dist/_pkgs/affine-block-root/commands/tag-commands.js +159 -0
  77. package/dist/_pkgs/affine-block-root/configs/toolbar.d.ts +1 -0
  78. package/dist/_pkgs/affine-block-root/edgeless/configs/toolbar/more.js +10 -3
  79. package/dist/_pkgs/affine-block-root/edgeless/configs/toolbar/render-linked-doc.js +1 -1
  80. package/dist/_pkgs/affine-block-root/edgeless/edgeless-keyboard.js +27 -2
  81. package/dist/_pkgs/affine-block-root/edgeless/edgeless-root-block.js +11 -2
  82. package/dist/_pkgs/affine-block-root/edgeless/edgeless-root-service.js +14 -0
  83. package/dist/_pkgs/affine-block-root/edgeless/index.d.ts +1 -0
  84. package/dist/_pkgs/affine-block-root/edgeless/index.js +1 -0
  85. package/dist/_pkgs/affine-block-root/edgeless/reserved-keys.d.ts +21 -0
  86. package/dist/_pkgs/affine-block-root/edgeless/reserved-keys.js +34 -0
  87. package/dist/_pkgs/affine-block-root/edgeless/utils/clipboard-utils.js +1 -1
  88. package/dist/_pkgs/affine-block-root/edgeless/utils/clone-utils.d.ts +7 -1
  89. package/dist/_pkgs/affine-block-root/edgeless/utils/clone-utils.js +11 -2
  90. package/dist/_pkgs/affine-block-root/index.d.ts +4 -1
  91. package/dist/_pkgs/affine-block-root/index.js +4 -1
  92. package/dist/_pkgs/affine-block-root/keyboard/commands.d.ts +2 -0
  93. package/dist/_pkgs/affine-block-root/keyboard/commands.js +147 -0
  94. package/dist/_pkgs/affine-block-root/view.js +13 -4
  95. package/dist/_pkgs/affine-block-surface/adapters/markdown/element-adapter/type.js +1 -1
  96. package/dist/_pkgs/affine-block-surface/adapters/plain-text/element-adapter/type.js +1 -1
  97. package/dist/_pkgs/affine-block-surface/commands/reassociate-connectors.js +0 -1
  98. package/dist/_pkgs/affine-block-surface/effects.js +6 -0
  99. package/dist/_pkgs/affine-block-surface/element-model/index.d.ts +21 -3
  100. package/dist/_pkgs/affine-block-surface/element-model/index.js +14 -2
  101. package/dist/_pkgs/affine-block-surface/extensions/audit.d.ts +107 -0
  102. package/dist/_pkgs/affine-block-surface/extensions/audit.js +489 -0
  103. package/dist/_pkgs/affine-block-surface/extensions/crud-extension.d.ts +14 -0
  104. package/dist/_pkgs/affine-block-surface/extensions/crud-extension.js +37 -5
  105. package/dist/_pkgs/affine-block-surface/extensions/editor-anchored-panel.d.ts +133 -0
  106. package/dist/_pkgs/affine-block-surface/extensions/editor-anchored-panel.js +327 -0
  107. package/dist/_pkgs/affine-block-surface/extensions/element-renderer.js +1 -1
  108. package/dist/_pkgs/affine-block-surface/extensions/export-manager/export-manager.js +1 -1
  109. package/dist/_pkgs/affine-block-surface/extensions/index.d.ts +17 -0
  110. package/dist/_pkgs/affine-block-surface/extensions/index.js +17 -0
  111. package/dist/_pkgs/affine-block-surface/extensions/interchange-import.d.ts +172 -0
  112. package/dist/_pkgs/affine-block-surface/extensions/interchange-import.js +393 -0
  113. package/dist/_pkgs/affine-block-surface/extensions/interchange.d.ts +306 -0
  114. package/dist/_pkgs/affine-block-surface/extensions/interchange.js +64 -0
  115. package/dist/_pkgs/affine-block-surface/extensions/map-quality-widget.d.ts +146 -0
  116. package/dist/_pkgs/affine-block-surface/extensions/map-quality-widget.js +528 -0
  117. package/dist/_pkgs/affine-block-surface/extensions/map-quality.d.ts +109 -0
  118. package/dist/_pkgs/affine-block-surface/extensions/map-quality.js +84 -0
  119. package/dist/_pkgs/affine-block-surface/extensions/morph-toolbar.d.ts +248 -0
  120. package/dist/_pkgs/affine-block-surface/extensions/morph-toolbar.js +248 -0
  121. package/dist/_pkgs/affine-block-surface/extensions/reading-toolbar.d.ts +15 -0
  122. package/dist/_pkgs/affine-block-surface/extensions/reading-toolbar.js +158 -0
  123. package/dist/_pkgs/affine-block-surface/extensions/reading-widget.d.ts +145 -0
  124. package/dist/_pkgs/affine-block-surface/extensions/reading-widget.js +588 -0
  125. package/dist/_pkgs/affine-block-surface/extensions/reading.d.ts +494 -0
  126. package/dist/_pkgs/affine-block-surface/extensions/reading.js +767 -0
  127. package/dist/_pkgs/affine-block-surface/extensions/spotlight.d.ts +45 -0
  128. package/dist/_pkgs/affine-block-surface/extensions/spotlight.js +177 -0
  129. package/dist/_pkgs/affine-block-surface/extensions/svg-sketch.d.ts +107 -0
  130. package/dist/_pkgs/affine-block-surface/extensions/svg-sketch.js +958 -0
  131. package/dist/_pkgs/affine-block-surface/extensions/tags-toolbar.d.ts +10 -0
  132. package/dist/_pkgs/affine-block-surface/extensions/tags-toolbar.js +295 -0
  133. package/dist/_pkgs/affine-block-surface/extensions/validation-toolbar.d.ts +27 -0
  134. package/dist/_pkgs/affine-block-surface/extensions/validation-toolbar.js +361 -0
  135. package/dist/_pkgs/affine-block-surface/extensions/validation.d.ts +2129 -0
  136. package/dist/_pkgs/affine-block-surface/extensions/validation.js +4620 -0
  137. package/dist/_pkgs/affine-block-surface/extensions/violation-detail-widget.d.ts +330 -0
  138. package/dist/_pkgs/affine-block-surface/extensions/violation-detail-widget.js +1004 -0
  139. package/dist/_pkgs/affine-block-surface/extensions/violation-timeline.d.ts +80 -0
  140. package/dist/_pkgs/affine-block-surface/extensions/violation-timeline.js +123 -0
  141. package/dist/_pkgs/affine-block-surface/framework-background/def.d.ts +610 -0
  142. package/dist/_pkgs/affine-block-surface/framework-background/def.js +206 -0
  143. package/dist/_pkgs/affine-block-surface/framework-background/facts.d.ts +188 -0
  144. package/dist/_pkgs/affine-block-surface/framework-background/facts.js +284 -0
  145. package/dist/_pkgs/affine-block-surface/framework-background/index.d.ts +5 -0
  146. package/dist/_pkgs/affine-block-surface/framework-background/index.js +5 -0
  147. package/dist/_pkgs/affine-block-surface/framework-background/interaction.d.ts +12 -0
  148. package/dist/_pkgs/affine-block-surface/framework-background/interaction.js +24 -0
  149. package/dist/_pkgs/affine-block-surface/framework-background/labels.d.ts +99 -0
  150. package/dist/_pkgs/affine-block-surface/framework-background/labels.js +193 -0
  151. package/dist/_pkgs/affine-block-surface/framework-background/renderer.d.ts +8 -0
  152. package/dist/_pkgs/affine-block-surface/framework-background/renderer.js +399 -0
  153. package/dist/_pkgs/affine-block-surface/index.d.ts +1 -0
  154. package/dist/_pkgs/affine-block-surface/index.js +1 -0
  155. package/dist/_pkgs/affine-block-surface/renderer/canvas-renderer.d.ts +69 -3
  156. package/dist/_pkgs/affine-block-surface/renderer/canvas-renderer.js +333 -44
  157. package/dist/_pkgs/affine-block-surface/renderer/dom-renderer.js +18 -2
  158. package/dist/_pkgs/affine-block-surface/renderer/overlay.js +1 -1
  159. package/dist/_pkgs/affine-block-surface/tool/default-tool.js +8 -0
  160. package/dist/_pkgs/affine-block-surface/utils/font.js +9 -3
  161. package/dist/_pkgs/affine-block-surface/view.d.ts +17 -0
  162. package/dist/_pkgs/affine-block-surface/view.js +57 -2
  163. package/dist/_pkgs/affine-block-surface-ref/portal/note.js +2 -2
  164. package/dist/_pkgs/affine-block-table/commands.js +1 -1
  165. package/dist/_pkgs/affine-block-table/selection-controller.d.ts +6 -0
  166. package/dist/_pkgs/affine-block-table/selection-controller.js +24 -1
  167. package/dist/_pkgs/affine-block-table/table-block.js +8 -2
  168. package/dist/_pkgs/affine-block-table/table-cell.js +5 -6
  169. package/dist/_pkgs/affine-block-table/table-keymap.d.ts +18 -0
  170. package/dist/_pkgs/affine-block-table/table-keymap.js +41 -0
  171. package/dist/_pkgs/affine-block-table/utils.d.ts +7 -0
  172. package/dist/_pkgs/affine-block-table/utils.js +12 -0
  173. package/dist/_pkgs/affine-block-table/view.js +2 -0
  174. package/dist/_pkgs/affine-components/caption/captioned-block-component.js +2 -1
  175. package/dist/_pkgs/affine-components/context-menu/button.d.ts +7 -0
  176. package/dist/_pkgs/affine-components/context-menu/button.js +7 -2
  177. package/dist/_pkgs/affine-components/context-menu/input.d.ts +4 -0
  178. package/dist/_pkgs/affine-components/context-menu/input.js +12 -0
  179. package/dist/_pkgs/affine-components/context-menu/menu-all.d.ts +2 -0
  180. package/dist/_pkgs/affine-components/context-menu/menu-renderer.js +8 -1
  181. package/dist/_pkgs/affine-components/context-menu/sub-menu.js +3 -0
  182. package/dist/_pkgs/affine-components/edgeless-shape-color-picker/color-picker.js +1 -1
  183. package/dist/_pkgs/affine-components/embed-card-modal/embed-card-edit-modal.js +1 -1
  184. package/dist/_pkgs/affine-components/filterable-list/styles.js +1 -1
  185. package/dist/_pkgs/affine-components/highlight-dropdown-menu/highlight-duotone-icon.js +8 -8
  186. package/dist/_pkgs/affine-components/highlight-dropdown-menu/text-duotone-icon.js +11 -11
  187. package/dist/_pkgs/affine-components/icon-picker/affine-icon-picker-panel.d.ts +28 -0
  188. package/dist/_pkgs/affine-components/icon-picker/affine-icon-picker-panel.js +231 -0
  189. package/dist/_pkgs/affine-components/icon-picker/emoji-data.d.ts +40 -0
  190. package/dist/_pkgs/affine-components/icon-picker/emoji-data.js +99 -0
  191. package/dist/_pkgs/affine-components/icon-picker/emoji-picker-panel.d.ts +32 -0
  192. package/dist/_pkgs/affine-components/icon-picker/emoji-picker-panel.js +276 -0
  193. package/dist/_pkgs/affine-components/icon-picker/icon-data.d.ts +34 -0
  194. package/dist/_pkgs/affine-components/icon-picker/icon-data.js +83 -0
  195. package/dist/_pkgs/affine-components/icon-picker/icon-picker.d.ts +39 -0
  196. package/dist/_pkgs/affine-components/icon-picker/icon-picker.js +233 -0
  197. package/dist/_pkgs/affine-components/icon-picker/index.d.ts +8 -0
  198. package/dist/_pkgs/affine-components/icon-picker/index.js +15 -0
  199. package/dist/_pkgs/affine-components/icon-picker/recent-store.d.ts +8 -0
  200. package/dist/_pkgs/affine-components/icon-picker/recent-store.js +41 -0
  201. package/dist/_pkgs/affine-components/icon-picker/styles.d.ts +5 -0
  202. package/dist/_pkgs/affine-components/icon-picker/styles.js +166 -0
  203. package/dist/_pkgs/affine-components/icon-picker/types.d.ts +22 -0
  204. package/dist/_pkgs/affine-components/icon-picker/types.js +10 -0
  205. package/dist/_pkgs/affine-components/icons/text.js +426 -426
  206. package/dist/_pkgs/affine-components/open-doc-dropdown-menu/dropdown-menu.d.ts +1 -0
  207. package/dist/_pkgs/affine-components/peek/peekable.js +1 -1
  208. package/dist/_pkgs/affine-components/portal/portal.d.ts +1 -1
  209. package/dist/_pkgs/affine-components/toolbar/index.d.ts +1 -0
  210. package/dist/_pkgs/affine-components/toolbar/index.js +1 -0
  211. package/dist/_pkgs/affine-components/toolbar/menu-button.js +2 -1
  212. package/dist/_pkgs/affine-components/toolbar/picker-menu.d.ts +55 -0
  213. package/dist/_pkgs/affine-components/toolbar/picker-menu.js +47 -0
  214. package/dist/_pkgs/affine-components/toolbar/toolbar.js +11 -10
  215. package/dist/_pkgs/affine-foundation/view.js +11 -2
  216. package/dist/_pkgs/affine-fragment-frame-panel/body/frame-panel-body.js +2 -2
  217. package/dist/_pkgs/affine-fragment-frame-panel/header/frame-panel-header.js +2 -2
  218. package/dist/_pkgs/affine-fragment-frame-panel/header/frames-setting-menu.js +1 -1
  219. package/dist/_pkgs/affine-fragment-outline/mobile-outline-panel.js +1 -1
  220. package/dist/_pkgs/affine-gfx-brush/index.d.ts +1 -0
  221. package/dist/_pkgs/affine-gfx-brush/index.js +1 -0
  222. package/dist/_pkgs/affine-gfx-brush/renderer/dom/brush.d.ts +1 -0
  223. package/dist/_pkgs/affine-gfx-brush/renderer/dom/brush.js +11 -0
  224. package/dist/_pkgs/affine-gfx-brush/renderer/dom/highlighter.d.ts +1 -0
  225. package/dist/_pkgs/affine-gfx-brush/renderer/dom/highlighter.js +11 -0
  226. package/dist/_pkgs/affine-gfx-brush/renderer/dom/index.d.ts +2 -0
  227. package/dist/_pkgs/affine-gfx-brush/renderer/dom/index.js +2 -0
  228. package/dist/_pkgs/affine-gfx-brush/renderer/dom/shared.d.ts +14 -0
  229. package/dist/_pkgs/affine-gfx-brush/renderer/dom/shared.js +54 -0
  230. package/dist/_pkgs/affine-gfx-brush/renderer/index.d.ts +1 -0
  231. package/dist/_pkgs/affine-gfx-brush/renderer/index.js +4 -0
  232. package/dist/_pkgs/affine-gfx-brush/toolbar/components/pen/pen-tool-button.js +1 -1
  233. package/dist/_pkgs/affine-gfx-brush/view.d.ts +14 -0
  234. package/dist/_pkgs/affine-gfx-brush/view.js +29 -3
  235. package/dist/_pkgs/affine-gfx-connector/connector-manager.js +39 -16
  236. package/dist/_pkgs/affine-gfx-connector/connector-tool.d.ts +26 -1
  237. package/dist/_pkgs/affine-gfx-connector/connector-tool.js +12 -3
  238. package/dist/_pkgs/affine-gfx-connector/connector-watcher.js +1 -4
  239. package/dist/_pkgs/affine-gfx-connector/direction/direction-reveal.d.ts +123 -0
  240. package/dist/_pkgs/affine-gfx-connector/direction/direction-reveal.js +282 -0
  241. package/dist/_pkgs/affine-gfx-connector/direction/direction-widget.d.ts +65 -0
  242. package/dist/_pkgs/affine-gfx-connector/direction/direction-widget.js +395 -0
  243. package/dist/_pkgs/affine-gfx-connector/direction/index.d.ts +4 -0
  244. package/dist/_pkgs/affine-gfx-connector/direction/index.js +4 -0
  245. package/dist/_pkgs/affine-gfx-connector/direction/invert-direction.d.ts +72 -0
  246. package/dist/_pkgs/affine-gfx-connector/direction/invert-direction.js +185 -0
  247. package/dist/_pkgs/affine-gfx-connector/direction/typed-edge.d.ts +69 -0
  248. package/dist/_pkgs/affine-gfx-connector/direction/typed-edge.js +66 -0
  249. package/dist/_pkgs/affine-gfx-connector/effects.d.ts +2 -0
  250. package/dist/_pkgs/affine-gfx-connector/effects.js +2 -0
  251. package/dist/_pkgs/affine-gfx-connector/element-renderer/connector-dom/index.js +78 -41
  252. package/dist/_pkgs/affine-gfx-connector/element-renderer/index.js +1 -1
  253. package/dist/_pkgs/affine-gfx-connector/element-renderer/utils.js +1 -1
  254. package/dist/_pkgs/affine-gfx-connector/index.d.ts +1 -0
  255. package/dist/_pkgs/affine-gfx-connector/index.js +1 -0
  256. package/dist/_pkgs/affine-gfx-connector/toolbar/config.d.ts +50 -0
  257. package/dist/_pkgs/affine-gfx-connector/toolbar/config.js +68 -2
  258. package/dist/_pkgs/affine-gfx-connector/view.js +16 -0
  259. package/dist/_pkgs/affine-gfx-group/command/group-api.js +150 -62
  260. package/dist/_pkgs/affine-gfx-group/text/edgeless-group-title-editor.js +4 -1
  261. package/dist/_pkgs/affine-gfx-mindmap/adapter/markdown/index.js +1 -1
  262. package/dist/_pkgs/affine-gfx-mindmap/adapter/utils.js +1 -1
  263. package/dist/_pkgs/affine-gfx-mindmap/templates/index.js +583 -4
  264. package/dist/_pkgs/affine-gfx-mindmap/toolbar/mindmap-menu.js +23 -23
  265. package/dist/_pkgs/affine-gfx-mindmap/toolbar/mindmap-tool-button.js +5 -1
  266. package/dist/_pkgs/affine-gfx-mindmap/view/utils.js +1 -1
  267. package/dist/_pkgs/affine-gfx-note/overlay/overlay.js +1 -1
  268. package/dist/_pkgs/affine-gfx-note/toolbar/note-senior-button.js +1 -1
  269. package/dist/_pkgs/affine-gfx-pointer/tools/pan-tool.d.ts +16 -0
  270. package/dist/_pkgs/affine-gfx-pointer/tools/pan-tool.js +102 -32
  271. package/dist/_pkgs/affine-gfx-shape/commands.d.ts +2 -0
  272. package/dist/_pkgs/affine-gfx-shape/commands.js +33 -0
  273. package/dist/_pkgs/affine-gfx-shape/consts.js +1 -1
  274. package/dist/_pkgs/affine-gfx-shape/draggable/shape-draggable.js +1 -1
  275. package/dist/_pkgs/affine-gfx-shape/element-renderer/shape/polygon.js +17 -9
  276. package/dist/_pkgs/affine-gfx-shape/element-renderer/shape/utils.js +8 -3
  277. package/dist/_pkgs/affine-gfx-shape/element-renderer/shape-dom/index.js +48 -19
  278. package/dist/_pkgs/affine-gfx-shape/element-view.js +19 -12
  279. package/dist/_pkgs/affine-gfx-shape/index.d.ts +1 -1
  280. package/dist/_pkgs/affine-gfx-shape/index.js +1 -1
  281. package/dist/_pkgs/affine-gfx-shape/overlay/polygon-drawing-overlay.js +1 -1
  282. package/dist/_pkgs/affine-gfx-shape/overlay/polygon-vertex-editing-overlay.js +12 -7
  283. package/dist/_pkgs/affine-gfx-shape/overlay/shape-overlay.js +1 -1
  284. package/dist/_pkgs/affine-gfx-shape/polygon-tool.js +4 -2
  285. package/dist/_pkgs/affine-gfx-shape/shape-tool.js +1 -1
  286. package/dist/_pkgs/affine-gfx-shape/text/edgeless-shape-text-editor.d.ts +26 -0
  287. package/dist/_pkgs/affine-gfx-shape/text/edgeless-shape-text-editor.js +124 -15
  288. package/dist/_pkgs/affine-gfx-shape/view.js +3 -3
  289. package/dist/_pkgs/affine-gfx-template/builtin/other.js +66 -17
  290. package/dist/_pkgs/affine-gfx-template/toolbar/overlay-scrollbar.js +1 -1
  291. package/dist/_pkgs/affine-gfx-template/toolbar/template-panel.js +1 -1
  292. package/dist/_pkgs/affine-gfx-template/toolbar/template-tool-button.d.ts +2 -0
  293. package/dist/_pkgs/affine-gfx-template/toolbar/template-tool-button.js +18 -1
  294. package/dist/_pkgs/affine-gfx-text/edgeless-text-editor.js +9 -5
  295. package/dist/_pkgs/affine-gfx-text/toolbar/actions.js +1 -1
  296. package/dist/_pkgs/affine-inline-latex/command.js +46 -26
  297. package/dist/_pkgs/affine-inline-latex/latex-node/latex-node.d.ts +10 -0
  298. package/dist/_pkgs/affine-inline-latex/latex-node/latex-node.js +23 -0
  299. package/dist/_pkgs/affine-inline-link/command.js +1 -1
  300. package/dist/_pkgs/affine-inline-link/link-node/affine-link.js +4 -1
  301. package/dist/_pkgs/affine-inline-preset/adapters/html/html-inline.d.ts +3 -0
  302. package/dist/_pkgs/affine-inline-preset/adapters/html/html-inline.js +29 -1
  303. package/dist/_pkgs/affine-inline-preset/command/format-block.js +1 -1
  304. package/dist/_pkgs/affine-inline-preset/command/format-native.js +2 -2
  305. package/dist/_pkgs/affine-inline-preset/command/format-text.js +1 -1
  306. package/dist/_pkgs/affine-inline-preset/inline-spec.js +1 -1
  307. package/dist/_pkgs/affine-inline-reference/reference-node/reference-node.js +1 -1
  308. package/dist/_pkgs/affine-model/blocks/code/code-model.d.ts +1 -0
  309. package/dist/_pkgs/affine-model/blocks/code/code-model.js +1 -0
  310. package/dist/_pkgs/affine-model/elements/bpmn/node.d.ts +40 -7
  311. package/dist/_pkgs/affine-model/elements/bpmn/node.js +4 -2
  312. package/dist/_pkgs/affine-model/elements/bpmn/pool.d.ts +74 -17
  313. package/dist/_pkgs/affine-model/elements/bpmn/pool.js +55 -26
  314. package/dist/_pkgs/affine-model/elements/c4/board.d.ts +88 -0
  315. package/dist/_pkgs/affine-model/elements/c4/board.js +128 -0
  316. package/dist/_pkgs/affine-model/elements/c4/boundary.d.ts +63 -0
  317. package/dist/_pkgs/affine-model/elements/c4/boundary.js +134 -0
  318. package/dist/_pkgs/affine-model/elements/c4/index.d.ts +3 -0
  319. package/dist/_pkgs/affine-model/elements/c4/index.js +3 -0
  320. package/dist/_pkgs/affine-model/elements/c4/node.d.ts +97 -0
  321. package/dist/_pkgs/affine-model/elements/c4/node.js +130 -0
  322. package/dist/_pkgs/affine-model/elements/connector/connector.js +25 -1
  323. package/dist/_pkgs/affine-model/elements/context-map/context-map.d.ts +27 -0
  324. package/dist/_pkgs/affine-model/elements/context-map/context-map.js +94 -0
  325. package/dist/_pkgs/affine-model/elements/context-map/index.d.ts +1 -0
  326. package/dist/_pkgs/affine-model/elements/context-map/index.js +1 -0
  327. package/dist/_pkgs/affine-model/elements/core-domain/core-domain.d.ts +34 -17
  328. package/dist/_pkgs/affine-model/elements/core-domain/core-domain.js +28 -26
  329. package/dist/_pkgs/affine-model/elements/edgy/board.d.ts +32 -0
  330. package/dist/_pkgs/affine-model/elements/edgy/board.js +112 -0
  331. package/dist/_pkgs/affine-model/elements/edgy/facets.d.ts +12 -0
  332. package/dist/_pkgs/affine-model/elements/edgy/facets.js +25 -1
  333. package/dist/_pkgs/affine-model/elements/edgy/index.d.ts +1 -0
  334. package/dist/_pkgs/affine-model/elements/edgy/index.js +1 -0
  335. package/dist/_pkgs/affine-model/elements/event-storming/event-storming.d.ts +36 -0
  336. package/dist/_pkgs/affine-model/elements/event-storming/event-storming.js +103 -0
  337. package/dist/_pkgs/affine-model/elements/event-storming/index.d.ts +1 -0
  338. package/dist/_pkgs/affine-model/elements/event-storming/index.js +1 -0
  339. package/dist/_pkgs/affine-model/elements/framework-background/background.d.ts +42 -0
  340. package/dist/_pkgs/affine-model/elements/framework-background/background.js +42 -0
  341. package/dist/_pkgs/affine-model/elements/framework-background/index.d.ts +1 -0
  342. package/dist/_pkgs/affine-model/elements/framework-background/index.js +1 -0
  343. package/dist/_pkgs/affine-model/elements/index.d.ts +14 -1
  344. package/dist/_pkgs/affine-model/elements/index.js +4 -0
  345. package/dist/_pkgs/affine-model/elements/mindmap/mindmap.js +8 -3
  346. package/dist/_pkgs/affine-model/elements/mindmap/style.d.ts +10 -0
  347. package/dist/_pkgs/affine-model/elements/mindmap/style.js +8 -0
  348. package/dist/_pkgs/affine-model/elements/shape/api/polygon.js +2 -8
  349. package/dist/_pkgs/affine-model/elements/wardley/wardley.d.ts +21 -29
  350. package/dist/_pkgs/affine-model/elements/wardley/wardley.js +41 -48
  351. package/dist/_pkgs/affine-shared/adapters/html/block-adapter.js +1 -1
  352. package/dist/_pkgs/affine-shared/adapters/markdown/block-adapter.js +1 -1
  353. package/dist/_pkgs/affine-shared/adapters/markdown/delta-converter.d.ts +6 -1
  354. package/dist/_pkgs/affine-shared/adapters/markdown/delta-converter.js +161 -3
  355. package/dist/_pkgs/affine-shared/adapters/markdown/markdown.js +5 -1
  356. package/dist/_pkgs/affine-shared/adapters/notion-html/block-adapter.js +1 -1
  357. package/dist/_pkgs/affine-shared/adapters/notion-html/delta-converter.js +1 -1
  358. package/dist/_pkgs/affine-shared/adapters/plain-text/block-adapter.js +1 -1
  359. package/dist/_pkgs/affine-shared/adapters/plain-text/delta-converter.js +1 -1
  360. package/dist/_pkgs/affine-shared/adapters/types/delta-converter.d.ts +1 -0
  361. package/dist/_pkgs/affine-shared/adapters/utils/color.d.ts +24 -0
  362. package/dist/_pkgs/affine-shared/adapters/utils/color.js +283 -0
  363. package/dist/_pkgs/affine-shared/adapters/utils/index.d.ts +1 -0
  364. package/dist/_pkgs/affine-shared/adapters/utils/index.js +1 -0
  365. package/dist/_pkgs/affine-shared/commands/block-crud/get-selected-blocks.js +10 -2
  366. package/dist/_pkgs/affine-shared/commands/model-crud/draft-selected-models.js +1 -1
  367. package/dist/_pkgs/affine-shared/commands/selection/focus-block-end.js +1 -1
  368. package/dist/_pkgs/affine-shared/commands/selection/focus-block-start.js +1 -1
  369. package/dist/_pkgs/affine-shared/consts/index.d.ts +10 -0
  370. package/dist/_pkgs/affine-shared/consts/index.js +10 -0
  371. package/dist/_pkgs/affine-shared/services/artefact-catalogue-service.d.ts +55 -0
  372. package/dist/_pkgs/affine-shared/services/artefact-catalogue-service.js +35 -0
  373. package/dist/_pkgs/affine-shared/services/audit-service.d.ts +311 -0
  374. package/dist/_pkgs/affine-shared/services/audit-service.js +228 -0
  375. package/dist/_pkgs/affine-shared/services/command-usage-service.d.ts +31 -0
  376. package/dist/_pkgs/affine-shared/services/command-usage-service.js +109 -0
  377. package/dist/_pkgs/affine-shared/services/comment-service/block-comment-manager.js +1 -1
  378. package/dist/_pkgs/affine-shared/services/doc-display-meta-service.js +1 -1
  379. package/dist/_pkgs/affine-shared/services/edit-props-store.d.ts +7 -0
  380. package/dist/_pkgs/affine-shared/services/edit-props-store.js +11 -0
  381. package/dist/_pkgs/affine-shared/services/embed-iframe/embed-iframe-config.js +1 -1
  382. package/dist/_pkgs/affine-shared/services/font-loader/font-loader-service.d.ts +26 -1
  383. package/dist/_pkgs/affine-shared/services/font-loader/font-loader-service.js +124 -7
  384. package/dist/_pkgs/affine-shared/services/index.d.ts +7 -0
  385. package/dist/_pkgs/affine-shared/services/index.js +7 -0
  386. package/dist/_pkgs/affine-shared/services/pivot-materiality-publisher.d.ts +129 -0
  387. package/dist/_pkgs/affine-shared/services/pivot-materiality-publisher.js +312 -0
  388. package/dist/_pkgs/affine-shared/services/pivot-properties-service.d.ts +217 -0
  389. package/dist/_pkgs/affine-shared/services/pivot-properties-service.js +114 -0
  390. package/dist/_pkgs/affine-shared/services/telemetry-service/code-block.d.ts +1 -1
  391. package/dist/_pkgs/affine-shared/services/telemetry-service/lifecycle.d.ts +255 -1
  392. package/dist/_pkgs/affine-shared/services/telemetry-service/telemetry-service.d.ts +2 -2
  393. package/dist/_pkgs/affine-shared/services/telemetry-service/types.d.ts +6 -1
  394. package/dist/_pkgs/affine-shared/services/toolbar-service/action.d.ts +10 -0
  395. package/dist/_pkgs/affine-shared/services/toolbar-service/index.d.ts +1 -0
  396. package/dist/_pkgs/affine-shared/services/toolbar-service/index.js +1 -0
  397. package/dist/_pkgs/affine-shared/services/toolbar-service/layout.d.ts +134 -0
  398. package/dist/_pkgs/affine-shared/services/toolbar-service/layout.js +146 -0
  399. package/dist/_pkgs/affine-shared/services/toolbar-service/registry.d.ts +44 -0
  400. package/dist/_pkgs/affine-shared/services/toolbar-service/registry.js +161 -3
  401. package/dist/_pkgs/affine-shared/services/translation-service/index.d.ts +68 -0
  402. package/dist/_pkgs/affine-shared/services/translation-service/index.js +39 -0
  403. package/dist/_pkgs/affine-shared/services/universe-tag-defs-service.d.ts +155 -0
  404. package/dist/_pkgs/affine-shared/services/universe-tag-defs-service.js +256 -0
  405. package/dist/_pkgs/affine-shared/test-utils/affine-template.js +1 -1
  406. package/dist/_pkgs/affine-shared/utils/dom/point-to-range.d.ts +4 -0
  407. package/dist/_pkgs/affine-shared/utils/dom/point-to-range.js +58 -2
  408. package/dist/_pkgs/affine-shared/utils/dom/viewport.d.ts +60 -0
  409. package/dist/_pkgs/affine-shared/utils/dom/viewport.js +58 -0
  410. package/dist/_pkgs/affine-shared/utils/edgeless.js +1 -1
  411. package/dist/_pkgs/affine-shared/utils/file/filesys.d.ts +34 -0
  412. package/dist/_pkgs/affine-shared/utils/file/filesys.js +48 -7
  413. package/dist/_pkgs/affine-shared/utils/print-to-pdf.d.ts +21 -0
  414. package/dist/_pkgs/affine-shared/utils/print-to-pdf.js +166 -32
  415. package/dist/_pkgs/affine-shared/utils/zod-schema.d.ts +7 -0
  416. package/dist/_pkgs/affine-shared/utils/zod-schema.js +25 -1
  417. package/dist/_pkgs/affine-widget-drag-handle/utils.js +1 -1
  418. package/dist/_pkgs/affine-widget-drag-handle/watchers/edgeless-watcher.d.ts +19 -10
  419. package/dist/_pkgs/affine-widget-drag-handle/watchers/edgeless-watcher.js +122 -23
  420. package/dist/_pkgs/affine-widget-drag-handle/watchers/pointer-event-watcher.d.ts +2 -0
  421. package/dist/_pkgs/affine-widget-drag-handle/watchers/pointer-event-watcher.js +25 -4
  422. package/dist/_pkgs/affine-widget-edgeless-auto-connect/index.js +1 -1
  423. package/dist/_pkgs/affine-widget-edgeless-dragging-area/edgeless-dragging-area-rect.js +1 -1
  424. package/dist/_pkgs/affine-widget-edgeless-selected-rect/auto-complete-panel.js +10 -5
  425. package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-auto-complete.d.ts +15 -1
  426. package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-auto-complete.js +37 -32
  427. package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-element-link.js +5 -4
  428. package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-selected-rect.js +19 -9
  429. package/dist/_pkgs/affine-widget-edgeless-selected-rect/utils.d.ts +16 -2
  430. package/dist/_pkgs/affine-widget-edgeless-selected-rect/utils.js +19 -2
  431. package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/artefact-catalogue-default.d.ts +14 -0
  432. package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/artefact-catalogue-default.js +40 -0
  433. package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/artefact-catalogue-widget.d.ts +158 -0
  434. package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/artefact-catalogue-widget.js +572 -0
  435. package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/catalogue-groups.d.ts +46 -0
  436. package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/catalogue-groups.js +66 -0
  437. package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/chord-format.d.ts +13 -0
  438. package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/chord-format.js +50 -0
  439. package/dist/_pkgs/affine-widget-edgeless-toolbar/edgeless-toolbar.d.ts +6 -0
  440. package/dist/_pkgs/affine-widget-edgeless-toolbar/edgeless-toolbar.js +15 -5
  441. package/dist/_pkgs/affine-widget-edgeless-toolbar/effects.d.ts +2 -0
  442. package/dist/_pkgs/affine-widget-edgeless-toolbar/effects.js +2 -0
  443. package/dist/_pkgs/affine-widget-edgeless-toolbar/extension/index.d.ts +7 -0
  444. package/dist/_pkgs/affine-widget-edgeless-toolbar/index.d.ts +5 -0
  445. package/dist/_pkgs/affine-widget-edgeless-toolbar/index.js +5 -0
  446. package/dist/_pkgs/affine-widget-edgeless-toolbar/menu/command-menu.d.ts +57 -0
  447. package/dist/_pkgs/affine-widget-edgeless-toolbar/menu/command-menu.js +140 -0
  448. package/dist/_pkgs/affine-widget-edgeless-toolbar/view.js +9 -0
  449. package/dist/_pkgs/affine-widget-frame-title/edgeless-frame-title-editor.js +4 -1
  450. package/dist/_pkgs/affine-widget-keyboard-toolbar/icons.js +98 -98
  451. package/dist/_pkgs/affine-widget-keyboard-toolbar/keyboard-tool-panel.js +1 -1
  452. package/dist/_pkgs/affine-widget-linked-doc/import-doc/import-doc.js +1 -1
  453. package/dist/_pkgs/affine-widget-linked-doc/linked-doc-popover.js +2 -15
  454. package/dist/_pkgs/affine-widget-linked-doc/transformers/markdown.d.ts +10 -1
  455. package/dist/_pkgs/affine-widget-linked-doc/transformers/markdown.js +133 -6
  456. package/dist/_pkgs/affine-widget-linked-doc/transformers/utils.d.ts +10 -0
  457. package/dist/_pkgs/affine-widget-linked-doc/transformers/utils.js +120 -3
  458. package/dist/_pkgs/affine-widget-linked-doc/utils.d.ts +12 -0
  459. package/dist/_pkgs/affine-widget-linked-doc/utils.js +33 -0
  460. package/dist/_pkgs/affine-widget-page-dragging-area/index.js +1 -1
  461. package/dist/_pkgs/affine-widget-remote-selection/doc/doc-remote-selection.js +1 -1
  462. package/dist/_pkgs/affine-widget-remote-selection/edgeless/index.js +6 -4
  463. package/dist/_pkgs/affine-widget-slash-menu/slash-menu-popover.js +8 -4
  464. package/dist/_pkgs/affine-widget-slash-menu/utils.d.ts +9 -0
  465. package/dist/_pkgs/affine-widget-slash-menu/utils.js +24 -0
  466. package/dist/_pkgs/affine-widget-toolbar/toolbar.d.ts +6 -0
  467. package/dist/_pkgs/affine-widget-toolbar/toolbar.js +40 -8
  468. package/dist/_pkgs/affine-widget-toolbar/utils.d.ts +146 -3
  469. package/dist/_pkgs/affine-widget-toolbar/utils.js +744 -58
  470. package/dist/_pkgs/data-view/core/common/property-menu.js +3 -16
  471. package/dist/_pkgs/data-view/core/component/tags/multi-tag-select.d.ts +4 -0
  472. package/dist/_pkgs/data-view/core/component/tags/multi-tag-select.js +28 -1
  473. package/dist/_pkgs/data-view/core/data-view.d.ts +3 -1
  474. package/dist/_pkgs/data-view/core/data-view.js +25 -3
  475. package/dist/_pkgs/data-view/core/detail/field.js +2 -2
  476. package/dist/_pkgs/data-view/core/detail/selection.d.ts +4 -2
  477. package/dist/_pkgs/data-view/core/detail/selection.js +23 -7
  478. package/dist/_pkgs/data-view/core/effect.js +2 -0
  479. package/dist/_pkgs/data-view/core/filter/eval.js +36 -23
  480. package/dist/_pkgs/data-view/core/filter/filter-fn/matcher.d.ts +7 -0
  481. package/dist/_pkgs/data-view/core/filter/filter-fn/matcher.js +12 -0
  482. package/dist/_pkgs/data-view/core/group-by/compare-date-keys.d.ts +11 -0
  483. package/dist/_pkgs/data-view/core/group-by/compare-date-keys.js +55 -0
  484. package/dist/_pkgs/data-view/core/group-by/define.d.ts +6 -0
  485. package/dist/_pkgs/data-view/core/group-by/define.js +114 -0
  486. package/dist/_pkgs/data-view/core/group-by/matcher.d.ts +7 -0
  487. package/dist/_pkgs/data-view/core/group-by/matcher.js +13 -0
  488. package/dist/_pkgs/data-view/core/group-by/renderer/boolean-group.js +11 -11
  489. package/dist/_pkgs/data-view/core/group-by/renderer/date-group.d.ts +9 -0
  490. package/dist/_pkgs/data-view/core/group-by/renderer/date-group.js +97 -0
  491. package/dist/_pkgs/data-view/core/group-by/setting.js +86 -7
  492. package/dist/_pkgs/data-view/core/group-by/trait.d.ts +34 -0
  493. package/dist/_pkgs/data-view/core/group-by/trait.js +106 -10
  494. package/dist/_pkgs/data-view/core/utils/menu-title.js +17 -17
  495. package/dist/_pkgs/data-view/property-presets/multi-select/cell-renderer.js +3 -1
  496. package/dist/_pkgs/data-view/property-presets/number/define.js +2 -1
  497. package/dist/_pkgs/data-view/property-presets/select/cell-renderer.js +3 -1
  498. package/dist/_pkgs/data-view/view-presets/calendar/calendar-view-manager.d.ts +70 -0
  499. package/dist/_pkgs/data-view/view-presets/calendar/calendar-view-manager.js +449 -0
  500. package/dist/_pkgs/data-view/view-presets/calendar/define.d.ts +10 -0
  501. package/dist/_pkgs/data-view/view-presets/calendar/define.js +27 -0
  502. package/dist/_pkgs/data-view/view-presets/calendar/effect.d.ts +1 -0
  503. package/dist/_pkgs/data-view/view-presets/calendar/effect.js +4 -0
  504. package/dist/_pkgs/data-view/view-presets/calendar/index.d.ts +6 -0
  505. package/dist/_pkgs/data-view/view-presets/calendar/index.js +6 -0
  506. package/dist/_pkgs/data-view/view-presets/calendar/layout.d.ts +37 -0
  507. package/dist/_pkgs/data-view/view-presets/calendar/layout.js +138 -0
  508. package/dist/_pkgs/data-view/view-presets/calendar/pc/actions.d.ts +7 -0
  509. package/dist/_pkgs/data-view/view-presets/calendar/pc/actions.js +64 -0
  510. package/dist/_pkgs/data-view/view-presets/calendar/pc/dnd.d.ts +32 -0
  511. package/dist/_pkgs/data-view/view-presets/calendar/pc/dnd.js +159 -0
  512. package/dist/_pkgs/data-view/view-presets/calendar/pc/effect.d.ts +1 -0
  513. package/dist/_pkgs/data-view/view-presets/calendar/pc/effect.js +7 -0
  514. package/dist/_pkgs/data-view/view-presets/calendar/pc/hit-test.d.ts +1 -0
  515. package/dist/_pkgs/data-view/view-presets/calendar/pc/hit-test.js +28 -0
  516. package/dist/_pkgs/data-view/view-presets/calendar/pc/styles.d.ts +1 -0
  517. package/dist/_pkgs/data-view/view-presets/calendar/pc/styles.js +707 -0
  518. package/dist/_pkgs/data-view/view-presets/calendar/pc/view.d.ts +89 -0
  519. package/dist/_pkgs/data-view/view-presets/calendar/pc/view.js +849 -0
  520. package/dist/_pkgs/data-view/view-presets/calendar/renderer.d.ts +2 -0
  521. package/dist/_pkgs/data-view/view-presets/calendar/renderer.js +8 -0
  522. package/dist/_pkgs/data-view/view-presets/calendar/source.d.ts +8 -0
  523. package/dist/_pkgs/data-view/view-presets/calendar/source.js +3 -0
  524. package/dist/_pkgs/data-view/view-presets/calendar/types.d.ts +79 -0
  525. package/dist/_pkgs/data-view/view-presets/calendar/types.js +1 -0
  526. package/dist/_pkgs/data-view/view-presets/convert.js +28 -0
  527. package/dist/_pkgs/data-view/view-presets/effect.js +2 -0
  528. package/dist/_pkgs/data-view/view-presets/index.d.ts +2 -0
  529. package/dist/_pkgs/data-view/view-presets/index.js +3 -0
  530. package/dist/_pkgs/data-view/view-presets/kanban/kanban-view-manager.js +3 -1
  531. package/dist/_pkgs/data-view/view-presets/kanban/mobile/cell.js +2 -2
  532. package/dist/_pkgs/data-view/view-presets/table/collapsed-state.d.ts +18 -0
  533. package/dist/_pkgs/data-view/view-presets/table/collapsed-state.js +36 -0
  534. package/dist/_pkgs/data-view/view-presets/table/mobile/cell.js +2 -2
  535. package/dist/_pkgs/data-view/view-presets/table/mobile/group.d.ts +11 -0
  536. package/dist/_pkgs/data-view/view-presets/table/mobile/group.js +89 -4
  537. package/dist/_pkgs/data-view/view-presets/table/pc/cell.d.ts +3 -0
  538. package/dist/_pkgs/data-view/view-presets/table/pc/cell.js +11 -2
  539. package/dist/_pkgs/data-view/view-presets/table/pc/controller/hotkeys.d.ts +1 -0
  540. package/dist/_pkgs/data-view/view-presets/table/pc/controller/hotkeys.js +39 -33
  541. package/dist/_pkgs/data-view/view-presets/table/pc/group.d.ts +10 -0
  542. package/dist/_pkgs/data-view/view-presets/table/pc/group.js +86 -5
  543. package/dist/_pkgs/data-view/view-presets/table/pc-virtual/controller/hotkeys.d.ts +1 -0
  544. package/dist/_pkgs/data-view/view-presets/table/pc-virtual/controller/hotkeys.js +39 -33
  545. package/dist/_pkgs/data-view/view-presets/table/pc-virtual/group/top/group-title.js +18 -18
  546. package/dist/_pkgs/data-view/view-presets/table/pc-virtual/row/cell.d.ts +3 -0
  547. package/dist/_pkgs/data-view/view-presets/table/pc-virtual/row/cell.js +8 -0
  548. package/dist/_pkgs/data-view/view-presets/table/table-view-manager.js +3 -1
  549. package/dist/_pkgs/data-view/view-presets/table/utils.d.ts +3 -0
  550. package/dist/_pkgs/data-view/view-presets/table/utils.js +16 -1
  551. package/dist/_pkgs/data-view/widget-presets/tools/presets/view-options/view-options.js +3 -1
  552. package/dist/_pkgs/global/gfx/curve.js +4 -3
  553. package/dist/_pkgs/std/clipboard/clipboard.js +13 -3
  554. package/dist/_pkgs/std/clipboard/utils.d.ts +5 -0
  555. package/dist/_pkgs/std/clipboard/utils.js +10 -0
  556. package/dist/_pkgs/std/event/dispatcher.js +27 -1
  557. package/dist/_pkgs/std/event/keymap.js +16 -6
  558. package/dist/_pkgs/std/extension/command-registry.d.ts +475 -0
  559. package/dist/_pkgs/std/extension/command-registry.js +431 -0
  560. package/dist/_pkgs/std/extension/dnd/index.d.ts +1 -1
  561. package/dist/_pkgs/std/extension/index.d.ts +2 -0
  562. package/dist/_pkgs/std/extension/index.js +2 -0
  563. package/dist/_pkgs/std/extension/shortcut.js +2 -1
  564. package/dist/_pkgs/std/extension/translation-manifest.d.ts +49 -0
  565. package/dist/_pkgs/std/extension/translation-manifest.js +71 -0
  566. package/dist/_pkgs/std/gfx/grid.js +1 -1
  567. package/dist/_pkgs/std/gfx/index.d.ts +7 -3
  568. package/dist/_pkgs/std/gfx/index.js +6 -2
  569. package/dist/_pkgs/std/gfx/interactivity/gfx-view-event-handler.js +6 -1
  570. package/dist/_pkgs/std/gfx/interactivity/manager.d.ts +8 -0
  571. package/dist/_pkgs/std/gfx/interactivity/manager.js +18 -0
  572. package/dist/_pkgs/std/gfx/layer.d.ts +1 -1
  573. package/dist/_pkgs/std/gfx/layer.js +1 -2
  574. package/dist/_pkgs/std/gfx/model/surface/decorators/field.js +9 -0
  575. package/dist/_pkgs/std/gfx/model/surface/decorators/index.d.ts +2 -2
  576. package/dist/_pkgs/std/gfx/model/surface/decorators/index.js +2 -2
  577. package/dist/_pkgs/std/gfx/model/surface/decorators/local.d.ts +14 -0
  578. package/dist/_pkgs/std/gfx/model/surface/decorators/local.js +22 -0
  579. package/dist/_pkgs/std/gfx/model/surface/decorators/observer.d.ts +2 -0
  580. package/dist/_pkgs/std/gfx/model/surface/decorators/observer.js +40 -1
  581. package/dist/_pkgs/std/gfx/model/surface/element-model.d.ts +442 -0
  582. package/dist/_pkgs/std/gfx/model/surface/element-model.js +510 -25
  583. package/dist/_pkgs/std/gfx/model/surface/pivot.d.ts +48 -0
  584. package/dist/_pkgs/std/gfx/model/surface/pivot.js +34 -0
  585. package/dist/_pkgs/std/gfx/model/surface/role.d.ts +153 -0
  586. package/dist/_pkgs/std/gfx/model/surface/role.js +117 -0
  587. package/dist/_pkgs/std/gfx/model/surface/surface-model.d.ts +70 -0
  588. package/dist/_pkgs/std/gfx/model/surface/surface-model.js +305 -17
  589. package/dist/_pkgs/std/gfx/model/surface/tags.d.ts +77 -0
  590. package/dist/_pkgs/std/gfx/model/surface/tags.js +246 -0
  591. package/dist/_pkgs/std/gfx/perf.d.ts +10 -0
  592. package/dist/_pkgs/std/gfx/perf.js +30 -0
  593. package/dist/_pkgs/std/gfx/selection.js +1 -1
  594. package/dist/_pkgs/std/gfx/tool/tool-controller.d.ts +13 -0
  595. package/dist/_pkgs/std/gfx/tool/tool-controller.js +26 -0
  596. package/dist/_pkgs/std/gfx/viewport.d.ts +12 -0
  597. package/dist/_pkgs/std/gfx/viewport.js +20 -2
  598. package/dist/_pkgs/std/inline/extensions/inline-manager.js +1 -1
  599. package/dist/_pkgs/std/inline/extensions/markdown-matcher.js +1 -1
  600. package/dist/_pkgs/std/inline/services/event.d.ts +2 -0
  601. package/dist/_pkgs/std/inline/services/event.js +96 -21
  602. package/dist/_pkgs/std/utils/layer.js +2 -6
  603. package/dist/_pkgs/std/utils/tree.d.ts +14 -0
  604. package/dist/_pkgs/std/utils/tree.js +59 -8
  605. package/dist/_pkgs/std/view/element/gfx-block-component.js +23 -13
  606. package/dist/_pkgs/store/extension/workspace/workspace-meta.d.ts +10 -0
  607. package/dist/_pkgs/store/model/block/flat-sync-controller.js +2 -12
  608. package/dist/_pkgs/store/model/store/crud.js +10 -4
  609. package/dist/_pkgs/store/reactive/flat-native-y/index.d.ts +1 -1
  610. package/dist/_pkgs/store/reactive/flat-native-y/index.js +24 -2
  611. package/dist/commands.d.ts +58 -0
  612. package/dist/commands.js +66 -0
  613. package/dist/extensions/command-telemetry.d.ts +21 -0
  614. package/dist/extensions/command-telemetry.js +89 -0
  615. package/dist/extensions/command-usage.d.ts +23 -0
  616. package/dist/extensions/command-usage.js +37 -0
  617. package/dist/extensions/store.d.ts +9 -4
  618. package/dist/extensions/store.js +27 -24
  619. package/dist/extensions/view.d.ts +9 -4
  620. package/dist/extensions/view.js +35 -8
  621. package/dist/flags.d.ts +98 -21
  622. package/dist/flags.js +103 -22
  623. package/dist/frameworks.d.ts +45 -0
  624. package/dist/frameworks.js +186 -0
  625. package/dist/schemas.d.ts +8 -5
  626. package/dist/schemas.js +28 -32
  627. package/dist/shortcuts.d.ts +16 -16
  628. package/dist/shortcuts.js +8 -36
  629. package/dist/translations.d.ts +56 -0
  630. package/dist/translations.js +200 -0
  631. package/package.json +16 -4
  632. package/dist/_pkgs/affine-block-root/keyboard/shortcuts.d.ts +0 -8
  633. package/dist/_pkgs/affine-block-root/keyboard/shortcuts.js +0 -48
  634. package/dist/_pkgs/affine-gfx-shape/shortcuts.d.ts +0 -6
  635. package/dist/_pkgs/affine-gfx-shape/shortcuts.js +0 -28
  636. package/dist/_pkgs/data-view/core/utils/cache.d.ts +0 -5
  637. package/dist/_pkgs/data-view/core/utils/cache.js +0 -28
@@ -0,0 +1,69 @@
1
+ import { ConnectorElementModel } from '../../affine-model/index.js';
2
+ import type { BlockStdScope } from '../../std/index.js';
3
+ import type { EdgeDirectionDef, RoleDef, RoleDefs } from '../../std/gfx/index.js';
4
+ /**
5
+ * "Is this connector a TYPED EDGE, and if so what does it say?" — the one
6
+ * question `docs/adr/0010` turns on.
7
+ *
8
+ * For an element whose `role` resolves to a `RoleDef` with `kind: 'edge'`, the
9
+ * persisted pair `source → target` IS the relation's orientation and part of
10
+ * the document's meaning. For a connector with no role — the generalist
11
+ * connector, the market glyph's wiring, an EDGY decoration — the two ends stay
12
+ * what they always were: the first and last point of a path, carrying no claim.
13
+ *
14
+ * Everything M1, M2 and M3 do is gated on this, and none of them knows a
15
+ * framework's name: the vocabulary is registered by whoever owns it
16
+ * (`RoleVocabularyExtension`), and this file only reads `kind` and the verb.
17
+ */
18
+ /** A connector, plus the declaration that makes its direction mean something. */
19
+ export interface TypedEdge {
20
+ model: ConnectorElementModel;
21
+ role: RoleDef;
22
+ /** The verb and the gesture hint, when the role declares them. */
23
+ direction?: EdgeDirectionDef;
24
+ }
25
+ /** Every role vocabulary registered in this editor assembly. */
26
+ export declare function roleVocabularies(std: BlockStdScope): readonly RoleDefs[];
27
+ /**
28
+ * `element` read as a typed edge, or `null`.
29
+ *
30
+ * Three ways to be `null`, and all three are deliberate:
31
+ *
32
+ * - it is not a connector (the reveal is about edges, not about nodes);
33
+ * - it carries no role, or one no loaded framework declares — nothing is
34
+ * claimed about its ends and nothing is shown;
35
+ * - it carries a role of `kind: 'node'`, which on a connector is a mistake
36
+ * somebody's data made and is treated as neutral rather than guessed at.
37
+ */
38
+ export declare function asTypedEdge(vocabularies: readonly RoleDefs[], element: unknown): TypedEdge | null;
39
+ /**
40
+ * Whether both ends of the edge are actually BOUND to an element.
41
+ *
42
+ * The guard `docs/adr/0010` asks for by name: an edge with a free endpoint
43
+ * relates nothing to nothing. Releasing the link tool over empty canvas
44
+ * produces one at any time, so this is not an edge case — it is a state the
45
+ * product reaches on the first misfire, and the honest answer there is silence.
46
+ * No chevron, no verb, and no W4 verdict either (the rule family applies the
47
+ * same test).
48
+ */
49
+ export declare function edgeIsBound(model: ConnectorElementModel): boolean;
50
+ /** A word to say, and the fallback to use when the host has no catalogue. */
51
+ export interface EdgeVerb {
52
+ key: string;
53
+ fallback?: string;
54
+ }
55
+ /**
56
+ * The ONE word a revealed edge is labelled with — the role's verb.
57
+ *
58
+ * Only the verb, since the PO recette of 02/08/2026: the label used to carry
59
+ * the whole sentence, `Kettle depends on Electricity`, and a sentence laid on a
60
+ * short link is longer than the link, so it covered the two components it was
61
+ * naming. The names are already on the canvas at both ends of the line; what
62
+ * the drawing does not say is what the line MEANS, and that is the verb.
63
+ *
64
+ * The role's LABEL when it declares no verb, because the label is the only mark
65
+ * left and an unlabelled arrow says which way without ever saying what. `null`
66
+ * when the role declares neither, which is the one case where the library
67
+ * genuinely has nothing to add.
68
+ */
69
+ export declare function edgeVerbOf(edge: TypedEdge): EdgeVerb | null;
@@ -0,0 +1,66 @@
1
+ import { ConnectorElementModel } from '../../affine-model/index.js';
2
+ import { findRoleDef, RoleVocabularyIdentifier } from '../../std/gfx/index.js';
3
+ /** Every role vocabulary registered in this editor assembly. */
4
+ export function roleVocabularies(std) {
5
+ return [...std.provider.getAll(RoleVocabularyIdentifier).values()];
6
+ }
7
+ /**
8
+ * `element` read as a typed edge, or `null`.
9
+ *
10
+ * Three ways to be `null`, and all three are deliberate:
11
+ *
12
+ * - it is not a connector (the reveal is about edges, not about nodes);
13
+ * - it carries no role, or one no loaded framework declares — nothing is
14
+ * claimed about its ends and nothing is shown;
15
+ * - it carries a role of `kind: 'node'`, which on a connector is a mistake
16
+ * somebody's data made and is treated as neutral rather than guessed at.
17
+ */
18
+ export function asTypedEdge(vocabularies, element) {
19
+ if (!(element instanceof ConnectorElementModel))
20
+ return null;
21
+ const role = findRoleDef(vocabularies, element.role);
22
+ if (role === undefined || role.kind !== 'edge')
23
+ return null;
24
+ return role.direction
25
+ ? { model: element, role, direction: role.direction }
26
+ : { model: element, role };
27
+ }
28
+ /**
29
+ * Whether both ends of the edge are actually BOUND to an element.
30
+ *
31
+ * The guard `docs/adr/0010` asks for by name: an edge with a free endpoint
32
+ * relates nothing to nothing. Releasing the link tool over empty canvas
33
+ * produces one at any time, so this is not an edge case — it is a state the
34
+ * product reaches on the first misfire, and the honest answer there is silence.
35
+ * No chevron, no verb, and no W4 verdict either (the rule family applies the
36
+ * same test).
37
+ */
38
+ export function edgeIsBound(model) {
39
+ return Boolean(model.source?.id) && Boolean(model.target?.id);
40
+ }
41
+ /**
42
+ * The ONE word a revealed edge is labelled with — the role's verb.
43
+ *
44
+ * Only the verb, since the PO recette of 02/08/2026: the label used to carry
45
+ * the whole sentence, `Kettle depends on Electricity`, and a sentence laid on a
46
+ * short link is longer than the link, so it covered the two components it was
47
+ * naming. The names are already on the canvas at both ends of the line; what
48
+ * the drawing does not say is what the line MEANS, and that is the verb.
49
+ *
50
+ * The role's LABEL when it declares no verb, because the label is the only mark
51
+ * left and an unlabelled arrow says which way without ever saying what. `null`
52
+ * when the role declares neither, which is the one case where the library
53
+ * genuinely has nothing to add.
54
+ */
55
+ export function edgeVerbOf(edge) {
56
+ const verb = edge.direction
57
+ ? { key: edge.direction.verbKey, fallback: edge.direction.verbFallback }
58
+ : edge.role.labelKey !== undefined
59
+ ? { key: edge.role.labelKey, fallback: edge.role.labelFallback }
60
+ : null;
61
+ if (verb === null)
62
+ return null;
63
+ return verb.fallback === undefined
64
+ ? { key: verb.key }
65
+ : { key: verb.key, fallback: verb.fallback };
66
+ }
@@ -1,4 +1,5 @@
1
1
  import { EdgelessConnectorHandle } from './components/connector-handle.js';
2
+ import { EdgeDirectionWidget } from './direction/direction-widget.js';
2
3
  import { EdgelessConnectorLabelEditor } from './text/edgeless-connector-label-editor.js';
3
4
  import { EdgelessConnectorMenu } from './toolbar/connector-menu.js';
4
5
  import { EdgelessConnectorToolButton } from './toolbar/connector-tool-button.js';
@@ -9,5 +10,6 @@ declare global {
9
10
  'edgeless-connector-menu': EdgelessConnectorMenu;
10
11
  'edgeless-connector-label-editor': EdgelessConnectorLabelEditor;
11
12
  'edgeless-connector-handle': EdgelessConnectorHandle;
13
+ 'affine-edge-direction-widget': EdgeDirectionWidget;
12
14
  }
13
15
  }
@@ -1,4 +1,5 @@
1
1
  import { EdgelessConnectorHandle } from './components/connector-handle.js';
2
+ import { EDGE_DIRECTION_WIDGET, EdgeDirectionWidget, } from './direction/direction-widget.js';
2
3
  import { EdgelessConnectorLabelEditor } from './text/edgeless-connector-label-editor.js';
3
4
  import { EdgelessConnectorMenu } from './toolbar/connector-menu.js';
4
5
  import { EdgelessConnectorToolButton } from './toolbar/connector-tool-button.js';
@@ -7,4 +8,5 @@ export function effects() {
7
8
  customElements.define('edgeless-connector-menu', EdgelessConnectorMenu);
8
9
  customElements.define('edgeless-connector-label-editor', EdgelessConnectorLabelEditor);
9
10
  customElements.define('edgeless-connector-handle', EdgelessConnectorHandle);
11
+ customElements.define(EDGE_DIRECTION_WIDGET, EdgeDirectionWidget);
10
12
  }
@@ -2,6 +2,13 @@ import { ConnectorMode, DefaultTheme, } from '../../../affine-model/index.js';
2
2
  import { PointLocation, SVGPathBuilder } from '../../../global/gfx/index.js';
3
3
  import { isConnectorWithLabel } from '../../connector-manager.js';
4
4
  import { DEFAULT_ARROW_SIZE } from '../utils.js';
5
+ const SVG_NS = 'http://www.w3.org/2000/svg';
6
+ /**
7
+ * The nodes a connector host already owns, kept across renders. Rebuilding the
8
+ * whole `<svg>` subtree on every frame allocated one element per connector per
9
+ * pan, zoom or drag; the attributes are cheap to overwrite in place.
10
+ */
11
+ const retainedConnectorDom = new WeakMap();
5
12
  function calculatePathBounds(path) {
6
13
  if (path.length === 0) {
7
14
  return { minX: 0, minY: 0, maxX: 0, maxY: 0 };
@@ -40,7 +47,7 @@ function createConnectorPath(points, mode) {
40
47
  return pathBuilder.build();
41
48
  }
42
49
  function createArrowMarker(id, style, color, strokeWidth, isStart = false) {
43
- const marker = document.createElementNS('http://www.w3.org/2000/svg', 'marker');
50
+ const marker = document.createElementNS(SVG_NS, 'marker');
44
51
  const size = DEFAULT_ARROW_SIZE * (strokeWidth / 2);
45
52
  marker.id = id;
46
53
  marker.setAttribute('viewBox', '0 0 20 20');
@@ -52,7 +59,7 @@ function createArrowMarker(id, style, color, strokeWidth, isStart = false) {
52
59
  marker.setAttribute('markerUnits', 'strokeWidth');
53
60
  switch (style) {
54
61
  case 'Arrow': {
55
- const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');
62
+ const path = document.createElementNS(SVG_NS, 'path');
56
63
  path.setAttribute('d', isStart ? 'M 20 5 L 10 10 L 20 15 Z' : 'M 0 5 L 10 10 L 0 15 Z');
57
64
  path.setAttribute('fill', color);
58
65
  path.setAttribute('stroke', color);
@@ -60,7 +67,7 @@ function createArrowMarker(id, style, color, strokeWidth, isStart = false) {
60
67
  break;
61
68
  }
62
69
  case 'Triangle': {
63
- const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');
70
+ const path = document.createElementNS(SVG_NS, 'path');
64
71
  path.setAttribute('d', isStart ? 'M 20 7 L 12 10 L 20 13 Z' : 'M 0 7 L 8 10 L 0 13 Z');
65
72
  path.setAttribute('fill', color);
66
73
  path.setAttribute('stroke', color);
@@ -68,7 +75,7 @@ function createArrowMarker(id, style, color, strokeWidth, isStart = false) {
68
75
  break;
69
76
  }
70
77
  case 'Circle': {
71
- const circle = document.createElementNS('http://www.w3.org/2000/svg', 'circle');
78
+ const circle = document.createElementNS(SVG_NS, 'circle');
72
79
  circle.setAttribute('cx', '10');
73
80
  circle.setAttribute('cy', '10');
74
81
  circle.setAttribute('r', '4');
@@ -78,7 +85,7 @@ function createArrowMarker(id, style, color, strokeWidth, isStart = false) {
78
85
  break;
79
86
  }
80
87
  case 'Diamond': {
81
- const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');
88
+ const path = document.createElementNS(SVG_NS, 'path');
82
89
  path.setAttribute('d', 'M 10 6 L 14 10 L 10 14 L 6 10 Z');
83
90
  path.setAttribute('fill', color);
84
91
  path.setAttribute('stroke', color);
@@ -88,14 +95,53 @@ function createArrowMarker(id, style, color, strokeWidth, isStart = false) {
88
95
  }
89
96
  return marker;
90
97
  }
91
- function renderConnectorLabel(model, container, renderer, zoom) {
98
+ function clearRetainedConnectorDom(element) {
99
+ retainedConnectorDom.delete(element);
100
+ element.replaceChildren();
101
+ }
102
+ function getRetainedConnectorDom(element) {
103
+ const existing = retainedConnectorDom.get(element);
104
+ if (existing) {
105
+ return existing;
106
+ }
107
+ const svg = document.createElementNS(SVG_NS, 'svg');
108
+ svg.style.position = 'absolute';
109
+ svg.style.overflow = 'visible';
110
+ svg.style.pointerEvents = 'none';
111
+ const defs = document.createElementNS(SVG_NS, 'defs');
112
+ const path = document.createElementNS(SVG_NS, 'path');
113
+ path.setAttribute('fill', 'none');
114
+ path.setAttribute('stroke-linecap', 'round');
115
+ path.setAttribute('stroke-linejoin', 'round');
116
+ svg.append(defs, path);
117
+ element.replaceChildren(svg);
118
+ const retained = {
119
+ svg,
120
+ defs,
121
+ path,
122
+ label: null,
123
+ };
124
+ retainedConnectorDom.set(element, retained);
125
+ return retained;
126
+ }
127
+ function getOrCreateLabelElement(retained) {
128
+ if (retained.label) {
129
+ return retained.label;
130
+ }
131
+ const label = document.createElement('div');
132
+ retained.svg.insertAdjacentElement('afterend', label);
133
+ retained.label = label;
134
+ return label;
135
+ }
136
+ function renderConnectorLabel(model, retained, renderer, zoom) {
92
137
  if (!isConnectorWithLabel(model) || !model.labelXYWH) {
138
+ retained.label?.remove();
139
+ retained.label = null;
93
140
  return;
94
141
  }
95
142
  const [lx, ly, lw, lh] = model.labelXYWH;
96
143
  const { labelStyle: { color, fontSize, fontWeight, fontStyle, fontFamily, textAlign, }, } = model;
97
- // Create label element
98
- const labelElement = document.createElement('div');
144
+ const labelElement = getOrCreateLabelElement(retained);
99
145
  labelElement.style.position = 'absolute';
100
146
  labelElement.style.left = `${lx * zoom}px`;
101
147
  labelElement.style.top = `${ly * zoom}px`;
@@ -122,10 +168,7 @@ function renderConnectorLabel(model, container, renderer, zoom) {
122
168
  labelElement.style.whiteSpace = 'pre-wrap';
123
169
  labelElement.style.wordWrap = 'break-word';
124
170
  // Add text content
125
- if (model.text) {
126
- labelElement.textContent = model.text.toString();
127
- }
128
- container.append(labelElement);
171
+ labelElement.textContent = model.text ? model.text.toString() : '';
129
172
  }
130
173
  /**
131
174
  * Renders a ConnectorElementModel to a given HTMLElement using DOM/SVG.
@@ -138,12 +181,12 @@ function renderConnectorLabel(model, container, renderer, zoom) {
138
181
  export const connectorDomRenderer = (model, element, renderer) => {
139
182
  const { zoom } = renderer.viewport;
140
183
  const { mode, path: points, strokeStyle, frontEndpointStyle, rearEndpointStyle, strokeWidth, stroke, } = model;
141
- // Clear previous content
142
- element.innerHTML = '';
143
184
  // Early return if no path points
144
185
  if (!points || points.length < 2) {
186
+ clearRetainedConnectorDom(element);
145
187
  return;
146
188
  }
189
+ const retained = getRetainedConnectorDom(element);
147
190
  // Calculate bounds for the SVG viewBox
148
191
  const pathBounds = calculatePathBounds(points);
149
192
  const padding = Math.max(strokeWidth * 2, 20); // Add padding for arrows
@@ -151,8 +194,7 @@ export const connectorDomRenderer = (model, element, renderer) => {
151
194
  const svgHeight = (pathBounds.maxY - pathBounds.minY + padding * 2) * zoom;
152
195
  const offsetX = pathBounds.minX - padding;
153
196
  const offsetY = pathBounds.minY - padding;
154
- // Create SVG element
155
- const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
197
+ const { defs, path, svg } = retained;
156
198
  svg.style.position = 'absolute';
157
199
  svg.style.left = `${offsetX * zoom}px`;
158
200
  svg.style.top = `${offsetY * zoom}px`;
@@ -161,25 +203,20 @@ export const connectorDomRenderer = (model, element, renderer) => {
161
203
  svg.style.overflow = 'visible';
162
204
  svg.style.pointerEvents = 'none';
163
205
  svg.setAttribute('viewBox', `0 0 ${svgWidth / zoom} ${svgHeight / zoom}`);
164
- // Create defs for markers
165
- const defs = document.createElementNS('http://www.w3.org/2000/svg', 'defs');
166
- svg.append(defs);
167
206
  const strokeColor = renderer.getColorValue(stroke, DefaultTheme.connectorColor, true);
168
207
  // Create markers for endpoints
208
+ const markers = [];
169
209
  let startMarkerId = '';
170
210
  let endMarkerId = '';
171
211
  if (frontEndpointStyle !== 'None') {
172
212
  startMarkerId = `start-marker-${model.id}`;
173
- const startMarker = createArrowMarker(startMarkerId, frontEndpointStyle, strokeColor, strokeWidth, true);
174
- defs.append(startMarker);
213
+ markers.push(createArrowMarker(startMarkerId, frontEndpointStyle, strokeColor, strokeWidth, true));
175
214
  }
176
215
  if (rearEndpointStyle !== 'None') {
177
216
  endMarkerId = `end-marker-${model.id}`;
178
- const endMarker = createArrowMarker(endMarkerId, rearEndpointStyle, strokeColor, strokeWidth, false);
179
- defs.append(endMarker);
217
+ markers.push(createArrowMarker(endMarkerId, rearEndpointStyle, strokeColor, strokeWidth, false));
180
218
  }
181
- // Create path element
182
- const pathElement = document.createElementNS('http://www.w3.org/2000/svg', 'path');
219
+ defs.replaceChildren(...markers);
183
220
  // Adjust points relative to the SVG coordinate system
184
221
  const adjustedPoints = points.map(point => {
185
222
  const adjustedPoint = new PointLocation([
@@ -201,32 +238,32 @@ export const connectorDomRenderer = (model, element, renderer) => {
201
238
  return adjustedPoint;
202
239
  });
203
240
  const pathData = createConnectorPath(adjustedPoints, mode);
204
- pathElement.setAttribute('d', pathData);
205
- pathElement.setAttribute('stroke', strokeColor);
206
- pathElement.setAttribute('stroke-width', String(strokeWidth));
207
- pathElement.setAttribute('fill', 'none');
208
- pathElement.setAttribute('stroke-linecap', 'round');
209
- pathElement.setAttribute('stroke-linejoin', 'round');
210
- // Apply stroke style
241
+ path.setAttribute('d', pathData);
242
+ path.setAttribute('stroke', strokeColor);
243
+ path.setAttribute('stroke-width', String(strokeWidth));
211
244
  if (strokeStyle === 'dash') {
212
- pathElement.setAttribute('stroke-dasharray', '12,12');
245
+ path.setAttribute('stroke-dasharray', '12,12');
246
+ }
247
+ else {
248
+ path.removeAttribute('stroke-dasharray');
213
249
  }
214
- // Apply markers
215
250
  if (startMarkerId) {
216
- pathElement.setAttribute('marker-start', `url(#${startMarkerId})`);
251
+ path.setAttribute('marker-start', `url(#${startMarkerId})`);
252
+ }
253
+ else {
254
+ path.removeAttribute('marker-start');
217
255
  }
218
256
  if (endMarkerId) {
219
- pathElement.setAttribute('marker-end', `url(#${endMarkerId})`);
257
+ path.setAttribute('marker-end', `url(#${endMarkerId})`);
258
+ }
259
+ else {
260
+ path.removeAttribute('marker-end');
220
261
  }
221
- svg.append(pathElement);
222
- element.append(svg);
223
262
  // Set element size and position
224
263
  element.style.width = `${model.w * zoom}px`;
225
264
  element.style.height = `${model.h * zoom}px`;
226
265
  element.style.overflow = 'visible';
227
266
  element.style.pointerEvents = 'none';
228
- // Set z-index for layering
229
- element.style.zIndex = renderer.layerManager.getZIndex(model).toString();
230
267
  // Render label if present
231
- renderConnectorLabel(model, element, renderer, zoom);
268
+ renderConnectorLabel(model, retained, renderer, zoom);
232
269
  };
@@ -1,7 +1,7 @@
1
1
  import { ElementRendererExtension, } from '../../affine-block-surface/index.js';
2
2
  import { getFontString, getLineHeight, getTextWidth, isRTL, wrapTextDeltas, } from '../../affine-gfx-text/index.js';
3
3
  import { ConnectorMode, DefaultTheme, } from '../../affine-model/index.js';
4
- import { getBezierParameters, } from '../../global/gfx/index.js';
4
+ import { getBezierParameters } from '../../global/gfx/index.js';
5
5
  import { deltaInsertsToChunks } from '../../std/inline/index.js';
6
6
  import { isConnectorWithLabel } from '../connector-manager.js';
7
7
  import { DEFAULT_ARROW_SIZE, getArrowOptions, renderArrow, renderCircle, renderDiamond, renderTriangle, } from './utils.js';
@@ -1,5 +1,5 @@
1
1
  import { ConnectorMode, } from '../../affine-model/index.js';
2
- import { getBezierParameters, getBezierTangent, Vec, } from '../../global/gfx/index.js';
2
+ import { getBezierParameters, getBezierTangent, Vec } from '../../global/gfx/index.js';
3
3
  export const DEFAULT_ARROW_SIZE = 15;
4
4
  export function getArrowPoints(points, size = 10, mode, bezierParameters, endPoint = 'Rear', radians = Math.PI / 4) {
5
5
  const anchorPoint = getPointWithTangent(points, mode, endPoint, bezierParameters);
@@ -1,6 +1,7 @@
1
1
  export * from './adapter/index.js';
2
2
  export * from './connector-manager.js';
3
3
  export * from './connector-tool.js';
4
+ export * from './direction/index.js';
4
5
  export * from './element-renderer/index.js';
5
6
  export { ConnectorDomRendererExtension } from './element-renderer/connector-dom.js';
6
7
  export * from './element-transform/index.js';
@@ -1,6 +1,7 @@
1
1
  export * from './adapter/index.js';
2
2
  export * from './connector-manager.js';
3
3
  export * from './connector-tool.js';
4
+ export * from './direction/index.js';
4
5
  export * from './element-renderer/index.js';
5
6
  export { ConnectorDomRendererExtension } from './element-renderer/connector-dom.js';
6
7
  export * from './element-transform/index.js';
@@ -16,10 +16,60 @@ export declare const connectorToolbarConfig: {
16
16
  readonly id: "b.flip-direction";
17
17
  readonly icon: import("lit-html").TemplateResult<1>;
18
18
  readonly tooltip: "Flip direction";
19
+ /**
20
+ * Hidden for a TYPED EDGE (`docs/adr/0010` M3).
21
+ *
22
+ * This entry swaps the two endpoint STYLES and does not touch
23
+ * `source`/`target`. On a generalist connector that is honest — it is
24
+ * an arrowhead menu. On an edge whose persisted direction is the
25
+ * relation's orientation it would move the only visible sign of that
26
+ * relation while leaving the relation intact: the picture and the
27
+ * data would then disagree. Such an edge gets `d.invert-direction`
28
+ * instead, which moves both.
29
+ *
30
+ * Not gated on any framework flag: the vocabulary that answers "is
31
+ * this a typed edge" is registered by the always-on render extension,
32
+ * so a Wardley link stays protected on a board whose Wardley tooling
33
+ * is switched off.
34
+ *
35
+ * `some`, so a MIXED selection hides it too: one swap applied to
36
+ * every selected connector would still lie about the typed one, and
37
+ * `b.invert-direction` appears in its place and acts on that half.
38
+ * A typed edge with a free end also keeps it hidden — the entry is
39
+ * hidden by what the element IS, never by what it happens to bind.
40
+ */
41
+ readonly when: (ctx: ToolbarContext) => boolean;
19
42
  readonly run: (ctx: ToolbarContext) => void;
20
43
  }, {
21
44
  readonly id: "c.end-point-style";
22
45
  readonly content: (ctx: ToolbarContext) => import("lit-html").TemplateResult<1> | null;
46
+ }, {
47
+ /**
48
+ * **Reverse direction** — M3 of `docs/adr/0010`, and the only
49
+ * supported inversion of a typed edge.
50
+ *
51
+ * It sits where `b.flip-direction` would have been, appears only when
52
+ * every selected connector is a typed edge, and runs the registered
53
+ * command rather than a private copy of it — so the contextual
54
+ * toolbar, the palette, Settings › Shortcuts and the agent all reach
55
+ * the same behaviour and the same single telemetry emission.
56
+ */
57
+ readonly id: "b.invert-direction";
58
+ readonly icon: import("lit-html").TemplateResult<1>;
59
+ readonly tooltip: "Reverse direction";
60
+ /**
61
+ * Shown as soon as the selection holds ONE reversible typed edge, and
62
+ * it then acts on the typed edges of that selection and on nothing
63
+ * else — `invertibleEdges` is the same filter on both sides.
64
+ *
65
+ * `some`, not `every`, on purpose: a selection mixing a Wardley link
66
+ * with a plain arrow used to show NEITHER this entry (not every model
67
+ * is typed) nor `b.flip-direction` (some model is), so lassoing two
68
+ * connectors silently took the direction affordance away. A partial
69
+ * gesture that says what it did beats a menu that vanishes.
70
+ */
71
+ readonly when: (ctx: ToolbarContext) => boolean;
72
+ readonly run: (ctx: ToolbarContext) => void;
23
73
  }, {
24
74
  readonly id: "d.connector-shape";
25
75
  readonly content: (ctx: ToolbarContext) => import("lit-html").TemplateResult<1> | null;
@@ -1,16 +1,18 @@
1
1
  import { EdgelessCRUDIdentifier } from '../../affine-block-surface/index.js';
2
2
  import { packColor, } from '../../affine-components/color-picker/index.js';
3
- import { createTextActions, normalizeTextBound, } from '../../affine-gfx-text/index.js';
3
+ import { createTextActions, normalizeTextBound } from '../../affine-gfx-text/index.js';
4
4
  import { ConnectorElementModel, ConnectorMode, DEFAULT_FRONT_ENDPOINT_STYLE, DEFAULT_REAR_ENDPOINT_STYLE, DefaultTheme, LineWidth, PointStyle, resolveColor, StrokeStyle, } from '../../affine-model/index.js';
5
5
  import { ToolbarModuleExtension, } from '../../affine-shared/services/index.js';
6
6
  import { getMostCommonResolvedValue, getMostCommonValue, } from '../../affine-shared/utils/index.js';
7
7
  import { getRootBlock, LINE_STYLE_LIST, renderMenu, } from '../../affine-widget-edgeless-toolbar/index.js';
8
8
  import { Bound } from '../../global/gfx/index.js';
9
9
  import { AddTextIcon, ConnectorCIcon, ConnectorEIcon, ConnectorLIcon, EndPointArrowIcon, EndPointCircleIcon, EndPointDiamondIcon, EndPointTriangleIcon, FlipDirectionIcon, StartPointArrowIcon, StartPointCircleIcon, StartPointDiamondIcon, StartPointIcon, StartPointTriangleIcon, } from '@blocksuite/icons/lit';
10
- import { BlockFlavourIdentifier } from '../../std/index.js';
10
+ import { BlockFlavourIdentifier, getRegisteredCommands, runCommand, } from '../../std/index.js';
11
11
  import { html } from 'lit';
12
12
  import { styleMap } from 'lit/directives/style-map.js';
13
13
  import { isConnectorWithLabel } from '../connector-manager.js';
14
+ import { INVERT_EDGE_DIRECTION } from '../direction/invert-direction.js';
15
+ import { asTypedEdge, edgeIsBound, roleVocabularies, } from '../direction/typed-edge.js';
14
16
  import { mountConnectorLabelEditor } from '../text/index.js';
15
17
  const FRONT_ENDPOINT_STYLE_LIST = [
16
18
  {
@@ -200,6 +202,31 @@ export const connectorToolbarConfig = {
200
202
  id: 'b.flip-direction',
201
203
  icon: FlipDirectionIcon(),
202
204
  tooltip: 'Flip direction',
205
+ /**
206
+ * Hidden for a TYPED EDGE (`docs/adr/0010` M3).
207
+ *
208
+ * This entry swaps the two endpoint STYLES and does not touch
209
+ * `source`/`target`. On a generalist connector that is honest — it is
210
+ * an arrowhead menu. On an edge whose persisted direction is the
211
+ * relation's orientation it would move the only visible sign of that
212
+ * relation while leaving the relation intact: the picture and the
213
+ * data would then disagree. Such an edge gets `d.invert-direction`
214
+ * instead, which moves both.
215
+ *
216
+ * Not gated on any framework flag: the vocabulary that answers "is
217
+ * this a typed edge" is registered by the always-on render extension,
218
+ * so a Wardley link stays protected on a board whose Wardley tooling
219
+ * is switched off.
220
+ *
221
+ * `some`, so a MIXED selection hides it too: one swap applied to
222
+ * every selected connector would still lie about the typed one, and
223
+ * `b.invert-direction` appears in its place and acts on that half.
224
+ * A typed edge with a free end also keeps it hidden — the entry is
225
+ * hidden by what the element IS, never by what it happens to bind.
226
+ */
227
+ when: ctx => !ctx
228
+ .getSurfaceModelsByType(ConnectorElementModel)
229
+ .some(model => asTypedEdge(roleVocabularies(ctx.std), model)),
203
230
  run(ctx) {
204
231
  const models = ctx.getSurfaceModelsByType(ConnectorElementModel);
205
232
  if (!models.length)
@@ -237,6 +264,45 @@ export const connectorToolbarConfig = {
237
264
  });
238
265
  },
239
266
  },
267
+ {
268
+ /**
269
+ * **Reverse direction** — M3 of `docs/adr/0010`, and the only
270
+ * supported inversion of a typed edge.
271
+ *
272
+ * It sits where `b.flip-direction` would have been, appears only when
273
+ * every selected connector is a typed edge, and runs the registered
274
+ * command rather than a private copy of it — so the contextual
275
+ * toolbar, the palette, Settings › Shortcuts and the agent all reach
276
+ * the same behaviour and the same single telemetry emission.
277
+ */
278
+ id: 'b.invert-direction',
279
+ icon: FlipDirectionIcon(),
280
+ tooltip: 'Reverse direction',
281
+ /**
282
+ * Shown as soon as the selection holds ONE reversible typed edge, and
283
+ * it then acts on the typed edges of that selection and on nothing
284
+ * else — `invertibleEdges` is the same filter on both sides.
285
+ *
286
+ * `some`, not `every`, on purpose: a selection mixing a Wardley link
287
+ * with a plain arrow used to show NEITHER this entry (not every model
288
+ * is typed) nor `b.flip-direction` (some model is), so lassoing two
289
+ * connectors silently took the direction affordance away. A partial
290
+ * gesture that says what it did beats a menu that vanishes.
291
+ */
292
+ when: ctx => ctx
293
+ .getSurfaceModelsByType(ConnectorElementModel)
294
+ .some(model => asTypedEdge(roleVocabularies(ctx.std), model) !== null &&
295
+ edgeIsBound(model)),
296
+ run(ctx) {
297
+ const command = getRegisteredCommands(ctx.std).find(candidate => candidate.id === INVERT_EDGE_DIRECTION);
298
+ if (!command)
299
+ return;
300
+ runCommand(ctx.std, command, {
301
+ surface: 'contextual-toolbar',
302
+ source: 'toolbar:general',
303
+ });
304
+ },
305
+ },
240
306
  {
241
307
  id: 'd.connector-shape',
242
308
  content(ctx) {
@@ -1,6 +1,8 @@
1
1
  import { ViewExtensionProvider, } from '../affine-ext-loader/index.js';
2
+ import { CommandExtension } from '../std/index.js';
2
3
  import { ConnectionOverlay } from './connector-manager.js';
3
4
  import { ConnectorTool } from './connector-tool.js';
5
+ import { edgeDirectionCommands, EdgeDirectionManager, edgeDirectionWidget, } from './direction/index.js';
4
6
  import { effects } from './effects.js';
5
7
  import { ConnectorElementRendererExtension } from './element-renderer/index.js';
6
8
  import { ConnectorDomRendererExtension } from './element-renderer/connector-dom.js';
@@ -29,6 +31,20 @@ export class ConnectorViewExtension extends ViewExtensionProvider {
29
31
  context.register(connectorToolbarExtension);
30
32
  context.register(ConnectionOverlay);
31
33
  context.register(ConnectorInteraction);
34
+ // The direction affordance of `docs/adr/0010`, registered ALWAYS-ON with
35
+ // the rest of the connector view: a typed edge is document content, so
36
+ // what shows its orientation (M2) and what lets the user reverse it (M3)
37
+ // must keep working when the framework that minted it is flagged off —
38
+ // and `b.flip-direction`, which lies about such an edge, is hidden
39
+ // whatever the flag says. All three are no-ops until some framework
40
+ // registers a role vocabulary.
41
+ //
42
+ // No canvas overlay any more: since the PO acceptance of 02/08/2026 the
43
+ // reveal is ONE mark, the sentence laid along the link with a point at
44
+ // its target end, and that mark is DOM.
45
+ context.register(EdgeDirectionManager);
46
+ context.register(edgeDirectionWidget);
47
+ context.register(CommandExtension(edgeDirectionCommands));
32
48
  }
33
49
  }
34
50
  }