react-cheminfo 0.28.0 → 0.29.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 +38 -25
- 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/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/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/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/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/ui.d.ts +1 -0
- package/lib/ui.d.ts.map +1 -1
- package/lib/ui.js +1 -0
- package/lib/ui.js.map +1 -1
- package/package.json +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/clipboard/core/copyPng.ts +20 -0
- package/src/clipboard/core/index.ts +1 -0
- 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/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/ui.ts +1 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Button, HTMLSelect } from '@blueprintjs/core';
|
|
3
|
+
import { useState } from 'react';
|
|
4
|
+
import { exportButtonsStyle, exportNoteStyle, exportSectionStyle, } from "../core/exportStyles.js";
|
|
5
|
+
import { IMAGE_RESOLUTIONS, formatImageSize, imageResolution, } from "../core/imageResolution.js";
|
|
6
|
+
import { copyPicture, pictureSize, savePngPicture, saveSvgPicture, } from "../core/pictureExport.js";
|
|
7
|
+
import { sanitizeFileName } from "../core/sanitizeFileName.js";
|
|
8
|
+
import { ExportNameField } from "./ExportNameField.js";
|
|
9
|
+
/**
|
|
10
|
+
* The drawing as a picture: how big it comes out, and where it goes.
|
|
11
|
+
*
|
|
12
|
+
* The size the file will be is shown beside the resolution rather than after
|
|
13
|
+
* the fact, since that is the number the choice is made on — a figure for a
|
|
14
|
+
* paper and a thumbnail for a slide are the same drawing at very different
|
|
15
|
+
* sizes. What is measured is what the picture will be of and not whatever is on
|
|
16
|
+
* screen, so the answer does not change when the window is resized or the
|
|
17
|
+
* drawing panned.
|
|
18
|
+
* @param props - Component props.
|
|
19
|
+
* @returns The section.
|
|
20
|
+
*/
|
|
21
|
+
export function ExportPictureSection(props) {
|
|
22
|
+
const { getDrawing, resolutionId, onResolutionChange, filename, label, frame, onStatus, } = props;
|
|
23
|
+
const [name, setName] = useState(filename);
|
|
24
|
+
const savedName = sanitizeFileName(name, filename);
|
|
25
|
+
const { scale } = imageResolution(resolutionId);
|
|
26
|
+
const size = pictureSize(getDrawing(), scale, { frame });
|
|
27
|
+
const options = { scale, filename: savedName, label, frame };
|
|
28
|
+
return (_jsxs("section", { style: exportSectionStyle, children: [_jsxs("div", { style: resolutionStyle, children: [_jsx(HTMLSelect, { value: resolutionId, "aria-label": "Resolution", onChange: (event) => onResolutionChange(event.currentTarget.value), children: IMAGE_RESOLUTIONS.map((resolution) => (_jsx("option", { value: resolution.id, children: resolution.label }, resolution.id))) }), _jsx("span", { style: exportNoteStyle, children: formatImageSize(size) })] }), _jsxs("div", { style: exportButtonsStyle, children: [_jsx(Button, { icon: "duplicate", disabled: size === null, text: "Copy PNG", onClick: () => {
|
|
29
|
+
// The rasterization is started here rather than awaited: Safari
|
|
30
|
+
// only allows a clipboard write the click itself started.
|
|
31
|
+
void copyPicture(getDrawing(), options).then((copied) => onStatus(copied ? 'Picture copied.' : 'Nothing was copied.'), () => onStatus('Nothing was copied.'));
|
|
32
|
+
} }), _jsx(ExportNameField, { name: name, onChange: setName }), _jsx(Button, { icon: "download", disabled: size === null, text: "Save PNG", title: `Save as ${savedName}.png`, onClick: () => {
|
|
33
|
+
void savePngPicture(getDrawing(), options).then((saved) => {
|
|
34
|
+
if (saved)
|
|
35
|
+
onStatus(`Saved as ${savedName}.png.`);
|
|
36
|
+
});
|
|
37
|
+
} }), _jsx(Button, { icon: "download", disabled: size === null, text: "Save SVG", title: `Save as ${savedName}.svg`, onClick: () => {
|
|
38
|
+
if (saveSvgPicture(getDrawing(), options)) {
|
|
39
|
+
onStatus(`Saved as ${savedName}.svg.`);
|
|
40
|
+
}
|
|
41
|
+
} })] })] }));
|
|
42
|
+
}
|
|
43
|
+
const resolutionStyle = {
|
|
44
|
+
display: 'flex',
|
|
45
|
+
alignItems: 'center',
|
|
46
|
+
gap: 8,
|
|
47
|
+
};
|
|
48
|
+
//# sourceMappingURL=ExportPictureSection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExportPictureSection.js","sourceRoot":"","sources":["../../../src/download/ui/ExportPictureSection.tsx"],"names":[],"mappings":"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"}
|
|
@@ -10,4 +10,14 @@ export type { FigureDownloadProps } from './FigureDownload.tsx';
|
|
|
10
10
|
export { FigureDownload } from './FigureDownload.tsx';
|
|
11
11
|
export type { FigureDownloadPanelProps } from './FigureDownloadPanel.tsx';
|
|
12
12
|
export { FigureDownloadPanel } from './FigureDownloadPanel.tsx';
|
|
13
|
+
export type { ExportDialogFrameProps } from './ExportDialogFrame.tsx';
|
|
14
|
+
export { ExportDialogFrame } from './ExportDialogFrame.tsx';
|
|
15
|
+
export type { ExportImageDialogProps } from './ExportImageDialog.tsx';
|
|
16
|
+
export { ExportImageDialog } from './ExportImageDialog.tsx';
|
|
17
|
+
export type { ExportNameFieldProps } from './ExportNameField.tsx';
|
|
18
|
+
export { ExportNameField } from './ExportNameField.tsx';
|
|
19
|
+
export type { ExportPictureSectionProps } from './ExportPictureSection.tsx';
|
|
20
|
+
export { ExportPictureSection } from './ExportPictureSection.tsx';
|
|
21
|
+
export type { DrawingBox } from './useDrawingBox.ts';
|
|
22
|
+
export { useDrawingBox } from './useDrawingBox.ts';
|
|
13
23
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/download/ui/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/download/ui/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE,YAAY,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,YAAY,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,YAAY,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,YAAY,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
|
package/lib/download/ui/index.js
CHANGED
|
@@ -8,4 +8,9 @@
|
|
|
8
8
|
*/
|
|
9
9
|
export { FigureDownload } from "./FigureDownload.js";
|
|
10
10
|
export { FigureDownloadPanel } from "./FigureDownloadPanel.js";
|
|
11
|
+
export { ExportDialogFrame } from "./ExportDialogFrame.js";
|
|
12
|
+
export { ExportImageDialog } from "./ExportImageDialog.js";
|
|
13
|
+
export { ExportNameField } from "./ExportNameField.js";
|
|
14
|
+
export { ExportPictureSection } from "./ExportPictureSection.js";
|
|
15
|
+
export { useDrawingBox } from "./useDrawingBox.js";
|
|
11
16
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/download/ui/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAsB,CAAC;AAEtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA2B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/download/ui/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAsB,CAAC;AAEtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA2B,CAAC;AAGhE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAyB,CAAC;AAE5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAyB,CAAC;AAE5D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAuB,CAAC;AAExD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA4B,CAAC;AAElE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/** The box a picture is taken out of. */
|
|
2
|
+
export interface DrawingBox {
|
|
3
|
+
/** Put on the box the drawing sits in, so it can be found again. */
|
|
4
|
+
attach: (element: HTMLElement | null) => void;
|
|
5
|
+
/**
|
|
6
|
+
* The drawing a picture is taken of, `null` when the box holds none — which
|
|
7
|
+
* is what an editor showing nothing yet, or one whose box has not been
|
|
8
|
+
* mounted, hands the export dialog.
|
|
9
|
+
*/
|
|
10
|
+
getDrawing: () => SVGSVGElement | null;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Find the drawing a picture is to be taken of, when it is asked for.
|
|
14
|
+
*
|
|
15
|
+
* A drawing is laid out again on every resize, so the element itself is never
|
|
16
|
+
* held onto: what is kept is the box it sits in, and the drawing is read out of
|
|
17
|
+
* it at the moment a button is pressed. What counts as the drawing in there —
|
|
18
|
+
* the one element for an editor showing one, the panes composed for an editor
|
|
19
|
+
* showing a stack of charts — is `drawingIn`.
|
|
20
|
+
* @returns The box to attach, and the drawing inside it.
|
|
21
|
+
*/
|
|
22
|
+
export declare function useDrawingBox(): DrawingBox;
|
|
23
|
+
//# sourceMappingURL=useDrawingBox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDrawingBox.d.ts","sourceRoot":"","sources":["../../../src/download/ui/useDrawingBox.ts"],"names":[],"mappings":"AAIA,yCAAyC;AACzC,MAAM,WAAW,UAAU;IACzB,oEAAoE;IACpE,MAAM,EAAE,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;IAC9C;;;;OAIG;IACH,UAAU,EAAE,MAAM,aAAa,GAAG,IAAI,CAAC;CACxC;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,IAAI,UAAU,CAU1C"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { useCallback, useRef } from 'react';
|
|
2
|
+
import { drawingIn } from "../core/stackedDrawing.js";
|
|
3
|
+
/**
|
|
4
|
+
* Find the drawing a picture is to be taken of, when it is asked for.
|
|
5
|
+
*
|
|
6
|
+
* A drawing is laid out again on every resize, so the element itself is never
|
|
7
|
+
* held onto: what is kept is the box it sits in, and the drawing is read out of
|
|
8
|
+
* it at the moment a button is pressed. What counts as the drawing in there —
|
|
9
|
+
* the one element for an editor showing one, the panes composed for an editor
|
|
10
|
+
* showing a stack of charts — is `drawingIn`.
|
|
11
|
+
* @returns The box to attach, and the drawing inside it.
|
|
12
|
+
*/
|
|
13
|
+
export function useDrawingBox() {
|
|
14
|
+
const box = useRef(null);
|
|
15
|
+
const attach = useCallback((element) => {
|
|
16
|
+
box.current = element;
|
|
17
|
+
}, []);
|
|
18
|
+
const getDrawing = useCallback(() => drawingIn(box.current), []);
|
|
19
|
+
return { attach, getDrawing };
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=useDrawingBox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDrawingBox.js","sourceRoot":"","sources":["../../../src/download/ui/useDrawingBox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AActD;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,GAAG,GAAG,MAAM,CAAqB,IAAI,CAAC,CAAC;IAE7C,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,OAA2B,EAAE,EAAE;QACzD,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;IACxB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IAEjE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AAChC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Name the source of a failed read.
|
|
3
|
+
*
|
|
4
|
+
* A reader is met by a user exactly once — when it fails — so what it says
|
|
5
|
+
* then is the whole of its interface, and saying it in one voice across a site
|
|
6
|
+
* matters more than in most code.
|
|
7
|
+
*
|
|
8
|
+
* A message that opens with the file's own name tells whoever dropped eleven
|
|
9
|
+
* files which of them is the problem; one that opens with `The pasted text`
|
|
10
|
+
* tells them the message is about the box they just typed into.
|
|
11
|
+
* @param fileName - The file's name, absent for a paste.
|
|
12
|
+
* @returns A subject a sentence can start with.
|
|
13
|
+
* @example
|
|
14
|
+
* `${describeSource(fileName)} holds no readable peak list.`
|
|
15
|
+
*/
|
|
16
|
+
export declare function describeSource(fileName?: string): string;
|
|
17
|
+
//# sourceMappingURL=describeSource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"describeSource.d.ts","sourceRoot":"","sources":["../../../src/error/core/describeSource.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAExD"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Name the source of a failed read.
|
|
3
|
+
*
|
|
4
|
+
* A reader is met by a user exactly once — when it fails — so what it says
|
|
5
|
+
* then is the whole of its interface, and saying it in one voice across a site
|
|
6
|
+
* matters more than in most code.
|
|
7
|
+
*
|
|
8
|
+
* A message that opens with the file's own name tells whoever dropped eleven
|
|
9
|
+
* files which of them is the problem; one that opens with `The pasted text`
|
|
10
|
+
* tells them the message is about the box they just typed into.
|
|
11
|
+
* @param fileName - The file's name, absent for a paste.
|
|
12
|
+
* @returns A subject a sentence can start with.
|
|
13
|
+
* @example
|
|
14
|
+
* `${describeSource(fileName)} holds no readable peak list.`
|
|
15
|
+
*/
|
|
16
|
+
export function describeSource(fileName) {
|
|
17
|
+
return fileName === undefined ? 'The pasted text' : fileName;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=describeSource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"describeSource.js","sourceRoot":"","sources":["../../../src/error/core/describeSource.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,cAAc,CAAC,QAAiB;IAC9C,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC/D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/error/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/error/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC"}
|
package/lib/error/core/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/error/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/error/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -15,6 +15,14 @@ export interface HelpExample {
|
|
|
15
15
|
*/
|
|
16
16
|
note?: string;
|
|
17
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* Help written as prose: one paragraph, or several.
|
|
20
|
+
*
|
|
21
|
+
* Several because an explanation worth reading is rarely one thought, and a
|
|
22
|
+
* dozen sentences run together into one block is a wall nobody reads to the
|
|
23
|
+
* end — which is the same as not having written it.
|
|
24
|
+
*/
|
|
25
|
+
export type HelpText = string | readonly string[];
|
|
18
26
|
/** Everything a piece of help says, wherever it is shown. */
|
|
19
27
|
export interface HelpContent {
|
|
20
28
|
/**
|
|
@@ -23,7 +31,8 @@ export interface HelpContent {
|
|
|
23
31
|
*/
|
|
24
32
|
title?: string;
|
|
25
33
|
/**
|
|
26
|
-
* The explanation: one or two sentences,
|
|
34
|
+
* The explanation: one or two sentences, any content of the site's own, or
|
|
35
|
+
* an array of strings, which is set as one paragraph each.
|
|
27
36
|
* @default undefined
|
|
28
37
|
*/
|
|
29
38
|
body?: ReactNode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HelpBody.d.ts","sourceRoot":"","sources":["../../../src/help/ui/HelpBody.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKpE,+EAA+E;AAC/E,MAAM,WAAW,WAAW;IAC1B,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,6DAA6D;AAC7D,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf
|
|
1
|
+
{"version":3,"file":"HelpBody.d.ts","sourceRoot":"","sources":["../../../src/help/ui/HelpBody.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKpE,+EAA+E;AAC/E,MAAM,WAAW,WAAW;IAC1B,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;GAMG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC;AAElD,6DAA6D;AAC7D,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;;OAIG;IACH,OAAO,CAAC,EAAE,WAAW,GAAG,SAAS,WAAW,EAAE,CAAC;IAC/C;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,mCAAmC;AACnC,MAAM,WAAW,aAAa;IAC5B,0BAA0B;IAC1B,OAAO,EAAE,WAAW,CAAC;IACrB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,YAAY,CAuC3D"}
|
package/lib/help/ui/HelpBody.js
CHANGED
|
@@ -14,7 +14,28 @@ export function HelpBody(props) {
|
|
|
14
14
|
const { className, content, width = DEFAULT_WIDTH } = props;
|
|
15
15
|
const t = useChromeT();
|
|
16
16
|
const { title, body, example, link } = content;
|
|
17
|
-
return (_jsxs("div", { className: joinClassNames('help-body', className), style: { ...BODY_STYLE, maxWidth: width }, children: [title === undefined ? null : _jsx("div", { style: TITLE_STYLE, children: title }), body === undefined ? null : _jsx("div", { style: TEXT_STYLE, children: body }), examplesOf(example).map((item) => (_jsxs("div", { style: EXAMPLE_STYLE, children: [_jsx("code", { style: CODE_STYLE, children: item.code }), item.input === undefined ? null : (_jsxs("div", { style: INPUT_STYLE, children: [t('help.on'), " ", _jsx("code", { style: CODE_STYLE, children: item.input })] })), item.note === undefined ? null : (_jsx("div", { style: NOTE_STYLE, children: item.note }))] }, exampleKey(item)))), link === undefined ? null : (_jsx("a", { href: link, target: "_blank", rel: "noopener noreferrer", style: LINK_STYLE, children: t('help.learnMore') }))] }));
|
|
17
|
+
return (_jsxs("div", { className: joinClassNames('help-body', className), style: { ...BODY_STYLE, maxWidth: width }, children: [title === undefined ? null : _jsx("div", { style: TITLE_STYLE, children: title }), body === undefined ? null : (_jsx("div", { style: TEXT_STYLE, children: paragraphsOf(body) })), examplesOf(example).map((item) => (_jsxs("div", { style: EXAMPLE_STYLE, children: [_jsx("code", { style: CODE_STYLE, children: item.code }), item.input === undefined ? null : (_jsxs("div", { style: INPUT_STYLE, children: [t('help.on'), " ", _jsx("code", { style: CODE_STYLE, children: item.input })] })), item.note === undefined ? null : (_jsx("div", { style: NOTE_STYLE, children: item.note }))] }, exampleKey(item)))), link === undefined ? null : (_jsx("a", { href: link, target: "_blank", rel: "noopener noreferrer", style: LINK_STYLE, children: t('help.learnMore') }))] }));
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* The body, with an array of strings set as paragraphs rather than run
|
|
21
|
+
* together.
|
|
22
|
+
*
|
|
23
|
+
* React renders `['one', 'two']` as `onetwo`, which is never what a caller who
|
|
24
|
+
* wrote two sentences meant. Anything else is handed back untouched: a body
|
|
25
|
+
* built of elements is the site's own and is laid out by whoever wrote it.
|
|
26
|
+
* @param body - The body, as the caller wrote it.
|
|
27
|
+
* @returns What to render.
|
|
28
|
+
*/
|
|
29
|
+
function paragraphsOf(body) {
|
|
30
|
+
if (!Array.isArray(body))
|
|
31
|
+
return body;
|
|
32
|
+
const paragraphs = [];
|
|
33
|
+
for (const piece of body) {
|
|
34
|
+
if (typeof piece !== 'string')
|
|
35
|
+
return body;
|
|
36
|
+
paragraphs.push(piece);
|
|
37
|
+
}
|
|
38
|
+
return paragraphs.map((paragraph) => (_jsx("p", { style: PARAGRAPH_STYLE, children: paragraph }, paragraph)));
|
|
18
39
|
}
|
|
19
40
|
// Two examples are only the same when all three of their parts are, and a help
|
|
20
41
|
// that repeats one example has nothing to gain from drawing it twice.
|
|
@@ -37,6 +58,8 @@ function examplesOf(example) {
|
|
|
37
58
|
}
|
|
38
59
|
return unique;
|
|
39
60
|
}
|
|
61
|
+
/** The gap between paragraphs is the column's, so the margin is nobody's. */
|
|
62
|
+
const PARAGRAPH_STYLE = { margin: 0 };
|
|
40
63
|
/** How wide a piece of help is drawn when the caller does not say. */
|
|
41
64
|
const DEFAULT_WIDTH = 280;
|
|
42
65
|
const BODY_STYLE = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HelpBody.js","sourceRoot":"","sources":["../../../src/help/ui/HelpBody.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"HelpBody.js","sourceRoot":"","sources":["../../../src/help/ui/HelpBody.tsx"],"names":[],"mappings":"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"}
|
package/lib/help/ui/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type { HelpBodyProps, HelpContent, HelpExample } from './HelpBody.tsx';
|
|
1
|
+
export type { HelpBodyProps, HelpContent, HelpExample, HelpText, } from './HelpBody.tsx';
|
|
2
2
|
export { HelpBody } from './HelpBody.tsx';
|
|
3
3
|
export type { HelpIconProps } from './HelpIcon.tsx';
|
|
4
4
|
export { HelpIcon } from './HelpIcon.tsx';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/help/ui/index.ts"],"names":[],"mappings":"AAAA,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/help/ui/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,aAAa,EACb,WAAW,EACX,WAAW,EACX,QAAQ,GACT,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,YAAY,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
|
package/lib/help/ui/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/help/ui/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/help/ui/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAgB,CAAC;AAE1C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAgB,CAAC;AAE1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAyB,CAAC;AAE5D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAmB,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The step every reader shares: an `ir-spectrum` `Analysis` becomes spectra.
|
|
3
|
+
*
|
|
4
|
+
* All three readers hand back the same `Analysis`, and `ir-spectrum` has already
|
|
5
|
+
* done the part that needs to know what the file's y axis meant — it puts an `a`
|
|
6
|
+
* and a `t` variable on every spectrum whichever of the two was written. So what
|
|
7
|
+
* is left here is bookkeeping: order the points, type the arrays, read the
|
|
8
|
+
* records, and say which axis the file itself carried.
|
|
9
|
+
*/
|
|
10
|
+
import type { Analysis } from 'ir-spectrum';
|
|
11
|
+
import type { IrMeta, IrOrigin } from './irSpectrum.ts';
|
|
12
|
+
/** One spectrum as a reader produced it, before it is named and coloured. */
|
|
13
|
+
export interface LoadedIrSpectrum {
|
|
14
|
+
/** The wavenumbers, ascending. */
|
|
15
|
+
wavenumber: Float64Array;
|
|
16
|
+
/** Absorbance at each. */
|
|
17
|
+
absorbance: Float64Array;
|
|
18
|
+
/** Percent transmittance at each. */
|
|
19
|
+
transmittance: Float64Array;
|
|
20
|
+
/** What the file said about the acquisition, `null` when it said nothing. */
|
|
21
|
+
meta: IrMeta | null;
|
|
22
|
+
/** Where it came from. */
|
|
23
|
+
origin: IrOrigin;
|
|
24
|
+
/**
|
|
25
|
+
* What the file called it, absent when it carried no title.
|
|
26
|
+
* @default undefined
|
|
27
|
+
*/
|
|
28
|
+
name?: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Turn every spectrum an analysis holds into one loaded spectrum.
|
|
32
|
+
*
|
|
33
|
+
* All of them, never the first: a JCAMP is a container, and an instrument
|
|
34
|
+
* exporting a background beside a sample writes both as blocks of one file.
|
|
35
|
+
* Taking only the first would quietly drop what the chemist exported the file
|
|
36
|
+
* for, and would do it without an error.
|
|
37
|
+
*
|
|
38
|
+
* A block carrying fewer than two points is skipped rather than kept as a
|
|
39
|
+
* degenerate trace — a JCAMP link block, or a header block an instrument wrote
|
|
40
|
+
* with no data under it, is not a spectrum.
|
|
41
|
+
* @param analysis - What the reader built.
|
|
42
|
+
* @param origin - Where it came from: the format and the file.
|
|
43
|
+
* @returns One entry per readable block, in the order the file wrote them.
|
|
44
|
+
*/
|
|
45
|
+
export declare function analysisSpectra(analysis: Analysis, origin: IrOrigin): LoadedIrSpectrum[];
|
|
46
|
+
//# sourceMappingURL=analysisSpectra.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analysisSpectra.d.ts","sourceRoot":"","sources":["../../../src/ir/core/analysisSpectra.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG5C,OAAO,KAAK,EAAE,MAAM,EAAU,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhE,6EAA6E;AAC7E,MAAM,WAAW,gBAAgB;IAC/B,kCAAkC;IAClC,UAAU,EAAE,YAAY,CAAC;IACzB,0BAA0B;IAC1B,UAAU,EAAE,YAAY,CAAC;IACzB,qCAAqC;IACrC,aAAa,EAAE,YAAY,CAAC;IAC5B,6EAA6E;IAC7E,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,0BAA0B;IAC1B,MAAM,EAAE,QAAQ,CAAC;IACjB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,QAAQ,GACf,gBAAgB,EAAE,CA2CpB"}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The step every reader shares: an `ir-spectrum` `Analysis` becomes spectra.
|
|
3
|
+
*
|
|
4
|
+
* All three readers hand back the same `Analysis`, and `ir-spectrum` has already
|
|
5
|
+
* done the part that needs to know what the file's y axis meant — it puts an `a`
|
|
6
|
+
* and a `t` variable on every spectrum whichever of the two was written. So what
|
|
7
|
+
* is left here is bookkeeping: order the points, type the arrays, read the
|
|
8
|
+
* records, and say which axis the file itself carried.
|
|
9
|
+
*/
|
|
10
|
+
import { xySortX } from 'ml-spectra-processing';
|
|
11
|
+
/**
|
|
12
|
+
* Turn every spectrum an analysis holds into one loaded spectrum.
|
|
13
|
+
*
|
|
14
|
+
* All of them, never the first: a JCAMP is a container, and an instrument
|
|
15
|
+
* exporting a background beside a sample writes both as blocks of one file.
|
|
16
|
+
* Taking only the first would quietly drop what the chemist exported the file
|
|
17
|
+
* for, and would do it without an error.
|
|
18
|
+
*
|
|
19
|
+
* A block carrying fewer than two points is skipped rather than kept as a
|
|
20
|
+
* degenerate trace — a JCAMP link block, or a header block an instrument wrote
|
|
21
|
+
* with no data under it, is not a spectrum.
|
|
22
|
+
* @param analysis - What the reader built.
|
|
23
|
+
* @param origin - Where it came from: the format and the file.
|
|
24
|
+
* @returns One entry per readable block, in the order the file wrote them.
|
|
25
|
+
*/
|
|
26
|
+
export function analysisSpectra(analysis, origin) {
|
|
27
|
+
const blocks = analysis.spectra;
|
|
28
|
+
const spectra = [];
|
|
29
|
+
for (let index = 0; index < blocks.length; index++) {
|
|
30
|
+
const block = blocks[index];
|
|
31
|
+
if (block === undefined)
|
|
32
|
+
continue;
|
|
33
|
+
if (!isInfrared(block))
|
|
34
|
+
continue;
|
|
35
|
+
const wavenumbers = block.variables.x?.data;
|
|
36
|
+
const absorbances = block.variables.a?.data;
|
|
37
|
+
const transmittances = block.variables.t?.data;
|
|
38
|
+
if (wavenumbers === undefined ||
|
|
39
|
+
absorbances === undefined ||
|
|
40
|
+
transmittances === undefined ||
|
|
41
|
+
wavenumbers.length < 2) {
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
const blockOrigin = { ...origin };
|
|
45
|
+
// A file holding one spectrum has no index worth showing; calling it block 0
|
|
46
|
+
// in the list would suggest there is a block 1 somewhere.
|
|
47
|
+
if (blocks.length > 1)
|
|
48
|
+
blockOrigin.blockIndex = index;
|
|
49
|
+
const recorded = recordedMode(block);
|
|
50
|
+
if (recorded !== undefined)
|
|
51
|
+
blockOrigin.recorded = recorded;
|
|
52
|
+
const spectrum = {
|
|
53
|
+
// Sorted once, on the axis both value arrays are indexed by, and the same
|
|
54
|
+
// permutation applied to each — sorting them independently would pair an
|
|
55
|
+
// absorbance with another wavenumber's transmittance.
|
|
56
|
+
...sortedByWavenumber(wavenumbers, absorbances, transmittances),
|
|
57
|
+
meta: blockMeta(block),
|
|
58
|
+
origin: blockOrigin,
|
|
59
|
+
};
|
|
60
|
+
const title = blockTitle(block);
|
|
61
|
+
// An absent name is an absent key, never a key holding `undefined`: the two
|
|
62
|
+
// read the same in a debugger and differently in every structural comparison.
|
|
63
|
+
if (title)
|
|
64
|
+
spectrum.name = title;
|
|
65
|
+
spectra.push(spectrum);
|
|
66
|
+
}
|
|
67
|
+
return spectra;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Put the points in ascending wavenumber, carrying both value axes along.
|
|
71
|
+
*
|
|
72
|
+
* `xySortX` is asked twice with the same x, which sorts it twice — but it is the
|
|
73
|
+
* one sort in the ecosystem that both orders and types an `xy` pair, and an
|
|
74
|
+
* infrared spectrum is a few thousand points. Writing a bespoke permutation to
|
|
75
|
+
* save one pass over four thousand numbers would be a second sort to keep
|
|
76
|
+
* correct for no measurable gain.
|
|
77
|
+
* @param wavenumbers - The wavenumbers, in whatever order the file wrote them.
|
|
78
|
+
* @param absorbances - Absorbance at each.
|
|
79
|
+
* @param transmittances - Percent transmittance at each.
|
|
80
|
+
* @returns The three arrays, ascending and typed.
|
|
81
|
+
*/
|
|
82
|
+
function sortedByWavenumber(wavenumbers, absorbances, transmittances) {
|
|
83
|
+
const byAbsorbance = xySortX({ x: wavenumbers, y: absorbances });
|
|
84
|
+
const byTransmittance = xySortX({ x: wavenumbers, y: transmittances });
|
|
85
|
+
return {
|
|
86
|
+
wavenumber: Float64Array.from(byAbsorbance.x),
|
|
87
|
+
absorbance: Float64Array.from(byAbsorbance.y),
|
|
88
|
+
transmittance: Float64Array.from(byTransmittance.y),
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* What the block calls itself, with the file's own commentary taken off.
|
|
93
|
+
*
|
|
94
|
+
* `$$` opens a comment that runs to the end of the line in JCAMP, and a real
|
|
95
|
+
* `##TITLE` often carries one: the JSpecView collection is full of
|
|
96
|
+
* `urea $$ Begin of the data block`. Left in, the comment becomes the name of
|
|
97
|
+
* the spectrum in the list and the heading of its metadata panel.
|
|
98
|
+
* @param block - One spectrum of the analysis.
|
|
99
|
+
* @returns The title, or `undefined` when the block carries none worth showing.
|
|
100
|
+
*/
|
|
101
|
+
function blockTitle(block) {
|
|
102
|
+
const written = block.title?.split('$$', 1)[0]?.trim();
|
|
103
|
+
return written === undefined || written === '' ? undefined : written;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Whether a block is an infrared spectrum rather than something else entirely.
|
|
107
|
+
*
|
|
108
|
+
* A JCAMP `LINK` block is a container, and the real ones in the wild put a Raman
|
|
109
|
+
* spectrum of the same sample in beside the infrared — `DCE.jdx` from the
|
|
110
|
+
* JSpecView collection holds two of each. A Raman shift is not a wavenumber
|
|
111
|
+
* absorbed, so loading one as infrared would draw a spectrum whose axis means
|
|
112
|
+
* something else and offer functional groups for its bands.
|
|
113
|
+
*
|
|
114
|
+
* Read off the block's own data type, and a block that states none is **kept**:
|
|
115
|
+
* plenty of instruments write no `##DATA TYPE` at all, and the file was opened
|
|
116
|
+
* by an infrared reader, so infrared is the right assumption where the file is
|
|
117
|
+
* silent. What is dropped is only a block that says it is something else.
|
|
118
|
+
* @param block - One spectrum of the analysis.
|
|
119
|
+
* @returns Whether to read it as infrared.
|
|
120
|
+
*/
|
|
121
|
+
function isInfrared(block) {
|
|
122
|
+
const dataType = block.dataType?.toUpperCase();
|
|
123
|
+
if (dataType === undefined || dataType === '')
|
|
124
|
+
return true;
|
|
125
|
+
if (dataType.includes('LINK'))
|
|
126
|
+
return true;
|
|
127
|
+
for (const other of NOT_INFRARED) {
|
|
128
|
+
if (dataType.includes(other))
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
return true;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* The data types that are certainly not an infrared spectrum.
|
|
135
|
+
*
|
|
136
|
+
* Named rather than matching `INFRARED` positively, so a file typed
|
|
137
|
+
* `IR SPECTRUM`, `FTIR` or `INFRARED SPECTRUM` — all three occur — is read
|
|
138
|
+
* without the list having to anticipate every spelling.
|
|
139
|
+
*/
|
|
140
|
+
const NOT_INFRARED = [
|
|
141
|
+
'RAMAN',
|
|
142
|
+
'NMR',
|
|
143
|
+
'MASS',
|
|
144
|
+
'UV',
|
|
145
|
+
'VISIBLE',
|
|
146
|
+
'CHROMATOGRAM',
|
|
147
|
+
'XRD',
|
|
148
|
+
'FLUORESCENCE',
|
|
149
|
+
];
|
|
150
|
+
/**
|
|
151
|
+
* Which value axis the file itself carried.
|
|
152
|
+
*
|
|
153
|
+
* Read off the original `y` variable's label rather than off `a` or `t`, which
|
|
154
|
+
* `ir-spectrum` adds to every spectrum and so say nothing about the source. A
|
|
155
|
+
* file whose label names neither is left unanswered rather than guessed at.
|
|
156
|
+
* @param block - One spectrum of the analysis.
|
|
157
|
+
* @returns The mode the file was written in, or `undefined` when it is unclear.
|
|
158
|
+
*/
|
|
159
|
+
function recordedMode(block) {
|
|
160
|
+
const label = `${block.variables.y?.label ?? ''} ${block.variables.y?.units ?? ''}`.toLowerCase();
|
|
161
|
+
if (label.includes('transmit'))
|
|
162
|
+
return 'transmittance';
|
|
163
|
+
if (label.includes('absorb'))
|
|
164
|
+
return 'absorbance';
|
|
165
|
+
return undefined;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* The acquisition table, as the file's own records state it.
|
|
169
|
+
* @param block - One spectrum of the analysis.
|
|
170
|
+
* @returns The table, `null` when the file carried neither a title nor a record.
|
|
171
|
+
*/
|
|
172
|
+
function blockMeta(block) {
|
|
173
|
+
const title = blockTitle(block);
|
|
174
|
+
const fields = [];
|
|
175
|
+
for (const [label, value] of Object.entries(block.meta ?? {})) {
|
|
176
|
+
const written = typeof value === 'string' ? value.trim() : String(value);
|
|
177
|
+
if (written !== '')
|
|
178
|
+
fields.push({ label, value: written });
|
|
179
|
+
}
|
|
180
|
+
if (block.dataType) {
|
|
181
|
+
fields.unshift({ label: 'Technique', value: block.dataType });
|
|
182
|
+
}
|
|
183
|
+
if (fields.length === 0 && !title)
|
|
184
|
+
return null;
|
|
185
|
+
return { title: title ?? null, fields };
|
|
186
|
+
}
|
|
187
|
+
//# sourceMappingURL=analysisSpectra.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analysisSpectra.js","sourceRoot":"","sources":["../../../src/ir/core/analysisSpectra.ts"],"names":[],"mappings":"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"}
|