@teselagen/ove 0.3.11 → 0.3.12
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/index.js +362 -209
- package/index.mjs +362 -209
- package/index.umd.js +339 -232
- package/package.json +1 -1
- package/src/AlignmentView/AlignmentVisibilityTool.js +1 -1
- package/src/AlignmentView/EditTrackNameDialog.js +1 -5
- package/src/AlignmentView/HorizontalPanelDragHandle.js +2 -2
- package/src/AlignmentView/Minimap.js +12 -12
- package/src/AlignmentView/PairwiseAlignmentView.js +1 -1
- package/src/AlignmentView/getGapMap.js +1 -1
- package/src/AlignmentView/getTrackFromEvent.js +1 -1
- package/src/AlignmentView/index.js +32 -37
- package/src/AutoAnnotate.js +48 -48
- package/src/CircularView/Cutsites.js +3 -3
- package/src/CircularView/Labels/index.js +7 -7
- package/src/CircularView/Labels/relaxLabels_DEPRECATED.js +5 -5
- package/src/CircularView/RotateCircularViewSlider.js +1 -1
- package/src/CircularView/SelectionLayer.js +2 -2
- package/src/CircularView/drawAnnotations.js +3 -3
- package/src/CircularView/getAngleForPositionMidpoint.js +1 -1
- package/src/CircularView/index.d.ts +11 -11
- package/src/CircularView/index.js +9 -9
- package/src/CreateAnnotationsPage.js +7 -5
- package/src/CreateCustomEnzyme/index.js +1 -5
- package/src/CutsiteFilter/AdditionalCutsiteInfoDialog.js +11 -11
- package/src/CutsiteFilter/index.js +12 -12
- package/src/DigestTool/AddLaddersDialog.js +1 -1
- package/src/DigestTool/DigestTool.js +3 -3
- package/src/DigestTool/Ladder.js +8 -8
- package/src/DigestTool/ladderDefaults.js +1 -2
- package/src/Editor/CommandHotkeyHandler.js +1 -1
- package/src/Editor/DropHandler.js +2 -2
- package/src/Editor/index.js +14 -14
- package/src/Editor/userDefinedHandlersAndOpts.js +2 -0
- package/src/FindBar/index.js +6 -6
- package/src/GlobalDialogUtils.js +6 -0
- package/src/LinearView/ZoomLinearView.js +1 -1
- package/src/LinearView/index.js +7 -7
- package/src/MenuBar/index.js +1 -1
- package/src/MenuBar/viewSubmenu.js +1 -1
- package/src/PCRTool/PCRTool.js +19 -19
- package/src/Reflex/Browser.js +4 -5
- package/src/Reflex/ReflexContainer.js +3 -3
- package/src/Reflex/ReflexElement.js +2 -2
- package/src/RowItem/Axis.js +1 -1
- package/src/RowItem/Caret/index.js +1 -1
- package/src/RowItem/Chromatograms/Chromatogram.js +3 -3
- package/src/RowItem/CutsiteSelectionLayers.js +1 -1
- package/src/RowItem/Cutsites.js +1 -1
- package/src/RowItem/Labels.js +2 -2
- package/src/RowItem/Orfs.js +2 -2
- package/src/RowItem/Sequence.js +4 -4
- package/src/RowItem/StackedAnnotations/PointedAnnotation.js +3 -3
- package/src/RowItem/StackedAnnotations/getStructuredBases.js +1 -1
- package/src/RowItem/Translations/AASliver.js +71 -75
- package/src/RowItem/Translations/index.js +1 -1
- package/src/RowItem/getCutsiteLabelHeights.js +1 -1
- package/src/RowItem/index.js +14 -8
- package/src/RowView/estimateRowHeight.js +5 -5
- package/src/RowView/index.d.ts +7 -7
- package/src/RowView/index.js +11 -12
- package/src/SimpleCircularOrLinearView.js +6 -6
- package/src/StatusBar/MeltingTemp.js +3 -3
- package/src/ToolBar/ToolbarItem.js +2 -2
- package/src/ToolBar/alignmentTool.js +9 -9
- package/src/ToolBar/editTool.js +1 -1
- package/src/ToolBar/findTool.js +2 -2
- package/src/ToolBar/importTool.js +1 -1
- package/src/ToolBar/index.js +2 -2
- package/src/ToolBar/oligoTool.js +1 -1
- package/src/ToolBar/orfTool.js +1 -6
- package/src/ToolBar/printTool.js +2 -2
- package/src/ToolBar/visibilityTool.js +1 -1
- package/src/VersionHistoryView/index.js +2 -2
- package/src/commands/index.js +236 -230
- package/src/createVectorEditor/index.js +4 -4
- package/src/fileUtils.js +18 -18
- package/src/helperComponents/AddOrEditAnnotationDialog/index.js +22 -15
- package/src/helperComponents/AddOrEditFeatureDialog/index.js +2 -2
- package/src/helperComponents/AddOrEditPartDialog/index.js +2 -2
- package/src/helperComponents/AddOrEditPrimerDialog/index.js +5 -5
- package/src/helperComponents/EnzymesDialog/index.js +17 -22
- package/src/helperComponents/GoToDialog.js +5 -1
- package/src/helperComponents/MergeFeaturesDialog/index.js +3 -3
- package/src/helperComponents/PinchHelper/PinchHelper.js +1 -1
- package/src/helperComponents/PrintDialog/index.js +4 -4
- package/src/helperComponents/PropertiesDialog/CutsiteProperties.js +3 -3
- package/src/helperComponents/PropertiesDialog/GenbankView.js +1 -1
- package/src/helperComponents/PropertiesDialog/GeneralProperties.js +5 -5
- package/src/helperComponents/PropertiesDialog/GenericAnnotationProperties.js +136 -138
- package/src/helperComponents/PropertiesDialog/OrfProperties.js +3 -3
- package/src/helperComponents/PropertiesDialog/PrimerProperties.js +1 -1
- package/src/helperComponents/PropertiesDialog/TranslationProperties.js +2 -2
- package/src/helperComponents/PropertiesDialog/index.js +3 -3
- package/src/helperComponents/RemoveDuplicates/index.js +3 -3
- package/src/helperComponents/SelectDialog.js +3 -3
- package/src/helperComponents/UncontrolledSliderWithPlusMinusBtns.js +5 -5
- package/src/helperComponents/createSimpleDialog.js +1 -1
- package/src/helperComponents/partTagSearch.js +2 -5
- package/src/helperComponents/withHover.js +3 -3
- package/src/redux/alignments.js +6 -6
- package/src/redux/annotationVisibility.js +4 -4
- package/src/redux/featureLengthsToHide.js +1 -1
- package/src/redux/frameTranslations.js +3 -3
- package/src/redux/middleware.js +2 -2
- package/src/redux/panelsShown.js +19 -19
- package/src/redux/partLengthsToHide.js +1 -1
- package/src/redux/primerLengthsToHide.js +1 -1
- package/src/redux/readOnly.js +1 -4
- package/src/redux/selectionLayer.js +1 -1
- package/src/redux/sequenceData/features.js +1 -1
- package/src/redux/sequenceData/upsertDeleteActionGenerator.js +1 -1
- package/src/redux/sequenceDataHistory.js +5 -5
- package/src/redux/toolBar.js +2 -4
- package/src/redux/utils/createMetaAction.js +2 -2
- package/src/redux/versionHistory.js +1 -2
- package/src/selectors/annotationSearchSelector.js +4 -4
- package/src/selectors/circularSelector.js +1 -1
- package/src/selectors/cutsiteLabelColorSelector.js +1 -1
- package/src/selectors/filteredCutsitesSelector.js +6 -6
- package/src/selectors/filteredFeaturesSelector.js +4 -4
- package/src/selectors/filteredPartsSelector.js +5 -5
- package/src/selectors/filteredPrimersSelector.js +3 -3
- package/src/selectors/isEnzymeFilterAndSelector.js +1 -1
- package/src/selectors/orfsSelector.js +1 -1
- package/src/selectors/restrictionEnzymesSelector.js +2 -2
- package/src/selectors/searchLayersSelector.js +7 -7
- package/src/selectors/sequenceLengthSelector.js +1 -1
- package/src/selectors/sequenceSelector.js +1 -1
- package/src/selectors/tagsToBoldSelector.js +1 -1
- package/src/selectors/translationsSelector.js +7 -7
- package/src/updateEditor.js +1 -1
- package/src/utils/PassThrough.js +1 -1
- package/src/utils/addWrappedAddons.js +1 -1
- package/src/utils/annotationTypes.js +2 -2
- package/src/utils/combineReducersDontIgnoreKeys.js +1 -1
- package/src/utils/editorUtils.js +2 -2
- package/src/utils/massageTickSpacing.js +1 -1
- package/src/utils/onlyUpdateForKeysDeep.js +1 -1
- package/src/utils/pureNoFunc.js +1 -1
- package/src/utils/shouldRerender.js +1 -1
- package/src/utils/showFileDialog.js +6 -7
- package/src/utils/updateLabelsForInViewFeatures.js +1 -1
- package/src/utils/useAnnotationLimits.js +1 -1
- package/src/withEditorInteractions/Keyboard.js +2 -3
- package/src/withEditorInteractions/createSequenceInputPopup.js +4 -4
- package/src/withEditorInteractions/index.js +93 -55
- package/src/withEditorProps/index.js +40 -37
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@ import React, { useRef } from "react";
|
|
|
2
2
|
export function HorizontalPanelDragHandle({ onDrag }) {
|
|
3
3
|
const xStart = useRef(0);
|
|
4
4
|
|
|
5
|
-
const resize = useRef(
|
|
5
|
+
const resize = useRef(e => {
|
|
6
6
|
const dx = xStart.current - e.clientX;
|
|
7
7
|
onDrag({ dx });
|
|
8
8
|
xStart.current = e.clientX;
|
|
@@ -14,7 +14,7 @@ export function HorizontalPanelDragHandle({ onDrag }) {
|
|
|
14
14
|
|
|
15
15
|
return (
|
|
16
16
|
<div
|
|
17
|
-
onMouseDown={
|
|
17
|
+
onMouseDown={e => {
|
|
18
18
|
xStart.current = e.clientX;
|
|
19
19
|
document.addEventListener("mousemove", resize.current, false);
|
|
20
20
|
document.addEventListener("mouseup", mouseup.current, false);
|
|
@@ -23,12 +23,12 @@ export default class Minimap extends React.Component {
|
|
|
23
23
|
"scrollAlignmentView",
|
|
24
24
|
"laneHeight",
|
|
25
25
|
"laneSpacing"
|
|
26
|
-
].some(
|
|
26
|
+
].some(key => props[key] !== newProps[key])
|
|
27
27
|
)
|
|
28
28
|
return true;
|
|
29
29
|
return false;
|
|
30
30
|
}
|
|
31
|
-
handleMinimapClick =
|
|
31
|
+
handleMinimapClick = e => {
|
|
32
32
|
if (
|
|
33
33
|
this.isDragging ||
|
|
34
34
|
(e.target && e.target.classList.contains("minimapCaret"))
|
|
@@ -77,11 +77,11 @@ export default class Minimap extends React.Component {
|
|
|
77
77
|
);
|
|
78
78
|
return Math.min(width, dimensions.width);
|
|
79
79
|
};
|
|
80
|
-
getXPositionOfClickInMinimap =
|
|
80
|
+
getXPositionOfClickInMinimap = e => {
|
|
81
81
|
const leftStart = this.minimap.getBoundingClientRect().left;
|
|
82
82
|
return Math.max(getClientX(e) - leftStart, 0);
|
|
83
83
|
};
|
|
84
|
-
getYPositionOfClickInMinimap =
|
|
84
|
+
getYPositionOfClickInMinimap = e => {
|
|
85
85
|
const topStart = this.minimap.getBoundingClientRect().top;
|
|
86
86
|
return Math.max(getClientY(e) + this.minimapTracks.scrollTop - topStart, 0);
|
|
87
87
|
};
|
|
@@ -100,7 +100,7 @@ export default class Minimap extends React.Component {
|
|
|
100
100
|
return;
|
|
101
101
|
}
|
|
102
102
|
const lanes = document.querySelectorAll(".minimapLane");
|
|
103
|
-
some(lanes,
|
|
103
|
+
some(lanes, lane => {
|
|
104
104
|
const rect = lane.getBoundingClientRect();
|
|
105
105
|
if (rect.top > clientY && rect.top - rect.height < clientY) {
|
|
106
106
|
const laneI = toNumber(lane.getAttribute("data-lane-index"));
|
|
@@ -131,7 +131,7 @@ export default class Minimap extends React.Component {
|
|
|
131
131
|
* Sets this.initialDragXOffsetFromCenter and Y for dragging
|
|
132
132
|
* @param {*} e - event
|
|
133
133
|
*/
|
|
134
|
-
handleDragStart =
|
|
134
|
+
handleDragStart = e => {
|
|
135
135
|
const eventX = e.pageX;
|
|
136
136
|
const handleEl = window.document.querySelector(".verticalScrollDisplay");
|
|
137
137
|
if (!handleEl) return;
|
|
@@ -149,7 +149,7 @@ export default class Minimap extends React.Component {
|
|
|
149
149
|
* Moves the highlighted region as we drag
|
|
150
150
|
* @param {*} e - event
|
|
151
151
|
*/
|
|
152
|
-
handleDrag =
|
|
152
|
+
handleDrag = e => {
|
|
153
153
|
const {
|
|
154
154
|
onMinimapScrollX,
|
|
155
155
|
dimensions: { width = 200 }
|
|
@@ -178,7 +178,7 @@ export default class Minimap extends React.Component {
|
|
|
178
178
|
* Renders a lane (one by one for each call)
|
|
179
179
|
* @param {*} i - lane info
|
|
180
180
|
*/
|
|
181
|
-
renderItem =
|
|
181
|
+
renderItem = i => {
|
|
182
182
|
const {
|
|
183
183
|
alignmentTracks = [],
|
|
184
184
|
dimensions: { width = 200 },
|
|
@@ -193,7 +193,7 @@ export default class Minimap extends React.Component {
|
|
|
193
193
|
} = alignmentTracks[i];
|
|
194
194
|
const matchHighlightRanges = !trimmedRange
|
|
195
195
|
? _matchHighlightRanges
|
|
196
|
-
: flatMap(_matchHighlightRanges,
|
|
196
|
+
: flatMap(_matchHighlightRanges, r => {
|
|
197
197
|
const overlap = getOverlapOfNonCircularRanges(r, trimmedRange);
|
|
198
198
|
if (!overlap) return [];
|
|
199
199
|
return { ...r, ...overlap };
|
|
@@ -218,7 +218,7 @@ export default class Minimap extends React.Component {
|
|
|
218
218
|
},${y} L${lastRange.xStart + lastRange.width},${y + height} L${
|
|
219
219
|
firstRange.xStart
|
|
220
220
|
},${y + height}`;
|
|
221
|
-
matchHighlightRanges.forEach(
|
|
221
|
+
matchHighlightRanges.forEach(range => {
|
|
222
222
|
const { xStart, width } = getXStartAndWidthFromNonCircularRange(
|
|
223
223
|
range,
|
|
224
224
|
charWidth
|
|
@@ -271,7 +271,7 @@ export default class Minimap extends React.Component {
|
|
|
271
271
|
|
|
272
272
|
return (
|
|
273
273
|
<div
|
|
274
|
-
ref={
|
|
274
|
+
ref={ref => (this.minimap = ref)}
|
|
275
275
|
className="alignmentMinimap"
|
|
276
276
|
style={{
|
|
277
277
|
position: "relative",
|
|
@@ -286,7 +286,7 @@ export default class Minimap extends React.Component {
|
|
|
286
286
|
>
|
|
287
287
|
{selectionLayerComp}
|
|
288
288
|
<div
|
|
289
|
-
ref={
|
|
289
|
+
ref={ref => {
|
|
290
290
|
if (ref) {
|
|
291
291
|
this.minimapTracks = ref;
|
|
292
292
|
}
|
|
@@ -56,7 +56,7 @@ export class PairwiseAlignmentView extends React.Component {
|
|
|
56
56
|
isFullyZoomedOut: true,
|
|
57
57
|
noClickDragHandlers: true,
|
|
58
58
|
linearViewOptions: getPairwiseOverviewLinearViewOptions,
|
|
59
|
-
handleSelectTrack:
|
|
59
|
+
handleSelectTrack: trackIndex => {
|
|
60
60
|
//set currentPairwiseAlignmentIndex
|
|
61
61
|
this.setState({ currentPairwiseAlignmentIndex: trackIndex - 1 });
|
|
62
62
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export function getGapMap(sequence) {
|
|
2
2
|
const gapMap = [0]; //a map of position to how many gaps come before that position [0,0,0,5,5,5,5,17,17,17, ]
|
|
3
|
-
sequence.split("").forEach(
|
|
3
|
+
sequence.split("").forEach(char => {
|
|
4
4
|
if (char === "-") {
|
|
5
5
|
gapMap[Math.max(0, gapMap.length - 1)] =
|
|
6
6
|
(gapMap[Math.max(0, gapMap.length - 1)] || 0) + 1;
|
|
@@ -5,7 +5,7 @@ export function getTrackFromEvent(event, allTracks) {
|
|
|
5
5
|
".alignmentViewTrackContainer"
|
|
6
6
|
);
|
|
7
7
|
let track;
|
|
8
|
-
trackContainers.forEach(
|
|
8
|
+
trackContainers.forEach(t => {
|
|
9
9
|
const mouseX = getClientX(event) + document.body.scrollLeft;
|
|
10
10
|
const mouseY = getClientY(event) + document.body.scrollTop;
|
|
11
11
|
if (
|
|
@@ -19,12 +19,7 @@ import {
|
|
|
19
19
|
AnchorButton,
|
|
20
20
|
EditableText
|
|
21
21
|
} from "@blueprintjs/core";
|
|
22
|
-
import {
|
|
23
|
-
InfoHelper,
|
|
24
|
-
Loading,
|
|
25
|
-
showContextMenu,
|
|
26
|
-
withStore
|
|
27
|
-
} from "@teselagen/ui";
|
|
22
|
+
import { InfoHelper, Loading, showContextMenu, withStore } from "@teselagen/ui";
|
|
28
23
|
import { store } from "@risingstack/react-easy-state";
|
|
29
24
|
import {
|
|
30
25
|
throttle,
|
|
@@ -180,7 +175,7 @@ export class AlignmentView extends React.Component {
|
|
|
180
175
|
this.onShortcutCopy &&
|
|
181
176
|
document.removeEventListener("keydown", this.handleAlignmentCopy);
|
|
182
177
|
}
|
|
183
|
-
handleAlignmentCopy =
|
|
178
|
+
handleAlignmentCopy = event => {
|
|
184
179
|
if (
|
|
185
180
|
event.key === "c" &&
|
|
186
181
|
!event.shiftKey &&
|
|
@@ -208,7 +203,7 @@ export class AlignmentView extends React.Component {
|
|
|
208
203
|
].selectionLayer || {};
|
|
209
204
|
const { alignmentTracks } = this.props;
|
|
210
205
|
const seqDataOfAllTracksToCopy = [];
|
|
211
|
-
alignmentTracks.forEach(
|
|
206
|
+
alignmentTracks.forEach(track => {
|
|
212
207
|
const seqDataToCopy = getSequenceDataBetweenRange(
|
|
213
208
|
track.alignmentData,
|
|
214
209
|
selectionLayer
|
|
@@ -235,7 +230,7 @@ export class AlignmentView extends React.Component {
|
|
|
235
230
|
verticalVisibleRange: { start: 0, end: 0 }
|
|
236
231
|
});
|
|
237
232
|
|
|
238
|
-
getMinCharWidth =
|
|
233
|
+
getMinCharWidth = noNameDiv => {
|
|
239
234
|
const toReturn = Math.min(
|
|
240
235
|
Math.max(
|
|
241
236
|
this.state.width - (noNameDiv ? 0 : this.state.nameDivWidth) - 5,
|
|
@@ -286,7 +281,7 @@ export class AlignmentView extends React.Component {
|
|
|
286
281
|
}
|
|
287
282
|
}
|
|
288
283
|
componentDidMount() {
|
|
289
|
-
const updateAlignmentSelection =
|
|
284
|
+
const updateAlignmentSelection = newRangeOrCaret => {
|
|
290
285
|
this.updateSelectionOrCaret(false, newRangeOrCaret, {
|
|
291
286
|
forceReduxUpdate: true
|
|
292
287
|
});
|
|
@@ -338,7 +333,7 @@ export class AlignmentView extends React.Component {
|
|
|
338
333
|
});
|
|
339
334
|
};
|
|
340
335
|
|
|
341
|
-
caretPositionUpdate =
|
|
336
|
+
caretPositionUpdate = position => {
|
|
342
337
|
const { caretPosition = -1, alignmentId } = this.props;
|
|
343
338
|
if (caretPosition === position) {
|
|
344
339
|
return;
|
|
@@ -354,7 +349,7 @@ export class AlignmentView extends React.Component {
|
|
|
354
349
|
|
|
355
350
|
debouncedAlignmentRunUpdate = debounce(this.props.alignmentRunUpdate, 1000);
|
|
356
351
|
|
|
357
|
-
forceReduxSelectionLayerUpdate =
|
|
352
|
+
forceReduxSelectionLayerUpdate = newSelection => {
|
|
358
353
|
this.selectionLayerUpdate(newSelection, { forceReduxUpdate: true });
|
|
359
354
|
};
|
|
360
355
|
|
|
@@ -486,7 +481,7 @@ export class AlignmentView extends React.Component {
|
|
|
486
481
|
el.scrollIntoView({ inline: "center", block: "nearest" });
|
|
487
482
|
};
|
|
488
483
|
|
|
489
|
-
scrollAlignmentToPercent =
|
|
484
|
+
scrollAlignmentToPercent = scrollPercentage => {
|
|
490
485
|
const scrollPercentageToUse = Math.min(Math.max(scrollPercentage, 0), 1);
|
|
491
486
|
this.easyStore.percentScrolled = scrollPercentageToUse;
|
|
492
487
|
this.alignmentHolder.scrollLeft =
|
|
@@ -499,7 +494,7 @@ export class AlignmentView extends React.Component {
|
|
|
499
494
|
this.alignmentHolderTop.clientWidth);
|
|
500
495
|
}
|
|
501
496
|
};
|
|
502
|
-
scrollYToTrack =
|
|
497
|
+
scrollYToTrack = trackIndex => {
|
|
503
498
|
this.InfiniteScroller.scrollTo(trackIndex);
|
|
504
499
|
};
|
|
505
500
|
|
|
@@ -524,7 +519,7 @@ export class AlignmentView extends React.Component {
|
|
|
524
519
|
getMaxLinearViewWidth = () => {
|
|
525
520
|
let maxWidth = 0;
|
|
526
521
|
const charWidthInLinearView = this.getCharWidthInLinearView();
|
|
527
|
-
forEach(this.props.alignmentTracks,
|
|
522
|
+
forEach(this.props.alignmentTracks, t => {
|
|
528
523
|
const w = (t.alignmentData || t.sequenceData).sequence.length;
|
|
529
524
|
if (w > maxWidth) maxWidth = w;
|
|
530
525
|
});
|
|
@@ -699,8 +694,8 @@ export class AlignmentView extends React.Component {
|
|
|
699
694
|
this.state[`tempTrimBefore${i}`] || trimmedRangesToDisplay[0],
|
|
700
695
|
this.state[`tempTrimAfter${i}`] || trimmedRangesToDisplay[1]
|
|
701
696
|
]
|
|
702
|
-
.filter(
|
|
703
|
-
.map(
|
|
697
|
+
.filter(i => i)
|
|
698
|
+
.map(i => ({
|
|
704
699
|
...i,
|
|
705
700
|
hideCarets: true,
|
|
706
701
|
ignoreGaps: true,
|
|
@@ -978,7 +973,7 @@ export class AlignmentView extends React.Component {
|
|
|
978
973
|
if (!minimapLaneEl) return;
|
|
979
974
|
minimapLaneEl.classList.remove("lane-hovered");
|
|
980
975
|
};
|
|
981
|
-
updateMinimapHighlightForMouseMove =
|
|
976
|
+
updateMinimapHighlightForMouseMove = event => {
|
|
982
977
|
this.latestMouseY = getClientY(event); //we use this variable later
|
|
983
978
|
this.updateMinimapHighlight();
|
|
984
979
|
};
|
|
@@ -988,7 +983,7 @@ export class AlignmentView extends React.Component {
|
|
|
988
983
|
if (rowsLength <= 4) {
|
|
989
984
|
return; // no need to include this functionality here
|
|
990
985
|
}
|
|
991
|
-
some(rows,
|
|
986
|
+
some(rows, rowDomNode => {
|
|
992
987
|
const boundingRowRect = rowDomNode.getBoundingClientRect();
|
|
993
988
|
if (
|
|
994
989
|
this.latestMouseY > boundingRowRect.top &&
|
|
@@ -1083,11 +1078,11 @@ export class AlignmentView extends React.Component {
|
|
|
1083
1078
|
overflowX: "auto",
|
|
1084
1079
|
width: this.state.width
|
|
1085
1080
|
}}
|
|
1086
|
-
ref={
|
|
1081
|
+
ref={ref => {
|
|
1087
1082
|
this[isTemplate ? "alignmentHolderTop" : "alignmentHolder"] =
|
|
1088
1083
|
ref;
|
|
1089
1084
|
}}
|
|
1090
|
-
onContextMenu={
|
|
1085
|
+
onContextMenu={e => {
|
|
1091
1086
|
if (
|
|
1092
1087
|
!allowTrimming ||
|
|
1093
1088
|
isTargetWithinEl(e, ".alignmentTrackName")
|
|
@@ -1115,7 +1110,7 @@ export class AlignmentView extends React.Component {
|
|
|
1115
1110
|
onDrag={
|
|
1116
1111
|
noClickDragHandlers
|
|
1117
1112
|
? noop
|
|
1118
|
-
:
|
|
1113
|
+
: event => {
|
|
1119
1114
|
if (this.state.isTrackDragging) return;
|
|
1120
1115
|
this.getNearestCursorPositionToMouseEvent(
|
|
1121
1116
|
rowData,
|
|
@@ -1127,7 +1122,7 @@ export class AlignmentView extends React.Component {
|
|
|
1127
1122
|
onStart={
|
|
1128
1123
|
noClickDragHandlers
|
|
1129
1124
|
? noop
|
|
1130
|
-
:
|
|
1125
|
+
: event => {
|
|
1131
1126
|
if (isTargetWithinEl(event, ".alignmentTrackName")) {
|
|
1132
1127
|
return this.setState({ isTrackDragging: true });
|
|
1133
1128
|
}
|
|
@@ -1151,7 +1146,7 @@ export class AlignmentView extends React.Component {
|
|
|
1151
1146
|
}
|
|
1152
1147
|
>
|
|
1153
1148
|
<div
|
|
1154
|
-
ref={
|
|
1149
|
+
ref={ref => (this.veTracksAndAlignmentHolder = ref)}
|
|
1155
1150
|
className={classNames("veTracksAndAlignmentHolder", {
|
|
1156
1151
|
isTrackDragging: this.state.isTrackDragging
|
|
1157
1152
|
})}
|
|
@@ -1169,7 +1164,7 @@ export class AlignmentView extends React.Component {
|
|
|
1169
1164
|
onClick={
|
|
1170
1165
|
noClickDragHandlers
|
|
1171
1166
|
? noop
|
|
1172
|
-
:
|
|
1167
|
+
: event => {
|
|
1173
1168
|
if (this.state.isTrackDragging) return;
|
|
1174
1169
|
if (isTargetWithinEl(event, ".alignmentTrackName")) {
|
|
1175
1170
|
return;
|
|
@@ -1330,7 +1325,7 @@ export class AlignmentView extends React.Component {
|
|
|
1330
1325
|
this.renderItem(0, 0, isTemplate)
|
|
1331
1326
|
) : (
|
|
1332
1327
|
<ReactList
|
|
1333
|
-
ref={
|
|
1328
|
+
ref={c => {
|
|
1334
1329
|
this.InfiniteScroller = c;
|
|
1335
1330
|
const domNode = ReactDOM.findDOMNode(c);
|
|
1336
1331
|
if (domNode instanceof HTMLElement) {
|
|
@@ -1476,14 +1471,14 @@ export class AlignmentView extends React.Component {
|
|
|
1476
1471
|
<div style={{ display: "flex" }}>
|
|
1477
1472
|
<EditableText
|
|
1478
1473
|
disabled={!handleAlignmentRename}
|
|
1479
|
-
onChange={
|
|
1474
|
+
onChange={v => {
|
|
1480
1475
|
this.setState({
|
|
1481
1476
|
alignmentName: v
|
|
1482
1477
|
});
|
|
1483
1478
|
}}
|
|
1484
1479
|
maxLength={399} //stop the name from being tooo long
|
|
1485
1480
|
value={this.state.alignmentName}
|
|
1486
|
-
onConfirm={async
|
|
1481
|
+
onConfirm={async v => {
|
|
1487
1482
|
if (!v) {
|
|
1488
1483
|
this.setState({
|
|
1489
1484
|
alignmentName: this.props.alignmentName
|
|
@@ -1552,7 +1547,7 @@ export class AlignmentView extends React.Component {
|
|
|
1552
1547
|
setTimeout(this.scrollToCaret, 0);
|
|
1553
1548
|
}}
|
|
1554
1549
|
minCharWidth={this.getMinCharWidth()}
|
|
1555
|
-
onChange={async
|
|
1550
|
+
onChange={async zoomLvl => {
|
|
1556
1551
|
this.isZooming = true;
|
|
1557
1552
|
setTimeout(() => {
|
|
1558
1553
|
this.isZooming = false;
|
|
@@ -1924,7 +1919,7 @@ export default compose(
|
|
|
1924
1919
|
"compactNames"
|
|
1925
1920
|
];
|
|
1926
1921
|
const togglableAlignmentAnnotationSettings = {};
|
|
1927
|
-
map(alignmentAnnotationsToToggle,
|
|
1922
|
+
map(alignmentAnnotationsToToggle, annotation => {
|
|
1928
1923
|
if (annotation in alignmentAnnotationVisibility) {
|
|
1929
1924
|
togglableAlignmentAnnotationSettings[annotation] =
|
|
1930
1925
|
alignmentAnnotationVisibility[annotation];
|
|
@@ -1935,7 +1930,7 @@ export default compose(
|
|
|
1935
1930
|
if (alignmentTracks) {
|
|
1936
1931
|
let totalNumOfFeatures = 0;
|
|
1937
1932
|
let totalNumOfParts = 0;
|
|
1938
|
-
alignmentTracks.forEach(
|
|
1933
|
+
alignmentTracks.forEach(seq => {
|
|
1939
1934
|
if (seq.sequenceData.features) {
|
|
1940
1935
|
totalNumOfFeatures += seq.sequenceData.features.length;
|
|
1941
1936
|
}
|
|
@@ -1948,10 +1943,10 @@ export default compose(
|
|
|
1948
1943
|
parts: totalNumOfParts
|
|
1949
1944
|
});
|
|
1950
1945
|
} else if (pairwiseAlignments) {
|
|
1951
|
-
pairwiseAlignments.forEach(
|
|
1946
|
+
pairwiseAlignments.forEach(pairwise => {
|
|
1952
1947
|
let totalNumOfFeatures = 0;
|
|
1953
1948
|
let totalNumOfParts = 0;
|
|
1954
|
-
pairwise.forEach(
|
|
1949
|
+
pairwise.forEach(seq => {
|
|
1955
1950
|
if (seq.sequenceData.features) {
|
|
1956
1951
|
totalNumOfFeatures += seq.sequenceData.features.length;
|
|
1957
1952
|
}
|
|
@@ -1988,7 +1983,7 @@ export default compose(
|
|
|
1988
1983
|
alignmentVisibilityToolOptions: {
|
|
1989
1984
|
alignmentAnnotationVisibility,
|
|
1990
1985
|
alignmentAnnotationLabelVisibility,
|
|
1991
|
-
alignmentAnnotationVisibilityToggle:
|
|
1986
|
+
alignmentAnnotationVisibilityToggle: updates => {
|
|
1992
1987
|
setTimeout(() => {
|
|
1993
1988
|
updateLabelsForInViewFeatures({
|
|
1994
1989
|
rectElement: ".alignmentHolder"
|
|
@@ -2003,7 +1998,7 @@ export default compose(
|
|
|
2003
1998
|
}
|
|
2004
1999
|
});
|
|
2005
2000
|
},
|
|
2006
|
-
alignmentAnnotationLabelVisibilityToggle:
|
|
2001
|
+
alignmentAnnotationLabelVisibilityToggle: name => {
|
|
2007
2002
|
updateAlignmentViewVisibility({
|
|
2008
2003
|
...alignment,
|
|
2009
2004
|
alignmentAnnotationLabelVisibility: {
|
|
@@ -2037,7 +2032,7 @@ export default compose(
|
|
|
2037
2032
|
),
|
|
2038
2033
|
branch(
|
|
2039
2034
|
({ pairwiseAlignments }) => pairwiseAlignments,
|
|
2040
|
-
renderComponent(
|
|
2035
|
+
renderComponent(props => {
|
|
2041
2036
|
return <PairwiseAlignmentView {...props} />;
|
|
2042
2037
|
})
|
|
2043
2038
|
)
|
|
@@ -2048,7 +2043,7 @@ const PerformantCaret = view(({ easyStore, ...rest }) => {
|
|
|
2048
2043
|
});
|
|
2049
2044
|
|
|
2050
2045
|
function cleanTracks(alignmentTracks) {
|
|
2051
|
-
return alignmentTracks.map(
|
|
2046
|
+
return alignmentTracks.map(t => {
|
|
2052
2047
|
return omit(t, [
|
|
2053
2048
|
"matchHighlightRanges",
|
|
2054
2049
|
"additionalSelectionLayers",
|