@teselagen/ove 0.7.28 → 0.7.30-beta.1
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/CreateAnnotationsPage.d.ts +4 -3
- package/README.md +1 -1
- package/fileUtils.d.ts +12 -0
- package/html2canvas.esm--JN4fLQL.js +7891 -0
- package/html2canvas.esm-B7d7VJmQ.cjs +7891 -0
- package/index.cjs.js +1305 -1121
- package/index.es.js +1305 -1121
- package/index.umd.js +189161 -0
- package/ove.css +17 -4
- package/package.json +5 -9
- package/redux/findTool.d.ts +1 -0
- package/selectors/searchLayersSelector.d.ts +1 -1
- package/src/AutoAnnotate.js +1 -1
- package/src/CreateAnnotationsPage.js +1 -2
- package/src/Editor/style.css +8 -3
- package/src/FindBar/index.js +32 -1
- package/src/RowItem/SelectionLayer/index.js +42 -4
- package/src/RowItem/SelectionLayer/style.css +8 -0
- package/src/fileUtils.js +103 -0
- package/src/helperComponents/PropertiesDialog/TranslationProperties.js +1 -1
- package/src/redux/findTool.js +9 -0
- package/src/selectors/searchLayersSelector.js +40 -2
- package/style.css +12098 -1
- package/AASliver.js +0 -187
- package/AddLaddersDialog.js +0 -82
- package/AdditionalCutsiteInfoDialog.js +0 -599
- package/AlignmentVisibilityTool.js +0 -105
- package/AnnotationContainerHolder.js +0 -20
- package/AnnotationPositioner.js +0 -27
- package/AutoAnnotate.js +0 -501
- package/AutoAnnotateBpMatchingDialog.js +0 -208
- package/Axis.js +0 -151
- package/AxisNumbers.js +0 -35
- package/Browser.js +0 -106
- package/Caret.js +0 -63
- package/Chromatogram.js +0 -293
- package/CircularDnaSequence.js +0 -73
- package/CircularZoomMinimap.js +0 -16
- package/ColorPicker.js +0 -30
- package/CommandHotkeyHandler.js +0 -44
- package/CreateAnnotationsPage.js +0 -98
- package/Cutsite.js +0 -18
- package/CutsiteProperties.js +0 -176
- package/CutsiteSelectionLayers.js +0 -47
- package/Cutsites.js +0 -271
- package/DeletionLayer.js +0 -28
- package/DropHandler.css +0 -21
- package/DropHandler.js +0 -64
- package/EditCaretPosition.js +0 -234
- package/EditTrackNameDialog.js +0 -30
- package/Feature.js +0 -83
- package/FeatureProperties.js +0 -6
- package/FillWindow.js +0 -47
- package/GenbankView.js +0 -74
- package/GeneralProperties.js +0 -117
- package/GenericAnnotationProperties.js +0 -406
- package/GlobalDialog.js +0 -73
- package/GlobalDialogUtils.js +0 -110
- package/GoToDialog.js +0 -25
- package/HorizontalPanelDragHandle.js +0 -35
- package/Keyboard.js +0 -85
- package/Labels.js +0 -327
- package/Ladder.css +0 -20
- package/Ladder.js +0 -303
- package/MeltingTemp.js +0 -85
- package/Menlo.ttf +0 -0
- package/Minimap.js +0 -515
- package/Mismatches.js +0 -134
- package/Monaco.ttf +0 -0
- package/MultipleSeqsDetectedOnImportDialog.js +0 -74
- package/Orf.js +0 -109
- package/OrfProperties.js +0 -117
- package/Orfs.js +0 -35
- package/PCRTool.js +0 -179
- package/PairwiseAlignmentView.js +0 -68
- package/Part.js +0 -34
- package/PartProperties.js +0 -9
- package/PassThrough.js +0 -3
- package/PerformantSelectionLayer.js +0 -32
- package/PinchHelper.js +0 -24
- package/PointedAnnotation.js +0 -347
- package/PositionAnnotationOnCircle.js +0 -26
- package/Primer.js +0 -41
- package/PrimerProperties.js +0 -19
- package/ReflexContainer.js +0 -802
- package/ReflexElement.js +0 -160
- package/ReflexEvents.js +0 -77
- package/ReflexSplitter.js +0 -205
- package/RenameSequenceDialog.js +0 -7
- package/RotateCircularViewSlider.js +0 -93
- package/SelectDialog.js +0 -150
- package/SequenceName.js +0 -15
- package/SimpleCircularOrLinearView.js +0 -381
- package/SimpleOligoPreview.js +0 -39
- package/SingleEnzymeCutsiteInfo.js +0 -139
- package/ToolbarItem.js +0 -192
- package/Translation.js +0 -198
- package/TranslationProperties.js +0 -149
- package/UncontrolledSliderWithPlusMinusBtns.css +0 -5
- package/UncontrolledSliderWithPlusMinusBtns.js +0 -134
- package/VeTopRightContainer.js +0 -12
- package/ZoomCircularViewSlider.js +0 -62
- package/ZoomLinearView.js +0 -47
- package/addAlignment.js +0 -6
- package/addMetaToActionCreators.js +0 -12
- package/addWrappedAddons.js +0 -20
- package/alignmentTool.js +0 -503
- package/alignments.js +0 -379
- package/annotationLabelVisibility.js +0 -2
- package/annotationSearchSelector.js +0 -24
- package/annotationTypes.js +0 -35
- package/annotationVisibility.js +0 -196
- package/annotationsToSupport.js +0 -104
- package/arrayToObjWithIds.js +0 -17
- package/arrayUtils.js +0 -19
- package/array_move.js +0 -10
- package/calculateTickMarkPositionsForGivenRange.js +0 -47
- package/caretPosition.js +0 -27
- package/cdsFeaturesSelector.js +0 -9
- package/charWidth.js +0 -22
- package/circular.js +0 -19
- package/circularSelector.js +0 -4
- package/clickAndDragUtils.js +0 -576
- package/coerceInitialValue.js +0 -7
- package/combineReducersDontIgnoreKeys.js +0 -12
- package/commandUtils.js +0 -20
- package/constants.js +0 -2
- package/copyOptions.js +0 -34
- package/createFragmentLines.js +0 -120
- package/createMergedDefaultStateReducer.js +0 -30
- package/createMetaAction.js +0 -12
- package/createSequenceInputPopup.js +0 -290
- package/createSequenceInputPopupStyle.css +0 -87
- package/createSimpleDialog.js +0 -89
- package/createYourOwnEnzyme.js +0 -39
- package/cutsiteLabelColorSelector.js +0 -6
- package/cutsiteTool.js +0 -88
- package/cutsitesByRangeSelector.js +0 -5
- package/cutsitesSelector.js +0 -61
- package/darkmode.css +0 -98
- package/defaultConfig.js +0 -150
- package/deletionLayers.js +0 -36
- package/description.js +0 -21
- package/digestTool.js +0 -34
- package/dnaToColor.js +0 -17
- package/downloadTool.js +0 -39
- package/draggableClassnames.js +0 -5
- package/drawAnnotations.js +0 -440
- package/drawDirectedPiePiece.js +0 -142
- package/editTool.js +0 -49
- package/editorSelector.js +0 -2
- package/editorUtils.js +0 -205
- package/estimateRowHeight.js +0 -184
- package/featureLengthsToHide.js +0 -27
- package/featureTool.js +0 -34
- package/features.js +0 -19
- package/featuresSelector.js +0 -8
- package/filteredCutsitesSelector.js +0 -136
- package/filteredFeaturesSelector.js +0 -32
- package/filteredPartsSelector.js +0 -57
- package/filteredPrimersSelector.js +0 -27
- package/filteredRestrictionEnzymesSelector.js +0 -1
- package/find.png +0 -0
- package/findTool.js +0 -79
- package/findToolConstants.js +0 -1
- package/frameTranslations.js +0 -52
- package/fullscreen.png +0 -0
- package/getAdditionalEnzymesSelector.js +0 -46
- package/getAngleForPositionMidpoint.js +0 -3
- package/getAnnotationClassnames.js +0 -12
- package/getAnnotationNameAndStartStopString.js +0 -61
- package/getBpsPerRow.js +0 -19
- package/getCutsiteLabelHeights.js +0 -56
- package/getGapMap.js +0 -12
- package/getGaps.js +0 -27
- package/getInternalLabel.js +0 -40
- package/getOveHotkeyDefs.js +0 -12
- package/getPairwiseOverviewLinearViewOptions.js +0 -38
- package/getRangeAnglesSpecial.js +0 -12
- package/getStructuredBases.js +0 -97
- package/getTrackFromEvent.js +0 -25
- package/getVisibleStartEnd.js +0 -7
- package/getXStartAndWidthFromNonCircularRange.js +0 -12
- package/getXStartAndWidthOfRangeWrtRow.js +0 -27
- package/getXStartAndWidthOfRowAnnotation.js +0 -19
- package/getYOffset.js +0 -15
- package/hoveredAnnotation.js +0 -24
- package/importTool.js +0 -27
- package/index.js +0 -71
- package/inlineFindTool.js +0 -38
- package/isElementInViewport.js +0 -29
- package/isEnzymeFilterAndSelector.js +0 -1
- package/isTargetWithinEl.js +0 -6
- package/labelLineIntensity.js +0 -25
- package/labelSize.js +0 -23
- package/ladderDefaults.js +0 -25
- package/lastSavedId.js +0 -20
- package/lineageLines.js +0 -11
- package/linear.png +0 -0
- package/makeStore.js +0 -34
- package/massageTickSpacing.js +0 -19
- package/materiallyAvailable.js +0 -19
- package/middleware.js +0 -112
- package/minimumOrfSize.js +0 -24
- package/minimumOrfSizeSelector.js +0 -2
- package/modalActions.js +0 -3
- package/moveCaret.js +0 -58
- package/name.js +0 -19
- package/normalizeAngle.js +0 -3
- package/normalizeAngleRange.js +0 -9
- package/oligoTool.js +0 -30
- package/onlyUpdateForKeysDeep.js +0 -31
- package/orfFrameToColorMap.js +0 -10
- package/orfTool.js +0 -136
- package/orfsSelector.js +0 -15
- package/panelsShown.js +0 -294
- package/partLengthsToHide.js +0 -23
- package/partOverhangs.js +0 -6
- package/partTagSearch.js +0 -69
- package/partTool.js +0 -45
- package/parts.js +0 -19
- package/partsSelector.js +0 -8
- package/pie.png +0 -0
- package/polarToSpecialCartesian.js +0 -7
- package/positionCutsites.js +0 -6
- package/prepareRowData.js +0 -64
- package/primerBases.js +0 -221
- package/primerLengthsToHide.js +0 -27
- package/primers.js +0 -19
- package/primersSelector.js +0 -8
- package/print.png +0 -0
- package/printTool.js +0 -31
- package/propertiesTool.js +0 -40
- package/proteinUtils.js +0 -3
- package/pureNoFunc.js +0 -18
- package/readOnly.js +0 -25
- package/redoTool.js +0 -30
- package/reflex-styles.css +0 -128
- package/reflex-styles.css.map +0 -9
- package/relaxLabelAngles.js +0 -157
- package/relaxLabels_DEPRECATED.js +0 -105
- package/replacementLayers.js +0 -36
- package/restrictionEnzymes.js +0 -52
- package/restrictionEnzymesSelector.js +0 -34
- package/rowviewContants.js +0 -3
- package/ruler.css +0 -89
- package/save.png +0 -0
- package/saveTool.js +0 -44
- package/searchLayersSelector.js +0 -71
- package/selectedAnnotations.js +0 -89
- package/selectedAnnotationsSelector.js +0 -1
- package/selectedCutsitesSelector.js +0 -21
- package/selectedPartTags.js +0 -21
- package/selectionLayer.js +0 -25
- package/sequence.js +0 -12
- package/sequenceDataHistory.js +0 -43
- package/sequenceDataSelector.js +0 -2
- package/sequenceLengthSelector.js +0 -5
- package/sequenceSelector.js +0 -4
- package/sharedActionCreators.js +0 -0
- package/shouldFlipText.js +0 -4
- package/shouldRerender.js +0 -27
- package/showFileDialog.js +0 -25
- package/showGCContent.js +0 -23
- package/show_cut_sites.png +0 -0
- package/show_features.png +0 -0
- package/show_orfs.png +0 -0
- package/show_primers.png +0 -0
- package/simpleDialog.css +0 -13
- package/specialCutsiteFilterOptions.js +0 -22
- package/tagsToBoldSelector.js +0 -2
- package/toggle_views.svg +0 -1
- package/toolBar.js +0 -23
- package/translationSearchMatchesSelector.js +0 -14
- package/translations.js +0 -20
- package/translationsRawSelector.js +0 -8
- package/translationsSelector.js +0 -137
- package/typeField.js +0 -24
- package/undoTool.js +0 -30
- package/updateEditor.js +0 -200
- package/updateLabelsForInViewFeatures.js +0 -55
- package/updateLabelsForInViewFeaturesCircView.js +0 -41
- package/updateTrackHelper.js +0 -58
- package/uppercaseSequenceMapFont.js +0 -25
- package/upsertDeleteActionGenerator.js +0 -31
- package/useAAColorType.js +0 -8
- package/useAdditionalOrfStartCodons.js +0 -24
- package/useAnnotationLimits.js +0 -42
- package/useChromatogramPrefs.js +0 -31
- package/useFormValue.js +0 -7
- package/useLadders.js +0 -6
- package/useMeltingTemp.js +0 -7
- package/useTmType.js +0 -10
- package/userDefinedHandlersAndOpts.js +0 -61
- package/utils.js +0 -37
- package/versionHistory.js +0 -26
- package/versionHistoryTool.js +0 -21
- package/viewSubmenu.js +0 -479
- package/visibilityTool.js +0 -39
- package/withHover.js +0 -113
- package/withRestrictionEnzymes.js +0 -15
package/searchLayersSelector.js
DELETED
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import { findSequenceMatches } from "@teselagen/sequence-utils";
|
|
2
|
-
import sequenceSelector from "./sequenceSelector";
|
|
3
|
-
import { createSelector } from "reselect";
|
|
4
|
-
import circularSelector from "./circularSelector";
|
|
5
|
-
|
|
6
|
-
function searchLayersSelector(
|
|
7
|
-
sequence,
|
|
8
|
-
isCircular,
|
|
9
|
-
isOpen,
|
|
10
|
-
searchString,
|
|
11
|
-
ambiguousOrLiteral,
|
|
12
|
-
dnaOrAA,
|
|
13
|
-
isProtein,
|
|
14
|
-
proteinSequence
|
|
15
|
-
) {
|
|
16
|
-
if (!searchString || !isOpen) {
|
|
17
|
-
return [];
|
|
18
|
-
}
|
|
19
|
-
if (isProtein) {
|
|
20
|
-
const searchingDna = dnaOrAA === "DNA";
|
|
21
|
-
const matches = findSequenceMatches(
|
|
22
|
-
searchingDna ? sequence : proteinSequence,
|
|
23
|
-
searchString,
|
|
24
|
-
{
|
|
25
|
-
isCircular: false,
|
|
26
|
-
isProteinSequence: true,
|
|
27
|
-
isAmbiguous: ambiguousOrLiteral === "AMBIGUOUS",
|
|
28
|
-
// isProteinSearch: dnaOrAA !== "DNA",
|
|
29
|
-
searchReverseStrand: false
|
|
30
|
-
}
|
|
31
|
-
).sort(({ start }, { start: start2 }) => {
|
|
32
|
-
return start - start2;
|
|
33
|
-
});
|
|
34
|
-
return searchingDna
|
|
35
|
-
? matches
|
|
36
|
-
: matches.map(({ start, end, ...rest }) => ({
|
|
37
|
-
...rest,
|
|
38
|
-
isSearchLayer: true,
|
|
39
|
-
start: start * 3,
|
|
40
|
-
end: end * 3 + 2
|
|
41
|
-
}));
|
|
42
|
-
}
|
|
43
|
-
const matches = findSequenceMatches(sequence, searchString, {
|
|
44
|
-
isCircular,
|
|
45
|
-
isAmbiguous: ambiguousOrLiteral === "AMBIGUOUS",
|
|
46
|
-
isProteinSearch: dnaOrAA !== "DNA",
|
|
47
|
-
searchReverseStrand: true
|
|
48
|
-
}).sort(({ start }, { start: start2 }) => {
|
|
49
|
-
return start - start2;
|
|
50
|
-
});
|
|
51
|
-
return matches.map(match => ({
|
|
52
|
-
...match,
|
|
53
|
-
forward: !match.bottomStrand,
|
|
54
|
-
className:
|
|
55
|
-
"veSearchLayer " +
|
|
56
|
-
(match.bottomStrand ? " veSearchLayerBottomStrand" : ""),
|
|
57
|
-
isSearchLayer: true
|
|
58
|
-
}));
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
export default createSelector(
|
|
62
|
-
sequenceSelector,
|
|
63
|
-
circularSelector,
|
|
64
|
-
state => state.findTool && state.findTool.isOpen,
|
|
65
|
-
state => state.findTool && state.findTool.searchText,
|
|
66
|
-
state => state.findTool && state.findTool.ambiguousOrLiteral,
|
|
67
|
-
state => state.findTool && state.findTool.dnaOrAA,
|
|
68
|
-
state => state.sequenceData.isProtein,
|
|
69
|
-
state => state.sequenceData.proteinSequence,
|
|
70
|
-
searchLayersSelector
|
|
71
|
-
);
|
package/selectedAnnotations.js
DELETED
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
import { showContextMenu } from "@teselagen/ui";
|
|
2
|
-
import without from "lodash/without";
|
|
3
|
-
import { createReducer } from "redux-act";
|
|
4
|
-
import createAction from "./utils/createMetaAction";
|
|
5
|
-
|
|
6
|
-
// ------------------------------------
|
|
7
|
-
// Actions
|
|
8
|
-
// ------------------------------------
|
|
9
|
-
export const annotationSelect = createAction("VE_ANNOTATION_SELECT");
|
|
10
|
-
export const updateSelectedAnnotation = createAction(
|
|
11
|
-
"VE_ANNOTATION_UPDATE_SELECTED"
|
|
12
|
-
);
|
|
13
|
-
export const annotationDeselect = createAction("VE_ANNOTATION_DESELECT");
|
|
14
|
-
export const annotationDeselectAll = createAction("VE_ANNOTATION_DESELECT_ALL");
|
|
15
|
-
|
|
16
|
-
export function replacementLayerRightClicked({ event, annotation }, meta) {
|
|
17
|
-
event.preventDefault();
|
|
18
|
-
event.stopPropagation();
|
|
19
|
-
return function (dispatch /* getState */) {
|
|
20
|
-
const items = [
|
|
21
|
-
{
|
|
22
|
-
text: "Remove Edit",
|
|
23
|
-
onClick: function () {
|
|
24
|
-
dispatch({
|
|
25
|
-
type: "REPLACEMENT_LAYER_DELETE",
|
|
26
|
-
meta,
|
|
27
|
-
payload: { ...annotation }
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
];
|
|
32
|
-
|
|
33
|
-
showContextMenu(items, undefined, event);
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
// ------------------------------------
|
|
38
|
-
// Reducer
|
|
39
|
-
// ------------------------------------
|
|
40
|
-
const startingState = {
|
|
41
|
-
idMap: {},
|
|
42
|
-
idStack: []
|
|
43
|
-
};
|
|
44
|
-
export default createReducer(
|
|
45
|
-
{
|
|
46
|
-
[annotationSelect]: (state, payload) => {
|
|
47
|
-
if (!payload.id) throw new Error("Annotation must have an id!");
|
|
48
|
-
const newState = {
|
|
49
|
-
idMap: {
|
|
50
|
-
...state.idMap,
|
|
51
|
-
[payload.id]: payload
|
|
52
|
-
},
|
|
53
|
-
idStack: [...state.idStack, payload.id]
|
|
54
|
-
};
|
|
55
|
-
return newState;
|
|
56
|
-
},
|
|
57
|
-
[annotationDeselect]: (state, payload) => {
|
|
58
|
-
const id = payload.id || payload;
|
|
59
|
-
const idMap = { ...state.idMap };
|
|
60
|
-
delete idMap[id];
|
|
61
|
-
const idStack = without(state.idStack, id);
|
|
62
|
-
return {
|
|
63
|
-
idMap,
|
|
64
|
-
idStack
|
|
65
|
-
};
|
|
66
|
-
},
|
|
67
|
-
[updateSelectedAnnotation]: (state, payload) => {
|
|
68
|
-
const id = payload.id;
|
|
69
|
-
const idMap = { ...state.idMap };
|
|
70
|
-
if (!idMap[id]) {
|
|
71
|
-
return state;
|
|
72
|
-
}
|
|
73
|
-
return {
|
|
74
|
-
idMap: {
|
|
75
|
-
...idMap,
|
|
76
|
-
[id]: {
|
|
77
|
-
...idMap[id],
|
|
78
|
-
...payload
|
|
79
|
-
}
|
|
80
|
-
},
|
|
81
|
-
idStack: state.idStack
|
|
82
|
-
};
|
|
83
|
-
},
|
|
84
|
-
[annotationDeselectAll]: () => {
|
|
85
|
-
return startingState;
|
|
86
|
-
}
|
|
87
|
-
},
|
|
88
|
-
startingState
|
|
89
|
-
);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export default state => state.selectedAnnotations;
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { createSelector } from "reselect";
|
|
2
|
-
import selectedAnnotationsSelector from "./selectedAnnotationsSelector";
|
|
3
|
-
|
|
4
|
-
export default createSelector(
|
|
5
|
-
selectedAnnotationsSelector,
|
|
6
|
-
function (selectedAnnotations) {
|
|
7
|
-
const { idStack, idMap } = selectedAnnotations;
|
|
8
|
-
const cutsiteIdMap = {};
|
|
9
|
-
const cutsiteIdStack = idStack.filter(function (id) {
|
|
10
|
-
if (idMap[id].annotationType === "cutsite") {
|
|
11
|
-
cutsiteIdMap[id] = idMap[id];
|
|
12
|
-
return true;
|
|
13
|
-
}
|
|
14
|
-
return false;
|
|
15
|
-
});
|
|
16
|
-
return {
|
|
17
|
-
idStack: cutsiteIdStack,
|
|
18
|
-
idMap: cutsiteIdMap
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
);
|
package/selectedPartTags.js
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { createReducer } from "redux-act";
|
|
2
|
-
import createAction from "./utils/createMetaAction";
|
|
3
|
-
|
|
4
|
-
// ------------------------------------
|
|
5
|
-
// Actions
|
|
6
|
-
// ------------------------------------
|
|
7
|
-
|
|
8
|
-
export const updateSelectedPartTags = createAction("UPDATE_SELECTED_PART_TAGS");
|
|
9
|
-
|
|
10
|
-
// ------------------------------------
|
|
11
|
-
// Reducer
|
|
12
|
-
// ------------------------------------
|
|
13
|
-
|
|
14
|
-
export default createReducer(
|
|
15
|
-
{
|
|
16
|
-
[updateSelectedPartTags]: (state, payload) => {
|
|
17
|
-
return { ...state, parts: payload };
|
|
18
|
-
}
|
|
19
|
-
},
|
|
20
|
-
{}
|
|
21
|
-
);
|
package/selectionLayer.js
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
export function getAllSelectionLayers({
|
|
2
|
-
additionalSelectionLayers = [],
|
|
3
|
-
searchLayers = [],
|
|
4
|
-
selectionLayer
|
|
5
|
-
}) {
|
|
6
|
-
const selectionLayers = [
|
|
7
|
-
...additionalSelectionLayers,
|
|
8
|
-
...searchLayers,
|
|
9
|
-
...(Array.isArray(selectionLayer) ? selectionLayer : [selectionLayer])
|
|
10
|
-
];
|
|
11
|
-
const doubleWrappedColor = "#edb2f1";
|
|
12
|
-
// const doubleWrappedColor = "#abdbfb";
|
|
13
|
-
|
|
14
|
-
if (selectionLayer.overlapsSelf) {
|
|
15
|
-
selectionLayers.push({
|
|
16
|
-
start: selectionLayer.end + 1,
|
|
17
|
-
end: selectionLayer.start - 1,
|
|
18
|
-
color: selectionLayer.isWrappedAddon ? undefined : doubleWrappedColor
|
|
19
|
-
});
|
|
20
|
-
if (selectionLayer.isWrappedAddon) {
|
|
21
|
-
selectionLayer.color = doubleWrappedColor;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
return selectionLayers;
|
|
25
|
-
}
|
package/sequence.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { createReducer } from "redux-act";
|
|
2
|
-
import createAction from "../utils/createMetaAction";
|
|
3
|
-
|
|
4
|
-
// ------------------------------------
|
|
5
|
-
// Actions
|
|
6
|
-
// ------------------------------------
|
|
7
|
-
export const addBps = createAction("addBps");
|
|
8
|
-
|
|
9
|
-
// ------------------------------------
|
|
10
|
-
// Reducer
|
|
11
|
-
// ------------------------------------
|
|
12
|
-
export default createReducer({}, "");
|
package/sequenceDataHistory.js
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
//./selectionLayer.js
|
|
2
|
-
import { createReducer } from "redux-act";
|
|
3
|
-
import createAction from "./utils/createMetaAction";
|
|
4
|
-
|
|
5
|
-
// ------------------------------------
|
|
6
|
-
// Actions
|
|
7
|
-
// ------------------------------------
|
|
8
|
-
export const addToUndoStack = createAction("ADD_TO_UNDO_STACK");
|
|
9
|
-
export const veUndo = createAction("VE_UNDO_META");
|
|
10
|
-
export const veRedo = createAction("VE_REDO_META");
|
|
11
|
-
|
|
12
|
-
// ------------------------------------
|
|
13
|
-
// Reducer
|
|
14
|
-
// ------------------------------------
|
|
15
|
-
export default createReducer(
|
|
16
|
-
{
|
|
17
|
-
[addToUndoStack]: (state, payload) => {
|
|
18
|
-
return {
|
|
19
|
-
...state,
|
|
20
|
-
future: [],
|
|
21
|
-
past: [...(state.past || []), payload]
|
|
22
|
-
};
|
|
23
|
-
},
|
|
24
|
-
[veUndo]: (state, presentState) => {
|
|
25
|
-
return {
|
|
26
|
-
...state,
|
|
27
|
-
past: (state.past || []).slice(0, -1),
|
|
28
|
-
future: (state.future || []).concat(presentState)
|
|
29
|
-
};
|
|
30
|
-
},
|
|
31
|
-
[veRedo]: (state, presentState) => {
|
|
32
|
-
return {
|
|
33
|
-
...state,
|
|
34
|
-
future: (state.future || []).slice(0, -1),
|
|
35
|
-
past: (state.past || []).concat(presentState)
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
past: [],
|
|
41
|
-
future: []
|
|
42
|
-
}
|
|
43
|
-
);
|
package/sequenceDataSelector.js
DELETED
package/sequenceSelector.js
DELETED
package/sharedActionCreators.js
DELETED
|
File without changes
|
package/shouldFlipText.js
DELETED
package/shouldRerender.js
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { pick, isEqualWith, isFunction } from "lodash-es";
|
|
2
|
-
const shouldRerender = (propKeys, stateKeys, that) => {
|
|
3
|
-
if (!that.hasRendered) {
|
|
4
|
-
that.hasRendered = true;
|
|
5
|
-
return true;
|
|
6
|
-
}
|
|
7
|
-
const nextProps = that.props;
|
|
8
|
-
const oldProps = that.oldProps || {};
|
|
9
|
-
const a = !isEq(pick(nextProps, propKeys), pick(oldProps, propKeys));
|
|
10
|
-
that.oldProps = nextProps;
|
|
11
|
-
const nextState = that.state;
|
|
12
|
-
const oldState = that.oldState || {};
|
|
13
|
-
const b =
|
|
14
|
-
!isEq(pick(nextState, stateKeys), pick(oldState, stateKeys)) || !isEq;
|
|
15
|
-
that.oldState = nextState;
|
|
16
|
-
return a || b;
|
|
17
|
-
};
|
|
18
|
-
export default shouldRerender;
|
|
19
|
-
|
|
20
|
-
const isEq = (o1, o2) => {
|
|
21
|
-
const isEq = isEqualWith(o1, o2, function (val1, val2) {
|
|
22
|
-
if (isFunction(val1) && isFunction(val2)) {
|
|
23
|
-
return val1 === val2 || val1.toString() === val2.toString();
|
|
24
|
-
}
|
|
25
|
-
});
|
|
26
|
-
return isEq;
|
|
27
|
-
};
|
package/showFileDialog.js
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
// TODO maybe move to TRC or elsewhere
|
|
2
|
-
let hiddenInput;
|
|
3
|
-
let callback;
|
|
4
|
-
|
|
5
|
-
function getInput(multiple) {
|
|
6
|
-
if (!hiddenInput) {
|
|
7
|
-
hiddenInput = document.createElement("input");
|
|
8
|
-
hiddenInput.type = "file";
|
|
9
|
-
hiddenInput.style.position = "absolute";
|
|
10
|
-
hiddenInput.style.visibility = "hidden";
|
|
11
|
-
hiddenInput.addEventListener("change", event => {
|
|
12
|
-
callback(event.target.files);
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
document.body.appendChild(hiddenInput);
|
|
16
|
-
}
|
|
17
|
-
hiddenInput.multiple = multiple ? "multiple" : undefined;
|
|
18
|
-
return hiddenInput;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export default function showFileDialog({ multiple = false, onSelect }) {
|
|
22
|
-
const input = getInput(multiple);
|
|
23
|
-
callback = onSelect;
|
|
24
|
-
input.click();
|
|
25
|
-
}
|
package/showGCContent.js
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { createReducer } from "redux-act";
|
|
2
|
-
|
|
3
|
-
//./caretPosition.js
|
|
4
|
-
import createAction from "./utils/createMetaAction";
|
|
5
|
-
// import createReducer from "./utils/createMergedDefaultStateReducer";
|
|
6
|
-
|
|
7
|
-
// ------------------------------------
|
|
8
|
-
// Actions
|
|
9
|
-
// ------------------------------------
|
|
10
|
-
export const toggleShowGCContent = createAction("toggleShowGCContent");
|
|
11
|
-
|
|
12
|
-
// ------------------------------------
|
|
13
|
-
// Reducer
|
|
14
|
-
// ------------------------------------
|
|
15
|
-
export default createReducer(
|
|
16
|
-
{
|
|
17
|
-
[toggleShowGCContent]: (state, val) => {
|
|
18
|
-
localStorage.setItem("showGCContent", val);
|
|
19
|
-
return val;
|
|
20
|
-
}
|
|
21
|
-
},
|
|
22
|
-
window.localStorage.getItem("showGCContent")
|
|
23
|
-
);
|
package/show_cut_sites.png
DELETED
|
Binary file
|
package/show_features.png
DELETED
|
Binary file
|
package/show_orfs.png
DELETED
|
Binary file
|
package/show_primers.png
DELETED
|
Binary file
|
package/simpleDialog.css
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
export default {
|
|
2
|
-
type2s: {
|
|
3
|
-
value: "type2s",
|
|
4
|
-
label: "Type IIS Enzymes",
|
|
5
|
-
isSpecialGroup: true
|
|
6
|
-
},
|
|
7
|
-
single: {
|
|
8
|
-
value: "single",
|
|
9
|
-
label: "Single cutters",
|
|
10
|
-
cutsThisManyTimes: 1
|
|
11
|
-
},
|
|
12
|
-
double: {
|
|
13
|
-
value: "double",
|
|
14
|
-
label: "Double cutters",
|
|
15
|
-
cutsThisManyTimes: 2
|
|
16
|
-
},
|
|
17
|
-
triple: {
|
|
18
|
-
value: "triple",
|
|
19
|
-
label: "Triple cutters",
|
|
20
|
-
cutsThisManyTimes: 3
|
|
21
|
-
}
|
|
22
|
-
};
|
package/tagsToBoldSelector.js
DELETED
package/toggle_views.svg
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M17 17h-10v-10h10v10zm7 3l-5-3v-10l5-3v16zm-24-16l5 3v10l-5 3v-16z"/></svg>
|
package/toolBar.js
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import createAction from "./utils/createMetaAction";
|
|
2
|
-
import createMergedDefaultStateReducer from "./utils/createMergedDefaultStateReducer";
|
|
3
|
-
// ------------------------------------
|
|
4
|
-
// Actions
|
|
5
|
-
// ------------------------------------
|
|
6
|
-
export const openToolbarItemUpdate = createAction("openToolbarItemUpdate");
|
|
7
|
-
|
|
8
|
-
// ------------------------------------
|
|
9
|
-
// Reducer
|
|
10
|
-
// ------------------------------------
|
|
11
|
-
export default createMergedDefaultStateReducer(
|
|
12
|
-
{
|
|
13
|
-
[openToolbarItemUpdate]: (state, payload) => {
|
|
14
|
-
return {
|
|
15
|
-
...state,
|
|
16
|
-
openItem: payload
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
},
|
|
20
|
-
{
|
|
21
|
-
openItem: ""
|
|
22
|
-
}
|
|
23
|
-
);
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { createSelector } from "reselect";
|
|
2
|
-
import searchLayersSelector from "./searchLayersSelector";
|
|
3
|
-
|
|
4
|
-
export default createSelector(
|
|
5
|
-
searchLayersSelector,
|
|
6
|
-
state => state.findTool && state.findTool.dnaOrAA,
|
|
7
|
-
state => state.findTool && state.findTool.highlightAll,
|
|
8
|
-
state => state.findTool && state.findTool.matchNumber,
|
|
9
|
-
(searchLayers, dnaOrAA, highlightAll, matchNumber) => {
|
|
10
|
-
if (dnaOrAA === "DNA") return [];
|
|
11
|
-
if (!highlightAll) return [searchLayers[matchNumber]];
|
|
12
|
-
return searchLayers;
|
|
13
|
-
}
|
|
14
|
-
);
|
package/translations.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { createReducer } from "redux-act";
|
|
2
|
-
import createAction from "../utils/createMetaAction";
|
|
3
|
-
import upsertDeleteActionGenerator from "./upsertDeleteActionGenerator";
|
|
4
|
-
|
|
5
|
-
// ------------------------------------
|
|
6
|
-
// Actions
|
|
7
|
-
// ------------------------------------
|
|
8
|
-
export const _upsertTranslation = createAction("UPSERT_TRANSLATION");
|
|
9
|
-
export const deleteTranslation = createAction("DELETE_TRANSLATION");
|
|
10
|
-
|
|
11
|
-
const defaultValue = {};
|
|
12
|
-
// ------------------------------------
|
|
13
|
-
// Reducer
|
|
14
|
-
// ------------------------------------
|
|
15
|
-
export default createReducer(
|
|
16
|
-
{
|
|
17
|
-
...upsertDeleteActionGenerator(_upsertTranslation, deleteTranslation)
|
|
18
|
-
},
|
|
19
|
-
defaultValue
|
|
20
|
-
);
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { createSelector } from "reselect";
|
|
2
|
-
import sequenceDataSelector from "./sequenceDataSelector";
|
|
3
|
-
|
|
4
|
-
function translationsRawSelector(sequenceData) {
|
|
5
|
-
return sequenceData.translations;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
export default createSelector(sequenceDataSelector, translationsRawSelector);
|
package/translationsSelector.js
DELETED
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
import { reduce } from "lodash-es";
|
|
2
|
-
import uuid from "shortid";
|
|
3
|
-
import sequenceSelector from "./sequenceSelector";
|
|
4
|
-
import orfsSelector from "./orfsSelector";
|
|
5
|
-
import { createSelector } from "reselect";
|
|
6
|
-
|
|
7
|
-
import { getAminoAcidDataForEachBaseOfDna } from "@teselagen/sequence-utils";
|
|
8
|
-
import each from "lodash/each";
|
|
9
|
-
import translationsRawSelector from "./translationsRawSelector";
|
|
10
|
-
import translationSearchMatchesSelector from "./translationSearchMatchesSelector";
|
|
11
|
-
import { normalizePositionByRangeLength } from "@teselagen/range-utils";
|
|
12
|
-
import cdsFeaturesSelector from "./cdsFeaturesSelector";
|
|
13
|
-
import circularSelector from "./circularSelector";
|
|
14
|
-
|
|
15
|
-
function translationsSelector(
|
|
16
|
-
isCircular,
|
|
17
|
-
translationSearchMatches,
|
|
18
|
-
sequence,
|
|
19
|
-
orfs,
|
|
20
|
-
showOrfTranslations,
|
|
21
|
-
showOrfs,
|
|
22
|
-
cdsFeatures,
|
|
23
|
-
showCdsFeatureTranslations,
|
|
24
|
-
showFeatures,
|
|
25
|
-
translations,
|
|
26
|
-
frameTranslations
|
|
27
|
-
) {
|
|
28
|
-
const translationsToPass = {
|
|
29
|
-
...translationSearchMatches.reduce((acc, match) => {
|
|
30
|
-
if (!match) return acc;
|
|
31
|
-
const id = match.id || uuid();
|
|
32
|
-
acc[id] = {
|
|
33
|
-
...match,
|
|
34
|
-
id,
|
|
35
|
-
translationType: "AA Search Match",
|
|
36
|
-
isOrf: true, //pass isOrf = true here in order to not have it show up in the properties window
|
|
37
|
-
forward: !match.bottomStrand
|
|
38
|
-
};
|
|
39
|
-
return acc;
|
|
40
|
-
}, {}),
|
|
41
|
-
...reduce(
|
|
42
|
-
translations,
|
|
43
|
-
(acc, translation) => {
|
|
44
|
-
if (!translation.isOrf) {
|
|
45
|
-
acc[translation.id] = {
|
|
46
|
-
...translation,
|
|
47
|
-
translationType: "User Created"
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
return acc;
|
|
51
|
-
},
|
|
52
|
-
{}
|
|
53
|
-
),
|
|
54
|
-
...(showOrfTranslations && showOrfs
|
|
55
|
-
? reduce(
|
|
56
|
-
orfs,
|
|
57
|
-
(acc, orf) => {
|
|
58
|
-
acc[orf.id] = { ...orf, translationType: "ORF" };
|
|
59
|
-
return acc;
|
|
60
|
-
},
|
|
61
|
-
{}
|
|
62
|
-
)
|
|
63
|
-
: {}),
|
|
64
|
-
...(showCdsFeatureTranslations &&
|
|
65
|
-
showFeatures &&
|
|
66
|
-
reduce(
|
|
67
|
-
cdsFeatures,
|
|
68
|
-
(acc, cdsFeature) => {
|
|
69
|
-
acc[cdsFeature.id] = {
|
|
70
|
-
...cdsFeature,
|
|
71
|
-
translationType: "CDS Feature"
|
|
72
|
-
};
|
|
73
|
-
return acc;
|
|
74
|
-
},
|
|
75
|
-
{}
|
|
76
|
-
)),
|
|
77
|
-
...reduce(
|
|
78
|
-
frameTranslations,
|
|
79
|
-
(acc, isActive, frameName) => {
|
|
80
|
-
const frameOffset = Number(frameName);
|
|
81
|
-
if (isActive) {
|
|
82
|
-
const id = uuid();
|
|
83
|
-
acc[id] = {
|
|
84
|
-
id,
|
|
85
|
-
start:
|
|
86
|
-
isCircular || frameOffset > 0
|
|
87
|
-
? normalizePositionByRangeLength(
|
|
88
|
-
0 + frameOffset + (frameOffset > 0 ? -1 : 1),
|
|
89
|
-
sequence.length
|
|
90
|
-
)
|
|
91
|
-
: 0,
|
|
92
|
-
end:
|
|
93
|
-
isCircular || frameOffset < 0
|
|
94
|
-
? normalizePositionByRangeLength(
|
|
95
|
-
sequence.length -
|
|
96
|
-
1 +
|
|
97
|
-
frameOffset +
|
|
98
|
-
(frameOffset > 0 ? -1 : 1),
|
|
99
|
-
sequence.length
|
|
100
|
-
)
|
|
101
|
-
: sequence.length - 1,
|
|
102
|
-
translationType: "Frame",
|
|
103
|
-
forward: frameOffset > 0,
|
|
104
|
-
isOrf: true //pass isOrf = true here in order to not have it show up in the properties window
|
|
105
|
-
};
|
|
106
|
-
}
|
|
107
|
-
return acc;
|
|
108
|
-
},
|
|
109
|
-
{}
|
|
110
|
-
)
|
|
111
|
-
};
|
|
112
|
-
each(translationsToPass, function (translation) {
|
|
113
|
-
translation.aminoAcids = getAminoAcidDataForEachBaseOfDna(
|
|
114
|
-
sequence,
|
|
115
|
-
translation.forward,
|
|
116
|
-
translation
|
|
117
|
-
);
|
|
118
|
-
});
|
|
119
|
-
return translationsToPass;
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
export default createSelector(
|
|
123
|
-
circularSelector,
|
|
124
|
-
translationSearchMatchesSelector,
|
|
125
|
-
sequenceSelector,
|
|
126
|
-
orfsSelector,
|
|
127
|
-
state => state.annotationVisibility.orfTranslations,
|
|
128
|
-
state => state.annotationVisibility.orfs,
|
|
129
|
-
cdsFeaturesSelector,
|
|
130
|
-
state => state.annotationVisibility.cdsFeatureTranslations,
|
|
131
|
-
state => state.annotationVisibility.features,
|
|
132
|
-
translationsRawSelector,
|
|
133
|
-
state => state.frameTranslations,
|
|
134
|
-
state => state.sequenceData.isProtein,
|
|
135
|
-
state => state.sequenceData.proteinSequence,
|
|
136
|
-
translationsSelector
|
|
137
|
-
);
|
package/typeField.js
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import { getFeatureToColorMap } from "@teselagen/sequence-utils";
|
|
3
|
-
|
|
4
|
-
export const typeField = {
|
|
5
|
-
path: "type",
|
|
6
|
-
type: "string",
|
|
7
|
-
render: (name, { color }) => {
|
|
8
|
-
const colorToUse =
|
|
9
|
-
color || getFeatureToColorMap({ includeHidden: true })[name];
|
|
10
|
-
return (
|
|
11
|
-
<div style={{ display: "flex", alignItems: "center" }}>
|
|
12
|
-
<div
|
|
13
|
-
style={{
|
|
14
|
-
height: 20,
|
|
15
|
-
width: 20,
|
|
16
|
-
background: colorToUse,
|
|
17
|
-
marginRight: 3
|
|
18
|
-
}}
|
|
19
|
-
/>
|
|
20
|
-
{name}
|
|
21
|
-
</div>
|
|
22
|
-
);
|
|
23
|
-
}
|
|
24
|
-
};
|