@formicoidea/labre-core 0.39.3 → 0.41.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 (449) hide show
  1. package/dist/_pkgs/affine-block-attachment/attachment-block.js +7 -2
  2. package/dist/_pkgs/affine-block-attachment/components/rename-model.js +3 -2
  3. package/dist/_pkgs/affine-block-attachment/configs/slash-menu.js +7 -0
  4. package/dist/_pkgs/affine-block-attachment/configs/toolbar.js +11 -3
  5. package/dist/_pkgs/affine-block-attachment/configs/tooltips.js +4 -4
  6. package/dist/_pkgs/affine-block-attachment/translations.d.ts +49 -0
  7. package/dist/_pkgs/affine-block-attachment/translations.js +98 -0
  8. package/dist/_pkgs/affine-block-attachment/utils.js +9 -6
  9. package/dist/_pkgs/affine-block-bookmark/components/bookmark-card.js +13 -6
  10. package/dist/_pkgs/affine-block-bookmark/configs/slash-menu.js +6 -1
  11. package/dist/_pkgs/affine-block-bookmark/configs/toolbar.js +9 -1
  12. package/dist/_pkgs/affine-block-bookmark/configs/tooltips.js +2 -2
  13. package/dist/_pkgs/affine-block-bookmark/translations.d.ts +26 -0
  14. package/dist/_pkgs/affine-block-bookmark/translations.js +55 -0
  15. package/dist/_pkgs/affine-block-callout/configs/slash-menu.js +4 -0
  16. package/dist/_pkgs/affine-block-callout/configs/tooltips.js +2 -2
  17. package/dist/_pkgs/affine-block-callout/emoji-margin.js +19 -11
  18. package/dist/_pkgs/affine-block-callout/translations.d.ts +16 -0
  19. package/dist/_pkgs/affine-block-callout/translations.js +24 -0
  20. package/dist/_pkgs/affine-block-code/code-block.js +6 -3
  21. package/dist/_pkgs/affine-block-code/code-toolbar/components/code-toolbar.js +4 -2
  22. package/dist/_pkgs/affine-block-code/code-toolbar/components/lang-button.js +3 -2
  23. package/dist/_pkgs/affine-block-code/code-toolbar/components/preview-button.js +4 -3
  24. package/dist/_pkgs/affine-block-code/code-toolbar/config.js +116 -72
  25. package/dist/_pkgs/affine-block-code/translations.d.ts +30 -0
  26. package/dist/_pkgs/affine-block-code/translations.js +84 -0
  27. package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/config.js +2 -2
  28. package/dist/_pkgs/affine-block-embed/common/render-linked-doc.js +7 -6
  29. package/dist/_pkgs/affine-block-embed/configs/toolbar.js +11 -2
  30. package/dist/_pkgs/affine-block-embed/embed-html-block/components/fullscreen-toolbar.js +4 -3
  31. package/dist/_pkgs/affine-block-embed/embed-html-block/configs/toolbar.js +5 -1
  32. package/dist/_pkgs/affine-block-embed/embed-html-block/configs/tooltips.js +14 -14
  33. package/dist/_pkgs/affine-block-embed/embed-html-block/embed-html-block.js +7 -1
  34. package/dist/_pkgs/affine-block-embed/embed-iframe-block/components/embed-iframe-error-card.js +11 -4
  35. package/dist/_pkgs/affine-block-embed/embed-iframe-block/components/embed-iframe-idle-card.d.ts +2 -0
  36. package/dist/_pkgs/affine-block-embed/embed-iframe-block/components/embed-iframe-idle-card.js +13 -3
  37. package/dist/_pkgs/affine-block-embed/embed-iframe-block/components/embed-iframe-link-edit-popup.js +4 -2
  38. package/dist/_pkgs/affine-block-embed/embed-iframe-block/components/embed-iframe-link-input-base.js +8 -5
  39. package/dist/_pkgs/affine-block-embed/embed-iframe-block/components/embed-iframe-link-input-popup.js +21 -5
  40. package/dist/_pkgs/affine-block-embed/embed-iframe-block/components/embed-iframe-loading-card.js +4 -1
  41. package/dist/_pkgs/affine-block-embed/embed-iframe-block/configs/slash-menu/slash-menu.js +4 -0
  42. package/dist/_pkgs/affine-block-embed/embed-iframe-block/configs/toolbar.d.ts +2 -0
  43. package/dist/_pkgs/affine-block-embed/embed-iframe-block/configs/toolbar.js +6 -1
  44. package/dist/_pkgs/affine-block-embed/embed-iframe-block/embed-iframe-block.js +3 -1
  45. package/dist/_pkgs/affine-block-embed/translations.d.ts +46 -0
  46. package/dist/_pkgs/affine-block-embed/translations.js +114 -0
  47. package/dist/_pkgs/affine-block-embed-doc/embed-linked-doc-block/configs/slash-menu.js +7 -0
  48. package/dist/_pkgs/affine-block-embed-doc/embed-linked-doc-block/configs/toolbar.js +29 -12
  49. package/dist/_pkgs/affine-block-embed-doc/embed-linked-doc-block/configs/tooltips.js +4 -4
  50. package/dist/_pkgs/affine-block-embed-doc/embed-linked-doc-block/embed-linked-doc-block.js +10 -4
  51. package/dist/_pkgs/affine-block-embed-doc/embed-synced-doc-block/components/embed-synced-doc-card.js +8 -4
  52. package/dist/_pkgs/affine-block-embed-doc/embed-synced-doc-block/configs/toolbar.js +28 -13
  53. package/dist/_pkgs/affine-block-embed-doc/embed-synced-doc-block/embed-edgeless-synced-doc-block.js +3 -2
  54. package/dist/_pkgs/affine-block-embed-doc/embed-synced-doc-block/embed-synced-doc-block.js +3 -2
  55. package/dist/_pkgs/affine-block-embed-doc/translations.d.ts +40 -0
  56. package/dist/_pkgs/affine-block-embed-doc/translations.js +85 -0
  57. package/dist/_pkgs/affine-block-frame/edgeless-toolbar/frame-dense-menu.js +29 -22
  58. package/dist/_pkgs/affine-block-frame/edgeless-toolbar/frame-menu.js +5 -1
  59. package/dist/_pkgs/affine-block-frame/edgeless-toolbar/frame-tool-button.js +2 -1
  60. package/dist/_pkgs/affine-block-frame/edgeless-toolbar/presentation-toolbar.js +12 -9
  61. package/dist/_pkgs/affine-block-frame/frame-manager.js +8 -2
  62. package/dist/_pkgs/affine-block-frame/frame-tool.js +7 -2
  63. package/dist/_pkgs/affine-block-frame/frame-toolbar.js +12 -6
  64. package/dist/_pkgs/affine-block-frame/index.d.ts +1 -0
  65. package/dist/_pkgs/affine-block-frame/index.js +1 -0
  66. package/dist/_pkgs/affine-block-frame/present/frame-order-button.js +5 -1
  67. package/dist/_pkgs/affine-block-frame/present/navigator-setting-button.js +16 -6
  68. package/dist/_pkgs/affine-block-frame/present/present-button.js +3 -1
  69. package/dist/_pkgs/affine-block-frame/translations.d.ts +64 -0
  70. package/dist/_pkgs/affine-block-frame/translations.js +131 -0
  71. package/dist/_pkgs/affine-block-image/components/page-image-block.js +5 -2
  72. package/dist/_pkgs/affine-block-image/configs/slash-menu.js +4 -0
  73. package/dist/_pkgs/affine-block-image/configs/toolbar.js +7 -1
  74. package/dist/_pkgs/affine-block-image/configs/tooltips.js +1 -1
  75. package/dist/_pkgs/affine-block-image/image-block.js +3 -2
  76. package/dist/_pkgs/affine-block-image/image-edgeless-block.js +6 -3
  77. package/dist/_pkgs/affine-block-image/preview-image/page.js +5 -1
  78. package/dist/_pkgs/affine-block-image/translations.d.ts +35 -0
  79. package/dist/_pkgs/affine-block-image/translations.js +68 -0
  80. package/dist/_pkgs/affine-block-image/utils.js +9 -8
  81. package/dist/_pkgs/affine-block-latex/configs/slash-menu.d.ts +8 -0
  82. package/dist/_pkgs/affine-block-latex/configs/slash-menu.js +19 -3
  83. package/dist/_pkgs/affine-block-latex/latex-block.js +6 -2
  84. package/dist/_pkgs/affine-block-latex/translations.d.ts +35 -0
  85. package/dist/_pkgs/affine-block-latex/translations.js +60 -0
  86. package/dist/_pkgs/affine-block-note/components/edgeless-note-border-dropdown-menu.d.ts +9 -0
  87. package/dist/_pkgs/affine-block-note/components/edgeless-note-border-dropdown-menu.js +23 -6
  88. package/dist/_pkgs/affine-block-note/components/edgeless-note-display-mode-dropdown-menu.d.ts +4 -1
  89. package/dist/_pkgs/affine-block-note/components/edgeless-note-display-mode-dropdown-menu.js +26 -6
  90. package/dist/_pkgs/affine-block-note/components/edgeless-note-shadow-menu.d.ts +3 -0
  91. package/dist/_pkgs/affine-block-note/components/edgeless-note-shadow-menu.js +21 -10
  92. package/dist/_pkgs/affine-block-note/components/edgeless-note-style-panel.js +22 -8
  93. package/dist/_pkgs/affine-block-note/configs/slash-menu.js +13 -0
  94. package/dist/_pkgs/affine-block-note/configs/toolbar.js +26 -19
  95. package/dist/_pkgs/affine-block-note/configs/tooltips.d.ts +16 -0
  96. package/dist/_pkgs/affine-block-note/configs/tooltips.js +150 -90
  97. package/dist/_pkgs/affine-block-note/move-block.js +8 -2
  98. package/dist/_pkgs/affine-block-note/translations.d.ts +91 -0
  99. package/dist/_pkgs/affine-block-note/translations.js +253 -0
  100. package/dist/_pkgs/affine-block-paragraph/paragraph-block.js +7 -2
  101. package/dist/_pkgs/affine-block-paragraph/styles.js +30 -83
  102. package/dist/_pkgs/affine-block-paragraph/translations.d.ts +31 -0
  103. package/dist/_pkgs/affine-block-paragraph/translations.js +44 -0
  104. package/dist/_pkgs/affine-block-paragraph/turbo/paragraph-layout-handler.js +1 -0
  105. package/dist/_pkgs/affine-block-paragraph/turbo/paragraph-painter.worker.d.ts +2 -0
  106. package/dist/_pkgs/affine-block-paragraph/turbo/paragraph-painter.worker.js +6 -1
  107. package/dist/_pkgs/affine-block-paragraph/view.js +6 -1
  108. package/dist/_pkgs/affine-block-root/configs/toolbar.d.ts +3 -1
  109. package/dist/_pkgs/affine-block-root/configs/toolbar.js +6 -3
  110. package/dist/_pkgs/affine-block-root/edgeless/clipboard/utils.js +1 -1
  111. package/dist/_pkgs/affine-block-root/edgeless/configs/toolbar/alignment.js +26 -4
  112. package/dist/_pkgs/affine-block-root/edgeless/configs/toolbar/misc.d.ts +14 -0
  113. package/dist/_pkgs/affine-block-root/edgeless/configs/toolbar/misc.js +10 -3
  114. package/dist/_pkgs/affine-block-root/edgeless/configs/toolbar/more.d.ts +8 -0
  115. package/dist/_pkgs/affine-block-root/edgeless/configs/toolbar/more.js +9 -0
  116. package/dist/_pkgs/affine-block-root/edgeless/edgeless-keyboard.js +15 -6
  117. package/dist/_pkgs/affine-block-root/edgeless/utils/consts.d.ts +0 -1
  118. package/dist/_pkgs/affine-block-root/edgeless/utils/consts.js +0 -1
  119. package/dist/_pkgs/affine-block-root/translations.d.ts +61 -0
  120. package/dist/_pkgs/affine-block-root/translations.js +172 -0
  121. package/dist/_pkgs/affine-block-surface/extensions/export-manager/export-manager.js +3 -1
  122. package/dist/_pkgs/affine-block-surface/extensions/index.d.ts +1 -0
  123. package/dist/_pkgs/affine-block-surface/extensions/index.js +1 -0
  124. package/dist/_pkgs/affine-block-surface/extensions/interchange-import.js +31 -12
  125. package/dist/_pkgs/affine-block-surface/extensions/interchange.d.ts +40 -8
  126. package/dist/_pkgs/affine-block-surface/extensions/interchange.js +27 -0
  127. package/dist/_pkgs/affine-block-surface/extensions/morph-toolbar.d.ts +2 -2
  128. package/dist/_pkgs/affine-block-surface/extensions/morph-toolbar.js +5 -2
  129. package/dist/_pkgs/affine-block-surface/extensions/reading-widget.js +3 -2
  130. package/dist/_pkgs/affine-block-surface/extensions/svg-sketch-translations.d.ts +48 -0
  131. package/dist/_pkgs/affine-block-surface/extensions/svg-sketch-translations.js +120 -0
  132. package/dist/_pkgs/affine-block-surface/extensions/svg-sketch.js +36 -23
  133. package/dist/_pkgs/affine-block-surface/extensions/tags-toolbar.js +5 -5
  134. package/dist/_pkgs/affine-block-surface/framework-background/def.d.ts +4 -1
  135. package/dist/_pkgs/affine-block-surface/framework-background/def.js +6 -2
  136. package/dist/_pkgs/affine-block-surface-ref/components/placeholder.d.ts +2 -1
  137. package/dist/_pkgs/affine-block-surface-ref/components/placeholder.js +21 -6
  138. package/dist/_pkgs/affine-block-surface-ref/configs/slash-menu.js +24 -7
  139. package/dist/_pkgs/affine-block-surface-ref/configs/tooltips.js +2 -2
  140. package/dist/_pkgs/affine-block-surface-ref/index.d.ts +1 -0
  141. package/dist/_pkgs/affine-block-surface-ref/index.js +1 -0
  142. package/dist/_pkgs/affine-block-surface-ref/surface-ref-block-edgeless.js +1 -0
  143. package/dist/_pkgs/affine-block-surface-ref/surface-ref-block.js +1 -0
  144. package/dist/_pkgs/affine-block-surface-ref/translations.d.ts +83 -0
  145. package/dist/_pkgs/affine-block-surface-ref/translations.js +175 -0
  146. package/dist/_pkgs/affine-block-surface-ref/utils.d.ts +8 -1
  147. package/dist/_pkgs/affine-block-surface-ref/utils.js +12 -4
  148. package/dist/_pkgs/affine-components/caption/block-caption.js +3 -1
  149. package/dist/_pkgs/affine-components/card-style-dropdown-menu/dropdown-menu.js +4 -3
  150. package/dist/_pkgs/affine-components/citation/citation.d.ts +2 -0
  151. package/dist/_pkgs/affine-components/citation/citation.js +19 -3
  152. package/dist/_pkgs/affine-components/color-picker/button.d.ts +6 -0
  153. package/dist/_pkgs/affine-components/color-picker/button.js +15 -1
  154. package/dist/_pkgs/affine-components/color-picker/color-panel.d.ts +8 -0
  155. package/dist/_pkgs/affine-components/color-picker/color-panel.js +17 -2
  156. package/dist/_pkgs/affine-components/color-picker/color-picker.d.ts +4 -0
  157. package/dist/_pkgs/affine-components/color-picker/color-picker.js +27 -3
  158. package/dist/_pkgs/affine-components/color-picker/types.d.ts +21 -0
  159. package/dist/_pkgs/affine-components/color-picker/utils.d.ts +28 -2
  160. package/dist/_pkgs/affine-components/color-picker/utils.js +32 -0
  161. package/dist/_pkgs/affine-components/context-menu/menu-renderer.d.ts +3 -0
  162. package/dist/_pkgs/affine-components/context-menu/menu-renderer.js +34 -7
  163. package/dist/_pkgs/affine-components/edgeless-line-styles-panel/line-styles-panel.d.ts +2 -0
  164. package/dist/_pkgs/affine-components/edgeless-line-styles-panel/line-styles-panel.js +21 -2
  165. package/dist/_pkgs/affine-components/edgeless-line-width-panel/line-width-panel.d.ts +2 -0
  166. package/dist/_pkgs/affine-components/edgeless-line-width-panel/line-width-panel.js +18 -2
  167. package/dist/_pkgs/affine-components/edgeless-shape-color-picker/color-picker.d.ts +2 -0
  168. package/dist/_pkgs/affine-components/edgeless-shape-color-picker/color-picker.js +34 -5
  169. package/dist/_pkgs/affine-components/embed-card-modal/embed-card-create-modal.js +5 -4
  170. package/dist/_pkgs/affine-components/embed-card-modal/embed-card-edit-modal.js +11 -9
  171. package/dist/_pkgs/affine-components/filterable-list/index.d.ts +2 -0
  172. package/dist/_pkgs/affine-components/filterable-list/index.js +17 -2
  173. package/dist/_pkgs/affine-components/highlight-dropdown-menu/dropdown-menu.d.ts +3 -0
  174. package/dist/_pkgs/affine-components/highlight-dropdown-menu/dropdown-menu.js +40 -7
  175. package/dist/_pkgs/affine-components/icon-button/index.d.ts +1 -1
  176. package/dist/_pkgs/affine-components/icon-button/index.js +1 -1
  177. package/dist/_pkgs/affine-components/icon-picker/affine-icon-picker-panel.d.ts +6 -0
  178. package/dist/_pkgs/affine-components/icon-picker/affine-icon-picker-panel.js +42 -7
  179. package/dist/_pkgs/affine-components/icon-picker/emoji-picker-panel.d.ts +4 -0
  180. package/dist/_pkgs/affine-components/icon-picker/emoji-picker-panel.js +35 -5
  181. package/dist/_pkgs/affine-components/icon-picker/icon-picker.d.ts +2 -0
  182. package/dist/_pkgs/affine-components/icon-picker/icon-picker.js +22 -5
  183. package/dist/_pkgs/affine-components/linked-doc-title/doc-title.d.ts +2 -0
  184. package/dist/_pkgs/affine-components/linked-doc-title/doc-title.js +16 -3
  185. package/dist/_pkgs/affine-components/notification/linked-doc.js +5 -4
  186. package/dist/_pkgs/affine-components/open-doc-dropdown-menu/dropdown-menu.js +7 -4
  187. package/dist/_pkgs/affine-components/resource/resource.d.ts +16 -1
  188. package/dist/_pkgs/affine-components/resource/resource.js +19 -4
  189. package/dist/_pkgs/affine-components/resource/status.d.ts +2 -0
  190. package/dist/_pkgs/affine-components/resource/status.js +27 -12
  191. package/dist/_pkgs/affine-components/size-dropdown-menu/dropdown-menu.d.ts +4 -1
  192. package/dist/_pkgs/affine-components/size-dropdown-menu/dropdown-menu.js +23 -4
  193. package/dist/_pkgs/affine-components/toast/toast.d.ts +1 -1
  194. package/dist/_pkgs/affine-components/toast/toast.js +1 -1
  195. package/dist/_pkgs/affine-components/toggle-button/toggle-button.d.ts +3 -0
  196. package/dist/_pkgs/affine-components/toggle-button/toggle-button.js +18 -3
  197. package/dist/_pkgs/affine-components/toolbar/icon-button.d.ts +2 -0
  198. package/dist/_pkgs/affine-components/toolbar/icon-button.js +18 -2
  199. package/dist/_pkgs/affine-components/toolbar/tooltip.d.ts +3 -3
  200. package/dist/_pkgs/affine-components/toolbar/tooltip.js +3 -3
  201. package/dist/_pkgs/affine-components/translations.d.ts +141 -0
  202. package/dist/_pkgs/affine-components/translations.js +478 -0
  203. package/dist/_pkgs/affine-fragment-adapter-panel/adapter-panel.d.ts +3 -0
  204. package/dist/_pkgs/affine-fragment-adapter-panel/adapter-panel.js +12 -1
  205. package/dist/_pkgs/affine-fragment-adapter-panel/body/adapter-panel-body.js +4 -3
  206. package/dist/_pkgs/affine-fragment-adapter-panel/config.d.ts +13 -0
  207. package/dist/_pkgs/affine-fragment-adapter-panel/config.js +18 -4
  208. package/dist/_pkgs/affine-fragment-adapter-panel/header/adapter-menu.js +2 -2
  209. package/dist/_pkgs/affine-fragment-adapter-panel/header/adapter-panel-header.js +2 -2
  210. package/dist/_pkgs/affine-fragment-adapter-panel/translations.d.ts +24 -0
  211. package/dist/_pkgs/affine-fragment-adapter-panel/translations.js +37 -0
  212. package/dist/_pkgs/affine-fragment-doc-title/doc-title.d.ts +1 -0
  213. package/dist/_pkgs/affine-fragment-doc-title/doc-title.js +9 -1
  214. package/dist/_pkgs/affine-fragment-doc-title/translations.d.ts +13 -0
  215. package/dist/_pkgs/affine-fragment-doc-title/translations.js +17 -0
  216. package/dist/_pkgs/affine-fragment-frame-panel/body/frame-panel-body.js +3 -2
  217. package/dist/_pkgs/affine-fragment-frame-panel/header/frame-panel-header.js +10 -4
  218. package/dist/_pkgs/affine-fragment-frame-panel/header/frames-setting-menu.js +18 -6
  219. package/dist/_pkgs/affine-fragment-frame-panel/translations.d.ts +16 -0
  220. package/dist/_pkgs/affine-fragment-frame-panel/translations.js +44 -0
  221. package/dist/_pkgs/affine-fragment-outline/body/outline-notice.js +10 -4
  222. package/dist/_pkgs/affine-fragment-outline/body/outline-panel-body.js +6 -3
  223. package/dist/_pkgs/affine-fragment-outline/card/outline-card.js +13 -6
  224. package/dist/_pkgs/affine-fragment-outline/card/outline-preview.d.ts +1 -0
  225. package/dist/_pkgs/affine-fragment-outline/card/outline-preview.js +16 -9
  226. package/dist/_pkgs/affine-fragment-outline/config.d.ts +1 -20
  227. package/dist/_pkgs/affine-fragment-outline/config.js +8 -23
  228. package/dist/_pkgs/affine-fragment-outline/header/outline-panel-header.js +10 -3
  229. package/dist/_pkgs/affine-fragment-outline/header/outline-setting-menu.js +9 -2
  230. package/dist/_pkgs/affine-fragment-outline/outline-viewer.js +6 -3
  231. package/dist/_pkgs/affine-fragment-outline/translations.d.ts +54 -0
  232. package/dist/_pkgs/affine-fragment-outline/translations.js +110 -0
  233. package/dist/_pkgs/affine-gfx-brush/toolbar/components/eraser/eraser-tool-button.js +3 -2
  234. package/dist/_pkgs/affine-gfx-brush/toolbar/components/pen/consts.d.ts +3 -0
  235. package/dist/_pkgs/affine-gfx-brush/toolbar/components/pen/consts.js +3 -0
  236. package/dist/_pkgs/affine-gfx-brush/toolbar/components/pen/pen-menu.js +5 -4
  237. package/dist/_pkgs/affine-gfx-brush/toolbar/components/pen/pen-tool-button.js +3 -2
  238. package/dist/_pkgs/affine-gfx-brush/toolbar/configs/brush.js +4 -2
  239. package/dist/_pkgs/affine-gfx-brush/toolbar/configs/highlighter.js +4 -2
  240. package/dist/_pkgs/affine-gfx-brush/translations.d.ts +17 -0
  241. package/dist/_pkgs/affine-gfx-brush/translations.js +30 -0
  242. package/dist/_pkgs/affine-gfx-connector/direction/invert-direction.d.ts +8 -1
  243. package/dist/_pkgs/affine-gfx-connector/direction/invert-direction.js +7 -1
  244. package/dist/_pkgs/affine-gfx-connector/text/edgeless-connector-label-editor.js +3 -2
  245. package/dist/_pkgs/affine-gfx-connector/toolbar/config.d.ts +4 -1
  246. package/dist/_pkgs/affine-gfx-connector/toolbar/config.js +24 -10
  247. package/dist/_pkgs/affine-gfx-connector/toolbar/connector-dense-menu.js +7 -5
  248. package/dist/_pkgs/affine-gfx-connector/toolbar/connector-menu.js +8 -6
  249. package/dist/_pkgs/affine-gfx-connector/toolbar/connector-tool-button.js +4 -3
  250. package/dist/_pkgs/affine-gfx-connector/translations.d.ts +32 -0
  251. package/dist/_pkgs/affine-gfx-connector/translations.js +79 -0
  252. package/dist/_pkgs/affine-gfx-group/command/group-api.js +6 -1
  253. package/dist/_pkgs/affine-gfx-group/index.d.ts +1 -0
  254. package/dist/_pkgs/affine-gfx-group/index.js +1 -0
  255. package/dist/_pkgs/affine-gfx-group/toolbar/config.d.ts +6 -2
  256. package/dist/_pkgs/affine-gfx-group/toolbar/config.js +9 -4
  257. package/dist/_pkgs/affine-gfx-group/translations.d.ts +24 -0
  258. package/dist/_pkgs/affine-gfx-group/translations.js +33 -0
  259. package/dist/_pkgs/affine-gfx-link/toolbar/undo-dense-menu.js +2 -1
  260. package/dist/_pkgs/affine-gfx-link/toolbar/undo-tool-button.js +2 -1
  261. package/dist/_pkgs/affine-gfx-mindmap/index.d.ts +1 -0
  262. package/dist/_pkgs/affine-gfx-mindmap/index.js +1 -0
  263. package/dist/_pkgs/affine-gfx-mindmap/templates/index.js +628 -577
  264. package/dist/_pkgs/affine-gfx-mindmap/toolbar/basket-elements.js +7 -3
  265. package/dist/_pkgs/affine-gfx-mindmap/toolbar/config.js +9 -1
  266. package/dist/_pkgs/affine-gfx-mindmap/toolbar/mindmap-importing-placeholder.d.ts +4 -0
  267. package/dist/_pkgs/affine-gfx-mindmap/toolbar/mindmap-importing-placeholder.js +70 -7
  268. package/dist/_pkgs/affine-gfx-mindmap/toolbar/mindmap-menu.js +8 -5
  269. package/dist/_pkgs/affine-gfx-mindmap/toolbar/mindmap-tool-button.js +4 -2
  270. package/dist/_pkgs/affine-gfx-mindmap/toolbar/senior-tool.js +7 -2
  271. package/dist/_pkgs/affine-gfx-mindmap/toolbar/utils/import-mindmap.d.ts +2 -1
  272. package/dist/_pkgs/affine-gfx-mindmap/toolbar/utils/import-mindmap.js +16 -8
  273. package/dist/_pkgs/affine-gfx-mindmap/translations.d.ts +84 -0
  274. package/dist/_pkgs/affine-gfx-mindmap/translations.js +171 -0
  275. package/dist/_pkgs/affine-gfx-note/components/note-display-mode-panel.d.ts +8 -0
  276. package/dist/_pkgs/affine-gfx-note/components/note-display-mode-panel.js +24 -9
  277. package/dist/_pkgs/affine-gfx-note/components/note-shadow-panel.d.ts +9 -0
  278. package/dist/_pkgs/affine-gfx-note/components/note-shadow-panel.js +28 -8
  279. package/dist/_pkgs/affine-gfx-note/toolbar/note-menu-config.d.ts +2 -1
  280. package/dist/_pkgs/affine-gfx-note/toolbar/note-menu-config.js +42 -73
  281. package/dist/_pkgs/affine-gfx-note/toolbar/note-menu.js +21 -17
  282. package/dist/_pkgs/affine-gfx-note/toolbar/note-senior-button.js +3 -2
  283. package/dist/_pkgs/affine-gfx-note/toolbar/note-tool-button.js +3 -1
  284. package/dist/_pkgs/affine-gfx-note/toolbar/senior-tool.js +3 -1
  285. package/dist/_pkgs/affine-gfx-note/translations.d.ts +27 -0
  286. package/dist/_pkgs/affine-gfx-note/translations.js +59 -0
  287. package/dist/_pkgs/affine-gfx-pointer/quick-tool/default-tool-button.js +10 -2
  288. package/dist/_pkgs/affine-gfx-pointer/translations.d.ts +9 -0
  289. package/dist/_pkgs/affine-gfx-pointer/translations.js +17 -0
  290. package/dist/_pkgs/affine-gfx-shape/components/shape-panel.d.ts +4 -0
  291. package/dist/_pkgs/affine-gfx-shape/components/shape-panel.js +17 -3
  292. package/dist/_pkgs/affine-gfx-shape/components/shape-style-panel.d.ts +4 -0
  293. package/dist/_pkgs/affine-gfx-shape/components/shape-style-panel.js +23 -5
  294. package/dist/_pkgs/affine-gfx-shape/draggable/shape-menu.d.ts +0 -1
  295. package/dist/_pkgs/affine-gfx-shape/draggable/shape-menu.js +6 -46
  296. package/dist/_pkgs/affine-gfx-shape/draggable/shape-tool-button.js +3 -1
  297. package/dist/_pkgs/affine-gfx-shape/toolbar/config.d.ts +2 -0
  298. package/dist/_pkgs/affine-gfx-shape/toolbar/config.js +29 -8
  299. package/dist/_pkgs/affine-gfx-shape/toolbar/senior-tool.js +2 -0
  300. package/dist/_pkgs/affine-gfx-shape/toolbar/shape-menu-config.d.ts +3 -0
  301. package/dist/_pkgs/affine-gfx-shape/toolbar/shape-menu-config.js +7 -0
  302. package/dist/_pkgs/affine-gfx-shape/translations.d.ts +37 -0
  303. package/dist/_pkgs/affine-gfx-shape/translations.js +93 -0
  304. package/dist/_pkgs/affine-gfx-template/builtin/other.js +101 -56
  305. package/dist/_pkgs/affine-gfx-template/contribute.js +8 -1
  306. package/dist/_pkgs/affine-gfx-template/index.d.ts +2 -0
  307. package/dist/_pkgs/affine-gfx-template/index.js +2 -0
  308. package/dist/_pkgs/affine-gfx-template/snapshot-from-action.d.ts +6 -1
  309. package/dist/_pkgs/affine-gfx-template/snapshot-from-action.js +15 -5
  310. package/dist/_pkgs/affine-gfx-template/toolbar/builtin-templates.d.ts +1 -0
  311. package/dist/_pkgs/affine-gfx-template/toolbar/builtin-templates.js +12 -0
  312. package/dist/_pkgs/affine-gfx-template/toolbar/resolve-name.d.ts +25 -0
  313. package/dist/_pkgs/affine-gfx-template/toolbar/resolve-name.js +36 -0
  314. package/dist/_pkgs/affine-gfx-template/toolbar/senior-tool.js +3 -1
  315. package/dist/_pkgs/affine-gfx-template/toolbar/template-panel.d.ts +1 -0
  316. package/dist/_pkgs/affine-gfx-template/toolbar/template-panel.js +30 -8
  317. package/dist/_pkgs/affine-gfx-template/toolbar/template-type.d.ts +41 -0
  318. package/dist/_pkgs/affine-gfx-template/translations.d.ts +71 -0
  319. package/dist/_pkgs/affine-gfx-template/translations.js +209 -0
  320. package/dist/_pkgs/affine-gfx-text/edgeless-text-editor.js +3 -2
  321. package/dist/_pkgs/affine-gfx-text/toolbar/actions.d.ts +1 -1
  322. package/dist/_pkgs/affine-gfx-text/toolbar/actions.js +22 -9
  323. package/dist/_pkgs/affine-gfx-text/toolbar/text-menu.js +1 -0
  324. package/dist/_pkgs/affine-gfx-text/translations.d.ts +31 -0
  325. package/dist/_pkgs/affine-gfx-text/translations.js +64 -0
  326. package/dist/_pkgs/affine-inline-footnote/footnote-node/footnote-popup.js +8 -2
  327. package/dist/_pkgs/affine-inline-latex/latex-node/latex-editor-menu.js +5 -2
  328. package/dist/_pkgs/affine-inline-latex/latex-node/latex-node.js +7 -2
  329. package/dist/_pkgs/affine-inline-latex/translations.d.ts +13 -0
  330. package/dist/_pkgs/affine-inline-latex/translations.js +16 -0
  331. package/dist/_pkgs/affine-inline-link/link-node/configs/toolbar.d.ts +3 -3
  332. package/dist/_pkgs/affine-inline-link/link-node/configs/toolbar.js +6 -5
  333. package/dist/_pkgs/affine-inline-link/link-node/link-popup/link-popup.js +11 -5
  334. package/dist/_pkgs/affine-inline-link/translations.d.ts +23 -0
  335. package/dist/_pkgs/affine-inline-link/translations.js +44 -0
  336. package/dist/_pkgs/affine-inline-mention/affine-mention.js +11 -5
  337. package/dist/_pkgs/affine-inline-mention/translations.d.ts +16 -0
  338. package/dist/_pkgs/affine-inline-mention/translations.js +29 -0
  339. package/dist/_pkgs/affine-inline-preset/command/config.d.ts +3 -0
  340. package/dist/_pkgs/affine-inline-preset/command/config.js +8 -0
  341. package/dist/_pkgs/affine-inline-preset/markdown.d.ts +3 -0
  342. package/dist/_pkgs/affine-inline-preset/markdown.js +19 -0
  343. package/dist/_pkgs/affine-inline-preset/translations.d.ts +25 -0
  344. package/dist/_pkgs/affine-inline-preset/translations.js +28 -0
  345. package/dist/_pkgs/affine-inline-reference/reference-node/configs/toolbar.js +2 -2
  346. package/dist/_pkgs/affine-inline-reference/reference-node/reference-node.js +3 -3
  347. package/dist/_pkgs/affine-inline-reference/reference-node/reference-popup/reference-popup.js +8 -6
  348. package/dist/_pkgs/affine-inline-reference/translations.d.ts +8 -0
  349. package/dist/_pkgs/affine-inline-reference/translations.js +13 -0
  350. package/dist/_pkgs/affine-rich-text/conversion.d.ts +13 -0
  351. package/dist/_pkgs/affine-rich-text/conversion.js +27 -0
  352. package/dist/_pkgs/affine-shared/adapters/clipboard/clipboard.js +1 -1
  353. package/dist/_pkgs/affine-shared/adapters/clipboard/utils.d.ts +2 -1
  354. package/dist/_pkgs/affine-shared/adapters/clipboard/utils.js +6 -3
  355. package/dist/_pkgs/affine-shared/adapters/markdown/markdown.js +5 -2
  356. package/dist/_pkgs/affine-shared/adapters/mix-text.js +5 -2
  357. package/dist/_pkgs/affine-shared/adapters/plain-text/plain-text.js +5 -2
  358. package/dist/_pkgs/affine-shared/adapters/utils/index.d.ts +1 -0
  359. package/dist/_pkgs/affine-shared/adapters/utils/index.js +1 -0
  360. package/dist/_pkgs/affine-shared/adapters/utils/wording.d.ts +9 -0
  361. package/dist/_pkgs/affine-shared/adapters/utils/wording.js +12 -0
  362. package/dist/_pkgs/affine-shared/consts/heading.d.ts +29 -0
  363. package/dist/_pkgs/affine-shared/consts/heading.js +70 -0
  364. package/dist/_pkgs/affine-shared/consts/index.d.ts +2 -0
  365. package/dist/_pkgs/affine-shared/consts/index.js +2 -0
  366. package/dist/_pkgs/affine-shared/consts/notation.d.ts +67 -0
  367. package/dist/_pkgs/affine-shared/consts/notation.js +65 -0
  368. package/dist/_pkgs/affine-shared/services/comment-service/utils.js +2 -0
  369. package/dist/_pkgs/affine-shared/services/doc-display-meta-service.js +6 -3
  370. package/dist/_pkgs/affine-shared/services/notification-service.js +18 -1
  371. package/dist/_pkgs/affine-shared/services/open-doc-config.d.ts +0 -1
  372. package/dist/_pkgs/affine-shared/services/open-doc-config.js +0 -2
  373. package/dist/_pkgs/affine-shared/services/translation-service/chrome.d.ts +362 -0
  374. package/dist/_pkgs/affine-shared/services/translation-service/chrome.js +955 -3
  375. package/dist/_pkgs/affine-shared/services/translation-service/index.d.ts +40 -2
  376. package/dist/_pkgs/affine-shared/services/translation-service/index.js +44 -3
  377. package/dist/_pkgs/affine-shared/services/universe-tag-defs-service.d.ts +83 -2
  378. package/dist/_pkgs/affine-shared/services/universe-tag-defs-service.js +92 -0
  379. package/dist/_pkgs/affine-widget-drag-handle/components/edgeless-preview/preview.d.ts +4 -0
  380. package/dist/_pkgs/affine-widget-drag-handle/components/edgeless-preview/preview.js +21 -8
  381. package/dist/_pkgs/affine-widget-drag-handle/helpers/preview-helper.js +1 -0
  382. package/dist/_pkgs/affine-widget-drag-handle/translations.d.ts +14 -0
  383. package/dist/_pkgs/affine-widget-drag-handle/translations.js +35 -0
  384. package/dist/_pkgs/affine-widget-edgeless-auto-connect/index.js +4 -3
  385. package/dist/_pkgs/affine-widget-edgeless-auto-connect/translations.d.ts +6 -0
  386. package/dist/_pkgs/affine-widget-edgeless-auto-connect/translations.js +14 -0
  387. package/dist/_pkgs/affine-widget-edgeless-selected-rect/auto-complete-panel.js +8 -5
  388. package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-auto-complete.js +3 -2
  389. package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-element-link.js +3 -1
  390. package/dist/_pkgs/affine-widget-edgeless-selected-rect/translations.d.ts +17 -0
  391. package/dist/_pkgs/affine-widget-edgeless-selected-rect/translations.js +30 -0
  392. package/dist/_pkgs/affine-widget-edgeless-toolbar/button/tool-icon-button.d.ts +4 -0
  393. package/dist/_pkgs/affine-widget-edgeless-toolbar/button/tool-icon-button.js +18 -2
  394. package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/artefact-catalogue-widget.js +2 -2
  395. package/dist/_pkgs/affine-widget-edgeless-toolbar/config/consts.d.ts +2 -0
  396. package/dist/_pkgs/affine-widget-edgeless-toolbar/config/consts.js +3 -0
  397. package/dist/_pkgs/affine-widget-edgeless-toolbar/config/types.d.ts +18 -1
  398. package/dist/_pkgs/affine-widget-edgeless-toolbar/config/utils.d.ts +8 -3
  399. package/dist/_pkgs/affine-widget-edgeless-toolbar/config/utils.js +38 -18
  400. package/dist/_pkgs/affine-widget-edgeless-toolbar/edgeless-toolbar.js +2 -1
  401. package/dist/_pkgs/affine-widget-edgeless-toolbar/panel/font-weight-and-style-panel.d.ts +8 -0
  402. package/dist/_pkgs/affine-widget-edgeless-toolbar/panel/font-weight-and-style-panel.js +31 -8
  403. package/dist/_pkgs/affine-widget-edgeless-toolbar/translations.d.ts +15 -0
  404. package/dist/_pkgs/affine-widget-edgeless-toolbar/translations.js +20 -0
  405. package/dist/_pkgs/affine-widget-edgeless-zoom-toolbar/translations.d.ts +7 -0
  406. package/dist/_pkgs/affine-widget-edgeless-zoom-toolbar/translations.js +23 -0
  407. package/dist/_pkgs/affine-widget-edgeless-zoom-toolbar/zoom-bar-toggle-button.js +3 -1
  408. package/dist/_pkgs/affine-widget-edgeless-zoom-toolbar/zoom-toolbar.js +5 -3
  409. package/dist/_pkgs/affine-widget-linked-doc/config.js +15 -10
  410. package/dist/_pkgs/affine-widget-linked-doc/import-doc/import-doc.d.ts +12 -1
  411. package/dist/_pkgs/affine-widget-linked-doc/import-doc/import-doc.js +27 -18
  412. package/dist/_pkgs/affine-widget-linked-doc/import-doc/index.d.ts +4 -1
  413. package/dist/_pkgs/affine-widget-linked-doc/import-doc/index.js +2 -2
  414. package/dist/_pkgs/affine-widget-linked-doc/linked-doc-popover.js +4 -1
  415. package/dist/_pkgs/affine-widget-linked-doc/mobile-linked-doc-menu.js +6 -2
  416. package/dist/_pkgs/affine-widget-linked-doc/transformers/html.js +3 -2
  417. package/dist/_pkgs/affine-widget-linked-doc/transformers/markdown.js +3 -2
  418. package/dist/_pkgs/affine-widget-linked-doc/translations.d.ts +53 -0
  419. package/dist/_pkgs/affine-widget-linked-doc/translations.js +104 -0
  420. package/dist/_pkgs/affine-widget-remote-selection/edgeless/index.js +4 -1
  421. package/dist/_pkgs/affine-widget-remote-selection/translations.d.ts +12 -0
  422. package/dist/_pkgs/affine-widget-remote-selection/translations.js +12 -0
  423. package/dist/_pkgs/affine-widget-slash-menu/config.js +15 -0
  424. package/dist/_pkgs/affine-widget-slash-menu/index.d.ts +1 -0
  425. package/dist/_pkgs/affine-widget-slash-menu/index.js +1 -0
  426. package/dist/_pkgs/affine-widget-slash-menu/slash-menu-popover.js +30 -15
  427. package/dist/_pkgs/affine-widget-slash-menu/tooltips/copy.js +1 -1
  428. package/dist/_pkgs/affine-widget-slash-menu/tooltips/delete.js +2 -2
  429. package/dist/_pkgs/affine-widget-slash-menu/tooltips/index.js +9 -0
  430. package/dist/_pkgs/affine-widget-slash-menu/tooltips/move-down.js +2 -2
  431. package/dist/_pkgs/affine-widget-slash-menu/tooltips/move-up.js +2 -2
  432. package/dist/_pkgs/affine-widget-slash-menu/tooltips/now.js +3 -3
  433. package/dist/_pkgs/affine-widget-slash-menu/tooltips/today.js +2 -2
  434. package/dist/_pkgs/affine-widget-slash-menu/tooltips/tomorrow.js +3 -3
  435. package/dist/_pkgs/affine-widget-slash-menu/tooltips/yesterday.js +3 -3
  436. package/dist/_pkgs/affine-widget-slash-menu/translations.d.ts +91 -0
  437. package/dist/_pkgs/affine-widget-slash-menu/translations.js +175 -0
  438. package/dist/_pkgs/affine-widget-slash-menu/types.d.ts +18 -0
  439. package/dist/_pkgs/affine-widget-slash-menu/utils.d.ts +20 -1
  440. package/dist/_pkgs/affine-widget-slash-menu/utils.js +37 -0
  441. package/dist/_pkgs/affine-widget-toolbar/translations.d.ts +9 -0
  442. package/dist/_pkgs/affine-widget-toolbar/translations.js +13 -0
  443. package/dist/_pkgs/affine-widget-toolbar/utils.js +2 -1
  444. package/dist/_pkgs/std/extension/translation-manifest.d.ts +7 -0
  445. package/dist/_pkgs/std/translations.d.ts +24 -0
  446. package/dist/_pkgs/std/translations.js +28 -0
  447. package/dist/_pkgs/std/view/element/block-component.js +24 -7
  448. package/dist/translations.js +144 -5
  449. package/package.json +1 -1
@@ -26,8 +26,14 @@ export interface TranslationService {
26
26
  /**
27
27
  * Resolve an i18n key. Return `undefined` when the catalogue has no entry,
28
28
  * so the caller can fall back rather than render an empty bubble.
29
+ *
30
+ * `params` carries the values of a sentence with holes in it ("Failed to
31
+ * upload {{name}}"). The host interpolates them — and pluralises on `count` —
32
+ * with its own i18n stack; the placeholders are i18next's `{{name}}`, so a
33
+ * catalogue seeded from the manifest's fallbacks works as is. A host that
34
+ * ignores `params` still type-checks and simply shows its unfilled wording.
29
35
  */
30
- t(key: string): string | undefined;
36
+ t(key: string, params?: TranslationParams): string | undefined;
31
37
  /**
32
38
  * The language the catalogue is currently serving, as a BCP-47 tag
33
39
  * (`'fr'`, `'en-GB'`). Optional, and NOT locale negotiation — the library
@@ -51,6 +57,34 @@ export interface TranslationService {
51
57
  * framework has a convention that holds in `en-GB` and not in `en-US`.
52
58
  */
53
59
  export declare function hostLanguage(std: BlockStdScope): string | undefined;
60
+ /**
61
+ * The host's full language tag (`'fr-CA'`), or `undefined` when no host said —
62
+ * for `Intl` formatting of dates and numbers, where the region matters
63
+ * (`en-GB` and `en-US` write a date differently). `undefined` hands `Intl` the
64
+ * runtime default, which is what the editor did before hosts could say.
65
+ */
66
+ export declare function hostLocale(std: BlockStdScope): string | undefined;
67
+ /**
68
+ * `hostLocale(std)`, defaulting to `'en-US'` when the host said nothing —
69
+ * the locale every `Intl.*Format` call in the library resolves against.
70
+ *
71
+ * Dates and numbers fall back to English like every string does, so a
72
+ * standalone playground stays deterministic: `Intl`'s own runtime-default
73
+ * fallback would instead read whatever locale the machine happens to have,
74
+ * which is not a fallback a test can assert on.
75
+ */
76
+ export declare function formatLocale(std: BlockStdScope): string;
77
+ /** The values of a wording's `{{name}}` placeholders. */
78
+ export type TranslationParams = Record<string, string | number>;
79
+ /**
80
+ * Fill `{{name}}` placeholders from `params`; a placeholder with no value is
81
+ * left as written, so a missing argument shows rather than vanishes.
82
+ *
83
+ * The library's side of interpolation only — used on the English fallback when
84
+ * the host has no entry. Pluralisation is the host's: a fallback stays neutral
85
+ * ("{{count}} element(s)").
86
+ */
87
+ export declare function fillPlaceholders(wording: string, params?: TranslationParams): string;
54
88
  export declare const TranslationProvider: import("../../../global/di/types.js").ServiceIdentifier<TranslationService> & (<U extends TranslationService = TranslationService>(variant: import("../../../global/di/types.js").ServiceVariant) => import("../../../global/di/types.js").ServiceIdentifier<U>);
55
89
  export declare const TranslationExtension: (service: TranslationService) => ExtensionType;
56
90
  /**
@@ -65,5 +99,9 @@ export declare const TranslationExtension: (service: TranslationService) => Exte
65
99
  * made up.
66
100
  * - **Chrome** (the word "Warning" on a severity chip) passes an English
67
101
  * default, so a standalone playground reads correctly without a catalogue.
102
+ *
103
+ * `params` fill the wording's `{{name}}` placeholders: handed to the host,
104
+ * which interpolates its own translation, and filled here into the fallback
105
+ * when the host has none.
68
106
  */
69
- export declare function translateKey(std: BlockStdScope, key: string, fallback?: string): string;
107
+ export declare function translateKey(std: BlockStdScope, key: string, fallback?: string, params?: TranslationParams): string;
@@ -13,6 +13,41 @@ export function hostLanguage(std) {
13
13
  return undefined;
14
14
  return tag.split('-')[0].toLowerCase();
15
15
  }
16
+ /**
17
+ * The host's full language tag (`'fr-CA'`), or `undefined` when no host said —
18
+ * for `Intl` formatting of dates and numbers, where the region matters
19
+ * (`en-GB` and `en-US` write a date differently). `undefined` hands `Intl` the
20
+ * runtime default, which is what the editor did before hosts could say.
21
+ */
22
+ export function hostLocale(std) {
23
+ const tag = std.getOptional(TranslationProvider)?.language;
24
+ return typeof tag === 'string' && tag.length > 0 ? tag : undefined;
25
+ }
26
+ /**
27
+ * `hostLocale(std)`, defaulting to `'en-US'` when the host said nothing —
28
+ * the locale every `Intl.*Format` call in the library resolves against.
29
+ *
30
+ * Dates and numbers fall back to English like every string does, so a
31
+ * standalone playground stays deterministic: `Intl`'s own runtime-default
32
+ * fallback would instead read whatever locale the machine happens to have,
33
+ * which is not a fallback a test can assert on.
34
+ */
35
+ export function formatLocale(std) {
36
+ return hostLocale(std) ?? 'en-US';
37
+ }
38
+ /**
39
+ * Fill `{{name}}` placeholders from `params`; a placeholder with no value is
40
+ * left as written, so a missing argument shows rather than vanishes.
41
+ *
42
+ * The library's side of interpolation only — used on the English fallback when
43
+ * the host has no entry. Pluralisation is the host's: a fallback stays neutral
44
+ * ("{{count}} element(s)").
45
+ */
46
+ export function fillPlaceholders(wording, params) {
47
+ if (!params)
48
+ return wording;
49
+ return wording.replace(/\{\{\s*(\w+)\s*\}\}/g, (hole, name) => name in params ? String(params[name]) : hole);
50
+ }
16
51
  export const TranslationProvider = createIdentifier('AffineTranslationService');
17
52
  export const TranslationExtension = (service) => {
18
53
  return {
@@ -33,8 +68,14 @@ export const TranslationExtension = (service) => {
33
68
  * made up.
34
69
  * - **Chrome** (the word "Warning" on a severity chip) passes an English
35
70
  * default, so a standalone playground reads correctly without a catalogue.
71
+ *
72
+ * `params` fill the wording's `{{name}}` placeholders: handed to the host,
73
+ * which interpolates its own translation, and filled here into the fallback
74
+ * when the host has none.
36
75
  */
37
- export function translateKey(std, key, fallback = key) {
38
- const resolved = std.getOptional(TranslationProvider)?.t(key);
39
- return resolved !== undefined && resolved !== '' ? resolved : fallback;
76
+ export function translateKey(std, key, fallback = key, params) {
77
+ const resolved = std.getOptional(TranslationProvider)?.t(key, params);
78
+ return resolved !== undefined && resolved !== ''
79
+ ? resolved
80
+ : fillPlaceholders(fallback, params);
40
81
  }
@@ -1,4 +1,4 @@
1
- import type { BlockStdScope, FrameworkId } from '../../std/index.js';
1
+ import type { BlockStdScope, FrameworkId, TranslationKeyManifestEntry } from '../../std/index.js';
2
2
  import type { RoleDefs, RoleId } from '../../std/gfx/index.js';
3
3
  import type { ExtensionType } from '../../store/index.js';
4
4
  /**
@@ -15,9 +15,31 @@ export type TagValueId = string;
15
15
  export type TagValueDef = {
16
16
  /** `'<tagId>/<local>'`, e.g. `'wardley:nature/data'`. */
17
17
  id: TagValueId;
18
- /** Display label, already localized by the host. */
18
+ /**
19
+ * Display label. For a HOST-seeded pack this is already localized — the app
20
+ * seeds a pack per deployment and `label` is that deployment's own wording,
21
+ * same as ever. For the library's OWN pack (`WARDLEY_TAG_DEFS`, the format's
22
+ * worked example) it is the ENGLISH fallback beside {@link labelKey}, on the
23
+ * same seam every other library string uses (ADR 0007 § 2bis's rule for role
24
+ * labels, extended here to tag values).
25
+ */
19
26
  label: string;
27
+ /**
28
+ * i18n key resolved by the host's catalogue, `label` its fallback — see
29
+ * {@link translateTagLabel}. Optional and additive: a pack seeded before this
30
+ * field existed (or a host pack that never sets it) still shows `label`
31
+ * exactly as it always has.
32
+ */
33
+ labelKey?: string;
20
34
  description?: string;
35
+ /**
36
+ * i18n key resolved by the host's catalogue, `description` its fallback —
37
+ * see {@link translateTagDescription}. Optional and additive, on the same
38
+ * seam as {@link labelKey}: a pack seeded before this field existed (or a
39
+ * host pack that never sets it) still shows `description` exactly as it
40
+ * always has.
41
+ */
42
+ descriptionKey?: string;
21
43
  /** Advisory colour token. The library may ignore it; it never affects layout. */
22
44
  color?: string;
23
45
  /** Hidden from pickers; still displayed when already present on an element. */
@@ -26,8 +48,13 @@ export type TagValueDef = {
26
48
  export type TagDef = {
27
49
  /** `'<framework>:<local>'`, e.g. `'wardley:nature'`. */
28
50
  id: QualifiedId;
51
+ /** See {@link TagValueDef.label}. */
29
52
  label: string;
53
+ /** See {@link TagValueDef.labelKey}. */
54
+ labelKey?: string;
30
55
  description?: string;
56
+ /** See {@link TagValueDef.descriptionKey}. */
57
+ descriptionKey?: string;
31
58
  /** How many values an element may carry for this tag. */
32
59
  cardinality: 'single' | 'multi';
33
60
  /** A closed list, or `'open'` for free-text values. */
@@ -68,8 +95,62 @@ export type UniverseTagDefs = {
68
95
  packId: string;
69
96
  framework: FrameworkId;
70
97
  label: string;
98
+ /**
99
+ * i18n key for the PACK's own `label` — see {@link TagValueDef.labelKey}
100
+ * for the seam. Optional and additive: a pack seeded before this field
101
+ * existed (or a host pack that never sets it) still shows `label` exactly
102
+ * as it always has.
103
+ */
104
+ labelKey?: string;
71
105
  tags: TagDef[];
72
106
  };
107
+ /**
108
+ * The DISPLAYED wording of a tag def or a tag value def — {@link translateKey}
109
+ * over {@link TagDef.labelKey} / {@link TagValueDef.labelKey} when present,
110
+ * `label` unresolved otherwise (a host pack that never sets `labelKey` shows
111
+ * exactly what it always has).
112
+ *
113
+ * The one function every RENDERER of a tag label goes through — the "Qualify"
114
+ * toolbar's section titles and options (`tags-toolbar.ts`), the reading
115
+ * panel's nature value (`reading-widget.ts`). `resolveRecordNature` in
116
+ * `reading.ts` deliberately does NOT: it matches an external record's words
117
+ * against `label`, which is a comparison and not a display, and the wording it
118
+ * matches against is the one the record itself was written with.
119
+ *
120
+ * The same shape resolves a PACK's own `label` too (`UniverseTagDefs.label` /
121
+ * `.labelKey`): both carry an identical `{ label, labelKey? }` pair, so no
122
+ * second function is needed for it.
123
+ */
124
+ export declare function translateTagLabel(std: BlockStdScope, def: Pick<TagDef | TagValueDef | UniverseTagDefs, 'label' | 'labelKey'>): string;
125
+ /**
126
+ * The DISPLAYED description of a tag def or a tag value def —
127
+ * {@link translateKey} over {@link TagDef.descriptionKey} /
128
+ * {@link TagValueDef.descriptionKey} when present, `description` unresolved
129
+ * otherwise. The mirror of {@link translateTagLabel} for the `description`
130
+ * field, on the same seam: a def with no `descriptionKey` (a pack seeded
131
+ * before the field existed, or one that never sets it) keeps showing
132
+ * `description` exactly as it always has — including `undefined`, when the
133
+ * def carries no description at all.
134
+ */
135
+ export declare function translateTagDescription(std: BlockStdScope, def: Pick<TagDef | TagValueDef, 'description' | 'descriptionKey'>): string | undefined;
136
+ /**
137
+ * A pack's contribution to the translation-key manifest — every `labelKey`
138
+ * (the pack's own, a tag's, or a tag value's) and every `descriptionKey` (a
139
+ * tag's or a tag value's) it declares, paired with `label` / `description`
140
+ * as its English fallback.
141
+ *
142
+ * Manual, not `collectTranslationKeys('tag', pack)`: that generic walker pairs
143
+ * a `labelKey` with a sibling `labelFallback` (the roles' / rules' own
144
+ * convention), and this format's fallback field is named `label` — the same
145
+ * field a host-seeded pack's ALREADY-localized wording lives in. Walking it
146
+ * generically would either miss the fallback entirely or, worse, treat a
147
+ * host's own pack as a manifest contribution the library never asked for.
148
+ *
149
+ * For the library's own pack ONLY (`WARDLEY_TAG_DEFS` — see
150
+ * `wardleyTranslationEntries`); a host's app-seeded pack needs no entry here,
151
+ * because it carries no key at all unless the host itself decides to add one.
152
+ */
153
+ export declare function tagDefsTranslationEntries(pack: UniverseTagDefs): TranslationKeyManifestEntry[];
73
154
  /** A seed-time problem, for a host diagnostics panel. Never thrown. */
74
155
  export type UniverseDefIssue = {
75
156
  severity: 'warning' | 'error';
@@ -24,11 +24,101 @@
24
24
  import { createIdentifier } from '../../global/di/index.js';
25
25
  import { FRAMEWORK_IDS } from '../../std/index.js';
26
26
  import { roleIsA } from '../../std/gfx/index.js';
27
+ import { translateKey } from './translation-service/index.js';
27
28
  /**
28
29
  * Lower-kebab, case-sensitive, no unicode, no dots. Hyphenated framework ids
29
30
  * are legal, so `cynefin-estuarine:domain` is well formed.
30
31
  */
31
32
  const ID_PATTERN = /^[a-z0-9][a-z0-9-]*:[a-z0-9][a-z0-9-]*(\/[a-z0-9][a-z0-9-]*)?$/;
33
+ /**
34
+ * The DISPLAYED wording of a tag def or a tag value def — {@link translateKey}
35
+ * over {@link TagDef.labelKey} / {@link TagValueDef.labelKey} when present,
36
+ * `label` unresolved otherwise (a host pack that never sets `labelKey` shows
37
+ * exactly what it always has).
38
+ *
39
+ * The one function every RENDERER of a tag label goes through — the "Qualify"
40
+ * toolbar's section titles and options (`tags-toolbar.ts`), the reading
41
+ * panel's nature value (`reading-widget.ts`). `resolveRecordNature` in
42
+ * `reading.ts` deliberately does NOT: it matches an external record's words
43
+ * against `label`, which is a comparison and not a display, and the wording it
44
+ * matches against is the one the record itself was written with.
45
+ *
46
+ * The same shape resolves a PACK's own `label` too (`UniverseTagDefs.label` /
47
+ * `.labelKey`): both carry an identical `{ label, labelKey? }` pair, so no
48
+ * second function is needed for it.
49
+ */
50
+ export function translateTagLabel(std, def) {
51
+ return def.labelKey ? translateKey(std, def.labelKey, def.label) : def.label;
52
+ }
53
+ /**
54
+ * The DISPLAYED description of a tag def or a tag value def —
55
+ * {@link translateKey} over {@link TagDef.descriptionKey} /
56
+ * {@link TagValueDef.descriptionKey} when present, `description` unresolved
57
+ * otherwise. The mirror of {@link translateTagLabel} for the `description`
58
+ * field, on the same seam: a def with no `descriptionKey` (a pack seeded
59
+ * before the field existed, or one that never sets it) keeps showing
60
+ * `description` exactly as it always has — including `undefined`, when the
61
+ * def carries no description at all.
62
+ */
63
+ export function translateTagDescription(std, def) {
64
+ if (!def.descriptionKey)
65
+ return def.description;
66
+ return translateKey(std, def.descriptionKey, def.description ?? '');
67
+ }
68
+ /**
69
+ * A pack's contribution to the translation-key manifest — every `labelKey`
70
+ * (the pack's own, a tag's, or a tag value's) and every `descriptionKey` (a
71
+ * tag's or a tag value's) it declares, paired with `label` / `description`
72
+ * as its English fallback.
73
+ *
74
+ * Manual, not `collectTranslationKeys('tag', pack)`: that generic walker pairs
75
+ * a `labelKey` with a sibling `labelFallback` (the roles' / rules' own
76
+ * convention), and this format's fallback field is named `label` — the same
77
+ * field a host-seeded pack's ALREADY-localized wording lives in. Walking it
78
+ * generically would either miss the fallback entirely or, worse, treat a
79
+ * host's own pack as a manifest contribution the library never asked for.
80
+ *
81
+ * For the library's own pack ONLY (`WARDLEY_TAG_DEFS` — see
82
+ * `wardleyTranslationEntries`); a host's app-seeded pack needs no entry here,
83
+ * because it carries no key at all unless the host itself decides to add one.
84
+ */
85
+ export function tagDefsTranslationEntries(pack) {
86
+ const out = [];
87
+ if (pack.labelKey) {
88
+ out.push({ key: pack.labelKey, fallback: pack.label, source: 'tag' });
89
+ }
90
+ for (const tag of pack.tags) {
91
+ if (tag.labelKey) {
92
+ out.push({ key: tag.labelKey, fallback: tag.label, source: 'tag' });
93
+ }
94
+ if (tag.descriptionKey) {
95
+ out.push({
96
+ key: tag.descriptionKey,
97
+ fallback: tag.description ?? '',
98
+ source: 'tag',
99
+ });
100
+ }
101
+ if (tag.values !== 'open') {
102
+ for (const value of tag.values) {
103
+ if (value.labelKey) {
104
+ out.push({
105
+ key: value.labelKey,
106
+ fallback: value.label,
107
+ source: 'tag',
108
+ });
109
+ }
110
+ if (value.descriptionKey) {
111
+ out.push({
112
+ key: value.descriptionKey,
113
+ fallback: value.description ?? '',
114
+ source: 'tag',
115
+ });
116
+ }
117
+ }
118
+ }
119
+ }
120
+ return out;
121
+ }
32
122
  /**
33
123
  * Variant-parameterized: **one registration per pack, keyed by `packId`** —
34
124
  * the same mechanism as `SpotlightHostExtension(elementType)` and
@@ -158,6 +248,8 @@ function mergeTagDef(drafts, def, pack, issue, rank) {
158
248
  const draft = existing.def;
159
249
  if (def.label !== undefined)
160
250
  draft.label = def.label;
251
+ if (def.labelKey !== undefined)
252
+ draft.labelKey = def.labelKey;
161
253
  if (def.description !== undefined)
162
254
  draft.description = def.description;
163
255
  if (def.order !== undefined)
@@ -1,3 +1,4 @@
1
+ import type { BlockStdScope } from '../../../std/index.js';
1
2
  import { LitElement } from 'lit';
2
3
  declare global {
3
4
  interface HTMLElementTagNameMap {
@@ -10,6 +11,9 @@ export declare class EdgelessDndPreviewElement extends LitElement {
10
11
  accessor elementTypes: {
11
12
  type: string;
12
13
  }[];
14
+ /** Set by the caller that has one (`preview-helper.ts`) — optional so this
15
+ * element still renders (in English) when created with none. */
16
+ accessor std: BlockStdScope | undefined;
13
17
  private _getPreviewIcon;
14
18
  render(): import("lit-html").TemplateResult<1>;
15
19
  }
@@ -32,32 +32,34 @@ var __runInitializers = (this && this.__runInitializers) || function (thisArg, i
32
32
  }
33
33
  return useValue ? value : void 0;
34
34
  };
35
+ import { translateKey, } from '../../../affine-shared/services/index.js';
35
36
  import { unsafeCSSVarV2 } from '../../../affine-shared/theme/index.js';
36
37
  import { EmbedIcon, FrameIcon, ImageIcon, PageIcon, ShapeIcon, } from '@blocksuite/icons/lit';
37
38
  import { css, html, LitElement } from 'lit';
38
39
  import { property } from 'lit/decorators.js';
39
40
  import { repeat } from 'lit/directives/repeat.js';
40
41
  import { styleMap } from 'lit/directives/style-map.js';
42
+ import { DRAG_PREVIEW_EMBED, DRAG_PREVIEW_FRAME, DRAG_PREVIEW_GENERIC, DRAG_PREVIEW_IMAGE, DRAG_PREVIEW_NOTE, DRAG_PREVIEW_SHAPE, } from '../../translations.js';
41
43
  const BLOCK_PREVIEW_ICON_MAP = {
42
44
  shape: {
43
45
  icon: ShapeIcon,
44
- name: 'Edgeless shape',
46
+ wording: DRAG_PREVIEW_SHAPE,
45
47
  },
46
48
  'affine:image': {
47
49
  icon: ImageIcon,
48
- name: 'Image block',
50
+ wording: DRAG_PREVIEW_IMAGE,
49
51
  },
50
52
  'affine:note': {
51
53
  icon: PageIcon,
52
- name: 'Note block',
54
+ wording: DRAG_PREVIEW_NOTE,
53
55
  },
54
56
  'affine:frame': {
55
57
  icon: FrameIcon,
56
- name: 'Frame block',
58
+ wording: DRAG_PREVIEW_FRAME,
57
59
  },
58
60
  'affine:embed-': {
59
61
  icon: EmbedIcon,
60
- name: 'Embed block',
62
+ wording: DRAG_PREVIEW_EMBED,
61
63
  },
62
64
  };
63
65
  export const EDGELESS_DND_PREVIEW_ELEMENT = 'edgeless-dnd-preview-element';
@@ -66,11 +68,16 @@ let EdgelessDndPreviewElement = (() => {
66
68
  let _elementTypes_decorators;
67
69
  let _elementTypes_initializers = [];
68
70
  let _elementTypes_extraInitializers = [];
71
+ let _std_decorators;
72
+ let _std_initializers = [];
73
+ let _std_extraInitializers = [];
69
74
  return class EdgelessDndPreviewElement extends _classSuper {
70
75
  static {
71
76
  const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
72
77
  _elementTypes_decorators = [property({ type: Array })];
78
+ _std_decorators = [property({ attribute: false })];
73
79
  __esDecorate(this, null, _elementTypes_decorators, { kind: "accessor", name: "elementTypes", static: false, private: false, access: { has: obj => "elementTypes" in obj, get: obj => obj.elementTypes, set: (obj, value) => { obj.elementTypes = value; } }, metadata: _metadata }, _elementTypes_initializers, _elementTypes_extraInitializers);
80
+ __esDecorate(this, null, _std_decorators, { kind: "accessor", name: "std", static: false, private: false, access: { has: obj => "std" in obj, get: obj => obj.std, set: (obj, value) => { obj.std = value; } }, metadata: _metadata }, _std_initializers, _std_extraInitializers);
74
81
  if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
75
82
  }
76
83
  static { this.styles = css `
@@ -115,6 +122,11 @@ let EdgelessDndPreviewElement = (() => {
115
122
  #elementTypes_accessor_storage = __runInitializers(this, _elementTypes_initializers, []);
116
123
  get elementTypes() { return this.#elementTypes_accessor_storage; }
117
124
  set elementTypes(value) { this.#elementTypes_accessor_storage = value; }
125
+ #std_accessor_storage = (__runInitializers(this, _elementTypes_extraInitializers), __runInitializers(this, _std_initializers, undefined));
126
+ /** Set by the caller that has one (`preview-helper.ts`) — optional so this
127
+ * element still renders (in English) when created with none. */
128
+ get std() { return this.#std_accessor_storage; }
129
+ set std(value) { this.#std_accessor_storage = value; }
118
130
  _getPreviewIcon(type) {
119
131
  if (BLOCK_PREVIEW_ICON_MAP[type]) {
120
132
  return BLOCK_PREVIEW_ICON_MAP[type];
@@ -124,12 +136,13 @@ let EdgelessDndPreviewElement = (() => {
124
136
  }
125
137
  return {
126
138
  icon: ShapeIcon,
127
- name: 'Edgeless content',
139
+ wording: DRAG_PREVIEW_GENERIC,
128
140
  };
129
141
  }
130
142
  render() {
131
143
  const blocks = repeat(this.elementTypes.slice(0, 3), ({ type }, index) => {
132
- const { icon, name } = this._getPreviewIcon(type);
144
+ const { icon, wording } = this._getPreviewIcon(type);
145
+ const name = this.std ? translateKey(this.std, ...wording) : wording[1];
133
146
  return html `<div
134
147
  class="edgeless-dnd-preview-block"
135
148
  style=${styleMap({
@@ -145,7 +158,7 @@ let EdgelessDndPreviewElement = (() => {
145
158
  }
146
159
  constructor() {
147
160
  super(...arguments);
148
- __runInitializers(this, _elementTypes_extraInitializers);
161
+ __runInitializers(this, _std_extraInitializers);
149
162
  }
150
163
  };
151
164
  })();
@@ -126,6 +126,7 @@ export class PreviewHelper {
126
126
  const blockTypes = this._extractBlockTypes(snapshot);
127
127
  const edgelessPreview = new EdgelessDndPreviewElement();
128
128
  edgelessPreview.elementTypes = blockTypes;
129
+ edgelessPreview.std = this.widget.std;
129
130
  return {
130
131
  left: 12,
131
132
  top: 12,
@@ -0,0 +1,14 @@
1
+ import { type ChromeWording } from '../affine-shared/services/index.js';
2
+ /**
3
+ * The drag-and-drop preview's own per-flavour labels, shown on the ghost
4
+ * card that follows the pointer while dragging edgeless content.
5
+ */
6
+ export declare const DRAG_PREVIEW_SHAPE: ChromeWording;
7
+ export declare const DRAG_PREVIEW_IMAGE: ChromeWording;
8
+ export declare const DRAG_PREVIEW_NOTE: ChromeWording;
9
+ export declare const DRAG_PREVIEW_FRAME: ChromeWording;
10
+ export declare const DRAG_PREVIEW_EMBED: ChromeWording;
11
+ /** An alias (L7 dedupe): the same word as {@link EDGELESS_CONTENT_LABEL}, one key. */
12
+ export declare const DRAG_PREVIEW_GENERIC: ChromeWording;
13
+ /** Every wording this package declares, in the order it renders them. */
14
+ export declare const DRAG_HANDLE_WORDINGS: readonly ChromeWording[];
@@ -0,0 +1,35 @@
1
+ import { EDGELESS_CONTENT_LABEL, } from '../affine-shared/services/index.js';
2
+ /**
3
+ * The drag-and-drop preview's own per-flavour labels, shown on the ghost
4
+ * card that follows the pointer while dragging edgeless content.
5
+ */
6
+ export const DRAG_PREVIEW_SHAPE = [
7
+ 'com.labre.drag-handle.preview.shape',
8
+ 'Canvas shape',
9
+ ];
10
+ export const DRAG_PREVIEW_IMAGE = [
11
+ 'com.labre.drag-handle.preview.image',
12
+ 'Image block',
13
+ ];
14
+ export const DRAG_PREVIEW_NOTE = [
15
+ 'com.labre.drag-handle.preview.note',
16
+ 'Note block',
17
+ ];
18
+ export const DRAG_PREVIEW_FRAME = [
19
+ 'com.labre.drag-handle.preview.frame',
20
+ 'Frame block',
21
+ ];
22
+ export const DRAG_PREVIEW_EMBED = [
23
+ 'com.labre.drag-handle.preview.embed',
24
+ 'Embed block',
25
+ ];
26
+ /** An alias (L7 dedupe): the same word as {@link EDGELESS_CONTENT_LABEL}, one key. */
27
+ export const DRAG_PREVIEW_GENERIC = EDGELESS_CONTENT_LABEL;
28
+ /** Every wording this package declares, in the order it renders them. */
29
+ export const DRAG_HANDLE_WORDINGS = [
30
+ DRAG_PREVIEW_SHAPE,
31
+ DRAG_PREVIEW_IMAGE,
32
+ DRAG_PREVIEW_NOTE,
33
+ DRAG_PREVIEW_FRAME,
34
+ DRAG_PREVIEW_EMBED,
35
+ ];
@@ -35,7 +35,7 @@ var __runInitializers = (this && this.__runInitializers) || function (thisArg, i
35
35
  import { EdgelessCRUDIdentifier, EdgelessLegacySlotIdentifier, isNoteBlock, } from '../affine-block-surface/index.js';
36
36
  import { SmallDocIcon } from '../affine-components/icons/index.js';
37
37
  import { FrameBlockModel, NoteBlockModel, NoteDisplayMode, SurfaceRefBlockModel, } from '../affine-model/index.js';
38
- import { FeatureFlagService } from '../affine-shared/services/index.js';
38
+ import { FeatureFlagService, translateKey, } from '../affine-shared/services/index.js';
39
39
  import { matchModels, stopPropagation } from '../affine-shared/utils/index.js';
40
40
  import { Bound } from '../global/gfx/index.js';
41
41
  import { ArrowLeftSmallIcon, ArrowRightSmallIcon, InvisibleIcon, } from '@blocksuite/icons/lit';
@@ -46,6 +46,7 @@ import { state } from 'lit/decorators.js';
46
46
  import { repeat } from 'lit/directives/repeat.js';
47
47
  import { styleMap } from 'lit/directives/style-map.js';
48
48
  import { literal, unsafeStatic } from 'lit/static-html.js';
49
+ import { AUTO_CONNECT_HIDDEN_ON_PAGE, AUTO_CONNECT_PAGE_MODE_INDEX, } from './translations.js';
49
50
  const PAGE_VISIBLE_INDEX_LABEL_WIDTH = 44;
50
51
  const PAGE_VISIBLE_INDEX_LABEL_HEIGHT = 24;
51
52
  const EDGELESS_ONLY_INDEX_LABEL_WIDTH = 24;
@@ -246,7 +247,7 @@ let EdgelessAutoConnectWidget = (() => {
246
247
  return html `<div style=${style} class="edgeless-only-index-label">
247
248
  ${InvisibleIcon({ width: '20px', height: '20px' })}
248
249
  <affine-tooltip tip-position="bottom">
249
- ${getIndexLabelTooltip(SmallDocIcon, 'Hidden on page')}
250
+ ${getIndexLabelTooltip(SmallDocIcon, translateKey(this.std, ...AUTO_CONNECT_HIDDEN_ON_PAGE))}
250
251
  </affine-tooltip>
251
252
  </div>`;
252
253
  })}`;
@@ -424,7 +425,7 @@ let EdgelessAutoConnectWidget = (() => {
424
425
  >
425
426
  ${index}
426
427
  <affine-tooltip tip-position="bottom">
427
- ${getIndexLabelTooltip(SmallDocIcon, 'Page mode index')}
428
+ ${getIndexLabelTooltip(SmallDocIcon, translateKey(this.std, ...AUTO_CONNECT_PAGE_MODE_INDEX))}
428
429
  </affine-tooltip>
429
430
  </div>
430
431
  `);
@@ -0,0 +1,6 @@
1
+ import type { ChromeWording } from '../affine-shared/services/index.js';
2
+ /** The note-index badge's two tooltips, in page vs. edgeless-only mode. */
3
+ export declare const AUTO_CONNECT_HIDDEN_ON_PAGE: ChromeWording;
4
+ export declare const AUTO_CONNECT_PAGE_MODE_INDEX: ChromeWording;
5
+ /** Every wording this package declares, in the order it renders them. */
6
+ export declare const AUTO_CONNECT_WORDINGS: readonly ChromeWording[];
@@ -0,0 +1,14 @@
1
+ /** The note-index badge's two tooltips, in page vs. edgeless-only mode. */
2
+ export const AUTO_CONNECT_HIDDEN_ON_PAGE = [
3
+ 'com.labre.auto-connect.hidden-on-page',
4
+ 'Hidden on document',
5
+ ];
6
+ export const AUTO_CONNECT_PAGE_MODE_INDEX = [
7
+ 'com.labre.auto-connect.page-mode-index',
8
+ 'Document mode index',
9
+ ];
10
+ /** Every wording this package declares, in the order it renders them. */
11
+ export const AUTO_CONNECT_WORDINGS = [
12
+ AUTO_CONNECT_HIDDEN_ON_PAGE,
13
+ AUTO_CONNECT_PAGE_MODE_INDEX,
14
+ ];
@@ -38,7 +38,7 @@ import { FontFamilyIcon } from '../affine-components/icons/index.js';
38
38
  import { mountShapeTextEditor, SHAPE_OVERLAY_HEIGHT, SHAPE_OVERLAY_WIDTH, ShapeComponentConfig, } from '../affine-gfx-shape/index.js';
39
39
  import { insertEdgelessTextCommand, mountTextElementEditor, } from '../affine-gfx-text/index.js';
40
40
  import { DEFAULT_NOTE_WIDTH, DefaultTheme, FontFamily, FontStyle, FontWeight, getShapeName, GroupElementModel, NoteBlockModel, ShapeStyle, TextElementModel, } from '../affine-model/index.js';
41
- import { EditPropsStore, FeatureFlagService, ThemeProvider, } from '../affine-shared/services/index.js';
41
+ import { EditPropsStore, FeatureFlagService, ThemeProvider, translateKey, } from '../affine-shared/services/index.js';
42
42
  import { captureEventTarget, matchModels, overlayScale, overlayViewportSize, toOverlayCoord, } from '../affine-shared/utils/index.js';
43
43
  import { Bound, clamp, normalizeDegAngle, serializeXYWH, toDegree, Vec, } from '../global/gfx/index.js';
44
44
  import { WithDisposable } from '../global/lit/index.js';
@@ -53,6 +53,7 @@ import { repeat } from 'lit/directives/repeat.js';
53
53
  import { styleMap } from 'lit/directives/style-map.js';
54
54
  import * as Y from 'yjs';
55
55
  import { AutoCompleteFrameOverlay, AutoCompleteNoteOverlay, AutoCompleteShapeOverlay, AutoCompleteTextOverlay, capitalizeFirstLetter, createShapeElement, DEFAULT_NOTE_OVERLAY_HEIGHT, DEFAULT_TEXT_HEIGHT, DEFAULT_TEXT_WIDTH, Direction, isShape, PANEL_HEIGHT, PANEL_WIDTH, } from './utils.js';
56
+ import { AUTO_COMPLETE_ADD_SAME_OBJECT, AUTO_COMPLETE_FRAME, AUTO_COMPLETE_NOTE, AUTO_COMPLETE_TEXT, } from './translations.js';
56
57
  let EdgelessAutoCompletePanel = (() => {
57
58
  let _classSuper = WithDisposable(LitElement);
58
59
  let _connector_decorators;
@@ -544,7 +545,7 @@ let EdgelessAutoCompletePanel = (() => {
544
545
  ${shapeButtons}
545
546
 
546
547
  <edgeless-tool-icon-button
547
- .tooltip=${'Text'}
548
+ .tooltip=${translateKey(this.std, ...AUTO_COMPLETE_TEXT)}
548
549
  .iconSize=${'20px'}
549
550
  @pointerenter=${() => this._showOverlay('text')}
550
551
  @pointerleave=${() => this._removeOverlay()}
@@ -553,7 +554,7 @@ let EdgelessAutoCompletePanel = (() => {
553
554
  ${FontFamilyIcon}
554
555
  </edgeless-tool-icon-button>
555
556
  <edgeless-tool-icon-button
556
- .tooltip=${'Note'}
557
+ .tooltip=${translateKey(this.std, ...AUTO_COMPLETE_NOTE)}
557
558
  .iconSize=${'20px'}
558
559
  @pointerenter=${() => this._showOverlay('note')}
559
560
  @pointerleave=${() => this._removeOverlay()}
@@ -562,7 +563,7 @@ let EdgelessAutoCompletePanel = (() => {
562
563
  ${PageIcon()}
563
564
  </edgeless-tool-icon-button>
564
565
  <edgeless-tool-icon-button
565
- .tooltip=${'Frame'}
566
+ .tooltip=${translateKey(this.std, ...AUTO_COMPLETE_FRAME)}
566
567
  .iconSize=${'20px'}
567
568
  @pointerenter=${() => this._showOverlay('frame')}
568
569
  @pointerleave=${() => this._removeOverlay()}
@@ -578,7 +579,9 @@ let EdgelessAutoCompletePanel = (() => {
578
579
  @pointerleave=${() => this._removeOverlay()}
579
580
  @click=${() => this._autoComplete(currentSourceType)}
580
581
  >
581
- <div class="row-button">Add a same object</div>
582
+ <div class="row-button">
583
+ ${translateKey(this.std, ...AUTO_COMPLETE_ADD_SAME_OBJECT)}
584
+ </div>
582
585
  </edgeless-tool-icon-button>
583
586
  </div>`;
584
587
  }
@@ -34,9 +34,10 @@ var __runInitializers = (this && this.__runInitializers) || function (thisArg, i
34
34
  };
35
35
  import { CanvasElementType, EdgelessCRUDIdentifier, getSurfaceBlock, getSurfaceComponent, isNoteBlock, Overlay, OverlayIdentifier, } from '../affine-block-surface/index.js';
36
36
  import { ConnectorPathGenerator, } from '../affine-gfx-connector/index.js';
37
+ import { MINDMAP_SEED_NEW_NODE } from '../affine-gfx-mindmap/translations.js';
37
38
  import { mountShapeTextEditor } from '../affine-gfx-shape/index.js';
38
39
  import { DEFAULT_NOTE_HEIGHT, DefaultTheme, LayoutType, MindmapElementModel, ShapeElementModel, shapeMethods, } from '../affine-model/index.js';
39
- import { ToolbarRegistryIdentifier } from '../affine-shared/services/index.js';
40
+ import { ToolbarRegistryIdentifier, translateKey, } from '../affine-shared/services/index.js';
40
41
  import { handleNativeRangeAtPoint, toClientCoord, } from '../affine-shared/utils/index.js';
41
42
  import { DisposableGroup } from '../global/disposable/index.js';
42
43
  import { Vec } from '../global/gfx/index.js';
@@ -228,7 +229,7 @@ let EdgelessAutoComplete = (() => {
228
229
  const parentNode = mindmap.getNode(parent.id);
229
230
  if (!parentNode)
230
231
  return;
231
- const newNode = mindmap.addNode(parentNode.id, target === 'sibling' ? this.current.id : undefined, undefined, undefined);
232
+ const newNode = mindmap.addNode(parentNode.id, target === 'sibling' ? this.current.id : undefined, undefined, { text: translateKey(this.std, ...MINDMAP_SEED_NEW_NODE) });
232
233
  if (parentNode.detail.collapsed) {
233
234
  mindmap.toggleCollapse(parentNode);
234
235
  }