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,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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Drawing only the rows the page is showing, for a list that scrolls with it.
|
|
3
|
+
*
|
|
4
|
+
* `useVirtualRows` measures a scroll region of its own, which is what a panel
|
|
5
|
+
* beside a chart has. A table filling a tab has none: it flows down the document
|
|
6
|
+
* and the browser window is what scrolls it, so giving the list its own
|
|
7
|
+
* `overflow` would grow a second scrollbar inside the first and cap the table at
|
|
8
|
+
* whatever height it was handed — a layout change made to serve the virtualiser
|
|
9
|
+
* rather than the reader.
|
|
10
|
+
*/
|
|
11
|
+
import type { VirtualRows } from './useVirtualRows.ts';
|
|
12
|
+
/** The rows to draw, and what the list reports its own position through. */
|
|
13
|
+
export interface VirtualWindowRows extends VirtualRows {
|
|
14
|
+
/**
|
|
15
|
+
* What the element holding the rows reports its position through, as its
|
|
16
|
+
* `ref`. Without it every offset is reckoned from the top of the document and
|
|
17
|
+
* the wrong rows are drawn, by however tall whatever sits above the list is.
|
|
18
|
+
*/
|
|
19
|
+
measureList: (node: HTMLElement | null) => void;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Draw only the rows the page is showing, however long the list is.
|
|
23
|
+
*
|
|
24
|
+
* The rows are measured against the window, so the list only has to say how far
|
|
25
|
+
* down the page it begins — which is what the virtualiser calls its scroll
|
|
26
|
+
* margin, and what `measureList` reports.
|
|
27
|
+
*
|
|
28
|
+
* That position is read in a ref callback rather than in an effect, which is
|
|
29
|
+
* how `useChartSize` reads a box for the same reason: the node is the only
|
|
30
|
+
* thing the measurement needs, so it is taken the moment React has one and
|
|
31
|
+
* taken again whenever it hands over another. A filter that cuts a thousand
|
|
32
|
+
* rows to fifty changes how tall the list is and not where it starts, so there
|
|
33
|
+
* is nothing to remeasure when the count moves.
|
|
34
|
+
* @param count - How many rows the list holds.
|
|
35
|
+
* @param estimatedRowHeight - What one row is worth until one has been drawn.
|
|
36
|
+
* @returns The rows to draw, the spacers standing in for the others, and the
|
|
37
|
+
* ref the list reports its position through.
|
|
38
|
+
*/
|
|
39
|
+
export declare function useVirtualWindowRows(count: number, estimatedRowHeight: number): VirtualWindowRows;
|
|
40
|
+
//# sourceMappingURL=useVirtualWindowRows.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useVirtualWindowRows.d.ts","sourceRoot":"","sources":["../../../src/panel/ui/useVirtualWindowRows.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,4EAA4E;AAC5E,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACpD;;;;OAIG;IACH,WAAW,EAAE,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;CACjD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,EACb,kBAAkB,EAAE,MAAM,GACzB,iBAAiB,CA2BnB"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Drawing only the rows the page is showing, for a list that scrolls with it.
|
|
3
|
+
*
|
|
4
|
+
* `useVirtualRows` measures a scroll region of its own, which is what a panel
|
|
5
|
+
* beside a chart has. A table filling a tab has none: it flows down the document
|
|
6
|
+
* and the browser window is what scrolls it, so giving the list its own
|
|
7
|
+
* `overflow` would grow a second scrollbar inside the first and cap the table at
|
|
8
|
+
* whatever height it was handed — a layout change made to serve the virtualiser
|
|
9
|
+
* rather than the reader.
|
|
10
|
+
*/
|
|
11
|
+
import { useWindowVirtualizer } from '@tanstack/react-virtual';
|
|
12
|
+
import { useCallback, useState } from 'react';
|
|
13
|
+
import { rowSpacers } from "../core/rowSpacers.js";
|
|
14
|
+
/**
|
|
15
|
+
* Draw only the rows the page is showing, however long the list is.
|
|
16
|
+
*
|
|
17
|
+
* The rows are measured against the window, so the list only has to say how far
|
|
18
|
+
* down the page it begins — which is what the virtualiser calls its scroll
|
|
19
|
+
* margin, and what `measureList` reports.
|
|
20
|
+
*
|
|
21
|
+
* That position is read in a ref callback rather than in an effect, which is
|
|
22
|
+
* how `useChartSize` reads a box for the same reason: the node is the only
|
|
23
|
+
* thing the measurement needs, so it is taken the moment React has one and
|
|
24
|
+
* taken again whenever it hands over another. A filter that cuts a thousand
|
|
25
|
+
* rows to fifty changes how tall the list is and not where it starts, so there
|
|
26
|
+
* is nothing to remeasure when the count moves.
|
|
27
|
+
* @param count - How many rows the list holds.
|
|
28
|
+
* @param estimatedRowHeight - What one row is worth until one has been drawn.
|
|
29
|
+
* @returns The rows to draw, the spacers standing in for the others, and the
|
|
30
|
+
* ref the list reports its position through.
|
|
31
|
+
*/
|
|
32
|
+
export function useVirtualWindowRows(count, estimatedRowHeight) {
|
|
33
|
+
const [scrollMargin, setScrollMargin] = useState(0);
|
|
34
|
+
const measureList = useCallback((node) => {
|
|
35
|
+
if (node === null)
|
|
36
|
+
return;
|
|
37
|
+
setScrollMargin(node.getBoundingClientRect().top + window.scrollY);
|
|
38
|
+
}, []);
|
|
39
|
+
const virtualizer = useWindowVirtualizer({
|
|
40
|
+
count,
|
|
41
|
+
estimateSize: () => estimatedRowHeight,
|
|
42
|
+
overscan: OVERSCAN,
|
|
43
|
+
scrollMargin,
|
|
44
|
+
});
|
|
45
|
+
const drawn = virtualizer.getVirtualItems();
|
|
46
|
+
const indices = new Array(drawn.length);
|
|
47
|
+
for (let position = 0; position < drawn.length; position++) {
|
|
48
|
+
indices[position] = drawn[position].index;
|
|
49
|
+
}
|
|
50
|
+
return {
|
|
51
|
+
indices,
|
|
52
|
+
...rowSpacers(drawn, virtualizer.getTotalSize()),
|
|
53
|
+
measure: virtualizer.measureElement,
|
|
54
|
+
measureList,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* How many rows are drawn beyond each end of the window.
|
|
59
|
+
*
|
|
60
|
+
* The same reasoning as `useVirtualRows`, and the same number: enough that a
|
|
61
|
+
* wheel gesture never reaches the edge of what was drawn before the next render
|
|
62
|
+
* has run.
|
|
63
|
+
*/
|
|
64
|
+
const OVERSCAN = 12;
|
|
65
|
+
//# sourceMappingURL=useVirtualWindowRows.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useVirtualWindowRows.js","sourceRoot":"","sources":["../../../src/panel/ui/useVirtualWindowRows.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE9C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAcnD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAa,EACb,kBAA0B;IAE1B,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEpD,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,IAAwB,EAAE,EAAE;QAC3D,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO;QAC1B,eAAe,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IACrE,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,WAAW,GAAG,oBAAoB,CAAC;QACvC,KAAK;QACL,YAAY,EAAE,GAAG,EAAE,CAAC,kBAAkB;QACtC,QAAQ,EAAE,QAAQ;QAClB,YAAY;KACb,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;QACnC,WAAW;KACZ,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,QAAQ,GAAG,EAAE,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How a set of conformers divides itself between its minima at a temperature.
|
|
3
|
+
*
|
|
4
|
+
* Each conformer in the list is one minimum of the surface, so the share of
|
|
5
|
+
* molecules sitting in it is its Boltzmann factor over the sum of them all.
|
|
6
|
+
* Mirror-image conformers are separate entries and therefore counted twice,
|
|
7
|
+
* which is right: they are two distinct microstates, and that is what makes
|
|
8
|
+
* butane two-thirds gauche at room temperature rather than one-half.
|
|
9
|
+
*
|
|
10
|
+
* What this is not: a free energy. The weights come from a single energy per
|
|
11
|
+
* conformer, with no vibrational entropy, no zero-point energy and no solvent,
|
|
12
|
+
* so a share is the shape of the answer rather than the answer. It is also only
|
|
13
|
+
* as good as the energies handed to it — see {@link boltzmannConfidence}, which
|
|
14
|
+
* is what a table showing these shares says out loud.
|
|
15
|
+
*/
|
|
16
|
+
/** Room temperature, in kelvin, and what a share is quoted at unless asked otherwise. */
|
|
17
|
+
export declare const ROOM_TEMPERATURE = 300;
|
|
18
|
+
/**
|
|
19
|
+
* The gas constant in kcal/(mol·K), matching MMFF94's own energy unit.
|
|
20
|
+
*
|
|
21
|
+
* At {@link ROOM_TEMPERATURE} this makes RT 0.596 kcal/mol, so a conformer one
|
|
22
|
+
* kcal/mol up is populated about a fifth as much as the lowest.
|
|
23
|
+
*/
|
|
24
|
+
export declare const GAS_CONSTANT = 0.001987204259;
|
|
25
|
+
/**
|
|
26
|
+
* The share of molecules in each conformer at thermal equilibrium.
|
|
27
|
+
*
|
|
28
|
+
* The energies are taken relative to whichever is lowest, so they may be
|
|
29
|
+
* absolute or already relative. A conformer whose energy is unknown takes no
|
|
30
|
+
* share and is left out of the sum: it cannot be placed on the surface, and
|
|
31
|
+
* spreading the remainder over the others is a smaller lie than inventing a
|
|
32
|
+
* weight for it.
|
|
33
|
+
* @param energies - One energy per conformer in kcal/mol, `null` where unknown.
|
|
34
|
+
* @param temperature - Temperature in kelvin.
|
|
35
|
+
* @default ROOM_TEMPERATURE
|
|
36
|
+
* @returns One share per conformer, from 0 to 1 and summing to 1 over the ones
|
|
37
|
+
* that have an energy; `null` wherever the energy was `null`.
|
|
38
|
+
*/
|
|
39
|
+
export declare function boltzmannShares(energies: ReadonlyArray<number | null>, temperature?: number): Array<number | null>;
|
|
40
|
+
/**
|
|
41
|
+
* The factor a share is uncertain by, given how well the energies behind it are
|
|
42
|
+
* known.
|
|
43
|
+
*
|
|
44
|
+
* A population is exponential in the energy gap, so an error in a relative
|
|
45
|
+
* energy is an error in a share by `exp(error / RT)` — and RT is 0.596 kcal/mol
|
|
46
|
+
* at {@link ROOM_TEMPERATURE}. A force field that ranks conformers to within
|
|
47
|
+
* about 1.5 kcal/mol therefore places a population to within a factor of
|
|
48
|
+
* roughly twelve, which is why a share read off one is a shape and not a
|
|
49
|
+
* number.
|
|
50
|
+
* @param energyError - The typical error of a relative energy, kcal/mol.
|
|
51
|
+
* @param temperature - Temperature in kelvin.
|
|
52
|
+
* @default ROOM_TEMPERATURE
|
|
53
|
+
* @returns The multiplicative factor, at least 1.
|
|
54
|
+
*/
|
|
55
|
+
export declare function boltzmannConfidence(energyError: number, temperature?: number): number;
|
|
56
|
+
//# sourceMappingURL=conformerBoltzmann.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conformerBoltzmann.d.ts","sourceRoot":"","sources":["../../../src/structure/core/conformerBoltzmann.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,yFAAyF;AACzF,eAAO,MAAM,gBAAgB,MAAM,CAAC;AAEpC;;;;;GAKG;AACH,eAAO,MAAM,YAAY,iBAAoB,CAAC;AAE9C;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,EACtC,WAAW,GAAE,MAAyB,GACrC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAiCtB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,EACnB,WAAW,GAAE,MAAyB,GACrC,MAAM,CAIR"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How a set of conformers divides itself between its minima at a temperature.
|
|
3
|
+
*
|
|
4
|
+
* Each conformer in the list is one minimum of the surface, so the share of
|
|
5
|
+
* molecules sitting in it is its Boltzmann factor over the sum of them all.
|
|
6
|
+
* Mirror-image conformers are separate entries and therefore counted twice,
|
|
7
|
+
* which is right: they are two distinct microstates, and that is what makes
|
|
8
|
+
* butane two-thirds gauche at room temperature rather than one-half.
|
|
9
|
+
*
|
|
10
|
+
* What this is not: a free energy. The weights come from a single energy per
|
|
11
|
+
* conformer, with no vibrational entropy, no zero-point energy and no solvent,
|
|
12
|
+
* so a share is the shape of the answer rather than the answer. It is also only
|
|
13
|
+
* as good as the energies handed to it — see {@link boltzmannConfidence}, which
|
|
14
|
+
* is what a table showing these shares says out loud.
|
|
15
|
+
*/
|
|
16
|
+
/** Room temperature, in kelvin, and what a share is quoted at unless asked otherwise. */
|
|
17
|
+
export const ROOM_TEMPERATURE = 300;
|
|
18
|
+
/**
|
|
19
|
+
* The gas constant in kcal/(mol·K), matching MMFF94's own energy unit.
|
|
20
|
+
*
|
|
21
|
+
* At {@link ROOM_TEMPERATURE} this makes RT 0.596 kcal/mol, so a conformer one
|
|
22
|
+
* kcal/mol up is populated about a fifth as much as the lowest.
|
|
23
|
+
*/
|
|
24
|
+
export const GAS_CONSTANT = 0.001_987_204_259;
|
|
25
|
+
/**
|
|
26
|
+
* The share of molecules in each conformer at thermal equilibrium.
|
|
27
|
+
*
|
|
28
|
+
* The energies are taken relative to whichever is lowest, so they may be
|
|
29
|
+
* absolute or already relative. A conformer whose energy is unknown takes no
|
|
30
|
+
* share and is left out of the sum: it cannot be placed on the surface, and
|
|
31
|
+
* spreading the remainder over the others is a smaller lie than inventing a
|
|
32
|
+
* weight for it.
|
|
33
|
+
* @param energies - One energy per conformer in kcal/mol, `null` where unknown.
|
|
34
|
+
* @param temperature - Temperature in kelvin.
|
|
35
|
+
* @default ROOM_TEMPERATURE
|
|
36
|
+
* @returns One share per conformer, from 0 to 1 and summing to 1 over the ones
|
|
37
|
+
* that have an energy; `null` wherever the energy was `null`.
|
|
38
|
+
*/
|
|
39
|
+
export function boltzmannShares(energies, temperature = ROOM_TEMPERATURE) {
|
|
40
|
+
const shares = new Array(energies.length).fill(null);
|
|
41
|
+
if (energies.length === 0)
|
|
42
|
+
return shares;
|
|
43
|
+
let lowest = Number.POSITIVE_INFINITY;
|
|
44
|
+
for (const energy of energies) {
|
|
45
|
+
if (energy !== null && Number.isFinite(energy) && energy < lowest) {
|
|
46
|
+
lowest = energy;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
if (lowest === Number.POSITIVE_INFINITY)
|
|
50
|
+
return shares;
|
|
51
|
+
// Measured from the lowest, so every exponent is at most zero and the sum
|
|
52
|
+
// cannot overflow however far apart the energies are.
|
|
53
|
+
const rt = GAS_CONSTANT * temperature;
|
|
54
|
+
if (!(rt > 0))
|
|
55
|
+
return shares;
|
|
56
|
+
const factors = new Array(energies.length).fill(null);
|
|
57
|
+
let total = 0;
|
|
58
|
+
for (let index = 0; index < energies.length; index++) {
|
|
59
|
+
const energy = energies[index] ?? null;
|
|
60
|
+
if (energy === null || !Number.isFinite(energy))
|
|
61
|
+
continue;
|
|
62
|
+
const factor = Math.exp(-(energy - lowest) / rt);
|
|
63
|
+
factors[index] = factor;
|
|
64
|
+
total += factor;
|
|
65
|
+
}
|
|
66
|
+
if (total === 0)
|
|
67
|
+
return shares;
|
|
68
|
+
for (let index = 0; index < factors.length; index++) {
|
|
69
|
+
const factor = factors[index] ?? null;
|
|
70
|
+
if (factor !== null)
|
|
71
|
+
shares[index] = factor / total;
|
|
72
|
+
}
|
|
73
|
+
return shares;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* The factor a share is uncertain by, given how well the energies behind it are
|
|
77
|
+
* known.
|
|
78
|
+
*
|
|
79
|
+
* A population is exponential in the energy gap, so an error in a relative
|
|
80
|
+
* energy is an error in a share by `exp(error / RT)` — and RT is 0.596 kcal/mol
|
|
81
|
+
* at {@link ROOM_TEMPERATURE}. A force field that ranks conformers to within
|
|
82
|
+
* about 1.5 kcal/mol therefore places a population to within a factor of
|
|
83
|
+
* roughly twelve, which is why a share read off one is a shape and not a
|
|
84
|
+
* number.
|
|
85
|
+
* @param energyError - The typical error of a relative energy, kcal/mol.
|
|
86
|
+
* @param temperature - Temperature in kelvin.
|
|
87
|
+
* @default ROOM_TEMPERATURE
|
|
88
|
+
* @returns The multiplicative factor, at least 1.
|
|
89
|
+
*/
|
|
90
|
+
export function boltzmannConfidence(energyError, temperature = ROOM_TEMPERATURE) {
|
|
91
|
+
const rt = GAS_CONSTANT * temperature;
|
|
92
|
+
if (!(rt > 0) || !Number.isFinite(energyError) || energyError <= 0)
|
|
93
|
+
return 1;
|
|
94
|
+
return Math.exp(energyError / rt);
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=conformerBoltzmann.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conformerBoltzmann.js","sourceRoot":"","sources":["../../../src/structure/core/conformerBoltzmann.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,yFAAyF;AACzF,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAEpC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,iBAAiB,CAAC;AAE9C;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,eAAe,CAC7B,QAAsC,EACtC,cAAsB,gBAAgB;IAEtC,MAAM,MAAM,GAAyB,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3E,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IAEzC,IAAI,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC;IACtC,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC9B,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,MAAM,EAAE,CAAC;YAClE,MAAM,GAAG,MAAM,CAAC;QAClB,CAAC;IACH,CAAC;IACD,IAAI,MAAM,KAAK,MAAM,CAAC,iBAAiB;QAAE,OAAO,MAAM,CAAC;IAEvD,0EAA0E;IAC1E,sDAAsD;IACtD,MAAM,EAAE,GAAG,YAAY,GAAG,WAAW,CAAC;IACtC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAAE,OAAO,MAAM,CAAC;IAE7B,MAAM,OAAO,GAAyB,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5E,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACrD,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;QACvC,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,SAAS;QAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;QACjD,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;QACxB,KAAK,IAAI,MAAM,CAAC;IAClB,CAAC;IACD,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IAE/B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACpD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;QACtC,IAAI,MAAM,KAAK,IAAI;YAAE,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC;IACtD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,mBAAmB,CACjC,WAAmB,EACnB,cAAsB,gBAAgB;IAEtC,MAAM,EAAE,GAAG,YAAY,GAAG,WAAW,CAAC;IACtC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,WAAW,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAC7E,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which energy of a conformer a reader is being shown.
|
|
3
|
+
*
|
|
4
|
+
* A refined conformer carries two of everything — what the force field said and
|
|
5
|
+
* what the better method said afterwards — and a table that mixes them is a
|
|
6
|
+
* ranking of nothing. So every column reads through one of these, and they all
|
|
7
|
+
* take the same ranking.
|
|
8
|
+
*/
|
|
9
|
+
import type { ConformerRanking } from './conformers.ts';
|
|
10
|
+
/**
|
|
11
|
+
* What a refinement has to say for an energy column to read it.
|
|
12
|
+
*
|
|
13
|
+
* The structural minimum rather than the whole `ConformerRefinement`, so a site
|
|
14
|
+
* that carries its conformers in a shape of its own — positions instead of a
|
|
15
|
+
* molfile, say — can still be read by the same helpers and drawn by the same
|
|
16
|
+
* table.
|
|
17
|
+
*/
|
|
18
|
+
export interface ConformerRowRefinement {
|
|
19
|
+
/** The rank this conformer held before the refinement reordered the set. */
|
|
20
|
+
forceFieldId: number;
|
|
21
|
+
/** Total energy at the relaxed geometry, kcal/mol. */
|
|
22
|
+
energy: number;
|
|
23
|
+
/** Energy above the most stable refined conformer, kcal/mol. */
|
|
24
|
+
relativeEnergy: number;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* The least a conformer must carry to be ranked and drawn.
|
|
28
|
+
*
|
|
29
|
+
* `Conformer` from `react-cheminfo/conformers` satisfies it, and so does any
|
|
30
|
+
* per-site record that keeps the same three numbers.
|
|
31
|
+
*/
|
|
32
|
+
export interface ConformerRow {
|
|
33
|
+
/** 1-based rank in the set, most stable first. */
|
|
34
|
+
id: number;
|
|
35
|
+
/** Total force-field energy in kcal/mol, `null` when not computed. */
|
|
36
|
+
energy: number | null;
|
|
37
|
+
/** Energy above the most stable conformer, `null` without an energy. */
|
|
38
|
+
relativeEnergy: number | null;
|
|
39
|
+
/**
|
|
40
|
+
* What a better method said, once the set has been refined.
|
|
41
|
+
* @default null
|
|
42
|
+
*/
|
|
43
|
+
refinement?: ConformerRowRefinement | null;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* The energy above the most stable conformer, in the ranking asked for.
|
|
47
|
+
* @param conformer - The conformer to read.
|
|
48
|
+
* @param ranking - Which method's energies to read.
|
|
49
|
+
* @default 'force-field'
|
|
50
|
+
* @returns kcal/mol above the lowest, or `null` when that method produced none.
|
|
51
|
+
*/
|
|
52
|
+
export declare function relativeEnergyOf(conformer: ConformerRow, ranking?: ConformerRanking): number | null;
|
|
53
|
+
/**
|
|
54
|
+
* The total energy, in the ranking asked for, so the two columns of a row
|
|
55
|
+
* describe one method.
|
|
56
|
+
* @param conformer - The conformer to read.
|
|
57
|
+
* @param ranking - Which method's energies to read.
|
|
58
|
+
* @default 'force-field'
|
|
59
|
+
* @returns kcal/mol, or `null` when that method produced none.
|
|
60
|
+
*/
|
|
61
|
+
export declare function totalEnergyOf(conformer: ConformerRow, ranking?: ConformerRanking): number | null;
|
|
62
|
+
/**
|
|
63
|
+
* The ranking a set should be read in: refined once anything has been refined,
|
|
64
|
+
* the force field's until then.
|
|
65
|
+
* @param conformers - The set to inspect.
|
|
66
|
+
* @returns `'refined'` when at least one conformer carries a refinement.
|
|
67
|
+
*/
|
|
68
|
+
export declare function bestRanking(conformers: readonly ConformerRow[]): ConformerRanking;
|
|
69
|
+
//# sourceMappingURL=conformerEnergy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conformerEnergy.d.ts","sourceRoot":"","sources":["../../../src/structure/core/conformerEnergy.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD;;;;;;;GAOG;AACH,MAAM,WAAW,sBAAsB;IACrC,4EAA4E;IAC5E,YAAY,EAAE,MAAM,CAAC;IACrB,sDAAsD;IACtD,MAAM,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,kDAAkD;IAClD,EAAE,EAAE,MAAM,CAAC;IACX,sEAAsE;IACtE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,wEAAwE;IACxE,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B;;;OAGG;IACH,UAAU,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAAC;CAC5C;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,YAAY,EACvB,OAAO,GAAE,gBAAgC,GACxC,MAAM,GAAG,IAAI,CAIf;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,YAAY,EACvB,OAAO,GAAE,gBAAgC,GACxC,MAAM,GAAG,IAAI,CAIf;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CACzB,UAAU,EAAE,SAAS,YAAY,EAAE,GAClC,gBAAgB,CAKlB"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which energy of a conformer a reader is being shown.
|
|
3
|
+
*
|
|
4
|
+
* A refined conformer carries two of everything — what the force field said and
|
|
5
|
+
* what the better method said afterwards — and a table that mixes them is a
|
|
6
|
+
* ranking of nothing. So every column reads through one of these, and they all
|
|
7
|
+
* take the same ranking.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* The energy above the most stable conformer, in the ranking asked for.
|
|
11
|
+
* @param conformer - The conformer to read.
|
|
12
|
+
* @param ranking - Which method's energies to read.
|
|
13
|
+
* @default 'force-field'
|
|
14
|
+
* @returns kcal/mol above the lowest, or `null` when that method produced none.
|
|
15
|
+
*/
|
|
16
|
+
export function relativeEnergyOf(conformer, ranking = 'force-field') {
|
|
17
|
+
return ranking === 'refined'
|
|
18
|
+
? (conformer.refinement?.relativeEnergy ?? null)
|
|
19
|
+
: conformer.relativeEnergy;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* The total energy, in the ranking asked for, so the two columns of a row
|
|
23
|
+
* describe one method.
|
|
24
|
+
* @param conformer - The conformer to read.
|
|
25
|
+
* @param ranking - Which method's energies to read.
|
|
26
|
+
* @default 'force-field'
|
|
27
|
+
* @returns kcal/mol, or `null` when that method produced none.
|
|
28
|
+
*/
|
|
29
|
+
export function totalEnergyOf(conformer, ranking = 'force-field') {
|
|
30
|
+
return ranking === 'refined'
|
|
31
|
+
? (conformer.refinement?.energy ?? null)
|
|
32
|
+
: conformer.energy;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* The ranking a set should be read in: refined once anything has been refined,
|
|
36
|
+
* the force field's until then.
|
|
37
|
+
* @param conformers - The set to inspect.
|
|
38
|
+
* @returns `'refined'` when at least one conformer carries a refinement.
|
|
39
|
+
*/
|
|
40
|
+
export function bestRanking(conformers) {
|
|
41
|
+
for (const conformer of conformers) {
|
|
42
|
+
if (conformer.refinement != null)
|
|
43
|
+
return 'refined';
|
|
44
|
+
}
|
|
45
|
+
return 'force-field';
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=conformerEnergy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conformerEnergy.js","sourceRoot":"","sources":["../../../src/structure/core/conformerEnergy.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA2CH;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC9B,SAAuB,EACvB,UAA4B,aAAa;IAEzC,OAAO,OAAO,KAAK,SAAS;QAC1B,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE,cAAc,IAAI,IAAI,CAAC;QAChD,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC;AAC/B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAC3B,SAAuB,EACvB,UAA4B,aAAa;IAEzC,OAAO,OAAO,KAAK,SAAS;QAC1B,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,IAAI,IAAI,CAAC;QACxC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC;AACvB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CACzB,UAAmC;IAEnC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,SAAS,CAAC,UAAU,IAAI,IAAI;YAAE,OAAO,SAAS,CAAC;IACrD,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
export type { AtomLabelPlacement, LabelledMolecule } from './atomLabels.ts';
|
|
2
2
|
export { applyAtomLabels, customAtomLabel } from './atomLabels.ts';
|
|
3
|
+
export { GAS_CONSTANT, ROOM_TEMPERATURE, boltzmannConfidence, boltzmannShares, } from './conformerBoltzmann.ts';
|
|
4
|
+
export type { ConformerRow, ConformerRowRefinement, } from './conformerEnergy.ts';
|
|
5
|
+
export { bestRanking, relativeEnergyOf, totalEnergyOf, } from './conformerEnergy.ts';
|
|
3
6
|
export type { EditorGesture, EditorGuideKey, EditorGuideLink, EditorGuideOptions, EditorGuideScope, EditorGuideSection, } from './editorGuide.ts';
|
|
4
7
|
export { STRUCTURE_EDITOR_DOCS, STRUCTURE_EDITOR_GUIDE, editorGuideSections, editorKeyLabel, } from './editorGuide.ts';
|
|
5
8
|
export type { EditorToolbarAvailability, EditorToolbarButton, } from './editorToolbar.ts';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/structure/core/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACnE,YAAY,EACV,aAAa,EACb,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,sBAAsB,EACtB,8BAA8B,GAC/B,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,4BAA4B,CAAC;AACpC,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAChE,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAChF,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACtE,YAAY,EACV,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,cAAc,GACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,WAAW,EACX,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACxE,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACpE,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,YAAY,EACV,eAAe,EACf,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/structure/core/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,GAChB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,YAAY,EACZ,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,aAAa,GACd,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,aAAa,EACb,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,sBAAsB,EACtB,8BAA8B,GAC/B,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,4BAA4B,CAAC;AACpC,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAChE,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAChF,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACtE,YAAY,EACV,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,cAAc,GACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,WAAW,EACX,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACxE,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACpE,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,YAAY,EACV,eAAe,EACf,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export { applyAtomLabels, customAtomLabel } from "./atomLabels.js";
|
|
2
|
+
export { GAS_CONSTANT, ROOM_TEMPERATURE, boltzmannConfidence, boltzmannShares, } from "./conformerBoltzmann.js";
|
|
3
|
+
export { bestRanking, relativeEnergyOf, totalEnergyOf, } from "./conformerEnergy.js";
|
|
2
4
|
export { STRUCTURE_EDITOR_DOCS, STRUCTURE_EDITOR_GUIDE, editorGuideSections, editorKeyLabel, } from "./editorGuide.js";
|
|
3
5
|
export { EDITOR_TOOLBAR_BUTTONS, isEditorToolbarButtonAvailable, } from "./editorToolbar.js";
|
|
4
6
|
export { EDITOR_TOOLBAR_COLUMNS, EDITOR_TOOLBAR_ROWS, editorToolbarButtonAt, editorToolbarButtonBox, } from "./editorToolbarGeometry.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/structure/core/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/structure/core/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,GAChB,MAAM,yBAAyB,CAAC;AAKjC,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,aAAa,GACd,MAAM,sBAAsB,CAAC;AAS9B,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,cAAc,GACf,MAAM,kBAAkB,CAAC;AAK1B,OAAO,EACL,sBAAsB,EACtB,8BAA8B,GAC/B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEhF,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAOtE,OAAO,EACL,WAAW,EACX,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAExE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEpE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAKrD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A conformer set, most stable first, as a table one row of which is selected.
|
|
3
|
+
*
|
|
4
|
+
* Two sites read the same set for different reasons — one picks the geometry a
|
|
5
|
+
* calculation runs on, the other reads the ranking itself — so the columns are
|
|
6
|
+
* a prop rather than a variant. Everything else is the same table: rows ordered
|
|
7
|
+
* by energy, one selected, the arrows walking it.
|
|
8
|
+
*
|
|
9
|
+
* The population column is the reason the ranking matters. A share is
|
|
10
|
+
* exponential in the energy gap, so it inherits the error of whatever produced
|
|
11
|
+
* the energies and magnifies it; the caption under the table says which method
|
|
12
|
+
* that was, and `boltzmannConfidence` says what its error is worth. A table
|
|
13
|
+
* that prints a force field's populations without that line is stating a
|
|
14
|
+
* percentage it cannot support.
|
|
15
|
+
*/
|
|
16
|
+
import type { ReactElement } from 'react';
|
|
17
|
+
import type { ConformerRow } from '../core/conformerEnergy.ts';
|
|
18
|
+
import type { ConformerRanking } from '../core/conformers.ts';
|
|
19
|
+
import type { ConformerColumn } from './conformerColumns.ts';
|
|
20
|
+
/** Props of {@link ConformerTable}. */
|
|
21
|
+
export interface ConformerTableProps {
|
|
22
|
+
/** The set, already ordered most stable first. */
|
|
23
|
+
conformers: readonly ConformerRow[];
|
|
24
|
+
/**
|
|
25
|
+
* Which columns to draw, in order.
|
|
26
|
+
* @default PICKER_COLUMNS
|
|
27
|
+
*/
|
|
28
|
+
columns?: readonly ConformerColumn[];
|
|
29
|
+
/**
|
|
30
|
+
* Which method's energies every column reads.
|
|
31
|
+
* @default 'force-field'
|
|
32
|
+
*/
|
|
33
|
+
ranking?: ConformerRanking;
|
|
34
|
+
/**
|
|
35
|
+
* The selected conformer's id, or `null` when none is.
|
|
36
|
+
* @default null
|
|
37
|
+
*/
|
|
38
|
+
selectedId?: number | null;
|
|
39
|
+
/** Called with the id of the row the reader picked. */
|
|
40
|
+
onSelect?: (id: number) => void;
|
|
41
|
+
/**
|
|
42
|
+
* Temperature the shares are quoted at, in kelvin.
|
|
43
|
+
* @default ROOM_TEMPERATURE
|
|
44
|
+
*/
|
|
45
|
+
temperature?: number;
|
|
46
|
+
/**
|
|
47
|
+
* Accessible name of the table.
|
|
48
|
+
* @default 'Conformers, most stable first'
|
|
49
|
+
*/
|
|
50
|
+
label?: string;
|
|
51
|
+
/**
|
|
52
|
+
* What the `id` column says for a conformer. A dense table wants the bare
|
|
53
|
+
* rank; a picker in a narrow column reads better naming the thing.
|
|
54
|
+
* @default String — the rank on its own
|
|
55
|
+
*/
|
|
56
|
+
rowName?: (id: number) => string;
|
|
57
|
+
/**
|
|
58
|
+
* Headings to use instead of the default ones, per column.
|
|
59
|
+
* @default undefined — every column keeps its own
|
|
60
|
+
*/
|
|
61
|
+
columnLabels?: Partial<Record<ConformerColumn, string>>;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* The conformers of a set, as a selectable table.
|
|
65
|
+
*
|
|
66
|
+
* The arrows walk the rows once the table has the focus, rather than from
|
|
67
|
+
* anywhere on the page: a conformer list usually sits beside a drawing surface
|
|
68
|
+
* or a 3D canvas, both of which read the arrows themselves.
|
|
69
|
+
* @param props - See {@link ConformerTableProps}.
|
|
70
|
+
* @returns The table, or `null` when there is nothing to show.
|
|
71
|
+
*/
|
|
72
|
+
export declare function ConformerTable(props: ConformerTableProps): ReactElement | null;
|
|
73
|
+
//# sourceMappingURL=ConformerTable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConformerTable.d.ts","sourceRoot":"","sources":["../../../src/structure/ui/ConformerTable.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EAAgC,YAAY,EAAE,MAAM,OAAO,CAAC;AAUxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAO7D,uCAAuC;AACvC,MAAM,WAAW,mBAAmB;IAClC,kDAAkD;IAClD,UAAU,EAAE,SAAS,YAAY,EAAE,CAAC;IACpC;;;OAGG;IACH,OAAO,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IACrC;;;OAGG;IACH,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,uDAAuD;IACvD,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;IACjC;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;CACzD;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,mBAAmB,GACzB,YAAY,GAAG,IAAI,CA4IrB"}
|