react-cheminfo 0.2.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 +139 -10
- 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 +12 -0
- package/lib/core.d.ts.map +1 -1
- package/lib/core.js +12 -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 +3 -1
- package/lib/ecosystem/core/sites.d.ts.map +1 -1
- package/lib/ecosystem/core/sites.js +33 -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/glyphs.d.ts +16 -0
- package/lib/ecosystem/ui/glyphs.d.ts.map +1 -0
- package/lib/ecosystem/ui/glyphs.js +41 -0
- package/lib/ecosystem/ui/glyphs.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 +15 -36
- 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 +85 -0
- package/lib/orbital/core/atomicGrid.d.ts.map +1 -0
- package/lib/orbital/core/atomicGrid.js +105 -0
- package/lib/orbital/core/atomicGrid.js.map +1 -0
- package/lib/orbital/core/atomicOrbitals.d.ts +97 -0
- package/lib/orbital/core/atomicOrbitals.d.ts.map +1 -0
- package/lib/orbital/core/atomicOrbitals.js +135 -0
- package/lib/orbital/core/atomicOrbitals.js.map +1 -0
- package/lib/orbital/core/constants.d.ts +33 -0
- package/lib/orbital/core/constants.d.ts.map +1 -0
- package/lib/orbital/core/constants.js +21 -0
- package/lib/orbital/core/constants.js.map +1 -0
- package/lib/orbital/core/electronConfiguration.d.ts +106 -0
- package/lib/orbital/core/electronConfiguration.d.ts.map +1 -0
- package/lib/orbital/core/electronConfiguration.js +207 -0
- package/lib/orbital/core/electronConfiguration.js.map +1 -0
- package/lib/orbital/core/grid.d.ts +60 -0
- package/lib/orbital/core/grid.d.ts.map +1 -0
- package/lib/orbital/core/grid.js +81 -0
- package/lib/orbital/core/grid.js.map +1 -0
- package/lib/orbital/core/hydrogenic.d.ts +99 -0
- package/lib/orbital/core/hydrogenic.d.ts.map +1 -0
- package/lib/orbital/core/hydrogenic.js +181 -0
- package/lib/orbital/core/hydrogenic.js.map +1 -0
- package/lib/orbital/core/index.d.ts +24 -0
- package/lib/orbital/core/index.d.ts.map +1 -0
- package/lib/orbital/core/index.js +13 -0
- package/lib/orbital/core/index.js.map +1 -0
- 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/numerics.d.ts +39 -0
- package/lib/orbital/core/numerics.d.ts.map +1 -0
- package/lib/orbital/core/numerics.js +75 -0
- package/lib/orbital/core/numerics.js.map +1 -0
- package/lib/orbital/core/occupancy.d.ts +44 -0
- package/lib/orbital/core/occupancy.d.ts.map +1 -0
- package/lib/orbital/core/occupancy.js +85 -0
- package/lib/orbital/core/occupancy.js.map +1 -0
- package/lib/orbital/core/palette.d.ts +36 -0
- package/lib/orbital/core/palette.d.ts.map +1 -0
- package/lib/orbital/core/palette.js +37 -0
- package/lib/orbital/core/palette.js.map +1 -0
- package/lib/orbital/core/realHarmonics.d.ts +57 -0
- package/lib/orbital/core/realHarmonics.d.ts.map +1 -0
- package/lib/orbital/core/realHarmonics.js +144 -0
- package/lib/orbital/core/realHarmonics.js.map +1 -0
- package/lib/orbital/core/sample.d.ts +66 -0
- package/lib/orbital/core/sample.d.ts.map +1 -0
- package/lib/orbital/core/sample.js +61 -0
- package/lib/orbital/core/sample.js.map +1 -0
- package/lib/orbital/core/screening.d.ts +46 -0
- package/lib/orbital/core/screening.d.ts.map +1 -0
- package/lib/orbital/core/screening.js +72 -0
- package/lib/orbital/core/screening.js.map +1 -0
- package/lib/orbital/ui/AtomicOrbitalCanvas.d.ts +62 -0
- package/lib/orbital/ui/AtomicOrbitalCanvas.d.ts.map +1 -0
- package/lib/orbital/ui/AtomicOrbitalCanvas.js +115 -0
- package/lib/orbital/ui/AtomicOrbitalCanvas.js.map +1 -0
- package/lib/orbital/ui/AtomicOrbitalViewer.d.ts +77 -0
- package/lib/orbital/ui/AtomicOrbitalViewer.d.ts.map +1 -0
- package/lib/orbital/ui/AtomicOrbitalViewer.js +49 -0
- package/lib/orbital/ui/AtomicOrbitalViewer.js.map +1 -0
- package/lib/orbital/ui/camera.d.ts +36 -0
- package/lib/orbital/ui/camera.d.ts.map +1 -0
- package/lib/orbital/ui/camera.js +98 -0
- package/lib/orbital/ui/camera.js.map +1 -0
- package/lib/orbital/ui/capability.d.ts +28 -0
- package/lib/orbital/ui/capability.d.ts.map +1 -0
- package/lib/orbital/ui/capability.js +77 -0
- package/lib/orbital/ui/capability.js.map +1 -0
- package/lib/orbital/ui/index.d.ts +17 -0
- package/lib/orbital/ui/index.d.ts.map +1 -0
- package/lib/orbital/ui/index.js +13 -0
- package/lib/orbital/ui/index.js.map +1 -0
- package/lib/orbital/ui/renderVolume.d.ts +60 -0
- package/lib/orbital/ui/renderVolume.d.ts.map +1 -0
- package/lib/orbital/ui/renderVolume.js +119 -0
- package/lib/orbital/ui/renderVolume.js.map +1 -0
- package/lib/orbital/ui/viewer.d.ts +88 -0
- package/lib/orbital/ui/viewer.d.ts.map +1 -0
- package/lib/orbital/ui/viewer.js +156 -0
- package/lib/orbital/ui/viewer.js.map +1 -0
- package/lib/orbital/ui/volumeField.d.ts +33 -0
- package/lib/orbital/ui/volumeField.d.ts.map +1 -0
- package/lib/orbital/ui/volumeField.js +68 -0
- package/lib/orbital/ui/volumeField.js.map +1 -0
- package/lib/orbital.d.ts +11 -0
- package/lib/orbital.d.ts.map +1 -0
- package/lib/orbital.js +11 -0
- package/lib/orbital.js.map +1 -0
- 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 +25 -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 +12 -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 +38 -1
- 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 +246 -0
- package/src/ecosystem/ui/index.ts +4 -0
- package/src/ecosystem/ui/marks.tsx +56 -214
- 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 +167 -0
- package/src/orbital/core/atomicOrbitals.ts +212 -0
- package/src/orbital/core/constants.ts +36 -0
- package/src/orbital/core/electronConfiguration.ts +242 -0
- package/src/orbital/core/grid.ts +126 -0
- package/src/orbital/core/hydrogenic.ts +222 -0
- package/src/orbital/core/index.ts +63 -0
- package/src/orbital/core/isovalue.ts +146 -0
- package/src/orbital/core/numerics.ts +79 -0
- package/src/orbital/core/occupancy.ts +100 -0
- package/src/orbital/core/palette.ts +56 -0
- package/src/orbital/core/realHarmonics.ts +172 -0
- package/src/orbital/core/sample.ts +111 -0
- package/src/orbital/core/screening.ts +90 -0
- package/src/orbital/ui/AtomicOrbitalCanvas.tsx +197 -0
- package/src/orbital/ui/AtomicOrbitalViewer.tsx +154 -0
- package/src/orbital/ui/camera.ts +125 -0
- package/src/orbital/ui/capability.ts +102 -0
- package/src/orbital/ui/index.ts +17 -0
- package/src/orbital/ui/renderVolume.ts +203 -0
- package/src/orbital/ui/viewer.ts +191 -0
- package/src/orbital/ui/volumeField.ts +84 -0
- package/src/orbital.ts +11 -0
- 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
package/README.md
CHANGED
|
@@ -25,19 +25,71 @@ npm i react-cheminfo
|
|
|
25
25
|
dependencies: a site already has them, and a second copy of `react-science`
|
|
26
26
|
would mean two Blueprint style trees in one page.
|
|
27
27
|
|
|
28
|
-
##
|
|
28
|
+
## Entry points
|
|
29
|
+
|
|
30
|
+
Subpaths are **bundle boundaries, not taxonomy**: a feature gets its own door
|
|
31
|
+
only when it drags a heavy dependency behind it.
|
|
32
|
+
|
|
33
|
+
| Import | Holds | Costs |
|
|
34
|
+
| ---------------------------------- | -------------------------------------------- | --------------------- |
|
|
35
|
+
| `react-cheminfo/core` | every framework-free helper — 151 exports | nothing |
|
|
36
|
+
| `react-cheminfo/ui` | every React component and hook — 71 exports | React |
|
|
37
|
+
| `react-cheminfo/orbital` | the 3D atomic-orbital viewer | React, molstar |
|
|
38
|
+
| `react-cheminfo/structure` | the structure editor and renderer | React, react-ocl, OCL |
|
|
39
|
+
| `react-cheminfo/styles/chrome.css` | the shared tokens and site-header stylesheet | nothing |
|
|
40
|
+
|
|
41
|
+
A backend serving an RIS endpoint, a prerender script writing a sitemap, and
|
|
42
|
+
every unit test of that logic therefore load no React at all — and a worker
|
|
43
|
+
sampling an orbital loads neither React nor molstar. `openchemlib`, `react-ocl`
|
|
44
|
+
and `molstar` are **optional** peers, so a site that only wants the Tools menu
|
|
45
|
+
downloads none of them.
|
|
46
|
+
|
|
47
|
+
The stylesheet ships from `styles/`, which `tsc` leaves alone, and is reached
|
|
48
|
+
through a wildcard subpath exactly as `react-science` serves its own.
|
|
49
|
+
|
|
50
|
+
## What is in it
|
|
51
|
+
|
|
52
|
+
| Area | `…/core` | `…/ui` |
|
|
53
|
+
| ----------------------- | -------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
54
|
+
| **Site identity** | `siteById`, `findSiteByHost`, `siteTokensCss`, `siteThemeColor`, `renderEcosystemLinksHtml` | `SiteMark`, `Wordmark`, `SiteTheme`, `SiteTile`, `EcosystemButton`, `EcosystemLinks` |
|
|
55
|
+
| **Chrome** | — | `SiteHeader`, `SiteFooter`, `NavLink`, `NavMenuButton`, `MenuButton`, `useCompactHeader` |
|
|
56
|
+
| **Citation** | `formatCitation`, `formatCitations`, `citationSegments`, `downloadCitation`, `citedReferences`, `doiUrl` | `CiteButton`, `CitationMenu`, `CitationPreview` |
|
|
57
|
+
| **Share & embed** | `parseShareConfig`, `applyShareConfig`, `buildShareUrl`, `buildEmbedCode`, `isHidden`, the param codecs | `ShareDialog`, `ShareButton`, `HiddenPartsProvider`, `PagePart`, `useIsHidden` |
|
|
58
|
+
| **Routing & head** | `createTabRouter`, `createPageAddresses`, `adoptLegacyHashAddress`, `writeDocumentMeta`, `canonicalLink` | — |
|
|
59
|
+
| **Pedagogy** | `parseGlossaryMarkers`, `localStorageProgressStore`, `progressSummary`, `finishValidation` | `GlossaryText`, `SyntaxTooltip`, `HintLadder`, `ExerciseActions`, `ExerciseProgressHeader`, `TutorialStepStrip`, `ReferenceGrid`, `TestCaseList` |
|
|
60
|
+
| **Clipboard & files** | `writeToClipboard`, `downloadBlob`, `downloadText`, `sanitizeFileName`, `toDelimited`, `readDelimited` | `CopyButton`, `CodeBlock`, `DelimitedTextDialog` |
|
|
61
|
+
| **Formatting & colour** | `formatInteger`, `formatDecimal`, `formatBytes`, `pluralize`, `readableInk`, `contrastRatio` | `ColorScaleLegend` |
|
|
62
|
+
| **Widgets** | `CREDITS`, `credits` | `ErrorBoundary`, `CollapsibleSection`, `CapsuleFilter`, `HelpTooltip`, `CreditsList` |
|
|
63
|
+
| **Hooks & state** | `createWorkerChannel` | `persistBucket`, `useDebouncedValue`, `useContainerSize`, `useListKeyboardNavigation`, `useDisclosure` |
|
|
64
|
+
| **Chemistry** | `atomicOrbitalsOf`, `configurationOf`, `classifyMolfile`, `readStructure` | `AtomicOrbitalViewer` (`/orbital`), `StructureEditor`, `Structure` (`/structure`) |
|
|
65
|
+
|
|
66
|
+
Everything in that table is exported from `./core`, `./ui` or `./structure` and
|
|
67
|
+
nothing else is: the sub-components a component is built from, the parsers a
|
|
68
|
+
helper calls and the internals of a hook stay inside the package, reachable only
|
|
69
|
+
by their own path. If it is exported, it is supported.
|
|
70
|
+
|
|
71
|
+
The rule for a new site is short: **`react-cheminfo` first, `react-science`
|
|
72
|
+
second, your own code last.** The full import table and the checklist live in
|
|
73
|
+
`websites/CLAUDE.md`.
|
|
74
|
+
|
|
75
|
+
## Seeing it
|
|
76
|
+
|
|
77
|
+
Storybook is the demo, and every exported component has one — 210 stories:
|
|
29
78
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
79
|
+
```console
|
|
80
|
+
npm run dev # the book on http://localhost:10815
|
|
81
|
+
npm run test-e2e # Playwright opens all 210 and fails on any console error
|
|
82
|
+
```
|
|
34
83
|
|
|
35
|
-
|
|
36
|
-
|
|
84
|
+
The **Brand** toolbar at the top retunes `--brand` / `--brand-alt`, so any story
|
|
85
|
+
can be read as it would look on any site of the family.
|
|
37
86
|
|
|
38
|
-
The sources are organised the other way round — one folder per
|
|
39
|
-
(`src/citation`, `src/ecosystem`), each holding a
|
|
40
|
-
`src/core.ts` and `src/ui.ts` are the barrels the
|
|
87
|
+
The sources are organised the other way round — one folder per feature
|
|
88
|
+
(`src/citation`, `src/ecosystem`, `src/share`, `src/pedagogy`, …), each holding a
|
|
89
|
+
`core/` and a `ui/` half — and `src/core.ts` and `src/ui.ts` are the barrels the
|
|
90
|
+
two entry points point at. ESLint forbids a `core/` folder from importing
|
|
91
|
+
`react`, `react-dom` or anything under a `ui/`, which is what keeps the
|
|
92
|
+
framework-free entry point honest.
|
|
41
93
|
`src/shared` holds what more than one of them is built on: `MenuButton`, the
|
|
42
94
|
shape every button of a site header takes, which is why `CiteButton` and
|
|
43
95
|
`EcosystemButton` differ only in their glyph and their menu, and why both accept
|
|
@@ -72,6 +124,35 @@ import { CiteButton } from 'react-cheminfo/ui';
|
|
|
72
124
|
Adding a style means one function in `citation/core/segments.ts` and one entry
|
|
73
125
|
in `CITATION_STYLES` — the three output formats and the preview follow.
|
|
74
126
|
|
|
127
|
+
A site is often built on more than one work — the tool it wraps, and the
|
|
128
|
+
platform it runs on — and a reader handed two references has to be told what is
|
|
129
|
+
what. Pass `works` rather than `reference`, each one carrying the words that say
|
|
130
|
+
what citing it credits:
|
|
131
|
+
|
|
132
|
+
```tsx
|
|
133
|
+
<CiteButton
|
|
134
|
+
works={[
|
|
135
|
+
{
|
|
136
|
+
reference: SURGE_PAPER,
|
|
137
|
+
what: 'The isomer generator',
|
|
138
|
+
note: 'Cite it for the enumeration: every structure here comes from surge.',
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
reference: PLATFORM_PAPER,
|
|
142
|
+
what: 'The browser platform',
|
|
143
|
+
note: 'Cite it for the site itself.',
|
|
144
|
+
},
|
|
145
|
+
]}
|
|
146
|
+
/>
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
The menu then opens on a line asking for all of them — `guidance` writes that
|
|
150
|
+
line when the default does not fit — and lists every work with what it covers.
|
|
151
|
+
Each work holds its own article and its own reference, in the default style; the
|
|
152
|
+
sections below carry the whole set at once, so one copy pastes both citations and
|
|
153
|
+
one saved file holds both records (`references.ris`). Nothing changes for a site
|
|
154
|
+
asking for a single work.
|
|
155
|
+
|
|
75
156
|
### `EcosystemButton`
|
|
76
157
|
|
|
77
158
|
The Tools entry of a site header: one button opening every other site of the
|
|
@@ -91,6 +172,54 @@ import { EcosystemButton } from 'react-cheminfo/ui';
|
|
|
91
172
|
- A tile **lights up in the colour of the site it opens**, so running the
|
|
92
173
|
pointer down the grid is what makes the pairs of colours read.
|
|
93
174
|
|
|
175
|
+
### `AtomicOrbitalViewer`
|
|
176
|
+
|
|
177
|
+
One hydrogen-like atomic orbital, screened by Slater's rules, sampled in the
|
|
178
|
+
browser and drawn as a signed isosurface with molstar.
|
|
179
|
+
|
|
180
|
+
```tsx
|
|
181
|
+
import { AtomicOrbitalViewer } from 'react-cheminfo/orbital';
|
|
182
|
+
|
|
183
|
+
<AtomicOrbitalViewer atomicNumber={26} orbitalId="3dz2" />;
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
- The **maths is exact**, not a cartoon: a hydrogen-like radial function with its
|
|
187
|
+
`n − ℓ − 1` nodes, times a real spherical harmonic with its ℓ angular ones.
|
|
188
|
+
The Slater orbital a hybridisation model uses is nodeless and would draw a 3s
|
|
189
|
+
exactly like a 1s, only fatter.
|
|
190
|
+
- The canvas is behind a `React.lazy` boundary and **nothing this entry point
|
|
191
|
+
exports pulls molstar in statically**, so a page that never draws an orbital
|
|
192
|
+
never downloads it.
|
|
193
|
+
- A **WebGL probe runs before molstar is touched** (`probeViewerCapability`), so
|
|
194
|
+
a locked-down school machine gets a sentence rather than a blank rectangle.
|
|
195
|
+
- Every orbital is drawn at one canonical size. Molstar's camera clamps its near
|
|
196
|
+
plane, so uranium's 4f — which reaches 0.35 Å — would otherwise stay a dot in
|
|
197
|
+
the corner; the true extent is reported as ⟨r⟩ instead.
|
|
198
|
+
- The **isovalue is a weighted quantile** of the samples (`isocontourCutoff`),
|
|
199
|
+
never molstar's `computeOrbitalIsocontourValues`: that one abandons any field
|
|
200
|
+
whose mean ψ² falls under an absolute `1e-5`, which reads the orbital's _size_
|
|
201
|
+
rather than its shape, and left 2588 of 7460 orbitals blank. A quantile has no
|
|
202
|
+
scale of its own.
|
|
203
|
+
- The isosurface is extracted **on the CPU** (`tryUseGpu: false`). Molstar's GPU
|
|
204
|
+
marching cubes quantises the field to 255 steps on upload, which terraces
|
|
205
|
+
xenon's 4p, and pits a diffuse outer lobe with voxel-sized dimples. The
|
|
206
|
+
surface is a thin shell whatever the box holds, so the CPU path costs 13–44 ms
|
|
207
|
+
even at 152³.
|
|
208
|
+
- `resolution` takes a `{ floor, cap }` pair as well as a number, and then each
|
|
209
|
+
orbital picks its own: one resolution for a whole table leaves xenon's
|
|
210
|
+
innermost 4p lobe spanning 6.6 voxels while the outer one spans 41. A nodeless
|
|
211
|
+
orbital stays on the floor and costs nothing extra.
|
|
212
|
+
- `sample` accepts a worker-backed sampler when a site would rather not spend
|
|
213
|
+
~25 ms of its main thread per orbital. `runAtomicSample` from
|
|
214
|
+
`react-cheminfo/core` is the function that worker calls, and it imports
|
|
215
|
+
neither React nor molstar.
|
|
216
|
+
|
|
217
|
+
The maths is exported on its own from `react-cheminfo/core` —
|
|
218
|
+
`atomicOrbitalsOf`, `configurationOf`, `slaterScreening`, `radialProfile`,
|
|
219
|
+
`radialNodeRadii`, `sampleAtomicOrbital`, `orbitalContour` — so a site can draw
|
|
220
|
+
its own radial plot, list an element's orbitals, or print a screened charge
|
|
221
|
+
without mounting anything.
|
|
222
|
+
|
|
94
223
|
Each mark keeps the geometry of that site's own logo where it has one, redrawn
|
|
95
224
|
on a plate of the site's own colour so every mark of the family still reads as
|
|
96
225
|
one row, and carrying the site's answering colour on exactly one element —
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { Intent } from '@blueprintjs/core';
|
|
2
|
+
import type { ReactElement } from 'react';
|
|
3
|
+
/** One capsule of a {@link CapsuleFilter} row. */
|
|
4
|
+
export interface CapsuleOption<TValue extends string = string> {
|
|
5
|
+
/** What picking this capsule selects. */
|
|
6
|
+
value: TValue;
|
|
7
|
+
/** What the capsule reads. */
|
|
8
|
+
label: string;
|
|
9
|
+
/**
|
|
10
|
+
* How many rows the capsule keeps, written after the label.
|
|
11
|
+
* @default undefined — the capsule carries no count
|
|
12
|
+
*/
|
|
13
|
+
count?: number;
|
|
14
|
+
/**
|
|
15
|
+
* Colour of the capsule, which says what the outcome means rather than
|
|
16
|
+
* whether it is selected.
|
|
17
|
+
* @default 'none'
|
|
18
|
+
*/
|
|
19
|
+
intent?: Intent;
|
|
20
|
+
/**
|
|
21
|
+
* What the pointer is told when it rests on the capsule.
|
|
22
|
+
* @default undefined
|
|
23
|
+
*/
|
|
24
|
+
title?: string;
|
|
25
|
+
}
|
|
26
|
+
/** What a row of filter capsules needs. */
|
|
27
|
+
export interface CapsuleFilterProps<TValue extends string = string> {
|
|
28
|
+
/** One entry per capsule, in the order they are drawn. */
|
|
29
|
+
options: ReadonlyArray<CapsuleOption<TValue>>;
|
|
30
|
+
/** The selected capsule. */
|
|
31
|
+
value: TValue;
|
|
32
|
+
/** Called with the newly picked value. */
|
|
33
|
+
onChange: (value: TValue) => void;
|
|
34
|
+
/**
|
|
35
|
+
* What the group is called, for a screen reader reaching the row.
|
|
36
|
+
* @default 'Filter'
|
|
37
|
+
*/
|
|
38
|
+
label?: string;
|
|
39
|
+
/**
|
|
40
|
+
* How a count is written.
|
|
41
|
+
* @default the number in the reader's locale, e.g. `1,204`
|
|
42
|
+
*/
|
|
43
|
+
formatCount?: (count: number) => string;
|
|
44
|
+
/**
|
|
45
|
+
* Class the row carries, in addition to `capsule-filter`.
|
|
46
|
+
* @default undefined
|
|
47
|
+
*/
|
|
48
|
+
className?: string;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* The row of capsules that narrows a table to one outcome.
|
|
52
|
+
*
|
|
53
|
+
* Every capsule keeps its semantic colour whether or not it is selected, so
|
|
54
|
+
* what a status means stays learnable — the filled shape is what encodes the
|
|
55
|
+
* selection. Each is a real interactive tag, so the row is reachable by tab and
|
|
56
|
+
* a capsule answers to Enter and Space.
|
|
57
|
+
* @param props - See {@link CapsuleFilterProps}.
|
|
58
|
+
* @returns The capsule row.
|
|
59
|
+
*/
|
|
60
|
+
export declare function CapsuleFilter<TValue extends string = string>(props: CapsuleFilterProps<TValue>): ReactElement;
|
|
61
|
+
//# sourceMappingURL=CapsuleFilter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CapsuleFilter.d.ts","sourceRoot":"","sources":["../../../src/capsule/ui/CapsuleFilter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAiB,YAAY,EAAE,MAAM,OAAO,CAAC;AAEzD,kDAAkD;AAClD,MAAM,WAAW,aAAa,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM;IAC3D,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,8BAA8B;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,2CAA2C;AAC3C,MAAM,WAAW,kBAAkB,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM;IAChE,0DAA0D;IAC1D,OAAO,EAAE,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9C,4BAA4B;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACxC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM,EAC1D,KAAK,EAAE,kBAAkB,CAAC,MAAM,CAAC,GAChC,YAAY,CA0Cd"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Tag } from '@blueprintjs/core';
|
|
3
|
+
/**
|
|
4
|
+
* The row of capsules that narrows a table to one outcome.
|
|
5
|
+
*
|
|
6
|
+
* Every capsule keeps its semantic colour whether or not it is selected, so
|
|
7
|
+
* what a status means stays learnable — the filled shape is what encodes the
|
|
8
|
+
* selection. Each is a real interactive tag, so the row is reachable by tab and
|
|
9
|
+
* a capsule answers to Enter and Space.
|
|
10
|
+
* @param props - See {@link CapsuleFilterProps}.
|
|
11
|
+
* @returns The capsule row.
|
|
12
|
+
*/
|
|
13
|
+
export function CapsuleFilter(props) {
|
|
14
|
+
const { options, value, onChange, label = 'Filter', formatCount = defaultFormatCount, className, } = props;
|
|
15
|
+
return (_jsx("div", { role: "group", "aria-label": label, className: className === undefined
|
|
16
|
+
? 'capsule-filter'
|
|
17
|
+
: `capsule-filter ${className}`, style: ROW_STYLE, children: options.map((option) => {
|
|
18
|
+
const selected = option.value === value;
|
|
19
|
+
return (_jsx(Tag, { interactive: true, round: true, minimal: !selected, intent: option.intent, "aria-pressed": selected, htmlTitle: option.title, onClick: () => onChange(option.value), children: option.count === undefined
|
|
20
|
+
? option.label
|
|
21
|
+
: `${option.label} (${formatCount(option.count)})` }, option.value));
|
|
22
|
+
}) }));
|
|
23
|
+
}
|
|
24
|
+
function defaultFormatCount(count) {
|
|
25
|
+
return count.toLocaleString();
|
|
26
|
+
}
|
|
27
|
+
const ROW_STYLE = {
|
|
28
|
+
display: 'flex',
|
|
29
|
+
flexWrap: 'wrap',
|
|
30
|
+
alignItems: 'center',
|
|
31
|
+
gap: 6,
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=CapsuleFilter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CapsuleFilter.js","sourceRoot":"","sources":["../../../src/capsule/ui/CapsuleFilter.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAoDxC;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa,CAC3B,KAAiC;IAEjC,MAAM,EACJ,OAAO,EACP,KAAK,EACL,QAAQ,EACR,KAAK,GAAG,QAAQ,EAChB,WAAW,GAAG,kBAAkB,EAChC,SAAS,GACV,GAAG,KAAK,CAAC;IAEV,OAAO,CACL,cACE,IAAI,EAAC,OAAO,gBACA,KAAK,EACjB,SAAS,EACP,SAAS,KAAK,SAAS;YACrB,CAAC,CAAC,gBAAgB;YAClB,CAAC,CAAC,kBAAkB,SAAS,EAAE,EAEnC,KAAK,EAAE,SAAS,YAEf,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YACtB,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC;YACxC,OAAO,CACL,KAAC,GAAG,IAEF,WAAW,QACX,KAAK,QACL,OAAO,EAAE,CAAC,QAAQ,EAClB,MAAM,EAAE,MAAM,CAAC,MAAM,kBACP,QAAQ,EACtB,SAAS,EAAE,MAAM,CAAC,KAAK,EACvB,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,YAEpC,MAAM,CAAC,KAAK,KAAK,SAAS;oBACzB,CAAC,CAAC,MAAM,CAAC,KAAK;oBACd,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,KAAK,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAX/C,MAAM,CAAC,KAAK,CAYb,CACP,CAAC;QACJ,CAAC,CAAC,GACE,CACP,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa;IACvC,OAAO,KAAK,CAAC,cAAc,EAAE,CAAC;AAChC,CAAC;AAED,MAAM,SAAS,GAAG;IAChB,OAAO,EAAE,MAAM;IACf,QAAQ,EAAE,MAAM;IAChB,UAAU,EAAE,QAAQ;IACpB,GAAG,EAAE,CAAC;CAC0B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/capsule/ui/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/capsule/ui/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAqB,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { ReactElement } from 'react';
|
|
2
|
+
import type { NavItem } from './navItem.ts';
|
|
3
|
+
export interface NavLinkProps {
|
|
4
|
+
/** The entry being drawn. */
|
|
5
|
+
item: NavItem;
|
|
6
|
+
/**
|
|
7
|
+
* Whether this is the page on show, which is the one thing in the bar the
|
|
8
|
+
* brand tint is spent on.
|
|
9
|
+
* @default false
|
|
10
|
+
*/
|
|
11
|
+
active?: boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Extra class names, for a site reaching one entry of its own bar.
|
|
14
|
+
* `nav-link` is always carried as well.
|
|
15
|
+
* @default undefined
|
|
16
|
+
*/
|
|
17
|
+
className?: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* One entry of a site header, as a link when it has an address and as a button
|
|
21
|
+
* otherwise. Both carry `nav-link`, so the row reads as one menu rather than as
|
|
22
|
+
* a button dropped among addresses.
|
|
23
|
+
* @param props - The entry, whether it is the page on show, and extra classes.
|
|
24
|
+
* @returns The entry.
|
|
25
|
+
*/
|
|
26
|
+
export declare function NavLink(props: NavLinkProps): ReactElement;
|
|
27
|
+
//# sourceMappingURL=NavLink.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NavLink.d.ts","sourceRoot":"","sources":["../../../src/chrome/ui/NavLink.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,OAAO,CAAC;AAErD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAG5C,MAAM,WAAW,YAAY;IAC3B,6BAA6B;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,YAAY,CA6CzD"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Icon } from '@blueprintjs/core';
|
|
3
|
+
import { isModifiedClick } from "./navItem.js";
|
|
4
|
+
/**
|
|
5
|
+
* One entry of a site header, as a link when it has an address and as a button
|
|
6
|
+
* otherwise. Both carry `nav-link`, so the row reads as one menu rather than as
|
|
7
|
+
* a button dropped among addresses.
|
|
8
|
+
* @param props - The entry, whether it is the page on show, and extra classes.
|
|
9
|
+
* @returns The entry.
|
|
10
|
+
*/
|
|
11
|
+
export function NavLink(props) {
|
|
12
|
+
const { item, active = false, className } = props;
|
|
13
|
+
const { href, external = false, onSelect, title } = item;
|
|
14
|
+
const classes = [
|
|
15
|
+
'nav-link',
|
|
16
|
+
active ? 'nav-link--active' : null,
|
|
17
|
+
className ?? null,
|
|
18
|
+
]
|
|
19
|
+
.filter((part) => part !== null)
|
|
20
|
+
.join(' ');
|
|
21
|
+
if (href === undefined) {
|
|
22
|
+
return (_jsx("button", { type: "button", className: classes, title: title, "aria-label": title, onClick: onSelect, children: _jsx(NavLinkBody, { item: item }) }));
|
|
23
|
+
}
|
|
24
|
+
return (_jsx("a", { className: classes, href: href, title: title, "aria-label": title, target: external ? '_blank' : undefined, rel: external ? 'noreferrer' : undefined, onClick: (event) => {
|
|
25
|
+
if (onSelect === undefined || external || isModifiedClick(event)) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
event.preventDefault();
|
|
29
|
+
onSelect();
|
|
30
|
+
}, children: _jsx(NavLinkBody, { item: item }) }));
|
|
31
|
+
}
|
|
32
|
+
function NavLinkBody(props) {
|
|
33
|
+
const { icon, label, after } = props.item;
|
|
34
|
+
return (_jsxs(_Fragment, { children: [icon === undefined ? null : _jsx(Icon, { icon: icon, size: 14 }), label, after] }));
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=NavLink.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NavLink.js","sourceRoot":"","sources":["../../../src/chrome/ui/NavLink.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAIzC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAmB/C;;;;;;GAMG;AACH,MAAM,UAAU,OAAO,CAAC,KAAmB;IACzC,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAClD,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAEzD,MAAM,OAAO,GAAG;QACd,UAAU;QACV,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI;QAClC,SAAS,IAAI,IAAI;KAClB;SACE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC;SAC/B,IAAI,CAAC,GAAG,CAAC,CAAC;IAEb,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,CACL,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,OAAO,EAClB,KAAK,EAAE,KAAK,gBACA,KAAK,EACjB,OAAO,EAAE,QAAQ,YAEjB,KAAC,WAAW,IAAC,IAAI,EAAE,IAAI,GAAI,GACpB,CACV,CAAC;IACJ,CAAC;IAED,OAAO,CACL,YACE,SAAS,EAAE,OAAO,EAClB,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,gBACA,KAAK,EACjB,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EACvC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,EACxC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACjB,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjE,OAAO;YACT,CAAC;YACD,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,QAAQ,EAAE,CAAC;QACb,CAAC,YAED,KAAC,WAAW,IAAC,IAAI,EAAE,IAAI,GAAI,GACzB,CACL,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,KAAwB;IAC3C,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC;IAE1C,OAAO,CACL,8BACG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,GAAI,EAC1D,KAAK,EACL,KAAK,IACL,CACJ,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { IconName, PopoverNextProps } from '@blueprintjs/core';
|
|
2
|
+
import type { ReactElement, ReactNode } from 'react';
|
|
3
|
+
import type { NavItem } from './navItem.ts';
|
|
4
|
+
export interface NavMenuButtonProps {
|
|
5
|
+
/** Text of the trigger, which is also what a screen reader is told. */
|
|
6
|
+
label: string;
|
|
7
|
+
/** The pages the menu holds, in the order it lists them. */
|
|
8
|
+
items: readonly NavItem[];
|
|
9
|
+
/**
|
|
10
|
+
* Which page is on show, named by its `id`. The trigger takes the brand tint
|
|
11
|
+
* when the menu is the one holding it.
|
|
12
|
+
* @default undefined
|
|
13
|
+
*/
|
|
14
|
+
activeId?: string;
|
|
15
|
+
/**
|
|
16
|
+
* Glyph before the label.
|
|
17
|
+
* @default undefined
|
|
18
|
+
*/
|
|
19
|
+
icon?: IconName;
|
|
20
|
+
/**
|
|
21
|
+
* Side the menu opens on.
|
|
22
|
+
* @default 'bottom-start'
|
|
23
|
+
*/
|
|
24
|
+
placement?: PopoverNextProps['placement'];
|
|
25
|
+
/**
|
|
26
|
+
* What the menu adds under the pages — a divider and an action, typically.
|
|
27
|
+
* @default undefined
|
|
28
|
+
*/
|
|
29
|
+
children?: ReactNode;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* The pages that do not need a place of their own in the bar, folded into one
|
|
33
|
+
* menu. The trigger is dressed as a `nav-link`, so it reads as one of the
|
|
34
|
+
* entries beside it rather than as a button dropped among them.
|
|
35
|
+
* @param props - The label, the pages, the page on show, and how the menu
|
|
36
|
+
* opens.
|
|
37
|
+
* @returns The trigger and its menu.
|
|
38
|
+
*/
|
|
39
|
+
export declare function NavMenuButton(props: NavMenuButtonProps): ReactElement;
|
|
40
|
+
//# sourceMappingURL=NavMenuButton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NavMenuButton.d.ts","sourceRoot":"","sources":["../../../src/chrome/ui/NavMenuButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAEpE,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAErD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAG5C,MAAM,WAAW,kBAAkB;IACjC,uEAAuE;IACvE,KAAK,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB;;;OAGG;IACH,SAAS,CAAC,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAC1C;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,YAAY,CAmDrE"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Icon, Menu, MenuItem, PopoverNext } from '@blueprintjs/core';
|
|
3
|
+
import { isModifiedClick } from "./navItem.js";
|
|
4
|
+
/**
|
|
5
|
+
* The pages that do not need a place of their own in the bar, folded into one
|
|
6
|
+
* menu. The trigger is dressed as a `nav-link`, so it reads as one of the
|
|
7
|
+
* entries beside it rather than as a button dropped among them.
|
|
8
|
+
* @param props - The label, the pages, the page on show, and how the menu
|
|
9
|
+
* opens.
|
|
10
|
+
* @returns The trigger and its menu.
|
|
11
|
+
*/
|
|
12
|
+
export function NavMenuButton(props) {
|
|
13
|
+
const { label, items, activeId, icon, placement = 'bottom-start', children, } = props;
|
|
14
|
+
const holdsActive = items.some((item) => item.id === activeId);
|
|
15
|
+
return (_jsx(PopoverNext, { placement: placement, content: _jsxs(Menu, { className: "nav-menu", children: [items.map((item) => (_jsx(MenuItem, { icon: item.icon, text: item.label,
|
|
16
|
+
// A real address, so a crawler reaching the menu can follow it
|
|
17
|
+
// and a middle click opens a tab of its own.
|
|
18
|
+
href: item.href, target: item.external ? '_blank' : undefined, active: item.id === activeId, onClick: (event) => {
|
|
19
|
+
if (item.onSelect === undefined || isModifiedClick(event)) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
event.preventDefault();
|
|
23
|
+
item.onSelect();
|
|
24
|
+
} }, item.id))), children] }), children: _jsxs("button", { type: "button", className: holdsActive ? 'nav-link nav-link--active' : 'nav-link', "aria-label": label, children: [icon === undefined ? null : _jsx(Icon, { icon: icon, size: 14 }), label, _jsx(Icon, { icon: "caret-down", size: 14 })] }) }));
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=NavMenuButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NavMenuButton.js","sourceRoot":"","sources":["../../../src/chrome/ui/NavMenuButton.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAItE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AA8B/C;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,KAAyB;IACrD,MAAM,EACJ,KAAK,EACL,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,SAAS,GAAG,cAAc,EAC1B,QAAQ,GACT,GAAG,KAAK,CAAC;IAEV,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;IAE/D,OAAO,CACL,KAAC,WAAW,IACV,SAAS,EAAE,SAAS,EACpB,OAAO,EACL,MAAC,IAAI,IAAC,SAAS,EAAC,UAAU,aACvB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACnB,KAAC,QAAQ,IAEP,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,IAAI,EAAE,IAAI,CAAC,KAAK;oBAChB,+DAA+D;oBAC/D,6CAA6C;oBAC7C,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAC5C,MAAM,EAAE,IAAI,CAAC,EAAE,KAAK,QAAQ,EAC5B,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;wBACjB,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;4BAC1D,OAAO;wBACT,CAAC;wBACD,KAAK,CAAC,cAAc,EAAE,CAAC;wBACvB,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClB,CAAC,IAdI,IAAI,CAAC,EAAE,CAeZ,CACH,CAAC,EACD,QAAQ,IACJ,YAGT,kBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,UAAU,gBACrD,KAAK,aAEhB,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,GAAI,EAC1D,KAAK,EACN,KAAC,IAAI,IAAC,IAAI,EAAC,YAAY,EAAC,IAAI,EAAE,EAAE,GAAI,IAC7B,GACG,CACf,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { ReactElement, ReactNode } from 'react';
|
|
2
|
+
import type { SiteId } from '../../ecosystem/core/sites.ts';
|
|
3
|
+
export interface SiteFooterProps {
|
|
4
|
+
/** The site the footer sits on, which is written but never linked. */
|
|
5
|
+
siteId: SiteId;
|
|
6
|
+
/**
|
|
7
|
+
* How much of each sibling site is written. `grid` gives every one its mark,
|
|
8
|
+
* its name and the line saying what it does; `row` writes the names only.
|
|
9
|
+
* @default 'grid'
|
|
10
|
+
*/
|
|
11
|
+
layout?: 'grid' | 'row';
|
|
12
|
+
/**
|
|
13
|
+
* What introduces the family.
|
|
14
|
+
* @default undefined
|
|
15
|
+
*/
|
|
16
|
+
heading?: string;
|
|
17
|
+
/**
|
|
18
|
+
* Whether the page is framed in another site, in which case no footer is
|
|
19
|
+
* drawn at all.
|
|
20
|
+
* @default false
|
|
21
|
+
*/
|
|
22
|
+
embedded?: boolean;
|
|
23
|
+
/**
|
|
24
|
+
* What the site adds under the family — a licence line, a version, a link to
|
|
25
|
+
* the sources.
|
|
26
|
+
* @default undefined
|
|
27
|
+
*/
|
|
28
|
+
children?: ReactNode;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* The strip under every page of the family: each sibling site as a plain link,
|
|
32
|
+
* so a crawler — and a reader with no patience for menus — walks from one of
|
|
33
|
+
* our tools to the next. It carries `no-print`, because it is chrome.
|
|
34
|
+
* @param props - The site it sits on, how much of each sibling is written, and
|
|
35
|
+
* whatever the site adds below.
|
|
36
|
+
* @returns The footer, or nothing at all on an embedded page.
|
|
37
|
+
*/
|
|
38
|
+
export declare function SiteFooter(props: SiteFooterProps): ReactElement | null;
|
|
39
|
+
//# sourceMappingURL=SiteFooter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SiteFooter.d.ts","sourceRoot":"","sources":["../../../src/chrome/ui/SiteFooter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAErD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAG5D,MAAM,WAAW,eAAe;IAC9B,sEAAsE;IACtE,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACxB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,YAAY,GAAG,IAAI,CAuBtE"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { EcosystemLinks } from "../../ecosystem/ui/EcosystemLinks.js";
|
|
3
|
+
/**
|
|
4
|
+
* The strip under every page of the family: each sibling site as a plain link,
|
|
5
|
+
* so a crawler — and a reader with no patience for menus — walks from one of
|
|
6
|
+
* our tools to the next. It carries `no-print`, because it is chrome.
|
|
7
|
+
* @param props - The site it sits on, how much of each sibling is written, and
|
|
8
|
+
* whatever the site adds below.
|
|
9
|
+
* @returns The footer, or nothing at all on an embedded page.
|
|
10
|
+
*/
|
|
11
|
+
export function SiteFooter(props) {
|
|
12
|
+
const { siteId, layout = 'grid', heading, embedded = false, children, } = props;
|
|
13
|
+
if (embedded)
|
|
14
|
+
return null;
|
|
15
|
+
return (_jsx("footer", { className: "app-footer no-print", children: _jsxs("div", { className: "app-footer__inner", children: [_jsx(EcosystemLinks, { currentSiteId: siteId, layout: layout, heading: heading }), children] }) }));
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=SiteFooter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SiteFooter.js","sourceRoot":"","sources":["../../../src/chrome/ui/SiteFooter.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAuC,CAAC;AA8BvE;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CAAC,KAAsB;IAC/C,MAAM,EACJ,MAAM,EACN,MAAM,GAAG,MAAM,EACf,OAAO,EACP,QAAQ,GAAG,KAAK,EAChB,QAAQ,GACT,GAAG,KAAK,CAAC;IAEV,IAAI,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE1B,OAAO,CACL,iBAAQ,SAAS,EAAC,qBAAqB,YACrC,eAAK,SAAS,EAAC,mBAAmB,aAChC,KAAC,cAAc,IACb,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,GAChB,EACD,QAAQ,IACL,GACC,CACV,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { ReactElement, ReactNode } from 'react';
|
|
2
|
+
import type { SiteId } from '../../ecosystem/core/sites.ts';
|
|
3
|
+
import type { NavItem } from './navItem.ts';
|
|
4
|
+
export interface SiteHeaderProps {
|
|
5
|
+
/** The site the bar belongs to, which draws its mark and writes its name. */
|
|
6
|
+
siteId: SiteId;
|
|
7
|
+
/** The pages, in the order the bar lists them. */
|
|
8
|
+
nav: readonly NavItem[];
|
|
9
|
+
/**
|
|
10
|
+
* Which of the pages is on show, named by its `id`.
|
|
11
|
+
* @default undefined
|
|
12
|
+
*/
|
|
13
|
+
activeId?: string;
|
|
14
|
+
/**
|
|
15
|
+
* The utilities pushed to the right edge — Cite, Tools, Share, sign in. They
|
|
16
|
+
* arrive dressed as bar items, so a plain `nav-link` and a `CiteButton` read
|
|
17
|
+
* alike beside each other.
|
|
18
|
+
* @default undefined
|
|
19
|
+
*/
|
|
20
|
+
actions?: ReactNode;
|
|
21
|
+
/**
|
|
22
|
+
* Draws one page the site's own way, for a bar whose entries need a tooltip
|
|
23
|
+
* or a wrapper of their own.
|
|
24
|
+
* @default undefined
|
|
25
|
+
*/
|
|
26
|
+
renderNavItem?: (item: NavItem, isActive: boolean) => ReactNode;
|
|
27
|
+
/**
|
|
28
|
+
* Whether the page is framed in another site, in which case no bar is drawn
|
|
29
|
+
* at all — what a host page frames already carries its own navigation.
|
|
30
|
+
* @default false
|
|
31
|
+
*/
|
|
32
|
+
embedded?: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Where the brand leads.
|
|
35
|
+
* @default '/'
|
|
36
|
+
*/
|
|
37
|
+
homeHref?: string;
|
|
38
|
+
/**
|
|
39
|
+
* What the site does when the brand is picked, for a page that routes in
|
|
40
|
+
* place. A modified click is left to the browser.
|
|
41
|
+
* @default undefined
|
|
42
|
+
*/
|
|
43
|
+
onHome?: () => void;
|
|
44
|
+
/**
|
|
45
|
+
* Edge of the site's mark, in pixels.
|
|
46
|
+
* @default 28
|
|
47
|
+
*/
|
|
48
|
+
markSize?: number;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* The bar every site of the family carries: the brand linking home at the left,
|
|
52
|
+
* the pages next to it, and the utilities pushed to the right edge by the
|
|
53
|
+
* spacer.
|
|
54
|
+
* @param props - The site, its pages, its utilities, and whether the page is
|
|
55
|
+
* framed in another site.
|
|
56
|
+
* @returns The bar, or nothing at all on an embedded page.
|
|
57
|
+
*/
|
|
58
|
+
export declare function SiteHeader(props: SiteHeaderProps): ReactElement | null;
|
|
59
|
+
//# sourceMappingURL=SiteHeader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SiteHeader.d.ts","sourceRoot":"","sources":["../../../src/chrome/ui/SiteHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIrD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAK5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAG5C,MAAM,WAAW,eAAe;IAC9B,6EAA6E;IAC7E,MAAM,EAAE,MAAM,CAAC;IACf,kDAAkD;IAClD,GAAG,EAAE,SAAS,OAAO,EAAE,CAAC;IACxB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,KAAK,SAAS,CAAC;IAChE;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,YAAY,GAAG,IAAI,CAmDtE"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Fragment } from 'react';
|
|
3
|
+
import { siteById } from "../../ecosystem/core/lookup.js";
|
|
4
|
+
import { Wordmark } from "../../ecosystem/ui/Wordmark.js";
|
|
5
|
+
import { SiteMark } from "../../ecosystem/ui/marks.js";
|
|
6
|
+
import { NavLink } from "./NavLink.js";
|
|
7
|
+
import { isModifiedClick } from "./navItem.js";
|
|
8
|
+
/**
|
|
9
|
+
* The bar every site of the family carries: the brand linking home at the left,
|
|
10
|
+
* the pages next to it, and the utilities pushed to the right edge by the
|
|
11
|
+
* spacer.
|
|
12
|
+
* @param props - The site, its pages, its utilities, and whether the page is
|
|
13
|
+
* framed in another site.
|
|
14
|
+
* @returns The bar, or nothing at all on an embedded page.
|
|
15
|
+
*/
|
|
16
|
+
export function SiteHeader(props) {
|
|
17
|
+
const { siteId, nav, activeId, actions, renderNavItem, embedded = false, homeHref = '/', onHome, markSize = 28, } = props;
|
|
18
|
+
if (embedded)
|
|
19
|
+
return null;
|
|
20
|
+
const site = siteById(siteId);
|
|
21
|
+
return (_jsx("header", { className: "app-header no-print", children: _jsxs("div", { className: "app-header__inner", children: [_jsxs("a", { className: "brand", href: homeHref, title: site.host, onClick: (event) => {
|
|
22
|
+
if (onHome === undefined || isModifiedClick(event))
|
|
23
|
+
return;
|
|
24
|
+
event.preventDefault();
|
|
25
|
+
onHome();
|
|
26
|
+
}, children: [_jsx(SiteMark, { siteId: siteId, size: markSize }), _jsx(Wordmark, { siteId: siteId })] }), _jsx("nav", { className: "app-header-nav", children: nav.map((item) => (_jsx(Fragment, { children: renderNavItem === undefined ? (_jsx(NavLink, { item: item, active: item.id === activeId })) : (renderNavItem(item, item.id === activeId)) }, item.id))) }), _jsx("span", { className: "spacer" }), actions === undefined ? null : (_jsx("div", { className: "app-header-actions", children: actions }))] }) }));
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=SiteHeader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SiteHeader.js","sourceRoot":"","sources":["../../../src/chrome/ui/SiteHeader.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAE1D,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAiC,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA8B,CAAC;AAExD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAe,CAAC;AAExC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAiD/C;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CAAC,KAAsB;IAC/C,MAAM,EACJ,MAAM,EACN,GAAG,EACH,QAAQ,EACR,OAAO,EACP,aAAa,EACb,QAAQ,GAAG,KAAK,EAChB,QAAQ,GAAG,GAAG,EACd,MAAM,EACN,QAAQ,GAAG,EAAE,GACd,GAAG,KAAK,CAAC;IAEV,IAAI,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE1B,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE9B,OAAO,CACL,iBAAQ,SAAS,EAAC,qBAAqB,YACrC,eAAK,SAAS,EAAC,mBAAmB,aAChC,aACE,SAAS,EAAC,OAAO,EACjB,IAAI,EAAE,QAAQ,EACd,KAAK,EAAE,IAAI,CAAC,IAAI,EAChB,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;wBACjB,IAAI,MAAM,KAAK,SAAS,IAAI,eAAe,CAAC,KAAK,CAAC;4BAAE,OAAO;wBAC3D,KAAK,CAAC,cAAc,EAAE,CAAC;wBACvB,MAAM,EAAE,CAAC;oBACX,CAAC,aAED,KAAC,QAAQ,IAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAI,EAC5C,KAAC,QAAQ,IAAC,MAAM,EAAE,MAAM,GAAI,IAC1B,EACJ,cAAK,SAAS,EAAC,gBAAgB,YAC5B,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACjB,KAAC,QAAQ,cACN,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,CAC7B,KAAC,OAAO,IAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,KAAK,QAAQ,GAAI,CACtD,CAAC,CAAC,CAAC,CACF,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,KAAK,QAAQ,CAAC,CAC1C,IALY,IAAI,CAAC,EAAE,CAMX,CACZ,CAAC,GACE,EACN,eAAM,SAAS,EAAC,QAAQ,GAAG,EAC1B,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC9B,cAAK,SAAS,EAAC,oBAAoB,YAAE,OAAO,GAAO,CACpD,IACG,GACC,CACV,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type { NavItem } from './navItem.ts';
|
|
2
|
+
export type { NavLinkProps } from './NavLink.tsx';
|
|
3
|
+
export { NavLink } from './NavLink.tsx';
|
|
4
|
+
export type { NavMenuButtonProps } from './NavMenuButton.tsx';
|
|
5
|
+
export { NavMenuButton } from './NavMenuButton.tsx';
|
|
6
|
+
export type { SiteFooterProps } from './SiteFooter.tsx';
|
|
7
|
+
export { SiteFooter } from './SiteFooter.tsx';
|
|
8
|
+
export type { SiteHeaderProps } from './SiteHeader.tsx';
|
|
9
|
+
export { SiteHeader } from './SiteHeader.tsx';
|
|
10
|
+
export type { UseCompactHeaderOptions } from './useCompactHeader.ts';
|
|
11
|
+
export { useCompactHeader } from './useCompactHeader.ts';
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/chrome/ui/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,YAAY,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
|