@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
@@ -33,7 +33,7 @@ var __runInitializers = (this && this.__runInitializers) || function (thisArg, i
33
33
  return useValue ? value : void 0;
34
34
  };
35
35
  import { EdgelessCRUDIdentifier } from '../../affine-block-surface/index.js';
36
- import { getSelectedRect, isTopLevelBlock, requestThrottledConnectedFrame, } from '../../affine-shared/utils/index.js';
36
+ import { getSelectedRect, isTopLevelBlock, overlayScale, requestThrottledConnectedFrame, } from '../../affine-shared/utils/index.js';
37
37
  import { MultiCursorDuotoneIcon } from '@blocksuite/icons/lit';
38
38
  import { WidgetComponent } from '../../std/index.js';
39
39
  import { GfxControllerIdentifier } from '../../std/gfx/index.js';
@@ -252,9 +252,11 @@ let EdgelessRemoteSelectionWidget = (() => {
252
252
  this._remoteRects = remoteRects;
253
253
  };
254
254
  this._updateTransform = requestThrottledConnectedFrame(() => {
255
- const { translateX, translateY, zoom } = this.gfx.viewport;
256
- this.style.setProperty('--v-zoom', `${zoom}`);
257
- this.style.setProperty('transform', `translate(${translateX}px, ${translateY}px) scale(var(--v-zoom))`);
255
+ const { translateX, translateY, viewScale } = this.gfx.viewport;
256
+ // Stated in the scaled space of the container, like every other overlay
257
+ // and like `GfxBlockComponent.getCSSTransform`.
258
+ this.style.setProperty('--v-zoom', `${overlayScale(this.gfx.viewport)}`);
259
+ this.style.setProperty('transform', `translate(${translateX / viewScale}px, ${translateY / viewScale}px) scale(var(--v-zoom))`);
258
260
  }, this);
259
261
  this.#_remoteCursors_accessor_storage = __runInitializers(this, __remoteCursors_initializers, new Map());
260
262
  this.#_remoteRects_accessor_storage = (__runInitializers(this, __remoteCursors_extraInitializers), __runInitializers(this, __remoteRects_initializers, new Map()));
@@ -48,7 +48,7 @@ import groupBy from 'lodash-es/groupBy.js';
48
48
  import throttle from 'lodash-es/throttle.js';
49
49
  import { AFFINE_SLASH_MENU_MAX_HEIGHT, AFFINE_SLASH_MENU_TOOLTIP_TIMEOUT, AFFINE_SLASH_MENU_TRIGGER_KEY, } from './consts.js';
50
50
  import { slashItemToolTipStyle, styles } from './styles.js';
51
- import { isActionItem, isSubMenuItem, parseGroup, slashItemClassName, } from './utils.js';
51
+ import { isActionItem, isSubMenuItem, isTextInputKey, parseGroup, slashItemClassName, } from './utils.js';
52
52
  let SlashMenu = (() => {
53
53
  let _classSuper = WithDisposable(LitElement);
54
54
  let __filteredItems_decorators;
@@ -217,9 +217,13 @@ let SlashMenu = (() => {
217
217
  // The IME case of above
218
218
  return;
219
219
  }
220
- if (key !== 'Backspace' && this._queryState === 'no_result') {
221
- // if the following key is not the backspace key,
222
- // the slash menu will be closed
220
+ if (key !== 'Backspace' &&
221
+ this._queryState === 'no_result' &&
222
+ !isTextInputKey(event)) {
223
+ // The search found nothing and the user is not typing: whatever this
224
+ // key is, it is not narrowing the query, so the slash menu closes.
225
+ // Typing keeps it alive — the query state is refreshed asynchronously
226
+ // and would otherwise be judged stale.
223
227
  this.abortController.abort();
224
228
  return;
225
229
  }
@@ -1,4 +1,13 @@
1
1
  import type { SlashMenuActionItem, SlashMenuConfig, SlashMenuContext, SlashMenuItem, SlashMenuSubMenu } from './types.js';
2
+ /**
3
+ * Whether a keydown is the user typing one more character into the query.
4
+ *
5
+ * The slash menu closes on the first key that follows an empty result, which is
6
+ * right for a command key and wrong for a letter: the query state is computed
7
+ * asynchronously, so a letter typed just after a deletion is judged against a
8
+ * STALE `no_result` and kills a menu that was about to find matches again.
9
+ */
10
+ export declare function isTextInputKey(event: KeyboardEvent): boolean;
2
11
  export declare function isActionItem(item: SlashMenuItem): item is SlashMenuActionItem;
3
12
  export declare function isSubMenuItem(item: SlashMenuItem): item is SlashMenuSubMenu;
4
13
  export declare function slashItemClassName({ name }: SlashMenuItem): string;
@@ -1,3 +1,27 @@
1
+ /**
2
+ * Whether a keydown is the user typing one more character into the query.
3
+ *
4
+ * The slash menu closes on the first key that follows an empty result, which is
5
+ * right for a command key and wrong for a letter: the query state is computed
6
+ * asynchronously, so a letter typed just after a deletion is judged against a
7
+ * STALE `no_result` and kills a menu that was about to find matches again.
8
+ */
9
+ export function isTextInputKey(event) {
10
+ // Keys combined with modifiers are not text input.
11
+ if (event.ctrlKey || event.metaKey || event.altKey)
12
+ return false;
13
+ // During IME composition, the query is updated by the input / composition
14
+ // hooks, never by the keydown.
15
+ if (event.isComposing)
16
+ return false;
17
+ // Only single-character keys are text input: `Enter`, `Tab`, `F2`… are not.
18
+ if (event.key.length !== 1)
19
+ return false;
20
+ // Space still closes the slash menu — unchanged behaviour.
21
+ if (event.key === ' ')
22
+ return false;
23
+ return true;
24
+ }
1
25
  export function isActionItem(item) {
2
26
  return 'action' in item;
3
27
  }
@@ -3,6 +3,7 @@ import { ToolbarContext } from '../affine-shared/services/index.js';
3
3
  import { type BlockComponent, WidgetComponent } from '../std/index.js';
4
4
  import { type GfxController, type GfxModel } from '../std/gfx/index.js';
5
5
  import type { ReferenceElement, SideObject } from '@floating-ui/dom';
6
+ import { ToolbarFitter } from './utils.js';
6
7
  export declare const AFFINE_TOOLBAR_WIDGET = "affine-toolbar-widget";
7
8
  export declare class AffineToolbarWidget extends WidgetComponent {
8
9
  static styles: import("lit").CSSResult;
@@ -14,6 +15,11 @@ export declare class AffineToolbarWidget extends WidgetComponent {
14
15
  setReferenceElementWithElements(gfx: GfxController, elements: GfxModel[]): void;
15
16
  updateWithSurface(ctx: ToolbarContext, activated: boolean, elementIds: string[]): void;
16
17
  toolbar: EditorToolbar;
18
+ /**
19
+ * Keeps the row on one line: it renders the toolbar, measures it and hands
20
+ * the least important entries to the "⋮" menu when the room runs out.
21
+ */
22
+ fitter: ToolbarFitter;
17
23
  get toolbarRegistry(): import("../affine-shared/services/index.js").ToolbarRegistryExtension;
18
24
  connectedCallback(): void;
19
25
  }
@@ -16,7 +16,7 @@ import { css, unsafeCSS } from 'lit';
16
16
  import groupBy from 'lodash-es/groupBy.js';
17
17
  import throttle from 'lodash-es/throttle.js';
18
18
  import toPairs from 'lodash-es/toPairs.js';
19
- import { autoUpdatePosition, renderToolbar, sideMap } from './utils.js';
19
+ import { autoUpdatePosition, sideMap, ToolbarFitter } from './utils.js';
20
20
  export const AFFINE_TOOLBAR_WIDGET = 'affine-toolbar-widget';
21
21
  export class AffineToolbarWidget extends WidgetComponent {
22
22
  constructor() {
@@ -24,6 +24,11 @@ export class AffineToolbarWidget extends WidgetComponent {
24
24
  this.sideOptions$ = signal(null);
25
25
  this.referenceElement$ = signal(null);
26
26
  this.toolbar = new EditorToolbar();
27
+ /**
28
+ * Keeps the row on one line: it renders the toolbar, measures it and hands
29
+ * the least important entries to the "⋮" menu when the room runs out.
30
+ */
31
+ this.fitter = new ToolbarFitter(this.toolbar);
27
32
  }
28
33
  static { this.styles = css `
29
34
  editor-toolbar {
@@ -98,7 +103,19 @@ export class AffineToolbarWidget extends WidgetComponent {
98
103
  this.referenceElement$.value = element ? () => element : null;
99
104
  }
100
105
  setReferenceElementWithBlocks(blocks) {
101
- const getClientRects = () => blocks.map(e => e.getBoundingClientRect());
106
+ // A single position pass asks for the rects twice — once for the common
107
+ // bound, once for the inline middleware — and the pass runs on every
108
+ // scroll frame. One measure per frame is enough.
109
+ let cachedClientRects = null;
110
+ const getClientRects = () => {
111
+ if (!cachedClientRects) {
112
+ cachedClientRects = blocks.map(e => e.getBoundingClientRect());
113
+ requestAnimationFrame(() => {
114
+ cachedClientRects = null;
115
+ });
116
+ }
117
+ return cachedClientRects;
118
+ };
102
119
  this.referenceElement$.value = blocks.length
103
120
  ? () => ({
104
121
  getBoundingClientRect: () => {
@@ -113,10 +130,13 @@ export class AffineToolbarWidget extends WidgetComponent {
113
130
  : null;
114
131
  }
115
132
  setReferenceElementWithElements(gfx, elements) {
133
+ // Measured once per selection change, not on every anchor read: floating-ui
134
+ // calls `getBoundingClientRect` on each frame of a pan or a zoom, and the
135
+ // surface bound of a group walks all of its children.
136
+ const surfaceBounds = getCommonBoundWithRotation(elements);
116
137
  const getBoundingClientRect = () => {
117
- const bounds = getCommonBoundWithRotation(elements);
118
138
  const { x: offsetX, y: offsetY } = this.getBoundingClientRect();
119
- const [x, y, w, h] = gfx.viewport.toViewBound(bounds).toXYWH();
139
+ const [x, y, w, h] = gfx.viewport.toViewBound(surfaceBounds).toXYWH();
120
140
  const rect = new DOMRect(x + offsetX, y + offsetY, w, h);
121
141
  return rect;
122
142
  };
@@ -469,6 +489,7 @@ export class AffineToolbarWidget extends WidgetComponent {
469
489
  const value = flags.value$.value;
470
490
  // Hides toolbar
471
491
  if (Flag.None === value || flags.check(Flag.Hiding, value)) {
492
+ this.fitter.reset();
472
493
  if ('inline' in toolbar.dataset)
473
494
  delete toolbar.dataset.inline;
474
495
  if (toolbar.dataset.open)
@@ -486,8 +507,15 @@ export class AffineToolbarWidget extends WidgetComponent {
486
507
  // 3. `Flag.Block`: blocks in note
487
508
  // 4. `Flag.Hovering`: inline links in note/database/table
488
509
  // 5. `Flag.Surface`: elements in edgeless
489
- renderToolbar(toolbar, context, flavour);
510
+ this.fitter.render(context, flavour);
490
511
  }));
512
+ // The row never wraps, so it has to be told when its room changes. Two
513
+ // things can change it: the cap `size()` writes on every reposition, and
514
+ // anything that resizes the toolbar itself (a narrower editor, a zoom, a
515
+ // font that loaded late) — the observer catches what the cap misses.
516
+ const resizeObserver = new ResizeObserver(() => this.fitter.resize());
517
+ resizeObserver.observe(toolbar);
518
+ disposables.add(() => resizeObserver.disconnect());
491
519
  let abortController = new AbortController();
492
520
  disposables.add(effect(() => {
493
521
  if (!abortController.signal.aborted) {
@@ -509,7 +537,7 @@ export class AffineToolbarWidget extends WidgetComponent {
509
537
  abortController = new AbortController();
510
538
  }
511
539
  const signal = abortController.signal;
512
- const cleanup = autoUpdatePosition(signal, toolbar, referenceElement, flavour, placement, sideOptions);
540
+ const cleanup = autoUpdatePosition(signal, toolbar, referenceElement, flavour, placement, sideOptions, undefined, () => this.fitter.resize());
513
541
  signal.addEventListener('abort', cleanup, { once: true });
514
542
  return () => {
515
543
  if (signal.aborted)
@@ -1,5 +1,5 @@
1
1
  import { type EditorToolbar } from '../affine-components/toolbar/index.js';
2
- import { type ToolbarActions, type ToolbarContext, type ToolbarPlacement } from '../affine-shared/services/index.js';
2
+ import { type ToolbarActions, type ToolbarContext, type ToolbarLayoutStep, type ToolbarPlacement } from '../affine-shared/services/index.js';
3
3
  import type { AutoUpdateOptions, ReferenceElement, SideObject } from '@floating-ui/dom';
4
4
  export declare const sideMap: Map<string, {
5
5
  top: number;
@@ -8,8 +8,67 @@ export declare const sideMap: Map<string, {
8
8
  top: number;
9
9
  bottom: number;
10
10
  }>;
11
- export declare function autoUpdatePosition(signal: AbortSignal, toolbar: EditorToolbar, referenceElement: ReferenceElement, flavour: string, placement: ToolbarPlacement, sideOptions: Partial<SideObject> | null, options?: AutoUpdateOptions): () => void;
11
+ export declare function autoUpdatePosition(signal: AbortSignal, toolbar: EditorToolbar, referenceElement: ReferenceElement, flavour: string, placement: ToolbarPlacement, sideOptions: Partial<SideObject> | null, options?: AutoUpdateOptions,
12
+ /**
13
+ * Called whenever the room the row has just changed. This is the only place
14
+ * that knows it: `size` is what writes the cap, and it re-runs on every
15
+ * scroll, resize and flip.
16
+ */
17
+ onAvailableWidth?: () => void): () => void;
12
18
  export declare function combine(actions: ToolbarActions, context: ToolbarContext): any[];
19
+ /**
20
+ * How much of the row an entry has given up, decided by {@link ToolbarFitter}
21
+ * and re-applied by every render until the room changes again.
22
+ */
23
+ export interface ToolbarLayout {
24
+ /** Entries rendered as their icon alone, with the label as tooltip. */
25
+ shrunk: Set<string>;
26
+ /** Entries rendered as entries of the "⋮" menu instead of the row. */
27
+ collapsed: Set<string>;
28
+ }
29
+ export declare function emptyToolbarLayout(): ToolbarLayout;
30
+ /**
31
+ * What the row is, in two values — the question the plan is asked by.
32
+ *
33
+ * The split is the whole of the second half of the PO's recette of 25/08/2026,
34
+ * and it is the difference between the two things a re-render can invalidate:
35
+ *
36
+ * - {@link entries} is WHICH ENTRIES the row has, with their words, their
37
+ * icons, their priorities and whether the widget can move them into the "⋮".
38
+ * It is what makes a PLAN applicable: a plan is a list of entry ids, and it
39
+ * describes this row only for as long as this list holds.
40
+ * - {@link state} is WHAT THOSE ENTRIES SAY. It changes nothing about which
41
+ * degradations exist, and everything about what they are worth: the same
42
+ * dropdown naming `Strict` instead of `Sketch` is ten pixels narrower, and a
43
+ * group that gained a member is a button wider. It is what makes a
44
+ * MEASUREMENT applicable.
45
+ *
46
+ * A row whose entries changed is a new row and is planned from scratch. A row
47
+ * whose state changed keeps the plan it is wearing — the eye sees nothing — and
48
+ * is only re-measured. A row where neither moved is free, which is what makes
49
+ * a gesture's re-renders cost nothing at all.
50
+ */
51
+ export interface ToolbarRow {
52
+ entries: string;
53
+ state: string;
54
+ }
55
+ /**
56
+ * Where the row's plan comes from, asked for by {@link ToolbarRow}.
57
+ *
58
+ * Called once per render, AFTER the entries are resolved and BEFORE anything
59
+ * reaches the DOM — which is the whole point. The mode an entry reads in is a
60
+ * datum of its render, so the plan has to be in hand before the first
61
+ * character is written; a plan applied afterwards is a plan the eye has
62
+ * already seen the row without.
63
+ */
64
+ export type ToolbarLayoutSource = (row: ToolbarRow) => ToolbarLayout;
65
+ /** What one render of the row tells the fitter about its own room to give. */
66
+ export interface ToolbarFit extends ToolbarRow {
67
+ /** Every degradation available, in the order they must be spent. */
68
+ steps: ToolbarLayoutStep[];
69
+ /** Whether the rendered row already carries a "⋮" button. */
70
+ hasMenu: boolean;
71
+ }
13
72
  /**
14
73
  * Renders toolbar
15
74
  *
@@ -19,4 +78,88 @@ export declare function combine(actions: ToolbarActions, context: ToolbarContext
19
78
  * 3. `affine:*`
20
79
  * 4. `custom:affine:*`
21
80
  */
22
- export declare function renderToolbar(toolbar: EditorToolbar, context: ToolbarContext, flavour: string): void;
81
+ export declare function renderToolbar(toolbar: EditorToolbar, context: ToolbarContext, flavour: string, source?: ToolbarLayoutSource): ToolbarFit | null;
82
+ /**
83
+ * Keeps the contextual toolbar on ONE line.
84
+ *
85
+ * Owns the two halves the pure planner cannot: MEASURING the row, and
86
+ * RE-RENDERING it once the planner has said which entries give way. The order
87
+ * they give way in is not decided here — it comes from what the entries
88
+ * declared (`priority`, `icon`, `label`), so this class never learns that a
89
+ * block or a framework exists.
90
+ *
91
+ * The row is measured ONCE per ROW, while it is still whole. Every later
92
+ * resize replans from those numbers instead of flashing the row back to its
93
+ * full width just to measure it again — which is also what makes the collapse
94
+ * reversible: widen the editor and the plan simply spends fewer steps.
95
+ *
96
+ * "Per row", not per render: the widget re-renders for reasons that have
97
+ * nothing to do with width, and a re-render is not a new row. Which row it is
98
+ * is answered by {@link ToolbarRow}, and a row that has not changed keeps the
99
+ * plan it is wearing — see {@link ToolbarFitter.render}.
100
+ *
101
+ * A row that changed only what it SAYS keeps it too, and is simply re-measured
102
+ * where it stands ({@link ToolbarFitter.#remeasure}). That is the generalisation
103
+ * the PO's recette of 25/08/2026 asked for: the components' row is made
104
+ * entirely of entries the widget draws itself, so the list of entries is a
105
+ * complete description of it and the first half of {@link ToolbarRow} was
106
+ * enough; a framework background's row is mostly OPAQUE — toggles grouped by
107
+ * the framework, a dropdown naming the level of requirement in force — and for
108
+ * that row the list says nothing about what it costs.
109
+ *
110
+ * And it replans only at the ACCALMIE. While the room is still moving — a zoom,
111
+ * a pan, a window being dragged — the plan on screen is frozen: see
112
+ * {@link ToolbarFitter.resize}.
113
+ */
114
+ export declare class ToolbarFitter {
115
+ #private;
116
+ private readonly toolbar;
117
+ constructor(toolbar: EditorToolbar);
118
+ /**
119
+ * Renders the row, in the mode the plan on screen says.
120
+ *
121
+ * The widget re-renders for a great many reasons that have nothing to do
122
+ * with the row's width — an element updated anywhere on the canvas, a block
123
+ * updated, a selection re-emitted, something hovered — and any of them can
124
+ * land on any frame of a gesture. So this asks a question first: is the row
125
+ * about to be drawn the row already on screen?
126
+ *
127
+ * - **Yes** (same {@link ToolbarRow}, both halves): it is drawn wearing the
128
+ * plan it is already wearing, entry by entry, and nothing is measured.
129
+ * The DOM does not change, so there is nothing to see — which is the
130
+ * PO's recette of 25/08/2026. Before, every one of these re-renders threw
131
+ * the plan away, painted the whole row, and only then measured and
132
+ * degraded it again: one flash of "Read this component" per re-render,
133
+ * plus a full replan at whatever width the gesture happened to be at,
134
+ * straight through the freeze the accalmie was supposed to give.
135
+ * - **The same entries, saying something new** — a dropdown naming another
136
+ * profile, a group that gained a member: the PLAN still describes the row
137
+ * and stays on it, so again there is nothing to see. Only the widths it was
138
+ * made from are out of date, and {@link ToolbarFitter.#remeasure} reads
139
+ * them back off the row as it is drawn.
140
+ * - **No**: a different row. Then, and only then, it is rendered whole,
141
+ * measured, and spends what it must.
142
+ */
143
+ render(context: ToolbarContext, flavour: string): void;
144
+ /** The toolbar is going away: stop measuring it. */
145
+ reset(): void;
146
+ /**
147
+ * The room the row has may have changed.
148
+ *
149
+ * Two answers are refused before anything is replanned, and the PO's second
150
+ * pass of 02/08/2026 is about both:
151
+ *
152
+ * 1. **A change too small to mean anything.** Two measurements a pixel apart
153
+ * are the same measurement, and a row that believes them alternates
154
+ * between two compositions for as long as they alternate.
155
+ * 2. **A change that is still happening.** A zoom moves the room on every
156
+ * frame; replanning on each of them re-composes the row under the cursor,
157
+ * and every new width moves the anchoring with it — which is the toolbar
158
+ * "hesitating between anchor points" the PO reported. The plan on screen
159
+ * is FROZEN for the whole gesture and spent once, when the viewport lands.
160
+ *
161
+ * The room is remembered as it goes by, so the plan that is finally made is
162
+ * the one for the width the gesture ended on, not the width it started from.
163
+ */
164
+ resize(): void;
165
+ }