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
@@ -0,0 +1,42 @@
1
+ import type { ReactElement } from 'react';
2
+ /** How the button is dressed for the bar it sits in. */
3
+ export type ShareButtonVariant = 'nav-link' | 'blueprint';
4
+ export interface ShareButtonProps {
5
+ /** Called when the button is pressed; what it opens is the caller's business. */
6
+ onClick: () => void;
7
+ /**
8
+ * A plain entry of a site's own header bar, or a Blueprint button for a
9
+ * toolbar already made of them.
10
+ * @default 'nav-link'
11
+ */
12
+ variant?: ShareButtonVariant;
13
+ /**
14
+ * Text of the button, and what a screen reader is told.
15
+ * @default 'Share'
16
+ */
17
+ label?: string;
18
+ /**
19
+ * Whether the button is reduced to its icon, for a bar that has run out of
20
+ * room. It is still named to the pointer and to a screen reader.
21
+ * @default false
22
+ */
23
+ compact?: boolean;
24
+ /**
25
+ * What the pointer is told.
26
+ * @default 'Share a link to this page, or embed it in your own site'
27
+ */
28
+ title?: string;
29
+ /**
30
+ * Class the button carries, on top of the one its variant gives it.
31
+ * @default undefined
32
+ */
33
+ className?: string;
34
+ }
35
+ /**
36
+ * The Share entry of a site header: the button that offers the open page as a
37
+ * link, or as the iframe that frames it in someone else's site.
38
+ * @param props - What the button does, how it is dressed, and how it is named.
39
+ * @returns The button.
40
+ */
41
+ export declare function ShareButton(props: ShareButtonProps): ReactElement;
42
+ //# sourceMappingURL=ShareButton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShareButton.d.ts","sourceRoot":"","sources":["../../../src/share/ui/ShareButton.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAI1C,wDAAwD;AACxD,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,WAAW,CAAC;AAE1D,MAAM,WAAW,gBAAgB;IAC/B,iFAAiF;IACjF,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB;;;;OAIG;IACH,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,YAAY,CAqCjE"}
@@ -0,0 +1,18 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Button, Icon } from '@blueprintjs/core';
3
+ const SHARE_TITLE = 'Share a link to this page, or embed it in your own site';
4
+ /**
5
+ * The Share entry of a site header: the button that offers the open page as a
6
+ * link, or as the iframe that frames it in someone else's site.
7
+ * @param props - What the button does, how it is dressed, and how it is named.
8
+ * @returns The button.
9
+ */
10
+ export function ShareButton(props) {
11
+ const { onClick, variant = 'nav-link', label = 'Share', compact = false, title = SHARE_TITLE, className, } = props;
12
+ const text = compact ? undefined : label;
13
+ if (variant === 'blueprint') {
14
+ return (_jsx(Button, { className: className, variant: "minimal", icon: "share", text: text, title: title, "aria-label": label, onClick: onClick }));
15
+ }
16
+ return (_jsxs("button", { type: "button", className: className === undefined ? 'nav-link' : `nav-link ${className}`, title: title, "aria-label": label, onClick: onClick, children: [_jsx(Icon, { icon: "share", size: 14 }), text] }));
17
+ }
18
+ //# sourceMappingURL=ShareButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShareButton.js","sourceRoot":"","sources":["../../../src/share/ui/ShareButton.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAGjD,MAAM,WAAW,GAAG,yDAAyD,CAAC;AAqC9E;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,MAAM,EACJ,OAAO,EACP,OAAO,GAAG,UAAU,EACpB,KAAK,GAAG,OAAO,EACf,OAAO,GAAG,KAAK,EACf,KAAK,GAAG,WAAW,EACnB,SAAS,GACV,GAAG,KAAK,CAAC;IACV,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;IAEzC,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;QAC5B,OAAO,CACL,KAAC,MAAM,IACL,SAAS,EAAE,SAAS,EACpB,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,OAAO,EACZ,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,gBACA,KAAK,EACjB,OAAO,EAAE,OAAO,GAChB,CACH,CAAC;IACJ,CAAC;IAED,OAAO,CACL,kBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,SAAS,EAAE,EACzE,KAAK,EAAE,KAAK,gBACA,KAAK,EACjB,OAAO,EAAE,OAAO,aAEhB,KAAC,IAAI,IAAC,IAAI,EAAC,OAAO,EAAC,IAAI,EAAE,EAAE,GAAI,EAC9B,IAAI,IACE,CACV,CAAC;AACJ,CAAC"}
@@ -0,0 +1,73 @@
1
+ import type { ReactElement, ReactNode } from 'react';
2
+ import type { ShareConfig, ShareParamCodecs, ShareParamValues, ShareVocabulary } from '../core/index.ts';
3
+ /**
4
+ * The configuration the dialog is holding, handed to a tool-specific section so
5
+ * it can read it and change it.
6
+ */
7
+ export interface ShareDraft<Codecs extends ShareParamCodecs = Record<string, never>> {
8
+ /** What the link would say if it were handed out now. */
9
+ config: ShareConfig<Codecs>;
10
+ /** Frame the page, or give it its chrome back. */
11
+ setEmbed: (embed: boolean) => void;
12
+ /** Switch one part of the page off, or on again. */
13
+ setPartHidden: (part: string, hidden: boolean) => void;
14
+ /** Give one of the tool's own parameters a new value. */
15
+ setParam: <Key extends keyof ShareParamValues<Codecs>>(key: Key, value: ShareParamValues<Codecs>[Key]) => void;
16
+ }
17
+ export interface ShareDialogProps<Codecs extends ShareParamCodecs = Record<string, never>> {
18
+ /** Whether the dialog is on screen. */
19
+ isOpen: boolean;
20
+ /** Called when the dialog is dismissed. */
21
+ onClose: () => void;
22
+ /** What this site's links can say: the hideable parts, and the tool's own parameters. */
23
+ vocabulary: ShareVocabulary<Codecs>;
24
+ /** How the open page is named in the dialog, and in the frame. */
25
+ title: string;
26
+ /**
27
+ * Where the page is served from — origin and path. Anything from the first
28
+ * `?` or `#` is dropped, so an address can be handed over as it is.
29
+ * @default the address of the page
30
+ */
31
+ baseUrl?: string;
32
+ /**
33
+ * The address as it stands, so the tool's own inputs travel with the link and
34
+ * a page already running a configuration opens on that one.
35
+ * @default the query string of the page
36
+ */
37
+ search?: string;
38
+ /**
39
+ * What a screen reader announces the frame as. A frame in someone else's page
40
+ * is usually named after the site as well as the page.
41
+ * @default the title
42
+ */
43
+ frameTitle?: string;
44
+ /**
45
+ * Height of the frame, in pixels.
46
+ * @default 700
47
+ */
48
+ frameHeight?: number;
49
+ /**
50
+ * Whether the dialog is rendered through a portal on `document.body`.
51
+ * @default true
52
+ */
53
+ usePortal?: boolean;
54
+ /**
55
+ * An extra section for what only this tool can configure — a series length, a
56
+ * difficulty, a seed. A function is handed the draft, so such a section can
57
+ * write the tool's own parameters into the link.
58
+ * @default undefined — the dialog shows the sections every site shares
59
+ */
60
+ children?: ReactNode | ((draft: ShareDraft<Codecs>) => ReactNode);
61
+ }
62
+ /**
63
+ * Hand the open page out as a link, or as the iframe that frames it in someone
64
+ * else's site.
65
+ *
66
+ * The dialog opens on the link one actually hands out: framed, and with the
67
+ * parts a host page has no use for already switched off. A page that is itself
68
+ * running a configuration shows that one instead.
69
+ * @param props - Whether the dialog is open, what the site's links can say, and how the page is named.
70
+ * @returns The dialog.
71
+ */
72
+ export declare function ShareDialog<Codecs extends ShareParamCodecs = Record<string, never>>(props: ShareDialogProps<Codecs>): ReactElement;
73
+ //# sourceMappingURL=ShareDialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShareDialog.d.ts","sourceRoot":"","sources":["../../../src/share/ui/ShareDialog.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAiB,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEpE,OAAO,KAAK,EACV,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAM1B;;;GAGG;AACH,MAAM,WAAW,UAAU,CACzB,MAAM,SAAS,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;IAEvD,yDAAyD;IACzD,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC5B,kDAAkD;IAClD,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,oDAAoD;IACpD,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACvD,yDAAyD;IACzD,QAAQ,EAAE,CAAC,GAAG,SAAS,MAAM,gBAAgB,CAAC,MAAM,CAAC,EACnD,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,KACjC,IAAI,CAAC;CACX;AAED,MAAM,WAAW,gBAAgB,CAC/B,MAAM,SAAS,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;IAEvD,uCAAuC;IACvC,MAAM,EAAE,OAAO,CAAC;IAChB,2CAA2C;IAC3C,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,yFAAyF;IACzF,UAAU,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IACpC,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC;CACnE;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CACzB,MAAM,SAAS,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EACvD,KAAK,EAAE,gBAAgB,CAAC,MAAM,CAAC,GAAG,YAAY,CAmB/C"}
@@ -0,0 +1,19 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Dialog } from '@blueprintjs/core';
3
+ import { ShareDialogContent } from "./ShareDialogContent.js";
4
+ const DIALOG_STYLE = { width: 'min(680px, 94vw)' };
5
+ /**
6
+ * Hand the open page out as a link, or as the iframe that frames it in someone
7
+ * else's site.
8
+ *
9
+ * The dialog opens on the link one actually hands out: framed, and with the
10
+ * parts a host page has no use for already switched off. A page that is itself
11
+ * running a configuration shows that one instead.
12
+ * @param props - Whether the dialog is open, what the site's links can say, and how the page is named.
13
+ * @returns The dialog.
14
+ */
15
+ export function ShareDialog(props) {
16
+ const { isOpen, onClose, usePortal = true, ...rest } = props;
17
+ return (_jsx(Dialog, { isOpen: isOpen, onClose: onClose, usePortal: usePortal, title: "Share or embed", icon: "share", className: "share-dialog", style: DIALOG_STYLE, children: isOpen ? _jsx(ShareDialogContent, { ...rest, onClose: onClose }) : null }));
18
+ }
19
+ //# sourceMappingURL=ShareDialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShareDialog.js","sourceRoot":"","sources":["../../../src/share/ui/ShareDialog.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAU3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAA0B,CAAC;AAE9D,MAAM,YAAY,GAAkB,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC;AAsElE;;;;;;;;;GASG;AACH,MAAM,UAAU,WAAW,CAEzB,KAA+B;IAC/B,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IAE7D,OAAO,CACL,KAAC,MAAM,IACL,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAC,gBAAgB,EACtB,IAAI,EAAC,OAAO,EACZ,SAAS,EAAC,cAAc,EACxB,KAAK,EAAE,YAAY,YAKlB,MAAM,CAAC,CAAC,CAAC,KAAC,kBAAkB,OAAK,IAAI,EAAE,OAAO,EAAE,OAAO,GAAI,CAAC,CAAC,CAAC,IAAI,GAC5D,CACV,CAAC;AACJ,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { ReactElement } from 'react';
2
+ import type { ShareParamCodecs } from '../core/index.ts';
3
+ import type { ShareDialogProps } from './ShareDialog.tsx';
4
+ /** Everything the dialog holds, minus what only its shell is concerned with. */
5
+ export type ShareDialogContentProps<Codecs extends ShareParamCodecs = Record<string, never>> = Omit<ShareDialogProps<Codecs>, 'isOpen' | 'usePortal'>;
6
+ /**
7
+ * The sections of the share dialog: what the link says, what it hands out, and
8
+ * the markup that frames it.
9
+ * @param props - What the site's links can say, how the page is named, and the extra section.
10
+ * @returns The body and the footer of the dialog.
11
+ */
12
+ export declare function ShareDialogContent<Codecs extends ShareParamCodecs = Record<string, never>>(props: ShareDialogContentProps<Codecs>): ReactElement;
13
+ //# sourceMappingURL=ShareDialogContent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShareDialogContent.d.ts","sourceRoot":"","sources":["../../../src/share/ui/ShareDialogContent.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAiB,YAAY,EAAE,MAAM,OAAO,CAAC;AAIzD,OAAO,KAAK,EAEV,gBAAgB,EAGjB,MAAM,kBAAkB,CAAC;AAS1B,OAAO,KAAK,EAAE,gBAAgB,EAAc,MAAM,mBAAmB,CAAC;AAmBtE,gFAAgF;AAChF,MAAM,MAAM,uBAAuB,CACjC,MAAM,SAAS,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IACrD,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC,CAAC;AAE3D;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,SAAS,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EACvD,KAAK,EAAE,uBAAuB,CAAC,MAAM,CAAC,GAAG,YAAY,CAwHtD"}
@@ -0,0 +1,71 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { AnchorButton, Button, Checkbox, DialogBody, DialogFooter, H6, } from '@blueprintjs/core';
3
+ import { useState } from 'react';
4
+ import { CodeBlock, CopyButton } from "../../clipboard/ui/index.js";
5
+ import { buildEmbedCode, buildShareUrl, isShareConfigured, parseShareConfig, suggestedShareConfig, } from "../core/index.js";
6
+ import { SharePartOptions } from "./SharePartOptions.js";
7
+ import { withPart } from "./draft.js";
8
+ const LEAD_STYLE = { marginTop: 0, color: '#5b6875' };
9
+ const SECTION_STYLE = { marginBottom: 18 };
10
+ const ACTIONS_STYLE = {
11
+ display: 'flex',
12
+ flexWrap: 'wrap',
13
+ gap: 8,
14
+ marginTop: 8,
15
+ };
16
+ const HINT_STYLE = {
17
+ display: 'block',
18
+ marginLeft: 26,
19
+ color: '#5b6875',
20
+ fontSize: 12,
21
+ };
22
+ /**
23
+ * The sections of the share dialog: what the link says, what it hands out, and
24
+ * the markup that frames it.
25
+ * @param props - What the site's links can say, how the page is named, and the extra section.
26
+ * @returns The body and the footer of the dialog.
27
+ */
28
+ export function ShareDialogContent(props) {
29
+ const { onClose, vocabulary, title, baseUrl, search, frameTitle, frameHeight, children, } = props;
30
+ const address = globalThis.location;
31
+ const base = baseUrl ?? address?.href ?? '';
32
+ const query = search ?? address?.search ?? '';
33
+ const [config, setConfig] = useState(() => initialDraft(query, vocabulary));
34
+ function setEmbed(embed) {
35
+ setConfig((previous) => ({ ...previous, embed }));
36
+ }
37
+ function setPartHidden(part, hidden) {
38
+ setConfig((previous) => ({
39
+ ...previous,
40
+ hidden: withPart(previous.hidden, part, hidden),
41
+ }));
42
+ }
43
+ function setParam(key, value) {
44
+ setConfig((previous) => ({
45
+ ...previous,
46
+ params: { ...previous.params, [key]: value },
47
+ }));
48
+ }
49
+ const draft = {
50
+ config,
51
+ setEmbed,
52
+ setPartHidden,
53
+ setParam,
54
+ };
55
+ const url = buildShareUrl({ base, search: query, config, vocabulary });
56
+ const frame = buildEmbedCode({
57
+ url,
58
+ title: frameTitle ?? title,
59
+ height: frameHeight,
60
+ });
61
+ return (_jsxs(_Fragment, { children: [_jsxs(DialogBody, { children: [_jsxs("p", { style: LEAD_STYLE, children: ["A link to ", _jsx("b", { children: title }), " as you have it set up now."] }), _jsxs("section", { className: "share-section", style: SECTION_STYLE, children: [_jsx(H6, { children: "Layout" }), _jsx(Checkbox, { checked: config.embed, label: "Embed in another page", onChange: (event) => {
62
+ setEmbed(event.currentTarget.checked);
63
+ } }), _jsx("span", { style: HINT_STYLE, children: "Drops the site header and its navigation, so the page sits inside a page of your own." })] }), vocabulary.parts.length > 0 ? (_jsxs("section", { className: "share-section", style: SECTION_STYLE, children: [_jsx(H6, { children: "Show on the page" }), _jsx(SharePartOptions, { parts: vocabulary.parts, hidden: config.hidden, onChange: setPartHidden })] })) : null, children === undefined ? null : (_jsx("section", { className: "share-section", style: SECTION_STYLE, children: typeof children === 'function' ? children(draft) : children })), _jsxs("section", { className: "share-section", style: SECTION_STYLE, children: [_jsx(H6, { children: "Link" }), _jsx(CodeBlock, { code: url, tone: "muted" }), _jsxs("div", { style: ACTIONS_STYLE, children: [_jsx(CopyButton, { content: url, label: "Copy the link" }), _jsx(AnchorButton, { icon: "share", text: "Open in a new tab", href: url, target: "_blank", rel: "noopener noreferrer" })] })] }), _jsxs("section", { className: "share-section", style: SECTION_STYLE, children: [_jsx(H6, { children: "Iframe" }), _jsx(CodeBlock, { code: frame, tone: "muted" }), _jsx("div", { style: ACTIONS_STYLE, children: _jsx(CopyButton, { content: frame, label: "Copy the iframe" }) })] })] }), _jsx(DialogFooter, { actions: _jsx(Button, { intent: "primary", text: "Done", onClick: onClose }) })] }));
64
+ }
65
+ function initialDraft(search, vocabulary) {
66
+ const current = parseShareConfig(search, vocabulary);
67
+ return isShareConfigured(current, vocabulary)
68
+ ? current
69
+ : suggestedShareConfig(vocabulary);
70
+ }
71
+ //# sourceMappingURL=ShareDialogContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShareDialogContent.js","sourceRoot":"","sources":["../../../src/share/ui/ShareDialogContent.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { ReactElement } from 'react';
2
+ import type { HideablePart } from '../core/index.ts';
3
+ export interface SharePartOptionsProps {
4
+ /** The parts this page can switch off, in the order the vocabulary lists them. */
5
+ parts: readonly HideablePart[];
6
+ /** The parts the draft currently switches off. */
7
+ hidden: readonly string[];
8
+ /** Called with the part and whether the link should switch it off. */
9
+ onChange: (part: string, hidden: boolean) => void;
10
+ }
11
+ /**
12
+ * One box per part of the page, worded positively: a ticked box is a part the
13
+ * link keeps, which is how somebody building a course tile thinks about it.
14
+ * @param props - The parts, what is switched off, and how to change it.
15
+ * @returns The list of boxes.
16
+ */
17
+ export declare function SharePartOptions(props: SharePartOptionsProps): ReactElement;
18
+ //# sourceMappingURL=SharePartOptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SharePartOptions.d.ts","sourceRoot":"","sources":["../../../src/share/ui/SharePartOptions.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAiB,YAAY,EAAE,MAAM,OAAO,CAAC;AAEzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAWrD,MAAM,WAAW,qBAAqB;IACpC,kFAAkF;IAClF,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;IAC/B,kDAAkD;IAClD,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,sEAAsE;IACtE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CACnD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,YAAY,CAqB3E"}
@@ -0,0 +1,22 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { Checkbox } from '@blueprintjs/core';
3
+ const OPTION_STYLE = { marginBottom: 8 };
4
+ const DESCRIPTION_STYLE = {
5
+ display: 'block',
6
+ marginLeft: 26,
7
+ color: '#5b6875',
8
+ fontSize: 12,
9
+ };
10
+ /**
11
+ * One box per part of the page, worded positively: a ticked box is a part the
12
+ * link keeps, which is how somebody building a course tile thinks about it.
13
+ * @param props - The parts, what is switched off, and how to change it.
14
+ * @returns The list of boxes.
15
+ */
16
+ export function SharePartOptions(props) {
17
+ const { parts, hidden, onChange } = props;
18
+ return (_jsx(_Fragment, { children: parts.map((part) => (_jsxs("div", { style: OPTION_STYLE, className: "share-part", children: [_jsx(Checkbox, { checked: !hidden.includes(part.key), label: part.label, onChange: (event) => {
19
+ onChange(part.key, !event.currentTarget.checked);
20
+ } }), _jsx("span", { style: DESCRIPTION_STYLE, className: "share-part-description", children: part.description })] }, part.key))) }));
21
+ }
22
+ //# sourceMappingURL=SharePartOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SharePartOptions.js","sourceRoot":"","sources":["../../../src/share/ui/SharePartOptions.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAK7C,MAAM,YAAY,GAAkB,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;AAExD,MAAM,iBAAiB,GAAkB;IACvC,OAAO,EAAE,OAAO;IAChB,UAAU,EAAE,EAAE;IACd,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,EAAE;CACb,CAAC;AAWF;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAA4B;IAC3D,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAE1C,OAAO,CACL,4BACG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACnB,eAAoB,KAAK,EAAE,YAAY,EAAE,SAAS,EAAC,YAAY,aAC7D,KAAC,QAAQ,IACP,OAAO,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EACnC,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;wBAClB,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;oBACnD,CAAC,GACD,EACF,eAAM,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAC,wBAAwB,YAC/D,IAAI,CAAC,WAAW,GACZ,KAVC,IAAI,CAAC,GAAG,CAWZ,CACP,CAAC,GACD,CACJ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Switch one part of the page off, or on again, in the draft the dialog holds.
3
+ *
4
+ * A part is named once however many times it is ticked, and the order the
5
+ * vocabulary gives is restored when the link is written, so two people who
6
+ * ticked the same boxes hand out the same link.
7
+ * @param hidden - The parts the draft switches off.
8
+ * @param part - The part being ticked.
9
+ * @param off - Whether the link should switch it off.
10
+ * @returns The parts the draft switches off after the change.
11
+ */
12
+ export declare function withPart(hidden: readonly string[], part: string, off: boolean): readonly string[];
13
+ //# sourceMappingURL=draft.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draft.d.ts","sourceRoot":"","sources":["../../../src/share/ui/draft.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CACtB,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,OAAO,GACX,SAAS,MAAM,EAAE,CAGnB"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Switch one part of the page off, or on again, in the draft the dialog holds.
3
+ *
4
+ * A part is named once however many times it is ticked, and the order the
5
+ * vocabulary gives is restored when the link is written, so two people who
6
+ * ticked the same boxes hand out the same link.
7
+ * @param hidden - The parts the draft switches off.
8
+ * @param part - The part being ticked.
9
+ * @param off - Whether the link should switch it off.
10
+ * @returns The parts the draft switches off after the change.
11
+ */
12
+ export function withPart(hidden, part, off) {
13
+ const rest = hidden.filter((entry) => entry !== part);
14
+ return off ? [...rest, part] : rest;
15
+ }
16
+ //# sourceMappingURL=draft.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draft.js","sourceRoot":"","sources":["../../../src/share/ui/draft.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,UAAU,QAAQ,CACtB,MAAyB,EACzB,IAAY,EACZ,GAAY;IAEZ,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;IACtD,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACtC,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * The parts the link switched off, so a component that can be left out of an
3
+ * embedded page reads the configuration instead of taking it as a prop.
4
+ *
5
+ * A page with no provider above it hides nothing, which is what a site that
6
+ * hands out no links wants.
7
+ */
8
+ export declare const HiddenPartsContext: import("react").Context<ReadonlySet<string>>;
9
+ /**
10
+ * Ask whether the link the page was opened with switches a part off.
11
+ *
12
+ * Hidden means hidden, not disabled: the value a hidden control carries still
13
+ * applies, so an embedder can preset what a visitor may not change.
14
+ * @returns A predicate over the part keys of the site's vocabulary.
15
+ */
16
+ export declare function useIsHidden(): (part: string) => boolean;
17
+ //# sourceMappingURL=hiddenParts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hiddenParts.d.ts","sourceRoot":"","sources":["../../../src/share/ui/hiddenParts.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,8CAAgD,CAAC;AAEhF;;;;;;GAMG;AACH,wBAAgB,WAAW,IAAI,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAGvD"}
@@ -0,0 +1,21 @@
1
+ import { createContext, useCallback, useContext } from 'react';
2
+ /**
3
+ * The parts the link switched off, so a component that can be left out of an
4
+ * embedded page reads the configuration instead of taking it as a prop.
5
+ *
6
+ * A page with no provider above it hides nothing, which is what a site that
7
+ * hands out no links wants.
8
+ */
9
+ export const HiddenPartsContext = createContext(new Set());
10
+ /**
11
+ * Ask whether the link the page was opened with switches a part off.
12
+ *
13
+ * Hidden means hidden, not disabled: the value a hidden control carries still
14
+ * applies, so an embedder can preset what a visitor may not change.
15
+ * @returns A predicate over the part keys of the site's vocabulary.
16
+ */
17
+ export function useIsHidden() {
18
+ const hidden = useContext(HiddenPartsContext);
19
+ return useCallback((part) => hidden.has(part), [hidden]);
20
+ }
21
+ //# sourceMappingURL=hiddenParts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hiddenParts.js","sourceRoot":"","sources":["../../../src/share/ui/hiddenParts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,aAAa,CAAsB,IAAI,GAAG,EAAE,CAAC,CAAC;AAEhF;;;;;;GAMG;AACH,MAAM,UAAU,WAAW;IACzB,MAAM,MAAM,GAAG,UAAU,CAAC,kBAAkB,CAAC,CAAC;IAC9C,OAAO,WAAW,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AACnE,CAAC"}
@@ -0,0 +1,10 @@
1
+ export type { HiddenPartsProviderProps } from './HiddenPartsProvider.tsx';
2
+ export { HiddenPartsProvider } from './HiddenPartsProvider.tsx';
3
+ export { useIsHidden } from './hiddenParts.ts';
4
+ export type { PagePartProps } from './PagePart.tsx';
5
+ export { PagePart } from './PagePart.tsx';
6
+ export type { ShareButtonProps, ShareButtonVariant } from './ShareButton.tsx';
7
+ export { ShareButton } from './ShareButton.tsx';
8
+ export type { ShareDialogProps } from './ShareDialog.tsx';
9
+ export { ShareDialog } from './ShareDialog.tsx';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/share/ui/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { HiddenPartsProvider } from "./HiddenPartsProvider.js";
2
+ export { useIsHidden } from "./hiddenParts.js";
3
+ export { PagePart } from "./PagePart.js";
4
+ export { ShareButton } from "./ShareButton.js";
5
+ export { ShareDialog } from "./ShareDialog.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/share/ui/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA2B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAgB,CAAC;AAE1C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAmB,CAAC;AAEhD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAmB,CAAC"}
@@ -1,2 +1,3 @@
1
- export type { HeaderButtonProps } from './MenuButton.tsx';
1
+ export type { HeaderButtonProps, MenuButtonProps } from './MenuButton.tsx';
2
+ export { MenuButton } from './MenuButton.tsx';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/ui/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/ui/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,2 +1,2 @@
1
- export {};
1
+ export { MenuButton } from "./MenuButton.js";
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/shared/ui/index.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/shared/ui/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAkB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export type { BucketRead, PersistBucketOptions, PersistedBucket, } from './persistBucket.ts';
2
+ export { persistBucket } from './persistBucket.ts';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/state/ui/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,UAAU,EACV,oBAAoB,EACpB,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { persistBucket } from "./persistBucket.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/state/ui/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Merge what came out of storage over the defaults it was stored against.
3
+ *
4
+ * A field the defaults name and the payload does not keeps its default, so a
5
+ * field added after the last save lands as its default rather than as
6
+ * `undefined`. A field whose stored value no longer has the shape of its
7
+ * default — a number where a string is expected, an object where an array is —
8
+ * is discarded, because a payload written by an older version of a page must
9
+ * never reach the interface as the wrong type. A key the defaults do not name
10
+ * is kept, so a bucket whose default is an empty dictionary keeps everything
11
+ * that was ever put in it.
12
+ *
13
+ * The result shares no object and no array with `defaults`, so a caller may
14
+ * write into it.
15
+ * @param defaults - What every missing or unusable field falls back to.
16
+ * @param stored - Whatever `JSON.parse` gave back, trusted for nothing.
17
+ * @returns The defaults, with whatever was stored and is usable on top.
18
+ */
19
+ export declare function mergeStored<T extends object>(defaults: T, stored: unknown): T;
20
+ /**
21
+ * Whether a value is a plain object — the shape the JSON payload of a bucket
22
+ * takes — rather than an array, a primitive or null.
23
+ * @param value - Value to inspect.
24
+ * @returns True for a plain object.
25
+ */
26
+ export declare function isPlainRecord(value: unknown): value is Record<string, unknown>;
27
+ //# sourceMappingURL=mergeStored.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mergeStored.d.ts","sourceRoot":"","sources":["../../../src/state/ui/mergeStored.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,GAAG,CAAC,CAG7E;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAElC"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Merge what came out of storage over the defaults it was stored against.
3
+ *
4
+ * A field the defaults name and the payload does not keeps its default, so a
5
+ * field added after the last save lands as its default rather than as
6
+ * `undefined`. A field whose stored value no longer has the shape of its
7
+ * default — a number where a string is expected, an object where an array is —
8
+ * is discarded, because a payload written by an older version of a page must
9
+ * never reach the interface as the wrong type. A key the defaults do not name
10
+ * is kept, so a bucket whose default is an empty dictionary keeps everything
11
+ * that was ever put in it.
12
+ *
13
+ * The result shares no object and no array with `defaults`, so a caller may
14
+ * write into it.
15
+ * @param defaults - What every missing or unusable field falls back to.
16
+ * @param stored - Whatever `JSON.parse` gave back, trusted for nothing.
17
+ * @returns The defaults, with whatever was stored and is usable on top.
18
+ */
19
+ export function mergeStored(defaults, stored) {
20
+ const source = isPlainRecord(stored) ? stored : {};
21
+ return mergeRecord(defaults, source);
22
+ }
23
+ /**
24
+ * Whether a value is a plain object — the shape the JSON payload of a bucket
25
+ * takes — rather than an array, a primitive or null.
26
+ * @param value - Value to inspect.
27
+ * @returns True for a plain object.
28
+ */
29
+ export function isPlainRecord(value) {
30
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
31
+ }
32
+ function mergeRecord(defaults, stored) {
33
+ const merged = {};
34
+ for (const [name, value] of Object.entries(defaults)) {
35
+ merged[name] = cloneValue(value);
36
+ }
37
+ for (const [name, value] of Object.entries(stored)) {
38
+ if (value === undefined)
39
+ continue;
40
+ merged[name] = Object.hasOwn(defaults, name)
41
+ ? mergeValue(defaults[name], value)
42
+ : value;
43
+ }
44
+ return merged;
45
+ }
46
+ function mergeValue(defaultValue, storedValue) {
47
+ if (isPlainRecord(defaultValue) && isPlainRecord(storedValue)) {
48
+ return mergeRecord(defaultValue, storedValue);
49
+ }
50
+ return hasSameShape(defaultValue, storedValue)
51
+ ? storedValue
52
+ : cloneValue(defaultValue);
53
+ }
54
+ // A default that is `null` or absent accepts anything, since it names no shape
55
+ // of its own.
56
+ function hasSameShape(defaultValue, storedValue) {
57
+ if (defaultValue === null || defaultValue === undefined)
58
+ return true;
59
+ if (storedValue === null)
60
+ return false;
61
+ if (Array.isArray(defaultValue) !== Array.isArray(storedValue))
62
+ return false;
63
+ return typeof defaultValue === typeof storedValue;
64
+ }
65
+ function cloneValue(value) {
66
+ if (Array.isArray(value)) {
67
+ const copy = new Array(value.length);
68
+ for (let index = 0; index < value.length; index++) {
69
+ copy[index] = cloneValue(value[index]);
70
+ }
71
+ return copy;
72
+ }
73
+ if (isPlainRecord(value)) {
74
+ const copy = {};
75
+ for (const [name, item] of Object.entries(value)) {
76
+ copy[name] = cloneValue(item);
77
+ }
78
+ return copy;
79
+ }
80
+ return value;
81
+ }
82
+ //# sourceMappingURL=mergeStored.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mergeStored.js","sourceRoot":"","sources":["../../../src/state/ui/mergeStored.ts"],"names":[],"mappings":"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"}