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,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The rectangle a drag sweeps out, in the pixels it is drawn in.
|
|
3
|
+
*
|
|
4
|
+
* The preview and the release are two readings of one gesture, and they have to
|
|
5
|
+
* agree: a rectangle that promises a window the release then refuses teaches a
|
|
6
|
+
* user that the chart is unreliable, which is a far more expensive mistake than
|
|
7
|
+
* a preview that is a pixel out. So the same two tests decide both — the drag is
|
|
8
|
+
* pulled back inside the plot and measured against `MINIMUM_DRAG` here exactly
|
|
9
|
+
* as `zoomedDomain` does it, and the height comes from the answer
|
|
10
|
+
* `zoomSelection` already worked out rather than from a second one.
|
|
11
|
+
*/
|
|
12
|
+
import { clamp } from "../../format/core/clamp.js";
|
|
13
|
+
import { MINIMUM_DRAG } from "./zoomDomain.js";
|
|
14
|
+
/**
|
|
15
|
+
* The rectangle to draw for a drag being made.
|
|
16
|
+
*
|
|
17
|
+
* A drag that takes the y axis with it is drawn at the height of the drag
|
|
18
|
+
* itself, and one that asks for the x axis alone spans the whole plot.
|
|
19
|
+
* That is the gesture announcing itself before the button is let go: the
|
|
20
|
+
* rectangle changing shape as the pointer crosses the baseline is the only
|
|
21
|
+
* warning a user gets that the release is about to move both axes, and it is one
|
|
22
|
+
* they can still act on.
|
|
23
|
+
*
|
|
24
|
+
* A drag too short to zoom draws nothing at all. Below `MINIMUM_DRAG` the
|
|
25
|
+
* release does nothing — most clicks made on a trackpad wobble by a pixel or two
|
|
26
|
+
* — and a rectangle flashing up on every click would say that something
|
|
27
|
+
* happened.
|
|
28
|
+
* @param selection - The drag being made, `null` when none is.
|
|
29
|
+
* @param plot - Where the plot sits inside the SVG, which the drag is confined
|
|
30
|
+
* to.
|
|
31
|
+
* @returns The rectangle, `null` when there is nothing to draw.
|
|
32
|
+
*/
|
|
33
|
+
export function selectionRectangle(selection, plot) {
|
|
34
|
+
if (selection === null)
|
|
35
|
+
return null;
|
|
36
|
+
const { fromX, toX, fromY, toY, zoomsYAxis } = selection;
|
|
37
|
+
const left = clamp(Math.min(fromX, toX), plot.left, plot.right);
|
|
38
|
+
const right = clamp(Math.max(fromX, toX), plot.left, plot.right);
|
|
39
|
+
const width = right - left;
|
|
40
|
+
if (!(width >= MINIMUM_DRAG))
|
|
41
|
+
return null;
|
|
42
|
+
if (!zoomsYAxis) {
|
|
43
|
+
return { x: left, y: plot.top, width, height: plot.height };
|
|
44
|
+
}
|
|
45
|
+
const top = clamp(Math.min(fromY, toY), plot.top, plot.bottom);
|
|
46
|
+
const bottom = clamp(Math.max(fromY, toY), plot.top, plot.bottom);
|
|
47
|
+
return { x: left, y: top, width, height: bottom - top };
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=selectionGeometry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectionGeometry.js","sourceRoot":"","sources":["../../../src/chart/core/selectionGeometry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAInD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAc/C;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,kBAAkB,CAChC,SAA+B,EAC/B,IAAc;IAEd,IAAI,SAAS,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAEpC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC;IACzD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAChE,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACjE,MAAM,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;IAC3B,IAAI,CAAC,CAAC,KAAK,IAAI,YAAY,CAAC;QAAE,OAAO,IAAI,CAAC;IAE1C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;IAC9D,CAAC;IACD,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAClE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,CAAC;AAC1D,CAAC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The colours spectra are told apart by, in two tiers.
|
|
3
|
+
*
|
|
4
|
+
* A viewer holds a handful of spectra at a time — a measurement, a reference,
|
|
5
|
+
* a predicted distribution — so the palette is short and every hue in it is
|
|
6
|
+
* distinguishable at the width of a one-pixel stick, which is all a centroid
|
|
7
|
+
* ever is. It is deliberately not a generated scale: named colours stay the same
|
|
8
|
+
* from one session to the next, and a chemist who calls the blue one "the blank"
|
|
9
|
+
* is still right tomorrow.
|
|
10
|
+
*
|
|
11
|
+
* A colour is the only thing telling one trace from another once they overlap,
|
|
12
|
+
* so a palette that fails for the one man in twelve with a colour vision
|
|
13
|
+
* deficiency fails at the only job it has. The matplotlib hues this used to hold
|
|
14
|
+
* put a red beside a green — the very pair a deuteranope reads as one colour,
|
|
15
|
+
* and the pair a blank and its sample are most often drawn in.
|
|
16
|
+
*
|
|
17
|
+
* That is why there are two tiers rather than one long list. Okabe and Ito's set
|
|
18
|
+
* is short because it holds only colours that survive **every** deficiency at
|
|
19
|
+
* once, including the rarer ones where two channels are affected; the Color
|
|
20
|
+
* Universal Design accent set that the same work grew into is longer because it
|
|
21
|
+
* asks only that a reader missing **one** channel can tell its members apart.
|
|
22
|
+
* Both are true, and which one is wanted depends on who is reading the chart, so
|
|
23
|
+
* the short set is what a chart hands out by itself and the longer one is what a
|
|
24
|
+
* reader may reach for. Nothing picks a colour out of the second tier on anyone's
|
|
25
|
+
* behalf.
|
|
26
|
+
*
|
|
27
|
+
* Every viewer offers both tiers and none of them keeps a set of its own: two
|
|
28
|
+
* charts on one page have to name a spectrum the same way, and a palette copied
|
|
29
|
+
* into a second package is a palette that drifts from the first.
|
|
30
|
+
*/
|
|
31
|
+
/**
|
|
32
|
+
* The colours a spectrum is drawn in, in the order they are handed out.
|
|
33
|
+
*
|
|
34
|
+
* Okabe and Ito's universal set exactly as {@link CHART_SERIES_COLORS} holds
|
|
35
|
+
* it, less the two a line cannot use: their yellow, which is faint on a white
|
|
36
|
+
* plot at the width of a stick, and the neutral dark, which is already the ink
|
|
37
|
+
* of the axes and the labels. Both are still offered, one tier down.
|
|
38
|
+
*
|
|
39
|
+
* Derived rather than written out, because a palette copied into a second
|
|
40
|
+
* place is a palette that drifts from the first: a scatter plot and a spectrum
|
|
41
|
+
* on the same page have to call the same blue the same blue.
|
|
42
|
+
*
|
|
43
|
+
* Blue and vermillion come first because the commonest use is two spectra
|
|
44
|
+
* compared — the pair that reads most clearly, and the pair a mirror plot
|
|
45
|
+
* expects.
|
|
46
|
+
*/
|
|
47
|
+
export declare const SPECTRUM_COLORS: readonly string[];
|
|
48
|
+
export declare const EXTRA_SPECTRUM_COLORS: readonly string[];
|
|
49
|
+
/**
|
|
50
|
+
* Both tiers in one list, the handed-out six first.
|
|
51
|
+
*
|
|
52
|
+
* What a picker shows. The order is the tiers in order and never sorted by hue:
|
|
53
|
+
* a reader who has learnt that the first chip is the blue their blank is drawn
|
|
54
|
+
* in must find it in the same place in every viewer, and the row a colour sits
|
|
55
|
+
* in is itself the answer to "will this survive whoever reads the figure".
|
|
56
|
+
*/
|
|
57
|
+
export declare const ALL_SPECTRUM_COLORS: readonly string[];
|
|
58
|
+
/**
|
|
59
|
+
* The colour to give the next spectrum, given the ones already in use.
|
|
60
|
+
*
|
|
61
|
+
* The lowest unused hue, never one derived from how many spectra there are:
|
|
62
|
+
* dropping the second of three and loading another would otherwise hand out a
|
|
63
|
+
* colour already on the chart, and two spectra of the same blue is the one
|
|
64
|
+
* mistake a colour is there to prevent.
|
|
65
|
+
*
|
|
66
|
+
* Once every hue is taken it falls to the least-used one, lowest first — the
|
|
67
|
+
* same rule, since an unused hue is a hue used no times. It never reaches into
|
|
68
|
+
* the second tier to avoid a repeat: a colour only that reader's eyes can place
|
|
69
|
+
* is a choice made for them, and a seventh blue they can read beats a brown they
|
|
70
|
+
* cannot.
|
|
71
|
+
*
|
|
72
|
+
* A spectrum a reader has drawn in a second-tier colour counts as holding none
|
|
73
|
+
* of the six, so it neither uses one up nor frees one: a chart of a black trace
|
|
74
|
+
* and a blue one is handed vermillion next, exactly as it would have been had
|
|
75
|
+
* the black one never been recoloured.
|
|
76
|
+
* @param taken - The colours the spectra already hold, in any order.
|
|
77
|
+
* @returns One of `SPECTRUM_COLORS`.
|
|
78
|
+
*/
|
|
79
|
+
export declare function nextSpectrumColor(taken: readonly string[]): string;
|
|
80
|
+
//# sourceMappingURL=spectrumColor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spectrumColor.d.ts","sourceRoot":"","sources":["../../../src/chart/core/spectrumColor.ts"],"names":[],"mappings":"AAiBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EAE5C,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EAOlD,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAGhD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAiBlE"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { CHART_SERIES_COLORS } from "./chartPalette.js";
|
|
2
|
+
/** The universal set's yellow, which a one-pixel stick cannot be drawn in. */
|
|
3
|
+
const CHART_YELLOW = '#f0e442';
|
|
4
|
+
/** Its neutral dark, which is already the ink the axes are drawn in. */
|
|
5
|
+
const CHART_NEUTRAL = '#4d4d4d';
|
|
6
|
+
/**
|
|
7
|
+
* The two of the eight a line has to do without.
|
|
8
|
+
*
|
|
9
|
+
* Above the palette it filters rather than below it with the other helpers:
|
|
10
|
+
* the list is built as the module is evaluated, so anything it reads has to
|
|
11
|
+
* exist by then.
|
|
12
|
+
*/
|
|
13
|
+
const NOT_FOR_A_LINE = new Set([CHART_YELLOW, CHART_NEUTRAL]);
|
|
14
|
+
/**
|
|
15
|
+
* The colours spectra are told apart by, in two tiers.
|
|
16
|
+
*
|
|
17
|
+
* A viewer holds a handful of spectra at a time — a measurement, a reference,
|
|
18
|
+
* a predicted distribution — so the palette is short and every hue in it is
|
|
19
|
+
* distinguishable at the width of a one-pixel stick, which is all a centroid
|
|
20
|
+
* ever is. It is deliberately not a generated scale: named colours stay the same
|
|
21
|
+
* from one session to the next, and a chemist who calls the blue one "the blank"
|
|
22
|
+
* is still right tomorrow.
|
|
23
|
+
*
|
|
24
|
+
* A colour is the only thing telling one trace from another once they overlap,
|
|
25
|
+
* so a palette that fails for the one man in twelve with a colour vision
|
|
26
|
+
* deficiency fails at the only job it has. The matplotlib hues this used to hold
|
|
27
|
+
* put a red beside a green — the very pair a deuteranope reads as one colour,
|
|
28
|
+
* and the pair a blank and its sample are most often drawn in.
|
|
29
|
+
*
|
|
30
|
+
* That is why there are two tiers rather than one long list. Okabe and Ito's set
|
|
31
|
+
* is short because it holds only colours that survive **every** deficiency at
|
|
32
|
+
* once, including the rarer ones where two channels are affected; the Color
|
|
33
|
+
* Universal Design accent set that the same work grew into is longer because it
|
|
34
|
+
* asks only that a reader missing **one** channel can tell its members apart.
|
|
35
|
+
* Both are true, and which one is wanted depends on who is reading the chart, so
|
|
36
|
+
* the short set is what a chart hands out by itself and the longer one is what a
|
|
37
|
+
* reader may reach for. Nothing picks a colour out of the second tier on anyone's
|
|
38
|
+
* behalf.
|
|
39
|
+
*
|
|
40
|
+
* Every viewer offers both tiers and none of them keeps a set of its own: two
|
|
41
|
+
* charts on one page have to name a spectrum the same way, and a palette copied
|
|
42
|
+
* into a second package is a palette that drifts from the first.
|
|
43
|
+
*/
|
|
44
|
+
/**
|
|
45
|
+
* The colours a spectrum is drawn in, in the order they are handed out.
|
|
46
|
+
*
|
|
47
|
+
* Okabe and Ito's universal set exactly as {@link CHART_SERIES_COLORS} holds
|
|
48
|
+
* it, less the two a line cannot use: their yellow, which is faint on a white
|
|
49
|
+
* plot at the width of a stick, and the neutral dark, which is already the ink
|
|
50
|
+
* of the axes and the labels. Both are still offered, one tier down.
|
|
51
|
+
*
|
|
52
|
+
* Derived rather than written out, because a palette copied into a second
|
|
53
|
+
* place is a palette that drifts from the first: a scatter plot and a spectrum
|
|
54
|
+
* on the same page have to call the same blue the same blue.
|
|
55
|
+
*
|
|
56
|
+
* Blue and vermillion come first because the commonest use is two spectra
|
|
57
|
+
* compared — the pair that reads most clearly, and the pair a mirror plot
|
|
58
|
+
* expects.
|
|
59
|
+
*/
|
|
60
|
+
export const SPECTRUM_COLORS = CHART_SERIES_COLORS.filter((color) => !NOT_FOR_A_LINE.has(color));
|
|
61
|
+
export const EXTRA_SPECTRUM_COLORS = [
|
|
62
|
+
'#000000', // black
|
|
63
|
+
CHART_YELLOW,
|
|
64
|
+
'#ff8082', // pink
|
|
65
|
+
'#990099', // purple
|
|
66
|
+
'#804000', // brown
|
|
67
|
+
'#7f878f', // grey
|
|
68
|
+
];
|
|
69
|
+
/**
|
|
70
|
+
* Both tiers in one list, the handed-out six first.
|
|
71
|
+
*
|
|
72
|
+
* What a picker shows. The order is the tiers in order and never sorted by hue:
|
|
73
|
+
* a reader who has learnt that the first chip is the blue their blank is drawn
|
|
74
|
+
* in must find it in the same place in every viewer, and the row a colour sits
|
|
75
|
+
* in is itself the answer to "will this survive whoever reads the figure".
|
|
76
|
+
*/
|
|
77
|
+
export const ALL_SPECTRUM_COLORS = [
|
|
78
|
+
...SPECTRUM_COLORS,
|
|
79
|
+
...EXTRA_SPECTRUM_COLORS,
|
|
80
|
+
];
|
|
81
|
+
/**
|
|
82
|
+
* The colour to give the next spectrum, given the ones already in use.
|
|
83
|
+
*
|
|
84
|
+
* The lowest unused hue, never one derived from how many spectra there are:
|
|
85
|
+
* dropping the second of three and loading another would otherwise hand out a
|
|
86
|
+
* colour already on the chart, and two spectra of the same blue is the one
|
|
87
|
+
* mistake a colour is there to prevent.
|
|
88
|
+
*
|
|
89
|
+
* Once every hue is taken it falls to the least-used one, lowest first — the
|
|
90
|
+
* same rule, since an unused hue is a hue used no times. It never reaches into
|
|
91
|
+
* the second tier to avoid a repeat: a colour only that reader's eyes can place
|
|
92
|
+
* is a choice made for them, and a seventh blue they can read beats a brown they
|
|
93
|
+
* cannot.
|
|
94
|
+
*
|
|
95
|
+
* A spectrum a reader has drawn in a second-tier colour counts as holding none
|
|
96
|
+
* of the six, so it neither uses one up nor frees one: a chart of a black trace
|
|
97
|
+
* and a blue one is handed vermillion next, exactly as it would have been had
|
|
98
|
+
* the black one never been recoloured.
|
|
99
|
+
* @param taken - The colours the spectra already hold, in any order.
|
|
100
|
+
* @returns One of `SPECTRUM_COLORS`.
|
|
101
|
+
*/
|
|
102
|
+
export function nextSpectrumColor(taken) {
|
|
103
|
+
const counts = new Array(SPECTRUM_COLORS.length).fill(0);
|
|
104
|
+
for (const color of taken) {
|
|
105
|
+
const index = SPECTRUM_COLORS.indexOf(color);
|
|
106
|
+
if (index !== -1)
|
|
107
|
+
counts[index] = counts[index] + 1;
|
|
108
|
+
}
|
|
109
|
+
let best = SPECTRUM_COLORS[0];
|
|
110
|
+
let bestCount = counts[0];
|
|
111
|
+
for (let index = 1; index < counts.length && bestCount > 0; index++) {
|
|
112
|
+
const count = counts[index];
|
|
113
|
+
if (count < bestCount) {
|
|
114
|
+
best = SPECTRUM_COLORS[index];
|
|
115
|
+
bestCount = count;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return best;
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=spectrumColor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spectrumColor.js","sourceRoot":"","sources":["../../../src/chart/core/spectrumColor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,8EAA8E;AAC9E,MAAM,YAAY,GAAG,SAAS,CAAC;AAE/B,wEAAwE;AACxE,MAAM,aAAa,GAAG,SAAS,CAAC;AAEhC;;;;;;GAMG;AACH,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,CAAC;AAE9D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,eAAe,GAAsB,mBAAmB,CAAC,MAAM,CAC1E,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CACtC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAsB;IACtD,SAAS,EAAE,QAAQ;IACnB,YAAY;IACZ,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,OAAO;CACnB,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAsB;IACpD,GAAG,eAAe;IAClB,GAAG,qBAAqB;CACzB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAwB;IACxD,MAAM,MAAM,GAAG,IAAI,KAAK,CAAS,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjE,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,KAAK,KAAK,CAAC,CAAC;YAAE,MAAM,CAAC,KAAK,CAAC,GAAI,MAAM,CAAC,KAAK,CAAY,GAAG,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,IAAI,GAAG,eAAe,CAAC,CAAC,CAAW,CAAC;IACxC,IAAI,SAAS,GAAG,MAAM,CAAC,CAAC,CAAW,CAAC;IACpC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;QACpE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAW,CAAC;QACtC,IAAI,KAAK,GAAG,SAAS,EAAE,CAAC;YACtB,IAAI,GAAG,eAAe,CAAC,KAAK,CAAW,CAAC;YACxC,SAAS,GAAG,KAAK,CAAC;QACpB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How many charts a column of a given height can stack, and how tall each stands.
|
|
3
|
+
*
|
|
4
|
+
* A viewer that draws one pane per selected spectrum has to answer a question
|
|
5
|
+
* the stack itself never asks. A reader who ticks a dozen spectra has not asked
|
|
6
|
+
* for twelve panes of fifty pixels, and a stack handed them draws twelve stubs
|
|
7
|
+
* with a full set of axes over each — the failure `ChartStack.tsx`'s header
|
|
8
|
+
* describes, arrived at from above instead of through a splitter. So the number
|
|
9
|
+
* of panes is settled from the height actually available, against the stack's
|
|
10
|
+
* own floors rather than a number somebody hoped for, and whatever a reader
|
|
11
|
+
* selects past that number is overlaid together into the last pane rather than
|
|
12
|
+
* dropped, which is the one outcome a reader cannot see happening.
|
|
13
|
+
*
|
|
14
|
+
* All of it is arithmetic over `chartStackLevel.tsx`'s floors and
|
|
15
|
+
* `chartGeometry.ts`'s margins; nothing here renders, measures or reads a
|
|
16
|
+
* spectrum.
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* The shortest a pane that is *not* at the foot of the stack may stand, in
|
|
20
|
+
* pixels.
|
|
21
|
+
*
|
|
22
|
+
* Ninety, and ninety exactly, because it is not a judgement about how short a
|
|
23
|
+
* chart may be: `chartStackLevel.tsx` hands `SplitPane` a `closeThreshold` of 90
|
|
24
|
+
* at every non-foot split, and a split measuring under that closes its pane
|
|
25
|
+
* outright — before a splitter has ever been touched, so a stack built on a
|
|
26
|
+
* floor of 80 would come up with panes already shut and no gesture that made
|
|
27
|
+
* them so. The threshold is applied as `>=`, which is why standing exactly on it
|
|
28
|
+
* is allowed. That constant is module-private over there, so its value is
|
|
29
|
+
* restated here and the two have to move together.
|
|
30
|
+
*
|
|
31
|
+
* A caller must state this as each pane's own `minimumHeight`. Left unsaid,
|
|
32
|
+
* `paneHeight` clamps the pane up to the 120 pixels it defaults to, and five
|
|
33
|
+
* panes would then demand 688 pixels where 538 draws them.
|
|
34
|
+
*/
|
|
35
|
+
export declare const STACKED_MINIMUM = 90;
|
|
36
|
+
/**
|
|
37
|
+
* What the pane at the foot pays for its axis beyond what every pane pays, in
|
|
38
|
+
* pixels.
|
|
39
|
+
*
|
|
40
|
+
* Only the foot of a stack writes the tick row and the axis title under its
|
|
41
|
+
* plot, and that is `MARGIN.bottom` less the `SHARED_AXIS_MARGIN` a pane keeps
|
|
42
|
+
* even when it writes no axis — 26 of them, not 34. The *difference* is what
|
|
43
|
+
* matters and the whole bottom margin is not it: a stacked pane still leaves a
|
|
44
|
+
* little room under its trace, and charging the foot for all 34 draws its plot
|
|
45
|
+
* eight pixels taller than the others, so a peak of one intensity comes out
|
|
46
|
+
* taller at the bottom of the stack than at the top. Every other side of the margin
|
|
47
|
+
* is paid alike by every pane, the room kept above the plot for the tallest
|
|
48
|
+
* peak's label as much as the gutter the value labels are written in, so it
|
|
49
|
+
* cancels out of the difference between two panes and does not appear here.
|
|
50
|
+
* This one asymmetry is the whole of why an equal split of the *boxes* is not an
|
|
51
|
+
* equal split of the *plots*.
|
|
52
|
+
*/
|
|
53
|
+
export declare const FOOT_FURNITURE: number;
|
|
54
|
+
/**
|
|
55
|
+
* The shortest the pane at the foot may stand, in pixels.
|
|
56
|
+
*
|
|
57
|
+
* The ordinary floor plus the tick row and axis title only it writes, so that
|
|
58
|
+
* the plot left inside it is the same plot `STACKED_MINIMUM` leaves inside a
|
|
59
|
+
* pane above it. Deriving it rather than picking 116 is what makes the tightest
|
|
60
|
+
* stack land exactly on both floors at once: at a height of
|
|
61
|
+
* `FOOT_MINIMUM + (n - 1) * STACKED_MINIMUM`, `stackShares` gives every pane
|
|
62
|
+
* above the foot exactly `STACKED_MINIMUM` and the foot exactly this.
|
|
63
|
+
*/
|
|
64
|
+
export declare const FOOT_MINIMUM: number;
|
|
65
|
+
/**
|
|
66
|
+
* How much room the splitter between two panes takes, in pixels.
|
|
67
|
+
*
|
|
68
|
+
* `react-science` draws a vertical splitter as a ten-pixel bar, and there is one
|
|
69
|
+
* between each *pair* of panes rather than one per pane — five of them under six
|
|
70
|
+
* panes. Small enough to be forgotten and large enough that forgetting it costs
|
|
71
|
+
* a pane: the fifty it comes to across a full stack is more than half a stacked
|
|
72
|
+
* minimum.
|
|
73
|
+
*/
|
|
74
|
+
export declare const SPLITTER = 10;
|
|
75
|
+
/**
|
|
76
|
+
* The most panes worth stacking at all, however tall the column.
|
|
77
|
+
*
|
|
78
|
+
* Six, and the height is not what settles it. A 1080-pixel screen with the side
|
|
79
|
+
* panels open leaves the stack something near 900 pixels; six panes take 50 of
|
|
80
|
+
* those in splitters and share the rest, which is a box of 133 pixels each and a
|
|
81
|
+
* plot inside it of barely a hundred — about the height of the label stack a
|
|
82
|
+
* mass spectrum draws over its tallest sticks, so a seventh pane makes the
|
|
83
|
+
* labels taller than the trace they belong to. And the reader stacked the panes
|
|
84
|
+
* in order to compare them: past six the first and the last are most of a page
|
|
85
|
+
* apart, and an eye travelling that far is no longer comparing anything.
|
|
86
|
+
* Whatever is selected beyond this is overlaid into the last pane, where traces
|
|
87
|
+
* drawn over one another are compared the way they always were.
|
|
88
|
+
*/
|
|
89
|
+
export declare const STACK_LIMIT = 6;
|
|
90
|
+
/**
|
|
91
|
+
* How many panes a column of a given height can hold and still draw spectra.
|
|
92
|
+
*
|
|
93
|
+
* The arithmetic is the stack as it will actually be built: one pane at the foot
|
|
94
|
+
* carrying the horizontal axis, every other pane at the stacked floor, and a
|
|
95
|
+
* splitter between each pair. Nothing here rounds in the caller's favour — a
|
|
96
|
+
* height one pixel short of the fourth pane holds three.
|
|
97
|
+
* @param height - The whole column the stack fills, in pixels, with the
|
|
98
|
+
* splitters counted in: it is the box `ChartStack` is handed, not the room its
|
|
99
|
+
* panes are left with.
|
|
100
|
+
* @returns At least one, because a lone pane squeezed short is still the
|
|
101
|
+
* measurement and the stack draws it rather than nothing — that is why the foot
|
|
102
|
+
* pane is given no close threshold — and never more than `STACK_LIMIT`.
|
|
103
|
+
*/
|
|
104
|
+
export declare function stackCapacity(height: number): number;
|
|
105
|
+
/**
|
|
106
|
+
* How tall each pane of the stack stands, top to bottom.
|
|
107
|
+
*
|
|
108
|
+
* The split equalises the **plot** rather than the box. An equal share of the
|
|
109
|
+
* box hands the foot pane 34 pixels of tick row and axis title that the panes
|
|
110
|
+
* above it do not draw, so its trace comes out visibly shorter than theirs while
|
|
111
|
+
* every box measures the same — the one thing a reader comparing two spectra
|
|
112
|
+
* side by side must not be shown. So `FOOT_FURNITURE` is taken off the top, what
|
|
113
|
+
* is left is divided evenly, and the foot is given its share back with the
|
|
114
|
+
* furniture on it.
|
|
115
|
+
*
|
|
116
|
+
* The division is floored, so the panes above the foot are whole pixels and the
|
|
117
|
+
* remainder — never more than `count - 1` of them — lands on the foot, which is
|
|
118
|
+
* the tallest pane and the one where two pixels are least visible. That keeps
|
|
119
|
+
* the sum exact, and it is also why the foot's share is *at least*
|
|
120
|
+
* `FOOT_FURNITURE` above a stacked one rather than exactly it.
|
|
121
|
+
* @param height - The room the panes themselves share, in pixels. A caller
|
|
122
|
+
* holding the whole column subtracts the splitters first — `height -
|
|
123
|
+
* (count - 1) * SPLITTER` — because `SplitPane` takes those out of the panes,
|
|
124
|
+
* not out of the column.
|
|
125
|
+
* @param count - How many panes to stack, normally whatever `stackCapacity`
|
|
126
|
+
* answered.
|
|
127
|
+
* @returns One height per pane, summing exactly to `height`, each at or above
|
|
128
|
+
* its own floor. The two cannot both hold for a height short of what `count`
|
|
129
|
+
* panes need, and there the floors win and the sum overshoots: a pane under its
|
|
130
|
+
* floor is the stub with a full set of axes over it, which is the worse of the
|
|
131
|
+
* two pictures. A lone pane is the exception and takes the whole height floor
|
|
132
|
+
* and all, since there is nothing to redistribute to and nothing to compare it
|
|
133
|
+
* against.
|
|
134
|
+
*/
|
|
135
|
+
export declare function stackShares(height: number, count: number): readonly number[];
|
|
136
|
+
//# sourceMappingURL=stackCapacity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stackCapacity.d.ts","sourceRoot":"","sources":["../../../src/chart/core/stackCapacity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,eAAe,KAAK,CAAC;AAElC;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,cAAc,QAAqC,CAAC;AAEjE;;;;;;;;;GASG;AACH,eAAO,MAAM,YAAY,QAAmC,CAAC;AAE7D;;;;;;;;GAQG;AACH,eAAO,MAAM,QAAQ,KAAK,CAAC;AAE3B;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,WAAW,IAAI,CAAC;AAE7B;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAIpD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAc5E"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How many charts a column of a given height can stack, and how tall each stands.
|
|
3
|
+
*
|
|
4
|
+
* A viewer that draws one pane per selected spectrum has to answer a question
|
|
5
|
+
* the stack itself never asks. A reader who ticks a dozen spectra has not asked
|
|
6
|
+
* for twelve panes of fifty pixels, and a stack handed them draws twelve stubs
|
|
7
|
+
* with a full set of axes over each — the failure `ChartStack.tsx`'s header
|
|
8
|
+
* describes, arrived at from above instead of through a splitter. So the number
|
|
9
|
+
* of panes is settled from the height actually available, against the stack's
|
|
10
|
+
* own floors rather than a number somebody hoped for, and whatever a reader
|
|
11
|
+
* selects past that number is overlaid together into the last pane rather than
|
|
12
|
+
* dropped, which is the one outcome a reader cannot see happening.
|
|
13
|
+
*
|
|
14
|
+
* All of it is arithmetic over `chartStackLevel.tsx`'s floors and
|
|
15
|
+
* `chartGeometry.ts`'s margins; nothing here renders, measures or reads a
|
|
16
|
+
* spectrum.
|
|
17
|
+
*/
|
|
18
|
+
import { MARGIN, SHARED_AXIS_MARGIN } from "./chartGeometry.js";
|
|
19
|
+
/**
|
|
20
|
+
* The shortest a pane that is *not* at the foot of the stack may stand, in
|
|
21
|
+
* pixels.
|
|
22
|
+
*
|
|
23
|
+
* Ninety, and ninety exactly, because it is not a judgement about how short a
|
|
24
|
+
* chart may be: `chartStackLevel.tsx` hands `SplitPane` a `closeThreshold` of 90
|
|
25
|
+
* at every non-foot split, and a split measuring under that closes its pane
|
|
26
|
+
* outright — before a splitter has ever been touched, so a stack built on a
|
|
27
|
+
* floor of 80 would come up with panes already shut and no gesture that made
|
|
28
|
+
* them so. The threshold is applied as `>=`, which is why standing exactly on it
|
|
29
|
+
* is allowed. That constant is module-private over there, so its value is
|
|
30
|
+
* restated here and the two have to move together.
|
|
31
|
+
*
|
|
32
|
+
* A caller must state this as each pane's own `minimumHeight`. Left unsaid,
|
|
33
|
+
* `paneHeight` clamps the pane up to the 120 pixels it defaults to, and five
|
|
34
|
+
* panes would then demand 688 pixels where 538 draws them.
|
|
35
|
+
*/
|
|
36
|
+
export const STACKED_MINIMUM = 90;
|
|
37
|
+
/**
|
|
38
|
+
* What the pane at the foot pays for its axis beyond what every pane pays, in
|
|
39
|
+
* pixels.
|
|
40
|
+
*
|
|
41
|
+
* Only the foot of a stack writes the tick row and the axis title under its
|
|
42
|
+
* plot, and that is `MARGIN.bottom` less the `SHARED_AXIS_MARGIN` a pane keeps
|
|
43
|
+
* even when it writes no axis — 26 of them, not 34. The *difference* is what
|
|
44
|
+
* matters and the whole bottom margin is not it: a stacked pane still leaves a
|
|
45
|
+
* little room under its trace, and charging the foot for all 34 draws its plot
|
|
46
|
+
* eight pixels taller than the others, so a peak of one intensity comes out
|
|
47
|
+
* taller at the bottom of the stack than at the top. Every other side of the margin
|
|
48
|
+
* is paid alike by every pane, the room kept above the plot for the tallest
|
|
49
|
+
* peak's label as much as the gutter the value labels are written in, so it
|
|
50
|
+
* cancels out of the difference between two panes and does not appear here.
|
|
51
|
+
* This one asymmetry is the whole of why an equal split of the *boxes* is not an
|
|
52
|
+
* equal split of the *plots*.
|
|
53
|
+
*/
|
|
54
|
+
export const FOOT_FURNITURE = MARGIN.bottom - SHARED_AXIS_MARGIN;
|
|
55
|
+
/**
|
|
56
|
+
* The shortest the pane at the foot may stand, in pixels.
|
|
57
|
+
*
|
|
58
|
+
* The ordinary floor plus the tick row and axis title only it writes, so that
|
|
59
|
+
* the plot left inside it is the same plot `STACKED_MINIMUM` leaves inside a
|
|
60
|
+
* pane above it. Deriving it rather than picking 116 is what makes the tightest
|
|
61
|
+
* stack land exactly on both floors at once: at a height of
|
|
62
|
+
* `FOOT_MINIMUM + (n - 1) * STACKED_MINIMUM`, `stackShares` gives every pane
|
|
63
|
+
* above the foot exactly `STACKED_MINIMUM` and the foot exactly this.
|
|
64
|
+
*/
|
|
65
|
+
export const FOOT_MINIMUM = STACKED_MINIMUM + FOOT_FURNITURE;
|
|
66
|
+
/**
|
|
67
|
+
* How much room the splitter between two panes takes, in pixels.
|
|
68
|
+
*
|
|
69
|
+
* `react-science` draws a vertical splitter as a ten-pixel bar, and there is one
|
|
70
|
+
* between each *pair* of panes rather than one per pane — five of them under six
|
|
71
|
+
* panes. Small enough to be forgotten and large enough that forgetting it costs
|
|
72
|
+
* a pane: the fifty it comes to across a full stack is more than half a stacked
|
|
73
|
+
* minimum.
|
|
74
|
+
*/
|
|
75
|
+
export const SPLITTER = 10;
|
|
76
|
+
/**
|
|
77
|
+
* The most panes worth stacking at all, however tall the column.
|
|
78
|
+
*
|
|
79
|
+
* Six, and the height is not what settles it. A 1080-pixel screen with the side
|
|
80
|
+
* panels open leaves the stack something near 900 pixels; six panes take 50 of
|
|
81
|
+
* those in splitters and share the rest, which is a box of 133 pixels each and a
|
|
82
|
+
* plot inside it of barely a hundred — about the height of the label stack a
|
|
83
|
+
* mass spectrum draws over its tallest sticks, so a seventh pane makes the
|
|
84
|
+
* labels taller than the trace they belong to. And the reader stacked the panes
|
|
85
|
+
* in order to compare them: past six the first and the last are most of a page
|
|
86
|
+
* apart, and an eye travelling that far is no longer comparing anything.
|
|
87
|
+
* Whatever is selected beyond this is overlaid into the last pane, where traces
|
|
88
|
+
* drawn over one another are compared the way they always were.
|
|
89
|
+
*/
|
|
90
|
+
export const STACK_LIMIT = 6;
|
|
91
|
+
/**
|
|
92
|
+
* How many panes a column of a given height can hold and still draw spectra.
|
|
93
|
+
*
|
|
94
|
+
* The arithmetic is the stack as it will actually be built: one pane at the foot
|
|
95
|
+
* carrying the horizontal axis, every other pane at the stacked floor, and a
|
|
96
|
+
* splitter between each pair. Nothing here rounds in the caller's favour — a
|
|
97
|
+
* height one pixel short of the fourth pane holds three.
|
|
98
|
+
* @param height - The whole column the stack fills, in pixels, with the
|
|
99
|
+
* splitters counted in: it is the box `ChartStack` is handed, not the room its
|
|
100
|
+
* panes are left with.
|
|
101
|
+
* @returns At least one, because a lone pane squeezed short is still the
|
|
102
|
+
* measurement and the stack draws it rather than nothing — that is why the foot
|
|
103
|
+
* pane is given no close threshold — and never more than `STACK_LIMIT`.
|
|
104
|
+
*/
|
|
105
|
+
export function stackCapacity(height) {
|
|
106
|
+
const beyondTheFoot = height - FOOT_MINIMUM;
|
|
107
|
+
const fits = 1 + Math.floor(beyondTheFoot / (STACKED_MINIMUM + SPLITTER));
|
|
108
|
+
return Math.min(STACK_LIMIT, Math.max(1, fits));
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* How tall each pane of the stack stands, top to bottom.
|
|
112
|
+
*
|
|
113
|
+
* The split equalises the **plot** rather than the box. An equal share of the
|
|
114
|
+
* box hands the foot pane 34 pixels of tick row and axis title that the panes
|
|
115
|
+
* above it do not draw, so its trace comes out visibly shorter than theirs while
|
|
116
|
+
* every box measures the same — the one thing a reader comparing two spectra
|
|
117
|
+
* side by side must not be shown. So `FOOT_FURNITURE` is taken off the top, what
|
|
118
|
+
* is left is divided evenly, and the foot is given its share back with the
|
|
119
|
+
* furniture on it.
|
|
120
|
+
*
|
|
121
|
+
* The division is floored, so the panes above the foot are whole pixels and the
|
|
122
|
+
* remainder — never more than `count - 1` of them — lands on the foot, which is
|
|
123
|
+
* the tallest pane and the one where two pixels are least visible. That keeps
|
|
124
|
+
* the sum exact, and it is also why the foot's share is *at least*
|
|
125
|
+
* `FOOT_FURNITURE` above a stacked one rather than exactly it.
|
|
126
|
+
* @param height - The room the panes themselves share, in pixels. A caller
|
|
127
|
+
* holding the whole column subtracts the splitters first — `height -
|
|
128
|
+
* (count - 1) * SPLITTER` — because `SplitPane` takes those out of the panes,
|
|
129
|
+
* not out of the column.
|
|
130
|
+
* @param count - How many panes to stack, normally whatever `stackCapacity`
|
|
131
|
+
* answered.
|
|
132
|
+
* @returns One height per pane, summing exactly to `height`, each at or above
|
|
133
|
+
* its own floor. The two cannot both hold for a height short of what `count`
|
|
134
|
+
* panes need, and there the floors win and the sum overshoots: a pane under its
|
|
135
|
+
* floor is the stub with a full set of axes over it, which is the worse of the
|
|
136
|
+
* two pictures. A lone pane is the exception and takes the whole height floor
|
|
137
|
+
* and all, since there is nothing to redistribute to and nothing to compare it
|
|
138
|
+
* against.
|
|
139
|
+
*/
|
|
140
|
+
export function stackShares(height, count) {
|
|
141
|
+
if (!Number.isInteger(count) || count < 1)
|
|
142
|
+
return [];
|
|
143
|
+
if (count === 1)
|
|
144
|
+
return [height];
|
|
145
|
+
const stacked = Math.max(STACKED_MINIMUM, Math.floor((height - FOOT_FURNITURE) / count));
|
|
146
|
+
const shares = new Array(count);
|
|
147
|
+
for (let index = 0; index < count - 1; index++) {
|
|
148
|
+
shares[index] = stacked;
|
|
149
|
+
}
|
|
150
|
+
shares[count - 1] = Math.max(FOOT_MINIMUM, height - stacked * (count - 1));
|
|
151
|
+
return shares;
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=stackCapacity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stackCapacity.js","sourceRoot":"","sources":["../../../src/chart/core/stackCapacity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAEhE;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAC;AAElC;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,GAAG,kBAAkB,CAAC;AAEjE;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,eAAe,GAAG,cAAc,CAAC;AAE7D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,EAAE,CAAC;AAE3B;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC;AAE7B;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,MAAM,aAAa,GAAG,MAAM,GAAG,YAAY,CAAC;IAC5C,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,CAAC,eAAe,GAAG,QAAQ,CAAC,CAAC,CAAC;IAC1E,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAClD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc,EAAE,KAAa;IACvD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IACrD,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAEjC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CACtB,eAAe,EACf,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,cAAc,CAAC,GAAG,KAAK,CAAC,CAC9C,CAAC;IACF,MAAM,MAAM,GAAG,IAAI,KAAK,CAAS,KAAK,CAAC,CAAC;IACxC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;QAC/C,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC;IAC1B,CAAC;IACD,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;IAC3E,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Turning a pointer on the screen into a point on the chart.
|
|
3
|
+
*
|
|
4
|
+
* Asked by everything that reads a gesture — the crosshair, the box zoom, the
|
|
5
|
+
* click that pins a label — so it is answered once, here, and all of them place
|
|
6
|
+
* the pointer in the same place.
|
|
7
|
+
*
|
|
8
|
+
* The SVG's own screen matrix is the only correct answer once the chart carries
|
|
9
|
+
* a `viewBox`: the element then draws in user units of its own, and a pointer
|
|
10
|
+
* 300 CSS pixels from the left edge of an 800-pixel-wide chart showing 600 user
|
|
11
|
+
* units is at 225 of them, not at 300. The matrix carries that scaling, the
|
|
12
|
+
* device pixel ratio and any transform an ancestor applies, all at once, so
|
|
13
|
+
* nothing downstream has to know that any of them happened.
|
|
14
|
+
*/
|
|
15
|
+
/** A point on the chart, in the user units its `viewBox` is written in. */
|
|
16
|
+
export interface ChartPoint {
|
|
17
|
+
/** Distance from the left edge of the SVG. */
|
|
18
|
+
x: number;
|
|
19
|
+
/** Distance from its top edge. */
|
|
20
|
+
y: number;
|
|
21
|
+
}
|
|
22
|
+
/** The little of an SVG matrix a pointer position is worked out from. */
|
|
23
|
+
export interface ScreenMatrix {
|
|
24
|
+
/** Horizontal scaling. */
|
|
25
|
+
a: number;
|
|
26
|
+
/** Vertical shear. */
|
|
27
|
+
b: number;
|
|
28
|
+
/** Horizontal shear. */
|
|
29
|
+
c: number;
|
|
30
|
+
/** Vertical scaling. */
|
|
31
|
+
d: number;
|
|
32
|
+
/** Horizontal translation. */
|
|
33
|
+
e: number;
|
|
34
|
+
/** Vertical translation. */
|
|
35
|
+
f: number;
|
|
36
|
+
/** The matrix that undoes this one. */
|
|
37
|
+
inverse: () => ScreenMatrix;
|
|
38
|
+
}
|
|
39
|
+
/** The little of an SVG element a pointer position is asked of. */
|
|
40
|
+
export interface PointerSurface {
|
|
41
|
+
/** How the SVG's user units are laid over the screen. */
|
|
42
|
+
getScreenCTM: () => ScreenMatrix | null;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Where a pointer is, in the user units the SVG draws in.
|
|
46
|
+
*
|
|
47
|
+
* The matrix maps user units onto the screen, so it is inverted to go the other
|
|
48
|
+
* way. It is applied here rather than through a `DOMPoint` so that the
|
|
49
|
+
* arithmetic can be read — and tested — without a browser standing by.
|
|
50
|
+
*
|
|
51
|
+
* A surface that is not laid out has no matrix to give: an SVG inside a folded
|
|
52
|
+
* panel, or one whose `viewBox` has collapsed to nothing, answers `null` rather
|
|
53
|
+
* than a matrix of zeros, and the caller is then told there is no position
|
|
54
|
+
* instead of being handed an infinity that lands every gesture at the same
|
|
55
|
+
* impossible place.
|
|
56
|
+
* @param surface - The SVG, `null` before it is on screen.
|
|
57
|
+
* @param clientX - Where the pointer is on the screen, horizontally.
|
|
58
|
+
* @param clientY - Where it is vertically.
|
|
59
|
+
* @returns The point, `null` when the surface cannot place it.
|
|
60
|
+
*/
|
|
61
|
+
export declare function svgPointAt(surface: PointerSurface | null, clientX: number, clientY: number): ChartPoint | null;
|
|
62
|
+
//# sourceMappingURL=svgPoint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"svgPoint.d.ts","sourceRoot":"","sources":["../../../src/chart/core/svgPoint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,2EAA2E;AAC3E,MAAM,WAAW,UAAU;IACzB,8CAA8C;IAC9C,CAAC,EAAE,MAAM,CAAC;IACV,kCAAkC;IAClC,CAAC,EAAE,MAAM,CAAC;CACX;AAED,yEAAyE;AACzE,MAAM,WAAW,YAAY;IAC3B,0BAA0B;IAC1B,CAAC,EAAE,MAAM,CAAC;IACV,sBAAsB;IACtB,CAAC,EAAE,MAAM,CAAC;IACV,wBAAwB;IACxB,CAAC,EAAE,MAAM,CAAC;IACV,wBAAwB;IACxB,CAAC,EAAE,MAAM,CAAC;IACV,8BAA8B;IAC9B,CAAC,EAAE,MAAM,CAAC;IACV,4BAA4B;IAC5B,CAAC,EAAE,MAAM,CAAC;IACV,uCAAuC;IACvC,OAAO,EAAE,MAAM,YAAY,CAAC;CAC7B;AAED,mEAAmE;AACnE,MAAM,WAAW,cAAc;IAC7B,yDAAyD;IACzD,YAAY,EAAE,MAAM,YAAY,GAAG,IAAI,CAAC;CACzC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,cAAc,GAAG,IAAI,EAC9B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,UAAU,GAAG,IAAI,CAQnB"}
|