react-cheminfo 0.64.1 → 0.65.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 (604) hide show
  1. package/README.md +282 -0
  2. package/lib/card/core/cardAddress.d.ts +70 -0
  3. package/lib/card/core/cardAddress.d.ts.map +1 -0
  4. package/lib/card/core/cardAddress.js +59 -0
  5. package/lib/card/core/cardAddress.js.map +1 -0
  6. package/lib/card/core/cardPageUrl.d.ts +49 -0
  7. package/lib/card/core/cardPageUrl.d.ts.map +1 -0
  8. package/lib/card/core/cardPageUrl.js +59 -0
  9. package/lib/card/core/cardPageUrl.js.map +1 -0
  10. package/lib/card/core/index.d.ts +7 -0
  11. package/lib/card/core/index.d.ts.map +1 -0
  12. package/lib/card/core/index.js +4 -0
  13. package/lib/card/core/index.js.map +1 -0
  14. package/lib/card/core/panelRoom.d.ts +40 -0
  15. package/lib/card/core/panelRoom.d.ts.map +1 -0
  16. package/lib/card/core/panelRoom.js +40 -0
  17. package/lib/card/core/panelRoom.js.map +1 -0
  18. package/lib/card/ui/CardDetailsButton.d.ts +38 -0
  19. package/lib/card/ui/CardDetailsButton.d.ts.map +1 -0
  20. package/lib/card/ui/CardDetailsButton.js +50 -0
  21. package/lib/card/ui/CardDetailsButton.js.map +1 -0
  22. package/lib/card/ui/CardFigure.d.ts +51 -0
  23. package/lib/card/ui/CardFigure.d.ts.map +1 -0
  24. package/lib/card/ui/CardFigure.js +27 -0
  25. package/lib/card/ui/CardFigure.js.map +1 -0
  26. package/lib/card/ui/CardFrame.d.ts +30 -0
  27. package/lib/card/ui/CardFrame.d.ts.map +1 -0
  28. package/lib/card/ui/CardFrame.js +20 -0
  29. package/lib/card/ui/CardFrame.js.map +1 -0
  30. package/lib/card/ui/CopyTableButton.d.ts +37 -0
  31. package/lib/card/ui/CopyTableButton.d.ts.map +1 -0
  32. package/lib/card/ui/CopyTableButton.js +19 -0
  33. package/lib/card/ui/CopyTableButton.js.map +1 -0
  34. package/lib/card/ui/cardTooltip.d.ts +14 -0
  35. package/lib/card/ui/cardTooltip.d.ts.map +1 -0
  36. package/lib/card/ui/cardTooltip.js +15 -0
  37. package/lib/card/ui/cardTooltip.js.map +1 -0
  38. package/lib/card/ui/embed.d.ts +15 -0
  39. package/lib/card/ui/embed.d.ts.map +1 -0
  40. package/lib/card/ui/embed.js +24 -0
  41. package/lib/card/ui/embed.js.map +1 -0
  42. package/lib/card/ui/fitCardToFrame.d.ts +31 -0
  43. package/lib/card/ui/fitCardToFrame.d.ts.map +1 -0
  44. package/lib/card/ui/fitCardToFrame.js +66 -0
  45. package/lib/card/ui/fitCardToFrame.js.map +1 -0
  46. package/lib/card/ui/holdRoomForPanels.d.ts +16 -0
  47. package/lib/card/ui/holdRoomForPanels.d.ts.map +1 -0
  48. package/lib/card/ui/holdRoomForPanels.js +76 -0
  49. package/lib/card/ui/holdRoomForPanels.js.map +1 -0
  50. package/lib/card/ui/index.d.ts +11 -0
  51. package/lib/card/ui/index.d.ts.map +1 -0
  52. package/lib/card/ui/index.js +7 -0
  53. package/lib/card/ui/index.js.map +1 -0
  54. package/lib/card/ui/openPanels.d.ts +25 -0
  55. package/lib/card/ui/openPanels.d.ts.map +1 -0
  56. package/lib/card/ui/openPanels.js +85 -0
  57. package/lib/card/ui/openPanels.js.map +1 -0
  58. package/lib/card.d.ts +13 -0
  59. package/lib/card.d.ts.map +1 -0
  60. package/lib/card.js +13 -0
  61. package/lib/card.js.map +1 -0
  62. package/lib/conformers.d.ts +1 -0
  63. package/lib/conformers.d.ts.map +1 -1
  64. package/lib/conformers.js +1 -0
  65. package/lib/conformers.js.map +1 -1
  66. package/lib/core.d.ts +4 -0
  67. package/lib/core.d.ts.map +1 -1
  68. package/lib/core.js +5 -0
  69. package/lib/core.js.map +1 -1
  70. package/lib/fetch/core/apiError.d.ts +56 -0
  71. package/lib/fetch/core/apiError.d.ts.map +1 -0
  72. package/lib/fetch/core/apiError.js +43 -0
  73. package/lib/fetch/core/apiError.js.map +1 -0
  74. package/lib/fetch/core/fetchJson.d.ts +47 -0
  75. package/lib/fetch/core/fetchJson.d.ts.map +1 -0
  76. package/lib/fetch/core/fetchJson.js +109 -0
  77. package/lib/fetch/core/fetchJson.js.map +1 -0
  78. package/lib/fetch/core/index.d.ts +5 -0
  79. package/lib/fetch/core/index.d.ts.map +1 -0
  80. package/lib/fetch/core/index.js +3 -0
  81. package/lib/fetch/core/index.js.map +1 -0
  82. package/lib/formula/core/formulaText.d.ts +46 -0
  83. package/lib/formula/core/formulaText.d.ts.map +1 -0
  84. package/lib/formula/core/formulaText.js +74 -0
  85. package/lib/formula/core/formulaText.js.map +1 -0
  86. package/lib/formula/core/index.d.ts +6 -0
  87. package/lib/formula/core/index.d.ts.map +1 -0
  88. package/lib/formula/core/index.js +4 -0
  89. package/lib/formula/core/index.js.map +1 -0
  90. package/lib/formula/core/normalizeFormula.d.ts +22 -0
  91. package/lib/formula/core/normalizeFormula.d.ts.map +1 -0
  92. package/lib/formula/core/normalizeFormula.js +46 -0
  93. package/lib/formula/core/normalizeFormula.js.map +1 -0
  94. package/lib/formula/core/readFormula.d.ts +73 -0
  95. package/lib/formula/core/readFormula.d.ts.map +1 -0
  96. package/lib/formula/core/readFormula.js +132 -0
  97. package/lib/formula/core/readFormula.js.map +1 -0
  98. package/lib/formula/ui/CopyableFormula.d.ts +31 -0
  99. package/lib/formula/ui/CopyableFormula.d.ts.map +1 -0
  100. package/lib/formula/ui/CopyableFormula.js +19 -0
  101. package/lib/formula/ui/CopyableFormula.js.map +1 -0
  102. package/lib/formula/ui/FormulaInput.d.ts +29 -0
  103. package/lib/formula/ui/FormulaInput.d.ts.map +1 -0
  104. package/lib/formula/ui/FormulaInput.js +16 -0
  105. package/lib/formula/ui/FormulaInput.js.map +1 -0
  106. package/lib/formula/ui/QuestionFormula.d.ts +14 -0
  107. package/lib/formula/ui/QuestionFormula.d.ts.map +1 -0
  108. package/lib/formula/ui/QuestionFormula.js +13 -0
  109. package/lib/formula/ui/QuestionFormula.js.map +1 -0
  110. package/lib/formula/ui/index.d.ts +7 -0
  111. package/lib/formula/ui/index.d.ts.map +1 -0
  112. package/lib/formula/ui/index.js +4 -0
  113. package/lib/formula/ui/index.js.map +1 -0
  114. package/lib/formula.d.ts +11 -0
  115. package/lib/formula.d.ts.map +1 -0
  116. package/lib/formula.js +11 -0
  117. package/lib/formula.js.map +1 -0
  118. package/lib/hooks/ui/index.d.ts +1 -0
  119. package/lib/hooks/ui/index.d.ts.map +1 -1
  120. package/lib/hooks/ui/index.js.map +1 -1
  121. package/lib/hooks/ui/keyTargets.d.ts +4 -2
  122. package/lib/hooks/ui/keyTargets.d.ts.map +1 -1
  123. package/lib/hooks/ui/keyTargets.js +5 -3
  124. package/lib/hooks/ui/keyTargets.js.map +1 -1
  125. package/lib/hooks/ui/useAsync.d.ts +20 -5
  126. package/lib/hooks/ui/useAsync.d.ts.map +1 -1
  127. package/lib/hooks/ui/useAsync.js +29 -14
  128. package/lib/hooks/ui/useAsync.js.map +1 -1
  129. package/lib/i18n/core/chromeCatalog.d.ts +1 -1
  130. package/lib/i18n/core/chromeCatalog.d.ts.map +1 -1
  131. package/lib/locales/de.json +37 -0
  132. package/lib/locales/en.json +37 -0
  133. package/lib/locales/es.json +37 -0
  134. package/lib/locales/fr.json +37 -0
  135. package/lib/locales/it.json +37 -0
  136. package/lib/moleculesClient/core/index.d.ts +5 -0
  137. package/lib/moleculesClient/core/index.d.ts.map +1 -0
  138. package/lib/moleculesClient/core/index.js +3 -0
  139. package/lib/moleculesClient/core/index.js.map +1 -0
  140. package/lib/moleculesClient/core/moleculesClient.d.ts +12 -0
  141. package/lib/moleculesClient/core/moleculesClient.d.ts.map +1 -0
  142. package/lib/moleculesClient/core/moleculesClient.js +105 -0
  143. package/lib/moleculesClient/core/moleculesClient.js.map +1 -0
  144. package/lib/moleculesClient/core/moleculesClientApi.d.ts +100 -0
  145. package/lib/moleculesClient/core/moleculesClientApi.d.ts.map +1 -0
  146. package/lib/moleculesClient/core/moleculesClientApi.js +20 -0
  147. package/lib/moleculesClient/core/moleculesClientApi.js.map +1 -0
  148. package/lib/moleculesClient/core/moleculesTypes.d.ts +154 -0
  149. package/lib/moleculesClient/core/moleculesTypes.d.ts.map +1 -0
  150. package/lib/moleculesClient/core/moleculesTypes.js +2 -0
  151. package/lib/moleculesClient/core/moleculesTypes.js.map +1 -0
  152. package/lib/moleculesClient/core/requestRetry.d.ts +50 -0
  153. package/lib/moleculesClient/core/requestRetry.d.ts.map +1 -0
  154. package/lib/moleculesClient/core/requestRetry.js +108 -0
  155. package/lib/moleculesClient/core/requestRetry.js.map +1 -0
  156. package/lib/molstar/core/camera.d.ts +2 -1
  157. package/lib/molstar/core/camera.d.ts.map +1 -1
  158. package/lib/molstar/core/camera.js +3 -2
  159. package/lib/molstar/core/camera.js.map +1 -1
  160. package/lib/molstar/core/framing.d.ts +102 -0
  161. package/lib/molstar/core/framing.d.ts.map +1 -0
  162. package/lib/molstar/core/framing.js +120 -0
  163. package/lib/molstar/core/framing.js.map +1 -0
  164. package/lib/molstar/core/hover.d.ts +16 -0
  165. package/lib/molstar/core/hover.d.ts.map +1 -1
  166. package/lib/molstar/core/hover.js +14 -0
  167. package/lib/molstar/core/hover.js.map +1 -1
  168. package/lib/molstar/core/index.d.ts +4 -1
  169. package/lib/molstar/core/index.d.ts.map +1 -1
  170. package/lib/molstar/core/index.js +2 -1
  171. package/lib/molstar/core/index.js.map +1 -1
  172. package/lib/pedagogy/core/answers.d.ts +46 -0
  173. package/lib/pedagogy/core/answers.d.ts.map +1 -0
  174. package/lib/pedagogy/core/answers.js +77 -0
  175. package/lib/pedagogy/core/answers.js.map +1 -0
  176. package/lib/pedagogy/core/attempts.d.ts +86 -0
  177. package/lib/pedagogy/core/attempts.d.ts.map +1 -0
  178. package/lib/pedagogy/core/attempts.js +117 -0
  179. package/lib/pedagogy/core/attempts.js.map +1 -0
  180. package/lib/pedagogy/core/index.d.ts +8 -0
  181. package/lib/pedagogy/core/index.d.ts.map +1 -1
  182. package/lib/pedagogy/core/index.js +4 -0
  183. package/lib/pedagogy/core/index.js.map +1 -1
  184. package/lib/pedagogy/core/progressController.d.ts +64 -0
  185. package/lib/pedagogy/core/progressController.d.ts.map +1 -0
  186. package/lib/pedagogy/core/progressController.js +56 -0
  187. package/lib/pedagogy/core/progressController.js.map +1 -0
  188. package/lib/pedagogy/core/seed.d.ts +96 -0
  189. package/lib/pedagogy/core/seed.d.ts.map +1 -0
  190. package/lib/pedagogy/core/seed.js +128 -0
  191. package/lib/pedagogy/core/seed.js.map +1 -0
  192. package/lib/pedagogy/core/series.d.ts +77 -0
  193. package/lib/pedagogy/core/series.d.ts.map +1 -0
  194. package/lib/pedagogy/core/series.js +10 -0
  195. package/lib/pedagogy/core/series.js.map +1 -0
  196. package/lib/pedagogy/ui/AnswerFields.d.ts +21 -0
  197. package/lib/pedagogy/ui/AnswerFields.d.ts.map +1 -0
  198. package/lib/pedagogy/ui/AnswerFields.js +24 -0
  199. package/lib/pedagogy/ui/AnswerFields.js.map +1 -0
  200. package/lib/pedagogy/ui/ExerciseList.d.ts +82 -0
  201. package/lib/pedagogy/ui/ExerciseList.d.ts.map +1 -0
  202. package/lib/pedagogy/ui/ExerciseList.js +53 -0
  203. package/lib/pedagogy/ui/ExerciseList.js.map +1 -0
  204. package/lib/pedagogy/ui/ExerciseSeries.d.ts +95 -0
  205. package/lib/pedagogy/ui/ExerciseSeries.d.ts.map +1 -0
  206. package/lib/pedagogy/ui/ExerciseSeries.js +74 -0
  207. package/lib/pedagogy/ui/ExerciseSeries.js.map +1 -0
  208. package/lib/pedagogy/ui/QuestionCard.d.ts +64 -0
  209. package/lib/pedagogy/ui/QuestionCard.d.ts.map +1 -0
  210. package/lib/pedagogy/ui/QuestionCard.js +73 -0
  211. package/lib/pedagogy/ui/QuestionCard.js.map +1 -0
  212. package/lib/pedagogy/ui/index.d.ts +10 -0
  213. package/lib/pedagogy/ui/index.d.ts.map +1 -1
  214. package/lib/pedagogy/ui/index.js +6 -0
  215. package/lib/pedagogy/ui/index.js.map +1 -1
  216. package/lib/pedagogy/ui/seriesCounts.d.ts +17 -0
  217. package/lib/pedagogy/ui/seriesCounts.d.ts.map +1 -0
  218. package/lib/pedagogy/ui/seriesCounts.js +27 -0
  219. package/lib/pedagogy/ui/seriesCounts.js.map +1 -0
  220. package/lib/pedagogy/ui/seriesParts.d.ts +55 -0
  221. package/lib/pedagogy/ui/seriesParts.d.ts.map +1 -0
  222. package/lib/pedagogy/ui/seriesParts.js +38 -0
  223. package/lib/pedagogy/ui/seriesParts.js.map +1 -0
  224. package/lib/pedagogy/ui/useAttemptRecords.d.ts +10 -0
  225. package/lib/pedagogy/ui/useAttemptRecords.d.ts.map +1 -0
  226. package/lib/pedagogy/ui/useAttemptRecords.js +11 -0
  227. package/lib/pedagogy/ui/useAttemptRecords.js.map +1 -0
  228. package/lib/periodic/ui/PeriodicTable.d.ts.map +1 -1
  229. package/lib/periodic/ui/PeriodicTable.js +6 -3
  230. package/lib/periodic/ui/PeriodicTable.js.map +1 -1
  231. package/lib/property/core/copyableText.d.ts +14 -0
  232. package/lib/property/core/copyableText.d.ts.map +1 -0
  233. package/lib/property/core/copyableText.js +21 -0
  234. package/lib/property/core/copyableText.js.map +1 -0
  235. package/lib/property/core/index.d.ts +2 -0
  236. package/lib/property/core/index.d.ts.map +1 -0
  237. package/lib/property/core/index.js +2 -0
  238. package/lib/property/core/index.js.map +1 -0
  239. package/lib/property/ui/PropertyTable.d.ts +43 -0
  240. package/lib/property/ui/PropertyTable.d.ts.map +1 -0
  241. package/lib/property/ui/PropertyTable.js +19 -0
  242. package/lib/property/ui/PropertyTable.js.map +1 -0
  243. package/lib/property/ui/index.d.ts +3 -0
  244. package/lib/property/ui/index.d.ts.map +1 -0
  245. package/lib/property/ui/index.js +2 -0
  246. package/lib/property/ui/index.js.map +1 -0
  247. package/lib/router/core/history.d.ts +24 -3
  248. package/lib/router/core/history.d.ts.map +1 -1
  249. package/lib/router/core/history.js +55 -7
  250. package/lib/router/core/history.js.map +1 -1
  251. package/lib/router/core/index.d.ts +3 -3
  252. package/lib/router/core/index.d.ts.map +1 -1
  253. package/lib/router/core/index.js +2 -2
  254. package/lib/router/core/index.js.map +1 -1
  255. package/lib/router/core/languageRoute.d.ts +61 -0
  256. package/lib/router/core/languageRoute.d.ts.map +1 -0
  257. package/lib/router/core/languageRoute.js +96 -0
  258. package/lib/router/core/languageRoute.js.map +1 -0
  259. package/lib/router/core/siteAddresses.d.ts +23 -0
  260. package/lib/router/core/siteAddresses.d.ts.map +1 -1
  261. package/lib/router/core/siteAddresses.js +26 -0
  262. package/lib/router/core/siteAddresses.js.map +1 -1
  263. package/lib/router/core/tabRouter.d.ts +2 -108
  264. package/lib/router/core/tabRouter.d.ts.map +1 -1
  265. package/lib/router/core/tabRouter.js +38 -5
  266. package/lib/router/core/tabRouter.js.map +1 -1
  267. package/lib/router/core/tabRouterTypes.d.ts +154 -0
  268. package/lib/router/core/tabRouterTypes.d.ts.map +1 -0
  269. package/lib/router/core/tabRouterTypes.js +2 -0
  270. package/lib/router/core/tabRouterTypes.js.map +1 -0
  271. package/lib/seo/core/fitDescription.d.ts +40 -0
  272. package/lib/seo/core/fitDescription.d.ts.map +1 -0
  273. package/lib/seo/core/fitDescription.js +45 -0
  274. package/lib/seo/core/fitDescription.js.map +1 -0
  275. package/lib/seo/core/index.d.ts +7 -0
  276. package/lib/seo/core/index.d.ts.map +1 -1
  277. package/lib/seo/core/index.js +4 -0
  278. package/lib/seo/core/index.js.map +1 -1
  279. package/lib/seo/core/limits.d.ts +24 -0
  280. package/lib/seo/core/limits.d.ts.map +1 -0
  281. package/lib/seo/core/limits.js +24 -0
  282. package/lib/seo/core/limits.js.map +1 -0
  283. package/lib/seo/core/pageContent.d.ts +25 -0
  284. package/lib/seo/core/pageContent.d.ts.map +1 -0
  285. package/lib/seo/core/pageContent.js +25 -0
  286. package/lib/seo/core/pageContent.js.map +1 -0
  287. package/lib/seo/core/plainDescription.d.ts.map +1 -1
  288. package/lib/seo/core/plainDescription.js +3 -2
  289. package/lib/seo/core/plainDescription.js.map +1 -1
  290. package/lib/seo/core/routeProblems.d.ts.map +1 -1
  291. package/lib/seo/core/routeProblems.js +1 -6
  292. package/lib/seo/core/routeProblems.js.map +1 -1
  293. package/lib/seo/core/routeTable.d.ts +31 -0
  294. package/lib/seo/core/routeTable.d.ts.map +1 -0
  295. package/lib/seo/core/routeTable.js +96 -0
  296. package/lib/seo/core/routeTable.js.map +1 -0
  297. package/lib/seo/vite/index.d.ts +2 -0
  298. package/lib/seo/vite/index.d.ts.map +1 -1
  299. package/lib/seo/vite/index.js +1 -0
  300. package/lib/seo/vite/index.js.map +1 -1
  301. package/lib/seo/vite/prerender.d.ts +10 -0
  302. package/lib/seo/vite/prerender.d.ts.map +1 -1
  303. package/lib/seo/vite/prerender.js +12 -1
  304. package/lib/seo/vite/prerender.js.map +1 -1
  305. package/lib/seo/vite/routeTable.d.ts +40 -0
  306. package/lib/seo/vite/routeTable.d.ts.map +1 -0
  307. package/lib/seo/vite/routeTable.js +44 -0
  308. package/lib/seo/vite/routeTable.js.map +1 -0
  309. package/lib/server/answerAddresses.d.ts +51 -0
  310. package/lib/server/answerAddresses.d.ts.map +1 -0
  311. package/lib/server/answerAddresses.js +72 -0
  312. package/lib/server/answerAddresses.js.map +1 -0
  313. package/lib/server/cardMeta.d.ts +57 -0
  314. package/lib/server/cardMeta.d.ts.map +1 -0
  315. package/lib/server/cardMeta.js +52 -0
  316. package/lib/server/cardMeta.js.map +1 -0
  317. package/lib/server/config.d.ts +72 -0
  318. package/lib/server/config.d.ts.map +1 -0
  319. package/lib/server/config.js +67 -0
  320. package/lib/server/config.js.map +1 -0
  321. package/lib/server/envNumber.d.ts +35 -0
  322. package/lib/server/envNumber.d.ts.map +1 -0
  323. package/lib/server/envNumber.js +42 -0
  324. package/lib/server/envNumber.js.map +1 -0
  325. package/lib/server/healthRoute.d.ts +26 -0
  326. package/lib/server/healthRoute.d.ts.map +1 -0
  327. package/lib/server/healthRoute.js +22 -0
  328. package/lib/server/healthRoute.js.map +1 -0
  329. package/lib/server/listenSite.d.ts +38 -0
  330. package/lib/server/listenSite.d.ts.map +1 -0
  331. package/lib/server/listenSite.js +60 -0
  332. package/lib/server/listenSite.js.map +1 -0
  333. package/lib/server/mcpServer.d.ts +8 -0
  334. package/lib/server/mcpServer.d.ts.map +1 -0
  335. package/lib/server/mcpServer.js +11 -0
  336. package/lib/server/mcpServer.js.map +1 -0
  337. package/lib/server/repositoryVersion.d.ts +16 -0
  338. package/lib/server/repositoryVersion.d.ts.map +1 -0
  339. package/lib/server/repositoryVersion.js +33 -0
  340. package/lib/server/repositoryVersion.js.map +1 -0
  341. package/lib/server/routeOptions.d.ts +23 -0
  342. package/lib/server/routeOptions.d.ts.map +1 -0
  343. package/lib/server/routeOptions.js +20 -0
  344. package/lib/server/routeOptions.js.map +1 -0
  345. package/lib/server/routeTable.d.ts +14 -0
  346. package/lib/server/routeTable.d.ts.map +1 -0
  347. package/lib/server/routeTable.js +32 -0
  348. package/lib/server/routeTable.js.map +1 -0
  349. package/lib/server/siteView.d.ts +29 -0
  350. package/lib/server/siteView.d.ts.map +1 -0
  351. package/lib/server/siteView.js +21 -0
  352. package/lib/server/siteView.js.map +1 -0
  353. package/lib/server/spaPages.d.ts +32 -0
  354. package/lib/server/spaPages.d.ts.map +1 -0
  355. package/lib/server/spaPages.js +126 -0
  356. package/lib/server/spaPages.js.map +1 -0
  357. package/lib/server/spaSite.d.ts +30 -0
  358. package/lib/server/spaSite.d.ts.map +1 -0
  359. package/lib/server/spaSite.js +170 -0
  360. package/lib/server/spaSite.js.map +1 -0
  361. package/lib/server/spaSiteOptions.d.ts +126 -0
  362. package/lib/server/spaSiteOptions.d.ts.map +1 -0
  363. package/lib/server/spaSiteOptions.js +2 -0
  364. package/lib/server/spaSiteOptions.js.map +1 -0
  365. package/lib/server/staticSite.d.ts +9 -0
  366. package/lib/server/staticSite.d.ts.map +1 -1
  367. package/lib/server/staticSite.js +41 -19
  368. package/lib/server/staticSite.js.map +1 -1
  369. package/lib/server/toolSiteServer.d.ts +77 -0
  370. package/lib/server/toolSiteServer.d.ts.map +1 -0
  371. package/lib/server/toolSiteServer.js +58 -0
  372. package/lib/server/toolSiteServer.js.map +1 -0
  373. package/lib/server/trustProxy.d.ts +20 -0
  374. package/lib/server/trustProxy.d.ts.map +1 -0
  375. package/lib/server/trustProxy.js +32 -0
  376. package/lib/server/trustProxy.js.map +1 -0
  377. package/lib/server/types.d.ts +13 -0
  378. package/lib/server/types.d.ts.map +1 -0
  379. package/lib/server/types.js +2 -0
  380. package/lib/server/types.js.map +1 -0
  381. package/lib/server.d.ts +22 -0
  382. package/lib/server.d.ts.map +1 -1
  383. package/lib/server.js +12 -0
  384. package/lib/server.js.map +1 -1
  385. package/lib/share/core/config.d.ts +18 -0
  386. package/lib/share/core/config.d.ts.map +1 -1
  387. package/lib/share/core/config.js +33 -2
  388. package/lib/share/core/config.js.map +1 -1
  389. package/lib/share/core/index.d.ts +3 -1
  390. package/lib/share/core/index.d.ts.map +1 -1
  391. package/lib/share/core/index.js +2 -1
  392. package/lib/share/core/index.js.map +1 -1
  393. package/lib/share/core/keySetParam.d.ts +40 -0
  394. package/lib/share/core/keySetParam.d.ts.map +1 -0
  395. package/lib/share/core/keySetParam.js +60 -0
  396. package/lib/share/core/keySetParam.js.map +1 -0
  397. package/lib/share/core/vocabulary.d.ts +8 -0
  398. package/lib/share/core/vocabulary.d.ts.map +1 -1
  399. package/lib/shell/ui/ShareControl.d.ts +75 -0
  400. package/lib/shell/ui/ShareControl.d.ts.map +1 -0
  401. package/lib/shell/ui/ShareControl.js +40 -0
  402. package/lib/shell/ui/ShareControl.js.map +1 -0
  403. package/lib/shell/ui/ShellFrame.d.ts +14 -0
  404. package/lib/shell/ui/ShellFrame.d.ts.map +1 -0
  405. package/lib/shell/ui/ShellFrame.js +45 -0
  406. package/lib/shell/ui/ShellFrame.js.map +1 -0
  407. package/lib/shell/ui/SiteShell.d.ts +251 -0
  408. package/lib/shell/ui/SiteShell.d.ts.map +1 -0
  409. package/lib/shell/ui/SiteShell.js +39 -0
  410. package/lib/shell/ui/SiteShell.js.map +1 -0
  411. package/lib/shell/ui/index.d.ts +5 -0
  412. package/lib/shell/ui/index.d.ts.map +1 -0
  413. package/lib/shell/ui/index.js +3 -0
  414. package/lib/shell/ui/index.js.map +1 -0
  415. package/lib/state/core/index.d.ts +1 -0
  416. package/lib/state/core/index.d.ts.map +1 -1
  417. package/lib/state/core/index.js.map +1 -1
  418. package/lib/state/core/legacyEntries.d.ts +30 -0
  419. package/lib/state/core/legacyEntries.d.ts.map +1 -0
  420. package/lib/state/core/legacyEntries.js +51 -0
  421. package/lib/state/core/legacyEntries.js.map +1 -0
  422. package/lib/state/core/persistBucket.d.ts +26 -2
  423. package/lib/state/core/persistBucket.d.ts.map +1 -1
  424. package/lib/state/core/persistBucket.js +26 -9
  425. package/lib/state/core/persistBucket.js.map +1 -1
  426. package/lib/state/core/persistSignalBucket.d.ts +26 -0
  427. package/lib/state/core/persistSignalBucket.d.ts.map +1 -1
  428. package/lib/state/core/persistSignalBucket.js +31 -0
  429. package/lib/state/core/persistSignalBucket.js.map +1 -1
  430. package/lib/state/core/storageEntry.d.ts +15 -0
  431. package/lib/state/core/storageEntry.d.ts.map +1 -1
  432. package/lib/state/core/storageEntry.js +33 -0
  433. package/lib/state/core/storageEntry.js.map +1 -1
  434. package/lib/structure/ui/StructureExportButton.d.ts +27 -0
  435. package/lib/structure/ui/StructureExportButton.d.ts.map +1 -0
  436. package/lib/structure/ui/StructureExportButton.js +21 -0
  437. package/lib/structure/ui/StructureExportButton.js.map +1 -0
  438. package/lib/structure/ui/index.d.ts +4 -0
  439. package/lib/structure/ui/index.d.ts.map +1 -1
  440. package/lib/structure/ui/index.js +2 -0
  441. package/lib/structure/ui/index.js.map +1 -1
  442. package/lib/structure/ui/useStructureDraft.d.ts +32 -0
  443. package/lib/structure/ui/useStructureDraft.d.ts.map +1 -0
  444. package/lib/structure/ui/useStructureDraft.js +20 -0
  445. package/lib/structure/ui/useStructureDraft.js.map +1 -0
  446. package/lib/ui.d.ts +2 -0
  447. package/lib/ui.d.ts.map +1 -1
  448. package/lib/ui.js +2 -0
  449. package/lib/ui.js.map +1 -1
  450. package/lib/worker/core/index.d.ts +1 -1
  451. package/lib/worker/core/index.d.ts.map +1 -1
  452. package/lib/worker/core/messages.d.ts +4 -2
  453. package/lib/worker/core/messages.d.ts.map +1 -1
  454. package/lib/worker/core/messages.js.map +1 -1
  455. package/lib/worker/core/oclResourcesUrl.d.ts +16 -0
  456. package/lib/worker/core/oclResourcesUrl.d.ts.map +1 -0
  457. package/lib/worker/core/oclResourcesUrl.js +19 -0
  458. package/lib/worker/core/oclResourcesUrl.js.map +1 -0
  459. package/lib/worker/core/serveWorkerRequests.d.ts +8 -0
  460. package/lib/worker/core/serveWorkerRequests.d.ts.map +1 -1
  461. package/lib/worker/core/serveWorkerRequests.js +15 -2
  462. package/lib/worker/core/serveWorkerRequests.js.map +1 -1
  463. package/lib/worker/core/workerChannel.d.ts +3 -4
  464. package/lib/worker/core/workerChannel.d.ts.map +1 -1
  465. package/lib/worker/core/workerChannel.js +72 -67
  466. package/lib/worker/core/workerChannel.js.map +1 -1
  467. package/lib/worker/core/workerChannelParts.d.ts +17 -6
  468. package/lib/worker/core/workerChannelParts.d.ts.map +1 -1
  469. package/lib/worker/core/workerChannelParts.js +20 -4
  470. package/lib/worker/core/workerChannelParts.js.map +1 -1
  471. package/lib/worker/core/workerChannelTypes.d.ts +46 -2
  472. package/lib/worker/core/workerChannelTypes.d.ts.map +1 -1
  473. package/lib/worker/core/workerSlot.d.ts +66 -0
  474. package/lib/worker/core/workerSlot.d.ts.map +1 -0
  475. package/lib/worker/core/workerSlot.js +107 -0
  476. package/lib/worker/core/workerSlot.js.map +1 -0
  477. package/package.json +16 -1
  478. package/src/card/core/cardAddress.ts +100 -0
  479. package/src/card/core/cardPageUrl.ts +97 -0
  480. package/src/card/core/index.ts +6 -0
  481. package/src/card/core/panelRoom.ts +66 -0
  482. package/src/card/ui/CardDetailsButton.tsx +104 -0
  483. package/src/card/ui/CardFigure.tsx +86 -0
  484. package/src/card/ui/CardFrame.tsx +46 -0
  485. package/src/card/ui/CopyTableButton.tsx +81 -0
  486. package/src/card/ui/cardTooltip.ts +18 -0
  487. package/src/card/ui/embed.ts +27 -0
  488. package/src/card/ui/fitCardToFrame.ts +76 -0
  489. package/src/card/ui/holdRoomForPanels.ts +83 -0
  490. package/src/card/ui/index.ts +14 -0
  491. package/src/card/ui/openPanels.ts +106 -0
  492. package/src/card.ts +13 -0
  493. package/src/conformers.ts +4 -0
  494. package/src/core.ts +5 -0
  495. package/src/fetch/core/apiError.ts +65 -0
  496. package/src/fetch/core/fetchJson.ts +129 -0
  497. package/src/fetch/core/index.ts +4 -0
  498. package/src/formula/core/formulaText.ts +96 -0
  499. package/src/formula/core/index.ts +20 -0
  500. package/src/formula/core/normalizeFormula.ts +50 -0
  501. package/src/formula/core/readFormula.ts +211 -0
  502. package/src/formula/ui/CopyableFormula.tsx +51 -0
  503. package/src/formula/ui/FormulaInput.tsx +50 -0
  504. package/src/formula/ui/QuestionFormula.tsx +20 -0
  505. package/src/formula/ui/index.ts +6 -0
  506. package/src/formula.ts +11 -0
  507. package/src/hooks/ui/index.ts +1 -0
  508. package/src/hooks/ui/keyTargets.ts +5 -3
  509. package/src/hooks/ui/useAsync.ts +50 -14
  510. package/src/locales/de.json +37 -0
  511. package/src/locales/en.json +37 -0
  512. package/src/locales/es.json +37 -0
  513. package/src/locales/fr.json +37 -0
  514. package/src/locales/it.json +37 -0
  515. package/src/moleculesClient/core/index.ts +19 -0
  516. package/src/moleculesClient/core/moleculesClient.ts +175 -0
  517. package/src/moleculesClient/core/moleculesClientApi.ts +120 -0
  518. package/src/moleculesClient/core/moleculesTypes.ts +163 -0
  519. package/src/moleculesClient/core/requestRetry.ts +118 -0
  520. package/src/molstar/core/camera.ts +3 -2
  521. package/src/molstar/core/framing.ts +200 -0
  522. package/src/molstar/core/hover.ts +26 -0
  523. package/src/molstar/core/index.ts +21 -1
  524. package/src/pedagogy/core/answers.ts +94 -0
  525. package/src/pedagogy/core/attempts.ts +205 -0
  526. package/src/pedagogy/core/index.ts +36 -0
  527. package/src/pedagogy/core/progressController.ts +116 -0
  528. package/src/pedagogy/core/seed.ts +177 -0
  529. package/src/pedagogy/core/series.ts +82 -0
  530. package/src/pedagogy/ui/AnswerFields.tsx +63 -0
  531. package/src/pedagogy/ui/ExerciseList.tsx +202 -0
  532. package/src/pedagogy/ui/ExerciseSeries.tsx +250 -0
  533. package/src/pedagogy/ui/QuestionCard.tsx +231 -0
  534. package/src/pedagogy/ui/index.ts +18 -0
  535. package/src/pedagogy/ui/seriesCounts.ts +34 -0
  536. package/src/pedagogy/ui/seriesParts.tsx +127 -0
  537. package/src/pedagogy/ui/useAttemptRecords.ts +16 -0
  538. package/src/periodic/ui/PeriodicTable.tsx +6 -3
  539. package/src/property/core/copyableText.ts +20 -0
  540. package/src/property/core/index.ts +1 -0
  541. package/src/property/ui/PropertyTable.tsx +83 -0
  542. package/src/property/ui/index.ts +2 -0
  543. package/src/router/core/history.ts +61 -7
  544. package/src/router/core/index.ts +3 -2
  545. package/src/router/core/languageRoute.ts +136 -0
  546. package/src/router/core/siteAddresses.ts +38 -0
  547. package/src/router/core/tabRouter.ts +59 -117
  548. package/src/router/core/tabRouterTypes.ts +158 -0
  549. package/src/seo/core/fitDescription.ts +74 -0
  550. package/src/seo/core/index.ts +17 -0
  551. package/src/seo/core/limits.ts +27 -0
  552. package/src/seo/core/pageContent.ts +42 -0
  553. package/src/seo/core/plainDescription.ts +4 -2
  554. package/src/seo/core/routeProblems.ts +1 -7
  555. package/src/seo/core/routeTable.ts +103 -0
  556. package/src/seo/vite/index.ts +2 -0
  557. package/src/seo/vite/prerender.ts +26 -1
  558. package/src/seo/vite/routeTable.ts +79 -0
  559. package/src/server/answerAddresses.ts +92 -0
  560. package/src/server/cardMeta.ts +88 -0
  561. package/src/server/config.ts +125 -0
  562. package/src/server/envNumber.ts +65 -0
  563. package/src/server/healthRoute.ts +42 -0
  564. package/src/server/listenSite.ts +90 -0
  565. package/src/server/mcpServer.ts +14 -0
  566. package/src/server/repositoryVersion.ts +33 -0
  567. package/src/server/routeOptions.ts +26 -0
  568. package/src/server/routeTable.ts +35 -0
  569. package/src/server/siteView.ts +42 -0
  570. package/src/server/spaPages.ts +179 -0
  571. package/src/server/spaSite.ts +216 -0
  572. package/src/server/spaSiteOptions.ts +133 -0
  573. package/src/server/staticSite.ts +65 -35
  574. package/src/server/toolSiteServer.ts +127 -0
  575. package/src/server/trustProxy.ts +32 -0
  576. package/src/server/types.ts +25 -0
  577. package/src/server.ts +40 -0
  578. package/src/share/core/config.ts +45 -2
  579. package/src/share/core/index.ts +4 -0
  580. package/src/share/core/keySetParam.ts +92 -0
  581. package/src/share/core/vocabulary.ts +8 -0
  582. package/src/shell/ui/ShareControl.tsx +150 -0
  583. package/src/shell/ui/ShellFrame.tsx +180 -0
  584. package/src/shell/ui/SiteShell.tsx +297 -0
  585. package/src/shell/ui/index.ts +9 -0
  586. package/src/state/core/index.ts +1 -0
  587. package/src/state/core/legacyEntries.ts +76 -0
  588. package/src/state/core/persistBucket.ts +50 -10
  589. package/src/state/core/persistSignalBucket.ts +52 -0
  590. package/src/state/core/storageEntry.ts +32 -0
  591. package/src/structure/ui/StructureExportButton.tsx +57 -0
  592. package/src/structure/ui/index.ts +4 -0
  593. package/src/structure/ui/useStructureDraft.ts +47 -0
  594. package/src/ui.ts +2 -0
  595. package/src/worker/core/index.ts +1 -0
  596. package/src/worker/core/messages.ts +4 -3
  597. package/src/worker/core/oclResourcesUrl.ts +21 -0
  598. package/src/worker/core/serveWorkerRequests.ts +30 -2
  599. package/src/worker/core/workerChannel.ts +74 -74
  600. package/src/worker/core/workerChannelParts.ts +33 -13
  601. package/src/worker/core/workerChannelTypes.ts +47 -2
  602. package/src/worker/core/workerSlot.ts +181 -0
  603. package/styles/card.css +145 -0
  604. package/styles/chrome.css +248 -0
@@ -0,0 +1,50 @@
1
+ import { FormGroup, InputGroup } from '@blueprintjs/core';
2
+ import type { ReactElement } from 'react';
3
+ import { useId } from 'react';
4
+
5
+ /** What {@link FormulaInput} needs. */
6
+ export interface FormulaInputProps {
7
+ /** What the box is for, written above it. */
8
+ label: string;
9
+ /** What is in the box. */
10
+ value: string;
11
+ /** Called with the new text on every keystroke. */
12
+ onChange: (value: string) => void;
13
+ /**
14
+ * How to write what the box expects, under it.
15
+ * @default undefined
16
+ */
17
+ helper?: string;
18
+ /**
19
+ * Placeholder written in the empty box.
20
+ * @default undefined
21
+ */
22
+ placeholder?: string;
23
+ }
24
+
25
+ /**
26
+ * A box to type a molecular formula into, set in a monospace face and with
27
+ * every correction a phone or a browser would make switched off: a keyboard
28
+ * that capitalises `co` has written a different compound.
29
+ * @param props - Its label, its value and what to do on a change.
30
+ * @returns The box.
31
+ */
32
+ export function FormulaInput(props: FormulaInputProps): ReactElement {
33
+ const { label, value, onChange, helper, placeholder } = props;
34
+ const id = useId();
35
+ return (
36
+ <FormGroup label={label} labelFor={id} helperText={helper}>
37
+ <InputGroup
38
+ id={id}
39
+ value={value}
40
+ placeholder={placeholder}
41
+ onValueChange={onChange}
42
+ autoComplete="off"
43
+ autoCorrect="off"
44
+ autoCapitalize="off"
45
+ spellCheck={false}
46
+ className="formula-input"
47
+ />
48
+ </FormGroup>
49
+ );
50
+ }
@@ -0,0 +1,20 @@
1
+ import type { ReactElement } from 'react';
2
+ import { MF } from 'react-mf';
3
+
4
+ import { normalizeFormula } from '../core/normalizeFormula.ts';
5
+
6
+ /** What {@link QuestionFormula} draws. */
7
+ export interface QuestionFormulaProps {
8
+ /** The formula, as the data writes it, in whatever notation it gives a charge. */
9
+ formula: string;
10
+ }
11
+
12
+ /**
13
+ * A formula as the list of a series names its question: subscripts and charge
14
+ * drawn, whatever notation the data writes the charge in.
15
+ * @param props - The formula.
16
+ * @returns The formula.
17
+ */
18
+ export function QuestionFormula(props: QuestionFormulaProps): ReactElement {
19
+ return <MF mf={normalizeFormula(props.formula)} />;
20
+ }
@@ -0,0 +1,6 @@
1
+ export type { CopyableFormulaProps } from './CopyableFormula.tsx';
2
+ export { CopyableFormula } from './CopyableFormula.tsx';
3
+ export type { FormulaInputProps } from './FormulaInput.tsx';
4
+ export { FormulaInput } from './FormulaInput.tsx';
5
+ export type { QuestionFormulaProps } from './QuestionFormula.tsx';
6
+ export { QuestionFormula } from './QuestionFormula.tsx';
package/src/formula.ts ADDED
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Molecular formulas: read as a student types them, compared, written as HTML
3
+ * and Unicode, and drawn and copied with their subscripts.
4
+ *
5
+ * An entry point of its own, not part of `react-cheminfo/core` or `/ui`,
6
+ * because it is built on `mf-parser` and `react-mf`: a site that never shows a
7
+ * formula must not be made to install either.
8
+ */
9
+
10
+ export * from './formula/core/index.ts';
11
+ export * from './formula/ui/index.ts';
@@ -15,6 +15,7 @@ export { handleListNavigationKey } from './listNavigation.ts';
15
15
  export type { PollingOptions, PollingSnapshot } from './pollingController.ts';
16
16
  export type { ActiveHeadingOptions } from './useActiveHeading.ts';
17
17
  export { useActiveHeading } from './useActiveHeading.ts';
18
+ export type { AsyncResult } from './useAsync.ts';
18
19
  export { useAsync } from './useAsync.ts';
19
20
  export { useContainerSize } from './useContainerSize.ts';
20
21
  export { useDebouncedValue } from './useDebouncedValue.ts';
@@ -1,7 +1,9 @@
1
1
  /**
2
2
  * Whether a key event is aimed at somewhere the visitor types: a text field, a
3
- * select, an editable region or anything carrying `role="textbox"`. A keyboard
4
- * shortcut listening above it leaves such a key alone.
3
+ * select, an editable region, anything carrying `role="textbox"`, or a canvas
4
+ * holding the focus — a structure editor reads its own keys there, `Delete`
5
+ * and the arrows included. A keyboard shortcut listening above it leaves such
6
+ * a key alone.
5
7
  * @param target - The `target` of the keyboard event.
6
8
  * @returns True when the key belongs to the field.
7
9
  */
@@ -42,7 +44,7 @@ export function isInteractiveTarget(
42
44
  return role !== null && INTERACTIVE_ROLES.has(role);
43
45
  }
44
46
 
45
- const TEXT_ENTRY_TAGS = new Set(['INPUT', 'TEXTAREA', 'SELECT']);
47
+ const TEXT_ENTRY_TAGS = new Set(['INPUT', 'TEXTAREA', 'SELECT', 'CANVAS']);
46
48
  const INTERACTIVE_TAGS = new Set(['BUTTON', 'A', 'SUMMARY']);
47
49
  const INTERACTIVE_ROLES = new Set([
48
50
  'button',
@@ -1,44 +1,80 @@
1
- import { useEffect, useState } from 'react';
1
+ import { useEffect, useMemo, useState } from 'react';
2
2
 
3
3
  import type { AsyncState } from './asyncState.ts';
4
4
  import { ASYNC_LOADING, asyncFailed, asyncSucceeded } from './asyncState.ts';
5
5
 
6
+ /**
7
+ * Where a task stands, and whether what is on screen still answers the
8
+ * question being asked.
9
+ */
10
+ export type AsyncResult<TData> = AsyncState<TData> & {
11
+ /**
12
+ * True from the moment the question changes — a new task, a new
13
+ * `refreshKey` — until its run settles: the data on screen, if any, answers
14
+ * an earlier question. Also true while the very first run is loading.
15
+ */
16
+ pending: boolean;
17
+ };
18
+
6
19
  /**
7
20
  * Run an async task and follow where it stands, as a discriminated union.
8
21
  *
9
22
  * The task runs on mount and again whenever it or `refreshKey` changes. A
10
23
  * re-run does not flip the state back to `loading`: what is on screen stays
11
24
  * until the new answer arrives, and a refresh that fails keeps it rather than
12
- * replacing it with an error. An answer that arrives after the component
13
- * unmounted, or after a newer run started, is ignored.
25
+ * replacing it with an error; `pending` says the answer is stale meanwhile. An
26
+ * answer that arrives after the component unmounted, or after a newer run
27
+ * started, is ignored, and the run's signal is aborted at that moment, so a
28
+ * task that hands it to `fetch` stops asking a question nobody waits for.
14
29
  *
15
30
  * The task is a dependency, so pass a stable function — declared at module
16
31
  * scope, or wrapped in `useCallback` over the values it reads.
17
- * @param task - The async function to run.
32
+ * @param task - The async function to run, handed a signal aborted once its
33
+ * answer is no longer wanted.
18
34
  * @param refreshKey - Changing it runs the task again; only its identity
19
35
  * matters. Defaults to `undefined`.
20
- * @returns Where the latest run stands.
36
+ * @returns Where the latest run stands, and whether it is still running.
21
37
  */
22
38
  export function useAsync<TData>(
23
- task: () => Promise<TData>,
39
+ task: (signal: AbortSignal) => Promise<TData>,
24
40
  refreshKey?: unknown,
25
- ): AsyncState<TData> {
26
- const [state, setState] = useState<AsyncState<TData>>(ASYNC_LOADING);
41
+ ): AsyncResult<TData> {
42
+ const [answer, setAnswer] = useState<Answer<TData>>(UNANSWERED);
27
43
 
28
44
  useEffect(() => {
29
- let cancelled = false;
30
- task().then(
45
+ const controller = new AbortController();
46
+ task(controller.signal).then(
31
47
  (data) => {
32
- if (!cancelled) setState(asyncSucceeded(data));
48
+ if (controller.signal.aborted) return;
49
+ setAnswer({ state: asyncSucceeded(data), task, refreshKey });
33
50
  },
34
51
  (error: unknown) => {
35
- if (!cancelled) setState((previous) => asyncFailed(previous, error));
52
+ if (controller.signal.aborted) return;
53
+ setAnswer((previous) => ({
54
+ state: asyncFailed(previous.state, error),
55
+ task,
56
+ refreshKey,
57
+ }));
36
58
  },
37
59
  );
38
60
  return () => {
39
- cancelled = true;
61
+ controller.abort();
40
62
  };
41
63
  }, [task, refreshKey]);
42
64
 
43
- return state;
65
+ const pending =
66
+ answer.task !== task || !Object.is(answer.refreshKey, refreshKey);
67
+ return useMemo(() => ({ ...answer.state, pending }), [answer.state, pending]);
44
68
  }
69
+
70
+ interface Answer<TData> {
71
+ state: AsyncState<TData>;
72
+ task: unknown;
73
+ refreshKey: unknown;
74
+ }
75
+
76
+ const UNANSWERED: Answer<never> = {
77
+ state: ASYNC_LOADING,
78
+ task: null,
79
+ refreshKey: undefined,
80
+ };
@@ -53,6 +53,7 @@
53
53
  "share.button": "Teilen",
54
54
  "share.buttonTitle": "Einen Link zu dieser Seite teilen oder sie in Ihre eigene Website einbetten",
55
55
  "share.dialogTitleFor": "{title} teilen oder einbetten",
56
+ "share.frameTitle": "{site} — {title}",
56
57
  "share.layout": "Darstellung",
57
58
  "share.embed": "In eine andere Seite einbetten",
58
59
  "share.embedHint": "Lässt Kopfzeile und Navigation der Website weg, damit die Seite in einer Seite von Ihnen sitzt.",
@@ -104,6 +105,12 @@
104
105
  "clipboard.copyThe": "{what} kopieren",
105
106
  "clipboard.copyValue": "{value} kopieren",
106
107
  "clipboard.copyToClipboard": "In die Zwischenablage kopieren",
108
+ "card.details": "Details",
109
+ "card.detailsTitle": "In einem neuen Tab öffnen",
110
+ "card.detailsLabel": "Details: in einem neuen Tab öffnen",
111
+ "card.copyTable": "Als Tabelle kopieren",
112
+ "card.copyTableTitle": "Die Tabelle kopieren, zum Einfügen in eine Tabellenkalkulation",
113
+ "card.copyPicture": "Bild kopieren oder speichern",
107
114
  "about.providedBy": "Bereitgestellt von",
108
115
  "about.whatYouCanDo": "Was Sie hier tun können",
109
116
  "about.builtOn": "Aufgebaut auf",
@@ -245,6 +252,35 @@
245
252
  "pedagogy.previous": "Zurück",
246
253
  "pedagogy.next": "Weiter",
247
254
  "pedagogy.stepOf": "Schritt {step} von {total}",
255
+ "pedagogy.answerEmpty": "Geben Sie {what} ein.",
256
+ "pedagogy.answerUnreadable": "„{typed}“ ist nicht {what}.",
257
+ "pedagogy.questions": "Fragen",
258
+ "pedagogy.questionsInSeries": "Fragen pro Serie",
259
+ "pedagogy.questionCount": "{count} Fragen",
260
+ "pedagogy.allQuestions": "Alle {count} Fragen",
261
+ "pedagogy.newSeries": "Neue Serie",
262
+ "pedagogy.newSeriesTitle": "Eine andere Serie ziehen; der angezeigte Link ändert sich mit",
263
+ "pedagogy.seriesQuestions": "Fragen der Serie",
264
+ "pedagogy.questionNumber": "Frage {number}",
265
+ "pedagogy.questionOf": "Frage {number} von {total}",
266
+ "pedagogy.solved": "Gelöst",
267
+ "pedagogy.solvedWithHintsOf": "Geöffnete Hinweise: {revealed} von {total}.",
268
+ "pedagogy.solvedWithoutHint": "Ohne Hinweis.",
269
+ "pedagogy.nextQuestion": "Nächste Frage",
270
+ "pedagogy.solution": "Lösung",
271
+ "pedagogy.exercises": "Übungen",
272
+ "pedagogy.statusIdle": "nicht begonnen",
273
+ "pedagogy.statusAttempted": "abgegeben, noch nicht richtig",
274
+ "pedagogy.statusSolved": "richtig",
275
+ "pedagogy.solvedWithOneHint": "Gelöst mit 1 Hinweis",
276
+ "pedagogy.solvedWithHints": "Gelöst mit {count} Hinweisen",
277
+ "formula.copyLabel": "Formel",
278
+ "formula.typeFirst": "Geben Sie zuerst eine Formel ein.",
279
+ "formula.notElement": "„{symbol}“ ist kein Elementsymbol.",
280
+ "formula.noAtom": "„{formula}“ enthält kein Atom.",
281
+ "formula.wholeCounts": "„{formula}“ gibt einem Atom die Anzahl {count}; Anzahlen sind ganze Zahlen.",
282
+ "formula.unknownNotation": "„{formula}“ verwendet eine Schreibweise, die dieses Werkzeug nicht zählt.",
283
+ "formula.unreadable": "„{formula}“ ist keine Formel, die dieses Werkzeug lesen kann ({reason}).",
248
284
  "slides.exit": "Beenden",
249
285
  "slides.previousSlide": "Vorige Folie",
250
286
  "slides.nextSlide": "Nächste Folie",
@@ -458,6 +494,7 @@
458
494
  "structure.tool.unavailable": "In diesem Editor nicht verfügbar.",
459
495
  "structure.loadingEditor": "Der Editor wird geladen…",
460
496
  "structure.export.open": "Struktur exportieren",
497
+ "structure.export.glyph": "Struktur kopieren oder speichern: SMILES, Molfile",
461
498
  "structure.export.title": "Struktur exportieren",
462
499
  "structure.export.loading": "Die Struktur wird gelesen…",
463
500
  "structure.export.nothing": "Noch nichts gezeichnet.",
@@ -53,6 +53,7 @@
53
53
  "share.button": "Share",
54
54
  "share.buttonTitle": "Share a link to this page, or embed it in your own site",
55
55
  "share.dialogTitleFor": "Share or embed — {title}",
56
+ "share.frameTitle": "{site} — {title}",
56
57
  "share.layout": "Layout",
57
58
  "share.embed": "Embed in another page",
58
59
  "share.embedHint": "Drops the site header and its navigation, so the page sits inside a page of your own.",
@@ -104,6 +105,12 @@
104
105
  "clipboard.copyThe": "Copy the {what}",
105
106
  "clipboard.copyValue": "Copy {value}",
106
107
  "clipboard.copyToClipboard": "Copy to clipboard",
108
+ "card.details": "Details",
109
+ "card.detailsTitle": "Open in a new tab",
110
+ "card.detailsLabel": "Details: open in a new tab",
111
+ "card.copyTable": "Copy as table",
112
+ "card.copyTableTitle": "Copy the table, to paste into a spreadsheet",
113
+ "card.copyPicture": "Copy or save the picture",
107
114
  "about.providedBy": "Provided by",
108
115
  "about.whatYouCanDo": "What you can do here",
109
116
  "about.builtOn": "Built on",
@@ -245,6 +252,35 @@
245
252
  "pedagogy.previous": "Previous",
246
253
  "pedagogy.next": "Next",
247
254
  "pedagogy.stepOf": "Step {step} of {total}",
255
+ "pedagogy.answerEmpty": "Type {what}.",
256
+ "pedagogy.answerUnreadable": "“{typed}” is not {what}.",
257
+ "pedagogy.questions": "Questions",
258
+ "pedagogy.questionsInSeries": "Questions in a series",
259
+ "pedagogy.questionCount": "{count} questions",
260
+ "pedagogy.allQuestions": "All {count} questions",
261
+ "pedagogy.newSeries": "New series",
262
+ "pedagogy.newSeriesTitle": "Draw another series; the link on screen changes with it",
263
+ "pedagogy.seriesQuestions": "Questions of the series",
264
+ "pedagogy.questionNumber": "Question {number}",
265
+ "pedagogy.questionOf": "Question {number} of {total}",
266
+ "pedagogy.solved": "Solved",
267
+ "pedagogy.solvedWithHintsOf": "With {revealed} of {total} hints.",
268
+ "pedagogy.solvedWithoutHint": "Without a hint.",
269
+ "pedagogy.nextQuestion": "Next question",
270
+ "pedagogy.solution": "Solution",
271
+ "pedagogy.exercises": "Exercises",
272
+ "pedagogy.statusIdle": "not started",
273
+ "pedagogy.statusAttempted": "handed in, not right yet",
274
+ "pedagogy.statusSolved": "right",
275
+ "pedagogy.solvedWithOneHint": "Solved with 1 hint",
276
+ "pedagogy.solvedWithHints": "Solved with {count} hints",
277
+ "formula.copyLabel": "formula",
278
+ "formula.typeFirst": "Type a formula first.",
279
+ "formula.notElement": "“{symbol}” is not an element symbol.",
280
+ "formula.noAtom": "“{formula}” holds no atom.",
281
+ "formula.wholeCounts": "“{formula}” gives an atom a count of {count}; counts are whole numbers.",
282
+ "formula.unknownNotation": "“{formula}” uses a notation this tool does not count.",
283
+ "formula.unreadable": "“{formula}” is not a formula this tool can read ({reason}).",
248
284
  "slides.exit": "Exit",
249
285
  "slides.previousSlide": "Previous slide",
250
286
  "slides.nextSlide": "Next slide",
@@ -402,6 +438,7 @@
402
438
  "structure.tool.unavailable": "Not available in this editor.",
403
439
  "structure.loadingEditor": "Loading the editor…",
404
440
  "structure.export.open": "Export the structure",
441
+ "structure.export.glyph": "Copy or save the structure: SMILES, molfile",
405
442
  "structure.export.title": "Export the structure",
406
443
  "structure.export.loading": "Reading the structure…",
407
444
  "structure.export.nothing": "Nothing is drawn yet.",
@@ -53,6 +53,7 @@
53
53
  "share.button": "Compartir",
54
54
  "share.buttonTitle": "Compartir un enlace a esta página, o incrustarla en su propio sitio",
55
55
  "share.dialogTitleFor": "Compartir o incrustar — {title}",
56
+ "share.frameTitle": "{site} — {title}",
56
57
  "share.layout": "Disposición",
57
58
  "share.embed": "Incrustar en otra página",
58
59
  "share.embedHint": "Quita la cabecera del sitio y su navegación, para que la página quede dentro de una página suya.",
@@ -104,6 +105,12 @@
104
105
  "clipboard.copyThe": "Copiar {what}",
105
106
  "clipboard.copyValue": "Copiar {value}",
106
107
  "clipboard.copyToClipboard": "Copiar al portapapeles",
108
+ "card.details": "Detalles",
109
+ "card.detailsTitle": "Abrir en una pestaña nueva",
110
+ "card.detailsLabel": "Detalles: abrir en una pestaña nueva",
111
+ "card.copyTable": "Copiar como tabla",
112
+ "card.copyTableTitle": "Copiar la tabla, para pegarla en una hoja de cálculo",
113
+ "card.copyPicture": "Copiar o guardar la imagen",
107
114
  "about.providedBy": "Ofrecido por",
108
115
  "about.whatYouCanDo": "Lo que puede hacer aquí",
109
116
  "about.builtOn": "Construido sobre",
@@ -245,6 +252,35 @@
245
252
  "pedagogy.previous": "Anterior",
246
253
  "pedagogy.next": "Siguiente",
247
254
  "pedagogy.stepOf": "Paso {step} de {total}",
255
+ "pedagogy.answerEmpty": "Escriba {what}.",
256
+ "pedagogy.answerUnreadable": "«{typed}» no es {what}.",
257
+ "pedagogy.questions": "Preguntas",
258
+ "pedagogy.questionsInSeries": "Preguntas por serie",
259
+ "pedagogy.questionCount": "{count} preguntas",
260
+ "pedagogy.allQuestions": "Las {count} preguntas",
261
+ "pedagogy.newSeries": "Nueva serie",
262
+ "pedagogy.newSeriesTitle": "Sacar otra serie; el enlace en pantalla cambia con ella",
263
+ "pedagogy.seriesQuestions": "Preguntas de la serie",
264
+ "pedagogy.questionNumber": "Pregunta {number}",
265
+ "pedagogy.questionOf": "Pregunta {number} de {total}",
266
+ "pedagogy.solved": "Resuelta",
267
+ "pedagogy.solvedWithHintsOf": "Pistas abiertas: {revealed} de {total}.",
268
+ "pedagogy.solvedWithoutHint": "Sin pistas.",
269
+ "pedagogy.nextQuestion": "Pregunta siguiente",
270
+ "pedagogy.solution": "Solución",
271
+ "pedagogy.exercises": "Ejercicios",
272
+ "pedagogy.statusIdle": "sin empezar",
273
+ "pedagogy.statusAttempted": "entregada, aún no correcta",
274
+ "pedagogy.statusSolved": "correcta",
275
+ "pedagogy.solvedWithOneHint": "Resuelta con 1 pista",
276
+ "pedagogy.solvedWithHints": "Resuelta con {count} pistas",
277
+ "formula.copyLabel": "fórmula",
278
+ "formula.typeFirst": "Escriba primero una fórmula.",
279
+ "formula.notElement": "«{symbol}» no es el símbolo de un elemento.",
280
+ "formula.noAtom": "«{formula}» no contiene ningún átomo.",
281
+ "formula.wholeCounts": "«{formula}» da a un átomo la cantidad {count}; las cantidades son números enteros.",
282
+ "formula.unknownNotation": "«{formula}» usa una notación que esta herramienta no cuenta.",
283
+ "formula.unreadable": "«{formula}» no es una fórmula que esta herramienta sepa leer ({reason}).",
248
284
  "slides.exit": "Salir",
249
285
  "slides.previousSlide": "Diapositiva anterior",
250
286
  "slides.nextSlide": "Diapositiva siguiente",
@@ -458,6 +494,7 @@
458
494
  "structure.tool.unavailable": "No disponible en este editor.",
459
495
  "structure.loadingEditor": "Cargando el editor…",
460
496
  "structure.export.open": "Exportar la estructura",
497
+ "structure.export.glyph": "Copiar o guardar la estructura: SMILES, molfile",
461
498
  "structure.export.title": "Exportar la estructura",
462
499
  "structure.export.loading": "Leyendo la estructura…",
463
500
  "structure.export.nothing": "Todavía no hay nada dibujado.",
@@ -53,6 +53,7 @@
53
53
  "share.button": "Partager",
54
54
  "share.buttonTitle": "Partager un lien vers cette page, ou l'intégrer à votre propre site",
55
55
  "share.dialogTitleFor": "Partager ou intégrer — {title}",
56
+ "share.frameTitle": "{site} — {title}",
56
57
  "share.layout": "Disposition",
57
58
  "share.embed": "Intégrer dans une autre page",
58
59
  "share.embedHint": "Retire l'en-tête du site et sa navigation, pour que la page prenne place dans une page à vous.",
@@ -104,6 +105,12 @@
104
105
  "clipboard.copyThe": "Copier {what}",
105
106
  "clipboard.copyValue": "Copier {value}",
106
107
  "clipboard.copyToClipboard": "Copier dans le presse-papiers",
108
+ "card.details": "Détails",
109
+ "card.detailsTitle": "Ouvrir dans un nouvel onglet",
110
+ "card.detailsLabel": "Détails : ouvrir dans un nouvel onglet",
111
+ "card.copyTable": "Copier en tableau",
112
+ "card.copyTableTitle": "Copier le tableau, à coller dans un tableur",
113
+ "card.copyPicture": "Copier ou enregistrer l’image",
107
114
  "about.providedBy": "Proposé par",
108
115
  "about.whatYouCanDo": "Ce que vous pouvez faire ici",
109
116
  "about.builtOn": "Construit sur",
@@ -245,6 +252,35 @@
245
252
  "pedagogy.previous": "Précédent",
246
253
  "pedagogy.next": "Suivant",
247
254
  "pedagogy.stepOf": "Étape {step} sur {total}",
255
+ "pedagogy.answerEmpty": "Tapez {what}.",
256
+ "pedagogy.answerUnreadable": "« {typed} » n’est pas {what}.",
257
+ "pedagogy.questions": "Questions",
258
+ "pedagogy.questionsInSeries": "Questions dans une série",
259
+ "pedagogy.questionCount": "{count} questions",
260
+ "pedagogy.allQuestions": "Les {count} questions",
261
+ "pedagogy.newSeries": "Nouvelle série",
262
+ "pedagogy.newSeriesTitle": "Tirer une autre série ; le lien affiché change avec elle",
263
+ "pedagogy.seriesQuestions": "Questions de la série",
264
+ "pedagogy.questionNumber": "Question {number}",
265
+ "pedagogy.questionOf": "Question {number} sur {total}",
266
+ "pedagogy.solved": "Résolu",
267
+ "pedagogy.solvedWithHintsOf": "Indices ouverts : {revealed} sur {total}.",
268
+ "pedagogy.solvedWithoutHint": "Sans indice.",
269
+ "pedagogy.nextQuestion": "Question suivante",
270
+ "pedagogy.solution": "Solution",
271
+ "pedagogy.exercises": "Exercices",
272
+ "pedagogy.statusIdle": "pas commencé",
273
+ "pedagogy.statusAttempted": "rendu, pas encore juste",
274
+ "pedagogy.statusSolved": "juste",
275
+ "pedagogy.solvedWithOneHint": "Résolu avec 1 indice",
276
+ "pedagogy.solvedWithHints": "Résolu avec {count} indices",
277
+ "formula.copyLabel": "formule",
278
+ "formula.typeFirst": "Tapez d’abord une formule.",
279
+ "formula.notElement": "« {symbol} » n’est pas un symbole d’élément.",
280
+ "formula.noAtom": "« {formula} » ne contient aucun atome.",
281
+ "formula.wholeCounts": "« {formula} » compte {count} pour un atome ; un nombre d’atomes est entier.",
282
+ "formula.unknownNotation": "« {formula} » utilise une notation que cet outil ne compte pas.",
283
+ "formula.unreadable": "« {formula} » n’est pas une formule que cet outil sait lire ({reason}).",
248
284
  "slides.exit": "Quitter",
249
285
  "slides.previousSlide": "Diapositive précédente",
250
286
  "slides.nextSlide": "Diapositive suivante",
@@ -458,6 +494,7 @@
458
494
  "structure.tool.unavailable": "Indisponible dans cet éditeur.",
459
495
  "structure.loadingEditor": "Chargement de l'éditeur…",
460
496
  "structure.export.open": "Exporter la structure",
497
+ "structure.export.glyph": "Copier ou enregistrer la structure : SMILES, molfile",
461
498
  "structure.export.title": "Exporter la structure",
462
499
  "structure.export.loading": "Lecture de la structure…",
463
500
  "structure.export.nothing": "Rien n'est encore dessiné.",
@@ -53,6 +53,7 @@
53
53
  "share.button": "Condividi",
54
54
  "share.buttonTitle": "Condividere un link a questa pagina, o incorporarla nel proprio sito",
55
55
  "share.dialogTitleFor": "Condividere o incorporare — {title}",
56
+ "share.frameTitle": "{site} — {title}",
56
57
  "share.layout": "Disposizione",
57
58
  "share.embed": "Incorporare in un'altra pagina",
58
59
  "share.embedHint": "Toglie l'intestazione del sito e la sua navigazione, così la pagina sta dentro una pagina propria.",
@@ -104,6 +105,12 @@
104
105
  "clipboard.copyThe": "Copia {what}",
105
106
  "clipboard.copyValue": "Copia {value}",
106
107
  "clipboard.copyToClipboard": "Copia negli appunti",
108
+ "card.details": "Dettagli",
109
+ "card.detailsTitle": "Apri in una nuova scheda",
110
+ "card.detailsLabel": "Dettagli: apri in una nuova scheda",
111
+ "card.copyTable": "Copia come tabella",
112
+ "card.copyTableTitle": "Copia la tabella, da incollare in un foglio di calcolo",
113
+ "card.copyPicture": "Copia o salva l’immagine",
107
114
  "about.providedBy": "Offerto da",
108
115
  "about.whatYouCanDo": "Cosa si può fare qui",
109
116
  "about.builtOn": "Costruito su",
@@ -245,6 +252,35 @@
245
252
  "pedagogy.previous": "Precedente",
246
253
  "pedagogy.next": "Successivo",
247
254
  "pedagogy.stepOf": "Passo {step} di {total}",
255
+ "pedagogy.answerEmpty": "Scrivi {what}.",
256
+ "pedagogy.answerUnreadable": "«{typed}» non è {what}.",
257
+ "pedagogy.questions": "Domande",
258
+ "pedagogy.questionsInSeries": "Domande per serie",
259
+ "pedagogy.questionCount": "{count} domande",
260
+ "pedagogy.allQuestions": "Tutte le {count} domande",
261
+ "pedagogy.newSeries": "Nuova serie",
262
+ "pedagogy.newSeriesTitle": "Estrai un’altra serie; il link sullo schermo cambia con essa",
263
+ "pedagogy.seriesQuestions": "Domande della serie",
264
+ "pedagogy.questionNumber": "Domanda {number}",
265
+ "pedagogy.questionOf": "Domanda {number} di {total}",
266
+ "pedagogy.solved": "Risolta",
267
+ "pedagogy.solvedWithHintsOf": "Suggerimenti aperti: {revealed} su {total}.",
268
+ "pedagogy.solvedWithoutHint": "Senza suggerimenti.",
269
+ "pedagogy.nextQuestion": "Domanda successiva",
270
+ "pedagogy.solution": "Soluzione",
271
+ "pedagogy.exercises": "Esercizi",
272
+ "pedagogy.statusIdle": "non iniziata",
273
+ "pedagogy.statusAttempted": "consegnata, non ancora giusta",
274
+ "pedagogy.statusSolved": "giusta",
275
+ "pedagogy.solvedWithOneHint": "Risolta con 1 suggerimento",
276
+ "pedagogy.solvedWithHints": "Risolta con {count} suggerimenti",
277
+ "formula.copyLabel": "formula",
278
+ "formula.typeFirst": "Scrivi prima una formula.",
279
+ "formula.notElement": "«{symbol}» non è il simbolo di un elemento.",
280
+ "formula.noAtom": "«{formula}» non contiene alcun atomo.",
281
+ "formula.wholeCounts": "«{formula}» dà a un atomo il numero {count}; i numeri di atomi sono interi.",
282
+ "formula.unknownNotation": "«{formula}» usa una notazione che questo strumento non conta.",
283
+ "formula.unreadable": "«{formula}» non è una formula che questo strumento sa leggere ({reason}).",
248
284
  "slides.exit": "Esci",
249
285
  "slides.previousSlide": "Diapositiva precedente",
250
286
  "slides.nextSlide": "Diapositiva successiva",
@@ -402,6 +438,7 @@
402
438
  "structure.tool.unavailable": "Non disponibile in questo editor.",
403
439
  "structure.loadingEditor": "Caricamento dell'editor…",
404
440
  "structure.export.open": "Esporta la struttura",
441
+ "structure.export.glyph": "Copia o salva la struttura: SMILES, molfile",
405
442
  "structure.export.title": "Esporta la struttura",
406
443
  "structure.export.loading": "Lettura della struttura…",
407
444
  "structure.export.nothing": "Non c'è ancora nulla di disegnato.",
@@ -0,0 +1,19 @@
1
+ export { createMoleculesClient } from './moleculesClient.ts';
2
+ export type {
3
+ MoleculesClient,
4
+ MoleculesClientOptions,
5
+ } from './moleculesClientApi.ts';
6
+ export { MoleculesError } from './moleculesClientApi.ts';
7
+ export type {
8
+ ImportStarted,
9
+ ImportState,
10
+ LookupResponse,
11
+ LookupResult,
12
+ MoleculeInfo,
13
+ MoleculeInput,
14
+ PurgeResponse,
15
+ RetryDetails,
16
+ SubmitResponse,
17
+ SubmitResult,
18
+ SubmitSummary,
19
+ } from './moleculesTypes.ts';