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.
- 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 +21 -0
- package/lib/ecosystem/core/lookup.d.ts.map +1 -0
- package/lib/ecosystem/core/lookup.js +40 -0
- package/lib/ecosystem/core/lookup.js.map +1 -0
- package/lib/ecosystem/core/sites.d.ts +2 -0
- package/lib/ecosystem/core/sites.d.ts.map +1 -1
- package/lib/ecosystem/core/sites.js +15 -0
- 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/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 +3 -0
- package/lib/seo/core/index.d.ts.map +1 -0
- package/lib/seo/core/index.js +2 -0
- package/lib/seo/core/index.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/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 +18 -5
- 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 +41 -0
- package/src/ecosystem/core/sites.ts +17 -0
- 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/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 +6 -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/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
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Escape a value written into HTML text, so a formula, a title or an address
|
|
3
|
+
* a link carries cannot close the element it sits in.
|
|
4
|
+
* @param value - The untrusted value.
|
|
5
|
+
* @returns The value with `&`, `<` and `>` replaced by their entities.
|
|
6
|
+
*/
|
|
7
|
+
export function escapeText(value) {
|
|
8
|
+
return value
|
|
9
|
+
.replaceAll('&', '&')
|
|
10
|
+
.replaceAll('<', '<')
|
|
11
|
+
.replaceAll('>', '>');
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Escape a value written into a double-quoted HTML attribute, so an address
|
|
15
|
+
* carrying an ampersand or a quote cannot break out of it.
|
|
16
|
+
* @param value - The untrusted value.
|
|
17
|
+
* @returns The value with `&`, `<`, `>` and `"` replaced by their entities.
|
|
18
|
+
*/
|
|
19
|
+
export function escapeAttribute(value) {
|
|
20
|
+
return escapeText(value).replaceAll('"', '"');
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=escape.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"escape.js","sourceRoot":"","sources":["../../../src/share/core/escape.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,OAAO,KAAK;SACT,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC;SACxB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;SACvB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AAC7B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AACrD,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type { ShareConfig } from './config.ts';
|
|
2
|
+
export { EMBED_PARAM, HIDE_PARAM, applyShareConfig, isHidden, isShareConfigured, parseShareConfig, suggestedShareConfig, } from './config.ts';
|
|
3
|
+
export { escapeAttribute, escapeText } from './escape.ts';
|
|
4
|
+
export type { BooleanParamOptions, IntegerParamOptions, ShareParamCodec, StringParamOptions, } from './params.ts';
|
|
5
|
+
export { booleanParam, enumParam, integerParam, stringParam, } from './params.ts';
|
|
6
|
+
export type { EmbedCodeOptions, ShareUrlOptions } from './url.ts';
|
|
7
|
+
export { buildEmbedCode, buildShareUrl } from './url.ts';
|
|
8
|
+
export type { HideablePart, ShareParamCodecs, ShareParamValues, ShareVocabulary, } from './vocabulary.ts';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/share/core/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EACL,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,QAAQ,EACR,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC1D,YAAY,EACV,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,WAAW,GACZ,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzD,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,GAChB,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { EMBED_PARAM, HIDE_PARAM, applyShareConfig, isHidden, isShareConfigured, parseShareConfig, suggestedShareConfig, } from "./config.js";
|
|
2
|
+
export { escapeAttribute, escapeText } from "./escape.js";
|
|
3
|
+
export { booleanParam, enumParam, integerParam, stringParam, } from "./params.js";
|
|
4
|
+
export { buildEmbedCode, buildShareUrl } from "./url.js";
|
|
5
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/share/core/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,QAAQ,EACR,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAO1D,OAAO,EACL,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,WAAW,GACZ,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reads one of a tool's own parameters out of a link and writes it back.
|
|
3
|
+
*
|
|
4
|
+
* `parse` is handed the raw value, or `null` when the link does not carry the
|
|
5
|
+
* key at all, and always answers: anything absent or malformed falls back to
|
|
6
|
+
* the default. `serialize` answers `null` for a value that is already the
|
|
7
|
+
* default, which deletes the key rather than writing it, so an unconfigured
|
|
8
|
+
* link stays a plain link.
|
|
9
|
+
*/
|
|
10
|
+
export interface ShareParamCodec<Value> {
|
|
11
|
+
/**
|
|
12
|
+
* Read the value a link carries.
|
|
13
|
+
* @param raw - The raw parameter, `null` when the link omits it.
|
|
14
|
+
* @returns The value, or the default when it is absent or malformed.
|
|
15
|
+
*/
|
|
16
|
+
parse(raw: string | null): Value;
|
|
17
|
+
/**
|
|
18
|
+
* Write the value into a link.
|
|
19
|
+
* @param value - The value to write.
|
|
20
|
+
* @returns The raw parameter, or `null` to delete the key.
|
|
21
|
+
*/
|
|
22
|
+
serialize(value: Value): string | null;
|
|
23
|
+
}
|
|
24
|
+
/** What {@link booleanParam} is configured with. */
|
|
25
|
+
export interface BooleanParamOptions {
|
|
26
|
+
/**
|
|
27
|
+
* The value an absent parameter reads as, and the one deleted rather than
|
|
28
|
+
* written.
|
|
29
|
+
* @default false
|
|
30
|
+
*/
|
|
31
|
+
default?: boolean;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* A flag a link switches on by naming it. `?flag`, `?flag=` and `?flag=1` all
|
|
35
|
+
* read as on, because these addresses are retyped by hand out of a course
|
|
36
|
+
* page; only `0` and `false` read as off.
|
|
37
|
+
* @param options - The value the flag takes when the link says nothing.
|
|
38
|
+
* @returns The codec.
|
|
39
|
+
*/
|
|
40
|
+
export declare function booleanParam(options?: BooleanParamOptions): ShareParamCodec<boolean>;
|
|
41
|
+
/** What {@link integerParam} is configured with. */
|
|
42
|
+
export interface IntegerParamOptions<Fallback extends number | null> {
|
|
43
|
+
/** The smallest value a link may ask for. */
|
|
44
|
+
min: number;
|
|
45
|
+
/** The largest value a link may ask for, so a link cannot hang the page. */
|
|
46
|
+
max: number;
|
|
47
|
+
/**
|
|
48
|
+
* The value an absent or malformed parameter falls back to, and the one
|
|
49
|
+
* deleted rather than written. `null` means the tool has no value of its own
|
|
50
|
+
* until a link names one.
|
|
51
|
+
*/
|
|
52
|
+
default: Fallback;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* A whole number a link carries, rounded and clamped to the range the tool can
|
|
56
|
+
* actually serve. A value outside the range is brought back inside it rather
|
|
57
|
+
* than rejected: a link written when the maximum was higher must still open.
|
|
58
|
+
* @param options - The range and the default.
|
|
59
|
+
* @returns The codec.
|
|
60
|
+
*/
|
|
61
|
+
export declare function integerParam<Fallback extends number | null>(options: IntegerParamOptions<Fallback>): ShareParamCodec<number | Fallback>;
|
|
62
|
+
/** What {@link stringParam} is configured with. */
|
|
63
|
+
export interface StringParamOptions {
|
|
64
|
+
/**
|
|
65
|
+
* The value an absent parameter reads as, and the one deleted rather than
|
|
66
|
+
* written.
|
|
67
|
+
* @default ''
|
|
68
|
+
*/
|
|
69
|
+
default?: string;
|
|
70
|
+
/**
|
|
71
|
+
* The longest value accepted; anything beyond it is cut, so a link cannot
|
|
72
|
+
* hand the tool a megabyte of text.
|
|
73
|
+
* @default undefined
|
|
74
|
+
*/
|
|
75
|
+
maxLength?: number;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* A free-text parameter, taken as written. The value is not trimmed: a
|
|
79
|
+
* leading space can be part of what the tool is showing.
|
|
80
|
+
* @param options - The default and the length limit.
|
|
81
|
+
* @returns The codec.
|
|
82
|
+
*/
|
|
83
|
+
export declare function stringParam(options?: StringParamOptions): ShareParamCodec<string>;
|
|
84
|
+
/**
|
|
85
|
+
* One of a fixed set of names — a difficulty, a display mode, a format.
|
|
86
|
+
* A name the tool does not know falls back rather than throwing, so a link
|
|
87
|
+
* written before the set changed still opens.
|
|
88
|
+
* @param values - Every name the tool understands.
|
|
89
|
+
* @param fallback - The name an absent or unknown parameter reads as.
|
|
90
|
+
* @returns The codec.
|
|
91
|
+
*/
|
|
92
|
+
export declare function enumParam<Value extends string>(values: readonly Value[], fallback: Value): ShareParamCodec<Value>;
|
|
93
|
+
//# sourceMappingURL=params.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"params.d.ts","sourceRoot":"","sources":["../../../src/share/core/params.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,WAAW,eAAe,CAAC,KAAK;IACpC;;;;OAIG;IACH,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC;IACjC;;;;OAIG;IACH,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC;CACxC;AAED,oDAAoD;AACpD,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,OAAO,GAAE,mBAAwB,GAChC,eAAe,CAAC,OAAO,CAAC,CAa1B;AAED,oDAAoD;AACpD,MAAM,WAAW,mBAAmB,CAAC,QAAQ,SAAS,MAAM,GAAG,IAAI;IACjE,6CAA6C;IAC7C,GAAG,EAAE,MAAM,CAAC;IACZ,4EAA4E;IAC5E,GAAG,EAAE,MAAM,CAAC;IACZ;;;;OAIG;IACH,OAAO,EAAE,QAAQ,CAAC;CACnB;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,QAAQ,SAAS,MAAM,GAAG,IAAI,EACzD,OAAO,EAAE,mBAAmB,CAAC,QAAQ,CAAC,GACrC,eAAe,CAAC,MAAM,GAAG,QAAQ,CAAC,CAgBpC;AAED,mDAAmD;AACnD,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CACzB,OAAO,GAAE,kBAAuB,GAC/B,eAAe,CAAC,MAAM,CAAC,CAYzB;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,KAAK,SAAS,MAAM,EAC5C,MAAM,EAAE,SAAS,KAAK,EAAE,EACxB,QAAQ,EAAE,KAAK,GACd,eAAe,CAAC,KAAK,CAAC,CAkBxB"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A flag a link switches on by naming it. `?flag`, `?flag=` and `?flag=1` all
|
|
3
|
+
* read as on, because these addresses are retyped by hand out of a course
|
|
4
|
+
* page; only `0` and `false` read as off.
|
|
5
|
+
* @param options - The value the flag takes when the link says nothing.
|
|
6
|
+
* @returns The codec.
|
|
7
|
+
*/
|
|
8
|
+
export function booleanParam(options = {}) {
|
|
9
|
+
const { default: fallback = false } = options;
|
|
10
|
+
return {
|
|
11
|
+
parse(raw) {
|
|
12
|
+
if (raw === null)
|
|
13
|
+
return fallback;
|
|
14
|
+
const text = raw.trim().toLowerCase();
|
|
15
|
+
return text !== '0' && text !== 'false';
|
|
16
|
+
},
|
|
17
|
+
serialize(value) {
|
|
18
|
+
if (value === fallback)
|
|
19
|
+
return null;
|
|
20
|
+
return value ? '1' : '0';
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* A whole number a link carries, rounded and clamped to the range the tool can
|
|
26
|
+
* actually serve. A value outside the range is brought back inside it rather
|
|
27
|
+
* than rejected: a link written when the maximum was higher must still open.
|
|
28
|
+
* @param options - The range and the default.
|
|
29
|
+
* @returns The codec.
|
|
30
|
+
*/
|
|
31
|
+
export function integerParam(options) {
|
|
32
|
+
const { min, max, default: fallback } = options;
|
|
33
|
+
return {
|
|
34
|
+
parse(raw) {
|
|
35
|
+
if (raw === null)
|
|
36
|
+
return fallback;
|
|
37
|
+
const text = raw.trim();
|
|
38
|
+
if (text === '')
|
|
39
|
+
return fallback;
|
|
40
|
+
const parsed = Number(text);
|
|
41
|
+
if (Number.isNaN(parsed))
|
|
42
|
+
return fallback;
|
|
43
|
+
return clamp(parsed, min, max);
|
|
44
|
+
},
|
|
45
|
+
serialize(value) {
|
|
46
|
+
if (typeof value !== 'number' || value === fallback)
|
|
47
|
+
return null;
|
|
48
|
+
return String(clamp(value, min, max));
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* A free-text parameter, taken as written. The value is not trimmed: a
|
|
54
|
+
* leading space can be part of what the tool is showing.
|
|
55
|
+
* @param options - The default and the length limit.
|
|
56
|
+
* @returns The codec.
|
|
57
|
+
*/
|
|
58
|
+
export function stringParam(options = {}) {
|
|
59
|
+
const { default: fallback = '', maxLength } = options;
|
|
60
|
+
return {
|
|
61
|
+
parse(raw) {
|
|
62
|
+
if (raw === null)
|
|
63
|
+
return fallback;
|
|
64
|
+
return cut(raw, maxLength);
|
|
65
|
+
},
|
|
66
|
+
serialize(value) {
|
|
67
|
+
const text = cut(value, maxLength);
|
|
68
|
+
return text === fallback ? null : text;
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* One of a fixed set of names — a difficulty, a display mode, a format.
|
|
74
|
+
* A name the tool does not know falls back rather than throwing, so a link
|
|
75
|
+
* written before the set changed still opens.
|
|
76
|
+
* @param values - Every name the tool understands.
|
|
77
|
+
* @param fallback - The name an absent or unknown parameter reads as.
|
|
78
|
+
* @returns The codec.
|
|
79
|
+
*/
|
|
80
|
+
export function enumParam(values, fallback) {
|
|
81
|
+
return {
|
|
82
|
+
parse(raw) {
|
|
83
|
+
if (raw === null)
|
|
84
|
+
return fallback;
|
|
85
|
+
const text = raw.trim();
|
|
86
|
+
for (const value of values) {
|
|
87
|
+
if (value === text)
|
|
88
|
+
return value;
|
|
89
|
+
}
|
|
90
|
+
return fallback;
|
|
91
|
+
},
|
|
92
|
+
serialize(value) {
|
|
93
|
+
if (value === fallback)
|
|
94
|
+
return null;
|
|
95
|
+
for (const candidate of values) {
|
|
96
|
+
if (candidate === value)
|
|
97
|
+
return value;
|
|
98
|
+
}
|
|
99
|
+
return null;
|
|
100
|
+
},
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
function clamp(value, min, max) {
|
|
104
|
+
return Math.min(max, Math.max(min, Math.round(value)));
|
|
105
|
+
}
|
|
106
|
+
function cut(value, maxLength) {
|
|
107
|
+
if (maxLength === undefined || value.length <= maxLength)
|
|
108
|
+
return value;
|
|
109
|
+
return value.slice(0, maxLength);
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=params.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"params.js","sourceRoot":"","sources":["../../../src/share/core/params.ts"],"names":[],"mappings":"AAkCA;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAC1B,UAA+B,EAAE;IAEjC,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IAC9C,OAAO;QACL,KAAK,CAAC,GAAG;YACP,IAAI,GAAG,KAAK,IAAI;gBAAE,OAAO,QAAQ,CAAC;YAClC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YACtC,OAAO,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,OAAO,CAAC;QAC1C,CAAC;QACD,SAAS,CAAC,KAAK;YACb,IAAI,KAAK,KAAK,QAAQ;gBAAE,OAAO,IAAI,CAAC;YACpC,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAC3B,CAAC;KACF,CAAC;AACJ,CAAC;AAgBD;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAC1B,OAAsC;IAEtC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAChD,OAAO;QACL,KAAK,CAAC,GAAG;YACP,IAAI,GAAG,KAAK,IAAI;gBAAE,OAAO,QAAQ,CAAC;YAClC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;YACxB,IAAI,IAAI,KAAK,EAAE;gBAAE,OAAO,QAAQ,CAAC;YACjC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YAC5B,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;gBAAE,OAAO,QAAQ,CAAC;YAC1C,OAAO,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC;QACD,SAAS,CAAC,KAAK;YACb,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,QAAQ;gBAAE,OAAO,IAAI,CAAC;YACjE,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QACxC,CAAC;KACF,CAAC;AACJ,CAAC;AAkBD;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CACzB,UAA8B,EAAE;IAEhC,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAG,EAAE,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IACtD,OAAO;QACL,KAAK,CAAC,GAAG;YACP,IAAI,GAAG,KAAK,IAAI;gBAAE,OAAO,QAAQ,CAAC;YAClC,OAAO,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC7B,CAAC;QACD,SAAS,CAAC,KAAK;YACb,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YACnC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACzC,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CACvB,MAAwB,EACxB,QAAe;IAEf,OAAO;QACL,KAAK,CAAC,GAAG;YACP,IAAI,GAAG,KAAK,IAAI;gBAAE,OAAO,QAAQ,CAAC;YAClC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;YACxB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,IAAI,KAAK,KAAK,IAAI;oBAAE,OAAO,KAAK,CAAC;YACnC,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,SAAS,CAAC,KAAK;YACb,IAAI,KAAK,KAAK,QAAQ;gBAAE,OAAO,IAAI,CAAC;YACpC,KAAK,MAAM,SAAS,IAAI,MAAM,EAAE,CAAC;gBAC/B,IAAI,SAAS,KAAK,KAAK;oBAAE,OAAO,KAAK,CAAC;YACxC,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,KAAK,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW;IACpD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,GAAG,CAAC,KAAa,EAAE,SAA6B;IACvD,IAAI,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,IAAI,SAAS;QAAE,OAAO,KAAK,CAAC;IACvE,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/** One `key=value` pair of a query string, already decoded. */
|
|
2
|
+
export type QueryEntry = readonly [key: string, value: string];
|
|
3
|
+
/**
|
|
4
|
+
* Read a query string into its pairs, in the order it wrote them.
|
|
5
|
+
*
|
|
6
|
+
* A `+` is a plus, not a space: a link carries structures such as
|
|
7
|
+
* `CC[N+](C)(C)C`, and the form-urlencoded reading of `+` would turn one into
|
|
8
|
+
* a different molecule without anything failing. A malformed escape is kept as
|
|
9
|
+
* written rather than throwing, so a link somebody retyped still opens.
|
|
10
|
+
* @param search - The query string, with or without its leading `?`, and without a fragment.
|
|
11
|
+
* @returns The pairs, decoded.
|
|
12
|
+
*/
|
|
13
|
+
export declare function parseQuery(search: string): QueryEntry[];
|
|
14
|
+
/**
|
|
15
|
+
* Write pairs back into a query string, keeping the two characters a reader
|
|
16
|
+
* of these links cares about legible: a comma stays a comma rather than
|
|
17
|
+
* `%2C`, and a plus stays a plus rather than `%2B`. Both parse back
|
|
18
|
+
* identically through {@link parseQuery}.
|
|
19
|
+
* @param entries - The pairs to write, in the order they should appear.
|
|
20
|
+
* @returns The query string, without its leading `?`.
|
|
21
|
+
*/
|
|
22
|
+
export declare function serializeQuery(entries: readonly QueryEntry[]): string;
|
|
23
|
+
/**
|
|
24
|
+
* The first value each key carries, which is what a link means when it names
|
|
25
|
+
* the same parameter twice.
|
|
26
|
+
* @param entries - The pairs of a query string.
|
|
27
|
+
* @returns One value per key.
|
|
28
|
+
*/
|
|
29
|
+
export declare function firstValues(entries: readonly QueryEntry[]): ReadonlyMap<string, string>;
|
|
30
|
+
//# sourceMappingURL=query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../src/share/core/query.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,MAAM,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAE/D;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,EAAE,CAYvD;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,GAAG,MAAM,CAMrE;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,SAAS,UAAU,EAAE,GAC7B,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAM7B"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Read a query string into its pairs, in the order it wrote them.
|
|
3
|
+
*
|
|
4
|
+
* A `+` is a plus, not a space: a link carries structures such as
|
|
5
|
+
* `CC[N+](C)(C)C`, and the form-urlencoded reading of `+` would turn one into
|
|
6
|
+
* a different molecule without anything failing. A malformed escape is kept as
|
|
7
|
+
* written rather than throwing, so a link somebody retyped still opens.
|
|
8
|
+
* @param search - The query string, with or without its leading `?`, and without a fragment.
|
|
9
|
+
* @returns The pairs, decoded.
|
|
10
|
+
*/
|
|
11
|
+
export function parseQuery(search) {
|
|
12
|
+
const text = search.startsWith('?') ? search.slice(1) : search;
|
|
13
|
+
const entries = [];
|
|
14
|
+
if (text === '')
|
|
15
|
+
return entries;
|
|
16
|
+
for (const chunk of text.split('&')) {
|
|
17
|
+
if (chunk === '')
|
|
18
|
+
continue;
|
|
19
|
+
const separator = chunk.indexOf('=');
|
|
20
|
+
const key = separator === -1 ? chunk : chunk.slice(0, separator);
|
|
21
|
+
const value = separator === -1 ? '' : chunk.slice(separator + 1);
|
|
22
|
+
entries.push([decodeComponent(key), decodeComponent(value)]);
|
|
23
|
+
}
|
|
24
|
+
return entries;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Write pairs back into a query string, keeping the two characters a reader
|
|
28
|
+
* of these links cares about legible: a comma stays a comma rather than
|
|
29
|
+
* `%2C`, and a plus stays a plus rather than `%2B`. Both parse back
|
|
30
|
+
* identically through {@link parseQuery}.
|
|
31
|
+
* @param entries - The pairs to write, in the order they should appear.
|
|
32
|
+
* @returns The query string, without its leading `?`.
|
|
33
|
+
*/
|
|
34
|
+
export function serializeQuery(entries) {
|
|
35
|
+
const chunks = [];
|
|
36
|
+
for (const [key, value] of entries) {
|
|
37
|
+
chunks.push(`${encodeComponent(key)}=${encodeComponent(value)}`);
|
|
38
|
+
}
|
|
39
|
+
return chunks.join('&');
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* The first value each key carries, which is what a link means when it names
|
|
43
|
+
* the same parameter twice.
|
|
44
|
+
* @param entries - The pairs of a query string.
|
|
45
|
+
* @returns One value per key.
|
|
46
|
+
*/
|
|
47
|
+
export function firstValues(entries) {
|
|
48
|
+
const values = new Map();
|
|
49
|
+
for (const [key, value] of entries) {
|
|
50
|
+
if (!values.has(key))
|
|
51
|
+
values.set(key, value);
|
|
52
|
+
}
|
|
53
|
+
return values;
|
|
54
|
+
}
|
|
55
|
+
function decodeComponent(value) {
|
|
56
|
+
try {
|
|
57
|
+
return decodeURIComponent(value);
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return value;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
function encodeComponent(value) {
|
|
64
|
+
return encodeURIComponent(value)
|
|
65
|
+
.replaceAll('%2C', ',')
|
|
66
|
+
.replaceAll('%2B', '+');
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/share/core/query.ts"],"names":[],"mappings":"AAGA;;;;;;;;;GASG;AACH,MAAM,UAAU,UAAU,CAAC,MAAc;IACvC,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC/D,MAAM,OAAO,GAAiB,EAAE,CAAC;IACjC,IAAI,IAAI,KAAK,EAAE;QAAE,OAAO,OAAO,CAAC;IAChC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACpC,IAAI,KAAK,KAAK,EAAE;YAAE,SAAS;QAC3B,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,GAAG,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QACjE,MAAM,KAAK,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,OAA8B;IAC3D,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;QACnC,MAAM,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CACzB,OAA8B;IAE9B,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;QACnC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACpC,IAAI,CAAC;QACH,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,kBAAkB,CAAC,KAAK,CAAC;SAC7B,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC;SACtB,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC5B,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { ShareConfig } from './config.ts';
|
|
2
|
+
import type { ShareParamCodecs, ShareVocabulary } from './vocabulary.ts';
|
|
3
|
+
/** What {@link buildShareUrl} needs to write a link. */
|
|
4
|
+
export interface ShareUrlOptions<Codecs extends ShareParamCodecs = Record<string, never>> {
|
|
5
|
+
/**
|
|
6
|
+
* Where the page is served from — origin and path. Anything from the first
|
|
7
|
+
* `?` or `#` is dropped, so the current address can be handed over as it is.
|
|
8
|
+
*/
|
|
9
|
+
base: string;
|
|
10
|
+
/**
|
|
11
|
+
* The address as it stands, so the tool's own inputs travel with the link.
|
|
12
|
+
* @default ''
|
|
13
|
+
*/
|
|
14
|
+
search?: string;
|
|
15
|
+
/** The configuration the link carries. */
|
|
16
|
+
config: ShareConfig<Codecs>;
|
|
17
|
+
/** What this site's links can say. */
|
|
18
|
+
vocabulary: ShareVocabulary<Codecs>;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* The absolute link the share dialog hands out: the page, the tool's own
|
|
22
|
+
* inputs, and the configuration written over whatever the address carried.
|
|
23
|
+
* @param options - Where the page is, what it is showing, and how it is configured.
|
|
24
|
+
* @returns An absolute URL.
|
|
25
|
+
*/
|
|
26
|
+
export declare function buildShareUrl<Codecs extends ShareParamCodecs = Record<string, never>>(options: ShareUrlOptions<Codecs>): string;
|
|
27
|
+
/** What {@link buildEmbedCode} needs to write the snippet. */
|
|
28
|
+
export interface EmbedCodeOptions {
|
|
29
|
+
/** The link the frame loads. */
|
|
30
|
+
url: string;
|
|
31
|
+
/** What a screen reader announces the frame as; a frame without one is unreadable. */
|
|
32
|
+
title: string;
|
|
33
|
+
/**
|
|
34
|
+
* Height of the frame, in pixels.
|
|
35
|
+
* @default 700
|
|
36
|
+
*/
|
|
37
|
+
height?: number;
|
|
38
|
+
/**
|
|
39
|
+
* Width of the frame; a number is taken as pixels.
|
|
40
|
+
* @default '100%'
|
|
41
|
+
*/
|
|
42
|
+
width?: number | string;
|
|
43
|
+
/**
|
|
44
|
+
* The CSS border the frame is drawn with.
|
|
45
|
+
* @default '1px solid #ddd'
|
|
46
|
+
*/
|
|
47
|
+
border?: string;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* The snippet to paste into a course page: one iframe loading the shared link.
|
|
51
|
+
* Every value is escaped, so an address carrying an ampersand or a title
|
|
52
|
+
* carrying a quote cannot break out of its attribute.
|
|
53
|
+
* @param options - The link, its accessible name and the frame's dimensions.
|
|
54
|
+
* @returns One line of HTML.
|
|
55
|
+
*/
|
|
56
|
+
export declare function buildEmbedCode(options: EmbedCodeOptions): string;
|
|
57
|
+
//# sourceMappingURL=url.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../../src/share/core/url.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEzE,wDAAwD;AACxD,MAAM,WAAW,eAAe,CAC9B,MAAM,SAAS,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;IAEvD;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC5B,sCAAsC;IACtC,UAAU,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;CACrC;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,MAAM,SAAS,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EACvD,OAAO,EAAE,eAAe,CAAC,MAAM,CAAC,GAAG,MAAM,CAK1C;AAED,8DAA8D;AAC9D,MAAM,WAAW,gBAAgB;IAC/B,gCAAgC;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,sFAAsF;IACtF,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAiBhE"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { applyShareConfig } from "./config.js";
|
|
2
|
+
import { escapeAttribute } from "./escape.js";
|
|
3
|
+
/**
|
|
4
|
+
* The absolute link the share dialog hands out: the page, the tool's own
|
|
5
|
+
* inputs, and the configuration written over whatever the address carried.
|
|
6
|
+
* @param options - Where the page is, what it is showing, and how it is configured.
|
|
7
|
+
* @returns An absolute URL.
|
|
8
|
+
*/
|
|
9
|
+
export function buildShareUrl(options) {
|
|
10
|
+
const { base, search = '', config, vocabulary } = options;
|
|
11
|
+
const query = applyShareConfig(search, config, vocabulary);
|
|
12
|
+
const address = trimAddress(base);
|
|
13
|
+
return query === '' ? address : `${address}?${query}`;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* The snippet to paste into a course page: one iframe loading the shared link.
|
|
17
|
+
* Every value is escaped, so an address carrying an ampersand or a title
|
|
18
|
+
* carrying a quote cannot break out of its attribute.
|
|
19
|
+
* @param options - The link, its accessible name and the frame's dimensions.
|
|
20
|
+
* @returns One line of HTML.
|
|
21
|
+
*/
|
|
22
|
+
export function buildEmbedCode(options) {
|
|
23
|
+
const { url, title, height = DEFAULT_HEIGHT, width = '100%', border = '1px solid #ddd', } = options;
|
|
24
|
+
const style = `border: ${border}; border-radius: 8px`;
|
|
25
|
+
return [
|
|
26
|
+
`<iframe src="${escapeAttribute(url)}"`,
|
|
27
|
+
`title="${escapeAttribute(title)}"`,
|
|
28
|
+
`width="${escapeAttribute(formatWidth(width))}"`,
|
|
29
|
+
`height="${formatHeight(height)}"`,
|
|
30
|
+
`style="${escapeAttribute(style)}"`,
|
|
31
|
+
'loading="lazy"></iframe>',
|
|
32
|
+
].join(' ');
|
|
33
|
+
}
|
|
34
|
+
const DEFAULT_HEIGHT = 700;
|
|
35
|
+
function trimAddress(base) {
|
|
36
|
+
const cut = base.search(/[#?]/);
|
|
37
|
+
return cut === -1 ? base : base.slice(0, cut);
|
|
38
|
+
}
|
|
39
|
+
function formatWidth(width) {
|
|
40
|
+
if (typeof width !== 'number')
|
|
41
|
+
return width;
|
|
42
|
+
return String(Math.max(1, Math.round(width)));
|
|
43
|
+
}
|
|
44
|
+
function formatHeight(height) {
|
|
45
|
+
if (!Number.isFinite(height))
|
|
46
|
+
return String(DEFAULT_HEIGHT);
|
|
47
|
+
return String(Math.max(1, Math.round(height)));
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=url.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url.js","sourceRoot":"","sources":["../../../src/share/core/url.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAuB9C;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAE3B,OAAgC;IAChC,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IAC1D,MAAM,KAAK,GAAG,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAClC,OAAO,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,KAAK,EAAE,CAAC;AACxD,CAAC;AAyBD;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,OAAyB;IACtD,MAAM,EACJ,GAAG,EACH,KAAK,EACL,MAAM,GAAG,cAAc,EACvB,KAAK,GAAG,MAAM,EACd,MAAM,GAAG,gBAAgB,GAC1B,GAAG,OAAO,CAAC;IACZ,MAAM,KAAK,GAAG,WAAW,MAAM,sBAAsB,CAAC;IACtD,OAAO;QACL,gBAAgB,eAAe,CAAC,GAAG,CAAC,GAAG;QACvC,UAAU,eAAe,CAAC,KAAK,CAAC,GAAG;QACnC,UAAU,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,GAAG;QAChD,WAAW,YAAY,CAAC,MAAM,CAAC,GAAG;QAClC,UAAU,eAAe,CAAC,KAAK,CAAC,GAAG;QACnC,0BAA0B;KAC3B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,CAAC;AAED,MAAM,cAAc,GAAG,GAAG,CAAC;AAE3B,SAAS,WAAW,CAAC,IAAY;IAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAChC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,WAAW,CAAC,KAAsB;IACzC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,YAAY,CAAC,MAAc;IAClC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC,cAAc,CAAC,CAAC;IAC5D,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACjD,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { ShareParamCodec } from './params.ts';
|
|
2
|
+
/**
|
|
3
|
+
* A part of a page a shared link can switch off through `?hide=`.
|
|
4
|
+
*
|
|
5
|
+
* The label is written positively — the dialog shows a ticked box for a part
|
|
6
|
+
* that stays visible — and the description says what switching it off does,
|
|
7
|
+
* for the person building the link rather than for the visitor.
|
|
8
|
+
*/
|
|
9
|
+
export interface HideablePart {
|
|
10
|
+
/** The name this part takes in `?hide=`, in lowerCamelCase. */
|
|
11
|
+
key: string;
|
|
12
|
+
/** How the part is named in the dialog. */
|
|
13
|
+
label: string;
|
|
14
|
+
/** What hiding it does. */
|
|
15
|
+
description: string;
|
|
16
|
+
/**
|
|
17
|
+
* Whether the dialog starts with this part already switched off, because it
|
|
18
|
+
* is noise inside somebody else's page.
|
|
19
|
+
* @default false
|
|
20
|
+
*/
|
|
21
|
+
hiddenByDefault?: boolean;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* The codecs of a tool's own parameters, keyed by the name each takes in the
|
|
25
|
+
* query string.
|
|
26
|
+
*/
|
|
27
|
+
export type ShareParamCodecs = Readonly<Record<string, ShareParamCodec<unknown>>>;
|
|
28
|
+
/** The value each codec of a set reads and writes. */
|
|
29
|
+
export type ShareParamValues<Codecs extends ShareParamCodecs> = {
|
|
30
|
+
[Key in keyof Codecs]: Codecs[Key] extends ShareParamCodec<infer Value> ? Value : never;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Everything one site's links can say: the parts they can switch off, and the
|
|
34
|
+
* typed parameters they carry beyond `embed` and `hide`.
|
|
35
|
+
*
|
|
36
|
+
* This is the only place that knows those names. A key it does not list is a
|
|
37
|
+
* tool input, left alone by every function here.
|
|
38
|
+
*/
|
|
39
|
+
export interface ShareVocabulary<Codecs extends ShareParamCodecs = Record<string, never>> {
|
|
40
|
+
/**
|
|
41
|
+
* The hideable parts, in the order `?hide=` and the dialog list them, so one
|
|
42
|
+
* selection always produces one link.
|
|
43
|
+
*/
|
|
44
|
+
parts: readonly HideablePart[];
|
|
45
|
+
/**
|
|
46
|
+
* The tool's own parameters — a series length, a zoom, a seed.
|
|
47
|
+
* @default {}
|
|
48
|
+
*/
|
|
49
|
+
params?: Codecs;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=vocabulary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vocabulary.d.ts","sourceRoot":"","sources":["../../../src/share/core/vocabulary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAC3B,+DAA+D;IAC/D,GAAG,EAAE,MAAM,CAAC;IACZ,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CACrC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,CACzC,CAAC;AAEF,sDAAsD;AACtD,MAAM,MAAM,gBAAgB,CAAC,MAAM,SAAS,gBAAgB,IAAI;KAC7D,GAAG,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,eAAe,CAAC,MAAM,KAAK,CAAC,GACnE,KAAK,GACL,KAAK;CACV,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,WAAW,eAAe,CAC9B,MAAM,SAAS,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;IAEvD;;;OAGG;IACH,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;IAC/B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vocabulary.js","sourceRoot":"","sources":["../../../src/share/core/vocabulary.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ReactElement, ReactNode } from 'react';
|
|
2
|
+
export interface HiddenPartsProviderProps {
|
|
3
|
+
/**
|
|
4
|
+
* The parts the link switches off — the `hidden` of the parsed
|
|
5
|
+
* configuration.
|
|
6
|
+
* @default [] — nothing is switched off
|
|
7
|
+
*/
|
|
8
|
+
hidden?: readonly string[];
|
|
9
|
+
/** The page, and everything in it that may ask what is hidden. */
|
|
10
|
+
children: ReactNode;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Put the configuration of the current link where every part of the page can
|
|
14
|
+
* read it, so nothing has to be threaded through props.
|
|
15
|
+
* @param props - The parts the link switches off, and the page.
|
|
16
|
+
* @returns The page, under the configuration.
|
|
17
|
+
*/
|
|
18
|
+
export declare function HiddenPartsProvider(props: HiddenPartsProviderProps): ReactElement;
|
|
19
|
+
//# sourceMappingURL=HiddenPartsProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HiddenPartsProvider.d.ts","sourceRoot":"","sources":["../../../src/share/ui/HiddenPartsProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKrD,MAAM,WAAW,wBAAwB;IACvC;;;;OAIG;IACH,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,kEAAkE;IAClE,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,wBAAwB,GAC9B,YAAY,CASd"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo } from 'react';
|
|
3
|
+
import { HiddenPartsContext } from "./hiddenParts.js";
|
|
4
|
+
/**
|
|
5
|
+
* Put the configuration of the current link where every part of the page can
|
|
6
|
+
* read it, so nothing has to be threaded through props.
|
|
7
|
+
* @param props - The parts the link switches off, and the page.
|
|
8
|
+
* @returns The page, under the configuration.
|
|
9
|
+
*/
|
|
10
|
+
export function HiddenPartsProvider(props) {
|
|
11
|
+
const { hidden, children } = props;
|
|
12
|
+
const parts = useMemo(() => new Set(hidden), [hidden]);
|
|
13
|
+
return (_jsx(HiddenPartsContext.Provider, { value: parts, children: children }));
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=HiddenPartsProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HiddenPartsProvider.js","sourceRoot":"","sources":["../../../src/share/ui/HiddenPartsProvider.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAatD;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CACjC,KAA+B;IAE/B,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IACnC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEvD,OAAO,CACL,KAAC,kBAAkB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YACtC,QAAQ,GACmB,CAC/B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
export interface PagePartProps {
|
|
3
|
+
/** The name this region takes in `?hide=`. */
|
|
4
|
+
part: string;
|
|
5
|
+
/** What the region draws. */
|
|
6
|
+
children: ReactNode;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* A region of the page a shared link may leave out.
|
|
10
|
+
*
|
|
11
|
+
* A switched-off part is dropped from the tree rather than hidden with CSS: an
|
|
12
|
+
* embedded figure must not mount a 3D canvas, or run a search, for a panel
|
|
13
|
+
* nobody will see.
|
|
14
|
+
* @param props - Which region this is, and what it draws.
|
|
15
|
+
* @returns The children, or nothing.
|
|
16
|
+
*/
|
|
17
|
+
export declare function PagePart(props: PagePartProps): ReactNode;
|
|
18
|
+
//# sourceMappingURL=PagePart.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PagePart.d.ts","sourceRoot":"","sources":["../../../src/share/ui/PagePart.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,MAAM,WAAW,aAAa;IAC5B,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,SAAS,CAKxD"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { useIsHidden } from "./hiddenParts.js";
|
|
2
|
+
/**
|
|
3
|
+
* A region of the page a shared link may leave out.
|
|
4
|
+
*
|
|
5
|
+
* A switched-off part is dropped from the tree rather than hidden with CSS: an
|
|
6
|
+
* embedded figure must not mount a 3D canvas, or run a search, for a panel
|
|
7
|
+
* nobody will see.
|
|
8
|
+
* @param props - Which region this is, and what it draws.
|
|
9
|
+
* @returns The children, or nothing.
|
|
10
|
+
*/
|
|
11
|
+
export function PagePart(props) {
|
|
12
|
+
const { part, children } = props;
|
|
13
|
+
const isHidden = useIsHidden();
|
|
14
|
+
return isHidden(part) ? null : children;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=PagePart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PagePart.js","sourceRoot":"","sources":["../../../src/share/ui/PagePart.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAS/C;;;;;;;;GAQG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAoB;IAC3C,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IACjC,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAE/B,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC1C,CAAC"}
|