@formicoidea/labre-core 0.31.0 → 0.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (483) hide show
  1. package/dist/_pkgs/affine-block-callout/callout-block.d.ts +6 -0
  2. package/dist/_pkgs/affine-block-callout/callout-block.js +25 -3
  3. package/dist/_pkgs/affine-block-callout/callout-keymap.js +59 -19
  4. package/dist/_pkgs/affine-block-callout/commands/callout-to-paragraph.d.ts +20 -0
  5. package/dist/_pkgs/affine-block-callout/commands/callout-to-paragraph.js +60 -0
  6. package/dist/_pkgs/affine-block-callout/commands/split-callout.d.ts +17 -0
  7. package/dist/_pkgs/affine-block-callout/commands/split-callout.js +42 -0
  8. package/dist/_pkgs/affine-block-callout/configs/slash-menu.js +9 -6
  9. package/dist/_pkgs/affine-block-callout/emoji-margin.d.ts +9 -0
  10. package/dist/_pkgs/affine-block-callout/emoji-margin.js +36 -0
  11. package/dist/_pkgs/affine-block-callout/emoji-menu.d.ts +5 -1
  12. package/dist/_pkgs/affine-block-callout/emoji-menu.js +5 -0
  13. package/dist/_pkgs/affine-block-code/code-block.d.ts +14 -0
  14. package/dist/_pkgs/affine-block-code/code-block.js +44 -6
  15. package/dist/_pkgs/affine-block-code/code-toolbar/components/code-toolbar.d.ts +2 -0
  16. package/dist/_pkgs/affine-block-code/code-toolbar/components/code-toolbar.js +23 -14
  17. package/dist/_pkgs/affine-block-code/code-toolbar/components/more-menu.d.ts +16 -0
  18. package/dist/_pkgs/affine-block-code/code-toolbar/components/more-menu.js +93 -0
  19. package/dist/_pkgs/affine-block-code/code-toolbar/config.js +52 -5
  20. package/dist/_pkgs/affine-block-code/effects.d.ts +2 -0
  21. package/dist/_pkgs/affine-block-code/effects.js +2 -0
  22. package/dist/_pkgs/affine-block-code/highlight/affine-code-unit.js +6 -1
  23. package/dist/_pkgs/affine-block-code/index.d.ts +1 -0
  24. package/dist/_pkgs/affine-block-code/index.js +1 -0
  25. package/dist/_pkgs/affine-block-code/line-numbers.d.ts +25 -0
  26. package/dist/_pkgs/affine-block-code/line-numbers.js +27 -0
  27. package/dist/_pkgs/affine-block-code/styles.js +31 -0
  28. package/dist/_pkgs/affine-block-data-view/data-view-block.js +1 -0
  29. package/dist/_pkgs/affine-block-database/components/title/index.js +4 -1
  30. package/dist/_pkgs/affine-block-database/configs/slash-menu.js +28 -1
  31. package/dist/_pkgs/affine-block-database/database-block.js +13 -0
  32. package/dist/_pkgs/affine-block-database/properties/paste-url.d.ts +24 -0
  33. package/dist/_pkgs/affine-block-database/properties/paste-url.js +98 -0
  34. package/dist/_pkgs/affine-block-database/properties/rich-text/cell-renderer.js +9 -19
  35. package/dist/_pkgs/affine-block-database/properties/title/text.js +20 -25
  36. package/dist/_pkgs/affine-block-database/views/index.js +1 -0
  37. package/dist/_pkgs/affine-block-edgeless-text/edgeless-text-block.js +10 -0
  38. package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/config.d.ts +3 -0
  39. package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/config.js +48 -1
  40. package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/font-size.d.ts +17 -0
  41. package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/font-size.js +24 -0
  42. package/dist/_pkgs/affine-block-embed-doc/common/doc-trashed.d.ts +9 -0
  43. package/dist/_pkgs/affine-block-embed-doc/common/doc-trashed.js +10 -0
  44. package/dist/_pkgs/affine-block-embed-doc/embed-linked-doc-block/embed-linked-doc-block.js +8 -4
  45. package/dist/_pkgs/affine-block-embed-doc/embed-synced-doc-block/embed-synced-doc-block.d.ts +4 -0
  46. package/dist/_pkgs/affine-block-embed-doc/embed-synced-doc-block/embed-synced-doc-block.js +22 -3
  47. package/dist/_pkgs/affine-block-frame/frame-manager.d.ts +13 -0
  48. package/dist/_pkgs/affine-block-frame/frame-manager.js +32 -2
  49. package/dist/_pkgs/affine-block-latex/styles.js +6 -1
  50. package/dist/_pkgs/affine-block-note/note-edgeless-block.d.ts +9 -0
  51. package/dist/_pkgs/affine-block-note/note-edgeless-block.js +29 -1
  52. package/dist/_pkgs/affine-block-root/commands/pivot-commands.d.ts +37 -0
  53. package/dist/_pkgs/affine-block-root/commands/pivot-commands.js +168 -0
  54. package/dist/_pkgs/affine-block-root/commands/reading-commands.d.ts +23 -0
  55. package/dist/_pkgs/affine-block-root/commands/reading-commands.js +107 -0
  56. package/dist/_pkgs/affine-block-root/commands/tag-commands.d.ts +47 -0
  57. package/dist/_pkgs/affine-block-root/commands/tag-commands.js +159 -0
  58. package/dist/_pkgs/affine-block-root/configs/toolbar.d.ts +1 -0
  59. package/dist/_pkgs/affine-block-root/edgeless/configs/toolbar/more.js +9 -2
  60. package/dist/_pkgs/affine-block-root/edgeless/configs/toolbar/render-linked-doc.js +1 -1
  61. package/dist/_pkgs/affine-block-root/edgeless/edgeless-keyboard.js +26 -1
  62. package/dist/_pkgs/affine-block-root/edgeless/edgeless-root-block.js +11 -2
  63. package/dist/_pkgs/affine-block-root/edgeless/edgeless-root-service.js +14 -0
  64. package/dist/_pkgs/affine-block-root/edgeless/index.d.ts +1 -0
  65. package/dist/_pkgs/affine-block-root/edgeless/index.js +1 -0
  66. package/dist/_pkgs/affine-block-root/edgeless/reserved-keys.d.ts +21 -0
  67. package/dist/_pkgs/affine-block-root/edgeless/reserved-keys.js +34 -0
  68. package/dist/_pkgs/affine-block-root/edgeless/utils/clone-utils.d.ts +7 -1
  69. package/dist/_pkgs/affine-block-root/edgeless/utils/clone-utils.js +11 -2
  70. package/dist/_pkgs/affine-block-root/index.d.ts +4 -1
  71. package/dist/_pkgs/affine-block-root/index.js +4 -1
  72. package/dist/_pkgs/affine-block-root/keyboard/commands.d.ts +2 -0
  73. package/dist/_pkgs/affine-block-root/keyboard/commands.js +147 -0
  74. package/dist/_pkgs/affine-block-root/view.js +13 -4
  75. package/dist/_pkgs/affine-block-surface/commands/reassociate-connectors.js +0 -1
  76. package/dist/_pkgs/affine-block-surface/effects.js +6 -0
  77. package/dist/_pkgs/affine-block-surface/element-model/index.d.ts +5 -2
  78. package/dist/_pkgs/affine-block-surface/element-model/index.js +4 -2
  79. package/dist/_pkgs/affine-block-surface/extensions/audit.d.ts +107 -0
  80. package/dist/_pkgs/affine-block-surface/extensions/audit.js +472 -0
  81. package/dist/_pkgs/affine-block-surface/extensions/crud-extension.d.ts +14 -0
  82. package/dist/_pkgs/affine-block-surface/extensions/crud-extension.js +27 -0
  83. package/dist/_pkgs/affine-block-surface/extensions/editor-anchored-panel.d.ts +133 -0
  84. package/dist/_pkgs/affine-block-surface/extensions/editor-anchored-panel.js +326 -0
  85. package/dist/_pkgs/affine-block-surface/extensions/index.d.ts +13 -0
  86. package/dist/_pkgs/affine-block-surface/extensions/index.js +13 -0
  87. package/dist/_pkgs/affine-block-surface/extensions/map-quality-widget.d.ts +146 -0
  88. package/dist/_pkgs/affine-block-surface/extensions/map-quality-widget.js +528 -0
  89. package/dist/_pkgs/affine-block-surface/extensions/map-quality.d.ts +109 -0
  90. package/dist/_pkgs/affine-block-surface/extensions/map-quality.js +84 -0
  91. package/dist/_pkgs/affine-block-surface/extensions/reading-toolbar.d.ts +15 -0
  92. package/dist/_pkgs/affine-block-surface/extensions/reading-toolbar.js +158 -0
  93. package/dist/_pkgs/affine-block-surface/extensions/reading-widget.d.ts +145 -0
  94. package/dist/_pkgs/affine-block-surface/extensions/reading-widget.js +590 -0
  95. package/dist/_pkgs/affine-block-surface/extensions/reading.d.ts +494 -0
  96. package/dist/_pkgs/affine-block-surface/extensions/reading.js +767 -0
  97. package/dist/_pkgs/affine-block-surface/extensions/spotlight.d.ts +45 -0
  98. package/dist/_pkgs/affine-block-surface/extensions/spotlight.js +177 -0
  99. package/dist/_pkgs/affine-block-surface/extensions/tags-toolbar.d.ts +10 -0
  100. package/dist/_pkgs/affine-block-surface/extensions/tags-toolbar.js +295 -0
  101. package/dist/_pkgs/affine-block-surface/extensions/validation-toolbar.d.ts +27 -0
  102. package/dist/_pkgs/affine-block-surface/extensions/validation-toolbar.js +361 -0
  103. package/dist/_pkgs/affine-block-surface/extensions/validation.d.ts +1340 -0
  104. package/dist/_pkgs/affine-block-surface/extensions/validation.js +3009 -0
  105. package/dist/_pkgs/affine-block-surface/extensions/violation-detail-widget.d.ts +286 -0
  106. package/dist/_pkgs/affine-block-surface/extensions/violation-detail-widget.js +907 -0
  107. package/dist/_pkgs/affine-block-surface/extensions/violation-timeline.d.ts +80 -0
  108. package/dist/_pkgs/affine-block-surface/extensions/violation-timeline.js +123 -0
  109. package/dist/_pkgs/affine-block-surface/framework-background/def.d.ts +321 -0
  110. package/dist/_pkgs/affine-block-surface/framework-background/def.js +81 -0
  111. package/dist/_pkgs/affine-block-surface/framework-background/facts.d.ts +188 -0
  112. package/dist/_pkgs/affine-block-surface/framework-background/facts.js +284 -0
  113. package/dist/_pkgs/affine-block-surface/framework-background/index.d.ts +5 -0
  114. package/dist/_pkgs/affine-block-surface/framework-background/index.js +5 -0
  115. package/dist/_pkgs/affine-block-surface/framework-background/interaction.d.ts +12 -0
  116. package/dist/_pkgs/affine-block-surface/framework-background/interaction.js +24 -0
  117. package/dist/_pkgs/affine-block-surface/framework-background/labels.d.ts +59 -0
  118. package/dist/_pkgs/affine-block-surface/framework-background/labels.js +117 -0
  119. package/dist/_pkgs/affine-block-surface/framework-background/renderer.d.ts +8 -0
  120. package/dist/_pkgs/affine-block-surface/framework-background/renderer.js +238 -0
  121. package/dist/_pkgs/affine-block-surface/index.d.ts +1 -0
  122. package/dist/_pkgs/affine-block-surface/index.js +1 -0
  123. package/dist/_pkgs/affine-block-surface/renderer/canvas-renderer.d.ts +69 -3
  124. package/dist/_pkgs/affine-block-surface/renderer/canvas-renderer.js +333 -44
  125. package/dist/_pkgs/affine-block-surface/renderer/dom-renderer.js +18 -2
  126. package/dist/_pkgs/affine-block-surface/tool/default-tool.js +8 -0
  127. package/dist/_pkgs/affine-block-surface/utils/font.js +9 -3
  128. package/dist/_pkgs/affine-block-surface/view.d.ts +17 -0
  129. package/dist/_pkgs/affine-block-surface/view.js +57 -2
  130. package/dist/_pkgs/affine-block-table/selection-controller.d.ts +6 -0
  131. package/dist/_pkgs/affine-block-table/selection-controller.js +24 -1
  132. package/dist/_pkgs/affine-block-table/table-block.js +8 -2
  133. package/dist/_pkgs/affine-block-table/table-cell.js +5 -6
  134. package/dist/_pkgs/affine-block-table/table-keymap.d.ts +18 -0
  135. package/dist/_pkgs/affine-block-table/table-keymap.js +41 -0
  136. package/dist/_pkgs/affine-block-table/utils.d.ts +7 -0
  137. package/dist/_pkgs/affine-block-table/utils.js +12 -0
  138. package/dist/_pkgs/affine-block-table/view.js +2 -0
  139. package/dist/_pkgs/affine-components/caption/captioned-block-component.js +2 -1
  140. package/dist/_pkgs/affine-components/context-menu/button.d.ts +7 -0
  141. package/dist/_pkgs/affine-components/context-menu/button.js +7 -2
  142. package/dist/_pkgs/affine-components/context-menu/input.d.ts +4 -0
  143. package/dist/_pkgs/affine-components/context-menu/input.js +12 -0
  144. package/dist/_pkgs/affine-components/context-menu/menu-all.d.ts +2 -0
  145. package/dist/_pkgs/affine-components/context-menu/menu-renderer.js +8 -1
  146. package/dist/_pkgs/affine-components/context-menu/sub-menu.js +3 -0
  147. package/dist/_pkgs/affine-components/highlight-dropdown-menu/highlight-duotone-icon.js +8 -8
  148. package/dist/_pkgs/affine-components/highlight-dropdown-menu/text-duotone-icon.js +11 -11
  149. package/dist/_pkgs/affine-components/icon-picker/affine-icon-picker-panel.d.ts +28 -0
  150. package/dist/_pkgs/affine-components/icon-picker/affine-icon-picker-panel.js +231 -0
  151. package/dist/_pkgs/affine-components/icon-picker/emoji-data.d.ts +40 -0
  152. package/dist/_pkgs/affine-components/icon-picker/emoji-data.js +99 -0
  153. package/dist/_pkgs/affine-components/icon-picker/emoji-picker-panel.d.ts +32 -0
  154. package/dist/_pkgs/affine-components/icon-picker/emoji-picker-panel.js +276 -0
  155. package/dist/_pkgs/affine-components/icon-picker/icon-data.d.ts +34 -0
  156. package/dist/_pkgs/affine-components/icon-picker/icon-data.js +83 -0
  157. package/dist/_pkgs/affine-components/icon-picker/icon-picker.d.ts +39 -0
  158. package/dist/_pkgs/affine-components/icon-picker/icon-picker.js +233 -0
  159. package/dist/_pkgs/affine-components/icon-picker/index.d.ts +8 -0
  160. package/dist/_pkgs/affine-components/icon-picker/index.js +15 -0
  161. package/dist/_pkgs/affine-components/icon-picker/recent-store.d.ts +8 -0
  162. package/dist/_pkgs/affine-components/icon-picker/recent-store.js +41 -0
  163. package/dist/_pkgs/affine-components/icon-picker/styles.d.ts +5 -0
  164. package/dist/_pkgs/affine-components/icon-picker/styles.js +166 -0
  165. package/dist/_pkgs/affine-components/icon-picker/types.d.ts +22 -0
  166. package/dist/_pkgs/affine-components/icon-picker/types.js +10 -0
  167. package/dist/_pkgs/affine-components/icons/text.js +426 -426
  168. package/dist/_pkgs/affine-components/open-doc-dropdown-menu/dropdown-menu.d.ts +1 -0
  169. package/dist/_pkgs/affine-components/portal/portal.d.ts +1 -1
  170. package/dist/_pkgs/affine-components/toolbar/menu-button.js +1 -0
  171. package/dist/_pkgs/affine-components/toolbar/toolbar.js +11 -10
  172. package/dist/_pkgs/affine-foundation/view.js +11 -2
  173. package/dist/_pkgs/affine-gfx-brush/index.d.ts +1 -0
  174. package/dist/_pkgs/affine-gfx-brush/index.js +1 -0
  175. package/dist/_pkgs/affine-gfx-brush/renderer/dom/brush.d.ts +1 -0
  176. package/dist/_pkgs/affine-gfx-brush/renderer/dom/brush.js +11 -0
  177. package/dist/_pkgs/affine-gfx-brush/renderer/dom/highlighter.d.ts +1 -0
  178. package/dist/_pkgs/affine-gfx-brush/renderer/dom/highlighter.js +11 -0
  179. package/dist/_pkgs/affine-gfx-brush/renderer/dom/index.d.ts +2 -0
  180. package/dist/_pkgs/affine-gfx-brush/renderer/dom/index.js +2 -0
  181. package/dist/_pkgs/affine-gfx-brush/renderer/dom/shared.d.ts +14 -0
  182. package/dist/_pkgs/affine-gfx-brush/renderer/dom/shared.js +54 -0
  183. package/dist/_pkgs/affine-gfx-brush/renderer/index.d.ts +1 -0
  184. package/dist/_pkgs/affine-gfx-brush/renderer/index.js +4 -0
  185. package/dist/_pkgs/affine-gfx-brush/view.d.ts +14 -0
  186. package/dist/_pkgs/affine-gfx-brush/view.js +29 -3
  187. package/dist/_pkgs/affine-gfx-connector/connector-manager.js +32 -6
  188. package/dist/_pkgs/affine-gfx-connector/connector-tool.d.ts +7 -0
  189. package/dist/_pkgs/affine-gfx-connector/connector-tool.js +2 -1
  190. package/dist/_pkgs/affine-gfx-connector/direction/direction-reveal.d.ts +123 -0
  191. package/dist/_pkgs/affine-gfx-connector/direction/direction-reveal.js +281 -0
  192. package/dist/_pkgs/affine-gfx-connector/direction/direction-widget.d.ts +65 -0
  193. package/dist/_pkgs/affine-gfx-connector/direction/direction-widget.js +395 -0
  194. package/dist/_pkgs/affine-gfx-connector/direction/index.d.ts +4 -0
  195. package/dist/_pkgs/affine-gfx-connector/direction/index.js +4 -0
  196. package/dist/_pkgs/affine-gfx-connector/direction/invert-direction.d.ts +72 -0
  197. package/dist/_pkgs/affine-gfx-connector/direction/invert-direction.js +187 -0
  198. package/dist/_pkgs/affine-gfx-connector/direction/typed-edge.d.ts +69 -0
  199. package/dist/_pkgs/affine-gfx-connector/direction/typed-edge.js +66 -0
  200. package/dist/_pkgs/affine-gfx-connector/effects.d.ts +2 -0
  201. package/dist/_pkgs/affine-gfx-connector/effects.js +2 -0
  202. package/dist/_pkgs/affine-gfx-connector/element-renderer/connector-dom/index.js +78 -41
  203. package/dist/_pkgs/affine-gfx-connector/index.d.ts +1 -0
  204. package/dist/_pkgs/affine-gfx-connector/index.js +1 -0
  205. package/dist/_pkgs/affine-gfx-connector/toolbar/config.d.ts +50 -0
  206. package/dist/_pkgs/affine-gfx-connector/toolbar/config.js +67 -1
  207. package/dist/_pkgs/affine-gfx-connector/view.js +16 -0
  208. package/dist/_pkgs/affine-gfx-group/command/group-api.js +150 -62
  209. package/dist/_pkgs/affine-gfx-group/text/edgeless-group-title-editor.js +4 -1
  210. package/dist/_pkgs/affine-gfx-pointer/tools/pan-tool.d.ts +16 -0
  211. package/dist/_pkgs/affine-gfx-pointer/tools/pan-tool.js +102 -32
  212. package/dist/_pkgs/affine-gfx-shape/commands.d.ts +2 -0
  213. package/dist/_pkgs/affine-gfx-shape/commands.js +33 -0
  214. package/dist/_pkgs/affine-gfx-shape/element-renderer/shape-dom/index.js +48 -19
  215. package/dist/_pkgs/affine-gfx-shape/index.d.ts +1 -1
  216. package/dist/_pkgs/affine-gfx-shape/index.js +1 -1
  217. package/dist/_pkgs/affine-gfx-shape/text/edgeless-shape-text-editor.d.ts +26 -0
  218. package/dist/_pkgs/affine-gfx-shape/text/edgeless-shape-text-editor.js +124 -13
  219. package/dist/_pkgs/affine-gfx-shape/view.js +3 -3
  220. package/dist/_pkgs/affine-gfx-template/toolbar/template-tool-button.d.ts +2 -0
  221. package/dist/_pkgs/affine-gfx-template/toolbar/template-tool-button.js +18 -1
  222. package/dist/_pkgs/affine-gfx-text/edgeless-text-editor.js +9 -5
  223. package/dist/_pkgs/affine-inline-latex/command.js +46 -26
  224. package/dist/_pkgs/affine-inline-latex/latex-node/latex-node.d.ts +10 -0
  225. package/dist/_pkgs/affine-inline-latex/latex-node/latex-node.js +23 -0
  226. package/dist/_pkgs/affine-inline-link/link-node/affine-link.js +4 -1
  227. package/dist/_pkgs/affine-inline-preset/adapters/html/html-inline.d.ts +3 -0
  228. package/dist/_pkgs/affine-inline-preset/adapters/html/html-inline.js +29 -1
  229. package/dist/_pkgs/affine-model/blocks/code/code-model.d.ts +1 -0
  230. package/dist/_pkgs/affine-model/blocks/code/code-model.js +1 -0
  231. package/dist/_pkgs/affine-model/elements/connector/connector.js +24 -0
  232. package/dist/_pkgs/affine-model/elements/edgy/board.d.ts +32 -0
  233. package/dist/_pkgs/affine-model/elements/edgy/board.js +112 -0
  234. package/dist/_pkgs/affine-model/elements/edgy/facets.d.ts +12 -0
  235. package/dist/_pkgs/affine-model/elements/edgy/facets.js +25 -1
  236. package/dist/_pkgs/affine-model/elements/edgy/index.d.ts +1 -0
  237. package/dist/_pkgs/affine-model/elements/edgy/index.js +1 -0
  238. package/dist/_pkgs/affine-model/elements/framework-background/background.d.ts +42 -0
  239. package/dist/_pkgs/affine-model/elements/framework-background/background.js +42 -0
  240. package/dist/_pkgs/affine-model/elements/framework-background/index.d.ts +1 -0
  241. package/dist/_pkgs/affine-model/elements/framework-background/index.js +1 -0
  242. package/dist/_pkgs/affine-model/elements/index.d.ts +3 -1
  243. package/dist/_pkgs/affine-model/elements/index.js +1 -0
  244. package/dist/_pkgs/affine-model/elements/mindmap/mindmap.js +8 -3
  245. package/dist/_pkgs/affine-model/elements/mindmap/style.d.ts +10 -0
  246. package/dist/_pkgs/affine-model/elements/mindmap/style.js +8 -0
  247. package/dist/_pkgs/affine-model/elements/wardley/wardley.d.ts +21 -29
  248. package/dist/_pkgs/affine-model/elements/wardley/wardley.js +41 -48
  249. package/dist/_pkgs/affine-shared/adapters/markdown/delta-converter.d.ts +6 -1
  250. package/dist/_pkgs/affine-shared/adapters/markdown/delta-converter.js +160 -2
  251. package/dist/_pkgs/affine-shared/adapters/markdown/markdown.js +5 -1
  252. package/dist/_pkgs/affine-shared/adapters/types/delta-converter.d.ts +1 -0
  253. package/dist/_pkgs/affine-shared/adapters/utils/color.d.ts +24 -0
  254. package/dist/_pkgs/affine-shared/adapters/utils/color.js +280 -0
  255. package/dist/_pkgs/affine-shared/adapters/utils/index.d.ts +1 -0
  256. package/dist/_pkgs/affine-shared/adapters/utils/index.js +1 -0
  257. package/dist/_pkgs/affine-shared/commands/block-crud/get-selected-blocks.js +10 -2
  258. package/dist/_pkgs/affine-shared/services/audit-service.d.ts +300 -0
  259. package/dist/_pkgs/affine-shared/services/audit-service.js +228 -0
  260. package/dist/_pkgs/affine-shared/services/edit-props-store.d.ts +7 -0
  261. package/dist/_pkgs/affine-shared/services/edit-props-store.js +11 -0
  262. package/dist/_pkgs/affine-shared/services/font-loader/font-loader-service.d.ts +26 -1
  263. package/dist/_pkgs/affine-shared/services/font-loader/font-loader-service.js +124 -7
  264. package/dist/_pkgs/affine-shared/services/index.d.ts +5 -0
  265. package/dist/_pkgs/affine-shared/services/index.js +5 -0
  266. package/dist/_pkgs/affine-shared/services/pivot-materiality-publisher.d.ts +129 -0
  267. package/dist/_pkgs/affine-shared/services/pivot-materiality-publisher.js +311 -0
  268. package/dist/_pkgs/affine-shared/services/pivot-properties-service.d.ts +217 -0
  269. package/dist/_pkgs/affine-shared/services/pivot-properties-service.js +114 -0
  270. package/dist/_pkgs/affine-shared/services/telemetry-service/code-block.d.ts +1 -1
  271. package/dist/_pkgs/affine-shared/services/telemetry-service/lifecycle.d.ts +182 -0
  272. package/dist/_pkgs/affine-shared/services/telemetry-service/telemetry-service.d.ts +2 -2
  273. package/dist/_pkgs/affine-shared/services/telemetry-service/types.d.ts +6 -1
  274. package/dist/_pkgs/affine-shared/services/toolbar-service/action.d.ts +10 -0
  275. package/dist/_pkgs/affine-shared/services/toolbar-service/index.d.ts +1 -0
  276. package/dist/_pkgs/affine-shared/services/toolbar-service/index.js +1 -0
  277. package/dist/_pkgs/affine-shared/services/toolbar-service/layout.d.ts +134 -0
  278. package/dist/_pkgs/affine-shared/services/toolbar-service/layout.js +146 -0
  279. package/dist/_pkgs/affine-shared/services/translation-service/index.d.ts +68 -0
  280. package/dist/_pkgs/affine-shared/services/translation-service/index.js +39 -0
  281. package/dist/_pkgs/affine-shared/services/universe-tag-defs-service.d.ts +155 -0
  282. package/dist/_pkgs/affine-shared/services/universe-tag-defs-service.js +254 -0
  283. package/dist/_pkgs/affine-shared/utils/dom/point-to-range.d.ts +4 -0
  284. package/dist/_pkgs/affine-shared/utils/dom/point-to-range.js +58 -2
  285. package/dist/_pkgs/affine-shared/utils/dom/viewport.d.ts +60 -0
  286. package/dist/_pkgs/affine-shared/utils/dom/viewport.js +58 -0
  287. package/dist/_pkgs/affine-shared/utils/print-to-pdf.d.ts +21 -0
  288. package/dist/_pkgs/affine-shared/utils/print-to-pdf.js +166 -32
  289. package/dist/_pkgs/affine-shared/utils/zod-schema.d.ts +7 -0
  290. package/dist/_pkgs/affine-shared/utils/zod-schema.js +27 -1
  291. package/dist/_pkgs/affine-widget-drag-handle/watchers/edgeless-watcher.d.ts +19 -10
  292. package/dist/_pkgs/affine-widget-drag-handle/watchers/edgeless-watcher.js +122 -23
  293. package/dist/_pkgs/affine-widget-drag-handle/watchers/pointer-event-watcher.d.ts +2 -0
  294. package/dist/_pkgs/affine-widget-drag-handle/watchers/pointer-event-watcher.js +25 -4
  295. package/dist/_pkgs/affine-widget-edgeless-selected-rect/auto-complete-panel.js +10 -5
  296. package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-auto-complete.d.ts +15 -1
  297. package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-auto-complete.js +37 -32
  298. package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-element-link.js +5 -4
  299. package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-selected-rect.js +19 -9
  300. package/dist/_pkgs/affine-widget-edgeless-selected-rect/utils.d.ts +16 -2
  301. package/dist/_pkgs/affine-widget-edgeless-selected-rect/utils.js +19 -2
  302. package/dist/_pkgs/affine-widget-edgeless-toolbar/index.d.ts +1 -0
  303. package/dist/_pkgs/affine-widget-edgeless-toolbar/index.js +1 -0
  304. package/dist/_pkgs/affine-widget-edgeless-toolbar/menu/command-menu.d.ts +38 -0
  305. package/dist/_pkgs/affine-widget-edgeless-toolbar/menu/command-menu.js +99 -0
  306. package/dist/_pkgs/affine-widget-frame-title/edgeless-frame-title-editor.js +4 -1
  307. package/dist/_pkgs/affine-widget-keyboard-toolbar/icons.js +98 -98
  308. package/dist/_pkgs/affine-widget-linked-doc/linked-doc-popover.js +2 -15
  309. package/dist/_pkgs/affine-widget-linked-doc/transformers/markdown.d.ts +10 -1
  310. package/dist/_pkgs/affine-widget-linked-doc/transformers/markdown.js +133 -6
  311. package/dist/_pkgs/affine-widget-linked-doc/transformers/utils.d.ts +10 -0
  312. package/dist/_pkgs/affine-widget-linked-doc/transformers/utils.js +120 -3
  313. package/dist/_pkgs/affine-widget-linked-doc/utils.d.ts +12 -0
  314. package/dist/_pkgs/affine-widget-linked-doc/utils.js +33 -0
  315. package/dist/_pkgs/affine-widget-remote-selection/edgeless/index.js +6 -4
  316. package/dist/_pkgs/affine-widget-slash-menu/slash-menu-popover.js +8 -4
  317. package/dist/_pkgs/affine-widget-slash-menu/utils.d.ts +9 -0
  318. package/dist/_pkgs/affine-widget-slash-menu/utils.js +24 -0
  319. package/dist/_pkgs/affine-widget-toolbar/toolbar.d.ts +6 -0
  320. package/dist/_pkgs/affine-widget-toolbar/toolbar.js +34 -6
  321. package/dist/_pkgs/affine-widget-toolbar/utils.d.ts +146 -3
  322. package/dist/_pkgs/affine-widget-toolbar/utils.js +738 -56
  323. package/dist/_pkgs/data-view/core/common/property-menu.js +3 -16
  324. package/dist/_pkgs/data-view/core/component/tags/multi-tag-select.d.ts +4 -0
  325. package/dist/_pkgs/data-view/core/component/tags/multi-tag-select.js +28 -1
  326. package/dist/_pkgs/data-view/core/data-view.d.ts +3 -1
  327. package/dist/_pkgs/data-view/core/data-view.js +25 -3
  328. package/dist/_pkgs/data-view/core/detail/field.js +2 -2
  329. package/dist/_pkgs/data-view/core/detail/selection.d.ts +4 -2
  330. package/dist/_pkgs/data-view/core/detail/selection.js +23 -7
  331. package/dist/_pkgs/data-view/core/effect.js +2 -0
  332. package/dist/_pkgs/data-view/core/filter/eval.js +36 -23
  333. package/dist/_pkgs/data-view/core/filter/filter-fn/matcher.d.ts +7 -0
  334. package/dist/_pkgs/data-view/core/filter/filter-fn/matcher.js +12 -0
  335. package/dist/_pkgs/data-view/core/group-by/compare-date-keys.d.ts +11 -0
  336. package/dist/_pkgs/data-view/core/group-by/compare-date-keys.js +55 -0
  337. package/dist/_pkgs/data-view/core/group-by/define.d.ts +6 -0
  338. package/dist/_pkgs/data-view/core/group-by/define.js +114 -0
  339. package/dist/_pkgs/data-view/core/group-by/matcher.d.ts +7 -0
  340. package/dist/_pkgs/data-view/core/group-by/matcher.js +13 -0
  341. package/dist/_pkgs/data-view/core/group-by/renderer/boolean-group.js +11 -11
  342. package/dist/_pkgs/data-view/core/group-by/renderer/date-group.d.ts +9 -0
  343. package/dist/_pkgs/data-view/core/group-by/renderer/date-group.js +97 -0
  344. package/dist/_pkgs/data-view/core/group-by/setting.js +86 -7
  345. package/dist/_pkgs/data-view/core/group-by/trait.d.ts +34 -0
  346. package/dist/_pkgs/data-view/core/group-by/trait.js +106 -10
  347. package/dist/_pkgs/data-view/core/utils/menu-title.js +17 -17
  348. package/dist/_pkgs/data-view/property-presets/multi-select/cell-renderer.js +3 -1
  349. package/dist/_pkgs/data-view/property-presets/number/define.js +2 -1
  350. package/dist/_pkgs/data-view/property-presets/select/cell-renderer.js +3 -1
  351. package/dist/_pkgs/data-view/view-presets/calendar/calendar-view-manager.d.ts +70 -0
  352. package/dist/_pkgs/data-view/view-presets/calendar/calendar-view-manager.js +449 -0
  353. package/dist/_pkgs/data-view/view-presets/calendar/define.d.ts +10 -0
  354. package/dist/_pkgs/data-view/view-presets/calendar/define.js +27 -0
  355. package/dist/_pkgs/data-view/view-presets/calendar/effect.d.ts +1 -0
  356. package/dist/_pkgs/data-view/view-presets/calendar/effect.js +4 -0
  357. package/dist/_pkgs/data-view/view-presets/calendar/index.d.ts +6 -0
  358. package/dist/_pkgs/data-view/view-presets/calendar/index.js +6 -0
  359. package/dist/_pkgs/data-view/view-presets/calendar/layout.d.ts +37 -0
  360. package/dist/_pkgs/data-view/view-presets/calendar/layout.js +138 -0
  361. package/dist/_pkgs/data-view/view-presets/calendar/pc/actions.d.ts +7 -0
  362. package/dist/_pkgs/data-view/view-presets/calendar/pc/actions.js +68 -0
  363. package/dist/_pkgs/data-view/view-presets/calendar/pc/dnd.d.ts +32 -0
  364. package/dist/_pkgs/data-view/view-presets/calendar/pc/dnd.js +159 -0
  365. package/dist/_pkgs/data-view/view-presets/calendar/pc/effect.d.ts +1 -0
  366. package/dist/_pkgs/data-view/view-presets/calendar/pc/effect.js +7 -0
  367. package/dist/_pkgs/data-view/view-presets/calendar/pc/hit-test.d.ts +1 -0
  368. package/dist/_pkgs/data-view/view-presets/calendar/pc/hit-test.js +28 -0
  369. package/dist/_pkgs/data-view/view-presets/calendar/pc/styles.d.ts +1 -0
  370. package/dist/_pkgs/data-view/view-presets/calendar/pc/styles.js +707 -0
  371. package/dist/_pkgs/data-view/view-presets/calendar/pc/view.d.ts +89 -0
  372. package/dist/_pkgs/data-view/view-presets/calendar/pc/view.js +837 -0
  373. package/dist/_pkgs/data-view/view-presets/calendar/renderer.d.ts +2 -0
  374. package/dist/_pkgs/data-view/view-presets/calendar/renderer.js +8 -0
  375. package/dist/_pkgs/data-view/view-presets/calendar/source.d.ts +8 -0
  376. package/dist/_pkgs/data-view/view-presets/calendar/source.js +3 -0
  377. package/dist/_pkgs/data-view/view-presets/calendar/types.d.ts +79 -0
  378. package/dist/_pkgs/data-view/view-presets/calendar/types.js +1 -0
  379. package/dist/_pkgs/data-view/view-presets/convert.js +28 -0
  380. package/dist/_pkgs/data-view/view-presets/effect.js +2 -0
  381. package/dist/_pkgs/data-view/view-presets/index.d.ts +2 -0
  382. package/dist/_pkgs/data-view/view-presets/index.js +3 -0
  383. package/dist/_pkgs/data-view/view-presets/kanban/kanban-view-manager.js +3 -1
  384. package/dist/_pkgs/data-view/view-presets/kanban/mobile/cell.js +2 -2
  385. package/dist/_pkgs/data-view/view-presets/table/collapsed-state.d.ts +18 -0
  386. package/dist/_pkgs/data-view/view-presets/table/collapsed-state.js +36 -0
  387. package/dist/_pkgs/data-view/view-presets/table/mobile/cell.js +2 -2
  388. package/dist/_pkgs/data-view/view-presets/table/mobile/group.d.ts +11 -0
  389. package/dist/_pkgs/data-view/view-presets/table/mobile/group.js +87 -4
  390. package/dist/_pkgs/data-view/view-presets/table/pc/cell.d.ts +3 -0
  391. package/dist/_pkgs/data-view/view-presets/table/pc/cell.js +11 -2
  392. package/dist/_pkgs/data-view/view-presets/table/pc/controller/hotkeys.d.ts +1 -0
  393. package/dist/_pkgs/data-view/view-presets/table/pc/controller/hotkeys.js +39 -33
  394. package/dist/_pkgs/data-view/view-presets/table/pc/group.d.ts +10 -0
  395. package/dist/_pkgs/data-view/view-presets/table/pc/group.js +84 -5
  396. package/dist/_pkgs/data-view/view-presets/table/pc-virtual/controller/hotkeys.d.ts +1 -0
  397. package/dist/_pkgs/data-view/view-presets/table/pc-virtual/controller/hotkeys.js +39 -33
  398. package/dist/_pkgs/data-view/view-presets/table/pc-virtual/group/top/group-title.js +18 -18
  399. package/dist/_pkgs/data-view/view-presets/table/pc-virtual/row/cell.d.ts +3 -0
  400. package/dist/_pkgs/data-view/view-presets/table/pc-virtual/row/cell.js +8 -0
  401. package/dist/_pkgs/data-view/view-presets/table/table-view-manager.js +3 -1
  402. package/dist/_pkgs/data-view/view-presets/table/utils.d.ts +3 -0
  403. package/dist/_pkgs/data-view/view-presets/table/utils.js +16 -1
  404. package/dist/_pkgs/data-view/widget-presets/tools/presets/view-options/view-options.js +3 -1
  405. package/dist/_pkgs/global/gfx/curve.js +4 -3
  406. package/dist/_pkgs/std/clipboard/clipboard.js +13 -3
  407. package/dist/_pkgs/std/clipboard/utils.d.ts +5 -0
  408. package/dist/_pkgs/std/clipboard/utils.js +7 -0
  409. package/dist/_pkgs/std/event/dispatcher.js +27 -1
  410. package/dist/_pkgs/std/event/keymap.js +16 -6
  411. package/dist/_pkgs/std/extension/command-registry.d.ts +321 -0
  412. package/dist/_pkgs/std/extension/command-registry.js +233 -0
  413. package/dist/_pkgs/std/extension/dnd/index.d.ts +1 -1
  414. package/dist/_pkgs/std/extension/index.d.ts +2 -0
  415. package/dist/_pkgs/std/extension/index.js +2 -0
  416. package/dist/_pkgs/std/extension/translation-manifest.d.ts +49 -0
  417. package/dist/_pkgs/std/extension/translation-manifest.js +71 -0
  418. package/dist/_pkgs/std/gfx/index.d.ts +7 -3
  419. package/dist/_pkgs/std/gfx/index.js +6 -2
  420. package/dist/_pkgs/std/gfx/interactivity/gfx-view-event-handler.js +6 -1
  421. package/dist/_pkgs/std/gfx/interactivity/manager.d.ts +8 -0
  422. package/dist/_pkgs/std/gfx/interactivity/manager.js +18 -0
  423. package/dist/_pkgs/std/gfx/layer.d.ts +1 -1
  424. package/dist/_pkgs/std/gfx/layer.js +1 -2
  425. package/dist/_pkgs/std/gfx/model/surface/decorators/field.js +9 -0
  426. package/dist/_pkgs/std/gfx/model/surface/decorators/index.d.ts +2 -2
  427. package/dist/_pkgs/std/gfx/model/surface/decorators/index.js +2 -2
  428. package/dist/_pkgs/std/gfx/model/surface/decorators/local.d.ts +14 -0
  429. package/dist/_pkgs/std/gfx/model/surface/decorators/local.js +22 -0
  430. package/dist/_pkgs/std/gfx/model/surface/decorators/observer.d.ts +2 -0
  431. package/dist/_pkgs/std/gfx/model/surface/decorators/observer.js +40 -1
  432. package/dist/_pkgs/std/gfx/model/surface/element-model.d.ts +282 -0
  433. package/dist/_pkgs/std/gfx/model/surface/element-model.js +436 -25
  434. package/dist/_pkgs/std/gfx/model/surface/pivot.d.ts +48 -0
  435. package/dist/_pkgs/std/gfx/model/surface/pivot.js +34 -0
  436. package/dist/_pkgs/std/gfx/model/surface/role.d.ts +153 -0
  437. package/dist/_pkgs/std/gfx/model/surface/role.js +115 -0
  438. package/dist/_pkgs/std/gfx/model/surface/surface-model.d.ts +70 -0
  439. package/dist/_pkgs/std/gfx/model/surface/surface-model.js +304 -17
  440. package/dist/_pkgs/std/gfx/model/surface/tags.d.ts +77 -0
  441. package/dist/_pkgs/std/gfx/model/surface/tags.js +246 -0
  442. package/dist/_pkgs/std/gfx/perf.d.ts +10 -0
  443. package/dist/_pkgs/std/gfx/perf.js +30 -0
  444. package/dist/_pkgs/std/gfx/tool/tool-controller.d.ts +13 -0
  445. package/dist/_pkgs/std/gfx/tool/tool-controller.js +26 -0
  446. package/dist/_pkgs/std/gfx/viewport.d.ts +12 -0
  447. package/dist/_pkgs/std/gfx/viewport.js +19 -1
  448. package/dist/_pkgs/std/inline/services/event.d.ts +2 -0
  449. package/dist/_pkgs/std/inline/services/event.js +96 -21
  450. package/dist/_pkgs/std/utils/layer.js +2 -6
  451. package/dist/_pkgs/std/utils/tree.d.ts +14 -0
  452. package/dist/_pkgs/std/utils/tree.js +59 -8
  453. package/dist/_pkgs/std/view/element/gfx-block-component.js +23 -13
  454. package/dist/_pkgs/store/extension/workspace/workspace-meta.d.ts +10 -0
  455. package/dist/_pkgs/store/model/block/flat-sync-controller.js +2 -12
  456. package/dist/_pkgs/store/model/store/crud.js +7 -4
  457. package/dist/_pkgs/store/reactive/flat-native-y/index.d.ts +1 -1
  458. package/dist/_pkgs/store/reactive/flat-native-y/index.js +24 -2
  459. package/dist/commands.d.ts +58 -0
  460. package/dist/commands.js +66 -0
  461. package/dist/extensions/command-telemetry.d.ts +21 -0
  462. package/dist/extensions/command-telemetry.js +89 -0
  463. package/dist/extensions/store.d.ts +9 -4
  464. package/dist/extensions/store.js +27 -24
  465. package/dist/extensions/view.d.ts +9 -4
  466. package/dist/extensions/view.js +23 -8
  467. package/dist/flags.d.ts +98 -21
  468. package/dist/flags.js +103 -22
  469. package/dist/frameworks.d.ts +45 -0
  470. package/dist/frameworks.js +154 -0
  471. package/dist/schemas.d.ts +8 -5
  472. package/dist/schemas.js +28 -32
  473. package/dist/shortcuts.d.ts +16 -16
  474. package/dist/shortcuts.js +8 -36
  475. package/dist/translations.d.ts +56 -0
  476. package/dist/translations.js +112 -0
  477. package/package.json +16 -4
  478. package/dist/_pkgs/affine-block-root/keyboard/shortcuts.d.ts +0 -8
  479. package/dist/_pkgs/affine-block-root/keyboard/shortcuts.js +0 -48
  480. package/dist/_pkgs/affine-gfx-shape/shortcuts.d.ts +0 -6
  481. package/dist/_pkgs/affine-gfx-shape/shortcuts.js +0 -28
  482. package/dist/_pkgs/data-view/core/utils/cache.d.ts +0 -5
  483. package/dist/_pkgs/data-view/core/utils/cache.js +0 -28
@@ -0,0 +1,321 @@
1
+ import type { ExtensionType } from '../../store/index.js';
2
+ import type { TemplateResult } from 'lit';
3
+ import type { z } from 'zod';
4
+ import type { BlockStdScope } from '../scope/index.js';
5
+ import { type ShortcutDescriptor, type ShortcutScope } from './shortcut.js';
6
+ /**
7
+ * Where an element/tool creation was triggered from. Historically declared in
8
+ * `@labre/affine-shared`'s telemetry types; it moved down here (and is
9
+ * re-exported from there, unchanged) because {@link CommandInvocation} — the
10
+ * single source of the "which surface invoked this" dimension — lives in
11
+ * `@labre/std`. See `docs/adr/0008`.
12
+ */
13
+ export type ElementCreationSource = 'shortcut' | 'toolbar:general' | 'toolbar:dnd' | 'canvas:drop' | 'canvas:draw' | 'canvas:dbclick' | 'canvas:paste' | 'context-menu' | 'ai' | 'internal' | 'conversation' | 'manually save';
14
+ /**
15
+ * The seven framework modules that own commands. An EXPLICIT list, not a
16
+ * subset assertion over `OPTIONAL_BLOCKS`: that list mixes frameworks with
17
+ * plain blocks. `packages/affine/all/src/frameworks.ts` asserts that every id
18
+ * here is a real flag key (`satisfies readonly OptionalBlock[]`).
19
+ *
20
+ * `ddd-aggregate` is deliberately absent: it ships DDD *templates* only — no
21
+ * senior button, no commands — so it is a packaging bundle, not a framework.
22
+ */
23
+ export declare const FRAMEWORK_IDS: readonly ["wardley", "edgy", "cynefin-estuarine", "bpmn", "ddd-event-storming", "ddd-core-domain", "ddd-context-map"];
24
+ export type FrameworkId = (typeof FRAMEWORK_IDS)[number];
25
+ export type CommandOwner = 'core' | FrameworkId;
26
+ /**
27
+ * Serializable precondition. Closed union; extended only by an amendment to
28
+ * `docs/adr/0008`. `'always'` is the default when omitted.
29
+ */
30
+ export type Availability = 'always' | 'selection' | 'selection:framework' | 'editable';
31
+ /**
32
+ * Which surfaces a command opts into. Absent from the array = absent from the
33
+ * surface. Settings › Shortcuts is NOT a member: EVERY command is bindable, so
34
+ * opting out of it is not expressible on purpose.
35
+ *
36
+ * `'contextual-toolbar'` joined the union with `docs/adr/0010`'s M3, the first
37
+ * command whose natural home is the toolbar of a selected element. The entry
38
+ * itself is still declared by the element's own `ToolbarModuleConfig` — a
39
+ * toolbar is a designed row, not an enumeration — but it INVOKES the registered
40
+ * command, so the behaviour, the availability rule and the single telemetry
41
+ * emission stay in one place, and `CommandInvocation.surface` reports where the
42
+ * user actually clicked instead of borrowing another surface's name.
43
+ */
44
+ export type CommandSurface = 'senior-menu' | 'catalogue' | 'palette' | 'contextual-toolbar' | 'agent';
45
+ export type CommandKind = 'artefact' | 'tool' | 'toggle' | 'legend' | 'action';
46
+ /** Where the invocation came from — feeds `segment` / `module` / `control`. */
47
+ export interface CommandInvocation {
48
+ surface: CommandSurface | 'shortcut';
49
+ source: ElementCreationSource;
50
+ }
51
+ /**
52
+ * The single source of truth for everything a framework offers. The keyboard
53
+ * binding is one FACET of a command — present, possibly empty, always
54
+ * rebindable — not a separate declaration.
55
+ *
56
+ * Two permanent projections derive from it and nothing else:
57
+ * {@link toShortcutDescriptor} (in-editor keymap + Settings › Shortcuts) and
58
+ * {@link toCommandManifestEntry} (the serializable catalogue seam).
59
+ */
60
+ export interface CommandDescriptor<P = void> {
61
+ /** Stable id; same namespace as the shortcut ids: `'wardley.addComponent'`. */
62
+ id: string;
63
+ owner: CommandOwner;
64
+ kind: CommandKind;
65
+ /** i18n keys — resolved host-side, as `ShortcutDescriptor.labelKey` is. */
66
+ labelKey: string;
67
+ /**
68
+ * English default for the in-library chrome that has to SHOW the label (the
69
+ * senior sub-menu tooltip). Same seam and same rule as the framework
70
+ * background declarations: a host with no catalogue reads correctly, a host
71
+ * with one always wins. Without it the switchover would replace today's
72
+ * English tooltips with raw i18n keys.
73
+ */
74
+ labelFallback?: string;
75
+ descriptionKey?: string;
76
+ /**
77
+ * English default for {@link descriptionKey}, same seam and same rule as
78
+ * {@link labelFallback}: a host with a catalogue always wins, a host without
79
+ * one still reads a sentence instead of a raw key.
80
+ *
81
+ * It exists because a description is now SHOWN in-library — the senior
82
+ * sub-menu puts it under the label, which is where a tool announces what its
83
+ * gesture means (`docs/adr/0010` M1). Before that, `descriptionKey` crossed
84
+ * the manifest seam and was never rendered by this repository.
85
+ */
86
+ descriptionFallback?: string;
87
+ /** Sub-category inside the owner's catalogue, e.g. `'backgrounds'`. */
88
+ category?: string;
89
+ /**
90
+ * Stable asset key, NOT markup. Resolved to a template by the library's own
91
+ * icon registry ({@link CommandIconExtension}); a host may substitute its
92
+ * set, but need not.
93
+ */
94
+ iconKey?: string;
95
+ /** Extra search terms for the palette. */
96
+ keywords?: string[];
97
+ surfaces: CommandSurface[];
98
+ /** Ascending rank inside `senior-menu` / `catalogue`. */
99
+ order?: number;
100
+ scope: ShortcutScope;
101
+ /**
102
+ * Default chord. `{ mac: [], other: [] }` means "no default, still bindable"
103
+ * — the shipped `redo-windows` precedent. Never `undefined`.
104
+ */
105
+ defaultKeys: {
106
+ mac: string[];
107
+ other: string[];
108
+ };
109
+ /** Serializable precondition; defaults to `'always'`. Crosses the host seam. */
110
+ availability?: Availability;
111
+ /**
112
+ * In-library refinement of {@link availability} — never contradicting it,
113
+ * only narrowing. Not projected into either manifest.
114
+ */
115
+ when?: (std: BlockStdScope) => boolean;
116
+ /** THE new capability: invocable without a keyboard event. */
117
+ run: (std: BlockStdScope, invocation: CommandInvocation, params?: P) => void | Promise<void>;
118
+ /** Agent-facing parameter contract. */
119
+ params?: z.ZodType<P>;
120
+ /**
121
+ * Emitted centrally by {@link runCommand} — never by the command body.
122
+ * `framework` is the code-side id; the reporter maps it through
123
+ * `FrameworkDescriptor.telemetryKey` so the wire value stays historical.
124
+ */
125
+ telemetry?: {
126
+ framework: FrameworkId;
127
+ element: string;
128
+ };
129
+ }
130
+ /**
131
+ * A command with its parameter contract erased — what the REGISTRY holds.
132
+ *
133
+ * The registry is heterogeneous by design: nullary commands (`undo`,
134
+ * `wardley.addComponent`) sit in the same list as parameterised ones
135
+ * (`pivot.bind`, whose record id cannot come from the library). The default
136
+ * `CommandDescriptor` — i.e. `CommandDescriptor<void>` — cannot express that:
137
+ * under `strictFunctionTypes`, `run`'s parameter is contravariant and `params`
138
+ * covariant, so a `CommandDescriptor<P>` is assignable to neither direction of
139
+ * `CommandDescriptor<void>`.
140
+ *
141
+ * Erasure costs nothing at runtime: {@link runCommand} forwards `params`
142
+ * opaquely, and a parameterised command re-validates with its own zod schema
143
+ * inside `run` — which an agent-invocable command has to do regardless of what
144
+ * the static type promises.
145
+ */
146
+ export type AnyCommandDescriptor = CommandDescriptor<any>;
147
+ /**
148
+ * Value kinds a command parameter may take across the host seam. Closed and
149
+ * deliberately small: the seam describes what an agent must SEND, not the
150
+ * host's type system. Anything richer stays behind `CommandDescriptor.params`,
151
+ * which never crosses.
152
+ */
153
+ export type CommandParamKind = 'string' | 'number' | 'boolean' | 'string[]';
154
+ /** One parameter, described serializably. See {@link describeCommandParams}. */
155
+ export interface CommandParam {
156
+ key: string;
157
+ kind: CommandParamKind;
158
+ /** `false` when the key may be omitted entirely. */
159
+ required: boolean;
160
+ /** `null` is an accepted value carrying a meaning of its own. */
161
+ nullable?: boolean;
162
+ }
163
+ /**
164
+ * The serializable catalogue projection — no functions, no `TemplateResult`.
165
+ * This is what crosses the host seam for the sidepanel, the palette and the
166
+ * agent (ADR 0006: the seam stays typed and render-free).
167
+ */
168
+ export interface CommandManifestEntry {
169
+ id: string;
170
+ owner: CommandOwner;
171
+ kind: CommandKind;
172
+ labelKey: string;
173
+ labelFallback?: string;
174
+ descriptionKey?: string;
175
+ descriptionFallback?: string;
176
+ category?: string;
177
+ iconKey?: string;
178
+ keywords?: string[];
179
+ surfaces: CommandSurface[];
180
+ order?: number;
181
+ scope: ShortcutScope;
182
+ defaultKeys: {
183
+ mac: string[];
184
+ other: string[];
185
+ };
186
+ availability: Availability;
187
+ /**
188
+ * What an invoker must send. Absent = nullary, which is what almost every
189
+ * command is. Derived from `CommandDescriptor.params`, never authored twice.
190
+ */
191
+ params?: CommandParam[];
192
+ telemetry?: {
193
+ framework: FrameworkId;
194
+ element: string;
195
+ };
196
+ }
197
+ /**
198
+ * The per-framework identity consumers 2-5 need, and that nothing owned before
199
+ * — spelled five times across the repo and already drifted. It is also THE
200
+ * source for packaging: `scripts/build-bundles.mjs` derives its bundle entries
201
+ * from `FRAMEWORK_DESCRIPTORS` instead of a hand-maintained array.
202
+ */
203
+ export interface FrameworkDescriptor {
204
+ id: FrameworkId;
205
+ /** Replaces the raw English `SeniorTool.name`. */
206
+ labelKey: string;
207
+ iconKey: string;
208
+ order?: number;
209
+ /** First keystroke of this framework's chords — allocated, not ad hoc. */
210
+ chordPrefix?: string;
211
+ /**
212
+ * Historical PostHog value for `FrameworkElementEvent.framework`, kept as-is
213
+ * so the identity unification stays code-side and analytics never break.
214
+ * e.g. id `'ddd-event-storming'` → telemetryKey `'event-storming'`.
215
+ */
216
+ telemetryKey: string;
217
+ /**
218
+ * Historical PostHog value for `TelemetryEvent.segment`. Not derivable from
219
+ * {@link telemetryKey} (the three DDD frameworks all emit `'ddd toolbox'`),
220
+ * and the "no analytics breakage" rule of ADR 0008 makes it load-bearing.
221
+ */
222
+ telemetrySegment: string;
223
+ /** Packaging: the published bundle name suffix, e.g. `'framework-wardley'`. */
224
+ bundle: string;
225
+ /** Packaging: the exported host-wiring descriptor name. */
226
+ info: string;
227
+ pkg: string;
228
+ dir: string;
229
+ extensions: {
230
+ flag?: string;
231
+ viewExtension: string;
232
+ }[];
233
+ /** Packaging: the framework contributes shortcut-manifest entries. */
234
+ shortcuts?: boolean;
235
+ }
236
+ /** Multi-instance: one registered {@link CommandDescriptor} per impl. */
237
+ export declare const CommandDescriptorIdentifier: import("../../global/di/types.js").ServiceIdentifier<AnyCommandDescriptor> & (<U extends AnyCommandDescriptor = AnyCommandDescriptor>(variant: import("../../global/di/types.js").ServiceVariant) => import("../../global/di/types.js").ServiceIdentifier<U>);
238
+ /** Multi-instance: one `iconKey → template` table per contributing package. */
239
+ export declare const CommandIconsIdentifier: import("../../global/di/types.js").ServiceIdentifier<Record<string, TemplateResult>> & (<U extends Record<string, TemplateResult> = Record<string, TemplateResult>>(variant: import("../../global/di/types.js").ServiceVariant) => import("../../global/di/types.js").ServiceIdentifier<U>);
240
+ /**
241
+ * Sink for the ONE telemetry emission per invocation. Declared here because
242
+ * {@link runCommand} is the bottleneck; implemented in the affine layer, which
243
+ * owns `TelemetryProvider` and the `telemetryKey` mapping.
244
+ */
245
+ export type CommandTelemetryReporter = (report: {
246
+ std: BlockStdScope;
247
+ command: AnyCommandDescriptor;
248
+ invocation: CommandInvocation;
249
+ }) => void;
250
+ export declare const CommandTelemetryIdentifier: import("../../global/di/types.js").ServiceIdentifier<CommandTelemetryReporter> & (<U extends CommandTelemetryReporter = CommandTelemetryReporter>(variant: import("../../global/di/types.js").ServiceVariant) => import("../../global/di/types.js").ServiceIdentifier<U>);
251
+ /**
252
+ * Mirrors `GfxSelectionManager.editing` without importing `@labre/std/gfx`
253
+ * (which would close an import cycle through `extension/`): the gfx manager
254
+ * derives it from exactly these selections.
255
+ */
256
+ export declare const isEditingOnCanvas: (std: BlockStdScope) => boolean;
257
+ /**
258
+ * Evaluate a command's serializable precondition in-editor. `when` narrows it
259
+ * further and is evaluated by the callers, never folded in here — the two are
260
+ * deliberately separate so the manifest value stays the whole truth a host can
261
+ * see.
262
+ *
263
+ * `'selection:framework'` evaluates as `'selection'`; narrowing to the owner's
264
+ * element types is left to `when`. `validation.mapQuality` is the first command
265
+ * to declare it, and it is also why the narrowing has not moved here: what makes
266
+ * an element a framework's ROOT INSTANCE is a question for the validation
267
+ * engine (which rule declares a `backgroundRole` this element's role satisfies),
268
+ * and `@labre/std` neither knows nor should learn it. The serializable value
269
+ * stays the whole truth a host catalogue can see; the in-editor refinement stays
270
+ * in `when`. See ADR 0008 § Availability.
271
+ */
272
+ export declare function isCommandAvailable(std: BlockStdScope, command: AnyCommandDescriptor): boolean;
273
+ /**
274
+ * THE bottleneck: the one place a command runs, and therefore the one place
275
+ * its telemetry is emitted. Every surface (sub-menu, shortcut, palette,
276
+ * sidepanel, agent) goes through here, which is what removes the per-menu
277
+ * `track()` duplicates.
278
+ */
279
+ export declare function runCommand(std: BlockStdScope, command: AnyCommandDescriptor, invocation: CommandInvocation, params?: unknown): void;
280
+ /**
281
+ * One of the three permanent projections out of {@link CommandDescriptor} —
282
+ * NOT a migration shim. It is TOTAL: keyless commands yield a descriptor with
283
+ * empty `defaultKeys` rather than being dropped, so a `ShortcutOverrides` entry
284
+ * on their id actually binds and Settings › Shortcuts can offer every command.
285
+ *
286
+ * `id`, `labelKey`, `defaultKeys`, `scope` and `owner` are carried over
287
+ * verbatim, which is what keeps hosts' persisted v0.29 override tables valid.
288
+ */
289
+ export declare function toShortcutDescriptor(command: AnyCommandDescriptor): ShortcutDescriptor;
290
+ /**
291
+ * Project a command's zod parameter contract onto the serializable seam, so the
292
+ * `'agent'` surface is usable end to end: without it an agent reading the
293
+ * manifest has no way to learn that `pivot.bind` needs a `pivotDocId`, and an
294
+ * argument-less call is a silent no-op.
295
+ *
296
+ * All or nothing on purpose. A partially described object would be worse than
297
+ * none: an agent would send what it was told and have its call rejected by the
298
+ * schema for a key the manifest never mentioned. So one undescribable property
299
+ * withdraws the whole contract, and the command reads as "parameters exist, but
300
+ * this seam cannot state them" — which is the honest answer.
301
+ */
302
+ export declare function describeCommandParams(schema: unknown): CommandParam[] | undefined;
303
+ /** The serializable projection. Functions and templates stop here. */
304
+ export declare function toCommandManifestEntry(command: AnyCommandDescriptor): CommandManifestEntry;
305
+ /**
306
+ * Register a package's commands. ONE call gives both faces: the enumerable
307
+ * registry (in-editor consumers) and — through {@link toShortcutDescriptor} —
308
+ * the keymap bindings. Registering inside a flag-gated view extension is what
309
+ * makes a disabled framework vanish from both at once.
310
+ */
311
+ export declare function CommandExtension(commands: AnyCommandDescriptor[], icons?: Record<string, TemplateResult>): ExtensionType;
312
+ /** Every command registered in this editor assembly. */
313
+ export declare function getRegisteredCommands(std: BlockStdScope): AnyCommandDescriptor[];
314
+ /**
315
+ * The commands one owner contributes to one surface, in `order` then
316
+ * declaration order. This is what a senior sub-menu renders — no hard-coded
317
+ * button list anywhere.
318
+ */
319
+ export declare function getCommandsForSurface(std: BlockStdScope, owner: CommandOwner, surface: CommandSurface): AnyCommandDescriptor[];
320
+ /** Resolve an `iconKey` through the registered icon tables. */
321
+ export declare function getCommandIcon(std: BlockStdScope, iconKey: string | undefined): TemplateResult | undefined;
@@ -0,0 +1,233 @@
1
+ import { createIdentifier } from '../../global/di/index.js';
2
+ import { SurfaceSelection } from '../selection/index.js';
3
+ import { ShortcutExtension, } from './shortcut.js';
4
+ /**
5
+ * The seven 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
+ 'ddd-event-storming',
19
+ 'ddd-core-domain',
20
+ 'ddd-context-map',
21
+ ];
22
+ /** Multi-instance: one registered {@link CommandDescriptor} per impl. */
23
+ export const CommandDescriptorIdentifier = createIdentifier('CommandDescriptor');
24
+ /** Multi-instance: one `iconKey → template` table per contributing package. */
25
+ export const CommandIconsIdentifier = createIdentifier('CommandIcons');
26
+ export const CommandTelemetryIdentifier = createIdentifier('CommandTelemetry');
27
+ const surfaceSelections = (std) => std.selection.filter(SurfaceSelection);
28
+ /**
29
+ * Mirrors `GfxSelectionManager.editing` without importing `@labre/std/gfx`
30
+ * (which would close an import cycle through `extension/`): the gfx manager
31
+ * derives it from exactly these selections.
32
+ */
33
+ export const isEditingOnCanvas = (std) => surfaceSelections(std).some(sel => sel.editing);
34
+ const hasCanvasSelection = (std) => surfaceSelections(std).some(sel => sel.elements.length > 0);
35
+ /**
36
+ * Evaluate a command's serializable precondition in-editor. `when` narrows it
37
+ * further and is evaluated by the callers, never folded in here — the two are
38
+ * deliberately separate so the manifest value stays the whole truth a host can
39
+ * see.
40
+ *
41
+ * `'selection:framework'` evaluates as `'selection'`; narrowing to the owner's
42
+ * element types is left to `when`. `validation.mapQuality` is the first command
43
+ * to declare it, and it is also why the narrowing has not moved here: what makes
44
+ * an element a framework's ROOT INSTANCE is a question for the validation
45
+ * engine (which rule declares a `backgroundRole` this element's role satisfies),
46
+ * and `@labre/std` neither knows nor should learn it. The serializable value
47
+ * stays the whole truth a host catalogue can see; the in-editor refinement stays
48
+ * in `when`. See ADR 0008 § Availability.
49
+ */
50
+ export function isCommandAvailable(std, command) {
51
+ switch (command.availability ?? 'always') {
52
+ case 'always':
53
+ return true;
54
+ case 'selection':
55
+ case 'selection:framework':
56
+ return !isEditingOnCanvas(std) && hasCanvasSelection(std);
57
+ case 'editable':
58
+ return !std.store.readonly;
59
+ }
60
+ }
61
+ /**
62
+ * THE bottleneck: the one place a command runs, and therefore the one place
63
+ * its telemetry is emitted. Every surface (sub-menu, shortcut, palette,
64
+ * sidepanel, agent) goes through here, which is what removes the per-menu
65
+ * `track()` duplicates.
66
+ */
67
+ export function runCommand(std, command, invocation, params) {
68
+ const result = command.run(std, invocation, params);
69
+ if (result instanceof Promise)
70
+ result.catch(console.error);
71
+ if (!command.telemetry)
72
+ return;
73
+ std.getOptional(CommandTelemetryIdentifier)?.({ std, command, invocation });
74
+ }
75
+ /**
76
+ * One of the three permanent projections out of {@link CommandDescriptor} —
77
+ * NOT a migration shim. It is TOTAL: keyless commands yield a descriptor with
78
+ * empty `defaultKeys` rather than being dropped, so a `ShortcutOverrides` entry
79
+ * on their id actually binds and Settings › Shortcuts can offer every command.
80
+ *
81
+ * `id`, `labelKey`, `defaultKeys`, `scope` and `owner` are carried over
82
+ * verbatim, which is what keeps hosts' persisted v0.29 override tables valid.
83
+ */
84
+ export function toShortcutDescriptor(command) {
85
+ return {
86
+ id: command.id,
87
+ labelKey: command.labelKey,
88
+ defaultKeys: command.defaultKeys,
89
+ scope: command.scope,
90
+ owner: command.owner,
91
+ handler: std => ctx => {
92
+ // A keystroke aimed at a canvas text editor belongs to that editor.
93
+ if (command.scope === 'edgeless' && isEditingOnCanvas(std))
94
+ return false;
95
+ if (!isCommandAvailable(std, command))
96
+ return false;
97
+ if (command.when && !command.when(std))
98
+ return false;
99
+ ctx.get('defaultState').event.preventDefault();
100
+ runCommand(std, command, { surface: 'shortcut', source: 'shortcut' });
101
+ return true;
102
+ },
103
+ };
104
+ }
105
+ const zodDef = (schema) => schema?._def ?? {};
106
+ const ZOD_KIND = {
107
+ ZodString: 'string',
108
+ ZodNumber: 'number',
109
+ ZodBoolean: 'boolean',
110
+ ZodEnum: 'string',
111
+ };
112
+ /** Unwraps at most a few modifier layers; a deeper nesting is not describable. */
113
+ function describeParam(key, schema) {
114
+ let current = schema;
115
+ let required = true;
116
+ let nullable = false;
117
+ for (let depth = 0; depth < 4; depth++) {
118
+ const def = zodDef(current);
119
+ if (def.typeName === 'ZodOptional' || def.typeName === 'ZodDefault') {
120
+ required = false;
121
+ current = def.innerType;
122
+ continue;
123
+ }
124
+ if (def.typeName === 'ZodNullable') {
125
+ nullable = true;
126
+ current = def.innerType;
127
+ continue;
128
+ }
129
+ break;
130
+ }
131
+ const def = zodDef(current);
132
+ const kind = def.typeName === 'ZodArray'
133
+ ? zodDef(def.type).typeName === 'ZodString'
134
+ ? 'string[]'
135
+ : undefined
136
+ : ZOD_KIND[def.typeName ?? ''];
137
+ if (!kind)
138
+ return undefined;
139
+ return nullable ? { key, kind, required, nullable } : { key, kind, required };
140
+ }
141
+ /**
142
+ * Project a command's zod parameter contract onto the serializable seam, so the
143
+ * `'agent'` surface is usable end to end: without it an agent reading the
144
+ * manifest has no way to learn that `pivot.bind` needs a `pivotDocId`, and an
145
+ * argument-less call is a silent no-op.
146
+ *
147
+ * All or nothing on purpose. A partially described object would be worse than
148
+ * none: an agent would send what it was told and have its call rejected by the
149
+ * schema for a key the manifest never mentioned. So one undescribable property
150
+ * withdraws the whole contract, and the command reads as "parameters exist, but
151
+ * this seam cannot state them" — which is the honest answer.
152
+ */
153
+ export function describeCommandParams(schema) {
154
+ const def = zodDef(schema);
155
+ if (def.typeName !== 'ZodObject' || typeof def.shape !== 'function') {
156
+ return undefined;
157
+ }
158
+ const params = [];
159
+ for (const [key, property] of Object.entries(def.shape())) {
160
+ const param = describeParam(key, property);
161
+ if (!param)
162
+ return undefined;
163
+ params.push(param);
164
+ }
165
+ return params.length ? params : undefined;
166
+ }
167
+ /** The serializable projection. Functions and templates stop here. */
168
+ export function toCommandManifestEntry(command) {
169
+ return {
170
+ id: command.id,
171
+ owner: command.owner,
172
+ kind: command.kind,
173
+ labelKey: command.labelKey,
174
+ labelFallback: command.labelFallback,
175
+ descriptionKey: command.descriptionKey,
176
+ descriptionFallback: command.descriptionFallback,
177
+ category: command.category,
178
+ iconKey: command.iconKey,
179
+ keywords: command.keywords,
180
+ surfaces: command.surfaces,
181
+ order: command.order,
182
+ scope: command.scope,
183
+ defaultKeys: command.defaultKeys,
184
+ availability: command.availability ?? 'always',
185
+ params: describeCommandParams(command.params),
186
+ telemetry: command.telemetry,
187
+ };
188
+ }
189
+ let _commandId = 1;
190
+ /**
191
+ * Register a package's commands. ONE call gives both faces: the enumerable
192
+ * registry (in-editor consumers) and — through {@link toShortcutDescriptor} —
193
+ * the keymap bindings. Registering inside a flag-gated view extension is what
194
+ * makes a disabled framework vanish from both at once.
195
+ */
196
+ export function CommandExtension(commands, icons) {
197
+ return {
198
+ setup: di => {
199
+ commands.forEach(command => {
200
+ di.addImpl(CommandDescriptorIdentifier(`Command-${_commandId++}`), command);
201
+ });
202
+ if (icons) {
203
+ di.addImpl(CommandIconsIdentifier(`CommandIcons-${_commandId++}`), icons);
204
+ }
205
+ ShortcutExtension(commands.map(toShortcutDescriptor)).setup(di);
206
+ },
207
+ };
208
+ }
209
+ /** Every command registered in this editor assembly. */
210
+ export function getRegisteredCommands(std) {
211
+ return [...std.provider.getAll(CommandDescriptorIdentifier).values()];
212
+ }
213
+ /**
214
+ * The commands one owner contributes to one surface, in `order` then
215
+ * declaration order. This is what a senior sub-menu renders — no hard-coded
216
+ * button list anywhere.
217
+ */
218
+ export function getCommandsForSurface(std, owner, surface) {
219
+ return getRegisteredCommands(std)
220
+ .filter(c => c.owner === owner && c.surfaces.includes(surface))
221
+ .sort((a, b) => (a.order ?? 0) - (b.order ?? 0));
222
+ }
223
+ /** Resolve an `iconKey` through the registered icon tables. */
224
+ export function getCommandIcon(std, iconKey) {
225
+ if (!iconKey)
226
+ return undefined;
227
+ for (const table of std.provider.getAll(CommandIconsIdentifier).values()) {
228
+ const icon = table[iconKey];
229
+ if (icon)
230
+ return icon;
231
+ }
232
+ return undefined;
233
+ }
@@ -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';
@@ -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[];