@formicoidea/labre-core 0.31.0 → 0.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (483) hide show
  1. package/dist/_pkgs/affine-block-callout/callout-block.d.ts +6 -0
  2. package/dist/_pkgs/affine-block-callout/callout-block.js +25 -3
  3. package/dist/_pkgs/affine-block-callout/callout-keymap.js +59 -19
  4. package/dist/_pkgs/affine-block-callout/commands/callout-to-paragraph.d.ts +20 -0
  5. package/dist/_pkgs/affine-block-callout/commands/callout-to-paragraph.js +60 -0
  6. package/dist/_pkgs/affine-block-callout/commands/split-callout.d.ts +17 -0
  7. package/dist/_pkgs/affine-block-callout/commands/split-callout.js +42 -0
  8. package/dist/_pkgs/affine-block-callout/configs/slash-menu.js +9 -6
  9. package/dist/_pkgs/affine-block-callout/emoji-margin.d.ts +9 -0
  10. package/dist/_pkgs/affine-block-callout/emoji-margin.js +36 -0
  11. package/dist/_pkgs/affine-block-callout/emoji-menu.d.ts +5 -1
  12. package/dist/_pkgs/affine-block-callout/emoji-menu.js +5 -0
  13. package/dist/_pkgs/affine-block-code/code-block.d.ts +14 -0
  14. package/dist/_pkgs/affine-block-code/code-block.js +44 -6
  15. package/dist/_pkgs/affine-block-code/code-toolbar/components/code-toolbar.d.ts +2 -0
  16. package/dist/_pkgs/affine-block-code/code-toolbar/components/code-toolbar.js +23 -14
  17. package/dist/_pkgs/affine-block-code/code-toolbar/components/more-menu.d.ts +16 -0
  18. package/dist/_pkgs/affine-block-code/code-toolbar/components/more-menu.js +93 -0
  19. package/dist/_pkgs/affine-block-code/code-toolbar/config.js +52 -5
  20. package/dist/_pkgs/affine-block-code/effects.d.ts +2 -0
  21. package/dist/_pkgs/affine-block-code/effects.js +2 -0
  22. package/dist/_pkgs/affine-block-code/highlight/affine-code-unit.js +6 -1
  23. package/dist/_pkgs/affine-block-code/index.d.ts +1 -0
  24. package/dist/_pkgs/affine-block-code/index.js +1 -0
  25. package/dist/_pkgs/affine-block-code/line-numbers.d.ts +25 -0
  26. package/dist/_pkgs/affine-block-code/line-numbers.js +27 -0
  27. package/dist/_pkgs/affine-block-code/styles.js +31 -0
  28. package/dist/_pkgs/affine-block-data-view/data-view-block.js +1 -0
  29. package/dist/_pkgs/affine-block-database/components/title/index.js +4 -1
  30. package/dist/_pkgs/affine-block-database/configs/slash-menu.js +28 -1
  31. package/dist/_pkgs/affine-block-database/database-block.js +13 -0
  32. package/dist/_pkgs/affine-block-database/properties/paste-url.d.ts +24 -0
  33. package/dist/_pkgs/affine-block-database/properties/paste-url.js +98 -0
  34. package/dist/_pkgs/affine-block-database/properties/rich-text/cell-renderer.js +9 -19
  35. package/dist/_pkgs/affine-block-database/properties/title/text.js +20 -25
  36. package/dist/_pkgs/affine-block-database/views/index.js +1 -0
  37. package/dist/_pkgs/affine-block-edgeless-text/edgeless-text-block.js +10 -0
  38. package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/config.d.ts +3 -0
  39. package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/config.js +48 -1
  40. package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/font-size.d.ts +17 -0
  41. package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/font-size.js +24 -0
  42. package/dist/_pkgs/affine-block-embed-doc/common/doc-trashed.d.ts +9 -0
  43. package/dist/_pkgs/affine-block-embed-doc/common/doc-trashed.js +10 -0
  44. package/dist/_pkgs/affine-block-embed-doc/embed-linked-doc-block/embed-linked-doc-block.js +8 -4
  45. package/dist/_pkgs/affine-block-embed-doc/embed-synced-doc-block/embed-synced-doc-block.d.ts +4 -0
  46. package/dist/_pkgs/affine-block-embed-doc/embed-synced-doc-block/embed-synced-doc-block.js +22 -3
  47. package/dist/_pkgs/affine-block-frame/frame-manager.d.ts +13 -0
  48. package/dist/_pkgs/affine-block-frame/frame-manager.js +32 -2
  49. package/dist/_pkgs/affine-block-latex/styles.js +6 -1
  50. package/dist/_pkgs/affine-block-note/note-edgeless-block.d.ts +9 -0
  51. package/dist/_pkgs/affine-block-note/note-edgeless-block.js +29 -1
  52. package/dist/_pkgs/affine-block-root/commands/pivot-commands.d.ts +37 -0
  53. package/dist/_pkgs/affine-block-root/commands/pivot-commands.js +168 -0
  54. package/dist/_pkgs/affine-block-root/commands/reading-commands.d.ts +23 -0
  55. package/dist/_pkgs/affine-block-root/commands/reading-commands.js +107 -0
  56. package/dist/_pkgs/affine-block-root/commands/tag-commands.d.ts +47 -0
  57. package/dist/_pkgs/affine-block-root/commands/tag-commands.js +159 -0
  58. package/dist/_pkgs/affine-block-root/configs/toolbar.d.ts +1 -0
  59. package/dist/_pkgs/affine-block-root/edgeless/configs/toolbar/more.js +9 -2
  60. package/dist/_pkgs/affine-block-root/edgeless/configs/toolbar/render-linked-doc.js +1 -1
  61. package/dist/_pkgs/affine-block-root/edgeless/edgeless-keyboard.js +26 -1
  62. package/dist/_pkgs/affine-block-root/edgeless/edgeless-root-block.js +11 -2
  63. package/dist/_pkgs/affine-block-root/edgeless/edgeless-root-service.js +14 -0
  64. package/dist/_pkgs/affine-block-root/edgeless/index.d.ts +1 -0
  65. package/dist/_pkgs/affine-block-root/edgeless/index.js +1 -0
  66. package/dist/_pkgs/affine-block-root/edgeless/reserved-keys.d.ts +21 -0
  67. package/dist/_pkgs/affine-block-root/edgeless/reserved-keys.js +34 -0
  68. package/dist/_pkgs/affine-block-root/edgeless/utils/clone-utils.d.ts +7 -1
  69. package/dist/_pkgs/affine-block-root/edgeless/utils/clone-utils.js +11 -2
  70. package/dist/_pkgs/affine-block-root/index.d.ts +4 -1
  71. package/dist/_pkgs/affine-block-root/index.js +4 -1
  72. package/dist/_pkgs/affine-block-root/keyboard/commands.d.ts +2 -0
  73. package/dist/_pkgs/affine-block-root/keyboard/commands.js +147 -0
  74. package/dist/_pkgs/affine-block-root/view.js +13 -4
  75. package/dist/_pkgs/affine-block-surface/commands/reassociate-connectors.js +0 -1
  76. package/dist/_pkgs/affine-block-surface/effects.js +6 -0
  77. package/dist/_pkgs/affine-block-surface/element-model/index.d.ts +5 -2
  78. package/dist/_pkgs/affine-block-surface/element-model/index.js +4 -2
  79. package/dist/_pkgs/affine-block-surface/extensions/audit.d.ts +107 -0
  80. package/dist/_pkgs/affine-block-surface/extensions/audit.js +472 -0
  81. package/dist/_pkgs/affine-block-surface/extensions/crud-extension.d.ts +14 -0
  82. package/dist/_pkgs/affine-block-surface/extensions/crud-extension.js +27 -0
  83. package/dist/_pkgs/affine-block-surface/extensions/editor-anchored-panel.d.ts +133 -0
  84. package/dist/_pkgs/affine-block-surface/extensions/editor-anchored-panel.js +326 -0
  85. package/dist/_pkgs/affine-block-surface/extensions/index.d.ts +13 -0
  86. package/dist/_pkgs/affine-block-surface/extensions/index.js +13 -0
  87. package/dist/_pkgs/affine-block-surface/extensions/map-quality-widget.d.ts +146 -0
  88. package/dist/_pkgs/affine-block-surface/extensions/map-quality-widget.js +528 -0
  89. package/dist/_pkgs/affine-block-surface/extensions/map-quality.d.ts +109 -0
  90. package/dist/_pkgs/affine-block-surface/extensions/map-quality.js +84 -0
  91. package/dist/_pkgs/affine-block-surface/extensions/reading-toolbar.d.ts +15 -0
  92. package/dist/_pkgs/affine-block-surface/extensions/reading-toolbar.js +158 -0
  93. package/dist/_pkgs/affine-block-surface/extensions/reading-widget.d.ts +145 -0
  94. package/dist/_pkgs/affine-block-surface/extensions/reading-widget.js +590 -0
  95. package/dist/_pkgs/affine-block-surface/extensions/reading.d.ts +494 -0
  96. package/dist/_pkgs/affine-block-surface/extensions/reading.js +767 -0
  97. package/dist/_pkgs/affine-block-surface/extensions/spotlight.d.ts +45 -0
  98. package/dist/_pkgs/affine-block-surface/extensions/spotlight.js +177 -0
  99. package/dist/_pkgs/affine-block-surface/extensions/tags-toolbar.d.ts +10 -0
  100. package/dist/_pkgs/affine-block-surface/extensions/tags-toolbar.js +295 -0
  101. package/dist/_pkgs/affine-block-surface/extensions/validation-toolbar.d.ts +27 -0
  102. package/dist/_pkgs/affine-block-surface/extensions/validation-toolbar.js +361 -0
  103. package/dist/_pkgs/affine-block-surface/extensions/validation.d.ts +1340 -0
  104. package/dist/_pkgs/affine-block-surface/extensions/validation.js +3009 -0
  105. package/dist/_pkgs/affine-block-surface/extensions/violation-detail-widget.d.ts +286 -0
  106. package/dist/_pkgs/affine-block-surface/extensions/violation-detail-widget.js +907 -0
  107. package/dist/_pkgs/affine-block-surface/extensions/violation-timeline.d.ts +80 -0
  108. package/dist/_pkgs/affine-block-surface/extensions/violation-timeline.js +123 -0
  109. package/dist/_pkgs/affine-block-surface/framework-background/def.d.ts +321 -0
  110. package/dist/_pkgs/affine-block-surface/framework-background/def.js +81 -0
  111. package/dist/_pkgs/affine-block-surface/framework-background/facts.d.ts +188 -0
  112. package/dist/_pkgs/affine-block-surface/framework-background/facts.js +284 -0
  113. package/dist/_pkgs/affine-block-surface/framework-background/index.d.ts +5 -0
  114. package/dist/_pkgs/affine-block-surface/framework-background/index.js +5 -0
  115. package/dist/_pkgs/affine-block-surface/framework-background/interaction.d.ts +12 -0
  116. package/dist/_pkgs/affine-block-surface/framework-background/interaction.js +24 -0
  117. package/dist/_pkgs/affine-block-surface/framework-background/labels.d.ts +59 -0
  118. package/dist/_pkgs/affine-block-surface/framework-background/labels.js +117 -0
  119. package/dist/_pkgs/affine-block-surface/framework-background/renderer.d.ts +8 -0
  120. package/dist/_pkgs/affine-block-surface/framework-background/renderer.js +238 -0
  121. package/dist/_pkgs/affine-block-surface/index.d.ts +1 -0
  122. package/dist/_pkgs/affine-block-surface/index.js +1 -0
  123. package/dist/_pkgs/affine-block-surface/renderer/canvas-renderer.d.ts +69 -3
  124. package/dist/_pkgs/affine-block-surface/renderer/canvas-renderer.js +333 -44
  125. package/dist/_pkgs/affine-block-surface/renderer/dom-renderer.js +18 -2
  126. package/dist/_pkgs/affine-block-surface/tool/default-tool.js +8 -0
  127. package/dist/_pkgs/affine-block-surface/utils/font.js +9 -3
  128. package/dist/_pkgs/affine-block-surface/view.d.ts +17 -0
  129. package/dist/_pkgs/affine-block-surface/view.js +57 -2
  130. package/dist/_pkgs/affine-block-table/selection-controller.d.ts +6 -0
  131. package/dist/_pkgs/affine-block-table/selection-controller.js +24 -1
  132. package/dist/_pkgs/affine-block-table/table-block.js +8 -2
  133. package/dist/_pkgs/affine-block-table/table-cell.js +5 -6
  134. package/dist/_pkgs/affine-block-table/table-keymap.d.ts +18 -0
  135. package/dist/_pkgs/affine-block-table/table-keymap.js +41 -0
  136. package/dist/_pkgs/affine-block-table/utils.d.ts +7 -0
  137. package/dist/_pkgs/affine-block-table/utils.js +12 -0
  138. package/dist/_pkgs/affine-block-table/view.js +2 -0
  139. package/dist/_pkgs/affine-components/caption/captioned-block-component.js +2 -1
  140. package/dist/_pkgs/affine-components/context-menu/button.d.ts +7 -0
  141. package/dist/_pkgs/affine-components/context-menu/button.js +7 -2
  142. package/dist/_pkgs/affine-components/context-menu/input.d.ts +4 -0
  143. package/dist/_pkgs/affine-components/context-menu/input.js +12 -0
  144. package/dist/_pkgs/affine-components/context-menu/menu-all.d.ts +2 -0
  145. package/dist/_pkgs/affine-components/context-menu/menu-renderer.js +8 -1
  146. package/dist/_pkgs/affine-components/context-menu/sub-menu.js +3 -0
  147. package/dist/_pkgs/affine-components/highlight-dropdown-menu/highlight-duotone-icon.js +8 -8
  148. package/dist/_pkgs/affine-components/highlight-dropdown-menu/text-duotone-icon.js +11 -11
  149. package/dist/_pkgs/affine-components/icon-picker/affine-icon-picker-panel.d.ts +28 -0
  150. package/dist/_pkgs/affine-components/icon-picker/affine-icon-picker-panel.js +231 -0
  151. package/dist/_pkgs/affine-components/icon-picker/emoji-data.d.ts +40 -0
  152. package/dist/_pkgs/affine-components/icon-picker/emoji-data.js +99 -0
  153. package/dist/_pkgs/affine-components/icon-picker/emoji-picker-panel.d.ts +32 -0
  154. package/dist/_pkgs/affine-components/icon-picker/emoji-picker-panel.js +276 -0
  155. package/dist/_pkgs/affine-components/icon-picker/icon-data.d.ts +34 -0
  156. package/dist/_pkgs/affine-components/icon-picker/icon-data.js +83 -0
  157. package/dist/_pkgs/affine-components/icon-picker/icon-picker.d.ts +39 -0
  158. package/dist/_pkgs/affine-components/icon-picker/icon-picker.js +233 -0
  159. package/dist/_pkgs/affine-components/icon-picker/index.d.ts +8 -0
  160. package/dist/_pkgs/affine-components/icon-picker/index.js +15 -0
  161. package/dist/_pkgs/affine-components/icon-picker/recent-store.d.ts +8 -0
  162. package/dist/_pkgs/affine-components/icon-picker/recent-store.js +41 -0
  163. package/dist/_pkgs/affine-components/icon-picker/styles.d.ts +5 -0
  164. package/dist/_pkgs/affine-components/icon-picker/styles.js +166 -0
  165. package/dist/_pkgs/affine-components/icon-picker/types.d.ts +22 -0
  166. package/dist/_pkgs/affine-components/icon-picker/types.js +10 -0
  167. package/dist/_pkgs/affine-components/icons/text.js +426 -426
  168. package/dist/_pkgs/affine-components/open-doc-dropdown-menu/dropdown-menu.d.ts +1 -0
  169. package/dist/_pkgs/affine-components/portal/portal.d.ts +1 -1
  170. package/dist/_pkgs/affine-components/toolbar/menu-button.js +1 -0
  171. package/dist/_pkgs/affine-components/toolbar/toolbar.js +11 -10
  172. package/dist/_pkgs/affine-foundation/view.js +11 -2
  173. package/dist/_pkgs/affine-gfx-brush/index.d.ts +1 -0
  174. package/dist/_pkgs/affine-gfx-brush/index.js +1 -0
  175. package/dist/_pkgs/affine-gfx-brush/renderer/dom/brush.d.ts +1 -0
  176. package/dist/_pkgs/affine-gfx-brush/renderer/dom/brush.js +11 -0
  177. package/dist/_pkgs/affine-gfx-brush/renderer/dom/highlighter.d.ts +1 -0
  178. package/dist/_pkgs/affine-gfx-brush/renderer/dom/highlighter.js +11 -0
  179. package/dist/_pkgs/affine-gfx-brush/renderer/dom/index.d.ts +2 -0
  180. package/dist/_pkgs/affine-gfx-brush/renderer/dom/index.js +2 -0
  181. package/dist/_pkgs/affine-gfx-brush/renderer/dom/shared.d.ts +14 -0
  182. package/dist/_pkgs/affine-gfx-brush/renderer/dom/shared.js +54 -0
  183. package/dist/_pkgs/affine-gfx-brush/renderer/index.d.ts +1 -0
  184. package/dist/_pkgs/affine-gfx-brush/renderer/index.js +4 -0
  185. package/dist/_pkgs/affine-gfx-brush/view.d.ts +14 -0
  186. package/dist/_pkgs/affine-gfx-brush/view.js +29 -3
  187. package/dist/_pkgs/affine-gfx-connector/connector-manager.js +32 -6
  188. package/dist/_pkgs/affine-gfx-connector/connector-tool.d.ts +7 -0
  189. package/dist/_pkgs/affine-gfx-connector/connector-tool.js +2 -1
  190. package/dist/_pkgs/affine-gfx-connector/direction/direction-reveal.d.ts +123 -0
  191. package/dist/_pkgs/affine-gfx-connector/direction/direction-reveal.js +281 -0
  192. package/dist/_pkgs/affine-gfx-connector/direction/direction-widget.d.ts +65 -0
  193. package/dist/_pkgs/affine-gfx-connector/direction/direction-widget.js +395 -0
  194. package/dist/_pkgs/affine-gfx-connector/direction/index.d.ts +4 -0
  195. package/dist/_pkgs/affine-gfx-connector/direction/index.js +4 -0
  196. package/dist/_pkgs/affine-gfx-connector/direction/invert-direction.d.ts +72 -0
  197. package/dist/_pkgs/affine-gfx-connector/direction/invert-direction.js +187 -0
  198. package/dist/_pkgs/affine-gfx-connector/direction/typed-edge.d.ts +69 -0
  199. package/dist/_pkgs/affine-gfx-connector/direction/typed-edge.js +66 -0
  200. package/dist/_pkgs/affine-gfx-connector/effects.d.ts +2 -0
  201. package/dist/_pkgs/affine-gfx-connector/effects.js +2 -0
  202. package/dist/_pkgs/affine-gfx-connector/element-renderer/connector-dom/index.js +78 -41
  203. package/dist/_pkgs/affine-gfx-connector/index.d.ts +1 -0
  204. package/dist/_pkgs/affine-gfx-connector/index.js +1 -0
  205. package/dist/_pkgs/affine-gfx-connector/toolbar/config.d.ts +50 -0
  206. package/dist/_pkgs/affine-gfx-connector/toolbar/config.js +67 -1
  207. package/dist/_pkgs/affine-gfx-connector/view.js +16 -0
  208. package/dist/_pkgs/affine-gfx-group/command/group-api.js +150 -62
  209. package/dist/_pkgs/affine-gfx-group/text/edgeless-group-title-editor.js +4 -1
  210. package/dist/_pkgs/affine-gfx-pointer/tools/pan-tool.d.ts +16 -0
  211. package/dist/_pkgs/affine-gfx-pointer/tools/pan-tool.js +102 -32
  212. package/dist/_pkgs/affine-gfx-shape/commands.d.ts +2 -0
  213. package/dist/_pkgs/affine-gfx-shape/commands.js +33 -0
  214. package/dist/_pkgs/affine-gfx-shape/element-renderer/shape-dom/index.js +48 -19
  215. package/dist/_pkgs/affine-gfx-shape/index.d.ts +1 -1
  216. package/dist/_pkgs/affine-gfx-shape/index.js +1 -1
  217. package/dist/_pkgs/affine-gfx-shape/text/edgeless-shape-text-editor.d.ts +26 -0
  218. package/dist/_pkgs/affine-gfx-shape/text/edgeless-shape-text-editor.js +124 -13
  219. package/dist/_pkgs/affine-gfx-shape/view.js +3 -3
  220. package/dist/_pkgs/affine-gfx-template/toolbar/template-tool-button.d.ts +2 -0
  221. package/dist/_pkgs/affine-gfx-template/toolbar/template-tool-button.js +18 -1
  222. package/dist/_pkgs/affine-gfx-text/edgeless-text-editor.js +9 -5
  223. package/dist/_pkgs/affine-inline-latex/command.js +46 -26
  224. package/dist/_pkgs/affine-inline-latex/latex-node/latex-node.d.ts +10 -0
  225. package/dist/_pkgs/affine-inline-latex/latex-node/latex-node.js +23 -0
  226. package/dist/_pkgs/affine-inline-link/link-node/affine-link.js +4 -1
  227. package/dist/_pkgs/affine-inline-preset/adapters/html/html-inline.d.ts +3 -0
  228. package/dist/_pkgs/affine-inline-preset/adapters/html/html-inline.js +29 -1
  229. package/dist/_pkgs/affine-model/blocks/code/code-model.d.ts +1 -0
  230. package/dist/_pkgs/affine-model/blocks/code/code-model.js +1 -0
  231. package/dist/_pkgs/affine-model/elements/connector/connector.js +24 -0
  232. package/dist/_pkgs/affine-model/elements/edgy/board.d.ts +32 -0
  233. package/dist/_pkgs/affine-model/elements/edgy/board.js +112 -0
  234. package/dist/_pkgs/affine-model/elements/edgy/facets.d.ts +12 -0
  235. package/dist/_pkgs/affine-model/elements/edgy/facets.js +25 -1
  236. package/dist/_pkgs/affine-model/elements/edgy/index.d.ts +1 -0
  237. package/dist/_pkgs/affine-model/elements/edgy/index.js +1 -0
  238. package/dist/_pkgs/affine-model/elements/framework-background/background.d.ts +42 -0
  239. package/dist/_pkgs/affine-model/elements/framework-background/background.js +42 -0
  240. package/dist/_pkgs/affine-model/elements/framework-background/index.d.ts +1 -0
  241. package/dist/_pkgs/affine-model/elements/framework-background/index.js +1 -0
  242. package/dist/_pkgs/affine-model/elements/index.d.ts +3 -1
  243. package/dist/_pkgs/affine-model/elements/index.js +1 -0
  244. package/dist/_pkgs/affine-model/elements/mindmap/mindmap.js +8 -3
  245. package/dist/_pkgs/affine-model/elements/mindmap/style.d.ts +10 -0
  246. package/dist/_pkgs/affine-model/elements/mindmap/style.js +8 -0
  247. package/dist/_pkgs/affine-model/elements/wardley/wardley.d.ts +21 -29
  248. package/dist/_pkgs/affine-model/elements/wardley/wardley.js +41 -48
  249. package/dist/_pkgs/affine-shared/adapters/markdown/delta-converter.d.ts +6 -1
  250. package/dist/_pkgs/affine-shared/adapters/markdown/delta-converter.js +160 -2
  251. package/dist/_pkgs/affine-shared/adapters/markdown/markdown.js +5 -1
  252. package/dist/_pkgs/affine-shared/adapters/types/delta-converter.d.ts +1 -0
  253. package/dist/_pkgs/affine-shared/adapters/utils/color.d.ts +24 -0
  254. package/dist/_pkgs/affine-shared/adapters/utils/color.js +280 -0
  255. package/dist/_pkgs/affine-shared/adapters/utils/index.d.ts +1 -0
  256. package/dist/_pkgs/affine-shared/adapters/utils/index.js +1 -0
  257. package/dist/_pkgs/affine-shared/commands/block-crud/get-selected-blocks.js +10 -2
  258. package/dist/_pkgs/affine-shared/services/audit-service.d.ts +300 -0
  259. package/dist/_pkgs/affine-shared/services/audit-service.js +228 -0
  260. package/dist/_pkgs/affine-shared/services/edit-props-store.d.ts +7 -0
  261. package/dist/_pkgs/affine-shared/services/edit-props-store.js +11 -0
  262. package/dist/_pkgs/affine-shared/services/font-loader/font-loader-service.d.ts +26 -1
  263. package/dist/_pkgs/affine-shared/services/font-loader/font-loader-service.js +124 -7
  264. package/dist/_pkgs/affine-shared/services/index.d.ts +5 -0
  265. package/dist/_pkgs/affine-shared/services/index.js +5 -0
  266. package/dist/_pkgs/affine-shared/services/pivot-materiality-publisher.d.ts +129 -0
  267. package/dist/_pkgs/affine-shared/services/pivot-materiality-publisher.js +311 -0
  268. package/dist/_pkgs/affine-shared/services/pivot-properties-service.d.ts +217 -0
  269. package/dist/_pkgs/affine-shared/services/pivot-properties-service.js +114 -0
  270. package/dist/_pkgs/affine-shared/services/telemetry-service/code-block.d.ts +1 -1
  271. package/dist/_pkgs/affine-shared/services/telemetry-service/lifecycle.d.ts +182 -0
  272. package/dist/_pkgs/affine-shared/services/telemetry-service/telemetry-service.d.ts +2 -2
  273. package/dist/_pkgs/affine-shared/services/telemetry-service/types.d.ts +6 -1
  274. package/dist/_pkgs/affine-shared/services/toolbar-service/action.d.ts +10 -0
  275. package/dist/_pkgs/affine-shared/services/toolbar-service/index.d.ts +1 -0
  276. package/dist/_pkgs/affine-shared/services/toolbar-service/index.js +1 -0
  277. package/dist/_pkgs/affine-shared/services/toolbar-service/layout.d.ts +134 -0
  278. package/dist/_pkgs/affine-shared/services/toolbar-service/layout.js +146 -0
  279. package/dist/_pkgs/affine-shared/services/translation-service/index.d.ts +68 -0
  280. package/dist/_pkgs/affine-shared/services/translation-service/index.js +39 -0
  281. package/dist/_pkgs/affine-shared/services/universe-tag-defs-service.d.ts +155 -0
  282. package/dist/_pkgs/affine-shared/services/universe-tag-defs-service.js +254 -0
  283. package/dist/_pkgs/affine-shared/utils/dom/point-to-range.d.ts +4 -0
  284. package/dist/_pkgs/affine-shared/utils/dom/point-to-range.js +58 -2
  285. package/dist/_pkgs/affine-shared/utils/dom/viewport.d.ts +60 -0
  286. package/dist/_pkgs/affine-shared/utils/dom/viewport.js +58 -0
  287. package/dist/_pkgs/affine-shared/utils/print-to-pdf.d.ts +21 -0
  288. package/dist/_pkgs/affine-shared/utils/print-to-pdf.js +166 -32
  289. package/dist/_pkgs/affine-shared/utils/zod-schema.d.ts +7 -0
  290. package/dist/_pkgs/affine-shared/utils/zod-schema.js +27 -1
  291. package/dist/_pkgs/affine-widget-drag-handle/watchers/edgeless-watcher.d.ts +19 -10
  292. package/dist/_pkgs/affine-widget-drag-handle/watchers/edgeless-watcher.js +122 -23
  293. package/dist/_pkgs/affine-widget-drag-handle/watchers/pointer-event-watcher.d.ts +2 -0
  294. package/dist/_pkgs/affine-widget-drag-handle/watchers/pointer-event-watcher.js +25 -4
  295. package/dist/_pkgs/affine-widget-edgeless-selected-rect/auto-complete-panel.js +10 -5
  296. package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-auto-complete.d.ts +15 -1
  297. package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-auto-complete.js +37 -32
  298. package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-element-link.js +5 -4
  299. package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-selected-rect.js +19 -9
  300. package/dist/_pkgs/affine-widget-edgeless-selected-rect/utils.d.ts +16 -2
  301. package/dist/_pkgs/affine-widget-edgeless-selected-rect/utils.js +19 -2
  302. package/dist/_pkgs/affine-widget-edgeless-toolbar/index.d.ts +1 -0
  303. package/dist/_pkgs/affine-widget-edgeless-toolbar/index.js +1 -0
  304. package/dist/_pkgs/affine-widget-edgeless-toolbar/menu/command-menu.d.ts +38 -0
  305. package/dist/_pkgs/affine-widget-edgeless-toolbar/menu/command-menu.js +99 -0
  306. package/dist/_pkgs/affine-widget-frame-title/edgeless-frame-title-editor.js +4 -1
  307. package/dist/_pkgs/affine-widget-keyboard-toolbar/icons.js +98 -98
  308. package/dist/_pkgs/affine-widget-linked-doc/linked-doc-popover.js +2 -15
  309. package/dist/_pkgs/affine-widget-linked-doc/transformers/markdown.d.ts +10 -1
  310. package/dist/_pkgs/affine-widget-linked-doc/transformers/markdown.js +133 -6
  311. package/dist/_pkgs/affine-widget-linked-doc/transformers/utils.d.ts +10 -0
  312. package/dist/_pkgs/affine-widget-linked-doc/transformers/utils.js +120 -3
  313. package/dist/_pkgs/affine-widget-linked-doc/utils.d.ts +12 -0
  314. package/dist/_pkgs/affine-widget-linked-doc/utils.js +33 -0
  315. package/dist/_pkgs/affine-widget-remote-selection/edgeless/index.js +6 -4
  316. package/dist/_pkgs/affine-widget-slash-menu/slash-menu-popover.js +8 -4
  317. package/dist/_pkgs/affine-widget-slash-menu/utils.d.ts +9 -0
  318. package/dist/_pkgs/affine-widget-slash-menu/utils.js +24 -0
  319. package/dist/_pkgs/affine-widget-toolbar/toolbar.d.ts +6 -0
  320. package/dist/_pkgs/affine-widget-toolbar/toolbar.js +34 -6
  321. package/dist/_pkgs/affine-widget-toolbar/utils.d.ts +146 -3
  322. package/dist/_pkgs/affine-widget-toolbar/utils.js +738 -56
  323. package/dist/_pkgs/data-view/core/common/property-menu.js +3 -16
  324. package/dist/_pkgs/data-view/core/component/tags/multi-tag-select.d.ts +4 -0
  325. package/dist/_pkgs/data-view/core/component/tags/multi-tag-select.js +28 -1
  326. package/dist/_pkgs/data-view/core/data-view.d.ts +3 -1
  327. package/dist/_pkgs/data-view/core/data-view.js +25 -3
  328. package/dist/_pkgs/data-view/core/detail/field.js +2 -2
  329. package/dist/_pkgs/data-view/core/detail/selection.d.ts +4 -2
  330. package/dist/_pkgs/data-view/core/detail/selection.js +23 -7
  331. package/dist/_pkgs/data-view/core/effect.js +2 -0
  332. package/dist/_pkgs/data-view/core/filter/eval.js +36 -23
  333. package/dist/_pkgs/data-view/core/filter/filter-fn/matcher.d.ts +7 -0
  334. package/dist/_pkgs/data-view/core/filter/filter-fn/matcher.js +12 -0
  335. package/dist/_pkgs/data-view/core/group-by/compare-date-keys.d.ts +11 -0
  336. package/dist/_pkgs/data-view/core/group-by/compare-date-keys.js +55 -0
  337. package/dist/_pkgs/data-view/core/group-by/define.d.ts +6 -0
  338. package/dist/_pkgs/data-view/core/group-by/define.js +114 -0
  339. package/dist/_pkgs/data-view/core/group-by/matcher.d.ts +7 -0
  340. package/dist/_pkgs/data-view/core/group-by/matcher.js +13 -0
  341. package/dist/_pkgs/data-view/core/group-by/renderer/boolean-group.js +11 -11
  342. package/dist/_pkgs/data-view/core/group-by/renderer/date-group.d.ts +9 -0
  343. package/dist/_pkgs/data-view/core/group-by/renderer/date-group.js +97 -0
  344. package/dist/_pkgs/data-view/core/group-by/setting.js +86 -7
  345. package/dist/_pkgs/data-view/core/group-by/trait.d.ts +34 -0
  346. package/dist/_pkgs/data-view/core/group-by/trait.js +106 -10
  347. package/dist/_pkgs/data-view/core/utils/menu-title.js +17 -17
  348. package/dist/_pkgs/data-view/property-presets/multi-select/cell-renderer.js +3 -1
  349. package/dist/_pkgs/data-view/property-presets/number/define.js +2 -1
  350. package/dist/_pkgs/data-view/property-presets/select/cell-renderer.js +3 -1
  351. package/dist/_pkgs/data-view/view-presets/calendar/calendar-view-manager.d.ts +70 -0
  352. package/dist/_pkgs/data-view/view-presets/calendar/calendar-view-manager.js +449 -0
  353. package/dist/_pkgs/data-view/view-presets/calendar/define.d.ts +10 -0
  354. package/dist/_pkgs/data-view/view-presets/calendar/define.js +27 -0
  355. package/dist/_pkgs/data-view/view-presets/calendar/effect.d.ts +1 -0
  356. package/dist/_pkgs/data-view/view-presets/calendar/effect.js +4 -0
  357. package/dist/_pkgs/data-view/view-presets/calendar/index.d.ts +6 -0
  358. package/dist/_pkgs/data-view/view-presets/calendar/index.js +6 -0
  359. package/dist/_pkgs/data-view/view-presets/calendar/layout.d.ts +37 -0
  360. package/dist/_pkgs/data-view/view-presets/calendar/layout.js +138 -0
  361. package/dist/_pkgs/data-view/view-presets/calendar/pc/actions.d.ts +7 -0
  362. package/dist/_pkgs/data-view/view-presets/calendar/pc/actions.js +68 -0
  363. package/dist/_pkgs/data-view/view-presets/calendar/pc/dnd.d.ts +32 -0
  364. package/dist/_pkgs/data-view/view-presets/calendar/pc/dnd.js +159 -0
  365. package/dist/_pkgs/data-view/view-presets/calendar/pc/effect.d.ts +1 -0
  366. package/dist/_pkgs/data-view/view-presets/calendar/pc/effect.js +7 -0
  367. package/dist/_pkgs/data-view/view-presets/calendar/pc/hit-test.d.ts +1 -0
  368. package/dist/_pkgs/data-view/view-presets/calendar/pc/hit-test.js +28 -0
  369. package/dist/_pkgs/data-view/view-presets/calendar/pc/styles.d.ts +1 -0
  370. package/dist/_pkgs/data-view/view-presets/calendar/pc/styles.js +707 -0
  371. package/dist/_pkgs/data-view/view-presets/calendar/pc/view.d.ts +89 -0
  372. package/dist/_pkgs/data-view/view-presets/calendar/pc/view.js +837 -0
  373. package/dist/_pkgs/data-view/view-presets/calendar/renderer.d.ts +2 -0
  374. package/dist/_pkgs/data-view/view-presets/calendar/renderer.js +8 -0
  375. package/dist/_pkgs/data-view/view-presets/calendar/source.d.ts +8 -0
  376. package/dist/_pkgs/data-view/view-presets/calendar/source.js +3 -0
  377. package/dist/_pkgs/data-view/view-presets/calendar/types.d.ts +79 -0
  378. package/dist/_pkgs/data-view/view-presets/calendar/types.js +1 -0
  379. package/dist/_pkgs/data-view/view-presets/convert.js +28 -0
  380. package/dist/_pkgs/data-view/view-presets/effect.js +2 -0
  381. package/dist/_pkgs/data-view/view-presets/index.d.ts +2 -0
  382. package/dist/_pkgs/data-view/view-presets/index.js +3 -0
  383. package/dist/_pkgs/data-view/view-presets/kanban/kanban-view-manager.js +3 -1
  384. package/dist/_pkgs/data-view/view-presets/kanban/mobile/cell.js +2 -2
  385. package/dist/_pkgs/data-view/view-presets/table/collapsed-state.d.ts +18 -0
  386. package/dist/_pkgs/data-view/view-presets/table/collapsed-state.js +36 -0
  387. package/dist/_pkgs/data-view/view-presets/table/mobile/cell.js +2 -2
  388. package/dist/_pkgs/data-view/view-presets/table/mobile/group.d.ts +11 -0
  389. package/dist/_pkgs/data-view/view-presets/table/mobile/group.js +87 -4
  390. package/dist/_pkgs/data-view/view-presets/table/pc/cell.d.ts +3 -0
  391. package/dist/_pkgs/data-view/view-presets/table/pc/cell.js +11 -2
  392. package/dist/_pkgs/data-view/view-presets/table/pc/controller/hotkeys.d.ts +1 -0
  393. package/dist/_pkgs/data-view/view-presets/table/pc/controller/hotkeys.js +39 -33
  394. package/dist/_pkgs/data-view/view-presets/table/pc/group.d.ts +10 -0
  395. package/dist/_pkgs/data-view/view-presets/table/pc/group.js +84 -5
  396. package/dist/_pkgs/data-view/view-presets/table/pc-virtual/controller/hotkeys.d.ts +1 -0
  397. package/dist/_pkgs/data-view/view-presets/table/pc-virtual/controller/hotkeys.js +39 -33
  398. package/dist/_pkgs/data-view/view-presets/table/pc-virtual/group/top/group-title.js +18 -18
  399. package/dist/_pkgs/data-view/view-presets/table/pc-virtual/row/cell.d.ts +3 -0
  400. package/dist/_pkgs/data-view/view-presets/table/pc-virtual/row/cell.js +8 -0
  401. package/dist/_pkgs/data-view/view-presets/table/table-view-manager.js +3 -1
  402. package/dist/_pkgs/data-view/view-presets/table/utils.d.ts +3 -0
  403. package/dist/_pkgs/data-view/view-presets/table/utils.js +16 -1
  404. package/dist/_pkgs/data-view/widget-presets/tools/presets/view-options/view-options.js +3 -1
  405. package/dist/_pkgs/global/gfx/curve.js +4 -3
  406. package/dist/_pkgs/std/clipboard/clipboard.js +13 -3
  407. package/dist/_pkgs/std/clipboard/utils.d.ts +5 -0
  408. package/dist/_pkgs/std/clipboard/utils.js +7 -0
  409. package/dist/_pkgs/std/event/dispatcher.js +27 -1
  410. package/dist/_pkgs/std/event/keymap.js +16 -6
  411. package/dist/_pkgs/std/extension/command-registry.d.ts +321 -0
  412. package/dist/_pkgs/std/extension/command-registry.js +233 -0
  413. package/dist/_pkgs/std/extension/dnd/index.d.ts +1 -1
  414. package/dist/_pkgs/std/extension/index.d.ts +2 -0
  415. package/dist/_pkgs/std/extension/index.js +2 -0
  416. package/dist/_pkgs/std/extension/translation-manifest.d.ts +49 -0
  417. package/dist/_pkgs/std/extension/translation-manifest.js +71 -0
  418. package/dist/_pkgs/std/gfx/index.d.ts +7 -3
  419. package/dist/_pkgs/std/gfx/index.js +6 -2
  420. package/dist/_pkgs/std/gfx/interactivity/gfx-view-event-handler.js +6 -1
  421. package/dist/_pkgs/std/gfx/interactivity/manager.d.ts +8 -0
  422. package/dist/_pkgs/std/gfx/interactivity/manager.js +18 -0
  423. package/dist/_pkgs/std/gfx/layer.d.ts +1 -1
  424. package/dist/_pkgs/std/gfx/layer.js +1 -2
  425. package/dist/_pkgs/std/gfx/model/surface/decorators/field.js +9 -0
  426. package/dist/_pkgs/std/gfx/model/surface/decorators/index.d.ts +2 -2
  427. package/dist/_pkgs/std/gfx/model/surface/decorators/index.js +2 -2
  428. package/dist/_pkgs/std/gfx/model/surface/decorators/local.d.ts +14 -0
  429. package/dist/_pkgs/std/gfx/model/surface/decorators/local.js +22 -0
  430. package/dist/_pkgs/std/gfx/model/surface/decorators/observer.d.ts +2 -0
  431. package/dist/_pkgs/std/gfx/model/surface/decorators/observer.js +40 -1
  432. package/dist/_pkgs/std/gfx/model/surface/element-model.d.ts +282 -0
  433. package/dist/_pkgs/std/gfx/model/surface/element-model.js +436 -25
  434. package/dist/_pkgs/std/gfx/model/surface/pivot.d.ts +48 -0
  435. package/dist/_pkgs/std/gfx/model/surface/pivot.js +34 -0
  436. package/dist/_pkgs/std/gfx/model/surface/role.d.ts +153 -0
  437. package/dist/_pkgs/std/gfx/model/surface/role.js +115 -0
  438. package/dist/_pkgs/std/gfx/model/surface/surface-model.d.ts +70 -0
  439. package/dist/_pkgs/std/gfx/model/surface/surface-model.js +304 -17
  440. package/dist/_pkgs/std/gfx/model/surface/tags.d.ts +77 -0
  441. package/dist/_pkgs/std/gfx/model/surface/tags.js +246 -0
  442. package/dist/_pkgs/std/gfx/perf.d.ts +10 -0
  443. package/dist/_pkgs/std/gfx/perf.js +30 -0
  444. package/dist/_pkgs/std/gfx/tool/tool-controller.d.ts +13 -0
  445. package/dist/_pkgs/std/gfx/tool/tool-controller.js +26 -0
  446. package/dist/_pkgs/std/gfx/viewport.d.ts +12 -0
  447. package/dist/_pkgs/std/gfx/viewport.js +19 -1
  448. package/dist/_pkgs/std/inline/services/event.d.ts +2 -0
  449. package/dist/_pkgs/std/inline/services/event.js +96 -21
  450. package/dist/_pkgs/std/utils/layer.js +2 -6
  451. package/dist/_pkgs/std/utils/tree.d.ts +14 -0
  452. package/dist/_pkgs/std/utils/tree.js +59 -8
  453. package/dist/_pkgs/std/view/element/gfx-block-component.js +23 -13
  454. package/dist/_pkgs/store/extension/workspace/workspace-meta.d.ts +10 -0
  455. package/dist/_pkgs/store/model/block/flat-sync-controller.js +2 -12
  456. package/dist/_pkgs/store/model/store/crud.js +7 -4
  457. package/dist/_pkgs/store/reactive/flat-native-y/index.d.ts +1 -1
  458. package/dist/_pkgs/store/reactive/flat-native-y/index.js +24 -2
  459. package/dist/commands.d.ts +58 -0
  460. package/dist/commands.js +66 -0
  461. package/dist/extensions/command-telemetry.d.ts +21 -0
  462. package/dist/extensions/command-telemetry.js +89 -0
  463. package/dist/extensions/store.d.ts +9 -4
  464. package/dist/extensions/store.js +27 -24
  465. package/dist/extensions/view.d.ts +9 -4
  466. package/dist/extensions/view.js +23 -8
  467. package/dist/flags.d.ts +98 -21
  468. package/dist/flags.js +103 -22
  469. package/dist/frameworks.d.ts +45 -0
  470. package/dist/frameworks.js +154 -0
  471. package/dist/schemas.d.ts +8 -5
  472. package/dist/schemas.js +28 -32
  473. package/dist/shortcuts.d.ts +16 -16
  474. package/dist/shortcuts.js +8 -36
  475. package/dist/translations.d.ts +56 -0
  476. package/dist/translations.js +112 -0
  477. package/package.json +16 -4
  478. package/dist/_pkgs/affine-block-root/keyboard/shortcuts.d.ts +0 -8
  479. package/dist/_pkgs/affine-block-root/keyboard/shortcuts.js +0 -48
  480. package/dist/_pkgs/affine-gfx-shape/shortcuts.d.ts +0 -6
  481. package/dist/_pkgs/affine-gfx-shape/shortcuts.js +0 -28
  482. package/dist/_pkgs/data-view/core/utils/cache.d.ts +0 -5
  483. package/dist/_pkgs/data-view/core/utils/cache.js +0 -28
@@ -12,6 +12,12 @@ export declare class EdgelessAutoComplete extends EdgelessAutoComplete_base {
12
12
  private readonly _onPointerDown;
13
13
  private _pathGenerator;
14
14
  private _timer;
15
+ /**
16
+ * Whether `this.current` is a thing the auto-complete knows how to clone: a
17
+ * shape (subclasses included) or a note block. Deliberately says nothing
18
+ * about the selection — the drag-out path consults it *after* clearing the
19
+ * selection to open the shape picker.
20
+ */
15
21
  get canShowAutoComplete(): boolean;
16
22
  get connectionOverlay(): ConnectionOverlay;
17
23
  get crud(): import("../affine-block-surface/index.js").EdgelessCRUDExtension;
@@ -30,10 +36,18 @@ export declare class EdgelessAutoComplete extends EdgelessAutoComplete_base {
30
36
  private _showNextShape;
31
37
  connectedCallback(): void;
32
38
  firstUpdated(): void;
39
+ /**
40
+ * The single predicate the arrows are rendered on. It must stay stricter
41
+ * than, or equal to, what the click handlers can actually do: an arrow the
42
+ * click cannot honour is a crash waiting to happen (see
43
+ * `createEdgelessElement`). Hence the identity check — `current` is a
44
+ * property set by the selected-rect on the previous render, so it can lag
45
+ * behind the selection by a frame, and it is `current`, not the selection,
46
+ * that the click acts on.
47
+ */
33
48
  private _canAutoComplete;
34
49
  removeOverlay(): void;
35
50
  render(): import("lit-html").TemplateResult<1> | typeof nothing;
36
- private accessor _isHover;
37
51
  private accessor _isMoving;
38
52
  accessor current: ShapeElementModel | NoteBlockModel;
39
53
  accessor edgeless: BlockComponent;
@@ -37,7 +37,7 @@ import { ConnectorPathGenerator, } from '../affine-gfx-connector/index.js';
37
37
  import { mountShapeTextEditor } from '../affine-gfx-shape/index.js';
38
38
  import { DEFAULT_NOTE_HEIGHT, DefaultTheme, LayoutType, MindmapElementModel, ShapeElementModel, shapeMethods, } from '../affine-model/index.js';
39
39
  import { ToolbarRegistryIdentifier } from '../affine-shared/services/index.js';
40
- import { handleNativeRangeAtPoint } from '../affine-shared/utils/index.js';
40
+ import { handleNativeRangeAtPoint, toClientCoord, } from '../affine-shared/utils/index.js';
41
41
  import { DisposableGroup } from '../global/disposable/index.js';
42
42
  import { Vec } from '../global/gfx/index.js';
43
43
  import { WithDisposable } from '../global/lit/index.js';
@@ -77,9 +77,6 @@ class AutoCompleteOverlay extends Overlay {
77
77
  }
78
78
  let EdgelessAutoComplete = (() => {
79
79
  let _classSuper = WithDisposable(LitElement);
80
- let __isHover_decorators;
81
- let __isHover_initializers = [];
82
- let __isHover_extraInitializers = [];
83
80
  let __isMoving_decorators;
84
81
  let __isMoving_initializers = [];
85
82
  let __isMoving_extraInitializers = [];
@@ -98,7 +95,6 @@ let EdgelessAutoComplete = (() => {
98
95
  return class EdgelessAutoComplete extends _classSuper {
99
96
  static {
100
97
  const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
101
- __isHover_decorators = [state()];
102
98
  __isMoving_decorators = [state()];
103
99
  _current_decorators = [property({ attribute: false })];
104
100
  _edgeless_decorators = [property({ attribute: false })];
@@ -106,7 +102,6 @@ let EdgelessAutoComplete = (() => {
106
102
  _std_decorators = [consume({
107
103
  context: stdContext,
108
104
  })];
109
- __esDecorate(this, null, __isHover_decorators, { kind: "accessor", name: "_isHover", static: false, private: false, access: { has: obj => "_isHover" in obj, get: obj => obj._isHover, set: (obj, value) => { obj._isHover = value; } }, metadata: _metadata }, __isHover_initializers, __isHover_extraInitializers);
110
105
  __esDecorate(this, null, __isMoving_decorators, { kind: "accessor", name: "_isMoving", static: false, private: false, access: { has: obj => "_isMoving" in obj, get: obj => obj._isMoving, set: (obj, value) => { obj._isMoving = value; } }, metadata: _metadata }, __isMoving_initializers, __isMoving_extraInitializers);
111
106
  __esDecorate(this, null, _current_decorators, { kind: "accessor", name: "current", static: false, private: false, access: { has: obj => "current" in obj, get: obj => obj.current, set: (obj, value) => { obj.current = value; } }, metadata: _metadata }, _current_initializers, _current_extraInitializers);
112
107
  __esDecorate(this, null, _edgeless_decorators, { kind: "accessor", name: "edgeless", static: false, private: false, access: { has: obj => "edgeless" in obj, get: obj => obj.edgeless, set: (obj, value) => { obj.edgeless = value; } }, metadata: _metadata }, _edgeless_initializers, _edgeless_extraInitializers);
@@ -195,6 +190,12 @@ let EdgelessAutoComplete = (() => {
195
190
  get _surface() {
196
191
  return getSurfaceBlock(this.std.store);
197
192
  }
193
+ /**
194
+ * Whether `this.current` is a thing the auto-complete knows how to clone: a
195
+ * shape (subclasses included) or a note block. Deliberately says nothing
196
+ * about the selection — the drag-out path consults it *after* clearing the
197
+ * selection to open the shape picker.
198
+ */
198
199
  get canShowAutoComplete() {
199
200
  const { current } = this;
200
201
  return isShape(current) || isNoteBlock(current);
@@ -283,11 +284,18 @@ let EdgelessAutoComplete = (() => {
283
284
  _createAutoCompletePanel(e, connector) {
284
285
  if (!this.canShowAutoComplete)
285
286
  return;
286
- const position = this.gfx.viewport.toModelCoord(e.clientX, e.clientY);
287
+ // `clientX`/`clientY` are window coordinates: read them as such, or the
288
+ // panel opens at the viewport's own offset away from the pointer.
289
+ const position = this.gfx.viewport.toModelCoordFromClientCoord([
290
+ e.clientX,
291
+ e.clientY,
292
+ ]);
287
293
  const autoCompletePanel = new EdgelessAutoCompletePanel(position, this.edgeless, this.current, connector);
288
294
  this.edgeless.append(autoCompletePanel);
289
295
  }
290
296
  _generateElementOnClick(type) {
297
+ if (!this.canShowAutoComplete)
298
+ return;
291
299
  const { store } = this.edgeless;
292
300
  const bound = this._computeNextBound(type);
293
301
  const id = createEdgelessElement(this.edgeless, this.current, bound);
@@ -309,7 +317,11 @@ let EdgelessAutoComplete = (() => {
309
317
  if (!model) {
310
318
  return;
311
319
  }
312
- const [x, y] = this.gfx.viewport.toViewCoord(bound.center[0], bound.y + DEFAULT_NOTE_HEIGHT / 2);
320
+ // `handleNativeRangeAtPoint` hands the point to
321
+ // `document.caretRangeFromPoint`, which speaks client coordinates: the
322
+ // viewport's own offset in the window has to be there, or the caret is
323
+ // placed by that offset away from the note that was just created.
324
+ const [x, y] = toClientCoord(this.gfx.viewport, bound.center[0], bound.y + DEFAULT_NOTE_HEIGHT / 2);
313
325
  requestAnimationFrame(() => {
314
326
  handleNativeRangeAtPoint(x, y);
315
327
  });
@@ -524,7 +536,7 @@ let EdgelessAutoComplete = (() => {
524
536
  this._initOverlay();
525
537
  }
526
538
  firstUpdated() {
527
- const { _disposables, edgeless, gfx } = this;
539
+ const { _disposables, gfx } = this;
528
540
  _disposables.add(this.gfx.selection.slots.updated.subscribe(() => {
529
541
  this._autoCompleteOverlay.linePoints = [];
530
542
  this._autoCompleteOverlay.renderShape = null;
@@ -533,16 +545,6 @@ let EdgelessAutoComplete = (() => {
533
545
  this.requestUpdate();
534
546
  }));
535
547
  _disposables.add(() => this.removeOverlay());
536
- _disposables.add(edgeless.host.event.add('pointerMove', ctx => {
537
- const evt = ctx.get('pointerState');
538
- const [x, y] = gfx.viewport.toModelCoord(evt.x, evt.y);
539
- const elm = gfx.getElementByPoint(x, y);
540
- if (!elm) {
541
- this._isHover = false;
542
- return;
543
- }
544
- this._isHover = elm === this.current ? true : false;
545
- }));
546
548
  this.edgeless.handleEvent('dragStart', () => {
547
549
  this._isMoving = true;
548
550
  });
@@ -550,11 +552,20 @@ let EdgelessAutoComplete = (() => {
550
552
  this._isMoving = false;
551
553
  });
552
554
  }
555
+ /**
556
+ * The single predicate the arrows are rendered on. It must stay stricter
557
+ * than, or equal to, what the click handlers can actually do: an arrow the
558
+ * click cannot honour is a crash waiting to happen (see
559
+ * `createEdgelessElement`). Hence the identity check — `current` is a
560
+ * property set by the selected-rect on the previous render, so it can lag
561
+ * behind the selection by a frame, and it is `current`, not the selection,
562
+ * that the click acts on.
563
+ */
553
564
  _canAutoComplete() {
554
- const selection = this.gfx.selection;
555
- return (selection.selectedElements.length === 1 &&
556
- (selection.selectedElements[0] instanceof ShapeElementModel ||
557
- isNoteBlock(selection.selectedElements[0])));
565
+ const selected = this.gfx.selection.selectedElements;
566
+ return (selected.length === 1 &&
567
+ selected[0] === this.current &&
568
+ this.canShowAutoComplete);
558
569
  }
559
570
  removeOverlay() {
560
571
  this._timer && clearTimeout(this._timer);
@@ -564,13 +575,11 @@ let EdgelessAutoComplete = (() => {
564
575
  surface.renderer.removeOverlay(this._autoCompleteOverlay);
565
576
  }
566
577
  render() {
567
- const isShape = this.current instanceof ShapeElementModel;
568
- const isMindMap = this.current.group instanceof MindmapElementModel;
569
- if (this._isMoving ||
570
- (this._isHover && !isShape && !this._canAutoComplete())) {
578
+ if (this._isMoving || !this._canAutoComplete()) {
571
579
  this.removeOverlay();
572
580
  return nothing;
573
581
  }
582
+ const isMindMap = this.current.group instanceof MindmapElementModel;
574
583
  const { selectedRect } = this;
575
584
  return html `<div
576
585
  class="edgeless-auto-complete-container"
@@ -585,9 +594,6 @@ let EdgelessAutoComplete = (() => {
585
594
  ${isMindMap ? this._renderMindMapButtons() : this._renderArrow()}
586
595
  </div>`;
587
596
  }
588
- #_isHover_accessor_storage;
589
- get _isHover() { return this.#_isHover_accessor_storage; }
590
- set _isHover(value) { this.#_isHover_accessor_storage = value; }
591
597
  #_isMoving_accessor_storage;
592
598
  get _isMoving() { return this.#_isMoving_accessor_storage; }
593
599
  set _isMoving(value) { this.#_isMoving_accessor_storage = value; }
@@ -650,8 +656,7 @@ let EdgelessAutoComplete = (() => {
650
656
  });
651
657
  };
652
658
  this._timer = null;
653
- this.#_isHover_accessor_storage = __runInitializers(this, __isHover_initializers, true);
654
- this.#_isMoving_accessor_storage = (__runInitializers(this, __isHover_extraInitializers), __runInitializers(this, __isMoving_initializers, false));
659
+ this.#_isMoving_accessor_storage = __runInitializers(this, __isMoving_initializers, false);
655
660
  this.#current_accessor_storage = (__runInitializers(this, __isMoving_extraInitializers), __runInitializers(this, _current_initializers, void 0));
656
661
  this.#edgeless_accessor_storage = (__runInitializers(this, _current_extraInitializers), __runInitializers(this, _edgeless_initializers, void 0));
657
662
  this.#selectedRect_accessor_storage = (__runInitializers(this, _edgeless_extraInitializers), __runInitializers(this, _selectedRect_initializers, void 0));
@@ -33,7 +33,7 @@ var __runInitializers = (this && this.__runInitializers) || function (thisArg, i
33
33
  return useValue ? value : void 0;
34
34
  };
35
35
  import { RefNodeSlotsProvider } from '../affine-inline-reference/index.js';
36
- import { requestThrottledConnectedFrame } from '../affine-shared/utils/index.js';
36
+ import { overlayScale, requestThrottledConnectedFrame, toOverlayCoord, } from '../affine-shared/utils/index.js';
37
37
  import { WidgetComponent } from '../std/index.js';
38
38
  import { GfxControllerIdentifier, GfxPrimitiveElementModel, } from '../std/gfx/index.js';
39
39
  import { OpenInNewIcon, RightSidebarIcon } from '@blocksuite/icons/lit';
@@ -72,12 +72,13 @@ let EdgelessElementLinkWidget = (() => {
72
72
  }
73
73
  const bound = el.elementBound;
74
74
  const { viewport } = this.gfx;
75
- const [left, top] = viewport.toViewCoord(bound.x, bound.y);
75
+ const [left, top] = toOverlayCoord(viewport, bound.x, bound.y);
76
+ const scale = overlayScale(viewport);
76
77
  this._rect = {
77
78
  left,
78
79
  top,
79
- width: bound.w * viewport.zoom,
80
- height: bound.h * viewport.zoom,
80
+ width: bound.w * scale,
81
+ height: bound.h * scale,
81
82
  };
82
83
  }, this));
83
84
  this._open = (e) => {
@@ -36,7 +36,7 @@ import {} from '../affine-block-frame/index.js';
36
36
  import { EdgelessLegacySlotIdentifier, OverlayIdentifier, } from '../affine-block-surface/index.js';
37
37
  import { ConnectorElementModel, } from '../affine-model/index.js';
38
38
  import { unsafeCSSVarV2 } from '../affine-shared/theme/index.js';
39
- import { getSelectedRect, requestThrottledConnectedFrame, stopPropagation, } from '../affine-shared/utils/index.js';
39
+ import { getSelectedRect, overlayScale, requestThrottledConnectedFrame, stopPropagation, toOverlayCoord, } from '../affine-shared/utils/index.js';
40
40
  import { deserializeXYWH } from '../global/gfx/index.js';
41
41
  import { WidgetComponent } from '../std/index.js';
42
42
  import { GfxControllerIdentifier, InteractivityIdentifier, } from '../std/gfx/index.js';
@@ -523,13 +523,14 @@ let EdgelessSelectedRectWidget = (() => {
523
523
  borderStyle: 'solid',
524
524
  });
525
525
  this._updateSelectedRect = (__runInitializers(this, __selectedRect_extraInitializers), requestThrottledConnectedFrame(() => {
526
- const { zoom, selection, gfx } = this;
526
+ const { selection, gfx } = this;
527
527
  const elements = selection.selectedElements;
528
528
  // in surface
529
529
  const rect = getSelectedRect(elements);
530
- // in viewport
531
- const [left, top] = gfx.viewport.toViewCoord(rect.left, rect.top);
532
- const [width, height] = [rect.width * zoom, rect.height * zoom];
530
+ // in viewport, inside the container the host may have scaled
531
+ const [left, top] = toOverlayCoord(gfx.viewport, rect.left, rect.top);
532
+ const scale = overlayScale(gfx.viewport);
533
+ const [width, height] = [rect.width * scale, rect.height * scale];
533
534
  let rotate = 0;
534
535
  if (elements.length === 1 && elements[0].rotate) {
535
536
  rotate = elements[0].rotate;
@@ -571,7 +572,15 @@ let EdgelessSelectedRectWidget = (() => {
571
572
  }
572
573
  _disposables.add(this.store.slots.blockUpdated.subscribe(this._updateOnElementChange));
573
574
  _disposables.add(selection.slots.updated.subscribe(this._updateOnSelectionChange));
574
- _disposables.add(this._slots.readonlyUpdated.subscribe(() => this.requestUpdate()));
575
+ _disposables.add(
576
+ // `_updateHandles` already refuses on readonly, but it only ran on
577
+ // selection change: a board switched to readonly while something was
578
+ // selected kept its 8 resize handles — and dragging one of them wrote
579
+ // `xywh`. Recompute on the flip, in both directions.
580
+ this._slots.readonlyUpdated.subscribe(() => {
581
+ this._updateHandles();
582
+ this.requestUpdate();
583
+ }));
575
584
  _disposables.add(this._slots.elementResizeEnd.subscribe(() => (this._isResizing = false)));
576
585
  if (this._interaction) {
577
586
  _disposables.add(this._interaction.activeInteraction$.subscribe(val => {
@@ -686,15 +695,16 @@ let EdgelessSelectedRectWidget = (() => {
686
695
  !elements.some(e => e instanceof ConnectorElementModel)) {
687
696
  handles.push(repeat(elements, element => element.id, element => {
688
697
  const [modelX, modelY, w, h] = deserializeXYWH(element.xywh);
689
- const [x, y] = gfx.viewport.toViewCoord(modelX, modelY);
698
+ const [x, y] = toOverlayCoord(gfx.viewport, modelX, modelY);
699
+ const scale = overlayScale(gfx.viewport);
690
700
  const { left, top, borderWidth } = this._selectedRect;
691
701
  const style = {
692
702
  position: 'absolute',
693
703
  boxSizing: 'border-box',
694
704
  left: `${x - left - borderWidth}px`,
695
705
  top: `${y - top - borderWidth}px`,
696
- width: `${w * this.zoom}px`,
697
- height: `${h * this.zoom}px`,
706
+ width: `${w * scale}px`,
707
+ height: `${h * scale}px`,
698
708
  transform: `rotate(${element.rotate}deg)`,
699
709
  border: `1px solid var(--affine-primary-color)`,
700
710
  };
@@ -2,7 +2,7 @@ import { type Options, Overlay, type RoughCanvas } from '../affine-block-surface
2
2
  import { type NoteBlockModel, ShapeElementModel, type ShapeName, type ShapeStyle } from '../affine-model/index.js';
3
3
  import { Bound, type XYWH } from '../global/gfx/index.js';
4
4
  import type { BlockComponent } from '../std/index.js';
5
- import type { CursorType, GfxController, ResizeHandle, StandardCursor } from '../std/gfx/index.js';
5
+ import type { CursorType, GfxController, GfxModel, ResizeHandle, StandardCursor } from '../std/gfx/index.js';
6
6
  export declare enum Direction {
7
7
  Right = 0,
8
8
  Bottom = 1,
@@ -49,7 +49,21 @@ export declare function getPosition(type: Direction): {
49
49
  };
50
50
  export declare function isShape(element: unknown): element is ShapeElementModel;
51
51
  export declare function capitalizeFirstLetter(str: string): string;
52
- export declare function createEdgelessElement(edgeless: BlockComponent, current: ShapeElementModel | NoteBlockModel, bound: Bound): string | null;
52
+ /**
53
+ * Clone `current` one bound further along, so an auto-complete arrow can drop a
54
+ * sibling of what is selected.
55
+ *
56
+ * Only two kinds of thing can be cloned this way: a shape (any
57
+ * `ShapeElementModel`, subclasses included — a wardley node, an EDGY node, a
58
+ * BPMN node) and a note block. Everything else on the canvas — a group, a free
59
+ * text label, a connector, a framework background — has no `props` bag at all,
60
+ * and reading one blindly is what used to throw
61
+ * `Cannot read properties of undefined (reading 'background')` the moment an
62
+ * arrow was offered on a selected wardley component (which selects the *group*
63
+ * wrapping node + label, not the node). We return `null` instead: the caller
64
+ * already treats a falsy id as "nothing to complete".
65
+ */
66
+ export declare function createEdgelessElement(edgeless: BlockComponent, current: GfxModel, bound: Bound): string | null;
53
67
  export declare function createShapeElement(edgeless: BlockComponent, current: ShapeElementModel | NoteBlockModel, targetType: TARGET_SHAPE_TYPE): string | null;
54
68
  export declare function generateCursorUrl(angle: number | undefined, handle: ResizeHandle, fallback?: StandardCursor): CursorType;
55
69
  export declare function getRotatedResizeCursor(option: {
@@ -1,4 +1,4 @@
1
- import { EdgelessCRUDIdentifier, Overlay, } from '../affine-block-surface/index.js';
1
+ import { EdgelessCRUDIdentifier, isNoteBlock, Overlay, } from '../affine-block-surface/index.js';
2
2
  import { ShapeFactory } from '../affine-gfx-shape/index.js';
3
3
  import { getShapeRadius, getShapeType, GroupElementModel, ShapeElementModel, } from '../affine-model/index.js';
4
4
  import { BlockSuiteError, ErrorCode } from '../global/exceptions/index.js';
@@ -203,6 +203,20 @@ export function isShape(element) {
203
203
  export function capitalizeFirstLetter(str) {
204
204
  return str.charAt(0).toUpperCase() + str.slice(1);
205
205
  }
206
+ /**
207
+ * Clone `current` one bound further along, so an auto-complete arrow can drop a
208
+ * sibling of what is selected.
209
+ *
210
+ * Only two kinds of thing can be cloned this way: a shape (any
211
+ * `ShapeElementModel`, subclasses included — a wardley node, an EDGY node, a
212
+ * BPMN node) and a note block. Everything else on the canvas — a group, a free
213
+ * text label, a connector, a framework background — has no `props` bag at all,
214
+ * and reading one blindly is what used to throw
215
+ * `Cannot read properties of undefined (reading 'background')` the moment an
216
+ * arrow was offered on a selected wardley component (which selects the *group*
217
+ * wrapping node + label, not the node). We return `null` instead: the caller
218
+ * already treats a falsy id as "nothing to complete".
219
+ */
206
220
  export function createEdgelessElement(edgeless, current, bound) {
207
221
  const crud = edgeless.std.get(EdgelessCRUDIdentifier);
208
222
  let id;
@@ -217,7 +231,7 @@ export function createEdgelessElement(edgeless, current, bound) {
217
231
  return null;
218
232
  element = crud.getElementById(id);
219
233
  }
220
- else {
234
+ else if (isNoteBlock(current)) {
221
235
  const { store } = edgeless;
222
236
  id = store.addBlock('affine:note', {
223
237
  background: current.props.background,
@@ -236,6 +250,9 @@ export function createEdgelessElement(edgeless, current, bound) {
236
250
  store.addBlock('affine:paragraph', {}, note.id);
237
251
  element = note;
238
252
  }
253
+ else {
254
+ return null;
255
+ }
239
256
  if (!element) {
240
257
  throw new BlockSuiteError(ErrorCode.GfxBlockElementError, 'Element is not found after creation');
241
258
  }
@@ -4,4 +4,5 @@ export * from './create-popper.js';
4
4
  export * from './draggable/index.js';
5
5
  export * from './edgeless-toolbar.js';
6
6
  export * from './extension/index.js';
7
+ export * from './menu/command-menu.js';
7
8
  export * from './mixins/index.js';
@@ -4,4 +4,5 @@ export * from './create-popper.js';
4
4
  export * from './draggable/index.js';
5
5
  export * from './edgeless-toolbar.js';
6
6
  export * from './extension/index.js';
7
+ export * from './menu/command-menu.js';
7
8
  export * from './mixins/index.js';
@@ -0,0 +1,38 @@
1
+ import { type CommandDescriptor, type CommandOwner } from '../../std/index.js';
2
+ import { type CSSResultGroup, LitElement } from 'lit';
3
+ declare const EdgelessCommandMenu_base: typeof LitElement & import("../../global/utils/types.js").Constructor<import("../index.js").EdgelessToolbarToolClass>;
4
+ /**
5
+ * The senior button sub-menu, rendered FROM the command registry.
6
+ *
7
+ * Before PF3 each framework hand-wrote this popover with a literal button per
8
+ * artefact, an inline English tooltip and its own `_track()` helper — which is
9
+ * how Wardley's menu drifted to 13 artefacts against 7 in the shortcut
10
+ * manifest, and how cynefin-estuarine ended up emitting no telemetry at all.
11
+ * There is now exactly one renderer, and it enumerates
12
+ * `getCommandsForSurface(std, owner, 'senior-menu')`. A framework subclass
13
+ * declares its owner and its tool type, nothing else. See `docs/adr/0008`.
14
+ */
15
+ export declare abstract class EdgelessCommandMenu extends EdgelessCommandMenu_base {
16
+ /**
17
+ * Typed as a group so a subclass can extend rather than replace it — the DDD
18
+ * palettes narrow `--labre-command-menu-gap`.
19
+ */
20
+ static styles: CSSResultGroup;
21
+ /** Which framework's commands this popover shows. */
22
+ protected abstract owner: CommandOwner;
23
+ get commands(): CommandDescriptor[];
24
+ private _invoke;
25
+ /**
26
+ * What the button says on hover: its label, plus — when the command declares
27
+ * one — the sentence that tells the user what its GESTURE means.
28
+ *
29
+ * That second line is M1 of `docs/adr/0010`: a link tool whose drag decides
30
+ * the orientation of a persisted relation has to SAY so, or the direction it
31
+ * writes is a by-product rather than a statement. The library still puts no
32
+ * words in a framework's mouth — both halves are the framework's own keys and
33
+ * fallbacks, resolved through the host's catalogue.
34
+ */
35
+ private _tooltip;
36
+ render(): import("lit-html").TemplateResult<1>;
37
+ }
38
+ export {};
@@ -0,0 +1,99 @@
1
+ import { translateKey } from '../../affine-shared/services/index.js';
2
+ import { getCommandIcon, getCommandsForSurface, runCommand, } from '../../std/index.js';
3
+ import { css, html, LitElement } from 'lit';
4
+ import { EdgelessToolbarToolMixin } from '../mixins/tool.mixin.js';
5
+ /**
6
+ * The senior button sub-menu, rendered FROM the command registry.
7
+ *
8
+ * Before PF3 each framework hand-wrote this popover with a literal button per
9
+ * artefact, an inline English tooltip and its own `_track()` helper — which is
10
+ * how Wardley's menu drifted to 13 artefacts against 7 in the shortcut
11
+ * manifest, and how cynefin-estuarine ended up emitting no telemetry at all.
12
+ * There is now exactly one renderer, and it enumerates
13
+ * `getCommandsForSurface(std, owner, 'senior-menu')`. A framework subclass
14
+ * declares its owner and its tool type, nothing else. See `docs/adr/0008`.
15
+ */
16
+ export class EdgelessCommandMenu extends EdgelessToolbarToolMixin(LitElement) {
17
+ /**
18
+ * Typed as a group so a subclass can extend rather than replace it — the DDD
19
+ * palettes narrow `--labre-command-menu-gap`.
20
+ */
21
+ static { this.styles = css `
22
+ :host {
23
+ display: flex;
24
+ z-index: -1;
25
+ justify-content: center;
26
+ }
27
+ .menu-content {
28
+ display: flex;
29
+ align-items: center;
30
+ justify-content: center;
31
+ }
32
+ .button-group-container {
33
+ display: flex;
34
+ align-items: center;
35
+ gap: var(--labre-command-menu-gap, 14px);
36
+ fill: var(--affine-icon-color);
37
+ }
38
+ .button-group-container svg {
39
+ width: 24px;
40
+ height: 24px;
41
+ }
42
+ `; }
43
+ get commands() {
44
+ return getCommandsForSurface(this.edgeless.std, this.owner, 'senior-menu');
45
+ }
46
+ _invoke(command) {
47
+ // The ONE emission point: no `_track()` helper anywhere in the menus.
48
+ runCommand(this.edgeless.std, command, {
49
+ surface: 'senior-menu',
50
+ source: 'toolbar:general',
51
+ });
52
+ }
53
+ /**
54
+ * What the button says on hover: its label, plus — when the command declares
55
+ * one — the sentence that tells the user what its GESTURE means.
56
+ *
57
+ * That second line is M1 of `docs/adr/0010`: a link tool whose drag decides
58
+ * the orientation of a persisted relation has to SAY so, or the direction it
59
+ * writes is a by-product rather than a statement. The library still puts no
60
+ * words in a framework's mouth — both halves are the framework's own keys and
61
+ * fallbacks, resolved through the host's catalogue.
62
+ */
63
+ _tooltip(command) {
64
+ const label = translateKey(this.edgeless.std, command.labelKey, command.labelFallback);
65
+ const { descriptionKey, descriptionFallback } = command;
66
+ if (!descriptionKey && !descriptionFallback)
67
+ return label;
68
+ const hint = descriptionKey
69
+ ? translateKey(this.edgeless.std, descriptionKey, descriptionFallback)
70
+ : descriptionFallback;
71
+ // A key with no catalogue entry and no fallback resolves to itself — show
72
+ // the label alone rather than a raw i18n key under it.
73
+ if (!hint || hint === descriptionKey)
74
+ return label;
75
+ // Inline, not a class: the template is rendered inside the icon button's
76
+ // own shadow root, where this component's stylesheet does not reach.
77
+ return html `${label}<span
78
+ style="display:block;max-width:220px;margin-top:2px;opacity:0.75;font-size:11px;line-height:1.35;white-space:normal"
79
+ >${hint}</span
80
+ >`;
81
+ }
82
+ render() {
83
+ const std = this.edgeless.std;
84
+ return html `
85
+ <edgeless-slide-menu>
86
+ <div class="menu-content">
87
+ <div class="button-group-container">
88
+ ${this.commands.map(command => html `<edgeless-tool-icon-button
89
+ .tooltip=${this._tooltip(command)}
90
+ @click=${() => this._invoke(command)}
91
+ >
92
+ ${getCommandIcon(std, command.iconKey)}
93
+ </edgeless-tool-icon-button>`)}
94
+ </div>
95
+ </div>
96
+ </edgeless-slide-menu>
97
+ `;
98
+ }
99
+ }
@@ -33,6 +33,7 @@ var __runInitializers = (this && this.__runInitializers) || function (thisArg, i
33
33
  return useValue ? value : void 0;
34
34
  };
35
35
  import { FrameBlockModel } from '../affine-model/index.js';
36
+ import { toOverlayCoord } from '../affine-shared/utils/index.js';
36
37
  import { Bound } from '../global/gfx/index.js';
37
38
  import { WithDisposable } from '../global/lit/index.js';
38
39
  import { ShadowlessElement } from '../std/index.js';
@@ -152,7 +153,9 @@ let EdgelessFrameTitleEditor = (() => {
152
153
  return nothing;
153
154
  const viewport = this.gfx.viewport;
154
155
  const bound = Bound.deserialize(this.frameModel.xywh);
155
- const [x, y] = viewport.toViewCoord(bound.x, bound.y);
156
+ // The editor is mounted inside the container the host may have scaled, so
157
+ // it is placed the way the title it replaces is, not in screen pixels.
158
+ const [x, y] = toOverlayCoord(viewport, bound.x, bound.y);
156
159
  const isInner = this.gfx.grid.has(this.frameModel.elementBound, true, true, model => model !== this.frameModel && model instanceof FrameBlockModel);
157
160
  const frameTitleWidget = this.edgeless.std.view.getWidget(AFFINE_FRAME_TITLE_WIDGET, this.frameModel.id);
158
161
  if (!frameTitleWidget)