react-cheminfo 0.22.0 → 0.24.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 +51 -28
- package/lib/chrome/ui/HeaderToggle.d.ts +52 -0
- package/lib/chrome/ui/HeaderToggle.d.ts.map +1 -0
- package/lib/chrome/ui/HeaderToggle.js +31 -0
- package/lib/chrome/ui/HeaderToggle.js.map +1 -0
- package/lib/chrome/ui/index.d.ts +2 -0
- package/lib/chrome/ui/index.d.ts.map +1 -1
- package/lib/chrome/ui/index.js +1 -0
- package/lib/chrome/ui/index.js.map +1 -1
- package/lib/citation/core/gfn2Paper.d.ts +10 -0
- package/lib/citation/core/gfn2Paper.d.ts.map +1 -0
- package/lib/citation/core/gfn2Paper.js +28 -0
- package/lib/citation/core/gfn2Paper.js.map +1 -0
- package/lib/citation/core/index.d.ts +1 -0
- package/lib/citation/core/index.d.ts.map +1 -1
- package/lib/citation/core/index.js +1 -0
- package/lib/citation/core/index.js.map +1 -1
- package/lib/clipboard/ui/ClickToCopy.d.ts +8 -7
- package/lib/clipboard/ui/ClickToCopy.d.ts.map +1 -1
- package/lib/clipboard/ui/ClickToCopy.js +3 -3
- package/lib/clipboard/ui/ClickToCopy.js.map +1 -1
- package/lib/conformers.d.ts +27 -0
- package/lib/conformers.d.ts.map +1 -0
- package/lib/conformers.js +19 -0
- package/lib/conformers.js.map +1 -0
- 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/credits/core/credits.d.ts +12 -0
- package/lib/credits/core/credits.d.ts.map +1 -1
- package/lib/credits/core/credits.js +14 -0
- package/lib/credits/core/credits.js.map +1 -1
- package/lib/ecosystem/core/index.d.ts +1 -1
- package/lib/ecosystem/core/index.d.ts.map +1 -1
- package/lib/ecosystem/core/index.js.map +1 -1
- package/lib/ecosystem/core/sites.d.ts +11 -1
- package/lib/ecosystem/core/sites.d.ts.map +1 -1
- package/lib/ecosystem/core/sites.js +7 -2
- package/lib/ecosystem/core/sites.js.map +1 -1
- package/lib/ecosystem/ui/EcosystemLinks.d.ts.map +1 -1
- package/lib/ecosystem/ui/EcosystemLinks.js +3 -1
- package/lib/ecosystem/ui/EcosystemLinks.js.map +1 -1
- package/lib/ecosystem/ui/SiteTile.d.ts.map +1 -1
- package/lib/ecosystem/ui/SiteTile.js +3 -1
- package/lib/ecosystem/ui/SiteTile.js.map +1 -1
- package/lib/format/core/index.d.ts +1 -1
- package/lib/format/core/index.d.ts.map +1 -1
- package/lib/format/core/index.js +1 -1
- package/lib/format/core/index.js.map +1 -1
- package/lib/format/core/words.d.ts +9 -0
- package/lib/format/core/words.d.ts.map +1 -1
- package/lib/format/core/words.js +16 -0
- package/lib/format/core/words.js.map +1 -1
- package/lib/language/core/index.d.ts +3 -0
- package/lib/language/core/index.d.ts.map +1 -0
- package/lib/language/core/index.js +3 -0
- package/lib/language/core/index.js.map +1 -0
- package/lib/language/core/languageName.d.ts +8 -0
- package/lib/language/core/languageName.d.ts.map +1 -0
- package/lib/language/core/languageName.js +16 -0
- package/lib/language/core/languageName.js.map +1 -0
- package/lib/language/core/languageParam.d.ts +35 -0
- package/lib/language/core/languageParam.d.ts.map +1 -0
- package/lib/language/core/languageParam.js +67 -0
- package/lib/language/core/languageParam.js.map +1 -0
- package/lib/language/ui/SiteLanguage.d.ts +20 -0
- package/lib/language/ui/SiteLanguage.d.ts.map +1 -0
- package/lib/language/ui/SiteLanguage.js +14 -0
- package/lib/language/ui/SiteLanguage.js.map +1 -0
- package/lib/language/ui/index.d.ts +4 -0
- package/lib/language/ui/index.d.ts.map +1 -0
- package/lib/language/ui/index.js +3 -0
- package/lib/language/ui/index.js.map +1 -0
- package/lib/language/ui/siteLanguageContext.d.ts +12 -0
- package/lib/language/ui/siteLanguageContext.d.ts.map +1 -0
- package/lib/language/ui/siteLanguageContext.js +19 -0
- package/lib/language/ui/siteLanguageContext.js.map +1 -0
- package/lib/orbital/core/atomicOrbitals.d.ts +9 -1
- package/lib/orbital/core/atomicOrbitals.d.ts.map +1 -1
- package/lib/orbital/core/atomicOrbitals.js +7 -0
- package/lib/orbital/core/atomicOrbitals.js.map +1 -1
- package/lib/orbital/core/hydrogenic.d.ts +2 -1
- package/lib/orbital/core/hydrogenic.d.ts.map +1 -1
- package/lib/orbital/core/hydrogenic.js +2 -1
- package/lib/orbital/core/hydrogenic.js.map +1 -1
- package/lib/orbital/core/index.d.ts +1 -0
- package/lib/orbital/core/index.d.ts.map +1 -1
- package/lib/orbital/core/index.js +1 -0
- package/lib/orbital/core/index.js.map +1 -1
- package/lib/orbital/core/slaterEnergy.d.ts +35 -0
- package/lib/orbital/core/slaterEnergy.d.ts.map +1 -0
- package/lib/orbital/core/slaterEnergy.js +66 -0
- package/lib/orbital/core/slaterEnergy.js.map +1 -0
- package/lib/overlay/core/index.d.ts +2 -2
- package/lib/overlay/core/index.d.ts.map +1 -1
- package/lib/overlay/core/index.js +1 -1
- package/lib/overlay/core/index.js.map +1 -1
- package/lib/overlay/core/overlayMarks.d.ts +20 -5
- package/lib/overlay/core/overlayMarks.d.ts.map +1 -1
- package/lib/overlay/core/overlayMarks.js +31 -5
- package/lib/overlay/core/overlayMarks.js.map +1 -1
- package/lib/overlay/ui/OverlayLegendMark.js +5 -0
- package/lib/overlay/ui/OverlayLegendMark.js.map +1 -1
- package/lib/projection/core/index.d.ts +4 -4
- package/lib/projection/core/index.d.ts.map +1 -1
- package/lib/projection/core/index.js +2 -2
- package/lib/projection/core/index.js.map +1 -1
- package/lib/projection/core/projectionCopy.d.ts +2 -0
- package/lib/projection/core/projectionCopy.d.ts.map +1 -1
- package/lib/projection/core/projectionCopy.js +1 -0
- package/lib/projection/core/projectionCopy.js.map +1 -1
- package/lib/projection/core/projectionGroupings.d.ts +44 -0
- package/lib/projection/core/projectionGroupings.d.ts.map +1 -0
- package/lib/projection/core/projectionGroupings.js +132 -0
- package/lib/projection/core/projectionGroupings.js.map +1 -0
- package/lib/projection/core/projectionOptions.d.ts +16 -6
- package/lib/projection/core/projectionOptions.d.ts.map +1 -1
- package/lib/projection/core/projectionOptions.js +7 -1
- package/lib/projection/core/projectionOptions.js.map +1 -1
- package/lib/projection/core/projectionPanelWords.d.ts +6 -0
- package/lib/projection/core/projectionPanelWords.d.ts.map +1 -1
- package/lib/projection/core/projectionPanelWords.js +4 -0
- package/lib/projection/core/projectionPanelWords.js.map +1 -1
- package/lib/projection/core/projectionSamples.d.ts +63 -32
- package/lib/projection/core/projectionSamples.d.ts.map +1 -1
- package/lib/projection/core/projectionSamples.js +1 -80
- package/lib/projection/core/projectionSamples.js.map +1 -1
- package/lib/projection/core/projectionStrings.d.ts +2 -0
- package/lib/projection/core/projectionStrings.d.ts.map +1 -1
- package/lib/projection/core/projectionStrings.js +10 -1
- package/lib/projection/core/projectionStrings.js.map +1 -1
- package/lib/projection/core/resolveProjectionOptions.d.ts +8 -3
- package/lib/projection/core/resolveProjectionOptions.d.ts.map +1 -1
- package/lib/projection/core/resolveProjectionOptions.js +58 -5
- package/lib/projection/core/resolveProjectionOptions.js.map +1 -1
- package/lib/projection/ui/ProjectionBar.d.ts +1 -1
- package/lib/projection/ui/ProjectionBar.d.ts.map +1 -1
- package/lib/projection/ui/ProjectionBar.js +3 -1
- package/lib/projection/ui/ProjectionBar.js.map +1 -1
- package/lib/projection/ui/ProjectionGroupingPickers.d.ts +38 -0
- package/lib/projection/ui/ProjectionGroupingPickers.d.ts.map +1 -0
- package/lib/projection/ui/ProjectionGroupingPickers.js +33 -0
- package/lib/projection/ui/ProjectionGroupingPickers.js.map +1 -0
- package/lib/projection/ui/ProjectionMapControls.d.ts +6 -7
- package/lib/projection/ui/ProjectionMapControls.d.ts.map +1 -1
- package/lib/projection/ui/ProjectionMapControls.js +11 -9
- package/lib/projection/ui/ProjectionMapControls.js.map +1 -1
- package/lib/projection/ui/ProjectionMapLegend.d.ts.map +1 -1
- package/lib/projection/ui/ProjectionMapLegend.js +1 -1
- package/lib/projection/ui/ProjectionMapLegend.js.map +1 -1
- package/lib/projection/ui/ProjectionMapMore.d.ts +2 -2
- package/lib/projection/ui/ProjectionMapMore.d.ts.map +1 -1
- package/lib/projection/ui/ProjectionMapMore.js +7 -5
- package/lib/projection/ui/ProjectionMapMore.js.map +1 -1
- package/lib/projection/ui/ProjectionMapTab.d.ts +15 -6
- package/lib/projection/ui/ProjectionMapTab.d.ts.map +1 -1
- package/lib/projection/ui/ProjectionMapTab.js +11 -7
- package/lib/projection/ui/ProjectionMapTab.js.map +1 -1
- package/lib/projection/ui/ProjectionPairsMore.d.ts +3 -7
- package/lib/projection/ui/ProjectionPairsMore.d.ts.map +1 -1
- package/lib/projection/ui/ProjectionPairsMore.js +4 -5
- package/lib/projection/ui/ProjectionPairsMore.js.map +1 -1
- package/lib/projection/ui/ProjectionPairsTab.d.ts.map +1 -1
- package/lib/projection/ui/ProjectionPairsTab.js +2 -2
- package/lib/projection/ui/ProjectionPairsTab.js.map +1 -1
- package/lib/projection/ui/ProjectionPanel.d.ts +1 -1
- package/lib/projection/ui/ProjectionPanel.d.ts.map +1 -1
- package/lib/projection/ui/ProjectionPanel.js +1 -1
- package/lib/projection/ui/ProjectionPanel.js.map +1 -1
- package/lib/projection/ui/ProjectionReadout.d.ts +7 -1
- package/lib/projection/ui/ProjectionReadout.d.ts.map +1 -1
- package/lib/projection/ui/ProjectionReadout.js +19 -7
- package/lib/projection/ui/ProjectionReadout.js.map +1 -1
- package/lib/projection/ui/ProjectionSpaceControls.d.ts +3 -5
- package/lib/projection/ui/ProjectionSpaceControls.d.ts.map +1 -1
- package/lib/projection/ui/ProjectionSpaceControls.js +9 -7
- package/lib/projection/ui/ProjectionSpaceControls.js.map +1 -1
- package/lib/projection/ui/ProjectionSpaceMore.d.ts +2 -2
- package/lib/projection/ui/ProjectionSpaceMore.d.ts.map +1 -1
- package/lib/projection/ui/ProjectionSpaceMore.js +5 -4
- package/lib/projection/ui/ProjectionSpaceMore.js.map +1 -1
- package/lib/projection/ui/ProjectionSpaceTab.d.ts +11 -3
- package/lib/projection/ui/ProjectionSpaceTab.d.ts.map +1 -1
- package/lib/projection/ui/ProjectionSpaceTab.js +7 -4
- package/lib/projection/ui/ProjectionSpaceTab.js.map +1 -1
- package/lib/projection/ui/ProjectionViewer.d.ts.map +1 -1
- package/lib/projection/ui/ProjectionViewer.js +1 -0
- package/lib/projection/ui/ProjectionViewer.js.map +1 -1
- package/lib/projection/ui/projectionBarReadings.d.ts +4 -1
- package/lib/projection/ui/projectionBarReadings.d.ts.map +1 -1
- package/lib/projection/ui/projectionBarReadings.js +14 -4
- package/lib/projection/ui/projectionBarReadings.js.map +1 -1
- package/lib/projection/ui/projectionBarSlots.d.ts +4 -2
- package/lib/projection/ui/projectionBarSlots.d.ts.map +1 -1
- package/lib/projection/ui/projectionBarSlots.js +3 -7
- package/lib/projection/ui/projectionBarSlots.js.map +1 -1
- package/lib/projection/ui/projectionMapChoices.d.ts +31 -6
- package/lib/projection/ui/projectionMapChoices.d.ts.map +1 -1
- package/lib/projection/ui/projectionMapChoices.js +58 -9
- package/lib/projection/ui/projectionMapChoices.js.map +1 -1
- package/lib/projection/ui/projectionMapChrome.d.ts +3 -9
- package/lib/projection/ui/projectionMapChrome.d.ts.map +1 -1
- package/lib/projection/ui/projectionMapChrome.js +41 -27
- package/lib/projection/ui/projectionMapChrome.js.map +1 -1
- package/lib/projection/ui/projectionMapCorner.d.ts +25 -0
- package/lib/projection/ui/projectionMapCorner.d.ts.map +1 -0
- package/lib/projection/ui/projectionMapCorner.js +46 -0
- package/lib/projection/ui/projectionMapCorner.js.map +1 -0
- package/lib/projection/ui/projectionMapModel.d.ts +9 -18
- package/lib/projection/ui/projectionMapModel.d.ts.map +1 -1
- package/lib/projection/ui/projectionMapModel.js +14 -39
- package/lib/projection/ui/projectionMapModel.js.map +1 -1
- package/lib/projection/ui/projectionMapView.d.ts +3 -1
- package/lib/projection/ui/projectionMapView.d.ts.map +1 -1
- package/lib/projection/ui/projectionMapView.js +9 -4
- package/lib/projection/ui/projectionMapView.js.map +1 -1
- package/lib/projection/ui/projectionSelectionSentence.d.ts +10 -0
- package/lib/projection/ui/projectionSelectionSentence.d.ts.map +1 -0
- package/lib/projection/ui/projectionSelectionSentence.js +18 -0
- package/lib/projection/ui/projectionSelectionSentence.js.map +1 -0
- package/lib/projection/ui/projectionStateApi.d.ts +47 -0
- package/lib/projection/ui/projectionStateApi.d.ts.map +1 -0
- package/lib/projection/ui/projectionStateApi.js +9 -0
- package/lib/projection/ui/projectionStateApi.js.map +1 -0
- package/lib/projection/ui/projectionTabModels.js +1 -1
- package/lib/projection/ui/projectionTabModels.js.map +1 -1
- package/lib/projection/ui/useProjectionState.d.ts +1 -29
- package/lib/projection/ui/useProjectionState.d.ts.map +1 -1
- package/lib/projection/ui/useProjectionState.js +13 -5
- package/lib/projection/ui/useProjectionState.js.map +1 -1
- package/lib/scatter/core/index.d.ts +1 -0
- package/lib/scatter/core/index.d.ts.map +1 -1
- package/lib/scatter/core/index.js +1 -0
- package/lib/scatter/core/index.js.map +1 -1
- package/lib/scatter/core/pointShape.d.ts +18 -0
- package/lib/scatter/core/pointShape.d.ts.map +1 -0
- package/lib/scatter/core/pointShape.js +70 -0
- package/lib/scatter/core/pointShape.js.map +1 -0
- package/lib/scatter/ui/ScatterPlot.d.ts.map +1 -1
- package/lib/scatter/ui/ScatterPlot.js +3 -2
- package/lib/scatter/ui/ScatterPlot.js.map +1 -1
- package/lib/scatter/ui/ScatterPointLayer.d.ts +14 -1
- package/lib/scatter/ui/ScatterPointLayer.d.ts.map +1 -1
- package/lib/scatter/ui/ScatterPointLayer.js +15 -3
- package/lib/scatter/ui/ScatterPointLayer.js.map +1 -1
- package/lib/scatter/ui/scatterFigureProps.d.ts +13 -0
- package/lib/scatter/ui/scatterFigureProps.d.ts.map +1 -1
- package/lib/scatter/ui/scatterMarkGlyph.d.ts +2 -1
- package/lib/scatter/ui/scatterMarkGlyph.d.ts.map +1 -1
- package/lib/scatter/ui/scatterMarkGlyph.js +7 -1
- package/lib/scatter/ui/scatterMarkGlyph.js.map +1 -1
- package/lib/scatter3d/ui/ScatterCloud.d.ts.map +1 -1
- package/lib/scatter3d/ui/ScatterCloud.js +2 -1
- package/lib/scatter3d/ui/ScatterCloud.js.map +1 -1
- package/lib/shared/ui/MenuButton.d.ts +3 -2
- package/lib/shared/ui/MenuButton.d.ts.map +1 -1
- package/lib/shared/ui/MenuButton.js +1 -1
- package/lib/shared/ui/MenuButton.js.map +1 -1
- package/lib/structure/core/conformerMinimise.d.ts +36 -0
- package/lib/structure/core/conformerMinimise.d.ts.map +1 -0
- package/lib/structure/core/conformerMinimise.js +81 -0
- package/lib/structure/core/conformerMinimise.js.map +1 -0
- package/lib/structure/core/conformerMinimum.d.ts +62 -0
- package/lib/structure/core/conformerMinimum.d.ts.map +1 -0
- package/lib/structure/core/conformerMinimum.js +90 -0
- package/lib/structure/core/conformerMinimum.js.map +1 -0
- package/lib/structure/core/conformerOptions.d.ts +62 -0
- package/lib/structure/core/conformerOptions.d.ts.map +1 -0
- package/lib/structure/core/conformerOptions.js +83 -0
- package/lib/structure/core/conformerOptions.js.map +1 -0
- package/lib/structure/core/conformerRefine.d.ts +104 -0
- package/lib/structure/core/conformerRefine.d.ts.map +1 -0
- package/lib/structure/core/conformerRefine.js +130 -0
- package/lib/structure/core/conformerRefine.js.map +1 -0
- package/lib/structure/core/conformerRefineRank.d.ts +36 -0
- package/lib/structure/core/conformerRefineRank.d.ts.map +1 -0
- package/lib/structure/core/conformerRefineRank.js +69 -0
- package/lib/structure/core/conformerRefineRank.js.map +1 -0
- package/lib/structure/core/conformerSession.d.ts +50 -0
- package/lib/structure/core/conformerSession.d.ts.map +1 -0
- package/lib/structure/core/conformerSession.js +88 -0
- package/lib/structure/core/conformerSession.js.map +1 -0
- package/lib/structure/core/conformerShape.d.ts +36 -0
- package/lib/structure/core/conformerShape.d.ts.map +1 -0
- package/lib/structure/core/conformerShape.js +150 -0
- package/lib/structure/core/conformerShape.js.map +1 -0
- package/lib/structure/core/conformers.d.ts +107 -0
- package/lib/structure/core/conformers.d.ts.map +1 -0
- package/lib/structure/core/conformers.js +149 -0
- package/lib/structure/core/conformers.js.map +1 -0
- package/lib/structure/core/geometryRelaxer.d.ts +66 -0
- package/lib/structure/core/geometryRelaxer.d.ts.map +1 -0
- package/lib/structure/core/geometryRelaxer.js +2 -0
- package/lib/structure/core/geometryRelaxer.js.map +1 -0
- package/lib/structure/core/index.d.ts +4 -0
- package/lib/structure/core/index.d.ts.map +1 -1
- package/lib/structure/core/index.js +2 -0
- package/lib/structure/core/index.js.map +1 -1
- package/lib/structure/core/moleculeCoordinates.d.ts +31 -0
- package/lib/structure/core/moleculeCoordinates.d.ts.map +1 -0
- package/lib/structure/core/moleculeCoordinates.js +80 -0
- package/lib/structure/core/moleculeCoordinates.js.map +1 -0
- package/lib/structure/core/molfileExport.d.ts +42 -0
- package/lib/structure/core/molfileExport.d.ts.map +1 -0
- package/lib/structure/core/molfileExport.js +47 -0
- package/lib/structure/core/molfileExport.js.map +1 -0
- package/lib/structure/core/oclResources.d.ts +12 -0
- package/lib/structure/core/oclResources.d.ts.map +1 -0
- package/lib/structure/core/oclResources.js +35 -0
- package/lib/structure/core/oclResources.js.map +1 -0
- package/lib/translate/core/catalog.d.ts +61 -0
- package/lib/translate/core/catalog.d.ts.map +1 -0
- package/lib/translate/core/catalog.js +49 -0
- package/lib/translate/core/catalog.js.map +1 -0
- package/lib/translate/core/checkTranslation.d.ts +32 -0
- package/lib/translate/core/checkTranslation.d.ts.map +1 -0
- package/lib/translate/core/checkTranslation.js +98 -0
- package/lib/translate/core/checkTranslation.js.map +1 -0
- package/lib/translate/core/contribution.d.ts +88 -0
- package/lib/translate/core/contribution.d.ts.map +1 -0
- package/lib/translate/core/contribution.js +14 -0
- package/lib/translate/core/contribution.js.map +1 -0
- package/lib/translate/core/index.d.ts +19 -0
- package/lib/translate/core/index.d.ts.map +1 -0
- package/lib/translate/core/index.js +15 -0
- package/lib/translate/core/index.js.map +1 -0
- package/lib/translate/core/marker.d.ts +45 -0
- package/lib/translate/core/marker.d.ts.map +1 -0
- package/lib/translate/core/marker.js +79 -0
- package/lib/translate/core/marker.js.map +1 -0
- package/lib/translate/core/mergeMessages.d.ts +35 -0
- package/lib/translate/core/mergeMessages.d.ts.map +1 -0
- package/lib/translate/core/mergeMessages.js +69 -0
- package/lib/translate/core/mergeMessages.js.map +1 -0
- package/lib/translate/core/session.d.ts +102 -0
- package/lib/translate/core/session.d.ts.map +1 -0
- package/lib/translate/core/session.js +162 -0
- package/lib/translate/core/session.js.map +1 -0
- package/lib/translate/core/start.d.ts +70 -0
- package/lib/translate/core/start.d.ts.map +1 -0
- package/lib/translate/core/start.js +73 -0
- package/lib/translate/core/start.js.map +1 -0
- package/lib/translate/core/suggestions.d.ts +77 -0
- package/lib/translate/core/suggestions.d.ts.map +1 -0
- package/lib/translate/core/suggestions.js +143 -0
- package/lib/translate/core/suggestions.js.map +1 -0
- package/lib/translate/core/tables.d.ts +100 -0
- package/lib/translate/core/tables.d.ts.map +1 -0
- package/lib/translate/core/tables.js +51 -0
- package/lib/translate/core/tables.js.map +1 -0
- package/lib/translate.d.ts +2 -0
- package/lib/translate.d.ts.map +1 -0
- package/lib/translate.js +6 -0
- package/lib/translate.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/lib/xtb/core/xtbRelaxer.d.ts +61 -0
- package/lib/xtb/core/xtbRelaxer.d.ts.map +1 -0
- package/lib/xtb/core/xtbRelaxer.js +108 -0
- package/lib/xtb/core/xtbRelaxer.js.map +1 -0
- package/lib/xtb.d.ts +11 -0
- package/lib/xtb.d.ts.map +1 -0
- package/lib/xtb.js +10 -0
- package/lib/xtb.js.map +1 -0
- package/package.json +18 -11
- package/src/chrome/ui/HeaderToggle.tsx +100 -0
- package/src/chrome/ui/index.ts +2 -0
- package/src/citation/core/gfn2Paper.ts +32 -0
- package/src/citation/core/index.ts +1 -0
- package/src/clipboard/ui/ClickToCopy.tsx +8 -7
- package/src/conformers.ts +87 -0
- package/src/core.ts +1 -0
- package/src/credits/core/credits.ts +16 -0
- package/src/ecosystem/core/index.ts +1 -0
- package/src/ecosystem/core/sites.ts +20 -2
- package/src/ecosystem/ui/EcosystemLinks.tsx +3 -1
- package/src/ecosystem/ui/SiteTile.tsx +3 -1
- package/src/format/core/index.ts +1 -1
- package/src/format/core/words.ts +19 -0
- package/src/language/core/index.ts +7 -0
- package/src/language/core/languageName.ts +16 -0
- package/src/language/core/languageParam.ts +70 -0
- package/src/language/ui/SiteLanguage.tsx +26 -0
- package/src/language/ui/index.ts +3 -0
- package/src/language/ui/siteLanguageContext.ts +20 -0
- package/src/orbital/core/atomicOrbitals.ts +17 -1
- package/src/orbital/core/hydrogenic.ts +2 -1
- package/src/orbital/core/index.ts +1 -0
- package/src/orbital/core/slaterEnergy.ts +83 -0
- package/src/overlay/core/index.ts +6 -2
- package/src/overlay/core/overlayMarks.ts +51 -6
- package/src/overlay/ui/OverlayLegendMark.tsx +5 -0
- package/src/projection/core/index.ts +11 -3
- package/src/projection/core/projectionCopy.ts +3 -0
- package/src/projection/core/projectionGroupings.ts +174 -0
- package/src/projection/core/projectionOptions.ts +18 -7
- package/src/projection/core/projectionPanelWords.ts +10 -0
- package/src/projection/core/projectionSamples.ts +62 -120
- package/src/projection/core/projectionStrings.ts +12 -1
- package/src/projection/core/resolveProjectionOptions.ts +66 -4
- package/src/projection/ui/ProjectionBar.tsx +4 -2
- package/src/projection/ui/ProjectionGroupingPickers.tsx +91 -0
- package/src/projection/ui/ProjectionMapControls.tsx +29 -32
- package/src/projection/ui/ProjectionMapLegend.tsx +1 -1
- package/src/projection/ui/ProjectionMapMore.tsx +14 -4
- package/src/projection/ui/ProjectionMapTab.tsx +27 -9
- package/src/projection/ui/ProjectionPairsMore.tsx +12 -21
- package/src/projection/ui/ProjectionPairsTab.tsx +5 -2
- package/src/projection/ui/ProjectionPanel.tsx +7 -3
- package/src/projection/ui/ProjectionReadout.tsx +28 -8
- package/src/projection/ui/ProjectionSpaceControls.tsx +20 -27
- package/src/projection/ui/ProjectionSpaceMore.tsx +12 -3
- package/src/projection/ui/ProjectionSpaceTab.tsx +23 -6
- package/src/projection/ui/ProjectionViewer.tsx +1 -0
- package/src/projection/ui/projectionBarReadings.ts +24 -8
- package/src/projection/ui/projectionBarSlots.tsx +10 -9
- package/src/projection/ui/projectionMapChoices.ts +71 -14
- package/src/projection/ui/projectionMapChrome.ts +55 -30
- package/src/projection/ui/projectionMapCorner.ts +67 -0
- package/src/projection/ui/projectionMapModel.ts +20 -59
- package/src/projection/ui/projectionMapView.ts +15 -8
- package/src/projection/ui/projectionSelectionSentence.ts +22 -0
- package/src/projection/ui/projectionStateApi.ts +57 -0
- package/src/projection/ui/projectionTabModels.ts +1 -1
- package/src/projection/ui/useProjectionState.ts +33 -37
- package/src/scatter/core/index.ts +1 -0
- package/src/scatter/core/pointShape.ts +80 -0
- package/src/scatter/ui/ScatterPlot.tsx +4 -1
- package/src/scatter/ui/ScatterPointLayer.tsx +39 -11
- package/src/scatter/ui/scatterFigureProps.ts +13 -0
- package/src/scatter/ui/scatterMarkGlyph.tsx +9 -1
- package/src/scatter3d/ui/ScatterCloud.tsx +3 -0
- package/src/shared/ui/MenuButton.tsx +4 -3
- package/src/structure/core/conformerMinimise.ts +99 -0
- package/src/structure/core/conformerMinimum.ts +125 -0
- package/src/structure/core/conformerOptions.ts +125 -0
- package/src/structure/core/conformerRefine.ts +234 -0
- package/src/structure/core/conformerRefineRank.ts +89 -0
- package/src/structure/core/conformerSession.ts +123 -0
- package/src/structure/core/conformerShape.ts +181 -0
- package/src/structure/core/conformers.ts +282 -0
- package/src/structure/core/geometryRelaxer.ts +71 -0
- package/src/structure/core/index.ts +13 -0
- package/src/structure/core/moleculeCoordinates.ts +93 -0
- package/src/structure/core/molfileExport.ts +62 -0
- package/src/structure/core/oclResources.ts +41 -0
- package/src/translate/core/catalog.ts +83 -0
- package/src/translate/core/checkTranslation.ts +128 -0
- package/src/translate/core/contribution.ts +99 -0
- package/src/translate/core/index.ts +72 -0
- package/src/translate/core/marker.ts +85 -0
- package/src/translate/core/mergeMessages.ts +74 -0
- package/src/translate/core/session.ts +250 -0
- package/src/translate/core/start.ts +121 -0
- package/src/translate/core/suggestions.ts +211 -0
- package/src/translate/core/tables.ts +120 -0
- package/src/translate.ts +5 -0
- package/src/ui.ts +1 -0
- package/src/xtb/core/xtbRelaxer.ts +160 -0
- package/src/xtb.ts +16 -0
- package/styles/chrome.css +61 -30
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { clampAxisIndex, clampAxisPair, } from "../../chart/core/chartAxisPair.js";
|
|
2
2
|
import { clamp } from "../../format/core/clamp.js";
|
|
3
|
-
import { DEFAULT_PROJECTION_OPTIONS } from "./projectionOptions.js";
|
|
3
|
+
import { DEFAULT_PROJECTION_OPTIONS, NO_GROUPING, } from "./projectionOptions.js";
|
|
4
4
|
import { drawableVariablesView } from "./variablesView.js";
|
|
5
5
|
/**
|
|
6
6
|
* The options the viewer will use, with a caller's overrides merged in and
|
|
@@ -9,22 +9,28 @@ import { drawableVariablesView } from "./variablesView.js";
|
|
|
9
9
|
* A saved option outlives the data it was made on: reload with fewer samples
|
|
10
10
|
* and axis eight no longer exists. Rather than let a plot ask for a column
|
|
11
11
|
* that is not there, the two axes are pulled back inside what was computed and
|
|
12
|
-
* kept apart, the counts are held inside what exists,
|
|
13
|
-
* missing falls back to `weights
|
|
12
|
+
* kept apart, the counts are held inside what exists, a view whose data is
|
|
13
|
+
* missing falls back to `weights`, and the colour and the shape name groupings
|
|
14
|
+
* the samples actually carry.
|
|
14
15
|
* @param overrides - What the caller asked for.
|
|
15
16
|
* @param result - The reduced space the options will be applied to.
|
|
17
|
+
* @param groupings - The groupings the samples carry.
|
|
18
|
+
* @default undefined — the colour and the shape are left as they were asked
|
|
19
|
+
* for, since nothing says which groupings exist
|
|
16
20
|
* @returns Every option, complete and safe.
|
|
17
21
|
*/
|
|
18
|
-
export function resolveProjectionOptions(overrides, result) {
|
|
22
|
+
export function resolveProjectionOptions(overrides, result, groupings) {
|
|
19
23
|
const axisCount = result.axes.length;
|
|
20
24
|
const lastAxis = Math.max(0, axisCount - 1);
|
|
21
25
|
const { x: xAxis, y: yAxis } = clampAxisPair(pick(overrides, 'xAxis'), pick(overrides, 'yAxis'), axisCount);
|
|
26
|
+
const colorBy = colourChoice(pick(overrides, 'colorBy'), groupings);
|
|
22
27
|
return {
|
|
23
28
|
xAxis,
|
|
24
29
|
yAxis,
|
|
25
30
|
zAxis: apartFrom(clampAxisIndex(pick(overrides, 'zAxis'), lastAxis), [xAxis, yAxis], lastAxis),
|
|
26
31
|
cloudGesture: pick(overrides, 'cloudGesture'),
|
|
27
|
-
colorBy
|
|
32
|
+
colorBy,
|
|
33
|
+
shapeBy: shapeChoice(pick(overrides, 'shapeBy'), groupings, colorBy),
|
|
28
34
|
ellipse: pick(overrides, 'ellipse'),
|
|
29
35
|
pointRadius: atLeast(pick(overrides, 'pointRadius'), 3.5, 0),
|
|
30
36
|
showGroupMeans: pick(overrides, 'showGroupMeans'),
|
|
@@ -49,6 +55,53 @@ function pick(overrides, key) {
|
|
|
49
55
|
const value = overrides?.[key];
|
|
50
56
|
return value === undefined ? DEFAULT_PROJECTION_OPTIONS[key] : value;
|
|
51
57
|
}
|
|
58
|
+
/**
|
|
59
|
+
* The grouping the colour will actually stand for.
|
|
60
|
+
*
|
|
61
|
+
* A saved choice outlives the data it was made on, so an id no grouping
|
|
62
|
+
* carries — or the empty string, which is how "the usual one" is asked for —
|
|
63
|
+
* falls to the first grouping, while `none` stays none.
|
|
64
|
+
* @param wanted - The id asked for.
|
|
65
|
+
* @param groupings - The groupings the samples carry.
|
|
66
|
+
* @returns A grouping's id, or `none`.
|
|
67
|
+
*/
|
|
68
|
+
function colourChoice(wanted, groupings) {
|
|
69
|
+
if (wanted === NO_GROUPING || groupings === undefined)
|
|
70
|
+
return wanted;
|
|
71
|
+
const ids = groupingIds(groupings);
|
|
72
|
+
return ids.includes(wanted) ? wanted : (ids[0] ?? NO_GROUPING);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* The grouping the shape will actually stand for.
|
|
76
|
+
*
|
|
77
|
+
* The usual one is the second grouping, since the first is the colour's; it is
|
|
78
|
+
* never read as "whichever the colour leaves free", or turning the colour off
|
|
79
|
+
* would suddenly give the dots shapes they did not have. Only when the colour
|
|
80
|
+
* has taken the second does the shape fall back to the first.
|
|
81
|
+
* @param wanted - The id asked for.
|
|
82
|
+
* @param groupings - The groupings the samples carry.
|
|
83
|
+
* @param colorBy - The grouping the colour already stands for.
|
|
84
|
+
* @returns A grouping's id, or `none`.
|
|
85
|
+
*/
|
|
86
|
+
function shapeChoice(wanted, groupings, colorBy) {
|
|
87
|
+
if (wanted === NO_GROUPING || groupings === undefined)
|
|
88
|
+
return wanted;
|
|
89
|
+
const ids = groupingIds(groupings);
|
|
90
|
+
if (wanted !== colorBy && ids.includes(wanted))
|
|
91
|
+
return wanted;
|
|
92
|
+
const [first, second] = ids;
|
|
93
|
+
if (second === undefined)
|
|
94
|
+
return NO_GROUPING;
|
|
95
|
+
if (second !== colorBy)
|
|
96
|
+
return second;
|
|
97
|
+
return first ?? NO_GROUPING;
|
|
98
|
+
}
|
|
99
|
+
function groupingIds(groupings) {
|
|
100
|
+
const ids = [];
|
|
101
|
+
for (const { id } of groupings)
|
|
102
|
+
ids.push(id);
|
|
103
|
+
return ids;
|
|
104
|
+
}
|
|
52
105
|
/**
|
|
53
106
|
* An axis that is none of the ones already drawn.
|
|
54
107
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveProjectionOptions.js","sourceRoot":"","sources":["../../../src/projection/core/resolveProjectionOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,aAAa,GACd,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAMnD,OAAO,
|
|
1
|
+
{"version":3,"file":"resolveProjectionOptions.js","sourceRoot":"","sources":["../../../src/projection/core/resolveProjectionOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,aAAa,GACd,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAMnD,OAAO,EACL,0BAA0B,EAC1B,WAAW,GACZ,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,wBAAwB,CACtC,SAAiD,EACjD,MAAwB,EACxB,SAAyC;IAEzC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;IACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC;IAC5C,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,aAAa,CAC1C,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,EACxB,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,EACxB,SAAS,CACV,CAAC;IACF,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC;IAEpE,OAAO;QACL,KAAK;QACL,KAAK;QACL,KAAK,EAAE,SAAS,CACd,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,EAClD,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,QAAQ,CACT;QACD,YAAY,EAAE,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC;QAC7C,OAAO;QACP,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC;QACpE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC;QACnC,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QAC5D,cAAc,EAAE,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC;QACjD,eAAe,EAAE,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC;QACnD,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC;QACnC,SAAS,EAAE,UAAU,CACnB,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,EAC5B,0BAA0B,CAAC,SAAS,EACpC,kBAAkB,EAClB,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,SAAS,CAAC,CACxC;QACD,aAAa,EAAE,qBAAqB,CAClC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,EAChC,MAAM,CAAC,QAAQ,CAChB;QACD,cAAc,EAAE,UAAU,CACxB,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,EACjC,0BAA0B,CAAC,cAAc,EACzC,oBAAoB,EACpB,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAC1C;QACD,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC;QAC3C,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC;QAC3C,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAChD,aAAa,EAAE,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC;QAC/C,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC1E,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC;KAC1C,CAAC;AACJ,CAAC;AAED,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAC7B,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAE/B,SAAS,IAAI,CACX,SAAiD,EACjD,GAAQ;IAER,sEAAsE;IACtE,qEAAqE;IACrE,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC;IAC/B,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,0BAA0B,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACvE,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,YAAY,CACnB,MAAc,EACd,SAAoD;IAEpD,IAAI,MAAM,KAAK,WAAW,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IACrE,MAAM,GAAG,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IACnC,OAAO,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC;AACjE,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,WAAW,CAClB,MAAc,EACd,SAAoD,EACpD,OAAe;IAEf,IAAI,MAAM,KAAK,WAAW,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IACrE,MAAM,GAAG,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IACnC,IAAI,MAAM,KAAK,OAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IAC9D,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,GAAG,CAAC;IAC5B,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,WAAW,CAAC;IAC7C,IAAI,MAAM,KAAK,OAAO;QAAE,OAAO,MAAM,CAAC;IACtC,OAAO,KAAK,IAAI,WAAW,CAAC;AAC9B,CAAC;AAED,SAAS,WAAW,CAAC,SAAwC;IAC3D,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,EAAE,EAAE,EAAE,IAAI,SAAS;QAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7C,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,SAAS,CAChB,MAAc,EACd,KAAwB,EACxB,QAAgB;IAEhB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IAC3C,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC;QAC5C,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;IACzC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,UAAU,CACjB,KAAa,EACb,QAAgB,EAChB,MAAc,EACd,OAAe;IAEf,OAAO,KAAK,CACV,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,EACrD,MAAM,EACN,OAAO,CACR,CAAC;AACJ,CAAC;AAED,SAAS,OAAO,CAAC,KAAa,EAAE,QAAgB,EAAE,KAAa;IAC7D,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AACpE,CAAC"}
|
|
@@ -2,8 +2,8 @@ import type { ReactElement } from 'react';
|
|
|
2
2
|
import type { ProjectionCopy } from '../core/projectionCopy.ts';
|
|
3
3
|
import type { ProjectionResult } from '../core/projectionResult.ts';
|
|
4
4
|
import type { ProjectionMapView } from './projectionMapView.ts';
|
|
5
|
+
import type { ProjectionStateApi } from './projectionStateApi.ts';
|
|
5
6
|
import type { ProjectionModels } from './projectionTabModels.ts';
|
|
6
|
-
import type { ProjectionStateApi } from './useProjectionState.ts';
|
|
7
7
|
/** What {@link ProjectionBar} needs. */
|
|
8
8
|
interface ProjectionBarProps {
|
|
9
9
|
/** The tab, the options and the selection every tab shares. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectionBar.d.ts","sourceRoot":"","sources":["../../../src/projection/ui/ProjectionBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,OAAO,CAAC;AASrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAkBpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"ProjectionBar.d.ts","sourceRoot":"","sources":["../../../src/projection/ui/ProjectionBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,OAAO,CAAC;AASrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAkBpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,wCAAwC;AACxC,UAAU,kBAAkB;IAC1B,+DAA+D;IAC/D,KAAK,EAAE,kBAAkB,CAAC;IAC1B,mDAAmD;IACnD,MAAM,EAAE,gBAAgB,CAAC;IACzB,qEAAqE;IACrE,IAAI,EAAE,cAAc,CAAC;IACrB,wDAAwD;IACxD,MAAM,EAAE,gBAAgB,CAAC;IACzB,4DAA4D;IAC5D,GAAG,EAAE,iBAAiB,CAAC;IACvB,+EAA+E;IAC/E,MAAM,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;IAChB,yEAAyE;IACzE,QAAQ,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,YAAY,CA6FrE"}
|
|
@@ -40,7 +40,8 @@ import { PROJECTION_CAPTION_TEXT_STYLE, projectionBarEndStyle, projectionBarRowS
|
|
|
40
40
|
export function ProjectionBar(props) {
|
|
41
41
|
const { state, result, copy, models, map, baseId, panelId } = props;
|
|
42
42
|
const { fileName, width } = props;
|
|
43
|
-
const { tab, tabs, options, groups,
|
|
43
|
+
const { tab, tabs, options, groups, groupings, selected } = state;
|
|
44
|
+
const { setOptions, setTab } = state;
|
|
44
45
|
// Read here rather than off the surface below, because the row the bar is
|
|
45
46
|
// laid into is the surface's own parent: it has to know how tall a control
|
|
46
47
|
// will be before there is a surface to ask.
|
|
@@ -66,6 +67,7 @@ export function ProjectionBar(props) {
|
|
|
66
67
|
map,
|
|
67
68
|
options,
|
|
68
69
|
groups,
|
|
70
|
+
groupings,
|
|
69
71
|
selected,
|
|
70
72
|
width,
|
|
71
73
|
readings,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectionBar.js","sourceRoot":"","sources":["../../../src/projection/ui/ProjectionBar.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAsC,CAAC;AAEtE,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAiC,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAkC,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAKtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAyB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAA0B,CAAC;AAC9D,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAA0B,CAAC;AAC9D,OAAO,EACL,6BAA6B,EAC7B,qBAAqB,EACrB,qBAAqB,EACrB,4BAA4B,GAC7B,MAAM,0BAA0B,CAAC;AA2BlC;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,aAAa,CAAC,KAAyB;IACrD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IACpE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IAClC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"ProjectionBar.js","sourceRoot":"","sources":["../../../src/projection/ui/ProjectionBar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { ReactElement } from 'react';
|
|
2
|
+
import type { ProjectionCopy } from '../core/projectionCopy.ts';
|
|
3
|
+
import type { ProjectionOptions } from '../core/projectionOptions.ts';
|
|
4
|
+
import type { ProjectionGrouping } from '../core/projectionSamples.ts';
|
|
5
|
+
/** What a grouping picker needs. */
|
|
6
|
+
interface ProjectionGroupingPickerProps {
|
|
7
|
+
/** What the figure is showing, already resolved against the result. */
|
|
8
|
+
options: ProjectionOptions;
|
|
9
|
+
/** Called with only the options that changed. */
|
|
10
|
+
onChange: (patch: Partial<ProjectionOptions>) => void;
|
|
11
|
+
/** The words the viewer writes. */
|
|
12
|
+
copy: ProjectionCopy;
|
|
13
|
+
/** Every grouping the samples carry. */
|
|
14
|
+
groupings: readonly ProjectionGrouping[];
|
|
15
|
+
/** What the setting is called beside the control. */
|
|
16
|
+
label: string;
|
|
17
|
+
}
|
|
18
|
+
/** What the shape picker needs on top of what every grouping picker takes. */
|
|
19
|
+
interface ProjectionShapePickerProps extends ProjectionGroupingPickerProps {
|
|
20
|
+
/** How many rows there are, which is what a grouping is cut over. */
|
|
21
|
+
rows: number;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* What the colour stands for, as segments while the choices fit on one row
|
|
25
|
+
* and as a list past that.
|
|
26
|
+
* @param props - See {@link ProjectionGroupingPickerProps}.
|
|
27
|
+
* @returns The picker, greyed while the samples carry no grouping.
|
|
28
|
+
*/
|
|
29
|
+
export declare function ProjectionColourPicker(props: ProjectionGroupingPickerProps): ReactElement;
|
|
30
|
+
/**
|
|
31
|
+
* What the shape stands for. It is always a list, so a grouping that cannot be
|
|
32
|
+
* shaped keeps its name, greyed, with the reason on the pointer.
|
|
33
|
+
* @param props - See {@link ProjectionShapePickerProps}.
|
|
34
|
+
* @returns The picker, greyed while the samples carry no grouping.
|
|
35
|
+
*/
|
|
36
|
+
export declare function ProjectionShapePicker(props: ProjectionShapePickerProps): ReactElement;
|
|
37
|
+
export {};
|
|
38
|
+
//# sourceMappingURL=ProjectionGroupingPickers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProjectionGroupingPickers.d.ts","sourceRoot":"","sources":["../../../src/projection/ui/ProjectionGroupingPickers.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAI1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAQvE,oCAAoC;AACpC,UAAU,6BAA6B;IACrC,uEAAuE;IACvE,OAAO,EAAE,iBAAiB,CAAC;IAC3B,iDAAiD;IACjD,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IACtD,mCAAmC;IACnC,IAAI,EAAE,cAAc,CAAC;IACrB,wCAAwC;IACxC,SAAS,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACzC,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAC;CACf;AAED,8EAA8E;AAC9E,UAAU,0BAA2B,SAAQ,6BAA6B;IACxE,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,6BAA6B,GACnC,YAAY,CAkBd;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,0BAA0B,GAChC,YAAY,CAad"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { OverlaySegmented } from "../../overlay/ui/OverlaySegmented.js";
|
|
3
|
+
import { OverlaySelect } from "../../overlay/ui/OverlaySelect.js";
|
|
4
|
+
import { projectionColourChoices, projectionColourPatch, projectionShapeChoices, } from "./projectionMapChoices.js";
|
|
5
|
+
/**
|
|
6
|
+
* What the colour stands for, as segments while the choices fit on one row
|
|
7
|
+
* and as a list past that.
|
|
8
|
+
* @param props - See {@link ProjectionGroupingPickerProps}.
|
|
9
|
+
* @returns The picker, greyed while the samples carry no grouping.
|
|
10
|
+
*/
|
|
11
|
+
export function ProjectionColourPicker(props) {
|
|
12
|
+
const { options, onChange, copy, groupings, label } = props;
|
|
13
|
+
const choices = projectionColourChoices(groupings, copy.bar.uncoloured);
|
|
14
|
+
const Picker = choices.length > MOST_SEGMENTS ? OverlaySelect : OverlaySegmented;
|
|
15
|
+
return (_jsx(Picker, { label: label, help: copy.help.colorBy, value: options.colorBy, disabled: groupings.length === 0, options: choices, onChange: (colorBy) => onChange(projectionColourPatch(options, colorBy)) }));
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* What the shape stands for. It is always a list, so a grouping that cannot be
|
|
19
|
+
* shaped keeps its name, greyed, with the reason on the pointer.
|
|
20
|
+
* @param props - See {@link ProjectionShapePickerProps}.
|
|
21
|
+
* @returns The picker, greyed while the samples carry no grouping.
|
|
22
|
+
*/
|
|
23
|
+
export function ProjectionShapePicker(props) {
|
|
24
|
+
const { options, onChange, copy, groupings, label, rows } = props;
|
|
25
|
+
return (_jsx(OverlaySelect, { label: label, help: copy.help.shapeBy, value: options.shapeBy, disabled: groupings.length === 0, options: projectionShapeChoices(groupings, options, rows, copy), onChange: (shapeBy) => onChange({ shapeBy }) }));
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* How many choices a row of segments holds before it is written as a list: a
|
|
29
|
+
* segment carries a grouping's whole name, and past three they no longer fit
|
|
30
|
+
* the width of a panel.
|
|
31
|
+
*/
|
|
32
|
+
const MOST_SEGMENTS = 3;
|
|
33
|
+
//# sourceMappingURL=ProjectionGroupingPickers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProjectionGroupingPickers.js","sourceRoot":"","sources":["../../../src/projection/ui/ProjectionGroupingPickers.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAuC,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAoC,CAAC;AAKnE,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,2BAA2B,CAAC;AAsBnC;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CACpC,KAAoC;IAEpC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IAC5D,MAAM,OAAO,GAAG,uBAAuB,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACxE,MAAM,MAAM,GACV,OAAO,CAAC,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,gBAAgB,CAAC;IAEpE,OAAO,CACL,KAAC,MAAM,IACL,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EACvB,KAAK,EAAE,OAAO,CAAC,OAAO,EACtB,QAAQ,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAChC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,CAAC,OAAe,EAAE,EAAE,CAC5B,QAAQ,CAAC,qBAAqB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,GAEnD,CACH,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAAiC;IAEjC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IAElE,OAAO,CACL,KAAC,aAAa,IACZ,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EACvB,KAAK,EAAE,OAAO,CAAC,OAAO,EACtB,QAAQ,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAChC,OAAO,EAAE,sBAAsB,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAC/D,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,GAC5C,CACH,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,aAAa,GAAG,CAAC,CAAC"}
|
|
@@ -2,6 +2,7 @@ import type { ReactElement } from 'react';
|
|
|
2
2
|
import type { OverlayTier } from '../../overlay/core/overlayTiers.ts';
|
|
3
3
|
import type { ProjectionCopy } from '../core/projectionCopy.ts';
|
|
4
4
|
import type { ProjectionOptions } from '../core/projectionOptions.ts';
|
|
5
|
+
import type { ProjectionGrouping } from '../core/projectionSamples.ts';
|
|
5
6
|
import type { ProjectionReading } from './projectionBarReadings.ts';
|
|
6
7
|
/** What the map's controls are drawn from, wherever in the bar they sit. */
|
|
7
8
|
export interface ProjectionMapControlsProps {
|
|
@@ -11,15 +12,13 @@ export interface ProjectionMapControlsProps {
|
|
|
11
12
|
onChange: (patch: Partial<ProjectionOptions>) => void;
|
|
12
13
|
/** The words the bar writes, already merged over the defaults. */
|
|
13
14
|
copy: ProjectionCopy;
|
|
14
|
-
/** What the set of groups is called, which is what `Colour by` offers. */
|
|
15
|
-
groupLabel: string;
|
|
16
15
|
/**
|
|
17
|
-
*
|
|
18
|
-
* outlines stand for nothing, so their
|
|
19
|
-
* removed: a reader who cannot find a
|
|
20
|
-
*
|
|
16
|
+
* Every grouping the samples carry, which is what `Colour by` offers.
|
|
17
|
+
* Without one the colour and the outlines stand for nothing, so their
|
|
18
|
+
* controls are greyed rather than removed: a reader who cannot find a
|
|
19
|
+
* control assumes the figure has none.
|
|
21
20
|
*/
|
|
22
|
-
|
|
21
|
+
groupings: readonly ProjectionGrouping[];
|
|
23
22
|
/**
|
|
24
23
|
* What the two settings currently read, with the figure's own colours. They
|
|
25
24
|
* are built once for the bar and handed down rather than spelled again here,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectionMapControls.d.ts","sourceRoot":"","sources":["../../../src/projection/ui/ProjectionMapControls.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"ProjectionMapControls.d.ts","sourceRoot":"","sources":["../../../src/projection/ui/ProjectionMapControls.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAKtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAGvE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAapE,4EAA4E;AAC5E,MAAM,WAAW,0BAA0B;IACzC,oEAAoE;IACpE,OAAO,EAAE,iBAAiB,CAAC;IAC3B,0EAA0E;IAC1E,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IACtD,kEAAkE;IAClE,IAAI,EAAE,cAAc,CAAC;IACrB;;;;;OAKG;IACH,SAAS,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACzC;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACxC;;;OAGG;IACH,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,0BAA0B,GAChC,YAAY,CAiFd"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { OverlayChip } from "../../overlay/ui/OverlayChip.js";
|
|
3
|
-
import { OverlaySegmented } from "../../overlay/ui/OverlaySegmented.js";
|
|
4
3
|
import { OverlaySelect } from "../../overlay/ui/OverlaySelect.js";
|
|
5
4
|
import { OverlayToggle } from "../../overlay/ui/OverlayToggle.js";
|
|
6
5
|
import { OverlayValueMenu } from "../../overlay/ui/OverlayValueMenu.js";
|
|
6
|
+
import { NO_GROUPING } from "../core/projectionOptions.js";
|
|
7
|
+
import { ProjectionColourPicker } from "./ProjectionGroupingPickers.js";
|
|
7
8
|
import { projectionChipSettings } from "./projectionBarReadings.js";
|
|
8
9
|
import { ellipseChoices, ellipseKey, ellipseSize, } from "./projectionEllipse.js";
|
|
9
|
-
import { projectionColourChoices, projectionOutlineChoices, } from "./projectionMapChoices.js";
|
|
10
|
+
import { projectionColourChoices, projectionColourPatch, projectionOutlineChoices, } from "./projectionMapChoices.js";
|
|
10
11
|
/**
|
|
11
12
|
* The map settings a reader changes while looking at the picture.
|
|
12
13
|
*
|
|
@@ -37,16 +38,17 @@ import { projectionColourChoices, projectionOutlineChoices, } from "./projection
|
|
|
37
38
|
* @returns The controls.
|
|
38
39
|
*/
|
|
39
40
|
export function ProjectionMapControls(props) {
|
|
40
|
-
const { options, onChange, copy,
|
|
41
|
+
const { options, onChange, copy, groupings } = props;
|
|
41
42
|
const { readings = NO_READINGS, tier = 'full' } = props;
|
|
42
43
|
const { bar, help, reason } = copy;
|
|
43
|
-
const
|
|
44
|
-
const
|
|
44
|
+
const hasGroups = groupings.length > 0;
|
|
45
|
+
const uncoloured = !hasGroups || options.colorBy === NO_GROUPING;
|
|
46
|
+
const settings = (_jsx(MapSettings, { options: options, onChange: onChange, copy: copy, groupings: groupings }));
|
|
45
47
|
const names = (_jsxs(_Fragment, { children: [_jsx(OverlayToggle, { label: bar.switches.showGroupLabels, help: help.showGroupLabels, icon: GROUP_LABELS_GLYPH, hideLabel: true, checked: options.showGroupLabels, disabled: uncoloured, onChange: (showGroupLabels) => onChange({ showGroupLabels }) }), _jsx(OverlayToggle, { label: bar.switches.showIds, help: help.showIds, icon: IDS_GLYPH, hideLabel: true, checked: options.showIds, onChange: (showIds) => onChange({ showIds }) })] }));
|
|
46
48
|
if (tier === 'chip' || tier === 'tiny') {
|
|
47
49
|
return (_jsxs(_Fragment, { children: [_jsx(OverlayChip, { label: bar.settings, settings: projectionChipSettings(readings), disabled: !hasGroups, children: settings }), names] }));
|
|
48
50
|
}
|
|
49
|
-
return (_jsxs(_Fragment, { children: [_jsx(OverlayValueMenu, { label: help.colorBy.title, keyWord: bar.key.colorBy, showKey: tier === 'full', value: options.colorBy, swatches: swatchesOf(readings), disabled: !hasGroups, disabledReason: reason.noGroups, options: projectionColourChoices(
|
|
51
|
+
return (_jsxs(_Fragment, { children: [_jsx(OverlayValueMenu, { label: help.colorBy.title, keyWord: bar.key.colorBy, showKey: tier === 'full', value: options.colorBy, swatches: swatchesOf(readings), disabled: !hasGroups, disabledReason: reason.noGroups, options: projectionColourChoices(groupings, bar.uncoloured), onChange: (colorBy) => onChange(projectionColourPatch(options, colorBy)) }), _jsx(OverlayValueMenu, { label: help.ellipse.title, keyWord: bar.key.ellipse, showKey: tier === 'full', value: ellipseKey(options.ellipse), disabled: uncoloured, disabledReason: reason.uncolouredOutlines, options: projectionOutlineChoices(options, copy), onChange: (value) => onChange({ ellipse: ellipseSize(value) }) }), names] }));
|
|
50
52
|
}
|
|
51
53
|
/**
|
|
52
54
|
* The figure's own colours, from whichever setting decides them.
|
|
@@ -71,9 +73,9 @@ function swatchesOf(readings) {
|
|
|
71
73
|
* @returns The captioned controls.
|
|
72
74
|
*/
|
|
73
75
|
function MapSettings(props) {
|
|
74
|
-
const { options, onChange, copy,
|
|
75
|
-
const {
|
|
76
|
-
return (_jsxs(_Fragment, { children: [_jsx(
|
|
76
|
+
const { options, onChange, copy, groupings } = props;
|
|
77
|
+
const { help, outline } = copy;
|
|
78
|
+
return (_jsxs(_Fragment, { children: [_jsx(ProjectionColourPicker, { label: help.colorBy.title, options: options, onChange: onChange, copy: copy, groupings: groupings }), _jsx(OverlaySelect, { label: help.ellipse.title, help: help.ellipse, value: ellipseKey(options.ellipse), disabled: groupings.length === 0 || options.colorBy === NO_GROUPING, options: ellipseChoices(options.ellipse, outline), onChange: (value) => onChange({ ellipse: ellipseSize(value) }) })] }));
|
|
77
79
|
}
|
|
78
80
|
/**
|
|
79
81
|
* The two glyphs the switches ride as.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectionMapControls.js","sourceRoot":"","sources":["../../../src/projection/ui/ProjectionMapControls.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAkC,CAAC;AAC/D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ProjectionMapControls.js","sourceRoot":"","sources":["../../../src/projection/ui/ProjectionMapControls.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectionMapLegend.d.ts","sourceRoot":"","sources":["../../../src/projection/ui/ProjectionMapLegend.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"ProjectionMapLegend.d.ts","sourceRoot":"","sources":["../../../src/projection/ui/ProjectionMapLegend.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAI7E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAMlE,8CAA8C;AAC9C,UAAU,wBAAwB;IAChC,gEAAgE;IAChE,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,OAAO,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACvC,6DAA6D;IAC7D,KAAK,EAAE,kBAAkB,CAAC;IAC1B,4CAA4C;IAC5C,OAAO,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,0CAA0C;IAC1C,OAAO,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,kBAAkB;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,wBAAwB,GAC9B,YAAY,CAoBd"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { OverlayLegend } from "../../overlay/ui/OverlayLegend.js";
|
|
3
|
-
import { projectionMapCorner } from "./
|
|
3
|
+
import { projectionMapCorner } from "./projectionMapCorner.js";
|
|
4
4
|
import { PROJECTION_PLOT_AREA_STYLE, PROJECTION_PLOT_ROOM, } from "./projectionTabStyles.js";
|
|
5
5
|
/**
|
|
6
6
|
* The key, floating in the emptiest corner of the plot itself.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectionMapLegend.js","sourceRoot":"","sources":["../../../src/projection/ui/ProjectionMapLegend.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"ProjectionMapLegend.js","sourceRoot":"","sources":["../../../src/projection/ui/ProjectionMapLegend.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAoC,CAAC;AAEnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,EACL,0BAA0B,EAC1B,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAoBlC;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,mBAAmB,CACjC,KAA+B;IAE/B,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAEzE,MAAM,SAAS,GACb,KAAK,GAAG,oBAAoB,CAAC,IAAI,GAAG,oBAAoB,CAAC,KAAK,CAAC;IACjE,MAAM,UAAU,GACd,MAAM,GAAG,oBAAoB,CAAC,GAAG,GAAG,oBAAoB,CAAC,MAAM,CAAC;IAClE,MAAM,MAAM,GAAG,mBAAmB,CAChC,KAAK,EACL,OAAO,EACP,OAAO,EACP,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,EACtB,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CACxB,CAAC;IAEF,OAAO,CACL,cAAK,KAAK,EAAE,0BAA0B,YACpC,KAAC,aAAa,IAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,GAAI,GAChE,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -19,8 +19,8 @@ interface ProjectionMapMoreProps extends ProjectionMapControlsProps {
|
|
|
19
19
|
onClearSelection: () => void;
|
|
20
20
|
}
|
|
21
21
|
/**
|
|
22
|
-
* What the map keeps behind the cog: the axes, the dot size, what a
|
|
23
|
-
* and the three buttons that act rather than change.
|
|
22
|
+
* What the map keeps behind the cog: the axes, the dot size and shape, what a
|
|
23
|
+
* drag does, and the three buttons that act rather than change.
|
|
24
24
|
*
|
|
25
25
|
* Five settings is where a flat list stops being scannable, so they are filed
|
|
26
26
|
* under three headings — the two directions of the picture, the marks drawn in
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectionMapMore.d.ts","sourceRoot":"","sources":["../../../src/projection/ui/ProjectionMapMore.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ProjectionMapMore.d.ts","sourceRoot":"","sources":["../../../src/projection/ui/ProjectionMapMore.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAW1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAIpE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAI9E,0EAA0E;AAC1E,UAAU,sBAAuB,SAAQ,0BAA0B;IACjE,8EAA8E;IAC9E,MAAM,EAAE,gBAAgB,CAAC;IACzB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mDAAmD;IACnD,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,+CAA+C;IAC/C,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,6BAA6B;IAC7B,gBAAgB,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,YAAY,CAkG7E"}
|
|
@@ -6,12 +6,14 @@ import { OverlayPanel } from "../../overlay/ui/OverlayPanel.js";
|
|
|
6
6
|
import { OverlaySegmented } from "../../overlay/ui/OverlaySegmented.js";
|
|
7
7
|
import { OverlaySelect } from "../../overlay/ui/OverlaySelect.js";
|
|
8
8
|
import { OverlayToggle } from "../../overlay/ui/OverlayToggle.js";
|
|
9
|
+
import { NO_GROUPING } from "../core/projectionOptions.js";
|
|
9
10
|
import { PROJECTION_TAB_DEFAULTS } from "../core/projectionTabDefaults.js";
|
|
11
|
+
import { ProjectionShapePicker } from "./ProjectionGroupingPickers.js";
|
|
10
12
|
import { projectionAxisChoices } from "./projectionAxisChoices.js";
|
|
11
13
|
import { projectionSelectModeChoices } from "./projectionWordChoices.js";
|
|
12
14
|
/**
|
|
13
|
-
* What the map keeps behind the cog: the axes, the dot size, what a
|
|
14
|
-
* and the three buttons that act rather than change.
|
|
15
|
+
* What the map keeps behind the cog: the axes, the dot size and shape, what a
|
|
16
|
+
* drag does, and the three buttons that act rather than change.
|
|
15
17
|
*
|
|
16
18
|
* Five settings is where a flat list stops being scannable, so they are filed
|
|
17
19
|
* under three headings — the two directions of the picture, the marks drawn in
|
|
@@ -30,12 +32,12 @@ import { projectionSelectModeChoices } from "./projectionWordChoices.js";
|
|
|
30
32
|
* @returns The panel behind the cog.
|
|
31
33
|
*/
|
|
32
34
|
export function ProjectionMapMore(props) {
|
|
33
|
-
const { result, options, onChange, copy,
|
|
35
|
+
const { result, options, onChange, copy, groupings } = props;
|
|
34
36
|
const { selectedCount = 0, onZoomToSelection } = props;
|
|
35
37
|
const { onResetView, onClearSelection } = props;
|
|
36
38
|
const { action, help, panel, reason, tab } = copy;
|
|
37
39
|
const nothingPicked = selectedCount === 0;
|
|
38
|
-
const uncoloured =
|
|
39
|
-
return (_jsxs(OverlayPanel, { title: tab.map, onReset: () => onChange(PROJECTION_TAB_DEFAULTS.map), actions: _jsxs(_Fragment, { children: [_jsx(OverlayAction, { text: action.zoomToSelection, icon: "zoom-to-fit", disabled: nothingPicked, onClick: onZoomToSelection }), _jsx(OverlayAction, { text: action.resetView, icon: "reset", onClick: onResetView }), _jsx(OverlayAction, { text: action.clearSelection, icon: "cross", disabled: nothingPicked, onClick: onClearSelection })] }), children: [_jsxs(OverlayGroup, { label: panel.section.axes, divider: false, children: [_jsx(OverlaySelect, { label: panel.name.xAxis, help: help.xAxis, value: String(options.xAxis), options: projectionAxisChoices(result, [options.yAxis], reason.axisTakenOnMap), onChange: (value) => onChange({ xAxis: Number(value) }) }), _jsx(OverlaySelect, { label: panel.name.yAxis, help: help.yAxis, value: String(options.yAxis), options: projectionAxisChoices(result, [options.xAxis], reason.axisTakenOnMap), onChange: (value) => onChange({ yAxis: Number(value) }) })] }), _jsxs(OverlayGroup, { label: panel.section.drawing, children: [_jsx(OverlayNumber, { label: panel.name.pointRadius, help: help.pointRadius, value: options.pointRadius, min: 1, max: 12, step: 0.5, digits: 1, unit: "px", onChange: (pointRadius) => onChange({ pointRadius }) }), _jsx(OverlayToggle, { label: panel.name.showGroupMeans, help: help.showGroupMeans, checked: options.showGroupMeans, disabled: uncoloured, onChange: (showGroupMeans) => onChange({ showGroupMeans }) })] }), _jsx(OverlayGroup, { label: panel.section.selecting, children: _jsx(OverlaySegmented, { label: panel.name.selectMode, help: help.selectMode, value: options.selectMode, options: projectionSelectModeChoices(copy), onChange: (selectMode) => onChange({ selectMode }) }) })] }));
|
|
40
|
+
const uncoloured = groupings.length === 0 || options.colorBy === NO_GROUPING;
|
|
41
|
+
return (_jsxs(OverlayPanel, { title: tab.map, onReset: () => onChange(PROJECTION_TAB_DEFAULTS.map), actions: _jsxs(_Fragment, { children: [_jsx(OverlayAction, { text: action.zoomToSelection, icon: "zoom-to-fit", disabled: nothingPicked, onClick: onZoomToSelection }), _jsx(OverlayAction, { text: action.resetView, icon: "reset", onClick: onResetView }), _jsx(OverlayAction, { text: action.clearSelection, icon: "cross", disabled: nothingPicked, onClick: onClearSelection })] }), children: [_jsxs(OverlayGroup, { label: panel.section.axes, divider: false, children: [_jsx(OverlaySelect, { label: panel.name.xAxis, help: help.xAxis, value: String(options.xAxis), options: projectionAxisChoices(result, [options.yAxis], reason.axisTakenOnMap), onChange: (value) => onChange({ xAxis: Number(value) }) }), _jsx(OverlaySelect, { label: panel.name.yAxis, help: help.yAxis, value: String(options.yAxis), options: projectionAxisChoices(result, [options.xAxis], reason.axisTakenOnMap), onChange: (value) => onChange({ yAxis: Number(value) }) })] }), _jsxs(OverlayGroup, { label: panel.section.drawing, children: [_jsx(OverlayNumber, { label: panel.name.pointRadius, help: help.pointRadius, value: options.pointRadius, min: 1, max: 12, step: 0.5, digits: 1, unit: "px", onChange: (pointRadius) => onChange({ pointRadius }) }), _jsx(ProjectionShapePicker, { label: panel.name.shapeBy, options: options, onChange: onChange, copy: copy, groupings: groupings, rows: result.scores.rows }), _jsx(OverlayToggle, { label: panel.name.showGroupMeans, help: help.showGroupMeans, checked: options.showGroupMeans, disabled: uncoloured, onChange: (showGroupMeans) => onChange({ showGroupMeans }) })] }), _jsx(OverlayGroup, { label: panel.section.selecting, children: _jsx(OverlaySegmented, { label: panel.name.selectMode, help: help.selectMode, value: options.selectMode, options: projectionSelectModeChoices(copy), onChange: (selectMode) => onChange({ selectMode }) }) })] }));
|
|
40
42
|
}
|
|
41
43
|
//# sourceMappingURL=ProjectionMapMore.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectionMapMore.js","sourceRoot":"","sources":["../../../src/projection/ui/ProjectionMapMore.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAoC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAmC,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAoC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAmC,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAuC,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAoC,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"ProjectionMapMore.js","sourceRoot":"","sources":["../../../src/projection/ui/ProjectionMapMore.tsx"],"names":[],"mappings":"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"}
|
|
@@ -5,15 +5,23 @@ import type { SelectionChange } from '../../scatter/ui/useScatterSelection.ts';
|
|
|
5
5
|
import type { ProjectionCopy } from '../core/projectionCopy.ts';
|
|
6
6
|
import type { ProjectionOptions } from '../core/projectionOptions.ts';
|
|
7
7
|
import type { ProjectionResult } from '../core/projectionResult.ts';
|
|
8
|
-
import type { ResolvedProjectionGroups } from '../core/projectionSamples.ts';
|
|
8
|
+
import type { ResolvedProjectionGroups, ResolvedProjectionShapes } from '../core/projectionSamples.ts';
|
|
9
9
|
import type { SelectionReport } from './ProjectionMapCaption.tsx';
|
|
10
10
|
import type { ProjectionMapChrome } from './projectionMapChrome.ts';
|
|
11
11
|
/** What {@link ProjectionMapTab} needs. */
|
|
12
12
|
interface ProjectionMapTabProps {
|
|
13
13
|
/** What the run produced, whatever produced it. */
|
|
14
14
|
result: ProjectionResult;
|
|
15
|
-
/**
|
|
15
|
+
/**
|
|
16
|
+
* The grouping the dots are coloured by, resolved once by the viewer so every
|
|
17
|
+
* tab colours alike; empty while the colour stands for nothing.
|
|
18
|
+
*/
|
|
16
19
|
groups: ResolvedProjectionGroups;
|
|
20
|
+
/**
|
|
21
|
+
* The grouping the dots are shaped by, resolved once by the viewer.
|
|
22
|
+
* @default null — every dot is a disc
|
|
23
|
+
*/
|
|
24
|
+
shapes?: ResolvedProjectionShapes | null;
|
|
17
25
|
/** What the map is showing, already resolved against `result`. */
|
|
18
26
|
options: ProjectionOptions;
|
|
19
27
|
/** The words the map writes, already merged over the defaults. */
|
|
@@ -25,7 +33,7 @@ interface ProjectionMapTabProps {
|
|
|
25
33
|
* "Sample ID" setting to write beside its dot.
|
|
26
34
|
* @default undefined — the setting has nothing to write and draws nothing
|
|
27
35
|
*/
|
|
28
|
-
|
|
36
|
+
names?: readonly string[];
|
|
29
37
|
/** Width of the figure, in pixels. */
|
|
30
38
|
width: number;
|
|
31
39
|
/** Height of the figure, in pixels. */
|
|
@@ -90,9 +98,10 @@ interface ProjectionMapTabProps {
|
|
|
90
98
|
* The map: one dot per sample, an outline per group, and a key floating in the
|
|
91
99
|
* emptiest corner of the plot.
|
|
92
100
|
*
|
|
93
|
-
* Colour stands for
|
|
94
|
-
*
|
|
95
|
-
* reader came for against the question they have just
|
|
101
|
+
* Colour stands for one grouping and shape, when there is a second, for that
|
|
102
|
+
* one, and a selected dot keeps both and gains a ring — recolouring it would
|
|
103
|
+
* trade the answer the reader came for against the question they have just
|
|
104
|
+
* asked. A sample the
|
|
96
105
|
* model was built from is drawn filled and one placed into the finished model
|
|
97
106
|
* afterwards is drawn hollow, because the second kind can land anywhere and
|
|
98
107
|
* its landing far out is the finding rather than a fault.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectionMapTab.d.ts","sourceRoot":"","sources":["../../../src/projection/ui/ProjectionMapTab.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAEvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"ProjectionMapTab.d.ts","sourceRoot":"","sources":["../../../src/projection/ui/ProjectionMapTab.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAEvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEtE,OAAO,KAAK,EAEV,gBAAgB,EACjB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EACV,wBAAwB,EACxB,wBAAwB,EACzB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAIlE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAWpE,2CAA2C;AAC3C,UAAU,qBAAqB;IAC7B,mDAAmD;IACnD,MAAM,EAAE,gBAAgB,CAAC;IACzB;;;OAGG;IACH,MAAM,EAAE,wBAAwB,CAAC;IACjC;;;OAGG;IACH,MAAM,CAAC,EAAE,wBAAwB,GAAG,IAAI,CAAC;IACzC,kEAAkE;IAClE,OAAO,EAAE,iBAAiB,CAAC;IAC3B,kEAAkE;IAClE,IAAI,EAAE,cAAc,CAAC;IACrB,0EAA0E;IAC1E,MAAM,EAAE,mBAAmB,CAAC;IAC5B;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAChC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,KAAK,IAAI,CAAC;IAC5D;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,MAAM,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IAChC;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;IACtD;;;OAGG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACvD;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,YAAY,CAyF3E"}
|
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useMemo, useState } from 'react';
|
|
3
3
|
import { ScatterPlot } from "../../scatter/ui/ScatterPlot.js";
|
|
4
|
+
import { NO_GROUPING } from "../core/projectionOptions.js";
|
|
4
5
|
import { ProjectionMapCaption } from "./ProjectionMapCaption.js";
|
|
5
6
|
import { ProjectionMapLegend } from "./ProjectionMapLegend.js";
|
|
6
7
|
import { ProjectionSurface } from "./ProjectionSurface.js";
|
|
7
|
-
import { MINIMUM_OUTLINE_POINTS, projectionAxisTitle, projectionMapCloud, projectionMapDomain, projectionMapMarkers, projectionScatterGroups, } from "./projectionMapModel.js";
|
|
8
|
+
import { MINIMUM_OUTLINE_POINTS, projectionAxisTitle, projectionMapCloud, projectionMapDomain, projectionMapMarkers, projectionScatterGroups, projectionScatterShapes, } from "./projectionMapModel.js";
|
|
8
9
|
/**
|
|
9
10
|
* The map: one dot per sample, an outline per group, and a key floating in the
|
|
10
11
|
* emptiest corner of the plot.
|
|
11
12
|
*
|
|
12
|
-
* Colour stands for
|
|
13
|
-
*
|
|
14
|
-
* reader came for against the question they have just
|
|
13
|
+
* Colour stands for one grouping and shape, when there is a second, for that
|
|
14
|
+
* one, and a selected dot keeps both and gains a ring — recolouring it would
|
|
15
|
+
* trade the answer the reader came for against the question they have just
|
|
16
|
+
* asked. A sample the
|
|
15
17
|
* model was built from is drawn filled and one placed into the finished model
|
|
16
18
|
* afterwards is drawn hollow, because the second kind can land anywhere and
|
|
17
19
|
* its landing far out is the finding rather than a fault.
|
|
@@ -24,7 +26,8 @@ import { MINIMUM_OUTLINE_POINTS, projectionAxisTitle, projectionMapCloud, projec
|
|
|
24
26
|
*/
|
|
25
27
|
export function ProjectionMapTab(props) {
|
|
26
28
|
const { result, groups, options, copy, chrome, width, height } = props;
|
|
27
|
-
const {
|
|
29
|
+
const { names, shapes = null, selected } = props;
|
|
30
|
+
const { viewport = null, report = null } = props;
|
|
28
31
|
const { onSelectionChange, onHoverChange, hoverCard } = props;
|
|
29
32
|
const { onPointDoubleClick } = props;
|
|
30
33
|
const { onViewportChange, wheelZoom, touchLasso, testId } = props;
|
|
@@ -35,9 +38,10 @@ export function ProjectionMapTab(props) {
|
|
|
35
38
|
const cloud = useMemo(() => projectionMapCloud(scores, xAxis, yAxis), [scores, xAxis, yAxis]);
|
|
36
39
|
const xDomain = useMemo(() => projectionMapDomain(scores, xAxis), [scores, xAxis]);
|
|
37
40
|
const yDomain = useMemo(() => projectionMapDomain(scores, yAxis), [scores, yAxis]);
|
|
38
|
-
const
|
|
41
|
+
const shapeList = useMemo(() => projectionScatterShapes(shapes), [shapes]);
|
|
42
|
+
const colored = colorBy !== NO_GROUPING && groups.entries.length > 0;
|
|
39
43
|
const ellipse = colored ? outlines : null;
|
|
40
|
-
return (_jsx(ScatterPlot, { x: cloud.x, y: cloud.y, width: width, height: height, xAxis: { domain: xDomain, label: projectionAxisTitle(result, xAxis) }, yAxis: { domain: yDomain, label: projectionAxisTitle(result, yAxis) }, groupOf: colored ? groups.groupOf : undefined, groups: colored ? projectionScatterGroups(groups) : undefined, ellipse: ellipse, ellipseMinimumPoints: MINIMUM_OUTLINE_POINTS, showGroupMeans: colored && showGroupMeans, showGroupLabels: colored && showGroupLabels, pointLabels: showIds ?
|
|
44
|
+
return (_jsx(ScatterPlot, { x: cloud.x, y: cloud.y, width: width, height: height, xAxis: { domain: xDomain, label: projectionAxisTitle(result, xAxis) }, yAxis: { domain: yDomain, label: projectionAxisTitle(result, yAxis) }, groupOf: colored ? groups.groupOf : undefined, groups: colored ? projectionScatterGroups(groups) : undefined, shapeOf: shapes?.shapeOf, shapes: shapeList, ellipse: ellipse, ellipseMinimumPoints: MINIMUM_OUTLINE_POINTS, showGroupMeans: colored && showGroupMeans, showGroupLabels: colored && showGroupLabels, pointLabels: showIds ? names : undefined, markers: projectionMapMarkers(markers ?? NO_MARKERS, groups, xAxis, yAxis), pointRadius: pointRadius, outlinedFrom: fittedCount, selected: selected, viewport: viewport, onViewportChange: onViewportChange, wheelZoom: wheelZoom, onSelectionChange: onSelectionChange, selectMode: selectMode, onHoverChange: onHoverChange, onPointDoubleClick: onPointDoubleClick, onLassoChange: setDrawing, touchLasso: touchLasso, testId: testId, overlay: _jsxs(ProjectionSurface, { children: [chrome.entries.length === 0 ? null : (_jsx(ProjectionMapLegend, { title: chrome.title, entries: chrome.entries, cloud: cloud, xDomain: viewport?.x ?? xDomain, yDomain: viewport?.y ?? yDomain, width: width, height: height })), _jsx(ProjectionMapCaption, { report: report, copy: copy, mode: selectMode, drawing: drawing }), hoverCard] }) }));
|
|
41
45
|
}
|
|
42
46
|
const NO_MARKERS = [];
|
|
43
47
|
//# sourceMappingURL=ProjectionMapTab.js.map
|