react-cheminfo 0.69.0 → 0.71.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 +70 -2
- package/lib/about/core/providers.d.ts +6 -0
- package/lib/about/core/providers.d.ts.map +1 -1
- package/lib/about/core/providers.js +7 -0
- package/lib/about/core/providers.js.map +1 -1
- package/lib/about/ui/AboutProvidedBy.js +34 -0
- package/lib/about/ui/AboutProvidedBy.js.map +1 -1
- package/lib/chart/ui/useChartPointer.d.ts +9 -1
- package/lib/chart/ui/useChartPointer.d.ts.map +1 -1
- package/lib/chart/ui/useChartPointer.js +11 -3
- package/lib/chart/ui/useChartPointer.js.map +1 -1
- package/lib/credits/core/credits.d.ts +41 -0
- package/lib/credits/core/credits.d.ts.map +1 -1
- package/lib/credits/core/credits.js +50 -0
- package/lib/credits/core/credits.js.map +1 -1
- package/lib/download/core/drawingMarkup.d.ts +8 -1
- package/lib/download/core/drawingMarkup.d.ts.map +1 -1
- package/lib/download/core/drawingMarkup.js +13 -1
- package/lib/download/core/drawingMarkup.js.map +1 -1
- package/lib/download/core/figurePng.d.ts +14 -0
- package/lib/download/core/figurePng.d.ts.map +1 -1
- package/lib/download/core/figurePng.js +21 -6
- package/lib/download/core/figurePng.js.map +1 -1
- package/lib/download/core/figureSvg.d.ts.map +1 -1
- package/lib/download/core/figureSvg.js +5 -3
- package/lib/download/core/figureSvg.js.map +1 -1
- package/lib/download/core/figureTarget.d.ts +13 -0
- package/lib/download/core/figureTarget.d.ts.map +1 -1
- package/lib/download/core/figureTarget.js +25 -5
- package/lib/download/core/figureTarget.js.map +1 -1
- package/lib/download/core/svgBounds.d.ts +15 -0
- package/lib/download/core/svgBounds.d.ts.map +1 -1
- package/lib/download/core/svgBounds.js +20 -0
- package/lib/download/core/svgBounds.js.map +1 -1
- package/lib/download/core/svgToPng.d.ts.map +1 -1
- package/lib/download/core/svgToPng.js +4 -2
- package/lib/download/core/svgToPng.js.map +1 -1
- package/lib/format/core/relativeTime.d.ts +8 -3
- package/lib/format/core/relativeTime.d.ts.map +1 -1
- package/lib/format/core/relativeTime.js +19 -7
- package/lib/format/core/relativeTime.js.map +1 -1
- package/lib/host/core/connectHost.d.ts +25 -34
- package/lib/host/core/connectHost.d.ts.map +1 -1
- package/lib/host/core/connectHost.js +43 -89
- package/lib/host/core/connectHost.js.map +1 -1
- package/lib/host/core/hostOutputs.d.ts +58 -0
- package/lib/host/core/hostOutputs.d.ts.map +1 -0
- package/lib/host/core/hostOutputs.js +151 -0
- package/lib/host/core/hostOutputs.js.map +1 -0
- package/lib/host/core/index.d.ts +9 -3
- package/lib/host/core/index.d.ts.map +1 -1
- package/lib/host/core/index.js +4 -1
- package/lib/host/core/index.js.map +1 -1
- package/lib/host/core/irKinds.d.ts +124 -0
- package/lib/host/core/irKinds.d.ts.map +1 -0
- package/lib/host/core/irKinds.js +46 -0
- package/lib/host/core/irKinds.js.map +1 -0
- package/lib/host/core/kinds.d.ts +13 -5
- package/lib/host/core/kinds.d.ts.map +1 -1
- package/lib/host/core/kinds.js +11 -5
- package/lib/host/core/kinds.js.map +1 -1
- package/lib/host/core/protocol.d.ts +50 -7
- package/lib/host/core/protocol.d.ts.map +1 -1
- package/lib/host/core/protocol.js +10 -6
- package/lib/host/core/protocol.js.map +1 -1
- package/lib/host/core/selectInputs.d.ts +37 -0
- package/lib/host/core/selectInputs.d.ts.map +1 -0
- package/lib/host/core/selectInputs.js +110 -0
- package/lib/host/core/selectInputs.js.map +1 -0
- package/lib/host/testing/sciPeaks.d.ts +31 -0
- package/lib/host/testing/sciPeaks.d.ts.map +1 -1
- package/lib/host/testing/sciPeaks.js +73 -0
- package/lib/host/testing/sciPeaks.js.map +1 -1
- package/lib/host/testing/standInHost.d.ts +9 -1
- package/lib/host/testing/standInHost.d.ts.map +1 -1
- package/lib/host/testing/standInHost.js +19 -1
- package/lib/host/testing/standInHost.js.map +1 -1
- package/lib/host/ui/useHostConnection.d.ts +13 -5
- package/lib/host/ui/useHostConnection.d.ts.map +1 -1
- package/lib/host/ui/useHostConnection.js +4 -3
- package/lib/host/ui/useHostConnection.js.map +1 -1
- package/lib/host-testing.d.ts +2 -2
- package/lib/host-testing.d.ts.map +1 -1
- package/lib/host-testing.js +2 -2
- package/lib/host-testing.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/ir/core/handPicking.d.ts +58 -0
- package/lib/ir/core/handPicking.d.ts.map +1 -0
- package/lib/ir/core/handPicking.js +130 -0
- package/lib/ir/core/handPicking.js.map +1 -0
- package/lib/ir/core/index.d.ts +3 -0
- package/lib/ir/core/index.d.ts.map +1 -1
- package/lib/ir/core/index.js +3 -0
- package/lib/ir/core/index.js.map +1 -1
- package/lib/ir/core/irBandState.d.ts +57 -0
- package/lib/ir/core/irBandState.d.ts.map +1 -0
- package/lib/ir/core/irBandState.js +119 -0
- package/lib/ir/core/irBandState.js.map +1 -0
- package/lib/ir/core/irCommands.d.ts +11 -0
- package/lib/ir/core/irCommands.d.ts.map +1 -1
- package/lib/ir/core/irCommands.js +6 -0
- package/lib/ir/core/irCommands.js.map +1 -1
- package/lib/ir/core/irPeaks.d.ts +28 -0
- package/lib/ir/core/irPeaks.d.ts.map +1 -0
- package/lib/ir/core/irPeaks.js +66 -0
- package/lib/ir/core/irPeaks.js.map +1 -0
- package/lib/ir/core/irReducer.d.ts +8 -0
- package/lib/ir/core/irReducer.d.ts.map +1 -1
- package/lib/ir/core/irReducer.js +15 -32
- package/lib/ir/core/irReducer.js.map +1 -1
- package/lib/ir/core/irSpectrum.d.ts +15 -0
- package/lib/ir/core/irSpectrum.d.ts.map +1 -1
- package/lib/ir/core/irSpectrum.js.map +1 -1
- package/lib/ir/core/irState.d.ts +9 -6
- package/lib/ir/core/irState.d.ts.map +1 -1
- package/lib/ir/core/irState.js +10 -6
- package/lib/ir/core/irState.js.map +1 -1
- package/lib/ir/core/pickBands.d.ts +14 -0
- package/lib/ir/core/pickBands.d.ts.map +1 -1
- package/lib/ir/core/pickBands.js +39 -33
- package/lib/ir/core/pickBands.js.map +1 -1
- package/lib/ir/core/ramanBands.d.ts +9 -1
- package/lib/ir/core/ramanBands.d.ts.map +1 -1
- package/lib/ir/core/ramanBands.js +2 -2
- package/lib/ir/core/ramanBands.js.map +1 -1
- package/lib/ir/core/spectrumBands.d.ts +46 -0
- package/lib/ir/core/spectrumBands.d.ts.map +1 -0
- package/lib/ir/core/spectrumBands.js +98 -0
- package/lib/ir/core/spectrumBands.js.map +1 -0
- package/lib/ir/ui/BandRow.d.ts +5 -0
- package/lib/ir/ui/BandRow.d.ts.map +1 -1
- package/lib/ir/ui/BandRow.js +4 -3
- package/lib/ir/ui/BandRow.js.map +1 -1
- package/lib/ir/ui/BandsPanel.d.ts +5 -0
- package/lib/ir/ui/BandsPanel.d.ts.map +1 -1
- package/lib/ir/ui/BandsPanel.js +36 -16
- package/lib/ir/ui/BandsPanel.js.map +1 -1
- package/lib/ir/ui/BandsToolbar.d.ts +9 -0
- package/lib/ir/ui/BandsToolbar.d.ts.map +1 -0
- package/lib/ir/ui/BandsToolbar.js +61 -0
- package/lib/ir/ui/BandsToolbar.js.map +1 -0
- package/lib/ir/ui/IrCanvas.d.ts +2 -1
- package/lib/ir/ui/IrCanvas.d.ts.map +1 -1
- package/lib/ir/ui/IrCanvas.js +19 -5
- package/lib/ir/ui/IrCanvas.js.map +1 -1
- package/lib/ir/ui/IrChart.d.ts.map +1 -1
- package/lib/ir/ui/IrChart.js +8 -1
- package/lib/ir/ui/IrChart.js.map +1 -1
- package/lib/ir/ui/IrDocumentationDialog.js +1 -1
- package/lib/ir/ui/IrDocumentationDialog.js.map +1 -1
- package/lib/ir/ui/IrEditor.d.ts +4 -2
- package/lib/ir/ui/IrEditor.d.ts.map +1 -1
- package/lib/ir/ui/IrEditor.js.map +1 -1
- package/lib/ir/ui/IrShell.d.ts.map +1 -1
- package/lib/ir/ui/IrShell.js +6 -0
- package/lib/ir/ui/IrShell.js.map +1 -1
- package/lib/ir/ui/IrStatusBar.d.ts.map +1 -1
- package/lib/ir/ui/IrStatusBar.js +1 -1
- package/lib/ir/ui/IrStatusBar.js.map +1 -1
- package/lib/ir/ui/IrToolbar.d.ts +4 -3
- package/lib/ir/ui/IrToolbar.d.ts.map +1 -1
- package/lib/ir/ui/IrToolbar.js +5 -4
- package/lib/ir/ui/IrToolbar.js.map +1 -1
- package/lib/ir/ui/VibrationalEditor.d.ts +2 -1
- package/lib/ir/ui/VibrationalEditor.d.ts.map +1 -1
- package/lib/ir/ui/VibrationalEditor.js.map +1 -1
- package/lib/ir/ui/irActions.d.ts +5 -0
- package/lib/ir/ui/irActions.d.ts.map +1 -1
- package/lib/ir/ui/irActions.js +6 -0
- package/lib/ir/ui/irActions.js.map +1 -1
- package/lib/ir/ui/irChartProps.d.ts +4 -1
- package/lib/ir/ui/irChartProps.d.ts.map +1 -1
- package/lib/ir/ui/useIrEditor.d.ts +5 -11
- package/lib/ir/ui/useIrEditor.d.ts.map +1 -1
- package/lib/ir/ui/useIrEditor.js +17 -18
- package/lib/ir/ui/useIrEditor.js.map +1 -1
- package/lib/locales/de.json +63 -0
- package/lib/locales/en.json +63 -0
- package/lib/locales/es.json +63 -0
- package/lib/locales/fr.json +63 -0
- package/lib/locales/it.json +63 -0
- package/lib/mass/core/analyseSpectrum.d.ts +85 -0
- package/lib/mass/core/analyseSpectrum.d.ts.map +1 -0
- package/lib/mass/core/analyseSpectrum.js +101 -0
- package/lib/mass/core/analyseSpectrum.js.map +1 -0
- package/lib/mass/core/ascendingTrace.d.ts +24 -0
- package/lib/mass/core/ascendingTrace.d.ts.map +1 -0
- package/lib/mass/core/ascendingTrace.js +57 -0
- package/lib/mass/core/ascendingTrace.js.map +1 -0
- package/lib/mass/core/centroidPeaks.d.ts +77 -0
- package/lib/mass/core/centroidPeaks.d.ts.map +1 -0
- package/lib/mass/core/centroidPeaks.js +62 -0
- package/lib/mass/core/centroidPeaks.js.map +1 -0
- package/lib/mass/core/detectMassFormat.d.ts +24 -0
- package/lib/mass/core/detectMassFormat.d.ts.map +1 -0
- package/lib/mass/core/detectMassFormat.js +105 -0
- package/lib/mass/core/detectMassFormat.js.map +1 -0
- package/lib/mass/core/downloadSpectra.d.ts +24 -0
- package/lib/mass/core/downloadSpectra.d.ts.map +1 -0
- package/lib/mass/core/downloadSpectra.js +35 -0
- package/lib/mass/core/downloadSpectra.js.map +1 -0
- package/lib/mass/core/fromJcamp.d.ts +46 -0
- package/lib/mass/core/fromJcamp.d.ts.map +1 -0
- package/lib/mass/core/fromJcamp.js +123 -0
- package/lib/mass/core/fromJcamp.js.map +1 -0
- package/lib/mass/core/fromText.d.ts +30 -0
- package/lib/mass/core/fromText.d.ts.map +1 -0
- package/lib/mass/core/fromText.js +39 -0
- package/lib/mass/core/fromText.js.map +1 -0
- package/lib/mass/core/index.d.ts +70 -0
- package/lib/mass/core/index.d.ts.map +1 -0
- package/lib/mass/core/index.js +42 -0
- package/lib/mass/core/index.js.map +1 -0
- package/lib/mass/core/jcampTechnique.d.ts +38 -0
- package/lib/mass/core/jcampTechnique.d.ts.map +1 -0
- package/lib/mass/core/jcampTechnique.js +70 -0
- package/lib/mass/core/jcampTechnique.js.map +1 -0
- package/lib/mass/core/labelStackBox.d.ts +49 -0
- package/lib/mass/core/labelStackBox.d.ts.map +1 -0
- package/lib/mass/core/labelStackBox.js +44 -0
- package/lib/mass/core/labelStackBox.js.map +1 -0
- package/lib/mass/core/labelledPeaks.d.ts +79 -0
- package/lib/mass/core/labelledPeaks.d.ts.map +1 -0
- package/lib/mass/core/labelledPeaks.js +74 -0
- package/lib/mass/core/labelledPeaks.js.map +1 -0
- package/lib/mass/core/loadMassSpectra.d.ts +57 -0
- package/lib/mass/core/loadMassSpectra.d.ts.map +1 -0
- package/lib/mass/core/loadMassSpectra.js +45 -0
- package/lib/mass/core/loadMassSpectra.js.map +1 -0
- package/lib/mass/core/loadedMassSpectrum.d.ts +42 -0
- package/lib/mass/core/loadedMassSpectrum.d.ts.map +1 -0
- package/lib/mass/core/loadedMassSpectrum.js +15 -0
- package/lib/mass/core/loadedMassSpectrum.js.map +1 -0
- package/lib/mass/core/massCommands.d.ts +170 -0
- package/lib/mass/core/massCommands.d.ts.map +1 -0
- package/lib/mass/core/massCommands.js +95 -0
- package/lib/mass/core/massCommands.js.map +1 -0
- package/lib/mass/core/massDomain.d.ts +121 -0
- package/lib/mass/core/massDomain.d.ts.map +1 -0
- package/lib/mass/core/massDomain.js +179 -0
- package/lib/mass/core/massDomain.js.map +1 -0
- package/lib/mass/core/massEditorApi.d.ts +65 -0
- package/lib/mass/core/massEditorApi.d.ts.map +1 -0
- package/lib/mass/core/massEditorApi.js +10 -0
- package/lib/mass/core/massEditorApi.js.map +1 -0
- package/lib/mass/core/massFormat.d.ts +78 -0
- package/lib/mass/core/massFormat.d.ts.map +1 -0
- package/lib/mass/core/massFormat.js +168 -0
- package/lib/mass/core/massFormat.js.map +1 -0
- package/lib/mass/core/massMeta.d.ts +85 -0
- package/lib/mass/core/massMeta.d.ts.map +1 -0
- package/lib/mass/core/massMeta.js +182 -0
- package/lib/mass/core/massMeta.js.map +1 -0
- package/lib/mass/core/massReducer.d.ts +82 -0
- package/lib/mass/core/massReducer.d.ts.map +1 -0
- package/lib/mass/core/massReducer.js +163 -0
- package/lib/mass/core/massReducer.js.map +1 -0
- package/lib/mass/core/massResolution.d.ts +92 -0
- package/lib/mass/core/massResolution.d.ts.map +1 -0
- package/lib/mass/core/massResolution.js +126 -0
- package/lib/mass/core/massResolution.js.map +1 -0
- package/lib/mass/core/massSidePanels.d.ts +28 -0
- package/lib/mass/core/massSidePanels.d.ts.map +1 -0
- package/lib/mass/core/massSidePanels.js +12 -0
- package/lib/mass/core/massSidePanels.js.map +1 -0
- package/lib/mass/core/massSpectrum.d.ts +206 -0
- package/lib/mass/core/massSpectrum.d.ts.map +1 -0
- package/lib/mass/core/massSpectrum.js +41 -0
- package/lib/mass/core/massSpectrum.js.map +1 -0
- package/lib/mass/core/massState.d.ts +145 -0
- package/lib/mass/core/massState.d.ts.map +1 -0
- package/lib/mass/core/massState.js +102 -0
- package/lib/mass/core/massState.js.map +1 -0
- package/lib/mass/core/massStateEdits.d.ts +51 -0
- package/lib/mass/core/massStateEdits.d.ts.map +1 -0
- package/lib/mass/core/massStateEdits.js +90 -0
- package/lib/mass/core/massStateEdits.js.map +1 -0
- package/lib/mass/core/massSummary.d.ts +77 -0
- package/lib/mass/core/massSummary.d.ts.map +1 -0
- package/lib/mass/core/massSummary.js +174 -0
- package/lib/mass/core/massSummary.js.map +1 -0
- package/lib/mass/core/mzDecimalsSetting.d.ts +36 -0
- package/lib/mass/core/mzDecimalsSetting.d.ts.map +1 -0
- package/lib/mass/core/mzDecimalsSetting.js +42 -0
- package/lib/mass/core/mzDecimalsSetting.js.map +1 -0
- package/lib/mass/core/nearestPeak.d.ts +75 -0
- package/lib/mass/core/nearestPeak.d.ts.map +1 -0
- package/lib/mass/core/nearestPeak.js +99 -0
- package/lib/mass/core/nearestPeak.js.map +1 -0
- package/lib/mass/core/peakLabelLines.d.ts +77 -0
- package/lib/mass/core/peakLabelLines.d.ts.map +1 -0
- package/lib/mass/core/peakLabelLines.js +54 -0
- package/lib/mass/core/peakLabelLines.js.map +1 -0
- package/lib/mass/core/peakLabelPlan.d.ts +109 -0
- package/lib/mass/core/peakLabelPlan.d.ts.map +1 -0
- package/lib/mass/core/peakLabelPlan.js +143 -0
- package/lib/mass/core/peakLabelPlan.js.map +1 -0
- package/lib/mass/core/peakTable.d.ts +54 -0
- package/lib/mass/core/peakTable.d.ts.map +1 -0
- package/lib/mass/core/peakTable.js +53 -0
- package/lib/mass/core/peakTable.js.map +1 -0
- package/lib/mass/core/resolutionOf.d.ts +60 -0
- package/lib/mass/core/resolutionOf.d.ts.map +1 -0
- package/lib/mass/core/resolutionOf.js +84 -0
- package/lib/mass/core/resolutionOf.js.map +1 -0
- package/lib/mass/core/scanFilter.d.ts +25 -0
- package/lib/mass/core/scanFilter.d.ts.map +1 -0
- package/lib/mass/core/scanFilter.js +107 -0
- package/lib/mass/core/scanFilter.js.map +1 -0
- package/lib/mass/core/spectrumJcamp.d.ts +47 -0
- package/lib/mass/core/spectrumJcamp.d.ts.map +1 -0
- package/lib/mass/core/spectrumJcamp.js +167 -0
- package/lib/mass/core/spectrumJcamp.js.map +1 -0
- package/lib/mass/core/toMassSpectrum.d.ts +67 -0
- package/lib/mass/core/toMassSpectrum.d.ts.map +1 -0
- package/lib/mass/core/toMassSpectrum.js +78 -0
- package/lib/mass/core/toMassSpectrum.js.map +1 -0
- package/lib/mass/core/traceIcon.d.ts +82 -0
- package/lib/mass/core/traceIcon.d.ts.map +1 -0
- package/lib/mass/core/traceIcon.js +66 -0
- package/lib/mass/core/traceIcon.js.map +1 -0
- package/lib/mass/core/writtenResolution.d.ts +40 -0
- package/lib/mass/core/writtenResolution.d.ts.map +1 -0
- package/lib/mass/core/writtenResolution.js +77 -0
- package/lib/mass/core/writtenResolution.js.map +1 -0
- package/lib/mass/ui/MassAboutDialog.d.ts +16 -0
- package/lib/mass/ui/MassAboutDialog.d.ts.map +1 -0
- package/lib/mass/ui/MassAboutDialog.js +44 -0
- package/lib/mass/ui/MassAboutDialog.js.map +1 -0
- package/lib/mass/ui/MassCanvas.d.ts +46 -0
- package/lib/mass/ui/MassCanvas.d.ts.map +1 -0
- package/lib/mass/ui/MassCanvas.js +84 -0
- package/lib/mass/ui/MassCanvas.js.map +1 -0
- package/lib/mass/ui/MassChart.d.ts +21 -0
- package/lib/mass/ui/MassChart.d.ts.map +1 -0
- package/lib/mass/ui/MassChart.js +139 -0
- package/lib/mass/ui/MassChart.js.map +1 -0
- package/lib/mass/ui/MassCommandProvider.d.ts +15 -0
- package/lib/mass/ui/MassCommandProvider.d.ts.map +1 -0
- package/lib/mass/ui/MassCommandProvider.js +14 -0
- package/lib/mass/ui/MassCommandProvider.js.map +1 -0
- package/lib/mass/ui/MassCommandTooltip.d.ts +16 -0
- package/lib/mass/ui/MassCommandTooltip.d.ts.map +1 -0
- package/lib/mass/ui/MassCommandTooltip.js +22 -0
- package/lib/mass/ui/MassCommandTooltip.js.map +1 -0
- package/lib/mass/ui/MassDocumentationDialog.d.ts +18 -0
- package/lib/mass/ui/MassDocumentationDialog.d.ts.map +1 -0
- package/lib/mass/ui/MassDocumentationDialog.js +70 -0
- package/lib/mass/ui/MassDocumentationDialog.js.map +1 -0
- package/lib/mass/ui/MassEditor.d.ts +78 -0
- package/lib/mass/ui/MassEditor.d.ts.map +1 -0
- package/lib/mass/ui/MassEditor.js +42 -0
- package/lib/mass/ui/MassEditor.js.map +1 -0
- package/lib/mass/ui/MassHeader.d.ts +12 -0
- package/lib/mass/ui/MassHeader.d.ts.map +1 -0
- package/lib/mass/ui/MassHeader.js +20 -0
- package/lib/mass/ui/MassHeader.js.map +1 -0
- package/lib/mass/ui/MassLogo.d.ts +21 -0
- package/lib/mass/ui/MassLogo.d.ts.map +1 -0
- package/lib/mass/ui/MassLogo.js +36 -0
- package/lib/mass/ui/MassLogo.js.map +1 -0
- package/lib/mass/ui/MassPointerTracker.d.ts +44 -0
- package/lib/mass/ui/MassPointerTracker.d.ts.map +1 -0
- package/lib/mass/ui/MassPointerTracker.js +29 -0
- package/lib/mass/ui/MassPointerTracker.js.map +1 -0
- package/lib/mass/ui/MassShell.d.ts +29 -0
- package/lib/mass/ui/MassShell.d.ts.map +1 -0
- package/lib/mass/ui/MassShell.js +133 -0
- package/lib/mass/ui/MassShell.js.map +1 -0
- package/lib/mass/ui/MassSidePanel.d.ts +32 -0
- package/lib/mass/ui/MassSidePanel.d.ts.map +1 -0
- package/lib/mass/ui/MassSidePanel.js +44 -0
- package/lib/mass/ui/MassSidePanel.js.map +1 -0
- package/lib/mass/ui/MassStateProvider.d.ts +19 -0
- package/lib/mass/ui/MassStateProvider.d.ts.map +1 -0
- package/lib/mass/ui/MassStateProvider.js +16 -0
- package/lib/mass/ui/MassStateProvider.js.map +1 -0
- package/lib/mass/ui/MassStatusBar.d.ts +15 -0
- package/lib/mass/ui/MassStatusBar.d.ts.map +1 -0
- package/lib/mass/ui/MassStatusBar.js +50 -0
- package/lib/mass/ui/MassStatusBar.js.map +1 -0
- package/lib/mass/ui/MassToolbar.d.ts +24 -0
- package/lib/mass/ui/MassToolbar.d.ts.map +1 -0
- package/lib/mass/ui/MassToolbar.js +36 -0
- package/lib/mass/ui/MassToolbar.js.map +1 -0
- package/lib/mass/ui/MetadataPanel.d.ts +35 -0
- package/lib/mass/ui/MetadataPanel.d.ts.map +1 -0
- package/lib/mass/ui/MetadataPanel.js +100 -0
- package/lib/mass/ui/MetadataPanel.js.map +1 -0
- package/lib/mass/ui/MzDecimalsMenu.d.ts +28 -0
- package/lib/mass/ui/MzDecimalsMenu.d.ts.map +1 -0
- package/lib/mass/ui/MzDecimalsMenu.js +40 -0
- package/lib/mass/ui/MzDecimalsMenu.js.map +1 -0
- package/lib/mass/ui/PeakLabels.d.ts +93 -0
- package/lib/mass/ui/PeakLabels.d.ts.map +1 -0
- package/lib/mass/ui/PeakLabels.js +91 -0
- package/lib/mass/ui/PeakLabels.js.map +1 -0
- package/lib/mass/ui/PeakTable.d.ts +34 -0
- package/lib/mass/ui/PeakTable.d.ts.map +1 -0
- package/lib/mass/ui/PeakTable.js +49 -0
- package/lib/mass/ui/PeakTable.js.map +1 -0
- package/lib/mass/ui/PeaksPanel.d.ts +31 -0
- package/lib/mass/ui/PeaksPanel.d.ts.map +1 -0
- package/lib/mass/ui/PeaksPanel.js +53 -0
- package/lib/mass/ui/PeaksPanel.js.map +1 -0
- package/lib/mass/ui/SpectraPanel.d.ts +17 -0
- package/lib/mass/ui/SpectraPanel.d.ts.map +1 -0
- package/lib/mass/ui/SpectraPanel.js +76 -0
- package/lib/mass/ui/SpectraPanel.js.map +1 -0
- package/lib/mass/ui/SpectrumRow.d.ts +26 -0
- package/lib/mass/ui/SpectrumRow.d.ts.map +1 -0
- package/lib/mass/ui/SpectrumRow.js +141 -0
- package/lib/mass/ui/SpectrumRow.js.map +1 -0
- package/lib/mass/ui/SpectrumTrace.d.ts +46 -0
- package/lib/mass/ui/SpectrumTrace.d.ts.map +1 -0
- package/lib/mass/ui/SpectrumTrace.js +68 -0
- package/lib/mass/ui/SpectrumTrace.js.map +1 -0
- package/lib/mass/ui/index.d.ts +69 -0
- package/lib/mass/ui/index.d.ts.map +1 -0
- package/lib/mass/ui/index.js +42 -0
- package/lib/mass/ui/index.js.map +1 -0
- package/lib/mass/ui/massActions.d.ts +52 -0
- package/lib/mass/ui/massActions.d.ts.map +1 -0
- package/lib/mass/ui/massActions.js +62 -0
- package/lib/mass/ui/massActions.js.map +1 -0
- package/lib/mass/ui/massChartProps.d.ts +128 -0
- package/lib/mass/ui/massChartProps.d.ts.map +1 -0
- package/lib/mass/ui/massChartProps.js +14 -0
- package/lib/mass/ui/massChartProps.js.map +1 -0
- package/lib/mass/ui/massCommandContext.d.ts +36 -0
- package/lib/mass/ui/massCommandContext.d.ts.map +1 -0
- package/lib/mass/ui/massCommandContext.js +45 -0
- package/lib/mass/ui/massCommandContext.js.map +1 -0
- package/lib/mass/ui/massHostPanels.d.ts +48 -0
- package/lib/mass/ui/massHostPanels.d.ts.map +1 -0
- package/lib/mass/ui/massHostPanels.js +41 -0
- package/lib/mass/ui/massHostPanels.js.map +1 -0
- package/lib/mass/ui/massStateContext.d.ts +26 -0
- package/lib/mass/ui/massStateContext.d.ts.map +1 -0
- package/lib/mass/ui/massStateContext.js +37 -0
- package/lib/mass/ui/massStateContext.js.map +1 -0
- package/lib/mass/ui/useIntensityZoom.d.ts +20 -0
- package/lib/mass/ui/useIntensityZoom.d.ts.map +1 -0
- package/lib/mass/ui/useIntensityZoom.js +42 -0
- package/lib/mass/ui/useIntensityZoom.js.map +1 -0
- package/lib/mass/ui/useMassEditor.d.ts +52 -0
- package/lib/mass/ui/useMassEditor.d.ts.map +1 -0
- package/lib/mass/ui/useMassEditor.js +93 -0
- package/lib/mass/ui/useMassEditor.js.map +1 -0
- package/lib/mass/ui/useMassFiles.d.ts +22 -0
- package/lib/mass/ui/useMassFiles.d.ts.map +1 -0
- package/lib/mass/ui/useMassFiles.js +71 -0
- package/lib/mass/ui/useMassFiles.js.map +1 -0
- package/lib/mass/ui/useMassHandle.d.ts +15 -0
- package/lib/mass/ui/useMassHandle.d.ts.map +1 -0
- package/lib/mass/ui/useMassHandle.js +35 -0
- package/lib/mass/ui/useMassHandle.js.map +1 -0
- package/lib/mass/ui/useMassPointer.d.ts +70 -0
- package/lib/mass/ui/useMassPointer.d.ts.map +1 -0
- package/lib/mass/ui/useMassPointer.js +57 -0
- package/lib/mass/ui/useMassPointer.js.map +1 -0
- package/lib/mass/ui/useMassShortcuts.d.ts +21 -0
- package/lib/mass/ui/useMassShortcuts.d.ts.map +1 -0
- package/lib/mass/ui/useMassShortcuts.js +66 -0
- package/lib/mass/ui/useMassShortcuts.js.map +1 -0
- package/lib/mass/ui/useMassSide.d.ts +27 -0
- package/lib/mass/ui/useMassSide.d.ts.map +1 -0
- package/lib/mass/ui/useMassSide.js +45 -0
- package/lib/mass/ui/useMassSide.js.map +1 -0
- package/lib/mass/ui/useMassZoom.d.ts +92 -0
- package/lib/mass/ui/useMassZoom.d.ts.map +1 -0
- package/lib/mass/ui/useMassZoom.js +65 -0
- package/lib/mass/ui/useMassZoom.js.map +1 -0
- package/lib/mass.d.ts +16 -0
- package/lib/mass.d.ts.map +1 -0
- package/lib/mass.js +16 -0
- package/lib/mass.js.map +1 -0
- package/lib/panel/ui/PanelRail.d.ts.map +1 -1
- package/lib/panel/ui/PanelRail.js +6 -1
- package/lib/panel/ui/PanelRail.js.map +1 -1
- package/lib/slides/ui/slideSanitizeSchema.d.ts +3 -2
- package/lib/slides/ui/slideSanitizeSchema.d.ts.map +1 -1
- package/lib/slides/ui/slideSanitizeSchema.js +82 -2
- package/lib/slides/ui/slideSanitizeSchema.js.map +1 -1
- package/package.json +6 -1
- package/src/about/core/providers.ts +7 -0
- package/src/about/ui/AboutProvidedBy.tsx +49 -0
- package/src/chart/ui/useChartPointer.ts +18 -4
- package/src/credits/core/credits.ts +53 -0
- package/src/download/core/drawingMarkup.ts +18 -1
- package/src/download/core/figurePng.ts +21 -8
- package/src/download/core/figureSvg.ts +5 -2
- package/src/download/core/figureTarget.ts +28 -3
- package/src/download/core/svgBounds.ts +21 -0
- package/src/download/core/svgToPng.ts +3 -4
- package/src/format/core/relativeTime.ts +29 -7
- package/src/host/core/connectHost.ts +77 -120
- package/src/host/core/hostOutputs.ts +197 -0
- package/src/host/core/index.ts +13 -7
- package/src/host/core/irKinds.ts +92 -0
- package/src/host/core/kinds.ts +16 -6
- package/src/host/core/protocol.ts +50 -8
- package/src/host/core/selectInputs.ts +145 -0
- package/src/host/testing/sciPeaks.ts +140 -0
- package/src/host/testing/standInHost.ts +30 -5
- package/src/host/ui/useHostConnection.ts +17 -8
- package/src/host-testing.ts +4 -0
- package/src/ir/core/handPicking.ts +154 -0
- package/src/ir/core/index.ts +14 -0
- package/src/ir/core/irBandState.ts +155 -0
- package/src/ir/core/irCommands.ts +7 -0
- package/src/ir/core/irPeaks.ts +79 -0
- package/src/ir/core/irReducer.ts +27 -34
- package/src/ir/core/irSpectrum.ts +16 -0
- package/src/ir/core/irState.ts +15 -8
- package/src/ir/core/pickBands.ts +46 -39
- package/src/ir/core/ramanBands.ts +2 -2
- package/src/ir/core/spectrumBands.ts +113 -0
- package/src/ir/ui/BandRow.tsx +20 -2
- package/src/ir/ui/BandsPanel.tsx +46 -88
- package/src/ir/ui/BandsToolbar.tsx +152 -0
- package/src/ir/ui/IrCanvas.tsx +22 -11
- package/src/ir/ui/IrChart.tsx +10 -1
- package/src/ir/ui/IrDocumentationDialog.tsx +7 -0
- package/src/ir/ui/IrEditor.tsx +4 -2
- package/src/ir/ui/IrShell.tsx +5 -0
- package/src/ir/ui/IrStatusBar.tsx +4 -1
- package/src/ir/ui/IrToolbar.tsx +14 -5
- package/src/ir/ui/VibrationalEditor.tsx +2 -1
- package/src/ir/ui/irActions.ts +11 -0
- package/src/ir/ui/irChartProps.ts +4 -1
- package/src/ir/ui/useIrEditor.ts +21 -21
- package/src/locales/de.json +63 -0
- package/src/locales/en.json +63 -0
- package/src/locales/es.json +63 -0
- package/src/locales/fr.json +63 -0
- package/src/locales/it.json +63 -0
- package/src/mass/core/analyseSpectrum.ts +191 -0
- package/src/mass/core/ascendingTrace.ts +62 -0
- package/src/mass/core/centroidPeaks.ts +114 -0
- package/src/mass/core/detectMassFormat.ts +113 -0
- package/src/mass/core/downloadSpectra.ts +52 -0
- package/src/mass/core/fromJcamp.ts +151 -0
- package/src/mass/core/fromText.ts +58 -0
- package/src/mass/core/index.ts +194 -0
- package/src/mass/core/jcampTechnique.ts +87 -0
- package/src/mass/core/labelStackBox.ts +75 -0
- package/src/mass/core/labelledPeaks.ts +135 -0
- package/src/mass/core/loadMassSpectra.ts +86 -0
- package/src/mass/core/loadedMassSpectrum.ts +43 -0
- package/src/mass/core/massCommands.ts +156 -0
- package/src/mass/core/massDomain.ts +229 -0
- package/src/mass/core/massEditorApi.ts +68 -0
- package/src/mass/core/massFormat.ts +187 -0
- package/src/mass/core/massMeta.ts +239 -0
- package/src/mass/core/massReducer.ts +232 -0
- package/src/mass/core/massResolution.ts +169 -0
- package/src/mass/core/massSidePanels.ts +27 -0
- package/src/mass/core/massSpectrum.ts +220 -0
- package/src/mass/core/massState.ts +206 -0
- package/src/mass/core/massStateEdits.ts +104 -0
- package/src/mass/core/massSummary.ts +213 -0
- package/src/mass/core/mzDecimalsSetting.ts +52 -0
- package/src/mass/core/nearestPeak.ts +130 -0
- package/src/mass/core/peakLabelLines.ts +112 -0
- package/src/mass/core/peakLabelPlan.ts +246 -0
- package/src/mass/core/peakTable.ts +82 -0
- package/src/mass/core/resolutionOf.ts +100 -0
- package/src/mass/core/scanFilter.ts +119 -0
- package/src/mass/core/spectrumJcamp.ts +186 -0
- package/src/mass/core/toMassSpectrum.ts +126 -0
- package/src/mass/core/traceIcon.ts +105 -0
- package/src/mass/core/writtenResolution.ts +81 -0
- package/src/mass/ui/MassAboutDialog.tsx +89 -0
- package/src/mass/ui/MassCanvas.tsx +170 -0
- package/src/mass/ui/MassChart.tsx +266 -0
- package/src/mass/ui/MassCommandProvider.tsx +34 -0
- package/src/mass/ui/MassCommandTooltip.tsx +36 -0
- package/src/mass/ui/MassDocumentationDialog.tsx +136 -0
- package/src/mass/ui/MassEditor.tsx +130 -0
- package/src/mass/ui/MassHeader.tsx +38 -0
- package/src/mass/ui/MassLogo.tsx +84 -0
- package/src/mass/ui/MassPointerTracker.tsx +72 -0
- package/src/mass/ui/MassShell.tsx +237 -0
- package/src/mass/ui/MassSidePanel.tsx +107 -0
- package/src/mass/ui/MassStateProvider.tsx +32 -0
- package/src/mass/ui/MassStatusBar.tsx +108 -0
- package/src/mass/ui/MassToolbar.tsx +120 -0
- package/src/mass/ui/MetadataPanel.tsx +201 -0
- package/src/mass/ui/MzDecimalsMenu.tsx +86 -0
- package/src/mass/ui/PeakLabels.tsx +242 -0
- package/src/mass/ui/PeakTable.tsx +199 -0
- package/src/mass/ui/PeaksPanel.tsx +182 -0
- package/src/mass/ui/SpectraPanel.tsx +153 -0
- package/src/mass/ui/SpectrumRow.tsx +246 -0
- package/src/mass/ui/SpectrumTrace.tsx +119 -0
- package/src/mass/ui/index.ts +69 -0
- package/src/mass/ui/massActions.ts +109 -0
- package/src/mass/ui/massChartProps.ts +130 -0
- package/src/mass/ui/massCommandContext.tsx +65 -0
- package/src/mass/ui/massHostPanels.ts +71 -0
- package/src/mass/ui/massStateContext.ts +48 -0
- package/src/mass/ui/useIntensityZoom.ts +55 -0
- package/src/mass/ui/useMassEditor.ts +156 -0
- package/src/mass/ui/useMassFiles.ts +91 -0
- package/src/mass/ui/useMassHandle.ts +58 -0
- package/src/mass/ui/useMassPointer.ts +120 -0
- package/src/mass/ui/useMassShortcuts.ts +85 -0
- package/src/mass/ui/useMassSide.ts +63 -0
- package/src/mass/ui/useMassZoom.ts +157 -0
- package/src/mass.ts +16 -0
- package/src/panel/ui/PanelRail.tsx +5 -1
- package/src/slides/ui/slideSanitizeSchema.ts +86 -2
- package/styles/chrome.css +7 -0
- package/styles/slides.css +47 -0
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The generic zoom, told what a mass spectrum's window is fitted to.
|
|
3
|
+
*
|
|
4
|
+
* Every gesture — the drag, the wheel, the double click — is `useChartZoom` in
|
|
5
|
+
* the shared chart and is not written here, because none of it is about mass.
|
|
6
|
+
* What *is* about mass is the fit: a spectrum carries two traces where only one
|
|
7
|
+
* is drawn, and a previewed pattern is left out of the extents. That arithmetic
|
|
8
|
+
* is `massDomain.ts`, and this hook is what joins the two.
|
|
9
|
+
*
|
|
10
|
+
* One gesture is about mass in the same way. A click on a mass chart is a peak
|
|
11
|
+
* or it is nothing at all, and only the axis the gesture was measured against
|
|
12
|
+
* can say which of the two it was — so the hook that owns that axis answers it,
|
|
13
|
+
* and the chart above is handed the peak rather than a place on the plot.
|
|
14
|
+
*/
|
|
15
|
+
import type { RefObject } from 'react';
|
|
16
|
+
import type { ZoomDragMode } from '../../chart/core/chartDomain.ts';
|
|
17
|
+
import type { PlotRect } from '../../chart/core/chartGeometry.ts';
|
|
18
|
+
import type { ChartScale } from '../../chart/core/chartScale.ts';
|
|
19
|
+
import type { ChartClickModifiers } from '../../chart/ui/chartGestures.ts';
|
|
20
|
+
import type { ChartZoom } from '../../chart/ui/useChartZoom.ts';
|
|
21
|
+
import type { MassDomain, MassSpectrum } from '../core/massSpectrum.ts';
|
|
22
|
+
import type { NearestPeak } from '../core/nearestPeak.ts';
|
|
23
|
+
/** A click on the plot, with everything needed to say what it was on. */
|
|
24
|
+
export interface MassZoomClick {
|
|
25
|
+
/** Where it landed on the m/z axis. */
|
|
26
|
+
mz: number;
|
|
27
|
+
/** The picked peak within reach of it, `null` when it landed on none. */
|
|
28
|
+
peak: NearestPeak | null;
|
|
29
|
+
/**
|
|
30
|
+
* The m/z axis the click was measured against, for a host testing marks of
|
|
31
|
+
* its own — a ring on a fragmented peak — before the sticks.
|
|
32
|
+
*/
|
|
33
|
+
xScale: ChartScale;
|
|
34
|
+
/** The modifier keys held as the button came up. */
|
|
35
|
+
modifiers: ChartClickModifiers;
|
|
36
|
+
}
|
|
37
|
+
export interface MassZoomOptions {
|
|
38
|
+
/** What the chart draws. */
|
|
39
|
+
spectra: readonly MassSpectrum[];
|
|
40
|
+
/**
|
|
41
|
+
* What the window is fitted to instead, when that is not what the chart
|
|
42
|
+
* draws — every pane of a stack is fitted to the union, so a faint spectrum
|
|
43
|
+
* and a bright one are not drawn alike.
|
|
44
|
+
* @default the spectra the chart draws
|
|
45
|
+
*/
|
|
46
|
+
fitTo?: readonly MassSpectrum[];
|
|
47
|
+
/**
|
|
48
|
+
* Whether one spectrum is drawn below the axis, which fits the window about
|
|
49
|
+
* zero.
|
|
50
|
+
* @default false
|
|
51
|
+
*/
|
|
52
|
+
mirror?: boolean;
|
|
53
|
+
/** The SVG the gestures are made on, as it was handed to its `ref`. */
|
|
54
|
+
svgRef: RefObject<SVGSVGElement | null>;
|
|
55
|
+
/** Where the plot sits inside that SVG, which the axes are laid over. */
|
|
56
|
+
plot: PlotRect;
|
|
57
|
+
/**
|
|
58
|
+
* The window a host is imposing, `null` while it imposes none. Handed straight
|
|
59
|
+
* through; `useChartZoom` documents what imposing one does.
|
|
60
|
+
* @default null
|
|
61
|
+
*/
|
|
62
|
+
domain?: MassDomain | null;
|
|
63
|
+
/**
|
|
64
|
+
* What a drag asks for: the m/z axis alone, or the rectangle swept out.
|
|
65
|
+
* @default 'xAxis'
|
|
66
|
+
*/
|
|
67
|
+
drag?: ZoomDragMode;
|
|
68
|
+
/**
|
|
69
|
+
* Whether the chart answers `f` with the fit itself. A viewer running its own
|
|
70
|
+
* keys through a command table, where the key is documented, turns it off.
|
|
71
|
+
* @default true
|
|
72
|
+
*/
|
|
73
|
+
keys?: boolean;
|
|
74
|
+
/**
|
|
75
|
+
* Told where a click on the plot landed — a press let go over it without
|
|
76
|
+
* travelling, never the end of a drag — and the peak within reach of it.
|
|
77
|
+
* @default undefined
|
|
78
|
+
*/
|
|
79
|
+
onClick?: (click: MassZoomClick) => void;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Zoom a mass chart by dragging it, by the wheel and by double clicking it.
|
|
83
|
+
*
|
|
84
|
+
* The y axis keeps its default rules, which are a stick spectrum's: zero is the
|
|
85
|
+
* baseline the wheel scales about, and it stays inside the window however the
|
|
86
|
+
* chart is zoomed, because a window starting at a tenth of the base peak would
|
|
87
|
+
* cut every stick off at the ankles.
|
|
88
|
+
* @param options - The chart and what it holds.
|
|
89
|
+
* @returns The window and the gestures that move it.
|
|
90
|
+
*/
|
|
91
|
+
export declare function useMassZoom(options: MassZoomOptions): ChartZoom;
|
|
92
|
+
//# sourceMappingURL=useMassZoom.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMassZoom.d.ts","sourceRoot":"","sources":["../../../src/mass/ui/useMassZoom.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAEjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAGhE,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAG1D,yEAAyE;AACzE,MAAM,WAAW,aAAa;IAC5B,uCAAuC;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,yEAAyE;IACzE,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC;IACzB;;;OAGG;IACH,MAAM,EAAE,UAAU,CAAC;IACnB,oDAAoD;IACpD,SAAS,EAAE,mBAAmB,CAAC;CAChC;AAED,MAAM,WAAW,eAAe;IAC9B,4BAA4B;IAC5B,OAAO,EAAE,SAAS,YAAY,EAAE,CAAC;IACjC;;;;;OAKG;IACH,KAAK,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IAChC;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,uEAAuE;IACvE,MAAM,EAAE,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IACxC,yEAAyE;IACzE,IAAI,EAAE,QAAQ,CAAC;IACf;;;;OAIG;IACH,MAAM,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC3B;;;OAGG;IACH,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB;;;;OAIG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;;OAIG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;CAC1C;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,SAAS,CAwD/D"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The generic zoom, told what a mass spectrum's window is fitted to.
|
|
3
|
+
*
|
|
4
|
+
* Every gesture — the drag, the wheel, the double click — is `useChartZoom` in
|
|
5
|
+
* the shared chart and is not written here, because none of it is about mass.
|
|
6
|
+
* What *is* about mass is the fit: a spectrum carries two traces where only one
|
|
7
|
+
* is drawn, and a previewed pattern is left out of the extents. That arithmetic
|
|
8
|
+
* is `massDomain.ts`, and this hook is what joins the two.
|
|
9
|
+
*
|
|
10
|
+
* One gesture is about mass in the same way. A click on a mass chart is a peak
|
|
11
|
+
* or it is nothing at all, and only the axis the gesture was measured against
|
|
12
|
+
* can say which of the two it was — so the hook that owns that axis answers it,
|
|
13
|
+
* and the chart above is handed the peak rather than a place on the plot.
|
|
14
|
+
*/
|
|
15
|
+
import { useCallback, useLayoutEffect, useMemo, useRef } from 'react';
|
|
16
|
+
import { useChartZoom } from "../../chart/ui/useChartZoom.js";
|
|
17
|
+
import { fittedTo, fullDomain } from "../core/massDomain.js";
|
|
18
|
+
import { peakAtMz } from "../core/nearestPeak.js";
|
|
19
|
+
/**
|
|
20
|
+
* Zoom a mass chart by dragging it, by the wheel and by double clicking it.
|
|
21
|
+
*
|
|
22
|
+
* The y axis keeps its default rules, which are a stick spectrum's: zero is the
|
|
23
|
+
* baseline the wheel scales about, and it stays inside the window however the
|
|
24
|
+
* chart is zoomed, because a window starting at a tenth of the base peak would
|
|
25
|
+
* cut every stick off at the ankles.
|
|
26
|
+
* @param options - The chart and what it holds.
|
|
27
|
+
* @returns The window and the gestures that move it.
|
|
28
|
+
*/
|
|
29
|
+
export function useMassZoom(options) {
|
|
30
|
+
const { spectra, fitTo, mirror = false, svgRef, plot, domain = null, drag = 'xAxis', keys = true, onClick, } = options;
|
|
31
|
+
const measured = fitTo ?? spectra;
|
|
32
|
+
const fitted = useMemo(() => fullDomain(measured, mirror), [measured, mirror]);
|
|
33
|
+
const fitKey = useMemo(() => fittedTo(measured, mirror), [measured, mirror]);
|
|
34
|
+
const gestures = useMemo(() => ({ drag, wheel: true, keys }), [drag, keys]);
|
|
35
|
+
// The axis a click is measured against is the one the zoom arrived at, and
|
|
36
|
+
// the click comes back out of that same hook: it therefore reaches the
|
|
37
|
+
// handler through a ref, read as the button comes up rather than closed over
|
|
38
|
+
// when the gesture layer was built.
|
|
39
|
+
const axis = useRef(null);
|
|
40
|
+
const onPress = useCallback((point, modifiers) => {
|
|
41
|
+
const xScale = axis.current;
|
|
42
|
+
if (xScale === null || onClick === undefined)
|
|
43
|
+
return;
|
|
44
|
+
onClick({
|
|
45
|
+
mz: point.x,
|
|
46
|
+
peak: peakAtMz(spectra, xScale, point.x),
|
|
47
|
+
xScale,
|
|
48
|
+
modifiers,
|
|
49
|
+
});
|
|
50
|
+
}, [spectra, onClick]);
|
|
51
|
+
const zoom = useChartZoom({
|
|
52
|
+
fitted,
|
|
53
|
+
fitKey,
|
|
54
|
+
svgRef,
|
|
55
|
+
plot,
|
|
56
|
+
domain,
|
|
57
|
+
gestures,
|
|
58
|
+
...(onClick === undefined ? {} : { onClick: onPress }),
|
|
59
|
+
});
|
|
60
|
+
useLayoutEffect(() => {
|
|
61
|
+
axis.current = zoom.xScale;
|
|
62
|
+
});
|
|
63
|
+
return zoom;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=useMassZoom.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMassZoom.js","sourceRoot":"","sources":["../../../src/mass/ui/useMassZoom.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAQtE,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAG7D,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AA8DlD;;;;;;;;;GASG;AACH,MAAM,UAAU,WAAW,CAAC,OAAwB;IAClD,MAAM,EACJ,OAAO,EACP,KAAK,EACL,MAAM,GAAG,KAAK,EACd,MAAM,EACN,IAAI,EACJ,MAAM,GAAG,IAAI,EACb,IAAI,GAAG,OAAO,EACd,IAAI,GAAG,IAAI,EACX,OAAO,GACR,GAAG,OAAO,CAAC;IAEZ,MAAM,QAAQ,GAAG,KAAK,IAAI,OAAO,CAAC;IAClC,MAAM,MAAM,GAAG,OAAO,CACpB,GAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,EAClC,CAAC,QAAQ,EAAE,MAAM,CAAC,CACnB,CAAC;IACF,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7E,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAE5E,2EAA2E;IAC3E,uEAAuE;IACvE,6EAA6E;IAC7E,oCAAoC;IACpC,MAAM,IAAI,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAC;IAE7C,MAAM,OAAO,GAAG,WAAW,CACzB,CAAC,KAAiB,EAAE,SAA8B,EAAE,EAAE;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO;QACrD,OAAO,CAAC;YACN,EAAE,EAAE,KAAK,CAAC,CAAC;YACX,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;YACxC,MAAM;YACN,SAAS;SACV,CAAC,CAAC;IACL,CAAC,EACD,CAAC,OAAO,EAAE,OAAO,CAAC,CACnB,CAAC;IAEF,MAAM,IAAI,GAAG,YAAY,CAAC;QACxB,MAAM;QACN,MAAM;QACN,MAAM;QACN,IAAI;QACJ,MAAM;QACN,QAAQ;QACR,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;KACvD,CAAC,CAAC;IAEH,eAAe,CAAC,GAAG,EAAE;QACnB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/lib/mass.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Displaying mass spectra: the chart, the peak table and the whole editor.
|
|
3
|
+
*
|
|
4
|
+
* A door of its own, and not part of `react-cheminfo/core` or
|
|
5
|
+
* `react-cheminfo/ui`, because reading a spectrum drags the formats it may
|
|
6
|
+
* arrive in — `jcampconverter` and `xy-parser` for the files, `ms-spectrum` and
|
|
7
|
+
* `ml-gsd` for the peak picking, `convert-to-jcamp` for writing them back out.
|
|
8
|
+
* A site with no spectra to look at installs none of it.
|
|
9
|
+
*
|
|
10
|
+
* The infrared viewer, `react-cheminfo/ir`, is its sibling: the same shell, the
|
|
11
|
+
* same three buckets of state, the same chart underneath. Neither imports the
|
|
12
|
+
* other.
|
|
13
|
+
*/
|
|
14
|
+
export * from './mass/core/index.ts';
|
|
15
|
+
export * from './mass/ui/index.ts';
|
|
16
|
+
//# sourceMappingURL=mass.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mass.d.ts","sourceRoot":"","sources":["../src/mass.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC"}
|
package/lib/mass.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Displaying mass spectra: the chart, the peak table and the whole editor.
|
|
3
|
+
*
|
|
4
|
+
* A door of its own, and not part of `react-cheminfo/core` or
|
|
5
|
+
* `react-cheminfo/ui`, because reading a spectrum drags the formats it may
|
|
6
|
+
* arrive in — `jcampconverter` and `xy-parser` for the files, `ms-spectrum` and
|
|
7
|
+
* `ml-gsd` for the peak picking, `convert-to-jcamp` for writing them back out.
|
|
8
|
+
* A site with no spectra to look at installs none of it.
|
|
9
|
+
*
|
|
10
|
+
* The infrared viewer, `react-cheminfo/ir`, is its sibling: the same shell, the
|
|
11
|
+
* same three buckets of state, the same chart underneath. Neither imports the
|
|
12
|
+
* other.
|
|
13
|
+
*/
|
|
14
|
+
export * from "./mass/core/index.js";
|
|
15
|
+
export * from "./mass/ui/index.js";
|
|
16
|
+
//# sourceMappingURL=mass.js.map
|
package/lib/mass.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mass.js","sourceRoot":"","sources":["../src/mass.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PanelRail.d.ts","sourceRoot":"","sources":["../../../src/panel/ui/PanelRail.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC;;;;;;GAMG;AACH,MAAM,WAAW,SAAS,CAAC,GAAG,SAAS,MAAM,GAAG,MAAM;IACpD,8DAA8D;IAC9D,EAAE,EAAE,GAAG,CAAC;IACR,yCAAyC;IACzC,IAAI,EAAE,QAAQ,GAAG,YAAY,CAAC;IAC9B,8BAA8B;IAC9B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,8BAA8B;AAC9B,MAAM,WAAW,cAAc,CAAC,GAAG,SAAS,MAAM,GAAG,MAAM;IACzD,uDAAuD;IACvD,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IACtC,8BAA8B;IAC9B,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,qDAAqD;IACrD,QAAQ,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,IAAI,CAAC;CAC7B;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,GAAG,SAAS,MAAM,EAC1C,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC,GACzB,SAAS,
|
|
1
|
+
{"version":3,"file":"PanelRail.d.ts","sourceRoot":"","sources":["../../../src/panel/ui/PanelRail.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC;;;;;;GAMG;AACH,MAAM,WAAW,SAAS,CAAC,GAAG,SAAS,MAAM,GAAG,MAAM;IACpD,8DAA8D;IAC9D,EAAE,EAAE,GAAG,CAAC;IACR,yCAAyC;IACzC,IAAI,EAAE,QAAQ,GAAG,YAAY,CAAC;IAC9B,8BAA8B;IAC9B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,8BAA8B;AAC9B,MAAM,WAAW,cAAc,CAAC,GAAG,SAAS,MAAM,GAAG,MAAM;IACzD,uDAAuD;IACvD,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IACtC,8BAA8B;IAC9B,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,qDAAqD;IACrD,QAAQ,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,IAAI,CAAC;CAC7B;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,GAAG,SAAS,MAAM,EAC1C,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC,GACzB,SAAS,CAwBX"}
|
|
@@ -7,6 +7,11 @@ import { ActivityBar } from 'react-science/ui';
|
|
|
7
7
|
*/
|
|
8
8
|
export function PanelRail(props) {
|
|
9
9
|
const { panels, openIds, onToggle } = props;
|
|
10
|
-
return (_jsx(ActivityBar, { children: panels.map((panel) => (_jsx(ActivityBar.Item
|
|
10
|
+
return (_jsx(ActivityBar, { children: panels.map((panel) => (_jsx(ActivityBar.Item
|
|
11
|
+
// The panel id goes on a data attribute rather than on `id`: it is
|
|
12
|
+
// unique within one rail, not on the page, and a page can hold two —
|
|
13
|
+
// AGA2S hands the mass viewer the glycan editor's own panels, so both
|
|
14
|
+
// rails carry `fragments`.
|
|
15
|
+
, { "data-panel-id": panel.id, icon: panel.icon, tooltip: panel.title, "aria-label": panel.title, active: openIds.includes(panel.id), onClick: () => onToggle(panel.id) }, panel.id))) }));
|
|
11
16
|
}
|
|
12
17
|
//# sourceMappingURL=PanelRail.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PanelRail.js","sourceRoot":"","sources":["../../../src/panel/ui/PanelRail.tsx"],"names":[],"mappings":";AAWA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AA4B/C;;;;GAIG;AACH,MAAM,UAAU,SAAS,CACvB,KAA0B;IAE1B,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAE5C,OAAO,CACL,KAAC,WAAW,cACT,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACrB,KAAC,WAAW,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"PanelRail.js","sourceRoot":"","sources":["../../../src/panel/ui/PanelRail.tsx"],"names":[],"mappings":";AAWA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AA4B/C;;;;GAIG;AACH,MAAM,UAAU,SAAS,CACvB,KAA0B;IAE1B,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAE5C,OAAO,CACL,KAAC,WAAW,cACT,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACrB,KAAC,WAAW,CAAC,IAAI;QACf,mEAAmE;QACnE,qEAAqE;QACrE,sEAAsE;QACtE,2BAA2B;6BACZ,KAAK,CAAC,EAAE,EAEvB,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,OAAO,EAAE,KAAK,CAAC,KAAK,gBAGR,KAAK,CAAC,KAAK,EACvB,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,EAClC,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,IAP5B,KAAK,CAAC,EAAE,CAQb,CACH,CAAC,GACU,CACf,CAAC;AACJ,CAAC"}
|
|
@@ -4,8 +4,9 @@ import type { Options as SanitizeSchema } from 'rehype-sanitize';
|
|
|
4
4
|
*
|
|
5
5
|
* GitHub's schema, which already strips scripts, event handlers and every URL
|
|
6
6
|
* that is not http, https or relative, plus what decks legitimately use beyond
|
|
7
|
-
* it: figures, the class a site styles a block with,
|
|
8
|
-
*
|
|
7
|
+
* it: figures, the class a site styles a block with, frames, and formulas
|
|
8
|
+
* written in MathML, which the browser draws natively. Which frame may actually
|
|
9
|
+
* be drawn is decided by `isFamilyFrameSource` when it renders.
|
|
9
10
|
*/
|
|
10
11
|
export declare const SLIDE_SANITIZE_SCHEMA: SanitizeSchema;
|
|
11
12
|
//# sourceMappingURL=slideSanitizeSchema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slideSanitizeSchema.d.ts","sourceRoot":"","sources":["../../../src/slides/ui/slideSanitizeSchema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"slideSanitizeSchema.d.ts","sourceRoot":"","sources":["../../../src/slides/ui/slideSanitizeSchema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAuEjE;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,EAAE,cAmBnC,CAAC"}
|
|
@@ -1,11 +1,77 @@
|
|
|
1
1
|
import { defaultSchema } from 'rehype-sanitize';
|
|
2
|
+
/**
|
|
3
|
+
* The MathML Core elements a formula is written with. `annotation-xml`, which
|
|
4
|
+
* may carry HTML, and the legacy `maction` are left out.
|
|
5
|
+
*/
|
|
6
|
+
const MATHML_ELEMENTS = [
|
|
7
|
+
'math',
|
|
8
|
+
'merror',
|
|
9
|
+
'mfrac',
|
|
10
|
+
'mi',
|
|
11
|
+
'mmultiscripts',
|
|
12
|
+
'mn',
|
|
13
|
+
'mo',
|
|
14
|
+
'mover',
|
|
15
|
+
'mpadded',
|
|
16
|
+
'mphantom',
|
|
17
|
+
'mprescripts',
|
|
18
|
+
'mroot',
|
|
19
|
+
'mrow',
|
|
20
|
+
'ms',
|
|
21
|
+
'mspace',
|
|
22
|
+
'msqrt',
|
|
23
|
+
'mstyle',
|
|
24
|
+
'msub',
|
|
25
|
+
'msubsup',
|
|
26
|
+
'msup',
|
|
27
|
+
'mtable',
|
|
28
|
+
'mtd',
|
|
29
|
+
'mtext',
|
|
30
|
+
'mtr',
|
|
31
|
+
'munder',
|
|
32
|
+
'munderover',
|
|
33
|
+
'semantics',
|
|
34
|
+
'annotation',
|
|
35
|
+
];
|
|
36
|
+
/**
|
|
37
|
+
* What every MathML element may carry, colours aside: a formula takes the
|
|
38
|
+
* slide's ink, as everything else on it does.
|
|
39
|
+
*/
|
|
40
|
+
const MATHML_GLOBAL = ['dir', 'displaystyle', 'mathvariant', 'scriptlevel'];
|
|
41
|
+
/** The attributes particular to one MathML element, by hast property name. */
|
|
42
|
+
const MATHML_ATTRIBUTES = {
|
|
43
|
+
math: [...MATHML_GLOBAL, 'display', 'alttext'],
|
|
44
|
+
mo: [
|
|
45
|
+
...MATHML_GLOBAL,
|
|
46
|
+
'form',
|
|
47
|
+
'fence',
|
|
48
|
+
'separator',
|
|
49
|
+
'lspace',
|
|
50
|
+
'rspace',
|
|
51
|
+
'stretchy',
|
|
52
|
+
'symmetric',
|
|
53
|
+
'maxsize',
|
|
54
|
+
'minsize',
|
|
55
|
+
'largeop',
|
|
56
|
+
'movablelimits',
|
|
57
|
+
],
|
|
58
|
+
mfrac: [...MATHML_GLOBAL, 'linethickness'],
|
|
59
|
+
mspace: [...MATHML_GLOBAL, 'width', 'height', 'depth'],
|
|
60
|
+
mpadded: [...MATHML_GLOBAL, 'width', 'height', 'depth', 'lspace', 'voffset'],
|
|
61
|
+
mover: [...MATHML_GLOBAL, 'accent'],
|
|
62
|
+
munder: [...MATHML_GLOBAL, 'accentunder'],
|
|
63
|
+
munderover: [...MATHML_GLOBAL, 'accent', 'accentunder'],
|
|
64
|
+
mtd: [...MATHML_GLOBAL, 'columnspan', 'rowSpan'],
|
|
65
|
+
annotation: ['encoding'],
|
|
66
|
+
};
|
|
2
67
|
/**
|
|
3
68
|
* What survives of the raw HTML a deck writes.
|
|
4
69
|
*
|
|
5
70
|
* GitHub's schema, which already strips scripts, event handlers and every URL
|
|
6
71
|
* that is not http, https or relative, plus what decks legitimately use beyond
|
|
7
|
-
* it: figures, the class a site styles a block with,
|
|
8
|
-
*
|
|
72
|
+
* it: figures, the class a site styles a block with, frames, and formulas
|
|
73
|
+
* written in MathML, which the browser draws natively. Which frame may actually
|
|
74
|
+
* be drawn is decided by `isFamilyFrameSource` when it renders.
|
|
9
75
|
*/
|
|
10
76
|
export const SLIDE_SANITIZE_SCHEMA = {
|
|
11
77
|
...defaultSchema,
|
|
@@ -18,11 +84,25 @@ export const SLIDE_SANITIZE_SCHEMA = {
|
|
|
18
84
|
'mark',
|
|
19
85
|
'small',
|
|
20
86
|
'u',
|
|
87
|
+
...MATHML_ELEMENTS,
|
|
21
88
|
],
|
|
22
89
|
attributes: {
|
|
23
90
|
...defaultSchema.attributes,
|
|
91
|
+
...mathmlAttributes(),
|
|
24
92
|
iframe: ['src', 'allowFullScreen'],
|
|
25
93
|
'*': [...(defaultSchema.attributes?.['*'] ?? []), 'className'],
|
|
26
94
|
},
|
|
27
95
|
};
|
|
96
|
+
/**
|
|
97
|
+
* The attributes of every MathML element, those of its own and the global
|
|
98
|
+
* ones.
|
|
99
|
+
* @returns The attribute lists, by element.
|
|
100
|
+
*/
|
|
101
|
+
function mathmlAttributes() {
|
|
102
|
+
const attributes = {};
|
|
103
|
+
for (const element of MATHML_ELEMENTS) {
|
|
104
|
+
attributes[element] = MATHML_ATTRIBUTES[element] ?? MATHML_GLOBAL;
|
|
105
|
+
}
|
|
106
|
+
return attributes;
|
|
107
|
+
}
|
|
28
108
|
//# sourceMappingURL=slideSanitizeSchema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slideSanitizeSchema.js","sourceRoot":"","sources":["../../../src/slides/ui/slideSanitizeSchema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD
|
|
1
|
+
{"version":3,"file":"slideSanitizeSchema.js","sourceRoot":"","sources":["../../../src/slides/ui/slideSanitizeSchema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD;;;GAGG;AACH,MAAM,eAAe,GAAG;IACtB,MAAM;IACN,QAAQ;IACR,OAAO;IACP,IAAI;IACJ,eAAe;IACf,IAAI;IACJ,IAAI;IACJ,OAAO;IACP,SAAS;IACT,UAAU;IACV,aAAa;IACb,OAAO;IACP,MAAM;IACN,IAAI;IACJ,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,MAAM;IACN,SAAS;IACT,MAAM;IACN,QAAQ;IACR,KAAK;IACL,OAAO;IACP,KAAK;IACL,QAAQ;IACR,YAAY;IACZ,WAAW;IACX,YAAY;CACb,CAAC;AAEF;;;GAGG;AACH,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;AAE5E,8EAA8E;AAC9E,MAAM,iBAAiB,GAA6B;IAClD,IAAI,EAAE,CAAC,GAAG,aAAa,EAAE,SAAS,EAAE,SAAS,CAAC;IAC9C,EAAE,EAAE;QACF,GAAG,aAAa;QAChB,MAAM;QACN,OAAO;QACP,WAAW;QACX,QAAQ;QACR,QAAQ;QACR,UAAU;QACV,WAAW;QACX,SAAS;QACT,SAAS;QACT,SAAS;QACT,eAAe;KAChB;IACD,KAAK,EAAE,CAAC,GAAG,aAAa,EAAE,eAAe,CAAC;IAC1C,MAAM,EAAE,CAAC,GAAG,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC;IACtD,OAAO,EAAE,CAAC,GAAG,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC;IAC5E,KAAK,EAAE,CAAC,GAAG,aAAa,EAAE,QAAQ,CAAC;IACnC,MAAM,EAAE,CAAC,GAAG,aAAa,EAAE,aAAa,CAAC;IACzC,UAAU,EAAE,CAAC,GAAG,aAAa,EAAE,QAAQ,EAAE,aAAa,CAAC;IACvD,GAAG,EAAE,CAAC,GAAG,aAAa,EAAE,YAAY,EAAE,SAAS,CAAC;IAChD,UAAU,EAAE,CAAC,UAAU,CAAC;CACzB,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAmB;IACnD,GAAG,aAAa;IAChB,QAAQ,EAAE;QACR,GAAG,CAAC,aAAa,CAAC,QAAQ,IAAI,EAAE,CAAC;QACjC,SAAS;QACT,YAAY;QACZ,QAAQ;QACR,QAAQ;QACR,MAAM;QACN,OAAO;QACP,GAAG;QACH,GAAG,eAAe;KACnB;IACD,UAAU,EAAE;QACV,GAAG,aAAa,CAAC,UAAU;QAC3B,GAAG,gBAAgB,EAAE;QACrB,MAAM,EAAE,CAAC,KAAK,EAAE,iBAAiB,CAAC;QAClC,GAAG,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,WAAW,CAAC;KAC/D;CACF,CAAC;AAEF;;;;GAIG;AACH,SAAS,gBAAgB;IACvB,MAAM,UAAU,GAA6B,EAAE,CAAC;IAChD,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;QACtC,UAAU,CAAC,OAAO,CAAC,GAAG,iBAAiB,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC;IACpE,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-cheminfo",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.71.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "React components, hooks and framework-free helpers shared by the cheminfo sites: site chrome, citations, sharing, routing, pedagogy, charts, and the structure, orbital and 3D molecule viewers",
|
|
6
6
|
"author": "Luc Patiny",
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
"./host": "./lib/host.js",
|
|
24
24
|
"./host-testing": "./lib/host-testing.js",
|
|
25
25
|
"./ir": "./lib/ir.js",
|
|
26
|
+
"./mass": "./lib/mass.js",
|
|
26
27
|
"./molecule3d": "./lib/molecule3d.js",
|
|
27
28
|
"./molstar/*": "./lib/molstar/*/index.js",
|
|
28
29
|
"./orbital": "./lib/orbital.js",
|
|
@@ -79,16 +80,20 @@
|
|
|
79
80
|
"convert-to-jcamp": "^7.0.1",
|
|
80
81
|
"intl-messageformat": "^11.2.15",
|
|
81
82
|
"ir-spectrum": "^4.2.0",
|
|
83
|
+
"jcampconverter": "^12.5.11",
|
|
82
84
|
"leven": "^4.1.0",
|
|
83
85
|
"mf-parser": "^3.9.3",
|
|
86
|
+
"ml-peak-shape-generator": "^5.6.0",
|
|
84
87
|
"ml-spectra-processing": "^14.35.1",
|
|
85
88
|
"ml-xsadd": "^3.0.1",
|
|
89
|
+
"ms-spectrum": "^3.12.1",
|
|
86
90
|
"openchemlib": "^9.25.0",
|
|
87
91
|
"react-markdown": "^10.1.0",
|
|
88
92
|
"react-mf": "^3.1.1",
|
|
89
93
|
"rehype-raw": "^7.0.0",
|
|
90
94
|
"rehype-sanitize": "^6.0.0",
|
|
91
95
|
"semver": "^7.8.5",
|
|
96
|
+
"xy-parser": "^6.0.1",
|
|
92
97
|
"yaml": "^2.9.1"
|
|
93
98
|
},
|
|
94
99
|
"devDependencies": {
|
|
@@ -42,4 +42,11 @@ export const PROVIDERS = [
|
|
|
42
42
|
href: 'https://www.epfl.ch',
|
|
43
43
|
location: 'Lausanne, Switzerland',
|
|
44
44
|
},
|
|
45
|
+
{
|
|
46
|
+
id: 'unil-esc',
|
|
47
|
+
name: 'ESC',
|
|
48
|
+
fullName: 'École des sciences criminelles, Université de Lausanne',
|
|
49
|
+
href: 'https://www.unil.ch/esc/',
|
|
50
|
+
location: 'Lausanne, Switzerland',
|
|
51
|
+
},
|
|
45
52
|
] as const satisfies readonly ProviderEntry[];
|
|
@@ -88,11 +88,30 @@ function ProviderLogo(props: { provider: ProviderEntry }): ReactElement {
|
|
|
88
88
|
switch (provider.id) {
|
|
89
89
|
case 'epfl':
|
|
90
90
|
return <EpflLogo label={label} />;
|
|
91
|
+
case 'unil-esc':
|
|
92
|
+
return <UnilEscLockup label={label} />;
|
|
91
93
|
default:
|
|
92
94
|
return <span>{provider.name}</span>;
|
|
93
95
|
}
|
|
94
96
|
}
|
|
95
97
|
|
|
98
|
+
// The school's name set in type beside its university's, in the black the
|
|
99
|
+
// university writes its name in: no drawing of its emblem is kept here, and a
|
|
100
|
+
// name nobody can misread credits it better than a guess at one.
|
|
101
|
+
function UnilEscLockup(props: { label: string }): ReactElement {
|
|
102
|
+
return (
|
|
103
|
+
<span role="img" aria-label={props.label} style={UNIL_LOCKUP_STYLE}>
|
|
104
|
+
<span style={UNIL_NAME_STYLE}>UNIL</span>
|
|
105
|
+
<span style={UNIL_RULE_STYLE} />
|
|
106
|
+
<span style={UNIL_SCHOOL_STYLE}>
|
|
107
|
+
École des
|
|
108
|
+
<br />
|
|
109
|
+
sciences criminelles
|
|
110
|
+
</span>
|
|
111
|
+
</span>
|
|
112
|
+
);
|
|
113
|
+
}
|
|
114
|
+
|
|
96
115
|
function EpflLogo(props: { label: string }): ReactElement {
|
|
97
116
|
return (
|
|
98
117
|
<svg
|
|
@@ -173,3 +192,33 @@ const ROLES_STYLE = {
|
|
|
173
192
|
paddingLeft: 20,
|
|
174
193
|
borderTop: '1px solid var(--border)',
|
|
175
194
|
} as const satisfies CSSProperties;
|
|
195
|
+
|
|
196
|
+
const UNIL_LOCKUP_STYLE = {
|
|
197
|
+
display: 'flex',
|
|
198
|
+
alignItems: 'center',
|
|
199
|
+
gap: 8,
|
|
200
|
+
height: 31,
|
|
201
|
+
// The institution's own colour, not a family token: the tile is white on
|
|
202
|
+
// every theme.
|
|
203
|
+
color: 'black',
|
|
204
|
+
} as const satisfies CSSProperties;
|
|
205
|
+
|
|
206
|
+
const UNIL_NAME_STYLE = {
|
|
207
|
+
fontSize: 24,
|
|
208
|
+
fontWeight: 800,
|
|
209
|
+
letterSpacing: '0.02em',
|
|
210
|
+
lineHeight: 1,
|
|
211
|
+
} as const satisfies CSSProperties;
|
|
212
|
+
|
|
213
|
+
const UNIL_RULE_STYLE = {
|
|
214
|
+
alignSelf: 'stretch',
|
|
215
|
+
width: 1,
|
|
216
|
+
background: 'black',
|
|
217
|
+
} as const satisfies CSSProperties;
|
|
218
|
+
|
|
219
|
+
const UNIL_SCHOOL_STYLE = {
|
|
220
|
+
fontSize: 10.5,
|
|
221
|
+
fontWeight: 600,
|
|
222
|
+
lineHeight: 1.15,
|
|
223
|
+
whiteSpace: 'nowrap',
|
|
224
|
+
} as const satisfies CSSProperties;
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
18
|
import type { RefObject } from 'react';
|
|
19
|
-
import { useEffect, useLayoutEffect, useRef, useState } from 'react';
|
|
19
|
+
import { useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';
|
|
20
20
|
|
|
21
21
|
import type { PlotRect } from '../core/chartGeometry.ts';
|
|
22
22
|
import type { ChartPoint } from '../core/svgPoint.ts';
|
|
@@ -42,7 +42,9 @@ export interface ChartPointerOptions<TReadout> {
|
|
|
42
42
|
/**
|
|
43
43
|
* What the chart reads at a point. Called on every move the pointer makes
|
|
44
44
|
* inside the plot, and read live rather than closed over, so it may capture
|
|
45
|
-
* the scales as they are currently zoomed
|
|
45
|
+
* the scales as they are currently zoomed — and called again at the held
|
|
46
|
+
* position whenever it changes, which is how a zoom made without moving the
|
|
47
|
+
* pointer is read under it.
|
|
46
48
|
*/
|
|
47
49
|
read: (point: ChartPoint) => TReadout;
|
|
48
50
|
/**
|
|
@@ -83,6 +85,12 @@ export interface ChartPointerOptions<TReadout> {
|
|
|
83
85
|
* is under the pointer" **after** the row's "this trace is being read", and
|
|
84
86
|
* wipes it. Heard as `pointerout`, the report lands first and the row has the
|
|
85
87
|
* last word. The containment test is what `pointerleave` was giving for free.
|
|
88
|
+
*
|
|
89
|
+
* What is returned is read again at render whenever `read` changes, because a
|
|
90
|
+
* zoom by the wheel, a key or the end of a drag changes the scales without
|
|
91
|
+
* moving the pointer, and a crosshair still quoting the window before it would
|
|
92
|
+
* name a mass the line it is drawn on no longer stands at. `onReadout` is told
|
|
93
|
+
* on the next move, as it always is.
|
|
86
94
|
* @param options - The chart, and how to read a point on it.
|
|
87
95
|
* @returns Where the pointer is and what it reads, both `null` while it is
|
|
88
96
|
* anywhere but over the plot.
|
|
@@ -90,7 +98,7 @@ export interface ChartPointerOptions<TReadout> {
|
|
|
90
98
|
export function useChartPointer<TReadout>(
|
|
91
99
|
options: ChartPointerOptions<TReadout>,
|
|
92
100
|
): ChartPointer<TReadout> {
|
|
93
|
-
const { svgRef } = options;
|
|
101
|
+
const { svgRef, read } = options;
|
|
94
102
|
const [pointer, setPointer] = useState<ChartPointer<TReadout>>(POINTER_AWAY);
|
|
95
103
|
const latest = useRef(options);
|
|
96
104
|
const reported = useRef<TReadout | null>(null);
|
|
@@ -133,7 +141,13 @@ export function useChartPointer<TReadout>(
|
|
|
133
141
|
};
|
|
134
142
|
}, [svgRef]);
|
|
135
143
|
|
|
136
|
-
return
|
|
144
|
+
return useMemo(
|
|
145
|
+
() =>
|
|
146
|
+
pointer.position === null
|
|
147
|
+
? pointer
|
|
148
|
+
: { position: pointer.position, readout: read(pointer.position) },
|
|
149
|
+
[pointer, read],
|
|
150
|
+
);
|
|
137
151
|
}
|
|
138
152
|
|
|
139
153
|
/**
|
|
@@ -187,6 +187,42 @@ export const CREDITS = [
|
|
|
187
187
|
'reads the SPC files of Thermo Galactic GRAMS, Shimadzu and PerkinElmer.',
|
|
188
188
|
license: 'MIT',
|
|
189
189
|
},
|
|
190
|
+
{
|
|
191
|
+
id: 'ms-spectrum',
|
|
192
|
+
name: 'ms-spectrum',
|
|
193
|
+
href: 'https://github.com/cheminfo/mass-tools/tree/main/packages/ms-spectrum',
|
|
194
|
+
description:
|
|
195
|
+
'tells a profile from a peak table, picks the peaks and establishes their charges.',
|
|
196
|
+
license: 'MIT',
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
id: 'ml-gsd',
|
|
200
|
+
name: 'ml-gsd',
|
|
201
|
+
href: 'https://github.com/mljs/global-spectral-deconvolution',
|
|
202
|
+
description: 'finds the peaks of a continuous spectrum, and their widths.',
|
|
203
|
+
license: 'MIT',
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
id: 'jcampconverter',
|
|
207
|
+
name: 'jcampconverter',
|
|
208
|
+
href: 'https://www.npmjs.com/package/jcampconverter',
|
|
209
|
+
description: 'reads JCAMP-DX files.',
|
|
210
|
+
license: 'CC-BY-NC-SA-4.0',
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
id: 'xy-parser',
|
|
214
|
+
name: 'xy-parser',
|
|
215
|
+
href: 'https://github.com/cheminfo/xy-parser',
|
|
216
|
+
description: 'reads two columns of numbers out of any text file.',
|
|
217
|
+
license: 'MIT',
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
id: 'convert-to-jcamp',
|
|
221
|
+
name: 'convert-to-jcamp',
|
|
222
|
+
href: 'https://github.com/cheminfo/convert-to-jcamp',
|
|
223
|
+
description: 'writes spectra back out as JCAMP-DX.',
|
|
224
|
+
license: 'MIT',
|
|
225
|
+
},
|
|
190
226
|
{
|
|
191
227
|
id: 'occ',
|
|
192
228
|
name: 'OCC',
|
|
@@ -234,6 +270,16 @@ export const CREDITS = [
|
|
|
234
270
|
description: 'the 3D viewer, its representations and its surfaces.',
|
|
235
271
|
license: 'MIT',
|
|
236
272
|
},
|
|
273
|
+
{
|
|
274
|
+
// The viewer is MIT; the core and plugins that read and process the
|
|
275
|
+
// spectra (@zakodium/nmrium-core, -core-plugins) are CC-BY-NC-SA-4.0.
|
|
276
|
+
id: 'nmrium',
|
|
277
|
+
name: 'NMRium',
|
|
278
|
+
href: 'https://www.nmrium.org/',
|
|
279
|
+
description:
|
|
280
|
+
'displays and processes the NMR spectra, read from their original files.',
|
|
281
|
+
license: 'MIT AND CC-BY-NC-SA-4.0',
|
|
282
|
+
},
|
|
237
283
|
{
|
|
238
284
|
id: 'blueprint',
|
|
239
285
|
name: 'Blueprint',
|
|
@@ -384,6 +430,13 @@ export const CREDITS = [
|
|
|
384
430
|
'the name of every compound in every language, and its article in each Wikipedia.',
|
|
385
431
|
license: 'CC0-1.0',
|
|
386
432
|
},
|
|
433
|
+
{
|
|
434
|
+
id: 'pubchem',
|
|
435
|
+
name: 'PubChem',
|
|
436
|
+
href: 'https://pubchem.ncbi.nlm.nih.gov/',
|
|
437
|
+
description:
|
|
438
|
+
'the identifier, the names and the synonyms each compound is linked to.',
|
|
439
|
+
},
|
|
387
440
|
{
|
|
388
441
|
id: 'country-flag-icons',
|
|
389
442
|
name: 'country-flag-icons',
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
+
import { viewBoxAttribute } from '../../chart/core/viewTransform.ts';
|
|
2
|
+
|
|
1
3
|
import { cssTokenNames, resolveCssTokens } from './cssTokens.ts';
|
|
4
|
+
import type { SvgBox } from './svgBounds.ts';
|
|
2
5
|
|
|
3
6
|
/**
|
|
4
7
|
* One drawing, serialized with every token it names written out.
|
|
@@ -6,11 +9,25 @@ import { cssTokenNames, resolveCssTokens } from './cssTokens.ts';
|
|
|
6
9
|
* The copy is taken first and read from the original, because the values are a
|
|
7
10
|
* property of where the figure sits on the page: a detached clone inherits
|
|
8
11
|
* nothing and would resolve every token to an empty string.
|
|
12
|
+
*
|
|
13
|
+
* Given a crop, the copy shows that rectangle of the drawing rather than its
|
|
14
|
+
* window on the page, at one pixel per drawing unit — so a canvas left zoomed
|
|
15
|
+
* in is saved at the same size as one left zoomed out.
|
|
9
16
|
* @param drawing - The drawing, as it sits on the page.
|
|
17
|
+
* @param crop - The rectangle to show, in drawing units. Defaults to `null`,
|
|
18
|
+
* the drawing as it is on screen.
|
|
10
19
|
* @returns Its markup.
|
|
11
20
|
*/
|
|
12
|
-
export function drawingMarkup(
|
|
21
|
+
export function drawingMarkup(
|
|
22
|
+
drawing: SVGSVGElement,
|
|
23
|
+
crop: SvgBox | null = null,
|
|
24
|
+
): string {
|
|
13
25
|
const clone = drawing.cloneNode(true) as SVGSVGElement;
|
|
26
|
+
if (crop !== null) {
|
|
27
|
+
clone.setAttribute('viewBox', viewBoxAttribute(crop));
|
|
28
|
+
clone.setAttribute('width', String(Math.round(crop.width)));
|
|
29
|
+
clone.setAttribute('height', String(Math.round(crop.height)));
|
|
30
|
+
}
|
|
14
31
|
const markup = new XMLSerializer().serializeToString(clone);
|
|
15
32
|
return resolveCssTokens(markup, tokenValues(drawing, cssTokenNames(markup)));
|
|
16
33
|
}
|