@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,431 @@
1
+ import { createIdentifier } from '../../global/di/index.js';
2
+ import { SurfaceSelection } from '../selection/index.js';
3
+ import { ShortcutExtension, } from './shortcut.js';
4
+ /**
5
+ * The eight framework modules that own commands. An EXPLICIT list, not a
6
+ * subset assertion over `OPTIONAL_BLOCKS`: that list mixes frameworks with
7
+ * plain blocks. `packages/affine/all/src/frameworks.ts` asserts that every id
8
+ * here is a real flag key (`satisfies readonly OptionalBlock[]`).
9
+ *
10
+ * `ddd-aggregate` is deliberately absent: it ships DDD *templates* only — no
11
+ * senior button, no commands — so it is a packaging bundle, not a framework.
12
+ */
13
+ export const FRAMEWORK_IDS = [
14
+ 'wardley',
15
+ 'edgy',
16
+ 'cynefin-estuarine',
17
+ 'bpmn',
18
+ 'c4',
19
+ 'ddd-event-storming',
20
+ 'ddd-core-domain',
21
+ 'ddd-context-map',
22
+ ];
23
+ /** Multi-instance: one registered {@link CommandDescriptor} per impl. */
24
+ export const CommandDescriptorIdentifier = createIdentifier('CommandDescriptor');
25
+ /** Multi-instance: one `iconKey → template` table per contributing package. */
26
+ export const CommandIconsIdentifier = createIdentifier('CommandIcons');
27
+ export const CommandTelemetryIdentifier = createIdentifier('CommandTelemetry');
28
+ export const CommandUsageIdentifier = createIdentifier('CommandUsage');
29
+ const surfaceSelections = (std) => std.selection.filter(SurfaceSelection);
30
+ /**
31
+ * Mirrors `GfxSelectionManager.editing` without importing `@labre/std/gfx`
32
+ * (which would close an import cycle through `extension/`): the gfx manager
33
+ * derives it from exactly these selections.
34
+ */
35
+ export const isEditingOnCanvas = (std) => surfaceSelections(std).some(sel => sel.editing);
36
+ const hasCanvasSelection = (std) => surfaceSelections(std).some(sel => sel.elements.length > 0);
37
+ /**
38
+ * Evaluate a command's serializable precondition in-editor. `when` narrows it
39
+ * further and is evaluated by the callers, never folded in here — the two are
40
+ * deliberately separate so the manifest value stays the whole truth a host can
41
+ * see.
42
+ *
43
+ * `'selection:framework'` evaluates as `'selection'`; narrowing to the owner's
44
+ * element types is left to `when`. `validation.mapQuality` is the first command
45
+ * to declare it, and it is also why the narrowing has not moved here: what makes
46
+ * an element a framework's ROOT INSTANCE is a question for the validation
47
+ * engine (which rule declares a `backgroundRole` this element's role satisfies),
48
+ * and `@labre/std` neither knows nor should learn it. The serializable value
49
+ * stays the whole truth a host catalogue can see; the in-editor refinement stays
50
+ * in `when`. See ADR 0008 § Availability.
51
+ */
52
+ export function isCommandAvailable(std, command) {
53
+ switch (command.availability ?? 'always') {
54
+ case 'always':
55
+ return true;
56
+ case 'selection':
57
+ case 'selection:framework':
58
+ return !isEditingOnCanvas(std) && hasCanvasSelection(std);
59
+ case 'editable':
60
+ return !std.store.readonly;
61
+ }
62
+ }
63
+ /**
64
+ * THE bottleneck: the one place a command runs, and therefore the one place
65
+ * its telemetry is emitted and its usage measured. Every surface (sub-menu,
66
+ * shortcut, palette, sidepanel, agent) goes through here, which is what removes
67
+ * the per-menu `track()` duplicates.
68
+ */
69
+ export function runCommand(std, command, invocation, params) {
70
+ const result = command.run(std, invocation, params);
71
+ if (result instanceof Promise)
72
+ result.catch(console.error);
73
+ // Before the telemetry gate on purpose: usage is measured for EVERY command,
74
+ // including the ones with no `telemetry` field and the self-emitting ones.
75
+ std.getOptional(CommandUsageIdentifier)?.record(command, invocation);
76
+ if (!command.telemetry)
77
+ return;
78
+ std.getOptional(CommandTelemetryIdentifier)?.({ std, command, invocation });
79
+ }
80
+ /**
81
+ * One of the three permanent projections out of {@link CommandDescriptor} —
82
+ * NOT a migration shim. It is TOTAL: keyless commands yield a descriptor with
83
+ * empty `defaultKeys` rather than being dropped, so a `ShortcutOverrides` entry
84
+ * on their id actually binds and Settings › Shortcuts can offer every command.
85
+ *
86
+ * `id`, `labelKey`, `defaultKeys`, `scope` and `owner` are carried over
87
+ * verbatim, which is what keeps hosts' persisted v0.29 override tables valid.
88
+ */
89
+ export function toShortcutDescriptor(command) {
90
+ return {
91
+ id: command.id,
92
+ labelKey: command.labelKey,
93
+ defaultKeys: command.defaultKeys,
94
+ scope: command.scope,
95
+ owner: command.owner,
96
+ handler: std => ctx => {
97
+ // A keystroke aimed at a canvas text editor belongs to that editor.
98
+ if (command.scope === 'edgeless' && isEditingOnCanvas(std))
99
+ return false;
100
+ if (!isCommandAvailable(std, command))
101
+ return false;
102
+ if (command.when && !command.when(std))
103
+ return false;
104
+ ctx.get('defaultState').event.preventDefault();
105
+ runCommand(std, command, { surface: 'shortcut', source: 'shortcut' });
106
+ return true;
107
+ },
108
+ };
109
+ }
110
+ const zodDef = (schema) => schema?._def ?? {};
111
+ const ZOD_KIND = {
112
+ ZodString: 'string',
113
+ ZodNumber: 'number',
114
+ ZodBoolean: 'boolean',
115
+ ZodEnum: 'string',
116
+ };
117
+ /** Unwraps at most a few modifier layers; a deeper nesting is not describable. */
118
+ function describeParam(key, schema) {
119
+ let current = schema;
120
+ let required = true;
121
+ let nullable = false;
122
+ for (let depth = 0; depth < 4; depth++) {
123
+ const def = zodDef(current);
124
+ if (def.typeName === 'ZodOptional' || def.typeName === 'ZodDefault') {
125
+ required = false;
126
+ current = def.innerType;
127
+ continue;
128
+ }
129
+ if (def.typeName === 'ZodNullable') {
130
+ nullable = true;
131
+ current = def.innerType;
132
+ continue;
133
+ }
134
+ break;
135
+ }
136
+ const def = zodDef(current);
137
+ const kind = def.typeName === 'ZodArray'
138
+ ? zodDef(def.type).typeName === 'ZodString'
139
+ ? 'string[]'
140
+ : undefined
141
+ : ZOD_KIND[def.typeName ?? ''];
142
+ if (!kind)
143
+ return undefined;
144
+ return nullable ? { key, kind, required, nullable } : { key, kind, required };
145
+ }
146
+ /**
147
+ * Project a command's zod parameter contract onto the serializable seam, so the
148
+ * `'agent'` surface is usable end to end: without it an agent reading the
149
+ * manifest has no way to learn that `pivot.bind` needs a `pivotDocId`, and an
150
+ * argument-less call is a silent no-op.
151
+ *
152
+ * All or nothing on purpose. A partially described object would be worse than
153
+ * none: an agent would send what it was told and have its call rejected by the
154
+ * schema for a key the manifest never mentioned. So one undescribable property
155
+ * withdraws the whole contract, and the command reads as "parameters exist, but
156
+ * this seam cannot state them" — which is the honest answer.
157
+ */
158
+ export function describeCommandParams(schema) {
159
+ const def = zodDef(schema);
160
+ if (def.typeName !== 'ZodObject' || typeof def.shape !== 'function') {
161
+ return undefined;
162
+ }
163
+ const params = [];
164
+ for (const [key, property] of Object.entries(def.shape())) {
165
+ const param = describeParam(key, property);
166
+ if (!param)
167
+ return undefined;
168
+ params.push(param);
169
+ }
170
+ return params.length ? params : undefined;
171
+ }
172
+ /** The serializable projection. Functions and templates stop here. */
173
+ export function toCommandManifestEntry(command) {
174
+ return {
175
+ id: command.id,
176
+ owner: command.owner,
177
+ kind: command.kind,
178
+ labelKey: command.labelKey,
179
+ labelFallback: command.labelFallback,
180
+ descriptionKey: command.descriptionKey,
181
+ descriptionFallback: command.descriptionFallback,
182
+ category: command.category,
183
+ iconKey: command.iconKey,
184
+ keywords: command.keywords,
185
+ surfaces: command.surfaces,
186
+ order: command.order,
187
+ scope: command.scope,
188
+ defaultKeys: command.defaultKeys,
189
+ availability: command.availability ?? 'always',
190
+ params: describeCommandParams(command.params),
191
+ telemetry: command.telemetry,
192
+ };
193
+ }
194
+ let _commandId = 1;
195
+ /**
196
+ * Register a package's commands. ONE call gives both faces: the enumerable
197
+ * registry (in-editor consumers) and — through {@link toShortcutDescriptor} —
198
+ * the keymap bindings. Registering inside a flag-gated view extension is what
199
+ * makes a disabled framework vanish from both at once.
200
+ */
201
+ export function CommandExtension(commands, icons) {
202
+ return {
203
+ setup: di => {
204
+ commands.forEach(command => {
205
+ di.addImpl(CommandDescriptorIdentifier(`Command-${_commandId++}`), command);
206
+ });
207
+ if (icons) {
208
+ di.addImpl(CommandIconsIdentifier(`CommandIcons-${_commandId++}`), icons);
209
+ }
210
+ ShortcutExtension(commands.map(toShortcutDescriptor)).setup(di);
211
+ },
212
+ };
213
+ }
214
+ /** Every command registered in this editor assembly. */
215
+ export function getRegisteredCommands(std) {
216
+ return [...std.provider.getAll(CommandDescriptorIdentifier).values()];
217
+ }
218
+ /**
219
+ * The commands one owner contributes to one surface, in `order` then
220
+ * declaration order. This is what a senior sub-menu renders — no hard-coded
221
+ * button list anywhere.
222
+ */
223
+ export function getCommandsForSurface(std, owner, surface) {
224
+ return getRegisteredCommands(std)
225
+ .filter(c => c.owner === owner && c.surfaces.includes(surface))
226
+ .sort((a, b) => (a.order ?? 0) - (b.order ?? 0));
227
+ }
228
+ /**
229
+ * The senior sub-menu's hard cap: 14 buttons in one row of the popover. The
230
+ * registry test asserts no owner DECLARES more than this; the ranking below is
231
+ * what happens when an owner's whole catalogue outgrows it.
232
+ */
233
+ export const SENIOR_MENU_CAP = 14;
234
+ const MENU_RECENT_SLOTS = 7;
235
+ const MENU_USED_SLOTS = 6;
236
+ /**
237
+ * How many buttons survive once an owner overflows: {@link MENU_RECENT_SLOTS}
238
+ * by recency plus {@link MENU_USED_SLOTS} by frequency — thirteen (PO
239
+ * re-arbitration of 2026-08-28, superseding the 4 + 3 of 2026-08-26).
240
+ *
241
+ * Thirteen and not fourteen because the permanent "More artefacts…" button is
242
+ * the fourteenth: an overflowed sub-menu therefore renders exactly the cap, and
243
+ * the row a user meets past the cap is as wide as the one they meet below it.
244
+ */
245
+ export const SENIOR_MENU_RANKED_SLOTS = MENU_RECENT_SLOTS + MENU_USED_SLOTS;
246
+ const HEAD_RECENT_SLOTS = 4;
247
+ const HEAD_USED_SLOTS = 3;
248
+ /**
249
+ * How many rows the catalogue sidepanel's "Recent & frequent" head section
250
+ * holds: {@link HEAD_RECENT_SLOTS} + {@link HEAD_USED_SLOTS} = seven.
251
+ *
252
+ * Deliberately NOT {@link SENIOR_MENU_RANKED_SLOTS}, and this is the third
253
+ * decision of 2026-08-28 (architect's ruling on review of the two PO ones). The
254
+ * sub-menu's thirteen is argued from ITS geometry — a horizontal row of ~24px
255
+ * icon buttons, thirteen of them plus the More button making up the fourteen
256
+ * cap. None of that transfers to a vertical list of 44px rows in a panel
257
+ * `min(320px, 85vw)` wide: thirteen of those is ~604px of head section, which
258
+ * on a 13" laptop is the entire first screen, every row of it a duplicate of a
259
+ * row filed below, pushing the categories — the panel's actual information
260
+ * architecture — wholly under the fold. Worst for exactly the power user the
261
+ * section exists to serve.
262
+ *
263
+ * So the two surfaces share the ARBITRATION and not the MAGNITUDE: one
264
+ * algorithm, two parameterisations. Seven keeps the size the PO recette of
265
+ * 27/08/2026 signed off on, and the 4 + 3 split keeps both halves of a section
266
+ * labelled "Recent & frequent" — a plain `.slice(0, 7)` of the sub-menu's pick
267
+ * would have returned seven recency picks and zero frequency ones, quietly
268
+ * deleting the "& frequent" half.
269
+ */
270
+ export const CATALOGUE_HEAD_RANKED_SLOTS = HEAD_RECENT_SLOTS + HEAD_USED_SLOTS;
271
+ /**
272
+ * Which of an owner's commands the senior sub-menu actually shows.
273
+ *
274
+ * Pure — no `std`, no DOM, no store — because this is the arbitration between
275
+ * a framework's whole toolbox and fourteen buttons, and an arbitration nobody
276
+ * can run in a unit test is a design review in disguise (`docs/adr/0008`,
277
+ * amendment of 2026-08-26).
278
+ *
279
+ * Below the cap nothing is arbitrated: the sub-menu IS the framework's
280
+ * `'senior-menu'` surface, authored order and all. Past it the sub-menu becomes
281
+ * a shortcut to the thirteen commands THIS user reaches for, beside one button
282
+ * to the catalogue sidepanel where the rest live.
283
+ *
284
+ * **Eligibility is declared, never earned** (PO ruling of 2026-08-28). What
285
+ * gets ranked is the `'senior-menu'` surface — the ≤14 its author nominated —
286
+ * and NOT the whole catalogue. The trigger still reads the catalogue (an owner
287
+ * overflows when its total toolbox outgrows the cap), but a command that
288
+ * deliberately declines the sub-menu stays out of it however often it is
289
+ * invoked. `bpmn.exportXml` is the case that made the rule: its subject is the
290
+ * whole BOARD, it lives in the pool's "⋮" and in the catalogue, and usage alone
291
+ * used to drag it into a row of things you DRAW — where "Export BPMN" answers
292
+ * no question a user asked. A surface a command declines is a statement about
293
+ * where it belongs, not a default to be out-voted.
294
+ *
295
+ * The thirteen are chosen on two axes because one is not enough — frequency
296
+ * alone never surfaces what the user picked up yesterday, recency alone
297
+ * reshuffles every click. They are then laid out in **authored order**, not in
298
+ * rank order: a menu whose buttons swap places under the cursor is the dark
299
+ * pattern this whole feature exists to avoid, so what the ranking decides is
300
+ * membership, never position.
301
+ *
302
+ * With no usage recorded at all, both axes collapse to authored order and the
303
+ * result is the first thirteen of the nominated list — a deterministic cold
304
+ * start, not an empty menu.
305
+ *
306
+ * @param menu the owner's `'senior-menu'` commands, already order-sorted. It is
307
+ * both the pool the ranking draws membership from and the authored order the
308
+ * survivors are laid back out in.
309
+ * @param catalogue the owner's whole `'catalogue'` surface, already
310
+ * order-sorted. Read only for its length, to decide whether the owner
311
+ * overflows at all; it contributes no candidate.
312
+ * @param statsOf per-user measure; `undefined` for a command never invoked
313
+ */
314
+ export function selectSeniorMenuCommands(menu, catalogue, statsOf) {
315
+ if (catalogue.length <= SENIOR_MENU_CAP) {
316
+ return { commands: menu, overflow: false };
317
+ }
318
+ const authored = new Map(menu.map((command, index) => [command, index]));
319
+ const order = (command) => authored.get(command) ?? 0;
320
+ // (7, 6): thirteen icon buttons, plus the "More artefacts…" one, is the cap.
321
+ const { commands } = pickByUsage(menu, statsOf, MENU_RECENT_SLOTS, MENU_USED_SLOTS);
322
+ return {
323
+ commands: commands.sort((a, b) => order(a) - order(b)),
324
+ overflow: true,
325
+ };
326
+ }
327
+ /**
328
+ * The shared arbitration, over whatever pool its caller hands it: `recentSlots`
329
+ * by recency plus `usedSlots` by frequency, deduplicated.
330
+ *
331
+ * The two slot counts are PARAMETERS rather than constants because the two
332
+ * consumers share this ranking and not its magnitude — the sub-menu passes
333
+ * (7, 6) for a row of icon buttons, the sidepanel head (4, 3) for a vertical
334
+ * list of 44px rows. One arbitration, two parameterisations, still never two
335
+ * opinions.
336
+ *
337
+ * Recency goes FIRST since the PO's re-arbitration of 2026-08-28 (it was 4
338
+ * most-used + 3 most-recent): what a user reached for this morning is what they
339
+ * are still working on, and a row that leads with the all-time workhorses is a
340
+ * row that takes weeks to notice a new habit. So a command that tops BOTH axes
341
+ * consumes a RECENT slot, and the most-used slot it would have taken goes to
342
+ * the next candidate down the frequency ranking — which is what the backfill
343
+ * loop below does by walking `mostUsed` whole rather than only its head.
344
+ *
345
+ * Returned in PICK order (the recency ranks first, the frequency additions
346
+ * after); each consumer imposes its own display order. The `stats` map is
347
+ * returned with them so a consumer that filters on "was this ever measured?"
348
+ * does not ask the store a second time — see {@link rankCommandsByUsage}.
349
+ */
350
+ function pickByUsage(pool, statsOf, recentSlots, usedSlots) {
351
+ const authored = new Map(pool.map((command, index) => [command, index]));
352
+ const order = (command) => authored.get(command) ?? 0;
353
+ // One read per command per selection: the store answers from storage, and the
354
+ // two axes would otherwise ask it the same question twice.
355
+ const stats = new Map(pool.map(c => [c, statsOf(c.id)]));
356
+ const rankBy = (primary, secondary) => [...pool].sort((a, b) => {
357
+ const left = stats.get(a);
358
+ const right = stats.get(b);
359
+ // A command nobody ever invoked ranks after every command somebody did,
360
+ // on either axis — it has no measure, not a low one.
361
+ if (!left || !right) {
362
+ return left ? -1 : right ? 1 : order(a) - order(b);
363
+ }
364
+ return (primary(right) - primary(left) ||
365
+ secondary(right) - secondary(left) ||
366
+ order(a) - order(b));
367
+ });
368
+ const mostUsed = rankBy(used => used.count, used => used.lastUsedAt);
369
+ const mostRecent = rankBy(used => used.lastUsedAt, used => used.count);
370
+ const total = recentSlots + usedSlots;
371
+ const chosen = new Set();
372
+ for (const command of mostRecent.slice(0, recentSlots)) {
373
+ chosen.add(command);
374
+ }
375
+ // The `usedSlots` remaining seats, from the frequency ranking: walking it
376
+ // whole rather than only its head is what makes a double pick free its
377
+ // most-used slot for the next candidate instead of wasting it.
378
+ for (const command of mostUsed) {
379
+ if (chosen.size >= total)
380
+ break;
381
+ chosen.add(command);
382
+ }
383
+ return { commands: [...chosen].slice(0, total), stats };
384
+ }
385
+ /**
386
+ * The commands a user actually reaches for, for surfaces that lead with them —
387
+ * the catalogue sidepanel's "recent & frequent" head section (PO recette,
388
+ * 27/08/2026).
389
+ *
390
+ * Same arbitration as the senior sub-menu ({@link pickByUsage}) — one ranking,
391
+ * two consumers, never two opinions — with four deliberate differences:
392
+ *
393
+ * - it seats {@link CATALOGUE_HEAD_RANKED_SLOTS} (4 recent + 3 used), not the
394
+ * sub-menu's thirteen. The two surfaces share the arbitration and not the
395
+ * magnitude: see {@link CATALOGUE_HEAD_RANKED_SLOTS} for why thirteen 44px
396
+ * rows in a 320px panel would bury the categories under the fold.
397
+ * - it ranks the CATALOGUE surface, and keeps doing so after the eligibility
398
+ * ruling of 2026-08-28 narrowed the sub-menu to `'senior-menu'` declarers.
399
+ * That ruling is about the sub-menu, which is a row of things you DRAW; the
400
+ * sidepanel is the full-catalogue surface, the one place every command of a
401
+ * framework is reachable, so a catalogue-only command like `bpmn.exportXml`
402
+ * heading this section is the section working — "here is what you reach for"
403
+ * over a panel that lists everything, not a board action smuggled into a
404
+ * palette. Passing the menu surface here would hide a user's own habits from
405
+ * the very panel built to show them.
406
+ * - only commands that CARRY a measure are returned. The sub-menu backfills
407
+ * with authored order because it must always show something; a "recently
408
+ * used" section padded with the never-used would be a label that lies, so
409
+ * with no usage at all this returns `[]` and the section is simply absent.
410
+ * - the PICK order is kept (the recency ranks, then the frequency additions),
411
+ * not re-sorted by authored order: the section's whole message is "yours,
412
+ * latest first", and it only recomposes when the panel reopens.
413
+ */
414
+ export function rankCommandsByUsage(catalogue, statsOf) {
415
+ const { commands, stats } = pickByUsage(catalogue, statsOf, HEAD_RECENT_SLOTS, HEAD_USED_SLOTS);
416
+ // Through the map the ranking already built, not a second round of store
417
+ // reads: "one read per command per selection" is a promise this function used
418
+ // to break once per returned row.
419
+ return commands.filter(command => stats.get(command) !== undefined);
420
+ }
421
+ /** Resolve an `iconKey` through the registered icon tables. */
422
+ export function getCommandIcon(std, iconKey) {
423
+ if (!iconKey)
424
+ return undefined;
425
+ for (const table of std.provider.getAll(CommandIconsIdentifier).values()) {
426
+ const icon = table[iconKey];
427
+ if (icon)
428
+ return icon;
429
+ }
430
+ return undefined;
431
+ }
@@ -130,5 +130,5 @@ export declare class DndController extends LifeCycleWatcher {
130
130
  */
131
131
  dropTarget<PayloadEntity extends DragEntity = DragEntity, DropData extends {} = {}, PayloadFrom extends DragFrom = DragFromBlockSuite>(args: DropTargetOption<PayloadEntity, PayloadFrom, DropPayload<DropData>>): import("@atlaskit/pragmatic-drag-and-drop/dist/cjs/entry-point/types.js").CleanupFn;
132
132
  monitor<PayloadEntity extends DragEntity = DragEntity, DropData extends {} = {}, PayloadFrom extends DragFrom = DragFromBlockSuite>(args: MonitorOption<PayloadEntity, PayloadFrom, DropPayload<DropData>>): import("@atlaskit/pragmatic-drag-and-drop/dist/cjs/entry-point/types.js").CleanupFn;
133
- autoScroll<PayloadEntity extends DragEntity = DragEntity, PayloadFrom extends DragFrom = DragFromBlockSuite>(options: AutoScroll<PayloadEntity, PayloadFrom>): import("@atlaskit/pragmatic-drag-and-drop/dist/cjs/entry-point/types.js").CleanupFn;
133
+ autoScroll<PayloadEntity extends DragEntity = DragEntity, PayloadFrom extends DragFrom = DragFromBlockSuite>(options: AutoScroll<PayloadEntity, PayloadFrom>): () => void;
134
134
  }
@@ -1,4 +1,5 @@
1
1
  export * from './block-view.js';
2
+ export * from './command-registry.js';
2
3
  export * from './config.js';
3
4
  export * from './dnd/index.js';
4
5
  export * from './editor-life-cycle.js';
@@ -8,4 +9,5 @@ export * from './lifecycle-watcher.js';
8
9
  export * from './service.js';
9
10
  export * from './shortcut.js';
10
11
  export * from './service-manager.js';
12
+ export * from './translation-manifest.js';
11
13
  export * from './widget-view-map.js';
@@ -1,4 +1,5 @@
1
1
  export * from './block-view.js';
2
+ export * from './command-registry.js';
2
3
  export * from './config.js';
3
4
  export * from './dnd/index.js';
4
5
  export * from './editor-life-cycle.js';
@@ -8,4 +9,5 @@ export * from './lifecycle-watcher.js';
8
9
  export * from './service.js';
9
10
  export * from './shortcut.js';
10
11
  export * from './service-manager.js';
12
+ export * from './translation-manifest.js';
11
13
  export * from './widget-view-map.js';
@@ -60,7 +60,8 @@ const LEGACY_MODIFIER = /^(mod|cmd|meta|ctrl|control|alt|shift)$/i;
60
60
  * folded: they are valid chord prefixes.
61
61
  */
62
62
  export function normalizeLegacyCombo(keys) {
63
- if (keys.length > 1 && keys.slice(0, -1).every(k => LEGACY_MODIFIER.test(k))) {
63
+ if (keys.length > 1 &&
64
+ keys.slice(0, -1).every(k => LEGACY_MODIFIER.test(k))) {
64
65
  return [keys.join('-')];
65
66
  }
66
67
  return keys;
@@ -0,0 +1,49 @@
1
+ import { type AnyCommandDescriptor } from './command-registry.js';
2
+ /**
3
+ * The translation-key manifest seam, declared here for the same reason
4
+ * {@link CommandManifestEntry} is: a manifest a framework CONTRIBUTES to must
5
+ * be describable by the framework itself, and `@labre/std` is the only layer
6
+ * every framework package already depends on.
7
+ *
8
+ * The manifest is assembled in `@labre/affine/translations`, but assembled from
9
+ * PARTS: the editor chrome's own entries plus one `…TranslationEntries` export
10
+ * per installed framework. That is what makes it survive the bundled
11
+ * distribution, where `@formicoidea/labre-core` ships WITHOUT the frameworks —
12
+ * exactly the composition the command registry already does (see
13
+ * `packages/affine/all/src/commands.ts` and `scripts/build-bundles.mjs`).
14
+ */
15
+ export type TranslationKeySource = 'command' | 'framework' | 'role' | 'background' | 'rule' | 'nudge' | 'profile' | 'audit-criterion' | 'reading' | 'chrome';
16
+ export interface TranslationKeyManifestEntry {
17
+ key: string;
18
+ /**
19
+ * The English default the library renders when the host's catalogue has no
20
+ * entry. Absent for the keys that deliberately ship none (framework prose
21
+ * whose wording the library must not invent — see the `translateKey`
22
+ * docstring).
23
+ */
24
+ fallback?: string;
25
+ /** Which kind of declaration the key comes from. */
26
+ source: TranslationKeySource;
27
+ }
28
+ /**
29
+ * Deep-walk a declaration and collect every `…Key` string property holding a
30
+ * `com.labre.*` key, paired with its fallback by the repo's own conventions:
31
+ * `<stem>Key` ↔ `<stem>Fallback` (roles, rules, commands, conventions), and
32
+ * `labelKey` ↔ `fallback` (profiles, nudges, criteria, background labels).
33
+ *
34
+ * This is what makes the manifest DERIVED rather than restated: a key added to
35
+ * a rule or a role shows up with no further work.
36
+ */
37
+ export declare function collectTranslationKeys(source: TranslationKeySource, value: unknown): TranslationKeyManifestEntry[];
38
+ /**
39
+ * A command group's contribution. Walks the SERIALIZABLE projection, not the
40
+ * descriptors: `run` and the zod schemas carry no keys and walking them would
41
+ * mean walking zod internals.
42
+ */
43
+ export declare function commandTranslationEntries(commands: readonly AnyCommandDescriptor[]): TranslationKeyManifestEntry[];
44
+ /**
45
+ * Compose contributions into one manifest: first occurrence of a key wins (so
46
+ * the caller's order decides which `source` a shared key reports), sorted by
47
+ * key so two hosts composing the same parts get the same list.
48
+ */
49
+ export declare function mergeTranslationEntries(...groups: readonly (readonly TranslationKeyManifestEntry[])[]): TranslationKeyManifestEntry[];
@@ -0,0 +1,71 @@
1
+ import { toCommandManifestEntry, } from './command-registry.js';
2
+ const KEY_PREFIX = 'com.labre.';
3
+ function walk(source, value, out, seen) {
4
+ if (typeof value !== 'object' || value === null)
5
+ return;
6
+ if (seen.has(value))
7
+ return;
8
+ seen.add(value);
9
+ if (Array.isArray(value)) {
10
+ for (const item of value)
11
+ walk(source, item, out, seen);
12
+ return;
13
+ }
14
+ const record = value;
15
+ for (const [prop, propValue] of Object.entries(record)) {
16
+ if (typeof propValue === 'string' &&
17
+ prop.endsWith('Key') &&
18
+ propValue.startsWith(KEY_PREFIX)) {
19
+ if (out.has(propValue))
20
+ continue;
21
+ const stem = prop.slice(0, -'Key'.length);
22
+ const fallback = record[`${stem}Fallback`] ??
23
+ (prop === 'labelKey' ? record.fallback : undefined);
24
+ out.set(propValue, {
25
+ key: propValue,
26
+ ...(typeof fallback === 'string' ? { fallback } : {}),
27
+ source,
28
+ });
29
+ }
30
+ else {
31
+ walk(source, propValue, out, seen);
32
+ }
33
+ }
34
+ }
35
+ /**
36
+ * Deep-walk a declaration and collect every `…Key` string property holding a
37
+ * `com.labre.*` key, paired with its fallback by the repo's own conventions:
38
+ * `<stem>Key` ↔ `<stem>Fallback` (roles, rules, commands, conventions), and
39
+ * `labelKey` ↔ `fallback` (profiles, nudges, criteria, background labels).
40
+ *
41
+ * This is what makes the manifest DERIVED rather than restated: a key added to
42
+ * a rule or a role shows up with no further work.
43
+ */
44
+ export function collectTranslationKeys(source, value) {
45
+ const out = new Map();
46
+ walk(source, value, out, new WeakSet());
47
+ return [...out.values()];
48
+ }
49
+ /**
50
+ * A command group's contribution. Walks the SERIALIZABLE projection, not the
51
+ * descriptors: `run` and the zod schemas carry no keys and walking them would
52
+ * mean walking zod internals.
53
+ */
54
+ export function commandTranslationEntries(commands) {
55
+ return collectTranslationKeys('command', commands.map(toCommandManifestEntry));
56
+ }
57
+ /**
58
+ * Compose contributions into one manifest: first occurrence of a key wins (so
59
+ * the caller's order decides which `source` a shared key reports), sorted by
60
+ * key so two hosts composing the same parts get the same list.
61
+ */
62
+ export function mergeTranslationEntries(...groups) {
63
+ const out = new Map();
64
+ for (const group of groups) {
65
+ for (const entry of group) {
66
+ if (!out.has(entry.key))
67
+ out.set(entry.key, entry);
68
+ }
69
+ }
70
+ return [...out.values()].sort((a, b) => a.key.localeCompare(b.key));
71
+ }
@@ -1,5 +1,5 @@
1
1
  import { DisposableGroup } from '../../global/disposable/index.js';
2
- import { Bound, getBoundWithRotation, intersects, } from '../../global/gfx/index.js';
2
+ import { Bound, getBoundWithRotation, intersects } from '../../global/gfx/index.js';
3
3
  import { compare } from '../utils/layer.js';
4
4
  import { GfxExtension } from './extension.js';
5
5
  import { GfxBlockElementModel } from './model/gfx-block-model.js';
@@ -1,6 +1,6 @@
1
1
  export { generateKeyBetweenV2 } from '../utils/fractional-indexing.js';
2
2
  export { compare as compareLayer, renderableInEdgeless, SortOrder, } from '../utils/layer.js';
3
- export { canSafeAddToContainer, descendantElementsImpl, getTopElements, hasDescendantElementImpl, } from '../utils/tree.js';
3
+ export { batchAddChildren, batchRemoveChildren, canSafeAddToContainer, descendantElementsImpl, getTopElements, hasDescendantElementImpl, } from '../utils/tree.js';
4
4
  export { GfxController } from './controller.js';
5
5
  export type { CursorType, StandardCursor } from './cursor.js';
6
6
  export { GfxExtension, GfxExtensionIdentifier } from './extension.js';
@@ -13,10 +13,14 @@ export type { GfxCompatibleInterface, GfxElementGeometry, GfxGroupCompatibleInte
13
13
  export { gfxGroupCompatibleSymbol, isGfxGroupCompatibleModel, } from './model/base.js';
14
14
  export { GfxBlockElementModel, type GfxCommonBlockProps, GfxCompatibleBlockModel as GfxCompatible, type GfxCompatibleProps, } from './model/gfx-block-model.js';
15
15
  export { type GfxModel, isPrimitiveModel } from './model/model.js';
16
- export { convert, convertProps, derive, field, getDerivedProps, getFieldPropsSet, initializeObservers, initializeWatchers, local, observe, updateDerivedProps, watch, } from './model/surface/decorators/index.js';
17
- export { type BaseElementProps, GfxGroupLikeElementModel, GfxPrimitiveElementModel, type SerializedElement, } from './model/surface/element-model.js';
16
+ export { convert, convertProps, derive, field, getDerivedProps, getFieldPropsSet, getLocalPropsSet, initializeObservers, initializeWatchers, local, observe, updateDerivedProps, watch, } from './model/surface/decorators/index.js';
17
+ export { type BaseElementProps, type ForeignInterchange, type InterchangeScope, GfxGroupLikeElementModel, GfxPrimitiveElementModel, type SerializedElement, type ValidationException, } from './model/surface/element-model.js';
18
18
  export { GfxLocalElementModel, prop, } from './model/surface/local-element-model.js';
19
+ export { collectPivotOccurrences, isPivotBound, type PivotBoundElement, type PivotOccurrence, } from './model/surface/pivot.js';
20
+ export { type EdgeDirectionDef, findRoleDef, isTypedEdgeRole, type RoleDef, type RoleDefs, type RoleId, roleIsA, type RoleKind, RoleVocabularyExtension, RoleVocabularyIdentifier, } from './model/surface/role.js';
21
+ export { ELEMENT_TAGS_FIELD, type ElementTags, elementTagValues, hasElementTagValue, readElementTags, setElementTag, tagsPropToY, } from './model/surface/tags.js';
19
22
  export { SURFACE_TEXT_UNIQ_IDENTIFIER, SURFACE_YMAP_UNIQ_IDENTIFIER, SurfaceBlockModel, type SurfaceBlockProps, type SurfaceMiddleware, } from './model/surface/surface-model.js';
23
+ export { measureOperation } from './perf.js';
20
24
  export { GfxSelectionManager } from './selection.js';
21
25
  export { SurfaceMiddlewareBuilder, SurfaceMiddlewareExtension, } from './surface-middleware.js';
22
26
  export { BaseTool, type ToolOptions, type ToolOptionWithType, type ToolType, } from './tool/tool.js';
@@ -1,6 +1,6 @@
1
1
  export { generateKeyBetweenV2 } from '../utils/fractional-indexing.js';
2
2
  export { compare as compareLayer, renderableInEdgeless, SortOrder, } from '../utils/layer.js';
3
- export { canSafeAddToContainer, descendantElementsImpl, getTopElements, hasDescendantElementImpl, } from '../utils/tree.js';
3
+ export { batchAddChildren, batchRemoveChildren, canSafeAddToContainer, descendantElementsImpl, getTopElements, hasDescendantElementImpl, } from '../utils/tree.js';
4
4
  export { GfxController } from './controller.js';
5
5
  export { GfxExtension, GfxExtensionIdentifier } from './extension.js';
6
6
  export { GridManager } from './grid.js';
@@ -10,10 +10,14 @@ export { LayerManager } from './layer.js';
10
10
  export { gfxGroupCompatibleSymbol, isGfxGroupCompatibleModel, } from './model/base.js';
11
11
  export { GfxBlockElementModel, GfxCompatibleBlockModel as GfxCompatible, } from './model/gfx-block-model.js';
12
12
  export { isPrimitiveModel } from './model/model.js';
13
- export { convert, convertProps, derive, field, getDerivedProps, getFieldPropsSet, initializeObservers, initializeWatchers, local, observe, updateDerivedProps, watch, } from './model/surface/decorators/index.js';
13
+ export { convert, convertProps, derive, field, getDerivedProps, getFieldPropsSet, getLocalPropsSet, initializeObservers, initializeWatchers, local, observe, updateDerivedProps, watch, } from './model/surface/decorators/index.js';
14
14
  export { GfxGroupLikeElementModel, GfxPrimitiveElementModel, } from './model/surface/element-model.js';
15
15
  export { GfxLocalElementModel, prop, } from './model/surface/local-element-model.js';
16
+ export { collectPivotOccurrences, isPivotBound, } from './model/surface/pivot.js';
17
+ export { findRoleDef, isTypedEdgeRole, roleIsA, RoleVocabularyExtension, RoleVocabularyIdentifier, } from './model/surface/role.js';
18
+ export { ELEMENT_TAGS_FIELD, elementTagValues, hasElementTagValue, readElementTags, setElementTag, tagsPropToY, } from './model/surface/tags.js';
16
19
  export { SURFACE_TEXT_UNIQ_IDENTIFIER, SURFACE_YMAP_UNIQ_IDENTIFIER, SurfaceBlockModel, } from './model/surface/surface-model.js';
20
+ export { measureOperation } from './perf.js';
17
21
  export { GfxSelectionManager } from './selection.js';
18
22
  export { SurfaceMiddlewareBuilder, SurfaceMiddlewareExtension, } from './surface-middleware.js';
19
23
  export { BaseTool, } from './tool/tool.js';