react-cheminfo 0.25.0 → 0.27.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 (436) hide show
  1. package/README.md +73 -2
  2. package/bin/check-deploy.mjs +14 -4
  3. package/bin/check-messages.mjs +229 -0
  4. package/lib/about/ui/AboutBuild.d.ts.map +1 -1
  5. package/lib/about/ui/AboutBuild.js +15 -4
  6. package/lib/about/ui/AboutBuild.js.map +1 -1
  7. package/lib/about/ui/AboutCitations.d.ts.map +1 -1
  8. package/lib/about/ui/AboutCitations.js +3 -1
  9. package/lib/about/ui/AboutCitations.js.map +1 -1
  10. package/lib/about/ui/AboutPage.d.ts.map +1 -1
  11. package/lib/about/ui/AboutPage.js +9 -1
  12. package/lib/about/ui/AboutPage.js.map +1 -1
  13. package/lib/about/ui/AboutProvidedBy.d.ts.map +1 -1
  14. package/lib/about/ui/AboutProvidedBy.js +8 -3
  15. package/lib/about/ui/AboutProvidedBy.js.map +1 -1
  16. package/lib/capsule/ui/Capsule.d.ts +30 -0
  17. package/lib/capsule/ui/Capsule.d.ts.map +1 -0
  18. package/lib/capsule/ui/Capsule.js +12 -0
  19. package/lib/capsule/ui/Capsule.js.map +1 -0
  20. package/lib/capsule/ui/CapsuleFilter.d.ts +19 -3
  21. package/lib/capsule/ui/CapsuleFilter.d.ts.map +1 -1
  22. package/lib/capsule/ui/CapsuleFilter.js +14 -44
  23. package/lib/capsule/ui/CapsuleFilter.js.map +1 -1
  24. package/lib/capsule/ui/capsuleFilterCapsules.d.ts +15 -0
  25. package/lib/capsule/ui/capsuleFilterCapsules.d.ts.map +1 -0
  26. package/lib/capsule/ui/capsuleFilterCapsules.js +47 -0
  27. package/lib/capsule/ui/capsuleFilterCapsules.js.map +1 -0
  28. package/lib/chart/ui/ChartTrackingLayer.d.ts.map +1 -1
  29. package/lib/chart/ui/ChartTrackingLayer.js +4 -2
  30. package/lib/chart/ui/ChartTrackingLayer.js.map +1 -1
  31. package/lib/chrome/ui/SiteHeader.d.ts +1 -1
  32. package/lib/chrome/ui/SiteHeader.d.ts.map +1 -1
  33. package/lib/chrome/ui/SiteHeader.js +4 -2
  34. package/lib/chrome/ui/SiteHeader.js.map +1 -1
  35. package/lib/citation/ui/CitationMenu.d.ts +1 -1
  36. package/lib/citation/ui/CitationMenu.d.ts.map +1 -1
  37. package/lib/citation/ui/CitationMenu.js +7 -3
  38. package/lib/citation/ui/CitationMenu.js.map +1 -1
  39. package/lib/citation/ui/CiteButton.d.ts +1 -1
  40. package/lib/citation/ui/CiteButton.d.ts.map +1 -1
  41. package/lib/citation/ui/CiteButton.js +3 -1
  42. package/lib/citation/ui/CiteButton.js.map +1 -1
  43. package/lib/citation/ui/CopyFormatEntries.d.ts.map +1 -1
  44. package/lib/citation/ui/CopyFormatEntries.js +3 -1
  45. package/lib/citation/ui/CopyFormatEntries.js.map +1 -1
  46. package/lib/citation/ui/WorkEntry.d.ts.map +1 -1
  47. package/lib/citation/ui/WorkEntry.js +3 -1
  48. package/lib/citation/ui/WorkEntry.js.map +1 -1
  49. package/lib/citation/ui/entries.d.ts.map +1 -1
  50. package/lib/citation/ui/entries.js +8 -2
  51. package/lib/citation/ui/entries.js.map +1 -1
  52. package/lib/citation/ui/useCopyFeedback.d.ts.map +1 -1
  53. package/lib/citation/ui/useCopyFeedback.js +9 -4
  54. package/lib/citation/ui/useCopyFeedback.js.map +1 -1
  55. package/lib/clipboard/ui/ClickToCopy.d.ts.map +1 -1
  56. package/lib/clipboard/ui/ClickToCopy.js +12 -6
  57. package/lib/clipboard/ui/ClickToCopy.js.map +1 -1
  58. package/lib/clipboard/ui/CopyButton.d.ts +3 -3
  59. package/lib/clipboard/ui/CopyButton.d.ts.map +1 -1
  60. package/lib/clipboard/ui/CopyButton.js +7 -4
  61. package/lib/clipboard/ui/CopyButton.js.map +1 -1
  62. package/lib/color/ui/ColorScaleEditor.d.ts.map +1 -1
  63. package/lib/color/ui/ColorScaleEditor.js +15 -10
  64. package/lib/color/ui/ColorScaleEditor.js.map +1 -1
  65. package/lib/color/ui/ColorScaleEntry.d.ts.map +1 -1
  66. package/lib/color/ui/ColorScaleEntry.js +4 -2
  67. package/lib/color/ui/ColorScaleEntry.js.map +1 -1
  68. package/lib/color/ui/ColorScaleLegend.d.ts.map +1 -1
  69. package/lib/color/ui/ColorScaleLegend.js +7 -1
  70. package/lib/color/ui/ColorScaleLegend.js.map +1 -1
  71. package/lib/color/ui/ColorScaleSelect.d.ts.map +1 -1
  72. package/lib/color/ui/ColorScaleSelect.js +8 -4
  73. package/lib/color/ui/ColorScaleSelect.js.map +1 -1
  74. package/lib/confirm/ui/ConfirmButton.d.ts +2 -2
  75. package/lib/confirm/ui/ConfirmButton.d.ts.map +1 -1
  76. package/lib/confirm/ui/ConfirmButton.js +4 -2
  77. package/lib/confirm/ui/ConfirmButton.js.map +1 -1
  78. package/lib/core.d.ts +1 -0
  79. package/lib/core.d.ts.map +1 -1
  80. package/lib/core.js +1 -0
  81. package/lib/core.js.map +1 -1
  82. package/lib/credits/ui/CreditsList.d.ts.map +1 -1
  83. package/lib/credits/ui/CreditsList.js +3 -1
  84. package/lib/credits/ui/CreditsList.js.map +1 -1
  85. package/lib/delimited/ui/DelimitedTextDialog.d.ts.map +1 -1
  86. package/lib/delimited/ui/DelimitedTextDialog.js +5 -2
  87. package/lib/delimited/ui/DelimitedTextDialog.js.map +1 -1
  88. package/lib/delimited/ui/DelimitedTextPanel.d.ts.map +1 -1
  89. package/lib/delimited/ui/DelimitedTextPanel.js +8 -8
  90. package/lib/delimited/ui/DelimitedTextPanel.js.map +1 -1
  91. package/lib/deploy/core/checkDeploy.d.ts +3 -1
  92. package/lib/deploy/core/checkDeploy.d.ts.map +1 -1
  93. package/lib/deploy/core/checkDeploy.js +7 -1
  94. package/lib/deploy/core/checkDeploy.js.map +1 -1
  95. package/lib/deploy/core/index.d.ts +1 -0
  96. package/lib/deploy/core/index.d.ts.map +1 -1
  97. package/lib/deploy/core/index.js +1 -0
  98. package/lib/deploy/core/index.js.map +1 -1
  99. package/lib/deploy/core/pageCache.d.ts +24 -0
  100. package/lib/deploy/core/pageCache.d.ts.map +1 -0
  101. package/lib/deploy/core/pageCache.js +91 -0
  102. package/lib/deploy/core/pageCache.js.map +1 -0
  103. package/lib/deploy/core/types.d.ts +1 -1
  104. package/lib/deploy/core/types.d.ts.map +1 -1
  105. package/lib/deploy/core/types.js.map +1 -1
  106. package/lib/download/ui/FigureDownload.d.ts +2 -2
  107. package/lib/download/ui/FigureDownload.d.ts.map +1 -1
  108. package/lib/download/ui/FigureDownload.js +4 -2
  109. package/lib/download/ui/FigureDownload.js.map +1 -1
  110. package/lib/download/ui/FigureDownloadPanel.d.ts.map +1 -1
  111. package/lib/download/ui/FigureDownloadPanel.js +24 -18
  112. package/lib/download/ui/FigureDownloadPanel.js.map +1 -1
  113. package/lib/ecosystem/ui/EcosystemButton.d.ts +1 -1
  114. package/lib/ecosystem/ui/EcosystemButton.d.ts.map +1 -1
  115. package/lib/ecosystem/ui/EcosystemButton.js +4 -2
  116. package/lib/ecosystem/ui/EcosystemButton.js.map +1 -1
  117. package/lib/ecosystem/ui/EcosystemLinks.d.ts +1 -1
  118. package/lib/ecosystem/ui/EcosystemLinks.d.ts.map +1 -1
  119. package/lib/ecosystem/ui/EcosystemLinks.js +5 -2
  120. package/lib/ecosystem/ui/EcosystemLinks.js.map +1 -1
  121. package/lib/ecosystem/ui/EcosystemMenu.d.ts.map +1 -1
  122. package/lib/ecosystem/ui/EcosystemMenu.js +3 -1
  123. package/lib/ecosystem/ui/EcosystemMenu.js.map +1 -1
  124. package/lib/ecosystem/ui/SiteGroupSection.d.ts.map +1 -1
  125. package/lib/ecosystem/ui/SiteGroupSection.js +3 -1
  126. package/lib/ecosystem/ui/SiteGroupSection.js.map +1 -1
  127. package/lib/ecosystem/ui/SiteTile.d.ts.map +1 -1
  128. package/lib/ecosystem/ui/SiteTile.js +3 -1
  129. package/lib/ecosystem/ui/SiteTile.js.map +1 -1
  130. package/lib/error/ui/ErrorFallback.d.ts +2 -2
  131. package/lib/error/ui/ErrorFallback.d.ts.map +1 -1
  132. package/lib/error/ui/ErrorFallback.js +4 -2
  133. package/lib/error/ui/ErrorFallback.js.map +1 -1
  134. package/lib/help/ui/HelpBody.d.ts.map +1 -1
  135. package/lib/help/ui/HelpBody.js +3 -1
  136. package/lib/help/ui/HelpBody.js.map +1 -1
  137. package/lib/help/ui/HelpIcon.d.ts +2 -1
  138. package/lib/help/ui/HelpIcon.d.ts.map +1 -1
  139. package/lib/help/ui/HelpIcon.js +4 -2
  140. package/lib/help/ui/HelpIcon.js.map +1 -1
  141. package/lib/help/ui/HelpToolbarButton.d.ts.map +1 -1
  142. package/lib/help/ui/HelpToolbarButton.js +3 -1
  143. package/lib/help/ui/HelpToolbarButton.js.map +1 -1
  144. package/lib/help/ui/helpName.d.ts +5 -1
  145. package/lib/help/ui/helpName.d.ts.map +1 -1
  146. package/lib/help/ui/helpName.js +4 -2
  147. package/lib/help/ui/helpName.js.map +1 -1
  148. package/lib/i18n/core/chromeCatalog.d.ts +21 -0
  149. package/lib/i18n/core/chromeCatalog.d.ts.map +1 -0
  150. package/lib/i18n/core/chromeCatalog.js +29 -0
  151. package/lib/i18n/core/chromeCatalog.js.map +1 -0
  152. package/lib/i18n/core/index.d.ts +12 -0
  153. package/lib/i18n/core/index.d.ts.map +1 -0
  154. package/lib/i18n/core/index.js +6 -0
  155. package/lib/i18n/core/index.js.map +1 -0
  156. package/lib/i18n/core/languages.d.ts +32 -0
  157. package/lib/i18n/core/languages.d.ts.map +1 -0
  158. package/lib/i18n/core/languages.js +41 -0
  159. package/lib/i18n/core/languages.js.map +1 -0
  160. package/lib/i18n/core/messageCatalog.d.ts +113 -0
  161. package/lib/i18n/core/messageCatalog.d.ts.map +1 -0
  162. package/lib/i18n/core/messageCatalog.js +135 -0
  163. package/lib/i18n/core/messageCatalog.js.map +1 -0
  164. package/lib/i18n/core/messageValues.d.ts +3 -0
  165. package/lib/i18n/core/messageValues.d.ts.map +1 -0
  166. package/lib/i18n/core/messageValues.js +2 -0
  167. package/lib/i18n/core/messageValues.js.map +1 -0
  168. package/lib/i18n/core/session.d.ts +51 -0
  169. package/lib/i18n/core/session.d.ts.map +1 -0
  170. package/lib/i18n/core/session.js +64 -0
  171. package/lib/i18n/core/session.js.map +1 -0
  172. package/lib/i18n/core/translateSetup.d.ts +28 -0
  173. package/lib/i18n/core/translateSetup.d.ts.map +1 -0
  174. package/lib/i18n/core/translateSetup.js +30 -0
  175. package/lib/i18n/core/translateSetup.js.map +1 -0
  176. package/lib/i18n/ui/LanguageSelect.d.ts +37 -0
  177. package/lib/i18n/ui/LanguageSelect.d.ts.map +1 -0
  178. package/lib/i18n/ui/LanguageSelect.js +27 -0
  179. package/lib/i18n/ui/LanguageSelect.js.map +1 -0
  180. package/lib/i18n/ui/index.d.ts +6 -0
  181. package/lib/i18n/ui/index.d.ts.map +1 -0
  182. package/lib/i18n/ui/index.js +4 -0
  183. package/lib/i18n/ui/index.js.map +1 -0
  184. package/lib/i18n/ui/useLanguage.d.ts +23 -0
  185. package/lib/i18n/ui/useLanguage.d.ts.map +1 -0
  186. package/lib/i18n/ui/useLanguage.js +36 -0
  187. package/lib/i18n/ui/useLanguage.js.map +1 -0
  188. package/lib/i18n/ui/useT.d.ts +47 -0
  189. package/lib/i18n/ui/useT.d.ts.map +1 -0
  190. package/lib/i18n/ui/useT.js +51 -0
  191. package/lib/i18n/ui/useT.js.map +1 -0
  192. package/lib/locales/de.json +442 -0
  193. package/lib/locales/en.json +442 -0
  194. package/lib/locales/es.json +442 -0
  195. package/lib/locales/fr.json +442 -0
  196. package/lib/molecule3d/core/gestures.d.ts +10 -0
  197. package/lib/molecule3d/core/gestures.d.ts.map +1 -1
  198. package/lib/molecule3d/core/gestures.js +39 -7
  199. package/lib/molecule3d/core/gestures.js.map +1 -1
  200. package/lib/molecule3d/ui/Molecule3DExport.d.ts.map +1 -1
  201. package/lib/molecule3d/ui/Molecule3DExport.js +3 -1
  202. package/lib/molecule3d/ui/Molecule3DExport.js.map +1 -1
  203. package/lib/molecule3d/ui/Molecule3DHelp.d.ts.map +1 -1
  204. package/lib/molecule3d/ui/Molecule3DHelp.js +7 -2
  205. package/lib/molecule3d/ui/Molecule3DHelp.js.map +1 -1
  206. package/lib/molecule3d/ui/Molecule3DOptions.d.ts.map +1 -1
  207. package/lib/molecule3d/ui/Molecule3DOptions.js +9 -9
  208. package/lib/molecule3d/ui/Molecule3DOptions.js.map +1 -1
  209. package/lib/molecule3d/ui/Molecule3DSurfaceColors.d.ts.map +1 -1
  210. package/lib/molecule3d/ui/Molecule3DSurfaceColors.js +8 -8
  211. package/lib/molecule3d/ui/Molecule3DSurfaceColors.js.map +1 -1
  212. package/lib/molecule3d/ui/Molecule3DToolbar.d.ts.map +1 -1
  213. package/lib/molecule3d/ui/Molecule3DToolbar.js +15 -10
  214. package/lib/molecule3d/ui/Molecule3DToolbar.js.map +1 -1
  215. package/lib/molecule3d/ui/MoleculeViewer3D.d.ts.map +1 -1
  216. package/lib/molecule3d/ui/MoleculeViewer3D.js +6 -3
  217. package/lib/molecule3d/ui/MoleculeViewer3D.js.map +1 -1
  218. package/lib/orbital/ui/AtomicOrbitalCanvas.d.ts.map +1 -1
  219. package/lib/orbital/ui/AtomicOrbitalCanvas.js +3 -1
  220. package/lib/orbital/ui/AtomicOrbitalCanvas.js.map +1 -1
  221. package/lib/orbital/ui/AtomicOrbitalControls.d.ts.map +1 -1
  222. package/lib/orbital/ui/AtomicOrbitalControls.js +12 -15
  223. package/lib/orbital/ui/AtomicOrbitalControls.js.map +1 -1
  224. package/lib/orbital/ui/AtomicOrbitalViewer.d.ts.map +1 -1
  225. package/lib/orbital/ui/AtomicOrbitalViewer.js +6 -3
  226. package/lib/orbital/ui/AtomicOrbitalViewer.js.map +1 -1
  227. package/lib/orbital/ui/capability.d.ts +4 -0
  228. package/lib/orbital/ui/capability.d.ts.map +1 -1
  229. package/lib/orbital/ui/capability.js +4 -0
  230. package/lib/orbital/ui/capability.js.map +1 -1
  231. package/lib/overlay/ui/OverlayBar.d.ts +1 -1
  232. package/lib/overlay/ui/OverlayBar.d.ts.map +1 -1
  233. package/lib/overlay/ui/OverlayBar.js +6 -3
  234. package/lib/overlay/ui/OverlayBar.js.map +1 -1
  235. package/lib/overlay/ui/OverlayInfo.d.ts +1 -1
  236. package/lib/overlay/ui/OverlayInfo.d.ts.map +1 -1
  237. package/lib/overlay/ui/OverlayInfo.js +5 -2
  238. package/lib/overlay/ui/OverlayInfo.js.map +1 -1
  239. package/lib/overlay/ui/OverlayPanel.d.ts +9 -2
  240. package/lib/overlay/ui/OverlayPanel.d.ts.map +1 -1
  241. package/lib/overlay/ui/OverlayPanel.js +5 -11
  242. package/lib/overlay/ui/OverlayPanel.js.map +1 -1
  243. package/lib/overlay/ui/OverlayReadout.d.ts.map +1 -1
  244. package/lib/overlay/ui/OverlayReadout.js +3 -1
  245. package/lib/overlay/ui/OverlayReadout.js.map +1 -1
  246. package/lib/pedagogy/ui/ExerciseActions.d.ts +1 -1
  247. package/lib/pedagogy/ui/ExerciseActions.d.ts.map +1 -1
  248. package/lib/pedagogy/ui/ExerciseActions.js +9 -2
  249. package/lib/pedagogy/ui/ExerciseActions.js.map +1 -1
  250. package/lib/pedagogy/ui/ExerciseProgressHeader.d.ts +1 -1
  251. package/lib/pedagogy/ui/ExerciseProgressHeader.d.ts.map +1 -1
  252. package/lib/pedagogy/ui/ExerciseProgressHeader.js +9 -5
  253. package/lib/pedagogy/ui/ExerciseProgressHeader.js.map +1 -1
  254. package/lib/pedagogy/ui/GlossaryIndex.d.ts +1 -1
  255. package/lib/pedagogy/ui/GlossaryIndex.d.ts.map +1 -1
  256. package/lib/pedagogy/ui/GlossaryIndex.js +6 -8
  257. package/lib/pedagogy/ui/GlossaryIndex.js.map +1 -1
  258. package/lib/pedagogy/ui/HintLadder.d.ts +2 -2
  259. package/lib/pedagogy/ui/HintLadder.d.ts.map +1 -1
  260. package/lib/pedagogy/ui/HintLadder.js +8 -2
  261. package/lib/pedagogy/ui/HintLadder.js.map +1 -1
  262. package/lib/pedagogy/ui/SyntaxTooltip.d.ts +4 -4
  263. package/lib/pedagogy/ui/SyntaxTooltip.d.ts.map +1 -1
  264. package/lib/pedagogy/ui/SyntaxTooltip.js +4 -2
  265. package/lib/pedagogy/ui/SyntaxTooltip.js.map +1 -1
  266. package/lib/pedagogy/ui/TutorialStepStrip.d.ts.map +1 -1
  267. package/lib/pedagogy/ui/TutorialStepStrip.js +7 -2
  268. package/lib/pedagogy/ui/TutorialStepStrip.js.map +1 -1
  269. package/lib/periodic/ui/CategoryLegend.d.ts.map +1 -1
  270. package/lib/periodic/ui/CategoryLegend.js +3 -1
  271. package/lib/periodic/ui/CategoryLegend.js.map +1 -1
  272. package/lib/periodic/ui/ElementCell.d.ts.map +1 -1
  273. package/lib/periodic/ui/ElementCell.js +7 -1
  274. package/lib/periodic/ui/ElementCell.js.map +1 -1
  275. package/lib/periodic/ui/PeriodicTable.d.ts.map +1 -1
  276. package/lib/periodic/ui/PeriodicTable.js +3 -1
  277. package/lib/periodic/ui/PeriodicTable.js.map +1 -1
  278. package/lib/periodic/ui/PeriodicTableChrome.d.ts.map +1 -1
  279. package/lib/periodic/ui/PeriodicTableChrome.js +4 -2
  280. package/lib/periodic/ui/PeriodicTableChrome.js.map +1 -1
  281. package/lib/share/ui/ShareButton.d.ts +2 -2
  282. package/lib/share/ui/ShareButton.d.ts.map +1 -1
  283. package/lib/share/ui/ShareButton.js +5 -2
  284. package/lib/share/ui/ShareButton.js.map +1 -1
  285. package/lib/share/ui/ShareConfigOptions.d.ts.map +1 -1
  286. package/lib/share/ui/ShareConfigOptions.js +4 -2
  287. package/lib/share/ui/ShareConfigOptions.js.map +1 -1
  288. package/lib/share/ui/ShareDialog.d.ts.map +1 -1
  289. package/lib/share/ui/ShareDialog.js +3 -1
  290. package/lib/share/ui/ShareDialog.js.map +1 -1
  291. package/lib/share/ui/ShareDialogContent.d.ts.map +1 -1
  292. package/lib/share/ui/ShareDialogContent.js +10 -1
  293. package/lib/share/ui/ShareDialogContent.js.map +1 -1
  294. package/lib/share/ui/SharePresetTabs.d.ts.map +1 -1
  295. package/lib/share/ui/SharePresetTabs.js +3 -1
  296. package/lib/share/ui/SharePresetTabs.js.map +1 -1
  297. package/lib/slides/ui/BackToSlides.d.ts.map +1 -1
  298. package/lib/slides/ui/BackToSlides.js +4 -2
  299. package/lib/slides/ui/BackToSlides.js.map +1 -1
  300. package/lib/slides/ui/EmbedSlide.d.ts.map +1 -1
  301. package/lib/slides/ui/EmbedSlide.js +3 -1
  302. package/lib/slides/ui/EmbedSlide.js.map +1 -1
  303. package/lib/slides/ui/Slide.d.ts.map +1 -1
  304. package/lib/slides/ui/Slide.js +3 -1
  305. package/lib/slides/ui/Slide.js.map +1 -1
  306. package/lib/slides/ui/SlideshowBar.d.ts.map +1 -1
  307. package/lib/slides/ui/SlideshowBar.js +5 -3
  308. package/lib/slides/ui/SlideshowBar.js.map +1 -1
  309. package/lib/slides/ui/TalkList.d.ts +1 -1
  310. package/lib/slides/ui/TalkList.d.ts.map +1 -1
  311. package/lib/slides/ui/TalkList.js +4 -2
  312. package/lib/slides/ui/TalkList.js.map +1 -1
  313. package/lib/structure/core/editorGuide.d.ts +14 -0
  314. package/lib/structure/core/editorGuide.d.ts.map +1 -1
  315. package/lib/structure/core/editorGuide.js +117 -19
  316. package/lib/structure/core/editorGuide.js.map +1 -1
  317. package/lib/structure/core/editorToolbar.d.ts +3 -1
  318. package/lib/structure/core/editorToolbar.d.ts.map +1 -1
  319. package/lib/structure/core/editorToolbar.js +44 -23
  320. package/lib/structure/core/editorToolbar.js.map +1 -1
  321. package/lib/structure/ui/EditorHelpButton.d.ts.map +1 -1
  322. package/lib/structure/ui/EditorHelpButton.js +3 -2
  323. package/lib/structure/ui/EditorHelpButton.js.map +1 -1
  324. package/lib/structure/ui/StructureEditor.d.ts.map +1 -1
  325. package/lib/structure/ui/StructureEditor.js +3 -1
  326. package/lib/structure/ui/StructureEditor.js.map +1 -1
  327. package/lib/structure/ui/StructureEditorHelp.d.ts.map +1 -1
  328. package/lib/structure/ui/StructureEditorHelp.js +12 -3
  329. package/lib/structure/ui/StructureEditorHelp.js.map +1 -1
  330. package/lib/structure/ui/ToolbarTooltip.d.ts.map +1 -1
  331. package/lib/structure/ui/ToolbarTooltip.js +5 -3
  332. package/lib/structure/ui/ToolbarTooltip.js.map +1 -1
  333. package/lib/ui.d.ts +1 -0
  334. package/lib/ui.d.ts.map +1 -1
  335. package/lib/ui.js +1 -0
  336. package/lib/ui.js.map +1 -1
  337. package/package.json +4 -2
  338. package/src/about/ui/AboutBuild.tsx +23 -16
  339. package/src/about/ui/AboutCitations.tsx +3 -1
  340. package/src/about/ui/AboutPage.tsx +38 -12
  341. package/src/about/ui/AboutProvidedBy.tsx +13 -3
  342. package/src/capsule/ui/Capsule.tsx +48 -0
  343. package/src/capsule/ui/CapsuleFilter.tsx +38 -114
  344. package/src/capsule/ui/capsuleFilterCapsules.tsx +110 -0
  345. package/src/chart/ui/ChartTrackingLayer.tsx +4 -2
  346. package/src/chrome/ui/SiteHeader.tsx +5 -3
  347. package/src/citation/ui/CitationMenu.tsx +9 -5
  348. package/src/citation/ui/CiteButton.tsx +4 -2
  349. package/src/citation/ui/CopyFormatEntries.tsx +3 -1
  350. package/src/citation/ui/WorkEntry.tsx +5 -3
  351. package/src/citation/ui/entries.tsx +9 -2
  352. package/src/citation/ui/useCopyFeedback.ts +11 -4
  353. package/src/clipboard/ui/ClickToCopy.tsx +15 -5
  354. package/src/clipboard/ui/CopyButton.tsx +14 -10
  355. package/src/color/ui/ColorScaleEditor.tsx +17 -15
  356. package/src/color/ui/ColorScaleEntry.tsx +7 -3
  357. package/src/color/ui/ColorScaleLegend.tsx +7 -1
  358. package/src/color/ui/ColorScaleSelect.tsx +12 -6
  359. package/src/confirm/ui/ConfirmButton.tsx +9 -11
  360. package/src/core.ts +1 -0
  361. package/src/credits/ui/CreditsList.tsx +5 -1
  362. package/src/delimited/ui/DelimitedTextDialog.tsx +10 -10
  363. package/src/delimited/ui/DelimitedTextPanel.tsx +19 -12
  364. package/src/deploy/core/checkDeploy.ts +7 -1
  365. package/src/deploy/core/index.ts +1 -0
  366. package/src/deploy/core/pageCache.ts +120 -0
  367. package/src/deploy/core/types.ts +2 -1
  368. package/src/download/ui/FigureDownload.tsx +7 -5
  369. package/src/download/ui/FigureDownloadPanel.tsx +31 -25
  370. package/src/ecosystem/ui/EcosystemButton.tsx +5 -3
  371. package/src/ecosystem/ui/EcosystemLinks.tsx +10 -10
  372. package/src/ecosystem/ui/EcosystemMenu.tsx +3 -1
  373. package/src/ecosystem/ui/SiteGroupSection.tsx +6 -2
  374. package/src/ecosystem/ui/SiteTile.tsx +6 -2
  375. package/src/error/ui/ErrorFallback.tsx +13 -12
  376. package/src/help/ui/HelpBody.tsx +4 -2
  377. package/src/help/ui/HelpIcon.tsx +6 -3
  378. package/src/help/ui/HelpToolbarButton.tsx +4 -1
  379. package/src/help/ui/helpName.ts +10 -2
  380. package/src/i18n/core/chromeCatalog.ts +35 -0
  381. package/src/i18n/core/index.ts +26 -0
  382. package/src/i18n/core/languages.ts +46 -0
  383. package/src/i18n/core/messageCatalog.ts +202 -0
  384. package/src/i18n/core/messageValues.ts +2 -0
  385. package/src/i18n/core/session.ts +82 -0
  386. package/src/i18n/core/translateSetup.ts +47 -0
  387. package/src/i18n/ui/LanguageSelect.tsx +72 -0
  388. package/src/i18n/ui/index.ts +9 -0
  389. package/src/i18n/ui/useLanguage.ts +48 -0
  390. package/src/i18n/ui/useT.ts +90 -0
  391. package/src/locales/de.json +442 -0
  392. package/src/locales/en.json +442 -0
  393. package/src/locales/es.json +442 -0
  394. package/src/locales/fr.json +442 -0
  395. package/src/molecule3d/core/gestures.ts +44 -7
  396. package/src/molecule3d/ui/Molecule3DExport.tsx +3 -1
  397. package/src/molecule3d/ui/Molecule3DHelp.tsx +17 -6
  398. package/src/molecule3d/ui/Molecule3DOptions.tsx +13 -13
  399. package/src/molecule3d/ui/Molecule3DSurfaceColors.tsx +16 -13
  400. package/src/molecule3d/ui/Molecule3DToolbar.tsx +29 -18
  401. package/src/molecule3d/ui/MoleculeViewer3D.tsx +13 -8
  402. package/src/orbital/ui/AtomicOrbitalCanvas.tsx +3 -1
  403. package/src/orbital/ui/AtomicOrbitalControls.tsx +15 -20
  404. package/src/orbital/ui/AtomicOrbitalViewer.tsx +13 -13
  405. package/src/orbital/ui/capability.ts +10 -0
  406. package/src/overlay/ui/OverlayBar.tsx +7 -4
  407. package/src/overlay/ui/OverlayInfo.tsx +6 -3
  408. package/src/overlay/ui/OverlayPanel.tsx +10 -7
  409. package/src/overlay/ui/OverlayReadout.tsx +3 -1
  410. package/src/pedagogy/ui/ExerciseActions.tsx +16 -6
  411. package/src/pedagogy/ui/ExerciseProgressHeader.tsx +13 -11
  412. package/src/pedagogy/ui/GlossaryIndex.tsx +11 -12
  413. package/src/pedagogy/ui/HintLadder.tsx +15 -12
  414. package/src/pedagogy/ui/SyntaxTooltip.tsx +9 -7
  415. package/src/pedagogy/ui/TutorialStepStrip.tsx +8 -3
  416. package/src/periodic/ui/CategoryLegend.tsx +6 -1
  417. package/src/periodic/ui/ElementCell.tsx +7 -1
  418. package/src/periodic/ui/PeriodicTable.tsx +3 -1
  419. package/src/periodic/ui/PeriodicTableChrome.tsx +4 -2
  420. package/src/share/ui/ShareButton.tsx +8 -5
  421. package/src/share/ui/ShareConfigOptions.tsx +6 -7
  422. package/src/share/ui/ShareDialog.tsx +3 -1
  423. package/src/share/ui/ShareDialogContent.tsx +20 -10
  424. package/src/share/ui/SharePresetTabs.tsx +3 -1
  425. package/src/slides/ui/BackToSlides.tsx +4 -2
  426. package/src/slides/ui/EmbedSlide.tsx +3 -3
  427. package/src/slides/ui/Slide.tsx +3 -1
  428. package/src/slides/ui/SlideshowBar.tsx +12 -4
  429. package/src/slides/ui/TalkList.tsx +8 -10
  430. package/src/structure/core/editorGuide.ts +126 -19
  431. package/src/structure/core/editorToolbar.ts +52 -24
  432. package/src/structure/ui/EditorHelpButton.tsx +9 -4
  433. package/src/structure/ui/StructureEditor.tsx +7 -1
  434. package/src/structure/ui/StructureEditorHelp.tsx +34 -11
  435. package/src/structure/ui/ToolbarTooltip.tsx +8 -4
  436. package/src/ui.ts +1 -0
package/lib/core.d.ts CHANGED
@@ -10,6 +10,7 @@ export * from './download/core/index.ts';
10
10
  export * from './ecosystem/core/index.ts';
11
11
  export * from './error/core/index.ts';
12
12
  export * from './format/core/index.ts';
13
+ export * from './i18n/core/index.ts';
13
14
  export * from './language/core/index.ts';
14
15
  export * from './orbital/core/index.ts';
15
16
  export * from './overlay/core/index.ts';
package/lib/core.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC"}
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC"}
package/lib/core.js CHANGED
@@ -10,6 +10,7 @@ export * from "./download/core/index.js";
10
10
  export * from "./ecosystem/core/index.js";
11
11
  export * from "./error/core/index.js";
12
12
  export * from "./format/core/index.js";
13
+ export * from "./i18n/core/index.js";
13
14
  export * from "./language/core/index.js";
14
15
  export * from "./orbital/core/index.js";
15
16
  export * from "./overlay/core/index.js";
package/lib/core.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,+EAA+E;AAC/E,2EAA2E;AAC3E,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,0EAA0E;AAC1E,8EAA8E;AAC9E,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,+EAA+E;AAC/E,2EAA2E;AAC3E,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,0EAA0E;AAC1E,8EAA8E;AAC9E,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"CreditsList.d.ts","sourceRoot":"","sources":["../../../src/credits/ui/CreditsList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,YAAY,EAAE,MAAM,OAAO,CAAC;AAIzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,iCAAiC;AACjC,MAAM,WAAW,gBAAgB;IAC/B,+CAA+C;IAC/C,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;IAChC;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,YAAY,CA4BjE"}
1
+ {"version":3,"file":"CreditsList.d.ts","sourceRoot":"","sources":["../../../src/credits/ui/CreditsList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,YAAY,EAAE,MAAM,OAAO,CAAC;AAKzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,iCAAiC;AACjC,MAAM,WAAW,gBAAgB;IAC/B,+CAA+C;IAC/C,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;IAChC;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,YAAY,CA+BjE"}
@@ -1,4 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useChromeT } from "../../i18n/ui/useT.js";
2
3
  import { joinClassNames } from "../../shared/ui/joinClassNames.js";
3
4
  import { TOKEN } from "../../tokens/core/familyTokens.js";
4
5
  /**
@@ -13,7 +14,8 @@ import { TOKEN } from "../../tokens/core/familyTokens.js";
13
14
  */
14
15
  export function CreditsList(props) {
15
16
  const { entries, showLicense = true, className } = props;
16
- return (_jsx("ul", { className: joinClassNames('credits-list', className), style: LIST_STYLE, children: entries.map((entry) => (_jsxs("li", { style: ITEM_STYLE, children: [_jsx("a", { href: entry.href, target: "_blank", rel: "noopener noreferrer", style: NAME_STYLE, children: entry.name }), showLicense && entry.license !== undefined ? (_jsx("span", { style: LICENSE_STYLE, children: entry.license })) : (' '), _jsx("span", { children: entry.description })] }, entry.id))) }));
17
+ const t = useChromeT();
18
+ return (_jsx("ul", { className: joinClassNames('credits-list', className), style: LIST_STYLE, children: entries.map((entry) => (_jsxs("li", { style: ITEM_STYLE, children: [_jsx("a", { href: entry.href, target: "_blank", rel: "noopener noreferrer", style: NAME_STYLE, children: entry.name }), showLicense && entry.license !== undefined ? (_jsx("span", { style: LICENSE_STYLE, children: entry.license })) : (' '), _jsx("span", { children: t.or(`credits.${entry.id}.description`, entry.description) })] }, entry.id))) }));
17
19
  }
18
20
  const LIST_STYLE = {
19
21
  display: 'flex',
@@ -1 +1 @@
1
- {"version":3,"file":"CreditsList.js","sourceRoot":"","sources":["../../../src/credits/ui/CreditsList.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAC;AAmB1D;;;;;;;;;GASG;AACH,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAEzD,OAAO,CACL,aACE,SAAS,EAAE,cAAc,CAAC,cAAc,EAAE,SAAS,CAAC,EACpD,KAAK,EAAE,UAAU,YAEhB,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACtB,cAAmB,KAAK,EAAE,UAAU,aAClC,YACE,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,qBAAqB,EACzB,KAAK,EAAE,UAAU,YAEhB,KAAK,CAAC,IAAI,GACT,EACH,WAAW,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,CAC5C,eAAM,KAAK,EAAE,aAAa,YAAG,KAAK,CAAC,OAAO,GAAQ,CACnD,CAAC,CAAC,CAAC,CACF,GAAG,CACJ,EACD,yBAAO,KAAK,CAAC,WAAW,GAAQ,KAdzB,KAAK,CAAC,EAAE,CAeZ,CACN,CAAC,GACC,CACN,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,GAAG;IACjB,OAAO,EAAE,MAAM;IACf,aAAa,EAAE,QAAQ;IACvB,GAAG,EAAE,CAAC;IACN,MAAM,EAAE,CAAC;IACT,WAAW,EAAE,EAAE;CACiB,CAAC;AAEnC,MAAM,UAAU,GAAG;IACjB,QAAQ,EAAE,EAAE;IACZ,UAAU,EAAE,GAAG;CACiB,CAAC;AAEnC,MAAM,UAAU,GAAG,EAAE,UAAU,EAAE,GAAG,EAAmC,CAAC;AAExE,MAAM,aAAa,GAAG;IACpB,KAAK,EAAE,KAAK,CAAC,SAAS;IACtB,QAAQ,EAAE,EAAE;IACZ,MAAM,EAAE,OAAO;CACiB,CAAC"}
1
+ {"version":3,"file":"CreditsList.js","sourceRoot":"","sources":["../../../src/credits/ui/CreditsList.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAC;AAmB1D;;;;;;;;;GASG;AACH,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IACzD,MAAM,CAAC,GAAG,UAAU,EAAE,CAAC;IAEvB,OAAO,CACL,aACE,SAAS,EAAE,cAAc,CAAC,cAAc,EAAE,SAAS,CAAC,EACpD,KAAK,EAAE,UAAU,YAEhB,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACtB,cAAmB,KAAK,EAAE,UAAU,aAClC,YACE,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,qBAAqB,EACzB,KAAK,EAAE,UAAU,YAEhB,KAAK,CAAC,IAAI,GACT,EACH,WAAW,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,CAC5C,eAAM,KAAK,EAAE,aAAa,YAAG,KAAK,CAAC,OAAO,GAAQ,CACnD,CAAC,CAAC,CAAC,CACF,GAAG,CACJ,EACD,yBACG,CAAC,CAAC,EAAE,CAAC,WAAW,KAAK,CAAC,EAAE,cAAc,EAAE,KAAK,CAAC,WAAW,CAAC,GACtD,KAhBA,KAAK,CAAC,EAAE,CAiBZ,CACN,CAAC,GACC,CACN,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,GAAG;IACjB,OAAO,EAAE,MAAM;IACf,aAAa,EAAE,QAAQ;IACvB,GAAG,EAAE,CAAC;IACN,MAAM,EAAE,CAAC;IACT,WAAW,EAAE,EAAE;CACiB,CAAC;AAEnC,MAAM,UAAU,GAAG;IACjB,QAAQ,EAAE,EAAE;IACZ,UAAU,EAAE,GAAG;CACiB,CAAC;AAEnC,MAAM,UAAU,GAAG,EAAE,UAAU,EAAE,GAAG,EAAmC,CAAC;AAExE,MAAM,aAAa,GAAG;IACpB,KAAK,EAAE,KAAK,CAAC,SAAS;IACtB,QAAQ,EAAE,EAAE;IACZ,MAAM,EAAE,OAAO;CACiB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"DelimitedTextDialog.d.ts","sourceRoot":"","sources":["../../../src/delimited/ui/DelimitedTextDialog.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAiB,YAAY,EAAE,MAAM,OAAO,CAAC;AAEzD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAGxE,2CAA2C;AAC3C,MAAM,WAAW,wBAAyB,SAAQ,uBAAuB;IACvE,kCAAkC;IAClC,MAAM,EAAE,OAAO,CAAC;IAChB,2CAA2C;IAC3C,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,wBAAwB,GAC9B,YAAY,CAwBd"}
1
+ {"version":3,"file":"DelimitedTextDialog.d.ts","sourceRoot":"","sources":["../../../src/delimited/ui/DelimitedTextDialog.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAiB,YAAY,EAAE,MAAM,OAAO,CAAC;AAIzD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAGxE,2CAA2C;AAC3C,MAAM,WAAW,wBAAyB,SAAQ,uBAAuB;IACvE,kCAAkC;IAClC,MAAM,EAAE,OAAO,CAAC;IAChB,2CAA2C;IAC3C,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,wBAAwB,GAC9B,YAAY,CAsBd"}
@@ -1,5 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Button, Dialog, DialogBody, DialogFooter } from '@blueprintjs/core';
3
+ import { useChromeT } from "../../i18n/ui/useT.js";
3
4
  import { DelimitedTextPanel } from "./DelimitedTextPanel.js";
4
5
  /**
5
6
  * The dialog every site rebuilt to hand a table over: the text, a choice of
@@ -8,8 +9,10 @@ import { DelimitedTextPanel } from "./DelimitedTextPanel.js";
8
9
  * @returns The dialog.
9
10
  */
10
11
  export function DelimitedTextDialog(props) {
11
- const { isOpen, onClose, title = 'Copy the table', className, ...panel } = props;
12
- return (_jsxs(Dialog, { isOpen: isOpen, onClose: onClose, title: title, icon: "th", className: className, style: DIALOG_STYLE, children: [_jsx(DialogBody, { children: _jsx(DelimitedTextPanel, { ...panel, label: panel.label ?? title }) }), _jsx(DialogFooter, { actions: _jsx(Button, { text: "Close", onClick: onClose }) })] }));
12
+ const { isOpen, onClose, title, className, ...panel } = props;
13
+ const t = useChromeT();
14
+ const heading = title ?? t('delimited.copyTable');
15
+ return (_jsxs(Dialog, { isOpen: isOpen, onClose: onClose, title: heading, icon: "th", className: className, style: DIALOG_STYLE, children: [_jsx(DialogBody, { children: _jsx(DelimitedTextPanel, { ...panel, label: panel.label ?? heading }) }), _jsx(DialogFooter, { actions: _jsx(Button, { text: t('delimited.close'), onClick: onClose }) })] }));
13
16
  }
14
17
  const DIALOG_STYLE = {
15
18
  width: 'min(900px, 92vw)',
@@ -1 +1 @@
1
- {"version":3,"file":"DelimitedTextDialog.js","sourceRoot":"","sources":["../../../src/delimited/ui/DelimitedTextDialog.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAI7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAA0B,CAAC;AAe9D;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CACjC,KAA+B;IAE/B,MAAM,EACJ,MAAM,EACN,OAAO,EACP,KAAK,GAAG,gBAAgB,EACxB,SAAS,EACT,GAAG,KAAK,EACT,GAAG,KAAK,CAAC;IAEV,OAAO,CACL,MAAC,MAAM,IACL,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,IAAI,EAAC,IAAI,EACT,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,YAAY,aAEnB,KAAC,UAAU,cACT,KAAC,kBAAkB,OAAK,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,KAAK,GAAI,GACnD,EACb,KAAC,YAAY,IAAC,OAAO,EAAE,KAAC,MAAM,IAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAE,OAAO,GAAI,GAAI,IAC7D,CACV,CAAC;AACJ,CAAC;AAED,MAAM,YAAY,GAAG;IACnB,KAAK,EAAE,kBAAkB;CACO,CAAC"}
1
+ {"version":3,"file":"DelimitedTextDialog.js","sourceRoot":"","sources":["../../../src/delimited/ui/DelimitedTextDialog.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAG7E,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAA0B,CAAC;AAe9D;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CACjC,KAA+B;IAE/B,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC;IAC9D,MAAM,CAAC,GAAG,UAAU,EAAE,CAAC;IACvB,MAAM,OAAO,GAAG,KAAK,IAAI,CAAC,CAAC,qBAAqB,CAAC,CAAC;IAElD,OAAO,CACL,MAAC,MAAM,IACL,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,OAAO,EACd,IAAI,EAAC,IAAI,EACT,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,YAAY,aAEnB,KAAC,UAAU,cACT,KAAC,kBAAkB,OAAK,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,OAAO,GAAI,GACrD,EACb,KAAC,YAAY,IACX,OAAO,EAAE,KAAC,MAAM,IAAC,IAAI,EAAE,CAAC,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,OAAO,GAAI,GACjE,IACK,CACV,CAAC;AACJ,CAAC;AAED,MAAM,YAAY,GAAG;IACnB,KAAK,EAAE,kBAAkB;CACO,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"DelimitedTextPanel.d.ts","sourceRoot":"","sources":["../../../src/delimited/ui/DelimitedTextPanel.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAiB,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAUpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAIzD,8CAA8C;AAC9C,MAAM,WAAW,uBAAuB;IACtC,qCAAqC;IACrC,IAAI,EAAE,aAAa,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;IACvC;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B;;;;OAIG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,WAAW,CAAC;IAC/B;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,uBAAuB,GAC7B,YAAY,CAgEd"}
1
+ {"version":3,"file":"DelimitedTextPanel.d.ts","sourceRoot":"","sources":["../../../src/delimited/ui/DelimitedTextPanel.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAiB,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAUpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAIzD,8CAA8C;AAC9C,MAAM,WAAW,uBAAuB;IACtC,qCAAqC;IACrC,IAAI,EAAE,aAAa,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;IACvC;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B;;;;OAIG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,WAAW,CAAC;IAC/B;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,uBAAuB,GAC7B,YAAY,CA4Ed"}
@@ -5,7 +5,7 @@ import { CopyButton } from "../../clipboard/ui/CopyButton.js";
5
5
  import { downloadText } from "../../download/core/downloadText.js";
6
6
  import { sanitizeFileName } from "../../download/core/sanitizeFileName.js";
7
7
  import { formatInteger } from "../../format/core/numbers.js";
8
- import { pluralize } from "../../format/core/words.js";
8
+ import { useChromeT } from "../../i18n/ui/useT.js";
9
9
  import { joinClassNames } from "../../shared/ui/joinClassNames.js";
10
10
  import { TOKEN } from "../../tokens/core/familyTokens.js";
11
11
  import { DELIMITER_CHOICES, delimiterChoice } from "../core/delimiters.js";
@@ -21,18 +21,18 @@ import { toDelimited } from "../core/toDelimited.js";
21
21
  * @returns The panel.
22
22
  */
23
23
  export function DelimitedTextPanel(props) {
24
- const { className, rows, header, description, fileName = 'table', defaultDelimiter = 'tab', downloadable = true, label = 'The table, as text', height = 320, } = props;
24
+ const { className, rows, header, description, fileName = 'table', defaultDelimiter = 'tab', downloadable = true, label, height = 320, } = props;
25
+ const t = useChromeT();
25
26
  const [delimiterId, setDelimiterId] = useState(defaultDelimiter);
26
27
  const choice = delimiterChoice(delimiterId);
27
28
  const text = useMemo(() => toDelimited(rows, { delimiter: choice.delimiter, header }), [rows, header, choice.delimiter]);
28
- return (_jsxs("div", { className: joinClassNames('delimited-text', className), children: [_jsx(Callout, { intent: "primary", compact: true, icon: "info-sign", children: description ?? defaultDescription(rows.length) }), _jsxs("div", { style: CONTROLS_STYLE, children: [_jsx("span", { style: LABEL_STYLE, children: "Separator" }), _jsx(SegmentedControl, { size: "small", options: DELIMITER_CHOICES.map((option) => ({
29
+ return (_jsxs("div", { className: joinClassNames('delimited-text', className), children: [_jsx(Callout, { intent: "primary", compact: true, icon: "info-sign", children: description ??
30
+ t(rows.length === 1
31
+ ? 'delimited.descriptionOne'
32
+ : 'delimited.descriptionMany', { count: formatInteger(rows.length) }) }), _jsxs("div", { style: CONTROLS_STYLE, children: [_jsx("span", { style: LABEL_STYLE, children: t('delimited.separator') }), _jsx(SegmentedControl, { size: "small", options: DELIMITER_CHOICES.map((option) => ({
29
33
  label: option.label,
30
34
  value: option.id,
31
- })), value: choice.id, onValueChange: setDelimiterId }), _jsx("span", { style: SPACER_STYLE }), downloadable ? (_jsx(Button, { icon: "download", text: "Save", size: "small", onClick: () => downloadText(text, `${sanitizeFileName(fileName, 'table')}.${choice.extension}`, `${choice.mimeType};charset=utf-8`) })) : null, _jsx(CopyButton, { content: text, label: "Copy", icon: "clipboard", small: true })] }), _jsx("textarea", { readOnly: true, value: text, spellCheck: false, "aria-label": label, className: Classes.INPUT, style: { ...TEXT_STYLE, height }, onFocus: (event) => event.currentTarget.select() })] }));
32
- }
33
- function defaultDescription(rowCount) {
34
- const rows = `${formatInteger(rowCount)} ${pluralize(rowCount, 'row')}`;
35
- return `${rows}, one per line. Copy them, then paste into a spreadsheet.`;
35
+ })), value: choice.id, onValueChange: setDelimiterId }), _jsx("span", { style: SPACER_STYLE }), downloadable ? (_jsx(Button, { icon: "download", text: t('delimited.save'), size: "small", onClick: () => downloadText(text, `${sanitizeFileName(fileName, 'table')}.${choice.extension}`, `${choice.mimeType};charset=utf-8`) })) : null, _jsx(CopyButton, { content: text, label: t('delimited.copy'), icon: "clipboard", small: true })] }), _jsx("textarea", { readOnly: true, value: text, spellCheck: false, "aria-label": label ?? t('delimited.tableAsText'), className: Classes.INPUT, style: { ...TEXT_STYLE, height }, onFocus: (event) => event.currentTarget.select() })] }));
36
36
  }
37
37
  const CONTROLS_STYLE = {
38
38
  display: 'flex',
@@ -1 +1 @@
1
- {"version":3,"file":"DelimitedTextPanel.js","sourceRoot":"","sources":["../../../src/delimited/ui/DelimitedTextPanel.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DelimitedTextPanel.js","sourceRoot":"","sources":["../../../src/delimited/ui/DelimitedTextPanel.tsx"],"names":[],"mappings":"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"}
@@ -8,7 +8,9 @@ import type { CheckDeployOptions, DeployFile, DeployProblem } from './types.ts';
8
8
  * reports it healthy. So a repository has to hand it a selectable tag on every
9
9
  * image we build, an `IMAGE_NAME` that names the package our own workflow
10
10
  * publishes, a compose file that parses on a checkout with no `.env` yet, and a
11
- * health probe to read. Each of those is invisible until a deploy, which is the
11
+ * health probe to read. It also has to hand the browser a page the browser will
12
+ * not keep, or the next deploy leaves returning visitors on a blank one. Each
13
+ * of those is invisible until a deploy, which is the
12
14
  * worst moment to discover it — an `env_file` without `required: false` fails
13
15
  * before a container starts, and an `IMAGE_NAME` off by a suffix pulls a
14
16
  * package that was never published.
@@ -1 +1 @@
1
- {"version":3,"file":"checkDeploy.d.ts","sourceRoot":"","sources":["../../../src/deploy/core/checkDeploy.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGhF;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,SAAS,UAAU,EAAE,EAC5B,OAAO,GAAE,kBAAuB,GAC/B,aAAa,EAAE,CA0DjB"}
1
+ {"version":3,"file":"checkDeploy.d.ts","sourceRoot":"","sources":["../../../src/deploy/core/checkDeploy.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGhF;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,SAAS,UAAU,EAAE,EAC5B,OAAO,GAAE,kBAAuB,GAC/B,aAAa,EAAE,CA6DjB"}
@@ -1,5 +1,6 @@
1
1
  import { readComposeFile } from "./composeFile.js";
2
2
  import { readEnvExample } from "./envExample.js";
3
+ import { readPageCache } from "./pageCache.js";
3
4
  import { DEPLOY_COMPOSE_FILES } from "./types.js";
4
5
  /**
5
6
  * Every way a repository would break, or silently mis-deploy, under the
@@ -10,7 +11,9 @@ import { DEPLOY_COMPOSE_FILES } from "./types.js";
10
11
  * reports it healthy. So a repository has to hand it a selectable tag on every
11
12
  * image we build, an `IMAGE_NAME` that names the package our own workflow
12
13
  * publishes, a compose file that parses on a checkout with no `.env` yet, and a
13
- * health probe to read. Each of those is invisible until a deploy, which is the
14
+ * health probe to read. It also has to hand the browser a page the browser will
15
+ * not keep, or the next deploy leaves returning visitors on a blank one. Each
16
+ * of those is invisible until a deploy, which is the
14
17
  * worst moment to discover it — an `env_file` without `required: false` fails
15
18
  * before a container starts, and an `IMAGE_NAME` off by a suffix pulls a
16
19
  * package that was never published.
@@ -59,6 +62,9 @@ export function findDeployProblems(files, options = {}) {
59
62
  else {
60
63
  readEnvExample(envExample, expected, problems);
61
64
  }
65
+ const dockerfile = byPath.get('Dockerfile');
66
+ if (dockerfile !== undefined)
67
+ readPageCache(dockerfile, byPath, problems);
62
68
  const gitignore = byPath.get('.gitignore');
63
69
  if (gitignore === undefined || !/^\s*\/?\.deploy\/?\s*$/m.test(gitignore)) {
64
70
  problems.push({
@@ -1 +1 @@
1
- {"version":3,"file":"checkDeploy.js","sourceRoot":"","sources":["../../../src/deploy/core/checkDeploy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAA4B,EAC5B,UAA8B,EAAE;IAEhC,MAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,IAAI,oBAAoB,CAAC;IAC9D,MAAM,KAAK,GAAG;QACZ,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,EAAE;QAC1C,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,IAAI,IAAI;QACtD,iBAAiB,EAAE,CACjB,OAAO,CAAC,iBAAiB,IAAI,gBAAgB,CAC9C,CAAC,WAAW,EAAE;QACf,SAAS,EAAE,CAAC,OAAO,CAAC,SAAS,IAAI,QAAQ,CAAC,CAAC,WAAW,EAAE;KACzD,CAAC;IAEF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,MAAM,IAAI,IAAI,KAAK;QAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAE3D,MAAM,QAAQ,GAAoB,EAAE,CAAC;IAErC,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,IAAI;gBACV,IAAI,EAAE,CAAC;gBACP,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE,8CAA8C;gBACvD,IAAI,EAAE,UAAU,IAAI,yBAAyB;aAC9C,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC9C,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,CAAC;YACP,IAAI,EAAE,qBAAqB;YAC3B,OAAO,EAAE,8CAA8C;YACvD,IAAI,EAAE,kFAAkF;SACzF,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,cAAc,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC3C,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1E,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,CAAC;YACP,IAAI,EAAE,uBAAuB;YAC7B,OAAO,EACL,8EAA8E;YAChF,IAAI,EAAE,kCAAkC;SACzC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"checkDeploy.js","sourceRoot":"","sources":["../../../src/deploy/core/checkDeploy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAA4B,EAC5B,UAA8B,EAAE;IAEhC,MAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,IAAI,oBAAoB,CAAC;IAC9D,MAAM,KAAK,GAAG;QACZ,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,EAAE;QAC1C,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,IAAI,IAAI;QACtD,iBAAiB,EAAE,CACjB,OAAO,CAAC,iBAAiB,IAAI,gBAAgB,CAC9C,CAAC,WAAW,EAAE;QACf,SAAS,EAAE,CAAC,OAAO,CAAC,SAAS,IAAI,QAAQ,CAAC,CAAC,WAAW,EAAE;KACzD,CAAC;IAEF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,MAAM,IAAI,IAAI,KAAK;QAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAE3D,MAAM,QAAQ,GAAoB,EAAE,CAAC;IAErC,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,IAAI;gBACV,IAAI,EAAE,CAAC;gBACP,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE,8CAA8C;gBACvD,IAAI,EAAE,UAAU,IAAI,yBAAyB;aAC9C,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC9C,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,CAAC;YACP,IAAI,EAAE,qBAAqB;YAC3B,OAAO,EAAE,8CAA8C;YACvD,IAAI,EAAE,kFAAkF;SACzF,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,cAAc,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC5C,IAAI,UAAU,KAAK,SAAS;QAAE,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAE1E,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC3C,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1E,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,CAAC;YACP,IAAI,EAAE,uBAAuB;YAC7B,OAAO,EACL,8EAA8E;YAChF,IAAI,EAAE,kCAAkC;SACzC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export { findDeployProblems } from './checkDeploy.ts';
2
2
  export type { CheckDeployOptions, DeployFile, DeployProblem, DeployProblemKind, } from './types.ts';
3
+ export { NGINX_CONFIG, PAGE_CACHE_CONFIG } from './pageCache.ts';
3
4
  export { DEPLOY_COMPOSE_FILES } from './types.ts';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/deploy/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,YAAY,EACV,kBAAkB,EAClB,UAAU,EACV,aAAa,EACb,iBAAiB,GAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/deploy/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,YAAY,EACV,kBAAkB,EAClB,UAAU,EACV,aAAa,EACb,iBAAiB,GAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC"}
@@ -1,3 +1,4 @@
1
1
  export { findDeployProblems } from "./checkDeploy.js";
2
+ export { NGINX_CONFIG, PAGE_CACHE_CONFIG } from "./pageCache.js";
2
3
  export { DEPLOY_COMPOSE_FILES } from "./types.js";
3
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/deploy/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAOtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/deploy/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAOtD,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,24 @@
1
+ import type { DeployProblem } from './types.ts';
2
+ /** The page cache policy of a static-web-server site, at the repository root. */
3
+ export declare const PAGE_CACHE_CONFIG = "sws.toml";
4
+ /** The nginx configuration of a site served by nginx. */
5
+ export declare const NGINX_CONFIG = "nginx.conf";
6
+ /**
7
+ * Report a server that lets a browser keep the page itself.
8
+ *
9
+ * A page names the hashed bundles of the build that wrote it, so a browser
10
+ * still holding a copy from an earlier deploy asks the new image for files it
11
+ * does not have; the request falls through to the page, the browser refuses to
12
+ * run HTML as a module, and the site comes up blank until the copy expires.
13
+ * Nothing on the server can see it and no test can either, because a test
14
+ * always loads a page and its bundles from the same build. So it is read off
15
+ * the server's configuration instead: static-web-server hands pages out with
16
+ * `max-age=86400` of its own, and nginx says nothing and lets the browser
17
+ * guess, so both have to be told. The bundles, named by their content, are the
18
+ * one thing worth keeping.
19
+ * @param dockerfile - The Dockerfile, which says what serves the build.
20
+ * @param byPath - Every file that was read, by repository path.
21
+ * @param problems - Where each problem found is appended.
22
+ */
23
+ export declare function readPageCache(dockerfile: string, byPath: ReadonlyMap<string, string>, problems: DeployProblem[]): void;
24
+ //# sourceMappingURL=pageCache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pageCache.d.ts","sourceRoot":"","sources":["../../../src/deploy/core/pageCache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,iFAAiF;AACjF,eAAO,MAAM,iBAAiB,aAAa,CAAC;AAE5C,yDAAyD;AACzD,eAAO,MAAM,YAAY,eAAe,CAAC;AAKzC;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,aAAa,CAC3B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EACnC,QAAQ,EAAE,aAAa,EAAE,GACxB,IAAI,CAMN"}
@@ -0,0 +1,91 @@
1
+ /** The page cache policy of a static-web-server site, at the repository root. */
2
+ export const PAGE_CACHE_CONFIG = 'sws.toml';
3
+ /** The nginx configuration of a site served by nginx. */
4
+ export const NGINX_CONFIG = 'nginx.conf';
5
+ const NO_CACHE = /cache-control[\s:=]+["']?[^"'\n]*(?:no-cache|no-store|max-age=0)/i;
6
+ /**
7
+ * Report a server that lets a browser keep the page itself.
8
+ *
9
+ * A page names the hashed bundles of the build that wrote it, so a browser
10
+ * still holding a copy from an earlier deploy asks the new image for files it
11
+ * does not have; the request falls through to the page, the browser refuses to
12
+ * run HTML as a module, and the site comes up blank until the copy expires.
13
+ * Nothing on the server can see it and no test can either, because a test
14
+ * always loads a page and its bundles from the same build. So it is read off
15
+ * the server's configuration instead: static-web-server hands pages out with
16
+ * `max-age=86400` of its own, and nginx says nothing and lets the browser
17
+ * guess, so both have to be told. The bundles, named by their content, are the
18
+ * one thing worth keeping.
19
+ * @param dockerfile - The Dockerfile, which says what serves the build.
20
+ * @param byPath - Every file that was read, by repository path.
21
+ * @param problems - Where each problem found is appended.
22
+ */
23
+ export function readPageCache(dockerfile, byPath, problems) {
24
+ if (dockerfile.includes('static-web-server')) {
25
+ readStaticWebServer(dockerfile, byPath, problems);
26
+ }
27
+ else if (/^FROM\s+\S*nginx/im.test(dockerfile)) {
28
+ readNginx(byPath, problems);
29
+ }
30
+ }
31
+ function readStaticWebServer(dockerfile, byPath, problems) {
32
+ const named = /^\s*ENV\s+SERVER_CONFIG_FILE=(?<path>\S+)/m.exec(dockerfile);
33
+ const destination = named?.groups?.path;
34
+ if (destination === undefined) {
35
+ problems.push({
36
+ file: 'Dockerfile',
37
+ line: lineOf(dockerfile, /static-web-server/),
38
+ kind: 'cacheable-page',
39
+ message: 'static-web-server keeps every page in the browser for a day, so each deploy blanks the site for anyone who came by before it',
40
+ hint: `COPY ${PAGE_CACHE_CONFIG} /etc/sws.toml and set SERVER_CONFIG_FILE to it`,
41
+ });
42
+ return;
43
+ }
44
+ const copied = new RegExp(String.raw `^\s*COPY\s+(?:--\S+\s+)*${escapeRegExp(PAGE_CACHE_CONFIG)}\s+${escapeRegExp(destination)}\s*$`, 'm');
45
+ if (!copied.test(dockerfile)) {
46
+ problems.push({
47
+ file: 'Dockerfile',
48
+ line: lineOf(dockerfile, /^\s*ENV\s+SERVER_CONFIG_FILE=/m),
49
+ kind: 'cacheable-page',
50
+ message: `SERVER_CONFIG_FILE names ${destination}, which nothing puts there`,
51
+ hint: `COPY ${PAGE_CACHE_CONFIG} ${destination}`,
52
+ });
53
+ return;
54
+ }
55
+ readNoCacheRule(PAGE_CACHE_CONFIG, byPath, problems);
56
+ }
57
+ function readNginx(byPath, problems) {
58
+ readNoCacheRule(NGINX_CONFIG, byPath, problems);
59
+ }
60
+ function readNoCacheRule(path, byPath, problems) {
61
+ const text = byPath.get(path);
62
+ if (text === undefined) {
63
+ problems.push({
64
+ file: path,
65
+ line: 0,
66
+ kind: 'cacheable-page',
67
+ message: 'the server has no page cache policy to read',
68
+ hint: `commit ${path} at the repository root, telling the browser to check the page on every visit`,
69
+ });
70
+ return;
71
+ }
72
+ if (!NO_CACHE.test(text)) {
73
+ problems.push({
74
+ file: path,
75
+ line: 0,
76
+ kind: 'cacheable-page',
77
+ message: 'no rule stops a browser from keeping the page between deploys',
78
+ hint: 'give the page Cache-Control: no-cache, and keep the long life for the hashed bundles alone',
79
+ });
80
+ }
81
+ }
82
+ function lineOf(text, pattern) {
83
+ const match = pattern.exec(text);
84
+ if (match === null)
85
+ return 0;
86
+ return text.slice(0, match.index).split('\n').length;
87
+ }
88
+ function escapeRegExp(value) {
89
+ return value.replaceAll(/[$()*+.?[\\\]^{|}]/g, String.raw `\$&`);
90
+ }
91
+ //# sourceMappingURL=pageCache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pageCache.js","sourceRoot":"","sources":["../../../src/deploy/core/pageCache.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /** What a repository got wrong against the deployment contract. */
2
- export type DeployProblemKind = 'missing-compose' | 'invalid-compose' | 'unpinned-image' | 'missing-build' | 'wrong-image-name' | 'required-env-file' | 'floating-sidecar' | 'missing-healthcheck' | 'missing-env-example' | 'missing-deploy-ignore';
2
+ export type DeployProblemKind = 'missing-compose' | 'invalid-compose' | 'unpinned-image' | 'missing-build' | 'wrong-image-name' | 'required-env-file' | 'floating-sidecar' | 'missing-healthcheck' | 'missing-env-example' | 'missing-deploy-ignore' | 'cacheable-page';
3
3
  /** One way a repository would fail, or silently mis-deploy, on the server. */
4
4
  export interface DeployProblem {
5
5
  /** The file it was found in, named as the caller named it. */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/deploy/core/types.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,MAAM,MAAM,iBAAiB,GACzB,iBAAiB,GACjB,iBAAiB,GACjB,gBAAgB,GAChB,eAAe,GACf,kBAAkB,GAClB,mBAAmB,GACnB,kBAAkB,GAClB,qBAAqB,GACrB,qBAAqB,GACrB,uBAAuB,CAAC;AAE5B,8EAA8E;AAC9E,MAAM,WAAW,aAAa;IAC5B,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,6EAA6E;IAC7E,IAAI,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,IAAI,EAAE,iBAAiB,CAAC;IACxB,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;CACd;AAED,sEAAsE;AACtE,MAAM,WAAW,UAAU;IACzB,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,4CAA4C;AAC5C,MAAM,WAAW,kBAAkB;IACjC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC;;;;OAIG;IACH,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,SAAS,MAAM,EAIjD,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/deploy/core/types.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,MAAM,MAAM,iBAAiB,GACzB,iBAAiB,GACjB,iBAAiB,GACjB,gBAAgB,GAChB,eAAe,GACf,kBAAkB,GAClB,mBAAmB,GACnB,kBAAkB,GAClB,qBAAqB,GACrB,qBAAqB,GACrB,uBAAuB,GACvB,gBAAgB,CAAC;AAErB,8EAA8E;AAC9E,MAAM,WAAW,aAAa;IAC5B,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,6EAA6E;IAC7E,IAAI,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,IAAI,EAAE,iBAAiB,CAAC;IACxB,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;CACd;AAED,sEAAsE;AACtE,MAAM,WAAW,UAAU;IACzB,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,4CAA4C;AAC5C,MAAM,WAAW,kBAAkB;IACjC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC;;;;OAIG;IACH,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,SAAS,MAAM,EAIjD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/deploy/core/types.ts"],"names":[],"mappings":"AA8EA;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAsB;IACrD,cAAc;IACd,sBAAsB;IACtB,0BAA0B;CAC3B,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/deploy/core/types.ts"],"names":[],"mappings":"AA+EA;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAsB;IACrD,cAAc;IACd,sBAAsB;IACtB,0BAA0B;CAC3B,CAAC"}
@@ -39,12 +39,12 @@ export interface FigureDownloadProps {
39
39
  background?: string;
40
40
  /**
41
41
  * What the glyph is called, for the pointer and for a screen reader.
42
- * @default 'Save this figure'
42
+ * @default the chrome's own line, in the language of the page
43
43
  */
44
44
  label?: string;
45
45
  /**
46
46
  * What the panel behind it is called.
47
- * @default 'Save figure'
47
+ * @default the chrome's own line, in the language of the page
48
48
  */
49
49
  title?: string;
50
50
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"FigureDownload.d.ts","sourceRoot":"","sources":["../../../src/download/ui/FigureDownload.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAI1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAQ9D,yCAAyC;AACzC,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,aAAa,CAAC,EAAE,YAAY,CAAC;IAC7B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,YAAY,CAkEvE"}
1
+ {"version":3,"file":"FigureDownload.d.ts","sourceRoot":"","sources":["../../../src/download/ui/FigureDownload.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAK1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAQ9D,yCAAyC;AACzC,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,aAAa,CAAC,EAAE,YAAY,CAAC;IAC7B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,YAAY,CAmEvE"}
@@ -1,6 +1,7 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { PopoverNext } from '@blueprintjs/core';
3
3
  import { useState } from 'react';
4
+ import { useChromeT } from "../../i18n/ui/useT.js";
4
5
  import { OverlayIconButton } from "../../overlay/ui/OverlayIconButton.js";
5
6
  import { downloadFigure } from "../core/downloadFigure.js";
6
7
  import { DEFAULT_FIGURE_SCALE, FIGURE_SCALES } from "../core/figureScale.js";
@@ -28,8 +29,9 @@ import { FigureDownloadPanel } from "./FigureDownloadPanel.js";
28
29
  export function FigureDownload(props) {
29
30
  const { targetId, fileName, background, scales = FIGURE_SCALES } = props;
30
31
  const { defaultFormat = 'png', defaultScale = DEFAULT_FIGURE_SCALE } = props;
31
- const { label = 'Save this figure', title = 'Save figure' } = props;
32
+ const { label, title } = props;
32
33
  const { icon = 'download', testId } = props;
34
+ const t = useChromeT();
33
35
  const [open, setOpen] = useState(false);
34
36
  const [format, setFormat] = useState(defaultFormat);
35
37
  const [scale, setScale] = useState(defaultScale);
@@ -60,6 +62,6 @@ export function FigureDownload(props) {
60
62
  setSaving(false);
61
63
  }
62
64
  }
63
- return (_jsx(PopoverNext, { isOpen: open, placement: "bottom-end", onInteraction: interact, content: _jsx(FigureDownloadPanel, { title: title, format: format, scale: scale, scales: scales, size: size, failure: failure, saving: saving, onFormatChange: setFormat, onScaleChange: setScale, onSave: () => void save() }), children: _jsx(OverlayIconButton, { icon: icon, label: label, value: format.toUpperCase(), active: open, testId: testId, opensMenu: true }) }));
65
+ return (_jsx(PopoverNext, { isOpen: open, placement: "bottom-end", onInteraction: interact, content: _jsx(FigureDownloadPanel, { title: title ?? t('download.saveFigure'), format: format, scale: scale, scales: scales, size: size, failure: failure, saving: saving, onFormatChange: setFormat, onScaleChange: setScale, onSave: () => void save() }), children: _jsx(OverlayIconButton, { icon: icon, label: label ?? t('download.saveThisFigure'), value: format.toUpperCase(), active: open, testId: testId, opensMenu: true }) }));
64
66
  }
65
67
  //# sourceMappingURL=FigureDownload.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FigureDownload.js","sourceRoot":"","sources":["../../../src/download/ui/FigureDownload.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FigureDownload.js","sourceRoot":"","sources":["../../../src/download/ui/FigureDownload.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"FigureDownloadPanel.d.ts","sourceRoot":"","sources":["../../../src/download/ui/FigureDownloadPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAO1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAQ3D,sDAAsD;AACtD,MAAM,WAAW,wBAAwB;IACvC,gCAAgC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,MAAM,EAAE,YAAY,CAAC;IACrB,6DAA6D;IAC7D,KAAK,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,wEAAwE;IACxE,IAAI,EAAE,YAAY,GAAG,IAAI,CAAC;IAC1B,mEAAmE;IACnE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,iDAAiD;IACjD,MAAM,EAAE,OAAO,CAAC;IAChB,gDAAgD;IAChD,cAAc,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;IAC/C,4CAA4C;IAC5C,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,mCAAmC;IACnC,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,wBAAwB,GAC9B,YAAY,CAqCd"}
1
+ {"version":3,"file":"FigureDownloadPanel.d.ts","sourceRoot":"","sources":["../../../src/download/ui/FigureDownloadPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAS1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAQ3D,sDAAsD;AACtD,MAAM,WAAW,wBAAwB;IACvC,gCAAgC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,MAAM,EAAE,YAAY,CAAC;IACrB,6DAA6D;IAC7D,KAAK,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,wEAAwE;IACxE,IAAI,EAAE,YAAY,GAAG,IAAI,CAAC;IAC1B,mEAAmE;IACnE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,iDAAiD;IACjD,MAAM,EAAE,OAAO,CAAC;IAChB,gDAAgD;IAChD,cAAc,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;IAC/C,4CAA4C;IAC5C,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,mCAAmC;IACnC,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,wBAAwB,GAC9B,YAAY,CAgDd"}
@@ -1,4 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useChromeT } from "../../i18n/ui/useT.js";
2
3
  import { OverlayAction } from "../../overlay/ui/OverlayAction.js";
3
4
  import { OverlayPanel } from "../../overlay/ui/OverlayPanel.js";
4
5
  import { OverlaySegmented } from "../../overlay/ui/OverlaySegmented.js";
@@ -23,26 +24,25 @@ import { figurePixels, figureScaleFits, figureScaleLabel, formatFigurePixels, }
23
24
  export function FigureDownloadPanel(props) {
24
25
  const { title, format, scale, scales, size, failure, saving } = props;
25
26
  const { onFormatChange, onScaleChange, onSave, rasterSvg = false } = props;
27
+ const t = useChromeT();
26
28
  const vector = format === 'svg' && !rasterSvg;
27
- return (_jsxs(OverlayPanel, { title: title, hint: hintOf(format, size, scale, failure, rasterSvg), actions: _jsx(OverlayAction, { text: "Save", icon: "download", intent: "primary", disabled: saving || size === null, onClick: onSave }), children: [_jsx(OverlaySegmented, { label: "Format", help: FORMAT_HELP, value: format, options: FORMAT_CHOICES, onChange: onFormatChange }), _jsx(OverlaySegmented, { label: "Resolution", help: RESOLUTION_HELP, value: String(scale), options: scaleChoices(scales, size), disabled: vector, onChange: (picked) => onScaleChange(Number(picked)) })] }));
29
+ return (_jsxs(OverlayPanel, { title: title, hint: hintOf(format, size, scale, failure, rasterSvg, t), actions: _jsx(OverlayAction, { text: t('download.save'), icon: "download", intent: "primary", disabled: saving || size === null, onClick: onSave }), children: [_jsx(OverlaySegmented, { label: t('download.format'), help: {
30
+ title: t('download.format'),
31
+ body: t('download.formatHelp'),
32
+ }, value: format, options: FORMAT_CHOICES, onChange: onFormatChange }), _jsx(OverlaySegmented, { label: t('download.resolution'), help: {
33
+ title: t('download.resolution'),
34
+ body: t('download.resolutionHelp'),
35
+ example: {
36
+ code: '2×',
37
+ note: t('download.resolutionExample'),
38
+ },
39
+ }, value: String(scale), options: scaleChoices(scales, size), disabled: vector, onChange: (picked) => onScaleChange(Number(picked)) })] }));
28
40
  }
29
41
  /** The two files a figure can leave the page as. */
30
42
  const FORMAT_CHOICES = [
31
43
  { value: 'png', label: 'PNG' },
32
44
  { value: 'svg', label: 'SVG' },
33
45
  ];
34
- const FORMAT_HELP = {
35
- title: 'Format',
36
- body: 'A PNG is a picture of the figure, which is what a slide, a chat window or an issue accepts. An SVG is the figure itself: every line stays sharp however far it is enlarged, and it can still be edited afterwards.',
37
- };
38
- const RESOLUTION_HELP = {
39
- title: 'Resolution',
40
- body: 'How many pixels are painted for each pixel of the figure on screen. Two is right for a slide, three or four for print. An SVG carries no resolution of its own, so it is saved sharp at every size.',
41
- example: {
42
- code: '2×',
43
- note: 'A figure 640 pixels wide on screen is saved 1280 pixels wide.',
44
- },
45
- };
46
46
  /**
47
47
  * The multiples offered, each saying what it would actually produce.
48
48
  *
@@ -72,19 +72,25 @@ function scaleChoices(scales, size) {
72
72
  * @param scale - The multiple it is painted at.
73
73
  * @param failure - What went wrong last time, if anything.
74
74
  * @param rasterSvg - Whether the SVG embeds a rendered picture.
75
+ * @param t - The chrome's formatter, so the sentence is in the language of
76
+ * the page.
75
77
  * @returns The sentence.
76
78
  */
77
- function hintOf(format, size, scale, failure, rasterSvg) {
79
+ function hintOf(format, size, scale, failure, rasterSvg, t) {
78
80
  if (failure !== null)
79
81
  return failure;
80
82
  if (size === null)
81
- return 'There is no figure on the page to save yet.';
83
+ return t('download.noFigure');
82
84
  if (format === 'svg' && rasterSvg) {
83
- return `An SVG holding a picture of ${formatFigurePixels(figurePixels(size, scale))}: a 3D scene has no vector form.`;
85
+ return t('download.hintRasterSvg', {
86
+ pixels: formatFigurePixels(figurePixels(size, scale)),
87
+ });
84
88
  }
85
89
  if (format === 'svg') {
86
- return `An SVG stays sharp at any size, so the resolution does not apply. Drawn ${formatFigurePixels(size)}.`;
90
+ return t('download.hintSvg', { pixels: formatFigurePixels(size) });
87
91
  }
88
- return `Saved ${formatFigurePixels(figurePixels(size, scale))}.`;
92
+ return t('download.hintPng', {
93
+ pixels: formatFigurePixels(figurePixels(size, scale)),
94
+ });
89
95
  }
90
96
  //# sourceMappingURL=FigureDownloadPanel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FigureDownloadPanel.js","sourceRoot":"","sources":["../../../src/download/ui/FigureDownloadPanel.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FigureDownloadPanel.js","sourceRoot":"","sources":["../../../src/download/ui/FigureDownloadPanel.tsx"],"names":[],"mappings":"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"}
@@ -11,7 +11,7 @@ export interface EcosystemButtonProps extends HeaderButtonProps {
11
11
  /**
12
12
  * Text of the button. In a compact bar it is not written, but it stays what
13
13
  * the pointer and a screen reader are told.
14
- * @default 'Tools'
14
+ * @default the chrome's own word for it, in the language of the page
15
15
  */
16
16
  label?: string;
17
17
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"EcosystemButton.d.ts","sourceRoot":"","sources":["../../../src/ecosystem/ui/EcosystemButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAGxE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAI/C,8CAA8C;AAC9C,MAAM,WAAW,oBAAqB,SAAQ,iBAAiB;IAC7D;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,YAAY,CAYzE"}
1
+ {"version":3,"file":"EcosystemButton.d.ts","sourceRoot":"","sources":["../../../src/ecosystem/ui/EcosystemButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAG1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAGxE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAI/C,8CAA8C;AAC9C,MAAM,WAAW,oBAAqB,SAAQ,iBAAiB;IAC7D;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,YAAY,CAazE"}