react-cheminfo 0.3.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +111 -23
- package/lib/capsule/ui/CapsuleFilter.d.ts +61 -0
- package/lib/capsule/ui/CapsuleFilter.d.ts.map +1 -0
- package/lib/capsule/ui/CapsuleFilter.js +33 -0
- package/lib/capsule/ui/CapsuleFilter.js.map +1 -0
- package/lib/capsule/ui/index.d.ts +3 -0
- package/lib/capsule/ui/index.d.ts.map +1 -0
- package/lib/capsule/ui/index.js +2 -0
- package/lib/capsule/ui/index.js.map +1 -0
- package/lib/chrome/ui/NavLink.d.ts +27 -0
- package/lib/chrome/ui/NavLink.d.ts.map +1 -0
- package/lib/chrome/ui/NavLink.js +36 -0
- package/lib/chrome/ui/NavLink.js.map +1 -0
- package/lib/chrome/ui/NavMenuButton.d.ts +40 -0
- package/lib/chrome/ui/NavMenuButton.d.ts.map +1 -0
- package/lib/chrome/ui/NavMenuButton.js +26 -0
- package/lib/chrome/ui/NavMenuButton.js.map +1 -0
- package/lib/chrome/ui/SiteFooter.d.ts +39 -0
- package/lib/chrome/ui/SiteFooter.d.ts.map +1 -0
- package/lib/chrome/ui/SiteFooter.js +17 -0
- package/lib/chrome/ui/SiteFooter.js.map +1 -0
- package/lib/chrome/ui/SiteHeader.d.ts +59 -0
- package/lib/chrome/ui/SiteHeader.d.ts.map +1 -0
- package/lib/chrome/ui/SiteHeader.js +28 -0
- package/lib/chrome/ui/SiteHeader.js.map +1 -0
- package/lib/chrome/ui/index.d.ts +12 -0
- package/lib/chrome/ui/index.d.ts.map +1 -0
- package/lib/chrome/ui/index.js +6 -0
- package/lib/chrome/ui/index.js.map +1 -0
- package/lib/chrome/ui/navItem.d.ts +57 -0
- package/lib/chrome/ui/navItem.d.ts.map +1 -0
- package/lib/chrome/ui/navItem.js +10 -0
- package/lib/chrome/ui/navItem.js.map +1 -0
- package/lib/chrome/ui/useCompactHeader.d.ts +31 -0
- package/lib/chrome/ui/useCompactHeader.d.ts.map +1 -0
- package/lib/chrome/ui/useCompactHeader.js +50 -0
- package/lib/chrome/ui/useCompactHeader.js.map +1 -0
- package/lib/citation/core/clipboard.d.ts +12 -3
- package/lib/citation/core/clipboard.d.ts.map +1 -1
- package/lib/citation/core/clipboard.js +21 -10
- package/lib/citation/core/clipboard.js.map +1 -1
- package/lib/citation/core/download.d.ts +11 -3
- package/lib/citation/core/download.d.ts.map +1 -1
- package/lib/citation/core/download.js +17 -13
- package/lib/citation/core/download.js.map +1 -1
- package/lib/citation/core/index.d.ts +4 -3
- package/lib/citation/core/index.d.ts.map +1 -1
- package/lib/citation/core/index.js +3 -3
- package/lib/citation/core/index.js.map +1 -1
- package/lib/citation/core/works.d.ts +44 -0
- package/lib/citation/core/works.d.ts.map +1 -0
- package/lib/citation/core/works.js +51 -0
- package/lib/citation/core/works.js.map +1 -0
- package/lib/citation/ui/CitationMenu.d.ts +20 -3
- package/lib/citation/ui/CitationMenu.d.ts.map +1 -1
- package/lib/citation/ui/CitationMenu.js +60 -49
- package/lib/citation/ui/CitationMenu.js.map +1 -1
- package/lib/citation/ui/CitationPreview.d.ts +5 -2
- package/lib/citation/ui/CitationPreview.d.ts.map +1 -1
- package/lib/citation/ui/CitationPreview.js +9 -4
- package/lib/citation/ui/CitationPreview.js.map +1 -1
- package/lib/citation/ui/CiteButton.d.ts +13 -6
- package/lib/citation/ui/CiteButton.d.ts.map +1 -1
- package/lib/citation/ui/CiteButton.js +5 -4
- package/lib/citation/ui/CiteButton.js.map +1 -1
- package/lib/citation/ui/CopyFormatEntries.d.ts +31 -0
- package/lib/citation/ui/CopyFormatEntries.d.ts.map +1 -0
- package/lib/citation/ui/CopyFormatEntries.js +29 -0
- package/lib/citation/ui/CopyFormatEntries.js.map +1 -0
- package/lib/citation/ui/WorkEntry.d.ts +18 -0
- package/lib/citation/ui/WorkEntry.d.ts.map +1 -0
- package/lib/citation/ui/WorkEntry.js +32 -0
- package/lib/citation/ui/WorkEntry.js.map +1 -0
- package/lib/citation/ui/entries.d.ts +7 -7
- package/lib/citation/ui/entries.d.ts.map +1 -1
- package/lib/citation/ui/entries.js +11 -13
- package/lib/citation/ui/entries.js.map +1 -1
- package/lib/citation/ui/index.d.ts +2 -2
- package/lib/citation/ui/index.d.ts.map +1 -1
- package/lib/citation/ui/index.js.map +1 -1
- package/lib/citation/ui/useCopyFeedback.d.ts +20 -0
- package/lib/citation/ui/useCopyFeedback.d.ts.map +1 -0
- package/lib/citation/ui/useCopyFeedback.js +49 -0
- package/lib/citation/ui/useCopyFeedback.js.map +1 -0
- package/lib/clipboard/core/index.d.ts +2 -0
- package/lib/clipboard/core/index.d.ts.map +1 -0
- package/lib/clipboard/core/index.js +2 -0
- package/lib/clipboard/core/index.js.map +1 -0
- package/lib/clipboard/core/writeToClipboard.d.ts +12 -0
- package/lib/clipboard/core/writeToClipboard.d.ts.map +1 -0
- package/lib/clipboard/core/writeToClipboard.js +49 -0
- package/lib/clipboard/core/writeToClipboard.js.map +1 -0
- package/lib/clipboard/ui/CodeBlock.d.ts +43 -0
- package/lib/clipboard/ui/CodeBlock.d.ts.map +1 -0
- package/lib/clipboard/ui/CodeBlock.js +49 -0
- package/lib/clipboard/ui/CodeBlock.js.map +1 -0
- package/lib/clipboard/ui/CopyButton.d.ts +64 -0
- package/lib/clipboard/ui/CopyButton.d.ts.map +1 -0
- package/lib/clipboard/ui/CopyButton.js +21 -0
- package/lib/clipboard/ui/CopyButton.js.map +1 -0
- package/lib/clipboard/ui/index.d.ts +7 -0
- package/lib/clipboard/ui/index.d.ts.map +1 -0
- package/lib/clipboard/ui/index.js +4 -0
- package/lib/clipboard/ui/index.js.map +1 -0
- package/lib/clipboard/ui/useCopyToClipboard.d.ts +24 -0
- package/lib/clipboard/ui/useCopyToClipboard.d.ts.map +1 -0
- package/lib/clipboard/ui/useCopyToClipboard.js +36 -0
- package/lib/clipboard/ui/useCopyToClipboard.js.map +1 -0
- package/lib/color/core/contrast.d.ts +43 -0
- package/lib/color/core/contrast.d.ts.map +1 -0
- package/lib/color/core/contrast.js +61 -0
- package/lib/color/core/contrast.js.map +1 -0
- package/lib/color/core/hex.d.ts +26 -0
- package/lib/color/core/hex.d.ts.map +1 -0
- package/lib/color/core/hex.js +44 -0
- package/lib/color/core/hex.js.map +1 -0
- package/lib/color/core/index.d.ts +5 -0
- package/lib/color/core/index.d.ts.map +1 -0
- package/lib/color/core/index.js +3 -0
- package/lib/color/core/index.js.map +1 -0
- package/lib/color/core/scale.d.ts +52 -0
- package/lib/color/core/scale.d.ts.map +1 -0
- package/lib/color/core/scale.js +96 -0
- package/lib/color/core/scale.js.map +1 -0
- package/lib/color/ui/ColorScaleLegend.d.ts +38 -0
- package/lib/color/ui/ColorScaleLegend.d.ts.map +1 -0
- package/lib/color/ui/ColorScaleLegend.js +68 -0
- package/lib/color/ui/ColorScaleLegend.js.map +1 -0
- package/lib/color/ui/index.d.ts +3 -0
- package/lib/color/ui/index.d.ts.map +1 -0
- package/lib/color/ui/index.js +2 -0
- package/lib/color/ui/index.js.map +1 -0
- package/lib/core.d.ts +11 -0
- package/lib/core.d.ts.map +1 -1
- package/lib/core.js +11 -0
- package/lib/core.js.map +1 -1
- package/lib/credits/core/credits.d.ts +144 -0
- package/lib/credits/core/credits.d.ts.map +1 -0
- package/lib/credits/core/credits.js +156 -0
- package/lib/credits/core/credits.js.map +1 -0
- package/lib/credits/core/index.d.ts +3 -0
- package/lib/credits/core/index.d.ts.map +1 -0
- package/lib/credits/core/index.js +2 -0
- package/lib/credits/core/index.js.map +1 -0
- package/lib/credits/ui/CreditsList.d.ts +29 -0
- package/lib/credits/ui/CreditsList.d.ts.map +1 -0
- package/lib/credits/ui/CreditsList.js +33 -0
- package/lib/credits/ui/CreditsList.js.map +1 -0
- package/lib/credits/ui/index.d.ts +3 -0
- package/lib/credits/ui/index.d.ts.map +1 -0
- package/lib/credits/ui/index.js +2 -0
- package/lib/credits/ui/index.js.map +1 -0
- package/lib/delimited/core/delimiters.d.ts +31 -0
- package/lib/delimited/core/delimiters.d.ts.map +1 -0
- package/lib/delimited/core/delimiters.js +46 -0
- package/lib/delimited/core/delimiters.js.map +1 -0
- package/lib/delimited/core/index.d.ts +9 -0
- package/lib/delimited/core/index.d.ts.map +1 -0
- package/lib/delimited/core/index.js +5 -0
- package/lib/delimited/core/index.js.map +1 -0
- package/lib/delimited/core/readDelimited.d.ts +32 -0
- package/lib/delimited/core/readDelimited.d.ts.map +1 -0
- package/lib/delimited/core/readDelimited.js +122 -0
- package/lib/delimited/core/readDelimited.js.map +1 -0
- package/lib/delimited/core/rowsToDelimited.d.ts +59 -0
- package/lib/delimited/core/rowsToDelimited.d.ts.map +1 -0
- package/lib/delimited/core/rowsToDelimited.js +87 -0
- package/lib/delimited/core/rowsToDelimited.js.map +1 -0
- package/lib/delimited/core/toDelimited.d.ts +38 -0
- package/lib/delimited/core/toDelimited.d.ts.map +1 -0
- package/lib/delimited/core/toDelimited.js +45 -0
- package/lib/delimited/core/toDelimited.js.map +1 -0
- package/lib/delimited/ui/DelimitedTextDialog.d.ts +22 -0
- package/lib/delimited/ui/DelimitedTextDialog.d.ts.map +1 -0
- package/lib/delimited/ui/DelimitedTextDialog.js +17 -0
- package/lib/delimited/ui/DelimitedTextDialog.js.map +1 -0
- package/lib/delimited/ui/DelimitedTextPanel.d.ts +56 -0
- package/lib/delimited/ui/DelimitedTextPanel.d.ts.map +1 -0
- package/lib/delimited/ui/DelimitedTextPanel.js +55 -0
- package/lib/delimited/ui/DelimitedTextPanel.js.map +1 -0
- package/lib/delimited/ui/index.d.ts +5 -0
- package/lib/delimited/ui/index.d.ts.map +1 -0
- package/lib/delimited/ui/index.js +3 -0
- package/lib/delimited/ui/index.js.map +1 -0
- package/lib/disclosure/ui/CollapsibleSection.d.ts +57 -0
- package/lib/disclosure/ui/CollapsibleSection.d.ts.map +1 -0
- package/lib/disclosure/ui/CollapsibleSection.js +60 -0
- package/lib/disclosure/ui/CollapsibleSection.js.map +1 -0
- package/lib/disclosure/ui/index.d.ts +5 -0
- package/lib/disclosure/ui/index.d.ts.map +1 -0
- package/lib/disclosure/ui/index.js +3 -0
- package/lib/disclosure/ui/index.js.map +1 -0
- package/lib/disclosure/ui/useDisclosure.d.ts +22 -0
- package/lib/disclosure/ui/useDisclosure.d.ts.map +1 -0
- package/lib/disclosure/ui/useDisclosure.js +18 -0
- package/lib/disclosure/ui/useDisclosure.js.map +1 -0
- package/lib/download/core/downloadBlob.d.ts +10 -0
- package/lib/download/core/downloadBlob.d.ts.map +1 -0
- package/lib/download/core/downloadBlob.js +20 -0
- package/lib/download/core/downloadBlob.js.map +1 -0
- package/lib/download/core/downloadText.d.ts +9 -0
- package/lib/download/core/downloadText.d.ts.map +1 -0
- package/lib/download/core/downloadText.js +14 -0
- package/lib/download/core/downloadText.js.map +1 -0
- package/lib/download/core/index.d.ts +4 -0
- package/lib/download/core/index.d.ts.map +1 -0
- package/lib/download/core/index.js +4 -0
- package/lib/download/core/index.js.map +1 -0
- package/lib/download/core/sanitizeFileName.d.ts +15 -0
- package/lib/download/core/sanitizeFileName.d.ts.map +1 -0
- package/lib/download/core/sanitizeFileName.js +33 -0
- package/lib/download/core/sanitizeFileName.js.map +1 -0
- package/lib/ecosystem/core/index.d.ts +3 -0
- package/lib/ecosystem/core/index.d.ts.map +1 -1
- package/lib/ecosystem/core/index.js +3 -0
- package/lib/ecosystem/core/index.js.map +1 -1
- package/lib/ecosystem/core/links.d.ts +11 -0
- package/lib/ecosystem/core/links.d.ts.map +1 -0
- package/lib/ecosystem/core/links.js +28 -0
- package/lib/ecosystem/core/links.js.map +1 -0
- package/lib/ecosystem/core/lookup.d.ts +32 -0
- package/lib/ecosystem/core/lookup.d.ts.map +1 -0
- package/lib/ecosystem/core/lookup.js +55 -0
- package/lib/ecosystem/core/lookup.js.map +1 -0
- package/lib/ecosystem/core/sites.d.ts +3 -1
- package/lib/ecosystem/core/sites.d.ts.map +1 -1
- package/lib/ecosystem/core/sites.js +18 -3
- package/lib/ecosystem/core/sites.js.map +1 -1
- package/lib/ecosystem/core/tokens.d.ts +21 -0
- package/lib/ecosystem/core/tokens.d.ts.map +1 -0
- package/lib/ecosystem/core/tokens.js +42 -0
- package/lib/ecosystem/core/tokens.js.map +1 -0
- package/lib/ecosystem/ui/SiteTheme.d.ts +18 -0
- package/lib/ecosystem/ui/SiteTheme.d.ts.map +1 -0
- package/lib/ecosystem/ui/SiteTheme.js +16 -0
- package/lib/ecosystem/ui/SiteTheme.js.map +1 -0
- package/lib/ecosystem/ui/Wordmark.d.ts +30 -0
- package/lib/ecosystem/ui/Wordmark.d.ts.map +1 -0
- package/lib/ecosystem/ui/Wordmark.js +26 -0
- package/lib/ecosystem/ui/Wordmark.js.map +1 -0
- package/lib/ecosystem/ui/glyphs.js +1 -1
- package/lib/ecosystem/ui/glyphs.js.map +1 -1
- package/lib/ecosystem/ui/index.d.ts +4 -0
- package/lib/ecosystem/ui/index.d.ts.map +1 -1
- package/lib/ecosystem/ui/index.js +2 -0
- package/lib/ecosystem/ui/index.js.map +1 -1
- package/lib/ecosystem/ui/marks.d.ts +30 -4
- package/lib/ecosystem/ui/marks.d.ts.map +1 -1
- package/lib/ecosystem/ui/marks.js +13 -3
- package/lib/ecosystem/ui/marks.js.map +1 -1
- package/lib/error/ui/ErrorBoundary.d.ts +60 -0
- package/lib/error/ui/ErrorBoundary.d.ts.map +1 -0
- package/lib/error/ui/ErrorBoundary.js +59 -0
- package/lib/error/ui/ErrorBoundary.js.map +1 -0
- package/lib/error/ui/ErrorFallback.d.ts +38 -0
- package/lib/error/ui/ErrorFallback.d.ts.map +1 -0
- package/lib/error/ui/ErrorFallback.js +16 -0
- package/lib/error/ui/ErrorFallback.js.map +1 -0
- package/lib/error/ui/index.d.ts +5 -0
- package/lib/error/ui/index.d.ts.map +1 -0
- package/lib/error/ui/index.js +3 -0
- package/lib/error/ui/index.js.map +1 -0
- package/lib/error/ui/toError.d.ts +11 -0
- package/lib/error/ui/toError.d.ts.map +1 -0
- package/lib/error/ui/toError.js +35 -0
- package/lib/error/ui/toError.js.map +1 -0
- package/lib/format/core/index.d.ts +5 -0
- package/lib/format/core/index.d.ts.map +1 -0
- package/lib/format/core/index.js +5 -0
- package/lib/format/core/index.js.map +1 -0
- package/lib/format/core/missing.d.ts +7 -0
- package/lib/format/core/missing.d.ts.map +1 -0
- package/lib/format/core/missing.js +7 -0
- package/lib/format/core/missing.js.map +1 -0
- package/lib/format/core/numbers.d.ts +40 -0
- package/lib/format/core/numbers.d.ts.map +1 -0
- package/lib/format/core/numbers.js +81 -0
- package/lib/format/core/numbers.js.map +1 -0
- package/lib/format/core/units.d.ts +17 -0
- package/lib/format/core/units.d.ts.map +1 -0
- package/lib/format/core/units.js +54 -0
- package/lib/format/core/units.js.map +1 -0
- package/lib/format/core/words.d.ts +12 -0
- package/lib/format/core/words.d.ts.map +1 -0
- package/lib/format/core/words.js +14 -0
- package/lib/format/core/words.js.map +1 -0
- package/lib/help/ui/HelpBody.d.ts +57 -0
- package/lib/help/ui/HelpBody.d.ts.map +1 -0
- package/lib/help/ui/HelpBody.js +44 -0
- package/lib/help/ui/HelpBody.js.map +1 -0
- package/lib/help/ui/HelpIcon.d.ts +33 -0
- package/lib/help/ui/HelpIcon.d.ts.map +1 -0
- package/lib/help/ui/HelpIcon.js +16 -0
- package/lib/help/ui/HelpIcon.js.map +1 -0
- package/lib/help/ui/HelpToolbarButton.d.ts +45 -0
- package/lib/help/ui/HelpToolbarButton.d.ts.map +1 -0
- package/lib/help/ui/HelpToolbarButton.js +17 -0
- package/lib/help/ui/HelpToolbarButton.js.map +1 -0
- package/lib/help/ui/HelpTooltip.d.ts +36 -0
- package/lib/help/ui/HelpTooltip.d.ts.map +1 -0
- package/lib/help/ui/HelpTooltip.js +24 -0
- package/lib/help/ui/HelpTooltip.js.map +1 -0
- package/lib/help/ui/index.d.ts +9 -0
- package/lib/help/ui/index.d.ts.map +1 -0
- package/lib/help/ui/index.js +5 -0
- package/lib/help/ui/index.js.map +1 -0
- package/lib/hooks/ui/index.d.ts +7 -0
- package/lib/hooks/ui/index.d.ts.map +1 -0
- package/lib/hooks/ui/index.js +5 -0
- package/lib/hooks/ui/index.js.map +1 -0
- package/lib/hooks/ui/listNavigation.d.ts +54 -0
- package/lib/hooks/ui/listNavigation.d.ts.map +1 -0
- package/lib/hooks/ui/listNavigation.js +77 -0
- package/lib/hooks/ui/listNavigation.js.map +1 -0
- package/lib/hooks/ui/useContainerSize.d.ts +15 -0
- package/lib/hooks/ui/useContainerSize.d.ts.map +1 -0
- package/lib/hooks/ui/useContainerSize.js +24 -0
- package/lib/hooks/ui/useContainerSize.js.map +1 -0
- package/lib/hooks/ui/useDebouncedValue.d.ts +12 -0
- package/lib/hooks/ui/useDebouncedValue.d.ts.map +1 -0
- package/lib/hooks/ui/useDebouncedValue.js +24 -0
- package/lib/hooks/ui/useDebouncedValue.js.map +1 -0
- package/lib/hooks/ui/useListKeyboardNavigation.d.ts +17 -0
- package/lib/hooks/ui/useListKeyboardNavigation.d.ts.map +1 -0
- package/lib/hooks/ui/useListKeyboardNavigation.js +25 -0
- package/lib/hooks/ui/useListKeyboardNavigation.js.map +1 -0
- package/lib/hooks/ui/useResizeObserver.d.ts +20 -0
- package/lib/hooks/ui/useResizeObserver.d.ts.map +1 -0
- package/lib/hooks/ui/useResizeObserver.js +37 -0
- package/lib/hooks/ui/useResizeObserver.js.map +1 -0
- package/lib/orbital/core/atomicGrid.d.ts +27 -0
- package/lib/orbital/core/atomicGrid.d.ts.map +1 -1
- package/lib/orbital/core/atomicGrid.js +37 -1
- package/lib/orbital/core/atomicGrid.js.map +1 -1
- package/lib/orbital/core/index.d.ts +9 -7
- package/lib/orbital/core/index.d.ts.map +1 -1
- package/lib/orbital/core/index.js +7 -6
- package/lib/orbital/core/index.js.map +1 -1
- package/lib/orbital/core/isovalue.d.ts +60 -0
- package/lib/orbital/core/isovalue.d.ts.map +1 -0
- package/lib/orbital/core/isovalue.js +128 -0
- package/lib/orbital/core/isovalue.js.map +1 -0
- package/lib/orbital/core/sample.d.ts +15 -1
- package/lib/orbital/core/sample.d.ts.map +1 -1
- package/lib/orbital/core/sample.js +10 -3
- package/lib/orbital/core/sample.js.map +1 -1
- package/lib/orbital/ui/AtomicOrbitalCanvas.d.ts +6 -1
- package/lib/orbital/ui/AtomicOrbitalCanvas.d.ts.map +1 -1
- package/lib/orbital/ui/AtomicOrbitalCanvas.js +12 -2
- package/lib/orbital/ui/AtomicOrbitalCanvas.js.map +1 -1
- package/lib/orbital/ui/AtomicOrbitalViewer.d.ts +5 -1
- package/lib/orbital/ui/AtomicOrbitalViewer.d.ts.map +1 -1
- package/lib/orbital/ui/AtomicOrbitalViewer.js.map +1 -1
- package/lib/orbital/ui/renderVolume.d.ts +6 -3
- package/lib/orbital/ui/renderVolume.d.ts.map +1 -1
- package/lib/orbital/ui/renderVolume.js +14 -15
- package/lib/orbital/ui/renderVolume.js.map +1 -1
- package/lib/orbital/ui/viewer.d.ts +3 -1
- package/lib/orbital/ui/viewer.d.ts.map +1 -1
- package/lib/orbital/ui/viewer.js +3 -2
- package/lib/orbital/ui/viewer.js.map +1 -1
- package/lib/orbital/ui/volumeField.d.ts +5 -21
- package/lib/orbital/ui/volumeField.d.ts.map +1 -1
- package/lib/orbital/ui/volumeField.js +5 -45
- package/lib/orbital/ui/volumeField.js.map +1 -1
- package/lib/pedagogy/core/glossary.d.ts +79 -0
- package/lib/pedagogy/core/glossary.d.ts.map +1 -0
- package/lib/pedagogy/core/glossary.js +71 -0
- package/lib/pedagogy/core/glossary.js.map +1 -0
- package/lib/pedagogy/core/index.d.ts +8 -0
- package/lib/pedagogy/core/index.d.ts.map +1 -0
- package/lib/pedagogy/core/index.js +4 -0
- package/lib/pedagogy/core/index.js.map +1 -0
- package/lib/pedagogy/core/jsonStorage.d.ts +21 -0
- package/lib/pedagogy/core/jsonStorage.d.ts.map +1 -0
- package/lib/pedagogy/core/jsonStorage.js +55 -0
- package/lib/pedagogy/core/jsonStorage.js.map +1 -0
- package/lib/pedagogy/core/progress.d.ts +116 -0
- package/lib/pedagogy/core/progress.d.ts.map +1 -0
- package/lib/pedagogy/core/progress.js +122 -0
- package/lib/pedagogy/core/progress.js.map +1 -0
- package/lib/pedagogy/core/types.d.ts +74 -0
- package/lib/pedagogy/core/types.d.ts.map +1 -0
- package/lib/pedagogy/core/types.js +8 -0
- package/lib/pedagogy/core/types.js.map +1 -0
- package/lib/pedagogy/core/validation.d.ts +79 -0
- package/lib/pedagogy/core/validation.d.ts.map +1 -0
- package/lib/pedagogy/core/validation.js +47 -0
- package/lib/pedagogy/core/validation.js.map +1 -0
- package/lib/pedagogy/ui/ExerciseActions.d.ts +74 -0
- package/lib/pedagogy/ui/ExerciseActions.d.ts.map +1 -0
- package/lib/pedagogy/ui/ExerciseActions.js +22 -0
- package/lib/pedagogy/ui/ExerciseActions.js.map +1 -0
- package/lib/pedagogy/ui/ExerciseProgressHeader.d.ts +43 -0
- package/lib/pedagogy/ui/ExerciseProgressHeader.d.ts.map +1 -0
- package/lib/pedagogy/ui/ExerciseProgressHeader.js +43 -0
- package/lib/pedagogy/ui/ExerciseProgressHeader.js.map +1 -0
- package/lib/pedagogy/ui/ExerciseTags.d.ts +49 -0
- package/lib/pedagogy/ui/ExerciseTags.d.ts.map +1 -0
- package/lib/pedagogy/ui/ExerciseTags.js +22 -0
- package/lib/pedagogy/ui/ExerciseTags.js.map +1 -0
- package/lib/pedagogy/ui/GlossaryProvider.d.ts +19 -0
- package/lib/pedagogy/ui/GlossaryProvider.d.ts.map +1 -0
- package/lib/pedagogy/ui/GlossaryProvider.js +16 -0
- package/lib/pedagogy/ui/GlossaryProvider.js.map +1 -0
- package/lib/pedagogy/ui/GlossaryText.d.ts +50 -0
- package/lib/pedagogy/ui/GlossaryText.d.ts.map +1 -0
- package/lib/pedagogy/ui/GlossaryText.js +79 -0
- package/lib/pedagogy/ui/GlossaryText.js.map +1 -0
- package/lib/pedagogy/ui/HintLadder.d.ts +38 -0
- package/lib/pedagogy/ui/HintLadder.d.ts.map +1 -0
- package/lib/pedagogy/ui/HintLadder.js +33 -0
- package/lib/pedagogy/ui/HintLadder.js.map +1 -0
- package/lib/pedagogy/ui/ReferenceGrid.d.ts +31 -0
- package/lib/pedagogy/ui/ReferenceGrid.d.ts.map +1 -0
- package/lib/pedagogy/ui/ReferenceGrid.js +25 -0
- package/lib/pedagogy/ui/ReferenceGrid.js.map +1 -0
- package/lib/pedagogy/ui/ReferenceSectionBlock.d.ts +64 -0
- package/lib/pedagogy/ui/ReferenceSectionBlock.d.ts.map +1 -0
- package/lib/pedagogy/ui/ReferenceSectionBlock.js +78 -0
- package/lib/pedagogy/ui/ReferenceSectionBlock.js.map +1 -0
- package/lib/pedagogy/ui/SyntaxTooltip.d.ts +94 -0
- package/lib/pedagogy/ui/SyntaxTooltip.d.ts.map +1 -0
- package/lib/pedagogy/ui/SyntaxTooltip.js +79 -0
- package/lib/pedagogy/ui/SyntaxTooltip.js.map +1 -0
- package/lib/pedagogy/ui/TestCaseList.d.ts +35 -0
- package/lib/pedagogy/ui/TestCaseList.d.ts.map +1 -0
- package/lib/pedagogy/ui/TestCaseList.js +63 -0
- package/lib/pedagogy/ui/TestCaseList.js.map +1 -0
- package/lib/pedagogy/ui/TutorialStepStrip.d.ts +42 -0
- package/lib/pedagogy/ui/TutorialStepStrip.d.ts.map +1 -0
- package/lib/pedagogy/ui/TutorialStepStrip.js +98 -0
- package/lib/pedagogy/ui/TutorialStepStrip.js.map +1 -0
- package/lib/pedagogy/ui/exerciseMeta.d.ts +24 -0
- package/lib/pedagogy/ui/exerciseMeta.d.ts.map +1 -0
- package/lib/pedagogy/ui/exerciseMeta.js +38 -0
- package/lib/pedagogy/ui/exerciseMeta.js.map +1 -0
- package/lib/pedagogy/ui/glossaryContext.d.ts +17 -0
- package/lib/pedagogy/ui/glossaryContext.d.ts.map +1 -0
- package/lib/pedagogy/ui/glossaryContext.js +19 -0
- package/lib/pedagogy/ui/glossaryContext.js.map +1 -0
- package/lib/pedagogy/ui/index.d.ts +27 -0
- package/lib/pedagogy/ui/index.d.ts.map +1 -0
- package/lib/pedagogy/ui/index.js +15 -0
- package/lib/pedagogy/ui/index.js.map +1 -0
- package/lib/pedagogy/ui/tutorialLevels.d.ts +18 -0
- package/lib/pedagogy/ui/tutorialLevels.d.ts.map +1 -0
- package/lib/pedagogy/ui/tutorialLevels.js +14 -0
- package/lib/pedagogy/ui/tutorialLevels.js.map +1 -0
- package/lib/router/core/address.d.ts +42 -0
- package/lib/router/core/address.d.ts.map +1 -0
- package/lib/router/core/address.js +64 -0
- package/lib/router/core/address.js.map +1 -0
- package/lib/router/core/basePath.d.ts +49 -0
- package/lib/router/core/basePath.d.ts.map +1 -0
- package/lib/router/core/basePath.js +78 -0
- package/lib/router/core/basePath.js.map +1 -0
- package/lib/router/core/index.d.ts +8 -0
- package/lib/router/core/index.d.ts.map +1 -0
- package/lib/router/core/index.js +5 -0
- package/lib/router/core/index.js.map +1 -0
- package/lib/router/core/legacyHash.d.ts +45 -0
- package/lib/router/core/legacyHash.d.ts.map +1 -0
- package/lib/router/core/legacyHash.js +50 -0
- package/lib/router/core/legacyHash.js.map +1 -0
- package/lib/router/core/pageAddresses.d.ts +50 -0
- package/lib/router/core/pageAddresses.d.ts.map +1 -0
- package/lib/router/core/pageAddresses.js +56 -0
- package/lib/router/core/pageAddresses.js.map +1 -0
- package/lib/router/core/query.d.ts +41 -0
- package/lib/router/core/query.d.ts.map +1 -0
- package/lib/router/core/query.js +64 -0
- package/lib/router/core/query.js.map +1 -0
- package/lib/router/core/tabRouter.d.ts +111 -0
- package/lib/router/core/tabRouter.d.ts.map +1 -0
- package/lib/router/core/tabRouter.js +87 -0
- package/lib/router/core/tabRouter.js.map +1 -0
- package/lib/seo/core/documentMeta.d.ts +45 -0
- package/lib/seo/core/documentMeta.d.ts.map +1 -0
- package/lib/seo/core/documentMeta.js +69 -0
- package/lib/seo/core/documentMeta.js.map +1 -0
- package/lib/seo/core/index.d.ts +9 -0
- package/lib/seo/core/index.d.ts.map +1 -0
- package/lib/seo/core/index.js +5 -0
- package/lib/seo/core/index.js.map +1 -0
- package/lib/seo/core/pageMeta.d.ts +60 -0
- package/lib/seo/core/pageMeta.d.ts.map +1 -0
- package/lib/seo/core/pageMeta.js +91 -0
- package/lib/seo/core/pageMeta.js.map +1 -0
- package/lib/seo/core/routes.d.ts +52 -0
- package/lib/seo/core/routes.d.ts.map +1 -0
- package/lib/seo/core/routes.js +62 -0
- package/lib/seo/core/routes.js.map +1 -0
- package/lib/seo/core/siteFiles.d.ts +73 -0
- package/lib/seo/core/siteFiles.d.ts.map +1 -0
- package/lib/seo/core/siteFiles.js +100 -0
- package/lib/seo/core/siteFiles.js.map +1 -0
- package/lib/seo/vite/index.d.ts +5 -0
- package/lib/seo/vite/index.d.ts.map +1 -0
- package/lib/seo/vite/index.js +3 -0
- package/lib/seo/vite/index.js.map +1 -0
- package/lib/seo/vite/ogCard.d.ts +33 -0
- package/lib/seo/vite/ogCard.d.ts.map +1 -0
- package/lib/seo/vite/ogCard.js +72 -0
- package/lib/seo/vite/ogCard.js.map +1 -0
- package/lib/seo/vite/prerender.d.ts +58 -0
- package/lib/seo/vite/prerender.d.ts.map +1 -0
- package/lib/seo/vite/prerender.js +76 -0
- package/lib/seo/vite/prerender.js.map +1 -0
- package/lib/share/core/config.d.ts +63 -0
- package/lib/share/core/config.d.ts.map +1 -0
- package/lib/share/core/config.js +125 -0
- package/lib/share/core/config.js.map +1 -0
- package/lib/share/core/escape.d.ts +15 -0
- package/lib/share/core/escape.d.ts.map +1 -0
- package/lib/share/core/escape.js +22 -0
- package/lib/share/core/escape.js.map +1 -0
- package/lib/share/core/index.d.ts +9 -0
- package/lib/share/core/index.d.ts.map +1 -0
- package/lib/share/core/index.js +5 -0
- package/lib/share/core/index.js.map +1 -0
- package/lib/share/core/params.d.ts +93 -0
- package/lib/share/core/params.d.ts.map +1 -0
- package/lib/share/core/params.js +111 -0
- package/lib/share/core/params.js.map +1 -0
- package/lib/share/core/query.d.ts +30 -0
- package/lib/share/core/query.d.ts.map +1 -0
- package/lib/share/core/query.js +68 -0
- package/lib/share/core/query.js.map +1 -0
- package/lib/share/core/url.d.ts +57 -0
- package/lib/share/core/url.d.ts.map +1 -0
- package/lib/share/core/url.js +49 -0
- package/lib/share/core/url.js.map +1 -0
- package/lib/share/core/vocabulary.d.ts +51 -0
- package/lib/share/core/vocabulary.d.ts.map +1 -0
- package/lib/share/core/vocabulary.js +2 -0
- package/lib/share/core/vocabulary.js.map +1 -0
- package/lib/share/ui/HiddenPartsProvider.d.ts +19 -0
- package/lib/share/ui/HiddenPartsProvider.d.ts.map +1 -0
- package/lib/share/ui/HiddenPartsProvider.js +15 -0
- package/lib/share/ui/HiddenPartsProvider.js.map +1 -0
- package/lib/share/ui/PagePart.d.ts +18 -0
- package/lib/share/ui/PagePart.d.ts.map +1 -0
- package/lib/share/ui/PagePart.js +16 -0
- package/lib/share/ui/PagePart.js.map +1 -0
- package/lib/share/ui/ShareButton.d.ts +42 -0
- package/lib/share/ui/ShareButton.d.ts.map +1 -0
- package/lib/share/ui/ShareButton.js +18 -0
- package/lib/share/ui/ShareButton.js.map +1 -0
- package/lib/share/ui/ShareDialog.d.ts +73 -0
- package/lib/share/ui/ShareDialog.d.ts.map +1 -0
- package/lib/share/ui/ShareDialog.js +19 -0
- package/lib/share/ui/ShareDialog.js.map +1 -0
- package/lib/share/ui/ShareDialogContent.d.ts +13 -0
- package/lib/share/ui/ShareDialogContent.d.ts.map +1 -0
- package/lib/share/ui/ShareDialogContent.js +71 -0
- package/lib/share/ui/ShareDialogContent.js.map +1 -0
- package/lib/share/ui/SharePartOptions.d.ts +18 -0
- package/lib/share/ui/SharePartOptions.d.ts.map +1 -0
- package/lib/share/ui/SharePartOptions.js +22 -0
- package/lib/share/ui/SharePartOptions.js.map +1 -0
- package/lib/share/ui/draft.d.ts +13 -0
- package/lib/share/ui/draft.d.ts.map +1 -0
- package/lib/share/ui/draft.js +16 -0
- package/lib/share/ui/draft.js.map +1 -0
- package/lib/share/ui/hiddenParts.d.ts +17 -0
- package/lib/share/ui/hiddenParts.d.ts.map +1 -0
- package/lib/share/ui/hiddenParts.js +21 -0
- package/lib/share/ui/hiddenParts.js.map +1 -0
- package/lib/share/ui/index.d.ts +10 -0
- package/lib/share/ui/index.d.ts.map +1 -0
- package/lib/share/ui/index.js +6 -0
- package/lib/share/ui/index.js.map +1 -0
- package/lib/shared/ui/index.d.ts +2 -1
- package/lib/shared/ui/index.d.ts.map +1 -1
- package/lib/shared/ui/index.js +1 -1
- package/lib/shared/ui/index.js.map +1 -1
- package/lib/state/ui/index.d.ts +3 -0
- package/lib/state/ui/index.d.ts.map +1 -0
- package/lib/state/ui/index.js +2 -0
- package/lib/state/ui/index.js.map +1 -0
- package/lib/state/ui/mergeStored.d.ts +27 -0
- package/lib/state/ui/mergeStored.d.ts.map +1 -0
- package/lib/state/ui/mergeStored.js +82 -0
- package/lib/state/ui/mergeStored.js.map +1 -0
- package/lib/state/ui/persistBucket.d.ts +65 -0
- package/lib/state/ui/persistBucket.d.ts.map +1 -0
- package/lib/state/ui/persistBucket.js +90 -0
- package/lib/state/ui/persistBucket.js.map +1 -0
- package/lib/structure/core/editorValue.d.ts +69 -0
- package/lib/structure/core/editorValue.d.ts.map +1 -0
- package/lib/structure/core/editorValue.js +72 -0
- package/lib/structure/core/editorValue.js.map +1 -0
- package/lib/structure/core/fragmentQuery.d.ts +33 -0
- package/lib/structure/core/fragmentQuery.d.ts.map +1 -0
- package/lib/structure/core/fragmentQuery.js +37 -0
- package/lib/structure/core/fragmentQuery.js.map +1 -0
- package/lib/structure/core/index.d.ts +11 -0
- package/lib/structure/core/index.d.ts.map +1 -0
- package/lib/structure/core/index.js +6 -0
- package/lib/structure/core/index.js.map +1 -0
- package/lib/structure/core/molfile.d.ts +42 -0
- package/lib/structure/core/molfile.d.ts.map +1 -0
- package/lib/structure/core/molfile.js +74 -0
- package/lib/structure/core/molfile.js.map +1 -0
- package/lib/structure/core/readStructure.d.ts +37 -0
- package/lib/structure/core/readStructure.d.ts.map +1 -0
- package/lib/structure/core/readStructure.js +59 -0
- package/lib/structure/core/readStructure.js.map +1 -0
- package/lib/structure/core/structureSource.d.ts +34 -0
- package/lib/structure/core/structureSource.d.ts.map +1 -0
- package/lib/structure/core/structureSource.js +32 -0
- package/lib/structure/core/structureSource.js.map +1 -0
- package/lib/structure/core/toolbarFloor.d.ts +16 -0
- package/lib/structure/core/toolbarFloor.d.ts.map +1 -0
- package/lib/structure/core/toolbarFloor.js +27 -0
- package/lib/structure/core/toolbarFloor.js.map +1 -0
- package/lib/structure/ui/EditorCanvas.d.ts +55 -0
- package/lib/structure/ui/EditorCanvas.d.ts.map +1 -0
- package/lib/structure/ui/EditorCanvas.js +41 -0
- package/lib/structure/ui/EditorCanvas.js.map +1 -0
- package/lib/structure/ui/Structure.d.ts +122 -0
- package/lib/structure/ui/Structure.d.ts.map +1 -0
- package/lib/structure/ui/Structure.js +28 -0
- package/lib/structure/ui/Structure.js.map +1 -0
- package/lib/structure/ui/StructureEditor.d.ts +75 -0
- package/lib/structure/ui/StructureEditor.d.ts.map +1 -0
- package/lib/structure/ui/StructureEditor.js +83 -0
- package/lib/structure/ui/StructureEditor.js.map +1 -0
- package/lib/structure/ui/StructurePlaceholder.d.ts +29 -0
- package/lib/structure/ui/StructurePlaceholder.d.ts.map +1 -0
- package/lib/structure/ui/StructurePlaceholder.js +19 -0
- package/lib/structure/ui/StructurePlaceholder.js.map +1 -0
- package/lib/structure/ui/StructureSvg.d.ts +58 -0
- package/lib/structure/ui/StructureSvg.d.ts.map +1 -0
- package/lib/structure/ui/StructureSvg.js +33 -0
- package/lib/structure/ui/StructureSvg.js.map +1 -0
- package/lib/structure/ui/index.d.ts +19 -0
- package/lib/structure/ui/index.d.ts.map +1 -0
- package/lib/structure/ui/index.js +15 -0
- package/lib/structure/ui/index.js.map +1 -0
- package/lib/structure/ui/useToolbarFloor.d.ts +26 -0
- package/lib/structure/ui/useToolbarFloor.d.ts.map +1 -0
- package/lib/structure/ui/useToolbarFloor.js +70 -0
- package/lib/structure/ui/useToolbarFloor.js.map +1 -0
- package/lib/structure.d.ts +3 -0
- package/lib/structure.d.ts.map +1 -0
- package/lib/structure.js +3 -0
- package/lib/structure.js.map +1 -0
- package/lib/ui.d.ts +13 -0
- package/lib/ui.d.ts.map +1 -1
- package/lib/ui.js +13 -0
- package/lib/ui.js.map +1 -1
- package/lib/vite.d.ts +2 -0
- package/lib/vite.d.ts.map +1 -0
- package/lib/vite.js +2 -0
- package/lib/vite.js.map +1 -0
- package/lib/worker/core/errors.d.ts +15 -0
- package/lib/worker/core/errors.d.ts.map +1 -0
- package/lib/worker/core/errors.js +15 -0
- package/lib/worker/core/errors.js.map +1 -0
- package/lib/worker/core/index.d.ts +5 -0
- package/lib/worker/core/index.d.ts.map +1 -0
- package/lib/worker/core/index.js +3 -0
- package/lib/worker/core/index.js.map +1 -0
- package/lib/worker/core/messages.d.ts +48 -0
- package/lib/worker/core/messages.d.ts.map +1 -0
- package/lib/worker/core/messages.js +2 -0
- package/lib/worker/core/messages.js.map +1 -0
- package/lib/worker/core/workerChannel.d.ts +69 -0
- package/lib/worker/core/workerChannel.d.ts.map +1 -0
- package/lib/worker/core/workerChannel.js +121 -0
- package/lib/worker/core/workerChannel.js.map +1 -0
- package/package.json +22 -4
- package/src/capsule/ui/CapsuleFilter.tsx +119 -0
- package/src/capsule/ui/index.ts +2 -0
- package/src/chrome/ui/NavLink.tsx +88 -0
- package/src/chrome/ui/NavMenuButton.tsx +95 -0
- package/src/chrome/ui/SiteFooter.tsx +65 -0
- package/src/chrome/ui/SiteHeader.tsx +119 -0
- package/src/chrome/ui/index.ts +11 -0
- package/src/chrome/ui/navItem.ts +60 -0
- package/src/chrome/ui/useCompactHeader.ts +81 -0
- package/src/citation/core/clipboard.ts +27 -11
- package/src/citation/core/download.ts +25 -15
- package/src/citation/core/index.ts +8 -3
- package/src/citation/core/works.ts +81 -0
- package/src/citation/ui/CitationMenu.tsx +104 -89
- package/src/citation/ui/CitationPreview.tsx +18 -8
- package/src/citation/ui/CiteButton.tsx +24 -9
- package/src/citation/ui/CopyFormatEntries.tsx +84 -0
- package/src/citation/ui/WorkEntry.tsx +80 -0
- package/src/citation/ui/entries.tsx +18 -20
- package/src/citation/ui/index.ts +10 -2
- package/src/citation/ui/useCopyFeedback.ts +76 -0
- package/src/clipboard/core/index.ts +1 -0
- package/src/clipboard/core/writeToClipboard.ts +47 -0
- package/src/clipboard/ui/CodeBlock.tsx +110 -0
- package/src/clipboard/ui/CopyButton.tsx +111 -0
- package/src/clipboard/ui/index.ts +9 -0
- package/src/clipboard/ui/useCopyToClipboard.ts +57 -0
- package/src/color/core/contrast.ts +85 -0
- package/src/color/core/hex.ts +57 -0
- package/src/color/core/index.ts +4 -0
- package/src/color/core/scale.ts +132 -0
- package/src/color/ui/ColorScaleLegend.tsx +144 -0
- package/src/color/ui/index.ts +2 -0
- package/src/core.ts +11 -0
- package/src/credits/core/credits.ts +183 -0
- package/src/credits/core/index.ts +2 -0
- package/src/credits/ui/CreditsList.tsx +82 -0
- package/src/credits/ui/index.ts +2 -0
- package/src/delimited/core/delimiters.ts +64 -0
- package/src/delimited/core/index.ts +11 -0
- package/src/delimited/core/readDelimited.ts +132 -0
- package/src/delimited/core/rowsToDelimited.ts +135 -0
- package/src/delimited/core/toDelimited.ts +69 -0
- package/src/delimited/ui/DelimitedTextDialog.tsx +49 -0
- package/src/delimited/ui/DelimitedTextPanel.tsx +161 -0
- package/src/delimited/ui/index.ts +4 -0
- package/src/disclosure/ui/CollapsibleSection.tsx +150 -0
- package/src/disclosure/ui/index.ts +4 -0
- package/src/disclosure/ui/useDisclosure.ts +35 -0
- package/src/download/core/downloadBlob.ts +19 -0
- package/src/download/core/downloadText.ts +19 -0
- package/src/download/core/index.ts +3 -0
- package/src/download/core/sanitizeFileName.ts +33 -0
- package/src/ecosystem/core/index.ts +3 -0
- package/src/ecosystem/core/links.ts +29 -0
- package/src/ecosystem/core/lookup.ts +57 -0
- package/src/ecosystem/core/sites.ts +21 -4
- package/src/ecosystem/core/tokens.ts +47 -0
- package/src/ecosystem/ui/SiteTheme.tsx +23 -0
- package/src/ecosystem/ui/Wordmark.tsx +65 -0
- package/src/ecosystem/ui/glyphs.tsx +1 -1
- package/src/ecosystem/ui/index.ts +4 -0
- package/src/ecosystem/ui/marks.tsx +54 -15
- package/src/error/ui/ErrorBoundary.tsx +94 -0
- package/src/error/ui/ErrorFallback.tsx +64 -0
- package/src/error/ui/index.ts +4 -0
- package/src/error/ui/toError.ts +33 -0
- package/src/format/core/index.ts +9 -0
- package/src/format/core/missing.ts +6 -0
- package/src/format/core/numbers.ts +84 -0
- package/src/format/core/units.ts +60 -0
- package/src/format/core/words.ts +17 -0
- package/src/help/ui/HelpBody.tsx +130 -0
- package/src/help/ui/HelpIcon.tsx +53 -0
- package/src/help/ui/HelpToolbarButton.tsx +72 -0
- package/src/help/ui/HelpTooltip.tsx +72 -0
- package/src/help/ui/index.ts +8 -0
- package/src/hooks/ui/index.ts +6 -0
- package/src/hooks/ui/listNavigation.ts +116 -0
- package/src/hooks/ui/useContainerSize.ts +32 -0
- package/src/hooks/ui/useDebouncedValue.ts +29 -0
- package/src/hooks/ui/useListKeyboardNavigation.ts +37 -0
- package/src/hooks/ui/useResizeObserver.ts +50 -0
- package/src/orbital/core/atomicGrid.ts +53 -1
- package/src/orbital/core/index.ts +7 -16
- package/src/orbital/core/isovalue.ts +146 -0
- package/src/orbital/core/sample.ts +25 -5
- package/src/orbital/ui/AtomicOrbitalCanvas.tsx +19 -3
- package/src/orbital/ui/AtomicOrbitalViewer.tsx +5 -1
- package/src/orbital/ui/renderVolume.ts +29 -16
- package/src/orbital/ui/viewer.ts +6 -1
- package/src/orbital/ui/volumeField.ts +5 -49
- package/src/pedagogy/core/glossary.ts +122 -0
- package/src/pedagogy/core/index.ts +28 -0
- package/src/pedagogy/core/jsonStorage.ts +51 -0
- package/src/pedagogy/core/progress.ts +205 -0
- package/src/pedagogy/core/types.ts +78 -0
- package/src/pedagogy/core/validation.ts +109 -0
- package/src/pedagogy/ui/ExerciseActions.tsx +129 -0
- package/src/pedagogy/ui/ExerciseProgressHeader.tsx +135 -0
- package/src/pedagogy/ui/ExerciseTags.tsx +85 -0
- package/src/pedagogy/ui/GlossaryProvider.tsx +31 -0
- package/src/pedagogy/ui/GlossaryText.tsx +164 -0
- package/src/pedagogy/ui/HintLadder.tsx +95 -0
- package/src/pedagogy/ui/ReferenceGrid.tsx +69 -0
- package/src/pedagogy/ui/ReferenceSectionBlock.tsx +175 -0
- package/src/pedagogy/ui/SyntaxTooltip.tsx +222 -0
- package/src/pedagogy/ui/TestCaseList.tsx +122 -0
- package/src/pedagogy/ui/TutorialStepStrip.tsx +230 -0
- package/src/pedagogy/ui/exerciseMeta.ts +45 -0
- package/src/pedagogy/ui/glossaryContext.ts +23 -0
- package/src/pedagogy/ui/index.ts +37 -0
- package/src/pedagogy/ui/tutorialLevels.ts +27 -0
- package/src/router/core/address.ts +74 -0
- package/src/router/core/basePath.ts +76 -0
- package/src/router/core/index.ts +26 -0
- package/src/router/core/legacyHash.ts +77 -0
- package/src/router/core/pageAddresses.ts +106 -0
- package/src/router/core/query.ts +87 -0
- package/src/router/core/tabRouter.ts +214 -0
- package/src/seo/core/documentMeta.ts +92 -0
- package/src/seo/core/index.ts +26 -0
- package/src/seo/core/pageMeta.ts +127 -0
- package/src/seo/core/routes.ts +79 -0
- package/src/seo/core/siteFiles.ts +150 -0
- package/src/seo/vite/index.ts +4 -0
- package/src/seo/vite/ogCard.ts +92 -0
- package/src/seo/vite/prerender.ts +156 -0
- package/src/share/core/config.ts +165 -0
- package/src/share/core/escape.ts +22 -0
- package/src/share/core/index.ts +31 -0
- package/src/share/core/params.ts +176 -0
- package/src/share/core/query.ts +72 -0
- package/src/share/core/url.ts +105 -0
- package/src/share/core/vocabulary.ts +60 -0
- package/src/share/ui/HiddenPartsProvider.tsx +34 -0
- package/src/share/ui/PagePart.tsx +26 -0
- package/src/share/ui/ShareButton.tsx +84 -0
- package/src/share/ui/ShareDialog.tsx +114 -0
- package/src/share/ui/ShareDialogContent.tsx +189 -0
- package/src/share/ui/SharePartOptions.tsx +51 -0
- package/src/share/ui/draft.ts +19 -0
- package/src/share/ui/hiddenParts.ts +22 -0
- package/src/share/ui/index.ts +9 -0
- package/src/shared/ui/index.ts +2 -1
- package/src/state/ui/index.ts +6 -0
- package/src/state/ui/mergeStored.ts +87 -0
- package/src/state/ui/persistBucket.ts +147 -0
- package/src/structure/core/editorValue.ts +116 -0
- package/src/structure/core/fragmentQuery.ts +50 -0
- package/src/structure/core/index.ts +13 -0
- package/src/structure/core/molfile.ts +90 -0
- package/src/structure/core/readStructure.ts +73 -0
- package/src/structure/core/structureSource.ts +57 -0
- package/src/structure/core/toolbarFloor.ts +31 -0
- package/src/structure/ui/EditorCanvas.tsx +130 -0
- package/src/structure/ui/Structure.tsx +183 -0
- package/src/structure/ui/StructureEditor.tsx +196 -0
- package/src/structure/ui/StructurePlaceholder.tsx +48 -0
- package/src/structure/ui/StructureSvg.tsx +110 -0
- package/src/structure/ui/index.ts +22 -0
- package/src/structure/ui/useToolbarFloor.ts +93 -0
- package/src/structure.ts +2 -0
- package/src/ui.ts +13 -0
- package/src/vite.ts +1 -0
- package/src/worker/core/errors.ts +15 -0
- package/src/worker/core/index.ts +8 -0
- package/src/worker/core/messages.ts +47 -0
- package/src/worker/core/workerChannel.ts +218 -0
- package/styles/chrome.css +223 -0
|
@@ -15,7 +15,7 @@ export function AtomicOrbitalCanvas(props) {
|
|
|
15
15
|
const [drawn, setDrawn] = useState(null);
|
|
16
16
|
// What the canvas is being asked to show. Comparing it with what it *is*
|
|
17
17
|
// showing gives the progress note without a state write on every prop change.
|
|
18
|
-
const wanted = `${atomicNumber}|${orbitalId}|${resolution}|${palette.id}`;
|
|
18
|
+
const wanted = `${atomicNumber}|${orbitalId}|${resolutionKey(resolution)}|${palette.id}`;
|
|
19
19
|
const busy = drawn !== wanted;
|
|
20
20
|
// Callbacks are read through refs so a caller passing an inline arrow does
|
|
21
21
|
// not re-sample the orbital on every render of its parent.
|
|
@@ -52,7 +52,7 @@ export function AtomicOrbitalCanvas(props) {
|
|
|
52
52
|
if (cancelled)
|
|
53
53
|
return;
|
|
54
54
|
callbacks.current.onNodeRadii?.(result.nodeRadii);
|
|
55
|
-
const reach = await viewer.showOrbital(result.grid, {
|
|
55
|
+
const reach = await viewer.showOrbital(result.grid, result.contour, {
|
|
56
56
|
positiveColour: palette.positive,
|
|
57
57
|
negativeColour: palette.negative,
|
|
58
58
|
});
|
|
@@ -76,6 +76,16 @@ export function AtomicOrbitalCanvas(props) {
|
|
|
76
76
|
}
|
|
77
77
|
/** Samples per edge; 56 resolves the radial node of a 3s in about 25 ms. */
|
|
78
78
|
const DEFAULT_RESOLUTION = 56;
|
|
79
|
+
/**
|
|
80
|
+
* A stable identity for either shape the resolution prop can take.
|
|
81
|
+
* @param resolution - A fixed sample count, or the limits it may vary between.
|
|
82
|
+
* @returns A string that changes exactly when the sampling would.
|
|
83
|
+
*/
|
|
84
|
+
function resolutionKey(resolution) {
|
|
85
|
+
return typeof resolution === 'number'
|
|
86
|
+
? String(resolution)
|
|
87
|
+
: `${resolution.floor}-${resolution.cap}`;
|
|
88
|
+
}
|
|
79
89
|
/**
|
|
80
90
|
* A square, centred stage: an atomic orbital is as tall as it is wide, so a
|
|
81
91
|
* square wastes the least of the frame and keeps the lobes the same size when
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AtomicOrbitalCanvas.js","sourceRoot":"","sources":["../../../src/orbital/ui/AtomicOrbitalCanvas.tsx"],"names":[],"mappings":";AASA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"AtomicOrbitalCanvas.js","sourceRoot":"","sources":["../../../src/orbital/ui/AtomicOrbitalCanvas.tsx"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
* ```
|
|
16
16
|
*/
|
|
17
17
|
import type { ReactElement, ReactNode } from 'react';
|
|
18
|
+
import type { ResolutionLimits } from '../core/atomicGrid.ts';
|
|
18
19
|
import type { PhasePalette } from '../core/palette.ts';
|
|
19
20
|
import type { AtomicSampler } from '../core/sample.ts';
|
|
20
21
|
import type { ViewerCapability } from './capability.ts';
|
|
@@ -31,9 +32,12 @@ export interface AtomicOrbitalViewerProps {
|
|
|
31
32
|
palette?: PhasePalette;
|
|
32
33
|
/**
|
|
33
34
|
* Samples along each edge of the cube; the cost is the cube of it.
|
|
35
|
+
*
|
|
36
|
+
* A number fixes it. A {@link ResolutionLimits} pair lets each orbital's own
|
|
37
|
+
* shape pick a resolution between the two.
|
|
34
38
|
* @default 56
|
|
35
39
|
*/
|
|
36
|
-
resolution?: number;
|
|
40
|
+
resolution?: number | ResolutionLimits;
|
|
37
41
|
/**
|
|
38
42
|
* Whether the scene turns on its own.
|
|
39
43
|
* @default false
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AtomicOrbitalViewer.d.ts","sourceRoot":"","sources":["../../../src/orbital/ui/AtomicOrbitalViewer.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAiB,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAIvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAQxD,4CAA4C;AAC5C,MAAM,WAAW,wBAAwB;IACvC,6CAA6C;IAC7C,YAAY,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB
|
|
1
|
+
{"version":3,"file":"AtomicOrbitalViewer.d.ts","sourceRoot":"","sources":["../../../src/orbital/ui/AtomicOrbitalViewer.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAiB,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAIvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAQxD,4CAA4C;AAC5C,MAAM,WAAW,wBAAwB;IACvC,6CAA6C;IAC7C,YAAY,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IACvC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACxC;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,CAAC,UAAU,EAAE,gBAAgB,KAAK,SAAS,CAAC;CACjE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,wBAAwB,GAC9B,YAAY,CAkCd"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AtomicOrbitalViewer.js","sourceRoot":"","sources":["../../../src/orbital/ui/AtomicOrbitalViewer.tsx"],"names":[],"mappings":";AAkBA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"AtomicOrbitalViewer.js","sourceRoot":"","sources":["../../../src/orbital/ui/AtomicOrbitalViewer.tsx"],"names":[],"mappings":";AAkBA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AASjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE;IAC1C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,0BAA2B,CAAC,CAAC;IACzD,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,mBAAmB,EAAE,CAAC;AACjD,CAAC,CAAC,CAAC;AAoDH;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CACjC,KAA+B;IAE/B,MAAM,EACJ,QAAQ,GAAG,wBAAwB,EACnC,iBAAiB,EACjB,GAAG,MAAM,EACV,GAAG,KAAK,CAAC;IACV,MAAM,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC,qBAAqB,CAAC,CAAC;IACrD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAE5D,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;QAC1B,OAAO,CACL,cAAK,KAAK,EAAE,UAAU,YACnB,iBAAiB,EAAE,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,OAAO,GAClD,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,eAAK,KAAK,EAAE,UAAU,aACpB,KAAC,QAAQ,IAAC,QAAQ,EAAE,cAAK,KAAK,EAAE,UAAU,YAAG,QAAQ,GAAO,YAC1D,KAAC,mBAAmB,OACd,MAAM,EACV,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE;wBACnB,UAAU,CAAC,OAAO,CAAC,CAAC;oBACtB,CAAC,GACD,GACO,EACV,OAAO,KAAK,IAAI,IAAI,CACnB,eAAK,KAAK,EAAE,aAAa,kDACW,OAAO,IACrC,CACP,IACG,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,GAAkB;IAChC,OAAO,EAAE,MAAM;IACf,aAAa,EAAE,QAAQ;IACvB,GAAG,EAAE,CAAC;IACN,QAAQ,EAAE,CAAC;CACZ,CAAC;AAEF,MAAM,UAAU,GAAkB;IAChC,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,QAAQ;IACpB,cAAc,EAAE,QAAQ;IACxB,SAAS,EAAE,GAAG;IACd,OAAO,EAAE,EAAE;IACX,YAAY,EAAE,CAAC;IACf,UAAU,EAAE,kBAAkB;IAC9B,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,EAAE;IACZ,SAAS,EAAE,QAAQ;CACpB,CAAC;AAEF,MAAM,aAAa,GAAkB;IACnC,OAAO,EAAE,SAAS;IAClB,YAAY,EAAE,CAAC;IACf,UAAU,EAAE,SAAS;IACrB,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,EAAE;CACb,CAAC"}
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import type { PluginContext } from 'molstar/lib/mol-plugin/context.js';
|
|
17
17
|
import type { OrbitalGrid } from '../core/grid.ts';
|
|
18
|
+
import type { OrbitalContour } from '../core/isovalue.ts';
|
|
18
19
|
/** Colours and opacity of one signed isosurface pair. */
|
|
19
20
|
export interface VolumeStyle {
|
|
20
21
|
/**
|
|
@@ -28,8 +29,8 @@ export interface VolumeStyle {
|
|
|
28
29
|
*/
|
|
29
30
|
negativeColour?: string;
|
|
30
31
|
/**
|
|
31
|
-
* Isovalue as a multiple of the
|
|
32
|
-
*
|
|
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;
|
|
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 {
|
|
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
|
|
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,
|
|
50
|
-
|
|
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
|
-
|
|
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":"AAAA;;;;;;;;;;;;;;GAcG;
|
|
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;
|
|
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"}
|
package/lib/orbital/ui/viewer.js
CHANGED
|
@@ -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":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAE9E,4DAA4D;AAC5D,OAAO,EAAE,iBAAiB,IAAI,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACxF,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;
|
|
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
|
|
3
|
+
* renderer wants.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
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
|
|
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
|
|
3
|
+
* renderer wants.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
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":"AAAA
|
|
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 @@
|
|
|
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
|