react-cheminfo 0.37.0 → 0.39.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 +77 -1
- package/bin/check-seo.mjs +43 -1
- package/lib/chart/ui/Axes.d.ts +19 -0
- package/lib/chart/ui/Axes.d.ts.map +1 -1
- package/lib/chart/ui/Axes.js +25 -5
- package/lib/chart/ui/Axes.js.map +1 -1
- package/lib/chrome/ui/NavMenuButton.d.ts.map +1 -1
- package/lib/chrome/ui/NavMenuButton.js +41 -11
- package/lib/chrome/ui/NavMenuButton.js.map +1 -1
- package/lib/chrome/ui/SiteHeader.js +24 -1
- package/lib/chrome/ui/SiteHeader.js.map +1 -1
- package/lib/chrome/ui/navItem.d.ts +7 -0
- package/lib/chrome/ui/navItem.d.ts.map +1 -1
- package/lib/chrome/ui/navItem.js.map +1 -1
- package/lib/citation/ui/entries.d.ts.map +1 -1
- package/lib/citation/ui/entries.js +6 -1
- package/lib/citation/ui/entries.js.map +1 -1
- package/lib/clipboard/ui/ClickToCopy.d.ts +11 -0
- package/lib/clipboard/ui/ClickToCopy.d.ts.map +1 -1
- package/lib/clipboard/ui/ClickToCopy.js +28 -10
- package/lib/clipboard/ui/ClickToCopy.js.map +1 -1
- package/lib/clipboard/ui/CopyButton.d.ts +2 -1
- package/lib/clipboard/ui/CopyButton.d.ts.map +1 -1
- package/lib/clipboard/ui/CopyButton.js +2 -1
- package/lib/clipboard/ui/CopyButton.js.map +1 -1
- package/lib/clipboard/ui/CopyableValue.d.ts +24 -4
- package/lib/clipboard/ui/CopyableValue.d.ts.map +1 -1
- package/lib/clipboard/ui/CopyableValue.js +35 -3
- package/lib/clipboard/ui/CopyableValue.js.map +1 -1
- package/lib/clipboard/ui/index.d.ts +1 -1
- package/lib/clipboard/ui/index.d.ts.map +1 -1
- package/lib/clipboard/ui/index.js.map +1 -1
- package/lib/confirm/ui/ConfirmButton.d.ts.map +1 -1
- package/lib/confirm/ui/ConfirmButton.js +2 -1
- package/lib/confirm/ui/ConfirmButton.js.map +1 -1
- package/lib/core.d.ts +1 -0
- package/lib/core.d.ts.map +1 -1
- package/lib/core.js +1 -0
- package/lib/core.js.map +1 -1
- package/lib/delimited/ui/TableDataButton.d.ts.map +1 -1
- package/lib/delimited/ui/TableDataButton.js +2 -1
- package/lib/delimited/ui/TableDataButton.js.map +1 -1
- package/lib/download/core/figureSvg.d.ts.map +1 -1
- package/lib/download/core/figureSvg.js +37 -12
- package/lib/download/core/figureSvg.js.map +1 -1
- package/lib/help/ui/HelpToolbarButton.d.ts.map +1 -1
- package/lib/help/ui/HelpToolbarButton.js +2 -1
- package/lib/help/ui/HelpToolbarButton.js.map +1 -1
- package/lib/i18n/core/chromeCatalog.d.ts +1 -1
- package/lib/i18n/core/chromeCatalog.d.ts.map +1 -1
- package/lib/locales/de.json +48 -5
- package/lib/locales/en.json +48 -5
- package/lib/locales/es.json +48 -5
- package/lib/locales/fr.json +48 -5
- package/lib/locales/it.json +48 -5
- package/lib/number/core/index.d.ts +1 -1
- package/lib/number/core/index.d.ts.map +1 -1
- package/lib/number/core/index.js +1 -1
- package/lib/number/core/index.js.map +1 -1
- package/lib/number/core/numberText.d.ts +13 -0
- package/lib/number/core/numberText.d.ts.map +1 -1
- package/lib/number/core/numberText.js +20 -0
- package/lib/number/core/numberText.js.map +1 -1
- package/lib/number/ui/NumberInput.js +1 -1
- package/lib/number/ui/NumberInput.js.map +1 -1
- package/lib/overlay/ui/OverlayIconButton.d.ts.map +1 -1
- package/lib/overlay/ui/OverlayIconButton.js +1 -1
- package/lib/overlay/ui/OverlayIconButton.js.map +1 -1
- package/lib/panel/ui/ClearButton.d.ts.map +1 -1
- package/lib/panel/ui/ClearButton.js +1 -1
- package/lib/panel/ui/ClearButton.js.map +1 -1
- package/lib/pedagogy/core/inlineMarks.d.ts +9 -5
- package/lib/pedagogy/core/inlineMarks.d.ts.map +1 -1
- package/lib/pedagogy/core/inlineMarks.js +14 -6
- package/lib/pedagogy/core/inlineMarks.js.map +1 -1
- package/lib/pedagogy/ui/GlossaryDefinition.d.ts +4 -10
- package/lib/pedagogy/ui/GlossaryDefinition.d.ts.map +1 -1
- package/lib/pedagogy/ui/GlossaryDefinition.js +7 -7
- package/lib/pedagogy/ui/GlossaryDefinition.js.map +1 -1
- package/lib/pedagogy/ui/GlossaryIndex.d.ts.map +1 -1
- package/lib/pedagogy/ui/GlossaryIndex.js +1 -1
- package/lib/pedagogy/ui/GlossaryIndex.js.map +1 -1
- package/lib/pedagogy/ui/GlossaryProvider.d.ts +7 -0
- package/lib/pedagogy/ui/GlossaryProvider.d.ts.map +1 -1
- package/lib/pedagogy/ui/GlossaryProvider.js +3 -2
- package/lib/pedagogy/ui/GlossaryProvider.js.map +1 -1
- package/lib/pedagogy/ui/GlossaryText.d.ts +7 -2
- package/lib/pedagogy/ui/GlossaryText.d.ts.map +1 -1
- package/lib/pedagogy/ui/GlossaryText.js +3 -2
- package/lib/pedagogy/ui/GlossaryText.js.map +1 -1
- package/lib/pedagogy/ui/InlineText.d.ts +8 -2
- package/lib/pedagogy/ui/InlineText.d.ts.map +1 -1
- package/lib/pedagogy/ui/InlineText.js +7 -2
- package/lib/pedagogy/ui/InlineText.js.map +1 -1
- package/lib/pedagogy/ui/ReferenceSectionBlock.d.ts +4 -1
- package/lib/pedagogy/ui/ReferenceSectionBlock.d.ts.map +1 -1
- package/lib/pedagogy/ui/ReferenceSectionBlock.js +2 -1
- package/lib/pedagogy/ui/ReferenceSectionBlock.js.map +1 -1
- package/lib/pedagogy/ui/SyntaxTooltip.d.ts.map +1 -1
- package/lib/pedagogy/ui/SyntaxTooltip.js +11 -10
- package/lib/pedagogy/ui/SyntaxTooltip.js.map +1 -1
- package/lib/pedagogy/ui/TutorialStepStrip.d.ts.map +1 -1
- package/lib/pedagogy/ui/TutorialStepStrip.js +18 -4
- package/lib/pedagogy/ui/TutorialStepStrip.js.map +1 -1
- package/lib/pedagogy/ui/glossaryContext.d.ts +7 -0
- package/lib/pedagogy/ui/glossaryContext.d.ts.map +1 -1
- package/lib/pedagogy/ui/glossaryContext.js.map +1 -1
- package/lib/pedagogy/ui/index.d.ts +1 -1
- package/lib/pedagogy/ui/index.d.ts.map +1 -1
- package/lib/pedagogy/ui/inlineSegments.d.ts +5 -0
- package/lib/pedagogy/ui/inlineSegments.d.ts.map +1 -1
- package/lib/pedagogy/ui/inlineSegments.js +2 -0
- package/lib/pedagogy/ui/inlineSegments.js.map +1 -1
- package/lib/pedagogy/ui/pedagogyStyle.d.ts +8 -9
- package/lib/pedagogy/ui/pedagogyStyle.d.ts.map +1 -1
- package/lib/pedagogy/ui/pedagogyStyle.js +10 -18
- package/lib/pedagogy/ui/pedagogyStyle.js.map +1 -1
- package/lib/range/core/index.d.ts +4 -0
- package/lib/range/core/index.d.ts.map +1 -0
- package/lib/range/core/index.js +3 -0
- package/lib/range/core/index.js.map +1 -0
- package/lib/range/core/rangeBounds.d.ts +79 -0
- package/lib/range/core/rangeBounds.d.ts.map +1 -0
- package/lib/range/core/rangeBounds.js +110 -0
- package/lib/range/core/rangeBounds.js.map +1 -0
- package/lib/range/core/rangeHistogram.d.ts +13 -0
- package/lib/range/core/rangeHistogram.d.ts.map +1 -0
- package/lib/range/core/rangeHistogram.js +39 -0
- package/lib/range/core/rangeHistogram.js.map +1 -0
- package/lib/range/ui/RangeHistogram.d.ts +20 -0
- package/lib/range/ui/RangeHistogram.d.ts.map +1 -0
- package/lib/range/ui/RangeHistogram.js +18 -0
- package/lib/range/ui/RangeHistogram.js.map +1 -0
- package/lib/range/ui/RangeSlider.d.ts +77 -0
- package/lib/range/ui/RangeSlider.d.ts.map +1 -0
- package/lib/range/ui/RangeSlider.js +60 -0
- package/lib/range/ui/RangeSlider.js.map +1 -0
- package/lib/range/ui/RangeValue.d.ts +41 -0
- package/lib/range/ui/RangeValue.d.ts.map +1 -0
- package/lib/range/ui/RangeValue.js +73 -0
- package/lib/range/ui/RangeValue.js.map +1 -0
- package/lib/range/ui/index.d.ts +3 -0
- package/lib/range/ui/index.d.ts.map +1 -0
- package/lib/range/ui/index.js +2 -0
- package/lib/range/ui/index.js.map +1 -0
- package/lib/seo/core/documentMeta.d.ts +16 -0
- package/lib/seo/core/documentMeta.d.ts.map +1 -1
- package/lib/seo/core/documentMeta.js +18 -0
- package/lib/seo/core/documentMeta.js.map +1 -1
- package/lib/seo/core/index.d.ts +3 -1
- package/lib/seo/core/index.d.ts.map +1 -1
- package/lib/seo/core/index.js +2 -1
- package/lib/seo/core/index.js.map +1 -1
- package/lib/seo/core/noscript.d.ts +8 -0
- package/lib/seo/core/noscript.d.ts.map +1 -1
- package/lib/seo/core/noscript.js +10 -3
- package/lib/seo/core/noscript.js.map +1 -1
- package/lib/seo/core/pageMeta.d.ts +10 -2
- package/lib/seo/core/pageMeta.d.ts.map +1 -1
- package/lib/seo/core/pageMeta.js +12 -3
- package/lib/seo/core/pageMeta.js.map +1 -1
- package/lib/seo/core/plainDescription.d.ts +2 -2
- package/lib/seo/core/plainDescription.js +5 -2
- package/lib/seo/core/plainDescription.js.map +1 -1
- package/lib/seo/core/siteFiles.d.ts +32 -3
- package/lib/seo/core/siteFiles.d.ts.map +1 -1
- package/lib/seo/core/siteFiles.js +13 -4
- package/lib/seo/core/siteFiles.js.map +1 -1
- package/lib/seo/core/startDocumentMeta.js +8 -7
- package/lib/seo/core/startDocumentMeta.js.map +1 -1
- package/lib/seo/vite/prerender.d.ts +26 -4
- package/lib/seo/vite/prerender.d.ts.map +1 -1
- package/lib/seo/vite/prerender.js +100 -30
- package/lib/seo/vite/prerender.js.map +1 -1
- package/lib/share/core/devices.d.ts +41 -0
- package/lib/share/core/devices.d.ts.map +1 -0
- package/lib/share/core/devices.js +58 -0
- package/lib/share/core/devices.js.map +1 -0
- package/lib/share/core/index.d.ts +4 -0
- package/lib/share/core/index.d.ts.map +1 -1
- package/lib/share/core/index.js +2 -0
- package/lib/share/core/index.js.map +1 -1
- package/lib/share/core/regions.d.ts +43 -0
- package/lib/share/core/regions.d.ts.map +1 -0
- package/lib/share/core/regions.js +71 -0
- package/lib/share/core/regions.js.map +1 -0
- package/lib/share/ui/HiddenPartsProvider.d.ts.map +1 -1
- package/lib/share/ui/HiddenPartsProvider.js +4 -1
- package/lib/share/ui/HiddenPartsProvider.js.map +1 -1
- package/lib/share/ui/PagePart.d.ts.map +1 -1
- package/lib/share/ui/PagePart.js +10 -1
- package/lib/share/ui/PagePart.js.map +1 -1
- package/lib/share/ui/ShareButton.d.ts.map +1 -1
- package/lib/share/ui/ShareButton.js +3 -4
- package/lib/share/ui/ShareButton.js.map +1 -1
- package/lib/share/ui/ShareConfigOptions.d.ts +6 -1
- package/lib/share/ui/ShareConfigOptions.d.ts.map +1 -1
- package/lib/share/ui/ShareConfigOptions.js +6 -13
- package/lib/share/ui/ShareConfigOptions.js.map +1 -1
- package/lib/share/ui/ShareDialog.d.ts +14 -0
- package/lib/share/ui/ShareDialog.d.ts.map +1 -1
- package/lib/share/ui/ShareDialog.js +3 -3
- package/lib/share/ui/ShareDialog.js.map +1 -1
- package/lib/share/ui/ShareDialogContent.d.ts +2 -2
- package/lib/share/ui/ShareDialogContent.d.ts.map +1 -1
- package/lib/share/ui/ShareDialogContent.js +36 -30
- package/lib/share/ui/ShareDialogContent.js.map +1 -1
- package/lib/share/ui/ShareLinkBar.d.ts +21 -0
- package/lib/share/ui/ShareLinkBar.d.ts.map +1 -0
- package/lib/share/ui/ShareLinkBar.js +32 -0
- package/lib/share/ui/ShareLinkBar.js.map +1 -0
- package/lib/share/ui/SharePanes.d.ts +17 -0
- package/lib/share/ui/SharePanes.d.ts.map +1 -0
- package/lib/share/ui/SharePanes.js +27 -0
- package/lib/share/ui/SharePanes.js.map +1 -0
- package/lib/share/ui/SharePartOptions.d.ts +9 -3
- package/lib/share/ui/SharePartOptions.d.ts.map +1 -1
- package/lib/share/ui/SharePartOptions.js +12 -16
- package/lib/share/ui/SharePartOptions.js.map +1 -1
- package/lib/share/ui/SharePartRow.d.ts +37 -0
- package/lib/share/ui/SharePartRow.d.ts.map +1 -0
- package/lib/share/ui/SharePartRow.js +25 -0
- package/lib/share/ui/SharePartRow.js.map +1 -0
- package/lib/share/ui/SharePresetTabs.d.ts +10 -7
- package/lib/share/ui/SharePresetTabs.d.ts.map +1 -1
- package/lib/share/ui/SharePresetTabs.js +17 -17
- package/lib/share/ui/SharePresetTabs.js.map +1 -1
- package/lib/share/ui/SharePreview.d.ts +32 -0
- package/lib/share/ui/SharePreview.d.ts.map +1 -0
- package/lib/share/ui/SharePreview.js +104 -0
- package/lib/share/ui/SharePreview.js.map +1 -0
- package/lib/share/ui/SharePreviewDevices.d.ts +20 -0
- package/lib/share/ui/SharePreviewDevices.d.ts.map +1 -0
- package/lib/share/ui/SharePreviewDevices.js +40 -0
- package/lib/share/ui/SharePreviewDevices.js.map +1 -0
- package/lib/share/ui/index.d.ts +1 -0
- package/lib/share/ui/index.d.ts.map +1 -1
- package/lib/share/ui/index.js.map +1 -1
- package/lib/share/ui/shareMarking.d.ts +14 -0
- package/lib/share/ui/shareMarking.d.ts.map +1 -0
- package/lib/share/ui/shareMarking.js +17 -0
- package/lib/share/ui/shareMarking.js.map +1 -0
- package/lib/share/ui/useShareRegionReports.d.ts +12 -0
- package/lib/share/ui/useShareRegionReports.d.ts.map +1 -0
- package/lib/share/ui/useShareRegionReports.js +73 -0
- package/lib/share/ui/useShareRegionReports.js.map +1 -0
- package/lib/shared/ui/ActionTooltip.d.ts +42 -0
- package/lib/shared/ui/ActionTooltip.d.ts.map +1 -0
- package/lib/shared/ui/ActionTooltip.js +21 -0
- package/lib/shared/ui/ActionTooltip.js.map +1 -0
- package/lib/shared/ui/index.d.ts +4 -0
- package/lib/shared/ui/index.d.ts.map +1 -1
- package/lib/shared/ui/index.js +2 -0
- package/lib/shared/ui/index.js.map +1 -1
- package/lib/shared/ui/useActionTooltip.d.ts +48 -0
- package/lib/shared/ui/useActionTooltip.d.ts.map +1 -0
- package/lib/shared/ui/useActionTooltip.js +78 -0
- package/lib/shared/ui/useActionTooltip.js.map +1 -0
- package/lib/structure/core/index.d.ts +2 -0
- package/lib/structure/core/index.d.ts.map +1 -1
- package/lib/structure/core/index.js +1 -0
- package/lib/structure/core/index.js.map +1 -1
- package/lib/structure/core/sourceMolecule.d.ts +18 -0
- package/lib/structure/core/sourceMolecule.d.ts.map +1 -0
- package/lib/structure/core/sourceMolecule.js +26 -0
- package/lib/structure/core/sourceMolecule.js.map +1 -0
- package/lib/structure/core/structureNotations.d.ts +57 -0
- package/lib/structure/core/structureNotations.d.ts.map +1 -0
- package/lib/structure/core/structureNotations.js +74 -0
- package/lib/structure/core/structureNotations.js.map +1 -0
- package/lib/structure/core/structurePicture.d.ts +49 -0
- package/lib/structure/core/structurePicture.d.ts.map +1 -0
- package/lib/structure/core/structurePicture.js +83 -0
- package/lib/structure/core/structurePicture.js.map +1 -0
- package/lib/structure/ui/EditorExportButton.d.ts +23 -0
- package/lib/structure/ui/EditorExportButton.d.ts.map +1 -0
- package/lib/structure/ui/EditorExportButton.js +23 -0
- package/lib/structure/ui/EditorExportButton.js.map +1 -0
- package/lib/structure/ui/EditorHelpButton.d.ts +5 -2
- package/lib/structure/ui/EditorHelpButton.d.ts.map +1 -1
- package/lib/structure/ui/EditorHelpButton.js +8 -9
- package/lib/structure/ui/EditorHelpButton.js.map +1 -1
- package/lib/structure/ui/StructureEditor.d.ts +8 -0
- package/lib/structure/ui/StructureEditor.d.ts.map +1 -1
- package/lib/structure/ui/StructureEditor.js +26 -3
- package/lib/structure/ui/StructureEditor.js.map +1 -1
- package/lib/structure/ui/StructureExportDialog.d.ts +34 -0
- package/lib/structure/ui/StructureExportDialog.d.ts.map +1 -0
- package/lib/structure/ui/StructureExportDialog.js +43 -0
- package/lib/structure/ui/StructureExportDialog.js.map +1 -0
- package/lib/structure/ui/StructureExportPanel.d.ts +37 -0
- package/lib/structure/ui/StructureExportPanel.d.ts.map +1 -0
- package/lib/structure/ui/StructureExportPanel.js +75 -0
- package/lib/structure/ui/StructureExportPanel.js.map +1 -0
- package/lib/structure/ui/StructureNotationRow.d.ts +22 -0
- package/lib/structure/ui/StructureNotationRow.d.ts.map +1 -0
- package/lib/structure/ui/StructureNotationRow.js +34 -0
- package/lib/structure/ui/StructureNotationRow.js.map +1 -0
- package/lib/structure/ui/StructurePicturePane.d.ts +23 -0
- package/lib/structure/ui/StructurePicturePane.d.ts.map +1 -0
- package/lib/structure/ui/StructurePicturePane.js +113 -0
- package/lib/structure/ui/StructurePicturePane.js.map +1 -0
- package/lib/structure/ui/StructureSvg.d.ts.map +1 -1
- package/lib/structure/ui/StructureSvg.js +2 -18
- package/lib/structure/ui/StructureSvg.js.map +1 -1
- package/lib/structure/ui/ToolbarTooltip.d.ts.map +1 -1
- package/lib/structure/ui/ToolbarTooltip.js +1 -2
- package/lib/structure/ui/ToolbarTooltip.js.map +1 -1
- package/lib/structure/ui/index.d.ts +7 -3
- package/lib/structure/ui/index.d.ts.map +1 -1
- package/lib/structure/ui/index.js +5 -3
- package/lib/structure/ui/index.js.map +1 -1
- package/lib/structure/ui/structureNotationText.d.ts +23 -0
- package/lib/structure/ui/structureNotationText.d.ts.map +1 -0
- package/lib/structure/ui/structureNotationText.js +42 -0
- package/lib/structure/ui/structureNotationText.js.map +1 -0
- package/lib/structure/ui/useEditorStructure.d.ts +37 -0
- package/lib/structure/ui/useEditorStructure.d.ts.map +1 -0
- package/lib/structure/ui/useEditorStructure.js +70 -0
- package/lib/structure/ui/useEditorStructure.js.map +1 -0
- package/lib/ui.d.ts +1 -0
- package/lib/ui.d.ts.map +1 -1
- package/lib/ui.js +1 -0
- package/lib/ui.js.map +1 -1
- package/package.json +1 -1
- package/src/chart/ui/Axes.tsx +53 -5
- package/src/chrome/ui/NavMenuButton.tsx +61 -18
- package/src/chrome/ui/SiteHeader.tsx +37 -1
- package/src/chrome/ui/navItem.ts +7 -0
- package/src/citation/ui/entries.tsx +10 -2
- package/src/clipboard/ui/ClickToCopy.tsx +47 -13
- package/src/clipboard/ui/CopyButton.tsx +4 -2
- package/src/clipboard/ui/CopyableValue.tsx +88 -13
- package/src/clipboard/ui/index.ts +5 -1
- package/src/confirm/ui/ConfirmButton.tsx +2 -0
- package/src/core.ts +1 -0
- package/src/delimited/ui/TableDataButton.tsx +2 -1
- package/src/download/core/figureSvg.ts +42 -10
- package/src/help/ui/HelpToolbarButton.tsx +2 -1
- package/src/locales/de.json +48 -5
- package/src/locales/en.json +48 -5
- package/src/locales/es.json +48 -5
- package/src/locales/fr.json +48 -5
- package/src/locales/it.json +48 -5
- package/src/number/core/index.ts +1 -0
- package/src/number/core/numberText.ts +20 -0
- package/src/number/ui/NumberInput.tsx +1 -1
- package/src/overlay/ui/OverlayIconButton.tsx +1 -0
- package/src/panel/ui/ClearButton.tsx +1 -0
- package/src/pedagogy/core/inlineMarks.ts +15 -7
- package/src/pedagogy/ui/GlossaryDefinition.tsx +8 -18
- package/src/pedagogy/ui/GlossaryIndex.tsx +0 -1
- package/src/pedagogy/ui/GlossaryProvider.tsx +10 -2
- package/src/pedagogy/ui/GlossaryText.tsx +10 -2
- package/src/pedagogy/ui/InlineText.tsx +21 -4
- package/src/pedagogy/ui/ReferenceSectionBlock.tsx +8 -2
- package/src/pedagogy/ui/SyntaxTooltip.tsx +11 -9
- package/src/pedagogy/ui/TutorialStepStrip.tsx +50 -18
- package/src/pedagogy/ui/glossaryContext.ts +7 -0
- package/src/pedagogy/ui/index.ts +1 -1
- package/src/pedagogy/ui/inlineSegments.tsx +7 -0
- package/src/pedagogy/ui/pedagogyStyle.ts +12 -24
- package/src/range/core/index.ts +11 -0
- package/src/range/core/rangeBounds.ts +143 -0
- package/src/range/core/rangeHistogram.ts +38 -0
- package/src/range/ui/RangeHistogram.tsx +49 -0
- package/src/range/ui/RangeSlider.tsx +209 -0
- package/src/range/ui/RangeValue.tsx +166 -0
- package/src/range/ui/index.ts +2 -0
- package/src/seo/core/documentMeta.ts +22 -0
- package/src/seo/core/index.ts +8 -1
- package/src/seo/core/noscript.ts +20 -2
- package/src/seo/core/pageMeta.ts +29 -5
- package/src/seo/core/plainDescription.ts +4 -2
- package/src/seo/core/siteFiles.ts +45 -10
- package/src/seo/core/startDocumentMeta.ts +9 -9
- package/src/seo/vite/prerender.ts +160 -36
- package/src/share/core/devices.ts +80 -0
- package/src/share/core/index.ts +14 -0
- package/src/share/core/regions.ts +87 -0
- package/src/share/ui/HiddenPartsProvider.tsx +6 -1
- package/src/share/ui/PagePart.tsx +12 -1
- package/src/share/ui/ShareButton.tsx +3 -6
- package/src/share/ui/ShareConfigOptions.tsx +25 -16
- package/src/share/ui/ShareDialog.tsx +17 -3
- package/src/share/ui/ShareDialogContent.tsx +80 -77
- package/src/share/ui/ShareLinkBar.tsx +70 -0
- package/src/share/ui/SharePanes.tsx +62 -0
- package/src/share/ui/SharePartOptions.tsx +25 -26
- package/src/share/ui/SharePartRow.tsx +78 -0
- package/src/share/ui/SharePresetTabs.tsx +36 -43
- package/src/share/ui/SharePreview.tsx +204 -0
- package/src/share/ui/SharePreviewDevices.tsx +70 -0
- package/src/share/ui/index.ts +1 -0
- package/src/share/ui/shareMarking.ts +18 -0
- package/src/share/ui/useShareRegionReports.ts +84 -0
- package/src/shared/ui/ActionTooltip.tsx +70 -0
- package/src/shared/ui/index.ts +7 -0
- package/src/shared/ui/useActionTooltip.ts +103 -0
- package/src/structure/core/index.ts +5 -0
- package/src/structure/core/sourceMolecule.ts +26 -0
- package/src/structure/core/structureNotations.ts +125 -0
- package/src/structure/core/structurePicture.ts +119 -0
- package/src/structure/ui/EditorExportButton.tsx +62 -0
- package/src/structure/ui/EditorHelpButton.tsx +26 -30
- package/src/structure/ui/StructureEditor.tsx +51 -5
- package/src/structure/ui/StructureExportDialog.tsx +90 -0
- package/src/structure/ui/StructureExportPanel.tsx +156 -0
- package/src/structure/ui/StructureNotationRow.tsx +74 -0
- package/src/structure/ui/StructurePicturePane.tsx +208 -0
- package/src/structure/ui/StructureSvg.tsx +3 -12
- package/src/structure/ui/ToolbarTooltip.tsx +1 -1
- package/src/structure/ui/index.ts +7 -3
- package/src/structure/ui/structureNotationText.ts +56 -0
- package/src/structure/ui/useEditorStructure.ts +119 -0
- package/src/ui.ts +1 -0
- package/styles/chrome.css +546 -11
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Button, Tag
|
|
2
|
+
import { Button, Tag } from '@blueprintjs/core';
|
|
3
3
|
import { clamp } from "../../format/core/clamp.js";
|
|
4
4
|
import { useChromeT } from "../../i18n/ui/useT.js";
|
|
5
|
+
import { ActionTooltip } from "../../shared/ui/ActionTooltip.js";
|
|
5
6
|
import { TOKEN } from "../../tokens/core/familyTokens.js";
|
|
6
7
|
import { LEVEL_ORDER } from "./exerciseMeta.js";
|
|
7
8
|
import { HOVER_OPEN_DELAY } from "./pedagogyStyle.js";
|
|
@@ -35,12 +36,25 @@ function LevelStrip(props) {
|
|
|
35
36
|
for (const position of positions) {
|
|
36
37
|
const step = steps[position];
|
|
37
38
|
const active = position === activeIndex;
|
|
38
|
-
buttons.push(_jsx(
|
|
39
|
-
onSelect(position);
|
|
40
|
-
}, children: position + 1 }) }, step.id ?? position));
|
|
39
|
+
buttons.push(_jsx(StepButton, { step: step, position: position, colours: colours, active: active, onSelect: onSelect }, step.id ?? position));
|
|
41
40
|
}
|
|
42
41
|
return (_jsxs("div", { style: { ...STRIP_STYLE, background: colours.background }, children: [_jsx("span", { style: LABEL_STYLE, children: label }), buttons] }));
|
|
43
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* One numbered step, naming itself on hover.
|
|
45
|
+
*
|
|
46
|
+
* The name is held by {@link ActionTooltip} rather than by Blueprint: pressing
|
|
47
|
+
* a number within the hover delay would otherwise open the card afterwards,
|
|
48
|
+
* over the step it has just walked away from.
|
|
49
|
+
* @param props - The step, where it sits, and what picking it does.
|
|
50
|
+
* @returns The button.
|
|
51
|
+
*/
|
|
52
|
+
function StepButton(props) {
|
|
53
|
+
const { step, position, colours, active, onSelect } = props;
|
|
54
|
+
return (_jsx(ActionTooltip, { content: step.title, delay: HOVER_OPEN_DELAY, placement: "bottom", children: _jsx("button", { type: "button", "aria-label": `Step ${position + 1}: ${step.title}`, "aria-current": active ? 'step' : undefined, style: numberStyle(colours, active), onClick: () => {
|
|
55
|
+
onSelect(position);
|
|
56
|
+
}, children: position + 1 }) }));
|
|
57
|
+
}
|
|
44
58
|
function positionsOfLevel(steps, level) {
|
|
45
59
|
const positions = [];
|
|
46
60
|
for (let index = 0; index < steps.length; index++) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TutorialStepStrip.js","sourceRoot":"","sources":["../../../src/pedagogy/ui/TutorialStepStrip.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"TutorialStepStrip.js","sourceRoot":"","sources":["../../../src/pedagogy/ui/TutorialStepStrip.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAmC,CAAC;AAClE,OAAO,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAC;AAG1D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAqD7D;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAA6B;IAC7D,MAAM,EACJ,KAAK,EACL,WAAW,EACX,QAAQ,EACR,WAAW,EACX,KAAK,GAAG,IAAI,EACZ,SAAS,EACT,SAAS,GACV,GAAG,KAAK,CAAC;IACV,MAAM,CAAC,GAAG,UAAU,EAAE,CAAC;IACvB,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAErD,OAAO,CACL,eAAK,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,aACzC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;gBACzB,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBACjD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO,IAAI,CAAC;gBACxC,OAAO,CACL,KAAC,UAAU,IAET,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,sBAAsB,CAAC,KAAK,CAAC,EACtC,KAAK,EAAE,WAAW,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,EACpC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,QAAQ,IANb,KAAK,CAOV,CACH,CAAC;YACJ,CAAC,CAAC,EAED,KAAK,IAAI,CACR,eAAK,KAAK,EAAE,WAAW,aACrB,KAAC,MAAM,IACL,IAAI,EAAC,OAAO,EACZ,IAAI,EAAC,cAAc,EACnB,IAAI,EAAE,CAAC,CAAC,mBAAmB,CAAC,EAC5B,QAAQ,EAAE,MAAM,KAAK,CAAC,EACtB,OAAO,EAAE,GAAG,EAAE;4BACZ,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;wBACvB,CAAC,GACD,EACF,KAAC,GAAG,IAAC,OAAO,QAAC,KAAK,kBACf,CAAC,CAAC,iBAAiB,EAAE;4BACpB,IAAI,EAAE,MAAM,GAAG,CAAC;4BAChB,KAAK,EAAE,KAAK,CAAC,MAAM;yBACpB,CAAC,GACE,EACN,KAAC,MAAM,IACL,IAAI,EAAC,OAAO,EACZ,OAAO,EAAC,eAAe,EACvB,IAAI,EAAE,CAAC,CAAC,eAAe,CAAC,EACxB,MAAM,EAAC,SAAS,EAChB,QAAQ,EAAE,MAAM,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EACpC,OAAO,EAAE,GAAG,EAAE;4BACZ,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;wBACvB,CAAC,GACD,EACD,SAAS,KAAK,SAAS,IAAI,CAC1B,eAAM,KAAK,EAAE,UAAU,YAAG,SAAS,GAAQ,CAC5C,IACG,CACP,IACG,CACP,CAAC;AACJ,CAAC;AAWD,SAAS,UAAU,CAAC,KAAsB;IACxC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAC1E,MAAM,OAAO,GAAgB,EAAE,CAAC;IAChC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAsB,CAAC;QAClD,MAAM,MAAM,GAAG,QAAQ,KAAK,WAAW,CAAC;QACxC,OAAO,CAAC,IAAI,CACV,KAAC,UAAU,IAET,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,IALb,IAAI,CAAC,EAAE,IAAI,QAAQ,CAMxB,CACH,CAAC;IACJ,CAAC;IAED,OAAO,CACL,eAAK,KAAK,EAAE,EAAE,GAAG,WAAW,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,aAC5D,eAAM,KAAK,EAAE,WAAW,YAAG,KAAK,GAAQ,EACvC,OAAO,IACJ,CACP,CAAC;AACJ,CAAC;AAUD;;;;;;;;GAQG;AACH,SAAS,UAAU,CAAC,KAAsB;IACxC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAE5D,OAAO,CACL,KAAC,aAAa,IACZ,OAAO,EAAE,IAAI,CAAC,KAAK,EACnB,KAAK,EAAE,gBAAgB,EACvB,SAAS,EAAC,QAAQ,YAElB,iBACE,IAAI,EAAC,QAAQ,gBACD,QAAQ,QAAQ,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,kBACnC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EACzC,KAAK,EAAE,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,EACnC,OAAO,EAAE,GAAG,EAAE;gBACZ,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACrB,CAAC,YAEA,QAAQ,GAAG,CAAC,GACN,GACK,CACjB,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CACvB,KAAmC,EACnC,KAAoB;IAEpB,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QAClD,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,KAAK;YAAE,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,UAAU,CAAC,KAAa,EAAE,KAAa;IAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,WAAW,CAClB,OAA6B,EAC7B,MAAe;IAEf,OAAO;QACL,OAAO,EAAE,aAAa;QACtB,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,SAAS;QACjB,UAAU,EAAE,QAAQ;QACpB,cAAc,EAAE,QAAQ;QACxB,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,MAAM;YACZ,CAAC,CAAC,aAAa,KAAK,CAAC,IAAI,EAAE;YAC3B,CAAC,CAAC,+BAA+B;QACnC,YAAY,EAAE,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO;QAC7D,SAAS,EAAE,YAAY;QACvB,KAAK,EAAE,KAAK,CAAC,IAAI;QACjB,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,EAAE;QACZ,kBAAkB,EAAE,cAAc;QAClC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;QAC9B,UAAU,EAAE,CAAC;KACd,CAAC;AACJ,CAAC;AAED,qFAAqF;AACrF,MAAM,SAAS,GAAG,EAAE,CAAC;AAErB,MAAM,UAAU,GAAkB;IAChC,OAAO,EAAE,MAAM;IACf,aAAa,EAAE,QAAQ;IACvB,GAAG,EAAE,CAAC;CACP,CAAC;AAEF,MAAM,WAAW,GAAkB;IACjC,OAAO,EAAE,MAAM;IACf,QAAQ,EAAE,MAAM;IAChB,UAAU,EAAE,QAAQ;IACpB,GAAG,EAAE,CAAC;IACN,YAAY,EAAE,CAAC;IACf,OAAO,EAAE,SAAS;CACnB,CAAC;AAEF,MAAM,WAAW,GAAkB;IACjC,IAAI,EAAE,WAAW;IACjB,QAAQ,EAAE,EAAE;IACZ,UAAU,EAAE,GAAG;IACf,KAAK,EAAE,KAAK,CAAC,IAAI;CAClB,CAAC;AAEF,MAAM,WAAW,GAAkB;IACjC,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,QAAQ;IACpB,GAAG,EAAE,CAAC;IACN,UAAU,EAAE,CAAC;CACd,CAAC;AAEF,MAAM,UAAU,GAAkB;IAChC,KAAK,EAAE,KAAK,CAAC,SAAS;IACtB,QAAQ,EAAE,EAAE;CACb,CAAC"}
|
|
@@ -22,6 +22,13 @@ export interface GlossaryContextValue {
|
|
|
22
22
|
* @default undefined — a plain `<code>`
|
|
23
23
|
*/
|
|
24
24
|
renderCode?: (code: string) => ReactNode;
|
|
25
|
+
/**
|
|
26
|
+
* Draws a `{{C6H6O}}` of the prose. A chemistry site passes
|
|
27
|
+
* `(mf) => <MF mf={mf} />` from `react-mf` here, once, so that every formula
|
|
28
|
+
* below reads as a formula rather than as a line of digits.
|
|
29
|
+
* @default undefined — the formula as typed
|
|
30
|
+
*/
|
|
31
|
+
renderMf?: (mf: string) => ReactNode;
|
|
25
32
|
}
|
|
26
33
|
/**
|
|
27
34
|
* The glossary the surrounding provider holds, and how it draws what it shows.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glossaryContext.d.ts","sourceRoot":"","sources":["../../../src/pedagogy/ui/glossaryContext.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEpD,2EAA2E;AAC3E,MAAM,WAAW,oBAAoB;IACnC,mCAAmC;IACnC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC5B;;;OAGG;IACH,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,SAAS,CAAC;IAChD;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"glossaryContext.d.ts","sourceRoot":"","sources":["../../../src/pedagogy/ui/glossaryContext.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEpD,2EAA2E;AAC3E,MAAM,WAAW,oBAAoB;IACnC,mCAAmC;IACnC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC5B;;;OAGG;IACH,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,SAAS,CAAC;IAChD;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,CAAC;IACzC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,SAAS,CAAC;CACtC;AAED;;;;GAIG;AACH,wBAAgB,WAAW,IAAI,oBAAoB,CAElD;AAED,+EAA+E;AAC/E,eAAO,MAAM,eAAe,+CAE1B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glossaryContext.js","sourceRoot":"","sources":["../../../src/pedagogy/ui/glossaryContext.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"glossaryContext.js","sourceRoot":"","sources":["../../../src/pedagogy/ui/glossaryContext.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AA2BlD;;;;GAIG;AACH,MAAM,UAAU,WAAW;IACzB,OAAO,UAAU,CAAC,eAAe,CAAC,CAAC;AACrC,CAAC;AAED,+EAA+E;AAC/E,MAAM,CAAC,MAAM,eAAe,GAAG,aAAa,CAAuB;IACjE,QAAQ,EAAE,EAAE;CACb,CAAC,CAAC"}
|
|
@@ -25,7 +25,7 @@ export type { ReferenceRow, ReferenceSection, ReferenceSectionBlockProps, } from
|
|
|
25
25
|
export { ReferenceSectionBlock } from './ReferenceSectionBlock.tsx';
|
|
26
26
|
export type { SyntaxTooltipContent, SyntaxTooltipExample, SyntaxTooltipProps, } from './SyntaxTooltip.tsx';
|
|
27
27
|
export { SyntaxTooltip } from './SyntaxTooltip.tsx';
|
|
28
|
-
export type {
|
|
28
|
+
export type { ProseInk } from './pedagogyStyle.ts';
|
|
29
29
|
export type { TestCaseListProps } from './TestCaseList.tsx';
|
|
30
30
|
export { TestCaseList } from './TestCaseList.tsx';
|
|
31
31
|
export type { TutorialStepStripProps, TutorialStripStep, } from './TutorialStepStrip.tsx';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/pedagogy/ui/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,YAAY,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAChF,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,YAAY,EACV,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EACL,YAAY,EACZ,WAAW,EACX,WAAW,EACX,aAAa,GACd,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,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,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,0BAA0B,GAC3B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,YAAY,EACV,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/pedagogy/ui/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,YAAY,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAChF,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,YAAY,EACV,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EACL,YAAY,EACZ,WAAW,EACX,WAAW,EACX,aAAa,GACd,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,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,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,0BAA0B,GAC3B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,YAAY,EACV,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EACV,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,YAAY,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -4,6 +4,11 @@ import type { InlineSegment } from '../core/inlineMarks.ts';
|
|
|
4
4
|
interface InlineRenderers {
|
|
5
5
|
/** Draws a code span, from the text between its backticks. */
|
|
6
6
|
code: (code: string) => ReactNode;
|
|
7
|
+
/**
|
|
8
|
+
* Draws a molecular formula, from the text between its braces.
|
|
9
|
+
* @default undefined — the formula as typed, which no chemistry site wants
|
|
10
|
+
*/
|
|
11
|
+
mf?: (mf: string) => ReactNode;
|
|
7
12
|
/**
|
|
8
13
|
* Draws a glossary marker, from its lowercased term and the text to show.
|
|
9
14
|
* @default undefined — the text, as plain prose
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inlineSegments.d.ts","sourceRoot":"","sources":["../../../src/pedagogy/ui/inlineSegments.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D,+CAA+C;AAC/C,UAAU,eAAe;IACvB,8DAA8D;IAC9D,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,CAAC;IAClC;;;OAGG;IACH,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,SAAS,CAAC;CAClD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,SAAS,aAAa,EAAE,EAClC,SAAS,EAAE,eAAe,GACzB,SAAS,EAAE,CAUb;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAEpD"}
|
|
1
|
+
{"version":3,"file":"inlineSegments.d.ts","sourceRoot":"","sources":["../../../src/pedagogy/ui/inlineSegments.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D,+CAA+C;AAC/C,UAAU,eAAe;IACvB,8DAA8D;IAC9D,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,CAAC;IAClC;;;OAGG;IACH,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,SAAS,CAAC;IAC/B;;;OAGG;IACH,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,SAAS,CAAC;CAClD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,SAAS,aAAa,EAAE,EAClC,SAAS,EAAE,eAAe,GACzB,SAAS,EAAE,CAUb;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAEpD"}
|
|
@@ -27,6 +27,8 @@ function renderSegment(segment, renderers) {
|
|
|
27
27
|
return segment.text;
|
|
28
28
|
case 'code':
|
|
29
29
|
return renderers.code(segment.text);
|
|
30
|
+
case 'mf':
|
|
31
|
+
return renderers.mf === undefined ? segment.mf : renderers.mf(segment.mf);
|
|
30
32
|
case 'term':
|
|
31
33
|
return renderers.term === undefined
|
|
32
34
|
? segment.text
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inlineSegments.js","sourceRoot":"","sources":["../../../src/pedagogy/ui/inlineSegments.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"inlineSegments.js","sourceRoot":"","sources":["../../../src/pedagogy/ui/inlineSegments.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAoBjC;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAAkC,EAClC,SAA0B;IAE1B,MAAM,KAAK,GAAgB,EAAE,CAAC;IAC9B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CACR,KAAC,QAAQ,cACN,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,IADrB,OAAO,CAAC,KAAK,CAEjB,CACZ,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,OAAO,yBAAO,IAAI,GAAQ,CAAC;AAC7B,CAAC;AAED,SAAS,aAAa,CACpB,OAAsB,EACtB,SAA0B;IAE1B,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,MAAM;YACT,OAAO,OAAO,CAAC,IAAI,CAAC;QACtB,KAAK,MAAM;YACT,OAAO,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACtC,KAAK,IAAI;YACP,OAAO,SAAS,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC5E,KAAK,MAAM;YACT,OAAO,SAAS,CAAC,IAAI,KAAK,SAAS;gBACjC,CAAC,CAAC,OAAO,CAAC,IAAI;gBACd,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACjD,KAAK,QAAQ;YACX,OAAO,CACL,2BAAS,oBAAoB,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAU,CACrE,CAAC;QACJ,KAAK,UAAU;YACb,OAAO,uBAAK,oBAAoB,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAM,CAAC;QACtE;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC"}
|
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* What the pedagogy components share about how they look: how long a pointer
|
|
3
3
|
* rests before a definition opens, the monospace stack, and the ink prose is
|
|
4
|
-
* set in
|
|
4
|
+
* set in.
|
|
5
5
|
*/
|
|
6
6
|
/** Long enough that the pointer can cross a chip or a row without opening it. */
|
|
7
7
|
export declare const HOVER_OPEN_DELAY = 150;
|
|
8
8
|
/** The stack every construct, pattern and formula is set in. */
|
|
9
9
|
export declare const MONOSPACE = "ui-monospace, SFMono-Regular, Menlo, Consolas, monospace";
|
|
10
|
-
/**
|
|
11
|
-
export type ProseTone = 'tooltip' | 'page';
|
|
12
|
-
/** The colours prose is set in on one ground. */
|
|
10
|
+
/** The colours prose is set in. */
|
|
13
11
|
export interface ProseInk {
|
|
14
12
|
/** The body of a paragraph. */
|
|
15
13
|
text: string;
|
|
@@ -21,11 +19,12 @@ export interface ProseInk {
|
|
|
21
19
|
rule: string;
|
|
22
20
|
}
|
|
23
21
|
/**
|
|
24
|
-
* The ink
|
|
22
|
+
* The one ink, because there is one ground.
|
|
25
23
|
*
|
|
26
|
-
* A
|
|
27
|
-
*
|
|
28
|
-
*
|
|
24
|
+
* A definition, a documented construct and a help card are the same job, and
|
|
25
|
+
* the family answers it with one card: `help-tooltip` in `chrome.css`, light,
|
|
26
|
+
* on a border and a shadow. So the prose here is the family's tokens wherever
|
|
27
|
+
* it is read — on a page, or on that card.
|
|
29
28
|
*/
|
|
30
|
-
export declare const PROSE_INK:
|
|
29
|
+
export declare const PROSE_INK: ProseInk;
|
|
31
30
|
//# sourceMappingURL=pedagogyStyle.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pedagogyStyle.d.ts","sourceRoot":"","sources":["../../../src/pedagogy/ui/pedagogyStyle.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"pedagogyStyle.d.ts","sourceRoot":"","sources":["../../../src/pedagogy/ui/pedagogyStyle.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,iFAAiF;AACjF,eAAO,MAAM,gBAAgB,MAAM,CAAC;AAEpC,gEAAgE;AAChE,eAAO,MAAM,SAAS,6DACsC,CAAC;AAE7D,mCAAmC;AACnC,MAAM,WAAW,QAAQ;IACvB,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS,EAAE,QAKvB,CAAC"}
|
|
@@ -1,33 +1,25 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* What the pedagogy components share about how they look: how long a pointer
|
|
3
3
|
* rests before a definition opens, the monospace stack, and the ink prose is
|
|
4
|
-
* set in
|
|
4
|
+
* set in.
|
|
5
5
|
*/
|
|
6
|
-
import { Colors } from '@blueprintjs/core';
|
|
7
6
|
import { TOKEN } from "../../tokens/core/familyTokens.js";
|
|
8
7
|
/** Long enough that the pointer can cross a chip or a row without opening it. */
|
|
9
8
|
export const HOVER_OPEN_DELAY = 150;
|
|
10
9
|
/** The stack every construct, pattern and formula is set in. */
|
|
11
10
|
export const MONOSPACE = 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace';
|
|
12
11
|
/**
|
|
13
|
-
* The ink
|
|
12
|
+
* The one ink, because there is one ground.
|
|
14
13
|
*
|
|
15
|
-
* A
|
|
16
|
-
*
|
|
17
|
-
*
|
|
14
|
+
* A definition, a documented construct and a help card are the same job, and
|
|
15
|
+
* the family answers it with one card: `help-tooltip` in `chrome.css`, light,
|
|
16
|
+
* on a border and a shadow. So the prose here is the family's tokens wherever
|
|
17
|
+
* it is read — on a page, or on that card.
|
|
18
18
|
*/
|
|
19
19
|
export const PROSE_INK = {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
rule: 'rgb(255 255 255 / 15%)',
|
|
25
|
-
},
|
|
26
|
-
page: {
|
|
27
|
-
text: TOKEN.text,
|
|
28
|
-
muted: TOKEN.textMuted,
|
|
29
|
-
code: TOKEN.text,
|
|
30
|
-
rule: TOKEN.border,
|
|
31
|
-
},
|
|
20
|
+
text: TOKEN.text,
|
|
21
|
+
muted: TOKEN.textMuted,
|
|
22
|
+
code: TOKEN.text,
|
|
23
|
+
rule: TOKEN.border,
|
|
32
24
|
};
|
|
33
25
|
//# sourceMappingURL=pedagogyStyle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pedagogyStyle.js","sourceRoot":"","sources":["../../../src/pedagogy/ui/pedagogyStyle.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"pedagogyStyle.js","sourceRoot":"","sources":["../../../src/pedagogy/ui/pedagogyStyle.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAC;AAE1D,iFAAiF;AACjF,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAEpC,gEAAgE;AAChE,MAAM,CAAC,MAAM,SAAS,GACpB,0DAA0D,CAAC;AAc7D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,SAAS,GAAa;IACjC,IAAI,EAAE,KAAK,CAAC,IAAI;IAChB,KAAK,EAAE,KAAK,CAAC,SAAS;IACtB,IAAI,EAAE,KAAK,CAAC,IAAI;IAChB,IAAI,EAAE,KAAK,CAAC,MAAM;CACnB,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export type { RangeBounds, RangeDomain, RangeHandles } from './rangeBounds.ts';
|
|
2
|
+
export { OPEN_RANGE, isRangeBounded, isRangeDomain, movedRange, rangeHandles, sameRange, settleHandles, } from './rangeBounds.ts';
|
|
3
|
+
export { rangeHistogramPath } from './rangeHistogram.ts';
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/range/core/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC/E,OAAO,EACL,UAAU,EACV,cAAc,EACd,aAAa,EACb,UAAU,EACV,YAAY,EACZ,SAAS,EACT,aAAa,GACd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/range/core/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,UAAU,EACV,cAAc,EACd,aAAa,EACb,UAAU,EACV,YAAY,EACZ,SAAS,EACT,aAAa,GACd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a range filter keeps, and how its two handles map to it.
|
|
3
|
+
*
|
|
4
|
+
* A filter is two bounds, either of which may be left open. A handle parked at
|
|
5
|
+
* the end of the track is an open side rather than a bound at the track's end,
|
|
6
|
+
* because the track only covers the values the page knows about: a molecule
|
|
7
|
+
* heavier than the heaviest one in the statistics must not be cut by a filter
|
|
8
|
+
* nobody touched.
|
|
9
|
+
*/
|
|
10
|
+
/** A lowest and a highest value kept, either of which may be left open. */
|
|
11
|
+
export interface RangeBounds {
|
|
12
|
+
/** The lowest value kept, or `null` when nothing is cut from below. */
|
|
13
|
+
readonly min: number | null;
|
|
14
|
+
/** The highest value kept, or `null` when nothing is cut from above. */
|
|
15
|
+
readonly max: number | null;
|
|
16
|
+
}
|
|
17
|
+
/** The two ends of a slider's track, low first. */
|
|
18
|
+
export type RangeDomain = readonly [number, number];
|
|
19
|
+
/** Where the two handles of a slider stand, low first. */
|
|
20
|
+
export type RangeHandles = readonly [number, number];
|
|
21
|
+
/** A range that keeps everything. */
|
|
22
|
+
export declare const OPEN_RANGE: RangeBounds;
|
|
23
|
+
/**
|
|
24
|
+
* Whether a range cuts anything at all.
|
|
25
|
+
* @param range - The range.
|
|
26
|
+
* @returns Whether either side carries a bound.
|
|
27
|
+
*/
|
|
28
|
+
export declare function isRangeBounded(range: RangeBounds): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Whether two ranges keep the same values.
|
|
31
|
+
* @param left - One range.
|
|
32
|
+
* @param right - The other.
|
|
33
|
+
* @returns Whether both sides agree, an open side matching only an open side.
|
|
34
|
+
*/
|
|
35
|
+
export declare function sameRange(left: RangeBounds, right: RangeBounds): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Whether a track can be drawn: two finite ends, the high one above the low.
|
|
38
|
+
* Statistics that have not arrived yet are usually a track of `[0, 0]`.
|
|
39
|
+
* @param domain - The two ends.
|
|
40
|
+
* @returns Whether a slider can be laid along it.
|
|
41
|
+
*/
|
|
42
|
+
export declare function isRangeDomain(domain: RangeDomain): boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Where the handles stand for a range: an open side at the end of the track,
|
|
45
|
+
* and a bound past the track held at its end.
|
|
46
|
+
* @param range - The range.
|
|
47
|
+
* @param domain - The track, already checked with {@link isRangeDomain}.
|
|
48
|
+
* @returns The two handle positions, low first.
|
|
49
|
+
*/
|
|
50
|
+
export declare function rangeHandles(range: RangeBounds, domain: RangeDomain): RangeHandles;
|
|
51
|
+
/**
|
|
52
|
+
* The range two handles stand for once they have moved.
|
|
53
|
+
*
|
|
54
|
+
* Only a handle that moved changes its side. A bound past the end of the track
|
|
55
|
+
* sits at that end, and dragging the other handle must not turn it into an
|
|
56
|
+
* open side; a handle the reader took to the end of the track, on the other
|
|
57
|
+
* hand, opens its side.
|
|
58
|
+
* @param from - The range before the handles moved.
|
|
59
|
+
* @param handles - Where the handles are now.
|
|
60
|
+
* @param domain - The track.
|
|
61
|
+
* @returns The range the reader asked for.
|
|
62
|
+
*/
|
|
63
|
+
export declare function movedRange(from: RangeBounds, handles: RangeHandles, domain: RangeDomain): RangeBounds;
|
|
64
|
+
/**
|
|
65
|
+
* Where handles settle while they are dragged: a moved handle onto the step
|
|
66
|
+
* grid laid from the low end of the track, an untouched one where it stood.
|
|
67
|
+
*
|
|
68
|
+
* Snapping the untouched handle too would move a bound the reader typed, say
|
|
69
|
+
* `1.23` on a track stepped by `0.5`, the moment the other handle is dragged.
|
|
70
|
+
* The ends of the track are kept even when they are off the grid, since an end
|
|
71
|
+
* is what opens a side.
|
|
72
|
+
* @param next - Where the slider reports the handles.
|
|
73
|
+
* @param from - The range before the drag started.
|
|
74
|
+
* @param step - The grid spacing.
|
|
75
|
+
* @param domain - The track.
|
|
76
|
+
* @returns The handle positions to draw and to report.
|
|
77
|
+
*/
|
|
78
|
+
export declare function settleHandles(next: RangeHandles, from: RangeBounds, step: number, domain: RangeDomain): RangeHandles;
|
|
79
|
+
//# sourceMappingURL=rangeBounds.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rangeBounds.d.ts","sourceRoot":"","sources":["../../../src/range/core/rangeBounds.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,2EAA2E;AAC3E,MAAM,WAAW,WAAW;IAC1B,uEAAuE;IACvE,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,wEAAwE;IACxE,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,mDAAmD;AACnD,MAAM,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEpD,0DAA0D;AAC1D,MAAM,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAErD,qCAAqC;AACrC,eAAO,MAAM,UAAU,EAAE,WAAqD,CAAC;AAE/E;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAE1D;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAExE;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAG1D;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,WAAW,GAClB,YAAY,CAKd;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,WAAW,GAClB,WAAW,CAQb;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,YAAY,EAClB,IAAI,EAAE,WAAW,EACjB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,WAAW,GAClB,YAAY,CAMd"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a range filter keeps, and how its two handles map to it.
|
|
3
|
+
*
|
|
4
|
+
* A filter is two bounds, either of which may be left open. A handle parked at
|
|
5
|
+
* the end of the track is an open side rather than a bound at the track's end,
|
|
6
|
+
* because the track only covers the values the page knows about: a molecule
|
|
7
|
+
* heavier than the heaviest one in the statistics must not be cut by a filter
|
|
8
|
+
* nobody touched.
|
|
9
|
+
*/
|
|
10
|
+
import { clamp } from "../../format/core/clamp.js";
|
|
11
|
+
import { snapToStep } from "../../number/core/numberText.js";
|
|
12
|
+
/** A range that keeps everything. */
|
|
13
|
+
export const OPEN_RANGE = Object.freeze({ min: null, max: null });
|
|
14
|
+
/**
|
|
15
|
+
* Whether a range cuts anything at all.
|
|
16
|
+
* @param range - The range.
|
|
17
|
+
* @returns Whether either side carries a bound.
|
|
18
|
+
*/
|
|
19
|
+
export function isRangeBounded(range) {
|
|
20
|
+
return range.min !== null || range.max !== null;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Whether two ranges keep the same values.
|
|
24
|
+
* @param left - One range.
|
|
25
|
+
* @param right - The other.
|
|
26
|
+
* @returns Whether both sides agree, an open side matching only an open side.
|
|
27
|
+
*/
|
|
28
|
+
export function sameRange(left, right) {
|
|
29
|
+
return Object.is(left.min, right.min) && Object.is(left.max, right.max);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Whether a track can be drawn: two finite ends, the high one above the low.
|
|
33
|
+
* Statistics that have not arrived yet are usually a track of `[0, 0]`.
|
|
34
|
+
* @param domain - The two ends.
|
|
35
|
+
* @returns Whether a slider can be laid along it.
|
|
36
|
+
*/
|
|
37
|
+
export function isRangeDomain(domain) {
|
|
38
|
+
const [low, high] = domain;
|
|
39
|
+
return Number.isFinite(low) && Number.isFinite(high) && high > low;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Where the handles stand for a range: an open side at the end of the track,
|
|
43
|
+
* and a bound past the track held at its end.
|
|
44
|
+
* @param range - The range.
|
|
45
|
+
* @param domain - The track, already checked with {@link isRangeDomain}.
|
|
46
|
+
* @returns The two handle positions, low first.
|
|
47
|
+
*/
|
|
48
|
+
export function rangeHandles(range, domain) {
|
|
49
|
+
const [low, high] = domain;
|
|
50
|
+
const start = range.min === null ? low : clamp(range.min, low, high);
|
|
51
|
+
const end = range.max === null ? high : clamp(range.max, low, high);
|
|
52
|
+
return start <= end ? [start, end] : [end, start];
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* The range two handles stand for once they have moved.
|
|
56
|
+
*
|
|
57
|
+
* Only a handle that moved changes its side. A bound past the end of the track
|
|
58
|
+
* sits at that end, and dragging the other handle must not turn it into an
|
|
59
|
+
* open side; a handle the reader took to the end of the track, on the other
|
|
60
|
+
* hand, opens its side.
|
|
61
|
+
* @param from - The range before the handles moved.
|
|
62
|
+
* @param handles - Where the handles are now.
|
|
63
|
+
* @param domain - The track.
|
|
64
|
+
* @returns The range the reader asked for.
|
|
65
|
+
*/
|
|
66
|
+
export function movedRange(from, handles, domain) {
|
|
67
|
+
const [low, high] = domain;
|
|
68
|
+
const [start, end] = rangeHandles(from, domain);
|
|
69
|
+
return {
|
|
70
|
+
min: handles[0] === start ? from.min : handles[0] <= low ? null : handles[0],
|
|
71
|
+
max: handles[1] === end ? from.max : handles[1] >= high ? null : handles[1],
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Where handles settle while they are dragged: a moved handle onto the step
|
|
76
|
+
* grid laid from the low end of the track, an untouched one where it stood.
|
|
77
|
+
*
|
|
78
|
+
* Snapping the untouched handle too would move a bound the reader typed, say
|
|
79
|
+
* `1.23` on a track stepped by `0.5`, the moment the other handle is dragged.
|
|
80
|
+
* The ends of the track are kept even when they are off the grid, since an end
|
|
81
|
+
* is what opens a side.
|
|
82
|
+
* @param next - Where the slider reports the handles.
|
|
83
|
+
* @param from - The range before the drag started.
|
|
84
|
+
* @param step - The grid spacing.
|
|
85
|
+
* @param domain - The track.
|
|
86
|
+
* @returns The handle positions to draw and to report.
|
|
87
|
+
*/
|
|
88
|
+
export function settleHandles(next, from, step, domain) {
|
|
89
|
+
const [start, end] = rangeHandles(from, domain);
|
|
90
|
+
return [
|
|
91
|
+
next[0] === start ? start : snapHandle(next[0], step, domain),
|
|
92
|
+
next[1] === end ? end : snapHandle(next[1], step, domain),
|
|
93
|
+
];
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* One handle moved onto the step grid, the ends of the track kept as they are.
|
|
97
|
+
* @param value - Where the handle was dropped.
|
|
98
|
+
* @param step - The grid spacing.
|
|
99
|
+
* @param domain - The track.
|
|
100
|
+
* @returns The position the handle settles on.
|
|
101
|
+
*/
|
|
102
|
+
function snapHandle(value, step, domain) {
|
|
103
|
+
const [low, high] = domain;
|
|
104
|
+
if (value <= low)
|
|
105
|
+
return low;
|
|
106
|
+
if (value >= high)
|
|
107
|
+
return high;
|
|
108
|
+
return clamp(snapToStep(value, step, low), low, high);
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=rangeBounds.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rangeBounds.js","sourceRoot":"","sources":["../../../src/range/core/rangeBounds.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The outline of a histogram whose bins split the track into equal widths, as
|
|
3
|
+
* SVG path data in a box one unit wide and one unit tall.
|
|
4
|
+
*
|
|
5
|
+
* One stepped outline rather than a rectangle per bin: adjacent rectangles
|
|
6
|
+
* leave a hairline seam between them wherever their shared edge falls between
|
|
7
|
+
* two pixels, and a thousand bins would be two thousand elements.
|
|
8
|
+
* @param counts - One count per bin, from the low end of the track.
|
|
9
|
+
* @returns The path data, the tallest bin reaching the top; empty when nothing
|
|
10
|
+
* was counted.
|
|
11
|
+
*/
|
|
12
|
+
export declare function rangeHistogramPath(counts: ArrayLike<number>): string;
|
|
13
|
+
//# sourceMappingURL=rangeHistogram.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rangeHistogram.d.ts","sourceRoot":"","sources":["../../../src/range/core/rangeHistogram.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,MAAM,CAgBpE"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The outline of a histogram whose bins split the track into equal widths, as
|
|
3
|
+
* SVG path data in a box one unit wide and one unit tall.
|
|
4
|
+
*
|
|
5
|
+
* One stepped outline rather than a rectangle per bin: adjacent rectangles
|
|
6
|
+
* leave a hairline seam between them wherever their shared edge falls between
|
|
7
|
+
* two pixels, and a thousand bins would be two thousand elements.
|
|
8
|
+
* @param counts - One count per bin, from the low end of the track.
|
|
9
|
+
* @returns The path data, the tallest bin reaching the top; empty when nothing
|
|
10
|
+
* was counted.
|
|
11
|
+
*/
|
|
12
|
+
export function rangeHistogramPath(counts) {
|
|
13
|
+
const bins = counts.length;
|
|
14
|
+
let tallest = 0;
|
|
15
|
+
for (let index = 0; index < bins; index++) {
|
|
16
|
+
const count = counts[index];
|
|
17
|
+
if (count > tallest)
|
|
18
|
+
tallest = count;
|
|
19
|
+
}
|
|
20
|
+
if (tallest <= 0)
|
|
21
|
+
return '';
|
|
22
|
+
let path = 'M0 1';
|
|
23
|
+
for (let index = 0; index < bins; index++) {
|
|
24
|
+
const count = counts[index];
|
|
25
|
+
const height = count > 0 ? count / tallest : 0;
|
|
26
|
+
path += `V${trim(1 - height)}H${trim((index + 1) / bins)}`;
|
|
27
|
+
}
|
|
28
|
+
return `${path}V1Z`;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* A coordinate written with the five decimals a box of a few hundred pixels
|
|
32
|
+
* can use.
|
|
33
|
+
* @param value - The coordinate.
|
|
34
|
+
* @returns Its text.
|
|
35
|
+
*/
|
|
36
|
+
function trim(value) {
|
|
37
|
+
return String(Math.round(value * 1e5) / 1e5);
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=rangeHistogram.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rangeHistogram.js","sourceRoot":"","sources":["../../../src/range/core/rangeHistogram.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAyB;IAC1D,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;IAC3B,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAW,CAAC;QACtC,IAAI,KAAK,GAAG,OAAO;YAAE,OAAO,GAAG,KAAK,CAAC;IACvC,CAAC;IACD,IAAI,OAAO,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAE5B,IAAI,IAAI,GAAG,MAAM,CAAC;IAClB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAW,CAAC;QACtC,MAAM,MAAM,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;IAC7D,CAAC;IACD,OAAO,GAAG,IAAI,KAAK,CAAC;AACtB,CAAC;AAED;;;;;GAKG;AACH,SAAS,IAAI,CAAC,KAAa;IACzB,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AAC/C,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { ReactElement } from 'react';
|
|
2
|
+
/** What the histogram over a range slider needs. */
|
|
3
|
+
export interface RangeHistogramProps {
|
|
4
|
+
/** One count per bin, the bins splitting the track into equal widths. */
|
|
5
|
+
counts: ArrayLike<number>;
|
|
6
|
+
/** Where the kept part starts, as a fraction of the track. */
|
|
7
|
+
start: number;
|
|
8
|
+
/** Where it ends. */
|
|
9
|
+
end: number;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* How the values are spread along the track, the part the handles keep drawn
|
|
13
|
+
* in the brand colour. The outline is drawn twice, the second copy clipped to
|
|
14
|
+
* the handles, so a drag moves one rectangle and the outline is never redrawn.
|
|
15
|
+
* @param props - See {@link RangeHistogramProps}.
|
|
16
|
+
* @returns The histogram, hidden from a screen reader: the values under the
|
|
17
|
+
* track already say what it keeps.
|
|
18
|
+
*/
|
|
19
|
+
export declare function RangeHistogram(props: RangeHistogramProps): ReactElement;
|
|
20
|
+
//# sourceMappingURL=RangeHistogram.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RangeHistogram.d.ts","sourceRoot":"","sources":["../../../src/range/ui/RangeHistogram.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAK1C,oDAAoD;AACpD,MAAM,WAAW,mBAAmB;IAClC,yEAAyE;IACzE,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAC1B,8DAA8D;IAC9D,KAAK,EAAE,MAAM,CAAC;IACd,qBAAqB;IACrB,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,YAAY,CAyBvE"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useId, useMemo } from 'react';
|
|
3
|
+
import { rangeHistogramPath } from "../core/rangeHistogram.js";
|
|
4
|
+
/**
|
|
5
|
+
* How the values are spread along the track, the part the handles keep drawn
|
|
6
|
+
* in the brand colour. The outline is drawn twice, the second copy clipped to
|
|
7
|
+
* the handles, so a drag moves one rectangle and the outline is never redrawn.
|
|
8
|
+
* @param props - See {@link RangeHistogramProps}.
|
|
9
|
+
* @returns The histogram, hidden from a screen reader: the values under the
|
|
10
|
+
* track already say what it keeps.
|
|
11
|
+
*/
|
|
12
|
+
export function RangeHistogram(props) {
|
|
13
|
+
const { counts, start, end } = props;
|
|
14
|
+
const clip = `range-histogram-${useId().replaceAll(/\W/g, '')}`;
|
|
15
|
+
const outline = useMemo(() => rangeHistogramPath(counts), [counts]);
|
|
16
|
+
return (_jsxs("svg", { className: "range-slider__histogram", viewBox: "0 0 1 1", preserveAspectRatio: "none", "aria-hidden": "true", children: [_jsx("defs", { children: _jsx("clipPath", { id: clip, children: _jsx("rect", { x: start, y: 0, width: Math.max(end - start, 0), height: 1 }) }) }), _jsx("path", { className: "range-slider__bars", d: outline }), _jsx("path", { className: "range-slider__bars range-slider__bars--kept", d: outline, clipPath: `url(#${clip})` })] }));
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=RangeHistogram.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RangeHistogram.js","sourceRoot":"","sources":["../../../src/range/ui/RangeHistogram.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAY/D;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,KAA0B;IACvD,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;IACrC,MAAM,IAAI,GAAG,mBAAmB,KAAK,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC;IAChE,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEpE,OAAO,CACL,eACE,SAAS,EAAC,yBAAyB,EACnC,OAAO,EAAC,SAAS,EACjB,mBAAmB,EAAC,MAAM,iBACd,MAAM,aAElB,yBACE,mBAAU,EAAE,EAAE,IAAI,YAChB,eAAM,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAI,GAC3D,GACN,EACP,eAAM,SAAS,EAAC,oBAAoB,EAAC,CAAC,EAAE,OAAO,GAAI,EACnD,eACE,SAAS,EAAC,6CAA6C,EACvD,CAAC,EAAE,OAAO,EACV,QAAQ,EAAE,QAAQ,IAAI,GAAG,GACzB,IACE,CACP,CAAC;AACJ,CAAC"}
|