@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
@@ -34,17 +34,18 @@ var __runInitializers = (this && this.__runInitializers) || function (thisArg, i
34
34
  };
35
35
  import { menu, popFilterableSimpleMenu, popupTargetFromElement, } from '../../../../affine-components/context-menu/index.js';
36
36
  import { SignalWatcher, WithDisposable } from '../../../../global/lit/index.js';
37
- import { PlusIcon } from '@blocksuite/icons/lit';
37
+ import { PlusIcon, ToggleDownIcon, ToggleRightIcon, } from '@blocksuite/icons/lit';
38
38
  import { ShadowlessElement } from '../../../../std/index.js';
39
- import { effect } from '@preact/signals-core';
39
+ import { effect, signal } from '@preact/signals-core';
40
40
  import { cssVarV2 } from '@toeverything/theme/v2';
41
- import { css, html, unsafeCSS } from 'lit';
41
+ import { css, html, nothing, unsafeCSS } from 'lit';
42
42
  import { property, query } from 'lit/decorators.js';
43
43
  import { repeat } from 'lit/directives/repeat.js';
44
44
  import { GroupTitle } from '../../../core/group-by/group-title.js';
45
45
  import { createDndContext } from '../../../core/utils/wc-dnd/dnd-context.js';
46
46
  import { defaultActivators } from '../../../core/utils/wc-dnd/sensors/index.js';
47
47
  import { linearMove } from '../../../core/utils/wc-dnd/utils/linear-move.js';
48
+ import { getCollapsedState, setCollapsedState } from '../collapsed-state.js';
48
49
  import { LEFT_TOOL_BAR_WIDTH } from '../consts.js';
49
50
  import { TableViewAreaSelection } from '../selection.js';
50
51
  import { DataViewColumnPreview } from './header/column-renderer.js';
@@ -85,6 +86,28 @@ const styles = css `
85
86
  line-height: 20px;
86
87
  color: var(--affine-text-secondary-color);
87
88
  }
89
+
90
+ .group-toggle-btn {
91
+ width: 20px;
92
+ height: 20px;
93
+ display: flex;
94
+ align-items: center;
95
+ justify-content: center;
96
+ border-radius: 4px;
97
+ cursor: pointer;
98
+ transition: background-color 150ms cubic-bezier(0.42, 0, 1, 1);
99
+ }
100
+
101
+ .group-toggle-btn:hover {
102
+ background: var(--affine-hover-color);
103
+ }
104
+
105
+ .group-toggle-btn svg {
106
+ width: 16px;
107
+ height: 16px;
108
+ flex-shrink: 0;
109
+ user-select: none;
110
+ }
88
111
  `;
89
112
  let TableGroup = (() => {
90
113
  let _classSuper = SignalWatcher(WithDisposable(ShadowlessElement));
@@ -109,6 +132,20 @@ let TableGroup = (() => {
109
132
  if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
110
133
  }
111
134
  static { this.styles = styles; }
135
+ /**
136
+ * Read the stored collapsed state once, as soon as the group and its view
137
+ * are both known. Reading it earlier would key the lookup on a missing view
138
+ * id and pin the group open.
139
+ */
140
+ _loadCollapsedState() {
141
+ if (this.storageLoaded)
142
+ return;
143
+ this.storageLoaded = true;
144
+ const view = this.tableViewLogic?.view;
145
+ if (!view)
146
+ return;
147
+ this.collapsed$.value = getCollapsedState(view.id, this.group?.key ?? 'all');
148
+ }
112
149
  #group_accessor_storage;
113
150
  get group() { return this.#group_accessor_storage; }
114
151
  set group(value) { this.#group_accessor_storage = value; }
@@ -153,12 +190,25 @@ let TableGroup = (() => {
153
190
  </affine-database-column-stats>
154
191
  `;
155
192
  }
193
+ willUpdate(changed) {
194
+ super.willUpdate(changed);
195
+ if (!this.storageLoaded &&
196
+ (changed.has('group') || changed.has('tableViewLogic'))) {
197
+ this._loadCollapsedState();
198
+ }
199
+ }
156
200
  connectedCallback() {
157
201
  super.connectedCallback();
158
202
  this.showIndicator();
203
+ this._loadCollapsedState();
159
204
  }
160
205
  render() {
161
- return this.renderRows(this.rows);
206
+ // Collapsed, only the header survives — the column header, the rows, the
207
+ // add-row affordance and the stats row all fold away with them.
208
+ return html `
209
+ ${this.collapsed$.value ? this.renderGroupHeader() : nothing}
210
+ ${this.collapsed$.value ? nothing : this.renderRows(this.rows)}
211
+ `;
162
212
  }
163
213
  #rowsContainer_accessor_storage;
164
214
  get rowsContainer() { return this.#rowsContainer_accessor_storage; }
@@ -171,6 +221,17 @@ let TableGroup = (() => {
171
221
  }
172
222
  constructor() {
173
223
  super(...arguments);
224
+ this.collapsed$ = signal(false);
225
+ this.storageLoaded = false;
226
+ this._toggleCollapse = (e) => {
227
+ e?.stopPropagation();
228
+ const next = !this.collapsed$.value;
229
+ this.collapsed$.value = next;
230
+ const view = this.tableViewLogic?.view;
231
+ if (view) {
232
+ setCollapsedState(view.id, this.group?.key ?? 'all', next);
233
+ }
234
+ };
174
235
  this.clickAddRow = () => {
175
236
  this.view.rowAdd('end', this.group?.key);
176
237
  const selectionController = this.tableViewLogic.selectionController;
@@ -236,8 +297,26 @@ let TableGroup = (() => {
236
297
  }
237
298
  return html `
238
299
  <div
239
- style="position: sticky;left: 0;width: max-content;padding: 6px 0;margin-bottom: 4px;display:flex;align-items:center;gap: 12px;max-width: 400px"
300
+ style="position: sticky;left: 0;width: max-content;padding: 6px 0;margin-bottom: 4px;display:flex;align-items:center;gap: 8px;max-width: 400px"
240
301
  >
302
+ <div
303
+ class="group-toggle-btn"
304
+ role="button"
305
+ aria-expanded=${this.collapsed$.value ? 'false' : 'true'}
306
+ aria-label=${this.collapsed$.value ? 'Expand group' : 'Collapse group'}
307
+ tabindex="0"
308
+ @click=${this._toggleCollapse}
309
+ @keydown=${(e) => {
310
+ if (e.key === 'Enter' || e.key === ' ') {
311
+ e.preventDefault();
312
+ this._toggleCollapse();
313
+ }
314
+ }}
315
+ >
316
+ ${this.collapsed$.value
317
+ ? ToggleRightIcon({ width: '16px', height: '16px' })
318
+ : ToggleDownIcon({ width: '16px', height: '16px' })}
319
+ </div>
241
320
  ${GroupTitle(this.group, {
242
321
  readonly: this.view.readonly$.value,
243
322
  clickAdd: this.clickAddRowInStart,
@@ -7,5 +7,6 @@ export declare class TableHotkeysController implements ReactiveController {
7
7
  get selectionController(): import("./selection.js").TableSelectionController;
8
8
  constructor(logic: VirtualTableViewUILogic);
9
9
  get host(): import("../table-view-ui-logic.js").TableViewUI | undefined;
10
+ private _handleDeleteOrBackspace;
10
11
  hostConnected(): void;
11
12
  }
@@ -14,39 +14,26 @@ export class TableHotkeysController {
14
14
  get host() {
15
15
  return this.logic.ui$.value;
16
16
  }
17
- hostConnected() {
18
- this.disposables.add(this.logic.bindHotkey({
19
- Backspace: () => {
20
- const selection = this.selectionController.selection;
21
- if (!selection) {
22
- return;
23
- }
24
- if (TableViewRowSelection.is(selection)) {
25
- const rows = TableViewRowSelection.rowsIds(selection);
26
- this.selectionController.selection = undefined;
27
- this.logic.view.rowsDelete(rows);
28
- this.logic.ui$.value?.requestUpdate();
29
- return;
30
- }
31
- const { focus, rowsSelection, columnsSelection, isEditing, groupKey, } = selection;
32
- if (focus && !isEditing) {
33
- if (rowsSelection && columnsSelection) {
34
- // multi cell
35
- for (let i = rowsSelection.start; i <= rowsSelection.end; i++) {
36
- const { start, end } = columnsSelection;
37
- for (let j = start; j <= end; j++) {
38
- const container = this.selectionController.getCellContainer(groupKey, i, j);
39
- const rowId = container?.dataset.rowId;
40
- const columnId = container?.dataset.columnId;
41
- if (rowId && columnId) {
42
- container?.column$.value?.valueSetFromString(rowId, '');
43
- }
44
- }
45
- }
46
- }
47
- else {
48
- // single cell
49
- const container = this.selectionController.getCellContainer(groupKey, focus.rowIndex, focus.columnIndex);
17
+ _handleDeleteOrBackspace() {
18
+ const selection = this.selectionController.selection;
19
+ if (!selection) {
20
+ return;
21
+ }
22
+ if (TableViewRowSelection.is(selection)) {
23
+ const rows = TableViewRowSelection.rowsIds(selection);
24
+ this.selectionController.selection = undefined;
25
+ this.logic.view.rowsDelete(rows);
26
+ this.logic.ui$.value?.requestUpdate();
27
+ return;
28
+ }
29
+ const { focus, rowsSelection, columnsSelection, isEditing, groupKey } = selection;
30
+ if (focus && !isEditing) {
31
+ if (rowsSelection && columnsSelection) {
32
+ // multi cell
33
+ for (let i = rowsSelection.start; i <= rowsSelection.end; i++) {
34
+ const { start, end } = columnsSelection;
35
+ for (let j = start; j <= end; j++) {
36
+ const container = this.selectionController.getCellContainer(groupKey, i, j);
50
37
  const rowId = container?.dataset.rowId;
51
38
  const columnId = container?.dataset.columnId;
52
39
  if (rowId && columnId) {
@@ -54,6 +41,25 @@ export class TableHotkeysController {
54
41
  }
55
42
  }
56
43
  }
44
+ }
45
+ else {
46
+ // single cell
47
+ const container = this.selectionController.getCellContainer(groupKey, focus.rowIndex, focus.columnIndex);
48
+ const rowId = container?.dataset.rowId;
49
+ const columnId = container?.dataset.columnId;
50
+ if (rowId && columnId) {
51
+ container?.column$.value?.valueSetFromString(rowId, '');
52
+ }
53
+ }
54
+ }
55
+ }
56
+ hostConnected() {
57
+ this.disposables.add(this.logic.bindHotkey({
58
+ Backspace: () => {
59
+ this._handleDeleteOrBackspace();
60
+ },
61
+ Delete: () => {
62
+ this._handleDeleteOrBackspace();
57
63
  },
58
64
  Escape: () => {
59
65
  const selection = this.selectionController.selection;
@@ -19,9 +19,9 @@ export const GroupTitle = (groupData, ops) => {
19
19
  }
20
20
  const icon = groupData.value == null
21
21
  ? ''
22
- : html ` <uni-lit
23
- class="${groupHeaderIcon}"
24
- .uni="${groupData.property.icon}"
22
+ : html ` <uni-lit
23
+ class="${groupHeaderIcon}"
24
+ .uni="${groupData.property.icon}"
25
25
  ></uni-lit>`;
26
26
  const props = {
27
27
  group: groupData,
@@ -29,25 +29,25 @@ export const GroupTitle = (groupData, ops) => {
29
29
  };
30
30
  const showColumnName = groupData.property.type$.value === 'checkbox';
31
31
  const columnName = showColumnName
32
- ? html `<span class="${groupHeaderTitle}"
33
- >${groupData.property.name$.value}</span
32
+ ? html `<span class="${groupHeaderTitle}"
33
+ >${groupData.property.name$.value}</span
34
34
  >`
35
35
  : nothing;
36
36
  const opsClass = clsx(ops.groupHover && show, groupHeaderOps);
37
- return html `
38
- <div class="${groupTitleRow}">
39
- ${icon} ${renderUniLit(view, props)} ${columnName}
40
- ${GroupHeaderCount(groupData)}
41
- </div>
37
+ return html `
38
+ <div class="${groupTitleRow}">
39
+ ${icon} ${renderUniLit(view, props)} ${columnName}
40
+ ${GroupHeaderCount(groupData)}
41
+ </div>
42
42
  ${!ops.readonly
43
- ? html ` <div class="${opsClass}">
44
- <div @click="${ops.clickAdd}" class="${groupHeaderOp}">
45
- ${PlusIcon()}
46
- </div>
47
- <div @click="${ops.clickOps}" class="${groupHeaderOp}">
48
- ${MoreHorizontalIcon()}
49
- </div>
43
+ ? html ` <div class="${opsClass}">
44
+ <div @click="${ops.clickAdd}" class="${groupHeaderOp}">
45
+ ${PlusIcon()}
46
+ </div>
47
+ <div @click="${ops.clickOps}" class="${groupHeaderOp}">
48
+ ${MoreHorizontalIcon()}
49
+ </div>
50
50
  </div>`
51
- : nothing}
51
+ : nothing}
52
52
  `;
53
53
  };
@@ -17,6 +17,9 @@ export declare class DatabaseCellContainer extends DatabaseCellContainer_base {
17
17
  isRowSelected$: import("@preact/signals-core").ReadonlySignal<boolean>;
18
18
  isSelected(selection: TableViewSelectionWithType): boolean;
19
19
  render(): import("lit-html").TemplateResult | undefined;
20
+ private _tagDraft;
21
+ setTagDraft(value: string): void;
22
+ consumeTagDraft(): string | undefined;
20
23
  isEditing$: import("@preact/signals-core").Signal<boolean>;
21
24
  rowIndex$: import("@preact/signals-core").ReadonlySignal<number>;
22
25
  columnIndex$: import("@preact/signals-core").ReadonlySignal<number>;
@@ -147,6 +147,14 @@ let DatabaseCellContainer = (() => {
147
147
  },
148
148
  });
149
149
  }
150
+ setTagDraft(value) {
151
+ this._tagDraft = value;
152
+ }
153
+ consumeTagDraft() {
154
+ const value = this._tagDraft;
155
+ this._tagDraft = undefined;
156
+ return value;
157
+ }
150
158
  get rowId() {
151
159
  return this.gridCell.row.rowId;
152
160
  }
@@ -154,7 +154,9 @@ export class TableSingleView extends SingleViewBase {
154
154
  }
155
155
  isShow(rowId) {
156
156
  if (this.filter$.value?.conditions.length) {
157
- const rowMap = Object.fromEntries(this.properties$.value.map(column => [
157
+ // Filters are evaluated against every property of the view, hidden ones
158
+ // included: hiding a column must not silently drop the condition on it.
159
+ const rowMap = Object.fromEntries(this.propertiesRaw$.value.map(column => [
158
160
  column.id,
159
161
  column.cellGetOrCreate(rowId).jsonValue$.value,
160
162
  ]));
@@ -1,9 +1,12 @@
1
+ import type { ReadonlySignal } from '@preact/signals-core';
1
2
  import type { TableViewSelectionWithType } from './selection.js';
2
3
  export interface TableCell {
3
4
  rowId: string;
5
+ setTagDraft?(value: string): void;
4
6
  }
5
7
  export type ColumnAccessor<T extends TableCell> = (cell: T) => {
6
8
  valueSetFromString(rowId: string, value: string): void;
9
+ type$: ReadonlySignal<string>;
7
10
  } | undefined;
8
11
  export interface StartEditOptions<T extends TableCell> {
9
12
  event: KeyboardEvent;
@@ -1,4 +1,10 @@
1
+ import { multiSelectPropertyType } from '../../property-presets/multi-select/define.js';
2
+ import { selectPropertyType } from '../../property-presets/select/define.js';
1
3
  import { TableViewRowSelection } from './selection.js';
4
+ const TAG_COLUMN_TYPES = new Set([
5
+ selectPropertyType.type,
6
+ multiSelectPropertyType.type,
7
+ ]);
2
8
  export function handleCharStartEdit(options) {
3
9
  const { event, selection, getCellContainer, updateSelection, getColumn } = options;
4
10
  const target = event.target;
@@ -15,7 +21,16 @@ export function handleCharStartEdit(options) {
15
21
  const cell = getCellContainer(selection.groupKey, selection.focus.rowIndex, selection.focus.columnIndex);
16
22
  if (cell) {
17
23
  const column = getColumn(cell);
18
- column?.valueSetFromString(cell.rowId, event.key);
24
+ if (column) {
25
+ if (TAG_COLUMN_TYPES.has(column.type$.value) && cell.setTagDraft) {
26
+ // A tag cell has no free-text value to write into: hand the typed
27
+ // character to the cell so the tag picker opens searching for it.
28
+ cell.setTagDraft(event.key);
29
+ }
30
+ else {
31
+ column.valueSetFromString(cell.rowId, event.key);
32
+ }
33
+ }
19
34
  updateSelection({ ...selection, isEditing: true });
20
35
  event.preventDefault();
21
36
  return true;
@@ -236,7 +236,9 @@ export const popViewOptions = (target, dataViewLogic, onClose) => {
236
236
  `,
237
237
  select: () => {
238
238
  const id = view.manager.currentViewId$.value;
239
- if (!id) {
239
+ // Re-picking the current layout would reset the view to the
240
+ // defaults of its own type, dropping widths and filters.
241
+ if (!id || meta.type === view.type) {
240
242
  return;
241
243
  }
242
244
  view.manager.viewChangeType(id, meta.type);
@@ -102,9 +102,10 @@ export function getBezierNearestPoint(values, point) {
102
102
  return pointOnCurve;
103
103
  }
104
104
  export function getBezierParameters(points) {
105
- // Fallback for degenerate Bezier curve (all points are at the same position)
106
- if (points.length === 1) {
107
- const point = points[0];
105
+ // Fallback for degenerate Bezier curve (empty path or all points at the
106
+ // same position)
107
+ if (points.length <= 1) {
108
+ const point = points[0] ?? new PointLocation();
108
109
  return [point, point, point, point];
109
110
  }
110
111
  return [points[0], points[0].absOut, points[1].absIn, points[1]];
@@ -5,7 +5,7 @@ import rehypeParse from 'rehype-parse';
5
5
  import { unified } from 'unified';
6
6
  import { LifeCycleWatcher } from '../extension/index.js';
7
7
  import { ClipboardAdapterConfigIdentifier } from './clipboard-adapter.js';
8
- import { onlyContainImgElement } from './utils.js';
8
+ import { escapeHTML, onlyContainImgElement } from './utils.js';
9
9
  export class Clipboard extends LifeCycleWatcher {
10
10
  constructor() {
11
11
  super(...arguments);
@@ -206,11 +206,21 @@ export class Clipboard extends LifeCycleWatcher {
206
206
  }
207
207
  const hasInnerHTML = Boolean(innerHTML.length);
208
208
  const isEmpty = Object.keys(clipboardItems).length === 0;
209
+ // Whatever is left in `items` is a BlockSuite payload (a block snapshot, a
210
+ // surface slice, a database slice). It only travels through the
211
+ // `text/html` flavour, so it has to be written even when the adapters
212
+ // produced plain text and no HTML — otherwise pasting into another
213
+ // document silently degrades to the plain-text fallback and every block /
214
+ // element property is lost.
215
+ const hasSnapshotPayload = Object.values(items).some(value => typeof value === 'string' ? value.length > 0 : Boolean(value));
209
216
  // If there are no items, fall back to snapshot.
210
- if (hasInnerHTML || isEmpty) {
217
+ if (hasInnerHTML || isEmpty || hasSnapshotPayload) {
211
218
  const type = 'text/html';
212
219
  const snapshot = lz.compressToEncodedURIComponent(JSON.stringify(items));
213
- const html = `<div data-blocksuite-snapshot='${snapshot}'>${innerHTML}</div>`;
220
+ // Keep the plain text readable for external targets that prefer the
221
+ // `text/html` flavour; internal pastes only read the attribute.
222
+ const body = hasInnerHTML ? innerHTML : escapeHTML(text);
223
+ const html = `<div data-blocksuite-snapshot="${snapshot}">${body}</div>`;
214
224
  clipboardItems[type] = new Blob([html], { type });
215
225
  }
216
226
  await navigator.clipboard.write([new ClipboardItem(clipboardItems)]);
@@ -1,4 +1,9 @@
1
1
  import type { RootContentMap } from 'hast';
2
2
  type HastUnionType<K extends keyof RootContentMap, V extends RootContentMap[K]> = V;
3
+ /**
4
+ * Escapes the characters that would break out of an HTML text node.
5
+ * Used to embed plain text in the clipboard snapshot wrapper.
6
+ */
7
+ export declare function escapeHTML(value: string): string;
3
8
  export declare function onlyContainImgElement(ast: HastUnionType<keyof RootContentMap, RootContentMap[keyof RootContentMap]>): 'yes' | 'no' | 'maybe';
4
9
  export {};
@@ -1,3 +1,10 @@
1
+ /**
2
+ * Escapes the characters that would break out of an HTML text node.
3
+ * Used to embed plain text in the clipboard snapshot wrapper.
4
+ */
5
+ export function escapeHTML(value) {
6
+ return value.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
7
+ }
1
8
  export function onlyContainImgElement(ast) {
2
9
  if (ast.type === 'element') {
3
10
  switch (ast.tagName) {
@@ -49,6 +49,15 @@ const eventNames = [
49
49
  'nativeDragLeave',
50
50
  ...bypassEventNames,
51
51
  ];
52
+ /**
53
+ * Events the dispatcher synthesizes itself: `click`, `doubleClick` and
54
+ * `tripleClick` are all derived from a single native `pointerup`. Stopping
55
+ * propagation of that shared native event when a synthetic handler consumes
56
+ * the click would also silence unrelated pointer listeners bound higher up
57
+ * (document-level drag/pan/auto-complete teardown), so it is skipped for them.
58
+ * Consuming a synthetic event still stops the dispatcher's own runner chain.
59
+ */
60
+ const syntheticEventNames = new Set(['click', 'doubleClick', 'tripleClick']);
52
61
  export class UIEventDispatcher extends LifeCycleWatcher {
53
62
  static { this._activeDispatcher = null; }
54
63
  static { this.key = 'UIEventDispatcher'; }
@@ -157,6 +166,20 @@ export class UIEventDispatcher extends LifeCycleWatcher {
157
166
  this._setActive(false);
158
167
  }
159
168
  });
169
+ // When the selection is outside the host, the event dispatcher should be
170
+ // inactive. Selecting text in a plain (non-focusable) element outside the
171
+ // editor fires neither `focusout` with a relatedTarget nor `blur`, so
172
+ // without this the editor would keep handling keystrokes aimed elsewhere.
173
+ this.disposables.addFromEvent(document, 'selectionchange', () => {
174
+ const sel = document.getSelection();
175
+ if (!sel || sel.rangeCount === 0)
176
+ return;
177
+ const { anchorNode, focusNode } = sel;
178
+ if ((anchorNode && !this.host.contains(anchorNode)) ||
179
+ (focusNode && !this.host.contains(focusNode))) {
180
+ this._setActive(false);
181
+ }
182
+ });
160
183
  }
161
184
  _buildEventScopeBySelection(name) {
162
185
  const handlers = this._handlersMap[name];
@@ -321,7 +344,10 @@ export class UIEventDispatcher extends LifeCycleWatcher {
321
344
  const { fn } = runner;
322
345
  const result = fn(context);
323
346
  if (result) {
324
- context.get('defaultState').event.stopPropagation();
347
+ // Only stop propagation for non-synthetic events
348
+ if (!syntheticEventNames.has(name)) {
349
+ context.get('defaultState').event.stopPropagation();
350
+ }
325
351
  return;
326
352
  }
327
353
  }
@@ -197,13 +197,23 @@ export function bindKeymap(bindings, interceptors) {
197
197
  return true;
198
198
  }
199
199
  }
200
- // none standard keyboard, fallback to keyCode
201
- const special = event.shiftKey ||
202
- event.altKey ||
203
- event.metaKey ||
204
- name.charCodeAt(0) > 127;
200
+ // For non-standard keyboards, fallback to keyCode only when modifier keys
201
+ // are pressed. Do NOT fallback when the key produces a non-ASCII character
202
+ // (e.g. Cyrillic 'х' on a Russian layout), because the user intends to type
203
+ // that character, not to trigger a shortcut bound to the physical key.
204
+ // See: https://github.com/toeverything/AFFiNE/issues/14059
205
+ const hasModifier = event.shiftKey || event.altKey || event.ctrlKey || event.metaKey;
205
206
  const baseName = base[event.keyCode];
206
- if (special && baseName && baseName !== name) {
207
+ const isSingleAscii = name.length === 1 && name.charCodeAt(0) <= 0x7e;
208
+ const isAltInputChar = event.altKey && !event.ctrlKey && !event.metaKey && !isSingleAscii;
209
+ // Keep supporting existing Alt+digit shortcuts (e.g. Alt-0/1/2 in edgeless)
210
+ // while preventing Alt-based locale input characters from triggering letter
211
+ // shortcuts.
212
+ const isDigitBaseKey = baseName != null && baseName.length === 1 && /[0-9]/.test(baseName);
213
+ if (hasModifier &&
214
+ baseName &&
215
+ baseName !== name &&
216
+ !(isAltInputChar && !isDigitBaseKey)) {
207
217
  const fromCode = map[modifiers(baseName, event)];
208
218
  if (fromCode && fromCode(ctx)) {
209
219
  return true;