react-cheminfo 0.28.0 → 0.30.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 +79 -26
- package/lib/chart/core/axisLabels.d.ts +82 -0
- package/lib/chart/core/axisLabels.d.ts.map +1 -0
- package/lib/chart/core/axisLabels.js +111 -0
- package/lib/chart/core/axisLabels.js.map +1 -0
- package/lib/chart/core/boxLayout.d.ts +53 -0
- package/lib/chart/core/boxLayout.d.ts.map +1 -0
- package/lib/chart/core/boxLayout.js +112 -0
- package/lib/chart/core/boxLayout.js.map +1 -0
- package/lib/chart/core/chartAxisScale.d.ts +23 -2
- package/lib/chart/core/chartAxisScale.d.ts.map +1 -1
- package/lib/chart/core/chartAxisScale.js +64 -13
- package/lib/chart/core/chartAxisScale.js.map +1 -1
- package/lib/chart/core/chartDomain.d.ts +160 -0
- package/lib/chart/core/chartDomain.d.ts.map +1 -0
- package/lib/chart/core/chartDomain.js +46 -0
- package/lib/chart/core/chartDomain.js.map +1 -0
- package/lib/chart/core/chartGeometry.d.ts +131 -0
- package/lib/chart/core/chartGeometry.d.ts.map +1 -0
- package/lib/chart/core/chartGeometry.js +101 -0
- package/lib/chart/core/chartGeometry.js.map +1 -0
- package/lib/chart/core/chartPane.d.ts +11 -0
- package/lib/chart/core/chartPane.d.ts.map +1 -0
- package/lib/chart/core/chartPane.js +11 -0
- package/lib/chart/core/chartPane.js.map +1 -0
- package/lib/chart/core/chartScale.d.ts +4 -1
- package/lib/chart/core/chartScale.d.ts.map +1 -1
- package/lib/chart/core/chartScale.js +8 -4
- package/lib/chart/core/chartScale.js.map +1 -1
- package/lib/chart/core/chartTheme.d.ts +156 -0
- package/lib/chart/core/chartTheme.d.ts.map +1 -0
- package/lib/chart/core/chartTheme.js +156 -0
- package/lib/chart/core/chartTheme.js.map +1 -0
- package/lib/chart/core/chartViewport.d.ts +32 -5
- package/lib/chart/core/chartViewport.d.ts.map +1 -1
- package/lib/chart/core/chartViewport.js +40 -11
- package/lib/chart/core/chartViewport.js.map +1 -1
- package/lib/chart/core/guidePlacement.d.ts +52 -0
- package/lib/chart/core/guidePlacement.d.ts.map +1 -0
- package/lib/chart/core/guidePlacement.js +52 -0
- package/lib/chart/core/guidePlacement.js.map +1 -0
- package/lib/chart/core/index.d.ts +29 -2
- package/lib/chart/core/index.d.ts.map +1 -1
- package/lib/chart/core/index.js +19 -2
- package/lib/chart/core/index.js.map +1 -1
- package/lib/chart/core/labelStack.d.ts +27 -0
- package/lib/chart/core/labelStack.d.ts.map +1 -0
- package/lib/chart/core/labelStack.js +62 -0
- package/lib/chart/core/labelStack.js.map +1 -0
- package/lib/chart/core/legendBox.d.ts +152 -0
- package/lib/chart/core/legendBox.d.ts.map +1 -0
- package/lib/chart/core/legendBox.js +169 -0
- package/lib/chart/core/legendBox.js.map +1 -0
- package/lib/chart/core/selectionGeometry.d.ts +45 -0
- package/lib/chart/core/selectionGeometry.d.ts.map +1 -0
- package/lib/chart/core/selectionGeometry.js +49 -0
- package/lib/chart/core/selectionGeometry.js.map +1 -0
- package/lib/chart/core/spectrumColor.d.ts +80 -0
- package/lib/chart/core/spectrumColor.d.ts.map +1 -0
- package/lib/chart/core/spectrumColor.js +120 -0
- package/lib/chart/core/spectrumColor.js.map +1 -0
- package/lib/chart/core/stackCapacity.d.ts +136 -0
- package/lib/chart/core/stackCapacity.d.ts.map +1 -0
- package/lib/chart/core/stackCapacity.js +153 -0
- package/lib/chart/core/stackCapacity.js.map +1 -0
- package/lib/chart/core/svgPoint.d.ts +62 -0
- package/lib/chart/core/svgPoint.d.ts.map +1 -0
- package/lib/chart/core/svgPoint.js +43 -0
- package/lib/chart/core/svgPoint.js.map +1 -0
- package/lib/chart/core/tracePath.d.ts +94 -0
- package/lib/chart/core/tracePath.d.ts.map +1 -0
- package/lib/chart/core/tracePath.js +191 -0
- package/lib/chart/core/tracePath.js.map +1 -0
- package/lib/chart/core/trackerReadout.d.ts +55 -0
- package/lib/chart/core/trackerReadout.d.ts.map +1 -0
- package/lib/chart/core/trackerReadout.js +53 -0
- package/lib/chart/core/trackerReadout.js.map +1 -0
- package/lib/chart/core/viewTransform.d.ts +167 -0
- package/lib/chart/core/viewTransform.d.ts.map +1 -0
- package/lib/chart/core/viewTransform.js +188 -0
- package/lib/chart/core/viewTransform.js.map +1 -0
- package/lib/chart/core/zoomDomain.d.ts +127 -0
- package/lib/chart/core/zoomDomain.d.ts.map +1 -0
- package/lib/chart/core/zoomDomain.js +175 -0
- package/lib/chart/core/zoomDomain.js.map +1 -0
- package/lib/chart/ui/Axes.d.ts +104 -0
- package/lib/chart/ui/Axes.d.ts.map +1 -0
- package/lib/chart/ui/Axes.js +155 -0
- package/lib/chart/ui/Axes.js.map +1 -0
- package/lib/chart/ui/AxisGuide.d.ts +60 -0
- package/lib/chart/ui/AxisGuide.d.ts.map +1 -0
- package/lib/chart/ui/AxisGuide.js +111 -0
- package/lib/chart/ui/AxisGuide.js.map +1 -0
- package/lib/chart/ui/ChartStack.d.ts +81 -0
- package/lib/chart/ui/ChartStack.d.ts.map +1 -0
- package/lib/chart/ui/ChartStack.js +42 -0
- package/lib/chart/ui/ChartStack.js.map +1 -0
- package/lib/chart/ui/ChartTracker.d.ts +36 -0
- package/lib/chart/ui/ChartTracker.d.ts.map +1 -0
- package/lib/chart/ui/ChartTracker.js +27 -0
- package/lib/chart/ui/ChartTracker.js.map +1 -0
- package/lib/chart/ui/PlotCaption.d.ts +44 -0
- package/lib/chart/ui/PlotCaption.d.ts.map +1 -0
- package/lib/chart/ui/PlotCaption.js +68 -0
- package/lib/chart/ui/PlotCaption.js.map +1 -0
- package/lib/chart/ui/SelectionRect.d.ts +27 -0
- package/lib/chart/ui/SelectionRect.d.ts.map +1 -0
- package/lib/chart/ui/SelectionRect.js +31 -0
- package/lib/chart/ui/SelectionRect.js.map +1 -0
- package/lib/chart/ui/TraceLegend.d.ts +99 -0
- package/lib/chart/ui/TraceLegend.d.ts.map +1 -0
- package/lib/chart/ui/TraceLegend.js +45 -0
- package/lib/chart/ui/TraceLegend.js.map +1 -0
- package/lib/chart/ui/chartGestures.d.ts +158 -0
- package/lib/chart/ui/chartGestures.d.ts.map +1 -0
- package/lib/chart/ui/chartGestures.js +145 -0
- package/lib/chart/ui/chartGestures.js.map +1 -0
- package/lib/chart/ui/chartStackLevel.d.ts +115 -0
- package/lib/chart/ui/chartStackLevel.d.ts.map +1 -0
- package/lib/chart/ui/chartStackLevel.js +96 -0
- package/lib/chart/ui/chartStackLevel.js.map +1 -0
- package/lib/chart/ui/chartSurface.d.ts +35 -0
- package/lib/chart/ui/chartSurface.d.ts.map +1 -0
- package/lib/chart/ui/chartSurface.js +58 -0
- package/lib/chart/ui/chartSurface.js.map +1 -0
- package/lib/chart/ui/index.d.ts +24 -0
- package/lib/chart/ui/index.d.ts.map +1 -1
- package/lib/chart/ui/index.js +13 -0
- package/lib/chart/ui/index.js.map +1 -1
- package/lib/chart/ui/useChartPointer.d.ts +124 -0
- package/lib/chart/ui/useChartPointer.d.ts.map +1 -0
- package/lib/chart/ui/useChartPointer.js +152 -0
- package/lib/chart/ui/useChartPointer.js.map +1 -0
- package/lib/chart/ui/useChartSize.d.ts +49 -0
- package/lib/chart/ui/useChartSize.d.ts.map +1 -0
- package/lib/chart/ui/useChartSize.js +91 -0
- package/lib/chart/ui/useChartSize.js.map +1 -0
- package/lib/chart/ui/useChartWindow.d.ts +147 -0
- package/lib/chart/ui/useChartWindow.d.ts.map +1 -0
- package/lib/chart/ui/useChartWindow.js +135 -0
- package/lib/chart/ui/useChartWindow.js.map +1 -0
- package/lib/chart/ui/useChartZoom.d.ts +88 -0
- package/lib/chart/ui/useChartZoom.d.ts.map +1 -0
- package/lib/chart/ui/useChartZoom.js +142 -0
- package/lib/chart/ui/useChartZoom.js.map +1 -0
- package/lib/chart/ui/useWheelListener.d.ts +30 -0
- package/lib/chart/ui/useWheelListener.d.ts.map +1 -0
- package/lib/chart/ui/useWheelListener.js +57 -0
- package/lib/chart/ui/useWheelListener.js.map +1 -0
- package/lib/chrome/ui/AccountButton.d.ts +76 -0
- package/lib/chrome/ui/AccountButton.d.ts.map +1 -0
- package/lib/chrome/ui/AccountButton.js +66 -0
- package/lib/chrome/ui/AccountButton.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/clipboard/core/copyPng.d.ts +13 -0
- package/lib/clipboard/core/copyPng.d.ts.map +1 -0
- package/lib/clipboard/core/copyPng.js +19 -0
- package/lib/clipboard/core/copyPng.js.map +1 -0
- package/lib/clipboard/core/index.d.ts +1 -0
- package/lib/clipboard/core/index.d.ts.map +1 -1
- package/lib/clipboard/core/index.js +1 -0
- package/lib/clipboard/core/index.js.map +1 -1
- package/lib/clipboard/ui/ClickToCopy.d.ts +6 -0
- 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/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/download/core/exportStyles.d.ts +22 -0
- package/lib/download/core/exportStyles.d.ts.map +1 -0
- package/lib/download/core/exportStyles.js +19 -0
- package/lib/download/core/exportStyles.js.map +1 -0
- package/lib/download/core/imageResolution.d.ts +88 -0
- package/lib/download/core/imageResolution.d.ts.map +1 -0
- package/lib/download/core/imageResolution.js +77 -0
- package/lib/download/core/imageResolution.js.map +1 -0
- package/lib/download/core/index.d.ts +13 -0
- package/lib/download/core/index.d.ts.map +1 -1
- package/lib/download/core/index.js +8 -0
- package/lib/download/core/index.js.map +1 -1
- package/lib/download/core/pictureExport.d.ts +93 -0
- package/lib/download/core/pictureExport.d.ts.map +1 -0
- package/lib/download/core/pictureExport.js +116 -0
- package/lib/download/core/pictureExport.js.map +1 -0
- package/lib/download/core/stackedDrawing.d.ts +36 -0
- package/lib/download/core/stackedDrawing.d.ts.map +1 -0
- package/lib/download/core/stackedDrawing.js +98 -0
- package/lib/download/core/stackedDrawing.js.map +1 -0
- package/lib/download/core/svgBounds.d.ts +44 -0
- package/lib/download/core/svgBounds.d.ts.map +1 -0
- package/lib/download/core/svgBounds.js +69 -0
- package/lib/download/core/svgBounds.js.map +1 -0
- package/lib/download/core/svgNamespace.d.ts +9 -0
- package/lib/download/core/svgNamespace.d.ts.map +1 -0
- package/lib/download/core/svgNamespace.js +10 -0
- package/lib/download/core/svgNamespace.js.map +1 -0
- package/lib/download/core/svgToPng.d.ts +43 -0
- package/lib/download/core/svgToPng.d.ts.map +1 -0
- package/lib/download/core/svgToPng.js +79 -0
- package/lib/download/core/svgToPng.js.map +1 -0
- package/lib/download/core/svgToString.d.ts +45 -0
- package/lib/download/core/svgToString.d.ts.map +1 -0
- package/lib/download/core/svgToString.js +58 -0
- package/lib/download/core/svgToString.js.map +1 -0
- package/lib/download/ui/ExportDialogFrame.d.ts +46 -0
- package/lib/download/ui/ExportDialogFrame.d.ts.map +1 -0
- package/lib/download/ui/ExportDialogFrame.js +24 -0
- package/lib/download/ui/ExportDialogFrame.js.map +1 -0
- package/lib/download/ui/ExportImageDialog.d.ts +47 -0
- package/lib/download/ui/ExportImageDialog.d.ts.map +1 -0
- package/lib/download/ui/ExportImageDialog.js +25 -0
- package/lib/download/ui/ExportImageDialog.js.map +1 -0
- package/lib/download/ui/ExportNameField.d.ts +29 -0
- package/lib/download/ui/ExportNameField.d.ts.map +1 -0
- package/lib/download/ui/ExportNameField.js +99 -0
- package/lib/download/ui/ExportNameField.js.map +1 -0
- package/lib/download/ui/ExportPictureSection.d.ts +38 -0
- package/lib/download/ui/ExportPictureSection.d.ts.map +1 -0
- package/lib/download/ui/ExportPictureSection.js +48 -0
- package/lib/download/ui/ExportPictureSection.js.map +1 -0
- package/lib/download/ui/index.d.ts +10 -0
- package/lib/download/ui/index.d.ts.map +1 -1
- package/lib/download/ui/index.js +5 -0
- package/lib/download/ui/index.js.map +1 -1
- package/lib/download/ui/useDrawingBox.d.ts +23 -0
- package/lib/download/ui/useDrawingBox.d.ts.map +1 -0
- package/lib/download/ui/useDrawingBox.js +21 -0
- package/lib/download/ui/useDrawingBox.js.map +1 -0
- package/lib/error/core/describeSource.d.ts +17 -0
- package/lib/error/core/describeSource.d.ts.map +1 -0
- package/lib/error/core/describeSource.js +19 -0
- package/lib/error/core/describeSource.js.map +1 -0
- package/lib/error/core/index.d.ts +1 -0
- package/lib/error/core/index.d.ts.map +1 -1
- package/lib/error/core/index.js +1 -0
- package/lib/error/core/index.js.map +1 -1
- package/lib/help/ui/HelpBody.d.ts +10 -1
- package/lib/help/ui/HelpBody.d.ts.map +1 -1
- package/lib/help/ui/HelpBody.js +24 -1
- package/lib/help/ui/HelpBody.js.map +1 -1
- package/lib/help/ui/index.d.ts +1 -1
- package/lib/help/ui/index.d.ts.map +1 -1
- package/lib/help/ui/index.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/analysisSpectra.d.ts +46 -0
- package/lib/ir/core/analysisSpectra.d.ts.map +1 -0
- package/lib/ir/core/analysisSpectra.js +187 -0
- package/lib/ir/core/analysisSpectra.js.map +1 -0
- package/lib/ir/core/assignBands.d.ts +83 -0
- package/lib/ir/core/assignBands.d.ts.map +1 -0
- package/lib/ir/core/assignBands.js +83 -0
- package/lib/ir/core/assignBands.js.map +1 -0
- package/lib/ir/core/bandAssignments.d.ts +47 -0
- package/lib/ir/core/bandAssignments.d.ts.map +1 -0
- package/lib/ir/core/bandAssignments.js +305 -0
- package/lib/ir/core/bandAssignments.js.map +1 -0
- package/lib/ir/core/bandLabelPlan.d.ts +93 -0
- package/lib/ir/core/bandLabelPlan.d.ts.map +1 -0
- package/lib/ir/core/bandLabelPlan.js +104 -0
- package/lib/ir/core/bandLabelPlan.js.map +1 -0
- package/lib/ir/core/detectIrFormat.d.ts +23 -0
- package/lib/ir/core/detectIrFormat.d.ts.map +1 -0
- package/lib/ir/core/detectIrFormat.js +133 -0
- package/lib/ir/core/detectIrFormat.js.map +1 -0
- package/lib/ir/core/downloadSpectra.d.ts +26 -0
- package/lib/ir/core/downloadSpectra.d.ts.map +1 -0
- package/lib/ir/core/downloadSpectra.js +37 -0
- package/lib/ir/core/downloadSpectra.js.map +1 -0
- package/lib/ir/core/fromJcamp.d.ts +35 -0
- package/lib/ir/core/fromJcamp.d.ts.map +1 -0
- package/lib/ir/core/fromJcamp.js +48 -0
- package/lib/ir/core/fromJcamp.js.map +1 -0
- package/lib/ir/core/fromSpc.d.ts +30 -0
- package/lib/ir/core/fromSpc.d.ts.map +1 -0
- package/lib/ir/core/fromSpc.js +40 -0
- package/lib/ir/core/fromSpc.js.map +1 -0
- package/lib/ir/core/index.d.ts +51 -0
- package/lib/ir/core/index.d.ts.map +1 -0
- package/lib/ir/core/index.js +35 -0
- package/lib/ir/core/index.js.map +1 -0
- package/lib/ir/core/irBand.d.ts +45 -0
- package/lib/ir/core/irBand.d.ts.map +1 -0
- package/lib/ir/core/irBand.js +30 -0
- package/lib/ir/core/irBand.js.map +1 -0
- package/lib/ir/core/irCommands.d.ts +168 -0
- package/lib/ir/core/irCommands.d.ts.map +1 -0
- package/lib/ir/core/irCommands.js +94 -0
- package/lib/ir/core/irCommands.js.map +1 -0
- package/lib/ir/core/irDomain.d.ts +63 -0
- package/lib/ir/core/irDomain.d.ts.map +1 -0
- package/lib/ir/core/irDomain.js +136 -0
- package/lib/ir/core/irDomain.js.map +1 -0
- package/lib/ir/core/irEditorApi.d.ts +42 -0
- package/lib/ir/core/irEditorApi.d.ts.map +1 -0
- package/lib/ir/core/irEditorApi.js +10 -0
- package/lib/ir/core/irEditorApi.js.map +1 -0
- package/lib/ir/core/irFormat.d.ts +42 -0
- package/lib/ir/core/irFormat.d.ts.map +1 -0
- package/lib/ir/core/irFormat.js +51 -0
- package/lib/ir/core/irFormat.js.map +1 -0
- package/lib/ir/core/irMode.d.ts +160 -0
- package/lib/ir/core/irMode.d.ts.map +1 -0
- package/lib/ir/core/irMode.js +175 -0
- package/lib/ir/core/irMode.js.map +1 -0
- package/lib/ir/core/irReducer.d.ts +101 -0
- package/lib/ir/core/irReducer.d.ts.map +1 -0
- package/lib/ir/core/irReducer.js +207 -0
- package/lib/ir/core/irReducer.js.map +1 -0
- package/lib/ir/core/irSidePanels.d.ts +22 -0
- package/lib/ir/core/irSidePanels.d.ts.map +1 -0
- package/lib/ir/core/irSidePanels.js +12 -0
- package/lib/ir/core/irSidePanels.js.map +1 -0
- package/lib/ir/core/irSpectrum.d.ts +140 -0
- package/lib/ir/core/irSpectrum.d.ts.map +1 -0
- package/lib/ir/core/irSpectrum.js +34 -0
- package/lib/ir/core/irSpectrum.js.map +1 -0
- package/lib/ir/core/irState.d.ts +119 -0
- package/lib/ir/core/irState.d.ts.map +1 -0
- package/lib/ir/core/irState.js +92 -0
- package/lib/ir/core/irState.js.map +1 -0
- package/lib/ir/core/loadIrSpectra.d.ts +36 -0
- package/lib/ir/core/loadIrSpectra.d.ts.map +1 -0
- package/lib/ir/core/loadIrSpectra.js +44 -0
- package/lib/ir/core/loadIrSpectra.js.map +1 -0
- package/lib/ir/core/nearestBand.d.ts +35 -0
- package/lib/ir/core/nearestBand.d.ts.map +1 -0
- package/lib/ir/core/nearestBand.js +47 -0
- package/lib/ir/core/nearestBand.js.map +1 -0
- package/lib/ir/core/pickBands.d.ts +70 -0
- package/lib/ir/core/pickBands.d.ts.map +1 -0
- package/lib/ir/core/pickBands.js +125 -0
- package/lib/ir/core/pickBands.js.map +1 -0
- package/lib/ir/core/spectrumJcamp.d.ts +58 -0
- package/lib/ir/core/spectrumJcamp.d.ts.map +1 -0
- package/lib/ir/core/spectrumJcamp.js +156 -0
- package/lib/ir/core/spectrumJcamp.js.map +1 -0
- package/lib/ir/core/toIrSpectrum.d.ts +59 -0
- package/lib/ir/core/toIrSpectrum.d.ts.map +1 -0
- package/lib/ir/core/toIrSpectrum.js +56 -0
- package/lib/ir/core/toIrSpectrum.js.map +1 -0
- package/lib/ir/ui/BandMarks.d.ts +52 -0
- package/lib/ir/ui/BandMarks.d.ts.map +1 -0
- package/lib/ir/ui/BandMarks.js +71 -0
- package/lib/ir/ui/BandMarks.js.map +1 -0
- package/lib/ir/ui/BandsPanel.d.ts +31 -0
- package/lib/ir/ui/BandsPanel.d.ts.map +1 -0
- package/lib/ir/ui/BandsPanel.js +94 -0
- package/lib/ir/ui/BandsPanel.js.map +1 -0
- package/lib/ir/ui/IrAboutDialog.d.ts +18 -0
- package/lib/ir/ui/IrAboutDialog.d.ts.map +1 -0
- package/lib/ir/ui/IrAboutDialog.js +32 -0
- package/lib/ir/ui/IrAboutDialog.js.map +1 -0
- package/lib/ir/ui/IrCanvas.d.ts +38 -0
- package/lib/ir/ui/IrCanvas.d.ts.map +1 -0
- package/lib/ir/ui/IrCanvas.js +41 -0
- package/lib/ir/ui/IrCanvas.js.map +1 -0
- package/lib/ir/ui/IrChart.d.ts +28 -0
- package/lib/ir/ui/IrChart.d.ts.map +1 -0
- package/lib/ir/ui/IrChart.js +114 -0
- package/lib/ir/ui/IrChart.js.map +1 -0
- package/lib/ir/ui/IrCommandProvider.d.ts +15 -0
- package/lib/ir/ui/IrCommandProvider.d.ts.map +1 -0
- package/lib/ir/ui/IrCommandProvider.js +14 -0
- package/lib/ir/ui/IrCommandProvider.js.map +1 -0
- package/lib/ir/ui/IrCommandTooltip.d.ts +16 -0
- package/lib/ir/ui/IrCommandTooltip.d.ts.map +1 -0
- package/lib/ir/ui/IrCommandTooltip.js +22 -0
- package/lib/ir/ui/IrCommandTooltip.js.map +1 -0
- package/lib/ir/ui/IrDocumentationDialog.d.ts +18 -0
- package/lib/ir/ui/IrDocumentationDialog.d.ts.map +1 -0
- package/lib/ir/ui/IrDocumentationDialog.js +68 -0
- package/lib/ir/ui/IrDocumentationDialog.js.map +1 -0
- package/lib/ir/ui/IrEditor.d.ts +60 -0
- package/lib/ir/ui/IrEditor.d.ts.map +1 -0
- package/lib/ir/ui/IrEditor.js +42 -0
- package/lib/ir/ui/IrEditor.js.map +1 -0
- package/lib/ir/ui/IrHeader.d.ts +13 -0
- package/lib/ir/ui/IrHeader.d.ts.map +1 -0
- package/lib/ir/ui/IrHeader.js +21 -0
- package/lib/ir/ui/IrHeader.js.map +1 -0
- package/lib/ir/ui/IrLogo.d.ts +20 -0
- package/lib/ir/ui/IrLogo.d.ts.map +1 -0
- package/lib/ir/ui/IrLogo.js +17 -0
- package/lib/ir/ui/IrLogo.js.map +1 -0
- package/lib/ir/ui/IrPointerTracker.d.ts +29 -0
- package/lib/ir/ui/IrPointerTracker.d.ts.map +1 -0
- package/lib/ir/ui/IrPointerTracker.js +47 -0
- package/lib/ir/ui/IrPointerTracker.js.map +1 -0
- package/lib/ir/ui/IrShell.d.ts +25 -0
- package/lib/ir/ui/IrShell.d.ts.map +1 -0
- package/lib/ir/ui/IrShell.js +178 -0
- package/lib/ir/ui/IrShell.js.map +1 -0
- package/lib/ir/ui/IrSidePanel.d.ts +26 -0
- package/lib/ir/ui/IrSidePanel.d.ts.map +1 -0
- package/lib/ir/ui/IrSidePanel.js +39 -0
- package/lib/ir/ui/IrSidePanel.js.map +1 -0
- package/lib/ir/ui/IrStateProvider.d.ts +19 -0
- package/lib/ir/ui/IrStateProvider.d.ts.map +1 -0
- package/lib/ir/ui/IrStateProvider.js +16 -0
- package/lib/ir/ui/IrStateProvider.js.map +1 -0
- package/lib/ir/ui/IrStatusBar.d.ts +14 -0
- package/lib/ir/ui/IrStatusBar.d.ts.map +1 -0
- package/lib/ir/ui/IrStatusBar.js +48 -0
- package/lib/ir/ui/IrStatusBar.js.map +1 -0
- package/lib/ir/ui/IrToolbar.d.ts +18 -0
- package/lib/ir/ui/IrToolbar.d.ts.map +1 -0
- package/lib/ir/ui/IrToolbar.js +32 -0
- package/lib/ir/ui/IrToolbar.js.map +1 -0
- package/lib/ir/ui/IrTraces.d.ts +63 -0
- package/lib/ir/ui/IrTraces.d.ts.map +1 -0
- package/lib/ir/ui/IrTraces.js +72 -0
- package/lib/ir/ui/IrTraces.js.map +1 -0
- package/lib/ir/ui/MetadataPanel.d.ts +15 -0
- package/lib/ir/ui/MetadataPanel.d.ts.map +1 -0
- package/lib/ir/ui/MetadataPanel.js +49 -0
- package/lib/ir/ui/MetadataPanel.js.map +1 -0
- package/lib/ir/ui/SpectraPanel.d.ts +20 -0
- package/lib/ir/ui/SpectraPanel.d.ts.map +1 -0
- package/lib/ir/ui/SpectraPanel.js +42 -0
- package/lib/ir/ui/SpectraPanel.js.map +1 -0
- package/lib/ir/ui/SpectrumRow.d.ts +26 -0
- package/lib/ir/ui/SpectrumRow.d.ts.map +1 -0
- package/lib/ir/ui/SpectrumRow.js +41 -0
- package/lib/ir/ui/SpectrumRow.js.map +1 -0
- package/lib/ir/ui/index.d.ts +56 -0
- package/lib/ir/ui/index.d.ts.map +1 -0
- package/lib/ir/ui/index.js +36 -0
- package/lib/ir/ui/index.js.map +1 -0
- package/lib/ir/ui/irActions.d.ts +52 -0
- package/lib/ir/ui/irActions.d.ts.map +1 -0
- package/lib/ir/ui/irActions.js +62 -0
- package/lib/ir/ui/irActions.js.map +1 -0
- package/lib/ir/ui/irChartProps.d.ts +116 -0
- package/lib/ir/ui/irChartProps.d.ts.map +1 -0
- package/lib/ir/ui/irChartProps.js +14 -0
- package/lib/ir/ui/irChartProps.js.map +1 -0
- package/lib/ir/ui/irCommandContext.d.ts +35 -0
- package/lib/ir/ui/irCommandContext.d.ts.map +1 -0
- package/lib/ir/ui/irCommandContext.js +44 -0
- package/lib/ir/ui/irCommandContext.js.map +1 -0
- package/lib/ir/ui/irStateContext.d.ts +26 -0
- package/lib/ir/ui/irStateContext.d.ts.map +1 -0
- package/lib/ir/ui/irStateContext.js +37 -0
- package/lib/ir/ui/irStateContext.js.map +1 -0
- package/lib/ir/ui/useIrEditor.d.ts +51 -0
- package/lib/ir/ui/useIrEditor.d.ts.map +1 -0
- package/lib/ir/ui/useIrEditor.js +88 -0
- package/lib/ir/ui/useIrEditor.js.map +1 -0
- package/lib/ir/ui/useIrPointer.d.ts +66 -0
- package/lib/ir/ui/useIrPointer.d.ts.map +1 -0
- package/lib/ir/ui/useIrPointer.js +53 -0
- package/lib/ir/ui/useIrPointer.js.map +1 -0
- package/lib/ir/ui/useIrShortcuts.d.ts +24 -0
- package/lib/ir/ui/useIrShortcuts.d.ts.map +1 -0
- package/lib/ir/ui/useIrShortcuts.js +73 -0
- package/lib/ir/ui/useIrShortcuts.js.map +1 -0
- package/lib/ir/ui/useIrZoom.d.ts +51 -0
- package/lib/ir/ui/useIrZoom.d.ts.map +1 -0
- package/lib/ir/ui/useIrZoom.js +46 -0
- package/lib/ir/ui/useIrZoom.js.map +1 -0
- package/lib/ir.d.ts +13 -0
- package/lib/ir.d.ts.map +1 -0
- package/lib/ir.js +13 -0
- package/lib/ir.js.map +1 -0
- package/lib/locales/de.json +3 -0
- package/lib/locales/en.json +3 -0
- package/lib/locales/es.json +3 -0
- package/lib/locales/fr.json +3 -0
- package/lib/panel/core/dialogStyles.d.ts +13 -0
- package/lib/panel/core/dialogStyles.d.ts.map +1 -0
- package/lib/panel/core/dialogStyles.js +11 -0
- package/lib/panel/core/dialogStyles.js.map +1 -0
- package/lib/panel/core/index.d.ts +19 -0
- package/lib/panel/core/index.d.ts.map +1 -0
- package/lib/panel/core/index.js +18 -0
- package/lib/panel/core/index.js.map +1 -0
- package/lib/panel/core/isEditingField.d.ts +17 -0
- package/lib/panel/core/isEditingField.d.ts.map +1 -0
- package/lib/panel/core/isEditingField.js +25 -0
- package/lib/panel/core/isEditingField.js.map +1 -0
- package/lib/panel/core/panelStyles.d.ts +242 -0
- package/lib/panel/core/panelStyles.d.ts.map +1 -0
- package/lib/panel/core/panelStyles.js +228 -0
- package/lib/panel/core/panelStyles.js.map +1 -0
- package/lib/panel/core/rowSpacers.d.ts +38 -0
- package/lib/panel/core/rowSpacers.d.ts.map +1 -0
- package/lib/panel/core/rowSpacers.js +31 -0
- package/lib/panel/core/rowSpacers.js.map +1 -0
- package/lib/panel/core/statusBar.d.ts +44 -0
- package/lib/panel/core/statusBar.d.ts.map +1 -0
- package/lib/panel/core/statusBar.js +40 -0
- package/lib/panel/core/statusBar.js.map +1 -0
- package/lib/panel/core/textFilter.d.ts +22 -0
- package/lib/panel/core/textFilter.d.ts.map +1 -0
- package/lib/panel/core/textFilter.js +32 -0
- package/lib/panel/core/textFilter.js.map +1 -0
- package/lib/panel/core/yieldToPainting.d.ts +17 -0
- package/lib/panel/core/yieldToPainting.d.ts.map +1 -0
- package/lib/panel/core/yieldToPainting.js +21 -0
- package/lib/panel/core/yieldToPainting.js.map +1 -0
- package/lib/panel/ui/AboutDialogFrame.d.ts +36 -0
- package/lib/panel/ui/AboutDialogFrame.d.ts.map +1 -0
- package/lib/panel/ui/AboutDialogFrame.js +43 -0
- package/lib/panel/ui/AboutDialogFrame.js.map +1 -0
- package/lib/panel/ui/ClearButton.d.ts +28 -0
- package/lib/panel/ui/ClearButton.d.ts.map +1 -0
- package/lib/panel/ui/ClearButton.js +23 -0
- package/lib/panel/ui/ClearButton.js.map +1 -0
- package/lib/panel/ui/DocumentationDialogFrame.d.ts +39 -0
- package/lib/panel/ui/DocumentationDialogFrame.d.ts.map +1 -0
- package/lib/panel/ui/DocumentationDialogFrame.js +29 -0
- package/lib/panel/ui/DocumentationDialogFrame.js.map +1 -0
- package/lib/panel/ui/FilterInput.d.ts +31 -0
- package/lib/panel/ui/FilterInput.d.ts.map +1 -0
- package/lib/panel/ui/FilterInput.js +23 -0
- package/lib/panel/ui/FilterInput.js.map +1 -0
- package/lib/panel/ui/HelpLabel.d.ts +24 -0
- package/lib/panel/ui/HelpLabel.d.ts.map +1 -0
- package/lib/panel/ui/HelpLabel.js +23 -0
- package/lib/panel/ui/HelpLabel.js.map +1 -0
- package/lib/panel/ui/PanelMessage.d.ts +41 -0
- package/lib/panel/ui/PanelMessage.d.ts.map +1 -0
- package/lib/panel/ui/PanelMessage.js +30 -0
- package/lib/panel/ui/PanelMessage.js.map +1 -0
- package/lib/panel/ui/PanelRail.d.ts +41 -0
- package/lib/panel/ui/PanelRail.d.ts.map +1 -0
- package/lib/panel/ui/PanelRail.js +12 -0
- package/lib/panel/ui/PanelRail.js.map +1 -0
- package/lib/panel/ui/Section.d.ts +25 -0
- package/lib/panel/ui/Section.d.ts.map +1 -0
- package/lib/panel/ui/Section.js +41 -0
- package/lib/panel/ui/Section.js.map +1 -0
- package/lib/panel/ui/SidePanelStack.d.ts +62 -0
- package/lib/panel/ui/SidePanelStack.d.ts.map +1 -0
- package/lib/panel/ui/SidePanelStack.js +40 -0
- package/lib/panel/ui/SidePanelStack.js.map +1 -0
- package/lib/panel/ui/SpectrumColorSwatch.d.ts +33 -0
- package/lib/panel/ui/SpectrumColorSwatch.d.ts.map +1 -0
- package/lib/panel/ui/SpectrumColorSwatch.js +76 -0
- package/lib/panel/ui/SpectrumColorSwatch.js.map +1 -0
- package/lib/panel/ui/index.d.ts +37 -0
- package/lib/panel/ui/index.d.ts.map +1 -0
- package/lib/panel/ui/index.js +24 -0
- package/lib/panel/ui/index.js.map +1 -0
- package/lib/panel/ui/useConfirmOnEnter.d.ts +19 -0
- package/lib/panel/ui/useConfirmOnEnter.d.ts.map +1 -0
- package/lib/panel/ui/useConfirmOnEnter.js +64 -0
- package/lib/panel/ui/useConfirmOnEnter.js.map +1 -0
- package/lib/panel/ui/useFilterBox.d.ts +23 -0
- package/lib/panel/ui/useFilterBox.d.ts.map +1 -0
- package/lib/panel/ui/useFilterBox.js +22 -0
- package/lib/panel/ui/useFilterBox.js.map +1 -0
- package/lib/panel/ui/useVirtualRows.d.ts +46 -0
- package/lib/panel/ui/useVirtualRows.d.ts.map +1 -0
- package/lib/panel/ui/useVirtualRows.js +56 -0
- package/lib/panel/ui/useVirtualRows.js.map +1 -0
- package/lib/panel/ui/useVirtualWindowRows.d.ts +40 -0
- package/lib/panel/ui/useVirtualWindowRows.d.ts.map +1 -0
- package/lib/panel/ui/useVirtualWindowRows.js +65 -0
- package/lib/panel/ui/useVirtualWindowRows.js.map +1 -0
- package/lib/structure/core/conformerBoltzmann.d.ts +56 -0
- package/lib/structure/core/conformerBoltzmann.d.ts.map +1 -0
- package/lib/structure/core/conformerBoltzmann.js +96 -0
- package/lib/structure/core/conformerBoltzmann.js.map +1 -0
- package/lib/structure/core/conformerEnergy.d.ts +69 -0
- package/lib/structure/core/conformerEnergy.d.ts.map +1 -0
- package/lib/structure/core/conformerEnergy.js +47 -0
- package/lib/structure/core/conformerEnergy.js.map +1 -0
- package/lib/structure/core/index.d.ts +3 -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/ui/ConformerTable.d.ts +73 -0
- package/lib/structure/ui/ConformerTable.d.ts.map +1 -0
- package/lib/structure/ui/ConformerTable.js +259 -0
- package/lib/structure/ui/ConformerTable.js.map +1 -0
- package/lib/structure/ui/conformerColumns.d.ts +30 -0
- package/lib/structure/ui/conformerColumns.d.ts.map +1 -0
- package/lib/structure/ui/conformerColumns.js +37 -0
- package/lib/structure/ui/conformerColumns.js.map +1 -0
- package/lib/ui.d.ts +5 -0
- package/lib/ui.d.ts.map +1 -1
- package/lib/ui.js +3 -0
- package/lib/ui.js.map +1 -1
- package/package.json +8 -1
- package/src/chart/core/axisLabels.ts +117 -0
- package/src/chart/core/boxLayout.ts +126 -0
- package/src/chart/core/chartAxisScale.ts +92 -10
- package/src/chart/core/chartDomain.ts +185 -0
- package/src/chart/core/chartGeometry.ts +159 -0
- package/src/chart/core/chartPane.ts +10 -0
- package/src/chart/core/chartScale.ts +7 -4
- package/src/chart/core/chartTheme.ts +161 -0
- package/src/chart/core/chartViewport.ts +40 -13
- package/src/chart/core/guidePlacement.ts +66 -0
- package/src/chart/core/index.ts +121 -2
- package/src/chart/core/labelStack.ts +72 -0
- package/src/chart/core/legendBox.ts +263 -0
- package/src/chart/core/selectionGeometry.ts +68 -0
- package/src/chart/core/spectrumColor.ts +129 -0
- package/src/chart/core/stackCapacity.ts +162 -0
- package/src/chart/core/svgPoint.ts +77 -0
- package/src/chart/core/tracePath.ts +228 -0
- package/src/chart/core/trackerReadout.ts +78 -0
- package/src/chart/core/viewTransform.ts +287 -0
- package/src/chart/core/zoomDomain.ts +235 -0
- package/src/chart/ui/Axes.tsx +361 -0
- package/src/chart/ui/AxisGuide.tsx +187 -0
- package/src/chart/ui/ChartStack.tsx +130 -0
- package/src/chart/ui/ChartTracker.tsx +101 -0
- package/src/chart/ui/PlotCaption.tsx +108 -0
- package/src/chart/ui/SelectionRect.tsx +52 -0
- package/src/chart/ui/TraceLegend.tsx +193 -0
- package/src/chart/ui/chartGestures.ts +270 -0
- package/src/chart/ui/chartStackLevel.tsx +210 -0
- package/src/chart/ui/chartSurface.ts +66 -0
- package/src/chart/ui/index.ts +35 -0
- package/src/chart/ui/useChartPointer.ts +223 -0
- package/src/chart/ui/useChartSize.ts +115 -0
- package/src/chart/ui/useChartWindow.ts +240 -0
- package/src/chart/ui/useChartZoom.ts +255 -0
- package/src/chart/ui/useWheelListener.ts +62 -0
- package/src/chrome/ui/AccountButton.tsx +185 -0
- package/src/chrome/ui/index.ts +2 -0
- package/src/clipboard/core/copyPng.ts +20 -0
- package/src/clipboard/core/index.ts +1 -0
- package/src/clipboard/ui/ClickToCopy.tsx +9 -1
- package/src/core.ts +1 -0
- package/src/download/core/exportStyles.ts +20 -0
- package/src/download/core/imageResolution.ts +118 -0
- package/src/download/core/index.ts +34 -0
- package/src/download/core/pictureExport.ts +207 -0
- package/src/download/core/stackedDrawing.ts +108 -0
- package/src/download/core/svgBounds.ts +80 -0
- package/src/download/core/svgNamespace.ts +9 -0
- package/src/download/core/svgToPng.ts +121 -0
- package/src/download/core/svgToString.ts +95 -0
- package/src/download/ui/ExportDialogFrame.tsx +86 -0
- package/src/download/ui/ExportImageDialog.tsx +91 -0
- package/src/download/ui/ExportNameField.tsx +148 -0
- package/src/download/ui/ExportPictureSection.tsx +142 -0
- package/src/download/ui/index.ts +11 -0
- package/src/download/ui/useDrawingBox.ts +37 -0
- package/src/error/core/describeSource.ts +18 -0
- package/src/error/core/index.ts +1 -0
- package/src/help/ui/HelpBody.tsx +41 -2
- package/src/help/ui/index.ts +6 -1
- package/src/ir/core/analysisSpectra.ts +231 -0
- package/src/ir/core/assignBands.ts +144 -0
- package/src/ir/core/bandAssignments.ts +329 -0
- package/src/ir/core/bandLabelPlan.ts +194 -0
- package/src/ir/core/detectIrFormat.ts +139 -0
- package/src/ir/core/downloadSpectra.ts +57 -0
- package/src/ir/core/fromJcamp.ts +70 -0
- package/src/ir/core/fromSpc.ts +61 -0
- package/src/ir/core/index.ts +113 -0
- package/src/ir/core/irBand.ts +57 -0
- package/src/ir/core/irCommands.ts +154 -0
- package/src/ir/core/irDomain.ts +163 -0
- package/src/ir/core/irEditorApi.ts +44 -0
- package/src/ir/core/irFormat.ts +57 -0
- package/src/ir/core/irMode.ts +203 -0
- package/src/ir/core/irReducer.ts +273 -0
- package/src/ir/core/irSidePanels.ts +20 -0
- package/src/ir/core/irSpectrum.ts +155 -0
- package/src/ir/core/irState.ts +173 -0
- package/src/ir/core/loadIrSpectra.ts +79 -0
- package/src/ir/core/nearestBand.ts +57 -0
- package/src/ir/core/pickBands.ts +181 -0
- package/src/ir/core/spectrumJcamp.ts +178 -0
- package/src/ir/core/toIrSpectrum.ts +102 -0
- package/src/ir/ui/BandMarks.tsx +166 -0
- package/src/ir/ui/BandsPanel.tsx +271 -0
- package/src/ir/ui/IrAboutDialog.tsx +121 -0
- package/src/ir/ui/IrCanvas.tsx +91 -0
- package/src/ir/ui/IrChart.tsx +215 -0
- package/src/ir/ui/IrCommandProvider.tsx +32 -0
- package/src/ir/ui/IrCommandTooltip.tsx +36 -0
- package/src/ir/ui/IrDocumentationDialog.tsx +174 -0
- package/src/ir/ui/IrEditor.tsx +99 -0
- package/src/ir/ui/IrHeader.tsx +39 -0
- package/src/ir/ui/IrLogo.tsx +49 -0
- package/src/ir/ui/IrPointerTracker.tsx +102 -0
- package/src/ir/ui/IrShell.tsx +285 -0
- package/src/ir/ui/IrSidePanel.tsx +78 -0
- package/src/ir/ui/IrStateProvider.tsx +32 -0
- package/src/ir/ui/IrStatusBar.tsx +97 -0
- package/src/ir/ui/IrToolbar.tsx +102 -0
- package/src/ir/ui/IrTraces.tsx +134 -0
- package/src/ir/ui/MetadataPanel.tsx +88 -0
- package/src/ir/ui/SpectraPanel.tsx +114 -0
- package/src/ir/ui/SpectrumRow.tsx +127 -0
- package/src/ir/ui/index.ts +56 -0
- package/src/ir/ui/irActions.ts +103 -0
- package/src/ir/ui/irChartProps.ts +118 -0
- package/src/ir/ui/irCommandContext.tsx +62 -0
- package/src/ir/ui/irStateContext.ts +48 -0
- package/src/ir/ui/useIrEditor.ts +139 -0
- package/src/ir/ui/useIrPointer.ts +109 -0
- package/src/ir/ui/useIrShortcuts.ts +95 -0
- package/src/ir/ui/useIrZoom.ts +86 -0
- package/src/ir.ts +13 -0
- package/src/locales/de.json +3 -0
- package/src/locales/en.json +3 -0
- package/src/locales/es.json +3 -0
- package/src/locales/fr.json +3 -0
- package/src/panel/core/dialogStyles.ts +11 -0
- package/src/panel/core/index.ts +47 -0
- package/src/panel/core/isEditingField.ts +23 -0
- package/src/panel/core/panelStyles.ts +248 -0
- package/src/panel/core/rowSpacers.ts +50 -0
- package/src/panel/core/statusBar.ts +48 -0
- package/src/panel/core/textFilter.ts +33 -0
- package/src/panel/core/yieldToPainting.ts +20 -0
- package/src/panel/ui/AboutDialogFrame.tsx +100 -0
- package/src/panel/ui/ClearButton.tsx +42 -0
- package/src/panel/ui/DocumentationDialogFrame.tsx +86 -0
- package/src/panel/ui/FilterInput.tsx +60 -0
- package/src/panel/ui/HelpLabel.tsx +43 -0
- package/src/panel/ui/PanelMessage.tsx +64 -0
- package/src/panel/ui/PanelRail.tsx +64 -0
- package/src/panel/ui/Section.tsx +66 -0
- package/src/panel/ui/SidePanelStack.tsx +109 -0
- package/src/panel/ui/SpectrumColorSwatch.tsx +119 -0
- package/src/panel/ui/index.ts +47 -0
- package/src/panel/ui/useConfirmOnEnter.ts +68 -0
- package/src/panel/ui/useFilterBox.ts +35 -0
- package/src/panel/ui/useVirtualRows.ts +82 -0
- package/src/panel/ui/useVirtualWindowRows.ts +86 -0
- package/src/structure/core/conformerBoltzmann.ts +102 -0
- package/src/structure/core/conformerEnergy.ts +97 -0
- package/src/structure/core/index.ts +15 -0
- package/src/structure/ui/ConformerTable.tsx +429 -0
- package/src/structure/ui/conformerColumns.ts +55 -0
- package/src/ui.ts +13 -0
- package/styles/chrome.css +55 -0
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { xyReduce } from 'ml-spectra-processing';
|
|
2
|
+
import type { ReactElement } from 'react';
|
|
3
|
+
import { useMemo } from 'react';
|
|
4
|
+
|
|
5
|
+
import type { PlotRect } from '../../chart/core/chartGeometry.ts';
|
|
6
|
+
import type { ChartScale } from '../../chart/core/chartScale.ts';
|
|
7
|
+
import { profilePath } from '../../chart/core/tracePath.ts';
|
|
8
|
+
import type { IrMode, IrSpectrum } from '../core/irSpectrum.ts';
|
|
9
|
+
import { traceOf } from '../core/irSpectrum.ts';
|
|
10
|
+
|
|
11
|
+
export interface IrTracesProps {
|
|
12
|
+
/** The spectra to draw, each saying in itself whether it is drawn. */
|
|
13
|
+
spectra: readonly IrSpectrum[];
|
|
14
|
+
/** Which value axis is being drawn. */
|
|
15
|
+
mode: IrMode;
|
|
16
|
+
/**
|
|
17
|
+
* Where the plot sits, whose width is how many points are worth drawing. A
|
|
18
|
+
* trace is reduced to the pixel columns it will occupy, so the width is what
|
|
19
|
+
* says how much of a spectrum the chart can actually show.
|
|
20
|
+
*/
|
|
21
|
+
plot: PlotRect;
|
|
22
|
+
/**
|
|
23
|
+
* The window being shown, low end first — which is what the reduction is cut
|
|
24
|
+
* to. Read from the window rather than inverted back out of `xScale`, because
|
|
25
|
+
* the wavenumber axis runs right to left and inverting its left edge gives
|
|
26
|
+
* the *high* end, the opposite of what every other chart's does.
|
|
27
|
+
*/
|
|
28
|
+
xDomain: readonly [number, number];
|
|
29
|
+
/** The wavenumber axis as it is currently zoomed, running right to left. */
|
|
30
|
+
xScale: ChartScale;
|
|
31
|
+
/** The value axis as it is currently zoomed. */
|
|
32
|
+
yScale: ChartScale;
|
|
33
|
+
/**
|
|
34
|
+
* Identity of the spectrum drawn thicker than the rest, `null` for none. The
|
|
35
|
+
* one every panel beside the chart is about, so that which trace the numbers
|
|
36
|
+
* belong to can be seen rather than inferred from a colour swatch.
|
|
37
|
+
* @default null
|
|
38
|
+
*/
|
|
39
|
+
emphasisedId?: string | null;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Every visible spectrum, one `<path>` each.
|
|
44
|
+
*
|
|
45
|
+
* One path per spectrum and never one element per point: an infrared spectrum is
|
|
46
|
+
* a few thousand samples, and drawn as a line each the browser holds thousands of
|
|
47
|
+
* nodes for a picture that is a single stroke — and every pointer move across the
|
|
48
|
+
* chart then costs a walk of all of them.
|
|
49
|
+
*
|
|
50
|
+
* Nor every sample: a spectrum is reduced to the pixel columns it will occupy
|
|
51
|
+
* before it becomes a path. A bench instrument's 1 cm⁻¹ grid over 4000–400 is
|
|
52
|
+
* some eight thousand samples against a plot around thirteen hundred pixels
|
|
53
|
+
* wide, and a chart holding the four infrared blocks of one JCAMP file writes
|
|
54
|
+
* a fifth of a megabyte of `d` for a picture no denser than the one it would
|
|
55
|
+
* have drawn from a tenth of that. `xyReduce` keeps the lowest and the highest
|
|
56
|
+
* sample of every slot, so a band still reaches its true depth rather than the
|
|
57
|
+
* depth of whichever sample a slot boundary happened to land on — and it cuts
|
|
58
|
+
* by wavenumber rather than by index, which is what makes it safe on the
|
|
59
|
+
* uneven grids a converted or interpolated file arrives on.
|
|
60
|
+
*
|
|
61
|
+
* There is no stick trace here and no mirror mode, which is the visible
|
|
62
|
+
* difference from a mass chart: infrared is a continuous absorption profile, the
|
|
63
|
+
* bands are features *of* that curve rather than a second representation of it,
|
|
64
|
+
* and two spectra are compared by drawing them over one another rather than head
|
|
65
|
+
* to head — the baselines have to line up for the comparison to mean anything.
|
|
66
|
+
* @param props - Component props.
|
|
67
|
+
* @returns The traces, as SVG.
|
|
68
|
+
*/
|
|
69
|
+
export function IrTraces(props: IrTracesProps): ReactElement {
|
|
70
|
+
const {
|
|
71
|
+
spectra,
|
|
72
|
+
mode,
|
|
73
|
+
plot,
|
|
74
|
+
xDomain,
|
|
75
|
+
xScale,
|
|
76
|
+
yScale,
|
|
77
|
+
emphasisedId = null,
|
|
78
|
+
} = props;
|
|
79
|
+
|
|
80
|
+
const [from, to] = xDomain;
|
|
81
|
+
const wanted = Math.max(2, Math.round(plot.width)) * POINTS_PER_COLUMN;
|
|
82
|
+
|
|
83
|
+
const paths = useMemo(() => {
|
|
84
|
+
const drawn: Array<{ id: string; color: string; d: string }> = [];
|
|
85
|
+
for (const spectrum of spectra) {
|
|
86
|
+
if (!spectrum.visible) continue;
|
|
87
|
+
const trace = traceOf(spectrum, mode);
|
|
88
|
+
const { x, y } = xyReduce(trace, { from, to, nbPoints: wanted });
|
|
89
|
+
const d = profilePath(x, y, xScale, yScale);
|
|
90
|
+
if (d !== '') drawn.push({ id: spectrum.id, color: spectrum.color, d });
|
|
91
|
+
}
|
|
92
|
+
return drawn;
|
|
93
|
+
}, [spectra, mode, from, to, wanted, xScale, yScale]);
|
|
94
|
+
|
|
95
|
+
return (
|
|
96
|
+
<g pointerEvents="none">
|
|
97
|
+
{paths.map((path) => (
|
|
98
|
+
<path
|
|
99
|
+
key={path.id}
|
|
100
|
+
d={path.d}
|
|
101
|
+
fill="none"
|
|
102
|
+
stroke={path.color}
|
|
103
|
+
strokeWidth={
|
|
104
|
+
path.id === emphasisedId ? EMPHASISED_WIDTH : TRACE_WIDTH
|
|
105
|
+
}
|
|
106
|
+
strokeLinejoin="round"
|
|
107
|
+
/>
|
|
108
|
+
))}
|
|
109
|
+
</g>
|
|
110
|
+
);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* How many reduced samples each pixel column is given.
|
|
115
|
+
*
|
|
116
|
+
* The reduction keeps the lowest and the highest sample of every slot, so two
|
|
117
|
+
* per column is the least that draws a column at all — and `xyReduce` asks for
|
|
118
|
+
* about four times what is displayed before a narrow band survives at its true
|
|
119
|
+
* depth rather than at the depth of whichever sample the slot boundary happened
|
|
120
|
+
* to land on.
|
|
121
|
+
*/
|
|
122
|
+
const POINTS_PER_COLUMN = 4;
|
|
123
|
+
|
|
124
|
+
/** How thick a trace is drawn. */
|
|
125
|
+
const TRACE_WIDTH = 1;
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* How thick the one every panel is about is drawn.
|
|
129
|
+
*
|
|
130
|
+
* Barely thicker, because the difference has to be visible without reading as a
|
|
131
|
+
* different kind of thing: at two pixels a trace still looks like the others,
|
|
132
|
+
* where at three it looks like a fit or an envelope drawn over them.
|
|
133
|
+
*/
|
|
134
|
+
const EMPHASISED_WIDTH = 2;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import {
|
|
2
|
+
panelBodyStyle,
|
|
3
|
+
panelCellStyle,
|
|
4
|
+
panelEmptyStyle,
|
|
5
|
+
panelStyle,
|
|
6
|
+
panelTableStyle,
|
|
7
|
+
} from '../../panel/core/panelStyles.ts';
|
|
8
|
+
|
|
9
|
+
import { useIrEditorState } from './irStateContext.ts';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* What the file said about the selected spectrum's acquisition.
|
|
13
|
+
*
|
|
14
|
+
* Only what it actually said. A field the file left blank is left out rather than
|
|
15
|
+
* shown empty, so every line in the table is a fact — which is what makes the
|
|
16
|
+
* table worth reading at all on a format where instruments write whatever they
|
|
17
|
+
* like.
|
|
18
|
+
*
|
|
19
|
+
* Where the spectrum came from is shown even when the file said nothing: the
|
|
20
|
+
* format and the file name are the two things a reader asks first when a trace
|
|
21
|
+
* looks wrong.
|
|
22
|
+
* @returns The panel.
|
|
23
|
+
*/
|
|
24
|
+
export function MetadataPanel() {
|
|
25
|
+
const { selectedSpectrum } = useIrEditorState();
|
|
26
|
+
|
|
27
|
+
if (selectedSpectrum === null) {
|
|
28
|
+
return (
|
|
29
|
+
<div style={panelStyle}>
|
|
30
|
+
<div style={panelBodyStyle}>
|
|
31
|
+
<p style={panelEmptyStyle}>No spectrum is selected.</p>
|
|
32
|
+
</div>
|
|
33
|
+
</div>
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const { meta, origin, wavenumber } = selectedSpectrum;
|
|
38
|
+
const rows: Array<[string, string]> = [
|
|
39
|
+
['Format', origin.format],
|
|
40
|
+
...(origin.fileName === undefined
|
|
41
|
+
? []
|
|
42
|
+
: ([['File', origin.fileName]] as Array<[string, string]>)),
|
|
43
|
+
...(origin.blockIndex === undefined
|
|
44
|
+
? []
|
|
45
|
+
: ([['Block', String(origin.blockIndex)]] as Array<[string, string]>)),
|
|
46
|
+
...(origin.recorded === undefined
|
|
47
|
+
? []
|
|
48
|
+
: ([['Recorded as', origin.recorded]] as Array<[string, string]>)),
|
|
49
|
+
['Points', String(wavenumber.length)],
|
|
50
|
+
...(meta === null
|
|
51
|
+
? []
|
|
52
|
+
: meta.fields.map(
|
|
53
|
+
(field) => [field.label, field.value] as [string, string],
|
|
54
|
+
)),
|
|
55
|
+
];
|
|
56
|
+
|
|
57
|
+
return (
|
|
58
|
+
<div style={panelStyle}>
|
|
59
|
+
<div style={panelBodyStyle}>
|
|
60
|
+
{meta?.title === null || meta?.title === undefined ? null : (
|
|
61
|
+
<p style={titleStyle}>{meta.title}</p>
|
|
62
|
+
)}
|
|
63
|
+
<table style={panelTableStyle}>
|
|
64
|
+
<tbody>
|
|
65
|
+
{rows.map(([label, value]) => (
|
|
66
|
+
<tr key={label}>
|
|
67
|
+
<th style={labelCellStyle}>{label}</th>
|
|
68
|
+
<td style={{ ...panelCellStyle, whiteSpace: 'normal' }}>
|
|
69
|
+
{value}
|
|
70
|
+
</td>
|
|
71
|
+
</tr>
|
|
72
|
+
))}
|
|
73
|
+
</tbody>
|
|
74
|
+
</table>
|
|
75
|
+
</div>
|
|
76
|
+
</div>
|
|
77
|
+
);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
const titleStyle = { margin: 0, fontWeight: 600 } as const;
|
|
81
|
+
|
|
82
|
+
const labelCellStyle = {
|
|
83
|
+
...panelCellStyle,
|
|
84
|
+
textAlign: 'left',
|
|
85
|
+
fontWeight: 400,
|
|
86
|
+
opacity: 0.7,
|
|
87
|
+
width: '40%',
|
|
88
|
+
} as const;
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { Toolbar } from 'react-science/ui';
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
panelBodyStyle,
|
|
5
|
+
panelEmptyStyle,
|
|
6
|
+
panelStyle,
|
|
7
|
+
panelToolbarStyle,
|
|
8
|
+
} from '../../panel/core/panelStyles.ts';
|
|
9
|
+
import {
|
|
10
|
+
downloadIrSpectra,
|
|
11
|
+
downloadIrSpectrum,
|
|
12
|
+
} from '../core/downloadSpectra.ts';
|
|
13
|
+
|
|
14
|
+
import { SpectrumRow } from './SpectrumRow.tsx';
|
|
15
|
+
import { useIrActions, useIrEditorState } from './irStateContext.ts';
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* The spectra that are open: which is drawn, which the panels are about, and
|
|
19
|
+
* what each is called.
|
|
20
|
+
*
|
|
21
|
+
* One row per spectrum, and the row is the selection: the panels and the picking
|
|
22
|
+
* are about one spectrum at a time, so which one that is has to be visible and
|
|
23
|
+
* one click away. Drawing is separate from selecting — a reference can be kept on
|
|
24
|
+
* the chart while the bands of the sample are read — which is why the eye and the
|
|
25
|
+
* row are two different targets.
|
|
26
|
+
*
|
|
27
|
+
* What acts on the list rather than on one row — drawing them all again, handing
|
|
28
|
+
* the whole list over as a file, closing the selected one, closing every one — is
|
|
29
|
+
* a toolbar under the header, where a panel's own actions belong. Closing the
|
|
30
|
+
* selected spectrum is offered there as well as on its row because the row's
|
|
31
|
+
* cross is a small target in a list of twenty, and the selected spectrum is the
|
|
32
|
+
* one being worked on.
|
|
33
|
+
* @returns The panel.
|
|
34
|
+
*/
|
|
35
|
+
export function SpectraPanel() {
|
|
36
|
+
const { state } = useIrEditorState();
|
|
37
|
+
const actions = useIrActions();
|
|
38
|
+
const { spectra } = state.data;
|
|
39
|
+
const { selectedId } = state.view;
|
|
40
|
+
const { mode } = state.settings;
|
|
41
|
+
|
|
42
|
+
const selected = spectra.find((spectrum) => spectrum.id === selectedId);
|
|
43
|
+
const allDrawn = spectra.every((spectrum) => spectrum.visible);
|
|
44
|
+
|
|
45
|
+
return (
|
|
46
|
+
<div style={panelStyle}>
|
|
47
|
+
<div style={panelToolbarStyle}>
|
|
48
|
+
<Toolbar aria-label="Spectra">
|
|
49
|
+
<Toolbar.Item
|
|
50
|
+
icon="trash"
|
|
51
|
+
intent="danger"
|
|
52
|
+
tooltip="Close every spectrum"
|
|
53
|
+
aria-label="Close every spectrum"
|
|
54
|
+
disabled={spectra.length === 0}
|
|
55
|
+
onClick={actions.clear}
|
|
56
|
+
/>
|
|
57
|
+
<Toolbar.Item
|
|
58
|
+
icon="cross"
|
|
59
|
+
intent="danger"
|
|
60
|
+
tooltip="Close the selected spectrum"
|
|
61
|
+
aria-label="Close the selected spectrum"
|
|
62
|
+
disabled={selected === undefined}
|
|
63
|
+
onClick={() => {
|
|
64
|
+
if (selected !== undefined) actions.removeSpectrum(selected.id);
|
|
65
|
+
}}
|
|
66
|
+
/>
|
|
67
|
+
<Toolbar.Item
|
|
68
|
+
icon="eye-open"
|
|
69
|
+
tooltip="Draw every spectrum again"
|
|
70
|
+
aria-label="Draw every spectrum again"
|
|
71
|
+
disabled={spectra.length === 0 || allDrawn}
|
|
72
|
+
onClick={() => {
|
|
73
|
+
for (const spectrum of spectra) {
|
|
74
|
+
actions.setSpectrumVisible(spectrum.id, true);
|
|
75
|
+
}
|
|
76
|
+
}}
|
|
77
|
+
/>
|
|
78
|
+
<Toolbar.Item
|
|
79
|
+
icon="download"
|
|
80
|
+
tooltip="Download every spectrum as one JCAMP-DX file"
|
|
81
|
+
aria-label="Download every spectrum"
|
|
82
|
+
disabled={spectra.length === 0}
|
|
83
|
+
onClick={() => downloadIrSpectra(spectra, mode)}
|
|
84
|
+
/>
|
|
85
|
+
</Toolbar>
|
|
86
|
+
</div>
|
|
87
|
+
|
|
88
|
+
<div style={panelBodyStyle}>
|
|
89
|
+
{spectra.length === 0 ? (
|
|
90
|
+
<p style={panelEmptyStyle}>
|
|
91
|
+
No spectrum is open. Open one of the examples, or drop a JCAMP-DX
|
|
92
|
+
file on the chart.
|
|
93
|
+
</p>
|
|
94
|
+
) : (
|
|
95
|
+
spectra.map((spectrum) => (
|
|
96
|
+
<SpectrumRow
|
|
97
|
+
key={spectrum.id}
|
|
98
|
+
spectrum={spectrum}
|
|
99
|
+
selected={spectrum.id === selectedId}
|
|
100
|
+
onSelect={() => actions.selectSpectrum(spectrum.id)}
|
|
101
|
+
onToggle={() =>
|
|
102
|
+
actions.setSpectrumVisible(spectrum.id, !spectrum.visible)
|
|
103
|
+
}
|
|
104
|
+
onColor={(color) => actions.setSpectrumColor(spectrum.id, color)}
|
|
105
|
+
onDownload={() => downloadIrSpectrum(spectrum, mode)}
|
|
106
|
+
onRemove={() => actions.removeSpectrum(spectrum.id)}
|
|
107
|
+
onRename={(name) => actions.renameSpectrum(spectrum.id, name)}
|
|
108
|
+
/>
|
|
109
|
+
))
|
|
110
|
+
)}
|
|
111
|
+
</div>
|
|
112
|
+
</div>
|
|
113
|
+
);
|
|
114
|
+
}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { Button } from 'react-science/ui';
|
|
2
|
+
|
|
3
|
+
import { SpectrumColorSwatch } from '../../panel/ui/SpectrumColorSwatch.tsx';
|
|
4
|
+
import { formatWavenumber } from '../core/irFormat.ts';
|
|
5
|
+
import type { IrSpectrum } from '../core/irSpectrum.ts';
|
|
6
|
+
|
|
7
|
+
export interface SpectrumRowProps {
|
|
8
|
+
/** The spectrum the row is about. */
|
|
9
|
+
spectrum: IrSpectrum;
|
|
10
|
+
/** Whether the panels are about it. */
|
|
11
|
+
selected: boolean;
|
|
12
|
+
/** Point the panels at it. */
|
|
13
|
+
onSelect: () => void;
|
|
14
|
+
/** Draw it, or stop drawing it. */
|
|
15
|
+
onToggle: () => void;
|
|
16
|
+
/** Draw it in another colour of the palette. */
|
|
17
|
+
onColor: (color: string) => void;
|
|
18
|
+
/** Hand it over as a file. */
|
|
19
|
+
onDownload: () => void;
|
|
20
|
+
/** Close it. */
|
|
21
|
+
onRemove: () => void;
|
|
22
|
+
/** Call it something else. */
|
|
23
|
+
onRename: (name: string) => void;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* One spectrum: its colour, its name, where it runs, and what can be done to it.
|
|
28
|
+
* @param props - Component props.
|
|
29
|
+
* @returns The row.
|
|
30
|
+
*/
|
|
31
|
+
export function SpectrumRow(props: SpectrumRowProps) {
|
|
32
|
+
const {
|
|
33
|
+
spectrum,
|
|
34
|
+
selected,
|
|
35
|
+
onSelect,
|
|
36
|
+
onToggle,
|
|
37
|
+
onColor,
|
|
38
|
+
onDownload,
|
|
39
|
+
onRemove,
|
|
40
|
+
onRename,
|
|
41
|
+
} = props;
|
|
42
|
+
|
|
43
|
+
const range =
|
|
44
|
+
spectrum.wavenumber.length === 0
|
|
45
|
+
? ''
|
|
46
|
+
: `${formatWavenumber(spectrum.wavenumber.at(-1) as number)}–${formatWavenumber(spectrum.wavenumber[0] as number)} cm⁻¹`;
|
|
47
|
+
|
|
48
|
+
return (
|
|
49
|
+
<div
|
|
50
|
+
style={selected ? selectedRowStyle : rowStyle}
|
|
51
|
+
data-selected={selected ? 'true' : undefined}
|
|
52
|
+
>
|
|
53
|
+
<Button
|
|
54
|
+
variant="minimal"
|
|
55
|
+
icon={spectrum.visible ? 'eye-open' : 'eye-off'}
|
|
56
|
+
tooltipProps={{ content: spectrum.visible ? 'Hide' : 'Draw' }}
|
|
57
|
+
aria-label={spectrum.visible ? 'Hide this spectrum' : 'Draw it'}
|
|
58
|
+
onClick={onToggle}
|
|
59
|
+
/>
|
|
60
|
+
|
|
61
|
+
{/* The swatch is the colour control: a spectrum is told from the others by
|
|
62
|
+
its colour, so the colour is where a reader reaches to change it. */}
|
|
63
|
+
<SpectrumColorSwatch
|
|
64
|
+
color={spectrum.color}
|
|
65
|
+
name={spectrum.name}
|
|
66
|
+
onPick={onColor}
|
|
67
|
+
/>
|
|
68
|
+
|
|
69
|
+
<input
|
|
70
|
+
style={nameStyle}
|
|
71
|
+
value={spectrum.name}
|
|
72
|
+
spellCheck={false}
|
|
73
|
+
autoComplete="off"
|
|
74
|
+
aria-label="What this spectrum is called"
|
|
75
|
+
onFocus={onSelect}
|
|
76
|
+
onChange={(event) => onRename(event.target.value)}
|
|
77
|
+
/>
|
|
78
|
+
|
|
79
|
+
<span style={rangeStyle}>{range}</span>
|
|
80
|
+
|
|
81
|
+
<Button
|
|
82
|
+
variant="minimal"
|
|
83
|
+
icon="download"
|
|
84
|
+
tooltipProps={{ content: 'Download this spectrum as a JCAMP-DX file' }}
|
|
85
|
+
aria-label="Download this spectrum"
|
|
86
|
+
onClick={onDownload}
|
|
87
|
+
/>
|
|
88
|
+
|
|
89
|
+
<Button
|
|
90
|
+
variant="minimal"
|
|
91
|
+
icon="cross"
|
|
92
|
+
intent="danger"
|
|
93
|
+
tooltipProps={{ content: 'Close this spectrum' }}
|
|
94
|
+
aria-label="Close this spectrum"
|
|
95
|
+
onClick={onRemove}
|
|
96
|
+
/>
|
|
97
|
+
</div>
|
|
98
|
+
);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
const rowStyle = {
|
|
102
|
+
display: 'flex',
|
|
103
|
+
alignItems: 'center',
|
|
104
|
+
gap: 4,
|
|
105
|
+
padding: '1px 2px',
|
|
106
|
+
borderRadius: 3,
|
|
107
|
+
} as const;
|
|
108
|
+
|
|
109
|
+
const selectedRowStyle = { ...rowStyle, background: '#e8f1fb' } as const;
|
|
110
|
+
|
|
111
|
+
const nameStyle = {
|
|
112
|
+
flex: '1 1 1px',
|
|
113
|
+
minWidth: 0,
|
|
114
|
+
border: '1px solid transparent',
|
|
115
|
+
borderRadius: 2,
|
|
116
|
+
background: 'transparent',
|
|
117
|
+
font: 'inherit',
|
|
118
|
+
fontSize: 12,
|
|
119
|
+
padding: '1px 3px',
|
|
120
|
+
} as const;
|
|
121
|
+
|
|
122
|
+
const rangeStyle = {
|
|
123
|
+
flex: 'none',
|
|
124
|
+
fontSize: 11,
|
|
125
|
+
opacity: 0.6,
|
|
126
|
+
fontVariantNumeric: 'tabular-nums',
|
|
127
|
+
} as const;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The infrared chart, the panels beside it and the editor they sit in.
|
|
3
|
+
*
|
|
4
|
+
* `IrChart` is the drawing and holds nothing: it takes spectra, bands, a mode
|
|
5
|
+
* and a window as props and hands every gesture back, so it fits a report page
|
|
6
|
+
* or a test as readily as an editor. The chart's own drawing — scales, ticks,
|
|
7
|
+
* plot geometry, the zoom gestures and the label placement — is the shared
|
|
8
|
+
* chart layer, which every viewer of the family draws with.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
export type { BandMarksProps } from './BandMarks.tsx';
|
|
12
|
+
export { BandMarks } from './BandMarks.tsx';
|
|
13
|
+
export type { BandsPanelProps } from './BandsPanel.tsx';
|
|
14
|
+
export { BandsPanel } from './BandsPanel.tsx';
|
|
15
|
+
export type { IrAboutDialogProps } from './IrAboutDialog.tsx';
|
|
16
|
+
export { IrAboutDialog } from './IrAboutDialog.tsx';
|
|
17
|
+
export type { IrCanvasProps } from './IrCanvas.tsx';
|
|
18
|
+
export { IrCanvas } from './IrCanvas.tsx';
|
|
19
|
+
export { IrChart } from './IrChart.tsx';
|
|
20
|
+
export type { IrCommandProviderProps } from './IrCommandProvider.tsx';
|
|
21
|
+
export { IrCommandProvider } from './IrCommandProvider.tsx';
|
|
22
|
+
export type { IrCommandTooltipProps } from './IrCommandTooltip.tsx';
|
|
23
|
+
export { IrCommandTooltip } from './IrCommandTooltip.tsx';
|
|
24
|
+
export type { IrDocumentationDialogProps } from './IrDocumentationDialog.tsx';
|
|
25
|
+
export { IrDocumentationDialog } from './IrDocumentationDialog.tsx';
|
|
26
|
+
export type { IrEditorProps } from './IrEditor.tsx';
|
|
27
|
+
export { IrEditor } from './IrEditor.tsx';
|
|
28
|
+
export type { IrLogoProps } from './IrLogo.tsx';
|
|
29
|
+
export { IrLogo } from './IrLogo.tsx';
|
|
30
|
+
export type { IrPointerTrackerProps } from './IrPointerTracker.tsx';
|
|
31
|
+
export { IrPointerTracker } from './IrPointerTracker.tsx';
|
|
32
|
+
export type { IrSidePanelProps } from './IrSidePanel.tsx';
|
|
33
|
+
export { IrSidePanel } from './IrSidePanel.tsx';
|
|
34
|
+
export type { IrStateProviderProps } from './IrStateProvider.tsx';
|
|
35
|
+
export { IrStateProvider } from './IrStateProvider.tsx';
|
|
36
|
+
export { IrStatusBar } from './IrStatusBar.tsx';
|
|
37
|
+
export { IrToolbar } from './IrToolbar.tsx';
|
|
38
|
+
export type { IrTracesProps } from './IrTraces.tsx';
|
|
39
|
+
export { IrTraces } from './IrTraces.tsx';
|
|
40
|
+
export { MetadataPanel } from './MetadataPanel.tsx';
|
|
41
|
+
export { SpectraPanel } from './SpectraPanel.tsx';
|
|
42
|
+
export type { SpectrumRowProps } from './SpectrumRow.tsx';
|
|
43
|
+
export { SpectrumRow } from './SpectrumRow.tsx';
|
|
44
|
+
export type { IrEditorActions } from './irActions.ts';
|
|
45
|
+
export { createIrActions } from './irActions.ts';
|
|
46
|
+
export type { IrChartProps } from './irChartProps.ts';
|
|
47
|
+
export type { IrCommandContextValue } from './irCommandContext.tsx';
|
|
48
|
+
export { useIrCommand, useIrCommandProps } from './irCommandContext.tsx';
|
|
49
|
+
export { useIrActions, useIrEditorState } from './irStateContext.ts';
|
|
50
|
+
export type { IrEditorApi, UseIrEditorOptions } from './useIrEditor.ts';
|
|
51
|
+
export { useIrEditor } from './useIrEditor.ts';
|
|
52
|
+
export type { IrPointerOptions, IrReadout } from './useIrPointer.ts';
|
|
53
|
+
export { sameIrReadout, useIrPointer } from './useIrPointer.ts';
|
|
54
|
+
export { useIrShortcuts } from './useIrShortcuts.ts';
|
|
55
|
+
export type { IrZoomOptions } from './useIrZoom.ts';
|
|
56
|
+
export { useIrZoom } from './useIrZoom.ts';
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Everything the viewer can be asked to do, as functions rather than actions.
|
|
3
|
+
*
|
|
4
|
+
* A component that dispatched action objects would have the shape of the reducer
|
|
5
|
+
* spread across every panel; one that calls `actions.selectSpectrum(id)` does
|
|
6
|
+
* not, and the reducer stays free to change how it holds things.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import type { Dispatch } from 'react';
|
|
10
|
+
|
|
11
|
+
import type { IrAction } from '../core/irReducer.ts';
|
|
12
|
+
import type { IrSidePanelId } from '../core/irSidePanels.ts';
|
|
13
|
+
import type { IrDomain, IrSpectrum } from '../core/irSpectrum.ts';
|
|
14
|
+
import type { IrSettings, IrTool, PartialIrState } from '../core/irState.ts';
|
|
15
|
+
|
|
16
|
+
/** Everything the viewer can be asked to do. */
|
|
17
|
+
export interface IrEditorActions {
|
|
18
|
+
/** Draw these as well as what is already open. */
|
|
19
|
+
addSpectra: (spectra: IrSpectrum[]) => void;
|
|
20
|
+
/** Draw these instead of what is open, and refit the window to them. */
|
|
21
|
+
setSpectra: (spectra: IrSpectrum[]) => void;
|
|
22
|
+
/** Close one. */
|
|
23
|
+
removeSpectrum: (id: string) => void;
|
|
24
|
+
/** Call one something else. */
|
|
25
|
+
renameSpectrum: (id: string, name: string) => void;
|
|
26
|
+
/** Draw one in another colour. */
|
|
27
|
+
setSpectrumColor: (id: string, color: string) => void;
|
|
28
|
+
/** Draw one, or stop drawing it. */
|
|
29
|
+
setSpectrumVisible: (id: string, visible: boolean) => void;
|
|
30
|
+
/** Point the panels at one, or at none. */
|
|
31
|
+
selectSpectrum: (id: string | null) => void;
|
|
32
|
+
/** Show this window. */
|
|
33
|
+
setDomain: (domain: IrDomain) => void;
|
|
34
|
+
/** Show what fits again. */
|
|
35
|
+
resetDomain: () => void;
|
|
36
|
+
/** Run this tool on the next drag. */
|
|
37
|
+
setTool: (tool: IrTool) => void;
|
|
38
|
+
/** Open or close a side panel. */
|
|
39
|
+
togglePanel: (panelId: IrSidePanelId) => void;
|
|
40
|
+
/** Say why something was refused, or that nothing is wrong any more. */
|
|
41
|
+
setError: (error: string | null) => void;
|
|
42
|
+
/** Change how the spectra are drawn and read. */
|
|
43
|
+
setSettings: (settings: Partial<IrSettings>) => void;
|
|
44
|
+
/** Take a whole state, as a host restoring one supplies it. */
|
|
45
|
+
loadState: (state: PartialIrState) => void;
|
|
46
|
+
/** Close every spectrum and start again from an empty chart. */
|
|
47
|
+
clear: () => void;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Bind every action to a dispatch.
|
|
52
|
+
* @param dispatch - The reducer's dispatch.
|
|
53
|
+
* @returns The actions, stable for as long as the dispatch is.
|
|
54
|
+
*/
|
|
55
|
+
export function createIrActions(dispatch: Dispatch<IrAction>): IrEditorActions {
|
|
56
|
+
return {
|
|
57
|
+
addSpectra(spectra) {
|
|
58
|
+
dispatch({ type: 'addSpectra', spectra });
|
|
59
|
+
},
|
|
60
|
+
setSpectra(spectra) {
|
|
61
|
+
dispatch({ type: 'setSpectra', spectra });
|
|
62
|
+
},
|
|
63
|
+
removeSpectrum(id) {
|
|
64
|
+
dispatch({ type: 'removeSpectrum', id });
|
|
65
|
+
},
|
|
66
|
+
renameSpectrum(id, name) {
|
|
67
|
+
dispatch({ type: 'renameSpectrum', id, name });
|
|
68
|
+
},
|
|
69
|
+
setSpectrumColor(id, color) {
|
|
70
|
+
dispatch({ type: 'setSpectrumColor', id, color });
|
|
71
|
+
},
|
|
72
|
+
setSpectrumVisible(id, visible) {
|
|
73
|
+
dispatch({ type: 'setSpectrumVisible', id, visible });
|
|
74
|
+
},
|
|
75
|
+
selectSpectrum(id) {
|
|
76
|
+
dispatch({ type: 'selectSpectrum', id });
|
|
77
|
+
},
|
|
78
|
+
setDomain(domain) {
|
|
79
|
+
dispatch({ type: 'setDomain', domain });
|
|
80
|
+
},
|
|
81
|
+
resetDomain() {
|
|
82
|
+
dispatch({ type: 'resetDomain' });
|
|
83
|
+
},
|
|
84
|
+
setTool(tool) {
|
|
85
|
+
dispatch({ type: 'setTool', tool });
|
|
86
|
+
},
|
|
87
|
+
togglePanel(panelId) {
|
|
88
|
+
dispatch({ type: 'togglePanel', panelId });
|
|
89
|
+
},
|
|
90
|
+
setError(error) {
|
|
91
|
+
dispatch({ type: 'setError', error });
|
|
92
|
+
},
|
|
93
|
+
setSettings(settings) {
|
|
94
|
+
dispatch({ type: 'setSettings', settings });
|
|
95
|
+
},
|
|
96
|
+
loadState(state) {
|
|
97
|
+
dispatch({ type: 'loadState', state });
|
|
98
|
+
},
|
|
99
|
+
clear() {
|
|
100
|
+
dispatch({ type: 'clear' });
|
|
101
|
+
},
|
|
102
|
+
};
|
|
103
|
+
}
|