@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.
Files changed (301) hide show
  1. package/CreateAnnotationsPage.d.ts +4 -3
  2. package/README.md +1 -1
  3. package/fileUtils.d.ts +12 -0
  4. package/html2canvas.esm--JN4fLQL.js +7891 -0
  5. package/html2canvas.esm-B7d7VJmQ.cjs +7891 -0
  6. package/index.cjs.js +1305 -1121
  7. package/index.es.js +1305 -1121
  8. package/index.umd.js +189161 -0
  9. package/ove.css +17 -4
  10. package/package.json +5 -9
  11. package/redux/findTool.d.ts +1 -0
  12. package/selectors/searchLayersSelector.d.ts +1 -1
  13. package/src/AutoAnnotate.js +1 -1
  14. package/src/CreateAnnotationsPage.js +1 -2
  15. package/src/Editor/style.css +8 -3
  16. package/src/FindBar/index.js +32 -1
  17. package/src/RowItem/SelectionLayer/index.js +42 -4
  18. package/src/RowItem/SelectionLayer/style.css +8 -0
  19. package/src/fileUtils.js +103 -0
  20. package/src/helperComponents/PropertiesDialog/TranslationProperties.js +1 -1
  21. package/src/redux/findTool.js +9 -0
  22. package/src/selectors/searchLayersSelector.js +40 -2
  23. package/style.css +12098 -1
  24. package/AASliver.js +0 -187
  25. package/AddLaddersDialog.js +0 -82
  26. package/AdditionalCutsiteInfoDialog.js +0 -599
  27. package/AlignmentVisibilityTool.js +0 -105
  28. package/AnnotationContainerHolder.js +0 -20
  29. package/AnnotationPositioner.js +0 -27
  30. package/AutoAnnotate.js +0 -501
  31. package/AutoAnnotateBpMatchingDialog.js +0 -208
  32. package/Axis.js +0 -151
  33. package/AxisNumbers.js +0 -35
  34. package/Browser.js +0 -106
  35. package/Caret.js +0 -63
  36. package/Chromatogram.js +0 -293
  37. package/CircularDnaSequence.js +0 -73
  38. package/CircularZoomMinimap.js +0 -16
  39. package/ColorPicker.js +0 -30
  40. package/CommandHotkeyHandler.js +0 -44
  41. package/CreateAnnotationsPage.js +0 -98
  42. package/Cutsite.js +0 -18
  43. package/CutsiteProperties.js +0 -176
  44. package/CutsiteSelectionLayers.js +0 -47
  45. package/Cutsites.js +0 -271
  46. package/DeletionLayer.js +0 -28
  47. package/DropHandler.css +0 -21
  48. package/DropHandler.js +0 -64
  49. package/EditCaretPosition.js +0 -234
  50. package/EditTrackNameDialog.js +0 -30
  51. package/Feature.js +0 -83
  52. package/FeatureProperties.js +0 -6
  53. package/FillWindow.js +0 -47
  54. package/GenbankView.js +0 -74
  55. package/GeneralProperties.js +0 -117
  56. package/GenericAnnotationProperties.js +0 -406
  57. package/GlobalDialog.js +0 -73
  58. package/GlobalDialogUtils.js +0 -110
  59. package/GoToDialog.js +0 -25
  60. package/HorizontalPanelDragHandle.js +0 -35
  61. package/Keyboard.js +0 -85
  62. package/Labels.js +0 -327
  63. package/Ladder.css +0 -20
  64. package/Ladder.js +0 -303
  65. package/MeltingTemp.js +0 -85
  66. package/Menlo.ttf +0 -0
  67. package/Minimap.js +0 -515
  68. package/Mismatches.js +0 -134
  69. package/Monaco.ttf +0 -0
  70. package/MultipleSeqsDetectedOnImportDialog.js +0 -74
  71. package/Orf.js +0 -109
  72. package/OrfProperties.js +0 -117
  73. package/Orfs.js +0 -35
  74. package/PCRTool.js +0 -179
  75. package/PairwiseAlignmentView.js +0 -68
  76. package/Part.js +0 -34
  77. package/PartProperties.js +0 -9
  78. package/PassThrough.js +0 -3
  79. package/PerformantSelectionLayer.js +0 -32
  80. package/PinchHelper.js +0 -24
  81. package/PointedAnnotation.js +0 -347
  82. package/PositionAnnotationOnCircle.js +0 -26
  83. package/Primer.js +0 -41
  84. package/PrimerProperties.js +0 -19
  85. package/ReflexContainer.js +0 -802
  86. package/ReflexElement.js +0 -160
  87. package/ReflexEvents.js +0 -77
  88. package/ReflexSplitter.js +0 -205
  89. package/RenameSequenceDialog.js +0 -7
  90. package/RotateCircularViewSlider.js +0 -93
  91. package/SelectDialog.js +0 -150
  92. package/SequenceName.js +0 -15
  93. package/SimpleCircularOrLinearView.js +0 -381
  94. package/SimpleOligoPreview.js +0 -39
  95. package/SingleEnzymeCutsiteInfo.js +0 -139
  96. package/ToolbarItem.js +0 -192
  97. package/Translation.js +0 -198
  98. package/TranslationProperties.js +0 -149
  99. package/UncontrolledSliderWithPlusMinusBtns.css +0 -5
  100. package/UncontrolledSliderWithPlusMinusBtns.js +0 -134
  101. package/VeTopRightContainer.js +0 -12
  102. package/ZoomCircularViewSlider.js +0 -62
  103. package/ZoomLinearView.js +0 -47
  104. package/addAlignment.js +0 -6
  105. package/addMetaToActionCreators.js +0 -12
  106. package/addWrappedAddons.js +0 -20
  107. package/alignmentTool.js +0 -503
  108. package/alignments.js +0 -379
  109. package/annotationLabelVisibility.js +0 -2
  110. package/annotationSearchSelector.js +0 -24
  111. package/annotationTypes.js +0 -35
  112. package/annotationVisibility.js +0 -196
  113. package/annotationsToSupport.js +0 -104
  114. package/arrayToObjWithIds.js +0 -17
  115. package/arrayUtils.js +0 -19
  116. package/array_move.js +0 -10
  117. package/calculateTickMarkPositionsForGivenRange.js +0 -47
  118. package/caretPosition.js +0 -27
  119. package/cdsFeaturesSelector.js +0 -9
  120. package/charWidth.js +0 -22
  121. package/circular.js +0 -19
  122. package/circularSelector.js +0 -4
  123. package/clickAndDragUtils.js +0 -576
  124. package/coerceInitialValue.js +0 -7
  125. package/combineReducersDontIgnoreKeys.js +0 -12
  126. package/commandUtils.js +0 -20
  127. package/constants.js +0 -2
  128. package/copyOptions.js +0 -34
  129. package/createFragmentLines.js +0 -120
  130. package/createMergedDefaultStateReducer.js +0 -30
  131. package/createMetaAction.js +0 -12
  132. package/createSequenceInputPopup.js +0 -290
  133. package/createSequenceInputPopupStyle.css +0 -87
  134. package/createSimpleDialog.js +0 -89
  135. package/createYourOwnEnzyme.js +0 -39
  136. package/cutsiteLabelColorSelector.js +0 -6
  137. package/cutsiteTool.js +0 -88
  138. package/cutsitesByRangeSelector.js +0 -5
  139. package/cutsitesSelector.js +0 -61
  140. package/darkmode.css +0 -98
  141. package/defaultConfig.js +0 -150
  142. package/deletionLayers.js +0 -36
  143. package/description.js +0 -21
  144. package/digestTool.js +0 -34
  145. package/dnaToColor.js +0 -17
  146. package/downloadTool.js +0 -39
  147. package/draggableClassnames.js +0 -5
  148. package/drawAnnotations.js +0 -440
  149. package/drawDirectedPiePiece.js +0 -142
  150. package/editTool.js +0 -49
  151. package/editorSelector.js +0 -2
  152. package/editorUtils.js +0 -205
  153. package/estimateRowHeight.js +0 -184
  154. package/featureLengthsToHide.js +0 -27
  155. package/featureTool.js +0 -34
  156. package/features.js +0 -19
  157. package/featuresSelector.js +0 -8
  158. package/filteredCutsitesSelector.js +0 -136
  159. package/filteredFeaturesSelector.js +0 -32
  160. package/filteredPartsSelector.js +0 -57
  161. package/filteredPrimersSelector.js +0 -27
  162. package/filteredRestrictionEnzymesSelector.js +0 -1
  163. package/find.png +0 -0
  164. package/findTool.js +0 -79
  165. package/findToolConstants.js +0 -1
  166. package/frameTranslations.js +0 -52
  167. package/fullscreen.png +0 -0
  168. package/getAdditionalEnzymesSelector.js +0 -46
  169. package/getAngleForPositionMidpoint.js +0 -3
  170. package/getAnnotationClassnames.js +0 -12
  171. package/getAnnotationNameAndStartStopString.js +0 -61
  172. package/getBpsPerRow.js +0 -19
  173. package/getCutsiteLabelHeights.js +0 -56
  174. package/getGapMap.js +0 -12
  175. package/getGaps.js +0 -27
  176. package/getInternalLabel.js +0 -40
  177. package/getOveHotkeyDefs.js +0 -12
  178. package/getPairwiseOverviewLinearViewOptions.js +0 -38
  179. package/getRangeAnglesSpecial.js +0 -12
  180. package/getStructuredBases.js +0 -97
  181. package/getTrackFromEvent.js +0 -25
  182. package/getVisibleStartEnd.js +0 -7
  183. package/getXStartAndWidthFromNonCircularRange.js +0 -12
  184. package/getXStartAndWidthOfRangeWrtRow.js +0 -27
  185. package/getXStartAndWidthOfRowAnnotation.js +0 -19
  186. package/getYOffset.js +0 -15
  187. package/hoveredAnnotation.js +0 -24
  188. package/importTool.js +0 -27
  189. package/index.js +0 -71
  190. package/inlineFindTool.js +0 -38
  191. package/isElementInViewport.js +0 -29
  192. package/isEnzymeFilterAndSelector.js +0 -1
  193. package/isTargetWithinEl.js +0 -6
  194. package/labelLineIntensity.js +0 -25
  195. package/labelSize.js +0 -23
  196. package/ladderDefaults.js +0 -25
  197. package/lastSavedId.js +0 -20
  198. package/lineageLines.js +0 -11
  199. package/linear.png +0 -0
  200. package/makeStore.js +0 -34
  201. package/massageTickSpacing.js +0 -19
  202. package/materiallyAvailable.js +0 -19
  203. package/middleware.js +0 -112
  204. package/minimumOrfSize.js +0 -24
  205. package/minimumOrfSizeSelector.js +0 -2
  206. package/modalActions.js +0 -3
  207. package/moveCaret.js +0 -58
  208. package/name.js +0 -19
  209. package/normalizeAngle.js +0 -3
  210. package/normalizeAngleRange.js +0 -9
  211. package/oligoTool.js +0 -30
  212. package/onlyUpdateForKeysDeep.js +0 -31
  213. package/orfFrameToColorMap.js +0 -10
  214. package/orfTool.js +0 -136
  215. package/orfsSelector.js +0 -15
  216. package/panelsShown.js +0 -294
  217. package/partLengthsToHide.js +0 -23
  218. package/partOverhangs.js +0 -6
  219. package/partTagSearch.js +0 -69
  220. package/partTool.js +0 -45
  221. package/parts.js +0 -19
  222. package/partsSelector.js +0 -8
  223. package/pie.png +0 -0
  224. package/polarToSpecialCartesian.js +0 -7
  225. package/positionCutsites.js +0 -6
  226. package/prepareRowData.js +0 -64
  227. package/primerBases.js +0 -221
  228. package/primerLengthsToHide.js +0 -27
  229. package/primers.js +0 -19
  230. package/primersSelector.js +0 -8
  231. package/print.png +0 -0
  232. package/printTool.js +0 -31
  233. package/propertiesTool.js +0 -40
  234. package/proteinUtils.js +0 -3
  235. package/pureNoFunc.js +0 -18
  236. package/readOnly.js +0 -25
  237. package/redoTool.js +0 -30
  238. package/reflex-styles.css +0 -128
  239. package/reflex-styles.css.map +0 -9
  240. package/relaxLabelAngles.js +0 -157
  241. package/relaxLabels_DEPRECATED.js +0 -105
  242. package/replacementLayers.js +0 -36
  243. package/restrictionEnzymes.js +0 -52
  244. package/restrictionEnzymesSelector.js +0 -34
  245. package/rowviewContants.js +0 -3
  246. package/ruler.css +0 -89
  247. package/save.png +0 -0
  248. package/saveTool.js +0 -44
  249. package/searchLayersSelector.js +0 -71
  250. package/selectedAnnotations.js +0 -89
  251. package/selectedAnnotationsSelector.js +0 -1
  252. package/selectedCutsitesSelector.js +0 -21
  253. package/selectedPartTags.js +0 -21
  254. package/selectionLayer.js +0 -25
  255. package/sequence.js +0 -12
  256. package/sequenceDataHistory.js +0 -43
  257. package/sequenceDataSelector.js +0 -2
  258. package/sequenceLengthSelector.js +0 -5
  259. package/sequenceSelector.js +0 -4
  260. package/sharedActionCreators.js +0 -0
  261. package/shouldFlipText.js +0 -4
  262. package/shouldRerender.js +0 -27
  263. package/showFileDialog.js +0 -25
  264. package/showGCContent.js +0 -23
  265. package/show_cut_sites.png +0 -0
  266. package/show_features.png +0 -0
  267. package/show_orfs.png +0 -0
  268. package/show_primers.png +0 -0
  269. package/simpleDialog.css +0 -13
  270. package/specialCutsiteFilterOptions.js +0 -22
  271. package/tagsToBoldSelector.js +0 -2
  272. package/toggle_views.svg +0 -1
  273. package/toolBar.js +0 -23
  274. package/translationSearchMatchesSelector.js +0 -14
  275. package/translations.js +0 -20
  276. package/translationsRawSelector.js +0 -8
  277. package/translationsSelector.js +0 -137
  278. package/typeField.js +0 -24
  279. package/undoTool.js +0 -30
  280. package/updateEditor.js +0 -200
  281. package/updateLabelsForInViewFeatures.js +0 -55
  282. package/updateLabelsForInViewFeaturesCircView.js +0 -41
  283. package/updateTrackHelper.js +0 -58
  284. package/uppercaseSequenceMapFont.js +0 -25
  285. package/upsertDeleteActionGenerator.js +0 -31
  286. package/useAAColorType.js +0 -8
  287. package/useAdditionalOrfStartCodons.js +0 -24
  288. package/useAnnotationLimits.js +0 -42
  289. package/useChromatogramPrefs.js +0 -31
  290. package/useFormValue.js +0 -7
  291. package/useLadders.js +0 -6
  292. package/useMeltingTemp.js +0 -7
  293. package/useTmType.js +0 -10
  294. package/userDefinedHandlersAndOpts.js +0 -61
  295. package/utils.js +0 -37
  296. package/versionHistory.js +0 -26
  297. package/versionHistoryTool.js +0 -21
  298. package/viewSubmenu.js +0 -479
  299. package/visibilityTool.js +0 -39
  300. package/withHover.js +0 -113
  301. package/withRestrictionEnzymes.js +0 -15
@@ -1,25 +0,0 @@
1
- import { getClientX, getClientY } from "../utils/editorUtils";
2
-
3
- export function getTrackFromEvent(event, allTracks) {
4
- const trackContainers = document.querySelectorAll(
5
- ".alignmentViewTrackContainer"
6
- );
7
- let track;
8
- trackContainers.forEach(t => {
9
- const mouseX = getClientX(event) + document.body.scrollLeft;
10
- const mouseY = getClientY(event) + document.body.scrollTop;
11
- if (
12
- mouseX >= t.getBoundingClientRect().left &&
13
- mouseX <=
14
- t.getBoundingClientRect().left + t.getBoundingClientRect().width &&
15
- mouseY >= t.getBoundingClientRect().top &&
16
- mouseY <= t.getBoundingClientRect().top + t.getBoundingClientRect().height
17
- ) {
18
- const index = t.getAttribute("data-alignment-track-index");
19
- track = allTracks[index];
20
- track.index = index;
21
- return true;
22
- }
23
- });
24
- return track;
25
- }
@@ -1,7 +0,0 @@
1
- export function getVisibleStartEnd({ scrollData, width }) {
2
- const { percentScrolled, viewportWidth } = scrollData;
3
-
4
- const visibleStart = percentScrolled * (width - viewportWidth);
5
- const visibleEnd = visibleStart + viewportWidth;
6
- return { visibleEnd, visibleStart };
7
- }
@@ -1,12 +0,0 @@
1
- import { getRangeLength } from "@teselagen/range-utils";
2
-
3
- export default function getXStartAndWidthFromNonCircularRange(
4
- range,
5
- charWidth
6
- ) {
7
- const rangeLength = getRangeLength(range);
8
- return {
9
- width: rangeLength * charWidth,
10
- xStart: range.start * charWidth
11
- };
12
- }
@@ -1,27 +0,0 @@
1
- import { normalizePositionByRangeLength } from "@teselagen/range-utils";
2
- import { isNumber } from "lodash-es";
3
-
4
- export default function getXStartAndWidthOfRangeWrtRow({
5
- range,
6
- row,
7
- charWidth,
8
- sequenceLength,
9
- gapsBefore = 0,
10
- gapsInside = 0
11
- }) {
12
- const xStart =
13
- ((!isNumber(gapsBefore) ? 0 : gapsBefore) +
14
- normalizePositionByRangeLength(range.start - row.start, sequenceLength)) *
15
- charWidth;
16
- const obj = {
17
- xStart,
18
- width:
19
- (gapsInside +
20
- normalizePositionByRangeLength(
21
- range.end + 1 - range.start,
22
- sequenceLength + 1
23
- )) *
24
- charWidth
25
- };
26
- return obj;
27
- }
@@ -1,19 +0,0 @@
1
- export default function getXStartAndWidthOfRowAnnotation(
2
- range,
3
- bpsPerRow,
4
- charWidth,
5
- gapsBefore = 0,
6
- gapsInside = 0
7
- ) {
8
- const startOffset = range.start % bpsPerRow;
9
- const toReturn = {
10
- startOffset,
11
- xStart: (startOffset + gapsBefore) * charWidth,
12
- width: getWidth(range, charWidth, gapsInside)
13
- };
14
- return toReturn;
15
- }
16
-
17
- export function getWidth(range, charWidth, gapsInside = 0) {
18
- return (range.end + 1 - range.start + gapsInside) * charWidth;
19
- }
package/getYOffset.js DELETED
@@ -1,15 +0,0 @@
1
- export default function getYOffset(iTree, start, end) {
2
- //get all potentially overlapping annotations
3
-
4
- const potentiallyOverlappingAnnotations = iTree.search(start, end);
5
- //we don't want to render the new annotation on top of any of these potentially overlapping annotations
6
- const potentialPositionsForNewAnnotation =
7
- potentiallyOverlappingAnnotations.map(() => true);
8
- potentiallyOverlappingAnnotations.forEach(function (otherAnnotation) {
9
- potentialPositionsForNewAnnotation[otherAnnotation.yOffset] = false;
10
- });
11
- //get first occurence of empty yOffset
12
- const yOffset = potentialPositionsForNewAnnotation.indexOf(true);
13
- //if there are no empty slots, make a new slot
14
- return yOffset > -1 ? yOffset : potentialPositionsForNewAnnotation.length;
15
- }
@@ -1,24 +0,0 @@
1
- //./caretPosition.js
2
- import { createReducer } from "redux-act";
3
- import createAction from "./utils/createMetaAction";
4
-
5
- // ------------------------------------
6
- // Actions
7
- // ------------------------------------
8
- export const hoveredAnnotationUpdate = createAction("HOVEREDANNOTATIONUPDATE");
9
- export const hoveredAnnotationClear = createAction("HOVEREDANNOTATIONCLEAR");
10
-
11
- // ------------------------------------
12
- // Reducer
13
- // ------------------------------------
14
- export default createReducer(
15
- {
16
- [hoveredAnnotationUpdate]: (state, payload) => {
17
- return payload || null;
18
- },
19
- [hoveredAnnotationClear]: () => {
20
- return "";
21
- }
22
- },
23
- ""
24
- );
package/importTool.js DELETED
@@ -1,27 +0,0 @@
1
- import React from "react";
2
- import { Icon } from "@blueprintjs/core";
3
- import Dropzone from "react-dropzone";
4
- import ToolbarItem from "./ToolbarItem";
5
- import { compose, withHandlers } from "recompose";
6
- import { importSequenceFromFile, connectToEditor } from "../withEditorProps";
7
-
8
- export default compose(
9
- connectToEditor(),
10
- withHandlers({ importSequenceFromFile })
11
- )(({ toolbarItemProps, importSequenceFromFile }) => {
12
- return (
13
- <ToolbarItem
14
- {...{
15
- Icon: <Icon data-test="veImportTool" icon="export" />,
16
- IconWrapper: Dropzone,
17
- IconWrapperProps: {
18
- multiple: false,
19
- style: {},
20
- onDrop: files => importSequenceFromFile(files[0])
21
- },
22
- tooltip: "Click or drag to import and view files (.fasta .gb .dna)",
23
- ...toolbarItemProps
24
- }}
25
- />
26
- );
27
- });
package/index.js DELETED
@@ -1,71 +0,0 @@
1
- import { getReverseComplementSequenceAndAnnotations } from "@teselagen/sequence-utils";
2
-
3
- export default function addDashesForMatchStartAndEndForTracks(alignmentTracks) {
4
- return alignmentTracks.map((track, i) => {
5
- // .filter by the user-specified mismatch overrides (initially [])
6
- return {
7
- ...track,
8
- ...addDashesForMatchStartAndEnd(
9
- track,
10
- alignmentTracks[0], //send in the ref/template seq every time
11
- i === 0
12
- )
13
- };
14
- });
15
- }
16
-
17
- function addDashesForMatchStartAndEnd(
18
- { alignmentData, sequenceData: _sequenceData },
19
- template,
20
- isTemplate
21
- ) {
22
- let sequenceData = _sequenceData;
23
- const {
24
- sequenceData: sequenceDataTemplate,
25
- alignmentData: alignmentDataTemplate
26
- } = template;
27
- let { matchStart = 0, matchEnd = 0, strand } = alignmentData;
28
- if (strand === -1) {
29
- sequenceData = getReverseComplementSequenceAndAnnotations(sequenceData);
30
- const oldMatchEnd = matchEnd;
31
- const oldMatchStart = matchStart;
32
- matchStart = sequenceData.sequence.length - oldMatchStart;
33
- matchEnd = sequenceData.sequence.length - oldMatchEnd;
34
- }
35
- const { matchStart: matchStartTemplate = 0, matchEnd: matchEndTemplate = 0 } =
36
- alignmentDataTemplate;
37
- let newAlignmentData;
38
- if (isTemplate) {
39
- newAlignmentData = {
40
- ...alignmentData,
41
- sequence:
42
- sequenceDataTemplate.sequence.slice(0, matchStartTemplate) +
43
- alignmentData.sequence +
44
- sequenceDataTemplate.sequence.slice(matchEndTemplate + 1)
45
- };
46
- } else {
47
- newAlignmentData = {
48
- ...alignmentData,
49
- sequence:
50
- sequenceData.sequence.slice(0, matchStart) +
51
- alignmentData.sequence +
52
- sequenceData.sequence.slice(matchEnd + 1)
53
- };
54
- newAlignmentData = {
55
- ...alignmentData,
56
- sequence:
57
- "-".repeat(Math.max(matchStartTemplate - matchStart, 0)) +
58
- newAlignmentData.sequence +
59
- "-".repeat(
60
- Math.max(
61
- sequenceDataTemplate.sequence.slice(matchEndTemplate + 1).length -
62
- (sequenceData.sequence.length - matchEnd) +
63
- 1,
64
- 0
65
- )
66
- )
67
- };
68
- }
69
-
70
- return { alignmentData: newAlignmentData, sequenceData: sequenceData };
71
- }
package/inlineFindTool.js DELETED
@@ -1,38 +0,0 @@
1
- import React from "react";
2
- import { Icon } from "@blueprintjs/core";
3
- import FindBar from "../FindBar";
4
- import ToolbarItem from "./ToolbarItem";
5
- import { connectToEditor } from "../withEditorProps";
6
-
7
- export default connectToEditor(({ findTool = {} }) => {
8
- return {
9
- isOpen: findTool.isOpen
10
- };
11
- })(({ toolbarItemProps, editorName, toggleFindTool, isOpen }) => {
12
- return (
13
- <ToolbarItem
14
- {...{
15
- Icon: !isOpen ? (
16
- <div>
17
- <Icon data-test="ve-find-tool-toggle" icon="search" />
18
- <Icon icon="caret-right" />
19
- </div>
20
- ) : (
21
- <FindBar editorName={editorName} />
22
- ),
23
- renderIconAbove: isOpen,
24
- onIconClick: toggleFindTool,
25
- tooltip: isOpen ? (
26
- <span>
27
- Hide Find Tool <span style={{ fontSize: 10 }}>(Cmd/Ctrl+F)</span>
28
- </span>
29
- ) : (
30
- <span>
31
- Show Find Tool <span style={{ fontSize: 10 }}>(Cmd/Ctrl+F)</span>
32
- </span>
33
- ),
34
- ...toolbarItemProps
35
- }}
36
- />
37
- );
38
- });
@@ -1,29 +0,0 @@
1
- export function isElWithinAnotherEl(el, container) {
2
- if (el.left > container.right) return false;
3
- if (el.right < container.left) return false;
4
- return true;
5
- }
6
- const buffer = 13;
7
- export function isElWithinAnotherElWithDiff(el, container) {
8
- const elWidth = el.right - el.left;
9
- const containerWidth = container.right - container.left;
10
- const space = containerWidth - elWidth;
11
- if (el.right > container.right) {
12
- let diff = container.right - el.right - space / 2;
13
- if (el.left + diff < container.left + buffer) {
14
- //too far to the left -- aka diff too negative
15
- diff += container.left + buffer - el.left - diff;
16
- }
17
- return [false, diff];
18
- }
19
-
20
- if (el.left < container.left) {
21
- let diff = container.left - el.left + space / 2;
22
- if (el.right + diff + buffer > container.right) {
23
- //too far to the right -- aka diff too big
24
- diff -= el.right + diff + buffer - container.right;
25
- }
26
- return [false, diff];
27
- }
28
- return [true];
29
- }
@@ -1 +0,0 @@
1
- export default state => state.restrictionEnzymes.isEnzymeFilterAnd;
@@ -1,6 +0,0 @@
1
- // function Ident({ children }) {
2
- // return children;
3
- // }
4
- export function isTargetWithinEl(event, selector) {
5
- return event.target.closest(selector);
6
- }
@@ -1,25 +0,0 @@
1
- import { createReducer } from "redux-act";
2
-
3
- import createAction from "./utils/createMetaAction";
4
-
5
- // ------------------------------------
6
- // Actions
7
- // ------------------------------------
8
- export const changeLabelLineIntensity = createAction(
9
- "changeLabelLineIntensity"
10
- );
11
-
12
- const newVal = window.localStorage.getItem("labelLineIntensity");
13
-
14
- // ------------------------------------
15
- // Reducer
16
- // ------------------------------------
17
- export default createReducer(
18
- {
19
- [changeLabelLineIntensity]: (state, payload) => {
20
- localStorage.setItem("labelLineIntensity", payload);
21
- return payload;
22
- }
23
- },
24
- newVal ? parseFloat(newVal) : 0.1 // 0.1 (low) || 0.4 (med) || 0.7 (high) || 1.0 (full)
25
- );
package/labelSize.js DELETED
@@ -1,23 +0,0 @@
1
- import { createReducer } from "redux-act";
2
-
3
- import createAction from "./utils/createMetaAction";
4
-
5
- // ------------------------------------
6
- // Actions
7
- // ------------------------------------
8
- export const changeLabelSize = createAction("changeLabelSize");
9
-
10
- const newVal = window.localStorage.getItem("labelSize");
11
-
12
- // ------------------------------------
13
- // Reducer
14
- // ------------------------------------
15
- export default createReducer(
16
- {
17
- [changeLabelSize]: (state, payload) => {
18
- localStorage.setItem("labelSize", payload);
19
- return payload;
20
- }
21
- },
22
- newVal ? parseInt(newVal) : 8 // 8 is 100% label size
23
- );
package/ladderDefaults.js DELETED
@@ -1,25 +0,0 @@
1
- export const ladderDefaults = [
2
- {
3
- value: "geneRuler1KB",
4
- label: "GeneRuler 1kb + DNA 75-20,000 bp",
5
- markings: [
6
- 20000, 10000, 7000, 5000, 4000, 3000, 2000, 1500, 1000, 700, 500, 400,
7
- 300, 200, 75
8
- ]
9
- },
10
- {
11
- value: "geneRuler100BP",
12
- label: "GeneRuler 100bp + DNA 100-3000 bp",
13
- markings: [
14
- 3000, 2000, 1500, 1200, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100
15
- ]
16
- },
17
- {
18
- value: "invitrogen1KbPlus",
19
- label: "Invitrogen 1kb + DNA 100-15,000 bp",
20
- markings: [
21
- 15000, 10000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1500, 1000, 850,
22
- 650, 500, 400, 300, 200, 100
23
- ]
24
- }
25
- ];
package/lastSavedId.js DELETED
@@ -1,20 +0,0 @@
1
- //./caretPosition.js
2
- import { createReducer } from "redux-act";
3
- import createAction from "./utils/createMetaAction";
4
-
5
- // ------------------------------------
6
- // Actions
7
- // ------------------------------------
8
- export const lastSavedIdUpdate = createAction("lastSavedIdUpdate"); //NOTE!!:: second argument sanitizes actions so no payload is passed
9
-
10
- // ------------------------------------
11
- // Reducer
12
- // ------------------------------------
13
- export default createReducer(
14
- {
15
- [lastSavedIdUpdate]: (state, payload) => {
16
- return payload;
17
- }
18
- },
19
- null
20
- );
package/lineageLines.js DELETED
@@ -1,11 +0,0 @@
1
- import { createReducer } from "redux-act";
2
-
3
- // ------------------------------------
4
- // Actions
5
- // ------------------------------------
6
- // export const caretPositionClear = createAction('caretPositionClear')
7
-
8
- // ------------------------------------
9
- // Reducer
10
- // ------------------------------------
11
- export default createReducer({}, []);
package/linear.png DELETED
Binary file
package/makeStore.js DELETED
@@ -1,34 +0,0 @@
1
- //optionally connect to the redux store
2
- import { createStore, combineReducers, applyMiddleware, compose } from "redux";
3
- import VectorEditor, { vectorEditorMiddleware } from "../redux";
4
- import thunk from "redux-thunk";
5
- import { reducer as form } from "redux-form";
6
-
7
- const makeStore = () => {
8
- const composeEnhancer =
9
- (window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ &&
10
- window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({
11
- name: "createVectorEditor",
12
- latency: 1000,
13
- // serialize: {
14
- // replacer: (key, value) => {
15
- // }
16
- // },
17
- actionsDenylist: ["HOVEREDANNOTATIONUPDATE", "HOVEREDANNOTATIONCLEAR"]
18
- })) ||
19
- compose;
20
-
21
- const store = createStore(
22
- combineReducers({
23
- form,
24
- VectorEditor: VectorEditor()
25
- }),
26
- undefined,
27
- composeEnhancer(
28
- applyMiddleware(thunk, vectorEditorMiddleware) //your store should be redux-thunk connected for the VectorEditor component to work
29
- )
30
- );
31
- return store;
32
- };
33
-
34
- export default makeStore;
@@ -1,19 +0,0 @@
1
- import { some } from "lodash-es";
2
-
3
- export function massageTickSpacing(spacing) {
4
- let toRet = spacing;
5
- if (spacing < 15) {
6
- return 10;
7
- }
8
- some(
9
- [20, 50, 100, 500, 1000, 2000, 5000, 10000, 50000, 100000, 1000000],
10
- val => {
11
- if (spacing < val) {
12
- toRet = val;
13
- return true;
14
- }
15
- }
16
- );
17
-
18
- return toRet;
19
- }
@@ -1,19 +0,0 @@
1
- import { createReducer } from "redux-act";
2
- import createAction from "../utils/createMetaAction";
3
-
4
- // ------------------------------------
5
- // Actions
6
- // ------------------------------------
7
- export const updateAvailability = createAction("updateAvailability");
8
-
9
- // ------------------------------------
10
- // Reducer
11
- // ------------------------------------
12
- export default createReducer(
13
- {
14
- [updateAvailability]: (state, payload) => {
15
- return payload;
16
- }
17
- },
18
- true
19
- );
package/middleware.js DELETED
@@ -1,112 +0,0 @@
1
- //vectorEditorMiddleware
2
- //used to add undo/redo abilities to OVE
3
-
4
- // To Batch actions together use this api:
5
- // deleteFeature([id1, id2], {
6
- // batchUndoStart: true
7
- // });
8
- // upsertFeature(
9
- // {
10
- // ...feat1,
11
- // id: uuid(),
12
- // start: start - 1,
13
- // end: end - 1,
14
- // name
15
- // },
16
- // {
17
- // batchUndoEnd: true
18
- // }
19
- // );
20
-
21
- export default store => next => action => {
22
- if (action.meta && action.meta.disregardUndo) {
23
- return next(action);
24
- }
25
- const disregardUndo = true;
26
- if (action.type === "VE_UNDO" || action.type === "VE_REDO") {
27
- const { VectorEditor } = store.getState();
28
- const editorName = action.meta.editorName;
29
- const editorState = VectorEditor[editorName];
30
- const stack =
31
- editorState.sequenceDataHistory[
32
- action.type === "VE_UNDO" ? "past" : "future"
33
- ] || [];
34
- const stateToUse = stack[stack.length - 1];
35
- store.dispatch({
36
- type: action.type === "VE_UNDO" ? "VE_UNDO_META" : "VE_REDO_META",
37
- payload: {
38
- sequenceData: editorState.sequenceData,
39
- selectionLayer: editorState.selectionLayer,
40
- caretPosition: editorState.caretPosition
41
- },
42
- meta: { editorName, disregardUndo }
43
- });
44
- store.dispatch({
45
- type: "SEQUENCE_DATA_UPDATE",
46
- payload: stateToUse.sequenceData,
47
- meta: { editorName, disregardUndo }
48
- });
49
- if (stateToUse.caretPosition > -1) {
50
- store.dispatch({
51
- type: "CARET_POSITION_UPDATE",
52
- payload: stateToUse.caretPosition,
53
- meta: { editorName, disregardUndo }
54
- });
55
- } else {
56
- store.dispatch({
57
- type: "SELECTION_LAYER_UPDATE",
58
- payload: { ...stateToUse.selectionLayer, forceUpdate: Math.random() },
59
- meta: { editorName, disregardUndo }
60
- });
61
- }
62
- store.dispatch({
63
- type: "VE_SEQUENCE_CHANGED", //used for external autosave functionality
64
- payload: {
65
- sequenceData: stateToUse.sequenceData,
66
- editorName
67
- },
68
- meta: { editorName, disregardUndo: true }
69
- });
70
- return next(action);
71
- } else {
72
- //pass batchUndoStart, batchUndoMiddle and batchUndoEnd to group actions together
73
- const { batchUndoEnd, batchUndoStart, batchUndoMiddle } = action.meta || {};
74
- //get editor state(s)
75
- const OldVectorEditor = store.getState().VectorEditor;
76
- const result = next(action);
77
- const NewVectorEditor = store.getState().VectorEditor;
78
- Object.keys(NewVectorEditor).forEach(editorName => {
79
- const newEditorState = NewVectorEditor[editorName];
80
- const oldEditorState = OldVectorEditor[editorName];
81
- if (
82
- oldEditorState &&
83
- oldEditorState.sequenceData &&
84
- oldEditorState.sequenceData !== newEditorState.sequenceData
85
- ) {
86
- const { sequenceData, selectionLayer, caretPosition } = oldEditorState;
87
- !batchUndoEnd &&
88
- !batchUndoMiddle &&
89
- store.dispatch({
90
- type: "ADD_TO_UNDO_STACK",
91
- payload: {
92
- selectionLayer,
93
- sequenceData,
94
- caretPosition
95
- },
96
- meta: { editorName, disregardUndo }
97
- });
98
- !batchUndoStart &&
99
- !batchUndoMiddle &&
100
- store.dispatch({
101
- type: "VE_SEQUENCE_CHANGED", //used for external autosave functionality
102
- payload: {
103
- sequenceData: newEditorState.sequenceData,
104
- editorName
105
- },
106
- meta: { editorName, disregardUndo: true }
107
- });
108
- }
109
- });
110
- return result;
111
- }
112
- };
package/minimumOrfSize.js DELETED
@@ -1,24 +0,0 @@
1
- //./caretPosition.js
2
- import { createReducer } from "redux-act";
3
- import createAction from "./utils/createMetaAction";
4
-
5
- // ------------------------------------
6
- // Actions
7
- // ------------------------------------
8
- export const minimumOrfSizeUpdate = createAction("minimumOrfSizeUpdate");
9
-
10
- // ------------------------------------
11
- // Reducer
12
- // ------------------------------------
13
- export default createReducer(
14
- {
15
- [minimumOrfSizeUpdate]: (state, payload) => {
16
- return payload;
17
- }
18
- },
19
- 300
20
- );
21
-
22
- export function getMinimumOrfSize(state) {
23
- return state;
24
- }
@@ -1,2 +0,0 @@
1
- const minimumOrfSizeSelector = state => state.minimumOrfSize;
2
- export default minimumOrfSizeSelector;
package/modalActions.js DELETED
@@ -1,3 +0,0 @@
1
- // ------------------------------------
2
- // Actions
3
- // ------------------------------------