@teselagen/ove 0.7.26 → 0.7.28

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 (304) hide show
  1. package/AASliver.js +187 -0
  2. package/AddLaddersDialog.js +82 -0
  3. package/AdditionalCutsiteInfoDialog.js +599 -0
  4. package/AlignmentView/Mismatches.d.ts +3 -3
  5. package/AlignmentVisibilityTool.js +105 -0
  6. package/AnnotationContainerHolder.js +20 -0
  7. package/AnnotationPositioner.js +27 -0
  8. package/AutoAnnotate.js +501 -0
  9. package/AutoAnnotateBpMatchingDialog.js +208 -0
  10. package/Axis.js +151 -0
  11. package/AxisNumbers.js +35 -0
  12. package/Browser.js +106 -0
  13. package/Caret.js +63 -0
  14. package/Chromatogram.js +293 -0
  15. package/CircularDnaSequence.js +73 -0
  16. package/CircularView/Labels/index.d.ts +1 -1
  17. package/CircularView/index.d.ts +0 -1
  18. package/CircularZoomMinimap.js +16 -0
  19. package/ColorPicker.js +30 -0
  20. package/CommandHotkeyHandler.js +44 -0
  21. package/CreateAnnotationsPage.d.ts +4 -4
  22. package/CreateAnnotationsPage.js +98 -0
  23. package/Cutsite.js +18 -0
  24. package/CutsiteProperties.js +176 -0
  25. package/CutsiteSelectionLayers.js +47 -0
  26. package/Cutsites.js +271 -0
  27. package/DeletionLayer.js +28 -0
  28. package/DigestTool/Ladder.d.ts +1 -1
  29. package/DropHandler.css +21 -0
  30. package/DropHandler.js +64 -0
  31. package/EditCaretPosition.js +234 -0
  32. package/EditTrackNameDialog.js +30 -0
  33. package/Feature.js +83 -0
  34. package/FeatureProperties.js +6 -0
  35. package/FillWindow.js +47 -0
  36. package/GenbankView.js +74 -0
  37. package/GeneralProperties.js +117 -0
  38. package/GenericAnnotationProperties.js +406 -0
  39. package/GlobalDialog.js +73 -0
  40. package/GlobalDialogUtils.js +110 -0
  41. package/GoToDialog.js +25 -0
  42. package/HorizontalPanelDragHandle.js +35 -0
  43. package/Keyboard.js +85 -0
  44. package/Labels.js +327 -0
  45. package/Ladder.css +20 -0
  46. package/Ladder.js +303 -0
  47. package/MeltingTemp.js +85 -0
  48. package/Menlo.ttf +0 -0
  49. package/Minimap.js +515 -0
  50. package/Mismatches.js +134 -0
  51. package/Monaco.ttf +0 -0
  52. package/MultipleSeqsDetectedOnImportDialog.js +74 -0
  53. package/Orf.js +109 -0
  54. package/OrfProperties.js +117 -0
  55. package/Orfs.js +35 -0
  56. package/PCRTool.js +179 -0
  57. package/PairwiseAlignmentView.js +68 -0
  58. package/Part.js +34 -0
  59. package/PartProperties.js +9 -0
  60. package/PassThrough.js +3 -0
  61. package/PerformantSelectionLayer.js +32 -0
  62. package/PinchHelper.js +24 -0
  63. package/PointedAnnotation.js +347 -0
  64. package/PositionAnnotationOnCircle.js +26 -0
  65. package/Primer.js +41 -0
  66. package/PrimerProperties.js +19 -0
  67. package/Reflex/index.d.ts +0 -1
  68. package/ReflexContainer.js +802 -0
  69. package/ReflexElement.js +160 -0
  70. package/ReflexEvents.js +77 -0
  71. package/ReflexSplitter.js +205 -0
  72. package/RenameSequenceDialog.js +7 -0
  73. package/RotateCircularViewSlider.js +93 -0
  74. package/RowView/index.d.ts +0 -1
  75. package/SelectDialog.js +150 -0
  76. package/SequenceName.js +15 -0
  77. package/SimpleCircularOrLinearView.js +381 -0
  78. package/SimpleOligoPreview.js +39 -0
  79. package/SingleEnzymeCutsiteInfo.js +139 -0
  80. package/ToolBar/ToolbarItem.d.ts +1 -3
  81. package/ToolbarItem.js +192 -0
  82. package/Translation.js +198 -0
  83. package/TranslationProperties.js +149 -0
  84. package/UncontrolledSliderWithPlusMinusBtns.css +5 -0
  85. package/UncontrolledSliderWithPlusMinusBtns.js +134 -0
  86. package/VeTopRightContainer.js +12 -0
  87. package/ZoomCircularViewSlider.js +62 -0
  88. package/ZoomLinearView.js +47 -0
  89. package/addAlignment.js +6 -0
  90. package/addMetaToActionCreators.js +12 -0
  91. package/addWrappedAddons.js +20 -0
  92. package/alignmentTool.js +503 -0
  93. package/alignments.js +379 -0
  94. package/annotationLabelVisibility.js +2 -0
  95. package/annotationSearchSelector.js +24 -0
  96. package/annotationTypes.js +35 -0
  97. package/annotationVisibility.js +196 -0
  98. package/annotationsToSupport.js +104 -0
  99. package/arrayToObjWithIds.js +17 -0
  100. package/arrayUtils.js +19 -0
  101. package/array_move.js +10 -0
  102. package/calculateTickMarkPositionsForGivenRange.js +47 -0
  103. package/caretPosition.js +27 -0
  104. package/cdsFeaturesSelector.js +9 -0
  105. package/charWidth.js +22 -0
  106. package/circular.js +19 -0
  107. package/circularSelector.js +4 -0
  108. package/clickAndDragUtils.js +576 -0
  109. package/coerceInitialValue.js +7 -0
  110. package/combineReducersDontIgnoreKeys.js +12 -0
  111. package/commandUtils.js +20 -0
  112. package/constants.js +2 -0
  113. package/copyOptions.js +34 -0
  114. package/createFragmentLines.js +120 -0
  115. package/createMergedDefaultStateReducer.js +30 -0
  116. package/createMetaAction.js +12 -0
  117. package/createSequenceInputPopup.js +290 -0
  118. package/createSequenceInputPopupStyle.css +87 -0
  119. package/createSimpleDialog.js +89 -0
  120. package/createYourOwnEnzyme.js +39 -0
  121. package/cutsiteLabelColorSelector.js +6 -0
  122. package/cutsiteTool.js +88 -0
  123. package/cutsitesByRangeSelector.js +5 -0
  124. package/cutsitesSelector.js +61 -0
  125. package/darkmode.css +98 -0
  126. package/defaultConfig.js +150 -0
  127. package/deletionLayers.js +36 -0
  128. package/description.js +21 -0
  129. package/digestTool.js +34 -0
  130. package/dnaToColor.js +17 -0
  131. package/downloadTool.js +39 -0
  132. package/draggableClassnames.js +5 -0
  133. package/drawAnnotations.js +440 -0
  134. package/drawDirectedPiePiece.js +142 -0
  135. package/editTool.js +49 -0
  136. package/editorSelector.js +2 -0
  137. package/editorUtils.js +205 -0
  138. package/estimateRowHeight.js +184 -0
  139. package/featureLengthsToHide.js +27 -0
  140. package/featureTool.js +34 -0
  141. package/features.js +19 -0
  142. package/featuresSelector.js +8 -0
  143. package/filteredCutsitesSelector.js +136 -0
  144. package/filteredFeaturesSelector.js +32 -0
  145. package/filteredPartsSelector.js +57 -0
  146. package/filteredPrimersSelector.js +27 -0
  147. package/filteredRestrictionEnzymesSelector.js +1 -0
  148. package/find.png +0 -0
  149. package/findTool.js +79 -0
  150. package/findToolConstants.js +1 -0
  151. package/frameTranslations.js +52 -0
  152. package/fullscreen.png +0 -0
  153. package/getAdditionalEnzymesSelector.js +46 -0
  154. package/getAngleForPositionMidpoint.js +3 -0
  155. package/getAnnotationClassnames.js +12 -0
  156. package/getAnnotationNameAndStartStopString.js +61 -0
  157. package/getBpsPerRow.js +19 -0
  158. package/getCutsiteLabelHeights.js +56 -0
  159. package/getGapMap.js +12 -0
  160. package/getGaps.js +27 -0
  161. package/getInternalLabel.js +40 -0
  162. package/getOveHotkeyDefs.js +12 -0
  163. package/getPairwiseOverviewLinearViewOptions.js +38 -0
  164. package/getRangeAnglesSpecial.js +12 -0
  165. package/getStructuredBases.js +97 -0
  166. package/getTrackFromEvent.js +25 -0
  167. package/getVisibleStartEnd.js +7 -0
  168. package/getXStartAndWidthFromNonCircularRange.js +12 -0
  169. package/getXStartAndWidthOfRangeWrtRow.js +27 -0
  170. package/getXStartAndWidthOfRowAnnotation.js +19 -0
  171. package/getYOffset.js +15 -0
  172. package/hoveredAnnotation.js +24 -0
  173. package/{html2canvas.esm--JN4fLQL.js → html2canvas.esm-DiGWN1gP.js} +187 -229
  174. package/{html2canvas.esm-B7d7VJmQ.cjs → html2canvas.esm-J1esNpMJ.cjs} +187 -229
  175. package/importTool.js +27 -0
  176. package/index.cjs.js +48165 -47142
  177. package/index.es.js +47699 -46676
  178. package/index.js +71 -0
  179. package/inlineFindTool.js +38 -0
  180. package/isElementInViewport.js +29 -0
  181. package/isEnzymeFilterAndSelector.js +1 -0
  182. package/isTargetWithinEl.js +6 -0
  183. package/labelLineIntensity.js +25 -0
  184. package/labelSize.js +23 -0
  185. package/ladderDefaults.js +25 -0
  186. package/lastSavedId.js +20 -0
  187. package/lineageLines.js +11 -0
  188. package/linear.png +0 -0
  189. package/makeStore.js +34 -0
  190. package/massageTickSpacing.js +19 -0
  191. package/materiallyAvailable.js +19 -0
  192. package/middleware.js +112 -0
  193. package/minimumOrfSize.js +24 -0
  194. package/minimumOrfSizeSelector.js +2 -0
  195. package/modalActions.js +3 -0
  196. package/moveCaret.js +58 -0
  197. package/name.js +19 -0
  198. package/normalizeAngle.js +3 -0
  199. package/normalizeAngleRange.js +9 -0
  200. package/oligoTool.js +30 -0
  201. package/onlyUpdateForKeysDeep.js +31 -0
  202. package/orfFrameToColorMap.js +10 -0
  203. package/orfTool.js +136 -0
  204. package/orfsSelector.js +15 -0
  205. package/ove.css +12107 -0
  206. package/package.json +8 -7
  207. package/panelsShown.js +294 -0
  208. package/partLengthsToHide.js +23 -0
  209. package/partOverhangs.js +6 -0
  210. package/partTagSearch.js +69 -0
  211. package/partTool.js +45 -0
  212. package/parts.js +19 -0
  213. package/partsSelector.js +8 -0
  214. package/pie.png +0 -0
  215. package/polarToSpecialCartesian.js +7 -0
  216. package/positionCutsites.js +6 -0
  217. package/prepareRowData.js +64 -0
  218. package/primerBases.js +221 -0
  219. package/primerLengthsToHide.js +27 -0
  220. package/primers.js +19 -0
  221. package/primersSelector.js +8 -0
  222. package/print.png +0 -0
  223. package/printTool.js +31 -0
  224. package/propertiesTool.js +40 -0
  225. package/proteinUtils.js +3 -0
  226. package/pureNoFunc.js +18 -0
  227. package/readOnly.js +25 -0
  228. package/redoTool.js +30 -0
  229. package/reflex-styles.css +128 -0
  230. package/reflex-styles.css.map +9 -0
  231. package/relaxLabelAngles.js +157 -0
  232. package/relaxLabels_DEPRECATED.js +105 -0
  233. package/replacementLayers.js +36 -0
  234. package/restrictionEnzymes.js +52 -0
  235. package/restrictionEnzymesSelector.js +34 -0
  236. package/rowviewContants.js +3 -0
  237. package/ruler.css +89 -0
  238. package/save.png +0 -0
  239. package/saveTool.js +44 -0
  240. package/searchLayersSelector.js +71 -0
  241. package/selectedAnnotations.js +89 -0
  242. package/selectedAnnotationsSelector.js +1 -0
  243. package/selectedCutsitesSelector.js +21 -0
  244. package/selectedPartTags.js +21 -0
  245. package/selectionLayer.js +25 -0
  246. package/selectors/annotationSearchSelector.d.ts +1 -1
  247. package/sequence.js +12 -0
  248. package/sequenceDataHistory.js +43 -0
  249. package/sequenceDataSelector.js +2 -0
  250. package/sequenceLengthSelector.js +5 -0
  251. package/sequenceSelector.js +4 -0
  252. package/sharedActionCreators.js +0 -0
  253. package/shouldFlipText.js +4 -0
  254. package/shouldRerender.js +27 -0
  255. package/showFileDialog.js +25 -0
  256. package/showGCContent.js +23 -0
  257. package/show_cut_sites.png +0 -0
  258. package/show_features.png +0 -0
  259. package/show_orfs.png +0 -0
  260. package/show_primers.png +0 -0
  261. package/simpleDialog.css +13 -0
  262. package/specialCutsiteFilterOptions.js +22 -0
  263. package/src/Editor/DropHandler.js +2 -1
  264. package/src/Editor/index.js +0 -2
  265. package/src/RowItem/StackedAnnotations/getStructuredBases.js +20 -6
  266. package/src/ToolBar/cutsiteTool.js +1 -1
  267. package/src/helperComponents/PropertiesDialog/TranslationProperties.js +2 -1
  268. package/style.css +3 -12100
  269. package/tagsToBoldSelector.js +2 -0
  270. package/toggle_views.svg +1 -0
  271. package/toolBar.js +23 -0
  272. package/translationSearchMatchesSelector.js +14 -0
  273. package/translations.js +20 -0
  274. package/translationsRawSelector.js +8 -0
  275. package/translationsSelector.js +137 -0
  276. package/typeField.js +24 -0
  277. package/undoTool.js +30 -0
  278. package/updateEditor.d.ts +1 -3
  279. package/updateEditor.js +200 -0
  280. package/updateLabelsForInViewFeatures.js +55 -0
  281. package/updateLabelsForInViewFeaturesCircView.js +41 -0
  282. package/updateTrackHelper.js +58 -0
  283. package/uppercaseSequenceMapFont.js +25 -0
  284. package/upsertDeleteActionGenerator.js +31 -0
  285. package/useAAColorType.js +8 -0
  286. package/useAdditionalOrfStartCodons.js +24 -0
  287. package/useAnnotationLimits.js +42 -0
  288. package/useChromatogramPrefs.js +31 -0
  289. package/useFormValue.js +7 -0
  290. package/useLadders.js +6 -0
  291. package/useMeltingTemp.js +7 -0
  292. package/useTmType.js +10 -0
  293. package/userDefinedHandlersAndOpts.js +61 -0
  294. package/utils/getAnnotationNameAndStartStopString.d.ts +1 -5
  295. package/utils/selectionLayer.d.ts +2 -2
  296. package/utils.js +37 -0
  297. package/versionHistory.js +26 -0
  298. package/versionHistoryTool.js +21 -0
  299. package/viewSubmenu.js +479 -0
  300. package/visibilityTool.js +39 -0
  301. package/withEditorInteractions/getBpsPerRow.d.ts +1 -3
  302. package/withHover.js +113 -0
  303. package/withRestrictionEnzymes.js +15 -0
  304. package/index.umd.js +0 -188322
package/cutsiteTool.js ADDED
@@ -0,0 +1,88 @@
1
+ import { Icon, Button, KeyCombo } from "@blueprintjs/core";
2
+ import CutsiteFilter from "../CutsiteFilter";
3
+ import React from "react";
4
+ import ToolbarItem from "./ToolbarItem";
5
+ import { connectToEditor } from "../withEditorProps";
6
+ import { userDefinedHandlersAndOpts } from "../Editor/userDefinedHandlersAndOpts";
7
+ import { pick } from "lodash-es";
8
+
9
+ export default connectToEditor(
10
+ ({ readOnly, annotationVisibility = {}, toolBar = {} }) => {
11
+ return {
12
+ readOnly,
13
+ toggled: annotationVisibility.cutsites,
14
+ isOpen: toolBar.openItem === "cutsiteTool"
15
+ };
16
+ }
17
+ )(({ toolbarItemProps, toggled, isOpen, annotationVisibilityToggle }) => {
18
+ return (
19
+ <ToolbarItem
20
+ {...{
21
+ Icon: <Icon data-test="cutsiteHideShowTool" icon="cut" />,
22
+ onIconClick: function () {
23
+ annotationVisibilityToggle("cutsites");
24
+ },
25
+ toggled,
26
+ tooltip: "Show cut sites",
27
+ tooltipToggled: "Hide cut sites",
28
+ Dropdown: CutsiteToolDropDown,
29
+ dropdowntooltip: (!isOpen ? "Show" : "Hide") + " Cut Site Options",
30
+ ...toolbarItemProps
31
+ }}
32
+ />
33
+ );
34
+ });
35
+ // import show_cut_sites_img from "./veToolbarIcons/show_cut_sites.png";
36
+
37
+ // function CutsiteToolIcon({ annotationVisibilityToggle }) {
38
+ // return (
39
+ // <div
40
+ // onClick={function() {
41
+ // annotationVisibilityToggle("cutsites");
42
+ // }}
43
+ // >
44
+ // <img src={show_cut_sites_img} alt="Show cut sites" />
45
+ // </div>
46
+ // );
47
+ // }
48
+
49
+ function CutsiteToolDropDown({
50
+ editorName,
51
+ toggleDropdown,
52
+ annotationVisibilityShow,
53
+ withDigestTool,
54
+ createNewDigest,
55
+
56
+ ...rest
57
+ }) {
58
+ return (
59
+ <div className="veToolbarCutsiteFilterHolder">
60
+ <h6>
61
+ Filter Cut Sites{" "}
62
+ <span style={{ fontSize: 12, color: "grey" }}>
63
+ (Search by name or # of cuts)
64
+ </span>
65
+ </h6>
66
+ <CutsiteFilter
67
+ {...pick(rest, userDefinedHandlersAndOpts)}
68
+ editorName={editorName}
69
+ onChangeHook={function () {
70
+ annotationVisibilityShow("cutsites");
71
+ }}
72
+ closeDropDown={() => toggleDropdown({ forceClose: true })}
73
+ />
74
+ {withDigestTool && (
75
+ <Button
76
+ onClick={() => {
77
+ createNewDigest();
78
+ toggleDropdown();
79
+ }}
80
+ >
81
+ <span style={{ display: "flex" }}>
82
+ Virtual Digest &nbsp; <KeyCombo minimal combo="mod+shift+d" />
83
+ </span>
84
+ </Button>
85
+ )}
86
+ </div>
87
+ );
88
+ }
@@ -0,0 +1,5 @@
1
+ // import cutsitesSelector from './cutsitesSelector';
2
+ // export default function (state) {
3
+ // var {cutsites} = cutsitesSelector(state)
4
+
5
+ // }
@@ -0,0 +1,61 @@
1
+ import shortid from "shortid";
2
+ import circularSelector from "./circularSelector";
3
+ import sequenceSelector from "./sequenceSelector";
4
+ import restrictionEnzymesSelector from "./restrictionEnzymesSelector";
5
+ import cutsiteLabelColorSelector from "./cutsiteLabelColorSelector";
6
+ import { createSelector } from "reselect";
7
+
8
+ import { flatMap as flatmap, map } from "lodash-es";
9
+ import { getCutsitesFromSequence } from "@teselagen/sequence-utils";
10
+ import { getLowerCaseObj } from "../utils/arrayUtils";
11
+
12
+ function cutsitesSelector(sequence, circular, enzymeList, cutsiteLabelColors) {
13
+ //get the cutsites grouped by enzyme
14
+ const cutsitesByName = getLowerCaseObj(
15
+ getCutsitesFromSequence(sequence, circular, map(enzymeList))
16
+ );
17
+ //tag each cutsite with a unique id
18
+ const cutsitesById = {};
19
+ Object.keys(cutsitesByName).forEach(function (enzymeName) {
20
+ const cutsitesForEnzyme = cutsitesByName[enzymeName];
21
+ cutsitesForEnzyme.forEach(function (cutsite) {
22
+ const numberOfCuts = cutsitesByName[enzymeName].length;
23
+ const uniqueId = shortid();
24
+ cutsite.id = uniqueId;
25
+ cutsite.numberOfCuts = numberOfCuts;
26
+ cutsite.annotationType = "cutsite";
27
+ cutsitesById[uniqueId] = cutsite;
28
+ const mergedCutsiteColors = Object.assign(
29
+ { single: "salmon", double: "lightblue", multi: "lightgrey" },
30
+ cutsiteLabelColors
31
+ );
32
+ if (numberOfCuts === 1) {
33
+ cutsite.labelColor = mergedCutsiteColors.single;
34
+ cutsite.labelClassname = "singleCutter";
35
+ } else if (numberOfCuts === 2) {
36
+ cutsite.labelColor = mergedCutsiteColors.double;
37
+ cutsite.labelClassname = "doubleCutter";
38
+ } else {
39
+ cutsite.labelColor = mergedCutsiteColors.multi;
40
+ cutsite.labelClassname = "multiCutter";
41
+ }
42
+ });
43
+ });
44
+ // create an array of the cutsites
45
+ const cutsitesArray = flatmap(cutsitesByName, function (cutsitesForEnzyme) {
46
+ return cutsitesForEnzyme;
47
+ });
48
+ return {
49
+ cutsitesByName,
50
+ cutsitesById,
51
+ cutsitesArray
52
+ };
53
+ }
54
+
55
+ export default createSelector(
56
+ sequenceSelector,
57
+ circularSelector,
58
+ restrictionEnzymesSelector,
59
+ cutsiteLabelColorSelector,
60
+ cutsitesSelector
61
+ );
package/darkmode.css ADDED
@@ -0,0 +1,98 @@
1
+ .bp3-dark .veAxisLine {
2
+ stroke: #f5f8fa !important;
3
+ }
4
+ .bp3-dark .veAxisTick,
5
+ .bp3-dark .veCutsite {
6
+ fill: #f5f8fa;
7
+ }
8
+
9
+ .bp3-dark .veEditor:not(.tg-simple-dna-view) {
10
+ background: #293742 !important;
11
+ }
12
+
13
+ .veLabelLine {
14
+ stroke: black;
15
+ background: black;
16
+ }
17
+ .bp3-dark .veCaret,
18
+ .bp3-dark .veLabelLine {
19
+ stroke: white;
20
+ background: white;
21
+ }
22
+ .bp3-dark .veLabelLine {
23
+ stroke: #f5f8fa !important;
24
+ background: #f5f8fa !important;
25
+ }
26
+
27
+ .bp3-dark .veEditor .veRowViewCaret {
28
+ background: #f5f8fa !important;
29
+ }
30
+
31
+ .bp3-dark .veEditor text {
32
+ fill: #f5f8fa;
33
+ }
34
+
35
+ .bp3-dark .veRowViewPartsContainer text,
36
+ .bp3-dark .veLabelText.black {
37
+ fill: #f5f8fa !important;
38
+ }
39
+
40
+ .bp3-dark .tag-selection.selected {
41
+ border-color: #f5f8fa !important;
42
+ }
43
+
44
+ .bp3-dark .veLinearView text {
45
+ fill: #f5f8fa !important;
46
+ }
47
+ .bp3-dark .veCircularViewAxisNumber rect {
48
+ fill: #f5f8fa !important;
49
+ }
50
+
51
+ .bp3-dark .menu-bar {
52
+ background: none !important;
53
+ }
54
+
55
+ .alignmentViewTrackContainer {
56
+ background: white;
57
+ }
58
+ .bp3-dark .alignmentViewTrackContainer {
59
+ background: #293742;
60
+ }
61
+ .bp3-dark .alignmentViewTrackContainer text {
62
+ fill: #f5f8fa !important;
63
+ }
64
+
65
+ /* .bp3-dark .veRowViewAxis text {
66
+ stroke: #f5f8fa !important;
67
+ } */
68
+
69
+ .bp3-dark .translationLayer text {
70
+ fill: black !important;
71
+ }
72
+
73
+ .bp3-dark .step-group.active .step-text {
74
+ color: #2b95d6 !important;
75
+ }
76
+
77
+ .bp3-dark .step-group.active .step-mark {
78
+ background-color: #2b95d6 !important;
79
+ border-color: #2b95d6 !important;
80
+ }
81
+
82
+ .bp3-dark .tool-select-item:hover {
83
+ background: #0e5a8a !important;
84
+ }
85
+
86
+ .bp3-dark .veWhiteBackground {
87
+ background: #293742;
88
+ }
89
+
90
+ .bp3-dark .vePart path:first-of-type {
91
+ stroke-width: 1;
92
+ stroke: #df7ff1 !important;
93
+ }
94
+
95
+ .bp3-dark .vePart .veLabelText,
96
+ .bp3-dark .veLabelText.vePart {
97
+ fill: #ac68cc !important;
98
+ }
@@ -0,0 +1,150 @@
1
+ //only things specific to this menu should be included here
2
+ //things that are shared between multiple menus, or that are command specific should be
3
+ //defined in the commands/index.js file
4
+
5
+ import viewSubmenu from "./viewSubmenu";
6
+ export const copyOptionsMenu = {
7
+ text: "Copy Options",
8
+ showInSearchMenu: true,
9
+ submenu: [
10
+ { cmd: "toggleCopyFeatures", shouldDismissPopover: false },
11
+ { cmd: "toggleCopyPartialFeatures", shouldDismissPopover: false },
12
+ { cmd: "toggleCopyParts", shouldDismissPopover: false },
13
+ { cmd: "toggleCopyPartialParts", shouldDismissPopover: false }
14
+ ]
15
+ };
16
+ export const createNewAnnotationMenu = {
17
+ text: "Create",
18
+ cmd: "createMenuHolder",
19
+ showInSearchMenu: true
20
+ };
21
+ export default [
22
+ {
23
+ text: "File",
24
+ "data-test": "file",
25
+ submenu: [
26
+ {
27
+ cmd: "newSequence",
28
+ "data-test": "newSequence"
29
+ },
30
+ "renameSequence",
31
+ "saveSequence",
32
+ "saveSequenceAs",
33
+ "deleteSequence",
34
+ "duplicateSequence",
35
+ "--",
36
+ { cmd: "toggleReadOnlyMode", shouldDismissPopover: false },
37
+ "--",
38
+ "importSequence",
39
+ {
40
+ text: "Export Sequence",
41
+ showInSearchMenu: true,
42
+ submenu: [
43
+ { cmd: "exportSequenceAsGenbank" },
44
+ { cmd: "exportDNASequenceAsFasta" },
45
+ { cmd: "exportProteinSequenceAsFasta" },
46
+ { cmd: "exportSequenceAsTeselagenJson" }
47
+ ]
48
+ },
49
+ "--",
50
+ {
51
+ text: "Print",
52
+ cmd: "print"
53
+ // submenu: [{ cmd: "printCircularView" }, { cmd: "printLinearView" }]
54
+ },
55
+ { cmd: "viewRevisionHistory", text: "Revision History" },
56
+ { cmd: "viewProperties", text: "Properties", icon: "properties" }
57
+ ]
58
+ },
59
+ {
60
+ text: "Edit",
61
+ submenu: [
62
+ createNewAnnotationMenu,
63
+ "--",
64
+ "cut",
65
+ "copy",
66
+ copyOptionsMenu,
67
+ "paste",
68
+ "--",
69
+ "undo",
70
+ "redo",
71
+ "--",
72
+ "find",
73
+ "goTo",
74
+ "--",
75
+ "select",
76
+ "selectAll",
77
+ "selectInverse",
78
+ {
79
+ text: "Change Case",
80
+ cmd: "changeCaseCmd",
81
+ submenu: [
82
+ "flipCaseSequence",
83
+ "upperCaseSequence",
84
+ "lowerCaseSequence",
85
+ "upperCaseSelection",
86
+ "lowerCaseSelection"
87
+ ]
88
+ },
89
+ {
90
+ text: "Change Circular/Linear",
91
+ cmd: "changeCircularityCmd",
92
+ submenu: ["toggleCircular", "toggleLinear"]
93
+ },
94
+ // {
95
+ // text: "Change Sequence Case For Selection",
96
+ // submenu: [
97
+ // ]
98
+ // },
99
+ "--",
100
+ "complementSelection",
101
+ "complementEntireSequence",
102
+ "reverseComplementSelection",
103
+ "reverseComplementEntireSequence",
104
+ "rotateToCaretPosition"
105
+ ]
106
+ },
107
+ {
108
+ text: "View",
109
+ submenu: viewSubmenu
110
+ },
111
+ {
112
+ text: "Tools",
113
+ cmd: "toolsCmd",
114
+ submenu: [
115
+ "openFilterCutsites",
116
+ "restrictionEnzymesManager",
117
+ "openCreateCustomEnzyme",
118
+ "simulateDigestion",
119
+ "simulatePCR",
120
+ {
121
+ text: "Remove Duplicates",
122
+ submenu: [
123
+ "showRemoveDuplicatesDialogFeatures",
124
+ "showRemoveDuplicatesDialogParts",
125
+ "showRemoveDuplicatesDialogPrimers"
126
+ ]
127
+ },
128
+ {
129
+ text: "Auto Annotate",
130
+ cmd: "autoAnnotateHolder",
131
+ submenu: [
132
+ "autoAnnotateFeatures",
133
+ "autoAnnotateParts",
134
+ "autoAnnotatePrimers"
135
+ ]
136
+ }
137
+ ]
138
+ },
139
+ // { isMenuSearch: true }
140
+ {
141
+ text: "Help",
142
+ submenu: [
143
+ { isMenuSearch: true },
144
+ "--",
145
+ "about",
146
+ { cmd: "versionNumber", shouldDismissPopover: false },
147
+ "hotkeyDialog"
148
+ ]
149
+ }
150
+ ];
@@ -0,0 +1,36 @@
1
+ //./deletionLayers.js
2
+ import { createReducer } from "redux-act";
3
+ import createAction from "./utils/createMetaAction";
4
+ import omit from "lodash/omit";
5
+
6
+ // ------------------------------------
7
+ // Actions
8
+ // ------------------------------------
9
+ export const deletionLayerClear = createAction("deletionLayerClear");
10
+ export const deletionLayerUpdate = createAction("DELETION_LAYER_UPDATE");
11
+ export const deletionLayerDelete = createAction("DELETION_LAYER_DELETE");
12
+
13
+ // ------------------------------------
14
+ // Reducer
15
+ // ------------------------------------
16
+ export default createReducer(
17
+ {
18
+ [deletionLayerClear]: () => {
19
+ return {};
20
+ },
21
+ [deletionLayerUpdate]: (state, payload) => {
22
+ return {
23
+ ...state,
24
+ [payload.id]: {
25
+ color: "firebrick",
26
+ id: payload.id,
27
+ ...payload.range
28
+ }
29
+ };
30
+ },
31
+ [deletionLayerDelete]: (state, payload) => {
32
+ return omit(state, payload.id);
33
+ }
34
+ },
35
+ {}
36
+ );
package/description.js ADDED
@@ -0,0 +1,21 @@
1
+ import { createReducer } from "redux-act";
2
+ import createAction from "../utils/createMetaAction";
3
+
4
+ // ------------------------------------
5
+ // Actions
6
+ // ------------------------------------
7
+ export const sequenceDescriptionUpdate = createAction(
8
+ "sequenceDescriptionUpdate"
9
+ );
10
+
11
+ // ------------------------------------
12
+ // Reducer
13
+ // ------------------------------------
14
+ export default createReducer(
15
+ {
16
+ [sequenceDescriptionUpdate]: (state, payload) => {
17
+ return payload;
18
+ }
19
+ },
20
+ ""
21
+ );
package/digestTool.js ADDED
@@ -0,0 +1,34 @@
1
+ import createAction from "./utils/createMetaAction";
2
+ import createMergedDefaultStateReducer from "./utils/createMergedDefaultStateReducer";
3
+
4
+ // ------------------------------------
5
+ // Actions
6
+ // ------------------------------------
7
+ export const updateSelectedFragment = createAction("updateSelectedFragment");
8
+ export const updateComputePartialDigest = createAction(
9
+ "updateComputePartialDigest"
10
+ );
11
+
12
+ // ------------------------------------
13
+ // Reducer
14
+ // ------------------------------------
15
+ export default createMergedDefaultStateReducer(
16
+ {
17
+ [updateSelectedFragment]: (state, payload) => {
18
+ return {
19
+ ...state,
20
+ selectedFragment: payload
21
+ };
22
+ },
23
+ [updateComputePartialDigest]: (state, payload) => {
24
+ return {
25
+ ...state,
26
+ computePartialDigest: payload
27
+ };
28
+ }
29
+ },
30
+ {
31
+ selectedFragment: undefined,
32
+ computePartialDigest: false
33
+ }
34
+ );
package/dnaToColor.js ADDED
@@ -0,0 +1,17 @@
1
+ import { DNAComplementMap } from "@teselagen/sequence-utils";
2
+
3
+ const dnaToColor = {
4
+ a: "lightgreen",
5
+ c: "#658fff",
6
+ g: "yellow",
7
+ t: "#EE6262"
8
+ };
9
+ export default dnaToColor;
10
+
11
+ export function getDnaColor(char, isReverse) {
12
+ return (
13
+ dnaToColor[
14
+ isReverse ? DNAComplementMap[char.toLowerCase()] : char.toLowerCase()
15
+ ] || "lightgrey"
16
+ );
17
+ }
@@ -0,0 +1,39 @@
1
+ import React from "react";
2
+ import { Icon, Menu } from "@blueprintjs/core";
3
+ import { createCommandMenu } from "@teselagen/ui";
4
+ import getCommands from "../commands";
5
+
6
+ import { connectToEditor } from "../withEditorProps";
7
+ import ToolbarItem from "./ToolbarItem";
8
+ import withEditorProps from "../withEditorProps";
9
+
10
+ export default connectToEditor()(({ toolbarItemProps }) => {
11
+ return (
12
+ <ToolbarItem
13
+ {...{
14
+ tooltip: "Export",
15
+ Dropdown,
16
+ noDropdownIcon: true,
17
+ onIconClick: "toggleDropdown",
18
+ Icon: <Icon data-test="veDownloadTool" icon="import" />,
19
+ ...toolbarItemProps
20
+ }}
21
+ />
22
+ );
23
+ });
24
+
25
+ const Dropdown = withEditorProps(props => {
26
+ return (
27
+ <Menu>
28
+ {createCommandMenu(
29
+ [
30
+ "exportSequenceAsGenbank",
31
+ "exportDNASequenceAsFasta",
32
+ "exportProteinSequenceAsFasta",
33
+ "exportSequenceAsTeselagenJson"
34
+ ],
35
+ getCommands({ props })
36
+ )}
37
+ </Menu>
38
+ );
39
+ });
@@ -0,0 +1,5 @@
1
+ export default {
2
+ caret: "veCaret",
3
+ selectionStart: "veSelectionLayerStart",
4
+ selectionEnd: "veSelectionLayerEnd"
5
+ };