react-cheminfo 0.9.0 → 0.10.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 +251 -20
- package/lib/chart/core/chartAxisScale.d.ts +88 -0
- package/lib/chart/core/chartAxisScale.d.ts.map +1 -0
- package/lib/chart/core/chartAxisScale.js +205 -0
- package/lib/chart/core/chartAxisScale.js.map +1 -0
- package/lib/chart/core/chartBand.d.ts +47 -0
- package/lib/chart/core/chartBand.d.ts.map +1 -0
- package/lib/chart/core/chartBand.js +55 -0
- package/lib/chart/core/chartBand.js.map +1 -0
- package/lib/chart/core/chartBins.d.ts +32 -0
- package/lib/chart/core/chartBins.d.ts.map +1 -0
- package/lib/chart/core/chartBins.js +64 -0
- package/lib/chart/core/chartBins.js.map +1 -0
- package/lib/chart/core/chartExtent.d.ts +105 -0
- package/lib/chart/core/chartExtent.d.ts.map +1 -0
- package/lib/chart/core/chartExtent.js +134 -0
- package/lib/chart/core/chartExtent.js.map +1 -0
- package/lib/chart/core/chartLabels.d.ts +49 -0
- package/lib/chart/core/chartLabels.d.ts.map +1 -0
- package/lib/chart/core/chartLabels.js +44 -0
- package/lib/chart/core/chartLabels.js.map +1 -0
- package/lib/chart/core/chartPalette.d.ts +33 -0
- package/lib/chart/core/chartPalette.d.ts.map +1 -0
- package/lib/chart/core/chartPalette.js +51 -0
- package/lib/chart/core/chartPalette.js.map +1 -0
- package/lib/chart/core/chartScale.d.ts +49 -0
- package/lib/chart/core/chartScale.d.ts.map +1 -0
- package/lib/chart/core/chartScale.js +53 -0
- package/lib/chart/core/chartScale.js.map +1 -0
- package/lib/chart/core/chartViewport.d.ts +88 -0
- package/lib/chart/core/chartViewport.d.ts.map +1 -0
- package/lib/chart/core/chartViewport.js +164 -0
- package/lib/chart/core/chartViewport.js.map +1 -0
- package/lib/chart/core/index.d.ts +29 -0
- package/lib/chart/core/index.d.ts.map +1 -0
- package/lib/chart/core/index.js +20 -0
- package/lib/chart/core/index.js.map +1 -0
- package/lib/chart/core/matrix.d.ts +56 -0
- package/lib/chart/core/matrix.d.ts.map +1 -0
- package/lib/chart/core/matrix.js +75 -0
- package/lib/chart/core/matrix.js.map +1 -0
- package/lib/chart/ui/ChartAxis.d.ts +50 -0
- package/lib/chart/ui/ChartAxis.d.ts.map +1 -0
- package/lib/chart/ui/ChartAxis.js +89 -0
- package/lib/chart/ui/ChartAxis.js.map +1 -0
- package/lib/chart/ui/ChartFrame.d.ts +136 -0
- package/lib/chart/ui/ChartFrame.d.ts.map +1 -0
- package/lib/chart/ui/ChartFrame.js +61 -0
- package/lib/chart/ui/ChartFrame.js.map +1 -0
- package/lib/chart/ui/ChartSeriesMarks.d.ts +44 -0
- package/lib/chart/ui/ChartSeriesMarks.d.ts.map +1 -0
- package/lib/chart/ui/ChartSeriesMarks.js +48 -0
- package/lib/chart/ui/ChartSeriesMarks.js.map +1 -0
- package/lib/chart/ui/ChartTrackingLayer.d.ts +54 -0
- package/lib/chart/ui/ChartTrackingLayer.d.ts.map +1 -0
- package/lib/chart/ui/ChartTrackingLayer.js +98 -0
- package/lib/chart/ui/ChartTrackingLayer.js.map +1 -0
- package/lib/chart/ui/TrackedLineChart.d.ts +136 -0
- package/lib/chart/ui/TrackedLineChart.d.ts.map +1 -0
- package/lib/chart/ui/TrackedLineChart.js +90 -0
- package/lib/chart/ui/TrackedLineChart.js.map +1 -0
- package/lib/chart/ui/TrackedStickChart.d.ts +88 -0
- package/lib/chart/ui/TrackedStickChart.d.ts.map +1 -0
- package/lib/chart/ui/TrackedStickChart.js +58 -0
- package/lib/chart/ui/TrackedStickChart.js.map +1 -0
- package/lib/chart/ui/chartStyles.d.ts +141 -0
- package/lib/chart/ui/chartStyles.d.ts.map +1 -0
- package/lib/chart/ui/chartStyles.js +154 -0
- package/lib/chart/ui/chartStyles.js.map +1 -0
- package/lib/chart/ui/index.d.ts +20 -0
- package/lib/chart/ui/index.d.ts.map +1 -0
- package/lib/chart/ui/index.js +13 -0
- package/lib/chart/ui/index.js.map +1 -0
- package/lib/chart/ui/stickChartModel.d.ts +99 -0
- package/lib/chart/ui/stickChartModel.d.ts.map +1 -0
- package/lib/chart/ui/stickChartModel.js +140 -0
- package/lib/chart/ui/stickChartModel.js.map +1 -0
- package/lib/chart/ui/useWheelZoom.d.ts +69 -0
- package/lib/chart/ui/useWheelZoom.d.ts.map +1 -0
- package/lib/chart/ui/useWheelZoom.js +122 -0
- package/lib/chart/ui/useWheelZoom.js.map +1 -0
- package/lib/color/core/gradient.d.ts +15 -0
- package/lib/color/core/gradient.d.ts.map +1 -0
- package/lib/color/core/gradient.js +28 -0
- package/lib/color/core/gradient.js.map +1 -0
- package/lib/color/core/hsv.d.ts +38 -0
- package/lib/color/core/hsv.d.ts.map +1 -0
- package/lib/color/core/hsv.js +92 -0
- package/lib/color/core/hsv.js.map +1 -0
- package/lib/color/core/index.d.ts +12 -1
- package/lib/color/core/index.d.ts.map +1 -1
- package/lib/color/core/index.js +6 -0
- package/lib/color/core/index.js.map +1 -1
- package/lib/color/core/interpolate.d.ts +67 -0
- package/lib/color/core/interpolate.d.ts.map +1 -0
- package/lib/color/core/interpolate.js +121 -0
- package/lib/color/core/interpolate.js.map +1 -0
- package/lib/color/core/scale.d.ts +11 -15
- package/lib/color/core/scale.d.ts.map +1 -1
- package/lib/color/core/scale.js +14 -41
- package/lib/color/core/scale.js.map +1 -1
- package/lib/color/core/scaleData.d.ts +19 -0
- package/lib/color/core/scaleData.d.ts.map +1 -0
- package/lib/color/core/scaleData.js +120 -0
- package/lib/color/core/scaleData.js.map +1 -0
- package/lib/color/core/scaleText.d.ts +43 -0
- package/lib/color/core/scaleText.d.ts.map +1 -0
- package/lib/color/core/scaleText.js +109 -0
- package/lib/color/core/scaleText.js.map +1 -0
- package/lib/color/core/scales.d.ts +42 -0
- package/lib/color/core/scales.d.ts.map +1 -0
- package/lib/color/core/scales.js +110 -0
- package/lib/color/core/scales.js.map +1 -0
- package/lib/color/ui/ColorScaleBar.d.ts +39 -0
- package/lib/color/ui/ColorScaleBar.d.ts.map +1 -0
- package/lib/color/ui/ColorScaleBar.js +27 -0
- package/lib/color/ui/ColorScaleBar.js.map +1 -0
- package/lib/color/ui/ColorScaleEditor.d.ts +21 -0
- package/lib/color/ui/ColorScaleEditor.d.ts.map +1 -0
- package/lib/color/ui/ColorScaleEditor.js +141 -0
- package/lib/color/ui/ColorScaleEditor.js.map +1 -0
- package/lib/color/ui/ColorScaleSelect.d.ts +38 -0
- package/lib/color/ui/ColorScaleSelect.d.ts.map +1 -0
- package/lib/color/ui/ColorScaleSelect.js +109 -0
- package/lib/color/ui/ColorScaleSelect.js.map +1 -0
- package/lib/color/ui/index.d.ts +6 -0
- package/lib/color/ui/index.d.ts.map +1 -1
- package/lib/color/ui/index.js +3 -0
- package/lib/color/ui/index.js.map +1 -1
- package/lib/core.d.ts +5 -0
- package/lib/core.d.ts.map +1 -1
- package/lib/core.js +5 -0
- package/lib/core.js.map +1 -1
- package/lib/credits/core/credits.d.ts +17 -0
- package/lib/credits/core/credits.d.ts.map +1 -1
- package/lib/credits/core/credits.js +20 -0
- package/lib/credits/core/credits.js.map +1 -1
- package/lib/download/core/cssTokens.d.ts +33 -0
- package/lib/download/core/cssTokens.d.ts.map +1 -0
- package/lib/download/core/cssTokens.js +82 -0
- package/lib/download/core/cssTokens.js.map +1 -0
- package/lib/download/core/downloadFigure.d.ts +39 -0
- package/lib/download/core/downloadFigure.d.ts.map +1 -0
- package/lib/download/core/downloadFigure.js +35 -0
- package/lib/download/core/downloadFigure.js.map +1 -0
- package/lib/download/core/figurePng.d.ts +21 -0
- package/lib/download/core/figurePng.d.ts.map +1 -0
- package/lib/download/core/figurePng.js +76 -0
- package/lib/download/core/figurePng.js.map +1 -0
- package/lib/download/core/figureScale.d.ts +61 -0
- package/lib/download/core/figureScale.d.ts.map +1 -0
- package/lib/download/core/figureScale.js +67 -0
- package/lib/download/core/figureScale.js.map +1 -0
- package/lib/download/core/figureSvg.d.ts +37 -0
- package/lib/download/core/figureSvg.d.ts.map +1 -0
- package/lib/download/core/figureSvg.js +94 -0
- package/lib/download/core/figureSvg.js.map +1 -0
- package/lib/download/core/figureSvgDocument.d.ts +55 -0
- package/lib/download/core/figureSvgDocument.d.ts.map +1 -0
- package/lib/download/core/figureSvgDocument.js +79 -0
- package/lib/download/core/figureSvgDocument.js.map +1 -0
- package/lib/download/core/figureTarget.d.ts +56 -0
- package/lib/download/core/figureTarget.d.ts.map +1 -0
- package/lib/download/core/figureTarget.js +119 -0
- package/lib/download/core/figureTarget.js.map +1 -0
- package/lib/download/core/index.d.ts +12 -0
- package/lib/download/core/index.d.ts.map +1 -1
- package/lib/download/core/index.js +7 -0
- package/lib/download/core/index.js.map +1 -1
- package/lib/download/ui/FigureDownload.d.ts +81 -0
- package/lib/download/ui/FigureDownload.d.ts.map +1 -0
- package/lib/download/ui/FigureDownload.js +65 -0
- package/lib/download/ui/FigureDownload.js.map +1 -0
- package/lib/download/ui/FigureDownloadPanel.d.ts +45 -0
- package/lib/download/ui/FigureDownloadPanel.d.ts.map +1 -0
- package/lib/download/ui/FigureDownloadPanel.js +86 -0
- package/lib/download/ui/FigureDownloadPanel.js.map +1 -0
- package/lib/download/ui/index.d.ts +13 -0
- package/lib/download/ui/index.d.ts.map +1 -0
- package/lib/download/ui/index.js +11 -0
- package/lib/download/ui/index.js.map +1 -0
- package/lib/ecosystem/core/sites.d.ts +1 -1
- package/lib/ecosystem/core/sites.d.ts.map +1 -1
- package/lib/ecosystem/core/sites.js +10 -0
- package/lib/ecosystem/core/sites.js.map +1 -1
- package/lib/ecosystem/ui/glyphs.d.ts.map +1 -1
- package/lib/ecosystem/ui/glyphs.js +4 -0
- package/lib/ecosystem/ui/glyphs.js.map +1 -1
- package/lib/overlay/core/emptiestCorner.d.ts +47 -0
- package/lib/overlay/core/emptiestCorner.d.ts.map +1 -0
- package/lib/overlay/core/emptiestCorner.js +84 -0
- package/lib/overlay/core/emptiestCorner.js.map +1 -0
- package/lib/overlay/core/index.d.ts +23 -0
- package/lib/overlay/core/index.d.ts.map +1 -0
- package/lib/overlay/core/index.js +16 -0
- package/lib/overlay/core/index.js.map +1 -0
- package/lib/overlay/core/overlayCollapse.d.ts +14 -0
- package/lib/overlay/core/overlayCollapse.d.ts.map +1 -0
- package/lib/overlay/core/overlayCollapse.js +20 -0
- package/lib/overlay/core/overlayCollapse.js.map +1 -0
- package/lib/overlay/core/overlayMarks.d.ts +31 -0
- package/lib/overlay/core/overlayMarks.d.ts.map +1 -0
- package/lib/overlay/core/overlayMarks.js +38 -0
- package/lib/overlay/core/overlayMarks.js.map +1 -0
- package/lib/overlay/core/overlayMetrics.d.ts +41 -0
- package/lib/overlay/core/overlayMetrics.d.ts.map +1 -0
- package/lib/overlay/core/overlayMetrics.js +73 -0
- package/lib/overlay/core/overlayMetrics.js.map +1 -0
- package/lib/overlay/core/overlayPlacement.d.ts +60 -0
- package/lib/overlay/core/overlayPlacement.d.ts.map +1 -0
- package/lib/overlay/core/overlayPlacement.js +24 -0
- package/lib/overlay/core/overlayPlacement.js.map +1 -0
- package/lib/overlay/core/overlayTierRoom.d.ts +89 -0
- package/lib/overlay/core/overlayTierRoom.d.ts.map +1 -0
- package/lib/overlay/core/overlayTierRoom.js +135 -0
- package/lib/overlay/core/overlayTierRoom.js.map +1 -0
- package/lib/overlay/core/overlayTiers.d.ts +71 -0
- package/lib/overlay/core/overlayTiers.d.ts.map +1 -0
- package/lib/overlay/core/overlayTiers.js +89 -0
- package/lib/overlay/core/overlayTiers.js.map +1 -0
- package/lib/overlay/core/placeOverlayCard.d.ts +47 -0
- package/lib/overlay/core/placeOverlayCard.d.ts.map +1 -0
- package/lib/overlay/core/placeOverlayCard.js +42 -0
- package/lib/overlay/core/placeOverlayCard.js.map +1 -0
- package/lib/overlay/ui/OverlayAction.d.ts +32 -0
- package/lib/overlay/ui/OverlayAction.d.ts.map +1 -0
- package/lib/overlay/ui/OverlayAction.js +19 -0
- package/lib/overlay/ui/OverlayAction.js.map +1 -0
- package/lib/overlay/ui/OverlayBar.d.ts +122 -0
- package/lib/overlay/ui/OverlayBar.d.ts.map +1 -0
- package/lib/overlay/ui/OverlayBar.js +42 -0
- package/lib/overlay/ui/OverlayBar.js.map +1 -0
- package/lib/overlay/ui/OverlayBarButton.d.ts +38 -0
- package/lib/overlay/ui/OverlayBarButton.d.ts.map +1 -0
- package/lib/overlay/ui/OverlayBarButton.js +40 -0
- package/lib/overlay/ui/OverlayBarButton.js.map +1 -0
- package/lib/overlay/ui/OverlayBarCard.d.ts +25 -0
- package/lib/overlay/ui/OverlayBarCard.d.ts.map +1 -0
- package/lib/overlay/ui/OverlayBarCard.js +28 -0
- package/lib/overlay/ui/OverlayBarCard.js.map +1 -0
- package/lib/overlay/ui/OverlayBarStrip.d.ts +18 -0
- package/lib/overlay/ui/OverlayBarStrip.d.ts.map +1 -0
- package/lib/overlay/ui/OverlayBarStrip.js +26 -0
- package/lib/overlay/ui/OverlayBarStrip.js.map +1 -0
- package/lib/overlay/ui/OverlayCaption.d.ts +52 -0
- package/lib/overlay/ui/OverlayCaption.d.ts.map +1 -0
- package/lib/overlay/ui/OverlayCaption.js +62 -0
- package/lib/overlay/ui/OverlayCaption.js.map +1 -0
- package/lib/overlay/ui/OverlayChip.d.ts +60 -0
- package/lib/overlay/ui/OverlayChip.d.ts.map +1 -0
- package/lib/overlay/ui/OverlayChip.js +73 -0
- package/lib/overlay/ui/OverlayChip.js.map +1 -0
- package/lib/overlay/ui/OverlayDivider.d.ts +11 -0
- package/lib/overlay/ui/OverlayDivider.d.ts.map +1 -0
- package/lib/overlay/ui/OverlayDivider.js +16 -0
- package/lib/overlay/ui/OverlayDivider.js.map +1 -0
- package/lib/overlay/ui/OverlayGroup.d.ts +53 -0
- package/lib/overlay/ui/OverlayGroup.d.ts.map +1 -0
- package/lib/overlay/ui/OverlayGroup.js +63 -0
- package/lib/overlay/ui/OverlayGroup.js.map +1 -0
- package/lib/overlay/ui/OverlayIconButton.d.ts +75 -0
- package/lib/overlay/ui/OverlayIconButton.d.ts.map +1 -0
- package/lib/overlay/ui/OverlayIconButton.js +43 -0
- package/lib/overlay/ui/OverlayIconButton.js.map +1 -0
- package/lib/overlay/ui/OverlayInfo.d.ts +43 -0
- package/lib/overlay/ui/OverlayInfo.d.ts.map +1 -0
- package/lib/overlay/ui/OverlayInfo.js +47 -0
- package/lib/overlay/ui/OverlayInfo.js.map +1 -0
- package/lib/overlay/ui/OverlayLayer.d.ts +54 -0
- package/lib/overlay/ui/OverlayLayer.d.ts.map +1 -0
- package/lib/overlay/ui/OverlayLayer.js +50 -0
- package/lib/overlay/ui/OverlayLayer.js.map +1 -0
- package/lib/overlay/ui/OverlayLegend.d.ts +75 -0
- package/lib/overlay/ui/OverlayLegend.d.ts.map +1 -0
- package/lib/overlay/ui/OverlayLegend.js +81 -0
- package/lib/overlay/ui/OverlayLegend.js.map +1 -0
- package/lib/overlay/ui/OverlayLegendMark.d.ts +36 -0
- package/lib/overlay/ui/OverlayLegendMark.d.ts.map +1 -0
- package/lib/overlay/ui/OverlayLegendMark.js +43 -0
- package/lib/overlay/ui/OverlayLegendMark.js.map +1 -0
- package/lib/overlay/ui/OverlayNumber.d.ts +43 -0
- package/lib/overlay/ui/OverlayNumber.d.ts.map +1 -0
- package/lib/overlay/ui/OverlayNumber.js +74 -0
- package/lib/overlay/ui/OverlayNumber.js.map +1 -0
- package/lib/overlay/ui/OverlayPanel.d.ts +81 -0
- package/lib/overlay/ui/OverlayPanel.d.ts.map +1 -0
- package/lib/overlay/ui/OverlayPanel.js +42 -0
- package/lib/overlay/ui/OverlayPanel.js.map +1 -0
- package/lib/overlay/ui/OverlayPills.d.ts +73 -0
- package/lib/overlay/ui/OverlayPills.d.ts.map +1 -0
- package/lib/overlay/ui/OverlayPills.js +55 -0
- package/lib/overlay/ui/OverlayPills.js.map +1 -0
- package/lib/overlay/ui/OverlayReadout.d.ts +63 -0
- package/lib/overlay/ui/OverlayReadout.d.ts.map +1 -0
- package/lib/overlay/ui/OverlayReadout.js +129 -0
- package/lib/overlay/ui/OverlayReadout.js.map +1 -0
- package/lib/overlay/ui/OverlayRow.d.ts +111 -0
- package/lib/overlay/ui/OverlayRow.d.ts.map +1 -0
- package/lib/overlay/ui/OverlayRow.js +50 -0
- package/lib/overlay/ui/OverlayRow.js.map +1 -0
- package/lib/overlay/ui/OverlaySegmented.d.ts +28 -0
- package/lib/overlay/ui/OverlaySegmented.d.ts.map +1 -0
- package/lib/overlay/ui/OverlaySegmented.js +23 -0
- package/lib/overlay/ui/OverlaySegmented.js.map +1 -0
- package/lib/overlay/ui/OverlaySelect.d.ts +35 -0
- package/lib/overlay/ui/OverlaySelect.d.ts.map +1 -0
- package/lib/overlay/ui/OverlaySelect.js +30 -0
- package/lib/overlay/ui/OverlaySelect.js.map +1 -0
- package/lib/overlay/ui/OverlaySwatchIcon.d.ts +26 -0
- package/lib/overlay/ui/OverlaySwatchIcon.d.ts.map +1 -0
- package/lib/overlay/ui/OverlaySwatchIcon.js +94 -0
- package/lib/overlay/ui/OverlaySwatchIcon.js.map +1 -0
- package/lib/overlay/ui/OverlayToggle.d.ts +56 -0
- package/lib/overlay/ui/OverlayToggle.d.ts.map +1 -0
- package/lib/overlay/ui/OverlayToggle.js +42 -0
- package/lib/overlay/ui/OverlayToggle.js.map +1 -0
- package/lib/overlay/ui/OverlayValueButton.d.ts +80 -0
- package/lib/overlay/ui/OverlayValueButton.d.ts.map +1 -0
- package/lib/overlay/ui/OverlayValueButton.js +46 -0
- package/lib/overlay/ui/OverlayValueButton.js.map +1 -0
- package/lib/overlay/ui/OverlayValueMenu.d.ts +68 -0
- package/lib/overlay/ui/OverlayValueMenu.d.ts.map +1 -0
- package/lib/overlay/ui/OverlayValueMenu.js +40 -0
- package/lib/overlay/ui/OverlayValueMenu.js.map +1 -0
- package/lib/overlay/ui/index.d.ts +55 -0
- package/lib/overlay/ui/index.d.ts.map +1 -0
- package/lib/overlay/ui/index.js +33 -0
- package/lib/overlay/ui/index.js.map +1 -0
- package/lib/overlay/ui/overlayBarShape.d.ts +85 -0
- package/lib/overlay/ui/overlayBarShape.d.ts.map +1 -0
- package/lib/overlay/ui/overlayBarShape.js +48 -0
- package/lib/overlay/ui/overlayBarShape.js.map +1 -0
- package/lib/overlay/ui/overlayControlStyles.d.ts +82 -0
- package/lib/overlay/ui/overlayControlStyles.d.ts.map +1 -0
- package/lib/overlay/ui/overlayControlStyles.js +142 -0
- package/lib/overlay/ui/overlayControlStyles.js.map +1 -0
- package/lib/overlay/ui/overlayFigureStyles.d.ts +52 -0
- package/lib/overlay/ui/overlayFigureStyles.d.ts.map +1 -0
- package/lib/overlay/ui/overlayFigureStyles.js +98 -0
- package/lib/overlay/ui/overlayFigureStyles.js.map +1 -0
- package/lib/overlay/ui/overlayPanelContext.d.ts +34 -0
- package/lib/overlay/ui/overlayPanelContext.d.ts.map +1 -0
- package/lib/overlay/ui/overlayPanelContext.js +29 -0
- package/lib/overlay/ui/overlayPanelContext.js.map +1 -0
- package/lib/overlay/ui/overlayPanelStyles.d.ts +112 -0
- package/lib/overlay/ui/overlayPanelStyles.d.ts.map +1 -0
- package/lib/overlay/ui/overlayPanelStyles.js +193 -0
- package/lib/overlay/ui/overlayPanelStyles.js.map +1 -0
- package/lib/overlay/ui/overlayPillKeys.d.ts +19 -0
- package/lib/overlay/ui/overlayPillKeys.d.ts.map +1 -0
- package/lib/overlay/ui/overlayPillKeys.js +33 -0
- package/lib/overlay/ui/overlayPillKeys.js.map +1 -0
- package/lib/overlay/ui/overlayPillStyles.d.ts +78 -0
- package/lib/overlay/ui/overlayPillStyles.d.ts.map +1 -0
- package/lib/overlay/ui/overlayPillStyles.js +140 -0
- package/lib/overlay/ui/overlayPillStyles.js.map +1 -0
- package/lib/overlay/ui/overlayRowStyles.d.ts +113 -0
- package/lib/overlay/ui/overlayRowStyles.d.ts.map +1 -0
- package/lib/overlay/ui/overlayRowStyles.js +135 -0
- package/lib/overlay/ui/overlayRowStyles.js.map +1 -0
- package/lib/overlay/ui/overlayStepperStyles.d.ts +51 -0
- package/lib/overlay/ui/overlayStepperStyles.d.ts.map +1 -0
- package/lib/overlay/ui/overlayStepperStyles.js +96 -0
- package/lib/overlay/ui/overlayStepperStyles.js.map +1 -0
- package/lib/overlay/ui/overlayStyles.d.ts +123 -0
- package/lib/overlay/ui/overlayStyles.d.ts.map +1 -0
- package/lib/overlay/ui/overlayStyles.js +203 -0
- package/lib/overlay/ui/overlayStyles.js.map +1 -0
- package/lib/overlay/ui/overlaySurface.d.ts +54 -0
- package/lib/overlay/ui/overlaySurface.d.ts.map +1 -0
- package/lib/overlay/ui/overlaySurface.js +85 -0
- package/lib/overlay/ui/overlaySurface.js.map +1 -0
- package/lib/overlay/ui/overlaySwitchStyles.d.ts +70 -0
- package/lib/overlay/ui/overlaySwitchStyles.d.ts.map +1 -0
- package/lib/overlay/ui/overlaySwitchStyles.js +102 -0
- package/lib/overlay/ui/overlaySwitchStyles.js.map +1 -0
- package/lib/overlay/ui/overlayValueStyles.d.ts +101 -0
- package/lib/overlay/ui/overlayValueStyles.d.ts.map +1 -0
- package/lib/overlay/ui/overlayValueStyles.js +166 -0
- package/lib/overlay/ui/overlayValueStyles.js.map +1 -0
- package/lib/projection/core/embeddingResult.d.ts +60 -0
- package/lib/projection/core/embeddingResult.d.ts.map +1 -0
- package/lib/projection/core/embeddingResult.js +52 -0
- package/lib/projection/core/embeddingResult.js.map +1 -0
- package/lib/projection/core/explainedShares.d.ts +51 -0
- package/lib/projection/core/explainedShares.d.ts.map +1 -0
- package/lib/projection/core/explainedShares.js +55 -0
- package/lib/projection/core/explainedShares.js.map +1 -0
- package/lib/projection/core/index.d.ts +38 -0
- package/lib/projection/core/index.d.ts.map +1 -0
- package/lib/projection/core/index.js +25 -0
- package/lib/projection/core/index.js.map +1 -0
- package/lib/projection/core/loadingProfiles.d.ts +87 -0
- package/lib/projection/core/loadingProfiles.d.ts.map +1 -0
- package/lib/projection/core/loadingProfiles.js +125 -0
- package/lib/projection/core/loadingProfiles.js.map +1 -0
- package/lib/projection/core/pcaLike.d.ts +32 -0
- package/lib/projection/core/pcaLike.d.ts.map +1 -0
- package/lib/projection/core/pcaLike.js +2 -0
- package/lib/projection/core/pcaLike.js.map +1 -0
- package/lib/projection/core/pcaResult.d.ts +86 -0
- package/lib/projection/core/pcaResult.d.ts.map +1 -0
- package/lib/projection/core/pcaResult.js +122 -0
- package/lib/projection/core/pcaResult.js.map +1 -0
- package/lib/projection/core/projectionCopy.d.ts +130 -0
- package/lib/projection/core/projectionCopy.d.ts.map +1 -0
- package/lib/projection/core/projectionCopy.js +111 -0
- package/lib/projection/core/projectionCopy.js.map +1 -0
- package/lib/projection/core/projectionCopyPatch.d.ts +13 -0
- package/lib/projection/core/projectionCopyPatch.d.ts.map +1 -0
- package/lib/projection/core/projectionCopyPatch.js +2 -0
- package/lib/projection/core/projectionCopyPatch.js.map +1 -0
- package/lib/projection/core/projectionOptions.d.ts +131 -0
- package/lib/projection/core/projectionOptions.d.ts.map +1 -0
- package/lib/projection/core/projectionOptions.js +85 -0
- package/lib/projection/core/projectionOptions.js.map +1 -0
- package/lib/projection/core/projectionResult.d.ts +119 -0
- package/lib/projection/core/projectionResult.d.ts.map +1 -0
- package/lib/projection/core/projectionResult.js +2 -0
- package/lib/projection/core/projectionResult.js.map +1 -0
- package/lib/projection/core/projectionSamples.d.ts +77 -0
- package/lib/projection/core/projectionSamples.d.ts.map +1 -0
- package/lib/projection/core/projectionSamples.js +81 -0
- package/lib/projection/core/projectionSamples.js.map +1 -0
- package/lib/projection/core/projectionStrings.d.ts +134 -0
- package/lib/projection/core/projectionStrings.d.ts.map +1 -0
- package/lib/projection/core/projectionStrings.js +168 -0
- package/lib/projection/core/projectionStrings.js.map +1 -0
- package/lib/projection/core/projectionTabDefaults.d.ts +18 -0
- package/lib/projection/core/projectionTabDefaults.d.ts.map +1 -0
- package/lib/projection/core/projectionTabDefaults.js +46 -0
- package/lib/projection/core/projectionTabDefaults.js.map +1 -0
- package/lib/projection/core/projectionTabs.d.ts +25 -0
- package/lib/projection/core/projectionTabs.d.ts.map +1 -0
- package/lib/projection/core/projectionTabs.js +51 -0
- package/lib/projection/core/projectionTabs.js.map +1 -0
- package/lib/projection/core/variableAxis.d.ts +106 -0
- package/lib/projection/core/variableAxis.d.ts.map +1 -0
- package/lib/projection/core/variableAxis.js +84 -0
- package/lib/projection/core/variableAxis.js.map +1 -0
- package/lib/projection/core/variablesView.d.ts +33 -0
- package/lib/projection/core/variablesView.d.ts.map +1 -0
- package/lib/projection/core/variablesView.js +49 -0
- package/lib/projection/core/variablesView.js.map +1 -0
- package/lib/projection/ui/PcaViewer.d.ts +31 -0
- package/lib/projection/ui/PcaViewer.d.ts.map +1 -0
- package/lib/projection/ui/PcaViewer.js +46 -0
- package/lib/projection/ui/PcaViewer.js.map +1 -0
- package/lib/projection/ui/ProjectionBar.d.ts +55 -0
- package/lib/projection/ui/ProjectionBar.d.ts.map +1 -0
- package/lib/projection/ui/ProjectionBar.js +112 -0
- package/lib/projection/ui/ProjectionBar.js.map +1 -0
- package/lib/projection/ui/ProjectionMapCaption.d.ts +46 -0
- package/lib/projection/ui/ProjectionMapCaption.d.ts.map +1 -0
- package/lib/projection/ui/ProjectionMapCaption.js +54 -0
- package/lib/projection/ui/ProjectionMapCaption.js.map +1 -0
- package/lib/projection/ui/ProjectionMapControls.d.ts +67 -0
- package/lib/projection/ui/ProjectionMapControls.d.ts.map +1 -0
- package/lib/projection/ui/ProjectionMapControls.js +108 -0
- package/lib/projection/ui/ProjectionMapControls.js.map +1 -0
- package/lib/projection/ui/ProjectionMapLegend.d.ts +39 -0
- package/lib/projection/ui/ProjectionMapLegend.d.ts.map +1 -0
- package/lib/projection/ui/ProjectionMapLegend.js +29 -0
- package/lib/projection/ui/ProjectionMapLegend.js.map +1 -0
- package/lib/projection/ui/ProjectionMapMore.d.ts +42 -0
- package/lib/projection/ui/ProjectionMapMore.d.ts.map +1 -0
- package/lib/projection/ui/ProjectionMapMore.js +74 -0
- package/lib/projection/ui/ProjectionMapMore.js.map +1 -0
- package/lib/projection/ui/ProjectionMapTab.d.ts +101 -0
- package/lib/projection/ui/ProjectionMapTab.d.ts.map +1 -0
- package/lib/projection/ui/ProjectionMapTab.js +42 -0
- package/lib/projection/ui/ProjectionMapTab.js.map +1 -0
- package/lib/projection/ui/ProjectionPairsControls.d.ts +37 -0
- package/lib/projection/ui/ProjectionPairsControls.d.ts.map +1 -0
- package/lib/projection/ui/ProjectionPairsControls.js +20 -0
- package/lib/projection/ui/ProjectionPairsControls.js.map +1 -0
- package/lib/projection/ui/ProjectionPairsMore.d.ts +40 -0
- package/lib/projection/ui/ProjectionPairsMore.d.ts.map +1 -0
- package/lib/projection/ui/ProjectionPairsMore.js +31 -0
- package/lib/projection/ui/ProjectionPairsMore.js.map +1 -0
- package/lib/projection/ui/ProjectionPairsTab.d.ts +66 -0
- package/lib/projection/ui/ProjectionPairsTab.d.ts.map +1 -0
- package/lib/projection/ui/ProjectionPairsTab.js +64 -0
- package/lib/projection/ui/ProjectionPairsTab.js.map +1 -0
- package/lib/projection/ui/ProjectionPanel.d.ts +73 -0
- package/lib/projection/ui/ProjectionPanel.d.ts.map +1 -0
- package/lib/projection/ui/ProjectionPanel.js +58 -0
- package/lib/projection/ui/ProjectionPanel.js.map +1 -0
- package/lib/projection/ui/ProjectionReadout.d.ts +65 -0
- package/lib/projection/ui/ProjectionReadout.d.ts.map +1 -0
- package/lib/projection/ui/ProjectionReadout.js +46 -0
- package/lib/projection/ui/ProjectionReadout.js.map +1 -0
- package/lib/projection/ui/ProjectionSharesControls.d.ts +34 -0
- package/lib/projection/ui/ProjectionSharesControls.d.ts.map +1 -0
- package/lib/projection/ui/ProjectionSharesControls.js +20 -0
- package/lib/projection/ui/ProjectionSharesControls.js.map +1 -0
- package/lib/projection/ui/ProjectionSharesMarks.d.ts +49 -0
- package/lib/projection/ui/ProjectionSharesMarks.d.ts.map +1 -0
- package/lib/projection/ui/ProjectionSharesMarks.js +110 -0
- package/lib/projection/ui/ProjectionSharesMarks.js.map +1 -0
- package/lib/projection/ui/ProjectionSharesMore.d.ts +19 -0
- package/lib/projection/ui/ProjectionSharesMore.d.ts.map +1 -0
- package/lib/projection/ui/ProjectionSharesMore.js +25 -0
- package/lib/projection/ui/ProjectionSharesMore.js.map +1 -0
- package/lib/projection/ui/ProjectionSharesTab.d.ts +50 -0
- package/lib/projection/ui/ProjectionSharesTab.d.ts.map +1 -0
- package/lib/projection/ui/ProjectionSharesTab.js +48 -0
- package/lib/projection/ui/ProjectionSharesTab.js.map +1 -0
- package/lib/projection/ui/ProjectionSurface.d.ts +33 -0
- package/lib/projection/ui/ProjectionSurface.d.ts.map +1 -0
- package/lib/projection/ui/ProjectionSurface.js +35 -0
- package/lib/projection/ui/ProjectionSurface.js.map +1 -0
- package/lib/projection/ui/ProjectionTabStrip.d.ts +74 -0
- package/lib/projection/ui/ProjectionTabStrip.d.ts.map +1 -0
- package/lib/projection/ui/ProjectionTabStrip.js +64 -0
- package/lib/projection/ui/ProjectionTabStrip.js.map +1 -0
- package/lib/projection/ui/ProjectionVariablesControls.d.ts +33 -0
- package/lib/projection/ui/ProjectionVariablesControls.d.ts.map +1 -0
- package/lib/projection/ui/ProjectionVariablesControls.js +26 -0
- package/lib/projection/ui/ProjectionVariablesControls.js.map +1 -0
- package/lib/projection/ui/ProjectionVariablesMore.d.ts +33 -0
- package/lib/projection/ui/ProjectionVariablesMore.d.ts.map +1 -0
- package/lib/projection/ui/ProjectionVariablesMore.js +55 -0
- package/lib/projection/ui/ProjectionVariablesMore.js.map +1 -0
- package/lib/projection/ui/ProjectionVariablesTab.d.ts +78 -0
- package/lib/projection/ui/ProjectionVariablesTab.d.ts.map +1 -0
- package/lib/projection/ui/ProjectionVariablesTab.js +93 -0
- package/lib/projection/ui/ProjectionVariablesTab.js.map +1 -0
- package/lib/projection/ui/ProjectionViewer.d.ts +32 -0
- package/lib/projection/ui/ProjectionViewer.d.ts.map +1 -0
- package/lib/projection/ui/ProjectionViewer.js +90 -0
- package/lib/projection/ui/ProjectionViewer.js.map +1 -0
- package/lib/projection/ui/index.d.ts +19 -0
- package/lib/projection/ui/index.d.ts.map +1 -0
- package/lib/projection/ui/index.js +15 -0
- package/lib/projection/ui/index.js.map +1 -0
- package/lib/projection/ui/projectionBarModel.d.ts +92 -0
- package/lib/projection/ui/projectionBarModel.d.ts.map +1 -0
- package/lib/projection/ui/projectionBarModel.js +140 -0
- package/lib/projection/ui/projectionBarModel.js.map +1 -0
- package/lib/projection/ui/projectionBarReadings.d.ts +65 -0
- package/lib/projection/ui/projectionBarReadings.d.ts.map +1 -0
- package/lib/projection/ui/projectionBarReadings.js +121 -0
- package/lib/projection/ui/projectionBarReadings.js.map +1 -0
- package/lib/projection/ui/projectionBarSlots.d.ts +59 -0
- package/lib/projection/ui/projectionBarSlots.d.ts.map +1 -0
- package/lib/projection/ui/projectionBarSlots.js +81 -0
- package/lib/projection/ui/projectionBarSlots.js.map +1 -0
- package/lib/projection/ui/projectionBarStyles.d.ts +102 -0
- package/lib/projection/ui/projectionBarStyles.d.ts.map +1 -0
- package/lib/projection/ui/projectionBarStyles.js +154 -0
- package/lib/projection/ui/projectionBarStyles.js.map +1 -0
- package/lib/projection/ui/projectionEllipse.d.ts +50 -0
- package/lib/projection/ui/projectionEllipse.d.ts.map +1 -0
- package/lib/projection/ui/projectionEllipse.js +101 -0
- package/lib/projection/ui/projectionEllipse.js.map +1 -0
- package/lib/projection/ui/projectionFormat.d.ts +13 -0
- package/lib/projection/ui/projectionFormat.d.ts.map +1 -0
- package/lib/projection/ui/projectionFormat.js +19 -0
- package/lib/projection/ui/projectionFormat.js.map +1 -0
- package/lib/projection/ui/projectionMapChoices.d.ts +31 -0
- package/lib/projection/ui/projectionMapChoices.d.ts.map +1 -0
- package/lib/projection/ui/projectionMapChoices.js +46 -0
- package/lib/projection/ui/projectionMapChoices.js.map +1 -0
- package/lib/projection/ui/projectionMapChrome.d.ts +73 -0
- package/lib/projection/ui/projectionMapChrome.d.ts.map +1 -0
- package/lib/projection/ui/projectionMapChrome.js +135 -0
- package/lib/projection/ui/projectionMapChrome.js.map +1 -0
- package/lib/projection/ui/projectionMapModel.d.ts +114 -0
- package/lib/projection/ui/projectionMapModel.d.ts.map +1 -0
- package/lib/projection/ui/projectionMapModel.js +177 -0
- package/lib/projection/ui/projectionMapModel.js.map +1 -0
- package/lib/projection/ui/projectionMapView.d.ts +59 -0
- package/lib/projection/ui/projectionMapView.d.ts.map +1 -0
- package/lib/projection/ui/projectionMapView.js +90 -0
- package/lib/projection/ui/projectionMapView.js.map +1 -0
- package/lib/projection/ui/projectionPairsCeiling.d.ts +29 -0
- package/lib/projection/ui/projectionPairsCeiling.d.ts.map +1 -0
- package/lib/projection/ui/projectionPairsCeiling.js +29 -0
- package/lib/projection/ui/projectionPairsCeiling.js.map +1 -0
- package/lib/projection/ui/projectionSelection.d.ts +51 -0
- package/lib/projection/ui/projectionSelection.d.ts.map +1 -0
- package/lib/projection/ui/projectionSelection.js +66 -0
- package/lib/projection/ui/projectionSelection.js.map +1 -0
- package/lib/projection/ui/projectionTabInfo.d.ts +59 -0
- package/lib/projection/ui/projectionTabInfo.d.ts.map +1 -0
- package/lib/projection/ui/projectionTabInfo.js +108 -0
- package/lib/projection/ui/projectionTabInfo.js.map +1 -0
- package/lib/projection/ui/projectionTabModels.d.ts +49 -0
- package/lib/projection/ui/projectionTabModels.d.ts.map +1 -0
- package/lib/projection/ui/projectionTabModels.js +59 -0
- package/lib/projection/ui/projectionTabModels.js.map +1 -0
- package/lib/projection/ui/projectionTabStyles.d.ts +131 -0
- package/lib/projection/ui/projectionTabStyles.d.ts.map +1 -0
- package/lib/projection/ui/projectionTabStyles.js +134 -0
- package/lib/projection/ui/projectionTabStyles.js.map +1 -0
- package/lib/projection/ui/projectionVariablesModel.d.ts +104 -0
- package/lib/projection/ui/projectionVariablesModel.d.ts.map +1 -0
- package/lib/projection/ui/projectionVariablesModel.js +165 -0
- package/lib/projection/ui/projectionVariablesModel.js.map +1 -0
- package/lib/projection/ui/projectionVariablesWords.d.ts +50 -0
- package/lib/projection/ui/projectionVariablesWords.d.ts.map +1 -0
- package/lib/projection/ui/projectionVariablesWords.js +91 -0
- package/lib/projection/ui/projectionVariablesWords.js.map +1 -0
- package/lib/projection/ui/projectionViewChoices.d.ts +31 -0
- package/lib/projection/ui/projectionViewChoices.d.ts.map +1 -0
- package/lib/projection/ui/projectionViewChoices.js +53 -0
- package/lib/projection/ui/projectionViewChoices.js.map +1 -0
- package/lib/projection/ui/projectionViewerProps.d.ts +153 -0
- package/lib/projection/ui/projectionViewerProps.d.ts.map +1 -0
- package/lib/projection/ui/projectionViewerProps.js +9 -0
- package/lib/projection/ui/projectionViewerProps.js.map +1 -0
- package/lib/projection/ui/useProjectionState.d.ts +63 -0
- package/lib/projection/ui/useProjectionState.d.ts.map +1 -0
- package/lib/projection/ui/useProjectionState.js +107 -0
- package/lib/projection/ui/useProjectionState.js.map +1 -0
- package/lib/scatter/core/confidenceEllipse.d.ts +117 -0
- package/lib/scatter/core/confidenceEllipse.d.ts.map +1 -0
- package/lib/scatter/core/confidenceEllipse.js +132 -0
- package/lib/scatter/core/confidenceEllipse.js.map +1 -0
- package/lib/scatter/core/ellipseCoverage.d.ts +33 -0
- package/lib/scatter/core/ellipseCoverage.d.ts.map +1 -0
- package/lib/scatter/core/ellipseCoverage.js +46 -0
- package/lib/scatter/core/ellipseCoverage.js.map +1 -0
- package/lib/scatter/core/ellipseProjection.d.ts +53 -0
- package/lib/scatter/core/ellipseProjection.d.ts.map +1 -0
- package/lib/scatter/core/ellipseProjection.js +94 -0
- package/lib/scatter/core/ellipseProjection.js.map +1 -0
- package/lib/scatter/core/index.d.ts +24 -0
- package/lib/scatter/core/index.d.ts.map +1 -0
- package/lib/scatter/core/index.js +19 -0
- package/lib/scatter/core/index.js.map +1 -0
- package/lib/scatter/core/lassoPath.d.ts +60 -0
- package/lib/scatter/core/lassoPath.d.ts.map +1 -0
- package/lib/scatter/core/lassoPath.js +101 -0
- package/lib/scatter/core/lassoPath.js.map +1 -0
- package/lib/scatter/core/polygon.d.ts +58 -0
- package/lib/scatter/core/polygon.d.ts.map +1 -0
- package/lib/scatter/core/polygon.js +140 -0
- package/lib/scatter/core/polygon.js.map +1 -0
- package/lib/scatter/core/scatterSelection.d.ts +44 -0
- package/lib/scatter/core/scatterSelection.d.ts.map +1 -0
- package/lib/scatter/core/scatterSelection.js +81 -0
- package/lib/scatter/core/scatterSelection.js.map +1 -0
- package/lib/scatter/core/screenPoints.d.ts +58 -0
- package/lib/scatter/core/screenPoints.d.ts.map +1 -0
- package/lib/scatter/core/screenPoints.js +78 -0
- package/lib/scatter/core/screenPoints.js.map +1 -0
- package/lib/scatter/ui/ScatterEllipseLayer.d.ts +69 -0
- package/lib/scatter/ui/ScatterEllipseLayer.d.ts.map +1 -0
- package/lib/scatter/ui/ScatterEllipseLayer.js +77 -0
- package/lib/scatter/ui/ScatterEllipseLayer.js.map +1 -0
- package/lib/scatter/ui/ScatterLabelLayer.d.ts +40 -0
- package/lib/scatter/ui/ScatterLabelLayer.d.ts.map +1 -0
- package/lib/scatter/ui/ScatterLabelLayer.js +77 -0
- package/lib/scatter/ui/ScatterLabelLayer.js.map +1 -0
- package/lib/scatter/ui/ScatterMarkLayer.d.ts +68 -0
- package/lib/scatter/ui/ScatterMarkLayer.d.ts.map +1 -0
- package/lib/scatter/ui/ScatterMarkLayer.js +134 -0
- package/lib/scatter/ui/ScatterMarkLayer.js.map +1 -0
- package/lib/scatter/ui/ScatterMatrix.d.ts +19 -0
- package/lib/scatter/ui/ScatterMatrix.d.ts.map +1 -0
- package/lib/scatter/ui/ScatterMatrix.js +125 -0
- package/lib/scatter/ui/ScatterMatrix.js.map +1 -0
- package/lib/scatter/ui/ScatterMatrixCell.d.ts +24 -0
- package/lib/scatter/ui/ScatterMatrixCell.d.ts.map +1 -0
- package/lib/scatter/ui/ScatterMatrixCell.js +90 -0
- package/lib/scatter/ui/ScatterMatrixCell.js.map +1 -0
- package/lib/scatter/ui/ScatterMatrixDiagonal.d.ts +78 -0
- package/lib/scatter/ui/ScatterMatrixDiagonal.d.ts.map +1 -0
- package/lib/scatter/ui/ScatterMatrixDiagonal.js +83 -0
- package/lib/scatter/ui/ScatterMatrixDiagonal.js.map +1 -0
- package/lib/scatter/ui/ScatterPlot.d.ts +17 -0
- package/lib/scatter/ui/ScatterPlot.d.ts.map +1 -0
- package/lib/scatter/ui/ScatterPlot.js +91 -0
- package/lib/scatter/ui/ScatterPlot.js.map +1 -0
- package/lib/scatter/ui/ScatterPointLayer.d.ts +67 -0
- package/lib/scatter/ui/ScatterPointLayer.d.ts.map +1 -0
- package/lib/scatter/ui/ScatterPointLayer.js +87 -0
- package/lib/scatter/ui/ScatterPointLayer.js.map +1 -0
- package/lib/scatter/ui/index.d.ts +53 -0
- package/lib/scatter/ui/index.d.ts.map +1 -0
- package/lib/scatter/ui/index.js +34 -0
- package/lib/scatter/ui/index.js.map +1 -0
- package/lib/scatter/ui/lassoGesture.d.ts +185 -0
- package/lib/scatter/ui/lassoGesture.d.ts.map +1 -0
- package/lib/scatter/ui/lassoGesture.js +100 -0
- package/lib/scatter/ui/lassoGesture.js.map +1 -0
- package/lib/scatter/ui/scatterGroupSpread.d.ts +81 -0
- package/lib/scatter/ui/scatterGroupSpread.d.ts.map +1 -0
- package/lib/scatter/ui/scatterGroupSpread.js +147 -0
- package/lib/scatter/ui/scatterGroupSpread.js.map +1 -0
- package/lib/scatter/ui/scatterLabelBoxes.d.ts +94 -0
- package/lib/scatter/ui/scatterLabelBoxes.d.ts.map +1 -0
- package/lib/scatter/ui/scatterLabelBoxes.js +140 -0
- package/lib/scatter/ui/scatterLabelBoxes.js.map +1 -0
- package/lib/scatter/ui/scatterLabelPlacement.d.ts +96 -0
- package/lib/scatter/ui/scatterLabelPlacement.d.ts.map +1 -0
- package/lib/scatter/ui/scatterLabelPlacement.js +210 -0
- package/lib/scatter/ui/scatterLabelPlacement.js.map +1 -0
- package/lib/scatter/ui/scatterLabels.d.ts +81 -0
- package/lib/scatter/ui/scatterLabels.d.ts.map +1 -0
- package/lib/scatter/ui/scatterLabels.js +101 -0
- package/lib/scatter/ui/scatterLabels.js.map +1 -0
- package/lib/scatter/ui/scatterMarkGlyph.d.ts +37 -0
- package/lib/scatter/ui/scatterMarkGlyph.d.ts.map +1 -0
- package/lib/scatter/ui/scatterMarkGlyph.js +33 -0
- package/lib/scatter/ui/scatterMarkGlyph.js.map +1 -0
- package/lib/scatter/ui/scatterMatrixDots.d.ts +24 -0
- package/lib/scatter/ui/scatterMatrixDots.d.ts.map +1 -0
- package/lib/scatter/ui/scatterMatrixDots.js +84 -0
- package/lib/scatter/ui/scatterMatrixDots.js.map +1 -0
- package/lib/scatter/ui/scatterMatrixLayout.d.ts +93 -0
- package/lib/scatter/ui/scatterMatrixLayout.d.ts.map +1 -0
- package/lib/scatter/ui/scatterMatrixLayout.js +117 -0
- package/lib/scatter/ui/scatterMatrixLayout.js.map +1 -0
- package/lib/scatter/ui/scatterMatrixOutlines.d.ts +27 -0
- package/lib/scatter/ui/scatterMatrixOutlines.d.ts.map +1 -0
- package/lib/scatter/ui/scatterMatrixOutlines.js +34 -0
- package/lib/scatter/ui/scatterMatrixOutlines.js.map +1 -0
- package/lib/scatter/ui/scatterMatrixProps.d.ts +99 -0
- package/lib/scatter/ui/scatterMatrixProps.d.ts.map +1 -0
- package/lib/scatter/ui/scatterMatrixProps.js +10 -0
- package/lib/scatter/ui/scatterMatrixProps.js.map +1 -0
- package/lib/scatter/ui/scatterOutlineShape.d.ts +63 -0
- package/lib/scatter/ui/scatterOutlineShape.d.ts.map +1 -0
- package/lib/scatter/ui/scatterOutlineShape.js +82 -0
- package/lib/scatter/ui/scatterOutlineShape.js.map +1 -0
- package/lib/scatter/ui/scatterPlotModel.d.ts +107 -0
- package/lib/scatter/ui/scatterPlotModel.d.ts.map +1 -0
- package/lib/scatter/ui/scatterPlotModel.js +139 -0
- package/lib/scatter/ui/scatterPlotModel.js.map +1 -0
- package/lib/scatter/ui/scatterPlotProps.d.ts +235 -0
- package/lib/scatter/ui/scatterPlotProps.d.ts.map +1 -0
- package/lib/scatter/ui/scatterPlotProps.js +10 -0
- package/lib/scatter/ui/scatterPlotProps.js.map +1 -0
- package/lib/scatter/ui/useLassoGesture.d.ts +18 -0
- package/lib/scatter/ui/useLassoGesture.d.ts.map +1 -0
- package/lib/scatter/ui/useLassoGesture.js +140 -0
- package/lib/scatter/ui/useLassoGesture.js.map +1 -0
- package/lib/scatter/ui/usePointHover.d.ts +88 -0
- package/lib/scatter/ui/usePointHover.d.ts.map +1 -0
- package/lib/scatter/ui/usePointHover.js +88 -0
- package/lib/scatter/ui/usePointHover.js.map +1 -0
- package/lib/scatter/ui/useScatterFrame.d.ts +80 -0
- package/lib/scatter/ui/useScatterFrame.d.ts.map +1 -0
- package/lib/scatter/ui/useScatterFrame.js +101 -0
- package/lib/scatter/ui/useScatterFrame.js.map +1 -0
- package/lib/scatter/ui/useScatterInteraction.d.ts +103 -0
- package/lib/scatter/ui/useScatterInteraction.d.ts.map +1 -0
- package/lib/scatter/ui/useScatterInteraction.js +93 -0
- package/lib/scatter/ui/useScatterInteraction.js.map +1 -0
- package/lib/scatter/ui/useScatterKeyboard.d.ts +60 -0
- package/lib/scatter/ui/useScatterKeyboard.d.ts.map +1 -0
- package/lib/scatter/ui/useScatterKeyboard.js +56 -0
- package/lib/scatter/ui/useScatterKeyboard.js.map +1 -0
- package/lib/scatter/ui/useScatterSelection.d.ts +78 -0
- package/lib/scatter/ui/useScatterSelection.d.ts.map +1 -0
- package/lib/scatter/ui/useScatterSelection.js +72 -0
- package/lib/scatter/ui/useScatterSelection.js.map +1 -0
- package/lib/share/core/query.d.ts +10 -4
- package/lib/share/core/query.d.ts.map +1 -1
- package/lib/share/core/query.js +11 -7
- package/lib/share/core/query.js.map +1 -1
- package/lib/spectra/core/axisEntries.d.ts +50 -0
- package/lib/spectra/core/axisEntries.d.ts.map +1 -0
- package/lib/spectra/core/axisEntries.js +78 -0
- package/lib/spectra/core/axisEntries.js.map +1 -0
- package/lib/spectra/core/chainProblems.d.ts +14 -0
- package/lib/spectra/core/chainProblems.d.ts.map +1 -0
- package/lib/spectra/core/chainProblems.js +100 -0
- package/lib/spectra/core/chainProblems.js.map +1 -0
- package/lib/spectra/core/filterCatalog.d.ts +57 -0
- package/lib/spectra/core/filterCatalog.d.ts.map +1 -0
- package/lib/spectra/core/filterCatalog.js +81 -0
- package/lib/spectra/core/filterCatalog.js.map +1 -0
- package/lib/spectra/core/filterChain.d.ts +69 -0
- package/lib/spectra/core/filterChain.d.ts.map +1 -0
- package/lib/spectra/core/filterChain.js +163 -0
- package/lib/spectra/core/filterChain.js.map +1 -0
- package/lib/spectra/core/filterEntries.d.ts +136 -0
- package/lib/spectra/core/filterEntries.d.ts.map +1 -0
- package/lib/spectra/core/filterEntries.js +139 -0
- package/lib/spectra/core/filterEntries.js.map +1 -0
- package/lib/spectra/core/filterFields.d.ts +94 -0
- package/lib/spectra/core/filterFields.d.ts.map +1 -0
- package/lib/spectra/core/filterFields.js +82 -0
- package/lib/spectra/core/filterFields.js.map +1 -0
- package/lib/spectra/core/index.d.ts +14 -0
- package/lib/spectra/core/index.d.ts.map +1 -0
- package/lib/spectra/core/index.js +9 -0
- package/lib/spectra/core/index.js.map +1 -0
- package/lib/spectra/core/principalComponents.d.ts +70 -0
- package/lib/spectra/core/principalComponents.d.ts.map +1 -0
- package/lib/spectra/core/principalComponents.js +90 -0
- package/lib/spectra/core/principalComponents.js.map +1 -0
- package/lib/spectra/core/problems.d.ts +57 -0
- package/lib/spectra/core/problems.d.ts.map +1 -0
- package/lib/spectra/core/problems.js +121 -0
- package/lib/spectra/core/problems.js.map +1 -0
- package/lib/spectra/core/settings.d.ts +67 -0
- package/lib/spectra/core/settings.d.ts.map +1 -0
- package/lib/spectra/core/settings.js +35 -0
- package/lib/spectra/core/settings.js.map +1 -0
- package/lib/spectra/core/settingsProblems.d.ts +18 -0
- package/lib/spectra/core/settingsProblems.d.ts.map +1 -0
- package/lib/spectra/core/settingsProblems.js +148 -0
- package/lib/spectra/core/settingsProblems.js.map +1 -0
- package/lib/spectra/core/stepProblems.d.ts +13 -0
- package/lib/spectra/core/stepProblems.d.ts.map +1 -0
- package/lib/spectra/core/stepProblems.js +133 -0
- package/lib/spectra/core/stepProblems.js.map +1 -0
- package/lib/spectra/ui/CalculationRows.d.ts +21 -0
- package/lib/spectra/ui/CalculationRows.d.ts.map +1 -0
- package/lib/spectra/ui/CalculationRows.js +77 -0
- package/lib/spectra/ui/CalculationRows.js.map +1 -0
- package/lib/spectra/ui/FilterChainEditor.d.ts +34 -0
- package/lib/spectra/ui/FilterChainEditor.d.ts.map +1 -0
- package/lib/spectra/ui/FilterChainEditor.js +111 -0
- package/lib/spectra/ui/FilterChainEditor.js.map +1 -0
- package/lib/spectra/ui/FilterChoiceControl.d.ts +23 -0
- package/lib/spectra/ui/FilterChoiceControl.d.ts.map +1 -0
- package/lib/spectra/ui/FilterChoiceControl.js +65 -0
- package/lib/spectra/ui/FilterChoiceControl.js.map +1 -0
- package/lib/spectra/ui/FilterFieldControl.d.ts +25 -0
- package/lib/spectra/ui/FilterFieldControl.d.ts.map +1 -0
- package/lib/spectra/ui/FilterFieldControl.js +68 -0
- package/lib/spectra/ui/FilterFieldControl.js.map +1 -0
- package/lib/spectra/ui/FilterRow.d.ts +33 -0
- package/lib/spectra/ui/FilterRow.d.ts.map +1 -0
- package/lib/spectra/ui/FilterRow.js +76 -0
- package/lib/spectra/ui/FilterRow.js.map +1 -0
- package/lib/spectra/ui/MatrixFilterRows.d.ts +22 -0
- package/lib/spectra/ui/MatrixFilterRows.d.ts.map +1 -0
- package/lib/spectra/ui/MatrixFilterRows.js +92 -0
- package/lib/spectra/ui/MatrixFilterRows.js.map +1 -0
- package/lib/spectra/ui/NormalizationEditor.d.ts +24 -0
- package/lib/spectra/ui/NormalizationEditor.d.ts.map +1 -0
- package/lib/spectra/ui/NormalizationEditor.js +108 -0
- package/lib/spectra/ui/NormalizationEditor.js.map +1 -0
- package/lib/spectra/ui/NumberField.d.ts +41 -0
- package/lib/spectra/ui/NumberField.d.ts.map +1 -0
- package/lib/spectra/ui/NumberField.js +81 -0
- package/lib/spectra/ui/NumberField.js.map +1 -0
- package/lib/spectra/ui/PostProcessingEditor.d.ts +29 -0
- package/lib/spectra/ui/PostProcessingEditor.d.ts.map +1 -0
- package/lib/spectra/ui/PostProcessingEditor.js +53 -0
- package/lib/spectra/ui/PostProcessingEditor.js.map +1 -0
- package/lib/spectra/ui/PrincipalComponentSelect.d.ts +40 -0
- package/lib/spectra/ui/PrincipalComponentSelect.d.ts.map +1 -0
- package/lib/spectra/ui/PrincipalComponentSelect.js +97 -0
- package/lib/spectra/ui/PrincipalComponentSelect.js.map +1 -0
- package/lib/spectra/ui/ProblemList.d.ts +24 -0
- package/lib/spectra/ui/ProblemList.d.ts.map +1 -0
- package/lib/spectra/ui/ProblemList.js +40 -0
- package/lib/spectra/ui/ProblemList.js.map +1 -0
- package/lib/spectra/ui/RangeRows.d.ts +23 -0
- package/lib/spectra/ui/RangeRows.d.ts.map +1 -0
- package/lib/spectra/ui/RangeRows.js +76 -0
- package/lib/spectra/ui/RangeRows.js.map +1 -0
- package/lib/spectra/ui/ScaleFields.d.ts +28 -0
- package/lib/spectra/ui/ScaleFields.d.ts.map +1 -0
- package/lib/spectra/ui/ScaleFields.js +67 -0
- package/lib/spectra/ui/ScaleFields.js.map +1 -0
- package/lib/spectra/ui/SettingsPart.d.ts +25 -0
- package/lib/spectra/ui/SettingsPart.d.ts.map +1 -0
- package/lib/spectra/ui/SettingsPart.js +35 -0
- package/lib/spectra/ui/SettingsPart.js.map +1 -0
- package/lib/spectra/ui/SpectraSettingsEditor.d.ts +62 -0
- package/lib/spectra/ui/SpectraSettingsEditor.d.ts.map +1 -0
- package/lib/spectra/ui/SpectraSettingsEditor.js +39 -0
- package/lib/spectra/ui/SpectraSettingsEditor.js.map +1 -0
- package/lib/spectra/ui/SpectrumSelection.d.ts +30 -0
- package/lib/spectra/ui/SpectrumSelection.d.ts.map +1 -0
- package/lib/spectra/ui/SpectrumSelection.js +116 -0
- package/lib/spectra/ui/SpectrumSelection.js.map +1 -0
- package/lib/spectra/ui/ZoneRows.d.ts +41 -0
- package/lib/spectra/ui/ZoneRows.d.ts.map +1 -0
- package/lib/spectra/ui/ZoneRows.js +70 -0
- package/lib/spectra/ui/ZoneRows.js.map +1 -0
- package/lib/spectra/ui/index.d.ts +7 -0
- package/lib/spectra/ui/index.d.ts.map +1 -0
- package/lib/spectra/ui/index.js +4 -0
- package/lib/spectra/ui/index.js.map +1 -0
- package/lib/spectra/ui/matrixSteps.d.ts +61 -0
- package/lib/spectra/ui/matrixSteps.d.ts.map +1 -0
- package/lib/spectra/ui/matrixSteps.js +92 -0
- package/lib/spectra/ui/matrixSteps.js.map +1 -0
- package/lib/spectra/ui/problemsAbout.d.ts +14 -0
- package/lib/spectra/ui/problemsAbout.d.ts.map +1 -0
- package/lib/spectra/ui/problemsAbout.js +15 -0
- package/lib/spectra/ui/problemsAbout.js.map +1 -0
- package/lib/spectra/ui/rowKeys.d.ts +27 -0
- package/lib/spectra/ui/rowKeys.d.ts.map +1 -0
- package/lib/spectra/ui/rowKeys.js +45 -0
- package/lib/spectra/ui/rowKeys.js.map +1 -0
- package/lib/spectra/ui/scaleOptions.d.ts +50 -0
- package/lib/spectra/ui/scaleOptions.d.ts.map +1 -0
- package/lib/spectra/ui/scaleOptions.js +103 -0
- package/lib/spectra/ui/scaleOptions.js.map +1 -0
- package/lib/ui.d.ts +6 -0
- package/lib/ui.d.ts.map +1 -1
- package/lib/ui.js +6 -0
- package/lib/ui.js.map +1 -1
- package/package.json +17 -1
- package/src/chart/core/chartAxisScale.ts +249 -0
- package/src/chart/core/chartBand.ts +82 -0
- package/src/chart/core/chartBins.ts +96 -0
- package/src/chart/core/chartExtent.ts +203 -0
- package/src/chart/core/chartLabels.ts +68 -0
- package/src/chart/core/chartPalette.ts +71 -0
- package/src/chart/core/chartScale.ts +72 -0
- package/src/chart/core/chartViewport.ts +211 -0
- package/src/chart/core/index.ts +58 -0
- package/src/chart/core/matrix.ts +100 -0
- package/src/chart/ui/ChartAxis.tsx +232 -0
- package/src/chart/ui/ChartFrame.tsx +246 -0
- package/src/chart/ui/ChartSeriesMarks.tsx +98 -0
- package/src/chart/ui/ChartTrackingLayer.tsx +192 -0
- package/src/chart/ui/TrackedLineChart.tsx +267 -0
- package/src/chart/ui/TrackedStickChart.tsx +197 -0
- package/src/chart/ui/chartStyles.ts +194 -0
- package/src/chart/ui/index.ts +34 -0
- package/src/chart/ui/stickChartModel.ts +201 -0
- package/src/chart/ui/useWheelZoom.ts +177 -0
- package/src/color/core/gradient.ts +29 -0
- package/src/color/core/hsv.ts +112 -0
- package/src/color/core/index.ts +27 -1
- package/src/color/core/interpolate.ts +179 -0
- package/src/color/core/scale.ts +17 -49
- package/src/color/core/scaleData.ts +128 -0
- package/src/color/core/scaleText.ts +134 -0
- package/src/color/core/scales.ts +148 -0
- package/src/color/ui/ColorScaleBar.tsx +73 -0
- package/src/color/ui/ColorScaleEditor.tsx +243 -0
- package/src/color/ui/ColorScaleSelect.tsx +252 -0
- package/src/color/ui/index.ts +6 -0
- package/src/core.ts +5 -0
- package/src/credits/core/credits.ts +20 -0
- package/src/download/core/cssTokens.ts +90 -0
- package/src/download/core/downloadFigure.ts +66 -0
- package/src/download/core/figurePng.ts +87 -0
- package/src/download/core/figureScale.ts +83 -0
- package/src/download/core/figureSvg.ts +130 -0
- package/src/download/core/figureSvgDocument.ts +129 -0
- package/src/download/core/figureTarget.ts +130 -0
- package/src/download/core/index.ts +28 -0
- package/src/download/ui/FigureDownload.tsx +158 -0
- package/src/download/ui/FigureDownloadPanel.tsx +165 -0
- package/src/download/ui/index.ts +13 -0
- package/src/ecosystem/core/sites.ts +12 -1
- package/src/ecosystem/ui/glyphs.tsx +16 -0
- package/src/overlay/core/emptiestCorner.ts +122 -0
- package/src/overlay/core/index.ts +34 -0
- package/src/overlay/core/overlayCollapse.ts +20 -0
- package/src/overlay/core/overlayMarks.ts +43 -0
- package/src/overlay/core/overlayMetrics.ts +112 -0
- package/src/overlay/core/overlayPlacement.ts +80 -0
- package/src/overlay/core/overlayTierRoom.ts +199 -0
- package/src/overlay/core/overlayTiers.ts +130 -0
- package/src/overlay/core/placeOverlayCard.ts +93 -0
- package/src/overlay/ui/OverlayAction.tsx +66 -0
- package/src/overlay/ui/OverlayBar.tsx +188 -0
- package/src/overlay/ui/OverlayBarButton.tsx +83 -0
- package/src/overlay/ui/OverlayBarCard.tsx +78 -0
- package/src/overlay/ui/OverlayBarStrip.tsx +62 -0
- package/src/overlay/ui/OverlayCaption.tsx +124 -0
- package/src/overlay/ui/OverlayChip.tsx +181 -0
- package/src/overlay/ui/OverlayDivider.tsx +24 -0
- package/src/overlay/ui/OverlayGroup.tsx +157 -0
- package/src/overlay/ui/OverlayIconButton.tsx +131 -0
- package/src/overlay/ui/OverlayInfo.tsx +92 -0
- package/src/overlay/ui/OverlayLayer.tsx +118 -0
- package/src/overlay/ui/OverlayLegend.tsx +222 -0
- package/src/overlay/ui/OverlayLegendMark.tsx +95 -0
- package/src/overlay/ui/OverlayNumber.tsx +160 -0
- package/src/overlay/ui/OverlayPanel.tsx +162 -0
- package/src/overlay/ui/OverlayPills.tsx +157 -0
- package/src/overlay/ui/OverlayReadout.tsx +247 -0
- package/src/overlay/ui/OverlayRow.tsx +200 -0
- package/src/overlay/ui/OverlaySegmented.tsx +67 -0
- package/src/overlay/ui/OverlaySelect.tsx +114 -0
- package/src/overlay/ui/OverlaySwatchIcon.tsx +126 -0
- package/src/overlay/ui/OverlayToggle.tsx +136 -0
- package/src/overlay/ui/OverlayValueButton.tsx +149 -0
- package/src/overlay/ui/OverlayValueMenu.tsx +141 -0
- package/src/overlay/ui/index.ts +72 -0
- package/src/overlay/ui/overlayBarShape.ts +113 -0
- package/src/overlay/ui/overlayControlStyles.ts +176 -0
- package/src/overlay/ui/overlayFigureStyles.ts +111 -0
- package/src/overlay/ui/overlayPanelContext.ts +42 -0
- package/src/overlay/ui/overlayPanelStyles.ts +235 -0
- package/src/overlay/ui/overlayPillKeys.ts +45 -0
- package/src/overlay/ui/overlayPillStyles.ts +190 -0
- package/src/overlay/ui/overlayRowStyles.ts +166 -0
- package/src/overlay/ui/overlayStepperStyles.ts +112 -0
- package/src/overlay/ui/overlayStyles.ts +222 -0
- package/src/overlay/ui/overlaySurface.ts +120 -0
- package/src/overlay/ui/overlaySwitchStyles.ts +136 -0
- package/src/overlay/ui/overlayValueStyles.ts +210 -0
- package/src/projection/core/embeddingResult.ts +119 -0
- package/src/projection/core/explainedShares.ts +105 -0
- package/src/projection/core/index.ts +81 -0
- package/src/projection/core/loadingProfiles.ts +226 -0
- package/src/projection/core/pcaLike.ts +33 -0
- package/src/projection/core/pcaResult.ts +238 -0
- package/src/projection/core/projectionCopy.ts +252 -0
- package/src/projection/core/projectionCopyPatch.ts +12 -0
- package/src/projection/core/projectionOptions.ts +238 -0
- package/src/projection/core/projectionResult.ts +123 -0
- package/src/projection/core/projectionSamples.ts +170 -0
- package/src/projection/core/projectionStrings.ts +265 -0
- package/src/projection/core/projectionTabDefaults.ts +51 -0
- package/src/projection/core/projectionTabs.ts +56 -0
- package/src/projection/core/variableAxis.ts +161 -0
- package/src/projection/core/variablesView.ts +53 -0
- package/src/projection/ui/PcaViewer.tsx +80 -0
- package/src/projection/ui/ProjectionBar.tsx +222 -0
- package/src/projection/ui/ProjectionMapCaption.tsx +96 -0
- package/src/projection/ui/ProjectionMapControls.tsx +271 -0
- package/src/projection/ui/ProjectionMapLegend.tsx +70 -0
- package/src/projection/ui/ProjectionMapMore.tsx +178 -0
- package/src/projection/ui/ProjectionMapTab.tsx +205 -0
- package/src/projection/ui/ProjectionPairsControls.tsx +58 -0
- package/src/projection/ui/ProjectionPairsMore.tsx +95 -0
- package/src/projection/ui/ProjectionPairsTab.tsx +159 -0
- package/src/projection/ui/ProjectionPanel.tsx +199 -0
- package/src/projection/ui/ProjectionReadout.tsx +149 -0
- package/src/projection/ui/ProjectionSharesControls.tsx +56 -0
- package/src/projection/ui/ProjectionSharesMarks.tsx +241 -0
- package/src/projection/ui/ProjectionSharesMore.tsx +53 -0
- package/src/projection/ui/ProjectionSharesTab.tsx +118 -0
- package/src/projection/ui/ProjectionSurface.tsx +63 -0
- package/src/projection/ui/ProjectionTabStrip.tsx +144 -0
- package/src/projection/ui/ProjectionVariablesControls.tsx +62 -0
- package/src/projection/ui/ProjectionVariablesMore.tsx +144 -0
- package/src/projection/ui/ProjectionVariablesTab.tsx +216 -0
- package/src/projection/ui/ProjectionViewer.tsx +143 -0
- package/src/projection/ui/index.ts +19 -0
- package/src/projection/ui/projectionBarModel.ts +193 -0
- package/src/projection/ui/projectionBarReadings.ts +177 -0
- package/src/projection/ui/projectionBarSlots.tsx +139 -0
- package/src/projection/ui/projectionBarStyles.ts +174 -0
- package/src/projection/ui/projectionEllipse.ts +104 -0
- package/src/projection/ui/projectionFormat.ts +18 -0
- package/src/projection/ui/projectionMapChoices.ts +64 -0
- package/src/projection/ui/projectionMapChrome.ts +207 -0
- package/src/projection/ui/projectionMapModel.ts +253 -0
- package/src/projection/ui/projectionMapView.ts +188 -0
- package/src/projection/ui/projectionPairsCeiling.ts +45 -0
- package/src/projection/ui/projectionSelection.ts +87 -0
- package/src/projection/ui/projectionTabInfo.ts +126 -0
- package/src/projection/ui/projectionTabModels.ts +106 -0
- package/src/projection/ui/projectionTabStyles.ts +161 -0
- package/src/projection/ui/projectionVariablesModel.ts +231 -0
- package/src/projection/ui/projectionVariablesWords.ts +105 -0
- package/src/projection/ui/projectionViewChoices.ts +77 -0
- package/src/projection/ui/projectionViewerProps.ts +155 -0
- package/src/projection/ui/useProjectionState.ts +224 -0
- package/src/scatter/core/confidenceEllipse.ts +230 -0
- package/src/scatter/core/ellipseCoverage.ts +46 -0
- package/src/scatter/core/ellipseProjection.ts +126 -0
- package/src/scatter/core/index.ts +48 -0
- package/src/scatter/core/lassoPath.ts +127 -0
- package/src/scatter/core/polygon.ts +155 -0
- package/src/scatter/core/scatterSelection.ts +88 -0
- package/src/scatter/core/screenPoints.ts +110 -0
- package/src/scatter/ui/ScatterEllipseLayer.tsx +153 -0
- package/src/scatter/ui/ScatterLabelLayer.tsx +135 -0
- package/src/scatter/ui/ScatterMarkLayer.tsx +245 -0
- package/src/scatter/ui/ScatterMatrix.tsx +177 -0
- package/src/scatter/ui/ScatterMatrixCell.tsx +140 -0
- package/src/scatter/ui/ScatterMatrixDiagonal.tsx +182 -0
- package/src/scatter/ui/ScatterPlot.tsx +234 -0
- package/src/scatter/ui/ScatterPointLayer.tsx +168 -0
- package/src/scatter/ui/index.ts +123 -0
- package/src/scatter/ui/lassoGesture.ts +237 -0
- package/src/scatter/ui/scatterGroupSpread.ts +206 -0
- package/src/scatter/ui/scatterLabelBoxes.ts +177 -0
- package/src/scatter/ui/scatterLabelPlacement.ts +325 -0
- package/src/scatter/ui/scatterLabels.ts +147 -0
- package/src/scatter/ui/scatterMarkGlyph.tsx +94 -0
- package/src/scatter/ui/scatterMatrixDots.tsx +134 -0
- package/src/scatter/ui/scatterMatrixLayout.ts +133 -0
- package/src/scatter/ui/scatterMatrixOutlines.tsx +53 -0
- package/src/scatter/ui/scatterMatrixProps.ts +103 -0
- package/src/scatter/ui/scatterOutlineShape.tsx +169 -0
- package/src/scatter/ui/scatterPlotModel.ts +200 -0
- package/src/scatter/ui/scatterPlotProps.ts +240 -0
- package/src/scatter/ui/useLassoGesture.ts +214 -0
- package/src/scatter/ui/usePointHover.ts +187 -0
- package/src/scatter/ui/useScatterFrame.ts +191 -0
- package/src/scatter/ui/useScatterInteraction.ts +237 -0
- package/src/scatter/ui/useScatterKeyboard.ts +120 -0
- package/src/scatter/ui/useScatterSelection.ts +189 -0
- package/src/share/core/query.ts +11 -7
- package/src/spectra/core/axisEntries.ts +107 -0
- package/src/spectra/core/chainProblems.ts +165 -0
- package/src/spectra/core/filterCatalog.ts +100 -0
- package/src/spectra/core/filterChain.ts +194 -0
- package/src/spectra/core/filterEntries.ts +214 -0
- package/src/spectra/core/filterFields.ts +159 -0
- package/src/spectra/core/index.ts +67 -0
- package/src/spectra/core/principalComponents.ts +130 -0
- package/src/spectra/core/problems.ts +143 -0
- package/src/spectra/core/settings.ts +119 -0
- package/src/spectra/core/settingsProblems.ts +222 -0
- package/src/spectra/core/stepProblems.ts +228 -0
- package/src/spectra/ui/CalculationRows.tsx +161 -0
- package/src/spectra/ui/FilterChainEditor.tsx +199 -0
- package/src/spectra/ui/FilterChoiceControl.tsx +153 -0
- package/src/spectra/ui/FilterFieldControl.tsx +105 -0
- package/src/spectra/ui/FilterRow.tsx +190 -0
- package/src/spectra/ui/MatrixFilterRows.tsx +184 -0
- package/src/spectra/ui/NormalizationEditor.tsx +235 -0
- package/src/spectra/ui/NumberField.tsx +126 -0
- package/src/spectra/ui/PostProcessingEditor.tsx +136 -0
- package/src/spectra/ui/PrincipalComponentSelect.tsx +245 -0
- package/src/spectra/ui/ProblemList.tsx +77 -0
- package/src/spectra/ui/RangeRows.tsx +175 -0
- package/src/spectra/ui/ScaleFields.tsx +183 -0
- package/src/spectra/ui/SettingsPart.tsx +60 -0
- package/src/spectra/ui/SpectraSettingsEditor.tsx +143 -0
- package/src/spectra/ui/SpectrumSelection.tsx +193 -0
- package/src/spectra/ui/ZoneRows.tsx +159 -0
- package/src/spectra/ui/index.ts +9 -0
- package/src/spectra/ui/matrixSteps.ts +128 -0
- package/src/spectra/ui/problemsAbout.ts +21 -0
- package/src/spectra/ui/rowKeys.ts +47 -0
- package/src/spectra/ui/scaleOptions.ts +116 -0
- package/src/ui.ts +6 -0
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where a word actually goes once the words beside it are taken into account.
|
|
3
|
+
*
|
|
4
|
+
* A name written at the thing it names is right until two things are close
|
|
5
|
+
* together, and then both names are wrong: a map of forty groups whose crowds
|
|
6
|
+
* overlap writes forty names on top of each other and a reader can read none
|
|
7
|
+
* of them — the label layer's halo makes one word legible over dots, never
|
|
8
|
+
* over another word.
|
|
9
|
+
*
|
|
10
|
+
* So the words are placed one at a time, best first: each takes the nearest
|
|
11
|
+
* free seat around what it names, and a word that finds no seat within reach
|
|
12
|
+
* is not written at all. Dropping is the point rather than a failure. Twelve
|
|
13
|
+
* readable names beat forty unreadable ones, the twelve are the ones that
|
|
14
|
+
* speak for the most samples, and the crowded name is still one hover away.
|
|
15
|
+
*
|
|
16
|
+
* It is arithmetic over pixels, so it sits beside the layer that draws it and
|
|
17
|
+
* can be checked without rendering anything.
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
import type { LabelBox } from './scatterLabelBoxes.ts';
|
|
21
|
+
import {
|
|
22
|
+
LabelBoxField,
|
|
23
|
+
labelBoxHeight,
|
|
24
|
+
labelBoxWidth,
|
|
25
|
+
} from './scatterLabelBoxes.ts';
|
|
26
|
+
import type { ScatterPixelLabel } from './scatterLabels.ts';
|
|
27
|
+
|
|
28
|
+
/** One word, with the seat it was given. */
|
|
29
|
+
export interface PlacedScatterLabel extends ScatterPixelLabel {
|
|
30
|
+
/** Where the word itself is written, which is no longer where its subject is. */
|
|
31
|
+
textX: number;
|
|
32
|
+
/** The vertical middle of the word. */
|
|
33
|
+
textY: number;
|
|
34
|
+
/** Which end of the word sits at `textX`. */
|
|
35
|
+
anchor: 'start' | 'middle' | 'end';
|
|
36
|
+
/**
|
|
37
|
+
* Where a line drawn back to what the word names should reach it — the point
|
|
38
|
+
* of the word's own rectangle nearest its subject. Left out when the word is
|
|
39
|
+
* beside its subject already and a line would be clutter.
|
|
40
|
+
* @default undefined — no line is drawn
|
|
41
|
+
*/
|
|
42
|
+
leader?: { x: number; y: number };
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/** How {@link placeScatterLabels} seats the words. */
|
|
46
|
+
export interface ScatterLabelPlacementOptions {
|
|
47
|
+
/**
|
|
48
|
+
* What the words are set in, in pixels — the same number the layer draws
|
|
49
|
+
* them at, or the room kept for them is the wrong size.
|
|
50
|
+
* @default 10
|
|
51
|
+
*/
|
|
52
|
+
fontSize?: number;
|
|
53
|
+
/**
|
|
54
|
+
* Whether they are set in the heavier weight, which is wider.
|
|
55
|
+
* @default false
|
|
56
|
+
*/
|
|
57
|
+
bold?: boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Whether a word wants to sit over the middle of what it names rather than
|
|
60
|
+
* out to its right — which is what a group's name over its own crowd wants.
|
|
61
|
+
* @default false
|
|
62
|
+
*/
|
|
63
|
+
centered?: boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Radius of the dot a word stands beside, which is what its first seat
|
|
66
|
+
* clears.
|
|
67
|
+
* @default 3.5
|
|
68
|
+
*/
|
|
69
|
+
radius?: number;
|
|
70
|
+
/**
|
|
71
|
+
* How far a word may be moved from what it names, in pixels. Past this it is
|
|
72
|
+
* dropped instead: a name floating eighty pixels from its dot in a crowded
|
|
73
|
+
* map names whatever the reader guesses it does.
|
|
74
|
+
* @default 40
|
|
75
|
+
*/
|
|
76
|
+
shift?: number;
|
|
77
|
+
/**
|
|
78
|
+
* The rectangle words have to stay inside — the plot area, so a name never
|
|
79
|
+
* hangs over an axis or off the figure.
|
|
80
|
+
* @default undefined — words may go anywhere
|
|
81
|
+
*/
|
|
82
|
+
bounds?: { x: number; y: number; width: number; height: number };
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* The words that fit, each in its seat.
|
|
87
|
+
*
|
|
88
|
+
* Order of service is the weight a label carries — the size of the crowd a
|
|
89
|
+
* group's name speaks for — and then the order they came in, so the same map
|
|
90
|
+
* seats the same words every render and a name does not flicker between two
|
|
91
|
+
* places as the pointer moves.
|
|
92
|
+
* @param labels - The words and what they name, from `scatterPointLabels` or
|
|
93
|
+
* `scatterGroupLabels`.
|
|
94
|
+
* @param options - See {@link ScatterLabelPlacementOptions}.
|
|
95
|
+
* @returns The words that found room, in the order they were given.
|
|
96
|
+
*/
|
|
97
|
+
export function placeScatterLabels(
|
|
98
|
+
labels: readonly ScatterPixelLabel[],
|
|
99
|
+
options: ScatterLabelPlacementOptions = {},
|
|
100
|
+
): PlacedScatterLabel[] {
|
|
101
|
+
const { fontSize = 10, bold = false, centered = false } = options;
|
|
102
|
+
const { radius = 3.5, shift = DEFAULT_SHIFT, bounds } = options;
|
|
103
|
+
|
|
104
|
+
const height = labelBoxHeight(fontSize);
|
|
105
|
+
const field = new LabelBoxField();
|
|
106
|
+
const seated = new Array<PlacedScatterLabel | undefined>(labels.length);
|
|
107
|
+
const order = placementOrder(labels);
|
|
108
|
+
|
|
109
|
+
for (const index of order) {
|
|
110
|
+
const label = labels[index];
|
|
111
|
+
if (label === undefined) continue;
|
|
112
|
+
const width = labelBoxWidth(label.text, fontSize, bold);
|
|
113
|
+
const box = freeSeat(label, width, height, {
|
|
114
|
+
radius,
|
|
115
|
+
centered,
|
|
116
|
+
shift,
|
|
117
|
+
bounds,
|
|
118
|
+
field,
|
|
119
|
+
});
|
|
120
|
+
if (box === undefined) continue;
|
|
121
|
+
field.add(box);
|
|
122
|
+
seated[index] = { ...label, ...written(box, label, radius) };
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
const placed: PlacedScatterLabel[] = [];
|
|
126
|
+
for (const label of seated) {
|
|
127
|
+
if (label !== undefined) placed.push(label);
|
|
128
|
+
}
|
|
129
|
+
return placed;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/** What {@link freeSeat} needs beyond the word itself. */
|
|
133
|
+
interface SeatSearch {
|
|
134
|
+
radius: number;
|
|
135
|
+
centered: boolean;
|
|
136
|
+
shift: number;
|
|
137
|
+
bounds: ScatterLabelPlacementOptions['bounds'];
|
|
138
|
+
field: LabelBoxField;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* The nearest place this word can go without landing on one already written,
|
|
143
|
+
* or `undefined` when there is none within reach.
|
|
144
|
+
* @param label - The word and what it names.
|
|
145
|
+
* @param width - How wide it will be drawn, in pixels.
|
|
146
|
+
* @param height - How tall.
|
|
147
|
+
* @param search - See {@link SeatSearch}.
|
|
148
|
+
* @returns The rectangle it takes, or nothing when none is free.
|
|
149
|
+
*/
|
|
150
|
+
function freeSeat(
|
|
151
|
+
label: ScatterPixelLabel,
|
|
152
|
+
width: number,
|
|
153
|
+
height: number,
|
|
154
|
+
search: SeatSearch,
|
|
155
|
+
): LabelBox | undefined {
|
|
156
|
+
const { radius, centered, shift, bounds, field } = search;
|
|
157
|
+
const clear = radius + SEAT_GAP;
|
|
158
|
+
const near: LabelBox[] = centered
|
|
159
|
+
? [box(label.x, label.y, width, height)]
|
|
160
|
+
: [];
|
|
161
|
+
near.push(
|
|
162
|
+
box(label.x + clear + width / 2, label.y, width, height),
|
|
163
|
+
box(label.x - clear - width / 2, label.y, width, height),
|
|
164
|
+
box(label.x, label.y - clear - height / 2, width, height),
|
|
165
|
+
box(label.x, label.y + clear + height / 2, width, height),
|
|
166
|
+
);
|
|
167
|
+
for (const seat of near) {
|
|
168
|
+
if (free(seat, bounds, field)) return seat;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
for (let step = SEAT_STEP; step <= shift; step += SEAT_STEP) {
|
|
172
|
+
for (let index = 0; index < SEAT_DIRECTIONS.length; index += 2) {
|
|
173
|
+
const across = SEAT_DIRECTIONS[index] ?? 0;
|
|
174
|
+
const down = SEAT_DIRECTIONS[index + 1] ?? 0;
|
|
175
|
+
const seat = box(
|
|
176
|
+
label.x + across * (step + width / 2),
|
|
177
|
+
label.y + down * (step + height / 2),
|
|
178
|
+
width,
|
|
179
|
+
height,
|
|
180
|
+
);
|
|
181
|
+
if (free(seat, bounds, field)) return seat;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
return undefined;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* Whether a seat is inside the frame and free of every word already written.
|
|
189
|
+
* @param seat - Where the word would go.
|
|
190
|
+
* @param bounds - The rectangle it has to stay inside, if any.
|
|
191
|
+
* @param field - The words already placed.
|
|
192
|
+
* @returns Whether it may be written there.
|
|
193
|
+
*/
|
|
194
|
+
function free(
|
|
195
|
+
seat: LabelBox,
|
|
196
|
+
bounds: ScatterLabelPlacementOptions['bounds'],
|
|
197
|
+
field: LabelBoxField,
|
|
198
|
+
): boolean {
|
|
199
|
+
if (bounds !== undefined) {
|
|
200
|
+
if (seat.left < bounds.x || seat.right > bounds.x + bounds.width) {
|
|
201
|
+
return false;
|
|
202
|
+
}
|
|
203
|
+
if (seat.top < bounds.y || seat.bottom > bounds.y + bounds.height) {
|
|
204
|
+
return false;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
return field.fits(seat);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* How the word is drawn once its seat is known.
|
|
212
|
+
* @param seat - The rectangle it took.
|
|
213
|
+
* @param label - The word and what it names.
|
|
214
|
+
* @param radius - Radius of the dot it stands beside.
|
|
215
|
+
* @returns Where the text goes, which end of it is pinned, and where a line
|
|
216
|
+
* back to its subject reaches it.
|
|
217
|
+
*/
|
|
218
|
+
function written(
|
|
219
|
+
seat: LabelBox,
|
|
220
|
+
label: ScatterPixelLabel,
|
|
221
|
+
radius: number,
|
|
222
|
+
): Omit<PlacedScatterLabel, keyof ScatterPixelLabel> {
|
|
223
|
+
const edgeX = Math.min(Math.max(label.x, seat.left), seat.right);
|
|
224
|
+
const edgeY = Math.min(Math.max(label.y, seat.top), seat.bottom);
|
|
225
|
+
const across = label.x - edgeX;
|
|
226
|
+
const down = label.y - edgeY;
|
|
227
|
+
const away = Math.hypot(across, down);
|
|
228
|
+
const middle = (seat.left + seat.right) / 2;
|
|
229
|
+
// Pinned at the end nearest its subject, so the word grows away from the dot
|
|
230
|
+
// rather than back over it.
|
|
231
|
+
const anchor = away <= radius ? 'middle' : nearestSide(middle, label.x);
|
|
232
|
+
const placed = {
|
|
233
|
+
textX:
|
|
234
|
+
anchor === 'start' ? seat.left : anchor === 'end' ? seat.right : middle,
|
|
235
|
+
textY: (seat.top + seat.bottom) / 2,
|
|
236
|
+
anchor,
|
|
237
|
+
} as const;
|
|
238
|
+
return away > LEADER_FROM
|
|
239
|
+
? { ...placed, leader: { x: edgeX, y: edgeY } }
|
|
240
|
+
: placed;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
/**
|
|
244
|
+
* Which end of a word to pin, given which side of its subject it sits on.
|
|
245
|
+
* @param middle - The middle of the word, horizontally.
|
|
246
|
+
* @param subject - Where what it names sits, horizontally.
|
|
247
|
+
* @returns The anchor to draw it with.
|
|
248
|
+
*/
|
|
249
|
+
function nearestSide(
|
|
250
|
+
middle: number,
|
|
251
|
+
subject: number,
|
|
252
|
+
): 'start' | 'middle' | 'end' {
|
|
253
|
+
if (middle > subject + 1) return 'start';
|
|
254
|
+
if (middle < subject - 1) return 'end';
|
|
255
|
+
return 'middle';
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
/**
|
|
259
|
+
* The rectangle of a word of this size, centred on a point.
|
|
260
|
+
* @param centerX - Middle of the rectangle, horizontally.
|
|
261
|
+
* @param centerY - Middle of it, vertically.
|
|
262
|
+
* @param width - How wide it is.
|
|
263
|
+
* @param height - How tall.
|
|
264
|
+
* @returns The rectangle.
|
|
265
|
+
*/
|
|
266
|
+
function box(
|
|
267
|
+
centerX: number,
|
|
268
|
+
centerY: number,
|
|
269
|
+
width: number,
|
|
270
|
+
height: number,
|
|
271
|
+
): LabelBox {
|
|
272
|
+
return {
|
|
273
|
+
left: centerX - width / 2,
|
|
274
|
+
right: centerX + width / 2,
|
|
275
|
+
top: centerY - height / 2,
|
|
276
|
+
bottom: centerY + height / 2,
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
/**
|
|
281
|
+
* The order the words are served in: the heaviest first — a group's name
|
|
282
|
+
* carries the size of its crowd — and ties in the order they were given, so
|
|
283
|
+
* the answer never depends on how the sort was implemented.
|
|
284
|
+
* @param labels - The words, in the order the caller gave them.
|
|
285
|
+
* @returns Their indices, best served first.
|
|
286
|
+
*/
|
|
287
|
+
function placementOrder(labels: readonly ScatterPixelLabel[]): number[] {
|
|
288
|
+
const order = new Array<number>(labels.length);
|
|
289
|
+
for (let index = 0; index < labels.length; index++) order[index] = index;
|
|
290
|
+
return order.toSorted((one, other) => {
|
|
291
|
+
const first = labels[one]?.weight ?? 0;
|
|
292
|
+
const second = labels[other]?.weight ?? 0;
|
|
293
|
+
return second - first || one - other;
|
|
294
|
+
});
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
/** How far a word sits clear of the dot it belongs to, in pixels. */
|
|
298
|
+
const SEAT_GAP = 3;
|
|
299
|
+
|
|
300
|
+
/** How far a word may be moved from what it names before it is dropped. */
|
|
301
|
+
const DEFAULT_SHIFT = 40;
|
|
302
|
+
|
|
303
|
+
/** How far apart the rings of seats searched after the near four are. */
|
|
304
|
+
const SEAT_STEP = 10;
|
|
305
|
+
|
|
306
|
+
/**
|
|
307
|
+
* The directions a word is pushed in, as unit vectors, tried in this order:
|
|
308
|
+
* sideways first, because text runs sideways and a name pushed left or right
|
|
309
|
+
* still reads as belonging to the dot beside it, then the diagonals, then
|
|
310
|
+
* straight up and down last — a word directly above a dot is the one most
|
|
311
|
+
* easily read as belonging to the dot above it instead.
|
|
312
|
+
*/
|
|
313
|
+
const SEAT_DIRECTIONS = Float64Array.from([
|
|
314
|
+
1, 0, -1, 0, 0.87, -0.5, -0.87, -0.5, 0.87, 0.5, -0.87, 0.5, 0.5, -0.87, -0.5,
|
|
315
|
+
-0.87, 0.5, 0.87, -0.5, 0.87, 0, -1, 0, 1,
|
|
316
|
+
]);
|
|
317
|
+
|
|
318
|
+
/**
|
|
319
|
+
* How far a word has to have moved before a line is drawn back to its subject:
|
|
320
|
+
* just short of the first ring, so a word in one of the four seats beside its
|
|
321
|
+
* own dot gets no line and every word that had to leave them gets one. A word
|
|
322
|
+
* beside its dot needs no line and gains only clutter from one; a word pushed
|
|
323
|
+
* across a crowd is anybody's until the line says whose.
|
|
324
|
+
*/
|
|
325
|
+
const LEADER_FROM = 8;
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where the words written on a cloud of points go.
|
|
3
|
+
*
|
|
4
|
+
* A dot says where a sample landed and nothing about which sample it is, so a
|
|
5
|
+
* reader who has found an outlier has to hover it, and a reader looking at
|
|
6
|
+
* forty crowds has to keep walking back to the key. Both are answered by
|
|
7
|
+
* writing the name on the picture — and both are answered by a different name,
|
|
8
|
+
* which is why there are two functions here rather than one flag.
|
|
9
|
+
*
|
|
10
|
+
* The placing is arithmetic over pixels, so it sits beside the layer that
|
|
11
|
+
* draws it rather than inside it and can be checked without rendering
|
|
12
|
+
* anything.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import type { ScreenPoints } from '../core/screenPoints.ts';
|
|
16
|
+
|
|
17
|
+
/** One word written on the plot, already placed. */
|
|
18
|
+
export interface ScatterPixelLabel {
|
|
19
|
+
/** Horizontal position of what it names, in the frame's pixels. */
|
|
20
|
+
x: number;
|
|
21
|
+
/** Vertical position of what it names. */
|
|
22
|
+
y: number;
|
|
23
|
+
/** What it says. */
|
|
24
|
+
text: string;
|
|
25
|
+
/** Its colour, which is the colour of what it names. */
|
|
26
|
+
color: string;
|
|
27
|
+
/**
|
|
28
|
+
* How much of the picture it speaks for — the size of the crowd behind a
|
|
29
|
+
* group's name. It decides who is served first when two words want the same
|
|
30
|
+
* pixels, so the name over five hundred samples keeps its place and the one
|
|
31
|
+
* over three moves or goes.
|
|
32
|
+
* @default undefined — read as nothing, so the words are served in order
|
|
33
|
+
*/
|
|
34
|
+
weight?: number;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/** Which ink a label takes, worked out the way a dot's is. */
|
|
38
|
+
export interface ScatterLabelInk {
|
|
39
|
+
/**
|
|
40
|
+
* Which group each point belongs to, as an index into `colors`. An entry of
|
|
41
|
+
* `-1`, or one outside the range, is a point in no group.
|
|
42
|
+
* @default undefined — every label takes `fallbackColor`
|
|
43
|
+
*/
|
|
44
|
+
groupOf?: ArrayLike<number>;
|
|
45
|
+
/**
|
|
46
|
+
* The colour of each group, in the order the groups were given.
|
|
47
|
+
* @default undefined — every label takes `fallbackColor`
|
|
48
|
+
*/
|
|
49
|
+
colors?: readonly string[];
|
|
50
|
+
/**
|
|
51
|
+
* Colour of a label naming something in no group.
|
|
52
|
+
* @default 'var(--text-muted)'
|
|
53
|
+
*/
|
|
54
|
+
fallbackColor?: string;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Every sample's own name, beside its own dot.
|
|
59
|
+
*
|
|
60
|
+
* A sample with no name is skipped rather than drawn empty, so a caller may
|
|
61
|
+
* name the twenty samples it cares about and leave the rest of the array
|
|
62
|
+
* `undefined` — which is how a crowded map stays readable while the outliers
|
|
63
|
+
* are still labelled.
|
|
64
|
+
* @param points - Where every point sits, in the frame's pixels.
|
|
65
|
+
* @param labels - What each point is called, in point order.
|
|
66
|
+
* @param ink - Which colour each label takes.
|
|
67
|
+
* @returns One label per named point that has somewhere to be drawn.
|
|
68
|
+
*/
|
|
69
|
+
export function scatterPointLabels(
|
|
70
|
+
points: ScreenPoints,
|
|
71
|
+
labels: ReadonlyArray<string | undefined>,
|
|
72
|
+
ink: ScatterLabelInk = {},
|
|
73
|
+
): ScatterPixelLabel[] {
|
|
74
|
+
const { groupOf, colors, fallbackColor = DEFAULT_LABEL_INK } = ink;
|
|
75
|
+
const placed: ScatterPixelLabel[] = [];
|
|
76
|
+
const count = Math.min(points.x.length, points.y.length, labels.length);
|
|
77
|
+
for (let index = 0; index < count; index++) {
|
|
78
|
+
const text = labels[index];
|
|
79
|
+
if (text === undefined || text === '') continue;
|
|
80
|
+
const x = points.x[index];
|
|
81
|
+
const y = points.y[index];
|
|
82
|
+
if (x === undefined || !Number.isFinite(x)) continue;
|
|
83
|
+
if (y === undefined || !Number.isFinite(y)) continue;
|
|
84
|
+
const group = groupOf?.[index] ?? -1;
|
|
85
|
+
placed.push({ x, y, text, color: colors?.[group] ?? fallbackColor });
|
|
86
|
+
}
|
|
87
|
+
return placed;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Each group's name, once, at the middle of the points in it.
|
|
92
|
+
*
|
|
93
|
+
* Once rather than on every dot: forty seizures over five hundred spectra
|
|
94
|
+
* would otherwise write forty names twelve times each, and a reader can read
|
|
95
|
+
* none of them. The average of the pixels is the same place as the average of
|
|
96
|
+
* the data on a linear axis and one pass fewer, and it is the same point the
|
|
97
|
+
* group-average cross is drawn at, so turning both on marks and names one
|
|
98
|
+
* spot rather than two.
|
|
99
|
+
* @param points - Where every point sits, in the frame's pixels.
|
|
100
|
+
* @param names - What each group is called, in group order.
|
|
101
|
+
* @param ink - Which colour each label takes; `groupOf` is what it reads.
|
|
102
|
+
* @returns One label per group that anything belongs to.
|
|
103
|
+
*/
|
|
104
|
+
export function scatterGroupLabels(
|
|
105
|
+
points: ScreenPoints,
|
|
106
|
+
names: readonly string[],
|
|
107
|
+
ink: ScatterLabelInk = {},
|
|
108
|
+
): ScatterPixelLabel[] {
|
|
109
|
+
const { groupOf, colors, fallbackColor = DEFAULT_LABEL_INK } = ink;
|
|
110
|
+
const placed: ScatterPixelLabel[] = [];
|
|
111
|
+
if (groupOf === undefined) return placed;
|
|
112
|
+
|
|
113
|
+
const sums = new Float64Array(names.length * 3);
|
|
114
|
+
const count = Math.min(points.x.length, points.y.length, groupOf.length);
|
|
115
|
+
for (let index = 0; index < count; index++) {
|
|
116
|
+
const group = groupOf[index];
|
|
117
|
+
if (group === undefined || group < 0 || group >= names.length) continue;
|
|
118
|
+
const x = points.x[index];
|
|
119
|
+
const y = points.y[index];
|
|
120
|
+
if (x === undefined || !Number.isFinite(x)) continue;
|
|
121
|
+
if (y === undefined || !Number.isFinite(y)) continue;
|
|
122
|
+
sums[group * 3] = (sums[group * 3] ?? 0) + x;
|
|
123
|
+
sums[group * 3 + 1] = (sums[group * 3 + 1] ?? 0) + y;
|
|
124
|
+
sums[group * 3 + 2] = (sums[group * 3 + 2] ?? 0) + 1;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
for (let group = 0; group < names.length; group++) {
|
|
128
|
+
const seen = sums[group * 3 + 2] ?? 0;
|
|
129
|
+
const text = names[group];
|
|
130
|
+
if (seen === 0 || text === undefined || text === '') continue;
|
|
131
|
+
placed.push({
|
|
132
|
+
x: (sums[group * 3] ?? 0) / seen,
|
|
133
|
+
y: (sums[group * 3 + 1] ?? 0) / seen,
|
|
134
|
+
text,
|
|
135
|
+
color: colors?.[group] ?? fallbackColor,
|
|
136
|
+
weight: seen,
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
return placed;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* What a label naming nothing in particular is written in. It is the muted ink
|
|
144
|
+
* rather than the faint one a dot in no group takes: a word has to be read,
|
|
145
|
+
* where a dot only has to be seen.
|
|
146
|
+
*/
|
|
147
|
+
const DEFAULT_LABEL_INK = 'var(--text-muted)';
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A point drawn over the cloud that is not a sample, and the glyph it takes.
|
|
3
|
+
*
|
|
4
|
+
* It is its own module because three unrelated things place such a point — a
|
|
5
|
+
* caller's cluster centre, a group's own average, a rule laid across the plot
|
|
6
|
+
* — and only the first of them is anything the layer knows about.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import type { ReactElement } from 'react';
|
|
10
|
+
|
|
11
|
+
import type { OverlayMarkShape } from '../../overlay/core/overlayMarks.ts';
|
|
12
|
+
|
|
13
|
+
/** A point drawn over the cloud that is not a sample, already in pixels. */
|
|
14
|
+
export interface ScatterPixelMark {
|
|
15
|
+
/** What it is called, which is what a hover card and an end-to-end test ask for. */
|
|
16
|
+
label: string;
|
|
17
|
+
/** Horizontal position, in the frame's pixels. */
|
|
18
|
+
x: number;
|
|
19
|
+
/** Vertical position, in the frame's pixels. */
|
|
20
|
+
y: number;
|
|
21
|
+
/** Its colour, normally the colour of the group it stands for. */
|
|
22
|
+
color: string;
|
|
23
|
+
/**
|
|
24
|
+
* The glyph it is drawn with, which is how a reader tells it from a sample.
|
|
25
|
+
* @default 'cross'
|
|
26
|
+
*/
|
|
27
|
+
shape?: OverlayMarkShape;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* One mark, drawn as the glyph its shape asks for.
|
|
32
|
+
*
|
|
33
|
+
* A rule laid across the cloud names no point, so the two rule shapes are
|
|
34
|
+
* drawn as the default cross.
|
|
35
|
+
* @param mark - What to draw, already in the frame's pixels.
|
|
36
|
+
* @param size - Side of the square the glyph is drawn in, in pixels.
|
|
37
|
+
* @param key - What React reconciles the glyph by.
|
|
38
|
+
* @returns The glyph.
|
|
39
|
+
*/
|
|
40
|
+
export function markGlyph(
|
|
41
|
+
mark: ScatterPixelMark,
|
|
42
|
+
size: number,
|
|
43
|
+
key: string,
|
|
44
|
+
): ReactElement {
|
|
45
|
+
const { label, x, y, color, shape = 'cross' } = mark;
|
|
46
|
+
const half = size / 2;
|
|
47
|
+
const near = round(x - half);
|
|
48
|
+
const far = round(x + half);
|
|
49
|
+
const top = round(y - half);
|
|
50
|
+
const foot = round(y + half);
|
|
51
|
+
// `key` is passed on each element rather than spread: React reads a key
|
|
52
|
+
// out of JSX itself, and one arriving through a spread is dropped with a
|
|
53
|
+
// warning that only shows up once the page is running.
|
|
54
|
+
const shared = { 'data-mark': label };
|
|
55
|
+
if (shape === 'dot' || shape === 'ring') {
|
|
56
|
+
const filled = shape === 'dot';
|
|
57
|
+
return (
|
|
58
|
+
<circle
|
|
59
|
+
key={key}
|
|
60
|
+
{...shared}
|
|
61
|
+
cx={round(x)}
|
|
62
|
+
cy={round(y)}
|
|
63
|
+
r={half}
|
|
64
|
+
fill={filled ? color : 'none'}
|
|
65
|
+
stroke={filled ? 'none' : color}
|
|
66
|
+
/>
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
if (shape === 'square') {
|
|
70
|
+
return (
|
|
71
|
+
<rect
|
|
72
|
+
key={key}
|
|
73
|
+
{...shared}
|
|
74
|
+
x={near}
|
|
75
|
+
y={top}
|
|
76
|
+
width={size}
|
|
77
|
+
height={size}
|
|
78
|
+
fill={color}
|
|
79
|
+
stroke="none"
|
|
80
|
+
/>
|
|
81
|
+
);
|
|
82
|
+
}
|
|
83
|
+
return (
|
|
84
|
+
<path
|
|
85
|
+
key={key}
|
|
86
|
+
{...shared}
|
|
87
|
+
d={`M${near} ${top}L${far} ${foot}M${far} ${top}L${near} ${foot}`}
|
|
88
|
+
fill="none"
|
|
89
|
+
stroke={color}
|
|
90
|
+
/>
|
|
91
|
+
);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
const round = (value: number): number => Math.round(value * 100) / 100;
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The dots of one cell of a pair grid, and the surface that finds them again.
|
|
3
|
+
*
|
|
4
|
+
* They are not an element each. Six axes over five thousand samples is a
|
|
5
|
+
* hundred and eighty thousand marks, and a browser handed that many nodes
|
|
6
|
+
* stops answering the pointer long before it paints; one path of zero-length
|
|
7
|
+
* round-capped segments a colour is at most sixteen nodes a cell and draws the
|
|
8
|
+
* same discs. The scores are read where they stand for the same reason: a grid
|
|
9
|
+
* copying a column per cell allocates n² arrays to show n.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import type { CSSProperties, PointerEvent, ReactElement } from 'react';
|
|
13
|
+
|
|
14
|
+
import type { ChartFrameRender } from '../../chart/ui/ChartFrame.tsx';
|
|
15
|
+
|
|
16
|
+
import type { ScatterMatrixGrid } from './ScatterMatrixDiagonal.tsx';
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Every dot of one cell, as one path per colour, plus the rectangle that turns
|
|
20
|
+
* a pointer position back into a row when the caller wants hovering.
|
|
21
|
+
* @param grid - Everything the grid worked out once and every cell reads.
|
|
22
|
+
* @param row - Which row the cell sits in, which is the axis up its side.
|
|
23
|
+
* @param column - Which column, which is the axis along its foot.
|
|
24
|
+
* @param frame - The rectangle and the two scales the cell was given.
|
|
25
|
+
* @returns The marks, in the order they stack.
|
|
26
|
+
*/
|
|
27
|
+
export function scatterMatrixDots(
|
|
28
|
+
grid: ScatterMatrixGrid,
|
|
29
|
+
row: number,
|
|
30
|
+
column: number,
|
|
31
|
+
frame: ChartFrameRender,
|
|
32
|
+
): ReactElement[] {
|
|
33
|
+
const { scores, colors, groupOf, mask, pointRadius, onHoverChange } = grid;
|
|
34
|
+
const { x, y, plot } = frame;
|
|
35
|
+
const inks = (colors?.length ?? 0) + 1;
|
|
36
|
+
const paths: string[] = new Array(inks * 2).fill('');
|
|
37
|
+
|
|
38
|
+
for (let index = 0; index < scores.rows; index++) {
|
|
39
|
+
const valueX = scores.get(index, column);
|
|
40
|
+
const valueY = scores.get(index, row);
|
|
41
|
+
if (!Number.isFinite(valueX) || !Number.isFinite(valueY)) continue;
|
|
42
|
+
const atX = Math.round((x.offset + valueX * x.factor) * 10) / 10;
|
|
43
|
+
const atY = Math.round((y.offset + valueY * y.factor) * 10) / 10;
|
|
44
|
+
const slot =
|
|
45
|
+
inkOf(groupOf, index, inks - 1) * 2 + (mask?.[index] === 0 ? 1 : 0);
|
|
46
|
+
paths[slot] = `${paths[slot] ?? ''}M${atX} ${atY}h0`;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const marks: ReactElement[] = [];
|
|
50
|
+
for (let slot = 0; slot < paths.length; slot++) {
|
|
51
|
+
const data = paths[slot];
|
|
52
|
+
if (data === undefined || data === '') continue;
|
|
53
|
+
const ink = colors?.[slot >> 1] ?? NO_GROUP_INK;
|
|
54
|
+
const style = dotStyle(ink, pointRadius, slot);
|
|
55
|
+
marks.push(<path key={slot} d={data} style={style} />);
|
|
56
|
+
}
|
|
57
|
+
if (onHoverChange !== undefined) {
|
|
58
|
+
marks.push(
|
|
59
|
+
<rect
|
|
60
|
+
key="tracking"
|
|
61
|
+
x={plot.left}
|
|
62
|
+
y={plot.top}
|
|
63
|
+
width={plot.width}
|
|
64
|
+
height={plot.height}
|
|
65
|
+
style={TRACKING_STYLE}
|
|
66
|
+
onPointerMove={(event) =>
|
|
67
|
+
onHoverChange(nearestRow(event, grid, row, column, frame))
|
|
68
|
+
}
|
|
69
|
+
onPointerLeave={() => onHoverChange(-1)}
|
|
70
|
+
/>,
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
return marks;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/** How far from a dot the pointer still counts as resting on it, in pixels. */
|
|
77
|
+
const HOVER_REACH = 10;
|
|
78
|
+
|
|
79
|
+
/** Opacity of a dot in the selection, of one outside it, and the ungrouped ink. */
|
|
80
|
+
const POINT_OPACITY = 0.85;
|
|
81
|
+
const FAINT_OPACITY = 0.16;
|
|
82
|
+
const NO_GROUP_INK = 'var(--text-muted)';
|
|
83
|
+
|
|
84
|
+
/** The rectangle that takes the pointer, over the dots and invisible. */
|
|
85
|
+
const TRACKING_STYLE = {
|
|
86
|
+
fill: 'none',
|
|
87
|
+
pointerEvents: 'all',
|
|
88
|
+
} as const satisfies CSSProperties;
|
|
89
|
+
|
|
90
|
+
function nearestRow(
|
|
91
|
+
event: PointerEvent<SVGRectElement>,
|
|
92
|
+
grid: ScatterMatrixGrid,
|
|
93
|
+
row: number,
|
|
94
|
+
column: number,
|
|
95
|
+
frame: ChartFrameRender,
|
|
96
|
+
): number {
|
|
97
|
+
const { offsetX, offsetY } = event.nativeEvent;
|
|
98
|
+
const { scores } = grid;
|
|
99
|
+
const { x, y } = frame;
|
|
100
|
+
let best = -1;
|
|
101
|
+
let closest = HOVER_REACH * HOVER_REACH;
|
|
102
|
+
|
|
103
|
+
for (let index = 0; index < scores.rows; index++) {
|
|
104
|
+
const awayX = x.offset + scores.get(index, column) * x.factor - offsetX;
|
|
105
|
+
const awayY = y.offset + scores.get(index, row) * y.factor - offsetY;
|
|
106
|
+
const away = awayX * awayX + awayY * awayY;
|
|
107
|
+
if (away < closest) {
|
|
108
|
+
closest = away;
|
|
109
|
+
best = index;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return best;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
function dotStyle(color: string, radius: number, slot: number): CSSProperties {
|
|
116
|
+
return {
|
|
117
|
+
fill: 'none',
|
|
118
|
+
stroke: color,
|
|
119
|
+
strokeWidth: radius * 2,
|
|
120
|
+
strokeLinecap: 'round',
|
|
121
|
+
strokeOpacity: (slot & 1) === 1 ? FAINT_OPACITY : POINT_OPACITY,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
function inkOf(
|
|
126
|
+
groupOf: ArrayLike<number> | undefined,
|
|
127
|
+
row: number,
|
|
128
|
+
groups: number,
|
|
129
|
+
): number {
|
|
130
|
+
const raw = groupOf?.[row];
|
|
131
|
+
if (raw === undefined || !Number.isFinite(raw)) return groups;
|
|
132
|
+
const group = Math.trunc(raw);
|
|
133
|
+
return group < 0 || group >= groups ? groups : group;
|
|
134
|
+
}
|