react-cheminfo 0.27.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/clipboard/ui/CopyableValue.d.ts +12 -9
- package/lib/clipboard/ui/CopyableValue.d.ts.map +1 -1
- package/lib/clipboard/ui/CopyableValue.js +11 -15
- package/lib/clipboard/ui/CopyableValue.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/clipboard/ui/CopyableValue.tsx +22 -35
- 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,41 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* One titled block of a dialog.
|
|
4
|
+
* @param props - Component props.
|
|
5
|
+
* @returns The section.
|
|
6
|
+
*/
|
|
7
|
+
export function Section(props) {
|
|
8
|
+
const { title, children } = props;
|
|
9
|
+
return (_jsxs("div", { style: sectionStyle, children: [_jsx("div", { style: sectionTitleStyle, children: title }), children] }));
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* A link out of a dialog, opened away from the editor so a drawing in progress
|
|
13
|
+
* or a spectrum being read is never lost to a click.
|
|
14
|
+
* @param props - Component props.
|
|
15
|
+
* @returns The link.
|
|
16
|
+
*/
|
|
17
|
+
export function Link(props) {
|
|
18
|
+
const { href, children } = props;
|
|
19
|
+
return (_jsx("a", { href: href, target: "_blank", rel: "noopener noreferrer", style: linkStyle, children: children }));
|
|
20
|
+
}
|
|
21
|
+
const sectionStyle = {
|
|
22
|
+
display: 'flex',
|
|
23
|
+
flexDirection: 'column',
|
|
24
|
+
gap: 6,
|
|
25
|
+
};
|
|
26
|
+
const sectionTitleStyle = {
|
|
27
|
+
fontSize: 11,
|
|
28
|
+
fontWeight: 600,
|
|
29
|
+
textTransform: 'uppercase',
|
|
30
|
+
letterSpacing: '0.04em',
|
|
31
|
+
opacity: 0.6,
|
|
32
|
+
};
|
|
33
|
+
// Spelled out rather than left to the page: nothing says a host application
|
|
34
|
+
// styles its anchors, and a credit nobody can tell is a link is not a credit.
|
|
35
|
+
const linkStyle = {
|
|
36
|
+
// The site's own accent, and the inherited ink on a page that declares none —
|
|
37
|
+
// the underline is what makes it a link either way.
|
|
38
|
+
color: 'var(--accent, inherit)',
|
|
39
|
+
textDecoration: 'underline',
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=Section.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Section.js","sourceRoot":"","sources":["../../../src/panel/ui/Section.tsx"],"names":[],"mappings":";AASA;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,KAAmB;IACzC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAClC,OAAO,CACL,eAAK,KAAK,EAAE,YAAY,aACtB,cAAK,KAAK,EAAE,iBAAiB,YAAG,KAAK,GAAO,EAC3C,QAAQ,IACL,CACP,CAAC;AACJ,CAAC;AAOD;;;;;GAKG;AACH,MAAM,UAAU,IAAI,CAAC,KAAgB;IACnC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IACjC,OAAO,CACL,YAAG,IAAI,EAAE,IAAI,EAAE,MAAM,EAAC,QAAQ,EAAC,GAAG,EAAC,qBAAqB,EAAC,KAAK,EAAE,SAAS,YACtE,QAAQ,GACP,CACL,CAAC;AACJ,CAAC;AAED,MAAM,YAAY,GAAG;IACnB,OAAO,EAAE,MAAM;IACf,aAAa,EAAE,QAAQ;IACvB,GAAG,EAAE,CAAC;CACE,CAAC;AAEX,MAAM,iBAAiB,GAAG;IACxB,QAAQ,EAAE,EAAE;IACZ,UAAU,EAAE,GAAG;IACf,aAAa,EAAE,WAAW;IAC1B,aAAa,EAAE,QAAQ;IACvB,OAAO,EAAE,GAAG;CACJ,CAAC;AAEX,4EAA4E;AAC5E,8EAA8E;AAC9E,MAAM,SAAS,GAAG;IAChB,8EAA8E;IAC9E,oDAAoD;IACpD,KAAK,EAAE,wBAAwB;IAC/B,cAAc,EAAE,WAAW;CACnB,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { ActivityBarItemProps } from 'react-science/ui';
|
|
3
|
+
/** What a rail reads about one panel, wherever that rail is drawn. */
|
|
4
|
+
export interface PanelDescriptor {
|
|
5
|
+
/** Identity, as the activity bar and the list of open panels address it. */
|
|
6
|
+
id: string;
|
|
7
|
+
/** What the header says, and what the icon's tooltip reads. */
|
|
8
|
+
title: string;
|
|
9
|
+
/** The icon stacked in the rail. */
|
|
10
|
+
icon: ActivityBarItemProps['icon'];
|
|
11
|
+
}
|
|
12
|
+
export interface SidePanelStackProps<TPanel extends PanelDescriptor> {
|
|
13
|
+
/** Every panel on offer, in the order their icons are stacked. */
|
|
14
|
+
panels: readonly TPanel[];
|
|
15
|
+
/** Which of them are open, named as each editor's own view names them. */
|
|
16
|
+
openPanelIds: readonly string[];
|
|
17
|
+
/**
|
|
18
|
+
* Called with the panel whose close cross was pressed. It is the id of one of
|
|
19
|
+
* `panels` rather than any string, so an editor whose panels are a fixed set
|
|
20
|
+
* hands its own `togglePanel` straight in.
|
|
21
|
+
* @param id - Identity of that panel.
|
|
22
|
+
*/
|
|
23
|
+
onClose: (id: TPanel['id']) => void;
|
|
24
|
+
/**
|
|
25
|
+
* What to draw inside one panel.
|
|
26
|
+
* @param panel - The panel to draw.
|
|
27
|
+
* @returns Its body.
|
|
28
|
+
*/
|
|
29
|
+
children: (panel: TPanel) => ReactNode;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* The panels that are open, stacked one under the other down the side.
|
|
33
|
+
*
|
|
34
|
+
* Every open panel gets a share of the height rather than a turn: the things
|
|
35
|
+
* they hold are read together — which spectrum is selected and what its peaks
|
|
36
|
+
* are, the residues to pick from and what the drawing adds up to — so closing
|
|
37
|
+
* one to see the other would be a step backwards. A header click still folds a
|
|
38
|
+
* single panel away, and shift-click folds every other one.
|
|
39
|
+
*
|
|
40
|
+
* They are drawn in the order the rail stacks their icons rather than the order
|
|
41
|
+
* they were switched on, so a panel always comes back where it was.
|
|
42
|
+
*
|
|
43
|
+
* The header carries the shell's own two gestures and nothing about what the
|
|
44
|
+
* panel holds: the chevron that folds it away and the cross that closes it.
|
|
45
|
+
* What a panel switches on and off is a toolbar at the top of its own body, so
|
|
46
|
+
* it travels with the panel when it is folded, reordered or lent to another
|
|
47
|
+
* editor, and every header in every editor reads the same — which is the reason
|
|
48
|
+
* this is one component rather than one per editor.
|
|
49
|
+
*
|
|
50
|
+
* The chevron is there because nothing else says which panels are folded. The
|
|
51
|
+
* accordion draws every header identically and hides only the body, so a side
|
|
52
|
+
* of four closed panels and a side of four open ones differ by white space, and
|
|
53
|
+
* a reader looking for a panel that is already open reaches for its icon and
|
|
54
|
+
* closes it. It is a real button rather than a glyph because the header's own
|
|
55
|
+
* click never reaches the toolbar — clicks there are stopped so the close cross
|
|
56
|
+
* does not also fold the panel — so a chevron that did nothing when pressed
|
|
57
|
+
* would be an affordance that lies.
|
|
58
|
+
* @param props - Component props.
|
|
59
|
+
* @returns The stack.
|
|
60
|
+
*/
|
|
61
|
+
export declare function SidePanelStack<TPanel extends PanelDescriptor>(props: SidePanelStackProps<TPanel>): import("react").JSX.Element;
|
|
62
|
+
//# sourceMappingURL=SidePanelStack.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SidePanelStack.d.ts","sourceRoot":"","sources":["../../../src/panel/ui/SidePanelStack.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAG7D,sEAAsE;AACtE,MAAM,WAAW,eAAe;IAC9B,4EAA4E;IAC5E,EAAE,EAAE,MAAM,CAAC;IACX,+DAA+D;IAC/D,KAAK,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,IAAI,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,mBAAmB,CAAC,MAAM,SAAS,eAAe;IACjE,kEAAkE;IAClE,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,0EAA0E;IAC1E,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC;;;;;OAKG;IACH,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IACpC;;;;OAIG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC;CACxC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,cAAc,CAAC,MAAM,SAAS,eAAe,EAC3D,KAAK,EAAE,mBAAmB,CAAC,MAAM,CAAC,+BA2CnC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Accordion, AccordionProvider, Button } from 'react-science/ui';
|
|
3
|
+
/**
|
|
4
|
+
* The panels that are open, stacked one under the other down the side.
|
|
5
|
+
*
|
|
6
|
+
* Every open panel gets a share of the height rather than a turn: the things
|
|
7
|
+
* they hold are read together — which spectrum is selected and what its peaks
|
|
8
|
+
* are, the residues to pick from and what the drawing adds up to — so closing
|
|
9
|
+
* one to see the other would be a step backwards. A header click still folds a
|
|
10
|
+
* single panel away, and shift-click folds every other one.
|
|
11
|
+
*
|
|
12
|
+
* They are drawn in the order the rail stacks their icons rather than the order
|
|
13
|
+
* they were switched on, so a panel always comes back where it was.
|
|
14
|
+
*
|
|
15
|
+
* The header carries the shell's own two gestures and nothing about what the
|
|
16
|
+
* panel holds: the chevron that folds it away and the cross that closes it.
|
|
17
|
+
* What a panel switches on and off is a toolbar at the top of its own body, so
|
|
18
|
+
* it travels with the panel when it is folded, reordered or lent to another
|
|
19
|
+
* editor, and every header in every editor reads the same — which is the reason
|
|
20
|
+
* this is one component rather than one per editor.
|
|
21
|
+
*
|
|
22
|
+
* The chevron is there because nothing else says which panels are folded. The
|
|
23
|
+
* accordion draws every header identically and hides only the body, so a side
|
|
24
|
+
* of four closed panels and a side of four open ones differ by white space, and
|
|
25
|
+
* a reader looking for a panel that is already open reaches for its icon and
|
|
26
|
+
* closes it. It is a real button rather than a glyph because the header's own
|
|
27
|
+
* click never reaches the toolbar — clicks there are stopped so the close cross
|
|
28
|
+
* does not also fold the panel — so a chevron that did nothing when pressed
|
|
29
|
+
* would be an affordance that lies.
|
|
30
|
+
* @param props - Component props.
|
|
31
|
+
* @returns The stack.
|
|
32
|
+
*/
|
|
33
|
+
export function SidePanelStack(props) {
|
|
34
|
+
const { panels, openPanelIds, onClose, children } = props;
|
|
35
|
+
const open = panels.filter((panel) => openPanelIds.includes(panel.id));
|
|
36
|
+
return (_jsx(AccordionProvider, { children: _jsx(Accordion, { children: open.map((panel) => (_jsx(Accordion.Item, { id: panel.id, title: panel.title, defaultOpen: true, renderToolbar: ({ isOpen, controls }) => (_jsxs(_Fragment, { children: [_jsx(Button, { variant: "minimal", icon: isOpen ? 'chevron-down' : 'chevron-right', "data-panel-open": isOpen, "aria-expanded": isOpen, "aria-label": `${isOpen ? 'Fold' : 'Unfold'} the ${panel.title.toLowerCase()} panel`, tooltipProps: {
|
|
37
|
+
content: isOpen ? 'Fold this panel away' : 'Unfold it',
|
|
38
|
+
}, onClick: () => controls.toggle() }), _jsx(Button, { variant: "minimal", icon: "cross", tooltipProps: { content: 'Close this panel' }, "aria-label": `Close the ${panel.title.toLowerCase()} panel`, onClick: () => onClose(panel.id) })] })), children: children(panel) }, panel.id))) }) }));
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=SidePanelStack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SidePanelStack.js","sourceRoot":"","sources":["../../../src/panel/ui/SidePanelStack.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAgCxE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,UAAU,cAAc,CAC5B,KAAkC;IAElC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAC1D,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAEvE,OAAO,CACL,KAAC,iBAAiB,cAChB,KAAC,SAAS,cACP,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACnB,KAAC,SAAS,CAAC,IAAI,IAEb,EAAE,EAAE,KAAK,CAAC,EAAE,EACZ,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,WAAW,QACX,aAAa,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CACvC,8BACE,KAAC,MAAM,IACL,OAAO,EAAC,SAAS,EACjB,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,eAAe,qBAC9B,MAAM,mBACR,MAAM,gBACT,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,QAAQ,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,QAAQ,EAClF,YAAY,EAAE;gCACZ,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,WAAW;6BACvD,EACD,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,GAChC,EACF,KAAC,MAAM,IACL,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,OAAO,EACZ,YAAY,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,gBACjC,aAAa,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,QAAQ,EAC1D,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAChC,IACD,CACJ,YAEA,QAAQ,CAAC,KAAK,CAAC,IA3BX,KAAK,CAAC,EAAE,CA4BE,CAClB,CAAC,GACQ,GACM,CACrB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export interface SpectrumColorSwatchProps {
|
|
2
|
+
/** The colour the spectrum is drawn in. */
|
|
3
|
+
color: string;
|
|
4
|
+
/** What the list calls it, for the labels a screen reader reads out. */
|
|
5
|
+
name: string;
|
|
6
|
+
/** Called with the colour that was picked. */
|
|
7
|
+
onPick: (color: string) => void;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* The chip that says what colour a spectrum is drawn in, and changes it.
|
|
11
|
+
*
|
|
12
|
+
* The palette is what `spectrumColor.ts` holds and nothing else: a free colour
|
|
13
|
+
* picker would let two spectra be set to the same blue, or to a hue that
|
|
14
|
+
* disappears against the chart, and telling the traces apart is the whole job
|
|
15
|
+
* the colour has.
|
|
16
|
+
*
|
|
17
|
+
* Its two tiers are drawn as two rows, in that order and unlabelled. A row is
|
|
18
|
+
* enough: the top one is what the chart uses by itself, so a reader who never
|
|
19
|
+
* looks below it is already right, and one who does is choosing deliberately —
|
|
20
|
+
* which is the only way a colour that asks more of its reader's eyes should
|
|
21
|
+
* ever be picked. A legend explaining the difference would be read once and be
|
|
22
|
+
* in the way afterwards; `spectrumColor.ts` is where the difference is written
|
|
23
|
+
* down.
|
|
24
|
+
*
|
|
25
|
+
* One component for every viewer rather than one per package: a swatch that
|
|
26
|
+
* opens a picker in the mass panel and walks the palette in the infrared one is
|
|
27
|
+
* two different controls wearing the same chip, and whichever a reader learned
|
|
28
|
+
* first is the wrong one in the other editor.
|
|
29
|
+
* @param props - Component props.
|
|
30
|
+
* @returns The chip.
|
|
31
|
+
*/
|
|
32
|
+
export declare function SpectrumColorSwatch(props: SpectrumColorSwatchProps): import("react").JSX.Element;
|
|
33
|
+
//# sourceMappingURL=SpectrumColorSwatch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpectrumColorSwatch.d.ts","sourceRoot":"","sources":["../../../src/panel/ui/SpectrumColorSwatch.tsx"],"names":[],"mappings":"AAQA,MAAM,WAAW,wBAAwB;IACvC,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,+BA8ClE"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { PopoverNext } from '@blueprintjs/core';
|
|
3
|
+
import { useState } from 'react';
|
|
4
|
+
import { EXTRA_SPECTRUM_COLORS, SPECTRUM_COLORS, } from "../../chart/core/spectrumColor.js";
|
|
5
|
+
/**
|
|
6
|
+
* The chip that says what colour a spectrum is drawn in, and changes it.
|
|
7
|
+
*
|
|
8
|
+
* The palette is what `spectrumColor.ts` holds and nothing else: a free colour
|
|
9
|
+
* picker would let two spectra be set to the same blue, or to a hue that
|
|
10
|
+
* disappears against the chart, and telling the traces apart is the whole job
|
|
11
|
+
* the colour has.
|
|
12
|
+
*
|
|
13
|
+
* Its two tiers are drawn as two rows, in that order and unlabelled. A row is
|
|
14
|
+
* enough: the top one is what the chart uses by itself, so a reader who never
|
|
15
|
+
* looks below it is already right, and one who does is choosing deliberately —
|
|
16
|
+
* which is the only way a colour that asks more of its reader's eyes should
|
|
17
|
+
* ever be picked. A legend explaining the difference would be read once and be
|
|
18
|
+
* in the way afterwards; `spectrumColor.ts` is where the difference is written
|
|
19
|
+
* down.
|
|
20
|
+
*
|
|
21
|
+
* One component for every viewer rather than one per package: a swatch that
|
|
22
|
+
* opens a picker in the mass panel and walks the palette in the infrared one is
|
|
23
|
+
* two different controls wearing the same chip, and whichever a reader learned
|
|
24
|
+
* first is the wrong one in the other editor.
|
|
25
|
+
* @param props - Component props.
|
|
26
|
+
* @returns The chip.
|
|
27
|
+
*/
|
|
28
|
+
export function SpectrumColorSwatch(props) {
|
|
29
|
+
const { color, name, onPick } = props;
|
|
30
|
+
const [isOpen, setIsOpen] = useState(false);
|
|
31
|
+
function offer(offered) {
|
|
32
|
+
return (_jsx("button", { type: "button", title: offered, "aria-label": `Draw ${name} in ${offered}`, style: {
|
|
33
|
+
...(offered === color ? activeSwatchStyle : swatchStyle),
|
|
34
|
+
background: offered,
|
|
35
|
+
}, onClick: () => {
|
|
36
|
+
onPick(offered);
|
|
37
|
+
setIsOpen(false);
|
|
38
|
+
} }, offered));
|
|
39
|
+
}
|
|
40
|
+
return (_jsx(PopoverNext
|
|
41
|
+
// A handful of chips need no arrow pointing back at a chip of the same
|
|
42
|
+
// size.
|
|
43
|
+
, {
|
|
44
|
+
// A handful of chips need no arrow pointing back at a chip of the same
|
|
45
|
+
// size.
|
|
46
|
+
arrow: false, isOpen: isOpen, placement: "bottom-start", onInteraction: setIsOpen, content: _jsxs("div", { style: paletteStyle, children: [_jsx("div", { style: paletteRowStyle, children: SPECTRUM_COLORS.map(offer) }), _jsx("div", { style: paletteRowStyle, children: EXTRA_SPECTRUM_COLORS.map(offer) })] }), children: _jsx("button", { type: "button", title: "Draw this spectrum in another colour", "aria-label": `Colour of ${name}`, style: { ...swatchStyle, background: color } }) }));
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* A round chip rather than a square one: it is the mark the chart's own
|
|
50
|
+
* tooltip uses for a series, so the row and the chart name the same spectrum
|
|
51
|
+
* the same way.
|
|
52
|
+
*/
|
|
53
|
+
const swatchStyle = {
|
|
54
|
+
flex: 'none',
|
|
55
|
+
width: 14,
|
|
56
|
+
height: 14,
|
|
57
|
+
padding: 0,
|
|
58
|
+
borderRadius: '50%',
|
|
59
|
+
border: '1px solid rgba(17, 20, 24, 0.2)',
|
|
60
|
+
cursor: 'pointer',
|
|
61
|
+
};
|
|
62
|
+
const activeSwatchStyle = {
|
|
63
|
+
...swatchStyle,
|
|
64
|
+
border: '2px solid rgb(17 20 24)',
|
|
65
|
+
};
|
|
66
|
+
const paletteStyle = {
|
|
67
|
+
display: 'flex',
|
|
68
|
+
flexDirection: 'column',
|
|
69
|
+
gap: 6,
|
|
70
|
+
padding: 8,
|
|
71
|
+
};
|
|
72
|
+
const paletteRowStyle = {
|
|
73
|
+
display: 'flex',
|
|
74
|
+
gap: 6,
|
|
75
|
+
};
|
|
76
|
+
//# sourceMappingURL=SpectrumColorSwatch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpectrumColorSwatch.js","sourceRoot":"","sources":["../../../src/panel/ui/SpectrumColorSwatch.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,EACL,qBAAqB,EACrB,eAAe,GAChB,MAAM,mCAAmC,CAAC;AAW3C;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAA+B;IACjE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACtC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE5C,SAAS,KAAK,CAAC,OAAe;QAC5B,OAAO,CACL,iBAEE,IAAI,EAAC,QAAQ,EACb,KAAK,EAAE,OAAO,gBACF,QAAQ,IAAI,OAAO,OAAO,EAAE,EACxC,KAAK,EAAE;gBACL,GAAG,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,WAAW,CAAC;gBACxD,UAAU,EAAE,OAAO;aACpB,EACD,OAAO,EAAE,GAAG,EAAE;gBACZ,MAAM,CAAC,OAAO,CAAC,CAAC;gBAChB,SAAS,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC,IAXI,OAAO,CAYZ,CACH,CAAC;IACJ,CAAC;IAED,OAAO,CACL,KAAC,WAAW;IACV,uEAAuE;IACvE,QAAQ;;QADR,uEAAuE;QACvE,QAAQ;QACR,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,SAAS,EAAC,cAAc,EACxB,aAAa,EAAE,SAAS,EACxB,OAAO,EACL,eAAK,KAAK,EAAE,YAAY,aACtB,cAAK,KAAK,EAAE,eAAe,YAAG,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,GAAO,EAC/D,cAAK,KAAK,EAAE,eAAe,YAAG,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC,GAAO,IACjE,YAGR,iBACE,IAAI,EAAC,QAAQ,EACb,KAAK,EAAC,sCAAsC,gBAChC,aAAa,IAAI,EAAE,EAC/B,KAAK,EAAE,EAAE,GAAG,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,GAC5C,GACU,CACf,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,WAAW,GAAG;IAClB,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,EAAE;IACT,MAAM,EAAE,EAAE;IACV,OAAO,EAAE,CAAC;IACV,YAAY,EAAE,KAAK;IACnB,MAAM,EAAE,iCAAiC;IACzC,MAAM,EAAE,SAAS;CACT,CAAC;AAEX,MAAM,iBAAiB,GAAG;IACxB,GAAG,WAAW;IACd,MAAM,EAAE,yBAAyB;CACzB,CAAC;AAEX,MAAM,YAAY,GAAG;IACnB,OAAO,EAAE,MAAM;IACf,aAAa,EAAE,QAAQ;IACvB,GAAG,EAAE,CAAC;IACN,OAAO,EAAE,CAAC;CACF,CAAC;AAEX,MAAM,eAAe,GAAG;IACtB,OAAO,EAAE,MAAM;IACf,GAAG,EAAE,CAAC;CACE,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The parts an editor is assembled from: its panels, its dialogs and the rail
|
|
3
|
+
* they are opened from.
|
|
4
|
+
*
|
|
5
|
+
* Every one of them is handed what it shows and reports what was pressed, so
|
|
6
|
+
* none of them reads a store and none of them knows which editor it is in.
|
|
7
|
+
* That is what lets the same panel stack carry a spectrum, a chromatogram and
|
|
8
|
+
* a drawing.
|
|
9
|
+
*/
|
|
10
|
+
export type { AboutDialogFrameProps } from './AboutDialogFrame.tsx';
|
|
11
|
+
export { AboutDialogFrame } from './AboutDialogFrame.tsx';
|
|
12
|
+
export type { ClearButtonProps } from './ClearButton.tsx';
|
|
13
|
+
export { ClearButton } from './ClearButton.tsx';
|
|
14
|
+
export type { DocumentationDialogFrameProps, DocumentationSection, } from './DocumentationDialogFrame.tsx';
|
|
15
|
+
export { DocumentationDialogFrame } from './DocumentationDialogFrame.tsx';
|
|
16
|
+
export type { FilterInputProps } from './FilterInput.tsx';
|
|
17
|
+
export { FilterInput } from './FilterInput.tsx';
|
|
18
|
+
export type { HelpLabelProps } from './HelpLabel.tsx';
|
|
19
|
+
export { HelpLabel } from './HelpLabel.tsx';
|
|
20
|
+
export type { PanelEmptyProps, PanelMessageIntent, PanelMessageProps, } from './PanelMessage.tsx';
|
|
21
|
+
export { PanelEmpty, PanelMessage } from './PanelMessage.tsx';
|
|
22
|
+
export type { PanelRailProps, RailPanel } from './PanelRail.tsx';
|
|
23
|
+
export { PanelRail } from './PanelRail.tsx';
|
|
24
|
+
export type { LinkProps, SectionProps } from './Section.tsx';
|
|
25
|
+
export { Link, Section } from './Section.tsx';
|
|
26
|
+
export type { PanelDescriptor, SidePanelStackProps, } from './SidePanelStack.tsx';
|
|
27
|
+
export { SidePanelStack } from './SidePanelStack.tsx';
|
|
28
|
+
export type { SpectrumColorSwatchProps } from './SpectrumColorSwatch.tsx';
|
|
29
|
+
export { SpectrumColorSwatch } from './SpectrumColorSwatch.tsx';
|
|
30
|
+
export { useConfirmOnEnter } from './useConfirmOnEnter.ts';
|
|
31
|
+
export type { FilterBox } from './useFilterBox.ts';
|
|
32
|
+
export { useFilterBox } from './useFilterBox.ts';
|
|
33
|
+
export type { VirtualRows } from './useVirtualRows.ts';
|
|
34
|
+
export { useVirtualRows } from './useVirtualRows.ts';
|
|
35
|
+
export type { VirtualWindowRows } from './useVirtualWindowRows.ts';
|
|
36
|
+
export { useVirtualWindowRows } from './useVirtualWindowRows.ts';
|
|
37
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/panel/ui/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,YAAY,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EACV,6BAA6B,EAC7B,oBAAoB,GACrB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EACV,eAAe,EACf,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC9D,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC9C,YAAY,EACV,eAAe,EACf,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,YAAY,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,YAAY,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The parts an editor is assembled from: its panels, its dialogs and the rail
|
|
3
|
+
* they are opened from.
|
|
4
|
+
*
|
|
5
|
+
* Every one of them is handed what it shows and reports what was pressed, so
|
|
6
|
+
* none of them reads a store and none of them knows which editor it is in.
|
|
7
|
+
* That is what lets the same panel stack carry a spectrum, a chromatogram and
|
|
8
|
+
* a drawing.
|
|
9
|
+
*/
|
|
10
|
+
export { AboutDialogFrame } from "./AboutDialogFrame.js";
|
|
11
|
+
export { ClearButton } from "./ClearButton.js";
|
|
12
|
+
export { DocumentationDialogFrame } from "./DocumentationDialogFrame.js";
|
|
13
|
+
export { FilterInput } from "./FilterInput.js";
|
|
14
|
+
export { HelpLabel } from "./HelpLabel.js";
|
|
15
|
+
export { PanelEmpty, PanelMessage } from "./PanelMessage.js";
|
|
16
|
+
export { PanelRail } from "./PanelRail.js";
|
|
17
|
+
export { Link, Section } from "./Section.js";
|
|
18
|
+
export { SidePanelStack } from "./SidePanelStack.js";
|
|
19
|
+
export { SpectrumColorSwatch } from "./SpectrumColorSwatch.js";
|
|
20
|
+
export { useConfirmOnEnter } from "./useConfirmOnEnter.js";
|
|
21
|
+
export { useFilterBox } from "./useFilterBox.js";
|
|
22
|
+
export { useVirtualRows } from "./useVirtualRows.js";
|
|
23
|
+
export { useVirtualWindowRows } from "./useVirtualWindowRows.js";
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/panel/ui/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAwB,CAAC;AAE1D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAmB,CAAC;AAKhD,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAAgC,CAAC;AAE1E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAmB,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAiB,CAAC;AAM5C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAoB,CAAC;AAE9D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAiB,CAAC;AAE5C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,cAAe,CAAC;AAK9C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAsB,CAAC;AAEtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA2B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enter as the answer to whatever a dialog is asking.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Run a dialog's primary action when Enter is pressed while it is open.
|
|
6
|
+
*
|
|
7
|
+
* On the document rather than on the dialog's own subtree, because an open
|
|
8
|
+
* overlay holds the focus on a container above the content, so a press never
|
|
9
|
+
* reaches a handler put on the body. Esc needs nothing of the sort: Blueprint
|
|
10
|
+
* closes an overlay on it already.
|
|
11
|
+
*
|
|
12
|
+
* A press that something else has a use for is left alone — a button under the
|
|
13
|
+
* focus is activated by Enter on its own, and a newline typed into a text area
|
|
14
|
+
* is a newline — so the shortcut never fires twice or eats what was typed.
|
|
15
|
+
* @param isOpen - Whether the dialog is showing.
|
|
16
|
+
* @param onConfirm - Its primary action, the one the footer button runs.
|
|
17
|
+
*/
|
|
18
|
+
export declare function useConfirmOnEnter(isOpen: boolean, onConfirm: () => void): void;
|
|
19
|
+
//# sourceMappingURL=useConfirmOnEnter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useConfirmOnEnter.d.ts","sourceRoot":"","sources":["../../../src/panel/ui/useConfirmOnEnter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,OAAO,EACf,SAAS,EAAE,MAAM,IAAI,GACpB,IAAI,CAwBN"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enter as the answer to whatever a dialog is asking.
|
|
3
|
+
*/
|
|
4
|
+
import { useEffect, useLayoutEffect, useRef } from 'react';
|
|
5
|
+
/**
|
|
6
|
+
* Run a dialog's primary action when Enter is pressed while it is open.
|
|
7
|
+
*
|
|
8
|
+
* On the document rather than on the dialog's own subtree, because an open
|
|
9
|
+
* overlay holds the focus on a container above the content, so a press never
|
|
10
|
+
* reaches a handler put on the body. Esc needs nothing of the sort: Blueprint
|
|
11
|
+
* closes an overlay on it already.
|
|
12
|
+
*
|
|
13
|
+
* A press that something else has a use for is left alone — a button under the
|
|
14
|
+
* focus is activated by Enter on its own, and a newline typed into a text area
|
|
15
|
+
* is a newline — so the shortcut never fires twice or eats what was typed.
|
|
16
|
+
* @param isOpen - Whether the dialog is showing.
|
|
17
|
+
* @param onConfirm - Its primary action, the one the footer button runs.
|
|
18
|
+
*/
|
|
19
|
+
export function useConfirmOnEnter(isOpen, onConfirm) {
|
|
20
|
+
// Held in a ref so a caller passing a fresh closure on every render does not
|
|
21
|
+
// have the listener taken down and put back up.
|
|
22
|
+
const current = useRef(onConfirm);
|
|
23
|
+
useLayoutEffect(() => {
|
|
24
|
+
current.current = onConfirm;
|
|
25
|
+
});
|
|
26
|
+
useEffect(() => {
|
|
27
|
+
if (!isOpen)
|
|
28
|
+
return;
|
|
29
|
+
function handleKeyDown(event) {
|
|
30
|
+
if (event.key !== 'Enter' || event.defaultPrevented)
|
|
31
|
+
return;
|
|
32
|
+
if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
if (activatesOnEnter(event.target) || takesNewlines(event.target))
|
|
36
|
+
return;
|
|
37
|
+
event.preventDefault();
|
|
38
|
+
current.current();
|
|
39
|
+
}
|
|
40
|
+
document.addEventListener('keydown', handleKeyDown);
|
|
41
|
+
return () => document.removeEventListener('keydown', handleKeyDown);
|
|
42
|
+
}, [isOpen]);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Whether Enter is already the way to work what the press was delivered to.
|
|
46
|
+
* @param target - What the event was delivered to.
|
|
47
|
+
* @returns Whether it runs itself on Enter.
|
|
48
|
+
*/
|
|
49
|
+
function activatesOnEnter(target) {
|
|
50
|
+
if (!(target instanceof Element))
|
|
51
|
+
return false;
|
|
52
|
+
return target.closest('a[href], button, summary, [role="button"]') !== null;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Whether the press is a newline being typed rather than an answer.
|
|
56
|
+
* @param target - What the event was delivered to.
|
|
57
|
+
* @returns Whether it should be left alone.
|
|
58
|
+
*/
|
|
59
|
+
function takesNewlines(target) {
|
|
60
|
+
if (!(target instanceof HTMLElement))
|
|
61
|
+
return false;
|
|
62
|
+
return target.isContentEditable || target.tagName === 'TEXTAREA';
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=useConfirmOnEnter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useConfirmOnEnter.js","sourceRoot":"","sources":["../../../src/panel/ui/useConfirmOnEnter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE3D;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,iBAAiB,CAC/B,MAAe,EACf,SAAqB;IAErB,6EAA6E;IAC7E,gDAAgD;IAChD,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IAClC,eAAe,CAAC,GAAG,EAAE;QACnB,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,MAAM;YAAE,OAAO;QAEpB,SAAS,aAAa,CAAC,KAAoB;YACzC,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,gBAAgB;gBAAE,OAAO;YAC5D,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBACrE,OAAO;YACT,CAAC;YACD,IAAI,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC;gBAAE,OAAO;YAC1E,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,CAAC;QAED,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACpD,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IACtE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,MAA0B;IAClD,IAAI,CAAC,CAAC,MAAM,YAAY,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/C,OAAO,MAAM,CAAC,OAAO,CAAC,2CAA2C,CAAC,KAAK,IAAI,CAAC;AAC9E,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAC,MAA0B;IAC/C,IAAI,CAAC,CAAC,MAAM,YAAY,WAAW,CAAC;QAAE,OAAO,KAAK,CAAC;IACnD,OAAO,MAAM,CAAC,iBAAiB,IAAI,MAAM,CAAC,OAAO,KAAK,UAAU,CAAC;AACnE,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/** The filter box of a panel, and the toolbar item that reveals it. */
|
|
2
|
+
export interface FilterBox {
|
|
3
|
+
/** What the user typed, empty while nothing is filtered out. */
|
|
4
|
+
filter: string;
|
|
5
|
+
/** Called with what the user typed. */
|
|
6
|
+
setFilter: (filter: string) => void;
|
|
7
|
+
/** Whether the box is showing. */
|
|
8
|
+
showFilter: boolean;
|
|
9
|
+
/** Reveals the box, or hides it and drops what was typed. */
|
|
10
|
+
toggleFilter: () => void;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* A filter box that is out of the way until it is asked for.
|
|
14
|
+
*
|
|
15
|
+
* Closing it drops what was typed, because a box that is out of sight can no
|
|
16
|
+
* longer explain why half the list is missing — which is the one rule every
|
|
17
|
+
* panel offering a filter has to keep, so it is kept here rather than in each
|
|
18
|
+
* of them.
|
|
19
|
+
* @param defaultShowFilter - Whether the box is open to begin with.
|
|
20
|
+
* @returns The state of the box, and the toggle a toolbar item calls.
|
|
21
|
+
*/
|
|
22
|
+
export declare function useFilterBox(defaultShowFilter?: boolean): FilterBox;
|
|
23
|
+
//# sourceMappingURL=useFilterBox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFilterBox.d.ts","sourceRoot":"","sources":["../../../src/panel/ui/useFilterBox.ts"],"names":[],"mappings":"AAEA,uEAAuE;AACvE,MAAM,WAAW,SAAS;IACxB,gEAAgE;IAChE,MAAM,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,kCAAkC;IAClC,UAAU,EAAE,OAAO,CAAC;IACpB,6DAA6D;IAC7D,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,iBAAiB,UAAQ,GAAG,SAAS,CAUjE"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { useState } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* A filter box that is out of the way until it is asked for.
|
|
4
|
+
*
|
|
5
|
+
* Closing it drops what was typed, because a box that is out of sight can no
|
|
6
|
+
* longer explain why half the list is missing — which is the one rule every
|
|
7
|
+
* panel offering a filter has to keep, so it is kept here rather than in each
|
|
8
|
+
* of them.
|
|
9
|
+
* @param defaultShowFilter - Whether the box is open to begin with.
|
|
10
|
+
* @returns The state of the box, and the toggle a toolbar item calls.
|
|
11
|
+
*/
|
|
12
|
+
export function useFilterBox(defaultShowFilter = false) {
|
|
13
|
+
const [filter, setFilter] = useState('');
|
|
14
|
+
const [showFilter, setShowFilter] = useState(defaultShowFilter);
|
|
15
|
+
function toggleFilter() {
|
|
16
|
+
if (showFilter)
|
|
17
|
+
setFilter('');
|
|
18
|
+
setShowFilter(!showFilter);
|
|
19
|
+
}
|
|
20
|
+
return { filter, setFilter, showFilter, toggleFilter };
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=useFilterBox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFilterBox.js","sourceRoot":"","sources":["../../../src/panel/ui/useFilterBox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAcjC;;;;;;;;;GASG;AACH,MAAM,UAAU,YAAY,CAAC,iBAAiB,GAAG,KAAK;IACpD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACzC,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IAEhE,SAAS,YAAY;QACnB,IAAI,UAAU;YAAE,SAAS,CAAC,EAAE,CAAC,CAAC;QAC9B,aAAa,CAAC,CAAC,UAAU,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC;AACzD,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { RefObject } from 'react';
|
|
2
|
+
import type { RowSpacers } from '../core/rowSpacers.ts';
|
|
3
|
+
/** Which rows a scrolled table draws, and the empty room around them. */
|
|
4
|
+
export interface VirtualRows extends RowSpacers {
|
|
5
|
+
/** The indices of the rows to draw, in the order they are listed. */
|
|
6
|
+
indices: number[];
|
|
7
|
+
/**
|
|
8
|
+
* What a drawn row reports its height through, as its `ref`. A row also has
|
|
9
|
+
* to carry `data-index`, which is how the measurement finds its way back to
|
|
10
|
+
* the row it was taken from.
|
|
11
|
+
*
|
|
12
|
+
* Any element, not a `<tr>`: a peak table's rows are table rows, while a
|
|
13
|
+
* fragment list's are `<div>`s carrying a drawing, and both are measured the
|
|
14
|
+
* same way.
|
|
15
|
+
*/
|
|
16
|
+
measure: (node: HTMLElement | null) => void;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Draw only the rows the scroll region is showing, however long the list is.
|
|
20
|
+
*
|
|
21
|
+
* A peak table is a few hundred rows at rest and several thousand once the
|
|
22
|
+
* window is opened onto the whole spectrum, and every one of those rows is four
|
|
23
|
+
* cells the browser lays out, styles and keeps — a cost paid on the sort, on the
|
|
24
|
+
* filter, and on every zoom, for rows nobody is looking at. Drawing the twenty
|
|
25
|
+
* or so in view and standing two empty rows in for the rest makes that cost the
|
|
26
|
+
* size of the panel rather than the size of the spectrum.
|
|
27
|
+
*
|
|
28
|
+
* The rows are measured rather than assumed: a row is a line of text, so its
|
|
29
|
+
* height follows the font the page is rendered at and a hard-coded one would
|
|
30
|
+
* put the end of a five thousand row list several screens away from the bottom
|
|
31
|
+
* of the scrollbar. `estimatedRowHeight` is only what the list is worth before
|
|
32
|
+
* a single row has been drawn.
|
|
33
|
+
*
|
|
34
|
+
* The table header scrolls inside the same region and is not part of the list,
|
|
35
|
+
* so the rows really sit one header lower than this reckons. It is left that
|
|
36
|
+
* way deliberately: the overscan already draws more rows than are in view, on
|
|
37
|
+
* both sides, and it absorbs a header's worth of offset without the extra
|
|
38
|
+
* measurement — and without the render that measuring it would cost on the way
|
|
39
|
+
* to the same picture.
|
|
40
|
+
* @param scrollRef - The region the rows scroll in.
|
|
41
|
+
* @param count - How many rows the list holds.
|
|
42
|
+
* @param estimatedRowHeight - What one row is worth until one has been drawn.
|
|
43
|
+
* @returns The rows to draw and the spacers standing in for the others.
|
|
44
|
+
*/
|
|
45
|
+
export declare function useVirtualRows(scrollRef: RefObject<HTMLDivElement | null>, count: number, estimatedRowHeight: number): VirtualRows;
|
|
46
|
+
//# sourceMappingURL=useVirtualRows.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useVirtualRows.d.ts","sourceRoot":"","sources":["../../../src/panel/ui/useVirtualRows.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGxD,yEAAyE;AACzE,MAAM,WAAW,WAAY,SAAQ,UAAU;IAC7C,qEAAqE;IACrE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB;;;;;;;;OAQG;IACH,OAAO,EAAE,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;CAC7C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,EAC3C,KAAK,EAAE,MAAM,EACb,kBAAkB,EAAE,MAAM,GACzB,WAAW,CAmBb"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { useVirtualizer } from '@tanstack/react-virtual';
|
|
2
|
+
import { rowSpacers } from "../core/rowSpacers.js";
|
|
3
|
+
/**
|
|
4
|
+
* Draw only the rows the scroll region is showing, however long the list is.
|
|
5
|
+
*
|
|
6
|
+
* A peak table is a few hundred rows at rest and several thousand once the
|
|
7
|
+
* window is opened onto the whole spectrum, and every one of those rows is four
|
|
8
|
+
* cells the browser lays out, styles and keeps — a cost paid on the sort, on the
|
|
9
|
+
* filter, and on every zoom, for rows nobody is looking at. Drawing the twenty
|
|
10
|
+
* or so in view and standing two empty rows in for the rest makes that cost the
|
|
11
|
+
* size of the panel rather than the size of the spectrum.
|
|
12
|
+
*
|
|
13
|
+
* The rows are measured rather than assumed: a row is a line of text, so its
|
|
14
|
+
* height follows the font the page is rendered at and a hard-coded one would
|
|
15
|
+
* put the end of a five thousand row list several screens away from the bottom
|
|
16
|
+
* of the scrollbar. `estimatedRowHeight` is only what the list is worth before
|
|
17
|
+
* a single row has been drawn.
|
|
18
|
+
*
|
|
19
|
+
* The table header scrolls inside the same region and is not part of the list,
|
|
20
|
+
* so the rows really sit one header lower than this reckons. It is left that
|
|
21
|
+
* way deliberately: the overscan already draws more rows than are in view, on
|
|
22
|
+
* both sides, and it absorbs a header's worth of offset without the extra
|
|
23
|
+
* measurement — and without the render that measuring it would cost on the way
|
|
24
|
+
* to the same picture.
|
|
25
|
+
* @param scrollRef - The region the rows scroll in.
|
|
26
|
+
* @param count - How many rows the list holds.
|
|
27
|
+
* @param estimatedRowHeight - What one row is worth until one has been drawn.
|
|
28
|
+
* @returns The rows to draw and the spacers standing in for the others.
|
|
29
|
+
*/
|
|
30
|
+
export function useVirtualRows(scrollRef, count, estimatedRowHeight) {
|
|
31
|
+
const virtualizer = useVirtualizer({
|
|
32
|
+
count,
|
|
33
|
+
getScrollElement: () => scrollRef.current,
|
|
34
|
+
estimateSize: () => estimatedRowHeight,
|
|
35
|
+
overscan: OVERSCAN,
|
|
36
|
+
});
|
|
37
|
+
const drawn = virtualizer.getVirtualItems();
|
|
38
|
+
const indices = new Array(drawn.length);
|
|
39
|
+
for (let position = 0; position < drawn.length; position++) {
|
|
40
|
+
indices[position] = drawn[position].index;
|
|
41
|
+
}
|
|
42
|
+
return {
|
|
43
|
+
indices,
|
|
44
|
+
...rowSpacers(drawn, virtualizer.getTotalSize()),
|
|
45
|
+
measure: virtualizer.measureElement,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* How many rows are drawn beyond each end of the region.
|
|
50
|
+
*
|
|
51
|
+
* Enough that a wheel gesture or a drag of the scrollbar never reaches the edge
|
|
52
|
+
* of what was drawn before the next render has run, and enough to cover the
|
|
53
|
+
* header the list is offset by.
|
|
54
|
+
*/
|
|
55
|
+
const OVERSCAN = 12;
|
|
56
|
+
//# sourceMappingURL=useVirtualRows.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useVirtualRows.js","sourceRoot":"","sources":["../../../src/panel/ui/useVirtualRows.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAIzD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAkBnD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,UAAU,cAAc,CAC5B,SAA2C,EAC3C,KAAa,EACb,kBAA0B;IAE1B,MAAM,WAAW,GAAG,cAAc,CAAC;QACjC,KAAK;QACL,gBAAgB,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO;QACzC,YAAY,EAAE,GAAG,EAAE,CAAC,kBAAkB;QACtC,QAAQ,EAAE,QAAQ;KACnB,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,WAAW,CAAC,eAAe,EAAE,CAAC;IAC5C,MAAM,OAAO,GAAG,IAAI,KAAK,CAAS,KAAK,CAAC,MAAM,CAAC,CAAC;IAChD,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC;QAC3D,OAAO,CAAC,QAAQ,CAAC,GAAI,KAAK,CAAC,QAAQ,CAAuB,CAAC,KAAK,CAAC;IACnE,CAAC;IAED,OAAO;QACL,OAAO;QACP,GAAG,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,YAAY,EAAE,CAAC;QAChD,OAAO,EAAE,WAAW,CAAC,cAAc;KACpC,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,QAAQ,GAAG,EAAE,CAAC"}
|