@formicoidea/labre-core 0.23.0 → 0.23.2

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 (1624) hide show
  1. package/package.json +1 -1
  2. package/src/_pkgs/affine-block-attachment/adapters/extension.ts +9 -9
  3. package/src/_pkgs/affine-block-attachment/adapters/markdown.ts +85 -85
  4. package/src/_pkgs/affine-block-attachment/adapters/notion-html.ts +115 -115
  5. package/src/_pkgs/affine-block-attachment/attachment-block.ts +533 -533
  6. package/src/_pkgs/affine-block-attachment/attachment-edgeless-block.ts +72 -72
  7. package/src/_pkgs/affine-block-attachment/attachment-service.ts +51 -51
  8. package/src/_pkgs/affine-block-attachment/components/rename-model.ts +95 -95
  9. package/src/_pkgs/affine-block-attachment/components/styles.ts +64 -64
  10. package/src/_pkgs/affine-block-attachment/configs/slash-menu.ts +58 -58
  11. package/src/_pkgs/affine-block-attachment/configs/toolbar.ts +411 -411
  12. package/src/_pkgs/affine-block-attachment/edgeless-clipboard-config.ts +34 -34
  13. package/src/_pkgs/affine-block-attachment/embed.ts +305 -305
  14. package/src/_pkgs/affine-block-attachment/store.ts +17 -17
  15. package/src/_pkgs/affine-block-attachment/styles.ts +160 -160
  16. package/src/_pkgs/affine-block-attachment/utils.ts +216 -216
  17. package/src/_pkgs/affine-block-attachment/view.ts +51 -51
  18. package/src/_pkgs/affine-block-bookmark/adapters/extension.ts +13 -13
  19. package/src/_pkgs/affine-block-bookmark/adapters/html.ts +10 -10
  20. package/src/_pkgs/affine-block-bookmark/adapters/markdown/index.ts +12 -12
  21. package/src/_pkgs/affine-block-bookmark/adapters/markdown/markdown.ts +93 -93
  22. package/src/_pkgs/affine-block-bookmark/adapters/markdown/preprocessor.ts +263 -263
  23. package/src/_pkgs/affine-block-bookmark/adapters/notion-html.ts +71 -71
  24. package/src/_pkgs/affine-block-bookmark/adapters/plain-text.ts +9 -9
  25. package/src/_pkgs/affine-block-bookmark/bookmark-block.ts +291 -291
  26. package/src/_pkgs/affine-block-bookmark/bookmark-edgeless-block.ts +88 -88
  27. package/src/_pkgs/affine-block-bookmark/commands/insert-bookmark.ts +23 -23
  28. package/src/_pkgs/affine-block-bookmark/commands/insert-link-by-quick-search.ts +79 -79
  29. package/src/_pkgs/affine-block-bookmark/components/bookmark-card.ts +131 -131
  30. package/src/_pkgs/affine-block-bookmark/configs/slash-menu.ts +65 -65
  31. package/src/_pkgs/affine-block-bookmark/configs/toolbar.ts +625 -625
  32. package/src/_pkgs/affine-block-bookmark/edgeless-clipboard-config.ts +29 -29
  33. package/src/_pkgs/affine-block-bookmark/store.ts +17 -17
  34. package/src/_pkgs/affine-block-bookmark/styles.ts +282 -282
  35. package/src/_pkgs/affine-block-bookmark/utils.ts +47 -47
  36. package/src/_pkgs/affine-block-bookmark/view.ts +43 -43
  37. package/src/_pkgs/affine-block-callout/adapters/markdown.ts +207 -207
  38. package/src/_pkgs/affine-block-callout/callout-block.ts +132 -132
  39. package/src/_pkgs/affine-block-callout/callout-keymap.ts +34 -34
  40. package/src/_pkgs/affine-block-callout/configs/slash-menu.ts +67 -67
  41. package/src/_pkgs/affine-block-callout/emoji-menu.ts +34 -34
  42. package/src/_pkgs/affine-block-callout/store.ts +17 -17
  43. package/src/_pkgs/affine-block-callout/view.ts +30 -30
  44. package/src/_pkgs/affine-block-code/adapters/extension.ts +13 -13
  45. package/src/_pkgs/affine-block-code/adapters/html.ts +109 -109
  46. package/src/_pkgs/affine-block-code/adapters/markdown/index.ts +12 -12
  47. package/src/_pkgs/affine-block-code/adapters/markdown/markdown.ts +99 -99
  48. package/src/_pkgs/affine-block-code/adapters/markdown/preprocessor.ts +76 -76
  49. package/src/_pkgs/affine-block-code/adapters/notion-html.ts +59 -59
  50. package/src/_pkgs/affine-block-code/adapters/plain-text.ts +26 -26
  51. package/src/_pkgs/affine-block-code/clipboard/index.ts +173 -173
  52. package/src/_pkgs/affine-block-code/code-block-config.ts +19 -19
  53. package/src/_pkgs/affine-block-code/code-block-inline.ts +50 -50
  54. package/src/_pkgs/affine-block-code/code-block-service.ts +69 -69
  55. package/src/_pkgs/affine-block-code/code-block.ts +498 -498
  56. package/src/_pkgs/affine-block-code/code-keymap.ts +7 -7
  57. package/src/_pkgs/affine-block-code/code-preview-extension.ts +27 -27
  58. package/src/_pkgs/affine-block-code/code-toolbar/components/code-toolbar.ts +159 -159
  59. package/src/_pkgs/affine-block-code/code-toolbar/components/lang-button.ts +168 -168
  60. package/src/_pkgs/affine-block-code/code-toolbar/components/preview-button.ts +112 -112
  61. package/src/_pkgs/affine-block-code/code-toolbar/config.ts +284 -284
  62. package/src/_pkgs/affine-block-code/code-toolbar/context.ts +46 -46
  63. package/src/_pkgs/affine-block-code/code-toolbar/index.ts +173 -173
  64. package/src/_pkgs/affine-block-code/code-toolbar/utils.ts +16 -16
  65. package/src/_pkgs/affine-block-code/configs/slash-menu.ts +8 -8
  66. package/src/_pkgs/affine-block-code/highlight/affine-code-unit.ts +122 -122
  67. package/src/_pkgs/affine-block-code/markdown.ts +61 -61
  68. package/src/_pkgs/affine-block-code/store.ts +19 -19
  69. package/src/_pkgs/affine-block-code/styles.ts +73 -73
  70. package/src/_pkgs/affine-block-code/turbo/code-layout-handler.ts +73 -73
  71. package/src/_pkgs/affine-block-code/turbo/code-painter.worker.ts +53 -53
  72. package/src/_pkgs/affine-block-code/view.ts +65 -65
  73. package/src/_pkgs/affine-block-data-view/block-meta/base.ts +37 -37
  74. package/src/_pkgs/affine-block-data-view/block-meta/todo.ts +13 -13
  75. package/src/_pkgs/affine-block-data-view/columns/index.ts +22 -22
  76. package/src/_pkgs/affine-block-data-view/configs/slash-menu.ts +51 -51
  77. package/src/_pkgs/affine-block-data-view/data-source.ts +326 -326
  78. package/src/_pkgs/affine-block-data-view/data-view-block.ts +318 -318
  79. package/src/_pkgs/affine-block-data-view/data-view-model.ts +102 -102
  80. package/src/_pkgs/affine-block-data-view/data-view-spec.ts +8 -8
  81. package/src/_pkgs/affine-block-data-view/store.ts +15 -15
  82. package/src/_pkgs/affine-block-data-view/view.ts +28 -28
  83. package/src/_pkgs/affine-block-data-view/views/index.ts +11 -11
  84. package/src/_pkgs/affine-block-database/adapters/extension.ts +13 -13
  85. package/src/_pkgs/affine-block-database/adapters/html.ts +105 -105
  86. package/src/_pkgs/affine-block-database/adapters/markdown.ts +67 -67
  87. package/src/_pkgs/affine-block-database/adapters/notion-html.ts +358 -358
  88. package/src/_pkgs/affine-block-database/adapters/plain-text.ts +48 -48
  89. package/src/_pkgs/affine-block-database/adapters/utils.ts +109 -109
  90. package/src/_pkgs/affine-block-database/block-icons.ts +45 -45
  91. package/src/_pkgs/affine-block-database/commands.ts +69 -69
  92. package/src/_pkgs/affine-block-database/components/layout.ts +69 -69
  93. package/src/_pkgs/affine-block-database/components/title/index.ts +199 -199
  94. package/src/_pkgs/affine-block-database/config.ts +6 -6
  95. package/src/_pkgs/affine-block-database/configs/slash-menu.ts +83 -83
  96. package/src/_pkgs/affine-block-database/context/host-context.ts +4 -4
  97. package/src/_pkgs/affine-block-database/data-source.ts +667 -667
  98. package/src/_pkgs/affine-block-database/database-block.ts +468 -468
  99. package/src/_pkgs/affine-block-database/database-dnd-preview-block.ts +58 -58
  100. package/src/_pkgs/affine-block-database/detail-panel/block-renderer.ts +158 -158
  101. package/src/_pkgs/affine-block-database/detail-panel/note-renderer.ts +129 -129
  102. package/src/_pkgs/affine-block-database/index.ts +14 -14
  103. package/src/_pkgs/affine-block-database/properties/converts.ts +176 -176
  104. package/src/_pkgs/affine-block-database/properties/created-time/cell-renderer.ts +54 -54
  105. package/src/_pkgs/affine-block-database/properties/created-time/define.ts +30 -30
  106. package/src/_pkgs/affine-block-database/properties/index.ts +29 -29
  107. package/src/_pkgs/affine-block-database/properties/link/cell-renderer-css.ts +99 -99
  108. package/src/_pkgs/affine-block-database/properties/link/cell-renderer.ts +186 -186
  109. package/src/_pkgs/affine-block-database/properties/link/define.ts +25 -25
  110. package/src/_pkgs/affine-block-database/properties/model.ts +20 -20
  111. package/src/_pkgs/affine-block-database/properties/rich-text/cell-renderer.ts +430 -430
  112. package/src/_pkgs/affine-block-database/properties/rich-text/define.ts +77 -77
  113. package/src/_pkgs/affine-block-database/properties/title/cell-renderer-css.ts +31 -31
  114. package/src/_pkgs/affine-block-database/properties/title/cell-renderer.ts +23 -23
  115. package/src/_pkgs/affine-block-database/properties/title/define.ts +83 -83
  116. package/src/_pkgs/affine-block-database/properties/title/icon.ts +21 -21
  117. package/src/_pkgs/affine-block-database/properties/title/text.ts +319 -319
  118. package/src/_pkgs/affine-block-database/selection.ts +68 -68
  119. package/src/_pkgs/affine-block-database/service/index.ts +11 -11
  120. package/src/_pkgs/affine-block-database/store.ts +19 -19
  121. package/src/_pkgs/affine-block-database/utils/block-utils.ts +240 -240
  122. package/src/_pkgs/affine-block-database/utils/title-doc.ts +30 -30
  123. package/src/_pkgs/affine-block-database/view.ts +51 -51
  124. package/src/_pkgs/affine-block-database/views/index.ts +12 -12
  125. package/src/_pkgs/affine-block-divider/adapters/extension.ts +13 -13
  126. package/src/_pkgs/affine-block-divider/adapters/html.ts +53 -53
  127. package/src/_pkgs/affine-block-divider/adapters/markdown.ts +50 -50
  128. package/src/_pkgs/affine-block-divider/adapters/notion-html.ts +38 -38
  129. package/src/_pkgs/affine-block-divider/adapters/plain-text.ts +21 -21
  130. package/src/_pkgs/affine-block-divider/divider-block.ts +50 -50
  131. package/src/_pkgs/affine-block-divider/markdown.ts +63 -63
  132. package/src/_pkgs/affine-block-divider/store.ts +17 -17
  133. package/src/_pkgs/affine-block-divider/view.ts +26 -26
  134. package/src/_pkgs/affine-block-edgeless-text/edgeless-clipboard-config.ts +33 -33
  135. package/src/_pkgs/affine-block-edgeless-text/edgeless-text-block.ts +512 -512
  136. package/src/_pkgs/affine-block-edgeless-text/edgeless-toolbar/config.ts +19 -19
  137. package/src/_pkgs/affine-block-edgeless-text/store.ts +14 -14
  138. package/src/_pkgs/affine-block-edgeless-text/view.ts +37 -37
  139. package/src/_pkgs/affine-block-embed/common/adapters/html.ts +66 -66
  140. package/src/_pkgs/affine-block-embed/common/adapters/markdown.ts +58 -58
  141. package/src/_pkgs/affine-block-embed/common/adapters/notion-html.ts +89 -89
  142. package/src/_pkgs/affine-block-embed/common/adapters/plain-text.ts +40 -40
  143. package/src/_pkgs/affine-block-embed/common/embed-block-element.ts +207 -207
  144. package/src/_pkgs/affine-block-embed/common/insert-embed-card.ts +94 -94
  145. package/src/_pkgs/affine-block-embed/common/render-linked-doc.ts +205 -205
  146. package/src/_pkgs/affine-block-embed/common/to-edgeless-embed-block.ts +78 -78
  147. package/src/_pkgs/affine-block-embed/common/utils.ts +49 -49
  148. package/src/_pkgs/affine-block-embed/configs/toolbar.ts +686 -686
  149. package/src/_pkgs/affine-block-embed/embed-figma-block/adapters/extension.ts +13 -13
  150. package/src/_pkgs/affine-block-embed/embed-figma-block/adapters/html.ts +11 -11
  151. package/src/_pkgs/affine-block-embed/embed-figma-block/adapters/markdown.ts +11 -11
  152. package/src/_pkgs/affine-block-embed/embed-figma-block/adapters/notion-html.ts +14 -14
  153. package/src/_pkgs/affine-block-embed/embed-figma-block/adapters/plain-text.ts +10 -10
  154. package/src/_pkgs/affine-block-embed/embed-figma-block/configs/slash-menu.ts +47 -47
  155. package/src/_pkgs/affine-block-embed/embed-figma-block/edgeless-clipboard-config.ts +25 -25
  156. package/src/_pkgs/affine-block-embed/embed-figma-block/embed-edgeless-figma-block.ts +13 -13
  157. package/src/_pkgs/affine-block-embed/embed-figma-block/embed-figma-block.ts +126 -126
  158. package/src/_pkgs/affine-block-embed/embed-figma-block/embed-figma-service.ts +14 -14
  159. package/src/_pkgs/affine-block-embed/embed-figma-block/embed-figma-spec.ts +26 -26
  160. package/src/_pkgs/affine-block-embed/embed-figma-block/styles.ts +218 -218
  161. package/src/_pkgs/affine-block-embed/embed-github-block/adapters/extension.ts +13 -13
  162. package/src/_pkgs/affine-block-embed/embed-github-block/adapters/html.ts +11 -11
  163. package/src/_pkgs/affine-block-embed/embed-github-block/adapters/markdown.ts +10 -10
  164. package/src/_pkgs/affine-block-embed/embed-github-block/adapters/notion-html.ts +14 -14
  165. package/src/_pkgs/affine-block-embed/embed-github-block/adapters/plain-text.ts +10 -10
  166. package/src/_pkgs/affine-block-embed/embed-github-block/configs/slash-menu.ts +47 -47
  167. package/src/_pkgs/affine-block-embed/embed-github-block/edgeless-clipboard-config.ts +51 -51
  168. package/src/_pkgs/affine-block-embed/embed-github-block/embed-edgeless-github-block.ts +13 -13
  169. package/src/_pkgs/affine-block-embed/embed-github-block/embed-github-block.ts +271 -271
  170. package/src/_pkgs/affine-block-embed/embed-github-block/embed-github-service.ts +36 -36
  171. package/src/_pkgs/affine-block-embed/embed-github-block/embed-github-spec.ts +30 -30
  172. package/src/_pkgs/affine-block-embed/embed-github-block/utils.ts +182 -182
  173. package/src/_pkgs/affine-block-embed/embed-html-block/components/fullscreen-toolbar.ts +171 -171
  174. package/src/_pkgs/affine-block-embed/embed-html-block/configs/toolbar.ts +193 -193
  175. package/src/_pkgs/affine-block-embed/embed-html-block/edgeless-clipboard-config.ts +24 -24
  176. package/src/_pkgs/affine-block-embed/embed-html-block/embed-edgeless-html-block.ts +19 -19
  177. package/src/_pkgs/affine-block-embed/embed-html-block/embed-html-block.ts +114 -114
  178. package/src/_pkgs/affine-block-embed/embed-html-block/embed-html-spec.ts +19 -19
  179. package/src/_pkgs/affine-block-embed/embed-iframe-block/adapters/html.ts +55 -55
  180. package/src/_pkgs/affine-block-embed/embed-iframe-block/adapters/index.ts +15 -15
  181. package/src/_pkgs/affine-block-embed/embed-iframe-block/adapters/markdown.ts +46 -46
  182. package/src/_pkgs/affine-block-embed/embed-iframe-block/adapters/plain-text.ts +31 -31
  183. package/src/_pkgs/affine-block-embed/embed-iframe-block/commands/insert-embed-iframe-with-url.ts +107 -107
  184. package/src/_pkgs/affine-block-embed/embed-iframe-block/commands/insert-empty-embed-iframe.ts +55 -55
  185. package/src/_pkgs/affine-block-embed/embed-iframe-block/components/embed-iframe-error-card.ts +343 -343
  186. package/src/_pkgs/affine-block-embed/embed-iframe-block/components/embed-iframe-idle-card.ts +132 -132
  187. package/src/_pkgs/affine-block-embed/embed-iframe-block/components/embed-iframe-link-edit-popup.ts +122 -122
  188. package/src/_pkgs/affine-block-embed/embed-iframe-block/components/embed-iframe-link-input-base.ts +160 -160
  189. package/src/_pkgs/affine-block-embed/embed-iframe-block/components/embed-iframe-link-input-popup.ts +292 -292
  190. package/src/_pkgs/affine-block-embed/embed-iframe-block/components/embed-iframe-loading-card.ts +193 -193
  191. package/src/_pkgs/affine-block-embed/embed-iframe-block/configs/providers/excalidraw.ts +42 -42
  192. package/src/_pkgs/affine-block-embed/embed-iframe-block/configs/providers/generic.ts +75 -75
  193. package/src/_pkgs/affine-block-embed/embed-iframe-block/configs/providers/google-docs.ts +81 -81
  194. package/src/_pkgs/affine-block-embed/embed-iframe-block/configs/providers/google-drive.ts +197 -197
  195. package/src/_pkgs/affine-block-embed/embed-iframe-block/configs/providers/miro.ts +46 -46
  196. package/src/_pkgs/affine-block-embed/embed-iframe-block/configs/providers/spotify.ts +47 -47
  197. package/src/_pkgs/affine-block-embed/embed-iframe-block/configs/slash-menu/slash-menu.ts +37 -37
  198. package/src/_pkgs/affine-block-embed/embed-iframe-block/configs/toolbar.ts +492 -492
  199. package/src/_pkgs/affine-block-embed/embed-iframe-block/edgeless-clipboard-config.ts +37 -37
  200. package/src/_pkgs/affine-block-embed/embed-iframe-block/embed-edgeless-iframe-block.ts +119 -119
  201. package/src/_pkgs/affine-block-embed/embed-iframe-block/embed-iframe-block.ts +470 -470
  202. package/src/_pkgs/affine-block-embed/embed-iframe-block/embed-iframe-spec.ts +23 -23
  203. package/src/_pkgs/affine-block-embed/embed-iframe-block/utils.ts +75 -75
  204. package/src/_pkgs/affine-block-embed/embed-loom-block/adapters/extension.ts +13 -13
  205. package/src/_pkgs/affine-block-embed/embed-loom-block/adapters/html.ts +11 -11
  206. package/src/_pkgs/affine-block-embed/embed-loom-block/adapters/markdown.ts +11 -11
  207. package/src/_pkgs/affine-block-embed/embed-loom-block/adapters/notion-html.ts +14 -14
  208. package/src/_pkgs/affine-block-embed/embed-loom-block/adapters/plain-text.ts +10 -10
  209. package/src/_pkgs/affine-block-embed/embed-loom-block/configs/slash-menu.ts +47 -47
  210. package/src/_pkgs/affine-block-embed/embed-loom-block/edgeless-clipboard-config.ts +28 -28
  211. package/src/_pkgs/affine-block-embed/embed-loom-block/embed-edgeless-loom-bock.ts +13 -13
  212. package/src/_pkgs/affine-block-embed/embed-loom-block/embed-loom-block.ts +171 -171
  213. package/src/_pkgs/affine-block-embed/embed-loom-block/embed-loom-service.ts +25 -25
  214. package/src/_pkgs/affine-block-embed/embed-loom-block/embed-loom-spec.ts +30 -30
  215. package/src/_pkgs/affine-block-embed/embed-loom-block/utils.ts +75 -75
  216. package/src/_pkgs/affine-block-embed/embed-youtube-block/adapters/extension.ts +13 -13
  217. package/src/_pkgs/affine-block-embed/embed-youtube-block/adapters/html.ts +51 -51
  218. package/src/_pkgs/affine-block-embed/embed-youtube-block/adapters/markdown.ts +10 -10
  219. package/src/_pkgs/affine-block-embed/embed-youtube-block/adapters/notion-html.ts +14 -14
  220. package/src/_pkgs/affine-block-embed/embed-youtube-block/adapters/plain-text.ts +12 -12
  221. package/src/_pkgs/affine-block-embed/embed-youtube-block/configs/slash-menu.ts +47 -47
  222. package/src/_pkgs/affine-block-embed/embed-youtube-block/edgeless-clipboard-config.ts +42 -42
  223. package/src/_pkgs/affine-block-embed/embed-youtube-block/embed-edgeless-youtube-block.ts +13 -13
  224. package/src/_pkgs/affine-block-embed/embed-youtube-block/embed-youtube-block.ts +225 -225
  225. package/src/_pkgs/affine-block-embed/embed-youtube-block/embed-youtube-service.ts +35 -35
  226. package/src/_pkgs/affine-block-embed/embed-youtube-block/embed-youtube-spec.ts +30 -30
  227. package/src/_pkgs/affine-block-embed/embed-youtube-block/styles.ts +241 -241
  228. package/src/_pkgs/affine-block-embed/embed-youtube-block/utils.ts +114 -114
  229. package/src/_pkgs/affine-block-embed/store.ts +48 -48
  230. package/src/_pkgs/affine-block-embed/types.ts +23 -23
  231. package/src/_pkgs/affine-block-embed/view.ts +72 -72
  232. package/src/_pkgs/affine-block-embed-doc/common/render-linked-doc.ts +213 -213
  233. package/src/_pkgs/affine-block-embed-doc/embed-linked-doc-block/adapters/extension.ts +11 -11
  234. package/src/_pkgs/affine-block-embed-doc/embed-linked-doc-block/adapters/html.ts +63 -63
  235. package/src/_pkgs/affine-block-embed-doc/embed-linked-doc-block/adapters/markdown.ts +122 -122
  236. package/src/_pkgs/affine-block-embed-doc/embed-linked-doc-block/adapters/plain-text.ts +33 -33
  237. package/src/_pkgs/affine-block-embed-doc/embed-linked-doc-block/commands/insert-embed-linked-doc.ts +34 -34
  238. package/src/_pkgs/affine-block-embed-doc/embed-linked-doc-block/configs/slash-menu.ts +84 -84
  239. package/src/_pkgs/affine-block-embed-doc/embed-linked-doc-block/configs/toolbar.ts +513 -513
  240. package/src/_pkgs/affine-block-embed-doc/embed-linked-doc-block/edgeless-clipboard-config.ts +31 -31
  241. package/src/_pkgs/affine-block-embed-doc/embed-linked-doc-block/embed-edgeless-linked-doc-block.ts +71 -71
  242. package/src/_pkgs/affine-block-embed-doc/embed-linked-doc-block/embed-linked-doc-block.ts +628 -628
  243. package/src/_pkgs/affine-block-embed-doc/embed-linked-doc-block/embed-linked-doc-spec.ts +21 -21
  244. package/src/_pkgs/affine-block-embed-doc/embed-linked-doc-block/styles.ts +2232 -2232
  245. package/src/_pkgs/affine-block-embed-doc/embed-linked-doc-block/utils.ts +102 -102
  246. package/src/_pkgs/affine-block-embed-doc/embed-synced-doc-block/adapters/extension.ts +11 -11
  247. package/src/_pkgs/affine-block-embed-doc/embed-synced-doc-block/adapters/html.ts +88 -88
  248. package/src/_pkgs/affine-block-embed-doc/embed-synced-doc-block/adapters/markdown.ts +64 -64
  249. package/src/_pkgs/affine-block-embed-doc/embed-synced-doc-block/adapters/plain-text.ts +62 -62
  250. package/src/_pkgs/affine-block-embed-doc/embed-synced-doc-block/commands/insert-embed-synced-doc.ts +20 -20
  251. package/src/_pkgs/affine-block-embed-doc/embed-synced-doc-block/components/embed-synced-doc-card.ts +262 -262
  252. package/src/_pkgs/affine-block-embed-doc/embed-synced-doc-block/configs/edgeless-interaction.ts +87 -87
  253. package/src/_pkgs/affine-block-embed-doc/embed-synced-doc-block/configs/index.ts +18 -18
  254. package/src/_pkgs/affine-block-embed-doc/embed-synced-doc-block/configs/toolbar.ts +500 -500
  255. package/src/_pkgs/affine-block-embed-doc/embed-synced-doc-block/edgeless-clipboard-config.ts +27 -27
  256. package/src/_pkgs/affine-block-embed-doc/embed-synced-doc-block/embed-edgeless-synced-doc-block.ts +196 -196
  257. package/src/_pkgs/affine-block-embed-doc/embed-synced-doc-block/embed-synced-doc-block.ts +627 -627
  258. package/src/_pkgs/affine-block-embed-doc/embed-synced-doc-block/embed-synced-doc-spec.ts +20 -20
  259. package/src/_pkgs/affine-block-embed-doc/embed-synced-doc-block/index.ts +8 -8
  260. package/src/_pkgs/affine-block-embed-doc/embed-synced-doc-block/init-height-extension.ts +65 -65
  261. package/src/_pkgs/affine-block-embed-doc/embed-synced-doc-block/styles.ts +1122 -1122
  262. package/src/_pkgs/affine-block-embed-doc/embed-synced-doc-block/utils.ts +74 -74
  263. package/src/_pkgs/affine-block-embed-doc/store.ts +25 -25
  264. package/src/_pkgs/affine-block-embed-doc/view.ts +40 -40
  265. package/src/_pkgs/affine-block-frame/edgeless-clipboard-config.ts +43 -43
  266. package/src/_pkgs/affine-block-frame/edgeless-toolbar/frame-dense-menu.ts +34 -34
  267. package/src/_pkgs/affine-block-frame/edgeless-toolbar/frame-menu.ts +104 -104
  268. package/src/_pkgs/affine-block-frame/edgeless-toolbar/frame-tool-button.ts +49 -49
  269. package/src/_pkgs/affine-block-frame/edgeless-toolbar/presentation-toolbar.ts +560 -560
  270. package/src/_pkgs/affine-block-frame/edgeless-toolbar/quick-tool.ts +16 -16
  271. package/src/_pkgs/affine-block-frame/frame-block.ts +208 -208
  272. package/src/_pkgs/affine-block-frame/frame-highlight-manager.ts +96 -96
  273. package/src/_pkgs/affine-block-frame/frame-manager.ts +503 -503
  274. package/src/_pkgs/affine-block-frame/frame-spec.ts +16 -16
  275. package/src/_pkgs/affine-block-frame/frame-tool.ts +108 -108
  276. package/src/_pkgs/affine-block-frame/frame-toolbar.ts +218 -218
  277. package/src/_pkgs/affine-block-frame/present/frame-order-button.ts +82 -82
  278. package/src/_pkgs/affine-block-frame/present/frame-order-menu.ts +265 -265
  279. package/src/_pkgs/affine-block-frame/present/navigator-bg-widget.ts +126 -126
  280. package/src/_pkgs/affine-block-frame/present/navigator-setting-button.ts +195 -195
  281. package/src/_pkgs/affine-block-frame/present/present-button.ts +40 -40
  282. package/src/_pkgs/affine-block-frame/present-tool.ts +12 -12
  283. package/src/_pkgs/affine-block-frame/store.ts +14 -14
  284. package/src/_pkgs/affine-block-frame/view.ts +39 -39
  285. package/src/_pkgs/affine-block-image/adapters/extension.ts +11 -11
  286. package/src/_pkgs/affine-block-image/adapters/html.ts +90 -90
  287. package/src/_pkgs/affine-block-image/adapters/markdown.ts +66 -66
  288. package/src/_pkgs/affine-block-image/adapters/notion-html.ts +82 -82
  289. package/src/_pkgs/affine-block-image/adapters/utils.ts +89 -89
  290. package/src/_pkgs/affine-block-image/commands/insert-images.ts +40 -40
  291. package/src/_pkgs/affine-block-image/components/image-block-fallback.ts +126 -126
  292. package/src/_pkgs/affine-block-image/components/page-image-block.ts +422 -422
  293. package/src/_pkgs/affine-block-image/configs/slash-menu.ts +32 -32
  294. package/src/_pkgs/affine-block-image/configs/toolbar.ts +174 -174
  295. package/src/_pkgs/affine-block-image/edgeless-clipboard-config.ts +30 -30
  296. package/src/_pkgs/affine-block-image/image-block.ts +194 -194
  297. package/src/_pkgs/affine-block-image/image-edgeless-block.ts +205 -205
  298. package/src/_pkgs/affine-block-image/image-resize-manager.ts +105 -105
  299. package/src/_pkgs/affine-block-image/image-service.ts +46 -46
  300. package/src/_pkgs/affine-block-image/image-spec.ts +29 -29
  301. package/src/_pkgs/affine-block-image/index.ts +11 -11
  302. package/src/_pkgs/affine-block-image/preview-image/edgeless.ts +25 -25
  303. package/src/_pkgs/affine-block-image/preview-image/page.ts +58 -58
  304. package/src/_pkgs/affine-block-image/store.ts +18 -18
  305. package/src/_pkgs/affine-block-image/turbo/image-layout-handler.ts +71 -71
  306. package/src/_pkgs/affine-block-image/turbo/image-painter.worker.ts +56 -56
  307. package/src/_pkgs/affine-block-image/utils.ts +433 -433
  308. package/src/_pkgs/affine-block-image/view.ts +27 -27
  309. package/src/_pkgs/affine-block-latex/adapters/extension.ts +11 -11
  310. package/src/_pkgs/affine-block-latex/adapters/markdown/index.ts +12 -12
  311. package/src/_pkgs/affine-block-latex/adapters/markdown/markdown.ts +55 -55
  312. package/src/_pkgs/affine-block-latex/adapters/markdown/preprocessor.ts +88 -88
  313. package/src/_pkgs/affine-block-latex/adapters/notion-html.ts +50 -50
  314. package/src/_pkgs/affine-block-latex/adapters/plain-text.ts +29 -29
  315. package/src/_pkgs/affine-block-latex/commands.ts +75 -75
  316. package/src/_pkgs/affine-block-latex/configs/slash-menu.ts +62 -62
  317. package/src/_pkgs/affine-block-latex/configs/tooltips.ts +41 -41
  318. package/src/_pkgs/affine-block-latex/latex-block.ts +158 -158
  319. package/src/_pkgs/affine-block-latex/store.ts +19 -19
  320. package/src/_pkgs/affine-block-latex/styles.ts +40 -40
  321. package/src/_pkgs/affine-block-latex/view.ts +27 -27
  322. package/src/_pkgs/affine-block-list/adapters/extension.ts +13 -13
  323. package/src/_pkgs/affine-block-list/adapters/html.ts +203 -203
  324. package/src/_pkgs/affine-block-list/adapters/markdown.ts +156 -156
  325. package/src/_pkgs/affine-block-list/adapters/notion-html.ts +116 -116
  326. package/src/_pkgs/affine-block-list/adapters/plain-text.ts +27 -27
  327. package/src/_pkgs/affine-block-list/commands/convert-to-numbered-list.ts +28 -28
  328. package/src/_pkgs/affine-block-list/commands/dedent-list.ts +165 -165
  329. package/src/_pkgs/affine-block-list/commands/indent-list.ts +147 -147
  330. package/src/_pkgs/affine-block-list/commands/list-to-paragraph.ts +44 -44
  331. package/src/_pkgs/affine-block-list/commands/split-list.ts +250 -250
  332. package/src/_pkgs/affine-block-list/commands/utils.ts +70 -70
  333. package/src/_pkgs/affine-block-list/list-block.ts +216 -216
  334. package/src/_pkgs/affine-block-list/list-keymap.ts +136 -136
  335. package/src/_pkgs/affine-block-list/markdown.ts +91 -91
  336. package/src/_pkgs/affine-block-list/store.ts +17 -17
  337. package/src/_pkgs/affine-block-list/turbo/list-layout-handler.ts +151 -151
  338. package/src/_pkgs/affine-block-list/turbo/list-painter.worker.ts +119 -119
  339. package/src/_pkgs/affine-block-list/utils/forward-delete.ts +75 -75
  340. package/src/_pkgs/affine-block-list/utils/get-list-icon.ts +78 -78
  341. package/src/_pkgs/affine-block-list/view.ts +30 -30
  342. package/src/_pkgs/affine-block-note/adapters/html.ts +44 -44
  343. package/src/_pkgs/affine-block-note/adapters/index.ts +30 -30
  344. package/src/_pkgs/affine-block-note/adapters/markdown.ts +131 -131
  345. package/src/_pkgs/affine-block-note/adapters/plain-text.ts +41 -41
  346. package/src/_pkgs/affine-block-note/commands/block-type.ts +247 -247
  347. package/src/_pkgs/affine-block-note/commands/change-note-display-mode.ts +60 -60
  348. package/src/_pkgs/affine-block-note/commands/dedent-block-to-root.ts +38 -38
  349. package/src/_pkgs/affine-block-note/commands/dedent-block.ts +67 -67
  350. package/src/_pkgs/affine-block-note/commands/dedent-blocks-to-root.ts +43 -43
  351. package/src/_pkgs/affine-block-note/commands/dedent-blocks.ts +87 -87
  352. package/src/_pkgs/affine-block-note/commands/indent-block.ts +74 -74
  353. package/src/_pkgs/affine-block-note/commands/indent-blocks.ts +125 -125
  354. package/src/_pkgs/affine-block-note/commands/select-block.ts +22 -22
  355. package/src/_pkgs/affine-block-note/commands/select-blocks-between.ts +53 -53
  356. package/src/_pkgs/affine-block-note/components/edgeless-note-background.ts +182 -182
  357. package/src/_pkgs/affine-block-note/components/edgeless-note-border-dropdown-menu.ts +42 -42
  358. package/src/_pkgs/affine-block-note/components/edgeless-note-display-mode-dropdown-menu.ts +58 -58
  359. package/src/_pkgs/affine-block-note/components/edgeless-note-mask.ts +84 -84
  360. package/src/_pkgs/affine-block-note/components/edgeless-note-shadow-menu.ts +206 -206
  361. package/src/_pkgs/affine-block-note/components/edgeless-note-style-panel.ts +434 -434
  362. package/src/_pkgs/affine-block-note/components/edgeless-page-block-title.ts +46 -46
  363. package/src/_pkgs/affine-block-note/config.ts +20 -20
  364. package/src/_pkgs/affine-block-note/configs/slash-menu.ts +125 -125
  365. package/src/_pkgs/affine-block-note/configs/toolbar.ts +350 -350
  366. package/src/_pkgs/affine-block-note/configs/tooltips.ts +330 -330
  367. package/src/_pkgs/affine-block-note/edgeless-clipboard-config.ts +28 -28
  368. package/src/_pkgs/affine-block-note/move-block.ts +129 -129
  369. package/src/_pkgs/affine-block-note/note-block.ts +34 -34
  370. package/src/_pkgs/affine-block-note/note-edgeless-block.css.ts +74 -74
  371. package/src/_pkgs/affine-block-note/note-edgeless-block.ts +499 -499
  372. package/src/_pkgs/affine-block-note/note-keymap.ts +611 -611
  373. package/src/_pkgs/affine-block-note/quick-action.ts +66 -66
  374. package/src/_pkgs/affine-block-note/store.ts +36 -36
  375. package/src/_pkgs/affine-block-note/turbo/note-layout-handler.ts +83 -83
  376. package/src/_pkgs/affine-block-note/turbo/note-painter.worker.ts +49 -49
  377. package/src/_pkgs/affine-block-note/view.ts +47 -47
  378. package/src/_pkgs/affine-block-paragraph/adapters/extension.ts +13 -13
  379. package/src/_pkgs/affine-block-paragraph/adapters/html.ts +359 -359
  380. package/src/_pkgs/affine-block-paragraph/adapters/markdown.ts +200 -200
  381. package/src/_pkgs/affine-block-paragraph/adapters/notion-html.ts +239 -239
  382. package/src/_pkgs/affine-block-paragraph/adapters/plain-text.ts +28 -28
  383. package/src/_pkgs/affine-block-paragraph/commands/add-paragraph.ts +56 -56
  384. package/src/_pkgs/affine-block-paragraph/commands/append-paragraph.ts +30 -30
  385. package/src/_pkgs/affine-block-paragraph/commands/dedent-paragraph.ts +114 -114
  386. package/src/_pkgs/affine-block-paragraph/commands/indent-paragraph.ts +156 -156
  387. package/src/_pkgs/affine-block-paragraph/commands/split-paragraph.ts +81 -81
  388. package/src/_pkgs/affine-block-paragraph/heading-icon.ts +92 -92
  389. package/src/_pkgs/affine-block-paragraph/markdown.ts +74 -74
  390. package/src/_pkgs/affine-block-paragraph/paragraph-block-config.ts +9 -9
  391. package/src/_pkgs/affine-block-paragraph/paragraph-block.ts +369 -369
  392. package/src/_pkgs/affine-block-paragraph/paragraph-keymap.ts +230 -230
  393. package/src/_pkgs/affine-block-paragraph/store.ts +17 -17
  394. package/src/_pkgs/affine-block-paragraph/styles.ts +158 -158
  395. package/src/_pkgs/affine-block-paragraph/turbo/paragraph-layout-handler.ts +106 -106
  396. package/src/_pkgs/affine-block-paragraph/turbo/paragraph-painter.worker.ts +115 -115
  397. package/src/_pkgs/affine-block-paragraph/utils/forward-delete.ts +94 -94
  398. package/src/_pkgs/affine-block-paragraph/utils/merge-with-prev.ts +184 -184
  399. package/src/_pkgs/affine-block-paragraph/view.ts +66 -66
  400. package/src/_pkgs/affine-block-root/adapters/extension.ts +11 -11
  401. package/src/_pkgs/affine-block-root/adapters/html.ts +135 -135
  402. package/src/_pkgs/affine-block-root/adapters/markdown.ts +36 -36
  403. package/src/_pkgs/affine-block-root/adapters/notion-html.ts +28 -28
  404. package/src/_pkgs/affine-block-root/clipboard/page-clipboard.ts +176 -176
  405. package/src/_pkgs/affine-block-root/clipboard/readonly-clipboard.ts +71 -71
  406. package/src/_pkgs/affine-block-root/configs/toolbar.ts +398 -398
  407. package/src/_pkgs/affine-block-root/edgeless/clipboard/canvas.ts +117 -117
  408. package/src/_pkgs/affine-block-root/edgeless/clipboard/clipboard.ts +715 -715
  409. package/src/_pkgs/affine-block-root/edgeless/clipboard/command.ts +218 -218
  410. package/src/_pkgs/affine-block-root/edgeless/clipboard/utils.ts +140 -140
  411. package/src/_pkgs/affine-block-root/edgeless/configs/toolbar/alignment.ts +293 -293
  412. package/src/_pkgs/affine-block-root/edgeless/configs/toolbar/index.ts +19 -19
  413. package/src/_pkgs/affine-block-root/edgeless/configs/toolbar/misc.ts +369 -369
  414. package/src/_pkgs/affine-block-root/edgeless/configs/toolbar/more.ts +435 -435
  415. package/src/_pkgs/affine-block-root/edgeless/configs/toolbar/render-linked-doc.ts +103 -96
  416. package/src/_pkgs/affine-block-root/edgeless/configs/toolbar/utils.ts +17 -17
  417. package/src/_pkgs/affine-block-root/edgeless/edgeless-keyboard.ts +753 -753
  418. package/src/_pkgs/affine-block-root/edgeless/edgeless-root-block.ts +524 -524
  419. package/src/_pkgs/affine-block-root/edgeless/edgeless-root-service.ts +231 -231
  420. package/src/_pkgs/affine-block-root/edgeless/edgeless-root-spec.ts +11 -11
  421. package/src/_pkgs/affine-block-root/edgeless/index.ts +9 -9
  422. package/src/_pkgs/affine-block-root/edgeless/interact-extensions/clone-ext.ts +32 -32
  423. package/src/_pkgs/affine-block-root/edgeless/utils/clipboard-utils.ts +97 -97
  424. package/src/_pkgs/affine-block-root/edgeless/utils/clone-utils.ts +237 -237
  425. package/src/_pkgs/affine-block-root/edgeless/utils/connector.ts +34 -34
  426. package/src/_pkgs/affine-block-root/edgeless/utils/crud.ts +37 -37
  427. package/src/_pkgs/affine-block-root/edgeless/utils/query.ts +104 -104
  428. package/src/_pkgs/affine-block-root/keyboard/keyboard-manager.ts +163 -163
  429. package/src/_pkgs/affine-block-root/keyboard/keymap.ts +16 -16
  430. package/src/_pkgs/affine-block-root/page/page-root-block.ts +422 -422
  431. package/src/_pkgs/affine-block-root/preview/edgeless-root-preview-block.ts +262 -262
  432. package/src/_pkgs/affine-block-root/preview/preview-root-block.ts +41 -41
  433. package/src/_pkgs/affine-block-root/store.ts +17 -17
  434. package/src/_pkgs/affine-block-root/view.ts +93 -93
  435. package/src/_pkgs/affine-block-surface/adapters/html-adapter/html.ts +20 -20
  436. package/src/_pkgs/affine-block-surface/adapters/markdown/element-adapter/index.ts +33 -33
  437. package/src/_pkgs/affine-block-surface/adapters/markdown/element-adapter/type.ts +29 -29
  438. package/src/_pkgs/affine-block-surface/adapters/markdown/markdown.ts +76 -76
  439. package/src/_pkgs/affine-block-surface/adapters/plain-text/element-adapter/index.ts +32 -32
  440. package/src/_pkgs/affine-block-surface/adapters/plain-text/element-adapter/type.ts +29 -29
  441. package/src/_pkgs/affine-block-surface/adapters/plain-text/plain-text.ts +77 -77
  442. package/src/_pkgs/affine-block-surface/adapters/type.ts +30 -30
  443. package/src/_pkgs/affine-block-surface/commands/auto-align.ts +157 -157
  444. package/src/_pkgs/affine-block-surface/commands/reassociate-connectors.ts +46 -46
  445. package/src/_pkgs/affine-block-surface/element-model/base.ts +4 -4
  446. package/src/_pkgs/affine-block-surface/element-model/index.ts +96 -96
  447. package/src/_pkgs/affine-block-surface/extensions/clipboard-config.ts +80 -80
  448. package/src/_pkgs/affine-block-surface/extensions/crud-extension.ts +181 -181
  449. package/src/_pkgs/affine-block-surface/extensions/dom-element-renderer.ts +30 -30
  450. package/src/_pkgs/affine-block-surface/extensions/edit-props-middleware-builder.ts +26 -26
  451. package/src/_pkgs/affine-block-surface/extensions/element-renderer.ts +31 -31
  452. package/src/_pkgs/affine-block-surface/extensions/export-manager/export-manager.ts +559 -559
  453. package/src/_pkgs/affine-block-surface/extensions/legacy-slot-extension.ts +39 -39
  454. package/src/_pkgs/affine-block-surface/extensions/query.ts +15 -15
  455. package/src/_pkgs/affine-block-surface/extensions/surface-middleware.ts +23 -23
  456. package/src/_pkgs/affine-block-surface/renderer/canvas-renderer.ts +472 -472
  457. package/src/_pkgs/affine-block-surface/renderer/dom-elements/index.ts +31 -31
  458. package/src/_pkgs/affine-block-surface/renderer/dom-renderer.ts +710 -710
  459. package/src/_pkgs/affine-block-surface/renderer/elements/index.ts +23 -23
  460. package/src/_pkgs/affine-block-surface/renderer/elements/type.ts +6 -6
  461. package/src/_pkgs/affine-block-surface/renderer/overlay.ts +57 -57
  462. package/src/_pkgs/affine-block-surface/renderer/tool-overlay.ts +44 -44
  463. package/src/_pkgs/affine-block-surface/store.ts +17 -17
  464. package/src/_pkgs/affine-block-surface/surface-block-void.ts +16 -16
  465. package/src/_pkgs/affine-block-surface/surface-block.ts +255 -255
  466. package/src/_pkgs/affine-block-surface/surface-model.ts +69 -69
  467. package/src/_pkgs/affine-block-surface/surface-transformer.ts +115 -115
  468. package/src/_pkgs/affine-block-surface/tool/default-tool.ts +374 -374
  469. package/src/_pkgs/affine-block-surface/tool/panning-utils.ts +46 -46
  470. package/src/_pkgs/affine-block-surface/utils/a-star.ts +299 -299
  471. package/src/_pkgs/affine-block-surface/utils/font.ts +47 -47
  472. package/src/_pkgs/affine-block-surface/utils/get-bg-grip-gap.ts +10 -10
  473. package/src/_pkgs/affine-block-surface/utils/get-last-props-key.ts +29 -29
  474. package/src/_pkgs/affine-block-surface/utils/get-surface-block.ts +16 -16
  475. package/src/_pkgs/affine-block-surface/utils/graph.ts +151 -151
  476. package/src/_pkgs/affine-block-surface/utils/update-xywh.ts +82 -82
  477. package/src/_pkgs/affine-block-surface/view.ts +45 -45
  478. package/src/_pkgs/affine-block-surface-ref/commands.ts +60 -60
  479. package/src/_pkgs/affine-block-surface-ref/components/placeholder.ts +131 -131
  480. package/src/_pkgs/affine-block-surface-ref/components/surface-ref-toolbar-title.ts +76 -76
  481. package/src/_pkgs/affine-block-surface-ref/configs/slash-menu.ts +164 -164
  482. package/src/_pkgs/affine-block-surface-ref/configs/toolbar.ts +100 -100
  483. package/src/_pkgs/affine-block-surface-ref/portal/generic-block.ts +82 -82
  484. package/src/_pkgs/affine-block-surface-ref/portal/note.ts +169 -169
  485. package/src/_pkgs/affine-block-surface-ref/store.ts +14 -14
  486. package/src/_pkgs/affine-block-surface-ref/surface-ref-block-edgeless.ts +80 -80
  487. package/src/_pkgs/affine-block-surface-ref/surface-ref-block.ts +511 -511
  488. package/src/_pkgs/affine-block-surface-ref/utils.ts +152 -152
  489. package/src/_pkgs/affine-block-surface-ref/view.ts +49 -49
  490. package/src/_pkgs/affine-block-table/adapters/extension.ts +13 -13
  491. package/src/_pkgs/affine-block-table/adapters/html.ts +129 -129
  492. package/src/_pkgs/affine-block-table/adapters/markdown.ts +82 -82
  493. package/src/_pkgs/affine-block-table/adapters/notion-html.ts +21 -21
  494. package/src/_pkgs/affine-block-table/adapters/plain-text.ts +79 -79
  495. package/src/_pkgs/affine-block-table/adapters/utils.ts +212 -212
  496. package/src/_pkgs/affine-block-table/add-button-css.ts +99 -99
  497. package/src/_pkgs/affine-block-table/add-button.ts +330 -330
  498. package/src/_pkgs/affine-block-table/color.ts +45 -45
  499. package/src/_pkgs/affine-block-table/commands.ts +52 -52
  500. package/src/_pkgs/affine-block-table/configs/slash-menu.ts +44 -44
  501. package/src/_pkgs/affine-block-table/selection-controller.ts +527 -527
  502. package/src/_pkgs/affine-block-table/selection-layer.ts +112 -112
  503. package/src/_pkgs/affine-block-table/selection-schema.ts +112 -112
  504. package/src/_pkgs/affine-block-table/store.ts +19 -19
  505. package/src/_pkgs/affine-block-table/table-block.ts +209 -209
  506. package/src/_pkgs/affine-block-table/table-cell-css.ts +154 -154
  507. package/src/_pkgs/affine-block-table/table-cell.ts +866 -866
  508. package/src/_pkgs/affine-block-table/table-data-manager.ts +382 -382
  509. package/src/_pkgs/affine-block-table/view.ts +29 -29
  510. package/src/_pkgs/affine-components/block-selection/index.ts +69 -69
  511. package/src/_pkgs/affine-components/block-zero-width/index.ts +59 -59
  512. package/src/_pkgs/affine-components/caption/block-caption.ts +188 -188
  513. package/src/_pkgs/affine-components/caption/captioned-block-component.ts +82 -82
  514. package/src/_pkgs/affine-components/card-style-dropdown-menu/dropdown-menu.ts +118 -118
  515. package/src/_pkgs/affine-components/citation/citation.ts +167 -167
  516. package/src/_pkgs/affine-components/color-picker/button.ts +207 -207
  517. package/src/_pkgs/affine-components/color-picker/color-panel.ts +260 -260
  518. package/src/_pkgs/affine-components/color-picker/color-picker.ts +677 -677
  519. package/src/_pkgs/affine-components/color-picker/icons.ts +71 -71
  520. package/src/_pkgs/affine-components/color-picker/styles.ts +308 -308
  521. package/src/_pkgs/affine-components/color-picker/types.ts +53 -53
  522. package/src/_pkgs/affine-components/color-picker/utils.ts +368 -368
  523. package/src/_pkgs/affine-components/context-menu/button.ts +302 -302
  524. package/src/_pkgs/affine-components/context-menu/group.ts +35 -35
  525. package/src/_pkgs/affine-components/context-menu/input.ts +254 -254
  526. package/src/_pkgs/affine-components/context-menu/item.ts +12 -12
  527. package/src/_pkgs/affine-components/context-menu/menu-renderer.ts +574 -574
  528. package/src/_pkgs/affine-components/context-menu/menu.ts +170 -170
  529. package/src/_pkgs/affine-components/context-menu/sub-menu.ts +194 -194
  530. package/src/_pkgs/affine-components/date-picker/date-picker.ts +626 -626
  531. package/src/_pkgs/affine-components/drop-indicator/drop-indicator.ts +51 -51
  532. package/src/_pkgs/affine-components/drop-indicator/file-drop-manager.ts +300 -300
  533. package/src/_pkgs/affine-components/edgeless-line-styles-panel/line-styles-panel.ts +113 -113
  534. package/src/_pkgs/affine-components/edgeless-line-width-panel/line-width-panel.ts +50 -50
  535. package/src/_pkgs/affine-components/edgeless-shape-color-picker/color-picker.ts +318 -318
  536. package/src/_pkgs/affine-components/embed-card-modal/embed-card-create-modal.ts +218 -218
  537. package/src/_pkgs/affine-components/embed-card-modal/embed-card-edit-modal.ts +468 -468
  538. package/src/_pkgs/affine-components/embed-card-modal/styles.ts +131 -131
  539. package/src/_pkgs/affine-components/filterable-list/index.ts +259 -259
  540. package/src/_pkgs/affine-components/filterable-list/styles.ts +109 -109
  541. package/src/_pkgs/affine-components/highlight-dropdown-menu/dropdown-menu.ts +123 -123
  542. package/src/_pkgs/affine-components/hover/controller.ts +201 -201
  543. package/src/_pkgs/affine-components/hover/middlewares/basic.ts +79 -79
  544. package/src/_pkgs/affine-components/link-preview/link.ts +65 -65
  545. package/src/_pkgs/affine-components/linked-doc-title/doc-title.ts +61 -61
  546. package/src/_pkgs/affine-components/notification/linked-doc.ts +45 -45
  547. package/src/_pkgs/affine-components/open-doc-dropdown-menu/dropdown-menu.ts +131 -131
  548. package/src/_pkgs/affine-components/peek/commands.ts +47 -47
  549. package/src/_pkgs/affine-components/peek/peekable.ts +137 -137
  550. package/src/_pkgs/affine-components/peek/service.ts +16 -16
  551. package/src/_pkgs/affine-components/peek/type.ts +70 -70
  552. package/src/_pkgs/affine-components/portal/helper.ts +225 -225
  553. package/src/_pkgs/affine-components/resource/resource.ts +230 -230
  554. package/src/_pkgs/affine-components/resource/status.ts +165 -165
  555. package/src/_pkgs/affine-components/size-dropdown-menu/dropdown-menu.ts +211 -211
  556. package/src/_pkgs/affine-components/slider/slider.ts +159 -159
  557. package/src/_pkgs/affine-components/slider/styles.ts +79 -79
  558. package/src/_pkgs/affine-components/smooth-corner/index.ts +184 -184
  559. package/src/_pkgs/affine-components/toast/create.ts +39 -39
  560. package/src/_pkgs/affine-components/toast/toast.ts +80 -80
  561. package/src/_pkgs/affine-components/toggle-button/toggle-button.ts +97 -97
  562. package/src/_pkgs/affine-components/toggle-switch/index.ts +88 -88
  563. package/src/_pkgs/affine-components/toolbar/config.ts +7 -7
  564. package/src/_pkgs/affine-components/toolbar/icon-button.ts +220 -220
  565. package/src/_pkgs/affine-components/toolbar/menu-button.ts +242 -242
  566. package/src/_pkgs/affine-components/toolbar/menu-context.ts +30 -30
  567. package/src/_pkgs/affine-components/toolbar/toolbar.ts +52 -52
  568. package/src/_pkgs/affine-components/toolbar/tooltip.ts +328 -328
  569. package/src/_pkgs/affine-components/toolbar/utils.ts +120 -120
  570. package/src/_pkgs/affine-components/view-dropdown-menu/dropdown-menu.ts +86 -86
  571. package/src/_pkgs/affine-ext-loader/base-provider.ts +69 -69
  572. package/src/_pkgs/affine-ext-loader/manager.ts +146 -146
  573. package/src/_pkgs/affine-ext-loader/store-manager.ts +47 -47
  574. package/src/_pkgs/affine-ext-loader/view-manager.ts +49 -49
  575. package/src/_pkgs/affine-foundation/clipboard.ts +65 -65
  576. package/src/_pkgs/affine-foundation/effects.ts +70 -70
  577. package/src/_pkgs/affine-foundation/store.ts +54 -54
  578. package/src/_pkgs/affine-foundation/view.ts +108 -108
  579. package/src/_pkgs/affine-fragment-adapter-panel/adapter-panel.ts +177 -177
  580. package/src/_pkgs/affine-fragment-adapter-panel/body/adapter-panel-body.ts +216 -216
  581. package/src/_pkgs/affine-fragment-adapter-panel/config.ts +28 -28
  582. package/src/_pkgs/affine-fragment-adapter-panel/header/adapter-menu.ts +86 -86
  583. package/src/_pkgs/affine-fragment-adapter-panel/header/adapter-panel-header.ts +119 -119
  584. package/src/_pkgs/affine-fragment-adapter-panel/view.ts +12 -12
  585. package/src/_pkgs/affine-fragment-doc-title/doc-title.ts +241 -241
  586. package/src/_pkgs/affine-fragment-doc-title/utils.ts +11 -11
  587. package/src/_pkgs/affine-fragment-doc-title/view.ts +12 -12
  588. package/src/_pkgs/affine-fragment-frame-panel/body/frame-panel-body.ts +436 -436
  589. package/src/_pkgs/affine-fragment-frame-panel/card/frame-card-title-editor.ts +126 -126
  590. package/src/_pkgs/affine-fragment-frame-panel/card/frame-card-title.ts +151 -151
  591. package/src/_pkgs/affine-fragment-frame-panel/card/frame-card.ts +254 -254
  592. package/src/_pkgs/affine-fragment-frame-panel/card/frame-preview.ts +263 -263
  593. package/src/_pkgs/affine-fragment-frame-panel/frame-panel.ts +92 -92
  594. package/src/_pkgs/affine-fragment-frame-panel/header/frame-panel-header.ts +248 -248
  595. package/src/_pkgs/affine-fragment-frame-panel/header/frames-setting-menu.ts +219 -219
  596. package/src/_pkgs/affine-fragment-frame-panel/utils/drag.ts +156 -156
  597. package/src/_pkgs/affine-fragment-frame-panel/view.ts +12 -12
  598. package/src/_pkgs/affine-fragment-outline/body/outline-notice.ts +94 -94
  599. package/src/_pkgs/affine-fragment-outline/body/outline-panel-body.ts +481 -481
  600. package/src/_pkgs/affine-fragment-outline/card/outline-card.ts +278 -278
  601. package/src/_pkgs/affine-fragment-outline/card/outline-preview.ts +228 -228
  602. package/src/_pkgs/affine-fragment-outline/config.ts +97 -97
  603. package/src/_pkgs/affine-fragment-outline/header/outline-panel-header.ts +90 -90
  604. package/src/_pkgs/affine-fragment-outline/header/outline-setting-menu.ts +47 -47
  605. package/src/_pkgs/affine-fragment-outline/mobile-outline-panel.ts +197 -197
  606. package/src/_pkgs/affine-fragment-outline/outline-panel.ts +118 -118
  607. package/src/_pkgs/affine-fragment-outline/outline-viewer.ts +325 -325
  608. package/src/_pkgs/affine-fragment-outline/utils/custom-events.ts +27 -27
  609. package/src/_pkgs/affine-fragment-outline/utils/query.ts +72 -72
  610. package/src/_pkgs/affine-fragment-outline/utils/scroll.ts +201 -201
  611. package/src/_pkgs/affine-fragment-outline/view.ts +12 -12
  612. package/src/_pkgs/affine-gfx-brush/adapter/markdown/index.ts +18 -18
  613. package/src/_pkgs/affine-gfx-brush/adapter/plain-text/index.ts +11 -11
  614. package/src/_pkgs/affine-gfx-brush/brush-tool.ts +200 -200
  615. package/src/_pkgs/affine-gfx-brush/element-renderer.ts +32 -32
  616. package/src/_pkgs/affine-gfx-brush/eraser-tool.ts +158 -158
  617. package/src/_pkgs/affine-gfx-brush/highlighter-tool.ts +179 -179
  618. package/src/_pkgs/affine-gfx-brush/store.ts +19 -19
  619. package/src/_pkgs/affine-gfx-brush/toolbar/components/eraser/eraser-tool-button.ts +75 -75
  620. package/src/_pkgs/affine-gfx-brush/toolbar/components/pen/pen-menu.ts +215 -215
  621. package/src/_pkgs/affine-gfx-brush/toolbar/components/pen/pen-tool-button.ts +195 -195
  622. package/src/_pkgs/affine-gfx-brush/toolbar/configs/brush.ts +120 -120
  623. package/src/_pkgs/affine-gfx-brush/toolbar/configs/highlighter.ts +139 -139
  624. package/src/_pkgs/affine-gfx-brush/toolbar/senior-tool.ts +15 -15
  625. package/src/_pkgs/affine-gfx-brush/view.ts +39 -39
  626. package/src/_pkgs/affine-gfx-connector/adapter/markdown/index.ts +26 -26
  627. package/src/_pkgs/affine-gfx-connector/adapter/plain-text/index.ts +14 -14
  628. package/src/_pkgs/affine-gfx-connector/adapter/text.ts +23 -23
  629. package/src/_pkgs/affine-gfx-connector/components/connector-handle.ts +263 -263
  630. package/src/_pkgs/affine-gfx-connector/connector-manager.ts +1858 -1858
  631. package/src/_pkgs/affine-gfx-connector/connector-tool.ts +279 -279
  632. package/src/_pkgs/affine-gfx-connector/connector-watcher.ts +190 -190
  633. package/src/_pkgs/affine-gfx-connector/element-renderer/connector-dom/index.ts +367 -367
  634. package/src/_pkgs/affine-gfx-connector/element-renderer/connector-dom.ts +11 -11
  635. package/src/_pkgs/affine-gfx-connector/element-renderer/index.ts +315 -315
  636. package/src/_pkgs/affine-gfx-connector/element-renderer/utils.ts +327 -327
  637. package/src/_pkgs/affine-gfx-connector/element-transform/connector-filter.ts +44 -44
  638. package/src/_pkgs/affine-gfx-connector/store.ts +21 -21
  639. package/src/_pkgs/affine-gfx-connector/text/edgeless-connector-label-editor.ts +394 -394
  640. package/src/_pkgs/affine-gfx-connector/text/text.ts +66 -66
  641. package/src/_pkgs/affine-gfx-connector/toolbar/config.ts +436 -436
  642. package/src/_pkgs/affine-gfx-connector/toolbar/connector-dense-menu.ts +58 -58
  643. package/src/_pkgs/affine-gfx-connector/toolbar/connector-menu.ts +153 -153
  644. package/src/_pkgs/affine-gfx-connector/toolbar/connector-tool-button.ts +79 -79
  645. package/src/_pkgs/affine-gfx-connector/toolbar/quick-tool.ts +15 -15
  646. package/src/_pkgs/affine-gfx-connector/view/view.ts +256 -256
  647. package/src/_pkgs/affine-gfx-connector/view.ts +38 -38
  648. package/src/_pkgs/affine-gfx-group/adapter/markdown/index.ts +25 -25
  649. package/src/_pkgs/affine-gfx-group/adapter/plain-text/index.ts +14 -14
  650. package/src/_pkgs/affine-gfx-group/adapter/text.ts +21 -21
  651. package/src/_pkgs/affine-gfx-group/command/group-api.ts +134 -134
  652. package/src/_pkgs/affine-gfx-group/element-renderer/consts.ts +6 -6
  653. package/src/_pkgs/affine-gfx-group/element-renderer/index.ts +67 -67
  654. package/src/_pkgs/affine-gfx-group/element-renderer/utils.ts +77 -77
  655. package/src/_pkgs/affine-gfx-group/element-view.ts +57 -57
  656. package/src/_pkgs/affine-gfx-group/group-watcher.ts +36 -36
  657. package/src/_pkgs/affine-gfx-group/interaction-ext.ts +45 -45
  658. package/src/_pkgs/affine-gfx-group/store.ts +21 -21
  659. package/src/_pkgs/affine-gfx-group/text/edgeless-group-title-editor.ts +189 -189
  660. package/src/_pkgs/affine-gfx-group/text/text.ts +33 -33
  661. package/src/_pkgs/affine-gfx-group/toolbar/config.ts +106 -106
  662. package/src/_pkgs/affine-gfx-group/view.ts +30 -30
  663. package/src/_pkgs/affine-gfx-link/link-tool.ts +13 -13
  664. package/src/_pkgs/affine-gfx-link/toolbar/link-dense-menu.ts +32 -32
  665. package/src/_pkgs/affine-gfx-link/toolbar/link-tool-button.ts +96 -96
  666. package/src/_pkgs/affine-gfx-link/view.ts +23 -23
  667. package/src/_pkgs/affine-gfx-mindmap/adapter/markdown/index.ts +69 -69
  668. package/src/_pkgs/affine-gfx-mindmap/adapter/plain-text/index.ts +13 -13
  669. package/src/_pkgs/affine-gfx-mindmap/adapter/utils.ts +65 -65
  670. package/src/_pkgs/affine-gfx-mindmap/element-renderer.ts +81 -81
  671. package/src/_pkgs/affine-gfx-mindmap/indicator-overlay/index.ts +301 -301
  672. package/src/_pkgs/affine-gfx-mindmap/interactivity/drag-utils.ts +190 -190
  673. package/src/_pkgs/affine-gfx-mindmap/interactivity/mind-map-drag.ts +465 -465
  674. package/src/_pkgs/affine-gfx-mindmap/store.ts +19 -19
  675. package/src/_pkgs/affine-gfx-mindmap/toolbar/assets.ts +46 -46
  676. package/src/_pkgs/affine-gfx-mindmap/toolbar/basket-elements.ts +206 -206
  677. package/src/_pkgs/affine-gfx-mindmap/toolbar/config.ts +199 -199
  678. package/src/_pkgs/affine-gfx-mindmap/toolbar/mindmap-importing-placeholder.ts +54 -54
  679. package/src/_pkgs/affine-gfx-mindmap/toolbar/mindmap-menu.ts +415 -415
  680. package/src/_pkgs/affine-gfx-mindmap/toolbar/mindmap-tool-button.ts +466 -466
  681. package/src/_pkgs/affine-gfx-mindmap/toolbar/senior-tool.ts +15 -15
  682. package/src/_pkgs/affine-gfx-mindmap/toolbar/utils/import-mindmap.ts +143 -143
  683. package/src/_pkgs/affine-gfx-mindmap/utils/index.ts +70 -70
  684. package/src/_pkgs/affine-gfx-mindmap/view/layout.ts +201 -201
  685. package/src/_pkgs/affine-gfx-mindmap/view/utils.ts +692 -692
  686. package/src/_pkgs/affine-gfx-mindmap/view/view.ts +378 -378
  687. package/src/_pkgs/affine-gfx-mindmap/view.ts +36 -36
  688. package/src/_pkgs/affine-gfx-note/components/note-display-mode-panel.ts +104 -104
  689. package/src/_pkgs/affine-gfx-note/components/note-shadow-panel.ts +144 -144
  690. package/src/_pkgs/affine-gfx-note/note-tool.ts +330 -330
  691. package/src/_pkgs/affine-gfx-note/overlay/overlay.ts +161 -161
  692. package/src/_pkgs/affine-gfx-note/toolbar/note-menu-config.ts +151 -151
  693. package/src/_pkgs/affine-gfx-note/toolbar/note-menu.ts +210 -210
  694. package/src/_pkgs/affine-gfx-note/toolbar/note-senior-button.ts +218 -218
  695. package/src/_pkgs/affine-gfx-note/toolbar/note-tool-button.ts +120 -120
  696. package/src/_pkgs/affine-gfx-note/toolbar/senior-tool.ts +11 -11
  697. package/src/_pkgs/affine-gfx-note/view.ts +23 -23
  698. package/src/_pkgs/affine-gfx-pointer/quick-tool/default-tool-button.ts +105 -105
  699. package/src/_pkgs/affine-gfx-pointer/quick-tool/quick-tool.ts +12 -12
  700. package/src/_pkgs/affine-gfx-pointer/snap/snap-manager.ts +139 -139
  701. package/src/_pkgs/affine-gfx-pointer/snap/snap-overlay.ts +816 -816
  702. package/src/_pkgs/affine-gfx-pointer/tools/empty-tool.ts +8 -8
  703. package/src/_pkgs/affine-gfx-pointer/tools/pan-tool.ts +110 -110
  704. package/src/_pkgs/affine-gfx-pointer/view.ts +30 -30
  705. package/src/_pkgs/affine-gfx-shape/adapter/markdown/index.ts +46 -46
  706. package/src/_pkgs/affine-gfx-shape/adapter/plain-text/index.ts +35 -35
  707. package/src/_pkgs/affine-gfx-shape/adapter/utils.ts +36 -36
  708. package/src/_pkgs/affine-gfx-shape/components/shape-panel.ts +65 -65
  709. package/src/_pkgs/affine-gfx-shape/components/shape-style-panel.ts +59 -59
  710. package/src/_pkgs/affine-gfx-shape/consts.ts +19 -19
  711. package/src/_pkgs/affine-gfx-shape/draggable/shape-draggable.ts +367 -367
  712. package/src/_pkgs/affine-gfx-shape/draggable/shape-menu.ts +212 -212
  713. package/src/_pkgs/affine-gfx-shape/draggable/shape-tool-button.ts +99 -99
  714. package/src/_pkgs/affine-gfx-shape/draggable/shape-tool-element.ts +326 -326
  715. package/src/_pkgs/affine-gfx-shape/draggable/utils.ts +150 -150
  716. package/src/_pkgs/affine-gfx-shape/element-renderer/highlighter.ts +41 -41
  717. package/src/_pkgs/affine-gfx-shape/element-renderer/shape/diamond.ts +66 -66
  718. package/src/_pkgs/affine-gfx-shape/element-renderer/shape/ellipse.ts +59 -59
  719. package/src/_pkgs/affine-gfx-shape/element-renderer/shape/index.ts +185 -185
  720. package/src/_pkgs/affine-gfx-shape/element-renderer/shape/polygon.ts +134 -134
  721. package/src/_pkgs/affine-gfx-shape/element-renderer/shape/rect.ts +98 -98
  722. package/src/_pkgs/affine-gfx-shape/element-renderer/shape/triangle.ts +65 -65
  723. package/src/_pkgs/affine-gfx-shape/element-renderer/shape/utils.ts +362 -362
  724. package/src/_pkgs/affine-gfx-shape/element-renderer/shape-dom/index.ts +228 -228
  725. package/src/_pkgs/affine-gfx-shape/element-renderer/shape-dom/utils.ts +59 -59
  726. package/src/_pkgs/affine-gfx-shape/element-renderer/shape-dom.ts +11 -11
  727. package/src/_pkgs/affine-gfx-shape/element-view.ts +612 -612
  728. package/src/_pkgs/affine-gfx-shape/overlay/diamond.ts +23 -23
  729. package/src/_pkgs/affine-gfx-shape/overlay/ellipse.ts +15 -15
  730. package/src/_pkgs/affine-gfx-shape/overlay/factory.ts +37 -37
  731. package/src/_pkgs/affine-gfx-shape/overlay/polygon-drawing-overlay.ts +195 -195
  732. package/src/_pkgs/affine-gfx-shape/overlay/polygon-vertex-editing-overlay.ts +1213 -1213
  733. package/src/_pkgs/affine-gfx-shape/overlay/polygon.ts +28 -28
  734. package/src/_pkgs/affine-gfx-shape/overlay/rect.ts +15 -15
  735. package/src/_pkgs/affine-gfx-shape/overlay/rounded-rect.ts +32 -32
  736. package/src/_pkgs/affine-gfx-shape/overlay/shape-overlay.ts +110 -110
  737. package/src/_pkgs/affine-gfx-shape/overlay/shape.ts +27 -27
  738. package/src/_pkgs/affine-gfx-shape/overlay/triangle.ts +22 -22
  739. package/src/_pkgs/affine-gfx-shape/overlay/utils.ts +59 -59
  740. package/src/_pkgs/affine-gfx-shape/polygon-tool.ts +430 -430
  741. package/src/_pkgs/affine-gfx-shape/shape-tool.ts +368 -368
  742. package/src/_pkgs/affine-gfx-shape/store.ts +19 -19
  743. package/src/_pkgs/affine-gfx-shape/text/edgeless-shape-text-editor.ts +411 -411
  744. package/src/_pkgs/affine-gfx-shape/toolbar/config.ts +361 -361
  745. package/src/_pkgs/affine-gfx-shape/toolbar/senior-tool.ts +15 -15
  746. package/src/_pkgs/affine-gfx-shape/toolbar/shape-menu-config.ts +81 -81
  747. package/src/_pkgs/affine-gfx-shape/view.ts +39 -39
  748. package/src/_pkgs/affine-gfx-template/services/template-middlewares.ts +344 -344
  749. package/src/_pkgs/affine-gfx-template/services/template.ts +432 -432
  750. package/src/_pkgs/affine-gfx-template/template-tool.ts +5 -5
  751. package/src/_pkgs/affine-gfx-template/toolbar/overlay-scrollbar.ts +174 -174
  752. package/src/_pkgs/affine-gfx-template/toolbar/template-panel.ts +517 -517
  753. package/src/_pkgs/affine-gfx-template/toolbar/template-tool-button.ts +225 -225
  754. package/src/_pkgs/affine-gfx-template/toolbar/utils.ts +33 -33
  755. package/src/_pkgs/affine-gfx-template/view.ts +25 -25
  756. package/src/_pkgs/affine-gfx-text/adapter/markdown/index.ts +24 -24
  757. package/src/_pkgs/affine-gfx-text/adapter/plain-text/index.ts +14 -14
  758. package/src/_pkgs/affine-gfx-text/adapter/text.ts +22 -22
  759. package/src/_pkgs/affine-gfx-text/commands/insert-edgeless-text.ts +114 -114
  760. package/src/_pkgs/affine-gfx-text/dblclick-add-edgeless-text.ts +52 -52
  761. package/src/_pkgs/affine-gfx-text/edgeless-text-editor.ts +487 -487
  762. package/src/_pkgs/affine-gfx-text/element-renderer/index.ts +94 -94
  763. package/src/_pkgs/affine-gfx-text/element-renderer/utils.ts +559 -559
  764. package/src/_pkgs/affine-gfx-text/element-view.ts +95 -95
  765. package/src/_pkgs/affine-gfx-text/store.ts +19 -19
  766. package/src/_pkgs/affine-gfx-text/tool.ts +66 -66
  767. package/src/_pkgs/affine-gfx-text/toolbar/actions.ts +396 -396
  768. package/src/_pkgs/affine-gfx-text/toolbar/config.ts +56 -56
  769. package/src/_pkgs/affine-gfx-text/toolbar/text-menu.ts +49 -49
  770. package/src/_pkgs/affine-gfx-text/view.ts +32 -32
  771. package/src/_pkgs/affine-gfx-turbo-renderer/layout/block-layout-provider.ts +29 -29
  772. package/src/_pkgs/affine-gfx-turbo-renderer/painter/painter.worker.ts +129 -129
  773. package/src/_pkgs/affine-gfx-turbo-renderer/renderer-utils.ts +222 -222
  774. package/src/_pkgs/affine-gfx-turbo-renderer/turbo-renderer.ts +431 -431
  775. package/src/_pkgs/affine-inline-comment/inline-comment-manager.ts +218 -218
  776. package/src/_pkgs/affine-inline-comment/inline-comment.ts +97 -97
  777. package/src/_pkgs/affine-inline-comment/inline-spec.ts +38 -38
  778. package/src/_pkgs/affine-inline-comment/utils.ts +64 -64
  779. package/src/_pkgs/affine-inline-comment/view.ts +22 -22
  780. package/src/_pkgs/affine-inline-footnote/adapters/markdown/inline-delta.ts +50 -50
  781. package/src/_pkgs/affine-inline-footnote/adapters/markdown/markdown-inline.ts +57 -57
  782. package/src/_pkgs/affine-inline-footnote/adapters/markdown/preprocessor.ts +54 -54
  783. package/src/_pkgs/affine-inline-footnote/footnote-node/footnote-config.ts +120 -120
  784. package/src/_pkgs/affine-inline-footnote/footnote-node/footnote-node.ts +279 -279
  785. package/src/_pkgs/affine-inline-footnote/footnote-node/footnote-popup-chip.ts +74 -74
  786. package/src/_pkgs/affine-inline-footnote/footnote-node/footnote-popup.ts +223 -223
  787. package/src/_pkgs/affine-inline-footnote/inline-spec.ts +32 -32
  788. package/src/_pkgs/affine-inline-footnote/store.ts +21 -21
  789. package/src/_pkgs/affine-inline-footnote/view.ts +21 -21
  790. package/src/_pkgs/affine-inline-latex/adapters/markdown/inline-delta.ts +21 -21
  791. package/src/_pkgs/affine-inline-latex/adapters/markdown/markdown-inline.ts +12 -12
  792. package/src/_pkgs/affine-inline-latex/adapters/plain-text/inline-delta.ts +21 -21
  793. package/src/_pkgs/affine-inline-latex/command.ts +74 -74
  794. package/src/_pkgs/affine-inline-latex/index.ts +9 -9
  795. package/src/_pkgs/affine-inline-latex/inline-spec.ts +40 -40
  796. package/src/_pkgs/affine-inline-latex/latex-node/latex-editor-menu.ts +210 -210
  797. package/src/_pkgs/affine-inline-latex/latex-node/latex-editor-unit.ts +55 -55
  798. package/src/_pkgs/affine-inline-latex/latex-node/latex-node.ts +265 -265
  799. package/src/_pkgs/affine-inline-latex/markdown.ts +180 -180
  800. package/src/_pkgs/affine-inline-latex/store.ts +21 -21
  801. package/src/_pkgs/affine-inline-latex/view.ts +29 -29
  802. package/src/_pkgs/affine-inline-link/adapters/html/html-inline.ts +70 -70
  803. package/src/_pkgs/affine-inline-link/adapters/html/inline-delta.ts +25 -25
  804. package/src/_pkgs/affine-inline-link/adapters/markdown/inline-delta.ts +36 -36
  805. package/src/_pkgs/affine-inline-link/adapters/markdown/markdown-inline.ts +52 -52
  806. package/src/_pkgs/affine-inline-link/adapters/notion-html/html-inline.ts +52 -52
  807. package/src/_pkgs/affine-inline-link/adapters/plain-text/inline-delta.ts +25 -25
  808. package/src/_pkgs/affine-inline-link/command.ts +42 -42
  809. package/src/_pkgs/affine-inline-link/inline-spec.ts +22 -22
  810. package/src/_pkgs/affine-inline-link/link-node/affine-link.ts +188 -188
  811. package/src/_pkgs/affine-inline-link/link-node/configs/toolbar.ts +365 -365
  812. package/src/_pkgs/affine-inline-link/link-node/link-popup/link-popup.ts +335 -335
  813. package/src/_pkgs/affine-inline-link/link-node/link-popup/styles.ts +162 -162
  814. package/src/_pkgs/affine-inline-link/link-node/link-popup/toggle-link-popup.ts +27 -27
  815. package/src/_pkgs/affine-inline-link/markdown.ts +53 -53
  816. package/src/_pkgs/affine-inline-link/store.ts +27 -27
  817. package/src/_pkgs/affine-inline-link/toolbar.ts +9 -9
  818. package/src/_pkgs/affine-inline-link/view.ts +23 -23
  819. package/src/_pkgs/affine-inline-mention/affine-mention.ts +150 -150
  820. package/src/_pkgs/affine-inline-mention/inline-spec.ts +34 -34
  821. package/src/_pkgs/affine-inline-mention/view.ts +21 -21
  822. package/src/_pkgs/affine-inline-preset/adapters/extensions.ts +21 -21
  823. package/src/_pkgs/affine-inline-preset/adapters/html/html-inline.ts +311 -311
  824. package/src/_pkgs/affine-inline-preset/adapters/html/inline-delta.ts +154 -154
  825. package/src/_pkgs/affine-inline-preset/adapters/markdown/inline-delta.ts +57 -57
  826. package/src/_pkgs/affine-inline-preset/adapters/markdown/markdown-inline.ts +98 -98
  827. package/src/_pkgs/affine-inline-preset/adapters/notion-html/html-inline.ts +256 -256
  828. package/src/_pkgs/affine-inline-preset/command/config.ts +138 -138
  829. package/src/_pkgs/affine-inline-preset/command/consts.ts +19 -19
  830. package/src/_pkgs/affine-inline-preset/command/delete-text.ts +81 -81
  831. package/src/_pkgs/affine-inline-preset/command/format-block.ts +75 -75
  832. package/src/_pkgs/affine-inline-preset/command/format-native.ts +53 -53
  833. package/src/_pkgs/affine-inline-preset/command/format-text.ts +94 -94
  834. package/src/_pkgs/affine-inline-preset/command/text-style.ts +110 -110
  835. package/src/_pkgs/affine-inline-preset/command/utils.ts +226 -226
  836. package/src/_pkgs/affine-inline-preset/default-inline-manager.ts +38 -38
  837. package/src/_pkgs/affine-inline-preset/index.ts +10 -10
  838. package/src/_pkgs/affine-inline-preset/inline-spec.ts +118 -118
  839. package/src/_pkgs/affine-inline-preset/keymap/basic.ts +78 -78
  840. package/src/_pkgs/affine-inline-preset/keymap/bracket.ts +162 -162
  841. package/src/_pkgs/affine-inline-preset/keymap/format.ts +36 -36
  842. package/src/_pkgs/affine-inline-preset/keymap/index.ts +15 -15
  843. package/src/_pkgs/affine-inline-preset/markdown.ts +284 -284
  844. package/src/_pkgs/affine-inline-preset/nodes/affine-text.ts +35 -35
  845. package/src/_pkgs/affine-inline-preset/store.ts +15 -15
  846. package/src/_pkgs/affine-inline-preset/view.ts +25 -25
  847. package/src/_pkgs/affine-inline-reference/adapters/html/inline-delta.ts +42 -42
  848. package/src/_pkgs/affine-inline-reference/adapters/markdown/inline-delta.ts +42 -42
  849. package/src/_pkgs/affine-inline-reference/adapters/plain-text/inline-delta.ts +33 -33
  850. package/src/_pkgs/affine-inline-reference/inline-spec.ts +57 -57
  851. package/src/_pkgs/affine-inline-reference/reference-node/configs/toolbar.ts +247 -247
  852. package/src/_pkgs/affine-inline-reference/reference-node/reference-config.ts +53 -53
  853. package/src/_pkgs/affine-inline-reference/reference-node/reference-node-slots.ts +30 -30
  854. package/src/_pkgs/affine-inline-reference/reference-node/reference-node.ts +318 -318
  855. package/src/_pkgs/affine-inline-reference/reference-node/reference-popup/reference-popup.ts +282 -282
  856. package/src/_pkgs/affine-inline-reference/reference-node/reference-popup/toggle-reference-popup.ts +27 -27
  857. package/src/_pkgs/affine-inline-reference/reference-node/types.ts +15 -15
  858. package/src/_pkgs/affine-inline-reference/store.ts +21 -21
  859. package/src/_pkgs/affine-inline-reference/toolbar.ts +9 -9
  860. package/src/_pkgs/affine-inline-reference/utils.ts +21 -21
  861. package/src/_pkgs/affine-inline-reference/view.ts +25 -25
  862. package/src/_pkgs/affine-model/blocks/attachment/attachment-model.ts +112 -112
  863. package/src/_pkgs/affine-model/blocks/attachment/attachment-transformer.ts +34 -34
  864. package/src/_pkgs/affine-model/blocks/bookmark/bookmark-model.ts +81 -81
  865. package/src/_pkgs/affine-model/blocks/callout/callout-model.ts +44 -44
  866. package/src/_pkgs/affine-model/blocks/code/code-model.ts +52 -52
  867. package/src/_pkgs/affine-model/blocks/database/database-model.ts +43 -43
  868. package/src/_pkgs/affine-model/blocks/divider/divider-model.ts +24 -24
  869. package/src/_pkgs/affine-model/blocks/edgeless-text/edgeless-text-model.ts +94 -94
  870. package/src/_pkgs/affine-model/blocks/embed/figma/figma-model.ts +21 -21
  871. package/src/_pkgs/affine-model/blocks/embed/figma/figma-schema.ts +28 -28
  872. package/src/_pkgs/affine-model/blocks/embed/github/github-model.ts +35 -35
  873. package/src/_pkgs/affine-model/blocks/embed/github/github-schema.ts +37 -37
  874. package/src/_pkgs/affine-model/blocks/embed/html/html-model.ts +17 -17
  875. package/src/_pkgs/affine-model/blocks/embed/html/html-schema.ts +25 -25
  876. package/src/_pkgs/affine-model/blocks/embed/iframe/iframe-model.ts +38 -38
  877. package/src/_pkgs/affine-model/blocks/embed/iframe/iframe-schema.ts +17 -17
  878. package/src/_pkgs/affine-model/blocks/embed/linked-doc/linked-doc-model.ts +24 -24
  879. package/src/_pkgs/affine-model/blocks/embed/linked-doc/linked-doc-schema.ts +30 -30
  880. package/src/_pkgs/affine-model/blocks/embed/loom/loom-model.ts +23 -23
  881. package/src/_pkgs/affine-model/blocks/embed/loom/loom-schema.ts +29 -29
  882. package/src/_pkgs/affine-model/blocks/embed/synced-doc/synced-doc-model.ts +30 -30
  883. package/src/_pkgs/affine-model/blocks/embed/synced-doc/synced-doc-schema.ts +39 -39
  884. package/src/_pkgs/affine-model/blocks/embed/types.ts +58 -58
  885. package/src/_pkgs/affine-model/blocks/embed/youtube/youtube-model.ts +26 -26
  886. package/src/_pkgs/affine-model/blocks/embed/youtube/youtube-schema.ts +33 -33
  887. package/src/_pkgs/affine-model/blocks/frame/frame-model.ts +163 -163
  888. package/src/_pkgs/affine-model/blocks/image/image-model.ts +59 -59
  889. package/src/_pkgs/affine-model/blocks/image/image-transformer.ts +34 -34
  890. package/src/_pkgs/affine-model/blocks/latex/latex-model.ts +47 -47
  891. package/src/_pkgs/affine-model/blocks/list/list-model.ts +56 -56
  892. package/src/_pkgs/affine-model/blocks/note/note-model.ts +167 -167
  893. package/src/_pkgs/affine-model/blocks/paragraph/paragraph-model.ts +62 -62
  894. package/src/_pkgs/affine-model/blocks/root/root-block-model.ts +65 -65
  895. package/src/_pkgs/affine-model/blocks/surface-ref/surface-ref-model.ts +34 -34
  896. package/src/_pkgs/affine-model/blocks/table/table-model.ts +71 -71
  897. package/src/_pkgs/affine-model/consts/doc.ts +94 -94
  898. package/src/_pkgs/affine-model/elements/bpmn/index.ts +2 -2
  899. package/src/_pkgs/affine-model/elements/bpmn/node.ts +42 -42
  900. package/src/_pkgs/affine-model/elements/bpmn/pool.ts +66 -66
  901. package/src/_pkgs/affine-model/elements/brush/brush.ts +219 -219
  902. package/src/_pkgs/affine-model/elements/connector/connector.ts +539 -539
  903. package/src/_pkgs/affine-model/elements/connector/local-connector.ts +58 -58
  904. package/src/_pkgs/affine-model/elements/cynefin/cynefin.ts +78 -78
  905. package/src/_pkgs/affine-model/elements/edgy/facets.ts +87 -87
  906. package/src/_pkgs/affine-model/elements/edgy/node.ts +37 -37
  907. package/src/_pkgs/affine-model/elements/estuarine/estuarine.ts +79 -79
  908. package/src/_pkgs/affine-model/elements/group/group.ts +121 -121
  909. package/src/_pkgs/affine-model/elements/highlighter/highlighter.ts +220 -220
  910. package/src/_pkgs/affine-model/elements/mindmap/mindmap.ts +974 -974
  911. package/src/_pkgs/affine-model/elements/shape/api/diamond.ts +120 -120
  912. package/src/_pkgs/affine-model/elements/shape/api/ellipse.ts +202 -202
  913. package/src/_pkgs/affine-model/elements/shape/api/polygon.ts +424 -424
  914. package/src/_pkgs/affine-model/elements/shape/api/rect.ts +119 -119
  915. package/src/_pkgs/affine-model/elements/shape/api/triangle.ts +116 -116
  916. package/src/_pkgs/affine-model/elements/shape/shape.ts +367 -367
  917. package/src/_pkgs/affine-model/elements/text/text.ts +92 -92
  918. package/src/_pkgs/affine-model/elements/wardley/node.ts +52 -52
  919. package/src/_pkgs/affine-model/elements/wardley/wardley.ts +160 -160
  920. package/src/_pkgs/affine-model/utils/helper.ts +74 -74
  921. package/src/_pkgs/affine-model/utils/types.ts +43 -43
  922. package/src/_pkgs/affine-rich-text/conversion.ts +136 -136
  923. package/src/_pkgs/affine-rich-text/dom.ts +172 -172
  924. package/src/_pkgs/affine-rich-text/hooks.ts +116 -116
  925. package/src/_pkgs/affine-rich-text/rich-text.ts +480 -480
  926. package/src/_pkgs/affine-rich-text/utils.ts +68 -68
  927. package/src/_pkgs/affine-shared/adapters/attachment.ts +147 -147
  928. package/src/_pkgs/affine-shared/adapters/clipboard/clipboard.ts +107 -107
  929. package/src/_pkgs/affine-shared/adapters/html/block-adapter.ts +31 -31
  930. package/src/_pkgs/affine-shared/adapters/html/delta-converter.ts +135 -135
  931. package/src/_pkgs/affine-shared/adapters/html/html.ts +400 -400
  932. package/src/_pkgs/affine-shared/adapters/image.ts +137 -137
  933. package/src/_pkgs/affine-shared/adapters/markdown/block-adapter.ts +31 -31
  934. package/src/_pkgs/affine-shared/adapters/markdown/delta-converter.ts +124 -124
  935. package/src/_pkgs/affine-shared/adapters/markdown/markdown.ts +414 -414
  936. package/src/_pkgs/affine-shared/adapters/markdown/preprocessor.ts +40 -40
  937. package/src/_pkgs/affine-shared/adapters/middlewares/callout-export-options.ts +45 -45
  938. package/src/_pkgs/affine-shared/adapters/middlewares/code.ts +11 -11
  939. package/src/_pkgs/affine-shared/adapters/middlewares/copy.ts +66 -66
  940. package/src/_pkgs/affine-shared/adapters/middlewares/doc-link.ts +44 -44
  941. package/src/_pkgs/affine-shared/adapters/middlewares/file-name.ts +27 -27
  942. package/src/_pkgs/affine-shared/adapters/middlewares/file-path.ts +14 -14
  943. package/src/_pkgs/affine-shared/adapters/middlewares/paste.ts +596 -596
  944. package/src/_pkgs/affine-shared/adapters/middlewares/proxy.ts +53 -53
  945. package/src/_pkgs/affine-shared/adapters/middlewares/replace-id.ts +256 -256
  946. package/src/_pkgs/affine-shared/adapters/middlewares/surface-ref-to-embed.ts +46 -46
  947. package/src/_pkgs/affine-shared/adapters/middlewares/title.ts +15 -15
  948. package/src/_pkgs/affine-shared/adapters/middlewares/upload.ts +118 -118
  949. package/src/_pkgs/affine-shared/adapters/mix-text.ts +360 -360
  950. package/src/_pkgs/affine-shared/adapters/notion-html/block-adapter.ts +33 -33
  951. package/src/_pkgs/affine-shared/adapters/notion-html/delta-converter.ts +105 -105
  952. package/src/_pkgs/affine-shared/adapters/notion-html/notion-html.ts +300 -300
  953. package/src/_pkgs/affine-shared/adapters/notion-text.ts +191 -191
  954. package/src/_pkgs/affine-shared/adapters/plain-text/block-adapter.ts +28 -28
  955. package/src/_pkgs/affine-shared/adapters/plain-text/delta-converter.ts +81 -81
  956. package/src/_pkgs/affine-shared/adapters/plain-text/plain-text.ts +324 -324
  957. package/src/_pkgs/affine-shared/adapters/types/adapter.ts +124 -124
  958. package/src/_pkgs/affine-shared/adapters/types/delta-converter.ts +61 -61
  959. package/src/_pkgs/affine-shared/adapters/types/preprocessor.ts +88 -88
  960. package/src/_pkgs/affine-shared/adapters/utils/text.ts +96 -96
  961. package/src/_pkgs/affine-shared/commands/block-crud/get-block-index.ts +33 -33
  962. package/src/_pkgs/affine-shared/commands/block-crud/get-first-content-block.ts +65 -65
  963. package/src/_pkgs/affine-shared/commands/block-crud/get-last-content-block.ts +67 -67
  964. package/src/_pkgs/affine-shared/commands/block-crud/get-next-block.ts +36 -36
  965. package/src/_pkgs/affine-shared/commands/block-crud/get-prev-block.ts +37 -37
  966. package/src/_pkgs/affine-shared/commands/block-crud/get-selected-blocks.ts +164 -164
  967. package/src/_pkgs/affine-shared/commands/model-crud/clear-and-select-first-model.ts +33 -33
  968. package/src/_pkgs/affine-shared/commands/model-crud/copy-selected-models.ts +25 -25
  969. package/src/_pkgs/affine-shared/commands/model-crud/delete-selected-models.ts +21 -21
  970. package/src/_pkgs/affine-shared/commands/model-crud/draft-selected-models.ts +50 -50
  971. package/src/_pkgs/affine-shared/commands/model-crud/duplicate-selected-model.ts +55 -55
  972. package/src/_pkgs/affine-shared/commands/model-crud/get-selected-models.ts +67 -67
  973. package/src/_pkgs/affine-shared/commands/model-crud/replace-selected-text-with-blocks.ts +399 -399
  974. package/src/_pkgs/affine-shared/commands/model-crud/retain-first-model.ts +19 -19
  975. package/src/_pkgs/affine-shared/commands/selection/focus-block-end.ts +37 -37
  976. package/src/_pkgs/affine-shared/commands/selection/focus-block-start.ts +23 -23
  977. package/src/_pkgs/affine-shared/commands/selection/get-block-selections.ts +10 -10
  978. package/src/_pkgs/affine-shared/commands/selection/get-selection-rects.ts +184 -184
  979. package/src/_pkgs/affine-shared/commands/selection/get-surface-selection.ts +10 -10
  980. package/src/_pkgs/affine-shared/commands/selection/get-text-selection.ts +10 -10
  981. package/src/_pkgs/affine-shared/commands/selection/is-nothing-selected.ts +24 -24
  982. package/src/_pkgs/affine-shared/commands/selection/types.ts +18 -18
  983. package/src/_pkgs/affine-shared/consts/index.ts +90 -90
  984. package/src/_pkgs/affine-shared/selection/hightlight.ts +66 -66
  985. package/src/_pkgs/affine-shared/selection/image.ts +33 -33
  986. package/src/_pkgs/affine-shared/services/auto-clear-selection-service.ts +12 -12
  987. package/src/_pkgs/affine-shared/services/block-meta-service.ts +104 -104
  988. package/src/_pkgs/affine-shared/services/citation-service/citation-service.ts +84 -84
  989. package/src/_pkgs/affine-shared/services/comment-service/block-comment-manager.ts +118 -118
  990. package/src/_pkgs/affine-shared/services/comment-service/comment-provider.ts +44 -44
  991. package/src/_pkgs/affine-shared/services/comment-service/utils.ts +50 -50
  992. package/src/_pkgs/affine-shared/services/doc-display-meta-service.ts +197 -197
  993. package/src/_pkgs/affine-shared/services/doc-mode-service.ts +109 -109
  994. package/src/_pkgs/affine-shared/services/drag-handle-config.ts +65 -65
  995. package/src/_pkgs/affine-shared/services/edit-props-store.ts +217 -217
  996. package/src/_pkgs/affine-shared/services/editor-setting-service.ts +41 -41
  997. package/src/_pkgs/affine-shared/services/embed-iframe/embed-iframe-config.ts +93 -93
  998. package/src/_pkgs/affine-shared/services/embed-iframe/embed-iframe-service.ts +152 -152
  999. package/src/_pkgs/affine-shared/services/embed-option-service.ts +65 -65
  1000. package/src/_pkgs/affine-shared/services/feature-flag-service.ts +65 -65
  1001. package/src/_pkgs/affine-shared/services/file-size-limit-service.ts +23 -23
  1002. package/src/_pkgs/affine-shared/services/font-loader/config.ts +379 -379
  1003. package/src/_pkgs/affine-shared/services/font-loader/font-loader-service.ts +62 -62
  1004. package/src/_pkgs/affine-shared/services/generate-url-service.ts +21 -21
  1005. package/src/_pkgs/affine-shared/services/index.ts +1 -0
  1006. package/src/_pkgs/affine-shared/services/link-preview-service/link-preview-cache.ts +240 -240
  1007. package/src/_pkgs/affine-shared/services/link-preview-service/link-preview-service.ts +210 -210
  1008. package/src/_pkgs/affine-shared/services/link-preview-service/link-preview-storage.ts +81 -81
  1009. package/src/_pkgs/affine-shared/services/linked-doc-creation-service.ts +34 -0
  1010. package/src/_pkgs/affine-shared/services/native-clipboard-service.ts +23 -23
  1011. package/src/_pkgs/affine-shared/services/notification-service.ts +123 -123
  1012. package/src/_pkgs/affine-shared/services/open-doc-config.ts +59 -59
  1013. package/src/_pkgs/affine-shared/services/page-viewport-service.ts +15 -15
  1014. package/src/_pkgs/affine-shared/services/parse-url-service.ts +22 -22
  1015. package/src/_pkgs/affine-shared/services/quick-search-service.ts +31 -31
  1016. package/src/_pkgs/affine-shared/services/sidebar-service.ts +18 -18
  1017. package/src/_pkgs/affine-shared/services/telemetry-service/block-lifecycle-watcher.ts +148 -148
  1018. package/src/_pkgs/affine-shared/services/telemetry-service/noop.ts +20 -20
  1019. package/src/_pkgs/affine-shared/services/telemetry-service/telemetry-service.ts +78 -78
  1020. package/src/_pkgs/affine-shared/services/theme-service.ts +195 -195
  1021. package/src/_pkgs/affine-shared/services/toolbar-service/context.ts +297 -297
  1022. package/src/_pkgs/affine-shared/services/toolbar-service/module.ts +9 -9
  1023. package/src/_pkgs/affine-shared/services/toolbar-service/registry.ts +64 -64
  1024. package/src/_pkgs/affine-shared/services/user-service/user-list-service.ts +28 -28
  1025. package/src/_pkgs/affine-shared/services/user-service/user-service.ts +24 -24
  1026. package/src/_pkgs/affine-shared/services/user-service/writer-info-service.ts +22 -22
  1027. package/src/_pkgs/affine-shared/services/viewport-element-service.ts +62 -62
  1028. package/src/_pkgs/affine-shared/services/virtual-keyboard-service.ts +23 -23
  1029. package/src/_pkgs/affine-shared/test-utils/affine-template.ts +316 -316
  1030. package/src/_pkgs/affine-shared/test-utils/affine-test-utils.ts +113 -113
  1031. package/src/_pkgs/affine-shared/test-utils/create-test-host.ts +248 -248
  1032. package/src/_pkgs/affine-shared/theme/css-variables.ts +132 -132
  1033. package/src/_pkgs/affine-shared/types/index.ts +74 -74
  1034. package/src/_pkgs/affine-shared/utils/button-popper.ts +161 -161
  1035. package/src/_pkgs/affine-shared/utils/collapsed/paragraph.ts +57 -57
  1036. package/src/_pkgs/affine-shared/utils/dnd/calc-drop-target.ts +208 -208
  1037. package/src/_pkgs/affine-shared/utils/dnd/get-drop-rect-by-point.ts +160 -160
  1038. package/src/_pkgs/affine-shared/utils/dnd/types.ts +29 -29
  1039. package/src/_pkgs/affine-shared/utils/dom/checker.ts +18 -18
  1040. package/src/_pkgs/affine-shared/utils/dom/point-to-block.ts +334 -334
  1041. package/src/_pkgs/affine-shared/utils/dom/point-to-range.ts +98 -98
  1042. package/src/_pkgs/affine-shared/utils/dom/query.ts +39 -39
  1043. package/src/_pkgs/affine-shared/utils/dom/viewport.ts +19 -19
  1044. package/src/_pkgs/affine-shared/utils/edgeless.ts +79 -79
  1045. package/src/_pkgs/affine-shared/utils/event.ts +362 -362
  1046. package/src/_pkgs/affine-shared/utils/file/filesys.ts +293 -293
  1047. package/src/_pkgs/affine-shared/utils/model/block-props.ts +6 -6
  1048. package/src/_pkgs/affine-shared/utils/model/checker.ts +34 -34
  1049. package/src/_pkgs/affine-shared/utils/model/doc.ts +38 -38
  1050. package/src/_pkgs/affine-shared/utils/model/get-content-block.ts +140 -140
  1051. package/src/_pkgs/affine-shared/utils/model/getter.ts +75 -75
  1052. package/src/_pkgs/affine-shared/utils/model/list.ts +103 -103
  1053. package/src/_pkgs/affine-shared/utils/model/merge-to-code-model.ts +33 -33
  1054. package/src/_pkgs/affine-shared/utils/model/transform-model.ts +31 -31
  1055. package/src/_pkgs/affine-shared/utils/reference.ts +44 -44
  1056. package/src/_pkgs/affine-shared/utils/title.ts +32 -32
  1057. package/src/_pkgs/affine-shared/utils/virtual-padding.ts +35 -35
  1058. package/src/_pkgs/affine-shared/utils/zod-schema.ts +219 -219
  1059. package/src/_pkgs/affine-widget-drag-handle/components/edgeless-preview/preview.ts +133 -133
  1060. package/src/_pkgs/affine-widget-drag-handle/drag-handle.ts +252 -252
  1061. package/src/_pkgs/affine-widget-drag-handle/helpers/preview-helper.ts +207 -207
  1062. package/src/_pkgs/affine-widget-drag-handle/helpers/rect-helper.ts +95 -95
  1063. package/src/_pkgs/affine-widget-drag-handle/helpers/selection-helper.ts +67 -67
  1064. package/src/_pkgs/affine-widget-drag-handle/index.ts +15 -15
  1065. package/src/_pkgs/affine-widget-drag-handle/middleware/blocks-filter.ts +119 -119
  1066. package/src/_pkgs/affine-widget-drag-handle/middleware/card-style-updater.ts +56 -56
  1067. package/src/_pkgs/affine-widget-drag-handle/middleware/new-id-cross-doc.ts +53 -53
  1068. package/src/_pkgs/affine-widget-drag-handle/middleware/reorder-list.ts +31 -31
  1069. package/src/_pkgs/affine-widget-drag-handle/styles.ts +86 -86
  1070. package/src/_pkgs/affine-widget-drag-handle/utils.ts +346 -346
  1071. package/src/_pkgs/affine-widget-drag-handle/view.ts +21 -21
  1072. package/src/_pkgs/affine-widget-drag-handle/watchers/drag-event-watcher.ts +1742 -1742
  1073. package/src/_pkgs/affine-widget-drag-handle/watchers/edgeless-watcher.ts +235 -235
  1074. package/src/_pkgs/affine-widget-drag-handle/watchers/keyboard-event-watcher.ts +24 -24
  1075. package/src/_pkgs/affine-widget-drag-handle/watchers/page-watcher.ts +21 -21
  1076. package/src/_pkgs/affine-widget-drag-handle/watchers/pointer-event-watcher.ts +366 -366
  1077. package/src/_pkgs/affine-widget-edgeless-auto-connect/index.ts +634 -634
  1078. package/src/_pkgs/affine-widget-edgeless-auto-connect/view.ts +23 -23
  1079. package/src/_pkgs/affine-widget-edgeless-dragging-area/edgeless-dragging-area-rect.ts +68 -68
  1080. package/src/_pkgs/affine-widget-edgeless-dragging-area/view.ts +23 -23
  1081. package/src/_pkgs/affine-widget-edgeless-selected-rect/auto-complete-panel.ts +680 -680
  1082. package/src/_pkgs/affine-widget-edgeless-selected-rect/edgeless-auto-complete.ts +787 -787
  1083. package/src/_pkgs/affine-widget-edgeless-selected-rect/edgeless-selected-rect.ts +844 -844
  1084. package/src/_pkgs/affine-widget-edgeless-selected-rect/resize-handles.ts +94 -94
  1085. package/src/_pkgs/affine-widget-edgeless-selected-rect/spec.ts +10 -10
  1086. package/src/_pkgs/affine-widget-edgeless-selected-rect/utils.ts +416 -416
  1087. package/src/_pkgs/affine-widget-edgeless-selected-rect/view.ts +23 -23
  1088. package/src/_pkgs/affine-widget-edgeless-toolbar/config/types.ts +28 -28
  1089. package/src/_pkgs/affine-widget-edgeless-toolbar/config/utils.ts +72 -72
  1090. package/src/_pkgs/affine-widget-edgeless-toolbar/context.ts +21 -21
  1091. package/src/_pkgs/affine-widget-edgeless-toolbar/create-popper.ts +103 -103
  1092. package/src/_pkgs/affine-widget-edgeless-toolbar/draggable/draggable-element.controller.ts +477 -477
  1093. package/src/_pkgs/affine-widget-edgeless-toolbar/draggable/types.ts +97 -97
  1094. package/src/_pkgs/affine-widget-edgeless-toolbar/menu/slide-menu.ts +184 -184
  1095. package/src/_pkgs/affine-widget-edgeless-toolbar/menu/toolbar-arrow-up-icon.ts +17 -17
  1096. package/src/_pkgs/affine-widget-edgeless-toolbar/mixins/quick-tool.mixin.ts +21 -21
  1097. package/src/_pkgs/affine-widget-edgeless-toolbar/mixins/tool.mixin.ts +171 -171
  1098. package/src/_pkgs/affine-widget-edgeless-toolbar/mixins/toolbar-button-with-menu.mixin.ts +20 -20
  1099. package/src/_pkgs/affine-widget-edgeless-toolbar/panel/font-family-panel.ts +57 -57
  1100. package/src/_pkgs/affine-widget-edgeless-toolbar/panel/font-weight-and-style-panel.ts +163 -163
  1101. package/src/_pkgs/affine-widget-edgeless-toolbar/view.ts +23 -23
  1102. package/src/_pkgs/affine-widget-edgeless-zoom-toolbar/index.ts +94 -94
  1103. package/src/_pkgs/affine-widget-edgeless-zoom-toolbar/view.ts +23 -23
  1104. package/src/_pkgs/affine-widget-edgeless-zoom-toolbar/zoom-bar-toggle-button.ts +113 -113
  1105. package/src/_pkgs/affine-widget-edgeless-zoom-toolbar/zoom-toolbar.ts +213 -213
  1106. package/src/_pkgs/affine-widget-frame-title/affine-frame-title-widget.ts +21 -21
  1107. package/src/_pkgs/affine-widget-frame-title/edgeless-frame-title-editor.ts +185 -185
  1108. package/src/_pkgs/affine-widget-frame-title/frame-title.ts +293 -293
  1109. package/src/_pkgs/affine-widget-frame-title/mount-frame-title-editor.ts +34 -34
  1110. package/src/_pkgs/affine-widget-frame-title/styles.ts +35 -35
  1111. package/src/_pkgs/affine-widget-frame-title/view.ts +23 -23
  1112. package/src/_pkgs/affine-widget-keyboard-toolbar/config.ts +1160 -1160
  1113. package/src/_pkgs/affine-widget-keyboard-toolbar/keyboard-tool-panel.ts +100 -100
  1114. package/src/_pkgs/affine-widget-keyboard-toolbar/keyboard-toolbar.ts +350 -350
  1115. package/src/_pkgs/affine-widget-keyboard-toolbar/position-controller.ts +42 -42
  1116. package/src/_pkgs/affine-widget-keyboard-toolbar/styles.ts +145 -145
  1117. package/src/_pkgs/affine-widget-keyboard-toolbar/view.ts +28 -28
  1118. package/src/_pkgs/affine-widget-keyboard-toolbar/widget.ts +148 -148
  1119. package/src/_pkgs/affine-widget-linked-doc/config.ts +230 -230
  1120. package/src/_pkgs/affine-widget-linked-doc/import-doc/import-doc.ts +297 -297
  1121. package/src/_pkgs/affine-widget-linked-doc/import-doc/index.ts +38 -38
  1122. package/src/_pkgs/affine-widget-linked-doc/import-doc/loader.ts +103 -103
  1123. package/src/_pkgs/affine-widget-linked-doc/linked-doc-popover.ts +428 -428
  1124. package/src/_pkgs/affine-widget-linked-doc/mobile-linked-doc-menu.ts +216 -216
  1125. package/src/_pkgs/affine-widget-linked-doc/styles.ts +163 -163
  1126. package/src/_pkgs/affine-widget-linked-doc/transformers/html.ts +218 -218
  1127. package/src/_pkgs/affine-widget-linked-doc/transformers/markdown.ts +283 -283
  1128. package/src/_pkgs/affine-widget-linked-doc/transformers/notion-html.ts +174 -174
  1129. package/src/_pkgs/affine-widget-linked-doc/transformers/utils.ts +115 -115
  1130. package/src/_pkgs/affine-widget-linked-doc/transformers/zip.ts +172 -172
  1131. package/src/_pkgs/affine-widget-linked-doc/view.ts +83 -83
  1132. package/src/_pkgs/affine-widget-linked-doc/widget.ts +344 -344
  1133. package/src/_pkgs/affine-widget-note-slicer/note-slicer.ts +451 -451
  1134. package/src/_pkgs/affine-widget-note-slicer/view.ts +23 -23
  1135. package/src/_pkgs/affine-widget-page-dragging-area/index.ts +331 -331
  1136. package/src/_pkgs/affine-widget-page-dragging-area/utils.ts +146 -146
  1137. package/src/_pkgs/affine-widget-page-dragging-area/view.ts +24 -24
  1138. package/src/_pkgs/affine-widget-remote-selection/doc/config.ts +5 -5
  1139. package/src/_pkgs/affine-widget-remote-selection/doc/doc-remote-selection.ts +398 -398
  1140. package/src/_pkgs/affine-widget-remote-selection/edgeless/index.ts +304 -304
  1141. package/src/_pkgs/affine-widget-remote-selection/index.ts +20 -20
  1142. package/src/_pkgs/affine-widget-remote-selection/manager/remote-color-manager.ts +42 -42
  1143. package/src/_pkgs/affine-widget-remote-selection/view.ts +27 -27
  1144. package/src/_pkgs/affine-widget-scroll-anchoring/index.ts +12 -12
  1145. package/src/_pkgs/affine-widget-scroll-anchoring/scroll-anchoring.ts +267 -267
  1146. package/src/_pkgs/affine-widget-scroll-anchoring/view.ts +21 -21
  1147. package/src/_pkgs/affine-widget-slash-menu/config.ts +189 -189
  1148. package/src/_pkgs/affine-widget-slash-menu/extensions.ts +51 -51
  1149. package/src/_pkgs/affine-widget-slash-menu/slash-menu-popover.ts +668 -668
  1150. package/src/_pkgs/affine-widget-slash-menu/styles.ts +109 -109
  1151. package/src/_pkgs/affine-widget-slash-menu/types.ts +59 -59
  1152. package/src/_pkgs/affine-widget-slash-menu/view.ts +22 -22
  1153. package/src/_pkgs/affine-widget-slash-menu/widget.ts +184 -184
  1154. package/src/_pkgs/affine-widget-toolbar/index.ts +12 -12
  1155. package/src/_pkgs/affine-widget-toolbar/toolbar.ts +705 -705
  1156. package/src/_pkgs/affine-widget-toolbar/utils.ts +432 -432
  1157. package/src/_pkgs/affine-widget-toolbar/view.ts +22 -22
  1158. package/src/_pkgs/affine-widget-viewport-overlay/index.ts +90 -90
  1159. package/src/_pkgs/affine-widget-viewport-overlay/view.ts +21 -21
  1160. package/src/_pkgs/data-view/core/common/properties.ts +283 -283
  1161. package/src/_pkgs/data-view/core/common/property-menu.ts +76 -76
  1162. package/src/_pkgs/data-view/core/component/button/button.ts +89 -89
  1163. package/src/_pkgs/data-view/core/component/overflow/overflow.ts +109 -109
  1164. package/src/_pkgs/data-view/core/component/tags/multi-tag-select.ts +606 -606
  1165. package/src/_pkgs/data-view/core/component/tags/multi-tag-view.ts +88 -88
  1166. package/src/_pkgs/data-view/core/data-source/base.ts +305 -305
  1167. package/src/_pkgs/data-view/core/data-view.ts +211 -211
  1168. package/src/_pkgs/data-view/core/detail/detail.ts +305 -305
  1169. package/src/_pkgs/data-view/core/detail/field.ts +286 -286
  1170. package/src/_pkgs/data-view/core/expression/ref/ref-view.ts +94 -94
  1171. package/src/_pkgs/data-view/core/expression/types.ts +22 -22
  1172. package/src/_pkgs/data-view/core/filter/add-filter.ts +67 -67
  1173. package/src/_pkgs/data-view/core/filter/literal/define.ts +154 -154
  1174. package/src/_pkgs/data-view/core/filter/literal/types.ts +19 -19
  1175. package/src/_pkgs/data-view/core/filter/utils.ts +66 -66
  1176. package/src/_pkgs/data-view/core/group-by/group-title.ts +231 -231
  1177. package/src/_pkgs/data-view/core/group-by/matcher.ts +41 -41
  1178. package/src/_pkgs/data-view/core/group-by/renderer/base.ts +40 -40
  1179. package/src/_pkgs/data-view/core/group-by/renderer/number-group.ts +65 -65
  1180. package/src/_pkgs/data-view/core/group-by/renderer/select-group.ts +119 -119
  1181. package/src/_pkgs/data-view/core/group-by/renderer/string-group.ts +53 -53
  1182. package/src/_pkgs/data-view/core/group-by/setting.ts +322 -322
  1183. package/src/_pkgs/data-view/core/group-by/trait.ts +362 -362
  1184. package/src/_pkgs/data-view/core/group-by/types.ts +41 -41
  1185. package/src/_pkgs/data-view/core/logical/type-presets.ts +67 -67
  1186. package/src/_pkgs/data-view/core/logical/type-variable.ts +76 -76
  1187. package/src/_pkgs/data-view/core/property/base-cell.ts +134 -134
  1188. package/src/_pkgs/data-view/core/property/manager.ts +44 -44
  1189. package/src/_pkgs/data-view/core/property/renderer.ts +25 -25
  1190. package/src/_pkgs/data-view/core/property/types.ts +99 -99
  1191. package/src/_pkgs/data-view/core/sort/add-sort.ts +53 -53
  1192. package/src/_pkgs/data-view/core/sort/utils.ts +108 -108
  1193. package/src/_pkgs/data-view/core/utils/uni-component/operation.ts +16 -16
  1194. package/src/_pkgs/data-view/core/utils/uni-component/render-template.ts +24 -24
  1195. package/src/_pkgs/data-view/core/utils/uni-component/uni-component.ts +156 -156
  1196. package/src/_pkgs/data-view/core/utils/uni-icon.ts +36 -36
  1197. package/src/_pkgs/data-view/core/view/data-view-base.ts +106 -106
  1198. package/src/_pkgs/data-view/core/view/data-view.ts +80 -80
  1199. package/src/_pkgs/data-view/core/view/types.ts +43 -43
  1200. package/src/_pkgs/data-view/core/view-manager/property.ts +270 -270
  1201. package/src/_pkgs/data-view/core/view-manager/row.ts +65 -65
  1202. package/src/_pkgs/data-view/core/view-manager/single-view.ts +286 -286
  1203. package/src/_pkgs/data-view/core/view-manager/view-manager.ts +130 -130
  1204. package/src/_pkgs/data-view/core/widget/types.ts +10 -10
  1205. package/src/_pkgs/data-view/core/widget/widget-base.ts +28 -28
  1206. package/src/_pkgs/data-view/property-presets/checkbox/cell-renderer.ts +121 -121
  1207. package/src/_pkgs/data-view/property-presets/converts.ts +45 -45
  1208. package/src/_pkgs/data-view/property-presets/date/cell-renderer.ts +167 -167
  1209. package/src/_pkgs/data-view/property-presets/multi-select/cell-renderer.ts +89 -89
  1210. package/src/_pkgs/data-view/property-presets/multi-select/define.ts +76 -76
  1211. package/src/_pkgs/data-view/property-presets/number/cell-renderer.ts +133 -133
  1212. package/src/_pkgs/data-view/property-presets/select/cell-renderer.ts +88 -88
  1213. package/src/_pkgs/data-view/property-presets/select/define.ts +73 -73
  1214. package/src/_pkgs/data-view/view-presets/kanban/define.ts +91 -91
  1215. package/src/_pkgs/data-view/view-presets/kanban/kanban-view-manager.ts +328 -328
  1216. package/src/_pkgs/data-view/view-presets/kanban/mobile/card.ts +225 -225
  1217. package/src/_pkgs/data-view/view-presets/kanban/mobile/cell.ts +178 -178
  1218. package/src/_pkgs/data-view/view-presets/kanban/mobile/group.ts +153 -153
  1219. package/src/_pkgs/data-view/view-presets/kanban/mobile/kanban-view-ui-logic.ts +170 -170
  1220. package/src/_pkgs/data-view/view-presets/kanban/mobile/menu.ts +122 -122
  1221. package/src/_pkgs/data-view/view-presets/kanban/pc/card.ts +337 -337
  1222. package/src/_pkgs/data-view/view-presets/kanban/pc/cell.ts +185 -185
  1223. package/src/_pkgs/data-view/view-presets/kanban/pc/controller/clipboard.ts +53 -53
  1224. package/src/_pkgs/data-view/view-presets/kanban/pc/controller/drag.ts +255 -255
  1225. package/src/_pkgs/data-view/view-presets/kanban/pc/controller/selection.ts +801 -801
  1226. package/src/_pkgs/data-view/view-presets/kanban/pc/group.ts +211 -211
  1227. package/src/_pkgs/data-view/view-presets/kanban/pc/header.ts +76 -76
  1228. package/src/_pkgs/data-view/view-presets/kanban/pc/kanban-view-ui-logic.ts +331 -331
  1229. package/src/_pkgs/data-view/view-presets/kanban/pc/menu.ts +114 -114
  1230. package/src/_pkgs/data-view/view-presets/table/mobile/cell.ts +170 -170
  1231. package/src/_pkgs/data-view/view-presets/table/mobile/column-header.ts +272 -272
  1232. package/src/_pkgs/data-view/view-presets/table/mobile/group.ts +166 -166
  1233. package/src/_pkgs/data-view/view-presets/table/mobile/header.ts +90 -90
  1234. package/src/_pkgs/data-view/view-presets/table/mobile/menu.ts +47 -47
  1235. package/src/_pkgs/data-view/view-presets/table/mobile/row.ts +150 -150
  1236. package/src/_pkgs/data-view/view-presets/table/mobile/table-view-ui-logic.ts +160 -160
  1237. package/src/_pkgs/data-view/view-presets/table/pc/cell.ts +161 -161
  1238. package/src/_pkgs/data-view/view-presets/table/pc/controller/clipboard.ts +323 -323
  1239. package/src/_pkgs/data-view/view-presets/table/pc/controller/drag-to-fill.ts +112 -112
  1240. package/src/_pkgs/data-view/view-presets/table/pc/controller/drag.ts +209 -209
  1241. package/src/_pkgs/data-view/view-presets/table/pc/controller/hotkeys.ts +416 -416
  1242. package/src/_pkgs/data-view/view-presets/table/pc/controller/selection.ts +1180 -1180
  1243. package/src/_pkgs/data-view/view-presets/table/pc/group.ts +311 -311
  1244. package/src/_pkgs/data-view/view-presets/table/pc/header/column-header.ts +143 -143
  1245. package/src/_pkgs/data-view/view-presets/table/pc/header/column-renderer.ts +98 -98
  1246. package/src/_pkgs/data-view/view-presets/table/pc/header/database-header-column.ts +500 -500
  1247. package/src/_pkgs/data-view/view-presets/table/pc/header/number-format-bar.ts +145 -145
  1248. package/src/_pkgs/data-view/view-presets/table/pc/header/styles.ts +349 -349
  1249. package/src/_pkgs/data-view/view-presets/table/pc/header/vertical-indicator.ts +163 -163
  1250. package/src/_pkgs/data-view/view-presets/table/pc/menu.ts +132 -132
  1251. package/src/_pkgs/data-view/view-presets/table/pc/row/row-select-checkbox.ts +80 -80
  1252. package/src/_pkgs/data-view/view-presets/table/pc/row/row.ts +306 -306
  1253. package/src/_pkgs/data-view/view-presets/table/pc/table-view-ui-logic.ts +220 -220
  1254. package/src/_pkgs/data-view/view-presets/table/pc-virtual/controller/clipboard.ts +324 -324
  1255. package/src/_pkgs/data-view/view-presets/table/pc-virtual/controller/drag-to-fill.ts +117 -117
  1256. package/src/_pkgs/data-view/view-presets/table/pc-virtual/controller/drag.ts +212 -212
  1257. package/src/_pkgs/data-view/view-presets/table/pc-virtual/controller/hotkeys.ts +418 -418
  1258. package/src/_pkgs/data-view/view-presets/table/pc-virtual/controller/selection.ts +1110 -1110
  1259. package/src/_pkgs/data-view/view-presets/table/pc-virtual/group/bottom/group-footer.ts +105 -105
  1260. package/src/_pkgs/data-view/view-presets/table/pc-virtual/group/bottom/stats/column-stats-bar.ts +51 -51
  1261. package/src/_pkgs/data-view/view-presets/table/pc-virtual/group/bottom/stats/column-stats-column.ts +246 -246
  1262. package/src/_pkgs/data-view/view-presets/table/pc-virtual/group/top/group-header.ts +138 -138
  1263. package/src/_pkgs/data-view/view-presets/table/pc-virtual/group/top/group-title-css.ts +63 -63
  1264. package/src/_pkgs/data-view/view-presets/table/pc-virtual/group/top/header/column-header.ts +135 -135
  1265. package/src/_pkgs/data-view/view-presets/table/pc-virtual/group/top/header/column-move-preview.ts +98 -98
  1266. package/src/_pkgs/data-view/view-presets/table/pc-virtual/group/top/header/number-format-bar.ts +147 -147
  1267. package/src/_pkgs/data-view/view-presets/table/pc-virtual/group/top/header/single-column-header.ts +497 -497
  1268. package/src/_pkgs/data-view/view-presets/table/pc-virtual/group/top/header/vertical-indicator.ts +169 -169
  1269. package/src/_pkgs/data-view/view-presets/table/pc-virtual/row/cell.ts +225 -225
  1270. package/src/_pkgs/data-view/view-presets/table/pc-virtual/row/menu.ts +132 -132
  1271. package/src/_pkgs/data-view/view-presets/table/pc-virtual/row/row-header.ts +128 -128
  1272. package/src/_pkgs/data-view/view-presets/table/pc-virtual/row/row-last.ts +65 -65
  1273. package/src/_pkgs/data-view/view-presets/table/pc-virtual/table-view-ui-logic.ts +321 -321
  1274. package/src/_pkgs/data-view/view-presets/table/pc-virtual/types.ts +41 -41
  1275. package/src/_pkgs/data-view/view-presets/table/pc-virtual/virtual/virtual-cell.ts +60 -60
  1276. package/src/_pkgs/data-view/view-presets/table/stats/column-stats-bar.ts +55 -55
  1277. package/src/_pkgs/data-view/view-presets/table/stats/column-stats-column.ts +246 -246
  1278. package/src/_pkgs/data-view/view-presets/table/table-view-manager.ts +395 -395
  1279. package/src/_pkgs/data-view/widget-presets/quick-setting-bar/context.ts +10 -10
  1280. package/src/_pkgs/data-view/widget-presets/quick-setting-bar/filter/condition-view.ts +311 -311
  1281. package/src/_pkgs/data-view/widget-presets/quick-setting-bar/filter/group-panel-view.ts +480 -480
  1282. package/src/_pkgs/data-view/widget-presets/quick-setting-bar/filter/index.ts +21 -21
  1283. package/src/_pkgs/data-view/widget-presets/quick-setting-bar/filter/list-view.ts +220 -220
  1284. package/src/_pkgs/data-view/widget-presets/quick-setting-bar/filter/root-panel-view.ts +437 -437
  1285. package/src/_pkgs/data-view/widget-presets/quick-setting-bar/index.ts +52 -52
  1286. package/src/_pkgs/data-view/widget-presets/quick-setting-bar/sort/index.ts +32 -32
  1287. package/src/_pkgs/data-view/widget-presets/quick-setting-bar/sort/root-panel.ts +240 -240
  1288. package/src/_pkgs/data-view/widget-presets/tools/presets/filter/filter.ts +122 -122
  1289. package/src/_pkgs/data-view/widget-presets/tools/presets/search/search.ts +189 -189
  1290. package/src/_pkgs/data-view/widget-presets/tools/presets/sort/sort.ts +127 -127
  1291. package/src/_pkgs/data-view/widget-presets/tools/presets/table-add-row/add-row.ts +51 -51
  1292. package/src/_pkgs/data-view/widget-presets/tools/presets/table-add-row/new-record-preview.ts +44 -44
  1293. package/src/_pkgs/data-view/widget-presets/tools/presets/view-options/view-options.ts +384 -384
  1294. package/src/_pkgs/data-view/widget-presets/tools/tools-view.ts +83 -83
  1295. package/src/_pkgs/data-view/widget-presets/views-bar/views-view.ts +319 -319
  1296. package/src/_pkgs/std/clipboard/clipboard-adapter.ts +33 -33
  1297. package/src/_pkgs/std/clipboard/clipboard.ts +323 -323
  1298. package/src/_pkgs/std/event/base.ts +62 -62
  1299. package/src/_pkgs/std/event/control/keyboard.ts +149 -149
  1300. package/src/_pkgs/std/event/control/pointer.ts +626 -626
  1301. package/src/_pkgs/std/event/dispatcher.ts +435 -435
  1302. package/src/_pkgs/std/event/keymap.ts +127 -127
  1303. package/src/_pkgs/std/event/utils.ts +17 -17
  1304. package/src/_pkgs/std/extension/block-view.ts +33 -33
  1305. package/src/_pkgs/std/extension/config.ts +44 -44
  1306. package/src/_pkgs/std/extension/dnd/index.ts +373 -373
  1307. package/src/_pkgs/std/extension/editor-life-cycle.ts +49 -49
  1308. package/src/_pkgs/std/extension/flavour.ts +26 -26
  1309. package/src/_pkgs/std/extension/keymap.ts +49 -49
  1310. package/src/_pkgs/std/extension/lifecycle-watcher.ts +70 -70
  1311. package/src/_pkgs/std/extension/service.ts +113 -113
  1312. package/src/_pkgs/std/extension/widget-view-map.ts +40 -40
  1313. package/src/_pkgs/std/gfx/controller.ts +284 -284
  1314. package/src/_pkgs/std/gfx/extension.ts +53 -53
  1315. package/src/_pkgs/std/gfx/grid.ts +513 -513
  1316. package/src/_pkgs/std/gfx/identifiers.ts +10 -10
  1317. package/src/_pkgs/std/gfx/interactivity/extension/base.ts +211 -211
  1318. package/src/_pkgs/std/gfx/interactivity/extension/view.ts +134 -134
  1319. package/src/_pkgs/std/gfx/interactivity/gfx-view-event-handler.ts +108 -108
  1320. package/src/_pkgs/std/gfx/interactivity/manager.ts +1111 -1111
  1321. package/src/_pkgs/std/gfx/interactivity/resize/manager.ts +657 -657
  1322. package/src/_pkgs/std/gfx/interactivity/types/drag.ts +73 -73
  1323. package/src/_pkgs/std/gfx/interactivity/types/resize.ts +41 -41
  1324. package/src/_pkgs/std/gfx/interactivity/types/view.ts +173 -173
  1325. package/src/_pkgs/std/gfx/keyboard.ts +51 -51
  1326. package/src/_pkgs/std/gfx/layer.ts +909 -909
  1327. package/src/_pkgs/std/gfx/model/base.ts +173 -173
  1328. package/src/_pkgs/std/gfx/model/gfx-block-model.ts +315 -315
  1329. package/src/_pkgs/std/gfx/model/surface/element-model.ts +598 -598
  1330. package/src/_pkgs/std/gfx/model/surface/local-element-model.ts +254 -254
  1331. package/src/_pkgs/std/gfx/model/surface/surface-model.ts +697 -697
  1332. package/src/_pkgs/std/gfx/selection.ts +408 -408
  1333. package/src/_pkgs/std/gfx/surface-middleware.ts +61 -61
  1334. package/src/_pkgs/std/gfx/tool/tool-controller.ts +635 -635
  1335. package/src/_pkgs/std/gfx/tool/tool.ts +125 -125
  1336. package/src/_pkgs/std/gfx/view/view-manager.ts +139 -139
  1337. package/src/_pkgs/std/gfx/view/view.ts +225 -225
  1338. package/src/_pkgs/std/gfx/viewport-element.ts +230 -230
  1339. package/src/_pkgs/std/gfx/viewport.ts +659 -659
  1340. package/src/_pkgs/std/identifier.ts +34 -34
  1341. package/src/_pkgs/std/inline/components/v-element.ts +113 -113
  1342. package/src/_pkgs/std/inline/components/v-line.ts +156 -156
  1343. package/src/_pkgs/std/inline/consts.ts +6 -6
  1344. package/src/_pkgs/std/inline/extensions/inline-manager.ts +124 -124
  1345. package/src/_pkgs/std/inline/extensions/inline-spec.ts +49 -49
  1346. package/src/_pkgs/std/inline/extensions/markdown-matcher.ts +30 -30
  1347. package/src/_pkgs/std/inline/extensions/type.ts +44 -44
  1348. package/src/_pkgs/std/inline/inline-editor.ts +296 -296
  1349. package/src/_pkgs/std/inline/range/inline-range-provider.ts +118 -118
  1350. package/src/_pkgs/std/inline/range/range-binding.ts +392 -392
  1351. package/src/_pkgs/std/inline/services/attribute.ts +106 -106
  1352. package/src/_pkgs/std/inline/services/delta.ts +153 -153
  1353. package/src/_pkgs/std/inline/services/event.ts +382 -382
  1354. package/src/_pkgs/std/inline/services/hook.ts +35 -35
  1355. package/src/_pkgs/std/inline/services/range.ts +394 -394
  1356. package/src/_pkgs/std/inline/services/render.ts +185 -185
  1357. package/src/_pkgs/std/inline/services/text.ts +140 -140
  1358. package/src/_pkgs/std/inline/types.ts +37 -37
  1359. package/src/_pkgs/std/inline/utils/attribute-renderer.ts +49 -49
  1360. package/src/_pkgs/std/inline/utils/delta-convert.ts +63 -63
  1361. package/src/_pkgs/std/inline/utils/embed.ts +47 -47
  1362. package/src/_pkgs/std/inline/utils/point-conversion.ts +191 -191
  1363. package/src/_pkgs/std/inline/utils/range-conversion.ts +368 -368
  1364. package/src/_pkgs/std/inline/utils/renderer.ts +18 -18
  1365. package/src/_pkgs/std/inline/utils/transform-input.ts +78 -78
  1366. package/src/_pkgs/std/scope/std-scope.ts +169 -169
  1367. package/src/_pkgs/std/selection/block.ts +33 -33
  1368. package/src/_pkgs/std/selection/cursor.ts +45 -45
  1369. package/src/_pkgs/std/selection/surface.ts +72 -72
  1370. package/src/_pkgs/std/selection/text.ts +117 -117
  1371. package/src/_pkgs/std/spec/type.ts +5 -5
  1372. package/src/_pkgs/std/utils/gfx.ts +32 -32
  1373. package/src/_pkgs/std/utils/layer.ts +175 -175
  1374. package/src/_pkgs/std/utils/tree.ts +137 -137
  1375. package/src/_pkgs/std/view/decorators/required.ts +58 -58
  1376. package/src/_pkgs/std/view/element/block-component.ts +315 -315
  1377. package/src/_pkgs/std/view/element/consts.ts +10 -10
  1378. package/src/_pkgs/std/view/element/gfx-block-component.ts +303 -303
  1379. package/src/_pkgs/std/view/element/lit-host.ts +197 -197
  1380. package/src/_pkgs/std/view/element/shadowless-element.ts +97 -97
  1381. package/src/_pkgs/std/view/element/widget-component.ts +98 -98
  1382. package/src/_pkgs/store/adapter/assets.ts +159 -159
  1383. package/src/_pkgs/store/adapter/base.ts +324 -324
  1384. package/src/_pkgs/store/extension/extension.ts +134 -134
  1385. package/src/_pkgs/store/extension/schema.ts +20 -20
  1386. package/src/_pkgs/store/extension/selection/base.ts +46 -46
  1387. package/src/_pkgs/store/extension/selection/identifier.ts +17 -17
  1388. package/src/_pkgs/store/extension/selection/selection-extension.ts +189 -189
  1389. package/src/_pkgs/store/extension/store-extension.ts +61 -61
  1390. package/src/_pkgs/store/extension/workspace/doc.ts +38 -38
  1391. package/src/_pkgs/store/extension/workspace/workspace.ts +30 -30
  1392. package/src/_pkgs/store/index.ts +27 -27
  1393. package/src/_pkgs/store/model/block/block-model.ts +158 -158
  1394. package/src/_pkgs/store/model/block/flat-sync-controller.ts +173 -173
  1395. package/src/_pkgs/store/model/block/sync-controller.ts +391 -391
  1396. package/src/_pkgs/store/model/store/crud.ts +397 -397
  1397. package/src/_pkgs/store/model/store/identifier.ts +5 -5
  1398. package/src/_pkgs/store/model/store/store.ts +1298 -1298
  1399. package/src/_pkgs/store/reactive/flat-native-y/initialize.ts +59 -59
  1400. package/src/_pkgs/store/reactive/proxy.ts +390 -390
  1401. package/src/_pkgs/store/reactive/text/text.ts +472 -472
  1402. package/src/_pkgs/store/schema/error.ts +10 -10
  1403. package/src/_pkgs/store/test/test-workspace.ts +231 -231
  1404. package/src/_pkgs/store/transformer/assets.ts +105 -105
  1405. package/src/_pkgs/store/transformer/transformer.ts +660 -660
  1406. package/src/_pkgs/sync/blob/engine.ts +205 -205
  1407. package/src/_pkgs/sync/doc/engine.ts +291 -291
  1408. package/src/_pkgs/sync/doc/peer.ts +451 -451
  1409. package/src/blocks/attachment/index.ts +1 -1
  1410. package/src/blocks/attachment/store.ts +1 -1
  1411. package/src/blocks/attachment/view.ts +1 -1
  1412. package/src/blocks/bookmark/index.ts +1 -1
  1413. package/src/blocks/bookmark/store.ts +1 -1
  1414. package/src/blocks/bookmark/view.ts +1 -1
  1415. package/src/blocks/callout/index.ts +1 -1
  1416. package/src/blocks/callout/store.ts +1 -1
  1417. package/src/blocks/callout/view.ts +1 -1
  1418. package/src/blocks/code/index.ts +1 -1
  1419. package/src/blocks/code/store.ts +1 -1
  1420. package/src/blocks/code/view.ts +1 -1
  1421. package/src/blocks/data-view/index.ts +1 -1
  1422. package/src/blocks/data-view/store.ts +1 -1
  1423. package/src/blocks/data-view/view.ts +1 -1
  1424. package/src/blocks/database/index.ts +1 -1
  1425. package/src/blocks/database/store.ts +1 -1
  1426. package/src/blocks/database/view.ts +1 -1
  1427. package/src/blocks/divider/index.ts +1 -1
  1428. package/src/blocks/divider/store.ts +1 -1
  1429. package/src/blocks/divider/view.ts +1 -1
  1430. package/src/blocks/edgeless-text/index.ts +1 -1
  1431. package/src/blocks/edgeless-text/store.ts +1 -1
  1432. package/src/blocks/edgeless-text/view.ts +1 -1
  1433. package/src/blocks/embed/index.ts +1 -1
  1434. package/src/blocks/embed/store.ts +1 -1
  1435. package/src/blocks/embed/view.ts +1 -1
  1436. package/src/blocks/embed-doc/index.ts +1 -1
  1437. package/src/blocks/embed-doc/store.ts +1 -1
  1438. package/src/blocks/embed-doc/view.ts +1 -1
  1439. package/src/blocks/frame/index.ts +1 -1
  1440. package/src/blocks/frame/store.ts +1 -1
  1441. package/src/blocks/frame/view.ts +1 -1
  1442. package/src/blocks/image/index.ts +1 -1
  1443. package/src/blocks/image/store.ts +1 -1
  1444. package/src/blocks/image/view.ts +1 -1
  1445. package/src/blocks/latex/index.ts +1 -1
  1446. package/src/blocks/latex/store.ts +1 -1
  1447. package/src/blocks/latex/view.ts +1 -1
  1448. package/src/blocks/list/index.ts +1 -1
  1449. package/src/blocks/list/store.ts +1 -1
  1450. package/src/blocks/list/view.ts +1 -1
  1451. package/src/blocks/note/index.ts +1 -1
  1452. package/src/blocks/note/store.ts +1 -1
  1453. package/src/blocks/note/view.ts +1 -1
  1454. package/src/blocks/paragraph/index.ts +1 -1
  1455. package/src/blocks/paragraph/store.ts +1 -1
  1456. package/src/blocks/paragraph/view.ts +1 -1
  1457. package/src/blocks/root/index.ts +1 -1
  1458. package/src/blocks/root/store.ts +1 -1
  1459. package/src/blocks/root/view.ts +1 -1
  1460. package/src/blocks/surface/index.ts +1 -1
  1461. package/src/blocks/surface/store.ts +1 -1
  1462. package/src/blocks/surface/view.ts +1 -1
  1463. package/src/blocks/surface-ref/index.ts +1 -1
  1464. package/src/blocks/surface-ref/store.ts +1 -1
  1465. package/src/blocks/surface-ref/view.ts +1 -1
  1466. package/src/blocks/table/index.ts +1 -1
  1467. package/src/blocks/table/store.ts +1 -1
  1468. package/src/blocks/table/view.ts +1 -1
  1469. package/src/components/block-selection.ts +1 -1
  1470. package/src/components/block-zero-width.ts +1 -1
  1471. package/src/components/caption.ts +1 -1
  1472. package/src/components/card-style-dropdown-menu.ts +1 -1
  1473. package/src/components/citation.ts +1 -1
  1474. package/src/components/color-picker.ts +1 -1
  1475. package/src/components/context-menu.ts +1 -1
  1476. package/src/components/date-picker.ts +1 -1
  1477. package/src/components/drop-indicator.ts +1 -1
  1478. package/src/components/edgeless-line-styles-panel.ts +1 -1
  1479. package/src/components/edgeless-line-width-panel.ts +1 -1
  1480. package/src/components/edgeless-shape-color-picker.ts +1 -1
  1481. package/src/components/embed-card-modal.ts +1 -1
  1482. package/src/components/filterable-list.ts +1 -1
  1483. package/src/components/highlight-dropdown-menu.ts +1 -1
  1484. package/src/components/hover.ts +1 -1
  1485. package/src/components/icon-button.ts +1 -1
  1486. package/src/components/icons.ts +1 -1
  1487. package/src/components/link-preview.ts +1 -1
  1488. package/src/components/linked-doc-title.ts +1 -1
  1489. package/src/components/notification.ts +1 -1
  1490. package/src/components/open-doc-dropdown-menu.ts +1 -1
  1491. package/src/components/peek.ts +1 -1
  1492. package/src/components/portal.ts +1 -1
  1493. package/src/components/resource.ts +1 -1
  1494. package/src/components/size-dropdown-menu.ts +1 -1
  1495. package/src/components/smooth-corner.ts +1 -1
  1496. package/src/components/toast.ts +1 -1
  1497. package/src/components/toggle-button.ts +1 -1
  1498. package/src/components/toggle-switch.ts +1 -1
  1499. package/src/components/toolbar.ts +1 -1
  1500. package/src/components/tooltip-content-with-shortcut.ts +1 -1
  1501. package/src/components/view-dropdown-menu.ts +1 -1
  1502. package/src/data-view/effects.ts +1 -1
  1503. package/src/data-view/index.ts +1 -1
  1504. package/src/effects.ts +34 -34
  1505. package/src/ext-loader/index.ts +1 -1
  1506. package/src/extensions/store.ts +83 -83
  1507. package/src/extensions/view.ts +143 -143
  1508. package/src/foundation/clipboard.ts +1 -1
  1509. package/src/foundation/store.ts +1 -1
  1510. package/src/foundation/view.ts +1 -1
  1511. package/src/fragments/adapter-panel/index.ts +1 -1
  1512. package/src/fragments/adapter-panel/view.ts +1 -1
  1513. package/src/fragments/doc-title/index.ts +1 -1
  1514. package/src/fragments/doc-title/view.ts +1 -1
  1515. package/src/fragments/frame-panel/index.ts +1 -1
  1516. package/src/fragments/frame-panel/view.ts +1 -1
  1517. package/src/fragments/outline/index.ts +1 -1
  1518. package/src/fragments/outline/view.ts +1 -1
  1519. package/src/gfx/brush/index.ts +1 -1
  1520. package/src/gfx/brush/store.ts +1 -1
  1521. package/src/gfx/brush/view.ts +1 -1
  1522. package/src/gfx/connector/index.ts +1 -1
  1523. package/src/gfx/connector/store.ts +1 -1
  1524. package/src/gfx/connector/view.ts +1 -1
  1525. package/src/gfx/group/index.ts +1 -1
  1526. package/src/gfx/group/store.ts +1 -1
  1527. package/src/gfx/group/view.ts +1 -1
  1528. package/src/gfx/link/index.ts +1 -1
  1529. package/src/gfx/link/view.ts +1 -1
  1530. package/src/gfx/mindmap/index.ts +1 -1
  1531. package/src/gfx/mindmap/store.ts +1 -1
  1532. package/src/gfx/mindmap/view.ts +1 -1
  1533. package/src/gfx/note/index.ts +1 -1
  1534. package/src/gfx/note/view.ts +1 -1
  1535. package/src/gfx/pointer/index.ts +1 -1
  1536. package/src/gfx/pointer/view.ts +1 -1
  1537. package/src/gfx/shape/index.ts +1 -1
  1538. package/src/gfx/shape/store.ts +1 -1
  1539. package/src/gfx/shape/view.ts +1 -1
  1540. package/src/gfx/template/index.ts +1 -1
  1541. package/src/gfx/template/view.ts +1 -1
  1542. package/src/gfx/text/index.ts +1 -1
  1543. package/src/gfx/text/store.ts +1 -1
  1544. package/src/gfx/text/view.ts +1 -1
  1545. package/src/gfx/turbo-renderer.ts +1 -1
  1546. package/src/global/di.ts +1 -1
  1547. package/src/global/disposable.ts +1 -1
  1548. package/src/global/env.ts +1 -1
  1549. package/src/global/exceptions.ts +1 -1
  1550. package/src/global/gfx.ts +1 -1
  1551. package/src/global/index.ts +1 -1
  1552. package/src/global/lit.ts +1 -1
  1553. package/src/global/types.ts +1 -1
  1554. package/src/global/utils.ts +1 -1
  1555. package/src/inlines/comment/index.ts +1 -1
  1556. package/src/inlines/footnote/index.ts +1 -1
  1557. package/src/inlines/footnote/store.ts +1 -1
  1558. package/src/inlines/footnote/view.ts +1 -1
  1559. package/src/inlines/latex/index.ts +1 -1
  1560. package/src/inlines/latex/store.ts +1 -1
  1561. package/src/inlines/latex/view.ts +1 -1
  1562. package/src/inlines/link/index.ts +1 -1
  1563. package/src/inlines/link/store.ts +1 -1
  1564. package/src/inlines/link/view.ts +1 -1
  1565. package/src/inlines/mention/index.ts +1 -1
  1566. package/src/inlines/mention/view.ts +1 -1
  1567. package/src/inlines/preset/index.ts +1 -1
  1568. package/src/inlines/preset/store.ts +1 -1
  1569. package/src/inlines/preset/view.ts +1 -1
  1570. package/src/inlines/reference/index.ts +1 -1
  1571. package/src/inlines/reference/store.ts +1 -1
  1572. package/src/inlines/reference/view.ts +1 -1
  1573. package/src/model/index.ts +1 -1
  1574. package/src/rich-text/effects.ts +1 -1
  1575. package/src/rich-text/index.ts +1 -1
  1576. package/src/schemas.ts +78 -78
  1577. package/src/shared/adapters.ts +1 -1
  1578. package/src/shared/commands.ts +1 -1
  1579. package/src/shared/consts.ts +1 -1
  1580. package/src/shared/selection.ts +1 -1
  1581. package/src/shared/services.ts +1 -1
  1582. package/src/shared/styles.ts +1 -1
  1583. package/src/shared/theme.ts +1 -1
  1584. package/src/shared/types.ts +1 -1
  1585. package/src/shared/utils.ts +1 -1
  1586. package/src/std/effects.ts +1 -1
  1587. package/src/std/gfx.ts +1 -1
  1588. package/src/std/index.ts +1 -1
  1589. package/src/std/inline.ts +1 -1
  1590. package/src/store/index.ts +3 -3
  1591. package/src/store/test.ts +1 -1
  1592. package/src/sync/index.ts +1 -1
  1593. package/src/widgets/drag-handle/index.ts +1 -1
  1594. package/src/widgets/drag-handle/view.ts +1 -1
  1595. package/src/widgets/edgeless-auto-connect/index.ts +1 -1
  1596. package/src/widgets/edgeless-auto-connect/view.ts +1 -1
  1597. package/src/widgets/edgeless-dragging-area/index.ts +1 -1
  1598. package/src/widgets/edgeless-dragging-area/view.ts +1 -1
  1599. package/src/widgets/edgeless-selected-rect/index.ts +1 -1
  1600. package/src/widgets/edgeless-selected-rect/view.ts +1 -1
  1601. package/src/widgets/edgeless-toolbar/index.ts +1 -1
  1602. package/src/widgets/edgeless-toolbar/view.ts +1 -1
  1603. package/src/widgets/edgeless-zoom-toolbar/index.ts +1 -1
  1604. package/src/widgets/edgeless-zoom-toolbar/view.ts +1 -1
  1605. package/src/widgets/frame-title/index.ts +1 -1
  1606. package/src/widgets/frame-title/view.ts +1 -1
  1607. package/src/widgets/keyboard-toolbar/index.ts +1 -1
  1608. package/src/widgets/keyboard-toolbar/view.ts +1 -1
  1609. package/src/widgets/linked-doc/index.ts +1 -1
  1610. package/src/widgets/linked-doc/view.ts +1 -1
  1611. package/src/widgets/note-slicer/index.ts +1 -1
  1612. package/src/widgets/note-slicer/view.ts +1 -1
  1613. package/src/widgets/page-dragging-area/index.ts +1 -1
  1614. package/src/widgets/page-dragging-area/view.ts +1 -1
  1615. package/src/widgets/remote-selection/index.ts +1 -1
  1616. package/src/widgets/remote-selection/view.ts +1 -1
  1617. package/src/widgets/scroll-anchoring/index.ts +1 -1
  1618. package/src/widgets/scroll-anchoring/view.ts +1 -1
  1619. package/src/widgets/slash-menu/index.ts +1 -1
  1620. package/src/widgets/slash-menu/view.ts +1 -1
  1621. package/src/widgets/toolbar/index.ts +1 -1
  1622. package/src/widgets/toolbar/view.ts +1 -1
  1623. package/src/widgets/viewport-overlay/index.ts +1 -1
  1624. package/src/widgets/viewport-overlay/view.ts +1 -1
@@ -1,1180 +1,1180 @@
1
- import { WithDisposable } from '../../../../../global/lit/index.js';
2
- import { ShadowlessElement } from '../../../../../std/index.js';
3
- import { computed, effect } from '@preact/signals-core';
4
- import type { ReactiveController } from 'lit';
5
- import { css, html } from 'lit';
6
- import { property } from 'lit/decorators.js';
7
- import type { Ref } from 'lit/directives/ref.js';
8
- import { createRef, ref } from 'lit/directives/ref.js';
9
-
10
- import { autoScrollOnBoundary } from '../../../../core/utils/auto-scroll.js';
11
- import { startDrag } from '../../../../core/utils/drag.js';
12
- import {
13
- type CellFocus,
14
- type MultiSelection,
15
- RowWithGroup,
16
- TableViewAreaSelection,
17
- TableViewRowSelection,
18
- type TableViewSelection,
19
- type TableViewSelectionWithType,
20
- } from '../../selection';
21
- import type { TableViewCellContainer } from '../cell.js';
22
- import type { TableGroup } from '../group.js';
23
- import type { TableRowView } from '../row/row.js';
24
- import type { TableViewUILogic } from '../table-view-ui-logic.js';
25
- import {
26
- DragToFillElement,
27
- fillSelectionWithFocusCellData,
28
- } from './drag-to-fill.js';
29
-
30
- export class TableSelectionController implements ReactiveController {
31
- private _tableViewSelection?: TableViewSelectionWithType;
32
-
33
- private readonly getFocusCellContainer = () => {
34
- if (
35
- !this._tableViewSelection ||
36
- this._tableViewSelection.selectionType !== 'area'
37
- )
38
- return null;
39
- const { groupKey, focus } = this._tableViewSelection;
40
-
41
- const dragStartCell = this.getCellContainer(
42
- groupKey,
43
- focus.rowIndex,
44
- focus.columnIndex
45
- );
46
- return dragStartCell ?? null;
47
- };
48
-
49
- __dragToFillElement = new DragToFillElement();
50
-
51
- __selectionElement;
52
-
53
- selectionStyleUpdateTask = 0;
54
-
55
- private get areaSelectionElement() {
56
- return this.__selectionElement.selectionRef.value;
57
- }
58
-
59
- get dragToFillDraggable() {
60
- return this.__dragToFillElement.dragToFillRef.value;
61
- }
62
-
63
- private get focusSelectionElement() {
64
- return this.__selectionElement.focusRef.value;
65
- }
66
-
67
- get selection(): TableViewSelectionWithType | undefined {
68
- return this._tableViewSelection;
69
- }
70
-
71
- set selection(data: TableViewSelection | undefined) {
72
- if (!data) {
73
- this.clearSelection();
74
- return;
75
- }
76
- const selection: TableViewSelectionWithType = {
77
- ...data,
78
- viewId: this.view.id,
79
- type: 'table',
80
- };
81
- if (selection.selectionType === 'area' && selection.isEditing) {
82
- const focus = selection.focus;
83
- const container = this.getCellContainer(
84
- selection.groupKey,
85
- focus.rowIndex,
86
- focus.columnIndex
87
- );
88
- const cell = container?.cell;
89
- const isEditing = cell ? cell.beforeEnterEditMode() : true;
90
- this.logic.setSelection({
91
- ...selection,
92
- isEditing,
93
- });
94
- } else {
95
- this.logic.setSelection(selection);
96
- }
97
- }
98
-
99
- get tableContainer() {
100
- return this.logic.tableContainer$.value;
101
- }
102
-
103
- get view() {
104
- return this.logic.view;
105
- }
106
-
107
- get viewData() {
108
- return this.view;
109
- }
110
-
111
- constructor(public logic: TableViewUILogic) {
112
- this.__selectionElement = new SelectionElement();
113
- this.__selectionElement.controller = this;
114
- }
115
-
116
- get host() {
117
- return this.logic.ui$.value;
118
- }
119
-
120
- private clearSelection() {
121
- this.logic.setSelection();
122
- }
123
-
124
- private handleDragEvent() {
125
- this.host?.disposables.add(
126
- this.logic.handleEvent('dragStart', context => {
127
- if (this.logic.view.readonly$.value) {
128
- return;
129
- }
130
- const event = context.get('pointerState').raw;
131
- const target = event.target;
132
- if (target instanceof HTMLElement) {
133
- const [cell, fillValues] = this.resolveDragStartTarget(target);
134
-
135
- if (cell) {
136
- const selection = this.selection;
137
- if (
138
- selection &&
139
- selection.selectionType === 'area' &&
140
- selection.isEditing &&
141
- selection.focus.rowIndex === cell.rowIndex &&
142
- selection.focus.columnIndex === cell.columnIndex
143
- ) {
144
- return false;
145
- }
146
- this.startDrag(event, cell, fillValues);
147
- event.preventDefault();
148
- return true;
149
- }
150
- return false;
151
- }
152
- return false;
153
- })
154
- );
155
- }
156
-
157
- private handleSelectionChange() {
158
- this.host?.disposables.add(
159
- this.logic.selection$.subscribe(tableSelection => {
160
- if (!this.isValidSelection(tableSelection)) {
161
- this.selection = undefined;
162
- return;
163
- }
164
- const old =
165
- this._tableViewSelection?.selectionType === 'area'
166
- ? this._tableViewSelection
167
- : undefined;
168
- const newSelection =
169
- tableSelection?.selectionType === 'area' ? tableSelection : undefined;
170
- if (
171
- old?.focus.rowIndex !== newSelection?.focus.rowIndex ||
172
- old?.focus.columnIndex !== newSelection?.focus.columnIndex
173
- ) {
174
- requestAnimationFrame(() => {
175
- this.scrollToFocus();
176
- });
177
- }
178
-
179
- if (
180
- this.isRowSelection() &&
181
- (old?.rowsSelection?.start !== newSelection?.rowsSelection?.start ||
182
- old?.rowsSelection?.end !== newSelection?.rowsSelection?.end)
183
- ) {
184
- requestAnimationFrame(() => {
185
- this.scrollToAreaSelection();
186
- });
187
- }
188
-
189
- if (old) {
190
- const container = this.getCellContainer(
191
- old.groupKey,
192
- old.focus.rowIndex,
193
- old.focus.columnIndex
194
- );
195
- if (container) {
196
- const cell = container.cell;
197
- if (old.isEditing) {
198
- cell?.beforeExitEditingMode();
199
- cell?.blurCell();
200
- container.isEditing$.value = false;
201
- }
202
- }
203
- }
204
- this._tableViewSelection = tableSelection;
205
-
206
- if (newSelection) {
207
- const container = this.getCellContainer(
208
- newSelection.groupKey,
209
- newSelection.focus.rowIndex,
210
- newSelection.focus.columnIndex
211
- );
212
- if (container) {
213
- const cell = container.cell;
214
- if (newSelection.isEditing) {
215
- container.isEditing$.value = true;
216
- requestAnimationFrame(() => {
217
- cell?.afterEnterEditingMode();
218
- cell?.focusCell();
219
- });
220
- }
221
- }
222
- }
223
- })
224
- );
225
- }
226
-
227
- private insertTo(
228
- groupKey: string | undefined,
229
- rowId: string,
230
- before: boolean
231
- ) {
232
- const id = this.view.rowAdd({ before, id: rowId });
233
- if (groupKey != null) {
234
- this.view.groupTrait.moveCardTo(id, undefined, groupKey, {
235
- before,
236
- id: rowId,
237
- });
238
- }
239
- const rows =
240
- groupKey != null
241
- ? this.view.groupTrait.groupDataMap$.value?.[groupKey]?.rows
242
- : this.view.rows$.value;
243
- requestAnimationFrame(() => {
244
- const index = this.logic.view.properties$.value.findIndex(
245
- v => v.type$.value === 'title'
246
- );
247
- this.selection = TableViewAreaSelection.create({
248
- groupKey: groupKey,
249
- focus: {
250
- rowIndex: rows?.findIndex(v => v.rowId === id) ?? 0,
251
- columnIndex: index,
252
- },
253
- isEditing: true,
254
- });
255
- });
256
- }
257
-
258
- private resolveDragStartTarget(
259
- target: HTMLElement
260
- ): [cell: TableViewCellContainer | null, fillValues: boolean] {
261
- let cell: TableViewCellContainer | null;
262
- const fillValues = !!target.dataset.dragToFill;
263
- if (fillValues) {
264
- const focusCellContainer = this.getFocusCellContainer();
265
- cell = focusCellContainer ?? null;
266
- } else {
267
- cell = target.closest('dv-table-view-cell-container');
268
- }
269
- return [cell, fillValues];
270
- }
271
-
272
- private scrollToAreaSelection() {
273
- this.areaSelectionElement?.scrollIntoView({
274
- block: 'nearest',
275
- inline: 'nearest',
276
- });
277
- }
278
-
279
- private scrollToFocus() {
280
- this.focusSelectionElement?.scrollIntoView({
281
- block: 'nearest',
282
- inline: 'nearest',
283
- });
284
- }
285
-
286
- areaToRows(selection: TableViewAreaSelection) {
287
- const rows = this.rows(selection.groupKey) ?? [];
288
- const ids = Array.from({
289
- length: selection.rowsSelection.end - selection.rowsSelection.start + 1,
290
- })
291
- .map((_, index) => index + selection.rowsSelection.start)
292
- .map(row => rows[row]?.rowId)
293
- .filter((id): id is string => id != null);
294
- return ids.map(id => ({ id, groupKey: selection.groupKey }));
295
- }
296
-
297
- cellPosition(groupKey: string | undefined) {
298
- const rows = this.rows(groupKey);
299
- const cells = rows
300
- ?.item(0)
301
- .querySelectorAll('dv-table-view-cell-container');
302
-
303
- return (x1: number, x2: number, y1: number, y2: number) => {
304
- const rowOffsets: number[] = Array.from(rows ?? []).map(
305
- v => v.getBoundingClientRect().top
306
- );
307
- const columnOffsets: number[] = Array.from(cells ?? []).map(
308
- v => v.getBoundingClientRect().left
309
- );
310
- const [startX, endX] = x1 < x2 ? [x1, x2] : [x2, x1];
311
- const [startY, endY] = y1 < y2 ? [y1, y2] : [y2, y1];
312
- const row: MultiSelection = {
313
- start: 0,
314
- end: 0,
315
- };
316
- const column: MultiSelection = {
317
- start: 0,
318
- end: 0,
319
- };
320
- for (let i = 0; i < rowOffsets.length; i++) {
321
- const offset = rowOffsets[i];
322
- if (offset == null) continue;
323
- if (offset < startY) {
324
- row.start = i;
325
- }
326
- if (offset < endY) {
327
- row.end = i;
328
- }
329
- }
330
- for (let i = 0; i < columnOffsets.length; i++) {
331
- const offset = columnOffsets[i];
332
- if (offset == null) continue;
333
- if (offset < startX) {
334
- column.start = i;
335
- }
336
- if (offset < endX) {
337
- column.end = i;
338
- }
339
- }
340
- return {
341
- row,
342
- column,
343
- };
344
- };
345
- }
346
-
347
- clear() {
348
- this.selection = undefined;
349
- }
350
-
351
- deleteRow(rowId: string) {
352
- this.view.rowsDelete([rowId]);
353
- this.focusToCell('up');
354
- this.logic.ui$.value?.requestUpdate();
355
- }
356
-
357
- focusFirstCell() {
358
- this.selection = TableViewAreaSelection.create({
359
- focus: {
360
- rowIndex: 0,
361
- columnIndex: 0,
362
- },
363
- isEditing: false,
364
- });
365
- }
366
-
367
- focusToArea(selection: TableViewAreaSelection) {
368
- return {
369
- ...selection,
370
- rowsSelection: selection.rowsSelection ?? {
371
- start: selection.focus.rowIndex,
372
- end: selection.focus.rowIndex,
373
- },
374
- columnsSelection: selection.columnsSelection ?? {
375
- start: selection.focus.columnIndex,
376
- end: selection.focus.columnIndex,
377
- },
378
- isEditing: false,
379
- } satisfies TableViewAreaSelection;
380
- }
381
-
382
- focusToCell(position: 'left' | 'right' | 'up' | 'down') {
383
- if (!this.selection || this.selection.selectionType !== 'area') {
384
- return;
385
- }
386
- const cell = this.getCellContainer(
387
- this.selection.groupKey,
388
- this.selection.focus.rowIndex,
389
- this.selection.focus.columnIndex
390
- );
391
- if (!cell) {
392
- return;
393
- }
394
- const row = cell.closest('data-view-table-row');
395
- const rows = Array.from(
396
- row
397
- ?.closest('.affine-database-table-container')
398
- ?.querySelectorAll('data-view-table-row') ?? []
399
- );
400
- const cells = Array.from(
401
- row?.querySelectorAll('dv-table-view-cell-container') ?? []
402
- );
403
- if (!row || !rows || !cells) {
404
- return;
405
- }
406
- let rowIndex = rows.indexOf(row);
407
- let columnIndex = cells.indexOf(cell);
408
- if (position === 'left') {
409
- if (columnIndex === 0) {
410
- columnIndex = cells.length - 1;
411
- rowIndex--;
412
- } else {
413
- columnIndex--;
414
- }
415
- }
416
- if (position === 'right') {
417
- if (columnIndex === cells.length - 1) {
418
- columnIndex = 0;
419
- rowIndex++;
420
- } else {
421
- columnIndex++;
422
- }
423
- }
424
- if (position === 'up') {
425
- if (rowIndex === 0) {
426
- //
427
- } else {
428
- rowIndex--;
429
- }
430
- }
431
- if (position === 'down') {
432
- if (rowIndex === rows.length - 1) {
433
- //
434
- } else {
435
- rowIndex++;
436
- }
437
- }
438
- rows[rowIndex]
439
- ?.querySelectorAll('dv-table-view-cell-container')
440
- ?.item(columnIndex)
441
- ?.selectCurrentCell(false);
442
- }
443
-
444
- getCellContainer(
445
- groupKey: string | undefined,
446
- rowIndex: number,
447
- columnIndex: number
448
- ): TableViewCellContainer | undefined {
449
- const row = this.rows(groupKey)?.item(rowIndex);
450
- return row
451
- ?.querySelectorAll('dv-table-view-cell-container')
452
- .item(columnIndex);
453
- }
454
-
455
- getGroup(groupKey: string | undefined) {
456
- const container =
457
- groupKey != null
458
- ? this.tableContainer?.querySelector(
459
- `affine-data-view-table-group[data-group-key="${groupKey}"]`
460
- )
461
- : this.tableContainer;
462
- return container ?? null;
463
- }
464
-
465
- getRect(
466
- groupKey: string | undefined,
467
- top: number,
468
- bottom: number,
469
- left: number,
470
- right: number
471
- ):
472
- | undefined
473
- | {
474
- top: number;
475
- left: number;
476
- width: number;
477
- height: number;
478
- scale: number;
479
- } {
480
- const rows = this.rows(groupKey);
481
- const topRow = rows?.item(top);
482
- const bottomRow = rows?.item(bottom);
483
- if (!topRow || !bottomRow) {
484
- return;
485
- }
486
- const topCells = topRow.querySelectorAll('dv-table-view-cell-container');
487
- const leftCell = topCells.item(left);
488
- const rightCell = topCells.item(right);
489
- if (!leftCell || !rightCell) {
490
- return;
491
- }
492
- const leftRect = leftCell.getBoundingClientRect();
493
- const scale = leftRect.width / leftCell.column.width$.value;
494
- return {
495
- top: leftRect.top / scale,
496
- left: leftRect.left / scale,
497
- width: (rightCell.getBoundingClientRect().right - leftRect.left) / scale,
498
- height: (bottomRow.getBoundingClientRect().bottom - leftRect.top) / scale,
499
- scale,
500
- };
501
- }
502
-
503
- getRow(groupKey: string | undefined, rowId: string) {
504
- return this.getGroup(groupKey)?.querySelector(
505
- `data-view-table-row[data-row-id='${rowId}']`
506
- );
507
- }
508
-
509
- getSelectionAreaBorder(position: 'left' | 'right' | 'top' | 'bottom') {
510
- return this.__selectionElement.selectionRef.value?.querySelector(
511
- `.area-border.area-${position}`
512
- );
513
- }
514
-
515
- hostConnected() {
516
- requestAnimationFrame(() => {
517
- this.tableContainer?.append(this.__selectionElement);
518
- this.tableContainer?.append(this.__dragToFillElement);
519
- });
520
- this.handleDragEvent();
521
- this.handleSelectionChange();
522
- }
523
-
524
- insertRowAfter(groupKey: string | undefined, rowId: string) {
525
- this.insertTo(groupKey, rowId, false);
526
- }
527
-
528
- insertRowBefore(groupKey: string | undefined, rowId: string) {
529
- this.insertTo(groupKey, rowId, true);
530
- }
531
-
532
- isRowSelection() {
533
- return this.selection?.selectionType === 'row';
534
- }
535
-
536
- isValidSelection(selection?: TableViewSelectionWithType): boolean {
537
- if (!selection || selection.selectionType === 'row') {
538
- return true;
539
- }
540
- if (selection.focus.rowIndex > this.view.rows$.value.length - 1) {
541
- this.selection = undefined;
542
- return false;
543
- }
544
- if (selection.focus.columnIndex > this.view.propertyIds$.value.length - 1) {
545
- this.selection = undefined;
546
- return false;
547
- }
548
- return true;
549
- }
550
-
551
- navigateRowSelection(direction: 'up' | 'down', append = false) {
552
- if (!TableViewRowSelection.is(this.selection)) return;
553
- const rows = this.selection.rows;
554
- const lastRow = rows[rows.length - 1];
555
- if (!lastRow) return;
556
- const lastRowIndex =
557
- (
558
- this.getGroup(lastRow?.groupKey)?.querySelector(
559
- `data-view-table-row[data-row-id='${lastRow?.id}']`
560
- ) as TableRowView | null
561
- )?.rowIndex ?? 0;
562
- const getRowByIndex = (index: number) => {
563
- const tableRow = this.rows(lastRow?.groupKey)?.item(index);
564
- if (!tableRow) {
565
- return;
566
- }
567
- return {
568
- id: tableRow.rowId,
569
- groupKey: lastRow?.groupKey,
570
- };
571
- };
572
- const prevRow = getRowByIndex(lastRowIndex - 1);
573
- const nextRow = getRowByIndex(lastRowIndex + 1);
574
- const includes = (row: RowWithGroup) => {
575
- if (!row) {
576
- return false;
577
- }
578
- return rows.some(r => RowWithGroup.equal(r, row));
579
- };
580
- if (append) {
581
- const addList: RowWithGroup[] = [];
582
- const removeList: RowWithGroup[] = [];
583
- if (direction === 'up' && prevRow != null) {
584
- if (includes(prevRow)) {
585
- removeList.push(lastRow);
586
- } else {
587
- addList.push(prevRow);
588
- }
589
- }
590
- if (direction === 'down' && nextRow != null) {
591
- if (includes(nextRow)) {
592
- removeList.push(lastRow);
593
- } else {
594
- addList.push(nextRow);
595
- }
596
- }
597
- this.rowSelectionChange({ add: addList, remove: removeList });
598
- } else {
599
- const target = direction === 'up' ? prevRow : nextRow;
600
- if (target != null) {
601
- this.selection = TableViewRowSelection.create({
602
- rows: [target],
603
- });
604
- }
605
- }
606
- }
607
-
608
- rows(groupKey: string | undefined) {
609
- const container =
610
- groupKey != null
611
- ? this.tableContainer?.querySelector(
612
- `affine-data-view-table-group[data-group-key="${groupKey}"]`
613
- )
614
- : this.tableContainer;
615
- return container?.querySelectorAll('data-view-table-row');
616
- }
617
-
618
- rowSelectionChange({
619
- add,
620
- remove,
621
- }: {
622
- add: RowWithGroup[];
623
- remove: RowWithGroup[];
624
- }) {
625
- const key = (r: RowWithGroup) => `${r.id}.${r.groupKey ? r.groupKey : ''}`;
626
- const rows = new Set(
627
- TableViewRowSelection.rows(this.selection).map(r => key(r))
628
- );
629
- remove.forEach(row => rows.delete(key(row)));
630
- add.forEach(row => rows.add(key(row)));
631
- const result = [...rows]
632
- .map(r => r.split('.'))
633
- .flatMap(([id, groupKey]) => {
634
- if (id == null) return [];
635
- return [
636
- {
637
- id,
638
- groupKey: groupKey ? groupKey : undefined,
639
- },
640
- ];
641
- });
642
- this.selection = TableViewRowSelection.create({
643
- rows: result,
644
- });
645
- }
646
-
647
- rowsToArea(rows: string[]):
648
- | {
649
- start: number;
650
- end: number;
651
- groupKey?: string;
652
- }
653
- | undefined {
654
- let groupKey: string | undefined = undefined;
655
- let minIndex: number | undefined = undefined;
656
- let maxIndex: number | undefined = undefined;
657
- const set = new Set(rows);
658
- if (!this.tableContainer) return;
659
- for (const row of this.tableContainer
660
- ?.querySelectorAll('data-view-table-row')
661
- .values() ?? []) {
662
- if (!set.has(row.rowId)) {
663
- continue;
664
- }
665
- minIndex =
666
- minIndex != null ? Math.min(minIndex, row.rowIndex) : row.rowIndex;
667
- maxIndex =
668
- maxIndex != null ? Math.max(maxIndex, row.rowIndex) : row.rowIndex;
669
- if (groupKey == null) {
670
- groupKey = row.groupKey;
671
- } else if (groupKey !== row.groupKey) {
672
- return;
673
- }
674
- }
675
- if (minIndex == null || maxIndex == null) {
676
- return;
677
- }
678
- return {
679
- groupKey,
680
- start: minIndex,
681
- end: maxIndex,
682
- };
683
- }
684
-
685
- selectionAreaDown() {
686
- const selection = this.selection;
687
- if (!selection || selection.selectionType !== 'area') {
688
- return;
689
- }
690
- const newSelection = this.focusToArea(selection);
691
- if (newSelection.rowsSelection.start === newSelection.focus.rowIndex) {
692
- newSelection.rowsSelection.end = Math.min(
693
- (this.rows(newSelection.groupKey)?.length ?? 0) - 1,
694
- newSelection.rowsSelection.end + 1
695
- );
696
- requestAnimationFrame(() => {
697
- this.getSelectionAreaBorder('bottom')?.scrollIntoView({
698
- block: 'nearest',
699
- inline: 'nearest',
700
- behavior: 'smooth',
701
- });
702
- });
703
- } else {
704
- newSelection.rowsSelection.start += 1;
705
- requestAnimationFrame(() => {
706
- this.getSelectionAreaBorder('top')?.scrollIntoView({
707
- block: 'nearest',
708
- inline: 'nearest',
709
- behavior: 'smooth',
710
- });
711
- });
712
- }
713
- this.selection = newSelection;
714
- }
715
-
716
- selectionAreaLeft() {
717
- const selection = this.selection;
718
- if (!selection || selection.selectionType !== 'area') {
719
- return;
720
- }
721
- const newSelection = this.focusToArea(selection);
722
- if (newSelection.columnsSelection.end === newSelection.focus.columnIndex) {
723
- newSelection.columnsSelection.start = Math.max(
724
- 0,
725
- newSelection.columnsSelection.start - 1
726
- );
727
- requestAnimationFrame(() => {
728
- this.getSelectionAreaBorder('left')?.scrollIntoView({
729
- block: 'nearest',
730
- inline: 'nearest',
731
- behavior: 'smooth',
732
- });
733
- });
734
- } else {
735
- newSelection.columnsSelection.end -= 1;
736
- requestAnimationFrame(() => {
737
- this.getSelectionAreaBorder('right')?.scrollIntoView({
738
- block: 'nearest',
739
- inline: 'nearest',
740
- behavior: 'smooth',
741
- });
742
- });
743
- }
744
- this.selection = newSelection;
745
- }
746
-
747
- selectionAreaRight() {
748
- const selection = this.selection;
749
- if (!selection || selection.selectionType !== 'area') {
750
- return;
751
- }
752
- const newSelection = this.focusToArea(selection);
753
- if (
754
- newSelection.columnsSelection.start === newSelection.focus.columnIndex
755
- ) {
756
- const max =
757
- (this.rows(newSelection.groupKey)
758
- ?.item(0)
759
- .querySelectorAll('dv-table-view-cell-container').length ?? 0) - 1;
760
- newSelection.columnsSelection.end = Math.min(
761
- max,
762
- newSelection.columnsSelection.end + 1
763
- );
764
- requestAnimationFrame(() => {
765
- this.getSelectionAreaBorder('right')?.scrollIntoView({
766
- block: 'nearest',
767
- inline: 'nearest',
768
- behavior: 'smooth',
769
- });
770
- });
771
- } else {
772
- newSelection.columnsSelection.start += 1;
773
- requestAnimationFrame(() => {
774
- this.getSelectionAreaBorder('left')?.scrollIntoView({
775
- block: 'nearest',
776
- inline: 'nearest',
777
- behavior: 'smooth',
778
- });
779
- });
780
- }
781
- this.selection = newSelection;
782
- }
783
-
784
- selectionAreaUp() {
785
- const selection = this.selection;
786
- if (!selection || selection.selectionType !== 'area') {
787
- return;
788
- }
789
- const newSelection = this.focusToArea(selection);
790
- if (newSelection.rowsSelection.end === newSelection.focus.rowIndex) {
791
- newSelection.rowsSelection.start = Math.max(
792
- 0,
793
- newSelection.rowsSelection.start - 1
794
- );
795
- requestAnimationFrame(() => {
796
- this.getSelectionAreaBorder('top')?.scrollIntoView({
797
- block: 'nearest',
798
- inline: 'nearest',
799
- behavior: 'smooth',
800
- });
801
- });
802
- } else {
803
- newSelection.rowsSelection.end -= 1;
804
- requestAnimationFrame(() => {
805
- this.getSelectionAreaBorder('bottom')?.scrollIntoView({
806
- block: 'nearest',
807
- inline: 'nearest',
808
- behavior: 'smooth',
809
- });
810
- });
811
- }
812
- this.selection = newSelection;
813
- }
814
-
815
- startDrag(
816
- evt: PointerEvent,
817
- cell: TableViewCellContainer,
818
- fillValues?: boolean
819
- ) {
820
- const groupKey = cell.closest<TableGroup>('affine-data-view-table-group')
821
- ?.group?.key;
822
- const table = this.tableContainer;
823
- const scrollContainer = table?.parentElement;
824
- if (!table || !scrollContainer) {
825
- return;
826
- }
827
- const tableRect = table.getBoundingClientRect();
828
- const startOffsetX = evt.x - tableRect.left;
829
- const startOffsetY = evt.y - tableRect.top;
830
- const offsetToSelection = this.cellPosition(groupKey);
831
- const select = (selection: {
832
- row: MultiSelection;
833
- column: MultiSelection;
834
- }) => {
835
- this.selection = TableViewAreaSelection.create({
836
- groupKey: groupKey,
837
- rowsSelection: selection.row,
838
- columnsSelection: selection.column,
839
- focus: {
840
- rowIndex: cell.rowIndex,
841
- columnIndex: cell.columnIndex,
842
- },
843
- isEditing: false,
844
- });
845
- };
846
- const drag = startDrag<
847
- | {
848
- row: MultiSelection;
849
- column: MultiSelection;
850
- }
851
- | undefined,
852
- {
853
- x: number;
854
- y: number;
855
- }
856
- >(evt, {
857
- transform: evt => ({
858
- x: evt.x,
859
- y: evt.y,
860
- }),
861
- onDrag: () => {
862
- if (fillValues) this.__dragToFillElement.dragging = true;
863
- return undefined;
864
- },
865
- onMove: ({ x, y }) => {
866
- if (!table) return;
867
- const tableRect = table.getBoundingClientRect();
868
- const startX = tableRect.left + startOffsetX;
869
- const startY = tableRect.top + startOffsetY;
870
- const selection = offsetToSelection(startX, x, startY, y);
871
-
872
- if (fillValues)
873
- selection.column = {
874
- start: cell.columnIndex,
875
- end: cell.columnIndex,
876
- };
877
-
878
- select(selection);
879
- return selection;
880
- },
881
- onDrop: selection => {
882
- if (!selection) {
883
- return;
884
- }
885
- select(selection);
886
- if (fillValues && this.selection) {
887
- this.__dragToFillElement.dragging = false;
888
- fillSelectionWithFocusCellData(
889
- this.logic,
890
- TableViewAreaSelection.create({
891
- groupKey: groupKey,
892
- rowsSelection: selection.row,
893
- columnsSelection: selection.column,
894
- focus: {
895
- rowIndex: cell.rowIndex,
896
- columnIndex: cell.columnIndex,
897
- },
898
- isEditing: false,
899
- })
900
- );
901
- }
902
- },
903
- onClear: () => {
904
- cancelScroll();
905
- },
906
- });
907
- const cancelScroll = autoScrollOnBoundary(
908
- scrollContainer,
909
- computed(() => {
910
- return {
911
- left: drag.mousePosition.value.x,
912
- right: drag.mousePosition.value.x,
913
- top: drag.mousePosition.value.y,
914
- bottom: drag.mousePosition.value.y,
915
- };
916
- }),
917
- {
918
- onScroll() {
919
- drag.move({ x: drag.last.x, y: drag.last.y });
920
- },
921
- }
922
- );
923
- }
924
-
925
- toggleRow(rowId: string, groupKey?: string) {
926
- const row = {
927
- id: rowId,
928
- groupKey,
929
- };
930
- const isSelected = TableViewRowSelection.includes(this.selection, row);
931
- this.rowSelectionChange({
932
- add: isSelected ? [] : [row],
933
- remove: isSelected ? [row] : [],
934
- });
935
- }
936
- }
937
-
938
- export class SelectionElement extends WithDisposable(ShadowlessElement) {
939
- static override styles = css`
940
- .database-selection {
941
- position: absolute;
942
- z-index: 2;
943
- box-sizing: border-box;
944
- background: var(--affine-primary-color-04);
945
- pointer-events: none;
946
- display: none;
947
- }
948
-
949
- .database-focus {
950
- position: absolute;
951
- width: 100%;
952
- z-index: 2;
953
- box-sizing: border-box;
954
- border: 1px solid var(--affine-primary-color);
955
- border-radius: 2px;
956
- pointer-events: none;
957
- display: none;
958
- outline: none;
959
- }
960
-
961
- .area-border {
962
- position: absolute;
963
- pointer-events: none;
964
- }
965
-
966
- .area-left {
967
- left: 0;
968
- height: 100%;
969
- width: 1px;
970
- }
971
-
972
- .area-right {
973
- right: 0;
974
- height: 100%;
975
- width: 1px;
976
- }
977
-
978
- .area-top {
979
- top: 0;
980
- width: 100%;
981
- height: 1px;
982
- }
983
-
984
- .area-bottom {
985
- bottom: 0;
986
- width: 100%;
987
- height: 1px;
988
- }
989
-
990
- @media print {
991
- data-view-table-selection {
992
- display: none;
993
- }
994
- }
995
- `;
996
-
997
- focusRef: Ref<HTMLDivElement> = createRef<HTMLDivElement>();
998
-
999
- preTask = 0;
1000
-
1001
- selectionRef: Ref<HTMLDivElement> = createRef<HTMLDivElement>();
1002
-
1003
- get selection$() {
1004
- return this.controller.logic.selection$;
1005
- }
1006
-
1007
- clearAreaStyle() {
1008
- const div = this.selectionRef.value;
1009
- if (!div) return;
1010
- div.style.display = 'none';
1011
- }
1012
-
1013
- clearFocusStyle() {
1014
- const div = this.focusRef.value;
1015
- const dragToFill = this.controller.dragToFillDraggable;
1016
- if (!div || !dragToFill) return;
1017
- div.style.display = 'none';
1018
- dragToFill.style.display = 'none';
1019
- }
1020
-
1021
- override connectedCallback() {
1022
- super.connectedCallback();
1023
- this.disposables.add(
1024
- effect(() => {
1025
- this.startUpdate(this.selection$.value);
1026
- return () => {
1027
- this.cancelSelectionUpdate();
1028
- };
1029
- })
1030
- );
1031
- }
1032
-
1033
- override render() {
1034
- return html`
1035
- <div ${ref(this.selectionRef)} class="database-selection">
1036
- <div class="area-border area-left"></div>
1037
- <div class="area-border area-right"></div>
1038
- <div class="area-border area-top"></div>
1039
- <div class="area-border area-bottom"></div>
1040
- </div>
1041
- <div tabindex="0" ${ref(this.focusRef)} class="database-focus"></div>
1042
- `;
1043
- }
1044
-
1045
- cancelSelectionUpdate() {
1046
- if (this.preTask) {
1047
- cancelAnimationFrame(this.preTask);
1048
- this.preTask = 0;
1049
- }
1050
- }
1051
-
1052
- startUpdate(selection?: TableViewSelection) {
1053
- this.cancelSelectionUpdate();
1054
- if (
1055
- selection?.selectionType === 'area' &&
1056
- !this.controller.logic.view.readonly$.value
1057
- ) {
1058
- this.updateAreaSelectionStyle(
1059
- selection.groupKey,
1060
- selection.rowsSelection,
1061
- selection.columnsSelection
1062
- );
1063
-
1064
- const columnSelection = selection.columnsSelection;
1065
- const rowSelection = selection.rowsSelection;
1066
-
1067
- const isSingleRowSelection = rowSelection.end - rowSelection.start === 0;
1068
- const isSingleColumnSelection =
1069
- columnSelection.end - columnSelection.start === 0;
1070
-
1071
- const isDragElemDragging = this.controller.__dragToFillElement.dragging;
1072
- const isEditing = selection.isEditing;
1073
-
1074
- const showDragToFillHandle =
1075
- !isEditing &&
1076
- (isDragElemDragging || isSingleRowSelection) &&
1077
- isSingleColumnSelection;
1078
-
1079
- this.updateFocusSelectionStyle(
1080
- selection.groupKey,
1081
- selection.focus,
1082
- isEditing,
1083
- showDragToFillHandle
1084
- );
1085
- this.preTask = requestAnimationFrame(() =>
1086
- this.startUpdate(this.selection$.value)
1087
- );
1088
- } else {
1089
- this.clearFocusStyle();
1090
- this.clearAreaStyle();
1091
- }
1092
- }
1093
-
1094
- updateAreaSelectionStyle(
1095
- groupKey: string | undefined,
1096
- rowSelection: MultiSelection,
1097
- columnSelection: MultiSelection
1098
- ) {
1099
- const div = this.selectionRef.value;
1100
- if (!div) return;
1101
- const tableContainer = this.controller.tableContainer;
1102
- if (!tableContainer) return;
1103
- const tableRect = tableContainer.getBoundingClientRect();
1104
- const rect = this.controller.getRect(
1105
- groupKey,
1106
- rowSelection?.start ?? 0,
1107
- rowSelection?.end ?? this.controller.view.rows$.value.length - 1,
1108
- columnSelection?.start ?? 0,
1109
- columnSelection?.end ?? this.controller.view.properties$.value.length - 1
1110
- );
1111
- if (!rect) {
1112
- this.clearAreaStyle();
1113
- return;
1114
- }
1115
- const { left, top, width, height, scale } = rect;
1116
- div.style.left = `${left - tableRect.left / scale}px`;
1117
- div.style.top = `${top - tableRect.top / scale}px`;
1118
- div.style.width = `${width}px`;
1119
- div.style.height = `${height}px`;
1120
- div.style.display = 'block';
1121
- }
1122
-
1123
- updateFocusSelectionStyle(
1124
- groupKey: string | undefined,
1125
- focus: CellFocus,
1126
- isEditing: boolean,
1127
- showDragToFillHandle = false
1128
- ) {
1129
- const div = this.focusRef.value;
1130
- const dragToFill = this.controller.dragToFillDraggable;
1131
- if (!div || !dragToFill) return;
1132
- // Check if row is removed.
1133
- const rows = this.controller.rows(groupKey) ?? [];
1134
- if (rows.length <= focus.rowIndex) return;
1135
-
1136
- const rect = this.controller.getRect(
1137
- groupKey,
1138
- focus.rowIndex,
1139
- focus.rowIndex,
1140
- focus.columnIndex,
1141
- focus.columnIndex
1142
- );
1143
- if (!rect) {
1144
- this.clearFocusStyle();
1145
- return;
1146
- }
1147
- const { left, top, width, height, scale } = rect;
1148
- const tableContainer = this.controller.tableContainer;
1149
- if (!tableContainer) return;
1150
- const tableRect = tableContainer?.getBoundingClientRect();
1151
- if (!tableRect) {
1152
- this.clearFocusStyle();
1153
- return;
1154
- }
1155
-
1156
- const x = left - tableRect.left / scale;
1157
- const y = top - 1 - tableRect.top / scale;
1158
- const w = width + 1;
1159
- const h = height + 1;
1160
- div.style.left = `${x}px`;
1161
- div.style.top = `${y}px`;
1162
- div.style.width = `${w}px`;
1163
- div.style.height = `${h}px`;
1164
- div.style.borderColor = 'var(--affine-primary-color)';
1165
- div.style.borderStyle = this.controller.__dragToFillElement.dragging
1166
- ? 'dashed'
1167
- : 'solid';
1168
- div.style.boxShadow = isEditing
1169
- ? '0px 0px 0px 2px rgba(30, 150, 235, 0.30)'
1170
- : 'unset';
1171
- div.style.display = 'block';
1172
-
1173
- dragToFill.style.left = `${x + w}px`;
1174
- dragToFill.style.top = `${y + h}px`;
1175
- dragToFill.style.display = showDragToFillHandle ? 'block' : 'none';
1176
- }
1177
-
1178
- @property({ attribute: false })
1179
- accessor controller!: TableSelectionController;
1180
- }
1
+ import { WithDisposable } from '../../../../../global/lit/index.js';
2
+ import { ShadowlessElement } from '../../../../../std/index.js';
3
+ import { computed, effect } from '@preact/signals-core';
4
+ import type { ReactiveController } from 'lit';
5
+ import { css, html } from 'lit';
6
+ import { property } from 'lit/decorators.js';
7
+ import type { Ref } from 'lit/directives/ref.js';
8
+ import { createRef, ref } from 'lit/directives/ref.js';
9
+
10
+ import { autoScrollOnBoundary } from '../../../../core/utils/auto-scroll.js';
11
+ import { startDrag } from '../../../../core/utils/drag.js';
12
+ import {
13
+ type CellFocus,
14
+ type MultiSelection,
15
+ RowWithGroup,
16
+ TableViewAreaSelection,
17
+ TableViewRowSelection,
18
+ type TableViewSelection,
19
+ type TableViewSelectionWithType,
20
+ } from '../../selection';
21
+ import type { TableViewCellContainer } from '../cell.js';
22
+ import type { TableGroup } from '../group.js';
23
+ import type { TableRowView } from '../row/row.js';
24
+ import type { TableViewUILogic } from '../table-view-ui-logic.js';
25
+ import {
26
+ DragToFillElement,
27
+ fillSelectionWithFocusCellData,
28
+ } from './drag-to-fill.js';
29
+
30
+ export class TableSelectionController implements ReactiveController {
31
+ private _tableViewSelection?: TableViewSelectionWithType;
32
+
33
+ private readonly getFocusCellContainer = () => {
34
+ if (
35
+ !this._tableViewSelection ||
36
+ this._tableViewSelection.selectionType !== 'area'
37
+ )
38
+ return null;
39
+ const { groupKey, focus } = this._tableViewSelection;
40
+
41
+ const dragStartCell = this.getCellContainer(
42
+ groupKey,
43
+ focus.rowIndex,
44
+ focus.columnIndex
45
+ );
46
+ return dragStartCell ?? null;
47
+ };
48
+
49
+ __dragToFillElement = new DragToFillElement();
50
+
51
+ __selectionElement;
52
+
53
+ selectionStyleUpdateTask = 0;
54
+
55
+ private get areaSelectionElement() {
56
+ return this.__selectionElement.selectionRef.value;
57
+ }
58
+
59
+ get dragToFillDraggable() {
60
+ return this.__dragToFillElement.dragToFillRef.value;
61
+ }
62
+
63
+ private get focusSelectionElement() {
64
+ return this.__selectionElement.focusRef.value;
65
+ }
66
+
67
+ get selection(): TableViewSelectionWithType | undefined {
68
+ return this._tableViewSelection;
69
+ }
70
+
71
+ set selection(data: TableViewSelection | undefined) {
72
+ if (!data) {
73
+ this.clearSelection();
74
+ return;
75
+ }
76
+ const selection: TableViewSelectionWithType = {
77
+ ...data,
78
+ viewId: this.view.id,
79
+ type: 'table',
80
+ };
81
+ if (selection.selectionType === 'area' && selection.isEditing) {
82
+ const focus = selection.focus;
83
+ const container = this.getCellContainer(
84
+ selection.groupKey,
85
+ focus.rowIndex,
86
+ focus.columnIndex
87
+ );
88
+ const cell = container?.cell;
89
+ const isEditing = cell ? cell.beforeEnterEditMode() : true;
90
+ this.logic.setSelection({
91
+ ...selection,
92
+ isEditing,
93
+ });
94
+ } else {
95
+ this.logic.setSelection(selection);
96
+ }
97
+ }
98
+
99
+ get tableContainer() {
100
+ return this.logic.tableContainer$.value;
101
+ }
102
+
103
+ get view() {
104
+ return this.logic.view;
105
+ }
106
+
107
+ get viewData() {
108
+ return this.view;
109
+ }
110
+
111
+ constructor(public logic: TableViewUILogic) {
112
+ this.__selectionElement = new SelectionElement();
113
+ this.__selectionElement.controller = this;
114
+ }
115
+
116
+ get host() {
117
+ return this.logic.ui$.value;
118
+ }
119
+
120
+ private clearSelection() {
121
+ this.logic.setSelection();
122
+ }
123
+
124
+ private handleDragEvent() {
125
+ this.host?.disposables.add(
126
+ this.logic.handleEvent('dragStart', context => {
127
+ if (this.logic.view.readonly$.value) {
128
+ return;
129
+ }
130
+ const event = context.get('pointerState').raw;
131
+ const target = event.target;
132
+ if (target instanceof HTMLElement) {
133
+ const [cell, fillValues] = this.resolveDragStartTarget(target);
134
+
135
+ if (cell) {
136
+ const selection = this.selection;
137
+ if (
138
+ selection &&
139
+ selection.selectionType === 'area' &&
140
+ selection.isEditing &&
141
+ selection.focus.rowIndex === cell.rowIndex &&
142
+ selection.focus.columnIndex === cell.columnIndex
143
+ ) {
144
+ return false;
145
+ }
146
+ this.startDrag(event, cell, fillValues);
147
+ event.preventDefault();
148
+ return true;
149
+ }
150
+ return false;
151
+ }
152
+ return false;
153
+ })
154
+ );
155
+ }
156
+
157
+ private handleSelectionChange() {
158
+ this.host?.disposables.add(
159
+ this.logic.selection$.subscribe(tableSelection => {
160
+ if (!this.isValidSelection(tableSelection)) {
161
+ this.selection = undefined;
162
+ return;
163
+ }
164
+ const old =
165
+ this._tableViewSelection?.selectionType === 'area'
166
+ ? this._tableViewSelection
167
+ : undefined;
168
+ const newSelection =
169
+ tableSelection?.selectionType === 'area' ? tableSelection : undefined;
170
+ if (
171
+ old?.focus.rowIndex !== newSelection?.focus.rowIndex ||
172
+ old?.focus.columnIndex !== newSelection?.focus.columnIndex
173
+ ) {
174
+ requestAnimationFrame(() => {
175
+ this.scrollToFocus();
176
+ });
177
+ }
178
+
179
+ if (
180
+ this.isRowSelection() &&
181
+ (old?.rowsSelection?.start !== newSelection?.rowsSelection?.start ||
182
+ old?.rowsSelection?.end !== newSelection?.rowsSelection?.end)
183
+ ) {
184
+ requestAnimationFrame(() => {
185
+ this.scrollToAreaSelection();
186
+ });
187
+ }
188
+
189
+ if (old) {
190
+ const container = this.getCellContainer(
191
+ old.groupKey,
192
+ old.focus.rowIndex,
193
+ old.focus.columnIndex
194
+ );
195
+ if (container) {
196
+ const cell = container.cell;
197
+ if (old.isEditing) {
198
+ cell?.beforeExitEditingMode();
199
+ cell?.blurCell();
200
+ container.isEditing$.value = false;
201
+ }
202
+ }
203
+ }
204
+ this._tableViewSelection = tableSelection;
205
+
206
+ if (newSelection) {
207
+ const container = this.getCellContainer(
208
+ newSelection.groupKey,
209
+ newSelection.focus.rowIndex,
210
+ newSelection.focus.columnIndex
211
+ );
212
+ if (container) {
213
+ const cell = container.cell;
214
+ if (newSelection.isEditing) {
215
+ container.isEditing$.value = true;
216
+ requestAnimationFrame(() => {
217
+ cell?.afterEnterEditingMode();
218
+ cell?.focusCell();
219
+ });
220
+ }
221
+ }
222
+ }
223
+ })
224
+ );
225
+ }
226
+
227
+ private insertTo(
228
+ groupKey: string | undefined,
229
+ rowId: string,
230
+ before: boolean
231
+ ) {
232
+ const id = this.view.rowAdd({ before, id: rowId });
233
+ if (groupKey != null) {
234
+ this.view.groupTrait.moveCardTo(id, undefined, groupKey, {
235
+ before,
236
+ id: rowId,
237
+ });
238
+ }
239
+ const rows =
240
+ groupKey != null
241
+ ? this.view.groupTrait.groupDataMap$.value?.[groupKey]?.rows
242
+ : this.view.rows$.value;
243
+ requestAnimationFrame(() => {
244
+ const index = this.logic.view.properties$.value.findIndex(
245
+ v => v.type$.value === 'title'
246
+ );
247
+ this.selection = TableViewAreaSelection.create({
248
+ groupKey: groupKey,
249
+ focus: {
250
+ rowIndex: rows?.findIndex(v => v.rowId === id) ?? 0,
251
+ columnIndex: index,
252
+ },
253
+ isEditing: true,
254
+ });
255
+ });
256
+ }
257
+
258
+ private resolveDragStartTarget(
259
+ target: HTMLElement
260
+ ): [cell: TableViewCellContainer | null, fillValues: boolean] {
261
+ let cell: TableViewCellContainer | null;
262
+ const fillValues = !!target.dataset.dragToFill;
263
+ if (fillValues) {
264
+ const focusCellContainer = this.getFocusCellContainer();
265
+ cell = focusCellContainer ?? null;
266
+ } else {
267
+ cell = target.closest('dv-table-view-cell-container');
268
+ }
269
+ return [cell, fillValues];
270
+ }
271
+
272
+ private scrollToAreaSelection() {
273
+ this.areaSelectionElement?.scrollIntoView({
274
+ block: 'nearest',
275
+ inline: 'nearest',
276
+ });
277
+ }
278
+
279
+ private scrollToFocus() {
280
+ this.focusSelectionElement?.scrollIntoView({
281
+ block: 'nearest',
282
+ inline: 'nearest',
283
+ });
284
+ }
285
+
286
+ areaToRows(selection: TableViewAreaSelection) {
287
+ const rows = this.rows(selection.groupKey) ?? [];
288
+ const ids = Array.from({
289
+ length: selection.rowsSelection.end - selection.rowsSelection.start + 1,
290
+ })
291
+ .map((_, index) => index + selection.rowsSelection.start)
292
+ .map(row => rows[row]?.rowId)
293
+ .filter((id): id is string => id != null);
294
+ return ids.map(id => ({ id, groupKey: selection.groupKey }));
295
+ }
296
+
297
+ cellPosition(groupKey: string | undefined) {
298
+ const rows = this.rows(groupKey);
299
+ const cells = rows
300
+ ?.item(0)
301
+ .querySelectorAll('dv-table-view-cell-container');
302
+
303
+ return (x1: number, x2: number, y1: number, y2: number) => {
304
+ const rowOffsets: number[] = Array.from(rows ?? []).map(
305
+ v => v.getBoundingClientRect().top
306
+ );
307
+ const columnOffsets: number[] = Array.from(cells ?? []).map(
308
+ v => v.getBoundingClientRect().left
309
+ );
310
+ const [startX, endX] = x1 < x2 ? [x1, x2] : [x2, x1];
311
+ const [startY, endY] = y1 < y2 ? [y1, y2] : [y2, y1];
312
+ const row: MultiSelection = {
313
+ start: 0,
314
+ end: 0,
315
+ };
316
+ const column: MultiSelection = {
317
+ start: 0,
318
+ end: 0,
319
+ };
320
+ for (let i = 0; i < rowOffsets.length; i++) {
321
+ const offset = rowOffsets[i];
322
+ if (offset == null) continue;
323
+ if (offset < startY) {
324
+ row.start = i;
325
+ }
326
+ if (offset < endY) {
327
+ row.end = i;
328
+ }
329
+ }
330
+ for (let i = 0; i < columnOffsets.length; i++) {
331
+ const offset = columnOffsets[i];
332
+ if (offset == null) continue;
333
+ if (offset < startX) {
334
+ column.start = i;
335
+ }
336
+ if (offset < endX) {
337
+ column.end = i;
338
+ }
339
+ }
340
+ return {
341
+ row,
342
+ column,
343
+ };
344
+ };
345
+ }
346
+
347
+ clear() {
348
+ this.selection = undefined;
349
+ }
350
+
351
+ deleteRow(rowId: string) {
352
+ this.view.rowsDelete([rowId]);
353
+ this.focusToCell('up');
354
+ this.logic.ui$.value?.requestUpdate();
355
+ }
356
+
357
+ focusFirstCell() {
358
+ this.selection = TableViewAreaSelection.create({
359
+ focus: {
360
+ rowIndex: 0,
361
+ columnIndex: 0,
362
+ },
363
+ isEditing: false,
364
+ });
365
+ }
366
+
367
+ focusToArea(selection: TableViewAreaSelection) {
368
+ return {
369
+ ...selection,
370
+ rowsSelection: selection.rowsSelection ?? {
371
+ start: selection.focus.rowIndex,
372
+ end: selection.focus.rowIndex,
373
+ },
374
+ columnsSelection: selection.columnsSelection ?? {
375
+ start: selection.focus.columnIndex,
376
+ end: selection.focus.columnIndex,
377
+ },
378
+ isEditing: false,
379
+ } satisfies TableViewAreaSelection;
380
+ }
381
+
382
+ focusToCell(position: 'left' | 'right' | 'up' | 'down') {
383
+ if (!this.selection || this.selection.selectionType !== 'area') {
384
+ return;
385
+ }
386
+ const cell = this.getCellContainer(
387
+ this.selection.groupKey,
388
+ this.selection.focus.rowIndex,
389
+ this.selection.focus.columnIndex
390
+ );
391
+ if (!cell) {
392
+ return;
393
+ }
394
+ const row = cell.closest('data-view-table-row');
395
+ const rows = Array.from(
396
+ row
397
+ ?.closest('.affine-database-table-container')
398
+ ?.querySelectorAll('data-view-table-row') ?? []
399
+ );
400
+ const cells = Array.from(
401
+ row?.querySelectorAll('dv-table-view-cell-container') ?? []
402
+ );
403
+ if (!row || !rows || !cells) {
404
+ return;
405
+ }
406
+ let rowIndex = rows.indexOf(row);
407
+ let columnIndex = cells.indexOf(cell);
408
+ if (position === 'left') {
409
+ if (columnIndex === 0) {
410
+ columnIndex = cells.length - 1;
411
+ rowIndex--;
412
+ } else {
413
+ columnIndex--;
414
+ }
415
+ }
416
+ if (position === 'right') {
417
+ if (columnIndex === cells.length - 1) {
418
+ columnIndex = 0;
419
+ rowIndex++;
420
+ } else {
421
+ columnIndex++;
422
+ }
423
+ }
424
+ if (position === 'up') {
425
+ if (rowIndex === 0) {
426
+ //
427
+ } else {
428
+ rowIndex--;
429
+ }
430
+ }
431
+ if (position === 'down') {
432
+ if (rowIndex === rows.length - 1) {
433
+ //
434
+ } else {
435
+ rowIndex++;
436
+ }
437
+ }
438
+ rows[rowIndex]
439
+ ?.querySelectorAll('dv-table-view-cell-container')
440
+ ?.item(columnIndex)
441
+ ?.selectCurrentCell(false);
442
+ }
443
+
444
+ getCellContainer(
445
+ groupKey: string | undefined,
446
+ rowIndex: number,
447
+ columnIndex: number
448
+ ): TableViewCellContainer | undefined {
449
+ const row = this.rows(groupKey)?.item(rowIndex);
450
+ return row
451
+ ?.querySelectorAll('dv-table-view-cell-container')
452
+ .item(columnIndex);
453
+ }
454
+
455
+ getGroup(groupKey: string | undefined) {
456
+ const container =
457
+ groupKey != null
458
+ ? this.tableContainer?.querySelector(
459
+ `affine-data-view-table-group[data-group-key="${groupKey}"]`
460
+ )
461
+ : this.tableContainer;
462
+ return container ?? null;
463
+ }
464
+
465
+ getRect(
466
+ groupKey: string | undefined,
467
+ top: number,
468
+ bottom: number,
469
+ left: number,
470
+ right: number
471
+ ):
472
+ | undefined
473
+ | {
474
+ top: number;
475
+ left: number;
476
+ width: number;
477
+ height: number;
478
+ scale: number;
479
+ } {
480
+ const rows = this.rows(groupKey);
481
+ const topRow = rows?.item(top);
482
+ const bottomRow = rows?.item(bottom);
483
+ if (!topRow || !bottomRow) {
484
+ return;
485
+ }
486
+ const topCells = topRow.querySelectorAll('dv-table-view-cell-container');
487
+ const leftCell = topCells.item(left);
488
+ const rightCell = topCells.item(right);
489
+ if (!leftCell || !rightCell) {
490
+ return;
491
+ }
492
+ const leftRect = leftCell.getBoundingClientRect();
493
+ const scale = leftRect.width / leftCell.column.width$.value;
494
+ return {
495
+ top: leftRect.top / scale,
496
+ left: leftRect.left / scale,
497
+ width: (rightCell.getBoundingClientRect().right - leftRect.left) / scale,
498
+ height: (bottomRow.getBoundingClientRect().bottom - leftRect.top) / scale,
499
+ scale,
500
+ };
501
+ }
502
+
503
+ getRow(groupKey: string | undefined, rowId: string) {
504
+ return this.getGroup(groupKey)?.querySelector(
505
+ `data-view-table-row[data-row-id='${rowId}']`
506
+ );
507
+ }
508
+
509
+ getSelectionAreaBorder(position: 'left' | 'right' | 'top' | 'bottom') {
510
+ return this.__selectionElement.selectionRef.value?.querySelector(
511
+ `.area-border.area-${position}`
512
+ );
513
+ }
514
+
515
+ hostConnected() {
516
+ requestAnimationFrame(() => {
517
+ this.tableContainer?.append(this.__selectionElement);
518
+ this.tableContainer?.append(this.__dragToFillElement);
519
+ });
520
+ this.handleDragEvent();
521
+ this.handleSelectionChange();
522
+ }
523
+
524
+ insertRowAfter(groupKey: string | undefined, rowId: string) {
525
+ this.insertTo(groupKey, rowId, false);
526
+ }
527
+
528
+ insertRowBefore(groupKey: string | undefined, rowId: string) {
529
+ this.insertTo(groupKey, rowId, true);
530
+ }
531
+
532
+ isRowSelection() {
533
+ return this.selection?.selectionType === 'row';
534
+ }
535
+
536
+ isValidSelection(selection?: TableViewSelectionWithType): boolean {
537
+ if (!selection || selection.selectionType === 'row') {
538
+ return true;
539
+ }
540
+ if (selection.focus.rowIndex > this.view.rows$.value.length - 1) {
541
+ this.selection = undefined;
542
+ return false;
543
+ }
544
+ if (selection.focus.columnIndex > this.view.propertyIds$.value.length - 1) {
545
+ this.selection = undefined;
546
+ return false;
547
+ }
548
+ return true;
549
+ }
550
+
551
+ navigateRowSelection(direction: 'up' | 'down', append = false) {
552
+ if (!TableViewRowSelection.is(this.selection)) return;
553
+ const rows = this.selection.rows;
554
+ const lastRow = rows[rows.length - 1];
555
+ if (!lastRow) return;
556
+ const lastRowIndex =
557
+ (
558
+ this.getGroup(lastRow?.groupKey)?.querySelector(
559
+ `data-view-table-row[data-row-id='${lastRow?.id}']`
560
+ ) as TableRowView | null
561
+ )?.rowIndex ?? 0;
562
+ const getRowByIndex = (index: number) => {
563
+ const tableRow = this.rows(lastRow?.groupKey)?.item(index);
564
+ if (!tableRow) {
565
+ return;
566
+ }
567
+ return {
568
+ id: tableRow.rowId,
569
+ groupKey: lastRow?.groupKey,
570
+ };
571
+ };
572
+ const prevRow = getRowByIndex(lastRowIndex - 1);
573
+ const nextRow = getRowByIndex(lastRowIndex + 1);
574
+ const includes = (row: RowWithGroup) => {
575
+ if (!row) {
576
+ return false;
577
+ }
578
+ return rows.some(r => RowWithGroup.equal(r, row));
579
+ };
580
+ if (append) {
581
+ const addList: RowWithGroup[] = [];
582
+ const removeList: RowWithGroup[] = [];
583
+ if (direction === 'up' && prevRow != null) {
584
+ if (includes(prevRow)) {
585
+ removeList.push(lastRow);
586
+ } else {
587
+ addList.push(prevRow);
588
+ }
589
+ }
590
+ if (direction === 'down' && nextRow != null) {
591
+ if (includes(nextRow)) {
592
+ removeList.push(lastRow);
593
+ } else {
594
+ addList.push(nextRow);
595
+ }
596
+ }
597
+ this.rowSelectionChange({ add: addList, remove: removeList });
598
+ } else {
599
+ const target = direction === 'up' ? prevRow : nextRow;
600
+ if (target != null) {
601
+ this.selection = TableViewRowSelection.create({
602
+ rows: [target],
603
+ });
604
+ }
605
+ }
606
+ }
607
+
608
+ rows(groupKey: string | undefined) {
609
+ const container =
610
+ groupKey != null
611
+ ? this.tableContainer?.querySelector(
612
+ `affine-data-view-table-group[data-group-key="${groupKey}"]`
613
+ )
614
+ : this.tableContainer;
615
+ return container?.querySelectorAll('data-view-table-row');
616
+ }
617
+
618
+ rowSelectionChange({
619
+ add,
620
+ remove,
621
+ }: {
622
+ add: RowWithGroup[];
623
+ remove: RowWithGroup[];
624
+ }) {
625
+ const key = (r: RowWithGroup) => `${r.id}.${r.groupKey ? r.groupKey : ''}`;
626
+ const rows = new Set(
627
+ TableViewRowSelection.rows(this.selection).map(r => key(r))
628
+ );
629
+ remove.forEach(row => rows.delete(key(row)));
630
+ add.forEach(row => rows.add(key(row)));
631
+ const result = [...rows]
632
+ .map(r => r.split('.'))
633
+ .flatMap(([id, groupKey]) => {
634
+ if (id == null) return [];
635
+ return [
636
+ {
637
+ id,
638
+ groupKey: groupKey ? groupKey : undefined,
639
+ },
640
+ ];
641
+ });
642
+ this.selection = TableViewRowSelection.create({
643
+ rows: result,
644
+ });
645
+ }
646
+
647
+ rowsToArea(rows: string[]):
648
+ | {
649
+ start: number;
650
+ end: number;
651
+ groupKey?: string;
652
+ }
653
+ | undefined {
654
+ let groupKey: string | undefined = undefined;
655
+ let minIndex: number | undefined = undefined;
656
+ let maxIndex: number | undefined = undefined;
657
+ const set = new Set(rows);
658
+ if (!this.tableContainer) return;
659
+ for (const row of this.tableContainer
660
+ ?.querySelectorAll('data-view-table-row')
661
+ .values() ?? []) {
662
+ if (!set.has(row.rowId)) {
663
+ continue;
664
+ }
665
+ minIndex =
666
+ minIndex != null ? Math.min(minIndex, row.rowIndex) : row.rowIndex;
667
+ maxIndex =
668
+ maxIndex != null ? Math.max(maxIndex, row.rowIndex) : row.rowIndex;
669
+ if (groupKey == null) {
670
+ groupKey = row.groupKey;
671
+ } else if (groupKey !== row.groupKey) {
672
+ return;
673
+ }
674
+ }
675
+ if (minIndex == null || maxIndex == null) {
676
+ return;
677
+ }
678
+ return {
679
+ groupKey,
680
+ start: minIndex,
681
+ end: maxIndex,
682
+ };
683
+ }
684
+
685
+ selectionAreaDown() {
686
+ const selection = this.selection;
687
+ if (!selection || selection.selectionType !== 'area') {
688
+ return;
689
+ }
690
+ const newSelection = this.focusToArea(selection);
691
+ if (newSelection.rowsSelection.start === newSelection.focus.rowIndex) {
692
+ newSelection.rowsSelection.end = Math.min(
693
+ (this.rows(newSelection.groupKey)?.length ?? 0) - 1,
694
+ newSelection.rowsSelection.end + 1
695
+ );
696
+ requestAnimationFrame(() => {
697
+ this.getSelectionAreaBorder('bottom')?.scrollIntoView({
698
+ block: 'nearest',
699
+ inline: 'nearest',
700
+ behavior: 'smooth',
701
+ });
702
+ });
703
+ } else {
704
+ newSelection.rowsSelection.start += 1;
705
+ requestAnimationFrame(() => {
706
+ this.getSelectionAreaBorder('top')?.scrollIntoView({
707
+ block: 'nearest',
708
+ inline: 'nearest',
709
+ behavior: 'smooth',
710
+ });
711
+ });
712
+ }
713
+ this.selection = newSelection;
714
+ }
715
+
716
+ selectionAreaLeft() {
717
+ const selection = this.selection;
718
+ if (!selection || selection.selectionType !== 'area') {
719
+ return;
720
+ }
721
+ const newSelection = this.focusToArea(selection);
722
+ if (newSelection.columnsSelection.end === newSelection.focus.columnIndex) {
723
+ newSelection.columnsSelection.start = Math.max(
724
+ 0,
725
+ newSelection.columnsSelection.start - 1
726
+ );
727
+ requestAnimationFrame(() => {
728
+ this.getSelectionAreaBorder('left')?.scrollIntoView({
729
+ block: 'nearest',
730
+ inline: 'nearest',
731
+ behavior: 'smooth',
732
+ });
733
+ });
734
+ } else {
735
+ newSelection.columnsSelection.end -= 1;
736
+ requestAnimationFrame(() => {
737
+ this.getSelectionAreaBorder('right')?.scrollIntoView({
738
+ block: 'nearest',
739
+ inline: 'nearest',
740
+ behavior: 'smooth',
741
+ });
742
+ });
743
+ }
744
+ this.selection = newSelection;
745
+ }
746
+
747
+ selectionAreaRight() {
748
+ const selection = this.selection;
749
+ if (!selection || selection.selectionType !== 'area') {
750
+ return;
751
+ }
752
+ const newSelection = this.focusToArea(selection);
753
+ if (
754
+ newSelection.columnsSelection.start === newSelection.focus.columnIndex
755
+ ) {
756
+ const max =
757
+ (this.rows(newSelection.groupKey)
758
+ ?.item(0)
759
+ .querySelectorAll('dv-table-view-cell-container').length ?? 0) - 1;
760
+ newSelection.columnsSelection.end = Math.min(
761
+ max,
762
+ newSelection.columnsSelection.end + 1
763
+ );
764
+ requestAnimationFrame(() => {
765
+ this.getSelectionAreaBorder('right')?.scrollIntoView({
766
+ block: 'nearest',
767
+ inline: 'nearest',
768
+ behavior: 'smooth',
769
+ });
770
+ });
771
+ } else {
772
+ newSelection.columnsSelection.start += 1;
773
+ requestAnimationFrame(() => {
774
+ this.getSelectionAreaBorder('left')?.scrollIntoView({
775
+ block: 'nearest',
776
+ inline: 'nearest',
777
+ behavior: 'smooth',
778
+ });
779
+ });
780
+ }
781
+ this.selection = newSelection;
782
+ }
783
+
784
+ selectionAreaUp() {
785
+ const selection = this.selection;
786
+ if (!selection || selection.selectionType !== 'area') {
787
+ return;
788
+ }
789
+ const newSelection = this.focusToArea(selection);
790
+ if (newSelection.rowsSelection.end === newSelection.focus.rowIndex) {
791
+ newSelection.rowsSelection.start = Math.max(
792
+ 0,
793
+ newSelection.rowsSelection.start - 1
794
+ );
795
+ requestAnimationFrame(() => {
796
+ this.getSelectionAreaBorder('top')?.scrollIntoView({
797
+ block: 'nearest',
798
+ inline: 'nearest',
799
+ behavior: 'smooth',
800
+ });
801
+ });
802
+ } else {
803
+ newSelection.rowsSelection.end -= 1;
804
+ requestAnimationFrame(() => {
805
+ this.getSelectionAreaBorder('bottom')?.scrollIntoView({
806
+ block: 'nearest',
807
+ inline: 'nearest',
808
+ behavior: 'smooth',
809
+ });
810
+ });
811
+ }
812
+ this.selection = newSelection;
813
+ }
814
+
815
+ startDrag(
816
+ evt: PointerEvent,
817
+ cell: TableViewCellContainer,
818
+ fillValues?: boolean
819
+ ) {
820
+ const groupKey = cell.closest<TableGroup>('affine-data-view-table-group')
821
+ ?.group?.key;
822
+ const table = this.tableContainer;
823
+ const scrollContainer = table?.parentElement;
824
+ if (!table || !scrollContainer) {
825
+ return;
826
+ }
827
+ const tableRect = table.getBoundingClientRect();
828
+ const startOffsetX = evt.x - tableRect.left;
829
+ const startOffsetY = evt.y - tableRect.top;
830
+ const offsetToSelection = this.cellPosition(groupKey);
831
+ const select = (selection: {
832
+ row: MultiSelection;
833
+ column: MultiSelection;
834
+ }) => {
835
+ this.selection = TableViewAreaSelection.create({
836
+ groupKey: groupKey,
837
+ rowsSelection: selection.row,
838
+ columnsSelection: selection.column,
839
+ focus: {
840
+ rowIndex: cell.rowIndex,
841
+ columnIndex: cell.columnIndex,
842
+ },
843
+ isEditing: false,
844
+ });
845
+ };
846
+ const drag = startDrag<
847
+ | {
848
+ row: MultiSelection;
849
+ column: MultiSelection;
850
+ }
851
+ | undefined,
852
+ {
853
+ x: number;
854
+ y: number;
855
+ }
856
+ >(evt, {
857
+ transform: evt => ({
858
+ x: evt.x,
859
+ y: evt.y,
860
+ }),
861
+ onDrag: () => {
862
+ if (fillValues) this.__dragToFillElement.dragging = true;
863
+ return undefined;
864
+ },
865
+ onMove: ({ x, y }) => {
866
+ if (!table) return;
867
+ const tableRect = table.getBoundingClientRect();
868
+ const startX = tableRect.left + startOffsetX;
869
+ const startY = tableRect.top + startOffsetY;
870
+ const selection = offsetToSelection(startX, x, startY, y);
871
+
872
+ if (fillValues)
873
+ selection.column = {
874
+ start: cell.columnIndex,
875
+ end: cell.columnIndex,
876
+ };
877
+
878
+ select(selection);
879
+ return selection;
880
+ },
881
+ onDrop: selection => {
882
+ if (!selection) {
883
+ return;
884
+ }
885
+ select(selection);
886
+ if (fillValues && this.selection) {
887
+ this.__dragToFillElement.dragging = false;
888
+ fillSelectionWithFocusCellData(
889
+ this.logic,
890
+ TableViewAreaSelection.create({
891
+ groupKey: groupKey,
892
+ rowsSelection: selection.row,
893
+ columnsSelection: selection.column,
894
+ focus: {
895
+ rowIndex: cell.rowIndex,
896
+ columnIndex: cell.columnIndex,
897
+ },
898
+ isEditing: false,
899
+ })
900
+ );
901
+ }
902
+ },
903
+ onClear: () => {
904
+ cancelScroll();
905
+ },
906
+ });
907
+ const cancelScroll = autoScrollOnBoundary(
908
+ scrollContainer,
909
+ computed(() => {
910
+ return {
911
+ left: drag.mousePosition.value.x,
912
+ right: drag.mousePosition.value.x,
913
+ top: drag.mousePosition.value.y,
914
+ bottom: drag.mousePosition.value.y,
915
+ };
916
+ }),
917
+ {
918
+ onScroll() {
919
+ drag.move({ x: drag.last.x, y: drag.last.y });
920
+ },
921
+ }
922
+ );
923
+ }
924
+
925
+ toggleRow(rowId: string, groupKey?: string) {
926
+ const row = {
927
+ id: rowId,
928
+ groupKey,
929
+ };
930
+ const isSelected = TableViewRowSelection.includes(this.selection, row);
931
+ this.rowSelectionChange({
932
+ add: isSelected ? [] : [row],
933
+ remove: isSelected ? [row] : [],
934
+ });
935
+ }
936
+ }
937
+
938
+ export class SelectionElement extends WithDisposable(ShadowlessElement) {
939
+ static override styles = css`
940
+ .database-selection {
941
+ position: absolute;
942
+ z-index: 2;
943
+ box-sizing: border-box;
944
+ background: var(--affine-primary-color-04);
945
+ pointer-events: none;
946
+ display: none;
947
+ }
948
+
949
+ .database-focus {
950
+ position: absolute;
951
+ width: 100%;
952
+ z-index: 2;
953
+ box-sizing: border-box;
954
+ border: 1px solid var(--affine-primary-color);
955
+ border-radius: 2px;
956
+ pointer-events: none;
957
+ display: none;
958
+ outline: none;
959
+ }
960
+
961
+ .area-border {
962
+ position: absolute;
963
+ pointer-events: none;
964
+ }
965
+
966
+ .area-left {
967
+ left: 0;
968
+ height: 100%;
969
+ width: 1px;
970
+ }
971
+
972
+ .area-right {
973
+ right: 0;
974
+ height: 100%;
975
+ width: 1px;
976
+ }
977
+
978
+ .area-top {
979
+ top: 0;
980
+ width: 100%;
981
+ height: 1px;
982
+ }
983
+
984
+ .area-bottom {
985
+ bottom: 0;
986
+ width: 100%;
987
+ height: 1px;
988
+ }
989
+
990
+ @media print {
991
+ data-view-table-selection {
992
+ display: none;
993
+ }
994
+ }
995
+ `;
996
+
997
+ focusRef: Ref<HTMLDivElement> = createRef<HTMLDivElement>();
998
+
999
+ preTask = 0;
1000
+
1001
+ selectionRef: Ref<HTMLDivElement> = createRef<HTMLDivElement>();
1002
+
1003
+ get selection$() {
1004
+ return this.controller.logic.selection$;
1005
+ }
1006
+
1007
+ clearAreaStyle() {
1008
+ const div = this.selectionRef.value;
1009
+ if (!div) return;
1010
+ div.style.display = 'none';
1011
+ }
1012
+
1013
+ clearFocusStyle() {
1014
+ const div = this.focusRef.value;
1015
+ const dragToFill = this.controller.dragToFillDraggable;
1016
+ if (!div || !dragToFill) return;
1017
+ div.style.display = 'none';
1018
+ dragToFill.style.display = 'none';
1019
+ }
1020
+
1021
+ override connectedCallback() {
1022
+ super.connectedCallback();
1023
+ this.disposables.add(
1024
+ effect(() => {
1025
+ this.startUpdate(this.selection$.value);
1026
+ return () => {
1027
+ this.cancelSelectionUpdate();
1028
+ };
1029
+ })
1030
+ );
1031
+ }
1032
+
1033
+ override render() {
1034
+ return html`
1035
+ <div ${ref(this.selectionRef)} class="database-selection">
1036
+ <div class="area-border area-left"></div>
1037
+ <div class="area-border area-right"></div>
1038
+ <div class="area-border area-top"></div>
1039
+ <div class="area-border area-bottom"></div>
1040
+ </div>
1041
+ <div tabindex="0" ${ref(this.focusRef)} class="database-focus"></div>
1042
+ `;
1043
+ }
1044
+
1045
+ cancelSelectionUpdate() {
1046
+ if (this.preTask) {
1047
+ cancelAnimationFrame(this.preTask);
1048
+ this.preTask = 0;
1049
+ }
1050
+ }
1051
+
1052
+ startUpdate(selection?: TableViewSelection) {
1053
+ this.cancelSelectionUpdate();
1054
+ if (
1055
+ selection?.selectionType === 'area' &&
1056
+ !this.controller.logic.view.readonly$.value
1057
+ ) {
1058
+ this.updateAreaSelectionStyle(
1059
+ selection.groupKey,
1060
+ selection.rowsSelection,
1061
+ selection.columnsSelection
1062
+ );
1063
+
1064
+ const columnSelection = selection.columnsSelection;
1065
+ const rowSelection = selection.rowsSelection;
1066
+
1067
+ const isSingleRowSelection = rowSelection.end - rowSelection.start === 0;
1068
+ const isSingleColumnSelection =
1069
+ columnSelection.end - columnSelection.start === 0;
1070
+
1071
+ const isDragElemDragging = this.controller.__dragToFillElement.dragging;
1072
+ const isEditing = selection.isEditing;
1073
+
1074
+ const showDragToFillHandle =
1075
+ !isEditing &&
1076
+ (isDragElemDragging || isSingleRowSelection) &&
1077
+ isSingleColumnSelection;
1078
+
1079
+ this.updateFocusSelectionStyle(
1080
+ selection.groupKey,
1081
+ selection.focus,
1082
+ isEditing,
1083
+ showDragToFillHandle
1084
+ );
1085
+ this.preTask = requestAnimationFrame(() =>
1086
+ this.startUpdate(this.selection$.value)
1087
+ );
1088
+ } else {
1089
+ this.clearFocusStyle();
1090
+ this.clearAreaStyle();
1091
+ }
1092
+ }
1093
+
1094
+ updateAreaSelectionStyle(
1095
+ groupKey: string | undefined,
1096
+ rowSelection: MultiSelection,
1097
+ columnSelection: MultiSelection
1098
+ ) {
1099
+ const div = this.selectionRef.value;
1100
+ if (!div) return;
1101
+ const tableContainer = this.controller.tableContainer;
1102
+ if (!tableContainer) return;
1103
+ const tableRect = tableContainer.getBoundingClientRect();
1104
+ const rect = this.controller.getRect(
1105
+ groupKey,
1106
+ rowSelection?.start ?? 0,
1107
+ rowSelection?.end ?? this.controller.view.rows$.value.length - 1,
1108
+ columnSelection?.start ?? 0,
1109
+ columnSelection?.end ?? this.controller.view.properties$.value.length - 1
1110
+ );
1111
+ if (!rect) {
1112
+ this.clearAreaStyle();
1113
+ return;
1114
+ }
1115
+ const { left, top, width, height, scale } = rect;
1116
+ div.style.left = `${left - tableRect.left / scale}px`;
1117
+ div.style.top = `${top - tableRect.top / scale}px`;
1118
+ div.style.width = `${width}px`;
1119
+ div.style.height = `${height}px`;
1120
+ div.style.display = 'block';
1121
+ }
1122
+
1123
+ updateFocusSelectionStyle(
1124
+ groupKey: string | undefined,
1125
+ focus: CellFocus,
1126
+ isEditing: boolean,
1127
+ showDragToFillHandle = false
1128
+ ) {
1129
+ const div = this.focusRef.value;
1130
+ const dragToFill = this.controller.dragToFillDraggable;
1131
+ if (!div || !dragToFill) return;
1132
+ // Check if row is removed.
1133
+ const rows = this.controller.rows(groupKey) ?? [];
1134
+ if (rows.length <= focus.rowIndex) return;
1135
+
1136
+ const rect = this.controller.getRect(
1137
+ groupKey,
1138
+ focus.rowIndex,
1139
+ focus.rowIndex,
1140
+ focus.columnIndex,
1141
+ focus.columnIndex
1142
+ );
1143
+ if (!rect) {
1144
+ this.clearFocusStyle();
1145
+ return;
1146
+ }
1147
+ const { left, top, width, height, scale } = rect;
1148
+ const tableContainer = this.controller.tableContainer;
1149
+ if (!tableContainer) return;
1150
+ const tableRect = tableContainer?.getBoundingClientRect();
1151
+ if (!tableRect) {
1152
+ this.clearFocusStyle();
1153
+ return;
1154
+ }
1155
+
1156
+ const x = left - tableRect.left / scale;
1157
+ const y = top - 1 - tableRect.top / scale;
1158
+ const w = width + 1;
1159
+ const h = height + 1;
1160
+ div.style.left = `${x}px`;
1161
+ div.style.top = `${y}px`;
1162
+ div.style.width = `${w}px`;
1163
+ div.style.height = `${h}px`;
1164
+ div.style.borderColor = 'var(--affine-primary-color)';
1165
+ div.style.borderStyle = this.controller.__dragToFillElement.dragging
1166
+ ? 'dashed'
1167
+ : 'solid';
1168
+ div.style.boxShadow = isEditing
1169
+ ? '0px 0px 0px 2px rgba(30, 150, 235, 0.30)'
1170
+ : 'unset';
1171
+ div.style.display = 'block';
1172
+
1173
+ dragToFill.style.left = `${x + w}px`;
1174
+ dragToFill.style.top = `${y + h}px`;
1175
+ dragToFill.style.display = showDragToFillHandle ? 'block' : 'none';
1176
+ }
1177
+
1178
+ @property({ attribute: false })
1179
+ accessor controller!: TableSelectionController;
1180
+ }