react-cheminfo 0.3.0 → 0.4.1

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 (844) hide show
  1. package/README.md +111 -23
  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 +11 -0
  134. package/lib/core.d.ts.map +1 -1
  135. package/lib/core.js +11 -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 +32 -0
  222. package/lib/ecosystem/core/lookup.d.ts.map +1 -0
  223. package/lib/ecosystem/core/lookup.js +55 -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 +18 -3
  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.js +1 -1
  242. package/lib/ecosystem/ui/glyphs.js.map +1 -1
  243. package/lib/ecosystem/ui/index.d.ts +4 -0
  244. package/lib/ecosystem/ui/index.d.ts.map +1 -1
  245. package/lib/ecosystem/ui/index.js +2 -0
  246. package/lib/ecosystem/ui/index.js.map +1 -1
  247. package/lib/ecosystem/ui/marks.d.ts +30 -4
  248. package/lib/ecosystem/ui/marks.d.ts.map +1 -1
  249. package/lib/ecosystem/ui/marks.js +13 -3
  250. package/lib/ecosystem/ui/marks.js.map +1 -1
  251. package/lib/error/ui/ErrorBoundary.d.ts +60 -0
  252. package/lib/error/ui/ErrorBoundary.d.ts.map +1 -0
  253. package/lib/error/ui/ErrorBoundary.js +59 -0
  254. package/lib/error/ui/ErrorBoundary.js.map +1 -0
  255. package/lib/error/ui/ErrorFallback.d.ts +38 -0
  256. package/lib/error/ui/ErrorFallback.d.ts.map +1 -0
  257. package/lib/error/ui/ErrorFallback.js +16 -0
  258. package/lib/error/ui/ErrorFallback.js.map +1 -0
  259. package/lib/error/ui/index.d.ts +5 -0
  260. package/lib/error/ui/index.d.ts.map +1 -0
  261. package/lib/error/ui/index.js +3 -0
  262. package/lib/error/ui/index.js.map +1 -0
  263. package/lib/error/ui/toError.d.ts +11 -0
  264. package/lib/error/ui/toError.d.ts.map +1 -0
  265. package/lib/error/ui/toError.js +35 -0
  266. package/lib/error/ui/toError.js.map +1 -0
  267. package/lib/format/core/index.d.ts +5 -0
  268. package/lib/format/core/index.d.ts.map +1 -0
  269. package/lib/format/core/index.js +5 -0
  270. package/lib/format/core/index.js.map +1 -0
  271. package/lib/format/core/missing.d.ts +7 -0
  272. package/lib/format/core/missing.d.ts.map +1 -0
  273. package/lib/format/core/missing.js +7 -0
  274. package/lib/format/core/missing.js.map +1 -0
  275. package/lib/format/core/numbers.d.ts +40 -0
  276. package/lib/format/core/numbers.d.ts.map +1 -0
  277. package/lib/format/core/numbers.js +81 -0
  278. package/lib/format/core/numbers.js.map +1 -0
  279. package/lib/format/core/units.d.ts +17 -0
  280. package/lib/format/core/units.d.ts.map +1 -0
  281. package/lib/format/core/units.js +54 -0
  282. package/lib/format/core/units.js.map +1 -0
  283. package/lib/format/core/words.d.ts +12 -0
  284. package/lib/format/core/words.d.ts.map +1 -0
  285. package/lib/format/core/words.js +14 -0
  286. package/lib/format/core/words.js.map +1 -0
  287. package/lib/help/ui/HelpBody.d.ts +57 -0
  288. package/lib/help/ui/HelpBody.d.ts.map +1 -0
  289. package/lib/help/ui/HelpBody.js +44 -0
  290. package/lib/help/ui/HelpBody.js.map +1 -0
  291. package/lib/help/ui/HelpIcon.d.ts +33 -0
  292. package/lib/help/ui/HelpIcon.d.ts.map +1 -0
  293. package/lib/help/ui/HelpIcon.js +16 -0
  294. package/lib/help/ui/HelpIcon.js.map +1 -0
  295. package/lib/help/ui/HelpToolbarButton.d.ts +45 -0
  296. package/lib/help/ui/HelpToolbarButton.d.ts.map +1 -0
  297. package/lib/help/ui/HelpToolbarButton.js +17 -0
  298. package/lib/help/ui/HelpToolbarButton.js.map +1 -0
  299. package/lib/help/ui/HelpTooltip.d.ts +36 -0
  300. package/lib/help/ui/HelpTooltip.d.ts.map +1 -0
  301. package/lib/help/ui/HelpTooltip.js +24 -0
  302. package/lib/help/ui/HelpTooltip.js.map +1 -0
  303. package/lib/help/ui/index.d.ts +9 -0
  304. package/lib/help/ui/index.d.ts.map +1 -0
  305. package/lib/help/ui/index.js +5 -0
  306. package/lib/help/ui/index.js.map +1 -0
  307. package/lib/hooks/ui/index.d.ts +7 -0
  308. package/lib/hooks/ui/index.d.ts.map +1 -0
  309. package/lib/hooks/ui/index.js +5 -0
  310. package/lib/hooks/ui/index.js.map +1 -0
  311. package/lib/hooks/ui/listNavigation.d.ts +54 -0
  312. package/lib/hooks/ui/listNavigation.d.ts.map +1 -0
  313. package/lib/hooks/ui/listNavigation.js +77 -0
  314. package/lib/hooks/ui/listNavigation.js.map +1 -0
  315. package/lib/hooks/ui/useContainerSize.d.ts +15 -0
  316. package/lib/hooks/ui/useContainerSize.d.ts.map +1 -0
  317. package/lib/hooks/ui/useContainerSize.js +24 -0
  318. package/lib/hooks/ui/useContainerSize.js.map +1 -0
  319. package/lib/hooks/ui/useDebouncedValue.d.ts +12 -0
  320. package/lib/hooks/ui/useDebouncedValue.d.ts.map +1 -0
  321. package/lib/hooks/ui/useDebouncedValue.js +24 -0
  322. package/lib/hooks/ui/useDebouncedValue.js.map +1 -0
  323. package/lib/hooks/ui/useListKeyboardNavigation.d.ts +17 -0
  324. package/lib/hooks/ui/useListKeyboardNavigation.d.ts.map +1 -0
  325. package/lib/hooks/ui/useListKeyboardNavigation.js +25 -0
  326. package/lib/hooks/ui/useListKeyboardNavigation.js.map +1 -0
  327. package/lib/hooks/ui/useResizeObserver.d.ts +20 -0
  328. package/lib/hooks/ui/useResizeObserver.d.ts.map +1 -0
  329. package/lib/hooks/ui/useResizeObserver.js +37 -0
  330. package/lib/hooks/ui/useResizeObserver.js.map +1 -0
  331. package/lib/orbital/core/atomicGrid.d.ts +27 -0
  332. package/lib/orbital/core/atomicGrid.d.ts.map +1 -1
  333. package/lib/orbital/core/atomicGrid.js +37 -1
  334. package/lib/orbital/core/atomicGrid.js.map +1 -1
  335. package/lib/orbital/core/index.d.ts +9 -7
  336. package/lib/orbital/core/index.d.ts.map +1 -1
  337. package/lib/orbital/core/index.js +7 -6
  338. package/lib/orbital/core/index.js.map +1 -1
  339. package/lib/orbital/core/isovalue.d.ts +60 -0
  340. package/lib/orbital/core/isovalue.d.ts.map +1 -0
  341. package/lib/orbital/core/isovalue.js +128 -0
  342. package/lib/orbital/core/isovalue.js.map +1 -0
  343. package/lib/orbital/core/sample.d.ts +15 -1
  344. package/lib/orbital/core/sample.d.ts.map +1 -1
  345. package/lib/orbital/core/sample.js +10 -3
  346. package/lib/orbital/core/sample.js.map +1 -1
  347. package/lib/orbital/ui/AtomicOrbitalCanvas.d.ts +6 -1
  348. package/lib/orbital/ui/AtomicOrbitalCanvas.d.ts.map +1 -1
  349. package/lib/orbital/ui/AtomicOrbitalCanvas.js +12 -2
  350. package/lib/orbital/ui/AtomicOrbitalCanvas.js.map +1 -1
  351. package/lib/orbital/ui/AtomicOrbitalViewer.d.ts +5 -1
  352. package/lib/orbital/ui/AtomicOrbitalViewer.d.ts.map +1 -1
  353. package/lib/orbital/ui/AtomicOrbitalViewer.js.map +1 -1
  354. package/lib/orbital/ui/renderVolume.d.ts +6 -3
  355. package/lib/orbital/ui/renderVolume.d.ts.map +1 -1
  356. package/lib/orbital/ui/renderVolume.js +14 -15
  357. package/lib/orbital/ui/renderVolume.js.map +1 -1
  358. package/lib/orbital/ui/viewer.d.ts +3 -1
  359. package/lib/orbital/ui/viewer.d.ts.map +1 -1
  360. package/lib/orbital/ui/viewer.js +3 -2
  361. package/lib/orbital/ui/viewer.js.map +1 -1
  362. package/lib/orbital/ui/volumeField.d.ts +5 -21
  363. package/lib/orbital/ui/volumeField.d.ts.map +1 -1
  364. package/lib/orbital/ui/volumeField.js +5 -45
  365. package/lib/orbital/ui/volumeField.js.map +1 -1
  366. package/lib/pedagogy/core/glossary.d.ts +79 -0
  367. package/lib/pedagogy/core/glossary.d.ts.map +1 -0
  368. package/lib/pedagogy/core/glossary.js +71 -0
  369. package/lib/pedagogy/core/glossary.js.map +1 -0
  370. package/lib/pedagogy/core/index.d.ts +8 -0
  371. package/lib/pedagogy/core/index.d.ts.map +1 -0
  372. package/lib/pedagogy/core/index.js +4 -0
  373. package/lib/pedagogy/core/index.js.map +1 -0
  374. package/lib/pedagogy/core/jsonStorage.d.ts +21 -0
  375. package/lib/pedagogy/core/jsonStorage.d.ts.map +1 -0
  376. package/lib/pedagogy/core/jsonStorage.js +55 -0
  377. package/lib/pedagogy/core/jsonStorage.js.map +1 -0
  378. package/lib/pedagogy/core/progress.d.ts +116 -0
  379. package/lib/pedagogy/core/progress.d.ts.map +1 -0
  380. package/lib/pedagogy/core/progress.js +122 -0
  381. package/lib/pedagogy/core/progress.js.map +1 -0
  382. package/lib/pedagogy/core/types.d.ts +74 -0
  383. package/lib/pedagogy/core/types.d.ts.map +1 -0
  384. package/lib/pedagogy/core/types.js +8 -0
  385. package/lib/pedagogy/core/types.js.map +1 -0
  386. package/lib/pedagogy/core/validation.d.ts +79 -0
  387. package/lib/pedagogy/core/validation.d.ts.map +1 -0
  388. package/lib/pedagogy/core/validation.js +47 -0
  389. package/lib/pedagogy/core/validation.js.map +1 -0
  390. package/lib/pedagogy/ui/ExerciseActions.d.ts +74 -0
  391. package/lib/pedagogy/ui/ExerciseActions.d.ts.map +1 -0
  392. package/lib/pedagogy/ui/ExerciseActions.js +22 -0
  393. package/lib/pedagogy/ui/ExerciseActions.js.map +1 -0
  394. package/lib/pedagogy/ui/ExerciseProgressHeader.d.ts +43 -0
  395. package/lib/pedagogy/ui/ExerciseProgressHeader.d.ts.map +1 -0
  396. package/lib/pedagogy/ui/ExerciseProgressHeader.js +43 -0
  397. package/lib/pedagogy/ui/ExerciseProgressHeader.js.map +1 -0
  398. package/lib/pedagogy/ui/ExerciseTags.d.ts +49 -0
  399. package/lib/pedagogy/ui/ExerciseTags.d.ts.map +1 -0
  400. package/lib/pedagogy/ui/ExerciseTags.js +22 -0
  401. package/lib/pedagogy/ui/ExerciseTags.js.map +1 -0
  402. package/lib/pedagogy/ui/GlossaryProvider.d.ts +19 -0
  403. package/lib/pedagogy/ui/GlossaryProvider.d.ts.map +1 -0
  404. package/lib/pedagogy/ui/GlossaryProvider.js +16 -0
  405. package/lib/pedagogy/ui/GlossaryProvider.js.map +1 -0
  406. package/lib/pedagogy/ui/GlossaryText.d.ts +50 -0
  407. package/lib/pedagogy/ui/GlossaryText.d.ts.map +1 -0
  408. package/lib/pedagogy/ui/GlossaryText.js +79 -0
  409. package/lib/pedagogy/ui/GlossaryText.js.map +1 -0
  410. package/lib/pedagogy/ui/HintLadder.d.ts +38 -0
  411. package/lib/pedagogy/ui/HintLadder.d.ts.map +1 -0
  412. package/lib/pedagogy/ui/HintLadder.js +33 -0
  413. package/lib/pedagogy/ui/HintLadder.js.map +1 -0
  414. package/lib/pedagogy/ui/ReferenceGrid.d.ts +31 -0
  415. package/lib/pedagogy/ui/ReferenceGrid.d.ts.map +1 -0
  416. package/lib/pedagogy/ui/ReferenceGrid.js +25 -0
  417. package/lib/pedagogy/ui/ReferenceGrid.js.map +1 -0
  418. package/lib/pedagogy/ui/ReferenceSectionBlock.d.ts +64 -0
  419. package/lib/pedagogy/ui/ReferenceSectionBlock.d.ts.map +1 -0
  420. package/lib/pedagogy/ui/ReferenceSectionBlock.js +78 -0
  421. package/lib/pedagogy/ui/ReferenceSectionBlock.js.map +1 -0
  422. package/lib/pedagogy/ui/SyntaxTooltip.d.ts +94 -0
  423. package/lib/pedagogy/ui/SyntaxTooltip.d.ts.map +1 -0
  424. package/lib/pedagogy/ui/SyntaxTooltip.js +79 -0
  425. package/lib/pedagogy/ui/SyntaxTooltip.js.map +1 -0
  426. package/lib/pedagogy/ui/TestCaseList.d.ts +35 -0
  427. package/lib/pedagogy/ui/TestCaseList.d.ts.map +1 -0
  428. package/lib/pedagogy/ui/TestCaseList.js +63 -0
  429. package/lib/pedagogy/ui/TestCaseList.js.map +1 -0
  430. package/lib/pedagogy/ui/TutorialStepStrip.d.ts +42 -0
  431. package/lib/pedagogy/ui/TutorialStepStrip.d.ts.map +1 -0
  432. package/lib/pedagogy/ui/TutorialStepStrip.js +98 -0
  433. package/lib/pedagogy/ui/TutorialStepStrip.js.map +1 -0
  434. package/lib/pedagogy/ui/exerciseMeta.d.ts +24 -0
  435. package/lib/pedagogy/ui/exerciseMeta.d.ts.map +1 -0
  436. package/lib/pedagogy/ui/exerciseMeta.js +38 -0
  437. package/lib/pedagogy/ui/exerciseMeta.js.map +1 -0
  438. package/lib/pedagogy/ui/glossaryContext.d.ts +17 -0
  439. package/lib/pedagogy/ui/glossaryContext.d.ts.map +1 -0
  440. package/lib/pedagogy/ui/glossaryContext.js +19 -0
  441. package/lib/pedagogy/ui/glossaryContext.js.map +1 -0
  442. package/lib/pedagogy/ui/index.d.ts +27 -0
  443. package/lib/pedagogy/ui/index.d.ts.map +1 -0
  444. package/lib/pedagogy/ui/index.js +15 -0
  445. package/lib/pedagogy/ui/index.js.map +1 -0
  446. package/lib/pedagogy/ui/tutorialLevels.d.ts +18 -0
  447. package/lib/pedagogy/ui/tutorialLevels.d.ts.map +1 -0
  448. package/lib/pedagogy/ui/tutorialLevels.js +14 -0
  449. package/lib/pedagogy/ui/tutorialLevels.js.map +1 -0
  450. package/lib/router/core/address.d.ts +42 -0
  451. package/lib/router/core/address.d.ts.map +1 -0
  452. package/lib/router/core/address.js +64 -0
  453. package/lib/router/core/address.js.map +1 -0
  454. package/lib/router/core/basePath.d.ts +49 -0
  455. package/lib/router/core/basePath.d.ts.map +1 -0
  456. package/lib/router/core/basePath.js +78 -0
  457. package/lib/router/core/basePath.js.map +1 -0
  458. package/lib/router/core/index.d.ts +8 -0
  459. package/lib/router/core/index.d.ts.map +1 -0
  460. package/lib/router/core/index.js +5 -0
  461. package/lib/router/core/index.js.map +1 -0
  462. package/lib/router/core/legacyHash.d.ts +45 -0
  463. package/lib/router/core/legacyHash.d.ts.map +1 -0
  464. package/lib/router/core/legacyHash.js +50 -0
  465. package/lib/router/core/legacyHash.js.map +1 -0
  466. package/lib/router/core/pageAddresses.d.ts +50 -0
  467. package/lib/router/core/pageAddresses.d.ts.map +1 -0
  468. package/lib/router/core/pageAddresses.js +56 -0
  469. package/lib/router/core/pageAddresses.js.map +1 -0
  470. package/lib/router/core/query.d.ts +41 -0
  471. package/lib/router/core/query.d.ts.map +1 -0
  472. package/lib/router/core/query.js +64 -0
  473. package/lib/router/core/query.js.map +1 -0
  474. package/lib/router/core/tabRouter.d.ts +111 -0
  475. package/lib/router/core/tabRouter.d.ts.map +1 -0
  476. package/lib/router/core/tabRouter.js +87 -0
  477. package/lib/router/core/tabRouter.js.map +1 -0
  478. package/lib/seo/core/documentMeta.d.ts +45 -0
  479. package/lib/seo/core/documentMeta.d.ts.map +1 -0
  480. package/lib/seo/core/documentMeta.js +69 -0
  481. package/lib/seo/core/documentMeta.js.map +1 -0
  482. package/lib/seo/core/index.d.ts +9 -0
  483. package/lib/seo/core/index.d.ts.map +1 -0
  484. package/lib/seo/core/index.js +5 -0
  485. package/lib/seo/core/index.js.map +1 -0
  486. package/lib/seo/core/pageMeta.d.ts +60 -0
  487. package/lib/seo/core/pageMeta.d.ts.map +1 -0
  488. package/lib/seo/core/pageMeta.js +91 -0
  489. package/lib/seo/core/pageMeta.js.map +1 -0
  490. package/lib/seo/core/routes.d.ts +52 -0
  491. package/lib/seo/core/routes.d.ts.map +1 -0
  492. package/lib/seo/core/routes.js +62 -0
  493. package/lib/seo/core/routes.js.map +1 -0
  494. package/lib/seo/core/siteFiles.d.ts +73 -0
  495. package/lib/seo/core/siteFiles.d.ts.map +1 -0
  496. package/lib/seo/core/siteFiles.js +100 -0
  497. package/lib/seo/core/siteFiles.js.map +1 -0
  498. package/lib/seo/vite/index.d.ts +5 -0
  499. package/lib/seo/vite/index.d.ts.map +1 -0
  500. package/lib/seo/vite/index.js +3 -0
  501. package/lib/seo/vite/index.js.map +1 -0
  502. package/lib/seo/vite/ogCard.d.ts +33 -0
  503. package/lib/seo/vite/ogCard.d.ts.map +1 -0
  504. package/lib/seo/vite/ogCard.js +72 -0
  505. package/lib/seo/vite/ogCard.js.map +1 -0
  506. package/lib/seo/vite/prerender.d.ts +58 -0
  507. package/lib/seo/vite/prerender.d.ts.map +1 -0
  508. package/lib/seo/vite/prerender.js +76 -0
  509. package/lib/seo/vite/prerender.js.map +1 -0
  510. package/lib/share/core/config.d.ts +63 -0
  511. package/lib/share/core/config.d.ts.map +1 -0
  512. package/lib/share/core/config.js +125 -0
  513. package/lib/share/core/config.js.map +1 -0
  514. package/lib/share/core/escape.d.ts +15 -0
  515. package/lib/share/core/escape.d.ts.map +1 -0
  516. package/lib/share/core/escape.js +22 -0
  517. package/lib/share/core/escape.js.map +1 -0
  518. package/lib/share/core/index.d.ts +9 -0
  519. package/lib/share/core/index.d.ts.map +1 -0
  520. package/lib/share/core/index.js +5 -0
  521. package/lib/share/core/index.js.map +1 -0
  522. package/lib/share/core/params.d.ts +93 -0
  523. package/lib/share/core/params.d.ts.map +1 -0
  524. package/lib/share/core/params.js +111 -0
  525. package/lib/share/core/params.js.map +1 -0
  526. package/lib/share/core/query.d.ts +30 -0
  527. package/lib/share/core/query.d.ts.map +1 -0
  528. package/lib/share/core/query.js +68 -0
  529. package/lib/share/core/query.js.map +1 -0
  530. package/lib/share/core/url.d.ts +57 -0
  531. package/lib/share/core/url.d.ts.map +1 -0
  532. package/lib/share/core/url.js +49 -0
  533. package/lib/share/core/url.js.map +1 -0
  534. package/lib/share/core/vocabulary.d.ts +51 -0
  535. package/lib/share/core/vocabulary.d.ts.map +1 -0
  536. package/lib/share/core/vocabulary.js +2 -0
  537. package/lib/share/core/vocabulary.js.map +1 -0
  538. package/lib/share/ui/HiddenPartsProvider.d.ts +19 -0
  539. package/lib/share/ui/HiddenPartsProvider.d.ts.map +1 -0
  540. package/lib/share/ui/HiddenPartsProvider.js +15 -0
  541. package/lib/share/ui/HiddenPartsProvider.js.map +1 -0
  542. package/lib/share/ui/PagePart.d.ts +18 -0
  543. package/lib/share/ui/PagePart.d.ts.map +1 -0
  544. package/lib/share/ui/PagePart.js +16 -0
  545. package/lib/share/ui/PagePart.js.map +1 -0
  546. package/lib/share/ui/ShareButton.d.ts +42 -0
  547. package/lib/share/ui/ShareButton.d.ts.map +1 -0
  548. package/lib/share/ui/ShareButton.js +18 -0
  549. package/lib/share/ui/ShareButton.js.map +1 -0
  550. package/lib/share/ui/ShareDialog.d.ts +73 -0
  551. package/lib/share/ui/ShareDialog.d.ts.map +1 -0
  552. package/lib/share/ui/ShareDialog.js +19 -0
  553. package/lib/share/ui/ShareDialog.js.map +1 -0
  554. package/lib/share/ui/ShareDialogContent.d.ts +13 -0
  555. package/lib/share/ui/ShareDialogContent.d.ts.map +1 -0
  556. package/lib/share/ui/ShareDialogContent.js +71 -0
  557. package/lib/share/ui/ShareDialogContent.js.map +1 -0
  558. package/lib/share/ui/SharePartOptions.d.ts +18 -0
  559. package/lib/share/ui/SharePartOptions.d.ts.map +1 -0
  560. package/lib/share/ui/SharePartOptions.js +22 -0
  561. package/lib/share/ui/SharePartOptions.js.map +1 -0
  562. package/lib/share/ui/draft.d.ts +13 -0
  563. package/lib/share/ui/draft.d.ts.map +1 -0
  564. package/lib/share/ui/draft.js +16 -0
  565. package/lib/share/ui/draft.js.map +1 -0
  566. package/lib/share/ui/hiddenParts.d.ts +17 -0
  567. package/lib/share/ui/hiddenParts.d.ts.map +1 -0
  568. package/lib/share/ui/hiddenParts.js +21 -0
  569. package/lib/share/ui/hiddenParts.js.map +1 -0
  570. package/lib/share/ui/index.d.ts +10 -0
  571. package/lib/share/ui/index.d.ts.map +1 -0
  572. package/lib/share/ui/index.js +6 -0
  573. package/lib/share/ui/index.js.map +1 -0
  574. package/lib/shared/ui/index.d.ts +2 -1
  575. package/lib/shared/ui/index.d.ts.map +1 -1
  576. package/lib/shared/ui/index.js +1 -1
  577. package/lib/shared/ui/index.js.map +1 -1
  578. package/lib/state/ui/index.d.ts +3 -0
  579. package/lib/state/ui/index.d.ts.map +1 -0
  580. package/lib/state/ui/index.js +2 -0
  581. package/lib/state/ui/index.js.map +1 -0
  582. package/lib/state/ui/mergeStored.d.ts +27 -0
  583. package/lib/state/ui/mergeStored.d.ts.map +1 -0
  584. package/lib/state/ui/mergeStored.js +82 -0
  585. package/lib/state/ui/mergeStored.js.map +1 -0
  586. package/lib/state/ui/persistBucket.d.ts +65 -0
  587. package/lib/state/ui/persistBucket.d.ts.map +1 -0
  588. package/lib/state/ui/persistBucket.js +90 -0
  589. package/lib/state/ui/persistBucket.js.map +1 -0
  590. package/lib/structure/core/editorValue.d.ts +69 -0
  591. package/lib/structure/core/editorValue.d.ts.map +1 -0
  592. package/lib/structure/core/editorValue.js +72 -0
  593. package/lib/structure/core/editorValue.js.map +1 -0
  594. package/lib/structure/core/fragmentQuery.d.ts +33 -0
  595. package/lib/structure/core/fragmentQuery.d.ts.map +1 -0
  596. package/lib/structure/core/fragmentQuery.js +37 -0
  597. package/lib/structure/core/fragmentQuery.js.map +1 -0
  598. package/lib/structure/core/index.d.ts +11 -0
  599. package/lib/structure/core/index.d.ts.map +1 -0
  600. package/lib/structure/core/index.js +6 -0
  601. package/lib/structure/core/index.js.map +1 -0
  602. package/lib/structure/core/molfile.d.ts +42 -0
  603. package/lib/structure/core/molfile.d.ts.map +1 -0
  604. package/lib/structure/core/molfile.js +74 -0
  605. package/lib/structure/core/molfile.js.map +1 -0
  606. package/lib/structure/core/readStructure.d.ts +37 -0
  607. package/lib/structure/core/readStructure.d.ts.map +1 -0
  608. package/lib/structure/core/readStructure.js +59 -0
  609. package/lib/structure/core/readStructure.js.map +1 -0
  610. package/lib/structure/core/structureSource.d.ts +34 -0
  611. package/lib/structure/core/structureSource.d.ts.map +1 -0
  612. package/lib/structure/core/structureSource.js +32 -0
  613. package/lib/structure/core/structureSource.js.map +1 -0
  614. package/lib/structure/core/toolbarFloor.d.ts +16 -0
  615. package/lib/structure/core/toolbarFloor.d.ts.map +1 -0
  616. package/lib/structure/core/toolbarFloor.js +27 -0
  617. package/lib/structure/core/toolbarFloor.js.map +1 -0
  618. package/lib/structure/ui/EditorCanvas.d.ts +55 -0
  619. package/lib/structure/ui/EditorCanvas.d.ts.map +1 -0
  620. package/lib/structure/ui/EditorCanvas.js +41 -0
  621. package/lib/structure/ui/EditorCanvas.js.map +1 -0
  622. package/lib/structure/ui/Structure.d.ts +122 -0
  623. package/lib/structure/ui/Structure.d.ts.map +1 -0
  624. package/lib/structure/ui/Structure.js +28 -0
  625. package/lib/structure/ui/Structure.js.map +1 -0
  626. package/lib/structure/ui/StructureEditor.d.ts +75 -0
  627. package/lib/structure/ui/StructureEditor.d.ts.map +1 -0
  628. package/lib/structure/ui/StructureEditor.js +83 -0
  629. package/lib/structure/ui/StructureEditor.js.map +1 -0
  630. package/lib/structure/ui/StructurePlaceholder.d.ts +29 -0
  631. package/lib/structure/ui/StructurePlaceholder.d.ts.map +1 -0
  632. package/lib/structure/ui/StructurePlaceholder.js +19 -0
  633. package/lib/structure/ui/StructurePlaceholder.js.map +1 -0
  634. package/lib/structure/ui/StructureSvg.d.ts +58 -0
  635. package/lib/structure/ui/StructureSvg.d.ts.map +1 -0
  636. package/lib/structure/ui/StructureSvg.js +33 -0
  637. package/lib/structure/ui/StructureSvg.js.map +1 -0
  638. package/lib/structure/ui/index.d.ts +19 -0
  639. package/lib/structure/ui/index.d.ts.map +1 -0
  640. package/lib/structure/ui/index.js +15 -0
  641. package/lib/structure/ui/index.js.map +1 -0
  642. package/lib/structure/ui/useToolbarFloor.d.ts +26 -0
  643. package/lib/structure/ui/useToolbarFloor.d.ts.map +1 -0
  644. package/lib/structure/ui/useToolbarFloor.js +70 -0
  645. package/lib/structure/ui/useToolbarFloor.js.map +1 -0
  646. package/lib/structure.d.ts +3 -0
  647. package/lib/structure.d.ts.map +1 -0
  648. package/lib/structure.js +3 -0
  649. package/lib/structure.js.map +1 -0
  650. package/lib/ui.d.ts +13 -0
  651. package/lib/ui.d.ts.map +1 -1
  652. package/lib/ui.js +13 -0
  653. package/lib/ui.js.map +1 -1
  654. package/lib/vite.d.ts +2 -0
  655. package/lib/vite.d.ts.map +1 -0
  656. package/lib/vite.js +2 -0
  657. package/lib/vite.js.map +1 -0
  658. package/lib/worker/core/errors.d.ts +15 -0
  659. package/lib/worker/core/errors.d.ts.map +1 -0
  660. package/lib/worker/core/errors.js +15 -0
  661. package/lib/worker/core/errors.js.map +1 -0
  662. package/lib/worker/core/index.d.ts +5 -0
  663. package/lib/worker/core/index.d.ts.map +1 -0
  664. package/lib/worker/core/index.js +3 -0
  665. package/lib/worker/core/index.js.map +1 -0
  666. package/lib/worker/core/messages.d.ts +48 -0
  667. package/lib/worker/core/messages.d.ts.map +1 -0
  668. package/lib/worker/core/messages.js +2 -0
  669. package/lib/worker/core/messages.js.map +1 -0
  670. package/lib/worker/core/workerChannel.d.ts +69 -0
  671. package/lib/worker/core/workerChannel.d.ts.map +1 -0
  672. package/lib/worker/core/workerChannel.js +121 -0
  673. package/lib/worker/core/workerChannel.js.map +1 -0
  674. package/package.json +22 -4
  675. package/src/capsule/ui/CapsuleFilter.tsx +119 -0
  676. package/src/capsule/ui/index.ts +2 -0
  677. package/src/chrome/ui/NavLink.tsx +88 -0
  678. package/src/chrome/ui/NavMenuButton.tsx +95 -0
  679. package/src/chrome/ui/SiteFooter.tsx +65 -0
  680. package/src/chrome/ui/SiteHeader.tsx +119 -0
  681. package/src/chrome/ui/index.ts +11 -0
  682. package/src/chrome/ui/navItem.ts +60 -0
  683. package/src/chrome/ui/useCompactHeader.ts +81 -0
  684. package/src/citation/core/clipboard.ts +27 -11
  685. package/src/citation/core/download.ts +25 -15
  686. package/src/citation/core/index.ts +8 -3
  687. package/src/citation/core/works.ts +81 -0
  688. package/src/citation/ui/CitationMenu.tsx +104 -89
  689. package/src/citation/ui/CitationPreview.tsx +18 -8
  690. package/src/citation/ui/CiteButton.tsx +24 -9
  691. package/src/citation/ui/CopyFormatEntries.tsx +84 -0
  692. package/src/citation/ui/WorkEntry.tsx +80 -0
  693. package/src/citation/ui/entries.tsx +18 -20
  694. package/src/citation/ui/index.ts +10 -2
  695. package/src/citation/ui/useCopyFeedback.ts +76 -0
  696. package/src/clipboard/core/index.ts +1 -0
  697. package/src/clipboard/core/writeToClipboard.ts +47 -0
  698. package/src/clipboard/ui/CodeBlock.tsx +110 -0
  699. package/src/clipboard/ui/CopyButton.tsx +111 -0
  700. package/src/clipboard/ui/index.ts +9 -0
  701. package/src/clipboard/ui/useCopyToClipboard.ts +57 -0
  702. package/src/color/core/contrast.ts +85 -0
  703. package/src/color/core/hex.ts +57 -0
  704. package/src/color/core/index.ts +4 -0
  705. package/src/color/core/scale.ts +132 -0
  706. package/src/color/ui/ColorScaleLegend.tsx +144 -0
  707. package/src/color/ui/index.ts +2 -0
  708. package/src/core.ts +11 -0
  709. package/src/credits/core/credits.ts +183 -0
  710. package/src/credits/core/index.ts +2 -0
  711. package/src/credits/ui/CreditsList.tsx +82 -0
  712. package/src/credits/ui/index.ts +2 -0
  713. package/src/delimited/core/delimiters.ts +64 -0
  714. package/src/delimited/core/index.ts +11 -0
  715. package/src/delimited/core/readDelimited.ts +132 -0
  716. package/src/delimited/core/rowsToDelimited.ts +135 -0
  717. package/src/delimited/core/toDelimited.ts +69 -0
  718. package/src/delimited/ui/DelimitedTextDialog.tsx +49 -0
  719. package/src/delimited/ui/DelimitedTextPanel.tsx +161 -0
  720. package/src/delimited/ui/index.ts +4 -0
  721. package/src/disclosure/ui/CollapsibleSection.tsx +150 -0
  722. package/src/disclosure/ui/index.ts +4 -0
  723. package/src/disclosure/ui/useDisclosure.ts +35 -0
  724. package/src/download/core/downloadBlob.ts +19 -0
  725. package/src/download/core/downloadText.ts +19 -0
  726. package/src/download/core/index.ts +3 -0
  727. package/src/download/core/sanitizeFileName.ts +33 -0
  728. package/src/ecosystem/core/index.ts +3 -0
  729. package/src/ecosystem/core/links.ts +29 -0
  730. package/src/ecosystem/core/lookup.ts +57 -0
  731. package/src/ecosystem/core/sites.ts +21 -4
  732. package/src/ecosystem/core/tokens.ts +47 -0
  733. package/src/ecosystem/ui/SiteTheme.tsx +23 -0
  734. package/src/ecosystem/ui/Wordmark.tsx +65 -0
  735. package/src/ecosystem/ui/glyphs.tsx +1 -1
  736. package/src/ecosystem/ui/index.ts +4 -0
  737. package/src/ecosystem/ui/marks.tsx +54 -15
  738. package/src/error/ui/ErrorBoundary.tsx +94 -0
  739. package/src/error/ui/ErrorFallback.tsx +64 -0
  740. package/src/error/ui/index.ts +4 -0
  741. package/src/error/ui/toError.ts +33 -0
  742. package/src/format/core/index.ts +9 -0
  743. package/src/format/core/missing.ts +6 -0
  744. package/src/format/core/numbers.ts +84 -0
  745. package/src/format/core/units.ts +60 -0
  746. package/src/format/core/words.ts +17 -0
  747. package/src/help/ui/HelpBody.tsx +130 -0
  748. package/src/help/ui/HelpIcon.tsx +53 -0
  749. package/src/help/ui/HelpToolbarButton.tsx +72 -0
  750. package/src/help/ui/HelpTooltip.tsx +72 -0
  751. package/src/help/ui/index.ts +8 -0
  752. package/src/hooks/ui/index.ts +6 -0
  753. package/src/hooks/ui/listNavigation.ts +116 -0
  754. package/src/hooks/ui/useContainerSize.ts +32 -0
  755. package/src/hooks/ui/useDebouncedValue.ts +29 -0
  756. package/src/hooks/ui/useListKeyboardNavigation.ts +37 -0
  757. package/src/hooks/ui/useResizeObserver.ts +50 -0
  758. package/src/orbital/core/atomicGrid.ts +53 -1
  759. package/src/orbital/core/index.ts +7 -16
  760. package/src/orbital/core/isovalue.ts +146 -0
  761. package/src/orbital/core/sample.ts +25 -5
  762. package/src/orbital/ui/AtomicOrbitalCanvas.tsx +19 -3
  763. package/src/orbital/ui/AtomicOrbitalViewer.tsx +5 -1
  764. package/src/orbital/ui/renderVolume.ts +29 -16
  765. package/src/orbital/ui/viewer.ts +6 -1
  766. package/src/orbital/ui/volumeField.ts +5 -49
  767. package/src/pedagogy/core/glossary.ts +122 -0
  768. package/src/pedagogy/core/index.ts +28 -0
  769. package/src/pedagogy/core/jsonStorage.ts +51 -0
  770. package/src/pedagogy/core/progress.ts +205 -0
  771. package/src/pedagogy/core/types.ts +78 -0
  772. package/src/pedagogy/core/validation.ts +109 -0
  773. package/src/pedagogy/ui/ExerciseActions.tsx +129 -0
  774. package/src/pedagogy/ui/ExerciseProgressHeader.tsx +135 -0
  775. package/src/pedagogy/ui/ExerciseTags.tsx +85 -0
  776. package/src/pedagogy/ui/GlossaryProvider.tsx +31 -0
  777. package/src/pedagogy/ui/GlossaryText.tsx +164 -0
  778. package/src/pedagogy/ui/HintLadder.tsx +95 -0
  779. package/src/pedagogy/ui/ReferenceGrid.tsx +69 -0
  780. package/src/pedagogy/ui/ReferenceSectionBlock.tsx +175 -0
  781. package/src/pedagogy/ui/SyntaxTooltip.tsx +222 -0
  782. package/src/pedagogy/ui/TestCaseList.tsx +122 -0
  783. package/src/pedagogy/ui/TutorialStepStrip.tsx +230 -0
  784. package/src/pedagogy/ui/exerciseMeta.ts +45 -0
  785. package/src/pedagogy/ui/glossaryContext.ts +23 -0
  786. package/src/pedagogy/ui/index.ts +37 -0
  787. package/src/pedagogy/ui/tutorialLevels.ts +27 -0
  788. package/src/router/core/address.ts +74 -0
  789. package/src/router/core/basePath.ts +76 -0
  790. package/src/router/core/index.ts +26 -0
  791. package/src/router/core/legacyHash.ts +77 -0
  792. package/src/router/core/pageAddresses.ts +106 -0
  793. package/src/router/core/query.ts +87 -0
  794. package/src/router/core/tabRouter.ts +214 -0
  795. package/src/seo/core/documentMeta.ts +92 -0
  796. package/src/seo/core/index.ts +26 -0
  797. package/src/seo/core/pageMeta.ts +127 -0
  798. package/src/seo/core/routes.ts +79 -0
  799. package/src/seo/core/siteFiles.ts +150 -0
  800. package/src/seo/vite/index.ts +4 -0
  801. package/src/seo/vite/ogCard.ts +92 -0
  802. package/src/seo/vite/prerender.ts +156 -0
  803. package/src/share/core/config.ts +165 -0
  804. package/src/share/core/escape.ts +22 -0
  805. package/src/share/core/index.ts +31 -0
  806. package/src/share/core/params.ts +176 -0
  807. package/src/share/core/query.ts +72 -0
  808. package/src/share/core/url.ts +105 -0
  809. package/src/share/core/vocabulary.ts +60 -0
  810. package/src/share/ui/HiddenPartsProvider.tsx +34 -0
  811. package/src/share/ui/PagePart.tsx +26 -0
  812. package/src/share/ui/ShareButton.tsx +84 -0
  813. package/src/share/ui/ShareDialog.tsx +114 -0
  814. package/src/share/ui/ShareDialogContent.tsx +189 -0
  815. package/src/share/ui/SharePartOptions.tsx +51 -0
  816. package/src/share/ui/draft.ts +19 -0
  817. package/src/share/ui/hiddenParts.ts +22 -0
  818. package/src/share/ui/index.ts +9 -0
  819. package/src/shared/ui/index.ts +2 -1
  820. package/src/state/ui/index.ts +6 -0
  821. package/src/state/ui/mergeStored.ts +87 -0
  822. package/src/state/ui/persistBucket.ts +147 -0
  823. package/src/structure/core/editorValue.ts +116 -0
  824. package/src/structure/core/fragmentQuery.ts +50 -0
  825. package/src/structure/core/index.ts +13 -0
  826. package/src/structure/core/molfile.ts +90 -0
  827. package/src/structure/core/readStructure.ts +73 -0
  828. package/src/structure/core/structureSource.ts +57 -0
  829. package/src/structure/core/toolbarFloor.ts +31 -0
  830. package/src/structure/ui/EditorCanvas.tsx +130 -0
  831. package/src/structure/ui/Structure.tsx +183 -0
  832. package/src/structure/ui/StructureEditor.tsx +196 -0
  833. package/src/structure/ui/StructurePlaceholder.tsx +48 -0
  834. package/src/structure/ui/StructureSvg.tsx +110 -0
  835. package/src/structure/ui/index.ts +22 -0
  836. package/src/structure/ui/useToolbarFloor.ts +93 -0
  837. package/src/structure.ts +2 -0
  838. package/src/ui.ts +13 -0
  839. package/src/vite.ts +1 -0
  840. package/src/worker/core/errors.ts +15 -0
  841. package/src/worker/core/index.ts +8 -0
  842. package/src/worker/core/messages.ts +47 -0
  843. package/src/worker/core/workerChannel.ts +218 -0
  844. package/styles/chrome.css +223 -0
@@ -15,7 +15,7 @@ export function AtomicOrbitalCanvas(props) {
15
15
  const [drawn, setDrawn] = useState(null);
16
16
  // What the canvas is being asked to show. Comparing it with what it *is*
17
17
  // showing gives the progress note without a state write on every prop change.
18
- const wanted = `${atomicNumber}|${orbitalId}|${resolution}|${palette.id}`;
18
+ const wanted = `${atomicNumber}|${orbitalId}|${resolutionKey(resolution)}|${palette.id}`;
19
19
  const busy = drawn !== wanted;
20
20
  // Callbacks are read through refs so a caller passing an inline arrow does
21
21
  // not re-sample the orbital on every render of its parent.
@@ -52,7 +52,7 @@ export function AtomicOrbitalCanvas(props) {
52
52
  if (cancelled)
53
53
  return;
54
54
  callbacks.current.onNodeRadii?.(result.nodeRadii);
55
- const reach = await viewer.showOrbital(result.grid, {
55
+ const reach = await viewer.showOrbital(result.grid, result.contour, {
56
56
  positiveColour: palette.positive,
57
57
  negativeColour: palette.negative,
58
58
  });
@@ -76,6 +76,16 @@ export function AtomicOrbitalCanvas(props) {
76
76
  }
77
77
  /** Samples per edge; 56 resolves the radial node of a 3s in about 25 ms. */
78
78
  const DEFAULT_RESOLUTION = 56;
79
+ /**
80
+ * A stable identity for either shape the resolution prop can take.
81
+ * @param resolution - A fixed sample count, or the limits it may vary between.
82
+ * @returns A string that changes exactly when the sampling would.
83
+ */
84
+ function resolutionKey(resolution) {
85
+ return typeof resolution === 'number'
86
+ ? String(resolution)
87
+ : `${resolution.floor}-${resolution.cap}`;
88
+ }
79
89
  /**
80
90
  * A square, centred stage: an atomic orbital is as tall as it is wide, so a
81
91
  * square wastes the least of the frame and keeps the lobes the same size when
@@ -1 +1 @@
1
- {"version":3,"file":"AtomicOrbitalCanvas.js","sourceRoot":"","sources":["../../../src/orbital/ui/AtomicOrbitalCanvas.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AtomicOrbitalCanvas.js","sourceRoot":"","sources":["../../../src/orbital/ui/AtomicOrbitalCanvas.tsx"],"names":[],"mappings":"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"}
@@ -15,6 +15,7 @@
15
15
  * ```
16
16
  */
17
17
  import type { ReactElement, ReactNode } from 'react';
18
+ import type { ResolutionLimits } from '../core/atomicGrid.ts';
18
19
  import type { PhasePalette } from '../core/palette.ts';
19
20
  import type { AtomicSampler } from '../core/sample.ts';
20
21
  import type { ViewerCapability } from './capability.ts';
@@ -31,9 +32,12 @@ export interface AtomicOrbitalViewerProps {
31
32
  palette?: PhasePalette;
32
33
  /**
33
34
  * Samples along each edge of the cube; the cost is the cube of it.
35
+ *
36
+ * A number fixes it. A {@link ResolutionLimits} pair lets each orbital's own
37
+ * shape pick a resolution between the two.
34
38
  * @default 56
35
39
  */
36
- resolution?: number;
40
+ resolution?: number | ResolutionLimits;
37
41
  /**
38
42
  * Whether the scene turns on its own.
39
43
  * @default false
@@ -1 +1 @@
1
- {"version":3,"file":"AtomicOrbitalViewer.d.ts","sourceRoot":"","sources":["../../../src/orbital/ui/AtomicOrbitalViewer.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAiB,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAIvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAQxD,4CAA4C;AAC5C,MAAM,WAAW,wBAAwB;IACvC,6CAA6C;IAC7C,YAAY,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACxC;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,CAAC,UAAU,EAAE,gBAAgB,KAAK,SAAS,CAAC;CACjE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,wBAAwB,GAC9B,YAAY,CAkCd"}
1
+ {"version":3,"file":"AtomicOrbitalViewer.d.ts","sourceRoot":"","sources":["../../../src/orbital/ui/AtomicOrbitalViewer.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAiB,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAIvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAQxD,4CAA4C;AAC5C,MAAM,WAAW,wBAAwB;IACvC,6CAA6C;IAC7C,YAAY,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IACvC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACxC;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,CAAC,UAAU,EAAE,gBAAgB,KAAK,SAAS,CAAC;CACjE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,wBAAwB,GAC9B,YAAY,CAkCd"}
@@ -1 +1 @@
1
- {"version":3,"file":"AtomicOrbitalViewer.js","sourceRoot":"","sources":["../../../src/orbital/ui/AtomicOrbitalViewer.tsx"],"names":[],"mappings":";AAkBA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAQjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE;IAC1C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,0BAA2B,CAAC,CAAC;IACzD,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,mBAAmB,EAAE,CAAC;AACjD,CAAC,CAAC,CAAC;AAiDH;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CACjC,KAA+B;IAE/B,MAAM,EACJ,QAAQ,GAAG,wBAAwB,EACnC,iBAAiB,EACjB,GAAG,MAAM,EACV,GAAG,KAAK,CAAC;IACV,MAAM,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC,qBAAqB,CAAC,CAAC;IACrD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAE5D,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;QAC1B,OAAO,CACL,cAAK,KAAK,EAAE,UAAU,YACnB,iBAAiB,EAAE,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,OAAO,GAClD,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,eAAK,KAAK,EAAE,UAAU,aACpB,KAAC,QAAQ,IAAC,QAAQ,EAAE,cAAK,KAAK,EAAE,UAAU,YAAG,QAAQ,GAAO,YAC1D,KAAC,mBAAmB,OACd,MAAM,EACV,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE;wBACnB,UAAU,CAAC,OAAO,CAAC,CAAC;oBACtB,CAAC,GACD,GACO,EACV,OAAO,KAAK,IAAI,IAAI,CACnB,eAAK,KAAK,EAAE,aAAa,kDACW,OAAO,IACrC,CACP,IACG,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,GAAkB;IAChC,OAAO,EAAE,MAAM;IACf,aAAa,EAAE,QAAQ;IACvB,GAAG,EAAE,CAAC;IACN,QAAQ,EAAE,CAAC;CACZ,CAAC;AAEF,MAAM,UAAU,GAAkB;IAChC,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,QAAQ;IACpB,cAAc,EAAE,QAAQ;IACxB,SAAS,EAAE,GAAG;IACd,OAAO,EAAE,EAAE;IACX,YAAY,EAAE,CAAC;IACf,UAAU,EAAE,kBAAkB;IAC9B,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,EAAE;IACZ,SAAS,EAAE,QAAQ;CACpB,CAAC;AAEF,MAAM,aAAa,GAAkB;IACnC,OAAO,EAAE,SAAS;IAClB,YAAY,EAAE,CAAC;IACf,UAAU,EAAE,SAAS;IACrB,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,EAAE;CACb,CAAC"}
1
+ {"version":3,"file":"AtomicOrbitalViewer.js","sourceRoot":"","sources":["../../../src/orbital/ui/AtomicOrbitalViewer.tsx"],"names":[],"mappings":";AAkBA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AASjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE;IAC1C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,0BAA2B,CAAC,CAAC;IACzD,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,mBAAmB,EAAE,CAAC;AACjD,CAAC,CAAC,CAAC;AAoDH;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CACjC,KAA+B;IAE/B,MAAM,EACJ,QAAQ,GAAG,wBAAwB,EACnC,iBAAiB,EACjB,GAAG,MAAM,EACV,GAAG,KAAK,CAAC;IACV,MAAM,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC,qBAAqB,CAAC,CAAC;IACrD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAE5D,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;QAC1B,OAAO,CACL,cAAK,KAAK,EAAE,UAAU,YACnB,iBAAiB,EAAE,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,OAAO,GAClD,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,eAAK,KAAK,EAAE,UAAU,aACpB,KAAC,QAAQ,IAAC,QAAQ,EAAE,cAAK,KAAK,EAAE,UAAU,YAAG,QAAQ,GAAO,YAC1D,KAAC,mBAAmB,OACd,MAAM,EACV,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE;wBACnB,UAAU,CAAC,OAAO,CAAC,CAAC;oBACtB,CAAC,GACD,GACO,EACV,OAAO,KAAK,IAAI,IAAI,CACnB,eAAK,KAAK,EAAE,aAAa,kDACW,OAAO,IACrC,CACP,IACG,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,GAAkB;IAChC,OAAO,EAAE,MAAM;IACf,aAAa,EAAE,QAAQ;IACvB,GAAG,EAAE,CAAC;IACN,QAAQ,EAAE,CAAC;CACZ,CAAC;AAEF,MAAM,UAAU,GAAkB;IAChC,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,QAAQ;IACpB,cAAc,EAAE,QAAQ;IACxB,SAAS,EAAE,GAAG;IACd,OAAO,EAAE,EAAE;IACX,YAAY,EAAE,CAAC;IACf,UAAU,EAAE,kBAAkB;IAC9B,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,EAAE;IACZ,SAAS,EAAE,QAAQ;CACpB,CAAC;AAEF,MAAM,aAAa,GAAkB;IACnC,OAAO,EAAE,SAAS;IAClB,YAAY,EAAE,CAAC;IACf,UAAU,EAAE,SAAS;IACrB,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,EAAE;CACb,CAAC"}
@@ -15,6 +15,7 @@
15
15
  */
16
16
  import type { PluginContext } from 'molstar/lib/mol-plugin/context.js';
17
17
  import type { OrbitalGrid } from '../core/grid.ts';
18
+ import type { OrbitalContour } from '../core/isovalue.ts';
18
19
  /** Colours and opacity of one signed isosurface pair. */
19
20
  export interface VolumeStyle {
20
21
  /**
@@ -28,8 +29,8 @@ export interface VolumeStyle {
28
29
  */
29
30
  negativeColour?: string;
30
31
  /**
31
- * Isovalue as a multiple of the one enclosing `ENCLOSED_WEIGHT` of the
32
- * orbital's weight. Larger means a tighter, smaller surface.
32
+ * Isovalue as a multiple of the contour's own cutoff. Larger means a
33
+ * tighter, smaller surface.
33
34
  * @default 1
34
35
  */
35
36
  relativeIsovalue?: number;
@@ -43,12 +44,14 @@ export interface VolumeStyle {
43
44
  * Replace the isosurface pair drawn from a sampled field.
44
45
  * @param plugin - The molstar context.
45
46
  * @param field - The field, as `sampleAtomicOrbital` produced it.
47
+ * @param contour - The isovalue and reach measured on that field, as
48
+ * `runAtomicSample` returned them.
46
49
  * @param style - See {@link VolumeStyle}.
47
50
  * @returns How far the drawn surface reaches from the centre of the box,
48
51
  * ångström — what a camera has to frame to fill the viewport with it.
49
52
  * @throws {Error} When the canvas is not ready.
50
53
  */
51
- export declare function renderSampledVolume(plugin: PluginContext, field: OrbitalGrid, style?: VolumeStyle): Promise<number>;
54
+ export declare function renderSampledVolume(plugin: PluginContext, field: OrbitalGrid, contour: OrbitalContour, style?: VolumeStyle): Promise<number>;
52
55
  /**
53
56
  * Remove the sampled isosurfaces, leaving anything else on the canvas.
54
57
  * @param plugin - The molstar context.
@@ -1 +1 @@
1
- {"version":3,"file":"renderVolume.d.ts","sourceRoot":"","sources":["../../../src/orbital/ui/renderVolume.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAOvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAInD,yDAAyD;AACzD,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,WAAW,EAClB,KAAK,GAAE,WAAgB,GACtB,OAAO,CAAC,MAAM,CAAC,CAyCjB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAQ9D"}
1
+ {"version":3,"file":"renderVolume.d.ts","sourceRoot":"","sources":["../../../src/orbital/ui/renderVolume.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAMvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAI1D,yDAAyD;AACzD,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,cAAc,EACvB,KAAK,GAAE,WAAgB,GACtB,OAAO,CAAC,MAAM,CAAC,CA8CjB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAQ9D"}
@@ -13,47 +13,40 @@
13
13
  * tree and are tracked per plugin, because every change of orbital replaces
14
14
  * them wholesale.
15
15
  */
16
- import { computeOrbitalIsocontourValues } from 'molstar/lib/extensions/alpha-orbitals/orbitals.js';
17
16
  import { createVolumeRepresentationParams } from 'molstar/lib/mol-plugin-state/helpers/volume-representation-params.js';
18
17
  import { Theme } from 'molstar/lib/mol-theme/theme.js';
19
18
  import { Color } from 'molstar/lib/mol-util/color/color.js';
20
- import { ENCLOSED_WEIGHT } from "../core/constants.js";
21
- import { DISPLAY_REACH, surfaceReach, toVolume } from "./volumeField.js";
19
+ import { DISPLAY_REACH, toVolume } from "./volumeField.js";
22
20
  /**
23
21
  * Replace the isosurface pair drawn from a sampled field.
24
22
  * @param plugin - The molstar context.
25
23
  * @param field - The field, as `sampleAtomicOrbital` produced it.
24
+ * @param contour - The isovalue and reach measured on that field, as
25
+ * `runAtomicSample` returned them.
26
26
  * @param style - See {@link VolumeStyle}.
27
27
  * @returns How far the drawn surface reaches from the centre of the box,
28
28
  * ångström — what a camera has to frame to fill the viewport with it.
29
29
  * @throws {Error} When the canvas is not ready.
30
30
  */
31
- export async function renderSampledVolume(plugin, field, style = {}) {
31
+ export async function renderSampledVolume(plugin, field, contour, style = {}) {
32
32
  const canvas3d = plugin.canvas3d;
33
33
  if (canvas3d === undefined) {
34
34
  throw new Error('renderSampledVolume: the molstar canvas is not ready.');
35
35
  }
36
36
  const { positiveColour = '#2563eb', negativeColour = '#dc2626', relativeIsovalue = 1, alpha = 0.72, } = style;
37
37
  clearSampledVolume(plugin);
38
- const isovalues = computeOrbitalIsocontourValues(field.data, ENCLOSED_WEIGHT);
38
+ const { cutoff, reach } = contour;
39
39
  // Molstar's camera clamps both its target distance and its near plane, so it
40
40
  // cannot get close to a small object: uranium's 4f reaches 0.35 Å and would
41
41
  // stay a dot in the corner whatever the camera is asked to frame. Every
42
42
  // orbital is therefore drawn at one canonical size, and the true extent is
43
43
  // reported as ⟨r⟩ and on the radial plot instead of by the picture's scale.
44
- const reach = surfaceReach(field, isovalues);
45
44
  const volume = toVolume(field, reach > 0 ? DISPLAY_REACH / reach : 1);
46
45
  // A nodeless orbital — every 1s — has no negative lobe at all, and asking for
47
46
  // its isosurface would draw an empty mesh at value 0.
48
47
  const surfaces = await Promise.all([
49
- maybeSurface(plugin, volume, isovalues.positive, relativeIsovalue, {
50
- colour: positiveColour,
51
- alpha,
52
- }),
53
- maybeSurface(plugin, volume, isovalues.negative, relativeIsovalue, {
54
- colour: negativeColour,
55
- alpha,
56
- }),
48
+ maybeSurface(plugin, volume, field.max >= cutoff ? cutoff : undefined, relativeIsovalue, { colour: positiveColour, alpha }),
49
+ maybeSurface(plugin, volume, field.min <= -cutoff ? -cutoff : undefined, relativeIsovalue, { colour: negativeColour, alpha }),
57
50
  ]);
58
51
  const drawn = surfaces.filter((surface) => surface !== null);
59
52
  representations.set(plugin, drawn);
@@ -100,7 +93,13 @@ async function createSurface(plugin, volume, isovalue, colour, alpha) {
100
93
  isoValue: { kind: 'absolute', absoluteValue: isovalue },
101
94
  alpha,
102
95
  xrayShaded: true,
103
- tryUseGpu: true,
96
+ // Molstar's GPU marching cubes pits the outer lobe of a diffuse orbital
97
+ // with voxel-sized dimples — caesium's 6s and every 7s, 6d and 7p above
98
+ // it — and quantises the field to 255 steps on upload unless told
99
+ // otherwise, which terraces xenon's 4p. The surface is a thin shell
100
+ // whatever the box holds, so the CPU path costs 13–44 ms and returns
101
+ // 27 k vertices even on the 152³ grid the highest quality asks for.
102
+ tryUseGpu: false,
104
103
  },
105
104
  color: 'uniform',
106
105
  colorParams: { value: Color.fromHexStyle(colour) },
@@ -1 +1 @@
1
- {"version":3,"file":"renderVolume.js","sourceRoot":"","sources":["../../../src/orbital/ui/renderVolume.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"renderVolume.js","sourceRoot":"","sources":["../../../src/orbital/ui/renderVolume.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,7 @@
13
13
  * molstar's own UI is not mounted: the surrounding site owns every control.
14
14
  */
15
15
  import type { OrbitalGrid } from '../core/grid.ts';
16
+ import type { OrbitalContour } from '../core/isovalue.ts';
16
17
  import type { VolumeStyle } from './renderVolume.ts';
17
18
  /** Settings fixed for the life of a viewer. */
18
19
  export interface OrbitalViewerOptions {
@@ -49,11 +50,12 @@ export declare class OrbitalViewer {
49
50
  /**
50
51
  * Replace the isosurface pair with one drawn from a sampled field.
51
52
  * @param field - The sampled wavefunction, in ångström.
53
+ * @param contour - The isovalue and reach measured on that field.
52
54
  * @param style - See {@link VolumeStyle}.
53
55
  * @returns How far the drawn surface reaches, in scene units, for the camera
54
56
  * to frame; `undefined` once the viewer has been disposed.
55
57
  */
56
- showOrbital(field: OrbitalGrid, style?: VolumeStyle): Promise<number | undefined>;
58
+ showOrbital(field: OrbitalGrid, contour: OrbitalContour, style?: VolumeStyle): Promise<number | undefined>;
57
59
  /**
58
60
  * Remove the isosurface pair.
59
61
  * @returns Nothing, once the surfaces are gone.
@@ -1 +1 @@
1
- {"version":3,"file":"viewer.d.ts","sourceRoot":"","sources":["../../../src/orbital/ui/viewer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAQH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,+CAA+C;AAC/C,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,WAAW,EACtB,OAAO,GAAE,oBAAyB,GACjC,aAAa,CAEf;AAED;;;;;GAKG;AACH,qBAAa,aAAa;;IAIxB,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;gBAElB,SAAS,EAAE,WAAW,EAAE,OAAO,GAAE,oBAAyB;IAiBtE;;;OAGG;IACH,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED;;;;;;OAMG;IACH,WAAW,CACT,KAAK,EAAE,WAAW,EAClB,KAAK,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAI9B;;;OAGG;IACH,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B;;;;;;;OAOG;IACH,KAAK,CACH,aAAa,CAAC,EAAE,MAAM,EACtB,UAAU,SAA0B,GACnC,OAAO,CAAC,IAAI,CAAC;IAMhB;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,SAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAMpD,kEAAkE;IAClE,YAAY,IAAI,IAAI;IAKpB;;;OAGG;IACH,OAAO,IAAI,IAAI;CAkChB"}
1
+ {"version":3,"file":"viewer.d.ts","sourceRoot":"","sources":["../../../src/orbital/ui/viewer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAQH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAG1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,+CAA+C;AAC/C,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,WAAW,EACtB,OAAO,GAAE,oBAAyB,GACjC,aAAa,CAEf;AAED;;;;;GAKG;AACH,qBAAa,aAAa;;IAIxB,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;gBAElB,SAAS,EAAE,WAAW,EAAE,OAAO,GAAE,oBAAyB;IAiBtE;;;OAGG;IACH,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED;;;;;;;OAOG;IACH,WAAW,CACT,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,cAAc,EACvB,KAAK,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAM9B;;;OAGG;IACH,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B;;;;;;;OAOG;IACH,KAAK,CACH,aAAa,CAAC,EAAE,MAAM,EACtB,UAAU,SAA0B,GACnC,OAAO,CAAC,IAAI,CAAC;IAMhB;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,SAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAMpD,kEAAkE;IAClE,YAAY,IAAI,IAAI;IAKpB;;;OAGG;IACH,OAAO,IAAI,IAAI;CAkChB"}
@@ -65,12 +65,13 @@ export class OrbitalViewer {
65
65
  /**
66
66
  * Replace the isosurface pair with one drawn from a sampled field.
67
67
  * @param field - The sampled wavefunction, in ångström.
68
+ * @param contour - The isovalue and reach measured on that field.
68
69
  * @param style - See {@link VolumeStyle}.
69
70
  * @returns How far the drawn surface reaches, in scene units, for the camera
70
71
  * to frame; `undefined` once the viewer has been disposed.
71
72
  */
72
- showOrbital(field, style) {
73
- return this.#run((plugin) => renderSampledVolume(plugin, field, style));
73
+ showOrbital(field, contour, style) {
74
+ return this.#run((plugin) => renderSampledVolume(plugin, field, contour, style));
74
75
  }
75
76
  /**
76
77
  * Remove the isosurface pair.
@@ -1 +1 @@
1
- {"version":3,"file":"viewer.js","sourceRoot":"","sources":["../../../src/orbital/ui/viewer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"viewer.js","sourceRoot":"","sources":["../../../src/orbital/ui/viewer.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,11 @@
1
1
  /**
2
2
  * Turning a field the caller sampled into the `Volume` molstar's isosurface
3
- * renderer wants, and measuring how far the surface inside it actually reaches.
3
+ * renderer wants.
4
4
  *
5
- * Both halves are arithmetic over the samples, which is why they are here
6
- * rather than in `renderVolume.ts` — that module is about representations.
5
+ * It is arithmetic over the samples, which is why it is here rather than in
6
+ * `renderVolume.ts` — that module is about representations. How far the
7
+ * surface inside the box reaches is measured in `core/isovalue.ts`, beside the
8
+ * isovalue it is measured against.
7
9
  */
8
10
  import type { Volume } from 'molstar/lib/mol-model/volume.js';
9
11
  import type { OrbitalGrid } from '../core/grid.ts';
@@ -15,24 +17,6 @@ import type { OrbitalGrid } from '../core/grid.ts';
15
17
  * impossible to fill the frame with.
16
18
  */
17
19
  export declare const DISPLAY_REACH = 12;
18
- /**
19
- * How far from the centre of the box the drawn surface actually reaches.
20
- *
21
- * Molstar sizes a volume representation's bounding sphere from the whole
22
- * sampled box, which is deliberately much larger than the isosurface inside it,
23
- * so a camera framing that sphere leaves the orbital a quarter of the frame
24
- * wide. Measuring the samples that are actually enclosed gives the camera the
25
- * real extent, and does it here because this is where the isovalue is known.
26
- * @param field - The sampled field.
27
- * @param isovalues - The two isovalues the surfaces were drawn at.
28
- * @param isovalues.negative - Isovalue the negative lobe was drawn at, if any.
29
- * @param isovalues.positive - Isovalue the positive lobe was drawn at, if any.
30
- * @returns The reach in ångström, or 0 when nothing was drawn.
31
- */
32
- export declare function surfaceReach(field: OrbitalGrid, isovalues: {
33
- negative?: number | undefined;
34
- positive?: number | undefined;
35
- }): number;
36
20
  /**
37
21
  * Wrap a sampled field in molstar's `Volume`.
38
22
  *
@@ -1 +1 @@
1
- {"version":3,"file":"volumeField.d.ts","sourceRoot":"","sources":["../../../src/orbital/ui/volumeField.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAQ,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAEpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAKnD;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,KAAK,CAAC;AAEhC;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GAC1E,MAAM,CA2BR;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CA2CzE"}
1
+ {"version":3,"file":"volumeField.d.ts","sourceRoot":"","sources":["../../../src/orbital/ui/volumeField.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAQ,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAEpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAKnD;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,KAAK,CAAC;AAEhC;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CA2CzE"}
@@ -1,9 +1,11 @@
1
1
  /**
2
2
  * Turning a field the caller sampled into the `Volume` molstar's isosurface
3
- * renderer wants, and measuring how far the surface inside it actually reaches.
3
+ * renderer wants.
4
4
  *
5
- * Both halves are arithmetic over the samples, which is why they are here
6
- * rather than in `renderVolume.ts` — that module is about representations.
5
+ * It is arithmetic over the samples, which is why it is here rather than in
6
+ * `renderVolume.ts` — that module is about representations. How far the
7
+ * surface inside the box reaches is measured in `core/isovalue.ts`, beside the
8
+ * isovalue it is measured against.
7
9
  */
8
10
  import { Mat4, Tensor, Vec3 } from 'molstar/lib/mol-math/linear-algebra.js';
9
11
  import { CustomProperties } from 'molstar/lib/mol-model/custom-property.js';
@@ -17,48 +19,6 @@ const { Space: createTensorSpace, Data1: asTensorData } = Tensor;
17
19
  * impossible to fill the frame with.
18
20
  */
19
21
  export const DISPLAY_REACH = 12;
20
- /**
21
- * How far from the centre of the box the drawn surface actually reaches.
22
- *
23
- * Molstar sizes a volume representation's bounding sphere from the whole
24
- * sampled box, which is deliberately much larger than the isosurface inside it,
25
- * so a camera framing that sphere leaves the orbital a quarter of the frame
26
- * wide. Measuring the samples that are actually enclosed gives the camera the
27
- * real extent, and does it here because this is where the isovalue is known.
28
- * @param field - The sampled field.
29
- * @param isovalues - The two isovalues the surfaces were drawn at.
30
- * @param isovalues.negative - Isovalue the negative lobe was drawn at, if any.
31
- * @param isovalues.positive - Isovalue the positive lobe was drawn at, if any.
32
- * @returns The reach in ångström, or 0 when nothing was drawn.
33
- */
34
- export function surfaceReach(field, isovalues) {
35
- const cutoff = Math.min(Math.abs(isovalues.positive ?? Infinity), Math.abs(isovalues.negative ?? Infinity));
36
- if (!Number.isFinite(cutoff) || cutoff <= 0)
37
- return 0;
38
- const { data, dimensions, origin, spacing } = field;
39
- const [countX, countY, countZ] = dimensions;
40
- const centreX = origin.x + ((countX - 1) * spacing) / 2;
41
- const centreY = origin.y + ((countY - 1) * spacing) / 2;
42
- const centreZ = origin.z + ((countZ - 1) * spacing) / 2;
43
- let furthest = 0;
44
- let index = 0;
45
- for (let indexX = 0; indexX < countX; indexX++) {
46
- const dx = origin.x + indexX * spacing - centreX;
47
- for (let indexY = 0; indexY < countY; indexY++) {
48
- const dy = origin.y + indexY * spacing - centreY;
49
- for (let indexZ = 0; indexZ < countZ; indexZ++) {
50
- const value = data[index++];
51
- if (value < cutoff && value > -cutoff)
52
- continue;
53
- const dz = origin.z + indexZ * spacing - centreZ;
54
- const squared = dx * dx + dy * dy + dz * dz;
55
- if (squared > furthest)
56
- furthest = squared;
57
- }
58
- }
59
- }
60
- return Math.sqrt(furthest);
61
- }
62
22
  /**
63
23
  * Wrap a sampled field in molstar's `Volume`.
64
24
  *
@@ -1 +1 @@
1
- {"version":3,"file":"volumeField.js","sourceRoot":"","sources":["../../../src/orbital/ui/volumeField.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"volumeField.js","sourceRoot":"","sources":["../../../src/orbital/ui/volumeField.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAK5E,qEAAqE;AACrE,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC;AAEhC;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAkB,EAAE,YAAoB;IAC/D,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IAC3E,MAAM,IAAI,GAAG,OAAO,GAAG,YAAY,CAAC;IACpC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAC3E,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CACpC,IAAI,CAAC,IAAI,EAAE,EACX,IAAI,CAAC,MAAM,CACT,MAAM,CAAC,CAAC,GAAG,YAAY,EACvB,MAAM,CAAC,CAAC,GAAG,YAAY,EACvB,MAAM,CAAC,CAAC,GAAG,YAAY,CACxB,CACF,CAAC;IACF,MAAM,IAAI,GAAS;QACjB,SAAS,EAAE;YACT,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC;SAChD;QACD,uEAAuE;QACvE,KAAK,EAAE,MAAM,CAAC,MAAM,CAClB,iBAAiB,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,YAAY,CAAC,EACtD,YAAY,CAAC,IAAI,CAAC,CACnB;QACD,KAAK,EAAE;YACL,GAAG;YACH,GAAG;YACH,IAAI;YACJ,yEAAyE;YACzE,0CAA0C;YAC1C,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC;SAC/B;KACF,CAAC;IACF,OAAO;QACL,IAAI;QACJ,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;QAC3C,UAAU,EAAE;YACV,IAAI,EAAE,gCAAgC;YACtC,IAAI,EAAE,sBAAsB;YAC5B,IAAI;SACL;QACD,gBAAgB,EAAE,IAAI,gBAAgB,EAAE;QACxC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAA4B;QAC7D,kBAAkB,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAA4B;KACnE,CAAC;AACJ,CAAC"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * The `[[term]]` marker language, parsed without a DOM.
3
+ *
4
+ * Authored prose — tutorial steps, exercise descriptions, hints — links its
5
+ * jargon by wrapping it in `[[double brackets]]`. A marker may be written
6
+ * `[[term|displayed text]]` when the sentence needs a different wording than
7
+ * the glossary key. Parsing and resolution live here, in plain TypeScript, so
8
+ * both are unit-tested without rendering anything.
9
+ */
10
+ /** One worked example inside a glossary entry. */
11
+ export interface GlossaryExample {
12
+ /** The construct itself: a pattern, a SMILES, a LaTeX fragment, a layer. */
13
+ code: string;
14
+ /**
15
+ * What the construct is shown working on, for a term whose examples take an
16
+ * input. Left out when the example is about notation only.
17
+ * @default undefined
18
+ */
19
+ input?: string;
20
+ /**
21
+ * What this example demonstrates, in one line.
22
+ * @default undefined
23
+ */
24
+ note?: string;
25
+ }
26
+ /** One glossary term, shown wherever a `[[marker]]` names it. */
27
+ export interface GlossaryEntry {
28
+ /** The term, spelled out as the heading of the tooltip. */
29
+ title: string;
30
+ /** One short paragraph — the whole definition. */
31
+ summary: string;
32
+ /** Worked examples, shown under the summary. */
33
+ examples: GlossaryExample[];
34
+ }
35
+ /**
36
+ * Every term a site defines, keyed by the lowercased text inside a `[[...]]`.
37
+ *
38
+ * A key that no marker names is simply never shown, and a marker naming no key
39
+ * renders as plain prose — so the two sides may be written in either order.
40
+ */
41
+ export type Glossary = Record<string, GlossaryEntry>;
42
+ /**
43
+ * One piece of parsed prose: either a run of text, or one marker.
44
+ *
45
+ * `start` is the offset of the piece in the source string, which makes it a
46
+ * stable and unique React key — an array index is neither.
47
+ */
48
+ export type GlossarySegment = {
49
+ kind: 'text';
50
+ start: number;
51
+ text: string;
52
+ } | {
53
+ kind: 'term';
54
+ start: number;
55
+ term: string;
56
+ text: string;
57
+ };
58
+ /**
59
+ * Split authored prose into prose runs and markers.
60
+ *
61
+ * A marker yields the lowercased lookup `term` and the `text` to display, which
62
+ * are the same thing unless the marker used the `term|text` form. The term is
63
+ * never checked against any glossary here: an unknown term still produces a
64
+ * `term` segment, and the renderer falls back to showing its text as plain
65
+ * prose — an author may link a term months before it is written, and the page
66
+ * must never show the brackets. Text that never closes its brackets (`[[foo`)
67
+ * is not a marker at all and comes back verbatim inside a `text` segment.
68
+ * @param text - Authored prose, with or without markers.
69
+ * @returns The segments, in order, with no empty run between adjacent markers.
70
+ */
71
+ export declare function parseGlossaryMarkers(text: string): GlossarySegment[];
72
+ /**
73
+ * Resolve a marker term against a glossary, case-insensitively.
74
+ * @param glossary - The terms the site defines.
75
+ * @param term - The text before the pipe of a `[[marker]]`, in any case.
76
+ * @returns The entry, or `undefined` when no such term has been written yet.
77
+ */
78
+ export declare function lookupGlossaryTerm(glossary: Glossary, term: string): GlossaryEntry | undefined;
79
+ //# sourceMappingURL=glossary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"glossary.d.ts","sourceRoot":"","sources":["../../../src/pedagogy/core/glossary.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,kDAAkD;AAClD,MAAM,WAAW,eAAe;IAC9B,4EAA4E;IAC5E,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,iEAAiE;AACjE,MAAM,WAAW,aAAa;IAC5B,2DAA2D;IAC3D,KAAK,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,gDAAgD;IAChD,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AAErD;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhE;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,EAAE,CAsBpE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,MAAM,GACX,aAAa,GAAG,SAAS,CAI3B"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * The `[[term]]` marker language, parsed without a DOM.
3
+ *
4
+ * Authored prose — tutorial steps, exercise descriptions, hints — links its
5
+ * jargon by wrapping it in `[[double brackets]]`. A marker may be written
6
+ * `[[term|displayed text]]` when the sentence needs a different wording than
7
+ * the glossary key. Parsing and resolution live here, in plain TypeScript, so
8
+ * both are unit-tested without rendering anything.
9
+ */
10
+ /**
11
+ * Split authored prose into prose runs and markers.
12
+ *
13
+ * A marker yields the lowercased lookup `term` and the `text` to display, which
14
+ * are the same thing unless the marker used the `term|text` form. The term is
15
+ * never checked against any glossary here: an unknown term still produces a
16
+ * `term` segment, and the renderer falls back to showing its text as plain
17
+ * prose — an author may link a term months before it is written, and the page
18
+ * must never show the brackets. Text that never closes its brackets (`[[foo`)
19
+ * is not a marker at all and comes back verbatim inside a `text` segment.
20
+ * @param text - Authored prose, with or without markers.
21
+ * @returns The segments, in order, with no empty run between adjacent markers.
22
+ */
23
+ export function parseGlossaryMarkers(text) {
24
+ const segments = [];
25
+ // A fresh regexp per call: a /g/ literal carries `lastIndex` between calls.
26
+ const marker = new RegExp(MARKER_SOURCE, 'g');
27
+ let cursor = 0;
28
+ let match = marker.exec(text);
29
+ while (match !== null) {
30
+ if (match.index > cursor) {
31
+ segments.push({
32
+ kind: 'text',
33
+ start: cursor,
34
+ text: text.slice(cursor, match.index),
35
+ });
36
+ }
37
+ segments.push(toTermSegment(match.groups?.term ?? '', match.index));
38
+ cursor = match.index + match[0].length;
39
+ match = marker.exec(text);
40
+ }
41
+ if (cursor < text.length) {
42
+ segments.push({ kind: 'text', start: cursor, text: text.slice(cursor) });
43
+ }
44
+ return segments;
45
+ }
46
+ /**
47
+ * Resolve a marker term against a glossary, case-insensitively.
48
+ * @param glossary - The terms the site defines.
49
+ * @param term - The text before the pipe of a `[[marker]]`, in any case.
50
+ * @returns The entry, or `undefined` when no such term has been written yet.
51
+ */
52
+ export function lookupGlossaryTerm(glossary, term) {
53
+ const key = term.trim().toLowerCase();
54
+ // `[[constructor]]` and `[[tostring]]` are prose, not inherited members.
55
+ return Object.hasOwn(glossary, key) ? glossary[key] : undefined;
56
+ }
57
+ const MARKER_SOURCE = String.raw `\[\[(?<term>[^\]]+)\]\]`;
58
+ function toTermSegment(inner, start) {
59
+ const pipe = inner.indexOf('|');
60
+ const rawTerm = pipe === -1 ? inner : inner.slice(0, pipe);
61
+ const rawText = pipe === -1 ? inner : inner.slice(pipe + 1);
62
+ const term = rawTerm.trim().toLowerCase();
63
+ const text = rawText.trim();
64
+ return {
65
+ kind: 'term',
66
+ start,
67
+ term,
68
+ text: text === '' ? rawTerm.trim() : text,
69
+ };
70
+ }
71
+ //# sourceMappingURL=glossary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"glossary.js","sourceRoot":"","sources":["../../../src/pedagogy/core/glossary.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA+CH;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,MAAM,QAAQ,GAAsB,EAAE,CAAC;IACvC,4EAA4E;IAC5E,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;IAC9C,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,KAAK,KAAK,IAAI,EAAE,CAAC;QACtB,IAAI,KAAK,CAAC,KAAK,GAAG,MAAM,EAAE,CAAC;YACzB,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,MAAM;gBACb,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC;aACtC,CAAC,CAAC;QACL,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QACpE,MAAM,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACvC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IACD,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAChC,QAAkB,EAClB,IAAY;IAEZ,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACtC,yEAAyE;IACzE,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAClE,CAAC;AAED,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAA,yBAAyB,CAAC;AAE1D,SAAS,aAAa,CAAC,KAAa,EAAE,KAAa;IACjD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;IAC5D,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC1C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC5B,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,KAAK;QACL,IAAI;QACJ,IAAI,EAAE,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI;KAC1C,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ export type { Glossary, GlossaryEntry, GlossaryExample, GlossarySegment, } from './glossary.ts';
2
+ export { parseGlossaryMarkers } from './glossary.ts';
3
+ export type { ExerciseProgress, LocalStorageProgressStoreOptions, ProgressRecords, ProgressStore, ProgressSummary, } from './progress.ts';
4
+ export { localStorageProgressStore, progressSummary } from './progress.ts';
5
+ export type { BaseExercise, ExerciseLevel, ExerciseSet, ExerciseStatus, TutorialStep, } from './types.ts';
6
+ export type { FinishValidationOptions, TestCaseResult, ValidationResult, } from './validation.ts';
7
+ export { failedValidation, finishValidation } from './validation.ts';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/pedagogy/core/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,QAAQ,EACR,aAAa,EACb,eAAe,EACf,eAAe,GAChB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,YAAY,EACV,gBAAgB,EAChB,gCAAgC,EAChC,eAAe,EACf,aAAa,EACb,eAAe,GAChB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,yBAAyB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC3E,YAAY,EACV,YAAY,EACZ,aAAa,EACb,WAAW,EACX,cAAc,EACd,YAAY,GACb,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,uBAAuB,EACvB,cAAc,EACd,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { parseGlossaryMarkers } from "./glossary.js";
2
+ export { localStorageProgressStore, progressSummary } from "./progress.js";
3
+ export { failedValidation, finishValidation } from "./validation.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/pedagogy/core/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAQrD,OAAO,EAAE,yBAAyB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAa3E,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Best-effort JSON access to `localStorage`.
3
+ *
4
+ * A page framed in a course may have no storage at all — third-party storage is
5
+ * partitioned in Chrome and blocked in Safari — and a full quota must never
6
+ * take the page down with it. So both calls swallow everything: an unreadable
7
+ * entry reads as nothing stored, and a refused write is simply lost.
8
+ */
9
+ /**
10
+ * Read one entry back as JSON.
11
+ * @param key - The storage key.
12
+ * @returns What was parsed, or `undefined` when there is nothing readable.
13
+ */
14
+ export declare function readJsonEntry(key: string): unknown;
15
+ /**
16
+ * Write one entry as JSON.
17
+ * @param key - The storage key.
18
+ * @param value - What to store.
19
+ */
20
+ export declare function writeJsonEntry(key: string, value: unknown): void;
21
+ //# sourceMappingURL=jsonStorage.d.ts.map