react-cheminfo 0.10.0 → 0.11.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/lib/chrome/ui/NavLink.d.ts.map +1 -1
- package/lib/chrome/ui/NavLink.js +4 -3
- package/lib/chrome/ui/NavLink.js.map +1 -1
- package/lib/chrome/ui/SiteFooter.d.ts +8 -0
- package/lib/chrome/ui/SiteFooter.d.ts.map +1 -1
- package/lib/chrome/ui/SiteFooter.js +7 -2
- package/lib/chrome/ui/SiteFooter.js.map +1 -1
- package/lib/chrome/ui/SiteHeader.d.ts +11 -0
- package/lib/chrome/ui/SiteHeader.d.ts.map +1 -1
- package/lib/chrome/ui/SiteHeader.js +7 -2
- package/lib/chrome/ui/SiteHeader.js.map +1 -1
- package/lib/chrome/ui/navItem.d.ts +12 -0
- package/lib/chrome/ui/navItem.d.ts.map +1 -1
- package/lib/chrome/ui/navItem.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/figureLegend.d.ts +90 -0
- package/lib/download/core/figureLegend.d.ts.map +1 -0
- package/lib/download/core/figureLegend.js +77 -0
- package/lib/download/core/figureLegend.js.map +1 -0
- package/lib/download/core/figureSvg.d.ts.map +1 -1
- package/lib/download/core/figureSvg.js +71 -1
- package/lib/download/core/figureSvg.js.map +1 -1
- package/lib/download/core/figureSvgDocument.d.ts +9 -2
- package/lib/download/core/figureSvgDocument.d.ts.map +1 -1
- package/lib/download/core/figureSvgDocument.js +4 -1
- package/lib/download/core/figureSvgDocument.js.map +1 -1
- package/lib/download/core/figureTarget.d.ts +11 -0
- package/lib/download/core/figureTarget.d.ts.map +1 -1
- package/lib/download/core/figureTarget.js +19 -0
- package/lib/download/core/figureTarget.js.map +1 -1
- package/lib/download/core/index.d.ts +3 -1
- package/lib/download/core/index.d.ts.map +1 -1
- package/lib/download/core/index.js +2 -1
- package/lib/download/core/index.js.map +1 -1
- 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 +13 -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 +5 -0
- package/lib/ecosystem/ui/glyphs.js.map +1 -1
- package/lib/overlay/ui/OverlayLegend.d.ts.map +1 -1
- package/lib/overlay/ui/OverlayLegend.js +1 -1
- package/lib/overlay/ui/OverlayLegend.js.map +1 -1
- package/lib/projection/core/projectionCopy.d.ts +4 -0
- package/lib/projection/core/projectionCopy.d.ts.map +1 -1
- package/lib/projection/core/projectionCopy.js +3 -0
- package/lib/projection/core/projectionCopy.js.map +1 -1
- package/lib/projection/core/projectionOptions.d.ts +12 -0
- package/lib/projection/core/projectionOptions.d.ts.map +1 -1
- package/lib/projection/core/projectionOptions.js +27 -1
- package/lib/projection/core/projectionOptions.js.map +1 -1
- package/lib/projection/core/projectionStrings.d.ts +4 -0
- package/lib/projection/core/projectionStrings.d.ts.map +1 -1
- package/lib/projection/core/projectionStrings.js +14 -0
- package/lib/projection/core/projectionStrings.js.map +1 -1
- package/lib/projection/core/projectionTabDefaults.d.ts.map +1 -1
- package/lib/projection/core/projectionTabDefaults.js +12 -0
- package/lib/projection/core/projectionTabDefaults.js.map +1 -1
- package/lib/projection/core/projectionTabs.d.ts +1 -1
- package/lib/projection/core/projectionTabs.d.ts.map +1 -1
- package/lib/projection/core/projectionTabs.js +9 -0
- package/lib/projection/core/projectionTabs.js.map +1 -1
- package/lib/projection/ui/ProjectionMapTab.d.ts +6 -0
- package/lib/projection/ui/ProjectionMapTab.d.ts.map +1 -1
- package/lib/projection/ui/ProjectionMapTab.js +2 -1
- package/lib/projection/ui/ProjectionMapTab.js.map +1 -1
- package/lib/projection/ui/ProjectionPanel.d.ts +6 -0
- package/lib/projection/ui/ProjectionPanel.d.ts.map +1 -1
- package/lib/projection/ui/ProjectionPanel.js +15 -1
- package/lib/projection/ui/ProjectionPanel.js.map +1 -1
- package/lib/projection/ui/ProjectionReadout.d.ts +7 -0
- package/lib/projection/ui/ProjectionReadout.d.ts.map +1 -1
- package/lib/projection/ui/ProjectionReadout.js +5 -4
- package/lib/projection/ui/ProjectionReadout.js.map +1 -1
- package/lib/projection/ui/ProjectionSpaceControls.d.ts +51 -0
- package/lib/projection/ui/ProjectionSpaceControls.d.ts.map +1 -0
- package/lib/projection/ui/ProjectionSpaceControls.js +71 -0
- package/lib/projection/ui/ProjectionSpaceControls.js.map +1 -0
- package/lib/projection/ui/ProjectionSpaceMore.d.ts +32 -0
- package/lib/projection/ui/ProjectionSpaceMore.d.ts.map +1 -0
- package/lib/projection/ui/ProjectionSpaceMore.js +57 -0
- package/lib/projection/ui/ProjectionSpaceMore.js.map +1 -0
- package/lib/projection/ui/ProjectionSpaceTab.d.ts +98 -0
- package/lib/projection/ui/ProjectionSpaceTab.d.ts.map +1 -0
- package/lib/projection/ui/ProjectionSpaceTab.js +66 -0
- package/lib/projection/ui/ProjectionSpaceTab.js.map +1 -0
- package/lib/projection/ui/ProjectionViewer.d.ts +1 -0
- package/lib/projection/ui/ProjectionViewer.d.ts.map +1 -1
- package/lib/projection/ui/ProjectionViewer.js +2 -1
- package/lib/projection/ui/ProjectionViewer.js.map +1 -1
- package/lib/projection/ui/index.d.ts +1 -0
- package/lib/projection/ui/index.d.ts.map +1 -1
- package/lib/projection/ui/index.js.map +1 -1
- package/lib/projection/ui/projectionBarModel.d.ts.map +1 -1
- package/lib/projection/ui/projectionBarModel.js +3 -2
- package/lib/projection/ui/projectionBarModel.js.map +1 -1
- package/lib/projection/ui/projectionBarReadings.d.ts.map +1 -1
- package/lib/projection/ui/projectionBarReadings.js +17 -0
- package/lib/projection/ui/projectionBarReadings.js.map +1 -1
- package/lib/projection/ui/projectionBarSlots.d.ts.map +1 -1
- package/lib/projection/ui/projectionBarSlots.js +17 -0
- package/lib/projection/ui/projectionBarSlots.js.map +1 -1
- package/lib/projection/ui/projectionCloudChoices.d.ts +18 -0
- package/lib/projection/ui/projectionCloudChoices.d.ts.map +1 -0
- package/lib/projection/ui/projectionCloudChoices.js +19 -0
- package/lib/projection/ui/projectionCloudChoices.js.map +1 -0
- package/lib/projection/ui/projectionEllipsoid.d.ts +38 -0
- package/lib/projection/ui/projectionEllipsoid.d.ts.map +1 -0
- package/lib/projection/ui/projectionEllipsoid.js +71 -0
- package/lib/projection/ui/projectionEllipsoid.js.map +1 -0
- package/lib/projection/ui/projectionMapChrome.d.ts +8 -0
- package/lib/projection/ui/projectionMapChrome.d.ts.map +1 -1
- package/lib/projection/ui/projectionMapChrome.js +10 -6
- package/lib/projection/ui/projectionMapChrome.js.map +1 -1
- package/lib/projection/ui/projectionMapView.d.ts +13 -0
- package/lib/projection/ui/projectionMapView.d.ts.map +1 -1
- package/lib/projection/ui/projectionMapView.js +26 -0
- package/lib/projection/ui/projectionMapView.js.map +1 -1
- package/lib/projection/ui/projectionSpaceModel.d.ts +14 -0
- package/lib/projection/ui/projectionSpaceModel.d.ts.map +1 -0
- package/lib/projection/ui/projectionSpaceModel.js +14 -0
- package/lib/projection/ui/projectionSpaceModel.js.map +1 -0
- package/lib/projection/ui/projectionViewerProps.d.ts +34 -0
- package/lib/projection/ui/projectionViewerProps.d.ts.map +1 -1
- package/lib/scatter/ui/ScatterPlot.d.ts +1 -1
- package/lib/scatter/ui/ScatterPlot.d.ts.map +1 -1
- package/lib/scatter/ui/ScatterPlot.js +18 -2
- package/lib/scatter/ui/ScatterPlot.js.map +1 -1
- package/lib/scatter/ui/lassoGesture.d.ts +14 -2
- package/lib/scatter/ui/lassoGesture.d.ts.map +1 -1
- package/lib/scatter/ui/lassoGesture.js +4 -1
- package/lib/scatter/ui/lassoGesture.js.map +1 -1
- package/lib/scatter/ui/scatterPlotProps.d.ts +34 -0
- package/lib/scatter/ui/scatterPlotProps.d.ts.map +1 -1
- package/lib/scatter/ui/useScatterInteraction.d.ts +9 -0
- package/lib/scatter/ui/useScatterInteraction.d.ts.map +1 -1
- package/lib/scatter/ui/useScatterInteraction.js +9 -1
- package/lib/scatter/ui/useScatterInteraction.js.map +1 -1
- package/lib/scatter3d/core/cloudGesture.d.ts +17 -0
- package/lib/scatter3d/core/cloudGesture.d.ts.map +1 -0
- package/lib/scatter3d/core/cloudGesture.js +2 -0
- package/lib/scatter3d/core/cloudGesture.js.map +1 -0
- package/lib/scatter3d/core/confidenceEllipsoid.d.ts +63 -0
- package/lib/scatter3d/core/confidenceEllipsoid.d.ts.map +1 -0
- package/lib/scatter3d/core/confidenceEllipsoid.js +128 -0
- package/lib/scatter3d/core/confidenceEllipsoid.js.map +1 -0
- package/lib/scatter3d/core/cubeFrame.d.ts +40 -0
- package/lib/scatter3d/core/cubeFrame.d.ts.map +1 -0
- package/lib/scatter3d/core/cubeFrame.js +58 -0
- package/lib/scatter3d/core/cubeFrame.js.map +1 -0
- package/lib/scatter3d/core/cubePoints.d.ts +35 -0
- package/lib/scatter3d/core/cubePoints.d.ts.map +1 -0
- package/lib/scatter3d/core/cubePoints.js +50 -0
- package/lib/scatter3d/core/cubePoints.js.map +1 -0
- package/lib/scatter3d/core/ellipsoidCoverage.d.ts +32 -0
- package/lib/scatter3d/core/ellipsoidCoverage.d.ts.map +1 -0
- package/lib/scatter3d/core/ellipsoidCoverage.js +83 -0
- package/lib/scatter3d/core/ellipsoidCoverage.js.map +1 -0
- package/lib/scatter3d/core/ellipsoidSilhouette.d.ts +42 -0
- package/lib/scatter3d/core/ellipsoidSilhouette.d.ts.map +1 -0
- package/lib/scatter3d/core/ellipsoidSilhouette.js +52 -0
- package/lib/scatter3d/core/ellipsoidSilhouette.js.map +1 -0
- package/lib/scatter3d/core/index.d.ts +29 -0
- package/lib/scatter3d/core/index.d.ts.map +1 -0
- package/lib/scatter3d/core/index.js +22 -0
- package/lib/scatter3d/core/index.js.map +1 -0
- package/lib/scatter3d/core/orbitCamera.d.ts +113 -0
- package/lib/scatter3d/core/orbitCamera.d.ts.map +1 -0
- package/lib/scatter3d/core/orbitCamera.js +104 -0
- package/lib/scatter3d/core/orbitCamera.js.map +1 -0
- package/lib/scatter3d/core/symmetricEigen.d.ts +47 -0
- package/lib/scatter3d/core/symmetricEigen.d.ts.map +1 -0
- package/lib/scatter3d/core/symmetricEigen.js +219 -0
- package/lib/scatter3d/core/symmetricEigen.js.map +1 -0
- package/lib/scatter3d/ui/CloudFrameLayer.d.ts +33 -0
- package/lib/scatter3d/ui/CloudFrameLayer.d.ts.map +1 -0
- package/lib/scatter3d/ui/CloudFrameLayer.js +37 -0
- package/lib/scatter3d/ui/CloudFrameLayer.js.map +1 -0
- package/lib/scatter3d/ui/CloudPointLayer.d.ts +62 -0
- package/lib/scatter3d/ui/CloudPointLayer.d.ts.map +1 -0
- package/lib/scatter3d/ui/CloudPointLayer.js +67 -0
- package/lib/scatter3d/ui/CloudPointLayer.js.map +1 -0
- package/lib/scatter3d/ui/CloudShellLayer.d.ts +52 -0
- package/lib/scatter3d/ui/CloudShellLayer.d.ts.map +1 -0
- package/lib/scatter3d/ui/CloudShellLayer.js +40 -0
- package/lib/scatter3d/ui/CloudShellLayer.js.map +1 -0
- package/lib/scatter3d/ui/ScatterCloud.d.ts +24 -0
- package/lib/scatter3d/ui/ScatterCloud.d.ts.map +1 -0
- package/lib/scatter3d/ui/ScatterCloud.js +189 -0
- package/lib/scatter3d/ui/ScatterCloud.js.map +1 -0
- package/lib/scatter3d/ui/cloudGeometry.d.ts +108 -0
- package/lib/scatter3d/ui/cloudGeometry.d.ts.map +1 -0
- package/lib/scatter3d/ui/cloudGeometry.js +122 -0
- package/lib/scatter3d/ui/cloudGeometry.js.map +1 -0
- package/lib/scatter3d/ui/cloudShellStyles.d.ts +36 -0
- package/lib/scatter3d/ui/cloudShellStyles.d.ts.map +1 -0
- package/lib/scatter3d/ui/cloudShellStyles.js +62 -0
- package/lib/scatter3d/ui/cloudShellStyles.js.map +1 -0
- package/lib/scatter3d/ui/cloudZoom.d.ts +21 -0
- package/lib/scatter3d/ui/cloudZoom.d.ts.map +1 -0
- package/lib/scatter3d/ui/cloudZoom.js +22 -0
- package/lib/scatter3d/ui/cloudZoom.js.map +1 -0
- package/lib/scatter3d/ui/index.d.ts +29 -0
- package/lib/scatter3d/ui/index.d.ts.map +1 -0
- package/lib/scatter3d/ui/index.js +21 -0
- package/lib/scatter3d/ui/index.js.map +1 -0
- package/lib/scatter3d/ui/scatterCloudModel.d.ts +60 -0
- package/lib/scatter3d/ui/scatterCloudModel.d.ts.map +1 -0
- package/lib/scatter3d/ui/scatterCloudModel.js +66 -0
- package/lib/scatter3d/ui/scatterCloudModel.js.map +1 -0
- package/lib/scatter3d/ui/scatterCloudProps.d.ts +185 -0
- package/lib/scatter3d/ui/scatterCloudProps.d.ts.map +1 -0
- package/lib/scatter3d/ui/scatterCloudProps.js +9 -0
- package/lib/scatter3d/ui/scatterCloudProps.js.map +1 -0
- package/lib/scatter3d/ui/useOrbitDrag.d.ts +60 -0
- package/lib/scatter3d/ui/useOrbitDrag.d.ts.map +1 -0
- package/lib/scatter3d/ui/useOrbitDrag.js +129 -0
- package/lib/scatter3d/ui/useOrbitDrag.js.map +1 -0
- package/lib/ui.d.ts +1 -0
- package/lib/ui.d.ts.map +1 -1
- package/lib/ui.js +1 -0
- package/lib/ui.js.map +1 -1
- package/package.json +1 -1
- package/src/chrome/ui/NavLink.tsx +5 -3
- package/src/chrome/ui/SiteFooter.tsx +16 -1
- package/src/chrome/ui/SiteHeader.tsx +19 -1
- package/src/chrome/ui/navItem.ts +12 -0
- package/src/core.ts +1 -0
- package/src/download/core/figureLegend.ts +167 -0
- package/src/download/core/figureSvg.ts +81 -1
- package/src/download/core/figureSvgDocument.ts +13 -3
- package/src/download/core/figureTarget.ts +21 -0
- package/src/download/core/index.ts +8 -0
- package/src/ecosystem/core/sites.ts +14 -0
- package/src/ecosystem/ui/glyphs.tsx +26 -0
- package/src/overlay/ui/OverlayLegend.tsx +7 -1
- package/src/projection/core/projectionCopy.ts +9 -0
- package/src/projection/core/projectionOptions.ts +48 -3
- package/src/projection/core/projectionStrings.ts +16 -0
- package/src/projection/core/projectionTabDefaults.ts +12 -0
- package/src/projection/core/projectionTabs.ts +10 -1
- package/src/projection/ui/ProjectionMapTab.tsx +8 -0
- package/src/projection/ui/ProjectionPanel.tsx +63 -0
- package/src/projection/ui/ProjectionReadout.tsx +16 -6
- package/src/projection/ui/ProjectionSpaceControls.tsx +219 -0
- package/src/projection/ui/ProjectionSpaceMore.tsx +169 -0
- package/src/projection/ui/ProjectionSpaceTab.tsx +217 -0
- package/src/projection/ui/ProjectionViewer.tsx +3 -0
- package/src/projection/ui/index.ts +1 -0
- package/src/projection/ui/projectionBarModel.ts +3 -2
- package/src/projection/ui/projectionBarReadings.ts +18 -0
- package/src/projection/ui/projectionBarSlots.tsx +19 -0
- package/src/projection/ui/projectionCloudChoices.ts +23 -0
- package/src/projection/ui/projectionEllipsoid.ts +78 -0
- package/src/projection/ui/projectionMapChrome.ts +26 -5
- package/src/projection/ui/projectionMapView.ts +45 -0
- package/src/projection/ui/projectionSpaceModel.ts +14 -0
- package/src/projection/ui/projectionViewerProps.ts +35 -0
- package/src/scatter/ui/ScatterPlot.tsx +21 -2
- package/src/scatter/ui/lassoGesture.ts +15 -2
- package/src/scatter/ui/scatterPlotProps.ts +35 -0
- package/src/scatter/ui/useScatterInteraction.ts +22 -1
- package/src/scatter3d/core/cloudGesture.ts +16 -0
- package/src/scatter3d/core/confidenceEllipsoid.ts +177 -0
- package/src/scatter3d/core/cubeFrame.ts +72 -0
- package/src/scatter3d/core/cubePoints.ts +75 -0
- package/src/scatter3d/core/ellipsoidCoverage.ts +86 -0
- package/src/scatter3d/core/ellipsoidSilhouette.ts +76 -0
- package/src/scatter3d/core/index.ts +52 -0
- package/src/scatter3d/core/orbitCamera.ts +159 -0
- package/src/scatter3d/core/symmetricEigen.ts +273 -0
- package/src/scatter3d/ui/CloudFrameLayer.tsx +97 -0
- package/src/scatter3d/ui/CloudPointLayer.tsx +132 -0
- package/src/scatter3d/ui/CloudShellLayer.tsx +107 -0
- package/src/scatter3d/ui/ScatterCloud.tsx +312 -0
- package/src/scatter3d/ui/cloudGeometry.ts +200 -0
- package/src/scatter3d/ui/cloudShellStyles.ts +74 -0
- package/src/scatter3d/ui/cloudZoom.ts +22 -0
- package/src/scatter3d/ui/index.ts +41 -0
- package/src/scatter3d/ui/scatterCloudModel.ts +98 -0
- package/src/scatter3d/ui/scatterCloudProps.ts +191 -0
- package/src/scatter3d/ui/useOrbitDrag.ts +220 -0
- package/src/ui.ts +1 -0
- package/styles/chrome.css +29 -4
|
@@ -10,8 +10,10 @@
|
|
|
10
10
|
*/
|
|
11
11
|
import { useCallback, useMemo, useState } from 'react';
|
|
12
12
|
import { chartClampViewport } from "../../chart/core/chartViewport.js";
|
|
13
|
+
import { DEFAULT_ORBIT_CAMERA } from "../../scatter3d/core/orbitCamera.js";
|
|
13
14
|
import { projectionMapChrome, projectionSelectionSentence, } from "./projectionMapChrome.js";
|
|
14
15
|
import { MINIMUM_OUTLINE_POINTS, projectionMapDomain, projectionMapViewport, } from "./projectionMapModel.js";
|
|
16
|
+
import { MINIMUM_SHELL_POINTS } from "./projectionSpaceModel.js";
|
|
15
17
|
/**
|
|
16
18
|
* The map's frame, its last report, and the words around it.
|
|
17
19
|
* @param input - See {@link ProjectionMapViewInput}.
|
|
@@ -23,6 +25,8 @@ export function useProjectionMapView(input) {
|
|
|
23
25
|
const { colorBy, ellipse, showGroupMeans, xAxis, yAxis } = options;
|
|
24
26
|
const [zoom, setZoom] = useState(null);
|
|
25
27
|
const [report, setReport] = useState(null);
|
|
28
|
+
const [camera, setCamera] = useState(DEFAULT_ORBIT_CAMERA);
|
|
29
|
+
const [cloudZoom, setCloudZoom] = useState(1);
|
|
26
30
|
// A frame belongs to the pair of axes it was drawn on. Carrying it onto
|
|
27
31
|
// another pair would show the reader a corner of a picture they never
|
|
28
32
|
// framed, so changing the axes shows the whole of the new one instead.
|
|
@@ -43,6 +47,10 @@ export function useProjectionMapView(input) {
|
|
|
43
47
|
const resetView = useCallback(() => {
|
|
44
48
|
setViewport(null);
|
|
45
49
|
}, [setViewport]);
|
|
50
|
+
const resetSpaceView = useCallback(() => {
|
|
51
|
+
setCamera(DEFAULT_ORBIT_CAMERA);
|
|
52
|
+
setCloudZoom(1);
|
|
53
|
+
}, []);
|
|
46
54
|
const colored = colorBy === 'group' && groups.entries.length > 0;
|
|
47
55
|
const chrome = useMemo(() => projectionMapChrome({
|
|
48
56
|
copy,
|
|
@@ -64,6 +72,18 @@ export function useProjectionMapView(input) {
|
|
|
64
72
|
fittedCount,
|
|
65
73
|
scores,
|
|
66
74
|
]);
|
|
75
|
+
const spaceChrome = useMemo(() => projectionMapChrome({
|
|
76
|
+
copy,
|
|
77
|
+
groups,
|
|
78
|
+
colored,
|
|
79
|
+
ellipse: colored ? ellipse : null,
|
|
80
|
+
minimumPoints: MINIMUM_SHELL_POINTS,
|
|
81
|
+
showGroupMeans: false,
|
|
82
|
+
markers: NO_MARKERS,
|
|
83
|
+
fittedCount: fittedCount ?? scores.rows,
|
|
84
|
+
total: scores.rows,
|
|
85
|
+
figure: 'space',
|
|
86
|
+
}), [copy, groups, colored, ellipse, fittedCount, scores]);
|
|
67
87
|
const settle = useCallback((change) => {
|
|
68
88
|
setReport((previous) => ({
|
|
69
89
|
text: projectionSelectionSentence(copy, change.indices.length, scores.rows),
|
|
@@ -76,8 +96,14 @@ export function useProjectionMapView(input) {
|
|
|
76
96
|
}, [settle]);
|
|
77
97
|
return {
|
|
78
98
|
chrome,
|
|
99
|
+
spaceChrome,
|
|
79
100
|
viewport,
|
|
80
101
|
setViewport,
|
|
102
|
+
camera,
|
|
103
|
+
setCamera,
|
|
104
|
+
zoom: cloudZoom,
|
|
105
|
+
setZoom: setCloudZoom,
|
|
106
|
+
resetSpaceView,
|
|
81
107
|
report,
|
|
82
108
|
settle,
|
|
83
109
|
zoomToSelection,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectionMapView.js","sourceRoot":"","sources":["../../../src/projection/ui/projectionMapView.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"projectionMapView.js","sourceRoot":"","sources":["../../../src/projection/ui/projectionMapView.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one number the cloud sets differently from the map.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* How many samples a group needs before it is given a shell.
|
|
6
|
+
*
|
|
7
|
+
* One more than the map asks for, and for the same reason the map asks for
|
|
8
|
+
* three: a shape fitted to the fewest points that can define it describes those
|
|
9
|
+
* points and not the group they came from. Three samples lie on a plane
|
|
10
|
+
* however they are arranged, so three is the number at which a shell is
|
|
11
|
+
* arithmetic rather than a finding.
|
|
12
|
+
*/
|
|
13
|
+
export declare const MINIMUM_SHELL_POINTS = 4;
|
|
14
|
+
//# sourceMappingURL=projectionSpaceModel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projectionSpaceModel.d.ts","sourceRoot":"","sources":["../../../src/projection/ui/projectionSpaceModel.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,IAAI,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one number the cloud sets differently from the map.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* How many samples a group needs before it is given a shell.
|
|
6
|
+
*
|
|
7
|
+
* One more than the map asks for, and for the same reason the map asks for
|
|
8
|
+
* three: a shape fitted to the fewest points that can define it describes those
|
|
9
|
+
* points and not the group they came from. Three samples lie on a plane
|
|
10
|
+
* however they are arranged, so three is the number at which a shell is
|
|
11
|
+
* arithmetic rather than a finding.
|
|
12
|
+
*/
|
|
13
|
+
export const MINIMUM_SHELL_POINTS = 4;
|
|
14
|
+
//# sourceMappingURL=projectionSpaceModel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projectionSpaceModel.js","sourceRoot":"","sources":["../../../src/projection/ui/projectionSpaceModel.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC"}
|
|
@@ -13,6 +13,24 @@ import type { ProjectionSamples } from '../core/projectionSamples.ts';
|
|
|
13
13
|
import type { ProjectionTab } from '../core/projectionTabs.ts';
|
|
14
14
|
import type { ProjectionVariableTrack } from './ProjectionVariablesTab.tsx';
|
|
15
15
|
import type { ProjectionSelection } from './projectionSelection.ts';
|
|
16
|
+
/** A sample the reader opened, and where they opened it. */
|
|
17
|
+
export interface ProjectionSampleOpen {
|
|
18
|
+
/** Its name, from `samples.ids` — the currency every other callback uses. */
|
|
19
|
+
id: string;
|
|
20
|
+
/** Its row in the score matrix, for a caller that would rather index. */
|
|
21
|
+
index: number;
|
|
22
|
+
/** Where the reader clicked, in pixels from the figure's left edge. */
|
|
23
|
+
x: number;
|
|
24
|
+
/** Where they clicked, in pixels from its top edge. */
|
|
25
|
+
y: number;
|
|
26
|
+
/**
|
|
27
|
+
* Where they clicked in the window, which is what an editor floating over
|
|
28
|
+
* the page is anchored to.
|
|
29
|
+
*/
|
|
30
|
+
clientX: number;
|
|
31
|
+
/** Where they clicked in the window. */
|
|
32
|
+
clientY: number;
|
|
33
|
+
}
|
|
16
34
|
/** What {@link ProjectionViewer} needs. */
|
|
17
35
|
export interface ProjectionViewerProps {
|
|
18
36
|
/** What the run produced, whatever produced it. */
|
|
@@ -85,6 +103,22 @@ export interface ProjectionViewerProps {
|
|
|
85
103
|
* @default undefined
|
|
86
104
|
*/
|
|
87
105
|
onHoverSample?: (id: string | null) => void;
|
|
106
|
+
/**
|
|
107
|
+
* Called when the reader double-clicks a sample, on the map or in the cloud.
|
|
108
|
+
*
|
|
109
|
+
* The viewer says what a sample *is*; this is the door to what the page
|
|
110
|
+
* around it can do with one — open its record, edit the class it was given,
|
|
111
|
+
* show the spectrum behind the dot. The viewer does nothing itself, so a
|
|
112
|
+
* page that does not pass it has a double click that only ever resets the
|
|
113
|
+
* frame.
|
|
114
|
+
*
|
|
115
|
+
* The sample is selected first, because a double click is also two clicks.
|
|
116
|
+
* Holding every single click for the double-click interval to avoid that
|
|
117
|
+
* would make the commonest gesture in the figure feel slow, which is a worse
|
|
118
|
+
* trade than a redundant selection on the rarest one.
|
|
119
|
+
* @default undefined
|
|
120
|
+
*/
|
|
121
|
+
onSampleDoubleClick?: (sample: ProjectionSampleOpen) => void;
|
|
88
122
|
/**
|
|
89
123
|
* What the figure is showing. Present, the caller owns every option, which
|
|
90
124
|
* is how a site persists them or writes them into a share link.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectionViewerProps.d.ts","sourceRoot":"","sources":["../../../src/projection/ui/projectionViewerProps.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE/D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,2CAA2C;AAC3C,MAAM,WAAW,qBAAqB;IACpC,mDAAmD;IACnD,MAAM,EAAE,gBAAgB,CAAC;IACzB,wBAAwB;IACxB,OAAO,EAAE,iBAAiB,CAAC;IAC3B;;;;OAIG;IACH,GAAG,CAAC,EAAE,aAAa,CAAC;IACpB;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IAClC;;;;OAIG;IACH,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,IAAI,CAAC;IAC3C;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B;;;OAGG;IACH,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC;;;;;;;OAOG;IACH,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC7D;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,uBAAuB,GAAG,IAAI,KAAK,IAAI,CAAC;IAClE;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC5C;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACrC;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC5C;;;OAGG;IACH,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACvD;;;OAGG;IACH,IAAI,CAAC,EAAE,mBAAmB,CAAC,cAAc,CAAC,CAAC;IAC3C;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACxC;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
|
1
|
+
{"version":3,"file":"projectionViewerProps.d.ts","sourceRoot":"","sources":["../../../src/projection/ui/projectionViewerProps.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ReactElement } from 'react';
|
|
2
2
|
import type { ScatterPlotProps } from './scatterPlotProps.ts';
|
|
3
|
-
export type { ScatterGroup, ScatterMarker, ScatterPlotProps, } from './scatterPlotProps.ts';
|
|
3
|
+
export type { ScatterGroup, ScatterMarker, ScatterPlotProps, ScatterPointOpen, } from './scatterPlotProps.ts';
|
|
4
4
|
/**
|
|
5
5
|
* A cloud of points with a lasso, group outlines and a hover card.
|
|
6
6
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScatterPlot.d.ts","sourceRoot":"","sources":["../../../src/scatter/ui/ScatterPlot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"ScatterPlot.d.ts","sourceRoot":"","sources":["../../../src/scatter/ui/ScatterPlot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiC,YAAY,EAAE,MAAM,OAAO,CAAC;AAuBzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAI9D,YAAY,EACV,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAE/B;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,YAAY,CA8MjE"}
|
|
@@ -5,6 +5,7 @@ import { ScatterEllipseLayer } from "./ScatterEllipseLayer.js";
|
|
|
5
5
|
import { ScatterLabelLayer } from "./ScatterLabelLayer.js";
|
|
6
6
|
import { ScatterMarkLayer } from "./ScatterMarkLayer.js";
|
|
7
7
|
import { ScatterPointLayer } from "./ScatterPointLayer.js";
|
|
8
|
+
import { surfacePosition } from "./lassoGesture.js";
|
|
8
9
|
import { SCATTER_GROUP_LABEL_SIZE, SCATTER_LABEL_SIZE, } from "./scatterLabelBoxes.js";
|
|
9
10
|
import { placeScatterLabels } from "./scatterLabelPlacement.js";
|
|
10
11
|
import { scatterGroupLabels, scatterPointLabels } from "./scatterLabels.js";
|
|
@@ -24,7 +25,7 @@ import { useScatterInteraction } from "./useScatterInteraction.js";
|
|
|
24
25
|
* @returns The plot.
|
|
25
26
|
*/
|
|
26
27
|
export function ScatterPlot(props) {
|
|
27
|
-
const { x, y, width, height, xAxis, yAxis, groupOf, groups, mutedGroups, ellipse = null, ellipseMinimumPoints, ellipseFillOpacity, showGroupMeans, markers, pointRadius = 3.5, outlinedFrom, pointLabels, showGroupLabels = false, selected, defaultSelected, onSelectionChange, selectMode, onHoverChange, onPinChange, onLassoChange, touchLasso, viewport, onViewportChange, wheelZoom, wheelZoomDelay, overlay, label, testId, } = props;
|
|
28
|
+
const { x, y, width, height, xAxis, yAxis, groupOf, groups, mutedGroups, ellipse = null, ellipseMinimumPoints, ellipseFillOpacity, showGroupMeans, markers, pointRadius = 3.5, outlinedFrom, pointLabels, showGroupLabels = false, selected, defaultSelected, onSelectionChange, selectMode, onHoverChange, onPinChange, onPointDoubleClick, onLassoChange, touchLasso, viewport, onViewportChange, wheelZoom, wheelZoomDelay, overlay, label, testId, } = props;
|
|
28
29
|
const frame = useScatterFrame({
|
|
29
30
|
x,
|
|
30
31
|
y,
|
|
@@ -75,6 +76,21 @@ export function ScatterPlot(props) {
|
|
|
75
76
|
onHoverChange,
|
|
76
77
|
onPinChange,
|
|
77
78
|
});
|
|
79
|
+
function handleDoubleClick(event) {
|
|
80
|
+
const at = surfacePosition(event, rect.x, rect.y);
|
|
81
|
+
const index = interaction.pointAt(at.x, at.y);
|
|
82
|
+
if (index === -1 || onPointDoubleClick === undefined) {
|
|
83
|
+
reset();
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
onPointDoubleClick({
|
|
87
|
+
index,
|
|
88
|
+
x: at.x,
|
|
89
|
+
y: at.y,
|
|
90
|
+
clientX: event.clientX,
|
|
91
|
+
clientY: event.clientY,
|
|
92
|
+
});
|
|
93
|
+
}
|
|
78
94
|
// Held in a ref so an inline arrow, which is how every caller writes it, does
|
|
79
95
|
// not put the callback in the effect's dependencies and report a drag that
|
|
80
96
|
// never changed on every render.
|
|
@@ -86,6 +102,6 @@ export function ScatterPlot(props) {
|
|
|
86
102
|
useEffect(() => {
|
|
87
103
|
report.current?.(drawing);
|
|
88
104
|
}, [drawing]);
|
|
89
|
-
return (_jsx(ChartFrame, { width: width, height: height, x: frame.xAxis, y: frame.yAxis, busy: drawing, overlay: overlay, testId: testId, label: label ?? scatterPlotLabel(xAxis, yAxis, points.x.length), children: () => (_jsxs(_Fragment, { children: [ellipse === null || groupOf === undefined ? null : (_jsx(ScatterEllipseLayer, { x: x, y: y, groupOf: groupOf, colors: ink.colors, opacities: ink.opacities, scaleX: toX, scaleY: toY, size: ellipse, minimumPoints: ellipseMinimumPoints, fillOpacity: ellipseFillOpacity })), _jsx(ScatterPointLayer, { points: points, groupOf: groupOf, colors: ink.colors, opacities: ink.opacities, radius: pointRadius, outlinedFrom: outlinedFrom }), _jsx(ScatterMarkLayer, { points: points, selected: interaction.selection.mask, hovered: interaction.hover.hovered, focused: interaction.keyboard.cursor, radius: pointRadius, groupOf: groupOf, colors: ink.colors, showGroupMeans: showGroupMeans, marks: scatterPixelMarks(markers, toX, toY) }), named === undefined ? null : (_jsx(ScatterLabelLayer, { labels: named, radius: pointRadius })), crowds === undefined ? null : (_jsx(ScatterLabelLayer, { labels: crowds, radius: pointRadius, strong: true })), interaction.lasso.pathData === '' ? null : (_jsx("path", { d: interaction.lasso.pathData, ...LASSO_STYLE })), _jsx("rect", { ...rect, ref: surface, fill: "transparent", tabIndex: 0, onKeyDown: interaction.keyboard.onKeyDown, onDoubleClick:
|
|
105
|
+
return (_jsx(ChartFrame, { width: width, height: height, x: frame.xAxis, y: frame.yAxis, busy: drawing, overlay: overlay, testId: testId, label: label ?? scatterPlotLabel(xAxis, yAxis, points.x.length), children: () => (_jsxs(_Fragment, { children: [ellipse === null || groupOf === undefined ? null : (_jsx(ScatterEllipseLayer, { x: x, y: y, groupOf: groupOf, colors: ink.colors, opacities: ink.opacities, scaleX: toX, scaleY: toY, size: ellipse, minimumPoints: ellipseMinimumPoints, fillOpacity: ellipseFillOpacity })), _jsx(ScatterPointLayer, { points: points, groupOf: groupOf, colors: ink.colors, opacities: ink.opacities, radius: pointRadius, outlinedFrom: outlinedFrom }), _jsx(ScatterMarkLayer, { points: points, selected: interaction.selection.mask, hovered: interaction.hover.hovered, focused: interaction.keyboard.cursor, radius: pointRadius, groupOf: groupOf, colors: ink.colors, showGroupMeans: showGroupMeans, marks: scatterPixelMarks(markers, toX, toY) }), named === undefined ? null : (_jsx(ScatterLabelLayer, { labels: named, radius: pointRadius })), crowds === undefined ? null : (_jsx(ScatterLabelLayer, { labels: crowds, radius: pointRadius, strong: true })), interaction.lasso.pathData === '' ? null : (_jsx("path", { d: interaction.lasso.pathData, ...LASSO_STYLE })), _jsx("rect", { ...rect, ref: surface, fill: "transparent", tabIndex: 0, onKeyDown: interaction.keyboard.onKeyDown, onDoubleClick: handleDoubleClick, ...interaction.surface })] })) }));
|
|
90
106
|
}
|
|
91
107
|
//# sourceMappingURL=ScatterPlot.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScatterPlot.js","sourceRoot":"","sources":["../../../src/scatter/ui/ScatterPlot.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAEpE,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA+B,CAAC;AAE3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA2B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAyB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAwB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAyB,CAAC;AAC5D,OAAO,EACL,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"ScatterPlot.js","sourceRoot":"","sources":["../../../src/scatter/ui/ScatterPlot.tsx"],"names":[],"mappings":"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"}
|
|
@@ -145,6 +145,15 @@ export declare const MINIMUM_RING_VERTICES = 3;
|
|
|
145
145
|
* @returns The mode a release would use.
|
|
146
146
|
*/
|
|
147
147
|
export declare function modifierMode(event: GestureModifiers, resting: ScatterSelectionMode): ScatterSelectionMode;
|
|
148
|
+
/** The little of an event that says where on the surface it happened. */
|
|
149
|
+
export interface SurfaceEvent {
|
|
150
|
+
/** The element the handler is on, which is the rectangle being measured. */
|
|
151
|
+
currentTarget: Element;
|
|
152
|
+
/** Where the event happened, in the window. */
|
|
153
|
+
clientX: number;
|
|
154
|
+
/** Where the event happened, in the window. */
|
|
155
|
+
clientY: number;
|
|
156
|
+
}
|
|
148
157
|
/**
|
|
149
158
|
* Where the pointer is, in the space the points were measured in.
|
|
150
159
|
*
|
|
@@ -152,12 +161,15 @@ export declare function modifierMode(event: GestureModifiers, resting: ScatterSe
|
|
|
152
161
|
* the plot's own corner, so the answer can be compared with a point coordinate
|
|
153
162
|
* without the caller mapping anything. An element that cannot be measured —
|
|
154
163
|
* a server render — reports the corner itself rather than throwing.
|
|
155
|
-
*
|
|
164
|
+
*
|
|
165
|
+
* It takes the three fields it actually reads rather than a pointer event,
|
|
166
|
+
* because a double click arrives as a mouse event and asks the same question.
|
|
167
|
+
* @param event - The event, or anything carrying those three fields.
|
|
156
168
|
* @param originX - The rectangle's left edge in the points' space.
|
|
157
169
|
* @param originY - Its top edge.
|
|
158
170
|
* @returns The position, in pixels.
|
|
159
171
|
*/
|
|
160
|
-
export declare function surfacePosition(event:
|
|
172
|
+
export declare function surfacePosition(event: SurfaceEvent, originX: number, originY: number): {
|
|
161
173
|
x: number;
|
|
162
174
|
y: number;
|
|
163
175
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lassoGesture.d.ts","sourceRoot":"","sources":["../../../src/scatter/ui/lassoGesture.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"lassoGesture.d.ts","sourceRoot":"","sources":["../../../src/scatter/ui/lassoGesture.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,7 +34,10 @@ export function modifierMode(event, resting) {
|
|
|
34
34
|
* the plot's own corner, so the answer can be compared with a point coordinate
|
|
35
35
|
* without the caller mapping anything. An element that cannot be measured —
|
|
36
36
|
* a server render — reports the corner itself rather than throwing.
|
|
37
|
-
*
|
|
37
|
+
*
|
|
38
|
+
* It takes the three fields it actually reads rather than a pointer event,
|
|
39
|
+
* because a double click arrives as a mouse event and asks the same question.
|
|
40
|
+
* @param event - The event, or anything carrying those three fields.
|
|
38
41
|
* @param originX - The rectangle's left edge in the points' space.
|
|
39
42
|
* @param originY - Its top edge.
|
|
40
43
|
* @returns The position, in pixels.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lassoGesture.js","sourceRoot":"","sources":["../../../src/scatter/ui/lassoGesture.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAqIH,+EAA+E;AAC/E,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC;AAE5C,uEAAuE;AACvE,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAEvC;;;;;;;;;GASG;AACH,MAAM,UAAU,YAAY,CAC1B,KAAuB,EACvB,OAA6B;IAE7B,IAAI,KAAK,CAAC,MAAM;QAAE,OAAO,QAAQ,CAAC;IAClC,IAAI,KAAK,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IACjC,OAAO,OAAO,CAAC;AACjB,CAAC;
|
|
1
|
+
{"version":3,"file":"lassoGesture.js","sourceRoot":"","sources":["../../../src/scatter/ui/lassoGesture.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAqIH,+EAA+E;AAC/E,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC;AAE5C,uEAAuE;AACvE,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAEvC;;;;;;;;;GASG;AACH,MAAM,UAAU,YAAY,CAC1B,KAAuB,EACvB,OAA6B;IAE7B,IAAI,KAAK,CAAC,MAAM;QAAE,OAAO,QAAQ,CAAC;IAClC,IAAI,KAAK,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IACjC,OAAO,OAAO,CAAC;AACjB,CAAC;AAYD;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,eAAe,CAC7B,KAAmB,EACnB,OAAe,EACf,OAAe;IAEf,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC;IACnC,IAAI,OAAO,MAAM,EAAE,qBAAqB,KAAK,UAAU,EAAE,CAAC;QACxD,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC;IACpC,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC;IAC3C,OAAO;QACL,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC,IAAI,GAAG,OAAO;QACrC,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,GAAG,OAAO;KACrC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,KAAiC;IAC9D,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC;IACnC,IAAI,OAAO,MAAM,EAAE,iBAAiB,KAAK,UAAU;QAAE,OAAO;IAC5D,IAAI,CAAC;QACH,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,yEAAyE;IAC3E,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa,CAAC,QAAmB,EAAE,GAAe;IAChE,IAAI,QAAQ,CAAC,OAAO,KAAK,IAAI;QAAE,OAAO;IACtC,IAAI,OAAO,qBAAqB,KAAK,UAAU,EAAE,CAAC;QAChD,QAAQ,CAAC,OAAO,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAChD,CAAC;SAAM,CAAC;QACN,GAAG,EAAE,CAAC;IACR,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,QAAmB;IAC3C,IAAI,QAAQ,CAAC,OAAO,KAAK,IAAI;QAAE,OAAO;IACtC,IAAI,OAAO,oBAAoB,KAAK,UAAU,EAAE,CAAC;QAC/C,oBAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IACD,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;AAC1B,CAAC"}
|
|
@@ -39,6 +39,24 @@ export interface ScatterMarker {
|
|
|
39
39
|
*/
|
|
40
40
|
shape?: OverlayMarkShape;
|
|
41
41
|
}
|
|
42
|
+
/** A point the reader opened, and where they opened it. */
|
|
43
|
+
export interface ScatterPointOpen {
|
|
44
|
+
/** Its row, as an index into the arrays the caller passed. */
|
|
45
|
+
index: number;
|
|
46
|
+
/** Where the reader clicked, in pixels from the figure's left edge. */
|
|
47
|
+
x: number;
|
|
48
|
+
/** Where they clicked, in pixels from its top edge. */
|
|
49
|
+
y: number;
|
|
50
|
+
/**
|
|
51
|
+
* Where they clicked in the window, which is what an editor floating over
|
|
52
|
+
* the page — a menu, a popover, a dialog anchored on the point — is placed
|
|
53
|
+
* from. The pair above is the figure's own space, for a caller drawing
|
|
54
|
+
* inside it.
|
|
55
|
+
*/
|
|
56
|
+
clientX: number;
|
|
57
|
+
/** Where they clicked in the window. */
|
|
58
|
+
clientY: number;
|
|
59
|
+
}
|
|
42
60
|
/** What {@link ScatterPlot} needs. */
|
|
43
61
|
export interface ScatterPlotProps {
|
|
44
62
|
/** Horizontal coordinate of every point, in data units. */
|
|
@@ -168,6 +186,22 @@ export interface ScatterPlotProps {
|
|
|
168
186
|
* @default undefined
|
|
169
187
|
*/
|
|
170
188
|
onPinChange?: (index: number) => void;
|
|
189
|
+
/**
|
|
190
|
+
* Called when the reader double-clicks a point: the gesture for "tell me
|
|
191
|
+
* more about this one", or "let me change it".
|
|
192
|
+
*
|
|
193
|
+
* A double click is also two clicks, so the point is selected first and its
|
|
194
|
+
* card pinned. That is deliberate: the alternative is to hold every single
|
|
195
|
+
* click for the length of the double-click interval before acting on it, and
|
|
196
|
+
* clicking a dot is the commonest gesture in the figure — making it feel
|
|
197
|
+
* slow to save a redundant selection on the rarest one is the wrong trade.
|
|
198
|
+
*
|
|
199
|
+
* A double click on empty ground is not this. It puts the frame back around
|
|
200
|
+
* every point, which is the only way out of a zoom, and it keeps doing that
|
|
201
|
+
* whether or not this is given.
|
|
202
|
+
* @default undefined — a double click only ever resets the frame
|
|
203
|
+
*/
|
|
204
|
+
onPointDoubleClick?: (point: ScatterPointOpen) => void;
|
|
171
205
|
/**
|
|
172
206
|
* Called when a lasso starts being drawn and again when it ends, and never
|
|
173
207
|
* in between.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scatterPlotProps.d.ts","sourceRoot":"","sources":["../../../src/scatter/ui/scatterPlotProps.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAExE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAEhE,6CAA6C;AAC7C,MAAM,WAAW,YAAY;IAC3B,uEAAuE;IACvE,EAAE,EAAE,MAAM,CAAC;IACX,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;CACf;AAED,4EAA4E;AAC5E,MAAM,WAAW,aAAa;IAC5B,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,CAAC,EAAE,MAAM,CAAC;IACV,mDAAmD;IACnD,CAAC,EAAE,MAAM,CAAC;IACV,kBAAkB;IAClB,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,KAAK,CAAC,EAAE,gBAAgB,CAAC;CAC1B;AAED,sCAAsC;AACtC,MAAM,WAAW,gBAAgB;IAC/B,2DAA2D;IAC3D,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACrB,6DAA6D;IAC7D,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACrB,uDAAuD;IACvD,KAAK,EAAE,MAAM,CAAC;IACd,oBAAoB;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,2BAA2B;IAC3B,KAAK,EAAE,aAAa,CAAC;IACrB,yBAAyB;IACzB,KAAK,EAAE,aAAa,CAAC;IACrB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAC5B;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IACjC;;;OAGG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC;;;OAGG;IACH,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC7B;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,OAAO,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IACnC;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;;;;;OASG;IACH,WAAW,CAAC,EAAE,aAAa,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAChD;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B;;;OAGG;IACH,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;IACtD;;;;OAIG;IACH,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAClC;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC;;;;;;;;;;OAUG;IACH,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3C;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAChC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,KAAK,IAAI,CAAC;IAC5D;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
|
1
|
+
{"version":3,"file":"scatterPlotProps.d.ts","sourceRoot":"","sources":["../../../src/scatter/ui/scatterPlotProps.ts"],"names":[],"mappings":"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"}
|
|
@@ -82,6 +82,15 @@ export interface ScatterInteractionApi {
|
|
|
82
82
|
keyboard: ScatterKeyboardApi;
|
|
83
83
|
/** The outline being drawn, for the plot to stroke. */
|
|
84
84
|
lasso: LassoGesture;
|
|
85
|
+
/**
|
|
86
|
+
* Which point is near a position, or `-1`.
|
|
87
|
+
*
|
|
88
|
+
* The same search a click runs, offered on its own so that a gesture the
|
|
89
|
+
* hook does not own — a double click, which the plot answers because only
|
|
90
|
+
* the plot knows what a double click on empty ground means — asks it in the
|
|
91
|
+
* same words and with the same radius.
|
|
92
|
+
*/
|
|
93
|
+
pointAt: (x: number, y: number) => number;
|
|
85
94
|
}
|
|
86
95
|
/**
|
|
87
96
|
* Every way a reader touches a scatter, wired together.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useScatterInteraction.d.ts","sourceRoot":"","sources":["../../../src/scatter/ui/useScatterInteraction.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAG5D,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,KAAK,EACV,mBAAmB,EACnB,eAAe,EAChB,MAAM,0BAA0B,CAAC;AAGlC,gDAAgD;AAChD,MAAM,WAAW,yBAAyB;IACxC,4EAA4E;IAC5E,MAAM,EAAE,YAAY,CAAC;IACrB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B;;;OAGG;IACH,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;IACtD;;;OAGG;IACH,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAClC;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB;;;OAGG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAED,gEAAgE;AAChE,MAAM,WAAW,qBAAqB;IACpC,2DAA2D;IAC3D,OAAO,EAAE,mBAAmB,CAAC;IAC7B,oEAAoE;IACpE,SAAS,EAAE,mBAAmB,CAAC;IAC/B,sDAAsD;IACtD,KAAK,EAAE,aAAa,CAAC;IACrB,0EAA0E;IAC1E,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,uDAAuD;IACvD,KAAK,EAAE,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"useScatterInteraction.d.ts","sourceRoot":"","sources":["../../../src/scatter/ui/useScatterInteraction.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAG5D,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,KAAK,EACV,mBAAmB,EACnB,eAAe,EAChB,MAAM,0BAA0B,CAAC;AAGlC,gDAAgD;AAChD,MAAM,WAAW,yBAAyB;IACxC,4EAA4E;IAC5E,MAAM,EAAE,YAAY,CAAC;IACrB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B;;;OAGG;IACH,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;IACtD;;;OAGG;IACH,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAClC;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB;;;OAGG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAED,gEAAgE;AAChE,MAAM,WAAW,qBAAqB;IACpC,2DAA2D;IAC3D,OAAO,EAAE,mBAAmB,CAAC;IAC7B,oEAAoE;IACpE,SAAS,EAAE,mBAAmB,CAAC;IAC/B,sDAAsD;IACtD,KAAK,EAAE,aAAa,CAAC;IACrB,0EAA0E;IAC1E,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,uDAAuD;IACvD,KAAK,EAAE,YAAY,CAAC;IACpB;;;;;;;OAOG;IACH,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;CAC3C;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,yBAAyB,GACjC,qBAAqB,CAiIvB"}
|
|
@@ -88,6 +88,14 @@ export function useScatterInteraction(options) {
|
|
|
88
88
|
unpin();
|
|
89
89
|
}, [lasso, unpin]);
|
|
90
90
|
const keyboard = useScatterKeyboard({ count, onCommit, onCancel });
|
|
91
|
-
|
|
91
|
+
const pointAt = useCallback((x, y) => nearestPointIndex(points, x, y, radius, included), [included, points, radius]);
|
|
92
|
+
return {
|
|
93
|
+
surface: lasso.surface,
|
|
94
|
+
selection,
|
|
95
|
+
hover,
|
|
96
|
+
keyboard,
|
|
97
|
+
lasso,
|
|
98
|
+
pointAt,
|
|
99
|
+
};
|
|
92
100
|
}
|
|
93
101
|
//# sourceMappingURL=useScatterInteraction.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useScatterInteraction.js","sourceRoot":"","sources":["../../../src/scatter/ui/useScatterInteraction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAG5C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAG5D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAK7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"useScatterInteraction.js","sourceRoot":"","sources":["../../../src/scatter/ui/useScatterInteraction.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a drag over a cloud does.
|
|
3
|
+
*
|
|
4
|
+
* Two gestures want the same drag. Turning the box is the one a reader reaches
|
|
5
|
+
* for first and must stay a plain drag; drawing a lasso is the one the flat map
|
|
6
|
+
* has already taught them. Neither can be given a modifier without taking one
|
|
7
|
+
* that already means "add to the selection" or "take out of it", so the choice
|
|
8
|
+
* is a control the reader can see rather than a shortcut somebody has to tell
|
|
9
|
+
* them about — and inside a lasso the modifiers keep exactly the meaning they
|
|
10
|
+
* have on the map.
|
|
11
|
+
*/
|
|
12
|
+
export type CloudGesture =
|
|
13
|
+
/** Turn the box. A tap still picks the sample under it. */
|
|
14
|
+
'turn'
|
|
15
|
+
/** Draw a lasso, exactly as on the map. */
|
|
16
|
+
| 'select';
|
|
17
|
+
//# sourceMappingURL=cloudGesture.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloudGesture.d.ts","sourceRoot":"","sources":["../../../src/scatter3d/core/cloudGesture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,MAAM,YAAY;AACtB,2DAA2D;AACzD,MAAM;AACR,2CAA2C;GACzC,QAAQ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloudGesture.js","sourceRoot":"","sources":["../../../src/scatter3d/core/cloudGesture.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The shell that summarises where a group of samples sits in the cloud.
|
|
3
|
+
*
|
|
4
|
+
* It is the outline of `scatter/core` with one dimension more, and it is
|
|
5
|
+
* described the same way — a centre and the axes of the group's own spread,
|
|
6
|
+
* in the data's units — so that turning it into something an SVG can draw
|
|
7
|
+
* stays a separate step. Here that step matters more than it does on a map:
|
|
8
|
+
* a shell has no `<ellipse>` to fall back on and has to be tessellated,
|
|
9
|
+
* projected and painted back to front.
|
|
10
|
+
*/
|
|
11
|
+
import type { EllipseSize } from '../../scatter/core/confidenceEllipse.ts';
|
|
12
|
+
import type { Vector3 } from './orbitCamera.ts';
|
|
13
|
+
/** A group's shell, in the cloud's own units. */
|
|
14
|
+
export interface ConfidenceEllipsoid {
|
|
15
|
+
/** Centre of the shell, which is the group's average. */
|
|
16
|
+
center: Vector3;
|
|
17
|
+
/**
|
|
18
|
+
* Three orthogonal semi-axes, longest first, each vector as long as its own
|
|
19
|
+
* radius. A direction the group has no spread in is the zero vector, which
|
|
20
|
+
* is what flattens the shell rather than giving it a false thickness.
|
|
21
|
+
*/
|
|
22
|
+
axes: readonly [Vector3, Vector3, Vector3];
|
|
23
|
+
/** How many finite points went into it. */
|
|
24
|
+
count: number;
|
|
25
|
+
}
|
|
26
|
+
/** How {@link confidenceEllipsoid} measures a group. */
|
|
27
|
+
export interface ConfidenceEllipsoidOptions {
|
|
28
|
+
/**
|
|
29
|
+
* How large to draw the shell. A share is read in three dimensions, so the
|
|
30
|
+
* same share gives a wider shell here than the same call gives on the map.
|
|
31
|
+
* @default { kind: 'coverage', probability: 0.95 }
|
|
32
|
+
*/
|
|
33
|
+
size?: EllipseSize;
|
|
34
|
+
/**
|
|
35
|
+
* How many finite points a group needs before it is given a shell at all.
|
|
36
|
+
* Below four a group has no volume to measure — three points lie on a plane
|
|
37
|
+
* however they are arranged — so fewer than four is read as four.
|
|
38
|
+
* @default 4
|
|
39
|
+
*/
|
|
40
|
+
minimumPoints?: number;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* The shell that summarises a group of samples.
|
|
44
|
+
*
|
|
45
|
+
* Points that are not finite are skipped rather than poisoning the average,
|
|
46
|
+
* and the spread is measured with the `n - 1` divisor, so the shell estimates
|
|
47
|
+
* the group rather than describing the handful of samples that happen to have
|
|
48
|
+
* been measured — both exactly as the two-dimensional outline does.
|
|
49
|
+
* @param points - The group's samples, in the cloud's own units.
|
|
50
|
+
* @param options - See {@link ConfidenceEllipsoidOptions}.
|
|
51
|
+
* @returns The shell, or `null` when the group is too small to have a shape, when its coordinates are so large that squaring them overflows, or when the requested size is unbounded.
|
|
52
|
+
*/
|
|
53
|
+
export declare function confidenceEllipsoid(points: readonly Vector3[], options?: ConfidenceEllipsoidOptions): ConfidenceEllipsoid | null;
|
|
54
|
+
/**
|
|
55
|
+
* How far out a size asks the shell to be drawn.
|
|
56
|
+
*
|
|
57
|
+
* Public because a legend has to be able to say what a share came to without
|
|
58
|
+
* building a shell to ask it.
|
|
59
|
+
* @param size - How large the shell was asked to be.
|
|
60
|
+
* @returns The number of standard deviations.
|
|
61
|
+
*/
|
|
62
|
+
export declare function ellipsoidStandardDeviations(size: EllipseSize): number;
|
|
63
|
+
//# sourceMappingURL=confidenceEllipsoid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"confidenceEllipsoid.d.ts","sourceRoot":"","sources":["../../../src/scatter3d/core/confidenceEllipsoid.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAG3E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAIhD,iDAAiD;AACjD,MAAM,WAAW,mBAAmB;IAClC,yDAAyD;IACzD,MAAM,EAAE,OAAO,CAAC;IAChB;;;;OAIG;IACH,IAAI,EAAE,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC3C,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wDAAwD;AACxD,MAAM,WAAW,0BAA0B;IACzC;;;;OAIG;IACH,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,OAAO,EAAE,EAC1B,OAAO,GAAE,0BAA+B,GACvC,mBAAmB,GAAG,IAAI,CA0C5B;AAED;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAGrE"}
|