@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
@@ -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
  };
@@ -40,6 +40,18 @@ export const builtInTemplates = {
40
40
  // eslint-disable-next-line sonarjs/no-empty-collection
41
41
  return templates.map(cate => cate.name).concat(extendCates);
42
42
  },
43
+ categoryLabel: (name) => {
44
+ // eslint-disable-next-line sonarjs/no-empty-collection
45
+ const own = templates.find(cate => cate.name === name)?.nameKey;
46
+ if (own)
47
+ return own;
48
+ for (const manager of extendTemplate) {
49
+ const key = manager.categoryLabel?.(name);
50
+ if (key)
51
+ return key;
52
+ }
53
+ return undefined;
54
+ },
43
55
  search: async (keyword, cateName) => {
44
56
  const candidates = flat(await Promise.all(extendTemplate.map(manager => manager.search(keyword, cateName))));
45
57
  keyword = keyword.trim().toLocaleLowerCase();
@@ -0,0 +1,25 @@
1
+ import { type BlockStdScope } from '../../std/index.js';
2
+ import type { Template } from './template-type.js';
3
+ /**
4
+ * The DISPLAYED name of a template — resolved through the command it was
5
+ * derived from ({@link Template.commandId}, set by `templateFromCommand`)
6
+ * when it carries one, so a framework artefact's tile shows the command's own
7
+ * translated label rather than the raw English text baked into `name` at
8
+ * build time. A hand-written template (no `commandId`) shows its own `name`,
9
+ * unresolved — those get a key of their own on a case-by-case basis, not
10
+ * through this generic seam.
11
+ *
12
+ * `Template.name` itself stays the STABLE identity `templateFromCommand`
13
+ * bakes in (the drag payload, the `repeat` key, the `templateCache` storage
14
+ * key) — and it is ALSO what gets passed as `translateKey`'s fallback, never
15
+ * `command.labelFallback`: most derived templates leave `name` at its default
16
+ * (the command's own fallback, so the two agree anyway), but a few tiles
17
+ * deliberately keep a name of their own, more specific than the command's
18
+ * (`edgy.addFacets`'s own label is "Enterprise Design facets"; its tile has
19
+ * always said "Facets diagram"). Falling back to `command.labelFallback`
20
+ * would silently swap that wording out from under a catalogue-less
21
+ * playground; reading through the command's `labelKey` while keeping the
22
+ * TEMPLATE's own fallback is what lets a host translate the tile without
23
+ * this function inventing a different English sentence for it first.
24
+ */
25
+ export declare function resolveTemplateName(std: BlockStdScope, template: Template): string;
@@ -0,0 +1,36 @@
1
+ import { translateKey } from '../../affine-shared/services/index.js';
2
+ import { getRegisteredCommands } from '../../std/index.js';
3
+ /**
4
+ * The DISPLAYED name of a template — resolved through the command it was
5
+ * derived from ({@link Template.commandId}, set by `templateFromCommand`)
6
+ * when it carries one, so a framework artefact's tile shows the command's own
7
+ * translated label rather than the raw English text baked into `name` at
8
+ * build time. A hand-written template (no `commandId`) shows its own `name`,
9
+ * unresolved — those get a key of their own on a case-by-case basis, not
10
+ * through this generic seam.
11
+ *
12
+ * `Template.name` itself stays the STABLE identity `templateFromCommand`
13
+ * bakes in (the drag payload, the `repeat` key, the `templateCache` storage
14
+ * key) — and it is ALSO what gets passed as `translateKey`'s fallback, never
15
+ * `command.labelFallback`: most derived templates leave `name` at its default
16
+ * (the command's own fallback, so the two agree anyway), but a few tiles
17
+ * deliberately keep a name of their own, more specific than the command's
18
+ * (`edgy.addFacets`'s own label is "Enterprise Design facets"; its tile has
19
+ * always said "Facets diagram"). Falling back to `command.labelFallback`
20
+ * would silently swap that wording out from under a catalogue-less
21
+ * playground; reading through the command's `labelKey` while keeping the
22
+ * TEMPLATE's own fallback is what lets a host translate the tile without
23
+ * this function inventing a different English sentence for it first.
24
+ */
25
+ export function resolveTemplateName(std, template) {
26
+ const fallback = template.name ?? '';
27
+ // Checked FIRST: a hand-composed template (a worked scene, an example map)
28
+ // carries no `commandId` at all, and `nameKey` is the only way its tile
29
+ // gets a translated wording of its own.
30
+ if (template.nameKey)
31
+ return translateKey(std, template.nameKey, fallback);
32
+ if (!template.commandId)
33
+ return fallback;
34
+ const command = getRegisteredCommands(std).find(c => c.id === template.commandId);
35
+ return command ? translateKey(std, command.labelKey, fallback) : fallback;
36
+ }
@@ -1,8 +1,10 @@
1
1
  import { SeniorToolExtension } from '../../affine-widget-edgeless-toolbar/index.js';
2
2
  import { html } from 'lit';
3
+ import { TEMPLATE_SENIOR_TOOL_NAME } from '../translations.js';
3
4
  export const templateSeniorTool = SeniorToolExtension('template', ({ block }) => {
4
5
  return {
5
- name: 'Template',
6
+ name: TEMPLATE_SENIOR_TOOL_NAME[1],
7
+ labelKey: TEMPLATE_SENIOR_TOOL_NAME[0],
6
8
  // Render after every framework senior tool (default order is 0).
7
9
  order: 100,
8
10
  content: html `<edgeless-template-button .edgeless=${block}>
@@ -13,6 +13,7 @@ export declare class EdgelessTemplatePanel extends EdgelessTemplatePanel_base {
13
13
  static templates: {
14
14
  list: (category: string) => Promise<Template[]>;
15
15
  categories: () => Promise<string[]>;
16
+ categoryLabel: (name: string) => string | undefined;
16
17
  search: (keyword: string, cateName?: string) => Promise<Template[]>;
17
18
  extend(manager: import("./template-type.js").TemplateManager): void;
18
19
  };
@@ -34,7 +34,7 @@ var __runInitializers = (this && this.__runInitializers) || function (thisArg, i
34
34
  };
35
35
  import { DefaultTool } from '../../affine-block-surface/index.js';
36
36
  import { darkToolbarStyles, lightToolbarStyles, } from '../../affine-components/toolbar/index.js';
37
- import { EditPropsStore, ThemeProvider } from '../../affine-shared/services/index.js';
37
+ import { EditPropsStore, ThemeProvider, translateKey, } from '../../affine-shared/services/index.js';
38
38
  import { requestConnectedFrame, stopPropagation, } from '../../affine-shared/utils/index.js';
39
39
  import { EdgelessDraggableElementController } from '../../affine-widget-edgeless-toolbar/index.js';
40
40
  import { WithDisposable } from '../../global/lit/index.js';
@@ -47,8 +47,10 @@ import { styleMap } from 'lit/directives/style-map.js';
47
47
  import { unsafeSVG } from 'lit/directives/unsafe-svg.js';
48
48
  import { templateManagerFor } from '../contribute.js';
49
49
  import { createTemplateJob } from '../services/template.js';
50
+ import { TEMPLATE_PANEL_ADD, TEMPLATE_PANEL_SEARCH_PLACEHOLDER, } from '../translations.js';
50
51
  import { builtInTemplates } from './builtin-templates.js';
51
52
  import { defaultPreview, Triangle } from './cards.js';
53
+ import { resolveTemplateName } from './resolve-name.js';
52
54
  import { cloneDeep } from './utils.js';
53
55
  let EdgelessTemplatePanel = (() => {
54
56
  let _classSuper = WithDisposable(LitElement);
@@ -361,7 +363,12 @@ let EdgelessTemplatePanel = (() => {
361
363
  .then(res => res.blob())
362
364
  .then(blob => templateJob.job.assets.set(key, blob))));
363
365
  }
364
- const insertedBound = await templateJob.insertTemplate(template.content);
366
+ // The seeds in the inserting editor's language (see `Template.localize`);
367
+ // `content` is the English build, kept for previews, search and tests.
368
+ const content = original.localize
369
+ ? original.localize(this.edgeless.std)
370
+ : template.content;
371
+ const insertedBound = await templateJob.insertTemplate(content);
365
372
  original.afterInsert?.(this.edgeless.std, templateJob.insertedElementIds);
366
373
  if (insertedBound && template.type === 'template') {
367
374
  const padding = 20 / this.gfx.viewport.zoom;
@@ -436,7 +443,7 @@ let EdgelessTemplatePanel = (() => {
436
443
  <input
437
444
  class="search-input"
438
445
  type="text"
439
- placeholder="Search file or anything..."
446
+ placeholder=${translateKey(this.edgeless.std, ...TEMPLATE_PANEL_SEARCH_PLACEHOLDER)}
440
447
  @input=${this._updateSearchKeyword}
441
448
  @cut=${stopPropagation}
442
449
  @copy=${stopPropagation}
@@ -445,6 +452,14 @@ let EdgelessTemplatePanel = (() => {
445
452
  </div>
446
453
  <div class="template-categories">
447
454
  ${repeat(_categories, cate => cate, cate => {
455
+ // `cate` stays the STABLE identity (the click handler, the
456
+ // remembered `templateCache`, `catalogue.list`/`search`); only
457
+ // the tab's own TEXT is resolved through the category's
458
+ // `nameKey`, when it carries one — see `TemplateCategory.nameKey`.
459
+ const nameKey = this.catalogue.categoryLabel?.(cate);
460
+ const label = nameKey
461
+ ? translateKey(this.edgeless.std, nameKey, cate)
462
+ : cate;
448
463
  return html `<div
449
464
  class="category-entry ${_currentCategory === cate
450
465
  ? 'selected'
@@ -454,7 +469,7 @@ let EdgelessTemplatePanel = (() => {
454
469
  this._updateTemplates();
455
470
  }}
456
471
  >
457
- ${cate}
472
+ ${label}
458
473
  </div>`;
459
474
  })}
460
475
  </div>
@@ -469,7 +484,11 @@ let EdgelessTemplatePanel = (() => {
469
484
  top: '50%',
470
485
  })}
471
486
  ></affine-template-loading>`
472
- : repeat(_templates, template => template.name, template => {
487
+ : repeat(_templates,
488
+ // The drag payload, `templateCache` and `isBeingDragged`
489
+ // below all key off this SAME identity — never the
490
+ // resolved (possibly translated) display name.
491
+ template => template.name, template => {
473
492
  const preview = template.preview
474
493
  ? template.preview.startsWith('<svg')
475
494
  ? html `${unsafeSVG(template.preview)}`
@@ -481,13 +500,16 @@ let EdgelessTemplatePanel = (() => {
481
500
  : defaultPreview;
482
501
  const isBeingDragged = draggingElement &&
483
502
  draggingElement.data.name === template.name;
503
+ // The one place that asks the host's catalogue for the
504
+ // WORDING above the identity — see `resolveTemplateName`.
505
+ const displayName = resolveTemplateName(this.edgeless.std, template);
484
506
  return html `
485
507
  <div
486
508
  class=${`template-item ${template === this._loadingTemplate ? 'loading' : ''}`}
487
509
  style=${styleMap({
488
510
  opacity: isBeingDragged ? '0' : '1',
489
511
  })}
490
- data-hover-text="Add"
512
+ data-hover-text=${translateKey(this.edgeless.std, ...TEMPLATE_PANEL_ADD)}
491
513
  @mousedown=${(e) => this.draggableController.onMouseDown(e, {
492
514
  data: template,
493
515
  preview,
@@ -503,13 +525,13 @@ let EdgelessTemplatePanel = (() => {
503
525
  ${template === this._loadingTemplate
504
526
  ? html `<affine-template-loading></affine-template-loading>`
505
527
  : nothing}
506
- ${template.name
528
+ ${displayName
507
529
  ? html `<affine-tooltip
508
530
  .offset=${12}
509
531
  .autoHide=${true}
510
532
  tip-position="top"
511
533
  >
512
- ${template.name}
534
+ ${displayName}
513
535
  </affine-tooltip>`
514
536
  : nothing}
515
537
  </div>
@@ -27,6 +27,33 @@ export type Template = {
27
27
  * assert that every framework artefact command has a template.
28
28
  */
29
29
  commandId?: string;
30
+ /**
31
+ * i18n key for the DISPLAYED name of a hand-composed template (a worked
32
+ * scene, an example map) -- the ones {@link commandId} cannot help,
33
+ * because nothing derives their tile from a command's own label. Resolved
34
+ * with {@link name} as its fallback, exactly like
35
+ * {@link TemplateCategory.nameKey} one level up, so registering no
36
+ * `TranslationProvider` shows `name` letter for letter and a standalone
37
+ * playground is unaffected.
38
+ *
39
+ * Checked BEFORE {@link commandId} in `resolveTemplateName`: a template
40
+ * that carries both would be a contradiction (its name is either the
41
+ * command's own wording or a wording of its own, never both), and no
42
+ * shipped template declares both today.
43
+ */
44
+ nameKey?: string;
45
+ /**
46
+ * Rebuild {@link content} in the inserting editor's language — the seeds a
47
+ * template writes into the document (a component's name, a lane's title) go
48
+ * through the translation seam at placement, like a creation action's
49
+ * (ADR 0016). Called once per insertion; without it `content` is inserted
50
+ * as is.
51
+ *
52
+ * With no `TranslationProvider` registered it must return exactly
53
+ * `content`: `content` is the English build, and a standalone playground
54
+ * inserts what it always inserted.
55
+ */
56
+ localize?: (std: BlockStdScope) => unknown;
30
57
  /**
31
58
  * Run once the template's elements are on the surface, with the FRESH
32
59
  * element ids in snapshot order — for a template whose final shape depends
@@ -36,11 +63,25 @@ export type Template = {
36
63
  };
37
64
  export type TemplateCategory = {
38
65
  name: string;
66
+ /**
67
+ * i18n key of the category's own tab label, resolved with {@link name} as
68
+ * its fallback — so registering no `TranslationProvider` shows exactly
69
+ * `name`, letter for letter. A framework category reuses its OWN existing
70
+ * key (`com.labre.framework.<id>`, the senior button's); a generic one
71
+ * (`Other`) gets a key of its own. Absent for a category whose display name
72
+ * cannot be attributed to one owner (Cynefin and Estuarine share a single
73
+ * `cynefin-estuarine` framework key that names neither individually) or that
74
+ * a host contributed through {@link TemplateManager.extend} — either way
75
+ * `name` is shown as is.
76
+ */
77
+ nameKey?: string;
39
78
  templates: Template[] | (() => Promise<Template[]>);
40
79
  };
41
80
  export interface TemplateManager {
42
81
  list(category: string): Promise<Template[]> | Template[];
43
82
  categories(): Promise<string[]> | string[];
44
83
  search(keyword: string, category?: string): Promise<Template[]> | Template[];
84
+ /** {@link TemplateCategory.nameKey} of the category named `name`, if any. */
85
+ categoryLabel?(name: string): string | undefined;
45
86
  extend?(manager: TemplateManager): void;
46
87
  }
@@ -0,0 +1,71 @@
1
+ import { type ChromeWording } from '../affine-shared/services/index.js';
2
+ /**
3
+ * This package's own wordings, joined into `PACKAGE_WORDINGS` in
4
+ * `@labre/affine/translations` — see that file and
5
+ * `packages/affine/shared/src/services/translation-service/README.md`.
6
+ *
7
+ * Framework-derived template names do NOT live here: a template's tooltip is
8
+ * resolved through the command it derives from (`resolveTemplateName`, in
9
+ * `./toolbar/resolve-name.ts`), and a hand-written template's own name is a
10
+ * key of the framework that authored it, not of this generic panel.
11
+ */
12
+ /** The templates-panel tile's hover caption — genuinely generic chrome. */
13
+ export declare const TEMPLATE_PANEL_ADD: ChromeWording;
14
+ /** The templates-panel search field's placeholder. */
15
+ export declare const TEMPLATE_PANEL_SEARCH_PLACEHOLDER: ChromeWording;
16
+ /**
17
+ * The built-in "Other" category's own tab label. An alias (L7 dedupe): the
18
+ * same word as {@link CATALOGUE_OTHER}, one key.
19
+ */
20
+ export declare const TEMPLATE_PANEL_CATEGORY_OTHER: ChromeWording;
21
+ /** The "Template" senior tool's own button name (`SeniorTool.labelKey`). */
22
+ export declare const TEMPLATE_SENIOR_TOOL_NAME: ChromeWording;
23
+ export declare const TEMPLATE_PACKAGE_WORDINGS: readonly ChromeWording[];
24
+ /**
25
+ * The generic ("Other") diagrams' own seeds: the captions painted onto the
26
+ * five hand-composed templates in `builtin/other.ts` (SWOT, Kanban board,
27
+ * Business model canvas, Fishbone, Gantt chart). Resolved through
28
+ * `Template.localize` — no command draws these scenes, so there is no
29
+ * creation-action call site to resolve them at.
30
+ */
31
+ export declare const SWOT_SEED_STRENGTHS: ChromeWording;
32
+ export declare const SWOT_SEED_WEAKNESSES: ChromeWording;
33
+ export declare const SWOT_SEED_OPPORTUNITIES: ChromeWording;
34
+ export declare const SWOT_SEED_THREATS: ChromeWording;
35
+ export declare const KANBAN_SEED_CARD: ChromeWording;
36
+ export declare const KANBAN_SEED_TODO: ChromeWording;
37
+ export declare const KANBAN_SEED_DOING: ChromeWording;
38
+ export declare const KANBAN_SEED_DONE: ChromeWording;
39
+ /** The canvas's own header, distinct from the catalog entry's `name`. */
40
+ export declare const BMC_SEED_TITLE: ChromeWording;
41
+ export declare const BMC_SEED_DESIGNED_FOR: ChromeWording;
42
+ export declare const BMC_SEED_DESIGNED_BY: ChromeWording;
43
+ export declare const BMC_SEED_DATE: ChromeWording;
44
+ export declare const BMC_SEED_VERSION: ChromeWording;
45
+ export declare const BMC_SEED_KEY_PARTNERSHIPS: ChromeWording;
46
+ export declare const BMC_SEED_KEY_ACTIVITIES: ChromeWording;
47
+ export declare const BMC_SEED_KEY_RESOURCES: ChromeWording;
48
+ export declare const BMC_SEED_VALUE_PROPOSITIONS: ChromeWording;
49
+ export declare const BMC_SEED_CUSTOMER_RELATIONSHIPS: ChromeWording;
50
+ export declare const BMC_SEED_CHANNELS: ChromeWording;
51
+ export declare const BMC_SEED_CUSTOMER_SEGMENTS: ChromeWording;
52
+ export declare const BMC_SEED_COST_STRUCTURE: ChromeWording;
53
+ export declare const BMC_SEED_REVENUE_STREAMS: ChromeWording;
54
+ export declare const FISHBONE_SEED_CATEGORY: ChromeWording;
55
+ export declare const FISHBONE_SEED_EFFECT: ChromeWording;
56
+ export declare const FISHBONE_SEED_ITEM_1: ChromeWording;
57
+ export declare const FISHBONE_SEED_ITEM_2: ChromeWording;
58
+ /** The week-column header above the gantt bars; `{{n}}` is its 1-based index. */
59
+ export declare const GANTT_SEED_WEEK: ChromeWording;
60
+ export declare const GANTT_SEED_DISCOVERY: ChromeWording;
61
+ export declare const GANTT_SEED_DESIGN: ChromeWording;
62
+ export declare const GANTT_SEED_BUILD: ChromeWording;
63
+ export declare const GANTT_SEED_LAUNCH: ChromeWording;
64
+ /** Every seed the five "Other" templates write, for `PACKAGE_SEED_WORDINGS`. */
65
+ export declare const OTHER_TEMPLATE_SEEDS: readonly ChromeWording[];
66
+ /**
67
+ * This package's contribution to the translation-key manifest, listed in
68
+ * `PACKAGE_SEED_WORDINGS` under source `seed`
69
+ * (`packages/affine/all/src/translations.ts`).
70
+ */
71
+ export declare const TEMPLATE_SEED_WORDINGS: readonly ChromeWording[];
@@ -0,0 +1,209 @@
1
+ import { CATALOGUE_OTHER, } from '../affine-shared/services/index.js';
2
+ /**
3
+ * This package's own wordings, joined into `PACKAGE_WORDINGS` in
4
+ * `@labre/affine/translations` — see that file and
5
+ * `packages/affine/shared/src/services/translation-service/README.md`.
6
+ *
7
+ * Framework-derived template names do NOT live here: a template's tooltip is
8
+ * resolved through the command it derives from (`resolveTemplateName`, in
9
+ * `./toolbar/resolve-name.ts`), and a hand-written template's own name is a
10
+ * key of the framework that authored it, not of this generic panel.
11
+ */
12
+ /** The templates-panel tile's hover caption — genuinely generic chrome. */
13
+ export const TEMPLATE_PANEL_ADD = [
14
+ 'com.labre.template.panel.add',
15
+ 'Add',
16
+ ];
17
+ /** The templates-panel search field's placeholder. */
18
+ export const TEMPLATE_PANEL_SEARCH_PLACEHOLDER = [
19
+ 'com.labre.template.panel.search-placeholder',
20
+ 'Search file or anything...',
21
+ ];
22
+ /**
23
+ * The built-in "Other" category's own tab label. An alias (L7 dedupe): the
24
+ * same word as {@link CATALOGUE_OTHER}, one key.
25
+ */
26
+ export const TEMPLATE_PANEL_CATEGORY_OTHER = CATALOGUE_OTHER;
27
+ /** The "Template" senior tool's own button name (`SeniorTool.labelKey`). */
28
+ export const TEMPLATE_SENIOR_TOOL_NAME = [
29
+ 'com.labre.template.senior-tool.name',
30
+ 'Template',
31
+ ];
32
+ export const TEMPLATE_PACKAGE_WORDINGS = [
33
+ TEMPLATE_PANEL_ADD,
34
+ TEMPLATE_PANEL_SEARCH_PLACEHOLDER,
35
+ TEMPLATE_SENIOR_TOOL_NAME,
36
+ ];
37
+ /**
38
+ * The generic ("Other") diagrams' own seeds: the captions painted onto the
39
+ * five hand-composed templates in `builtin/other.ts` (SWOT, Kanban board,
40
+ * Business model canvas, Fishbone, Gantt chart). Resolved through
41
+ * `Template.localize` — no command draws these scenes, so there is no
42
+ * creation-action call site to resolve them at.
43
+ */
44
+ export const SWOT_SEED_STRENGTHS = [
45
+ 'com.labre.template.seed.swot-strengths',
46
+ 'Strengths',
47
+ ];
48
+ export const SWOT_SEED_WEAKNESSES = [
49
+ 'com.labre.template.seed.swot-weaknesses',
50
+ 'Weaknesses',
51
+ ];
52
+ export const SWOT_SEED_OPPORTUNITIES = [
53
+ 'com.labre.template.seed.swot-opportunities',
54
+ 'Opportunities',
55
+ ];
56
+ export const SWOT_SEED_THREATS = [
57
+ 'com.labre.template.seed.swot-threats',
58
+ 'Threats',
59
+ ];
60
+ export const KANBAN_SEED_CARD = [
61
+ 'com.labre.template.seed.kanban-card',
62
+ 'Card',
63
+ ];
64
+ export const KANBAN_SEED_TODO = [
65
+ 'com.labre.template.seed.kanban-todo',
66
+ 'To do',
67
+ ];
68
+ export const KANBAN_SEED_DOING = [
69
+ 'com.labre.template.seed.kanban-doing',
70
+ 'Doing',
71
+ ];
72
+ export const KANBAN_SEED_DONE = [
73
+ 'com.labre.template.seed.kanban-done',
74
+ 'Done',
75
+ ];
76
+ /** The canvas's own header, distinct from the catalog entry's `name`. */
77
+ export const BMC_SEED_TITLE = [
78
+ 'com.labre.template.seed.bmc-title',
79
+ 'Business model canvas',
80
+ ];
81
+ export const BMC_SEED_DESIGNED_FOR = [
82
+ 'com.labre.template.seed.bmc-designed-for',
83
+ 'Designed for',
84
+ ];
85
+ export const BMC_SEED_DESIGNED_BY = [
86
+ 'com.labre.template.seed.bmc-designed-by',
87
+ 'Designed by',
88
+ ];
89
+ export const BMC_SEED_DATE = [
90
+ 'com.labre.template.seed.bmc-date',
91
+ 'Date',
92
+ ];
93
+ export const BMC_SEED_VERSION = [
94
+ 'com.labre.template.seed.bmc-version',
95
+ 'Version',
96
+ ];
97
+ export const BMC_SEED_KEY_PARTNERSHIPS = [
98
+ 'com.labre.template.seed.bmc-key-partnerships',
99
+ 'Key partnerships',
100
+ ];
101
+ export const BMC_SEED_KEY_ACTIVITIES = [
102
+ 'com.labre.template.seed.bmc-key-activities',
103
+ 'Key activities',
104
+ ];
105
+ export const BMC_SEED_KEY_RESOURCES = [
106
+ 'com.labre.template.seed.bmc-key-resources',
107
+ 'Key resources',
108
+ ];
109
+ export const BMC_SEED_VALUE_PROPOSITIONS = [
110
+ 'com.labre.template.seed.bmc-value-propositions',
111
+ 'Value propositions',
112
+ ];
113
+ export const BMC_SEED_CUSTOMER_RELATIONSHIPS = [
114
+ 'com.labre.template.seed.bmc-customer-relationships',
115
+ 'Customer relationships',
116
+ ];
117
+ export const BMC_SEED_CHANNELS = [
118
+ 'com.labre.template.seed.bmc-channels',
119
+ 'Channels',
120
+ ];
121
+ export const BMC_SEED_CUSTOMER_SEGMENTS = [
122
+ 'com.labre.template.seed.bmc-customer-segments',
123
+ 'Customer segments',
124
+ ];
125
+ export const BMC_SEED_COST_STRUCTURE = [
126
+ 'com.labre.template.seed.bmc-cost-structure',
127
+ 'Cost structure',
128
+ ];
129
+ export const BMC_SEED_REVENUE_STREAMS = [
130
+ 'com.labre.template.seed.bmc-revenue-streams',
131
+ 'Revenue streams',
132
+ ];
133
+ export const FISHBONE_SEED_CATEGORY = [
134
+ 'com.labre.template.seed.fishbone-category',
135
+ 'CATEGORY',
136
+ ];
137
+ export const FISHBONE_SEED_EFFECT = [
138
+ 'com.labre.template.seed.fishbone-effect',
139
+ 'Effect',
140
+ ];
141
+ export const FISHBONE_SEED_ITEM_1 = [
142
+ 'com.labre.template.seed.fishbone-item-1',
143
+ 'ITEM 1',
144
+ ];
145
+ export const FISHBONE_SEED_ITEM_2 = [
146
+ 'com.labre.template.seed.fishbone-item-2',
147
+ 'ITEM 2',
148
+ ];
149
+ /** The week-column header above the gantt bars; `{{n}}` is its 1-based index. */
150
+ export const GANTT_SEED_WEEK = [
151
+ 'com.labre.template.seed.gantt-week',
152
+ 'W{{n}}',
153
+ ];
154
+ export const GANTT_SEED_DISCOVERY = [
155
+ 'com.labre.template.seed.gantt-discovery',
156
+ 'Discovery',
157
+ ];
158
+ export const GANTT_SEED_DESIGN = [
159
+ 'com.labre.template.seed.gantt-design',
160
+ 'Design',
161
+ ];
162
+ export const GANTT_SEED_BUILD = [
163
+ 'com.labre.template.seed.gantt-build',
164
+ 'Build',
165
+ ];
166
+ export const GANTT_SEED_LAUNCH = [
167
+ 'com.labre.template.seed.gantt-launch',
168
+ 'Launch',
169
+ ];
170
+ /** Every seed the five "Other" templates write, for `PACKAGE_SEED_WORDINGS`. */
171
+ export const OTHER_TEMPLATE_SEEDS = [
172
+ SWOT_SEED_STRENGTHS,
173
+ SWOT_SEED_WEAKNESSES,
174
+ SWOT_SEED_OPPORTUNITIES,
175
+ SWOT_SEED_THREATS,
176
+ KANBAN_SEED_CARD,
177
+ KANBAN_SEED_TODO,
178
+ KANBAN_SEED_DOING,
179
+ KANBAN_SEED_DONE,
180
+ BMC_SEED_TITLE,
181
+ BMC_SEED_DESIGNED_FOR,
182
+ BMC_SEED_DESIGNED_BY,
183
+ BMC_SEED_DATE,
184
+ BMC_SEED_VERSION,
185
+ BMC_SEED_KEY_PARTNERSHIPS,
186
+ BMC_SEED_KEY_ACTIVITIES,
187
+ BMC_SEED_KEY_RESOURCES,
188
+ BMC_SEED_VALUE_PROPOSITIONS,
189
+ BMC_SEED_CUSTOMER_RELATIONSHIPS,
190
+ BMC_SEED_CHANNELS,
191
+ BMC_SEED_CUSTOMER_SEGMENTS,
192
+ BMC_SEED_COST_STRUCTURE,
193
+ BMC_SEED_REVENUE_STREAMS,
194
+ FISHBONE_SEED_CATEGORY,
195
+ FISHBONE_SEED_EFFECT,
196
+ FISHBONE_SEED_ITEM_1,
197
+ FISHBONE_SEED_ITEM_2,
198
+ GANTT_SEED_WEEK,
199
+ GANTT_SEED_DISCOVERY,
200
+ GANTT_SEED_DESIGN,
201
+ GANTT_SEED_BUILD,
202
+ GANTT_SEED_LAUNCH,
203
+ ];
204
+ /**
205
+ * This package's contribution to the translation-key manifest, listed in
206
+ * `PACKAGE_SEED_WORDINGS` under source `seed`
207
+ * (`packages/affine/all/src/translations.ts`).
208
+ */
209
+ export const TEMPLATE_SEED_WORDINGS = OTHER_TEMPLATE_SEEDS;
@@ -34,7 +34,7 @@ var __runInitializers = (this && this.__runInitializers) || function (thisArg, i
34
34
  };
35
35
  import { CanvasElementType, DefaultTool, EdgelessCRUDIdentifier, getSurfaceBlock, TextUtils, } from '../affine-block-surface/index.js';
36
36
  import { DefaultTheme, TextElementModel } from '../affine-model/index.js';
37
- import { ThemeProvider } from '../affine-shared/services/index.js';
37
+ import { ThemeProvider, translateKey } from '../affine-shared/services/index.js';
38
38
  import { getSelectedRect, overlayScale, toOverlayCoord, } from '../affine-shared/utils/index.js';
39
39
  import { Bound, toRadian, Vec } from '../global/gfx/index.js';
40
40
  import { WithDisposable } from '../global/lit/index.js';
@@ -47,6 +47,7 @@ import { property, query } from 'lit/decorators.js';
47
47
  import { styleMap } from 'lit/directives/style-map.js';
48
48
  import * as Y from 'yjs';
49
49
  import { getCursorByCoord, getLineHeight } from './element-renderer/utils.js';
50
+ import { TEXT_EDITOR_PLACEHOLDER } from './translations.js';
50
51
  export function mountTextElementEditor(textElement, edgeless, focusCoord) {
51
52
  let cursorIndex = textElement.text.length;
52
53
  if (focusCoord) {
@@ -331,7 +332,7 @@ let EdgelessTextEditor = (() => {
331
332
  ></rich-text>
332
333
  ${isEmpty
333
334
  ? html `<span class="edgeless-text-editor-placeholder">
334
- Type from here
335
+ ${translateKey(this.std, ...TEXT_EDITOR_PLACEHOLDER)}
335
336
  </span>`
336
337
  : nothing}
337
338
  </div>`;