@jbrowse/plugin-linear-genome-view 5.0.0-beta.1 → 5.0.0-beta.10
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/esm/FeatureTrack/configSchema.d.ts +142 -50
- package/esm/LaunchLinearGenomeView/index.js +2 -13
- package/esm/LinearGenomeView/afterAttach.d.ts +5 -5
- package/esm/LinearGenomeView/afterAttach.js +73 -59
- package/esm/LinearGenomeView/components/CenterLine.js +5 -3
- package/esm/LinearGenomeView/components/CrisprGuidePanel.js +3 -5
- package/esm/LinearGenomeView/components/ExportSvgDialog.d.ts +3 -2
- package/esm/LinearGenomeView/components/ExportSvgDialog.js +6 -2
- package/esm/LinearGenomeView/components/GetSequenceDialog.js +2 -2
- package/esm/LinearGenomeView/components/Header.js +11 -1
- package/esm/LinearGenomeView/components/HeaderClearHighlightButton.js +2 -2
- package/esm/LinearGenomeView/components/HeaderPanControls.js +2 -1
- package/esm/LinearGenomeView/components/HeaderZoomControls.js +4 -34
- package/esm/LinearGenomeView/components/Highlight.js +7 -7
- package/esm/LinearGenomeView/components/HighlightBand.js +2 -2
- package/esm/LinearGenomeView/components/HighlightChip.d.ts +1 -2
- package/esm/LinearGenomeView/components/HighlightChip.js +5 -7
- package/esm/LinearGenomeView/components/HoverPositionHighlight.js +3 -3
- package/esm/LinearGenomeView/components/ImportForm.js +2 -2
- package/esm/LinearGenomeView/components/LinearGenomeView.js +3 -3
- package/esm/LinearGenomeView/components/LinearGenomeViewContainer.js +3 -4
- package/esm/LinearGenomeView/components/MiniControls.js +3 -2
- package/esm/LinearGenomeView/components/OverviewHighlight.js +3 -3
- package/esm/LinearGenomeView/components/OverviewHighlightBand.js +2 -3
- package/esm/LinearGenomeView/components/OverviewRubberband.js +20 -45
- package/esm/LinearGenomeView/components/OverviewScalebar.js +4 -5
- package/esm/LinearGenomeView/components/OverviewScalebarPolygon.js +5 -3
- package/esm/LinearGenomeView/components/PaddingBlocks.d.ts +1 -1
- package/esm/LinearGenomeView/components/PaddingBlocks.js +14 -9
- package/esm/LinearGenomeView/components/RangeSelectOverlay.js +5 -6
- package/esm/LinearGenomeView/components/ResizeAllTracksHandle.d.ts +5 -0
- package/esm/LinearGenomeView/components/ResizeAllTracksHandle.js +71 -0
- package/esm/LinearGenomeView/components/Rubberband.d.ts +1 -2
- package/esm/LinearGenomeView/components/Rubberband.js +3 -2
- package/esm/LinearGenomeView/components/SVGHighlightBand.js +2 -3
- package/esm/LinearGenomeView/components/Scalebar.d.ts +2 -6
- package/esm/LinearGenomeView/components/Scalebar.js +8 -5
- package/esm/LinearGenomeView/components/ScalebarRefNameLabels.js +49 -34
- package/esm/LinearGenomeView/components/SearchBox.js +8 -7
- package/esm/LinearGenomeView/components/SearchResultsDialog.d.ts +2 -1
- package/esm/LinearGenomeView/components/SearchResultsDialog.js +2 -2
- package/esm/LinearGenomeView/components/SearchResultsTable.d.ts +2 -1
- package/esm/LinearGenomeView/components/SearchResultsTable.js +12 -29
- package/esm/LinearGenomeView/components/SequenceSearchDialog.d.ts +2 -4
- package/esm/LinearGenomeView/components/TrackContainer.js +63 -9
- package/esm/LinearGenomeView/components/TrackLabel.js +10 -3
- package/esm/LinearGenomeView/components/TrackLabelButtons.js +2 -2
- package/esm/LinearGenomeView/components/TrackLabelDragHandle.js +2 -2
- package/esm/LinearGenomeView/components/TrackLabelMenu.js +3 -2
- package/esm/LinearGenomeView/components/TrackRenderingContainer.d.ts +4 -1
- package/esm/LinearGenomeView/components/TrackRenderingContainer.js +11 -23
- package/esm/LinearGenomeView/components/TracksContainer.js +10 -22
- package/esm/LinearGenomeView/components/VerticalGuide.d.ts +1 -2
- package/esm/LinearGenomeView/components/VerticalGuide.js +3 -16
- package/esm/LinearGenomeView/components/ZoomButton.js +6 -1
- package/esm/LinearGenomeView/components/ZoomTransform.js +4 -0
- package/esm/LinearGenomeView/components/fetchSequence.d.ts +1 -2
- package/esm/LinearGenomeView/components/recentLocationsMenu.js +10 -0
- package/esm/LinearGenomeView/components/searchModes.d.ts +1 -1
- package/esm/LinearGenomeView/components/searchModes.js +1 -1
- package/esm/LinearGenomeView/components/useRangeSelect.d.ts +0 -3
- package/esm/LinearGenomeView/components/useRangeSelect.js +20 -59
- package/esm/LinearGenomeView/components/useSideScroll.d.ts +16 -2
- package/esm/LinearGenomeView/components/useSideScroll.js +153 -103
- package/esm/LinearGenomeView/components/util.d.ts +4 -0
- package/esm/LinearGenomeView/components/util.js +4 -2
- package/esm/LinearGenomeView/consts.d.ts +2 -0
- package/esm/LinearGenomeView/consts.js +3 -1
- package/esm/LinearGenomeView/containingLgv.d.ts +21 -0
- package/esm/LinearGenomeView/containingLgv.js +23 -0
- package/esm/LinearGenomeView/headerFit.d.ts +4 -2
- package/esm/LinearGenomeView/headerFit.js +20 -7
- package/esm/LinearGenomeView/index.d.ts +1 -5
- package/esm/LinearGenomeView/index.js +10 -7
- package/esm/LinearGenomeView/keyboardHandler.d.ts +2 -0
- package/esm/LinearGenomeView/keyboardHandler.js +15 -1
- package/esm/LinearGenomeView/launchKeys.d.ts +2 -0
- package/esm/LinearGenomeView/launchKeys.js +27 -0
- package/esm/LinearGenomeView/lazyDialogs.d.ts +2 -4
- package/esm/LinearGenomeView/lazyDialogs.js +1 -0
- package/esm/LinearGenomeView/linkedViewSync.d.ts +3 -11
- package/esm/LinearGenomeView/linkedViewSync.js +27 -43
- package/esm/LinearGenomeView/menuItems.d.ts +16 -18
- package/esm/LinearGenomeView/menuItems.js +242 -151
- package/esm/LinearGenomeView/model.d.ts +2009 -200
- package/esm/LinearGenomeView/model.js +545 -395
- package/esm/LinearGenomeView/sharedScaleContainer.d.ts +1 -1
- package/esm/LinearGenomeView/showRegionsWithUndo.js +7 -1
- package/esm/LinearGenomeView/stickyChrome.d.ts +5 -9
- package/esm/LinearGenomeView/stickyChrome.js +5 -9
- package/esm/LinearGenomeView/svgcomponents/SVGGridlines.js +4 -4
- package/esm/LinearGenomeView/svgcomponents/SVGHeader.d.ts +4 -1
- package/esm/LinearGenomeView/svgcomponents/SVGHeader.js +8 -21
- package/esm/LinearGenomeView/svgcomponents/SVGHighlights.js +8 -8
- package/esm/LinearGenomeView/svgcomponents/SVGHighlightsOverlay.js +3 -3
- package/esm/LinearGenomeView/svgcomponents/SVGLinearGenomeView.js +7 -11
- package/esm/LinearGenomeView/svgcomponents/SVGRegionSeparators.js +2 -5
- package/esm/LinearGenomeView/svgcomponents/SVGRowHeader.js +5 -6
- package/esm/LinearGenomeView/svgcomponents/SVGRuler.js +9 -10
- package/esm/LinearGenomeView/svgcomponents/SVGScalebar.js +3 -3
- package/esm/LinearGenomeView/svgcomponents/SVGStackedRow.d.ts +27 -0
- package/esm/LinearGenomeView/svgcomponents/SVGStackedRow.js +12 -0
- package/esm/LinearGenomeView/svgcomponents/SVGTrackLabel.js +15 -6
- package/esm/LinearGenomeView/svgcomponents/SVGTracks.d.ts +4 -4
- package/esm/LinearGenomeView/svgcomponents/SVGTracks.js +6 -5
- package/esm/LinearGenomeView/svgcomponents/SVGView.d.ts +1 -1
- package/esm/LinearGenomeView/svgcomponents/SVGView.js +1 -1
- package/esm/LinearGenomeView/svgcomponents/figureContract.js +14 -14
- package/esm/LinearGenomeView/svgcomponents/renderViewTracks.js +1 -1
- package/esm/LinearGenomeView/svgcomponents/useViewSvgFigure.js +50 -68
- package/esm/LinearGenomeView/svgcomponents/util.d.ts +9 -5
- package/esm/LinearGenomeView/svgcomponents/util.js +26 -21
- package/esm/LinearGenomeView/types.d.ts +8 -11
- package/esm/LinearGenomeView/util.d.ts +60 -45
- package/esm/LinearGenomeView/util.js +131 -160
- package/esm/MultiLevelRubberband/MultiLevelRubberband.js +7 -4
- package/esm/MultiLevelRubberband/index.d.ts +2 -0
- package/esm/MultiLevelRubberband/index.js +2 -0
- package/esm/MultiLevelRubberband/menuItems.d.ts +34 -0
- package/esm/MultiLevelRubberband/menuItems.js +52 -0
- package/esm/MultiLevelRubberband/rowLabel.d.ts +22 -0
- package/esm/MultiLevelRubberband/rowLabel.js +27 -0
- package/esm/MultiLevelRubberband/types.d.ts +1 -0
- package/esm/MultiLevelRubberband/useRangeSelect.d.ts +2 -1
- package/esm/MultiLevelRubberband/useRangeSelect.js +31 -47
- package/esm/displayKitTests/perRegionTestEnv.d.ts +214 -86
- package/esm/displayKitTests/perRegionTestEnv.js +30 -29
- package/esm/index.d.ts +15 -85
- package/esm/index.js +13 -36
- package/esm/searchUtils.d.ts +18 -9
- package/esm/searchUtils.js +85 -69
- package/esm/shared/RubberbandSpan.js +2 -1
- package/esm/shared/coordLabels.d.ts +7 -0
- package/esm/shared/coordLabels.js +15 -1
- package/esm/shared/useWindowDrag.d.ts +18 -0
- package/esm/shared/useWindowDrag.js +45 -0
- package/package.json +10 -10
- package/esm/LinearGenomeView/FloatingSvgOverlay.d.ts +0 -5
- package/esm/LinearGenomeView/FloatingSvgOverlay.js +0 -25
- package/esm/LinearGenomeView/initKeys.d.ts +0 -13
- package/esm/LinearGenomeView/initKeys.js +0 -104
- package/esm/MultiLevelRubberband/VerticalGuide.d.ts +0 -6
- package/esm/MultiLevelRubberband/VerticalGuide.js +0 -21
- package/esm/lazyPluginExports.d.ts +0 -23
- package/esm/lazyPluginExports.js +0 -36
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { useCallback,
|
|
1
|
+
import { useCallback, useState } from 'react';
|
|
2
2
|
import { getRelativeX } from '@jbrowse/core/util/getRelativeX';
|
|
3
3
|
import { transaction } from 'mobx';
|
|
4
|
+
import { useWindowDrag } from '../shared/useWindowDrag.js';
|
|
4
5
|
export function useRangeSelect(ref, model) {
|
|
5
6
|
const [startX, setStartX] = useState();
|
|
6
7
|
const [currentX, setCurrentX] = useState(0);
|
|
@@ -18,8 +19,15 @@ export function useRangeSelect(ref, model) {
|
|
|
18
19
|
});
|
|
19
20
|
}, [model]);
|
|
20
21
|
// releases the committed offsets too, since mouseOut no longer does while the
|
|
21
|
-
// menu is open —
|
|
22
|
-
//
|
|
22
|
+
// menu is open — dismissing the menu, by its backdrop or Escape, is the point
|
|
23
|
+
// the selection is actually finished with. A bare click on the strip no longer
|
|
24
|
+
// comes through here: it opens the click menu instead.
|
|
25
|
+
//
|
|
26
|
+
// `CascadingMenu` dismisses BEFORE it runs the clicked row's callback, so this
|
|
27
|
+
// clears the offsets out from under it. Every menu built here captures them
|
|
28
|
+
// when the rows are built, which is why that works — the plain linear genome
|
|
29
|
+
// view's host never clears, so a row written to read them live works there
|
|
30
|
+
// and silently no-ops from a stacked row.
|
|
23
31
|
const handleClose = useCallback(() => {
|
|
24
32
|
setAnchorPosition(undefined);
|
|
25
33
|
setStartX(undefined);
|
|
@@ -27,54 +35,27 @@ export function useRangeSelect(ref, model) {
|
|
|
27
35
|
setGuideX(undefined);
|
|
28
36
|
clearOffsets();
|
|
29
37
|
}, [clearOffsets]);
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
function globalMouseMove(event) {
|
|
39
|
-
setCurrentX(event.clientX - left);
|
|
40
|
-
}
|
|
41
|
-
function globalMouseUp(event) {
|
|
42
|
-
if (startX === undefined) {
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
const offsetX = event.clientX - left;
|
|
46
|
-
if (Math.abs(offsetX - startX) <= 3) {
|
|
47
|
-
handleClose();
|
|
38
|
+
useWindowDrag(ref, mouseDragging ? startX : undefined, {
|
|
39
|
+
onMove: setCurrentX,
|
|
40
|
+
onEnd: ({ startX, endX, isClick, clientX, clientY }) => {
|
|
41
|
+
setAnchorPosition({ offsetX: endX, clientX, clientY, isClick });
|
|
42
|
+
if (isClick) {
|
|
43
|
+
// the click menu names a coordinate, not a span, so nothing is
|
|
44
|
+
// committed; the guide stays at the click so the menu says where
|
|
45
|
+
setGuideX(endX);
|
|
48
46
|
return;
|
|
49
47
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
clientX: event.clientX,
|
|
53
|
-
clientY: event.clientY,
|
|
54
|
-
});
|
|
55
|
-
const leftPx = Math.min(startX, offsetX);
|
|
56
|
-
const rightPx = Math.max(startX, offsetX);
|
|
48
|
+
const leftPx = Math.min(startX, endX);
|
|
49
|
+
const rightPx = Math.max(startX, endX);
|
|
57
50
|
transaction(() => {
|
|
58
51
|
for (const view of model.views) {
|
|
59
52
|
view.setOffsets(view.pxToBp(leftPx), view.pxToBp(rightPx));
|
|
60
53
|
}
|
|
61
54
|
});
|
|
62
55
|
setGuideX(undefined);
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
handleClose();
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
window.addEventListener('mousemove', globalMouseMove);
|
|
70
|
-
window.addEventListener('mouseup', globalMouseUp);
|
|
71
|
-
window.addEventListener('keydown', globalKeyDown);
|
|
72
|
-
return () => {
|
|
73
|
-
window.removeEventListener('mousemove', globalMouseMove);
|
|
74
|
-
window.removeEventListener('mouseup', globalMouseUp);
|
|
75
|
-
window.removeEventListener('keydown', globalKeyDown);
|
|
76
|
-
};
|
|
77
|
-
}, [startX, mouseDragging, model, ref, handleClose]);
|
|
56
|
+
},
|
|
57
|
+
onCancel: handleClose,
|
|
58
|
+
});
|
|
78
59
|
function mouseDown(event) {
|
|
79
60
|
event.preventDefault();
|
|
80
61
|
event.stopPropagation();
|
|
@@ -90,8 +71,10 @@ export function useRangeSelect(ref, model) {
|
|
|
90
71
|
setCurrentX(relativeX);
|
|
91
72
|
}
|
|
92
73
|
function mouseMove(event) {
|
|
93
|
-
// Don't update guideX while
|
|
94
|
-
//
|
|
74
|
+
// Don't update guideX while a menu is open — the guide is what the click
|
|
75
|
+
// menu's rows refer to, so it stays at the click rather than following the
|
|
76
|
+
// pointer to the menu — or while a drag-selection is in progress (the
|
|
77
|
+
// rubberband should show, not the guide)
|
|
95
78
|
if (anchorPosition || mouseDragging) {
|
|
96
79
|
return;
|
|
97
80
|
}
|
|
@@ -112,13 +95,14 @@ export function useRangeSelect(ref, model) {
|
|
|
112
95
|
callback();
|
|
113
96
|
handleClose();
|
|
114
97
|
}
|
|
115
|
-
const
|
|
98
|
+
const isClick = anchorPosition?.isClick;
|
|
99
|
+
const rubberbandOn = startX !== undefined && !isClick;
|
|
116
100
|
const right = anchorPosition?.offsetX ?? currentX;
|
|
117
101
|
const left = rubberbandOn ? Math.min(right, startX) : 0;
|
|
118
102
|
const width = rubberbandOn ? Math.abs(right - startX) : 0;
|
|
119
103
|
const views = rubberbandOn ? model.views : [];
|
|
120
104
|
return {
|
|
121
|
-
|
|
105
|
+
isClick,
|
|
122
106
|
rubberbandOn,
|
|
123
107
|
guideX,
|
|
124
108
|
anchorPosition,
|