react-cheminfo 0.2.0 → 0.4.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 (882) hide show
  1. package/README.md +139 -10
  2. package/lib/capsule/ui/CapsuleFilter.d.ts +61 -0
  3. package/lib/capsule/ui/CapsuleFilter.d.ts.map +1 -0
  4. package/lib/capsule/ui/CapsuleFilter.js +33 -0
  5. package/lib/capsule/ui/CapsuleFilter.js.map +1 -0
  6. package/lib/capsule/ui/index.d.ts +3 -0
  7. package/lib/capsule/ui/index.d.ts.map +1 -0
  8. package/lib/capsule/ui/index.js +2 -0
  9. package/lib/capsule/ui/index.js.map +1 -0
  10. package/lib/chrome/ui/NavLink.d.ts +27 -0
  11. package/lib/chrome/ui/NavLink.d.ts.map +1 -0
  12. package/lib/chrome/ui/NavLink.js +36 -0
  13. package/lib/chrome/ui/NavLink.js.map +1 -0
  14. package/lib/chrome/ui/NavMenuButton.d.ts +40 -0
  15. package/lib/chrome/ui/NavMenuButton.d.ts.map +1 -0
  16. package/lib/chrome/ui/NavMenuButton.js +26 -0
  17. package/lib/chrome/ui/NavMenuButton.js.map +1 -0
  18. package/lib/chrome/ui/SiteFooter.d.ts +39 -0
  19. package/lib/chrome/ui/SiteFooter.d.ts.map +1 -0
  20. package/lib/chrome/ui/SiteFooter.js +17 -0
  21. package/lib/chrome/ui/SiteFooter.js.map +1 -0
  22. package/lib/chrome/ui/SiteHeader.d.ts +59 -0
  23. package/lib/chrome/ui/SiteHeader.d.ts.map +1 -0
  24. package/lib/chrome/ui/SiteHeader.js +28 -0
  25. package/lib/chrome/ui/SiteHeader.js.map +1 -0
  26. package/lib/chrome/ui/index.d.ts +12 -0
  27. package/lib/chrome/ui/index.d.ts.map +1 -0
  28. package/lib/chrome/ui/index.js +6 -0
  29. package/lib/chrome/ui/index.js.map +1 -0
  30. package/lib/chrome/ui/navItem.d.ts +57 -0
  31. package/lib/chrome/ui/navItem.d.ts.map +1 -0
  32. package/lib/chrome/ui/navItem.js +10 -0
  33. package/lib/chrome/ui/navItem.js.map +1 -0
  34. package/lib/chrome/ui/useCompactHeader.d.ts +31 -0
  35. package/lib/chrome/ui/useCompactHeader.d.ts.map +1 -0
  36. package/lib/chrome/ui/useCompactHeader.js +50 -0
  37. package/lib/chrome/ui/useCompactHeader.js.map +1 -0
  38. package/lib/citation/core/clipboard.d.ts +12 -3
  39. package/lib/citation/core/clipboard.d.ts.map +1 -1
  40. package/lib/citation/core/clipboard.js +21 -10
  41. package/lib/citation/core/clipboard.js.map +1 -1
  42. package/lib/citation/core/download.d.ts +11 -3
  43. package/lib/citation/core/download.d.ts.map +1 -1
  44. package/lib/citation/core/download.js +17 -13
  45. package/lib/citation/core/download.js.map +1 -1
  46. package/lib/citation/core/index.d.ts +4 -3
  47. package/lib/citation/core/index.d.ts.map +1 -1
  48. package/lib/citation/core/index.js +3 -3
  49. package/lib/citation/core/index.js.map +1 -1
  50. package/lib/citation/core/works.d.ts +44 -0
  51. package/lib/citation/core/works.d.ts.map +1 -0
  52. package/lib/citation/core/works.js +51 -0
  53. package/lib/citation/core/works.js.map +1 -0
  54. package/lib/citation/ui/CitationMenu.d.ts +20 -3
  55. package/lib/citation/ui/CitationMenu.d.ts.map +1 -1
  56. package/lib/citation/ui/CitationMenu.js +60 -49
  57. package/lib/citation/ui/CitationMenu.js.map +1 -1
  58. package/lib/citation/ui/CitationPreview.d.ts +5 -2
  59. package/lib/citation/ui/CitationPreview.d.ts.map +1 -1
  60. package/lib/citation/ui/CitationPreview.js +9 -4
  61. package/lib/citation/ui/CitationPreview.js.map +1 -1
  62. package/lib/citation/ui/CiteButton.d.ts +13 -6
  63. package/lib/citation/ui/CiteButton.d.ts.map +1 -1
  64. package/lib/citation/ui/CiteButton.js +5 -4
  65. package/lib/citation/ui/CiteButton.js.map +1 -1
  66. package/lib/citation/ui/CopyFormatEntries.d.ts +31 -0
  67. package/lib/citation/ui/CopyFormatEntries.d.ts.map +1 -0
  68. package/lib/citation/ui/CopyFormatEntries.js +29 -0
  69. package/lib/citation/ui/CopyFormatEntries.js.map +1 -0
  70. package/lib/citation/ui/WorkEntry.d.ts +18 -0
  71. package/lib/citation/ui/WorkEntry.d.ts.map +1 -0
  72. package/lib/citation/ui/WorkEntry.js +32 -0
  73. package/lib/citation/ui/WorkEntry.js.map +1 -0
  74. package/lib/citation/ui/entries.d.ts +7 -7
  75. package/lib/citation/ui/entries.d.ts.map +1 -1
  76. package/lib/citation/ui/entries.js +11 -13
  77. package/lib/citation/ui/entries.js.map +1 -1
  78. package/lib/citation/ui/index.d.ts +2 -2
  79. package/lib/citation/ui/index.d.ts.map +1 -1
  80. package/lib/citation/ui/index.js.map +1 -1
  81. package/lib/citation/ui/useCopyFeedback.d.ts +20 -0
  82. package/lib/citation/ui/useCopyFeedback.d.ts.map +1 -0
  83. package/lib/citation/ui/useCopyFeedback.js +49 -0
  84. package/lib/citation/ui/useCopyFeedback.js.map +1 -0
  85. package/lib/clipboard/core/index.d.ts +2 -0
  86. package/lib/clipboard/core/index.d.ts.map +1 -0
  87. package/lib/clipboard/core/index.js +2 -0
  88. package/lib/clipboard/core/index.js.map +1 -0
  89. package/lib/clipboard/core/writeToClipboard.d.ts +12 -0
  90. package/lib/clipboard/core/writeToClipboard.d.ts.map +1 -0
  91. package/lib/clipboard/core/writeToClipboard.js +49 -0
  92. package/lib/clipboard/core/writeToClipboard.js.map +1 -0
  93. package/lib/clipboard/ui/CodeBlock.d.ts +43 -0
  94. package/lib/clipboard/ui/CodeBlock.d.ts.map +1 -0
  95. package/lib/clipboard/ui/CodeBlock.js +49 -0
  96. package/lib/clipboard/ui/CodeBlock.js.map +1 -0
  97. package/lib/clipboard/ui/CopyButton.d.ts +64 -0
  98. package/lib/clipboard/ui/CopyButton.d.ts.map +1 -0
  99. package/lib/clipboard/ui/CopyButton.js +21 -0
  100. package/lib/clipboard/ui/CopyButton.js.map +1 -0
  101. package/lib/clipboard/ui/index.d.ts +7 -0
  102. package/lib/clipboard/ui/index.d.ts.map +1 -0
  103. package/lib/clipboard/ui/index.js +4 -0
  104. package/lib/clipboard/ui/index.js.map +1 -0
  105. package/lib/clipboard/ui/useCopyToClipboard.d.ts +24 -0
  106. package/lib/clipboard/ui/useCopyToClipboard.d.ts.map +1 -0
  107. package/lib/clipboard/ui/useCopyToClipboard.js +36 -0
  108. package/lib/clipboard/ui/useCopyToClipboard.js.map +1 -0
  109. package/lib/color/core/contrast.d.ts +43 -0
  110. package/lib/color/core/contrast.d.ts.map +1 -0
  111. package/lib/color/core/contrast.js +61 -0
  112. package/lib/color/core/contrast.js.map +1 -0
  113. package/lib/color/core/hex.d.ts +26 -0
  114. package/lib/color/core/hex.d.ts.map +1 -0
  115. package/lib/color/core/hex.js +44 -0
  116. package/lib/color/core/hex.js.map +1 -0
  117. package/lib/color/core/index.d.ts +5 -0
  118. package/lib/color/core/index.d.ts.map +1 -0
  119. package/lib/color/core/index.js +3 -0
  120. package/lib/color/core/index.js.map +1 -0
  121. package/lib/color/core/scale.d.ts +52 -0
  122. package/lib/color/core/scale.d.ts.map +1 -0
  123. package/lib/color/core/scale.js +96 -0
  124. package/lib/color/core/scale.js.map +1 -0
  125. package/lib/color/ui/ColorScaleLegend.d.ts +38 -0
  126. package/lib/color/ui/ColorScaleLegend.d.ts.map +1 -0
  127. package/lib/color/ui/ColorScaleLegend.js +68 -0
  128. package/lib/color/ui/ColorScaleLegend.js.map +1 -0
  129. package/lib/color/ui/index.d.ts +3 -0
  130. package/lib/color/ui/index.d.ts.map +1 -0
  131. package/lib/color/ui/index.js +2 -0
  132. package/lib/color/ui/index.js.map +1 -0
  133. package/lib/core.d.ts +12 -0
  134. package/lib/core.d.ts.map +1 -1
  135. package/lib/core.js +12 -0
  136. package/lib/core.js.map +1 -1
  137. package/lib/credits/core/credits.d.ts +144 -0
  138. package/lib/credits/core/credits.d.ts.map +1 -0
  139. package/lib/credits/core/credits.js +156 -0
  140. package/lib/credits/core/credits.js.map +1 -0
  141. package/lib/credits/core/index.d.ts +3 -0
  142. package/lib/credits/core/index.d.ts.map +1 -0
  143. package/lib/credits/core/index.js +2 -0
  144. package/lib/credits/core/index.js.map +1 -0
  145. package/lib/credits/ui/CreditsList.d.ts +29 -0
  146. package/lib/credits/ui/CreditsList.d.ts.map +1 -0
  147. package/lib/credits/ui/CreditsList.js +33 -0
  148. package/lib/credits/ui/CreditsList.js.map +1 -0
  149. package/lib/credits/ui/index.d.ts +3 -0
  150. package/lib/credits/ui/index.d.ts.map +1 -0
  151. package/lib/credits/ui/index.js +2 -0
  152. package/lib/credits/ui/index.js.map +1 -0
  153. package/lib/delimited/core/delimiters.d.ts +31 -0
  154. package/lib/delimited/core/delimiters.d.ts.map +1 -0
  155. package/lib/delimited/core/delimiters.js +46 -0
  156. package/lib/delimited/core/delimiters.js.map +1 -0
  157. package/lib/delimited/core/index.d.ts +9 -0
  158. package/lib/delimited/core/index.d.ts.map +1 -0
  159. package/lib/delimited/core/index.js +5 -0
  160. package/lib/delimited/core/index.js.map +1 -0
  161. package/lib/delimited/core/readDelimited.d.ts +32 -0
  162. package/lib/delimited/core/readDelimited.d.ts.map +1 -0
  163. package/lib/delimited/core/readDelimited.js +122 -0
  164. package/lib/delimited/core/readDelimited.js.map +1 -0
  165. package/lib/delimited/core/rowsToDelimited.d.ts +59 -0
  166. package/lib/delimited/core/rowsToDelimited.d.ts.map +1 -0
  167. package/lib/delimited/core/rowsToDelimited.js +87 -0
  168. package/lib/delimited/core/rowsToDelimited.js.map +1 -0
  169. package/lib/delimited/core/toDelimited.d.ts +38 -0
  170. package/lib/delimited/core/toDelimited.d.ts.map +1 -0
  171. package/lib/delimited/core/toDelimited.js +45 -0
  172. package/lib/delimited/core/toDelimited.js.map +1 -0
  173. package/lib/delimited/ui/DelimitedTextDialog.d.ts +22 -0
  174. package/lib/delimited/ui/DelimitedTextDialog.d.ts.map +1 -0
  175. package/lib/delimited/ui/DelimitedTextDialog.js +17 -0
  176. package/lib/delimited/ui/DelimitedTextDialog.js.map +1 -0
  177. package/lib/delimited/ui/DelimitedTextPanel.d.ts +56 -0
  178. package/lib/delimited/ui/DelimitedTextPanel.d.ts.map +1 -0
  179. package/lib/delimited/ui/DelimitedTextPanel.js +55 -0
  180. package/lib/delimited/ui/DelimitedTextPanel.js.map +1 -0
  181. package/lib/delimited/ui/index.d.ts +5 -0
  182. package/lib/delimited/ui/index.d.ts.map +1 -0
  183. package/lib/delimited/ui/index.js +3 -0
  184. package/lib/delimited/ui/index.js.map +1 -0
  185. package/lib/disclosure/ui/CollapsibleSection.d.ts +57 -0
  186. package/lib/disclosure/ui/CollapsibleSection.d.ts.map +1 -0
  187. package/lib/disclosure/ui/CollapsibleSection.js +60 -0
  188. package/lib/disclosure/ui/CollapsibleSection.js.map +1 -0
  189. package/lib/disclosure/ui/index.d.ts +5 -0
  190. package/lib/disclosure/ui/index.d.ts.map +1 -0
  191. package/lib/disclosure/ui/index.js +3 -0
  192. package/lib/disclosure/ui/index.js.map +1 -0
  193. package/lib/disclosure/ui/useDisclosure.d.ts +22 -0
  194. package/lib/disclosure/ui/useDisclosure.d.ts.map +1 -0
  195. package/lib/disclosure/ui/useDisclosure.js +18 -0
  196. package/lib/disclosure/ui/useDisclosure.js.map +1 -0
  197. package/lib/download/core/downloadBlob.d.ts +10 -0
  198. package/lib/download/core/downloadBlob.d.ts.map +1 -0
  199. package/lib/download/core/downloadBlob.js +20 -0
  200. package/lib/download/core/downloadBlob.js.map +1 -0
  201. package/lib/download/core/downloadText.d.ts +9 -0
  202. package/lib/download/core/downloadText.d.ts.map +1 -0
  203. package/lib/download/core/downloadText.js +14 -0
  204. package/lib/download/core/downloadText.js.map +1 -0
  205. package/lib/download/core/index.d.ts +4 -0
  206. package/lib/download/core/index.d.ts.map +1 -0
  207. package/lib/download/core/index.js +4 -0
  208. package/lib/download/core/index.js.map +1 -0
  209. package/lib/download/core/sanitizeFileName.d.ts +15 -0
  210. package/lib/download/core/sanitizeFileName.d.ts.map +1 -0
  211. package/lib/download/core/sanitizeFileName.js +33 -0
  212. package/lib/download/core/sanitizeFileName.js.map +1 -0
  213. package/lib/ecosystem/core/index.d.ts +3 -0
  214. package/lib/ecosystem/core/index.d.ts.map +1 -1
  215. package/lib/ecosystem/core/index.js +3 -0
  216. package/lib/ecosystem/core/index.js.map +1 -1
  217. package/lib/ecosystem/core/links.d.ts +11 -0
  218. package/lib/ecosystem/core/links.d.ts.map +1 -0
  219. package/lib/ecosystem/core/links.js +28 -0
  220. package/lib/ecosystem/core/links.js.map +1 -0
  221. package/lib/ecosystem/core/lookup.d.ts +21 -0
  222. package/lib/ecosystem/core/lookup.d.ts.map +1 -0
  223. package/lib/ecosystem/core/lookup.js +40 -0
  224. package/lib/ecosystem/core/lookup.js.map +1 -0
  225. package/lib/ecosystem/core/sites.d.ts +3 -1
  226. package/lib/ecosystem/core/sites.d.ts.map +1 -1
  227. package/lib/ecosystem/core/sites.js +33 -0
  228. package/lib/ecosystem/core/sites.js.map +1 -1
  229. package/lib/ecosystem/core/tokens.d.ts +21 -0
  230. package/lib/ecosystem/core/tokens.d.ts.map +1 -0
  231. package/lib/ecosystem/core/tokens.js +42 -0
  232. package/lib/ecosystem/core/tokens.js.map +1 -0
  233. package/lib/ecosystem/ui/SiteTheme.d.ts +18 -0
  234. package/lib/ecosystem/ui/SiteTheme.d.ts.map +1 -0
  235. package/lib/ecosystem/ui/SiteTheme.js +16 -0
  236. package/lib/ecosystem/ui/SiteTheme.js.map +1 -0
  237. package/lib/ecosystem/ui/Wordmark.d.ts +30 -0
  238. package/lib/ecosystem/ui/Wordmark.d.ts.map +1 -0
  239. package/lib/ecosystem/ui/Wordmark.js +26 -0
  240. package/lib/ecosystem/ui/Wordmark.js.map +1 -0
  241. package/lib/ecosystem/ui/glyphs.d.ts +16 -0
  242. package/lib/ecosystem/ui/glyphs.d.ts.map +1 -0
  243. package/lib/ecosystem/ui/glyphs.js +41 -0
  244. package/lib/ecosystem/ui/glyphs.js.map +1 -0
  245. package/lib/ecosystem/ui/index.d.ts +4 -0
  246. package/lib/ecosystem/ui/index.d.ts.map +1 -1
  247. package/lib/ecosystem/ui/index.js +2 -0
  248. package/lib/ecosystem/ui/index.js.map +1 -1
  249. package/lib/ecosystem/ui/marks.d.ts +30 -4
  250. package/lib/ecosystem/ui/marks.d.ts.map +1 -1
  251. package/lib/ecosystem/ui/marks.js +15 -36
  252. package/lib/ecosystem/ui/marks.js.map +1 -1
  253. package/lib/error/ui/ErrorBoundary.d.ts +60 -0
  254. package/lib/error/ui/ErrorBoundary.d.ts.map +1 -0
  255. package/lib/error/ui/ErrorBoundary.js +59 -0
  256. package/lib/error/ui/ErrorBoundary.js.map +1 -0
  257. package/lib/error/ui/ErrorFallback.d.ts +38 -0
  258. package/lib/error/ui/ErrorFallback.d.ts.map +1 -0
  259. package/lib/error/ui/ErrorFallback.js +16 -0
  260. package/lib/error/ui/ErrorFallback.js.map +1 -0
  261. package/lib/error/ui/index.d.ts +5 -0
  262. package/lib/error/ui/index.d.ts.map +1 -0
  263. package/lib/error/ui/index.js +3 -0
  264. package/lib/error/ui/index.js.map +1 -0
  265. package/lib/error/ui/toError.d.ts +11 -0
  266. package/lib/error/ui/toError.d.ts.map +1 -0
  267. package/lib/error/ui/toError.js +35 -0
  268. package/lib/error/ui/toError.js.map +1 -0
  269. package/lib/format/core/index.d.ts +5 -0
  270. package/lib/format/core/index.d.ts.map +1 -0
  271. package/lib/format/core/index.js +5 -0
  272. package/lib/format/core/index.js.map +1 -0
  273. package/lib/format/core/missing.d.ts +7 -0
  274. package/lib/format/core/missing.d.ts.map +1 -0
  275. package/lib/format/core/missing.js +7 -0
  276. package/lib/format/core/missing.js.map +1 -0
  277. package/lib/format/core/numbers.d.ts +40 -0
  278. package/lib/format/core/numbers.d.ts.map +1 -0
  279. package/lib/format/core/numbers.js +81 -0
  280. package/lib/format/core/numbers.js.map +1 -0
  281. package/lib/format/core/units.d.ts +17 -0
  282. package/lib/format/core/units.d.ts.map +1 -0
  283. package/lib/format/core/units.js +54 -0
  284. package/lib/format/core/units.js.map +1 -0
  285. package/lib/format/core/words.d.ts +12 -0
  286. package/lib/format/core/words.d.ts.map +1 -0
  287. package/lib/format/core/words.js +14 -0
  288. package/lib/format/core/words.js.map +1 -0
  289. package/lib/help/ui/HelpBody.d.ts +57 -0
  290. package/lib/help/ui/HelpBody.d.ts.map +1 -0
  291. package/lib/help/ui/HelpBody.js +44 -0
  292. package/lib/help/ui/HelpBody.js.map +1 -0
  293. package/lib/help/ui/HelpIcon.d.ts +33 -0
  294. package/lib/help/ui/HelpIcon.d.ts.map +1 -0
  295. package/lib/help/ui/HelpIcon.js +16 -0
  296. package/lib/help/ui/HelpIcon.js.map +1 -0
  297. package/lib/help/ui/HelpToolbarButton.d.ts +45 -0
  298. package/lib/help/ui/HelpToolbarButton.d.ts.map +1 -0
  299. package/lib/help/ui/HelpToolbarButton.js +17 -0
  300. package/lib/help/ui/HelpToolbarButton.js.map +1 -0
  301. package/lib/help/ui/HelpTooltip.d.ts +36 -0
  302. package/lib/help/ui/HelpTooltip.d.ts.map +1 -0
  303. package/lib/help/ui/HelpTooltip.js +24 -0
  304. package/lib/help/ui/HelpTooltip.js.map +1 -0
  305. package/lib/help/ui/index.d.ts +9 -0
  306. package/lib/help/ui/index.d.ts.map +1 -0
  307. package/lib/help/ui/index.js +5 -0
  308. package/lib/help/ui/index.js.map +1 -0
  309. package/lib/hooks/ui/index.d.ts +7 -0
  310. package/lib/hooks/ui/index.d.ts.map +1 -0
  311. package/lib/hooks/ui/index.js +5 -0
  312. package/lib/hooks/ui/index.js.map +1 -0
  313. package/lib/hooks/ui/listNavigation.d.ts +54 -0
  314. package/lib/hooks/ui/listNavigation.d.ts.map +1 -0
  315. package/lib/hooks/ui/listNavigation.js +77 -0
  316. package/lib/hooks/ui/listNavigation.js.map +1 -0
  317. package/lib/hooks/ui/useContainerSize.d.ts +15 -0
  318. package/lib/hooks/ui/useContainerSize.d.ts.map +1 -0
  319. package/lib/hooks/ui/useContainerSize.js +24 -0
  320. package/lib/hooks/ui/useContainerSize.js.map +1 -0
  321. package/lib/hooks/ui/useDebouncedValue.d.ts +12 -0
  322. package/lib/hooks/ui/useDebouncedValue.d.ts.map +1 -0
  323. package/lib/hooks/ui/useDebouncedValue.js +24 -0
  324. package/lib/hooks/ui/useDebouncedValue.js.map +1 -0
  325. package/lib/hooks/ui/useListKeyboardNavigation.d.ts +17 -0
  326. package/lib/hooks/ui/useListKeyboardNavigation.d.ts.map +1 -0
  327. package/lib/hooks/ui/useListKeyboardNavigation.js +25 -0
  328. package/lib/hooks/ui/useListKeyboardNavigation.js.map +1 -0
  329. package/lib/hooks/ui/useResizeObserver.d.ts +20 -0
  330. package/lib/hooks/ui/useResizeObserver.d.ts.map +1 -0
  331. package/lib/hooks/ui/useResizeObserver.js +37 -0
  332. package/lib/hooks/ui/useResizeObserver.js.map +1 -0
  333. package/lib/orbital/core/atomicGrid.d.ts +85 -0
  334. package/lib/orbital/core/atomicGrid.d.ts.map +1 -0
  335. package/lib/orbital/core/atomicGrid.js +105 -0
  336. package/lib/orbital/core/atomicGrid.js.map +1 -0
  337. package/lib/orbital/core/atomicOrbitals.d.ts +97 -0
  338. package/lib/orbital/core/atomicOrbitals.d.ts.map +1 -0
  339. package/lib/orbital/core/atomicOrbitals.js +135 -0
  340. package/lib/orbital/core/atomicOrbitals.js.map +1 -0
  341. package/lib/orbital/core/constants.d.ts +33 -0
  342. package/lib/orbital/core/constants.d.ts.map +1 -0
  343. package/lib/orbital/core/constants.js +21 -0
  344. package/lib/orbital/core/constants.js.map +1 -0
  345. package/lib/orbital/core/electronConfiguration.d.ts +106 -0
  346. package/lib/orbital/core/electronConfiguration.d.ts.map +1 -0
  347. package/lib/orbital/core/electronConfiguration.js +207 -0
  348. package/lib/orbital/core/electronConfiguration.js.map +1 -0
  349. package/lib/orbital/core/grid.d.ts +60 -0
  350. package/lib/orbital/core/grid.d.ts.map +1 -0
  351. package/lib/orbital/core/grid.js +81 -0
  352. package/lib/orbital/core/grid.js.map +1 -0
  353. package/lib/orbital/core/hydrogenic.d.ts +99 -0
  354. package/lib/orbital/core/hydrogenic.d.ts.map +1 -0
  355. package/lib/orbital/core/hydrogenic.js +181 -0
  356. package/lib/orbital/core/hydrogenic.js.map +1 -0
  357. package/lib/orbital/core/index.d.ts +24 -0
  358. package/lib/orbital/core/index.d.ts.map +1 -0
  359. package/lib/orbital/core/index.js +13 -0
  360. package/lib/orbital/core/index.js.map +1 -0
  361. package/lib/orbital/core/isovalue.d.ts +60 -0
  362. package/lib/orbital/core/isovalue.d.ts.map +1 -0
  363. package/lib/orbital/core/isovalue.js +128 -0
  364. package/lib/orbital/core/isovalue.js.map +1 -0
  365. package/lib/orbital/core/numerics.d.ts +39 -0
  366. package/lib/orbital/core/numerics.d.ts.map +1 -0
  367. package/lib/orbital/core/numerics.js +75 -0
  368. package/lib/orbital/core/numerics.js.map +1 -0
  369. package/lib/orbital/core/occupancy.d.ts +44 -0
  370. package/lib/orbital/core/occupancy.d.ts.map +1 -0
  371. package/lib/orbital/core/occupancy.js +85 -0
  372. package/lib/orbital/core/occupancy.js.map +1 -0
  373. package/lib/orbital/core/palette.d.ts +36 -0
  374. package/lib/orbital/core/palette.d.ts.map +1 -0
  375. package/lib/orbital/core/palette.js +37 -0
  376. package/lib/orbital/core/palette.js.map +1 -0
  377. package/lib/orbital/core/realHarmonics.d.ts +57 -0
  378. package/lib/orbital/core/realHarmonics.d.ts.map +1 -0
  379. package/lib/orbital/core/realHarmonics.js +144 -0
  380. package/lib/orbital/core/realHarmonics.js.map +1 -0
  381. package/lib/orbital/core/sample.d.ts +66 -0
  382. package/lib/orbital/core/sample.d.ts.map +1 -0
  383. package/lib/orbital/core/sample.js +61 -0
  384. package/lib/orbital/core/sample.js.map +1 -0
  385. package/lib/orbital/core/screening.d.ts +46 -0
  386. package/lib/orbital/core/screening.d.ts.map +1 -0
  387. package/lib/orbital/core/screening.js +72 -0
  388. package/lib/orbital/core/screening.js.map +1 -0
  389. package/lib/orbital/ui/AtomicOrbitalCanvas.d.ts +62 -0
  390. package/lib/orbital/ui/AtomicOrbitalCanvas.d.ts.map +1 -0
  391. package/lib/orbital/ui/AtomicOrbitalCanvas.js +115 -0
  392. package/lib/orbital/ui/AtomicOrbitalCanvas.js.map +1 -0
  393. package/lib/orbital/ui/AtomicOrbitalViewer.d.ts +77 -0
  394. package/lib/orbital/ui/AtomicOrbitalViewer.d.ts.map +1 -0
  395. package/lib/orbital/ui/AtomicOrbitalViewer.js +49 -0
  396. package/lib/orbital/ui/AtomicOrbitalViewer.js.map +1 -0
  397. package/lib/orbital/ui/camera.d.ts +36 -0
  398. package/lib/orbital/ui/camera.d.ts.map +1 -0
  399. package/lib/orbital/ui/camera.js +98 -0
  400. package/lib/orbital/ui/camera.js.map +1 -0
  401. package/lib/orbital/ui/capability.d.ts +28 -0
  402. package/lib/orbital/ui/capability.d.ts.map +1 -0
  403. package/lib/orbital/ui/capability.js +77 -0
  404. package/lib/orbital/ui/capability.js.map +1 -0
  405. package/lib/orbital/ui/index.d.ts +17 -0
  406. package/lib/orbital/ui/index.d.ts.map +1 -0
  407. package/lib/orbital/ui/index.js +13 -0
  408. package/lib/orbital/ui/index.js.map +1 -0
  409. package/lib/orbital/ui/renderVolume.d.ts +60 -0
  410. package/lib/orbital/ui/renderVolume.d.ts.map +1 -0
  411. package/lib/orbital/ui/renderVolume.js +119 -0
  412. package/lib/orbital/ui/renderVolume.js.map +1 -0
  413. package/lib/orbital/ui/viewer.d.ts +88 -0
  414. package/lib/orbital/ui/viewer.d.ts.map +1 -0
  415. package/lib/orbital/ui/viewer.js +156 -0
  416. package/lib/orbital/ui/viewer.js.map +1 -0
  417. package/lib/orbital/ui/volumeField.d.ts +33 -0
  418. package/lib/orbital/ui/volumeField.d.ts.map +1 -0
  419. package/lib/orbital/ui/volumeField.js +68 -0
  420. package/lib/orbital/ui/volumeField.js.map +1 -0
  421. package/lib/orbital.d.ts +11 -0
  422. package/lib/orbital.d.ts.map +1 -0
  423. package/lib/orbital.js +11 -0
  424. package/lib/orbital.js.map +1 -0
  425. package/lib/pedagogy/core/glossary.d.ts +79 -0
  426. package/lib/pedagogy/core/glossary.d.ts.map +1 -0
  427. package/lib/pedagogy/core/glossary.js +71 -0
  428. package/lib/pedagogy/core/glossary.js.map +1 -0
  429. package/lib/pedagogy/core/index.d.ts +8 -0
  430. package/lib/pedagogy/core/index.d.ts.map +1 -0
  431. package/lib/pedagogy/core/index.js +4 -0
  432. package/lib/pedagogy/core/index.js.map +1 -0
  433. package/lib/pedagogy/core/jsonStorage.d.ts +21 -0
  434. package/lib/pedagogy/core/jsonStorage.d.ts.map +1 -0
  435. package/lib/pedagogy/core/jsonStorage.js +55 -0
  436. package/lib/pedagogy/core/jsonStorage.js.map +1 -0
  437. package/lib/pedagogy/core/progress.d.ts +116 -0
  438. package/lib/pedagogy/core/progress.d.ts.map +1 -0
  439. package/lib/pedagogy/core/progress.js +122 -0
  440. package/lib/pedagogy/core/progress.js.map +1 -0
  441. package/lib/pedagogy/core/types.d.ts +74 -0
  442. package/lib/pedagogy/core/types.d.ts.map +1 -0
  443. package/lib/pedagogy/core/types.js +8 -0
  444. package/lib/pedagogy/core/types.js.map +1 -0
  445. package/lib/pedagogy/core/validation.d.ts +79 -0
  446. package/lib/pedagogy/core/validation.d.ts.map +1 -0
  447. package/lib/pedagogy/core/validation.js +47 -0
  448. package/lib/pedagogy/core/validation.js.map +1 -0
  449. package/lib/pedagogy/ui/ExerciseActions.d.ts +74 -0
  450. package/lib/pedagogy/ui/ExerciseActions.d.ts.map +1 -0
  451. package/lib/pedagogy/ui/ExerciseActions.js +22 -0
  452. package/lib/pedagogy/ui/ExerciseActions.js.map +1 -0
  453. package/lib/pedagogy/ui/ExerciseProgressHeader.d.ts +43 -0
  454. package/lib/pedagogy/ui/ExerciseProgressHeader.d.ts.map +1 -0
  455. package/lib/pedagogy/ui/ExerciseProgressHeader.js +43 -0
  456. package/lib/pedagogy/ui/ExerciseProgressHeader.js.map +1 -0
  457. package/lib/pedagogy/ui/ExerciseTags.d.ts +49 -0
  458. package/lib/pedagogy/ui/ExerciseTags.d.ts.map +1 -0
  459. package/lib/pedagogy/ui/ExerciseTags.js +22 -0
  460. package/lib/pedagogy/ui/ExerciseTags.js.map +1 -0
  461. package/lib/pedagogy/ui/GlossaryProvider.d.ts +19 -0
  462. package/lib/pedagogy/ui/GlossaryProvider.d.ts.map +1 -0
  463. package/lib/pedagogy/ui/GlossaryProvider.js +16 -0
  464. package/lib/pedagogy/ui/GlossaryProvider.js.map +1 -0
  465. package/lib/pedagogy/ui/GlossaryText.d.ts +50 -0
  466. package/lib/pedagogy/ui/GlossaryText.d.ts.map +1 -0
  467. package/lib/pedagogy/ui/GlossaryText.js +79 -0
  468. package/lib/pedagogy/ui/GlossaryText.js.map +1 -0
  469. package/lib/pedagogy/ui/HintLadder.d.ts +38 -0
  470. package/lib/pedagogy/ui/HintLadder.d.ts.map +1 -0
  471. package/lib/pedagogy/ui/HintLadder.js +33 -0
  472. package/lib/pedagogy/ui/HintLadder.js.map +1 -0
  473. package/lib/pedagogy/ui/ReferenceGrid.d.ts +31 -0
  474. package/lib/pedagogy/ui/ReferenceGrid.d.ts.map +1 -0
  475. package/lib/pedagogy/ui/ReferenceGrid.js +25 -0
  476. package/lib/pedagogy/ui/ReferenceGrid.js.map +1 -0
  477. package/lib/pedagogy/ui/ReferenceSectionBlock.d.ts +64 -0
  478. package/lib/pedagogy/ui/ReferenceSectionBlock.d.ts.map +1 -0
  479. package/lib/pedagogy/ui/ReferenceSectionBlock.js +78 -0
  480. package/lib/pedagogy/ui/ReferenceSectionBlock.js.map +1 -0
  481. package/lib/pedagogy/ui/SyntaxTooltip.d.ts +94 -0
  482. package/lib/pedagogy/ui/SyntaxTooltip.d.ts.map +1 -0
  483. package/lib/pedagogy/ui/SyntaxTooltip.js +79 -0
  484. package/lib/pedagogy/ui/SyntaxTooltip.js.map +1 -0
  485. package/lib/pedagogy/ui/TestCaseList.d.ts +35 -0
  486. package/lib/pedagogy/ui/TestCaseList.d.ts.map +1 -0
  487. package/lib/pedagogy/ui/TestCaseList.js +63 -0
  488. package/lib/pedagogy/ui/TestCaseList.js.map +1 -0
  489. package/lib/pedagogy/ui/TutorialStepStrip.d.ts +42 -0
  490. package/lib/pedagogy/ui/TutorialStepStrip.d.ts.map +1 -0
  491. package/lib/pedagogy/ui/TutorialStepStrip.js +98 -0
  492. package/lib/pedagogy/ui/TutorialStepStrip.js.map +1 -0
  493. package/lib/pedagogy/ui/exerciseMeta.d.ts +24 -0
  494. package/lib/pedagogy/ui/exerciseMeta.d.ts.map +1 -0
  495. package/lib/pedagogy/ui/exerciseMeta.js +38 -0
  496. package/lib/pedagogy/ui/exerciseMeta.js.map +1 -0
  497. package/lib/pedagogy/ui/glossaryContext.d.ts +17 -0
  498. package/lib/pedagogy/ui/glossaryContext.d.ts.map +1 -0
  499. package/lib/pedagogy/ui/glossaryContext.js +19 -0
  500. package/lib/pedagogy/ui/glossaryContext.js.map +1 -0
  501. package/lib/pedagogy/ui/index.d.ts +27 -0
  502. package/lib/pedagogy/ui/index.d.ts.map +1 -0
  503. package/lib/pedagogy/ui/index.js +15 -0
  504. package/lib/pedagogy/ui/index.js.map +1 -0
  505. package/lib/pedagogy/ui/tutorialLevels.d.ts +18 -0
  506. package/lib/pedagogy/ui/tutorialLevels.d.ts.map +1 -0
  507. package/lib/pedagogy/ui/tutorialLevels.js +14 -0
  508. package/lib/pedagogy/ui/tutorialLevels.js.map +1 -0
  509. package/lib/router/core/address.d.ts +42 -0
  510. package/lib/router/core/address.d.ts.map +1 -0
  511. package/lib/router/core/address.js +64 -0
  512. package/lib/router/core/address.js.map +1 -0
  513. package/lib/router/core/basePath.d.ts +49 -0
  514. package/lib/router/core/basePath.d.ts.map +1 -0
  515. package/lib/router/core/basePath.js +78 -0
  516. package/lib/router/core/basePath.js.map +1 -0
  517. package/lib/router/core/index.d.ts +8 -0
  518. package/lib/router/core/index.d.ts.map +1 -0
  519. package/lib/router/core/index.js +5 -0
  520. package/lib/router/core/index.js.map +1 -0
  521. package/lib/router/core/legacyHash.d.ts +45 -0
  522. package/lib/router/core/legacyHash.d.ts.map +1 -0
  523. package/lib/router/core/legacyHash.js +50 -0
  524. package/lib/router/core/legacyHash.js.map +1 -0
  525. package/lib/router/core/pageAddresses.d.ts +50 -0
  526. package/lib/router/core/pageAddresses.d.ts.map +1 -0
  527. package/lib/router/core/pageAddresses.js +56 -0
  528. package/lib/router/core/pageAddresses.js.map +1 -0
  529. package/lib/router/core/query.d.ts +41 -0
  530. package/lib/router/core/query.d.ts.map +1 -0
  531. package/lib/router/core/query.js +64 -0
  532. package/lib/router/core/query.js.map +1 -0
  533. package/lib/router/core/tabRouter.d.ts +111 -0
  534. package/lib/router/core/tabRouter.d.ts.map +1 -0
  535. package/lib/router/core/tabRouter.js +87 -0
  536. package/lib/router/core/tabRouter.js.map +1 -0
  537. package/lib/seo/core/documentMeta.d.ts +45 -0
  538. package/lib/seo/core/documentMeta.d.ts.map +1 -0
  539. package/lib/seo/core/documentMeta.js +69 -0
  540. package/lib/seo/core/documentMeta.js.map +1 -0
  541. package/lib/seo/core/index.d.ts +3 -0
  542. package/lib/seo/core/index.d.ts.map +1 -0
  543. package/lib/seo/core/index.js +2 -0
  544. package/lib/seo/core/index.js.map +1 -0
  545. package/lib/share/core/config.d.ts +63 -0
  546. package/lib/share/core/config.d.ts.map +1 -0
  547. package/lib/share/core/config.js +125 -0
  548. package/lib/share/core/config.js.map +1 -0
  549. package/lib/share/core/escape.d.ts +15 -0
  550. package/lib/share/core/escape.d.ts.map +1 -0
  551. package/lib/share/core/escape.js +22 -0
  552. package/lib/share/core/escape.js.map +1 -0
  553. package/lib/share/core/index.d.ts +9 -0
  554. package/lib/share/core/index.d.ts.map +1 -0
  555. package/lib/share/core/index.js +5 -0
  556. package/lib/share/core/index.js.map +1 -0
  557. package/lib/share/core/params.d.ts +93 -0
  558. package/lib/share/core/params.d.ts.map +1 -0
  559. package/lib/share/core/params.js +111 -0
  560. package/lib/share/core/params.js.map +1 -0
  561. package/lib/share/core/query.d.ts +30 -0
  562. package/lib/share/core/query.d.ts.map +1 -0
  563. package/lib/share/core/query.js +68 -0
  564. package/lib/share/core/query.js.map +1 -0
  565. package/lib/share/core/url.d.ts +57 -0
  566. package/lib/share/core/url.d.ts.map +1 -0
  567. package/lib/share/core/url.js +49 -0
  568. package/lib/share/core/url.js.map +1 -0
  569. package/lib/share/core/vocabulary.d.ts +51 -0
  570. package/lib/share/core/vocabulary.d.ts.map +1 -0
  571. package/lib/share/core/vocabulary.js +2 -0
  572. package/lib/share/core/vocabulary.js.map +1 -0
  573. package/lib/share/ui/HiddenPartsProvider.d.ts +19 -0
  574. package/lib/share/ui/HiddenPartsProvider.d.ts.map +1 -0
  575. package/lib/share/ui/HiddenPartsProvider.js +15 -0
  576. package/lib/share/ui/HiddenPartsProvider.js.map +1 -0
  577. package/lib/share/ui/PagePart.d.ts +18 -0
  578. package/lib/share/ui/PagePart.d.ts.map +1 -0
  579. package/lib/share/ui/PagePart.js +16 -0
  580. package/lib/share/ui/PagePart.js.map +1 -0
  581. package/lib/share/ui/ShareButton.d.ts +42 -0
  582. package/lib/share/ui/ShareButton.d.ts.map +1 -0
  583. package/lib/share/ui/ShareButton.js +18 -0
  584. package/lib/share/ui/ShareButton.js.map +1 -0
  585. package/lib/share/ui/ShareDialog.d.ts +73 -0
  586. package/lib/share/ui/ShareDialog.d.ts.map +1 -0
  587. package/lib/share/ui/ShareDialog.js +19 -0
  588. package/lib/share/ui/ShareDialog.js.map +1 -0
  589. package/lib/share/ui/ShareDialogContent.d.ts +13 -0
  590. package/lib/share/ui/ShareDialogContent.d.ts.map +1 -0
  591. package/lib/share/ui/ShareDialogContent.js +71 -0
  592. package/lib/share/ui/ShareDialogContent.js.map +1 -0
  593. package/lib/share/ui/SharePartOptions.d.ts +18 -0
  594. package/lib/share/ui/SharePartOptions.d.ts.map +1 -0
  595. package/lib/share/ui/SharePartOptions.js +22 -0
  596. package/lib/share/ui/SharePartOptions.js.map +1 -0
  597. package/lib/share/ui/draft.d.ts +13 -0
  598. package/lib/share/ui/draft.d.ts.map +1 -0
  599. package/lib/share/ui/draft.js +16 -0
  600. package/lib/share/ui/draft.js.map +1 -0
  601. package/lib/share/ui/hiddenParts.d.ts +17 -0
  602. package/lib/share/ui/hiddenParts.d.ts.map +1 -0
  603. package/lib/share/ui/hiddenParts.js +21 -0
  604. package/lib/share/ui/hiddenParts.js.map +1 -0
  605. package/lib/share/ui/index.d.ts +10 -0
  606. package/lib/share/ui/index.d.ts.map +1 -0
  607. package/lib/share/ui/index.js +6 -0
  608. package/lib/share/ui/index.js.map +1 -0
  609. package/lib/shared/ui/index.d.ts +2 -1
  610. package/lib/shared/ui/index.d.ts.map +1 -1
  611. package/lib/shared/ui/index.js +1 -1
  612. package/lib/shared/ui/index.js.map +1 -1
  613. package/lib/state/ui/index.d.ts +3 -0
  614. package/lib/state/ui/index.d.ts.map +1 -0
  615. package/lib/state/ui/index.js +2 -0
  616. package/lib/state/ui/index.js.map +1 -0
  617. package/lib/state/ui/mergeStored.d.ts +27 -0
  618. package/lib/state/ui/mergeStored.d.ts.map +1 -0
  619. package/lib/state/ui/mergeStored.js +82 -0
  620. package/lib/state/ui/mergeStored.js.map +1 -0
  621. package/lib/state/ui/persistBucket.d.ts +65 -0
  622. package/lib/state/ui/persistBucket.d.ts.map +1 -0
  623. package/lib/state/ui/persistBucket.js +90 -0
  624. package/lib/state/ui/persistBucket.js.map +1 -0
  625. package/lib/structure/core/editorValue.d.ts +69 -0
  626. package/lib/structure/core/editorValue.d.ts.map +1 -0
  627. package/lib/structure/core/editorValue.js +72 -0
  628. package/lib/structure/core/editorValue.js.map +1 -0
  629. package/lib/structure/core/fragmentQuery.d.ts +33 -0
  630. package/lib/structure/core/fragmentQuery.d.ts.map +1 -0
  631. package/lib/structure/core/fragmentQuery.js +37 -0
  632. package/lib/structure/core/fragmentQuery.js.map +1 -0
  633. package/lib/structure/core/index.d.ts +11 -0
  634. package/lib/structure/core/index.d.ts.map +1 -0
  635. package/lib/structure/core/index.js +6 -0
  636. package/lib/structure/core/index.js.map +1 -0
  637. package/lib/structure/core/molfile.d.ts +42 -0
  638. package/lib/structure/core/molfile.d.ts.map +1 -0
  639. package/lib/structure/core/molfile.js +74 -0
  640. package/lib/structure/core/molfile.js.map +1 -0
  641. package/lib/structure/core/readStructure.d.ts +37 -0
  642. package/lib/structure/core/readStructure.d.ts.map +1 -0
  643. package/lib/structure/core/readStructure.js +59 -0
  644. package/lib/structure/core/readStructure.js.map +1 -0
  645. package/lib/structure/core/structureSource.d.ts +34 -0
  646. package/lib/structure/core/structureSource.d.ts.map +1 -0
  647. package/lib/structure/core/structureSource.js +32 -0
  648. package/lib/structure/core/structureSource.js.map +1 -0
  649. package/lib/structure/core/toolbarFloor.d.ts +16 -0
  650. package/lib/structure/core/toolbarFloor.d.ts.map +1 -0
  651. package/lib/structure/core/toolbarFloor.js +27 -0
  652. package/lib/structure/core/toolbarFloor.js.map +1 -0
  653. package/lib/structure/ui/EditorCanvas.d.ts +55 -0
  654. package/lib/structure/ui/EditorCanvas.d.ts.map +1 -0
  655. package/lib/structure/ui/EditorCanvas.js +41 -0
  656. package/lib/structure/ui/EditorCanvas.js.map +1 -0
  657. package/lib/structure/ui/Structure.d.ts +122 -0
  658. package/lib/structure/ui/Structure.d.ts.map +1 -0
  659. package/lib/structure/ui/Structure.js +28 -0
  660. package/lib/structure/ui/Structure.js.map +1 -0
  661. package/lib/structure/ui/StructureEditor.d.ts +75 -0
  662. package/lib/structure/ui/StructureEditor.d.ts.map +1 -0
  663. package/lib/structure/ui/StructureEditor.js +83 -0
  664. package/lib/structure/ui/StructureEditor.js.map +1 -0
  665. package/lib/structure/ui/StructurePlaceholder.d.ts +29 -0
  666. package/lib/structure/ui/StructurePlaceholder.d.ts.map +1 -0
  667. package/lib/structure/ui/StructurePlaceholder.js +19 -0
  668. package/lib/structure/ui/StructurePlaceholder.js.map +1 -0
  669. package/lib/structure/ui/StructureSvg.d.ts +58 -0
  670. package/lib/structure/ui/StructureSvg.d.ts.map +1 -0
  671. package/lib/structure/ui/StructureSvg.js +33 -0
  672. package/lib/structure/ui/StructureSvg.js.map +1 -0
  673. package/lib/structure/ui/index.d.ts +19 -0
  674. package/lib/structure/ui/index.d.ts.map +1 -0
  675. package/lib/structure/ui/index.js +15 -0
  676. package/lib/structure/ui/index.js.map +1 -0
  677. package/lib/structure/ui/useToolbarFloor.d.ts +26 -0
  678. package/lib/structure/ui/useToolbarFloor.d.ts.map +1 -0
  679. package/lib/structure/ui/useToolbarFloor.js +70 -0
  680. package/lib/structure/ui/useToolbarFloor.js.map +1 -0
  681. package/lib/structure.d.ts +3 -0
  682. package/lib/structure.d.ts.map +1 -0
  683. package/lib/structure.js +3 -0
  684. package/lib/structure.js.map +1 -0
  685. package/lib/ui.d.ts +13 -0
  686. package/lib/ui.d.ts.map +1 -1
  687. package/lib/ui.js +13 -0
  688. package/lib/ui.js.map +1 -1
  689. package/lib/worker/core/errors.d.ts +15 -0
  690. package/lib/worker/core/errors.d.ts.map +1 -0
  691. package/lib/worker/core/errors.js +15 -0
  692. package/lib/worker/core/errors.js.map +1 -0
  693. package/lib/worker/core/index.d.ts +5 -0
  694. package/lib/worker/core/index.d.ts.map +1 -0
  695. package/lib/worker/core/index.js +3 -0
  696. package/lib/worker/core/index.js.map +1 -0
  697. package/lib/worker/core/messages.d.ts +48 -0
  698. package/lib/worker/core/messages.d.ts.map +1 -0
  699. package/lib/worker/core/messages.js +2 -0
  700. package/lib/worker/core/messages.js.map +1 -0
  701. package/lib/worker/core/workerChannel.d.ts +69 -0
  702. package/lib/worker/core/workerChannel.d.ts.map +1 -0
  703. package/lib/worker/core/workerChannel.js +121 -0
  704. package/lib/worker/core/workerChannel.js.map +1 -0
  705. package/package.json +25 -4
  706. package/src/capsule/ui/CapsuleFilter.tsx +119 -0
  707. package/src/capsule/ui/index.ts +2 -0
  708. package/src/chrome/ui/NavLink.tsx +88 -0
  709. package/src/chrome/ui/NavMenuButton.tsx +95 -0
  710. package/src/chrome/ui/SiteFooter.tsx +65 -0
  711. package/src/chrome/ui/SiteHeader.tsx +119 -0
  712. package/src/chrome/ui/index.ts +11 -0
  713. package/src/chrome/ui/navItem.ts +60 -0
  714. package/src/chrome/ui/useCompactHeader.ts +81 -0
  715. package/src/citation/core/clipboard.ts +27 -11
  716. package/src/citation/core/download.ts +25 -15
  717. package/src/citation/core/index.ts +8 -3
  718. package/src/citation/core/works.ts +81 -0
  719. package/src/citation/ui/CitationMenu.tsx +104 -89
  720. package/src/citation/ui/CitationPreview.tsx +18 -8
  721. package/src/citation/ui/CiteButton.tsx +24 -9
  722. package/src/citation/ui/CopyFormatEntries.tsx +84 -0
  723. package/src/citation/ui/WorkEntry.tsx +80 -0
  724. package/src/citation/ui/entries.tsx +18 -20
  725. package/src/citation/ui/index.ts +10 -2
  726. package/src/citation/ui/useCopyFeedback.ts +76 -0
  727. package/src/clipboard/core/index.ts +1 -0
  728. package/src/clipboard/core/writeToClipboard.ts +47 -0
  729. package/src/clipboard/ui/CodeBlock.tsx +110 -0
  730. package/src/clipboard/ui/CopyButton.tsx +111 -0
  731. package/src/clipboard/ui/index.ts +9 -0
  732. package/src/clipboard/ui/useCopyToClipboard.ts +57 -0
  733. package/src/color/core/contrast.ts +85 -0
  734. package/src/color/core/hex.ts +57 -0
  735. package/src/color/core/index.ts +4 -0
  736. package/src/color/core/scale.ts +132 -0
  737. package/src/color/ui/ColorScaleLegend.tsx +144 -0
  738. package/src/color/ui/index.ts +2 -0
  739. package/src/core.ts +12 -0
  740. package/src/credits/core/credits.ts +183 -0
  741. package/src/credits/core/index.ts +2 -0
  742. package/src/credits/ui/CreditsList.tsx +82 -0
  743. package/src/credits/ui/index.ts +2 -0
  744. package/src/delimited/core/delimiters.ts +64 -0
  745. package/src/delimited/core/index.ts +11 -0
  746. package/src/delimited/core/readDelimited.ts +132 -0
  747. package/src/delimited/core/rowsToDelimited.ts +135 -0
  748. package/src/delimited/core/toDelimited.ts +69 -0
  749. package/src/delimited/ui/DelimitedTextDialog.tsx +49 -0
  750. package/src/delimited/ui/DelimitedTextPanel.tsx +161 -0
  751. package/src/delimited/ui/index.ts +4 -0
  752. package/src/disclosure/ui/CollapsibleSection.tsx +150 -0
  753. package/src/disclosure/ui/index.ts +4 -0
  754. package/src/disclosure/ui/useDisclosure.ts +35 -0
  755. package/src/download/core/downloadBlob.ts +19 -0
  756. package/src/download/core/downloadText.ts +19 -0
  757. package/src/download/core/index.ts +3 -0
  758. package/src/download/core/sanitizeFileName.ts +33 -0
  759. package/src/ecosystem/core/index.ts +3 -0
  760. package/src/ecosystem/core/links.ts +29 -0
  761. package/src/ecosystem/core/lookup.ts +41 -0
  762. package/src/ecosystem/core/sites.ts +38 -1
  763. package/src/ecosystem/core/tokens.ts +47 -0
  764. package/src/ecosystem/ui/SiteTheme.tsx +23 -0
  765. package/src/ecosystem/ui/Wordmark.tsx +65 -0
  766. package/src/ecosystem/ui/glyphs.tsx +246 -0
  767. package/src/ecosystem/ui/index.ts +4 -0
  768. package/src/ecosystem/ui/marks.tsx +56 -214
  769. package/src/error/ui/ErrorBoundary.tsx +94 -0
  770. package/src/error/ui/ErrorFallback.tsx +64 -0
  771. package/src/error/ui/index.ts +4 -0
  772. package/src/error/ui/toError.ts +33 -0
  773. package/src/format/core/index.ts +9 -0
  774. package/src/format/core/missing.ts +6 -0
  775. package/src/format/core/numbers.ts +84 -0
  776. package/src/format/core/units.ts +60 -0
  777. package/src/format/core/words.ts +17 -0
  778. package/src/help/ui/HelpBody.tsx +130 -0
  779. package/src/help/ui/HelpIcon.tsx +53 -0
  780. package/src/help/ui/HelpToolbarButton.tsx +72 -0
  781. package/src/help/ui/HelpTooltip.tsx +72 -0
  782. package/src/help/ui/index.ts +8 -0
  783. package/src/hooks/ui/index.ts +6 -0
  784. package/src/hooks/ui/listNavigation.ts +116 -0
  785. package/src/hooks/ui/useContainerSize.ts +32 -0
  786. package/src/hooks/ui/useDebouncedValue.ts +29 -0
  787. package/src/hooks/ui/useListKeyboardNavigation.ts +37 -0
  788. package/src/hooks/ui/useResizeObserver.ts +50 -0
  789. package/src/orbital/core/atomicGrid.ts +167 -0
  790. package/src/orbital/core/atomicOrbitals.ts +212 -0
  791. package/src/orbital/core/constants.ts +36 -0
  792. package/src/orbital/core/electronConfiguration.ts +242 -0
  793. package/src/orbital/core/grid.ts +126 -0
  794. package/src/orbital/core/hydrogenic.ts +222 -0
  795. package/src/orbital/core/index.ts +63 -0
  796. package/src/orbital/core/isovalue.ts +146 -0
  797. package/src/orbital/core/numerics.ts +79 -0
  798. package/src/orbital/core/occupancy.ts +100 -0
  799. package/src/orbital/core/palette.ts +56 -0
  800. package/src/orbital/core/realHarmonics.ts +172 -0
  801. package/src/orbital/core/sample.ts +111 -0
  802. package/src/orbital/core/screening.ts +90 -0
  803. package/src/orbital/ui/AtomicOrbitalCanvas.tsx +197 -0
  804. package/src/orbital/ui/AtomicOrbitalViewer.tsx +154 -0
  805. package/src/orbital/ui/camera.ts +125 -0
  806. package/src/orbital/ui/capability.ts +102 -0
  807. package/src/orbital/ui/index.ts +17 -0
  808. package/src/orbital/ui/renderVolume.ts +203 -0
  809. package/src/orbital/ui/viewer.ts +191 -0
  810. package/src/orbital/ui/volumeField.ts +84 -0
  811. package/src/orbital.ts +11 -0
  812. package/src/pedagogy/core/glossary.ts +122 -0
  813. package/src/pedagogy/core/index.ts +28 -0
  814. package/src/pedagogy/core/jsonStorage.ts +51 -0
  815. package/src/pedagogy/core/progress.ts +205 -0
  816. package/src/pedagogy/core/types.ts +78 -0
  817. package/src/pedagogy/core/validation.ts +109 -0
  818. package/src/pedagogy/ui/ExerciseActions.tsx +129 -0
  819. package/src/pedagogy/ui/ExerciseProgressHeader.tsx +135 -0
  820. package/src/pedagogy/ui/ExerciseTags.tsx +85 -0
  821. package/src/pedagogy/ui/GlossaryProvider.tsx +31 -0
  822. package/src/pedagogy/ui/GlossaryText.tsx +164 -0
  823. package/src/pedagogy/ui/HintLadder.tsx +95 -0
  824. package/src/pedagogy/ui/ReferenceGrid.tsx +69 -0
  825. package/src/pedagogy/ui/ReferenceSectionBlock.tsx +175 -0
  826. package/src/pedagogy/ui/SyntaxTooltip.tsx +222 -0
  827. package/src/pedagogy/ui/TestCaseList.tsx +122 -0
  828. package/src/pedagogy/ui/TutorialStepStrip.tsx +230 -0
  829. package/src/pedagogy/ui/exerciseMeta.ts +45 -0
  830. package/src/pedagogy/ui/glossaryContext.ts +23 -0
  831. package/src/pedagogy/ui/index.ts +37 -0
  832. package/src/pedagogy/ui/tutorialLevels.ts +27 -0
  833. package/src/router/core/address.ts +74 -0
  834. package/src/router/core/basePath.ts +76 -0
  835. package/src/router/core/index.ts +26 -0
  836. package/src/router/core/legacyHash.ts +77 -0
  837. package/src/router/core/pageAddresses.ts +106 -0
  838. package/src/router/core/query.ts +87 -0
  839. package/src/router/core/tabRouter.ts +214 -0
  840. package/src/seo/core/documentMeta.ts +92 -0
  841. package/src/seo/core/index.ts +6 -0
  842. package/src/share/core/config.ts +165 -0
  843. package/src/share/core/escape.ts +22 -0
  844. package/src/share/core/index.ts +31 -0
  845. package/src/share/core/params.ts +176 -0
  846. package/src/share/core/query.ts +72 -0
  847. package/src/share/core/url.ts +105 -0
  848. package/src/share/core/vocabulary.ts +60 -0
  849. package/src/share/ui/HiddenPartsProvider.tsx +34 -0
  850. package/src/share/ui/PagePart.tsx +26 -0
  851. package/src/share/ui/ShareButton.tsx +84 -0
  852. package/src/share/ui/ShareDialog.tsx +114 -0
  853. package/src/share/ui/ShareDialogContent.tsx +189 -0
  854. package/src/share/ui/SharePartOptions.tsx +51 -0
  855. package/src/share/ui/draft.ts +19 -0
  856. package/src/share/ui/hiddenParts.ts +22 -0
  857. package/src/share/ui/index.ts +9 -0
  858. package/src/shared/ui/index.ts +2 -1
  859. package/src/state/ui/index.ts +6 -0
  860. package/src/state/ui/mergeStored.ts +87 -0
  861. package/src/state/ui/persistBucket.ts +147 -0
  862. package/src/structure/core/editorValue.ts +116 -0
  863. package/src/structure/core/fragmentQuery.ts +50 -0
  864. package/src/structure/core/index.ts +13 -0
  865. package/src/structure/core/molfile.ts +90 -0
  866. package/src/structure/core/readStructure.ts +73 -0
  867. package/src/structure/core/structureSource.ts +57 -0
  868. package/src/structure/core/toolbarFloor.ts +31 -0
  869. package/src/structure/ui/EditorCanvas.tsx +130 -0
  870. package/src/structure/ui/Structure.tsx +183 -0
  871. package/src/structure/ui/StructureEditor.tsx +196 -0
  872. package/src/structure/ui/StructurePlaceholder.tsx +48 -0
  873. package/src/structure/ui/StructureSvg.tsx +110 -0
  874. package/src/structure/ui/index.ts +22 -0
  875. package/src/structure/ui/useToolbarFloor.ts +93 -0
  876. package/src/structure.ts +2 -0
  877. package/src/ui.ts +13 -0
  878. package/src/worker/core/errors.ts +15 -0
  879. package/src/worker/core/index.ts +8 -0
  880. package/src/worker/core/messages.ts +47 -0
  881. package/src/worker/core/workerChannel.ts +218 -0
  882. package/styles/chrome.css +223 -0
@@ -1,3 +1,5 @@
1
+ export { renderEcosystemLinksHtml } from './links.ts';
2
+ export { findSiteByHost, siteById } from './lookup.ts';
1
3
  export type {
2
4
  EcosystemSite,
3
5
  SiteId,
@@ -5,3 +7,4 @@ export type {
5
7
  SiteName,
6
8
  } from './sites.ts';
7
9
  export { ECOSYSTEM_SITES, siteUrl } from './sites.ts';
10
+ export { siteThemeColor, siteTokensCss } from './tokens.ts';
@@ -0,0 +1,29 @@
1
+ import { ECOSYSTEM_SITES, siteUrl } from './sites.ts';
2
+
3
+ /**
4
+ * Every site of the family as a plain list of links, for the `<noscript>` of a
5
+ * page whose body is an empty root element.
6
+ *
7
+ * A crawler that runs no script sees nothing else of the page, so this is the
8
+ * only path it has from one of our tools to the next — and each entry carries
9
+ * the line saying what it opens, as real text.
10
+ * @returns The `<ul>`, for the caller to place inside its own `<noscript>`.
11
+ */
12
+ export function renderEcosystemLinksHtml(): string {
13
+ let html = '<ul class="ecosystem-links">\n';
14
+ for (const site of ECOSYSTEM_SITES) {
15
+ const href = escapeHtml(siteUrl(site));
16
+ const host = escapeHtml(site.host);
17
+ const tagline = escapeHtml(site.tagline);
18
+ html += `<li><a href="${href}">${host}</a> — ${tagline}</li>\n`;
19
+ }
20
+ return `${html}</ul>\n`;
21
+ }
22
+
23
+ function escapeHtml(value: string): string {
24
+ return value
25
+ .replaceAll('&', '&amp;')
26
+ .replaceAll('<', '&lt;')
27
+ .replaceAll('>', '&gt;')
28
+ .replaceAll('"', '&quot;');
29
+ }
@@ -0,0 +1,41 @@
1
+ import type { EcosystemSite, SiteId } from './sites.ts';
2
+ import { ECOSYSTEM_SITES } from './sites.ts';
3
+
4
+ /**
5
+ * One site of the family, by the identifier its entry carries.
6
+ * @param id - The site being asked for.
7
+ * @returns The site.
8
+ * @throws {Error} When no site of the family carries that identifier.
9
+ */
10
+ export function siteById(id: SiteId): EcosystemSite {
11
+ for (const site of ECOSYSTEM_SITES) {
12
+ if (site.id === id) return site;
13
+ }
14
+ throw new Error(`unknown ecosystem site: ${id}`);
15
+ }
16
+
17
+ /**
18
+ * The site a page is being served from, so a header can mark itself as the
19
+ * current one without being told which site it belongs to.
20
+ *
21
+ * The host is whatever the browser reports, so it may carry a port and may or
22
+ * may not carry the `www.` two of our sites are written with. Neither changes
23
+ * which site it is, and a host belonging to nobody — a development server, a
24
+ * preview deployment — is simply not one of ours.
25
+ * @param host - What `location.host` reads, or any host-shaped string.
26
+ * @returns The site served from that host, or undefined for any other host.
27
+ */
28
+ export function findSiteByHost(host: string): EcosystemSite | undefined {
29
+ const wanted = normalizeHost(host);
30
+ if (wanted === '') return undefined;
31
+
32
+ for (const site of ECOSYSTEM_SITES) {
33
+ if (normalizeHost(site.host) === wanted) return site;
34
+ }
35
+ return undefined;
36
+ }
37
+
38
+ function normalizeHost(host: string): string {
39
+ const withoutPort = host.trim().toLowerCase().split(':', 1)[0] ?? '';
40
+ return withoutPort.startsWith('www.') ? withoutPort.slice(4) : withoutPort;
41
+ }
@@ -12,7 +12,9 @@ export type SiteId =
12
12
  | 'pdb'
13
13
  | 'elucidation'
14
14
  | 'equilibrium'
15
- | 'polycarp';
15
+ | 'polycarp'
16
+ | '3d'
17
+ | 'pt';
16
18
 
17
19
  export interface SiteName {
18
20
  /** First half of the name, set in the site's leading colour. */
@@ -33,6 +35,8 @@ export interface EcosystemSite {
33
35
  name: SiteName;
34
36
  /** Where the site lives, written the way it is typed. */
35
37
  host: string;
38
+ /** Where the sources live, and what a Source link opens. */
39
+ repository: string;
36
40
  /** One line on what the site does. */
37
41
  tagline: string;
38
42
  /** The colour the first half of the name is set in. */
@@ -69,6 +73,7 @@ export const ECOSYSTEM_SITES: readonly EcosystemSite[] = [
69
73
  id: 'inchi',
70
74
  name: { lead: 'inchi', alt: 'cheminfo', dot: true },
71
75
  host: 'inchi.cheminfo.org',
76
+ repository: 'https://github.com/cheminfo/inchi.cheminfo.org',
72
77
  tagline: 'InChI and InChIKey from a structure, in the browser.',
73
78
  brand: '#5b21b6',
74
79
  brandAlt: '#a16207',
@@ -78,6 +83,7 @@ export const ECOSYSTEM_SITES: readonly EcosystemSite[] = [
78
83
  id: 'vcl',
79
84
  name: { lead: 'vcl', alt: 'cheminfo', dot: true },
80
85
  host: 'vcl.cheminfo.org',
86
+ repository: 'https://github.com/cheminfo/vcl.cheminfo.org',
81
87
  tagline: 'Combine a core and fragments into a screened library.',
82
88
  brand: '#2d72d2',
83
89
  brandAlt: '#9a3412',
@@ -87,6 +93,7 @@ export const ECOSYSTEM_SITES: readonly EcosystemSite[] = [
87
93
  id: 'smiles',
88
94
  name: { lead: 'smiles', alt: 'cheminfo', dot: true },
89
95
  host: 'smiles.cheminfo.org',
96
+ repository: 'https://github.com/cheminfo/smiles.cheminfo.org',
90
97
  tagline: 'Draw a structure, read its SMILES, learn the notation.',
91
98
  brand: '#1c6e42',
92
99
  brandAlt: '#9a3412',
@@ -96,6 +103,7 @@ export const ECOSYSTEM_SITES: readonly EcosystemSite[] = [
96
103
  id: 'chemcalc',
97
104
  name: { lead: 'Chem', alt: 'Calc' },
98
105
  host: 'www.chemcalc.org',
106
+ repository: 'https://github.com/cheminfo/chemcalc.org',
99
107
  tagline: 'Molecular formula, exact mass and isotopic distribution.',
100
108
  brand: '#5b52e0',
101
109
  brandAlt: '#0d9488',
@@ -105,6 +113,7 @@ export const ECOSYSTEM_SITES: readonly EcosystemSite[] = [
105
113
  id: 'nmrium',
106
114
  name: { lead: 'NMR', alt: 'ium' },
107
115
  host: 'www.nmrium.org',
116
+ repository: 'https://github.com/cheminfo/nmrium',
108
117
  tagline: 'Process and assign NMR spectra in the browser.',
109
118
  brand: '#ea580c',
110
119
  brandAlt: '#2b143e',
@@ -114,6 +123,7 @@ export const ECOSYSTEM_SITES: readonly EcosystemSite[] = [
114
123
  id: 'surge',
115
124
  name: { lead: 'surge', alt: 'cheminfo', dot: true },
116
125
  host: 'surge.cheminfo.org',
126
+ repository: 'https://github.com/cheminfo/surge.cheminfo.org',
117
127
  tagline: 'Every constitutional isomer of a molecular formula.',
118
128
  brand: '#4338ca',
119
129
  brandAlt: '#be123c',
@@ -123,6 +133,7 @@ export const ECOSYSTEM_SITES: readonly EcosystemSite[] = [
123
133
  id: 'tex',
124
134
  name: { lead: 'tex', alt: 'cheminfo', dot: true },
125
135
  host: 'tex.cheminfo.org',
136
+ repository: 'https://github.com/cheminfo/tex.cheminfo.org',
126
137
  tagline: 'LaTeX formulas rendered to SVG or PNG from a URL.',
127
138
  brand: '#a21caf',
128
139
  brandAlt: '#a16207',
@@ -132,6 +143,7 @@ export const ECOSYSTEM_SITES: readonly EcosystemSite[] = [
132
143
  id: 'lcao',
133
144
  name: { lead: 'lcao', alt: 'cheminfo', dot: true },
134
145
  host: 'lcao.cheminfo.org',
146
+ repository: 'https://github.com/cheminfo/lcao.cheminfo.org',
135
147
  tagline: 'Combine atomic orbitals into molecular ones.',
136
148
  brand: '#1565c0',
137
149
  brandAlt: '#c62828',
@@ -141,6 +153,7 @@ export const ECOSYSTEM_SITES: readonly EcosystemSite[] = [
141
153
  id: 'regexp',
142
154
  name: { lead: 'regexp', alt: 'cheminfo', dot: true },
143
155
  host: 'regexp.cheminfo.org',
156
+ repository: 'https://github.com/cheminfo/regexp.cheminfo.org',
144
157
  tagline: 'Learn regular expressions in a live playground.',
145
158
  brand: '#1e3a8a',
146
159
  brandAlt: '#a16207',
@@ -150,6 +163,7 @@ export const ECOSYSTEM_SITES: readonly EcosystemSite[] = [
150
163
  id: 'pdb',
151
164
  name: { lead: 'pdb', alt: 'cheminfo', dot: true },
152
165
  host: 'pdb.cheminfo.org',
166
+ repository: 'https://github.com/cheminfo/pdb.cheminfo.org',
153
167
  tagline: 'A fast look at any Protein Data Bank entry.',
154
168
  brand: '#2563eb',
155
169
  brandAlt: '#b45309',
@@ -159,6 +173,7 @@ export const ECOSYSTEM_SITES: readonly EcosystemSite[] = [
159
173
  id: 'elucidation',
160
174
  name: { lead: 'elucidation', alt: 'cheminfo', dot: true },
161
175
  host: 'elucidation.cheminfo.org',
176
+ repository: 'https://github.com/cheminfo/elucidation.cheminfo.org',
162
177
  tagline: 'A structure from a 1H NMR spectrum and a formula.',
163
178
  brand: '#7e22ce',
164
179
  brandAlt: '#b45309',
@@ -168,6 +183,7 @@ export const ECOSYSTEM_SITES: readonly EcosystemSite[] = [
168
183
  id: 'equilibrium',
169
184
  name: { lead: 'Equi', alt: 'Librium' },
170
185
  host: 'equilibrium.cheminfo.org',
186
+ repository: 'https://github.com/cheminfo/equilibrium.cheminfo.org',
171
187
  tagline: 'Chemical equilibria: pH, speciation and titration curves.',
172
188
  brand: '#0b5754',
173
189
  brandAlt: '#a56600',
@@ -177,11 +193,32 @@ export const ECOSYSTEM_SITES: readonly EcosystemSite[] = [
177
193
  id: 'polycarp',
178
194
  name: { lead: 'Poly', alt: 'Carp' },
179
195
  host: 'polycarp.cheminfo.org',
196
+ repository: 'https://github.com/cheminfo/polycarp.cheminfo.org',
180
197
  tagline: 'Predict the microstructure of a radical copolymerisation.',
181
198
  brand: '#0d1d37',
182
199
  brandAlt: '#0c9ba3',
183
200
  mark: { plate: '#0d1d37', accent: '#0c9ba3' },
184
201
  },
202
+ {
203
+ id: '3d',
204
+ name: { lead: '3d', alt: 'cheminfo', dot: true },
205
+ host: '3d.cheminfo.org',
206
+ repository: 'https://github.com/cheminfo/3d.cheminfo.org',
207
+ tagline: 'Conformers in 3D from a structure you draw.',
208
+ brand: '#155e75',
209
+ brandAlt: '#b45309',
210
+ mark: { plate: '#155e75', accent: '#f97316' },
211
+ },
212
+ {
213
+ id: 'pt',
214
+ name: { lead: 'pt', alt: 'cheminfo', dot: true },
215
+ host: 'pt.cheminfo.org',
216
+ repository: 'https://github.com/cheminfo/pt.cheminfo.org',
217
+ tagline: 'The periodic table, coloured, plotted and taken apart.',
218
+ brand: '#15803d',
219
+ brandAlt: '#a16207',
220
+ mark: { plate: '#15803d', accent: '#fbbf24' },
221
+ },
185
222
  ];
186
223
 
187
224
  /**
@@ -0,0 +1,47 @@
1
+ import { siteById } from './lookup.ts';
2
+ import type { EcosystemSite, SiteId } from './sites.ts';
3
+
4
+ /**
5
+ * The custom properties a site of the family sets on `:root`: the two colours
6
+ * it owns, the readable form of the second one when that is needed, and the
7
+ * accent bound to the first.
8
+ *
9
+ * It is a complete rule rather than a list of declarations, so it drops into a
10
+ * `<style>` of a prerendered page as it is.
11
+ * @param id - The site whose palette is wanted.
12
+ * @returns The `:root` rule, ending in a newline.
13
+ */
14
+ export function siteTokensCss(id: SiteId): string {
15
+ const site = siteById(id);
16
+ const answering = answeringColor(site);
17
+ const declarations = [
18
+ `--brand: ${site.brand};`,
19
+ `--brand-alt: ${answering};`,
20
+ ];
21
+
22
+ // The answering colour of several sites is a yellow or an amber that sits
23
+ // around 2:1 on white, so text set in it needs the darkened form instead.
24
+ if (site.brandAlt !== answering) {
25
+ declarations.push(`--brand-alt-text: ${site.brandAlt};`);
26
+ }
27
+ declarations.push('--accent: var(--brand);');
28
+
29
+ return `:root {\n ${declarations.join('\n ')}\n}\n`;
30
+ }
31
+
32
+ /**
33
+ * What a browser paints its own chrome with on that site — the address bar on
34
+ * Android, the title bar of an installed page — which is the site's leading
35
+ * colour.
36
+ * @param id - The site whose colour is wanted.
37
+ * @returns The colour, as the `<meta name="theme-color">` content.
38
+ */
39
+ export function siteThemeColor(id: SiteId): string {
40
+ return siteById(id).brand;
41
+ }
42
+
43
+ // The second colour as the site's mark draws it: on the accent element, unless
44
+ // the mark inverts the pair and gives the plate the answering colour instead.
45
+ function answeringColor(site: EcosystemSite): string {
46
+ return site.mark.accent === site.brand ? site.mark.plate : site.mark.accent;
47
+ }
@@ -0,0 +1,23 @@
1
+ import type { ReactElement } from 'react';
2
+
3
+ import type { SiteId } from '../core/sites.ts';
4
+ import { siteTokensCss } from '../core/tokens.ts';
5
+
6
+ export interface SiteThemeProps {
7
+ /** The site whose palette the page takes. */
8
+ siteId: SiteId;
9
+ }
10
+
11
+ /**
12
+ * The two colours a site owns, put on the page as custom properties.
13
+ *
14
+ * Everything of the family that reads `--brand`, `--brand-alt` or `--accent` —
15
+ * a mark drawn in token colours, a current menu item, a focus ring — follows
16
+ * from here, so a site declares its palette once and never repeats a hex code
17
+ * in a component.
18
+ * @param props - The site whose palette is injected.
19
+ * @returns The rule, as a style element that applies wherever it is rendered.
20
+ */
21
+ export function SiteTheme(props: SiteThemeProps): ReactElement {
22
+ return <style>{siteTokensCss(props.siteId)}</style>;
23
+ }
@@ -0,0 +1,65 @@
1
+ import type { CSSProperties, ReactElement } from 'react';
2
+
3
+ import { siteById } from '../core/lookup.ts';
4
+ import type { SiteId } from '../core/sites.ts';
5
+
6
+ export interface WordmarkProps {
7
+ /** The site whose name is written. */
8
+ siteId: SiteId;
9
+ /**
10
+ * Size of the name, in pixels. The weight comes from the surrounding
11
+ * context, so the same wordmark suits a header bar and a heading.
12
+ * @default 17
13
+ */
14
+ size?: number;
15
+ /**
16
+ * Extra class names, for spacing at the place it is used. `wordmark` is
17
+ * always carried as well.
18
+ * @default undefined
19
+ */
20
+ className?: string;
21
+ }
22
+
23
+ /**
24
+ * The name of a site, written in the two colours it owns.
25
+ *
26
+ * A name that splits on itself — `ChemCalc`, `EquiLibrium`, `PolyCarp` —
27
+ * carries no domain and no dot; a one-word name takes `.cheminfo` after a faint
28
+ * dot. The `.org` is never written, because the name is the site rather than
29
+ * its address.
30
+ * @param props - The site, the size of the name, and extra class names.
31
+ * @returns The name, as one inline element that never wraps mid-address.
32
+ */
33
+ export function Wordmark(props: WordmarkProps): ReactElement {
34
+ const { siteId, size = 17, className } = props;
35
+ const site = siteById(siteId);
36
+
37
+ return (
38
+ <span
39
+ className={className ? `wordmark ${className}` : 'wordmark'}
40
+ style={{ ...WORDMARK_STYLE, fontSize: size }}
41
+ >
42
+ <span className="wordmark__lead" style={{ color: site.brand }}>
43
+ {site.name.lead}
44
+ </span>
45
+ {site.name.dot ? (
46
+ <span className="wordmark__dot" style={{ color: DOT_COLOR }}>
47
+ .
48
+ </span>
49
+ ) : null}
50
+ <span className="wordmark__alt" style={{ color: site.brandAlt }}>
51
+ {site.name.alt}
52
+ </span>
53
+ </span>
54
+ );
55
+ }
56
+
57
+ // The separating dot is neutral so the two coloured halves read as the name
58
+ // rather than as three equal parts, and it takes the family's own token when
59
+ // the page defines one.
60
+ const DOT_COLOR = 'var(--text-faint, #8a96a3)';
61
+
62
+ const WORDMARK_STYLE: CSSProperties = {
63
+ letterSpacing: '-0.01em',
64
+ whiteSpace: 'nowrap',
65
+ };
@@ -0,0 +1,246 @@
1
+ /**
2
+ * The drawing on each site's plate.
3
+ *
4
+ * One file of pure artwork, so `marks.tsx` stays the eight lines that put a
5
+ * glyph on a plate and every new site is one entry here rather than a longer
6
+ * component.
7
+ *
8
+ * Each keeps the geometry of that site's own logo where it has one, and carries
9
+ * the site's answering colour on exactly one element — which is what stops it
10
+ * collapsing into a flat shape at 16 px.
11
+ */
12
+
13
+ import type { ReactNode } from 'react';
14
+
15
+ import type { SiteId } from '../core/sites.ts';
16
+
17
+ /** Every mark, keyed by site, drawn on top of its plate. */
18
+ export const GLYPHS: Record<SiteId, (alt: string) => ReactNode> = {
19
+ // A hexagon with a tail: the structure, and the string it hashes into.
20
+ inchi: (alt) => (
21
+ <g
22
+ fill="none"
23
+ stroke={alt}
24
+ strokeWidth="2.4"
25
+ strokeLinecap="round"
26
+ strokeLinejoin="round"
27
+ >
28
+ <polygon points="13,6.5 7.7,9.6 7.7,15.7 13,18.8 18.3,15.7 18.3,9.6" />
29
+ <path d="M16.4 16.2 25.2 25" />
30
+ </g>
31
+ ),
32
+ // The core carrying three R groups, which is what this tool combines.
33
+ vcl: (alt) => (
34
+ <>
35
+ <g
36
+ fill="none"
37
+ stroke="#ffffff"
38
+ strokeWidth="2"
39
+ strokeLinecap="round"
40
+ strokeLinejoin="round"
41
+ >
42
+ <path d="M16 9.5 10.8 12.5 10.8 18.5 16 21.5 21.2 18.5 21.2 12.5Z" />
43
+ <path d="M16 9.5 16 5.5M21.2 18.5 24.8 20.6M10.8 18.5 7.2 20.6" />
44
+ </g>
45
+ <circle cx="16" cy="4.6" r="2.6" fill={alt} />
46
+ <circle cx="25.6" cy="21.2" r="2.6" fill={alt} />
47
+ <circle cx="6.4" cy="21.2" r="2.6" fill={alt} />
48
+ </>
49
+ ),
50
+ // A ring over the line of characters that writes it down.
51
+ smiles: (alt) => (
52
+ <>
53
+ <path
54
+ d="M16 7.5 22.1 11.1 22.1 18.3 16 21.9 9.9 18.3 9.9 11.1Z"
55
+ fill="none"
56
+ stroke="#ffffff"
57
+ strokeWidth="2.2"
58
+ strokeLinejoin="round"
59
+ />
60
+ <path
61
+ d="M5.5 25.5h21"
62
+ fill="none"
63
+ stroke={alt}
64
+ strokeWidth="3"
65
+ strokeLinecap="round"
66
+ />
67
+ </>
68
+ ),
69
+ // An isotopic pattern: the answer this one is asked for most.
70
+ chemcalc: (alt) => (
71
+ <g strokeLinecap="round" strokeWidth="3.4" fill="none">
72
+ <path d="M9 24V15" stroke="#ffffff" />
73
+ <path d="M16 24V7" stroke={alt} />
74
+ <path d="M23 24V18" stroke="#ffffff" />
75
+ </g>
76
+ ),
77
+ // The official NMRium symbol, from `Logo.tsx` of the NMRium sources: the
78
+ // orange half is theirs, and the half their logo sets in plum is set in white
79
+ // here because the plate already is that plum.
80
+ nmrium: (accent) => (
81
+ <g fillRule="evenodd" transform="translate(5.25 6.25) scale(0.088)">
82
+ <path
83
+ fill={accent}
84
+ d="M.64,31.7A31.67,31.67,0,0,1,54.72,9.29l0,0A31.66,31.66,0,0,1,64,31.7V190a13.39,13.39,0,0,0,26.77,0V54a31.7,31.7,0,0,1,31.7-31.7V40.58A13.38,13.38,0,0,0,109.13,54V190a31.71,31.71,0,0,1-63.41,0V31.7a13.29,13.29,0,0,0-3.88-9.46l0,0A13.41,13.41,0,0,0,19,31.7V164.82H.64Z"
85
+ />
86
+ <path
87
+ fill="#ffffff"
88
+ d="M154.21,54v68.17a13.34,13.34,0,0,0,3.89,9.47h0A13.39,13.39,0,0,0,181,122.14V99.32h-.06a31.63,31.63,0,0,1,9.29-22.38l0,0a31.65,31.65,0,0,1,44.8,0l0,0a31.58,31.58,0,0,1,9.3,22.39V118H226V99.32a13.3,13.3,0,0,0-3.89-9.46h0a13.44,13.44,0,0,0-18.93,0l0,0a13.3,13.3,0,0,0-3.83,8.19v24.09a31.7,31.7,0,0,1-54.11,22.42v0a31.66,31.66,0,0,1-9.3-22.4V54Z"
89
+ />
90
+ </g>
91
+ ),
92
+ // One formula branching into every structure it can be.
93
+ surge: (alt) => (
94
+ <>
95
+ <g
96
+ fill="none"
97
+ stroke="#ffffff"
98
+ strokeWidth="2"
99
+ strokeLinecap="round"
100
+ strokeLinejoin="round"
101
+ >
102
+ <path d="M7 16h6" />
103
+ <path d="M13 16 25 8.5M13 16h12M13 16 25 23.5" />
104
+ </g>
105
+ <circle cx="25" cy="8.5" r="3" fill={alt} />
106
+ <circle cx="25" cy="16" r="3" fill={alt} />
107
+ <circle cx="25" cy="23.5" r="3" fill={alt} />
108
+ </>
109
+ ),
110
+ // A radical over its radicand: a formula being set.
111
+ tex: (alt) => (
112
+ <>
113
+ <rect x="18.5" y="12" width="8.5" height="8.5" rx="1.6" fill={alt} />
114
+ <path
115
+ d="M4.5 15.5h3l3.6 8.2L16.8 7.5h10.4"
116
+ fill="none"
117
+ stroke="#ffffff"
118
+ strokeWidth="2.4"
119
+ strokeLinecap="round"
120
+ strokeLinejoin="round"
121
+ />
122
+ </>
123
+ ),
124
+ // The site's own favicon: two lobes of opposite phase overlapping end-on,
125
+ // the simplest sigma bond, in the phase palette its viewer renders with.
126
+ lcao: (alt) => (
127
+ <>
128
+ <path
129
+ d="M16 16C16 10.2 13.3 5 9 5S2 10.2 2 16s2.7 11 7 11 7-5.2 7-11z"
130
+ fill="#1565c0"
131
+ />
132
+ <path
133
+ d="M16 16c0 5.8 2.7 11 7 11s7-5.2 7-11-2.7-11-7-11-7 5.2-7 11z"
134
+ fill={alt}
135
+ />
136
+ <circle cx="16" cy="16" r="2.25" fill="#37474f" />
137
+ </>
138
+ ),
139
+ // The pattern that matches anything, which is where everyone starts.
140
+ regexp: (alt) => (
141
+ <text
142
+ x="50%"
143
+ y="53%"
144
+ dominantBaseline="central"
145
+ textAnchor="middle"
146
+ fontFamily="ui-monospace, SFMono-Regular, Menlo, monospace"
147
+ fontSize="18"
148
+ fontWeight="700"
149
+ fill={alt}
150
+ >
151
+ .*
152
+ </text>
153
+ ),
154
+ // Three residues of a chain, one of them the ligand you came for.
155
+ pdb: (alt) => (
156
+ <>
157
+ <g
158
+ stroke="#ffffff"
159
+ strokeWidth="1.9"
160
+ strokeLinecap="round"
161
+ fill="none"
162
+ opacity="0.85"
163
+ >
164
+ <path d="M9.2 12.4 22 15.4 15.6 23Z" />
165
+ </g>
166
+ <circle cx="9.2" cy="12.4" r="3.1" fill="#ffffff" />
167
+ <circle cx="22" cy="15.4" r="3.1" fill="#ffffff" />
168
+ <circle cx="15.6" cy="23" r="3.1" fill={alt} />
169
+ </>
170
+ ),
171
+ // The site's own favicon: a spectrum, and the one signal being assigned.
172
+ elucidation: (alt) => (
173
+ <>
174
+ <path
175
+ d="M5 24h4l2-11 2 11h4l2-15 2 15h3l1.5-7 1.5 7"
176
+ fill="none"
177
+ stroke="#ffffff"
178
+ strokeWidth="2"
179
+ strokeLinecap="round"
180
+ strokeLinejoin="round"
181
+ />
182
+ <circle cx="19" cy="9" r="3" fill={alt} />
183
+ </>
184
+ ),
185
+ // The site's own favicon: the double harpoon, one direction per colour.
186
+ equilibrium: (alt) => (
187
+ <g
188
+ fill="none"
189
+ strokeWidth="2.5"
190
+ strokeLinecap="round"
191
+ strokeLinejoin="round"
192
+ >
193
+ <path d="M6.5 12.5h17l-4-4" stroke="#ffffff" />
194
+ <path d="M25.5 19.5h-17l4 4" stroke={alt} />
195
+ </g>
196
+ ),
197
+ // A chain of monomers, one of them the comonomer written into it.
198
+ polycarp: (alt) => (
199
+ <>
200
+ <path
201
+ d="M6.5 20 12.5 12 19.5 20 25.5 12"
202
+ fill="none"
203
+ stroke="#ffffff"
204
+ strokeWidth="2"
205
+ strokeLinecap="round"
206
+ strokeLinejoin="round"
207
+ />
208
+ <circle cx="6.5" cy="20" r="3" fill="#ffffff" />
209
+ <circle cx="12.5" cy="12" r="3" fill="#ffffff" />
210
+ <circle cx="19.5" cy="20" r="3" fill={alt} />
211
+ <circle cx="25.5" cy="12" r="3" fill="#ffffff" />
212
+ </>
213
+ ),
214
+ // The stepped corner of the table, with the one cell a visitor has picked
215
+ // carrying the accent — which is what every tool of that site is: the table,
216
+ // and one element read off it.
217
+ pt: (alt) => (
218
+ <>
219
+ <g fill="#ffffff" opacity="0.55">
220
+ <rect x="5" y="6" width="5" height="5" rx="1" />
221
+ <rect x="22" y="6" width="5" height="5" rx="1" />
222
+ <rect x="5" y="12.5" width="5" height="5" rx="1" />
223
+ <rect x="11.75" y="12.5" width="5" height="5" rx="1" />
224
+ <rect x="18.5" y="12.5" width="5" height="5" rx="1" />
225
+ <rect x="5" y="19" width="5" height="5" rx="1" />
226
+ <rect x="11.75" y="19" width="5" height="5" rx="1" />
227
+ </g>
228
+ <rect x="18.5" y="19" width="8.5" height="5" rx="1" fill={alt} />
229
+ </>
230
+ ),
231
+ // A stereocentre: two bonds in the plane of the drawing and one wedged out
232
+ // of it, which is the whole of what this site does to a flat structure.
233
+ '3d': (alt) => (
234
+ <>
235
+ <path
236
+ d="M16 16 16 5.6M16 16 7.2 21.2"
237
+ fill="none"
238
+ stroke="#ffffff"
239
+ strokeWidth="2.4"
240
+ strokeLinecap="round"
241
+ />
242
+ <path d="M16 16 24.2 24 26.9 19.6Z" fill={alt} />
243
+ <circle cx="16" cy="16" r="2.9" fill="#ffffff" />
244
+ </>
245
+ ),
246
+ };
@@ -6,5 +6,9 @@ export type { EcosystemMenuProps } from './EcosystemMenu.tsx';
6
6
  export { EcosystemMenu } from './EcosystemMenu.tsx';
7
7
  export type { SiteMarkProps } from './marks.tsx';
8
8
  export { SiteMark } from './marks.tsx';
9
+ export type { SiteThemeProps } from './SiteTheme.tsx';
10
+ export { SiteTheme } from './SiteTheme.tsx';
9
11
  export type { SiteTileProps } from './SiteTile.tsx';
10
12
  export { SiteTile } from './SiteTile.tsx';
13
+ export type { WordmarkProps } from './Wordmark.tsx';
14
+ export { Wordmark } from './Wordmark.tsx';