@formicoidea/labre-core 0.40.0 → 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 (433) 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/translations.d.ts +16 -0
  18. package/dist/_pkgs/affine-block-callout/translations.js +24 -0
  19. package/dist/_pkgs/affine-block-code/code-block.js +6 -3
  20. package/dist/_pkgs/affine-block-code/code-toolbar/components/code-toolbar.js +4 -2
  21. package/dist/_pkgs/affine-block-code/code-toolbar/components/lang-button.js +3 -2
  22. package/dist/_pkgs/affine-block-code/code-toolbar/components/preview-button.js +4 -3
  23. package/dist/_pkgs/affine-block-code/code-toolbar/config.js +116 -72
  24. package/dist/_pkgs/affine-block-code/translations.d.ts +30 -0
  25. package/dist/_pkgs/affine-block-code/translations.js +84 -0
  26. package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/config.js +2 -2
  27. package/dist/_pkgs/affine-block-embed/common/render-linked-doc.js +7 -6
  28. package/dist/_pkgs/affine-block-embed/configs/toolbar.js +11 -2
  29. package/dist/_pkgs/affine-block-embed/embed-html-block/components/fullscreen-toolbar.js +4 -3
  30. package/dist/_pkgs/affine-block-embed/embed-html-block/configs/toolbar.js +5 -1
  31. package/dist/_pkgs/affine-block-embed/embed-html-block/configs/tooltips.js +14 -14
  32. package/dist/_pkgs/affine-block-embed/embed-html-block/embed-html-block.js +7 -1
  33. package/dist/_pkgs/affine-block-embed/embed-iframe-block/components/embed-iframe-error-card.js +11 -4
  34. package/dist/_pkgs/affine-block-embed/embed-iframe-block/components/embed-iframe-idle-card.d.ts +2 -0
  35. package/dist/_pkgs/affine-block-embed/embed-iframe-block/components/embed-iframe-idle-card.js +13 -3
  36. package/dist/_pkgs/affine-block-embed/embed-iframe-block/components/embed-iframe-link-edit-popup.js +4 -2
  37. package/dist/_pkgs/affine-block-embed/embed-iframe-block/components/embed-iframe-link-input-base.js +8 -5
  38. package/dist/_pkgs/affine-block-embed/embed-iframe-block/components/embed-iframe-link-input-popup.js +21 -5
  39. package/dist/_pkgs/affine-block-embed/embed-iframe-block/components/embed-iframe-loading-card.js +4 -1
  40. package/dist/_pkgs/affine-block-embed/embed-iframe-block/configs/slash-menu/slash-menu.js +4 -0
  41. package/dist/_pkgs/affine-block-embed/embed-iframe-block/configs/toolbar.d.ts +2 -0
  42. package/dist/_pkgs/affine-block-embed/embed-iframe-block/configs/toolbar.js +6 -1
  43. package/dist/_pkgs/affine-block-embed/embed-iframe-block/embed-iframe-block.js +3 -1
  44. package/dist/_pkgs/affine-block-embed/translations.d.ts +46 -0
  45. package/dist/_pkgs/affine-block-embed/translations.js +114 -0
  46. package/dist/_pkgs/affine-block-embed-doc/embed-linked-doc-block/configs/slash-menu.js +7 -0
  47. package/dist/_pkgs/affine-block-embed-doc/embed-linked-doc-block/configs/toolbar.js +29 -12
  48. package/dist/_pkgs/affine-block-embed-doc/embed-linked-doc-block/configs/tooltips.js +4 -4
  49. package/dist/_pkgs/affine-block-embed-doc/embed-linked-doc-block/embed-linked-doc-block.js +10 -4
  50. package/dist/_pkgs/affine-block-embed-doc/embed-synced-doc-block/components/embed-synced-doc-card.js +8 -4
  51. package/dist/_pkgs/affine-block-embed-doc/embed-synced-doc-block/configs/toolbar.js +28 -13
  52. package/dist/_pkgs/affine-block-embed-doc/embed-synced-doc-block/embed-edgeless-synced-doc-block.js +3 -2
  53. package/dist/_pkgs/affine-block-embed-doc/embed-synced-doc-block/embed-synced-doc-block.js +3 -2
  54. package/dist/_pkgs/affine-block-embed-doc/translations.d.ts +40 -0
  55. package/dist/_pkgs/affine-block-embed-doc/translations.js +85 -0
  56. package/dist/_pkgs/affine-block-frame/edgeless-toolbar/frame-dense-menu.js +29 -22
  57. package/dist/_pkgs/affine-block-frame/edgeless-toolbar/frame-menu.js +5 -1
  58. package/dist/_pkgs/affine-block-frame/edgeless-toolbar/frame-tool-button.js +2 -1
  59. package/dist/_pkgs/affine-block-frame/edgeless-toolbar/presentation-toolbar.js +12 -9
  60. package/dist/_pkgs/affine-block-frame/frame-manager.js +8 -2
  61. package/dist/_pkgs/affine-block-frame/frame-tool.js +7 -2
  62. package/dist/_pkgs/affine-block-frame/frame-toolbar.js +12 -6
  63. package/dist/_pkgs/affine-block-frame/index.d.ts +1 -0
  64. package/dist/_pkgs/affine-block-frame/index.js +1 -0
  65. package/dist/_pkgs/affine-block-frame/present/frame-order-button.js +5 -1
  66. package/dist/_pkgs/affine-block-frame/present/navigator-setting-button.js +16 -6
  67. package/dist/_pkgs/affine-block-frame/present/present-button.js +3 -1
  68. package/dist/_pkgs/affine-block-frame/translations.d.ts +64 -0
  69. package/dist/_pkgs/affine-block-frame/translations.js +131 -0
  70. package/dist/_pkgs/affine-block-image/components/page-image-block.js +5 -2
  71. package/dist/_pkgs/affine-block-image/configs/slash-menu.js +4 -0
  72. package/dist/_pkgs/affine-block-image/configs/toolbar.js +7 -1
  73. package/dist/_pkgs/affine-block-image/configs/tooltips.js +1 -1
  74. package/dist/_pkgs/affine-block-image/image-block.js +3 -2
  75. package/dist/_pkgs/affine-block-image/image-edgeless-block.js +6 -3
  76. package/dist/_pkgs/affine-block-image/preview-image/page.js +5 -1
  77. package/dist/_pkgs/affine-block-image/translations.d.ts +35 -0
  78. package/dist/_pkgs/affine-block-image/translations.js +68 -0
  79. package/dist/_pkgs/affine-block-image/utils.js +9 -8
  80. package/dist/_pkgs/affine-block-latex/configs/slash-menu.d.ts +8 -0
  81. package/dist/_pkgs/affine-block-latex/configs/slash-menu.js +19 -3
  82. package/dist/_pkgs/affine-block-latex/latex-block.js +6 -2
  83. package/dist/_pkgs/affine-block-latex/translations.d.ts +35 -0
  84. package/dist/_pkgs/affine-block-latex/translations.js +60 -0
  85. package/dist/_pkgs/affine-block-note/components/edgeless-note-border-dropdown-menu.d.ts +9 -0
  86. package/dist/_pkgs/affine-block-note/components/edgeless-note-border-dropdown-menu.js +23 -6
  87. package/dist/_pkgs/affine-block-note/components/edgeless-note-display-mode-dropdown-menu.d.ts +4 -1
  88. package/dist/_pkgs/affine-block-note/components/edgeless-note-display-mode-dropdown-menu.js +26 -6
  89. package/dist/_pkgs/affine-block-note/components/edgeless-note-shadow-menu.d.ts +3 -0
  90. package/dist/_pkgs/affine-block-note/components/edgeless-note-shadow-menu.js +21 -10
  91. package/dist/_pkgs/affine-block-note/components/edgeless-note-style-panel.js +22 -8
  92. package/dist/_pkgs/affine-block-note/configs/slash-menu.js +13 -0
  93. package/dist/_pkgs/affine-block-note/configs/toolbar.js +26 -19
  94. package/dist/_pkgs/affine-block-note/configs/tooltips.js +57 -30
  95. package/dist/_pkgs/affine-block-note/move-block.js +8 -2
  96. package/dist/_pkgs/affine-block-note/translations.d.ts +91 -0
  97. package/dist/_pkgs/affine-block-note/translations.js +253 -0
  98. package/dist/_pkgs/affine-block-paragraph/paragraph-block.js +7 -2
  99. package/dist/_pkgs/affine-block-paragraph/translations.d.ts +31 -0
  100. package/dist/_pkgs/affine-block-paragraph/translations.js +44 -0
  101. package/dist/_pkgs/affine-block-paragraph/view.js +6 -1
  102. package/dist/_pkgs/affine-block-root/configs/toolbar.d.ts +3 -1
  103. package/dist/_pkgs/affine-block-root/configs/toolbar.js +6 -3
  104. package/dist/_pkgs/affine-block-root/edgeless/clipboard/utils.js +1 -1
  105. package/dist/_pkgs/affine-block-root/edgeless/configs/toolbar/alignment.js +26 -4
  106. package/dist/_pkgs/affine-block-root/edgeless/configs/toolbar/misc.d.ts +14 -0
  107. package/dist/_pkgs/affine-block-root/edgeless/configs/toolbar/misc.js +10 -3
  108. package/dist/_pkgs/affine-block-root/edgeless/configs/toolbar/more.d.ts +8 -0
  109. package/dist/_pkgs/affine-block-root/edgeless/configs/toolbar/more.js +9 -0
  110. package/dist/_pkgs/affine-block-root/edgeless/edgeless-keyboard.js +15 -6
  111. package/dist/_pkgs/affine-block-root/edgeless/utils/consts.d.ts +0 -1
  112. package/dist/_pkgs/affine-block-root/edgeless/utils/consts.js +0 -1
  113. package/dist/_pkgs/affine-block-root/translations.d.ts +61 -0
  114. package/dist/_pkgs/affine-block-root/translations.js +172 -0
  115. package/dist/_pkgs/affine-block-surface/extensions/export-manager/export-manager.js +3 -1
  116. package/dist/_pkgs/affine-block-surface/extensions/index.d.ts +1 -0
  117. package/dist/_pkgs/affine-block-surface/extensions/index.js +1 -0
  118. package/dist/_pkgs/affine-block-surface/extensions/interchange-import.js +31 -12
  119. package/dist/_pkgs/affine-block-surface/extensions/interchange.d.ts +40 -8
  120. package/dist/_pkgs/affine-block-surface/extensions/interchange.js +27 -0
  121. package/dist/_pkgs/affine-block-surface/extensions/morph-toolbar.d.ts +2 -2
  122. package/dist/_pkgs/affine-block-surface/extensions/morph-toolbar.js +5 -2
  123. package/dist/_pkgs/affine-block-surface/extensions/reading-widget.js +3 -2
  124. package/dist/_pkgs/affine-block-surface/extensions/svg-sketch-translations.d.ts +48 -0
  125. package/dist/_pkgs/affine-block-surface/extensions/svg-sketch-translations.js +120 -0
  126. package/dist/_pkgs/affine-block-surface/extensions/svg-sketch.js +36 -23
  127. package/dist/_pkgs/affine-block-surface/extensions/tags-toolbar.js +5 -5
  128. package/dist/_pkgs/affine-block-surface-ref/components/placeholder.d.ts +2 -1
  129. package/dist/_pkgs/affine-block-surface-ref/components/placeholder.js +21 -6
  130. package/dist/_pkgs/affine-block-surface-ref/configs/slash-menu.js +24 -7
  131. package/dist/_pkgs/affine-block-surface-ref/configs/tooltips.js +2 -2
  132. package/dist/_pkgs/affine-block-surface-ref/index.d.ts +1 -0
  133. package/dist/_pkgs/affine-block-surface-ref/index.js +1 -0
  134. package/dist/_pkgs/affine-block-surface-ref/surface-ref-block-edgeless.js +1 -0
  135. package/dist/_pkgs/affine-block-surface-ref/surface-ref-block.js +1 -0
  136. package/dist/_pkgs/affine-block-surface-ref/translations.d.ts +83 -0
  137. package/dist/_pkgs/affine-block-surface-ref/translations.js +175 -0
  138. package/dist/_pkgs/affine-block-surface-ref/utils.d.ts +8 -1
  139. package/dist/_pkgs/affine-block-surface-ref/utils.js +12 -4
  140. package/dist/_pkgs/affine-components/caption/block-caption.js +3 -1
  141. package/dist/_pkgs/affine-components/card-style-dropdown-menu/dropdown-menu.js +4 -3
  142. package/dist/_pkgs/affine-components/citation/citation.d.ts +2 -0
  143. package/dist/_pkgs/affine-components/citation/citation.js +19 -3
  144. package/dist/_pkgs/affine-components/color-picker/button.d.ts +6 -0
  145. package/dist/_pkgs/affine-components/color-picker/button.js +15 -1
  146. package/dist/_pkgs/affine-components/color-picker/color-panel.d.ts +8 -0
  147. package/dist/_pkgs/affine-components/color-picker/color-panel.js +17 -2
  148. package/dist/_pkgs/affine-components/color-picker/color-picker.d.ts +4 -0
  149. package/dist/_pkgs/affine-components/color-picker/color-picker.js +27 -3
  150. package/dist/_pkgs/affine-components/color-picker/types.d.ts +21 -0
  151. package/dist/_pkgs/affine-components/color-picker/utils.d.ts +28 -2
  152. package/dist/_pkgs/affine-components/color-picker/utils.js +32 -0
  153. package/dist/_pkgs/affine-components/context-menu/menu-renderer.d.ts +3 -0
  154. package/dist/_pkgs/affine-components/context-menu/menu-renderer.js +34 -7
  155. package/dist/_pkgs/affine-components/edgeless-line-styles-panel/line-styles-panel.d.ts +2 -0
  156. package/dist/_pkgs/affine-components/edgeless-line-styles-panel/line-styles-panel.js +21 -2
  157. package/dist/_pkgs/affine-components/edgeless-line-width-panel/line-width-panel.d.ts +2 -0
  158. package/dist/_pkgs/affine-components/edgeless-line-width-panel/line-width-panel.js +18 -2
  159. package/dist/_pkgs/affine-components/edgeless-shape-color-picker/color-picker.d.ts +2 -0
  160. package/dist/_pkgs/affine-components/edgeless-shape-color-picker/color-picker.js +34 -5
  161. package/dist/_pkgs/affine-components/embed-card-modal/embed-card-create-modal.js +5 -4
  162. package/dist/_pkgs/affine-components/embed-card-modal/embed-card-edit-modal.js +11 -9
  163. package/dist/_pkgs/affine-components/filterable-list/index.d.ts +2 -0
  164. package/dist/_pkgs/affine-components/filterable-list/index.js +17 -2
  165. package/dist/_pkgs/affine-components/highlight-dropdown-menu/dropdown-menu.d.ts +3 -0
  166. package/dist/_pkgs/affine-components/highlight-dropdown-menu/dropdown-menu.js +40 -7
  167. package/dist/_pkgs/affine-components/icon-button/index.d.ts +1 -1
  168. package/dist/_pkgs/affine-components/icon-button/index.js +1 -1
  169. package/dist/_pkgs/affine-components/icon-picker/affine-icon-picker-panel.d.ts +6 -0
  170. package/dist/_pkgs/affine-components/icon-picker/affine-icon-picker-panel.js +42 -7
  171. package/dist/_pkgs/affine-components/icon-picker/emoji-picker-panel.d.ts +4 -0
  172. package/dist/_pkgs/affine-components/icon-picker/emoji-picker-panel.js +35 -5
  173. package/dist/_pkgs/affine-components/icon-picker/icon-picker.d.ts +2 -0
  174. package/dist/_pkgs/affine-components/icon-picker/icon-picker.js +22 -5
  175. package/dist/_pkgs/affine-components/linked-doc-title/doc-title.d.ts +2 -0
  176. package/dist/_pkgs/affine-components/linked-doc-title/doc-title.js +16 -3
  177. package/dist/_pkgs/affine-components/notification/linked-doc.js +5 -4
  178. package/dist/_pkgs/affine-components/open-doc-dropdown-menu/dropdown-menu.js +7 -4
  179. package/dist/_pkgs/affine-components/resource/resource.d.ts +16 -1
  180. package/dist/_pkgs/affine-components/resource/resource.js +19 -4
  181. package/dist/_pkgs/affine-components/resource/status.d.ts +2 -0
  182. package/dist/_pkgs/affine-components/resource/status.js +27 -12
  183. package/dist/_pkgs/affine-components/size-dropdown-menu/dropdown-menu.d.ts +4 -1
  184. package/dist/_pkgs/affine-components/size-dropdown-menu/dropdown-menu.js +23 -4
  185. package/dist/_pkgs/affine-components/toast/toast.d.ts +1 -1
  186. package/dist/_pkgs/affine-components/toast/toast.js +1 -1
  187. package/dist/_pkgs/affine-components/toggle-button/toggle-button.d.ts +3 -0
  188. package/dist/_pkgs/affine-components/toggle-button/toggle-button.js +18 -3
  189. package/dist/_pkgs/affine-components/toolbar/icon-button.d.ts +2 -0
  190. package/dist/_pkgs/affine-components/toolbar/icon-button.js +18 -2
  191. package/dist/_pkgs/affine-components/toolbar/tooltip.d.ts +3 -3
  192. package/dist/_pkgs/affine-components/toolbar/tooltip.js +3 -3
  193. package/dist/_pkgs/affine-components/translations.d.ts +141 -0
  194. package/dist/_pkgs/affine-components/translations.js +478 -0
  195. package/dist/_pkgs/affine-fragment-adapter-panel/adapter-panel.d.ts +3 -0
  196. package/dist/_pkgs/affine-fragment-adapter-panel/adapter-panel.js +12 -1
  197. package/dist/_pkgs/affine-fragment-adapter-panel/body/adapter-panel-body.js +4 -3
  198. package/dist/_pkgs/affine-fragment-adapter-panel/config.d.ts +13 -0
  199. package/dist/_pkgs/affine-fragment-adapter-panel/config.js +18 -4
  200. package/dist/_pkgs/affine-fragment-adapter-panel/header/adapter-menu.js +2 -2
  201. package/dist/_pkgs/affine-fragment-adapter-panel/header/adapter-panel-header.js +2 -2
  202. package/dist/_pkgs/affine-fragment-adapter-panel/translations.d.ts +24 -0
  203. package/dist/_pkgs/affine-fragment-adapter-panel/translations.js +37 -0
  204. package/dist/_pkgs/affine-fragment-doc-title/doc-title.d.ts +1 -0
  205. package/dist/_pkgs/affine-fragment-doc-title/doc-title.js +9 -1
  206. package/dist/_pkgs/affine-fragment-doc-title/translations.d.ts +13 -0
  207. package/dist/_pkgs/affine-fragment-doc-title/translations.js +17 -0
  208. package/dist/_pkgs/affine-fragment-frame-panel/body/frame-panel-body.js +3 -2
  209. package/dist/_pkgs/affine-fragment-frame-panel/header/frame-panel-header.js +10 -4
  210. package/dist/_pkgs/affine-fragment-frame-panel/header/frames-setting-menu.js +18 -6
  211. package/dist/_pkgs/affine-fragment-frame-panel/translations.d.ts +16 -0
  212. package/dist/_pkgs/affine-fragment-frame-panel/translations.js +44 -0
  213. package/dist/_pkgs/affine-fragment-outline/body/outline-notice.js +10 -4
  214. package/dist/_pkgs/affine-fragment-outline/body/outline-panel-body.js +6 -3
  215. package/dist/_pkgs/affine-fragment-outline/card/outline-card.js +13 -6
  216. package/dist/_pkgs/affine-fragment-outline/card/outline-preview.d.ts +1 -0
  217. package/dist/_pkgs/affine-fragment-outline/card/outline-preview.js +16 -9
  218. package/dist/_pkgs/affine-fragment-outline/config.d.ts +1 -20
  219. package/dist/_pkgs/affine-fragment-outline/config.js +8 -23
  220. package/dist/_pkgs/affine-fragment-outline/header/outline-panel-header.js +10 -3
  221. package/dist/_pkgs/affine-fragment-outline/header/outline-setting-menu.js +9 -2
  222. package/dist/_pkgs/affine-fragment-outline/outline-viewer.js +6 -3
  223. package/dist/_pkgs/affine-fragment-outline/translations.d.ts +54 -0
  224. package/dist/_pkgs/affine-fragment-outline/translations.js +110 -0
  225. package/dist/_pkgs/affine-gfx-brush/toolbar/components/eraser/eraser-tool-button.js +3 -2
  226. package/dist/_pkgs/affine-gfx-brush/toolbar/components/pen/consts.d.ts +3 -0
  227. package/dist/_pkgs/affine-gfx-brush/toolbar/components/pen/consts.js +3 -0
  228. package/dist/_pkgs/affine-gfx-brush/toolbar/components/pen/pen-menu.js +5 -4
  229. package/dist/_pkgs/affine-gfx-brush/toolbar/components/pen/pen-tool-button.js +3 -2
  230. package/dist/_pkgs/affine-gfx-brush/toolbar/configs/brush.js +4 -2
  231. package/dist/_pkgs/affine-gfx-brush/toolbar/configs/highlighter.js +4 -2
  232. package/dist/_pkgs/affine-gfx-brush/translations.d.ts +17 -0
  233. package/dist/_pkgs/affine-gfx-brush/translations.js +30 -0
  234. package/dist/_pkgs/affine-gfx-connector/direction/invert-direction.d.ts +8 -1
  235. package/dist/_pkgs/affine-gfx-connector/direction/invert-direction.js +7 -1
  236. package/dist/_pkgs/affine-gfx-connector/text/edgeless-connector-label-editor.js +3 -2
  237. package/dist/_pkgs/affine-gfx-connector/toolbar/config.d.ts +4 -1
  238. package/dist/_pkgs/affine-gfx-connector/toolbar/config.js +24 -10
  239. package/dist/_pkgs/affine-gfx-connector/toolbar/connector-dense-menu.js +7 -5
  240. package/dist/_pkgs/affine-gfx-connector/toolbar/connector-menu.js +8 -6
  241. package/dist/_pkgs/affine-gfx-connector/toolbar/connector-tool-button.js +4 -3
  242. package/dist/_pkgs/affine-gfx-connector/translations.d.ts +32 -0
  243. package/dist/_pkgs/affine-gfx-connector/translations.js +79 -0
  244. package/dist/_pkgs/affine-gfx-group/command/group-api.js +6 -1
  245. package/dist/_pkgs/affine-gfx-group/index.d.ts +1 -0
  246. package/dist/_pkgs/affine-gfx-group/index.js +1 -0
  247. package/dist/_pkgs/affine-gfx-group/toolbar/config.d.ts +6 -2
  248. package/dist/_pkgs/affine-gfx-group/toolbar/config.js +9 -4
  249. package/dist/_pkgs/affine-gfx-group/translations.d.ts +24 -0
  250. package/dist/_pkgs/affine-gfx-group/translations.js +33 -0
  251. package/dist/_pkgs/affine-gfx-link/toolbar/undo-dense-menu.js +2 -1
  252. package/dist/_pkgs/affine-gfx-link/toolbar/undo-tool-button.js +2 -1
  253. package/dist/_pkgs/affine-gfx-mindmap/index.d.ts +1 -0
  254. package/dist/_pkgs/affine-gfx-mindmap/index.js +1 -0
  255. package/dist/_pkgs/affine-gfx-mindmap/templates/index.js +628 -577
  256. package/dist/_pkgs/affine-gfx-mindmap/toolbar/basket-elements.js +7 -3
  257. package/dist/_pkgs/affine-gfx-mindmap/toolbar/config.js +9 -1
  258. package/dist/_pkgs/affine-gfx-mindmap/toolbar/mindmap-importing-placeholder.d.ts +4 -0
  259. package/dist/_pkgs/affine-gfx-mindmap/toolbar/mindmap-importing-placeholder.js +70 -7
  260. package/dist/_pkgs/affine-gfx-mindmap/toolbar/mindmap-menu.js +8 -5
  261. package/dist/_pkgs/affine-gfx-mindmap/toolbar/mindmap-tool-button.js +4 -2
  262. package/dist/_pkgs/affine-gfx-mindmap/toolbar/senior-tool.js +7 -2
  263. package/dist/_pkgs/affine-gfx-mindmap/toolbar/utils/import-mindmap.d.ts +2 -1
  264. package/dist/_pkgs/affine-gfx-mindmap/toolbar/utils/import-mindmap.js +16 -8
  265. package/dist/_pkgs/affine-gfx-mindmap/translations.d.ts +84 -0
  266. package/dist/_pkgs/affine-gfx-mindmap/translations.js +171 -0
  267. package/dist/_pkgs/affine-gfx-note/components/note-display-mode-panel.d.ts +8 -0
  268. package/dist/_pkgs/affine-gfx-note/components/note-display-mode-panel.js +24 -9
  269. package/dist/_pkgs/affine-gfx-note/components/note-shadow-panel.d.ts +9 -0
  270. package/dist/_pkgs/affine-gfx-note/components/note-shadow-panel.js +28 -8
  271. package/dist/_pkgs/affine-gfx-note/toolbar/note-menu-config.d.ts +2 -1
  272. package/dist/_pkgs/affine-gfx-note/toolbar/note-menu-config.js +42 -73
  273. package/dist/_pkgs/affine-gfx-note/toolbar/note-menu.js +21 -17
  274. package/dist/_pkgs/affine-gfx-note/toolbar/note-senior-button.js +3 -2
  275. package/dist/_pkgs/affine-gfx-note/toolbar/note-tool-button.js +3 -1
  276. package/dist/_pkgs/affine-gfx-note/toolbar/senior-tool.js +3 -1
  277. package/dist/_pkgs/affine-gfx-note/translations.d.ts +27 -0
  278. package/dist/_pkgs/affine-gfx-note/translations.js +59 -0
  279. package/dist/_pkgs/affine-gfx-pointer/quick-tool/default-tool-button.js +10 -2
  280. package/dist/_pkgs/affine-gfx-pointer/translations.d.ts +9 -0
  281. package/dist/_pkgs/affine-gfx-pointer/translations.js +17 -0
  282. package/dist/_pkgs/affine-gfx-shape/components/shape-panel.d.ts +4 -0
  283. package/dist/_pkgs/affine-gfx-shape/components/shape-panel.js +17 -3
  284. package/dist/_pkgs/affine-gfx-shape/components/shape-style-panel.d.ts +4 -0
  285. package/dist/_pkgs/affine-gfx-shape/components/shape-style-panel.js +23 -5
  286. package/dist/_pkgs/affine-gfx-shape/draggable/shape-menu.d.ts +0 -1
  287. package/dist/_pkgs/affine-gfx-shape/draggable/shape-menu.js +6 -46
  288. package/dist/_pkgs/affine-gfx-shape/draggable/shape-tool-button.js +3 -1
  289. package/dist/_pkgs/affine-gfx-shape/toolbar/config.d.ts +2 -0
  290. package/dist/_pkgs/affine-gfx-shape/toolbar/config.js +29 -8
  291. package/dist/_pkgs/affine-gfx-shape/toolbar/senior-tool.js +2 -0
  292. package/dist/_pkgs/affine-gfx-shape/toolbar/shape-menu-config.d.ts +3 -0
  293. package/dist/_pkgs/affine-gfx-shape/toolbar/shape-menu-config.js +7 -0
  294. package/dist/_pkgs/affine-gfx-shape/translations.d.ts +37 -0
  295. package/dist/_pkgs/affine-gfx-shape/translations.js +93 -0
  296. package/dist/_pkgs/affine-gfx-template/builtin/other.js +70 -42
  297. package/dist/_pkgs/affine-gfx-template/contribute.js +8 -1
  298. package/dist/_pkgs/affine-gfx-template/index.d.ts +2 -0
  299. package/dist/_pkgs/affine-gfx-template/index.js +2 -0
  300. package/dist/_pkgs/affine-gfx-template/snapshot-from-action.d.ts +6 -1
  301. package/dist/_pkgs/affine-gfx-template/snapshot-from-action.js +15 -5
  302. package/dist/_pkgs/affine-gfx-template/toolbar/builtin-templates.d.ts +1 -0
  303. package/dist/_pkgs/affine-gfx-template/toolbar/builtin-templates.js +12 -0
  304. package/dist/_pkgs/affine-gfx-template/toolbar/resolve-name.d.ts +25 -0
  305. package/dist/_pkgs/affine-gfx-template/toolbar/resolve-name.js +36 -0
  306. package/dist/_pkgs/affine-gfx-template/toolbar/senior-tool.js +3 -1
  307. package/dist/_pkgs/affine-gfx-template/toolbar/template-panel.d.ts +1 -0
  308. package/dist/_pkgs/affine-gfx-template/toolbar/template-panel.js +30 -8
  309. package/dist/_pkgs/affine-gfx-template/toolbar/template-type.d.ts +41 -0
  310. package/dist/_pkgs/affine-gfx-template/translations.d.ts +71 -0
  311. package/dist/_pkgs/affine-gfx-template/translations.js +209 -0
  312. package/dist/_pkgs/affine-gfx-text/edgeless-text-editor.js +3 -2
  313. package/dist/_pkgs/affine-gfx-text/toolbar/actions.d.ts +1 -1
  314. package/dist/_pkgs/affine-gfx-text/toolbar/actions.js +22 -9
  315. package/dist/_pkgs/affine-gfx-text/toolbar/text-menu.js +1 -0
  316. package/dist/_pkgs/affine-gfx-text/translations.d.ts +31 -0
  317. package/dist/_pkgs/affine-gfx-text/translations.js +64 -0
  318. package/dist/_pkgs/affine-inline-footnote/footnote-node/footnote-popup.js +8 -2
  319. package/dist/_pkgs/affine-inline-latex/latex-node/latex-editor-menu.js +5 -2
  320. package/dist/_pkgs/affine-inline-latex/latex-node/latex-node.js +7 -2
  321. package/dist/_pkgs/affine-inline-latex/translations.d.ts +13 -0
  322. package/dist/_pkgs/affine-inline-latex/translations.js +16 -0
  323. package/dist/_pkgs/affine-inline-link/link-node/configs/toolbar.d.ts +3 -3
  324. package/dist/_pkgs/affine-inline-link/link-node/configs/toolbar.js +6 -5
  325. package/dist/_pkgs/affine-inline-link/link-node/link-popup/link-popup.js +11 -5
  326. package/dist/_pkgs/affine-inline-link/translations.d.ts +23 -0
  327. package/dist/_pkgs/affine-inline-link/translations.js +44 -0
  328. package/dist/_pkgs/affine-inline-mention/affine-mention.js +11 -5
  329. package/dist/_pkgs/affine-inline-mention/translations.d.ts +16 -0
  330. package/dist/_pkgs/affine-inline-mention/translations.js +29 -0
  331. package/dist/_pkgs/affine-inline-preset/command/config.d.ts +3 -0
  332. package/dist/_pkgs/affine-inline-preset/command/config.js +8 -0
  333. package/dist/_pkgs/affine-inline-preset/translations.d.ts +25 -0
  334. package/dist/_pkgs/affine-inline-preset/translations.js +28 -0
  335. package/dist/_pkgs/affine-inline-reference/reference-node/configs/toolbar.js +2 -2
  336. package/dist/_pkgs/affine-inline-reference/reference-node/reference-node.js +3 -3
  337. package/dist/_pkgs/affine-inline-reference/reference-node/reference-popup/reference-popup.js +8 -6
  338. package/dist/_pkgs/affine-inline-reference/translations.d.ts +8 -0
  339. package/dist/_pkgs/affine-inline-reference/translations.js +13 -0
  340. package/dist/_pkgs/affine-rich-text/conversion.d.ts +13 -0
  341. package/dist/_pkgs/affine-rich-text/conversion.js +27 -0
  342. package/dist/_pkgs/affine-shared/adapters/clipboard/clipboard.js +1 -1
  343. package/dist/_pkgs/affine-shared/adapters/clipboard/utils.d.ts +2 -1
  344. package/dist/_pkgs/affine-shared/adapters/clipboard/utils.js +6 -3
  345. package/dist/_pkgs/affine-shared/adapters/markdown/markdown.js +5 -2
  346. package/dist/_pkgs/affine-shared/adapters/mix-text.js +5 -2
  347. package/dist/_pkgs/affine-shared/adapters/plain-text/plain-text.js +5 -2
  348. package/dist/_pkgs/affine-shared/adapters/utils/index.d.ts +1 -0
  349. package/dist/_pkgs/affine-shared/adapters/utils/index.js +1 -0
  350. package/dist/_pkgs/affine-shared/adapters/utils/wording.d.ts +9 -0
  351. package/dist/_pkgs/affine-shared/adapters/utils/wording.js +12 -0
  352. package/dist/_pkgs/affine-shared/services/comment-service/utils.js +2 -0
  353. package/dist/_pkgs/affine-shared/services/doc-display-meta-service.js +6 -3
  354. package/dist/_pkgs/affine-shared/services/notification-service.js +18 -1
  355. package/dist/_pkgs/affine-shared/services/open-doc-config.d.ts +0 -1
  356. package/dist/_pkgs/affine-shared/services/open-doc-config.js +0 -2
  357. package/dist/_pkgs/affine-shared/services/translation-service/chrome.d.ts +362 -0
  358. package/dist/_pkgs/affine-shared/services/translation-service/chrome.js +955 -3
  359. package/dist/_pkgs/affine-shared/services/translation-service/index.d.ts +40 -2
  360. package/dist/_pkgs/affine-shared/services/translation-service/index.js +44 -3
  361. package/dist/_pkgs/affine-shared/services/universe-tag-defs-service.d.ts +83 -2
  362. package/dist/_pkgs/affine-shared/services/universe-tag-defs-service.js +92 -0
  363. package/dist/_pkgs/affine-widget-drag-handle/components/edgeless-preview/preview.d.ts +4 -0
  364. package/dist/_pkgs/affine-widget-drag-handle/components/edgeless-preview/preview.js +21 -8
  365. package/dist/_pkgs/affine-widget-drag-handle/helpers/preview-helper.js +1 -0
  366. package/dist/_pkgs/affine-widget-drag-handle/translations.d.ts +14 -0
  367. package/dist/_pkgs/affine-widget-drag-handle/translations.js +35 -0
  368. package/dist/_pkgs/affine-widget-edgeless-auto-connect/index.js +4 -3
  369. package/dist/_pkgs/affine-widget-edgeless-auto-connect/translations.d.ts +6 -0
  370. package/dist/_pkgs/affine-widget-edgeless-auto-connect/translations.js +14 -0
  371. package/dist/_pkgs/affine-widget-edgeless-selected-rect/auto-complete-panel.js +8 -5
  372. package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-auto-complete.js +3 -2
  373. package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-element-link.js +3 -1
  374. package/dist/_pkgs/affine-widget-edgeless-selected-rect/translations.d.ts +17 -0
  375. package/dist/_pkgs/affine-widget-edgeless-selected-rect/translations.js +30 -0
  376. package/dist/_pkgs/affine-widget-edgeless-toolbar/button/tool-icon-button.d.ts +4 -0
  377. package/dist/_pkgs/affine-widget-edgeless-toolbar/button/tool-icon-button.js +18 -2
  378. package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/artefact-catalogue-widget.js +2 -2
  379. package/dist/_pkgs/affine-widget-edgeless-toolbar/config/consts.d.ts +2 -0
  380. package/dist/_pkgs/affine-widget-edgeless-toolbar/config/consts.js +3 -0
  381. package/dist/_pkgs/affine-widget-edgeless-toolbar/config/types.d.ts +18 -1
  382. package/dist/_pkgs/affine-widget-edgeless-toolbar/config/utils.d.ts +8 -3
  383. package/dist/_pkgs/affine-widget-edgeless-toolbar/config/utils.js +38 -18
  384. package/dist/_pkgs/affine-widget-edgeless-toolbar/edgeless-toolbar.js +2 -1
  385. package/dist/_pkgs/affine-widget-edgeless-toolbar/panel/font-weight-and-style-panel.d.ts +8 -0
  386. package/dist/_pkgs/affine-widget-edgeless-toolbar/panel/font-weight-and-style-panel.js +31 -8
  387. package/dist/_pkgs/affine-widget-edgeless-toolbar/translations.d.ts +15 -0
  388. package/dist/_pkgs/affine-widget-edgeless-toolbar/translations.js +20 -0
  389. package/dist/_pkgs/affine-widget-edgeless-zoom-toolbar/translations.d.ts +7 -0
  390. package/dist/_pkgs/affine-widget-edgeless-zoom-toolbar/translations.js +23 -0
  391. package/dist/_pkgs/affine-widget-edgeless-zoom-toolbar/zoom-bar-toggle-button.js +3 -1
  392. package/dist/_pkgs/affine-widget-edgeless-zoom-toolbar/zoom-toolbar.js +5 -3
  393. package/dist/_pkgs/affine-widget-linked-doc/config.js +15 -10
  394. package/dist/_pkgs/affine-widget-linked-doc/import-doc/import-doc.d.ts +12 -1
  395. package/dist/_pkgs/affine-widget-linked-doc/import-doc/import-doc.js +27 -18
  396. package/dist/_pkgs/affine-widget-linked-doc/import-doc/index.d.ts +4 -1
  397. package/dist/_pkgs/affine-widget-linked-doc/import-doc/index.js +2 -2
  398. package/dist/_pkgs/affine-widget-linked-doc/linked-doc-popover.js +4 -1
  399. package/dist/_pkgs/affine-widget-linked-doc/mobile-linked-doc-menu.js +6 -2
  400. package/dist/_pkgs/affine-widget-linked-doc/transformers/html.js +3 -2
  401. package/dist/_pkgs/affine-widget-linked-doc/transformers/markdown.js +3 -2
  402. package/dist/_pkgs/affine-widget-linked-doc/translations.d.ts +53 -0
  403. package/dist/_pkgs/affine-widget-linked-doc/translations.js +104 -0
  404. package/dist/_pkgs/affine-widget-remote-selection/edgeless/index.js +4 -1
  405. package/dist/_pkgs/affine-widget-remote-selection/translations.d.ts +12 -0
  406. package/dist/_pkgs/affine-widget-remote-selection/translations.js +12 -0
  407. package/dist/_pkgs/affine-widget-slash-menu/config.js +15 -0
  408. package/dist/_pkgs/affine-widget-slash-menu/index.d.ts +1 -0
  409. package/dist/_pkgs/affine-widget-slash-menu/index.js +1 -0
  410. package/dist/_pkgs/affine-widget-slash-menu/slash-menu-popover.js +30 -15
  411. package/dist/_pkgs/affine-widget-slash-menu/tooltips/copy.js +1 -1
  412. package/dist/_pkgs/affine-widget-slash-menu/tooltips/delete.js +2 -2
  413. package/dist/_pkgs/affine-widget-slash-menu/tooltips/index.js +9 -0
  414. package/dist/_pkgs/affine-widget-slash-menu/tooltips/move-down.js +2 -2
  415. package/dist/_pkgs/affine-widget-slash-menu/tooltips/move-up.js +2 -2
  416. package/dist/_pkgs/affine-widget-slash-menu/tooltips/now.js +3 -3
  417. package/dist/_pkgs/affine-widget-slash-menu/tooltips/today.js +2 -2
  418. package/dist/_pkgs/affine-widget-slash-menu/tooltips/tomorrow.js +3 -3
  419. package/dist/_pkgs/affine-widget-slash-menu/tooltips/yesterday.js +3 -3
  420. package/dist/_pkgs/affine-widget-slash-menu/translations.d.ts +91 -0
  421. package/dist/_pkgs/affine-widget-slash-menu/translations.js +175 -0
  422. package/dist/_pkgs/affine-widget-slash-menu/types.d.ts +18 -0
  423. package/dist/_pkgs/affine-widget-slash-menu/utils.d.ts +20 -1
  424. package/dist/_pkgs/affine-widget-slash-menu/utils.js +37 -0
  425. package/dist/_pkgs/affine-widget-toolbar/translations.d.ts +9 -0
  426. package/dist/_pkgs/affine-widget-toolbar/translations.js +13 -0
  427. package/dist/_pkgs/affine-widget-toolbar/utils.js +2 -1
  428. package/dist/_pkgs/std/extension/translation-manifest.d.ts +7 -0
  429. package/dist/_pkgs/std/translations.d.ts +24 -0
  430. package/dist/_pkgs/std/translations.js +28 -0
  431. package/dist/_pkgs/std/view/element/block-component.js +24 -7
  432. package/dist/translations.js +144 -5
  433. package/package.json +1 -1
@@ -2,7 +2,7 @@ import { EdgelessCRUDIdentifier } from '../../affine-block-surface/index.js';
2
2
  import { packColor, } from '../../affine-components/color-picker/index.js';
3
3
  import { createTextActions } from '../../affine-gfx-text/index.js';
4
4
  import { DefaultTheme, FontFamily, getShapeName, getShapeRadius, getShapeType, isTransparent, LineWidth, MindmapElementModel, resolveColor, ShapeElementModel, ShapeStyle, ShapeType, StrokeStyle, TextFitMode, } from '../../affine-model/index.js';
5
- import { ToolbarModuleExtension, } from '../../affine-shared/services/index.js';
5
+ import { STYLE_MENU_LABEL, ToolbarModuleExtension, translateKey, } from '../../affine-shared/services/index.js';
6
6
  import { getMostCommonValue } from '../../affine-shared/utils/index.js';
7
7
  import { getRootBlock, LINE_STYLE_LIST, renderMenu, } from '../../affine-widget-edgeless-toolbar/index.js';
8
8
  import { Bound } from '../../global/gfx/index.js';
@@ -15,11 +15,18 @@ import { ShapeElementView } from '../element-view.js';
15
15
  import { applyTextFitMode, nextTextFitMode } from '../text-fit.js';
16
16
  import { mountShapeTextEditor } from '../text/edgeless-shape-text-editor.js';
17
17
  import { ShapeComponentConfig } from './shape-menu-config.js';
18
- /** Icon + label per text fit mode for the cycling toolbar button. */
18
+ import { SHAPE_ADD_TEXT_TOOLTIP, SHAPE_EDIT_VERTICES_TOOLTIP, SHAPE_SWITCH_TYPE_LABEL, SHAPE_TEXT_FIT_ARIA, SHAPE_TEXT_FIT_CONTAINED, SHAPE_TEXT_FIT_GROW, SHAPE_TEXT_FIT_OVERFLOW, SHAPE_TEXT_FIT_TOOLTIP, } from '../translations.js';
19
+ /** Icon + wording per text fit mode for the cycling toolbar button. */
19
20
  const TEXT_FIT_UI = {
20
- [TextFitMode.Grow]: { icon: AutoHeightIcon(), label: 'Grow shape' },
21
- [TextFitMode.Contained]: { icon: AutoSizeIcon(), label: 'Contained text' },
22
- [TextFitMode.Overflow]: { icon: ScaleAltIcon(), label: 'Overflow text' },
21
+ [TextFitMode.Grow]: { icon: AutoHeightIcon(), wording: SHAPE_TEXT_FIT_GROW },
22
+ [TextFitMode.Contained]: {
23
+ icon: AutoSizeIcon(),
24
+ wording: SHAPE_TEXT_FIT_CONTAINED,
25
+ },
26
+ [TextFitMode.Overflow]: {
27
+ icon: ScaleAltIcon(),
28
+ wording: SHAPE_TEXT_FIT_OVERFLOW,
29
+ },
23
30
  };
24
31
  export const shapeToolbarConfig = {
25
32
  actions: [
@@ -52,8 +59,10 @@ export const shapeToolbarConfig = {
52
59
  return renderMenu({
53
60
  icon: ShapeIcon(),
54
61
  label: 'Switch shape type',
62
+ labelWording: SHAPE_SWITCH_TYPE_LABEL,
55
63
  items: ShapeComponentConfig.map(item => ({
56
64
  key: item.tooltip,
65
+ keyWording: item.tooltipWording,
57
66
  value: item.name,
58
67
  icon: shapeStyle === ShapeStyle.General
59
68
  ? item.generalIcon
@@ -62,6 +71,7 @@ export const shapeToolbarConfig = {
62
71
  })),
63
72
  currentValue: shapeName,
64
73
  onPick,
74
+ std: ctx.std,
65
75
  });
66
76
  },
67
77
  },
@@ -85,9 +95,11 @@ export const shapeToolbarConfig = {
85
95
  };
86
96
  return renderMenu({
87
97
  label: 'Style',
98
+ labelWording: STYLE_MENU_LABEL,
88
99
  items: LINE_STYLE_LIST,
89
100
  currentValue: shapeStyle === ShapeStyle.Scribbled,
90
101
  onPick,
102
+ std: ctx.std,
91
103
  });
92
104
  },
93
105
  },
@@ -203,6 +215,7 @@ export const shapeToolbarConfig = {
203
215
  {
204
216
  id: 'f.text',
205
217
  tooltip: 'Add text',
218
+ tooltipWording: SHAPE_ADD_TEXT_TOOLTIP,
206
219
  icon: AddTextIcon(),
207
220
  when(ctx) {
208
221
  const models = ctx.getSurfaceModelsByType(ShapeElementModel);
@@ -221,6 +234,7 @@ export const shapeToolbarConfig = {
221
234
  {
222
235
  id: 'f1.edit-vertices',
223
236
  tooltip: 'Edit vertices',
237
+ tooltipWording: SHAPE_EDIT_VERTICES_TOOLTIP,
224
238
  icon: EditIcon(),
225
239
  when(ctx) {
226
240
  const models = ctx.getSurfaceModelsByType(ShapeElementModel);
@@ -251,11 +265,18 @@ export const shapeToolbarConfig = {
251
265
  return null;
252
266
  const mode = getMostCommonValue(models, 'textFitMode') ?? TextFitMode.Grow;
253
267
  const next = nextTextFitMode(mode);
254
- const { icon, label } = TEXT_FIT_UI[mode];
268
+ const { icon, wording } = TEXT_FIT_UI[mode];
269
+ const label = translateKey(ctx.std, ...wording);
270
+ const nextLabel = translateKey(ctx.std, ...TEXT_FIT_UI[next].wording);
255
271
  return html `
256
272
  <editor-icon-button
257
- aria-label="Text fit: ${label}"
258
- .tooltip=${`Text fit: ${label} — click for ${TEXT_FIT_UI[next].label}`}
273
+ aria-label="${translateKey(ctx.std, ...SHAPE_TEXT_FIT_ARIA, {
274
+ label,
275
+ })}"
276
+ .tooltip=${translateKey(ctx.std, ...SHAPE_TEXT_FIT_TOOLTIP, {
277
+ label,
278
+ nextLabel,
279
+ })}
259
280
  @click=${() => applyTextFitMode(ctx.std, models, next)}
260
281
  >
261
282
  ${icon}
@@ -1,8 +1,10 @@
1
1
  import { SeniorToolExtension } from '../../affine-widget-edgeless-toolbar/index.js';
2
2
  import { html } from 'lit';
3
+ import { SHAPE_TOOL_NAME } from '../translations.js';
3
4
  export const shapeSeniorTool = SeniorToolExtension('shape', ({ block, toolbarContainer }) => {
4
5
  return {
5
6
  name: 'Shape',
7
+ labelKey: SHAPE_TOOL_NAME[0],
6
8
  content: html `<edgeless-shape-tool-button
7
9
  .edgeless=${block}
8
10
  .toolbarContainer=${toolbarContainer}
@@ -1,10 +1,13 @@
1
1
  import type { ShapeToolOption } from '../index.js';
2
+ import type { ChromeWording } from '../../affine-shared/services/index.js';
2
3
  import type { TemplateResult } from 'lit';
3
4
  type Config = {
4
5
  name: ShapeToolOption['shapeName'];
5
6
  generalIcon: TemplateResult<1>;
6
7
  scribbledIcon: TemplateResult<1>;
7
8
  tooltip: string;
9
+ /** {@link tooltip}, for the translation seam. */
10
+ tooltipWording: ChromeWording;
8
11
  disabled: boolean;
9
12
  };
10
13
  export declare const ShapeComponentConfig: Config[];
@@ -1,12 +1,14 @@
1
1
  import { ShapeType } from '../../affine-model/index.js';
2
2
  import { DiamondIcon, EllipseIcon, RoundedRectangleIcon, SquareIcon, TriangleIcon, } from '@blocksuite/icons/lit';
3
3
  import { GeneralPolygonIcon, ScribbledDiamondIcon, ScribbledEllipseIcon, ScribbledPolygonIcon, ScribbledRoundedRectangleIcon, ScribbledSquareIcon, ScribbledTriangleIcon, } from './icons.js';
4
+ import { SHAPE_NAME_DIAMOND, SHAPE_NAME_ELLIPSE, SHAPE_NAME_POLYGON, SHAPE_NAME_ROUNDED_RECT, SHAPE_NAME_SQUARE, SHAPE_NAME_TRIANGLE, } from '../translations.js';
4
5
  export const ShapeComponentConfig = [
5
6
  {
6
7
  name: ShapeType.Rect,
7
8
  generalIcon: SquareIcon(),
8
9
  scribbledIcon: ScribbledSquareIcon,
9
10
  tooltip: 'Square',
11
+ tooltipWording: SHAPE_NAME_SQUARE,
10
12
  disabled: false,
11
13
  },
12
14
  {
@@ -14,6 +16,7 @@ export const ShapeComponentConfig = [
14
16
  generalIcon: EllipseIcon(),
15
17
  scribbledIcon: ScribbledEllipseIcon,
16
18
  tooltip: 'Ellipse',
19
+ tooltipWording: SHAPE_NAME_ELLIPSE,
17
20
  disabled: false,
18
21
  },
19
22
  {
@@ -21,6 +24,7 @@ export const ShapeComponentConfig = [
21
24
  generalIcon: DiamondIcon(),
22
25
  scribbledIcon: ScribbledDiamondIcon,
23
26
  tooltip: 'Diamond',
27
+ tooltipWording: SHAPE_NAME_DIAMOND,
24
28
  disabled: false,
25
29
  },
26
30
  {
@@ -28,6 +32,7 @@ export const ShapeComponentConfig = [
28
32
  generalIcon: TriangleIcon(),
29
33
  scribbledIcon: ScribbledTriangleIcon,
30
34
  tooltip: 'Triangle',
35
+ tooltipWording: SHAPE_NAME_TRIANGLE,
31
36
  disabled: false,
32
37
  },
33
38
  {
@@ -35,6 +40,7 @@ export const ShapeComponentConfig = [
35
40
  generalIcon: GeneralPolygonIcon,
36
41
  scribbledIcon: ScribbledPolygonIcon,
37
42
  tooltip: 'Polygon',
43
+ tooltipWording: SHAPE_NAME_POLYGON,
38
44
  disabled: false,
39
45
  },
40
46
  {
@@ -42,6 +48,7 @@ export const ShapeComponentConfig = [
42
48
  generalIcon: RoundedRectangleIcon(),
43
49
  scribbledIcon: ScribbledRoundedRectangleIcon,
44
50
  tooltip: 'Rounded rectangle',
51
+ tooltipWording: SHAPE_NAME_ROUNDED_RECT,
45
52
  disabled: false,
46
53
  },
47
54
  ];
@@ -0,0 +1,37 @@
1
+ import { type ChromeWording } from '../affine-shared/services/index.js';
2
+ /**
3
+ * The shape toolbar's own wordings. `STYLE_GENERAL` / `STYLE_SCRIBBLED` /
4
+ * `STYLE_MENU_LABEL` / `TOOL_NAME_SHAPE` are declared once in `chrome.ts`
5
+ * (shared with `widgets/edgeless-toolbar` and `gfx/mindmap`) and re-exported
6
+ * here under this package's own name, so a call site in this package can
7
+ * import everything it needs from one place.
8
+ */
9
+ export declare const SHAPE_STYLE_GENERAL: ChromeWording;
10
+ export declare const SHAPE_STYLE_SCRIBBLED: ChromeWording;
11
+ export declare const SHAPE_STYLE_MENU_LABEL: ChromeWording;
12
+ export declare const SHAPE_TOOL_NAME: ChromeWording;
13
+ export declare const SHAPE_TEXT_FIT_GROW: ChromeWording;
14
+ export declare const SHAPE_TEXT_FIT_CONTAINED: ChromeWording;
15
+ export declare const SHAPE_TEXT_FIT_OVERFLOW: ChromeWording;
16
+ /**
17
+ * The cycling button's aria-label and tooltip — interpolated with the
18
+ * already-resolved mode label(s) rather than split into per-word keys (the
19
+ * brief's "don't split a sentence" rule).
20
+ */
21
+ export declare const SHAPE_TEXT_FIT_ARIA: ChromeWording;
22
+ export declare const SHAPE_TEXT_FIT_TOOLTIP: ChromeWording;
23
+ export declare const SHAPE_SWITCH_TYPE_LABEL: ChromeWording;
24
+ export declare const SHAPE_ADD_TEXT_TOOLTIP: ChromeWording;
25
+ export declare const SHAPE_EDIT_VERTICES_TOOLTIP: ChromeWording;
26
+ export declare const SHAPE_NAME_SQUARE: ChromeWording;
27
+ export declare const SHAPE_NAME_ELLIPSE: ChromeWording;
28
+ export declare const SHAPE_NAME_DIAMOND: ChromeWording;
29
+ export declare const SHAPE_NAME_TRIANGLE: ChromeWording;
30
+ export declare const SHAPE_NAME_POLYGON: ChromeWording;
31
+ export declare const SHAPE_NAME_ROUNDED_RECT: ChromeWording;
32
+ /**
33
+ * Every wording this package DECLARES (not the re-exported chrome ones — they
34
+ * are `CHROME_WORDINGS` entries already, and listing them again here would
35
+ * offer a host the same key twice).
36
+ */
37
+ export declare const SHAPE_WORDINGS: readonly ChromeWording[];
@@ -0,0 +1,93 @@
1
+ import { ADD_TEXT_TOOLTIP, STYLE_GENERAL, STYLE_MENU_LABEL, STYLE_SCRIBBLED, TOOL_NAME_SHAPE, } from '../affine-shared/services/index.js';
2
+ /**
3
+ * The shape toolbar's own wordings. `STYLE_GENERAL` / `STYLE_SCRIBBLED` /
4
+ * `STYLE_MENU_LABEL` / `TOOL_NAME_SHAPE` are declared once in `chrome.ts`
5
+ * (shared with `widgets/edgeless-toolbar` and `gfx/mindmap`) and re-exported
6
+ * here under this package's own name, so a call site in this package can
7
+ * import everything it needs from one place.
8
+ */
9
+ export const SHAPE_STYLE_GENERAL = STYLE_GENERAL;
10
+ export const SHAPE_STYLE_SCRIBBLED = STYLE_SCRIBBLED;
11
+ export const SHAPE_STYLE_MENU_LABEL = STYLE_MENU_LABEL;
12
+ export const SHAPE_TOOL_NAME = TOOL_NAME_SHAPE;
13
+ /* ── Text-fit cycling button ───────────────────────────────────────────── */
14
+ export const SHAPE_TEXT_FIT_GROW = [
15
+ 'com.labre.shape.text-fit.grow',
16
+ 'Grow shape',
17
+ ];
18
+ export const SHAPE_TEXT_FIT_CONTAINED = [
19
+ 'com.labre.shape.text-fit.contained',
20
+ 'Contained text',
21
+ ];
22
+ export const SHAPE_TEXT_FIT_OVERFLOW = [
23
+ 'com.labre.shape.text-fit.overflow',
24
+ 'Overflow text',
25
+ ];
26
+ /**
27
+ * The cycling button's aria-label and tooltip — interpolated with the
28
+ * already-resolved mode label(s) rather than split into per-word keys (the
29
+ * brief's "don't split a sentence" rule).
30
+ */
31
+ export const SHAPE_TEXT_FIT_ARIA = [
32
+ 'com.labre.shape.text-fit.aria',
33
+ 'Text fit: {{label}}',
34
+ ];
35
+ export const SHAPE_TEXT_FIT_TOOLTIP = [
36
+ 'com.labre.shape.text-fit.tooltip',
37
+ 'Text fit: {{label}} — click for {{nextLabel}}',
38
+ ];
39
+ /* ── Toolbar actions ────────────────────────────────────────────────────── */
40
+ export const SHAPE_SWITCH_TYPE_LABEL = [
41
+ 'com.labre.shape.toolbar.switch-type',
42
+ 'Switch shape type',
43
+ ];
44
+ export const SHAPE_ADD_TEXT_TOOLTIP = ADD_TEXT_TOOLTIP;
45
+ export const SHAPE_EDIT_VERTICES_TOOLTIP = [
46
+ 'com.labre.shape.toolbar.edit-vertices',
47
+ 'Edit vertices',
48
+ ];
49
+ /* ── Shape names (switch-type menu, drag basket) ───────────────────────── */
50
+ export const SHAPE_NAME_SQUARE = [
51
+ 'com.labre.shape.name.square',
52
+ 'Square',
53
+ ];
54
+ export const SHAPE_NAME_ELLIPSE = [
55
+ 'com.labre.shape.name.ellipse',
56
+ 'Ellipse',
57
+ ];
58
+ export const SHAPE_NAME_DIAMOND = [
59
+ 'com.labre.shape.name.diamond',
60
+ 'Diamond',
61
+ ];
62
+ export const SHAPE_NAME_TRIANGLE = [
63
+ 'com.labre.shape.name.triangle',
64
+ 'Triangle',
65
+ ];
66
+ export const SHAPE_NAME_POLYGON = [
67
+ 'com.labre.shape.name.polygon',
68
+ 'Polygon',
69
+ ];
70
+ export const SHAPE_NAME_ROUNDED_RECT = [
71
+ 'com.labre.shape.name.rounded-rect',
72
+ 'Rounded rectangle',
73
+ ];
74
+ /**
75
+ * Every wording this package DECLARES (not the re-exported chrome ones — they
76
+ * are `CHROME_WORDINGS` entries already, and listing them again here would
77
+ * offer a host the same key twice).
78
+ */
79
+ export const SHAPE_WORDINGS = [
80
+ SHAPE_TEXT_FIT_GROW,
81
+ SHAPE_TEXT_FIT_CONTAINED,
82
+ SHAPE_TEXT_FIT_OVERFLOW,
83
+ SHAPE_TEXT_FIT_ARIA,
84
+ SHAPE_TEXT_FIT_TOOLTIP,
85
+ SHAPE_SWITCH_TYPE_LABEL,
86
+ SHAPE_EDIT_VERTICES_TOOLTIP,
87
+ SHAPE_NAME_SQUARE,
88
+ SHAPE_NAME_ELLIPSE,
89
+ SHAPE_NAME_DIAMOND,
90
+ SHAPE_NAME_TRIANGLE,
91
+ SHAPE_NAME_POLYGON,
92
+ SHAPE_NAME_ROUNDED_RECT,
93
+ ];
@@ -1,6 +1,8 @@
1
1
  import { ConnectorMode, FontFamily, FontWeight, PointStyle, ShapeStyle, StrokeStyle, TextAlign, } from '../../affine-model/index.js';
2
2
  import { NOTATION_NEUTRALS } from '../../affine-shared/consts/index.js';
3
+ import { fillPlaceholders, translateKey, } from '../../affine-shared/services/index.js';
3
4
  import { makeTemplateSnapshot, surfaceText, } from '../make-snapshot.js';
5
+ import { BMC_SEED_CHANNELS, BMC_SEED_COST_STRUCTURE, BMC_SEED_CUSTOMER_RELATIONSHIPS, BMC_SEED_CUSTOMER_SEGMENTS, BMC_SEED_DATE, BMC_SEED_DESIGNED_BY, BMC_SEED_DESIGNED_FOR, BMC_SEED_KEY_ACTIVITIES, BMC_SEED_KEY_PARTNERSHIPS, BMC_SEED_KEY_RESOURCES, BMC_SEED_REVENUE_STREAMS, BMC_SEED_TITLE, BMC_SEED_VALUE_PROPOSITIONS, BMC_SEED_VERSION, FISHBONE_SEED_CATEGORY, FISHBONE_SEED_EFFECT, FISHBONE_SEED_ITEM_1, FISHBONE_SEED_ITEM_2, GANTT_SEED_BUILD, GANTT_SEED_DESIGN, GANTT_SEED_DISCOVERY, GANTT_SEED_LAUNCH, GANTT_SEED_WEEK, KANBAN_SEED_CARD, KANBAN_SEED_DOING, KANBAN_SEED_DONE, KANBAN_SEED_TODO, SWOT_SEED_OPPORTUNITIES, SWOT_SEED_STRENGTHS, SWOT_SEED_THREATS, SWOT_SEED_WEAKNESSES, TEMPLATE_PANEL_CATEGORY_OTHER, } from '../translations.js';
4
6
  /**
5
7
  * The generic ("Other") diagrams: built ONLY from general BlockSuite shapes
6
8
  * (`shape` rect/polygon, `text`, `connector`) per the composition principle —
@@ -63,21 +65,27 @@ function line(x1, y1, x2, y2, opts = {}) {
63
65
  target: { position: [x2, y2] },
64
66
  };
65
67
  }
68
+ /** Resolve a wording through the host, or its English fallback with no host. */
69
+ function tr(std, wording, params) {
70
+ return std
71
+ ? translateKey(std, ...wording, params)
72
+ : fillPlaceholders(wording[1], params);
73
+ }
66
74
  // ── SWOT (window-mullion quadrant, black labels) ──────────────────────
67
- function swot() {
75
+ function swot(std) {
68
76
  const M = { fontSize: 22, weight: FontWeight.Medium };
69
77
  return {
70
78
  box: rect(0, 0, 520, 340),
71
79
  v: line(260, 0, 260, 340),
72
80
  h: line(0, 170, 520, 170),
73
- s: label(24, 24, 220, 30, 'Strengths', M),
74
- w: label(284, 24, 220, 30, 'Weaknesses', M),
75
- o: label(24, 194, 220, 30, 'Opportunities', M),
76
- t: label(284, 194, 220, 30, 'Threats', M),
81
+ s: label(24, 24, 220, 30, tr(std, SWOT_SEED_STRENGTHS), M),
82
+ w: label(284, 24, 220, 30, tr(std, SWOT_SEED_WEAKNESSES), M),
83
+ o: label(24, 194, 220, 30, tr(std, SWOT_SEED_OPPORTUNITIES), M),
84
+ t: label(284, 194, 220, 30, tr(std, SWOT_SEED_THREATS), M),
77
85
  };
78
86
  }
79
87
  // ── Kanban (To do / Doing / Done) ─────────────────────────────────────
80
- function kanban() {
88
+ function kanban(std) {
81
89
  const colOpts = {
82
90
  fill: NOTATION_NEUTRALS.cardFill,
83
91
  stroke: MUTED,
@@ -89,21 +97,22 @@ function kanban() {
89
97
  weight: FontWeight.Medium,
90
98
  align: TextAlign.Center,
91
99
  };
100
+ const cardText = tr(std, KANBAN_SEED_CARD);
92
101
  const card = (x, y, fill, stroke) => rect(x, y, 188, 60, {
93
102
  fill,
94
103
  stroke,
95
104
  sw: 1.5,
96
105
  radius: 8,
97
- text: 'Card',
106
+ text: cardText,
98
107
  fontSize: 14,
99
108
  });
100
109
  return {
101
110
  c1: rect(0, 0, 220, 420, colOpts),
102
111
  c2: rect(244, 0, 220, 420, colOpts),
103
112
  c3: rect(488, 0, 220, 420, colOpts),
104
- h1: label(0, 16, 220, 24, 'To do', head),
105
- h2: label(244, 16, 220, 24, 'Doing', head),
106
- h3: label(488, 16, 220, 24, 'Done', head),
113
+ h1: label(0, 16, 220, 24, tr(std, KANBAN_SEED_TODO), head),
114
+ h2: label(244, 16, 220, 24, tr(std, KANBAN_SEED_DOING), head),
115
+ h3: label(488, 16, 220, 24, tr(std, KANBAN_SEED_DONE), head),
107
116
  a1: card(16, 56, '#fde6c8', '#e0a23a'),
108
117
  a2: card(16, 128, '#fde6c8', '#e0a23a'),
109
118
  b1: card(260, 56, '#d6e4fb', '#4574c4'),
@@ -112,7 +121,7 @@ function kanban() {
112
121
  };
113
122
  }
114
123
  // ── Business Model Canvas (Strategyzer 9-block layout) ────────────────
115
- function bmc() {
124
+ function bmc(std) {
116
125
  const blk = { stroke: DARK, sw: 1.5 };
117
126
  const t = (x, y, s) => label(x + 12, y + 12, 180, 22, s, {
118
127
  fontSize: 14,
@@ -125,12 +134,12 @@ function bmc() {
125
134
  color: NOTATION_NEUTRALS.label,
126
135
  }),
127
136
  });
128
- const h1 = hdr(470, 'Designed for');
129
- const h2 = hdr(602, 'Designed by');
130
- const h3 = hdr(734, 'Date');
131
- const h4 = hdr(866, 'Version');
137
+ const h1 = hdr(470, tr(std, BMC_SEED_DESIGNED_FOR));
138
+ const h2 = hdr(602, tr(std, BMC_SEED_DESIGNED_BY));
139
+ const h3 = hdr(734, tr(std, BMC_SEED_DATE));
140
+ const h4 = hdr(866, tr(std, BMC_SEED_VERSION));
132
141
  return {
133
- title: label(0, 8, 440, 32, 'Business model canvas', {
142
+ title: label(0, 8, 440, 32, tr(std, BMC_SEED_TITLE), {
134
143
  fontSize: 24,
135
144
  weight: FontWeight.Medium,
136
145
  }),
@@ -151,20 +160,23 @@ function bmc() {
151
160
  cs: rect(800, 56, 196, 300, blk),
152
161
  cost: rect(0, 360, 496, 84, blk),
153
162
  rev: rect(500, 360, 496, 84, blk),
154
- tkp: t(0, 56, 'Key partnerships'),
155
- tka: t(200, 56, 'Key activities'),
156
- tkr: t(200, 206, 'Key resources'),
157
- tvp: t(400, 56, 'Value propositions'),
158
- tcr: t(600, 56, 'Customer relationships'),
159
- tch: t(600, 206, 'Channels'),
160
- tcs: t(800, 56, 'Customer segments'),
161
- tcost: t(0, 360, 'Cost structure'),
162
- trev: t(500, 360, 'Revenue streams'),
163
+ tkp: t(0, 56, tr(std, BMC_SEED_KEY_PARTNERSHIPS)),
164
+ tka: t(200, 56, tr(std, BMC_SEED_KEY_ACTIVITIES)),
165
+ tkr: t(200, 206, tr(std, BMC_SEED_KEY_RESOURCES)),
166
+ tvp: t(400, 56, tr(std, BMC_SEED_VALUE_PROPOSITIONS)),
167
+ tcr: t(600, 56, tr(std, BMC_SEED_CUSTOMER_RELATIONSHIPS)),
168
+ tch: t(600, 206, tr(std, BMC_SEED_CHANNELS)),
169
+ tcs: t(800, 56, tr(std, BMC_SEED_CUSTOMER_SEGMENTS)),
170
+ tcost: t(0, 360, tr(std, BMC_SEED_COST_STRUCTURE)),
171
+ trev: t(500, 360, tr(std, BMC_SEED_REVENUE_STREAMS)),
163
172
  };
164
173
  }
165
174
  // ── Fishbone / Ishikawa (spine + arrowhead bones + CATEGORY/ITEM) ─────
166
- function fishbone() {
167
- const cat = (x, y) => rect(x, y, 150, 44, { text: 'CATEGORY', fontSize: 13 });
175
+ function fishbone(std) {
176
+ const categoryText = tr(std, FISHBONE_SEED_CATEGORY);
177
+ const item1Text = tr(std, FISHBONE_SEED_ITEM_1);
178
+ const item2Text = tr(std, FISHBONE_SEED_ITEM_2);
179
+ const cat = (x, y) => rect(x, y, 150, 44, { text: categoryText, fontSize: 13 });
168
180
  const item = (x, y, n) => rect(x, y, 130, 40, {
169
181
  stroke: MUTED,
170
182
  sw: 1.4,
@@ -175,7 +187,10 @@ function fishbone() {
175
187
  });
176
188
  const out = {
177
189
  spine: line(80, 360, 1120, 360, { sw: 6 }),
178
- head: rect(1124, 332, 130, 56, { text: 'Effect', fontSize: 16 }),
190
+ head: rect(1124, 332, 130, 56, {
191
+ text: tr(std, FISHBONE_SEED_EFFECT),
192
+ fontSize: 16,
193
+ }),
179
194
  };
180
195
  // two rib-groups (junctions at x = 360 and 760)
181
196
  [360, 760].forEach((jx, g) => {
@@ -184,16 +199,21 @@ function fishbone() {
184
199
  out[`lb${g}`] = line(ox + 200, 470, jx, 362, { sw: 3, arrow: true });
185
200
  out[`uc${g}`] = cat(ox + 150, 224);
186
201
  out[`lc${g}`] = cat(ox + 150, 452);
187
- out[`ui1${g}`] = item(ox + 130, 286, 'ITEM 1');
188
- out[`ui2${g}`] = item(ox + 170, 326, 'ITEM 2');
189
- out[`li1${g}`] = item(ox + 130, 396, 'ITEM 1');
190
- out[`li2${g}`] = item(ox + 170, 356, 'ITEM 2');
202
+ out[`ui1${g}`] = item(ox + 130, 286, item1Text);
203
+ out[`ui2${g}`] = item(ox + 170, 326, item2Text);
204
+ out[`li1${g}`] = item(ox + 130, 396, item1Text);
205
+ out[`li2${g}`] = item(ox + 170, 356, item2Text);
191
206
  });
192
207
  return out;
193
208
  }
194
209
  // ── Gantt chart ───────────────────────────────────────────────────────
195
- function gantt() {
196
- const rows = ['Discovery', 'Design', 'Build', 'Launch'];
210
+ function gantt(std) {
211
+ const rows = [
212
+ tr(std, GANTT_SEED_DISCOVERY),
213
+ tr(std, GANTT_SEED_DESIGN),
214
+ tr(std, GANTT_SEED_BUILD),
215
+ tr(std, GANTT_SEED_LAUNCH),
216
+ ];
197
217
  const bars = [
198
218
  [220, 280, '#4574c4'],
199
219
  [340, 360, '#2f9e95'],
@@ -208,7 +228,7 @@ function gantt() {
208
228
  stroke: NOTATION_NEUTRALS.cardBorder,
209
229
  sw: 1,
210
230
  });
211
- out[`w${i}`] = label(x - 16, 12, 40, 20, `W${i + 1}`, {
231
+ out[`w${i}`] = label(x - 16, 12, 40, 20, tr(std, GANTT_SEED_WEEK, { n: i + 1 }), {
212
232
  fontSize: 12,
213
233
  color: NOTATION_NEUTRALS.label,
214
234
  align: TextAlign.Center,
@@ -235,21 +255,29 @@ const previews = {
235
255
  fishbone: `<svg ${ATTRS} fill="none"><path d="M14 40 H112" stroke="${DARK}" stroke-width="3"/><rect x="112" y="33" width="20" height="14" stroke="${DARK}" stroke-width="1.4"/><path d="M40 18 L52 40 M40 62 L52 40 M84 18 L96 40 M84 62 L96 40" stroke="${DARK}" stroke-width="1.4"/></svg>`,
236
256
  gantt: `<svg ${ATTRS} fill="none"><path d="M40 14 V70 M62 14 V70 M84 14 V70 M106 14 V70" stroke="${NOTATION_NEUTRALS.cardBorder}"/><rect x="40" y="22" width="34" height="8" rx="2" fill="#4574c4"/><rect x="52" y="36" width="44" height="8" rx="2" fill="#2f9e95"/><rect x="62" y="50" width="50" height="8" rx="2" fill="#d99a2b"/><rect x="84" y="64" width="28" height="8" rx="2" fill="#43a06b"/></svg>`,
237
257
  };
238
- function t(name, preview, elements) {
258
+ /**
259
+ * A hand-composed template — what is left once the artefacts are derived. The
260
+ * seeds a template writes into the document go through the translation seam
261
+ * at placement (ADR 0016); `content` stays the English build, and `localize`
262
+ * rebuilds the same snapshot with translated seeds.
263
+ */
264
+ function t(name, preview, build) {
239
265
  return {
240
266
  name,
241
267
  type: 'template',
242
268
  preview,
243
- content: makeTemplateSnapshot(elements, name),
269
+ content: makeTemplateSnapshot(build(), name),
270
+ localize: std => makeTemplateSnapshot(build(std), name),
244
271
  };
245
272
  }
246
273
  export const otherTemplateCategory = {
247
274
  name: 'Other',
275
+ nameKey: TEMPLATE_PANEL_CATEGORY_OTHER[0],
248
276
  templates: [
249
- t('SWOT', previews.swot, swot()),
250
- t('Kanban board', previews.kanban, kanban()),
251
- t('Business model canvas', previews.bmc, bmc()),
252
- t('Fishbone (Ishikawa)', previews.fishbone, fishbone()),
253
- t('Gantt chart', previews.gantt, gantt()),
277
+ t('SWOT', previews.swot, swot),
278
+ t('Kanban board', previews.kanban, kanban),
279
+ t('Business model canvas', previews.bmc, bmc),
280
+ t('Fishbone (Ishikawa)', previews.fishbone, fishbone),
281
+ t('Gantt chart', previews.gantt, gantt),
254
282
  ],
255
283
  };
@@ -1,5 +1,6 @@
1
1
  import { createIdentifier } from '../global/di/index.js';
2
2
  import { builtInTemplates } from './toolbar/builtin-templates.js';
3
+ import { resolveTemplateName } from './toolbar/resolve-name.js';
3
4
  /**
4
5
  * A framework registers its Templates-panel categories here; the panel reads
5
6
  * them back from the std of the edgeless it opens on. One identifier per
@@ -55,6 +56,7 @@ export function templateManagerFor(std) {
55
56
  ...contributed.map(c => c.name),
56
57
  ]),
57
58
  ],
59
+ categoryLabel: name => byName(name)?.nameKey ?? builtInTemplates.categoryLabel(name),
58
60
  // Both halves, so a host's `extend(...)` can still append to a framework's
59
61
  // own category (the global half answers `[]` for a name it does not know).
60
62
  list: async (name) => {
@@ -67,9 +69,14 @@ export function templateManagerFor(std) {
67
69
  search: async (keyword, name) => {
68
70
  const k = keyword.trim().toLocaleLowerCase();
69
71
  const pool = name ? [byName(name)].filter(c => !!c) : contributed;
72
+ // Matches the ENGLISH name (`templateFromCommand`'s baked-in `name`,
73
+ // still what a catalogue-less playground shows) or the host's own
74
+ // translation of it (`resolveTemplateName`, through the command's
75
+ // `labelKey`) — a search box must not go blind on a translated tile.
70
76
  const own = (await Promise.all(pool.map(loadCategory)))
71
77
  .flat()
72
- .filter(t => t.name?.toLocaleLowerCase().includes(k));
78
+ .filter(t => t.name?.toLocaleLowerCase().includes(k) ||
79
+ resolveTemplateName(std, t).toLocaleLowerCase().includes(k));
73
80
  return [...(await builtInTemplates.search(keyword, name)), ...own];
74
81
  },
75
82
  };
@@ -3,6 +3,8 @@ export * from './make-snapshot.js';
3
3
  export * from './services/template.js';
4
4
  export * from './snapshot-from-action.js';
5
5
  export * from './template-tool.js';
6
+ export * from './toolbar/resolve-name.js';
6
7
  export * from './toolbar/senior-tool.js';
7
8
  export * from './toolbar/template-panel.js';
8
9
  export * from './toolbar/template-type.js';
10
+ export * from './translations.js';
@@ -3,6 +3,8 @@ export * from './make-snapshot.js';
3
3
  export * from './services/template.js';
4
4
  export * from './snapshot-from-action.js';
5
5
  export * from './template-tool.js';
6
+ export * from './toolbar/resolve-name.js';
6
7
  export * from './toolbar/senior-tool.js';
7
8
  export * from './toolbar/template-panel.js';
8
9
  export * from './toolbar/template-type.js';
10
+ export * from './translations.js';
@@ -10,8 +10,13 @@ import type { Template } from './toolbar/template-type.js';
10
10
  * placement actions actually touch and throws on anything else, so an
11
11
  * unsupported action fails loudly at build time instead of producing a
12
12
  * half-empty template.
13
+ *
14
+ * `host` is the editor the template is being inserted into. Its
15
+ * `TranslationProvider`, and nothing else from it, is handed to the action, so
16
+ * the seeds the action writes come out in the host's language. Without a host,
17
+ * the action writes its English fallbacks.
13
18
  */
14
- export declare function snapshotFromAction(run: (std: BlockStdScope) => void, name: string): ReturnType<typeof makeTemplateSnapshot>;
19
+ export declare function snapshotFromAction(run: (std: BlockStdScope) => void, name: string, host?: BlockStdScope): ReturnType<typeof makeTemplateSnapshot>;
15
20
  /**
16
21
  * Derive a template from the command a user would have run — the template IS
17
22
  * the command, so the two can never say different things about what a
@@ -1,4 +1,5 @@
1
1
  import { EdgelessCRUDIdentifier } from '../affine-block-surface/index.js';
2
+ import { TranslationProvider } from '../affine-shared/services/index.js';
2
3
  import { Bound } from '../global/gfx/index.js';
3
4
  import { generateKeyBetween, GfxControllerIdentifier } from '../std/gfx/index.js';
4
5
  import * as Y from 'yjs';
@@ -27,8 +28,13 @@ function materialize(text) {
27
28
  * placement actions actually touch and throws on anything else, so an
28
29
  * unsupported action fails loudly at build time instead of producing a
29
30
  * half-empty template.
31
+ *
32
+ * `host` is the editor the template is being inserted into. Its
33
+ * `TranslationProvider`, and nothing else from it, is handed to the action, so
34
+ * the seeds the action writes come out in the host's language. Without a host,
35
+ * the action writes its English fallbacks.
30
36
  */
31
- export function snapshotFromAction(run, name) {
37
+ export function snapshotFromAction(run, name, host) {
32
38
  const elements = new Map();
33
39
  let n = 0;
34
40
  let lastIndex = null;
@@ -119,7 +125,9 @@ export function snapshotFromAction(run, name) {
119
125
  return crud;
120
126
  throw new Error(`snapshotFromAction: unsupported service "${identifier?.identifierName ?? String(identifier)}"`);
121
127
  },
122
- getOptional: () => undefined,
128
+ getOptional: (identifier) => identifier === TranslationProvider
129
+ ? host?.getOptional(TranslationProvider)
130
+ : undefined,
123
131
  command: {
124
132
  // Really run the command, so a group built by `createGroupCommand` is
125
133
  // whatever that command says a group is — no second definition here.
@@ -193,13 +201,15 @@ function normalizeToOrigin(records) {
193
201
  * framework's artefact looks like.
194
202
  */
195
203
  export function templateFromCommand(command, preview, name = command.labelFallback ?? command.id) {
204
+ const run = (std) => {
205
+ void command.run(std, INVOCATION);
206
+ };
196
207
  return {
197
208
  name,
198
209
  type: 'template',
199
210
  preview,
200
211
  commandId: command.id,
201
- content: snapshotFromAction(std => {
202
- void command.run(std, INVOCATION);
203
- }, name),
212
+ content: snapshotFromAction(run, name),
213
+ localize: host => snapshotFromAction(run, name, host),
204
214
  };
205
215
  }
@@ -3,6 +3,7 @@ export declare const templates: TemplateCategory[];
3
3
  export declare const builtInTemplates: {
4
4
  list: (category: string) => Promise<Template[]>;
5
5
  categories: () => Promise<string[]>;
6
+ categoryLabel: (name: string) => string | undefined;
6
7
  search: (keyword: string, cateName?: string) => Promise<Template[]>;
7
8
  extend(manager: TemplateManager): void;
8
9
  };