@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
@@ -97,21 +97,26 @@ export interface InterchangeNote {
97
97
  message: string;
98
98
  /**
99
99
  * The i18n key {@link message} is the English default of — set only when the
100
- * remark is a FIXED sentence.
100
+ * remark is a FIXED sentence, one per SHAPE of sentence rather than one per
101
+ * exact string (a `{{name}}` hole is filled by {@link messageParams}, not by
102
+ * minting a new key for every value the file happens to carry).
101
103
  *
102
104
  * A reader is a pure function of text (`docs/adr/0012`, P3): it has no `std`,
103
105
  * so it cannot reach the host's catalogue and hands the key over instead, and
104
106
  * `reportInterchangeImport` resolves it when it draws the report. That is the
105
- * whole of the seam here, and it deliberately covers only the remarks that
106
- * say the same thing every time.
107
+ * whole of the seam here.
107
108
  *
108
- * A remark that NAMES something out of the file — an element, an id, a count
109
- * of lanes — carries no key and stays English. The seam has no interpolation
110
- * and no pluralisation (both are the host's), so the alternative would be to
111
- * invent a grammar for sentences with holes in them, which is exactly what
112
- * the three interchange count labels already refuse to do.
109
+ * A remark that names something out of the file with no sentence shape worth
110
+ * sharing (a raw dump, a one-off diagnostic) carries no key and stays
111
+ * English — the seam still has no pluralisation, which is the host's.
113
112
  */
114
113
  messageKey?: string;
114
+ /**
115
+ * `{{name}}`-style values for {@link messageKey}'s placeholders — the file's
116
+ * own words (a unit, a tag name), never a sentence of their own. Ignored
117
+ * when {@link messageKey} is absent.
118
+ */
119
+ messageParams?: Record<string, string | number>;
115
120
  }
116
121
  /**
117
122
  * The five things worth saying about one item, and no sixth.
@@ -161,6 +166,33 @@ export interface InterchangeReport {
161
166
  */
162
167
  sourceVersion?: string;
163
168
  }
169
+ /**
170
+ * A reader's own refusal — THROWN, not returned, because the report's three
171
+ * counts (`InterchangeReport`) cannot say "this is not a file I can read": a
172
+ * report of three zeroes would claim an empty document where there was none
173
+ * (see `importInterchangeFile`, "Failure is an exception, and it says which
174
+ * one", `interchange-import.ts`).
175
+ *
176
+ * Carries the reader's own English sentence as `Error.message`, so every
177
+ * existing `catch` site that only ever did `error.message` keeps reading
178
+ * exactly what it read before — plus the same optional key/params pair
179
+ * {@link InterchangeNote} carries, on the same seam: a reader has no `std`
180
+ * (`docs/adr/0012`, P3) and cannot translate its own refusal, so the catch
181
+ * site that DOES have one (`importInterchangeFile`) resolves it exactly as
182
+ * `remarkLine` resolves a note.
183
+ *
184
+ * Optional and additive: a reader that still throws a plain `Error` (or any
185
+ * other capability's failure) is caught exactly as before — this class only
186
+ * gives the catch site a SECOND thing to check, never a first requirement.
187
+ */
188
+ export declare class InterchangeImportError extends Error {
189
+ readonly messageKey?: string;
190
+ readonly messageParams?: Record<string, string | number>;
191
+ constructor(message: string, options?: {
192
+ messageKey?: string;
193
+ messageParams?: Record<string, string | number>;
194
+ });
195
+ }
164
196
  /** What the caller tells an exporter about the document it is producing. */
165
197
  export interface InterchangeExportContext {
166
198
  /**
@@ -1,4 +1,31 @@
1
1
  import { createIdentifier } from '../../global/di/index.js';
2
+ /**
3
+ * A reader's own refusal — THROWN, not returned, because the report's three
4
+ * counts (`InterchangeReport`) cannot say "this is not a file I can read": a
5
+ * report of three zeroes would claim an empty document where there was none
6
+ * (see `importInterchangeFile`, "Failure is an exception, and it says which
7
+ * one", `interchange-import.ts`).
8
+ *
9
+ * Carries the reader's own English sentence as `Error.message`, so every
10
+ * existing `catch` site that only ever did `error.message` keeps reading
11
+ * exactly what it read before — plus the same optional key/params pair
12
+ * {@link InterchangeNote} carries, on the same seam: a reader has no `std`
13
+ * (`docs/adr/0012`, P3) and cannot translate its own refusal, so the catch
14
+ * site that DOES have one (`importInterchangeFile`) resolves it exactly as
15
+ * `remarkLine` resolves a note.
16
+ *
17
+ * Optional and additive: a reader that still throws a plain `Error` (or any
18
+ * other capability's failure) is caught exactly as before — this class only
19
+ * gives the catch site a SECOND thing to check, never a first requirement.
20
+ */
21
+ export class InterchangeImportError extends Error {
22
+ constructor(message, options) {
23
+ super(message);
24
+ this.name = 'InterchangeImportError';
25
+ this.messageKey = options?.messageKey;
26
+ this.messageParams = options?.messageParams;
27
+ }
28
+ }
2
29
  /** The separator the triple is built from, and therefore reserved in its parts. */
3
30
  const ID_SEPARATOR = ':';
4
31
  /** The one way to spell a capability's id. */
@@ -1,5 +1,5 @@
1
1
  import { type ToolbarContext, type ToolbarModuleConfig } from '../../affine-shared/services/index.js';
2
- import type { FrameworkId } from '../../std/index.js';
2
+ import type { BlockStdScope, FrameworkId } from '../../std/index.js';
3
3
  import type { GfxPrimitiveElementModel } from '../../std/gfx/index.js';
4
4
  import type { TemplateResult } from 'lit';
5
5
  /**
@@ -148,7 +148,7 @@ export interface MorphSpec<K extends string = string> {
148
148
  * still says what the SOURCE kind derived may be rewritten, and a line the
149
149
  * author typed over is theirs.
150
150
  */
151
- afterMorph?(model: GfxPrimitiveElementModel, from: K, to: K): void;
151
+ afterMorph?(model: GfxPrimitiveElementModel, from: K, to: K, std?: BlockStdScope): void;
152
152
  /** The role a kind means — the `from` / `to` of the telemetry, ids only. */
153
153
  roleOf(kind: K): string;
154
154
  /**
@@ -158,8 +158,11 @@ export function applyMorph(ctx, spec, kind) {
158
158
  entry.target.clearField(field);
159
159
  // Inside the loop and inside the one checkpoint above: whatever the rest of
160
160
  // a composite owes this morph — C4's type line — is part of the same single
161
- // ctrl+z as the kind that made it necessary.
162
- spec.afterMorph?.(entry.selected, entry.kind, kind);
161
+ // ctrl+z as the kind that made it necessary. `ctx.std` is handed through so
162
+ // a rewrite can tell an untouched TRANSLATED placeholder from real content
163
+ // (`c4MorphedTypeLine`, `wardleyMorphedLabel`) — with no host it behaves
164
+ // exactly as it always has, English only.
165
+ spec.afterMorph?.(entry.selected, entry.kind, kind, ctx.std);
163
166
  }
164
167
  // The one DIRECT emission in this module, and the arbitrated exception is the
165
168
  // same one the C4 legend button makes: there is no command behind this
@@ -32,7 +32,7 @@ var __runInitializers = (this && this.__runInitializers) || function (thisArg, i
32
32
  }
33
33
  return useValue ? value : void 0;
34
34
  };
35
- import { buildOccurrencePatch, getUniverseRegistry, publishOccurrenceMaterialities, translateKey, } from '../../affine-shared/services/index.js';
35
+ import { buildOccurrencePatch, getUniverseRegistry, publishOccurrenceMaterialities, translateKey, translateTagLabel, } from '../../affine-shared/services/index.js';
36
36
  import { getRegisteredCommands, runCommand, WidgetViewExtension, } from '../../std/index.js';
37
37
  import { resolvePivotBinding } from '../../std/gfx/index.js';
38
38
  import { effect } from '@preact/signals-core';
@@ -330,7 +330,8 @@ let ReadingProposalWidget = (() => {
330
330
  const def = getUniverseRegistry(this.std).tag(tagId);
331
331
  if (!def || def.values === 'open')
332
332
  return valueId;
333
- return def.values.find(value => value.id === valueId)?.label || valueId;
333
+ const value = def.values.find(value => value.id === valueId);
334
+ return (value && translateTagLabel(this.std, value)) || valueId;
334
335
  }
335
336
  _field(testid, label, body) {
336
337
  return html `<div class="reading-field" data-testid=${testid}>
@@ -0,0 +1,48 @@
1
+ import type { ChromeWording } from '../../affine-shared/services/index.js';
2
+ /**
3
+ * The SVG importer's own remarks (`svg-sketch.ts`) — one key per SENTENCE
4
+ * SHAPE, not per exact string: a `{{name}}` hole is filled by
5
+ * `InterchangeNote.messageParams` at report time
6
+ * (`interchange-import.ts`'s `remarkLine`), never split into two keys or
7
+ * baked into the key itself.
8
+ *
9
+ * The reader that raises these is a pure function of text (`docs/adr/0012`,
10
+ * P3): it has no `std`, so each note carries its key and (where it has one)
11
+ * its params, and `reportInterchangeImport` resolves both when it draws the
12
+ * report — see `InterchangeNote.messageKey` / `.messageParams`.
13
+ *
14
+ * NOT included: the three `throw new Error(...)` refusals `parseSvgRoot`
15
+ * raises for a malformed or empty file. Those are caught by
16
+ * `importInterchangeFile`'s single, format-agnostic `catch` — shared by
17
+ * every interchange reader (BPMN, mermaid, OWM, this one) — which shows
18
+ * `error.message` verbatim BY DESIGN ("shown as it is rather than replaced
19
+ * with a wording of our own that knows less"). Keying them would mean
20
+ * teaching that shared catch to resolve a per-reader key, a mechanism this
21
+ * lot does not own the other readers to touch — flagged in this lot's report
22
+ * instead of invented here.
23
+ */
24
+ export declare const SVG_SKETCH_FONT_UNIT: ChromeWording;
25
+ export declare const SVG_SKETCH_HIDDEN_DISPLAY: ChromeWording;
26
+ export declare const SVG_SKETCH_HIDDEN_VISIBILITY: ChromeWording;
27
+ export declare const SVG_SKETCH_OPACITY: ChromeWording;
28
+ export declare const SVG_SKETCH_PAINT_SERVER: ChromeWording;
29
+ export declare const SVG_SKETCH_CURRENT_COLOR: ChromeWording;
30
+ export declare const SVG_SKETCH_TRANSFORM: ChromeWording;
31
+ export declare const SVG_SKETCH_LONE_POINT: ChromeWording;
32
+ export declare const SVG_SKETCH_CURVE: ChromeWording;
33
+ export declare const SVG_SKETCH_EMPTY_BOX: ChromeWording;
34
+ export declare const SVG_SKETCH_PERCENT_RADIUS: ChromeWording;
35
+ export declare const SVG_SKETCH_FLAT_POLYGON: ChromeWording;
36
+ export declare const SVG_SKETCH_EMPTY_TEXT: ChromeWording;
37
+ export declare const SVG_SKETCH_SWITCH: ChromeWording;
38
+ export declare const SVG_SKETCH_SKIPPED: ChromeWording;
39
+ export declare const SVG_SKETCH_REMOVED: ChromeWording;
40
+ export declare const SVG_SKETCH_REMOVED_ATTRIBUTE: ChromeWording;
41
+ export declare const SVG_SKETCH_EMPTY: ChromeWording;
42
+ /**
43
+ * Every wording declared above, in declaration order — joined into
44
+ * `PACKAGE_WORDINGS` (`packages/affine/all/src/translations.ts`) alongside
45
+ * `PROVENANCE_FALLBACK`/`SEVERITY_FALLBACK`/`EXEMPTION_FALLBACK`, this
46
+ * package's other manifest contributions.
47
+ */
48
+ export declare const SVG_SKETCH_WORDINGS: readonly ChromeWording[];
@@ -0,0 +1,120 @@
1
+ /**
2
+ * The SVG importer's own remarks (`svg-sketch.ts`) — one key per SENTENCE
3
+ * SHAPE, not per exact string: a `{{name}}` hole is filled by
4
+ * `InterchangeNote.messageParams` at report time
5
+ * (`interchange-import.ts`'s `remarkLine`), never split into two keys or
6
+ * baked into the key itself.
7
+ *
8
+ * The reader that raises these is a pure function of text (`docs/adr/0012`,
9
+ * P3): it has no `std`, so each note carries its key and (where it has one)
10
+ * its params, and `reportInterchangeImport` resolves both when it draws the
11
+ * report — see `InterchangeNote.messageKey` / `.messageParams`.
12
+ *
13
+ * NOT included: the three `throw new Error(...)` refusals `parseSvgRoot`
14
+ * raises for a malformed or empty file. Those are caught by
15
+ * `importInterchangeFile`'s single, format-agnostic `catch` — shared by
16
+ * every interchange reader (BPMN, mermaid, OWM, this one) — which shows
17
+ * `error.message` verbatim BY DESIGN ("shown as it is rather than replaced
18
+ * with a wording of our own that knows less"). Keying them would mean
19
+ * teaching that shared catch to resolve a per-reader key, a mechanism this
20
+ * lot does not own the other readers to touch — flagged in this lot's report
21
+ * instead of invented here.
22
+ */
23
+ export const SVG_SKETCH_FONT_UNIT = [
24
+ 'com.labre.interchange.svg.font-unit',
25
+ 'Font sizes in `{{unit}}` cannot be resolved without a page to measure against; those labels use the inherited size.',
26
+ ];
27
+ export const SVG_SKETCH_HIDDEN_DISPLAY = [
28
+ 'com.labre.interchange.svg.hidden-display',
29
+ 'Parts of the file marked `display:none` were not imported — they draw nothing where the file came from either.',
30
+ ];
31
+ export const SVG_SKETCH_HIDDEN_VISIBILITY = [
32
+ 'com.labre.interchange.svg.hidden-visibility',
33
+ 'Parts of the file marked `visibility:hidden` were not imported — they draw nothing where the file came from either.',
34
+ ];
35
+ export const SVG_SKETCH_OPACITY = [
36
+ 'com.labre.interchange.svg.opacity',
37
+ 'Transparency is not carried: partly transparent shapes arrive at full strength.',
38
+ ];
39
+ export const SVG_SKETCH_PAINT_SERVER = [
40
+ 'com.labre.interchange.svg.paint-server',
41
+ 'Gradients and patterns are not read; the shapes that used one are a flat neutral.',
42
+ ];
43
+ export const SVG_SKETCH_CURRENT_COLOR = [
44
+ 'com.labre.interchange.svg.current-color',
45
+ '`currentColor` has no page to inherit from here; the shapes that used it are a flat neutral.',
46
+ ];
47
+ export const SVG_SKETCH_TRANSFORM = [
48
+ 'com.labre.interchange.svg.transform',
49
+ '`{{kind}}` transforms are ignored (best effort): what carried one is placed as if it did not.',
50
+ ];
51
+ export const SVG_SKETCH_LONE_POINT = [
52
+ 'com.labre.interchange.svg.lone-point',
53
+ 'A path that never moved anywhere draws nothing and was skipped.',
54
+ ];
55
+ export const SVG_SKETCH_CURVE = [
56
+ 'com.labre.interchange.svg.curve',
57
+ 'Curves are approximated by their endpoints (best effort), so a curved path arrives as straight segments.',
58
+ ];
59
+ export const SVG_SKETCH_EMPTY_BOX = [
60
+ 'com.labre.interchange.svg.empty-box',
61
+ 'Shapes with no width or height were skipped.',
62
+ ];
63
+ export const SVG_SKETCH_PERCENT_RADIUS = [
64
+ 'com.labre.interchange.svg.percent-radius',
65
+ 'Corner radii given as a percentage were not read; those corners arrive square.',
66
+ ];
67
+ export const SVG_SKETCH_FLAT_POLYGON = [
68
+ 'com.labre.interchange.svg.flat-polygon',
69
+ 'A polygon with fewer than three corners, or flat on one axis, arrives as its bounding rectangle.',
70
+ ];
71
+ export const SVG_SKETCH_EMPTY_TEXT = [
72
+ 'com.labre.interchange.svg.empty-text',
73
+ 'Empty text elements were skipped.',
74
+ ];
75
+ export const SVG_SKETCH_SWITCH = [
76
+ 'com.labre.interchange.svg.switch',
77
+ 'A `<switch>` offers alternative renderings; the first was imported and the others were not.',
78
+ ];
79
+ export const SVG_SKETCH_SKIPPED = [
80
+ 'com.labre.interchange.svg.skipped',
81
+ '`<{{name}}>` is not recognised and was skipped.',
82
+ ];
83
+ export const SVG_SKETCH_REMOVED = [
84
+ 'com.labre.interchange.svg.removed',
85
+ '`<{{name}}>` was removed while sanitizing the file — it is one of the constructs an SVG can carry code in — so nothing it drew was imported.',
86
+ ];
87
+ export const SVG_SKETCH_REMOVED_ATTRIBUTE = [
88
+ 'com.labre.interchange.svg.removed-attribute',
89
+ 'Attributes outside the safe SVG drawing vocabulary — event handlers, script URLs, and anything else the sanitizer does not know — were removed before the file was read.',
90
+ ];
91
+ export const SVG_SKETCH_EMPTY = [
92
+ 'com.labre.interchange.svg.empty',
93
+ 'No shape or text was recognised in this SVG, so nothing was drawn.',
94
+ ];
95
+ /**
96
+ * Every wording declared above, in declaration order — joined into
97
+ * `PACKAGE_WORDINGS` (`packages/affine/all/src/translations.ts`) alongside
98
+ * `PROVENANCE_FALLBACK`/`SEVERITY_FALLBACK`/`EXEMPTION_FALLBACK`, this
99
+ * package's other manifest contributions.
100
+ */
101
+ export const SVG_SKETCH_WORDINGS = [
102
+ SVG_SKETCH_FONT_UNIT,
103
+ SVG_SKETCH_HIDDEN_DISPLAY,
104
+ SVG_SKETCH_HIDDEN_VISIBILITY,
105
+ SVG_SKETCH_OPACITY,
106
+ SVG_SKETCH_PAINT_SERVER,
107
+ SVG_SKETCH_CURRENT_COLOR,
108
+ SVG_SKETCH_TRANSFORM,
109
+ SVG_SKETCH_LONE_POINT,
110
+ SVG_SKETCH_CURVE,
111
+ SVG_SKETCH_EMPTY_BOX,
112
+ SVG_SKETCH_PERCENT_RADIUS,
113
+ SVG_SKETCH_FLAT_POLYGON,
114
+ SVG_SKETCH_EMPTY_TEXT,
115
+ SVG_SKETCH_SWITCH,
116
+ SVG_SKETCH_SKIPPED,
117
+ SVG_SKETCH_REMOVED,
118
+ SVG_SKETCH_REMOVED_ATTRIBUTE,
119
+ SVG_SKETCH_EMPTY,
120
+ ];
@@ -1,5 +1,6 @@
1
1
  import { ShapeStyle, ShapeType, StrokeStyle, TextAlign, } from '../../affine-model/index.js';
2
2
  import DOMPurify from 'dompurify';
3
+ import { SVG_SKETCH_CURRENT_COLOR, SVG_SKETCH_CURVE, SVG_SKETCH_EMPTY, SVG_SKETCH_EMPTY_BOX, SVG_SKETCH_EMPTY_TEXT, SVG_SKETCH_FLAT_POLYGON, SVG_SKETCH_FONT_UNIT, SVG_SKETCH_HIDDEN_DISPLAY, SVG_SKETCH_HIDDEN_VISIBILITY, SVG_SKETCH_LONE_POINT, SVG_SKETCH_OPACITY, SVG_SKETCH_PAINT_SERVER, SVG_SKETCH_PERCENT_RADIUS, SVG_SKETCH_REMOVED, SVG_SKETCH_REMOVED_ATTRIBUTE, SVG_SKETCH_SKIPPED, SVG_SKETCH_SWITCH, SVG_SKETCH_TRANSFORM, } from './svg-sketch-translations.js';
3
4
  /**
4
5
  * **SVG → a canvas sketch.** The platform's VISUAL-tier importer, shared by
5
6
  * every framework that declares it (`docs/adr/0012`, P2).
@@ -169,13 +170,25 @@ class Notebook {
169
170
  this.seen = new Set();
170
171
  this.notes = [];
171
172
  }
172
- once(key, message, element) {
173
- if (this.seen.has(key))
173
+ /**
174
+ * @param dedupKey De-duplication identity — a note fires once per distinct
175
+ * value (`font-unit:px`, `font-unit:pt`…), independent of the i18n key
176
+ * below, which stays the same across all of them.
177
+ * @param message The English sentence, already filled in with the file's
178
+ * own words — shown as is with no host catalogue registered.
179
+ * @param wording The key/fallback pair for this sentence's SHAPE
180
+ * (`svg-sketch-translations.ts`), and the params that fill its
181
+ * `{{name}}` holes when it has any.
182
+ */
183
+ once(dedupKey, message, wording, params, element) {
184
+ if (this.seen.has(dedupKey))
174
185
  return;
175
- this.seen.add(key);
186
+ this.seen.add(dedupKey);
176
187
  this.notes.push({
177
188
  kind: 'warning',
178
189
  message,
190
+ messageKey: wording[0],
191
+ ...(params ? { messageParams: params } : {}),
179
192
  ...(element ? { element } : {}),
180
193
  });
181
194
  }
@@ -226,7 +239,7 @@ function fontSizeOf(raw, inherited, notes) {
226
239
  return (value * 4) / 3;
227
240
  if (unit === 'em')
228
241
  return value * inherited;
229
- notes.once(`font-unit:${unit}`, `Font sizes in \`${unit}\` cannot be resolved without a page to measure against; those labels use the inherited size.`);
242
+ notes.once(`font-unit:${unit}`, `Font sizes in \`${unit}\` cannot be resolved without a page to measure against; those labels use the inherited size.`, SVG_SKETCH_FONT_UNIT, { unit });
230
243
  return undefined;
231
244
  }
232
245
  /**
@@ -279,13 +292,13 @@ function isHidden(element, notes) {
279
292
  const style = styleMap(element);
280
293
  const display = style.get('display') ?? element.getAttribute('display');
281
294
  if (display?.trim() === 'none') {
282
- notes.once('hidden:display', 'Parts of the file marked `display:none` were not imported — they draw nothing where the file came from either.');
295
+ notes.once('hidden:display', 'Parts of the file marked `display:none` were not imported — they draw nothing where the file came from either.', SVG_SKETCH_HIDDEN_DISPLAY);
283
296
  return true;
284
297
  }
285
298
  const visibility = style.get('visibility') ?? element.getAttribute('visibility');
286
299
  const hidden = visibility?.trim();
287
300
  if (hidden === 'hidden' || hidden === 'collapse') {
288
- notes.once('hidden:visibility', 'Parts of the file marked `visibility:hidden` were not imported — they draw nothing where the file came from either.');
301
+ notes.once('hidden:visibility', 'Parts of the file marked `visibility:hidden` were not imported — they draw nothing where the file came from either.', SVG_SKETCH_HIDDEN_VISIBILITY);
289
302
  return true;
290
303
  }
291
304
  return false;
@@ -306,7 +319,7 @@ function noteOpacity(element, notes) {
306
319
  continue;
307
320
  const value = Number.parseFloat(raw);
308
321
  if (Number.isFinite(value) && value < 1) {
309
- notes.once('opacity', 'Transparency is not carried: partly transparent shapes arrive at full strength.');
322
+ notes.once('opacity', 'Transparency is not carried: partly transparent shapes arrive at full strength.', SVG_SKETCH_OPACITY);
310
323
  return;
311
324
  }
312
325
  }
@@ -340,11 +353,11 @@ function colorOf(raw, fallback, notes) {
340
353
  if (!value || value === 'none' || value === 'transparent')
341
354
  return undefined;
342
355
  if (value.startsWith('url(')) {
343
- notes.once('paint-server', 'Gradients and patterns are not read; the shapes that used one are a flat neutral.');
356
+ notes.once('paint-server', 'Gradients and patterns are not read; the shapes that used one are a flat neutral.', SVG_SKETCH_PAINT_SERVER);
344
357
  return fallback;
345
358
  }
346
359
  if (value === 'currentColor') {
347
- notes.once('current-color', '`currentColor` has no page to inherit from here; the shapes that used it are a flat neutral.');
360
+ notes.once('current-color', '`currentColor` has no page to inherit from here; the shapes that used it are a flat neutral.', SVG_SKETCH_CURRENT_COLOR);
348
361
  return fallback;
349
362
  }
350
363
  return value;
@@ -412,7 +425,7 @@ function translated(element, frame, notes) {
412
425
  ty += values[1] ?? 0;
413
426
  continue;
414
427
  }
415
- notes.once(`transform:${kind}`, `\`${kind}\` transforms are ignored (best effort): what carried one is placed as if it did not.`);
428
+ notes.once(`transform:${kind}`, `\`${kind}\` transforms are ignored (best effort): what carried one is placed as if it did not.`, SVG_SKETCH_TRANSFORM, { kind });
416
429
  }
417
430
  // A translate is expressed in the PARENT's user units, so it is scaled by the
418
431
  // frame it was written in and never by the one it creates.
@@ -463,7 +476,7 @@ function samplePath(d, notes) {
463
476
  if (current.length >= 2)
464
477
  subpaths.push(current);
465
478
  else if (current.length === 1) {
466
- notes.once('lone-point', 'A path that never moved anywhere draws nothing and was skipped.');
479
+ notes.once('lone-point', 'A path that never moved anywhere draws nothing and was skipped.', SVG_SKETCH_LONE_POINT);
467
480
  }
468
481
  current = [];
469
482
  };
@@ -480,7 +493,7 @@ function samplePath(d, notes) {
480
493
  continue;
481
494
  }
482
495
  if (CURVE_COMMANDS.has(kind)) {
483
- notes.once('curve', 'Curves are approximated by their endpoints (best effort), so a curved path arrives as straight segments.');
496
+ notes.once('curve', 'Curves are approximated by their endpoints (best effort), so a curved path arrives as straight segments.', SVG_SKETCH_CURVE);
484
497
  }
485
498
  // One command letter may carry SEVERAL argument groups (`L 1 2 3 4`), and
486
499
  // a repeated `M` group is an implicit lineto — the spec's own rule, and the
@@ -532,7 +545,7 @@ function readRect(element, frame, paint, sketch) {
532
545
  const w = num(element, 'width');
533
546
  const h = num(element, 'height');
534
547
  if (w <= 0 || h <= 0) {
535
- sketch.notes.once('empty-box', EMPTY_BOX_NOTE);
548
+ sketch.notes.once('empty-box', EMPTY_BOX_NOTE, SVG_SKETCH_EMPTY_BOX);
536
549
  return;
537
550
  }
538
551
  // `rx` is an absolute corner radius in user units, and the shape model reads
@@ -545,7 +558,7 @@ function readRect(element, frame, paint, sketch) {
545
558
  const rawRadius = element.getAttribute('rx') ?? element.getAttribute('ry');
546
559
  let radius = 0;
547
560
  if (rawRadius?.includes('%')) {
548
- sketch.notes.once('percent-radius', 'Corner radii given as a percentage were not read; those corners arrive square.');
561
+ sketch.notes.once('percent-radius', 'Corner radii given as a percentage were not read; those corners arrive square.', SVG_SKETCH_PERCENT_RADIUS);
549
562
  }
550
563
  else {
551
564
  const scaled = len(frame, num(element, 'rx', num(element, 'ry')));
@@ -564,7 +577,7 @@ function readEllipse(element, frame, paint, sketch) {
564
577
  const rx = circle ? r : num(element, 'rx');
565
578
  const ry = circle ? r : num(element, 'ry');
566
579
  if (rx <= 0 || ry <= 0) {
567
- sketch.notes.once('empty-box', EMPTY_BOX_NOTE);
580
+ sketch.notes.once('empty-box', EMPTY_BOX_NOTE, SVG_SKETCH_EMPTY_BOX);
568
581
  return;
569
582
  }
570
583
  const cx = num(element, 'cx');
@@ -600,10 +613,10 @@ function readPolygon(element, frame, paint, sketch) {
600
613
  const h = Math.max(...ys) - minY;
601
614
  if (points.length < 3 || w <= 0 || h <= 0) {
602
615
  if (points.length === 0 || w < 0 || h < 0) {
603
- sketch.notes.once('empty-box', EMPTY_BOX_NOTE);
616
+ sketch.notes.once('empty-box', EMPTY_BOX_NOTE, SVG_SKETCH_EMPTY_BOX);
604
617
  return;
605
618
  }
606
- sketch.notes.once('flat-polygon', 'A polygon with fewer than three corners, or flat on one axis, arrives as its bounding rectangle.');
619
+ sketch.notes.once('flat-polygon', 'A polygon with fewer than three corners, or flat on one axis, arrives as its bounding rectangle.', SVG_SKETCH_FLAT_POLYGON);
607
620
  sketch.elements.push({
608
621
  ...shapeProps(paint, frame, sketch),
609
622
  shapeType: ShapeType.Rect,
@@ -710,7 +723,7 @@ function readText(element, frame, paint, sketch) {
710
723
  }
711
724
  }
712
725
  if (lines.length === 0) {
713
- sketch.notes.once('empty-text', 'Empty text elements were skipped.');
726
+ sketch.notes.once('empty-text', 'Empty text elements were skipped.', SVG_SKETCH_EMPTY_TEXT);
714
727
  return;
715
728
  }
716
729
  const fontSize = len(frame, paint.fontSize ?? DEFAULT_FONT_SIZE);
@@ -780,7 +793,7 @@ function visit(element, frame, inherited, sketch) {
780
793
  // of a label on top of itself.
781
794
  const [first, ...rest] = childElements(element).filter(child => !NON_RENDERING.has(nameOf(child)));
782
795
  if (rest.length > 0) {
783
- sketch.notes.once('switch', 'A `<switch>` offers alternative renderings; the first was imported and the others were not.');
796
+ sketch.notes.once('switch', 'A `<switch>` offers alternative renderings; the first was imported and the others were not.', SVG_SKETCH_SWITCH);
784
797
  }
785
798
  if (first)
786
799
  visit(first, here, paint, sketch);
@@ -834,7 +847,7 @@ function emit(element, name, frame, paint, sketch) {
834
847
  // and whatever SVG grows next. A drawing built out of symbol instances
835
848
  // arrives nearly empty, and this is the line that tells its author why
836
849
  // instead of leaving them to guess.
837
- sketch.notes.once(`skipped:${name}`, `\`<${name}>\` is not recognised and was skipped.`, name);
850
+ sketch.notes.once(`skipped:${name}`, `\`<${name}>\` is not recognised and was skipped.`, SVG_SKETCH_SKIPPED, { name }, name);
838
851
  }
839
852
  }
840
853
  /* ── The capability's function ────────────────────────────────────────── */
@@ -896,14 +909,14 @@ function parseSvgRoot(source, notes) {
896
909
  // plumbing.
897
910
  if (PARSER_SCAFFOLDING.has(name.toLowerCase()))
898
911
  continue;
899
- notes.once(`removed:${name.toLowerCase()}`, `\`<${name}>\` was removed while sanitizing the file — it is one of the constructs an SVG can carry code in — so nothing it drew was imported.`, name);
912
+ notes.once(`removed:${name.toLowerCase()}`, `\`<${name}>\` was removed while sanitizing the file — it is one of the constructs an SVG can carry code in — so nothing it drew was imported.`, SVG_SKETCH_REMOVED, { name }, name);
900
913
  }
901
914
  else if (removed.attribute) {
902
915
  // Worded for what this actually is, which is broader than "unsafe": the
903
916
  // sanitizer's allow-list drops an event handler AND a `requiredFeatures`,
904
917
  // and calling the second one dangerous would be this reader accusing a
905
918
  // perfectly ordinary file of something.
906
- notes.once('removed-attribute', 'Attributes outside the safe SVG drawing vocabulary — event handlers, script URLs, and anything else the sanitizer does not know — were removed before the file was read.');
919
+ notes.once('removed-attribute', 'Attributes outside the safe SVG drawing vocabulary — event handlers, script URLs, and anything else the sanitizer does not know — were removed before the file was read.', SVG_SKETCH_REMOVED_ATTRIBUTE);
907
920
  }
908
921
  }
909
922
  // No cast: `RETURN_DOM: true` in the literal selects DOMPurify's typed
@@ -937,7 +950,7 @@ export function parseSvgSketch(source, context = {}) {
937
950
  // every shape under it inherits — and it establishes the outermost viewport.
938
951
  walk(root, viewportFrame(root, IDENTITY), paintOf(root, INITIAL_PAINT, sketch.notes), sketch);
939
952
  if (sketch.elements.length === 0) {
940
- sketch.notes.once('empty', 'No shape or text was recognised in this SVG, so nothing was drawn.');
953
+ sketch.notes.once('empty', 'No shape or text was recognised in this SVG, so nothing was drawn.', SVG_SKETCH_EMPTY);
941
954
  }
942
955
  return {
943
956
  elements: sketch.elements,
@@ -1,5 +1,5 @@
1
1
  import { EditorChevronDown } from '../../affine-components/toolbar/index.js';
2
- import { getUniverseRegistry, translateKey, } from '../../affine-shared/services/index.js';
2
+ import { getUniverseRegistry, translateKey, translateTagLabel, } from '../../affine-shared/services/index.js';
3
3
  import { getRegisteredCommands, runCommand } from '../../std/index.js';
4
4
  import { elementTagValues, GfxGroupLikeElementModel, GfxPrimitiveElementModel, } from '../../std/gfx/index.js';
5
5
  import { html, nothing } from 'lit';
@@ -190,10 +190,10 @@ function runTagSet(ctx, target, tag, values) {
190
190
  /** One titled block of the dropdown — one tag. */
191
191
  function renderSection(ctx, target, def) {
192
192
  const selected = elementTagValues(target.element, def.id);
193
- const label = def.label || def.id;
193
+ const label = translateTagLabel(ctx.std, def) || def.id;
194
194
  const options = offeredValues(def, selected).map(value => {
195
195
  const on = selected.includes(value.id);
196
- const valueLabel = value.label || value.id;
196
+ const valueLabel = translateTagLabel(ctx.std, value) || value.id;
197
197
  // `data-toggle` beside `data-option`: the row draws like a native option,
198
198
  // but clicking the value in FORCE is how it is un-picked (`toggleValue`),
199
199
  // whatever the tag's cardinality. Without it the selected row inherits
@@ -240,14 +240,14 @@ function triggerLabel(ctx, target) {
240
240
  const selected = elementTagValues(target.element, def.id);
241
241
  return offeredValues(def, selected)
242
242
  .filter(value => selected.includes(value.id))
243
- .map(value => value.label || value.id);
243
+ .map(value => translateTagLabel(ctx.std, value) || value.id);
244
244
  });
245
245
  return chosen.length
246
246
  ? chosen.join(', ')
247
247
  : // One applicable tag names itself ("Nature"); several fall back to the
248
248
  // neutral word, since no single tag name is the truth about the element.
249
249
  target.tags.length === 1
250
- ? target.tags[0].label || target.tags[0].id
250
+ ? translateTagLabel(ctx.std, target.tags[0]) || target.tags[0].id
251
251
  : translateKey(ctx.std, 'com.labre.tags.toolbar.label', 'Qualify');
252
252
  }
253
253
  /**
@@ -1,5 +1,5 @@
1
1
  import { ColorScheme } from '../../affine-model/index.js';
2
- import { ShadowlessElement } from '../../std/index.js';
2
+ import { type BlockStdScope, ShadowlessElement } from '../../std/index.js';
3
3
  import { type GfxModel } from '../../std/gfx/index.js';
4
4
  import { nothing } from 'lit';
5
5
  declare const SurfaceRefPlaceHolder_base: typeof ShadowlessElement & import("../../global/utils/types.js").Constructor<import("../../global/lit/with-disposable.js").DisposableClass>;
@@ -9,6 +9,7 @@ export declare class SurfaceRefPlaceHolder extends SurfaceRefPlaceHolder_base {
9
9
  accessor refFlavour: string;
10
10
  accessor inEdgeless: boolean;
11
11
  accessor theme: ColorScheme;
12
+ accessor std: BlockStdScope;
12
13
  render(): import("lit-html").TemplateResult<1> | typeof nothing;
13
14
  }
14
15
  declare global {