@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,84 @@
1
+ import { createIdentifier } from '../../global/di/index.js';
2
+ /** A framework registers its nudges here; nothing else registers nudges. */
3
+ export const QualityNudgeIdentifier = createIdentifier('QualityNudge');
4
+ /**
5
+ * Register a framework's nudges. Call it from the FLAG-GATED view extension,
6
+ * beside {@link ValidationRuleExtension}.
7
+ *
8
+ * ```ts
9
+ * context.register(QualityNudgeExtension(WARDLEY_NUDGES));
10
+ * ```
11
+ */
12
+ export function QualityNudgeExtension(nudges) {
13
+ return {
14
+ setup: di => {
15
+ for (const nudge of nudges) {
16
+ di.addImpl(QualityNudgeIdentifier(nudge.id), () => nudge);
17
+ }
18
+ },
19
+ };
20
+ }
21
+ /**
22
+ * The nudge ids ticked on `element` — always an array, never a copy to keep.
23
+ *
24
+ * The value comes out of a Y.Map, so it is whatever a peer wrote: a client that
25
+ * got it wrong must not break the panel on this one. Non-string members are
26
+ * dropped rather than shown, for the same reason.
27
+ */
28
+ export function checkedNudges(element) {
29
+ const stored = element.qualityChecklist;
30
+ if (!Array.isArray(stored))
31
+ return [];
32
+ return stored.filter((id) => typeof id === 'string');
33
+ }
34
+ /** Whether `nudgeId` is ticked on `element`. */
35
+ export function isNudgeChecked(element, nudgeId) {
36
+ return checkedNudges(element).includes(nudgeId);
37
+ }
38
+ /**
39
+ * Tick or untick `nudgeId` on `element`.
40
+ *
41
+ * The write goes through the declared `@field()` accessor, so it lands in the
42
+ * Y.Map, syncs to every peer, joins the undo stack and survives a copy — see the
43
+ * note on `GfxPrimitiveElementModel.qualityChecklist`.
44
+ *
45
+ * Unticking the LAST one removes the key rather than leaving an empty array
46
+ * behind: assigning `[]` through the accessor would keep a key in the Y.Map,
47
+ * invisible in the panel but synced to every peer and shipped in every snapshot.
48
+ * `clearField` removes it, so an element whose checklist was emptied really is
49
+ * indistinguishable from one that never had a nudge ticked — in the document,
50
+ * and not just in this tab. Exactly what `revokeException` does with the last
51
+ * exception (PF8).
52
+ *
53
+ * ## Read-only is enforced HERE, not only in the panel
54
+ *
55
+ * The house convention for these writes: the seam guards itself
56
+ * (`setProfile`, `setException`, `revokeExceptionsOn` all do). A `disabled`
57
+ * checkbox is a UI promise and covers exactly one caller; an agent, a host or a
58
+ * future surface reaching this function directly would have no net at all. And
59
+ * the failure is not a no-op: `clearField` goes through `Store.transact`, which
60
+ * — unlike `addBlock` / `updateBlock` / `deleteBlock` — carries no read-only
61
+ * guard of its own, so unticking would genuinely delete the key from a document
62
+ * the user cannot edit.
63
+ *
64
+ * The store is reached through the element's own surface. An element not yet
65
+ * attached to one carries no document to protect and is written normally, which
66
+ * is what a unit fixture is.
67
+ *
68
+ * @returns whether the document actually changed.
69
+ */
70
+ export function setNudgeChecked(element, nudgeId, checked) {
71
+ if (element.surface?.store?.readonly)
72
+ return false;
73
+ const current = checkedNudges(element);
74
+ if (current.includes(nudgeId) === checked)
75
+ return false;
76
+ const next = checked
77
+ ? [...current, nudgeId]
78
+ : current.filter(id => id !== nudgeId);
79
+ if (next.length === 0)
80
+ element.clearField('qualityChecklist');
81
+ else
82
+ element.qualityChecklist = next;
83
+ return true;
84
+ }
@@ -0,0 +1,248 @@
1
+ import { type ToolbarContext, type ToolbarModuleConfig } from '../../affine-shared/services/index.js';
2
+ import type { FrameworkId } from '../../std/index.js';
3
+ import type { GfxPrimitiveElementModel } from '../../std/gfx/index.js';
4
+ import type { TemplateResult } from 'lit';
5
+ /**
6
+ * **Morph** — a framework element becomes a NEARBY kind of itself, from its own
7
+ * contextual toolbar, without being replaced.
8
+ *
9
+ * A user task is a task that says who performs it; a timer start is a start
10
+ * event that says what triggers it. Discovering mid-draft that the rectangle
11
+ * should have been a user task is not a modelling mistake, it is modelling —
12
+ * and today the only way through it is delete, re-draw, re-connect, re-type.
13
+ * That gesture loses the geometry, every sequence flow attached to the node and
14
+ * the label somebody wrote; this one writes `kind`, `role` and the target's
15
+ * preset APPEARANCE, and touches nothing else. The appearance is deliberately
16
+ * in that list — see {@link MorphSpec.propsOf}: a morph resets styling to what
17
+ * the target kind is born as, so a morphed artefact and a freshly drawn one are
18
+ * the same element.
19
+ *
20
+ * ## Why this is not "Switch shape type"
21
+ *
22
+ * The shape toolbar's dropdown (`gfx/shape/src/toolbar/config.ts`, `c.switch-type`)
23
+ * is the visual template and deliberately not the mechanism. It offers EVERY
24
+ * shape to every shape, because a rectangle and an ellipse mean nothing and are
25
+ * therefore interchangeable. A framework artefact means something: a task is not
26
+ * an end event, and a menu that offered the swap would be a menu that invites
27
+ * nonsense. So the reachable set is DATA the framework declares — an explicit
28
+ * table of families, not a derivation from the role tree, from the icon set or
29
+ * from anything else clever. `roleIsA` would have made `bpmn:task` reach
30
+ * `bpmn:activity` and thence the sub-process and the call activity, which is one
31
+ * inference too many: a task and a sub-process are not the same size of thing,
32
+ * and only a human knows which pairs a reader would accept as "the same artefact,
33
+ * said more precisely".
34
+ *
35
+ * ## What a morph is NOT
36
+ *
37
+ * It is not a creation: nothing is inserted, nothing is deleted, no id changes.
38
+ * `xywh`, every connector endpoint pointing at the element, and the text it
39
+ * carries are all untouched — see {@link MorphSpec.propsOf}, whose contract is
40
+ * that it returns NEITHER `type`, NOR `xywh`, NOR `text`. {@link applyMorph}
41
+ * strips those three from whatever the spec hands back, so the contract is
42
+ * ENFORCED here rather than merely asked for.
43
+ *
44
+ * It is also not a style change, which is why it is not `FrameworkElementAdded`
45
+ * that reports it. `FrameworkElementMorphed` is its own event for the reason
46
+ * `FrameworkElementPromoted` is: a creation event emitted where nothing was
47
+ * created inflates "elements added per framework" forever.
48
+ *
49
+ * ## Generic in shape, framework-registered — like `tags-toolbar.ts`
50
+ *
51
+ * Nothing in this file names a framework, a kind or a role. Everything it needs
52
+ * arrives in one {@link MorphSpec}, which a framework's own FLAG-GATED view
53
+ * extension registers against its element flavour — morph is TOOLING, so the
54
+ * flag takes the menu away and leaves every stored document loading, painting
55
+ * and round-tripping exactly as before (`docs/adr/0009`).
56
+ *
57
+ * ## One element, or a composite of several
58
+ *
59
+ * A BPMN node is one element: what the user selects, what carries `kind` and
60
+ * what the patch lands on are the same object. A C4 component is not — it is a
61
+ * native `group` holding the shape and its three lines of words — and two
62
+ * optional hooks are the whole of the difference: {@link MorphSpec.resolveTarget}
63
+ * says which element inside the selection the kind is written on (and refuses
64
+ * every group that is not one of this framework's components), and
65
+ * {@link MorphSpec.afterMorph} writes whatever else the artefact owes the
66
+ * change, inside the same undo step. Both default to nothing, so a framework
67
+ * whose artefact is one element declares neither.
68
+ */
69
+ /** A piece of chrome's wording: the host's key, and the English behind it. */
70
+ export interface MorphLabel {
71
+ /** `com.labre.*` key handed to `TranslationProvider.t`, when there is one. */
72
+ key?: string;
73
+ /** What a standalone editor shows. */
74
+ fallback: string;
75
+ }
76
+ /**
77
+ * One wording, key and English adjacent.
78
+ *
79
+ * A two-argument helper rather than an object literal at the declaration site,
80
+ * because that is the shape the manifest's drift guard reads: it pairs two
81
+ * adjacent literals in one argument list, so a key restated in
82
+ * `affine/all/src/translations.ts` is confirmed against the wording actually
83
+ * shipped instead of joining the unpairable residue.
84
+ */
85
+ export declare const morphLabel: (key: string, fallback: string) => MorphLabel;
86
+ /**
87
+ * Everything the module needs, and nothing it could ask a registry for.
88
+ *
89
+ * DI-free on purpose, exactly like `tagsToolbarConfig(roles)`: the kind
90
+ * vocabularies are lib-side data modules owned by the framework that renders
91
+ * them, and ADR 0007 § 2bis kept them out of the DI registry. A second framework
92
+ * gets this dropdown by registering its own spec.
93
+ */
94
+ export interface MorphSpec<K extends string = string> {
95
+ /** Telemetry segment — the WIRE value, as `reportCommandTelemetry` sends it. */
96
+ framework: FrameworkId;
97
+ /**
98
+ * The morphable sets, declared. Each inner array is one family whose members
99
+ * are mutually reachable, and DECLARATION ORDER IS MENU ORDER. A kind in no
100
+ * family can never be morphed and never offers the menu — which is how a BPMN
101
+ * group and a text annotation stay out of it.
102
+ */
103
+ families: readonly (readonly K[])[];
104
+ /** Filters the selection, via `getSurfaceModelsByType`. */
105
+ modelType: abstract new (...args: never[]) => GfxPrimitiveElementModel;
106
+ /**
107
+ * The element the kind is actually WRITTEN on, given what the user selected.
108
+ *
109
+ * Identity by default, which is the whole of BPMN's case: a node is one
110
+ * element, it is what the selection holds and it is what the patch lands on.
111
+ *
112
+ * A COMPOSITE artefact is the reason this exists. A C4 component is a native
113
+ * `group` holding the `c4Node` shape and its three lines of words: one click
114
+ * selects the group, the `kind` lives on the shape, and a patch written to
115
+ * the group would put `kind` and `role` on a wrapper that means nothing (see
116
+ * `gfx/c4/src/roles.ts` on why the group is deliberately role-less). So the
117
+ * spec maps the selection to the element it is about, and everything
118
+ * downstream — {@link kindOf}, the patch, the clears — speaks about THAT.
119
+ *
120
+ * Returning `undefined` is a REFUSAL and the main gate a composite framework
121
+ * has: a plain group somebody drew round three shapes, a group belonging to
122
+ * another framework, a group holding two components — none of them resolves,
123
+ * so none of them is offered the menu. It is checked per element, so a
124
+ * selection mixing a C4 component with a Wardley one offers nothing at all.
125
+ */
126
+ resolveTarget?(model: GfxPrimitiveElementModel): GfxPrimitiveElementModel | undefined;
127
+ /**
128
+ * This element's current kind, or `undefined` when it carries none.
129
+ *
130
+ * Asked of the RESOLVED element ({@link resolveTarget}), never of the
131
+ * selection.
132
+ */
133
+ kindOf(model: GfxPrimitiveElementModel): K | undefined;
134
+ /**
135
+ * Anything else the morph owes the artefact, written in the SAME gesture.
136
+ *
137
+ * Called once per element actually changed, inside the one `captureSync`, so
138
+ * whatever it writes is part of the same single ctrl+z as the patch — and
139
+ * called with the SELECTED model, because what it has to reach is the rest of
140
+ * the composite rather than the shape the patch just landed on.
141
+ *
142
+ * C4 is the one caller today: a component's type line reads `[Container:
143
+ * Java]`, and the bracketed word is the NOTATION's — derived from `kind` —
144
+ * while the technology after the colon is the author's. A kind rewritten
145
+ * without that line rewritten with it is a picture that contradicts its own
146
+ * caption. Both kinds are handed over because the decision needs the one the
147
+ * element is leaving as much as the one it is arriving at: only a line that
148
+ * still says what the SOURCE kind derived may be rewritten, and a line the
149
+ * author typed over is theirs.
150
+ */
151
+ afterMorph?(model: GfxPrimitiveElementModel, from: K, to: K): void;
152
+ /** The role a kind means — the `from` / `to` of the telemetry, ids only. */
153
+ roleOf(kind: K): string;
154
+ /**
155
+ * The WHOLE patch a kind is worth: `kind`, `role`, and every preset the
156
+ * target's own appearance depends on.
157
+ *
158
+ * Must NOT contain `type` (the element is not being re-typed), `xywh` (the
159
+ * geometry is the user's) or `text` (the words are the user's). Those three
160
+ * are stripped by {@link applyMorph} whatever the spec returns, so this is a
161
+ * contract the module enforces and not one it trusts.
162
+ *
163
+ * ## Why the whole preset, and not just `{kind, role}`
164
+ *
165
+ * Because the appearance of a framework artefact is written by the preset of
166
+ * the kind it was CREATED as, and nothing else will ever rewrite it. BPMN has
167
+ * one shipped pair where that bites today: `subProcess` → `callActivity`
168
+ * differ only in `strokeWidth` (2 ⇄ 4), and the thick border IS what tells a
169
+ * reader that this box stands for a process defined elsewhere. A two-key
170
+ * patch would produce a call activity indistinguishable from the sub-process
171
+ * it no longer is.
172
+ *
173
+ * Every other shipped BPMN family currently shares one preset across its
174
+ * members, so for those the full patch is a no-op — and that is the second
175
+ * reason to require it rather than to optimise it away. It is insurance for
176
+ * the day a family gains a member whose preset differs (a family is DATA and
177
+ * grows by declaration, with no code change to prompt the question), and it
178
+ * is the guarantee that a morphed artefact and one freshly drawn from the
179
+ * palette are byte-for-byte the same element. A framework that derives this
180
+ * from its creation builder — as BPMN's `bpmnMorphProps` does — cannot let
181
+ * the two drift apart.
182
+ */
183
+ propsOf(kind: K): Record<string, unknown>;
184
+ /**
185
+ * Field names to DELETE after patching — the keys the target's props do not
186
+ * carry.
187
+ *
188
+ * A patch cannot express absence: a preset that spreads a key conditionally
189
+ * (BPMN's `textVerticalAlign`) simply omits it, and an omitted key leaves the
190
+ * PREVIOUS kind's value sitting in the Y.Map, silently in force. `clearField`
191
+ * removes it, which is the same call `writeLanes` makes for the same reason.
192
+ */
193
+ clearOf?(kind: K): readonly string[];
194
+ /** One menu item's tooltip. */
195
+ labelOf(kind: K): MorphLabel;
196
+ /** One menu item's icon — the framework's own, reused. */
197
+ iconOf(kind: K): TemplateResult;
198
+ /** The dropdown's own name. */
199
+ label: MorphLabel;
200
+ }
201
+ /**
202
+ * Write one kind onto every element of the selection that is not already it.
203
+ *
204
+ * Exported because it is the WRITE and the menu is only the chrome around it:
205
+ * the unit suite exercises the mutation without a DOM, and the integration
206
+ * suite performs the same gesture a click performs. It re-derives the target
207
+ * itself, so there is no way to reach it with a selection the menu would have
208
+ * refused.
209
+ *
210
+ * ## Straight to the surface, and why not through `EdgelessCRUDIdentifier`
211
+ *
212
+ * `EdgelessCRUDExtension.updateElement` calls `recordLastProps` on its way
213
+ * past, which teaches the editor "the last thing you made looked like this" —
214
+ * and the props here are a WHOLE preset, not the one field a user just changed.
215
+ * For any element type the last-props schema names, morphing one artefact would
216
+ * therefore restyle the next one drawn from the palette — one morph to a
217
+ * thick-bordered call activity, and the next artefact of that type comes out
218
+ * wearing a border nobody asked for. No BPMN type is in that schema today, so
219
+ * nothing is broken right now, which is exactly the kind of accident that lands
220
+ * the day one is added. This module is generic and must not depend on which
221
+ * types happen to be listed. (The crud now skips recording for role-carrying
222
+ * elements, so the bypass here is belt-and-braces — kept as the lighter write.)
223
+ *
224
+ * `surface.updateElement` is the same write without the memory; the read-only
225
+ * refusal the CRUD also carries is restated in {@link morphTarget}.
226
+ *
227
+ * One `updateElement` per element, then its `clearField`s: kind, role and the
228
+ * presets land together, so no repaint and no rule ever sees an element that is
229
+ * half one artefact and half another. `role` is in `VERDICT_PROPS`, so the
230
+ * validation engine re-judges the board on its own within one debounce tick —
231
+ * which is the whole reason role is never written without kind, nor kind
232
+ * without role.
233
+ *
234
+ * One `captureSync` before the loop, so a morph of nine elements is one ctrl+z.
235
+ */
236
+ export declare function applyMorph<K extends string>(ctx: ToolbarContext, spec: MorphSpec<K>, kind: K): void;
237
+ /**
238
+ * The toolbar module, parameterized by one framework's morph declaration.
239
+ *
240
+ * The dropdown is `renderPickerMenu` (`@labre/affine-components/toolbar`) — the
241
+ * SAME one-of-many picker "Switch shape type" is, chevron, tooltips, active
242
+ * background and all, so a user meets one affordance rather than two that
243
+ * resemble each other. It lives in the component package and not in
244
+ * `@labre/affine-widget-edgeless-toolbar`, where the picker was first written,
245
+ * because that widget package depends on THIS one: importing it here would
246
+ * close a cycle, and the component package is below both.
247
+ */
248
+ export declare function morphToolbarConfig<K extends string>(spec: MorphSpec<K>): ToolbarModuleConfig;
@@ -0,0 +1,248 @@
1
+ import { renderPickerMenu } from '../../affine-components/toolbar/index.js';
2
+ import { MindmapElementModel } from '../../affine-model/index.js';
3
+ import { translateKey, } from '../../affine-shared/services/index.js';
4
+ import { getMostCommonValue } from '../../affine-shared/utils/index.js';
5
+ /**
6
+ * One wording, key and English adjacent.
7
+ *
8
+ * A two-argument helper rather than an object literal at the declaration site,
9
+ * because that is the shape the manifest's drift guard reads: it pairs two
10
+ * adjacent literals in one argument list, so a key restated in
11
+ * `affine/all/src/translations.ts` is confirmed against the wording actually
12
+ * shipped instead of joining the unpairable residue.
13
+ */
14
+ export const morphLabel = (key, fallback) => ({
15
+ key,
16
+ fallback,
17
+ });
18
+ /**
19
+ * Mirrors `hasGrouped` in the shape toolbar: a mindmap node's appearance is the
20
+ * mindmap's to decide, so it is not a thing a per-element dropdown may rewrite.
21
+ * A plain canvas group is NOT a refusal — grouping some tasks together says
22
+ * nothing about what any of them is.
23
+ */
24
+ function inMindmap(model) {
25
+ return model.group instanceof MindmapElementModel;
26
+ }
27
+ /**
28
+ * The selection, if there is exactly one honest morph to offer for it.
29
+ *
30
+ * Five conditions, and each removes a way for the menu to lie:
31
+ *
32
+ * - the document is editable — this writes to the surface DIRECTLY (see
33
+ * {@link applyMorph}), so it does not inherit `EdgelessCRUDExtension`'s
34
+ * read-only refusal and states its own;
35
+ * - the selection is non-empty and HOMOGENEOUS on the spec's model type — a
36
+ * selection holding a task and a connector has no current value to show;
37
+ * - nothing in it is locked or belongs to a mindmap;
38
+ * - every element RESOLVES ({@link MorphSpec.resolveTarget}) and the element it
39
+ * resolves to is itself unlocked — which for a composite framework is the
40
+ * whole gate: a plain group, another framework's group and a group holding
41
+ * two components all resolve to nothing and are all refused here;
42
+ * - every resolved element's kind is one the spec knows;
43
+ * - and they all belong to the SAME family. Mixed families means the answer
44
+ * would differ per element, and the simplest correct rule is to offer
45
+ * nothing rather than to guess which of two menus the user meant.
46
+ */
47
+ function morphTarget(ctx, spec) {
48
+ if (ctx.readonly)
49
+ return null;
50
+ const models = ctx.getSurfaceModelsByType(spec.modelType);
51
+ if (!models.length)
52
+ return null;
53
+ if (models.length !== ctx.getSurfaceModels().length)
54
+ return null;
55
+ if (models.some(model => model.isLocked() || inMindmap(model)))
56
+ return null;
57
+ const entries = [];
58
+ for (const selected of models) {
59
+ // Never `?? selected`: `undefined` is the spec REFUSING this element, and
60
+ // falling back to the selection would write a framework's kind onto the
61
+ // very wrapper the spec just declined.
62
+ const target = spec.resolveTarget ? spec.resolveTarget(selected) : selected;
63
+ // Tested on the resolved element too: a composite's shape can be locked
64
+ // while the group holding it is not, and the write would then be refused
65
+ // after the menu had already offered it.
66
+ if (!target || target.isLocked() || inMindmap(target))
67
+ return null;
68
+ const kind = spec.kindOf(target);
69
+ if (kind === undefined)
70
+ return null;
71
+ entries.push({ selected, target, kind });
72
+ }
73
+ const kinds = entries.map(entry => entry.kind);
74
+ const family = spec.families.find(candidate => candidate.includes(kinds[0]));
75
+ if (!family)
76
+ return null;
77
+ if (!kinds.every(kind => family.includes(kind)))
78
+ return null;
79
+ const current = getMostCommonValue(kinds.map(kind => ({ kind })), 'kind') ?? kinds[0];
80
+ return { entries, family, current };
81
+ }
82
+ /**
83
+ * What a morph may never rewrite, whatever a spec hands back: the element's
84
+ * identity, its geometry, and the user's words.
85
+ */
86
+ const NOT_A_MORPH = ['type', 'xywh', 'text'];
87
+ /**
88
+ * The spec's patch with those three removed.
89
+ *
90
+ * {@link MorphSpec.propsOf} already promises not to include them, and BPMN's
91
+ * builder honours the promise by construction. This is the second lock, and it
92
+ * belongs here rather than in each framework: a spec is DATA a framework
93
+ * author writes, `propsOf` is most naturally derived from a CREATION builder
94
+ * (which of course emits `type` and `xywh`), and the failure mode of forgetting
95
+ * one strip is a morph that silently moves an element to `[0,0,0,0]` or empties
96
+ * its label. A contract worth stating in the type is worth enforcing at the
97
+ * one place that writes.
98
+ */
99
+ function morphPatch(props) {
100
+ const patch = { ...props };
101
+ for (const key of NOT_A_MORPH)
102
+ delete patch[key];
103
+ return patch;
104
+ }
105
+ /**
106
+ * Write one kind onto every element of the selection that is not already it.
107
+ *
108
+ * Exported because it is the WRITE and the menu is only the chrome around it:
109
+ * the unit suite exercises the mutation without a DOM, and the integration
110
+ * suite performs the same gesture a click performs. It re-derives the target
111
+ * itself, so there is no way to reach it with a selection the menu would have
112
+ * refused.
113
+ *
114
+ * ## Straight to the surface, and why not through `EdgelessCRUDIdentifier`
115
+ *
116
+ * `EdgelessCRUDExtension.updateElement` calls `recordLastProps` on its way
117
+ * past, which teaches the editor "the last thing you made looked like this" —
118
+ * and the props here are a WHOLE preset, not the one field a user just changed.
119
+ * For any element type the last-props schema names, morphing one artefact would
120
+ * therefore restyle the next one drawn from the palette — one morph to a
121
+ * thick-bordered call activity, and the next artefact of that type comes out
122
+ * wearing a border nobody asked for. No BPMN type is in that schema today, so
123
+ * nothing is broken right now, which is exactly the kind of accident that lands
124
+ * the day one is added. This module is generic and must not depend on which
125
+ * types happen to be listed. (The crud now skips recording for role-carrying
126
+ * elements, so the bypass here is belt-and-braces — kept as the lighter write.)
127
+ *
128
+ * `surface.updateElement` is the same write without the memory; the read-only
129
+ * refusal the CRUD also carries is restated in {@link morphTarget}.
130
+ *
131
+ * One `updateElement` per element, then its `clearField`s: kind, role and the
132
+ * presets land together, so no repaint and no rule ever sees an element that is
133
+ * half one artefact and half another. `role` is in `VERDICT_PROPS`, so the
134
+ * validation engine re-judges the board on its own within one debounce tick —
135
+ * which is the whole reason role is never written without kind, nor kind
136
+ * without role.
137
+ *
138
+ * One `captureSync` before the loop, so a morph of nine elements is one ctrl+z.
139
+ */
140
+ export function applyMorph(ctx, spec, kind) {
141
+ // Re-resolved rather than closed over: the selection may have moved on
142
+ // between the render that drew this line and the click that reached it, and
143
+ // the write must never land somewhere the menu would not have been offered.
144
+ const target = morphTarget(ctx, spec);
145
+ if (!target || !target.family.includes(kind))
146
+ return;
147
+ const changing = target.entries.filter(entry => entry.kind !== kind);
148
+ // A gesture that changes nothing is not a morph, writes nothing and reports
149
+ // nothing — the rule every arbitration gesture in this repo already follows.
150
+ if (!changing.length)
151
+ return;
152
+ const props = morphPatch(spec.propsOf(kind));
153
+ const cleared = spec.clearOf?.(kind) ?? [];
154
+ ctx.std.store.captureSync();
155
+ for (const entry of changing) {
156
+ entry.target.surface.updateElement(entry.target.id, props);
157
+ for (const field of cleared)
158
+ entry.target.clearField(field);
159
+ // Inside the loop and inside the one checkpoint above: whatever the rest of
160
+ // a composite owes this morph — C4's type line — is part of the same single
161
+ // ctrl+z as the kind that made it necessary.
162
+ spec.afterMorph?.(entry.selected, entry.kind, kind);
163
+ }
164
+ // The one DIRECT emission in this module, and the arbitrated exception is the
165
+ // same one the C4 legend button makes: there is no command behind this
166
+ // gesture to carry the telemetry for it, because a morph is declared by the
167
+ // element's own toolbar module and reachable from nowhere else. The values
168
+ // must therefore stay aligned by hand with what `reportCommandTelemetry`
169
+ // would send — `framework` is the descriptor's wire key, and `ctx.track`
170
+ // supplies `page` / `segment` / `module` exactly as the other toolbar
171
+ // emitters get them. A morph reachable from the palette one day takes its
172
+ // telemetry from the command and this call goes away.
173
+ ctx.track('FrameworkElementMorphed', {
174
+ framework: spec.framework,
175
+ fromRole: spec.roleOf(target.current),
176
+ toRole: spec.roleOf(kind),
177
+ elementCount: changing.length,
178
+ });
179
+ }
180
+ /** One wording, resolved against the host's catalogue when it named a key. */
181
+ function wording(ctx, { key, fallback }) {
182
+ return key ? translateKey(ctx.std, key, fallback) : fallback;
183
+ }
184
+ /**
185
+ * The toolbar module, parameterized by one framework's morph declaration.
186
+ *
187
+ * The dropdown is `renderPickerMenu` (`@labre/affine-components/toolbar`) — the
188
+ * SAME one-of-many picker "Switch shape type" is, chevron, tooltips, active
189
+ * background and all, so a user meets one affordance rather than two that
190
+ * resemble each other. It lives in the component package and not in
191
+ * `@labre/affine-widget-edgeless-toolbar`, where the picker was first written,
192
+ * because that widget package depends on THIS one: importing it here would
193
+ * close a cycle, and the component package is below both.
194
+ */
195
+ export function morphToolbarConfig(spec) {
196
+ return {
197
+ actions: [
198
+ {
199
+ // After a framework's own per-instance toggles (`a.` … `d.`), before
200
+ // `y.element-tags` and `z.validation`: WHICH artefact this is reads
201
+ // before how it is qualified, and both read before how hard it is
202
+ // checked.
203
+ //
204
+ // SCOPED by the declaring framework, because `renderToolbar` merges
205
+ // the actions of every module on a row BY ID — `groupBy(a => a.id)`,
206
+ // then a deep merge. One flavour can now carry several morph modules
207
+ // (a group is a C4 component and a Wardley component), and two entries
208
+ // both called `e.morph` would be merged into one whose `content` came
209
+ // from whichever was registered last: a single dropdown, silently
210
+ // answering for one framework and not the other. `e.morph.c4` and
211
+ // `e.morph.wardley` sort adjacently, in the same slot, and never
212
+ // collide. The TESTIDs stay `element-morph` / `element-morph-option`,
213
+ // because the row draws one of these at a time and the DOM handle is
214
+ // about the affordance, not about who declared it.
215
+ id: `e.morph.${spec.framework}`,
216
+ when: (ctx) => morphTarget(ctx, spec) !== null,
217
+ content(ctx) {
218
+ const target = morphTarget(ctx, spec);
219
+ if (!target)
220
+ return null;
221
+ // `testId` puts `element-morph` on the host and
222
+ // `element-morph-option` on each line. The host matters: the trigger
223
+ // is handed to `editor-menu-button` as a PROPERTY and rendered into
224
+ // its shadow root, so the host is the only handle the toolbar's own
225
+ // DOM offers.
226
+ return renderPickerMenu({
227
+ testId: 'element-morph',
228
+ label: wording(ctx, spec.label),
229
+ // The current kind's own icon on the closed button, exactly as the
230
+ // shape picker shows the current shape: the dropdown reads as a
231
+ // statement about the selection before it is opened.
232
+ icon: spec.iconOf(target.current),
233
+ items: target.family.map(kind => ({
234
+ key: wording(ctx, spec.labelOf(kind)),
235
+ value: kind,
236
+ icon: spec.iconOf(kind),
237
+ })),
238
+ currentValue: target.current,
239
+ onPick: (picked) => applyMorph(ctx, spec, picked),
240
+ });
241
+ },
242
+ },
243
+ ],
244
+ // The whole module stands down unless the selection has something to morph,
245
+ // so a framework registering it pays one resolution per selection change.
246
+ when: (ctx) => morphTarget(ctx, spec) !== null,
247
+ };
248
+ }
@@ -0,0 +1,15 @@
1
+ import { type ToolbarContext } from '../../affine-shared/services/index.js';
2
+ export declare const readingToolbarConfig: {
3
+ readonly actions: [{
4
+ readonly id: "y1.element-reading";
5
+ readonly when: (ctx: ToolbarContext) => boolean;
6
+ readonly generate: (ctx: ToolbarContext) => {
7
+ label: string;
8
+ icon: import("lit-html").TemplateResult<1>;
9
+ showLabel: true;
10
+ tooltip: string;
11
+ run: (runCtx: ToolbarContext) => void;
12
+ };
13
+ }];
14
+ };
15
+ export declare const readingToolbarExtension: import("../../store/index.js").ExtensionType;