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
@@ -0,0 +1,126 @@
1
+ /**
2
+ * Sampling a wavefunction onto a dense scalar field for the isosurface renderer.
3
+ *
4
+ * The memory order is a hard contract with molstar: `Tensor.Space([nx, ny, nz],
5
+ * [0, 1, 2])` reads `dataOffset = x·ny·nz + y·nz + z`, so **z varies fastest**.
6
+ * The loops below are written in exactly that order and
7
+ * {@link gridIndex} is the single place the arithmetic is spelled out.
8
+ */
9
+
10
+ import type { Vec3 } from './constants.ts';
11
+
12
+ /** An axis-aligned sampling box, ångström. */
13
+ export interface GridBox {
14
+ /** Lowest corner. */
15
+ origin: Vec3;
16
+ /** Edge lengths along x, y and z. */
17
+ size: Vec3;
18
+ }
19
+
20
+ /**
21
+ * A wavefunction, sampled at one point.
22
+ * @param x - Offset from the origin along x, ångström.
23
+ * @param y - Offset along y.
24
+ * @param z - Offset along z.
25
+ * @returns The amplitude, Å^(-3/2).
26
+ */
27
+ export type OrbitalEvaluator = (x: number, y: number, z: number) => number;
28
+
29
+ /** A sampled scalar field plus the statistics an isovalue is chosen from. */
30
+ export interface OrbitalGrid {
31
+ /** `nx·ny·nz` samples, z varying fastest. */
32
+ data: Float32Array;
33
+ /** `[nx, ny, nz]`. */
34
+ dimensions: [number, number, number];
35
+ /** Position of sample `(0, 0, 0)`, ångström. */
36
+ origin: Vec3;
37
+ /** Distance between neighbouring samples on every axis, ångström. */
38
+ spacing: number;
39
+ min: number;
40
+ max: number;
41
+ mean: number;
42
+ /** Population standard deviation of the samples. */
43
+ sigma: number;
44
+ }
45
+
46
+ /**
47
+ * Sample a wavefunction over a box.
48
+ * @param evaluate - the wavefunction, cartesian ångström in, amplitude out.
49
+ * @param box - the region to cover.
50
+ * @param resolution - samples along the longest edge; the spacing it implies is
51
+ * used on all three axes, so the voxels stay cubic.
52
+ * @returns the field, its layout and its single-pass statistics.
53
+ * @throws {Error} when `resolution` is below 2 or the box has no volume.
54
+ */
55
+ export function evaluateGrid(
56
+ evaluate: OrbitalEvaluator,
57
+ box: GridBox,
58
+ resolution: number,
59
+ ): OrbitalGrid {
60
+ if (resolution < 2) {
61
+ throw new Error('a grid needs at least 2 samples per axis');
62
+ }
63
+ const { origin, size } = box;
64
+ const longestEdge = Math.max(size.x, size.y, size.z);
65
+ if (!(longestEdge > 0)) {
66
+ throw new Error('the sampling box must have a non-zero edge');
67
+ }
68
+ const spacing = longestEdge / (resolution - 1);
69
+ const countX = axisCount(size.x, spacing);
70
+ const countY = axisCount(size.y, spacing);
71
+ const countZ = axisCount(size.z, spacing);
72
+ const data = new Float32Array(countX * countY * countZ);
73
+ let min = Infinity;
74
+ let max = -Infinity;
75
+ let sum = 0;
76
+ let sumSquares = 0;
77
+ let index = 0;
78
+ for (let indexX = 0; indexX < countX; indexX++) {
79
+ const x = origin.x + indexX * spacing;
80
+ for (let indexY = 0; indexY < countY; indexY++) {
81
+ const y = origin.y + indexY * spacing;
82
+ for (let indexZ = 0; indexZ < countZ; indexZ++) {
83
+ const value = Math.fround(evaluate(x, y, origin.z + indexZ * spacing));
84
+ data[index++] = value;
85
+ if (value < min) min = value;
86
+ if (value > max) max = value;
87
+ sum += value;
88
+ sumSquares += value * value;
89
+ }
90
+ }
91
+ }
92
+ const count = data.length;
93
+ const mean = sum / count;
94
+ const variance = sumSquares / count - mean * mean;
95
+ return {
96
+ data,
97
+ dimensions: [countX, countY, countZ],
98
+ origin: { x: origin.x, y: origin.y, z: origin.z },
99
+ spacing,
100
+ min,
101
+ max,
102
+ mean,
103
+ sigma: Math.sqrt(Math.max(variance, 0)),
104
+ };
105
+ }
106
+
107
+ /**
108
+ * Flat offset of a sample, the layout molstar expects.
109
+ * @param dimensions - `[nx, ny, nz]` of the grid.
110
+ * @param indexX - sample index along x.
111
+ * @param indexY - sample index along y.
112
+ * @param indexZ - sample index along z, the fastest-varying axis.
113
+ * @returns the index into {@link OrbitalGrid.data}.
114
+ */
115
+ export function gridIndex(
116
+ dimensions: [number, number, number],
117
+ indexX: number,
118
+ indexY: number,
119
+ indexZ: number,
120
+ ): number {
121
+ return (indexX * dimensions[1] + indexY) * dimensions[2] + indexZ;
122
+ }
123
+
124
+ function axisCount(edge: number, spacing: number): number {
125
+ return Math.max(2, Math.round(edge / spacing) + 1);
126
+ }
@@ -0,0 +1,222 @@
1
+ /**
2
+ * Hydrogen-like atomic orbitals: the exact one-electron solutions, scaled to an
3
+ * element by an effective nuclear charge.
4
+ *
5
+ * `R(r) = N (2Zr/na₀)^ℓ e^(−Zr/na₀) L^(2ℓ+1)_(n−ℓ−1)(2Zr/na₀)`
6
+ *
7
+ * The associated Laguerre polynomial is the whole point. The Slater orbital a
8
+ * hybridisation model uses is `r^(n−1) e^(−ζr)`, which is **nodeless**: it draws
9
+ * a 2s exactly like a 1s, only fatter. That is fine for a hybrid lobe, where
10
+ * only the outer contour is ever seen, and wrong for a picture whose subject is
11
+ * what an orbital looks like — `n − ℓ − 1` radial nodes and ℓ angular ones is
12
+ * the first thing a student is asked to count.
13
+ *
14
+ * Amplitudes are in Å^(-3/2) and distances in ångström, like everything else
15
+ * here, so `∫|ψ|² dV` over a grid measured in ångström is 1.
16
+ */
17
+
18
+ import { BOHR_IN_ANGSTROM, RYDBERG_ELECTRONVOLTS } from './constants.ts';
19
+ import {
20
+ assertQuantumNumbers,
21
+ bisectRoot,
22
+ factorial,
23
+ laguerre,
24
+ } from './numerics.ts';
25
+
26
+ /** Which hydrogen-like orbital, and how strongly it is bound. */
27
+ export interface HydrogenicParameters {
28
+ /** Principal quantum number, 1 and up. */
29
+ n: number;
30
+ /** Angular momentum quantum number, 0 to n − 1. */
31
+ l: number;
32
+ /** Effective nuclear charge, in units of the elementary charge. */
33
+ charge: number;
34
+ }
35
+
36
+ /**
37
+ * Radial nodes: spheres on which the wavefunction vanishes and changes sign.
38
+ * @param parameters - Which orbital.
39
+ * @returns `n − ℓ − 1`.
40
+ */
41
+ export function radialNodeCount(parameters: HydrogenicParameters): number {
42
+ return parameters.n - parameters.l - 1;
43
+ }
44
+
45
+ /**
46
+ * Mean distance of the electron from the nucleus,
47
+ * `⟨r⟩ = a₀(3n² − ℓ(ℓ+1)) / 2Z`.
48
+ * @param parameters - Which orbital.
49
+ * @returns The expectation value in ångström.
50
+ */
51
+ export function meanRadius(parameters: HydrogenicParameters): number {
52
+ const { n, l, charge } = parameters;
53
+ return (
54
+ (BOHR_IN_ANGSTROM * (3 * n * n - l * (l + 1))) /
55
+ (2 * Math.max(charge, 1e-6))
56
+ );
57
+ }
58
+
59
+ /**
60
+ * Orbital energy in the hydrogen-like model, `E = −13.6 Z²/n²` eV.
61
+ * @param parameters - Which orbital.
62
+ * @returns The energy in electronvolts, always negative.
63
+ */
64
+ export function orbitalEnergy(parameters: HydrogenicParameters): number {
65
+ const { n, charge } = parameters;
66
+ return (-RYDBERG_ELECTRONVOLTS * charge * charge) / (n * n);
67
+ }
68
+
69
+ /**
70
+ * Build the radial function `R(r)`, with every constant hoisted out so a grid
71
+ * sweep pays for the exponential and the polynomial only.
72
+ * @param parameters - Which orbital.
73
+ * @returns A function taking a distance in ångström and returning Å^(-3/2).
74
+ * @throws {Error} When the quantum numbers are not a real orbital, i.e. `n < 1` or
75
+ * `ℓ` outside `0 … n − 1`, or when the charge is not positive.
76
+ */
77
+ export function createRadialFunction(
78
+ parameters: HydrogenicParameters,
79
+ ): (distance: number) => number {
80
+ const { n, l, charge } = parameters;
81
+ assertQuantumNumbers(n, l);
82
+ if (!(charge > 0)) {
83
+ throw new RangeError(
84
+ `the effective charge must be positive, got ${charge}`,
85
+ );
86
+ }
87
+ const degree = n - l - 1;
88
+ const alpha = 2 * l + 1;
89
+ // ρ = 2Zr/(n a₀), with r in ångström, so a₀ appears once here and never again.
90
+ const rho = (2 * charge) / (n * BOHR_IN_ANGSTROM);
91
+ const normalisation = Math.sqrt(
92
+ rho * rho * rho * (factorial(degree) / (2 * n * factorial(n + l))),
93
+ );
94
+ return (distance) => {
95
+ const scaled = rho * distance;
96
+ return (
97
+ normalisation *
98
+ scaled ** l *
99
+ Math.exp(-scaled / 2) *
100
+ laguerre(degree, alpha, scaled)
101
+ );
102
+ };
103
+ }
104
+
105
+ /**
106
+ * Evaluate the radial function once.
107
+ * @param parameters - Which orbital.
108
+ * @param distance - Distance from the nucleus, ångström.
109
+ * @returns The radial amplitude, Å^(-3/2).
110
+ */
111
+ export function radialAmplitude(
112
+ parameters: HydrogenicParameters,
113
+ distance: number,
114
+ ): number {
115
+ return createRadialFunction(parameters)(distance);
116
+ }
117
+
118
+ /**
119
+ * Where the radial nodes actually are.
120
+ *
121
+ * The `n − ℓ − 1` roots are bracketed by scanning outwards and then bisected,
122
+ * rather than solved for, because the Laguerre roots have no closed form past
123
+ * the quadratic and a bisection on a function we already evaluate cannot drift
124
+ * out of step with what is drawn.
125
+ * @param parameters - Which orbital.
126
+ * @param limit - Distance to search out to, ångström. Defaults to a box that
127
+ * comfortably holds the outermost node.
128
+ * @returns The node radii in ångström, ascending; empty for a nodeless orbital.
129
+ */
130
+ export function radialNodeRadii(
131
+ parameters: HydrogenicParameters,
132
+ limit = meanRadius(parameters) * 3,
133
+ ): number[] {
134
+ const expected = radialNodeCount(parameters);
135
+ if (expected === 0) return [];
136
+ const radial = createRadialFunction(parameters);
137
+ const radii: number[] = [];
138
+ const steps = 4000;
139
+ let previousDistance = 1e-6;
140
+ let previous = radial(previousDistance);
141
+ for (let step = 1; step <= steps; step++) {
142
+ const distance = (limit * step) / steps;
143
+ const value = radial(distance);
144
+ if (previous === 0 || previous < 0 !== value < 0) {
145
+ radii.push(bisectRoot(radial, previousDistance, distance));
146
+ if (radii.length === expected) break;
147
+ }
148
+ previousDistance = distance;
149
+ previous = value;
150
+ }
151
+ return radii;
152
+ }
153
+
154
+ /**
155
+ * Smallest sphere holding a given share of the electron.
156
+ *
157
+ * Used to size the sampling box: too small clips the orbital at a face, too
158
+ * large wastes the grid on empty space, and both are visible on screen.
159
+ * @param parameters - Which orbital.
160
+ * @param fraction - Share of `∫ r²R² dr` to enclose, between 0 and 1.
161
+ * @returns The radius in ångström.
162
+ * @throws {Error} When `fraction` is outside `(0, 1)`.
163
+ */
164
+ export function enclosingRadius(
165
+ parameters: HydrogenicParameters,
166
+ fraction: number,
167
+ ): number {
168
+ if (!(fraction > 0) || fraction >= 1) {
169
+ throw new RangeError(`the enclosed fraction must be in (0, 1)`);
170
+ }
171
+ const radial = createRadialFunction(parameters);
172
+ // The tail decays as e^(−2Zr/n a₀); ten mean radii is far past every node.
173
+ const limit = meanRadius(parameters) * 10;
174
+ const steps = 4000;
175
+ const step = limit / steps;
176
+ const weights = new Float64Array(steps + 1);
177
+ let total = 0;
178
+ for (let index = 0; index <= steps; index++) {
179
+ const distance = index * step;
180
+ const value = radial(distance);
181
+ const weight = value * value * distance * distance;
182
+ weights[index] = weight;
183
+ total += weight;
184
+ }
185
+ if (total === 0) return limit;
186
+ let running = 0;
187
+ const target = total * fraction;
188
+ for (let index = 0; index <= steps; index++) {
189
+ running += weights[index] as number;
190
+ if (running >= target) return index * step;
191
+ }
192
+ return limit;
193
+ }
194
+
195
+ /**
196
+ * Sample the radial distribution `P(r) = r²R(r)²` — the curve whose zeroes are
197
+ * the radial nodes and whose area is the electron.
198
+ * @param parameters - Which orbital.
199
+ * @param limit - Distance to sample out to, ångström.
200
+ * @param count - Number of samples, at least 2.
201
+ * @returns Distances and the amplitude `R`, plus `P`, at each of them.
202
+ * @throws {Error} When `count` is below 2.
203
+ */
204
+ export function radialProfile(
205
+ parameters: HydrogenicParameters,
206
+ limit: number,
207
+ count: number,
208
+ ): { distances: Float64Array; amplitude: Float64Array; density: Float64Array } {
209
+ if (count < 2) throw new RangeError('a radial profile needs 2 samples');
210
+ const radial = createRadialFunction(parameters);
211
+ const distances = new Float64Array(count);
212
+ const amplitude = new Float64Array(count);
213
+ const density = new Float64Array(count);
214
+ for (let index = 0; index < count; index++) {
215
+ const distance = (limit * index) / (count - 1);
216
+ const value = radial(distance);
217
+ distances[index] = distance;
218
+ amplitude[index] = value;
219
+ density[index] = value * value * distance * distance;
220
+ }
221
+ return { distances, amplitude, density };
222
+ }
@@ -0,0 +1,63 @@
1
+ export type { ResolutionLimits } from './atomicGrid.ts';
2
+ export { atomicGridResolution } from './atomicGrid.ts';
3
+ export type { AtomicOrbital, AtomicOrbitalOptions } from './atomicOrbitals.ts';
4
+ export {
5
+ atomicOrbitalsOf,
6
+ defaultOrbitalId,
7
+ findAtomicOrbital,
8
+ hydrogenicParametersOf,
9
+ } from './atomicOrbitals.ts';
10
+ export type { Vec3 } from './constants.ts';
11
+ export { BOHR_IN_ANGSTROM, RYDBERG_ELECTRONVOLTS } from './constants.ts';
12
+ export type { Subshell, SubshellOccupancy } from './electronConfiguration.ts';
13
+ export {
14
+ ELEMENT_ANOMALIES,
15
+ HIGHEST_ATOMIC_NUMBER,
16
+ MADELUNG_ORDER,
17
+ NOBLE_GASES,
18
+ aufbauConfigurationOf,
19
+ configurationOf,
20
+ coreAtomicNumber,
21
+ formatConfiguration,
22
+ formatOccupancy,
23
+ isAnomalous,
24
+ subshellCapacity,
25
+ subshellLabel,
26
+ } from './electronConfiguration.ts';
27
+ export type { GridBox, OrbitalEvaluator, OrbitalGrid } from './grid.ts';
28
+ export { evaluateGrid, gridIndex } from './grid.ts';
29
+ export type { OrbitalContour } from './isovalue.ts';
30
+ export { enclosedReach, isocontourCutoff, orbitalContour } from './isovalue.ts';
31
+ export type { HydrogenicParameters } from './hydrogenic.ts';
32
+ export {
33
+ createRadialFunction,
34
+ enclosingRadius,
35
+ meanRadius,
36
+ orbitalEnergy,
37
+ radialAmplitude,
38
+ radialNodeCount,
39
+ radialNodeRadii,
40
+ radialProfile,
41
+ } from './hydrogenic.ts';
42
+ export {
43
+ hundDistribution,
44
+ outermostShell,
45
+ withoutOutermostElectron,
46
+ } from './occupancy.ts';
47
+ export type { PhasePalette, PhasePaletteId } from './palette.ts';
48
+ export { DEFAULT_PHASE_PALETTE_ID, PHASE_PALETTES } from './palette.ts';
49
+ export type { RealHarmonic } from './realHarmonics.ts';
50
+ export {
51
+ REAL_HARMONICS,
52
+ SUBSHELL_LETTERS,
53
+ harmonicsOf,
54
+ subshellLetter,
55
+ } from './realHarmonics.ts';
56
+ export type {
57
+ AtomicSampleRequest,
58
+ AtomicSampleResult,
59
+ AtomicSampler,
60
+ } from './sample.ts';
61
+ export { runAtomicSample } from './sample.ts';
62
+ export type { Screening } from './screening.ts';
63
+ export { slaterScreening } from './screening.ts';
@@ -0,0 +1,146 @@
1
+ /**
2
+ * Choosing the value a signed wavefunction's isosurface is drawn at.
3
+ *
4
+ * The surface is named by how much of the electron it holds, not by an
5
+ * amplitude: `ENCLOSED_WEIGHT` of `∫|ψ|² dV` inside it and the tail
6
+ * outside. On a uniform grid that is a weighted quantile of the samples, and
7
+ * the isovalue is the `|ψ|` at which the quantile falls.
8
+ *
9
+ * molstar ships `computeOrbitalIsocontourValues` for the same job, and it
10
+ * cannot be used here. It abandons any field whose mean `ψ²` is under an
11
+ * absolute `1e-5` and returns no isovalue at all — a guard against degenerate
12
+ * data that instead reads the amplitude *scale*. Amplitudes are Å^(-3/2), so a
13
+ * diffuse orbital is normalised straight into that range and draws nothing:
14
+ * caesium's 6s reaches 13 Å, and 2588 of the 7460 orbitals lcao.cheminfo.org
15
+ * offers came back blank. A quantile has no scale of its own and cannot.
16
+ *
17
+ * Every pass below touches each of the million-odd samples, so all of them are
18
+ * indexed loops: `for…of` over a `Float32Array` measures 6.7× slower.
19
+ */
20
+
21
+ import { ENCLOSED_WEIGHT } from './constants.ts';
22
+ import type { OrbitalGrid } from './grid.ts';
23
+
24
+ /**
25
+ * The `|ψ|` whose surface encloses a given share of the sampled electron.
26
+ * @param data - The sampled amplitudes.
27
+ * @param enclosedWeight - Share of `∑ψ²` to hold inside, between 0 and 1.
28
+ * @returns The isovalue, or 0 when the field is empty — a nodeless orbital
29
+ * sampled where it has no amplitude at all.
30
+ * @throws {Error} When `enclosedWeight` is outside `(0, 1)`.
31
+ */
32
+ export function isocontourCutoff(
33
+ data: Float32Array,
34
+ enclosedWeight: number = ENCLOSED_WEIGHT,
35
+ ): number {
36
+ if (!(enclosedWeight > 0) || enclosedWeight >= 1) {
37
+ throw new RangeError('the enclosed weight must be in (0, 1)');
38
+ }
39
+ let total = 0;
40
+ let peak = 0;
41
+ for (let index = data.length - 1; index >= 0; index--) {
42
+ const value = data[index] as number;
43
+ const weight = value * value;
44
+ total += weight;
45
+ if (weight > peak) peak = weight;
46
+ }
47
+ if (!(total > 0)) return 0;
48
+
49
+ // Bins are logarithmic because a wavefunction spans decades between its peak
50
+ // and its tail while the isovalue sits far below the peak: linear bins would
51
+ // drop every sample that decides the answer into the first one.
52
+ const bins = new Float64Array(BIN_COUNT);
53
+ const peakLogarithm = Math.log2(peak);
54
+ for (let index = data.length - 1; index >= 0; index--) {
55
+ const value = data[index] as number;
56
+ const weight = value * value;
57
+ if (weight === 0) continue;
58
+ const bin = Math.floor(
59
+ (peakLogarithm - Math.log2(weight)) * BINS_PER_OCTAVE,
60
+ );
61
+ const clamped = bin < 0 ? 0 : Math.min(bin, BIN_COUNT - 1);
62
+ bins[clamped] = (bins[clamped] as number) + weight;
63
+ }
64
+
65
+ const target = total * enclosedWeight;
66
+ let running = 0;
67
+ for (let bin = 0; bin < BIN_COUNT; bin++) {
68
+ running += bins[bin] as number;
69
+ // Everything above this bin's lower edge is what has just been counted.
70
+ if (running >= target) {
71
+ return Math.sqrt(peak * 2 ** (-(bin + 1) / BINS_PER_OCTAVE));
72
+ }
73
+ }
74
+ return 0;
75
+ }
76
+
77
+ /**
78
+ * How far from the centre of the box the drawn surface actually reaches.
79
+ *
80
+ * Molstar sizes a volume representation's bounding sphere from the whole
81
+ * sampled box, which is deliberately larger than the isosurface inside it, so a
82
+ * camera framing that sphere leaves the orbital a quarter of the frame wide.
83
+ * Measuring the samples that are really enclosed gives the camera the extent it
84
+ * has to fill.
85
+ * @param field - The sampled field.
86
+ * @param cutoff - The isovalue the surfaces are drawn at.
87
+ * @returns The reach in ångström, or 0 when nothing is enclosed.
88
+ */
89
+ export function enclosedReach(field: OrbitalGrid, cutoff: number): number {
90
+ if (!(cutoff > 0)) return 0;
91
+ const { data, dimensions, origin, spacing } = field;
92
+ const [countX, countY, countZ] = dimensions;
93
+ const centreX = origin.x + ((countX - 1) * spacing) / 2;
94
+ const centreY = origin.y + ((countY - 1) * spacing) / 2;
95
+ const centreZ = origin.z + ((countZ - 1) * spacing) / 2;
96
+ let furthest = 0;
97
+ let index = 0;
98
+ for (let indexX = 0; indexX < countX; indexX++) {
99
+ const dx = origin.x + indexX * spacing - centreX;
100
+ for (let indexY = 0; indexY < countY; indexY++) {
101
+ const dy = origin.y + indexY * spacing - centreY;
102
+ for (let indexZ = 0; indexZ < countZ; indexZ++) {
103
+ const value = data[index++] as number;
104
+ if (value < cutoff && value > -cutoff) continue;
105
+ const dz = origin.z + indexZ * spacing - centreZ;
106
+ const squared = dx * dx + dy * dy + dz * dz;
107
+ if (squared > furthest) furthest = squared;
108
+ }
109
+ }
110
+ }
111
+ return Math.sqrt(furthest);
112
+ }
113
+
114
+ /** Which isovalue each phase is drawn at, and how far the pair reaches. */
115
+ export interface OrbitalContour {
116
+ /** `|ψ|` on the surface; 0 when there is nothing to draw. */
117
+ cutoff: number;
118
+ /** Distance from the centre of the box to the outermost enclosed sample. */
119
+ reach: number;
120
+ }
121
+
122
+ /**
123
+ * The isovalue and the extent of one sampled orbital's surface pair.
124
+ *
125
+ * Both phases come from one cutoff, so they can never disagree about where the
126
+ * node between them is.
127
+ * @param field - The sampled field.
128
+ * @param enclosedWeight - Share of `∑ψ²` to hold inside.
129
+ * @returns See {@link OrbitalContour}.
130
+ */
131
+ export function orbitalContour(
132
+ field: OrbitalGrid,
133
+ enclosedWeight: number = ENCLOSED_WEIGHT,
134
+ ): OrbitalContour {
135
+ const cutoff = isocontourCutoff(field.data, enclosedWeight);
136
+ return { cutoff, reach: enclosedReach(field, cutoff) };
137
+ }
138
+
139
+ /**
140
+ * Bins per doubling of `ψ²`, so the isovalue lands within 2.2% in `|ψ|`.
141
+ * Finer than the grid spacing can resolve on the surface it produces.
142
+ */
143
+ const BINS_PER_OCTAVE = 16;
144
+
145
+ /** 128 octaves of `ψ²`, far past the dynamic range of a sampled orbital. */
146
+ const BIN_COUNT = 2048;
@@ -0,0 +1,79 @@
1
+ /**
2
+ * The numerical machinery the radial functions are built on.
3
+ *
4
+ * Kept apart from `hydrogenic.ts` so that file reads as the physics it is —
5
+ * `R(r)`, `⟨r⟩`, the nodes, the enclosing sphere — with none of it buried under
6
+ * a polynomial recurrence and a bisection.
7
+ */
8
+
9
+ /**
10
+ * The generalised Laguerre polynomial `L^α_k(x)`, by its three-term recurrence.
11
+ *
12
+ * The closed form overflows well before `n = 7`; `k` is at most 6 here.
13
+ * @param degree - Degree `k` of the polynomial.
14
+ * @param alpha - Order `α` of the polynomial.
15
+ * @param x - Where to evaluate it.
16
+ * @returns The value of the polynomial.
17
+ */
18
+ export function laguerre(degree: number, alpha: number, x: number): number {
19
+ if (degree === 0) return 1;
20
+ let previous = 1;
21
+ let current = 1 + alpha - x;
22
+ for (let index = 1; index < degree; index++) {
23
+ const next =
24
+ ((2 * index + 1 + alpha - x) * current - (index + alpha) * previous) /
25
+ (index + 1);
26
+ previous = current;
27
+ current = next;
28
+ }
29
+ return current;
30
+ }
31
+
32
+ /**
33
+ * The root of a function inside a bracket it already changes sign over.
34
+ * @param radial - The function to find a zero of.
35
+ * @param low - Lower end of the bracket.
36
+ * @param high - Upper end.
37
+ * @returns The root, to about a picometre.
38
+ */
39
+ export function bisectRoot(
40
+ radial: (distance: number) => number,
41
+ low: number,
42
+ high: number,
43
+ ): number {
44
+ let left = low;
45
+ let right = high;
46
+ const leftSign = radial(left) < 0;
47
+ for (let step = 0; step < 60 && right - left > 1e-9; step++) {
48
+ const middle = (left + right) / 2;
49
+ if (radial(middle) < 0 === leftSign) left = middle;
50
+ else right = middle;
51
+ }
52
+ return (left + right) / 2;
53
+ }
54
+
55
+ /**
56
+ * Reject quantum numbers that are not a real orbital.
57
+ * @param n - Principal quantum number.
58
+ * @param l - Angular momentum quantum number.
59
+ * @throws {RangeError} When `n < 1`, or ℓ is outside `0 … n − 1`.
60
+ */
61
+ export function assertQuantumNumbers(n: number, l: number): void {
62
+ if (!Number.isInteger(n) || n < 1) {
63
+ throw new RangeError(`the principal quantum number must be 1 or more`);
64
+ }
65
+ if (!Number.isInteger(l) || l < 0 || l >= n) {
66
+ throw new RangeError(`ℓ must be between 0 and ${n - 1} for n = ${n}`);
67
+ }
68
+ }
69
+
70
+ /**
71
+ * The factorial of a small non-negative integer.
72
+ * @param value - The integer.
73
+ * @returns Its factorial.
74
+ */
75
+ export function factorial(value: number): number {
76
+ let result = 1;
77
+ for (let index = 2; index <= value; index++) result *= index;
78
+ return result;
79
+ }