react-cheminfo 0.3.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 (806) 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 +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 +2 -0
  226. package/lib/ecosystem/core/sites.d.ts.map +1 -1
  227. package/lib/ecosystem/core/sites.js +15 -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/index.d.ts +4 -0
  242. package/lib/ecosystem/ui/index.d.ts.map +1 -1
  243. package/lib/ecosystem/ui/index.js +2 -0
  244. package/lib/ecosystem/ui/index.js.map +1 -1
  245. package/lib/ecosystem/ui/marks.d.ts +30 -4
  246. package/lib/ecosystem/ui/marks.d.ts.map +1 -1
  247. package/lib/ecosystem/ui/marks.js +13 -3
  248. package/lib/ecosystem/ui/marks.js.map +1 -1
  249. package/lib/error/ui/ErrorBoundary.d.ts +60 -0
  250. package/lib/error/ui/ErrorBoundary.d.ts.map +1 -0
  251. package/lib/error/ui/ErrorBoundary.js +59 -0
  252. package/lib/error/ui/ErrorBoundary.js.map +1 -0
  253. package/lib/error/ui/ErrorFallback.d.ts +38 -0
  254. package/lib/error/ui/ErrorFallback.d.ts.map +1 -0
  255. package/lib/error/ui/ErrorFallback.js +16 -0
  256. package/lib/error/ui/ErrorFallback.js.map +1 -0
  257. package/lib/error/ui/index.d.ts +5 -0
  258. package/lib/error/ui/index.d.ts.map +1 -0
  259. package/lib/error/ui/index.js +3 -0
  260. package/lib/error/ui/index.js.map +1 -0
  261. package/lib/error/ui/toError.d.ts +11 -0
  262. package/lib/error/ui/toError.d.ts.map +1 -0
  263. package/lib/error/ui/toError.js +35 -0
  264. package/lib/error/ui/toError.js.map +1 -0
  265. package/lib/format/core/index.d.ts +5 -0
  266. package/lib/format/core/index.d.ts.map +1 -0
  267. package/lib/format/core/index.js +5 -0
  268. package/lib/format/core/index.js.map +1 -0
  269. package/lib/format/core/missing.d.ts +7 -0
  270. package/lib/format/core/missing.d.ts.map +1 -0
  271. package/lib/format/core/missing.js +7 -0
  272. package/lib/format/core/missing.js.map +1 -0
  273. package/lib/format/core/numbers.d.ts +40 -0
  274. package/lib/format/core/numbers.d.ts.map +1 -0
  275. package/lib/format/core/numbers.js +81 -0
  276. package/lib/format/core/numbers.js.map +1 -0
  277. package/lib/format/core/units.d.ts +17 -0
  278. package/lib/format/core/units.d.ts.map +1 -0
  279. package/lib/format/core/units.js +54 -0
  280. package/lib/format/core/units.js.map +1 -0
  281. package/lib/format/core/words.d.ts +12 -0
  282. package/lib/format/core/words.d.ts.map +1 -0
  283. package/lib/format/core/words.js +14 -0
  284. package/lib/format/core/words.js.map +1 -0
  285. package/lib/help/ui/HelpBody.d.ts +57 -0
  286. package/lib/help/ui/HelpBody.d.ts.map +1 -0
  287. package/lib/help/ui/HelpBody.js +44 -0
  288. package/lib/help/ui/HelpBody.js.map +1 -0
  289. package/lib/help/ui/HelpIcon.d.ts +33 -0
  290. package/lib/help/ui/HelpIcon.d.ts.map +1 -0
  291. package/lib/help/ui/HelpIcon.js +16 -0
  292. package/lib/help/ui/HelpIcon.js.map +1 -0
  293. package/lib/help/ui/HelpToolbarButton.d.ts +45 -0
  294. package/lib/help/ui/HelpToolbarButton.d.ts.map +1 -0
  295. package/lib/help/ui/HelpToolbarButton.js +17 -0
  296. package/lib/help/ui/HelpToolbarButton.js.map +1 -0
  297. package/lib/help/ui/HelpTooltip.d.ts +36 -0
  298. package/lib/help/ui/HelpTooltip.d.ts.map +1 -0
  299. package/lib/help/ui/HelpTooltip.js +24 -0
  300. package/lib/help/ui/HelpTooltip.js.map +1 -0
  301. package/lib/help/ui/index.d.ts +9 -0
  302. package/lib/help/ui/index.d.ts.map +1 -0
  303. package/lib/help/ui/index.js +5 -0
  304. package/lib/help/ui/index.js.map +1 -0
  305. package/lib/hooks/ui/index.d.ts +7 -0
  306. package/lib/hooks/ui/index.d.ts.map +1 -0
  307. package/lib/hooks/ui/index.js +5 -0
  308. package/lib/hooks/ui/index.js.map +1 -0
  309. package/lib/hooks/ui/listNavigation.d.ts +54 -0
  310. package/lib/hooks/ui/listNavigation.d.ts.map +1 -0
  311. package/lib/hooks/ui/listNavigation.js +77 -0
  312. package/lib/hooks/ui/listNavigation.js.map +1 -0
  313. package/lib/hooks/ui/useContainerSize.d.ts +15 -0
  314. package/lib/hooks/ui/useContainerSize.d.ts.map +1 -0
  315. package/lib/hooks/ui/useContainerSize.js +24 -0
  316. package/lib/hooks/ui/useContainerSize.js.map +1 -0
  317. package/lib/hooks/ui/useDebouncedValue.d.ts +12 -0
  318. package/lib/hooks/ui/useDebouncedValue.d.ts.map +1 -0
  319. package/lib/hooks/ui/useDebouncedValue.js +24 -0
  320. package/lib/hooks/ui/useDebouncedValue.js.map +1 -0
  321. package/lib/hooks/ui/useListKeyboardNavigation.d.ts +17 -0
  322. package/lib/hooks/ui/useListKeyboardNavigation.d.ts.map +1 -0
  323. package/lib/hooks/ui/useListKeyboardNavigation.js +25 -0
  324. package/lib/hooks/ui/useListKeyboardNavigation.js.map +1 -0
  325. package/lib/hooks/ui/useResizeObserver.d.ts +20 -0
  326. package/lib/hooks/ui/useResizeObserver.d.ts.map +1 -0
  327. package/lib/hooks/ui/useResizeObserver.js +37 -0
  328. package/lib/hooks/ui/useResizeObserver.js.map +1 -0
  329. package/lib/orbital/core/atomicGrid.d.ts +27 -0
  330. package/lib/orbital/core/atomicGrid.d.ts.map +1 -1
  331. package/lib/orbital/core/atomicGrid.js +37 -1
  332. package/lib/orbital/core/atomicGrid.js.map +1 -1
  333. package/lib/orbital/core/index.d.ts +9 -7
  334. package/lib/orbital/core/index.d.ts.map +1 -1
  335. package/lib/orbital/core/index.js +7 -6
  336. package/lib/orbital/core/index.js.map +1 -1
  337. package/lib/orbital/core/isovalue.d.ts +60 -0
  338. package/lib/orbital/core/isovalue.d.ts.map +1 -0
  339. package/lib/orbital/core/isovalue.js +128 -0
  340. package/lib/orbital/core/isovalue.js.map +1 -0
  341. package/lib/orbital/core/sample.d.ts +15 -1
  342. package/lib/orbital/core/sample.d.ts.map +1 -1
  343. package/lib/orbital/core/sample.js +10 -3
  344. package/lib/orbital/core/sample.js.map +1 -1
  345. package/lib/orbital/ui/AtomicOrbitalCanvas.d.ts +6 -1
  346. package/lib/orbital/ui/AtomicOrbitalCanvas.d.ts.map +1 -1
  347. package/lib/orbital/ui/AtomicOrbitalCanvas.js +12 -2
  348. package/lib/orbital/ui/AtomicOrbitalCanvas.js.map +1 -1
  349. package/lib/orbital/ui/AtomicOrbitalViewer.d.ts +5 -1
  350. package/lib/orbital/ui/AtomicOrbitalViewer.d.ts.map +1 -1
  351. package/lib/orbital/ui/AtomicOrbitalViewer.js.map +1 -1
  352. package/lib/orbital/ui/renderVolume.d.ts +6 -3
  353. package/lib/orbital/ui/renderVolume.d.ts.map +1 -1
  354. package/lib/orbital/ui/renderVolume.js +14 -15
  355. package/lib/orbital/ui/renderVolume.js.map +1 -1
  356. package/lib/orbital/ui/viewer.d.ts +3 -1
  357. package/lib/orbital/ui/viewer.d.ts.map +1 -1
  358. package/lib/orbital/ui/viewer.js +3 -2
  359. package/lib/orbital/ui/viewer.js.map +1 -1
  360. package/lib/orbital/ui/volumeField.d.ts +5 -21
  361. package/lib/orbital/ui/volumeField.d.ts.map +1 -1
  362. package/lib/orbital/ui/volumeField.js +5 -45
  363. package/lib/orbital/ui/volumeField.js.map +1 -1
  364. package/lib/pedagogy/core/glossary.d.ts +79 -0
  365. package/lib/pedagogy/core/glossary.d.ts.map +1 -0
  366. package/lib/pedagogy/core/glossary.js +71 -0
  367. package/lib/pedagogy/core/glossary.js.map +1 -0
  368. package/lib/pedagogy/core/index.d.ts +8 -0
  369. package/lib/pedagogy/core/index.d.ts.map +1 -0
  370. package/lib/pedagogy/core/index.js +4 -0
  371. package/lib/pedagogy/core/index.js.map +1 -0
  372. package/lib/pedagogy/core/jsonStorage.d.ts +21 -0
  373. package/lib/pedagogy/core/jsonStorage.d.ts.map +1 -0
  374. package/lib/pedagogy/core/jsonStorage.js +55 -0
  375. package/lib/pedagogy/core/jsonStorage.js.map +1 -0
  376. package/lib/pedagogy/core/progress.d.ts +116 -0
  377. package/lib/pedagogy/core/progress.d.ts.map +1 -0
  378. package/lib/pedagogy/core/progress.js +122 -0
  379. package/lib/pedagogy/core/progress.js.map +1 -0
  380. package/lib/pedagogy/core/types.d.ts +74 -0
  381. package/lib/pedagogy/core/types.d.ts.map +1 -0
  382. package/lib/pedagogy/core/types.js +8 -0
  383. package/lib/pedagogy/core/types.js.map +1 -0
  384. package/lib/pedagogy/core/validation.d.ts +79 -0
  385. package/lib/pedagogy/core/validation.d.ts.map +1 -0
  386. package/lib/pedagogy/core/validation.js +47 -0
  387. package/lib/pedagogy/core/validation.js.map +1 -0
  388. package/lib/pedagogy/ui/ExerciseActions.d.ts +74 -0
  389. package/lib/pedagogy/ui/ExerciseActions.d.ts.map +1 -0
  390. package/lib/pedagogy/ui/ExerciseActions.js +22 -0
  391. package/lib/pedagogy/ui/ExerciseActions.js.map +1 -0
  392. package/lib/pedagogy/ui/ExerciseProgressHeader.d.ts +43 -0
  393. package/lib/pedagogy/ui/ExerciseProgressHeader.d.ts.map +1 -0
  394. package/lib/pedagogy/ui/ExerciseProgressHeader.js +43 -0
  395. package/lib/pedagogy/ui/ExerciseProgressHeader.js.map +1 -0
  396. package/lib/pedagogy/ui/ExerciseTags.d.ts +49 -0
  397. package/lib/pedagogy/ui/ExerciseTags.d.ts.map +1 -0
  398. package/lib/pedagogy/ui/ExerciseTags.js +22 -0
  399. package/lib/pedagogy/ui/ExerciseTags.js.map +1 -0
  400. package/lib/pedagogy/ui/GlossaryProvider.d.ts +19 -0
  401. package/lib/pedagogy/ui/GlossaryProvider.d.ts.map +1 -0
  402. package/lib/pedagogy/ui/GlossaryProvider.js +16 -0
  403. package/lib/pedagogy/ui/GlossaryProvider.js.map +1 -0
  404. package/lib/pedagogy/ui/GlossaryText.d.ts +50 -0
  405. package/lib/pedagogy/ui/GlossaryText.d.ts.map +1 -0
  406. package/lib/pedagogy/ui/GlossaryText.js +79 -0
  407. package/lib/pedagogy/ui/GlossaryText.js.map +1 -0
  408. package/lib/pedagogy/ui/HintLadder.d.ts +38 -0
  409. package/lib/pedagogy/ui/HintLadder.d.ts.map +1 -0
  410. package/lib/pedagogy/ui/HintLadder.js +33 -0
  411. package/lib/pedagogy/ui/HintLadder.js.map +1 -0
  412. package/lib/pedagogy/ui/ReferenceGrid.d.ts +31 -0
  413. package/lib/pedagogy/ui/ReferenceGrid.d.ts.map +1 -0
  414. package/lib/pedagogy/ui/ReferenceGrid.js +25 -0
  415. package/lib/pedagogy/ui/ReferenceGrid.js.map +1 -0
  416. package/lib/pedagogy/ui/ReferenceSectionBlock.d.ts +64 -0
  417. package/lib/pedagogy/ui/ReferenceSectionBlock.d.ts.map +1 -0
  418. package/lib/pedagogy/ui/ReferenceSectionBlock.js +78 -0
  419. package/lib/pedagogy/ui/ReferenceSectionBlock.js.map +1 -0
  420. package/lib/pedagogy/ui/SyntaxTooltip.d.ts +94 -0
  421. package/lib/pedagogy/ui/SyntaxTooltip.d.ts.map +1 -0
  422. package/lib/pedagogy/ui/SyntaxTooltip.js +79 -0
  423. package/lib/pedagogy/ui/SyntaxTooltip.js.map +1 -0
  424. package/lib/pedagogy/ui/TestCaseList.d.ts +35 -0
  425. package/lib/pedagogy/ui/TestCaseList.d.ts.map +1 -0
  426. package/lib/pedagogy/ui/TestCaseList.js +63 -0
  427. package/lib/pedagogy/ui/TestCaseList.js.map +1 -0
  428. package/lib/pedagogy/ui/TutorialStepStrip.d.ts +42 -0
  429. package/lib/pedagogy/ui/TutorialStepStrip.d.ts.map +1 -0
  430. package/lib/pedagogy/ui/TutorialStepStrip.js +98 -0
  431. package/lib/pedagogy/ui/TutorialStepStrip.js.map +1 -0
  432. package/lib/pedagogy/ui/exerciseMeta.d.ts +24 -0
  433. package/lib/pedagogy/ui/exerciseMeta.d.ts.map +1 -0
  434. package/lib/pedagogy/ui/exerciseMeta.js +38 -0
  435. package/lib/pedagogy/ui/exerciseMeta.js.map +1 -0
  436. package/lib/pedagogy/ui/glossaryContext.d.ts +17 -0
  437. package/lib/pedagogy/ui/glossaryContext.d.ts.map +1 -0
  438. package/lib/pedagogy/ui/glossaryContext.js +19 -0
  439. package/lib/pedagogy/ui/glossaryContext.js.map +1 -0
  440. package/lib/pedagogy/ui/index.d.ts +27 -0
  441. package/lib/pedagogy/ui/index.d.ts.map +1 -0
  442. package/lib/pedagogy/ui/index.js +15 -0
  443. package/lib/pedagogy/ui/index.js.map +1 -0
  444. package/lib/pedagogy/ui/tutorialLevels.d.ts +18 -0
  445. package/lib/pedagogy/ui/tutorialLevels.d.ts.map +1 -0
  446. package/lib/pedagogy/ui/tutorialLevels.js +14 -0
  447. package/lib/pedagogy/ui/tutorialLevels.js.map +1 -0
  448. package/lib/router/core/address.d.ts +42 -0
  449. package/lib/router/core/address.d.ts.map +1 -0
  450. package/lib/router/core/address.js +64 -0
  451. package/lib/router/core/address.js.map +1 -0
  452. package/lib/router/core/basePath.d.ts +49 -0
  453. package/lib/router/core/basePath.d.ts.map +1 -0
  454. package/lib/router/core/basePath.js +78 -0
  455. package/lib/router/core/basePath.js.map +1 -0
  456. package/lib/router/core/index.d.ts +8 -0
  457. package/lib/router/core/index.d.ts.map +1 -0
  458. package/lib/router/core/index.js +5 -0
  459. package/lib/router/core/index.js.map +1 -0
  460. package/lib/router/core/legacyHash.d.ts +45 -0
  461. package/lib/router/core/legacyHash.d.ts.map +1 -0
  462. package/lib/router/core/legacyHash.js +50 -0
  463. package/lib/router/core/legacyHash.js.map +1 -0
  464. package/lib/router/core/pageAddresses.d.ts +50 -0
  465. package/lib/router/core/pageAddresses.d.ts.map +1 -0
  466. package/lib/router/core/pageAddresses.js +56 -0
  467. package/lib/router/core/pageAddresses.js.map +1 -0
  468. package/lib/router/core/query.d.ts +41 -0
  469. package/lib/router/core/query.d.ts.map +1 -0
  470. package/lib/router/core/query.js +64 -0
  471. package/lib/router/core/query.js.map +1 -0
  472. package/lib/router/core/tabRouter.d.ts +111 -0
  473. package/lib/router/core/tabRouter.d.ts.map +1 -0
  474. package/lib/router/core/tabRouter.js +87 -0
  475. package/lib/router/core/tabRouter.js.map +1 -0
  476. package/lib/seo/core/documentMeta.d.ts +45 -0
  477. package/lib/seo/core/documentMeta.d.ts.map +1 -0
  478. package/lib/seo/core/documentMeta.js +69 -0
  479. package/lib/seo/core/documentMeta.js.map +1 -0
  480. package/lib/seo/core/index.d.ts +3 -0
  481. package/lib/seo/core/index.d.ts.map +1 -0
  482. package/lib/seo/core/index.js +2 -0
  483. package/lib/seo/core/index.js.map +1 -0
  484. package/lib/share/core/config.d.ts +63 -0
  485. package/lib/share/core/config.d.ts.map +1 -0
  486. package/lib/share/core/config.js +125 -0
  487. package/lib/share/core/config.js.map +1 -0
  488. package/lib/share/core/escape.d.ts +15 -0
  489. package/lib/share/core/escape.d.ts.map +1 -0
  490. package/lib/share/core/escape.js +22 -0
  491. package/lib/share/core/escape.js.map +1 -0
  492. package/lib/share/core/index.d.ts +9 -0
  493. package/lib/share/core/index.d.ts.map +1 -0
  494. package/lib/share/core/index.js +5 -0
  495. package/lib/share/core/index.js.map +1 -0
  496. package/lib/share/core/params.d.ts +93 -0
  497. package/lib/share/core/params.d.ts.map +1 -0
  498. package/lib/share/core/params.js +111 -0
  499. package/lib/share/core/params.js.map +1 -0
  500. package/lib/share/core/query.d.ts +30 -0
  501. package/lib/share/core/query.d.ts.map +1 -0
  502. package/lib/share/core/query.js +68 -0
  503. package/lib/share/core/query.js.map +1 -0
  504. package/lib/share/core/url.d.ts +57 -0
  505. package/lib/share/core/url.d.ts.map +1 -0
  506. package/lib/share/core/url.js +49 -0
  507. package/lib/share/core/url.js.map +1 -0
  508. package/lib/share/core/vocabulary.d.ts +51 -0
  509. package/lib/share/core/vocabulary.d.ts.map +1 -0
  510. package/lib/share/core/vocabulary.js +2 -0
  511. package/lib/share/core/vocabulary.js.map +1 -0
  512. package/lib/share/ui/HiddenPartsProvider.d.ts +19 -0
  513. package/lib/share/ui/HiddenPartsProvider.d.ts.map +1 -0
  514. package/lib/share/ui/HiddenPartsProvider.js +15 -0
  515. package/lib/share/ui/HiddenPartsProvider.js.map +1 -0
  516. package/lib/share/ui/PagePart.d.ts +18 -0
  517. package/lib/share/ui/PagePart.d.ts.map +1 -0
  518. package/lib/share/ui/PagePart.js +16 -0
  519. package/lib/share/ui/PagePart.js.map +1 -0
  520. package/lib/share/ui/ShareButton.d.ts +42 -0
  521. package/lib/share/ui/ShareButton.d.ts.map +1 -0
  522. package/lib/share/ui/ShareButton.js +18 -0
  523. package/lib/share/ui/ShareButton.js.map +1 -0
  524. package/lib/share/ui/ShareDialog.d.ts +73 -0
  525. package/lib/share/ui/ShareDialog.d.ts.map +1 -0
  526. package/lib/share/ui/ShareDialog.js +19 -0
  527. package/lib/share/ui/ShareDialog.js.map +1 -0
  528. package/lib/share/ui/ShareDialogContent.d.ts +13 -0
  529. package/lib/share/ui/ShareDialogContent.d.ts.map +1 -0
  530. package/lib/share/ui/ShareDialogContent.js +71 -0
  531. package/lib/share/ui/ShareDialogContent.js.map +1 -0
  532. package/lib/share/ui/SharePartOptions.d.ts +18 -0
  533. package/lib/share/ui/SharePartOptions.d.ts.map +1 -0
  534. package/lib/share/ui/SharePartOptions.js +22 -0
  535. package/lib/share/ui/SharePartOptions.js.map +1 -0
  536. package/lib/share/ui/draft.d.ts +13 -0
  537. package/lib/share/ui/draft.d.ts.map +1 -0
  538. package/lib/share/ui/draft.js +16 -0
  539. package/lib/share/ui/draft.js.map +1 -0
  540. package/lib/share/ui/hiddenParts.d.ts +17 -0
  541. package/lib/share/ui/hiddenParts.d.ts.map +1 -0
  542. package/lib/share/ui/hiddenParts.js +21 -0
  543. package/lib/share/ui/hiddenParts.js.map +1 -0
  544. package/lib/share/ui/index.d.ts +10 -0
  545. package/lib/share/ui/index.d.ts.map +1 -0
  546. package/lib/share/ui/index.js +6 -0
  547. package/lib/share/ui/index.js.map +1 -0
  548. package/lib/shared/ui/index.d.ts +2 -1
  549. package/lib/shared/ui/index.d.ts.map +1 -1
  550. package/lib/shared/ui/index.js +1 -1
  551. package/lib/shared/ui/index.js.map +1 -1
  552. package/lib/state/ui/index.d.ts +3 -0
  553. package/lib/state/ui/index.d.ts.map +1 -0
  554. package/lib/state/ui/index.js +2 -0
  555. package/lib/state/ui/index.js.map +1 -0
  556. package/lib/state/ui/mergeStored.d.ts +27 -0
  557. package/lib/state/ui/mergeStored.d.ts.map +1 -0
  558. package/lib/state/ui/mergeStored.js +82 -0
  559. package/lib/state/ui/mergeStored.js.map +1 -0
  560. package/lib/state/ui/persistBucket.d.ts +65 -0
  561. package/lib/state/ui/persistBucket.d.ts.map +1 -0
  562. package/lib/state/ui/persistBucket.js +90 -0
  563. package/lib/state/ui/persistBucket.js.map +1 -0
  564. package/lib/structure/core/editorValue.d.ts +69 -0
  565. package/lib/structure/core/editorValue.d.ts.map +1 -0
  566. package/lib/structure/core/editorValue.js +72 -0
  567. package/lib/structure/core/editorValue.js.map +1 -0
  568. package/lib/structure/core/fragmentQuery.d.ts +33 -0
  569. package/lib/structure/core/fragmentQuery.d.ts.map +1 -0
  570. package/lib/structure/core/fragmentQuery.js +37 -0
  571. package/lib/structure/core/fragmentQuery.js.map +1 -0
  572. package/lib/structure/core/index.d.ts +11 -0
  573. package/lib/structure/core/index.d.ts.map +1 -0
  574. package/lib/structure/core/index.js +6 -0
  575. package/lib/structure/core/index.js.map +1 -0
  576. package/lib/structure/core/molfile.d.ts +42 -0
  577. package/lib/structure/core/molfile.d.ts.map +1 -0
  578. package/lib/structure/core/molfile.js +74 -0
  579. package/lib/structure/core/molfile.js.map +1 -0
  580. package/lib/structure/core/readStructure.d.ts +37 -0
  581. package/lib/structure/core/readStructure.d.ts.map +1 -0
  582. package/lib/structure/core/readStructure.js +59 -0
  583. package/lib/structure/core/readStructure.js.map +1 -0
  584. package/lib/structure/core/structureSource.d.ts +34 -0
  585. package/lib/structure/core/structureSource.d.ts.map +1 -0
  586. package/lib/structure/core/structureSource.js +32 -0
  587. package/lib/structure/core/structureSource.js.map +1 -0
  588. package/lib/structure/core/toolbarFloor.d.ts +16 -0
  589. package/lib/structure/core/toolbarFloor.d.ts.map +1 -0
  590. package/lib/structure/core/toolbarFloor.js +27 -0
  591. package/lib/structure/core/toolbarFloor.js.map +1 -0
  592. package/lib/structure/ui/EditorCanvas.d.ts +55 -0
  593. package/lib/structure/ui/EditorCanvas.d.ts.map +1 -0
  594. package/lib/structure/ui/EditorCanvas.js +41 -0
  595. package/lib/structure/ui/EditorCanvas.js.map +1 -0
  596. package/lib/structure/ui/Structure.d.ts +122 -0
  597. package/lib/structure/ui/Structure.d.ts.map +1 -0
  598. package/lib/structure/ui/Structure.js +28 -0
  599. package/lib/structure/ui/Structure.js.map +1 -0
  600. package/lib/structure/ui/StructureEditor.d.ts +75 -0
  601. package/lib/structure/ui/StructureEditor.d.ts.map +1 -0
  602. package/lib/structure/ui/StructureEditor.js +83 -0
  603. package/lib/structure/ui/StructureEditor.js.map +1 -0
  604. package/lib/structure/ui/StructurePlaceholder.d.ts +29 -0
  605. package/lib/structure/ui/StructurePlaceholder.d.ts.map +1 -0
  606. package/lib/structure/ui/StructurePlaceholder.js +19 -0
  607. package/lib/structure/ui/StructurePlaceholder.js.map +1 -0
  608. package/lib/structure/ui/StructureSvg.d.ts +58 -0
  609. package/lib/structure/ui/StructureSvg.d.ts.map +1 -0
  610. package/lib/structure/ui/StructureSvg.js +33 -0
  611. package/lib/structure/ui/StructureSvg.js.map +1 -0
  612. package/lib/structure/ui/index.d.ts +19 -0
  613. package/lib/structure/ui/index.d.ts.map +1 -0
  614. package/lib/structure/ui/index.js +15 -0
  615. package/lib/structure/ui/index.js.map +1 -0
  616. package/lib/structure/ui/useToolbarFloor.d.ts +26 -0
  617. package/lib/structure/ui/useToolbarFloor.d.ts.map +1 -0
  618. package/lib/structure/ui/useToolbarFloor.js +70 -0
  619. package/lib/structure/ui/useToolbarFloor.js.map +1 -0
  620. package/lib/structure.d.ts +3 -0
  621. package/lib/structure.d.ts.map +1 -0
  622. package/lib/structure.js +3 -0
  623. package/lib/structure.js.map +1 -0
  624. package/lib/ui.d.ts +13 -0
  625. package/lib/ui.d.ts.map +1 -1
  626. package/lib/ui.js +13 -0
  627. package/lib/ui.js.map +1 -1
  628. package/lib/worker/core/errors.d.ts +15 -0
  629. package/lib/worker/core/errors.d.ts.map +1 -0
  630. package/lib/worker/core/errors.js +15 -0
  631. package/lib/worker/core/errors.js.map +1 -0
  632. package/lib/worker/core/index.d.ts +5 -0
  633. package/lib/worker/core/index.d.ts.map +1 -0
  634. package/lib/worker/core/index.js +3 -0
  635. package/lib/worker/core/index.js.map +1 -0
  636. package/lib/worker/core/messages.d.ts +48 -0
  637. package/lib/worker/core/messages.d.ts.map +1 -0
  638. package/lib/worker/core/messages.js +2 -0
  639. package/lib/worker/core/messages.js.map +1 -0
  640. package/lib/worker/core/workerChannel.d.ts +69 -0
  641. package/lib/worker/core/workerChannel.d.ts.map +1 -0
  642. package/lib/worker/core/workerChannel.js +121 -0
  643. package/lib/worker/core/workerChannel.js.map +1 -0
  644. package/package.json +18 -5
  645. package/src/capsule/ui/CapsuleFilter.tsx +119 -0
  646. package/src/capsule/ui/index.ts +2 -0
  647. package/src/chrome/ui/NavLink.tsx +88 -0
  648. package/src/chrome/ui/NavMenuButton.tsx +95 -0
  649. package/src/chrome/ui/SiteFooter.tsx +65 -0
  650. package/src/chrome/ui/SiteHeader.tsx +119 -0
  651. package/src/chrome/ui/index.ts +11 -0
  652. package/src/chrome/ui/navItem.ts +60 -0
  653. package/src/chrome/ui/useCompactHeader.ts +81 -0
  654. package/src/citation/core/clipboard.ts +27 -11
  655. package/src/citation/core/download.ts +25 -15
  656. package/src/citation/core/index.ts +8 -3
  657. package/src/citation/core/works.ts +81 -0
  658. package/src/citation/ui/CitationMenu.tsx +104 -89
  659. package/src/citation/ui/CitationPreview.tsx +18 -8
  660. package/src/citation/ui/CiteButton.tsx +24 -9
  661. package/src/citation/ui/CopyFormatEntries.tsx +84 -0
  662. package/src/citation/ui/WorkEntry.tsx +80 -0
  663. package/src/citation/ui/entries.tsx +18 -20
  664. package/src/citation/ui/index.ts +10 -2
  665. package/src/citation/ui/useCopyFeedback.ts +76 -0
  666. package/src/clipboard/core/index.ts +1 -0
  667. package/src/clipboard/core/writeToClipboard.ts +47 -0
  668. package/src/clipboard/ui/CodeBlock.tsx +110 -0
  669. package/src/clipboard/ui/CopyButton.tsx +111 -0
  670. package/src/clipboard/ui/index.ts +9 -0
  671. package/src/clipboard/ui/useCopyToClipboard.ts +57 -0
  672. package/src/color/core/contrast.ts +85 -0
  673. package/src/color/core/hex.ts +57 -0
  674. package/src/color/core/index.ts +4 -0
  675. package/src/color/core/scale.ts +132 -0
  676. package/src/color/ui/ColorScaleLegend.tsx +144 -0
  677. package/src/color/ui/index.ts +2 -0
  678. package/src/core.ts +11 -0
  679. package/src/credits/core/credits.ts +183 -0
  680. package/src/credits/core/index.ts +2 -0
  681. package/src/credits/ui/CreditsList.tsx +82 -0
  682. package/src/credits/ui/index.ts +2 -0
  683. package/src/delimited/core/delimiters.ts +64 -0
  684. package/src/delimited/core/index.ts +11 -0
  685. package/src/delimited/core/readDelimited.ts +132 -0
  686. package/src/delimited/core/rowsToDelimited.ts +135 -0
  687. package/src/delimited/core/toDelimited.ts +69 -0
  688. package/src/delimited/ui/DelimitedTextDialog.tsx +49 -0
  689. package/src/delimited/ui/DelimitedTextPanel.tsx +161 -0
  690. package/src/delimited/ui/index.ts +4 -0
  691. package/src/disclosure/ui/CollapsibleSection.tsx +150 -0
  692. package/src/disclosure/ui/index.ts +4 -0
  693. package/src/disclosure/ui/useDisclosure.ts +35 -0
  694. package/src/download/core/downloadBlob.ts +19 -0
  695. package/src/download/core/downloadText.ts +19 -0
  696. package/src/download/core/index.ts +3 -0
  697. package/src/download/core/sanitizeFileName.ts +33 -0
  698. package/src/ecosystem/core/index.ts +3 -0
  699. package/src/ecosystem/core/links.ts +29 -0
  700. package/src/ecosystem/core/lookup.ts +41 -0
  701. package/src/ecosystem/core/sites.ts +17 -0
  702. package/src/ecosystem/core/tokens.ts +47 -0
  703. package/src/ecosystem/ui/SiteTheme.tsx +23 -0
  704. package/src/ecosystem/ui/Wordmark.tsx +65 -0
  705. package/src/ecosystem/ui/index.ts +4 -0
  706. package/src/ecosystem/ui/marks.tsx +54 -15
  707. package/src/error/ui/ErrorBoundary.tsx +94 -0
  708. package/src/error/ui/ErrorFallback.tsx +64 -0
  709. package/src/error/ui/index.ts +4 -0
  710. package/src/error/ui/toError.ts +33 -0
  711. package/src/format/core/index.ts +9 -0
  712. package/src/format/core/missing.ts +6 -0
  713. package/src/format/core/numbers.ts +84 -0
  714. package/src/format/core/units.ts +60 -0
  715. package/src/format/core/words.ts +17 -0
  716. package/src/help/ui/HelpBody.tsx +130 -0
  717. package/src/help/ui/HelpIcon.tsx +53 -0
  718. package/src/help/ui/HelpToolbarButton.tsx +72 -0
  719. package/src/help/ui/HelpTooltip.tsx +72 -0
  720. package/src/help/ui/index.ts +8 -0
  721. package/src/hooks/ui/index.ts +6 -0
  722. package/src/hooks/ui/listNavigation.ts +116 -0
  723. package/src/hooks/ui/useContainerSize.ts +32 -0
  724. package/src/hooks/ui/useDebouncedValue.ts +29 -0
  725. package/src/hooks/ui/useListKeyboardNavigation.ts +37 -0
  726. package/src/hooks/ui/useResizeObserver.ts +50 -0
  727. package/src/orbital/core/atomicGrid.ts +53 -1
  728. package/src/orbital/core/index.ts +7 -16
  729. package/src/orbital/core/isovalue.ts +146 -0
  730. package/src/orbital/core/sample.ts +25 -5
  731. package/src/orbital/ui/AtomicOrbitalCanvas.tsx +19 -3
  732. package/src/orbital/ui/AtomicOrbitalViewer.tsx +5 -1
  733. package/src/orbital/ui/renderVolume.ts +29 -16
  734. package/src/orbital/ui/viewer.ts +6 -1
  735. package/src/orbital/ui/volumeField.ts +5 -49
  736. package/src/pedagogy/core/glossary.ts +122 -0
  737. package/src/pedagogy/core/index.ts +28 -0
  738. package/src/pedagogy/core/jsonStorage.ts +51 -0
  739. package/src/pedagogy/core/progress.ts +205 -0
  740. package/src/pedagogy/core/types.ts +78 -0
  741. package/src/pedagogy/core/validation.ts +109 -0
  742. package/src/pedagogy/ui/ExerciseActions.tsx +129 -0
  743. package/src/pedagogy/ui/ExerciseProgressHeader.tsx +135 -0
  744. package/src/pedagogy/ui/ExerciseTags.tsx +85 -0
  745. package/src/pedagogy/ui/GlossaryProvider.tsx +31 -0
  746. package/src/pedagogy/ui/GlossaryText.tsx +164 -0
  747. package/src/pedagogy/ui/HintLadder.tsx +95 -0
  748. package/src/pedagogy/ui/ReferenceGrid.tsx +69 -0
  749. package/src/pedagogy/ui/ReferenceSectionBlock.tsx +175 -0
  750. package/src/pedagogy/ui/SyntaxTooltip.tsx +222 -0
  751. package/src/pedagogy/ui/TestCaseList.tsx +122 -0
  752. package/src/pedagogy/ui/TutorialStepStrip.tsx +230 -0
  753. package/src/pedagogy/ui/exerciseMeta.ts +45 -0
  754. package/src/pedagogy/ui/glossaryContext.ts +23 -0
  755. package/src/pedagogy/ui/index.ts +37 -0
  756. package/src/pedagogy/ui/tutorialLevels.ts +27 -0
  757. package/src/router/core/address.ts +74 -0
  758. package/src/router/core/basePath.ts +76 -0
  759. package/src/router/core/index.ts +26 -0
  760. package/src/router/core/legacyHash.ts +77 -0
  761. package/src/router/core/pageAddresses.ts +106 -0
  762. package/src/router/core/query.ts +87 -0
  763. package/src/router/core/tabRouter.ts +214 -0
  764. package/src/seo/core/documentMeta.ts +92 -0
  765. package/src/seo/core/index.ts +6 -0
  766. package/src/share/core/config.ts +165 -0
  767. package/src/share/core/escape.ts +22 -0
  768. package/src/share/core/index.ts +31 -0
  769. package/src/share/core/params.ts +176 -0
  770. package/src/share/core/query.ts +72 -0
  771. package/src/share/core/url.ts +105 -0
  772. package/src/share/core/vocabulary.ts +60 -0
  773. package/src/share/ui/HiddenPartsProvider.tsx +34 -0
  774. package/src/share/ui/PagePart.tsx +26 -0
  775. package/src/share/ui/ShareButton.tsx +84 -0
  776. package/src/share/ui/ShareDialog.tsx +114 -0
  777. package/src/share/ui/ShareDialogContent.tsx +189 -0
  778. package/src/share/ui/SharePartOptions.tsx +51 -0
  779. package/src/share/ui/draft.ts +19 -0
  780. package/src/share/ui/hiddenParts.ts +22 -0
  781. package/src/share/ui/index.ts +9 -0
  782. package/src/shared/ui/index.ts +2 -1
  783. package/src/state/ui/index.ts +6 -0
  784. package/src/state/ui/mergeStored.ts +87 -0
  785. package/src/state/ui/persistBucket.ts +147 -0
  786. package/src/structure/core/editorValue.ts +116 -0
  787. package/src/structure/core/fragmentQuery.ts +50 -0
  788. package/src/structure/core/index.ts +13 -0
  789. package/src/structure/core/molfile.ts +90 -0
  790. package/src/structure/core/readStructure.ts +73 -0
  791. package/src/structure/core/structureSource.ts +57 -0
  792. package/src/structure/core/toolbarFloor.ts +31 -0
  793. package/src/structure/ui/EditorCanvas.tsx +130 -0
  794. package/src/structure/ui/Structure.tsx +183 -0
  795. package/src/structure/ui/StructureEditor.tsx +196 -0
  796. package/src/structure/ui/StructurePlaceholder.tsx +48 -0
  797. package/src/structure/ui/StructureSvg.tsx +110 -0
  798. package/src/structure/ui/index.ts +22 -0
  799. package/src/structure/ui/useToolbarFloor.ts +93 -0
  800. package/src/structure.ts +2 -0
  801. package/src/ui.ts +13 -0
  802. package/src/worker/core/errors.ts +15 -0
  803. package/src/worker/core/index.ts +8 -0
  804. package/src/worker/core/messages.ts +47 -0
  805. package/src/worker/core/workerChannel.ts +218 -0
  806. package/styles/chrome.css +223 -0
@@ -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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonStorage.d.ts","sourceRoot":"","sources":["../../../src/pedagogy/core/jsonStorage.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAWlD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAQhE"}
@@ -0,0 +1,55 @@
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 function readJsonEntry(key) {
15
+ const storage = getStorage();
16
+ if (storage === null)
17
+ return undefined;
18
+ try {
19
+ const raw = storage.getItem(key);
20
+ if (raw === null)
21
+ return undefined;
22
+ return JSON.parse(raw);
23
+ }
24
+ catch {
25
+ // Corrupt JSON, or a store that refuses to be read.
26
+ return undefined;
27
+ }
28
+ }
29
+ /**
30
+ * Write one entry as JSON.
31
+ * @param key - The storage key.
32
+ * @param value - What to store.
33
+ */
34
+ export function writeJsonEntry(key, value) {
35
+ const storage = getStorage();
36
+ if (storage === null)
37
+ return;
38
+ try {
39
+ storage.setItem(key, JSON.stringify(value));
40
+ }
41
+ catch {
42
+ // Quota exceeded, or a store that refuses to be written.
43
+ }
44
+ }
45
+ function getStorage() {
46
+ try {
47
+ const candidate = globalThis.localStorage;
48
+ return candidate ?? null;
49
+ }
50
+ catch {
51
+ // Reading localStorage throws outright when storage is blocked.
52
+ return null;
53
+ }
54
+ }
55
+ //# sourceMappingURL=jsonStorage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonStorage.js","sourceRoot":"","sources":["../../../src/pedagogy/core/jsonStorage.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACvC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO,SAAS,CAAC;QACnC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,oDAAoD;QACpD,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW,EAAE,KAAc;IACxD,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO;IAC7B,IAAI,CAAC;QACH,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,yDAAyD;IAC3D,CAAC;AACH,CAAC;AAED,SAAS,UAAU;IACjB,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,UAAU,CAAC,YAAmC,CAAC;QACjE,OAAO,SAAS,IAAI,IAAI,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,gEAAgE;QAChE,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}