@teselagen/ove 0.0.14 → 0.0.16

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 (362) hide show
  1. package/index.umd.js +164825 -135871
  2. package/package.json +78 -9
  3. package/src/AlignmentTool/index.js +16 -0
  4. package/src/AlignmentView/AlignmentVisibilityTool.js +105 -0
  5. package/src/AlignmentView/EditTrackNameDialog.js +34 -0
  6. package/src/AlignmentView/HorizontalPanelDragHandle.js +35 -0
  7. package/src/AlignmentView/Minimap.js +520 -0
  8. package/src/AlignmentView/Mismatches.js +134 -0
  9. package/src/AlignmentView/PairwiseAlignmentView.js +68 -0
  10. package/src/AlignmentView/PerformantSelectionLayer.js +32 -0
  11. package/src/AlignmentView/coerceInitialValue.js +7 -0
  12. package/src/AlignmentView/getGapMap.js +12 -0
  13. package/src/AlignmentView/getGaps.js +27 -0
  14. package/src/AlignmentView/getPairwiseOverviewLinearViewOptions.js +38 -0
  15. package/src/AlignmentView/getTrackFromEvent.js +25 -0
  16. package/src/AlignmentView/index.js +2058 -0
  17. package/src/AlignmentView/isTargetWithinEl.js +6 -0
  18. package/src/AlignmentView/style.css +100 -0
  19. package/src/AlignmentView/updateTrackHelper.js +58 -0
  20. package/src/AutoAnnotate.js +500 -0
  21. package/src/AutoAnnotateBpMatchingDialog.js +208 -0
  22. package/src/CircularView/Axis.js +40 -0
  23. package/src/CircularView/AxisNumbers.js +35 -0
  24. package/src/CircularView/Caret.js +63 -0
  25. package/src/CircularView/CircularDnaSequence.js +73 -0
  26. package/src/CircularView/CircularZoomMinimap.js +16 -0
  27. package/src/CircularView/Cutsite.js +18 -0
  28. package/src/CircularView/Cutsites.js +113 -0
  29. package/src/CircularView/DeletionLayer.js +28 -0
  30. package/src/CircularView/Feature.js +83 -0
  31. package/src/CircularView/Labels/index.js +536 -0
  32. package/src/CircularView/Labels/relaxLabelAngles.js +157 -0
  33. package/src/CircularView/Labels/relaxLabels_DEPRECATED.js +105 -0
  34. package/src/CircularView/Labels/style.css +55 -0
  35. package/src/CircularView/Orf.js +25 -0
  36. package/src/CircularView/Part.js +34 -0
  37. package/src/CircularView/PositionAnnotationOnCircle.js +26 -0
  38. package/src/CircularView/Primer.js +41 -0
  39. package/src/CircularView/RotateCircularViewSlider.js +82 -0
  40. package/src/CircularView/SelectionLayer.js +132 -0
  41. package/src/CircularView/VeTopRightContainer.js +12 -0
  42. package/src/CircularView/ZoomCircularViewSlider.js +62 -0
  43. package/src/CircularView/drawAnnotations.js +433 -0
  44. package/src/CircularView/drawDirectedPiePiece.js +142 -0
  45. package/src/CircularView/getAngleForPositionMidpoint.js +3 -0
  46. package/src/CircularView/getInternalLabel.js +40 -0
  47. package/src/CircularView/getRangeAnglesSpecial.js +12 -0
  48. package/src/CircularView/getYOffset.js +15 -0
  49. package/src/CircularView/index.d.ts +20 -0
  50. package/src/CircularView/index.js +930 -0
  51. package/src/CircularView/normalizeAngle.js +3 -0
  52. package/src/CircularView/normalizeAngleRange.js +9 -0
  53. package/src/CircularView/positionCutsites.js +6 -0
  54. package/src/CircularView/shouldFlipText.js +4 -0
  55. package/src/CircularView/style.css +47 -0
  56. package/src/CircularView/utils/polarToSpecialCartesian.js +7 -0
  57. package/src/CreateAnnotationsPage.js +96 -0
  58. package/src/CreateCustomEnzyme/index.js +337 -0
  59. package/src/CreateCustomEnzyme/style.css +100 -0
  60. package/src/CutsiteFilter/AdditionalCutsiteInfoDialog.js +599 -0
  61. package/src/CutsiteFilter/index.js +408 -0
  62. package/src/CutsiteFilter/style.css +23 -0
  63. package/src/CutsiteFilter/withRestrictionEnzymes.js +15 -0
  64. package/src/DigestTool/AddLaddersDialog.js +82 -0
  65. package/src/DigestTool/DigestTool.js +223 -0
  66. package/src/DigestTool/Ladder.css +20 -0
  67. package/src/DigestTool/Ladder.js +303 -0
  68. package/src/DigestTool/createFragmentLines.js +120 -0
  69. package/src/DigestTool/ladderDefaults.js +26 -0
  70. package/src/DigestTool/ruler.css +89 -0
  71. package/src/Editor/CommandHotkeyHandler.js +44 -0
  72. package/src/Editor/DropHandler.css +21 -0
  73. package/src/Editor/DropHandler.js +64 -0
  74. package/src/Editor/FillWindow.js +46 -0
  75. package/src/Editor/darkmode.css +98 -0
  76. package/src/Editor/index.js +1005 -0
  77. package/src/Editor/style.css +235 -0
  78. package/src/Editor/userDefinedHandlersAndOpts.js +56 -0
  79. package/src/EnzymeViewer/index.js +81 -0
  80. package/src/EnzymeViewer/style.css +6 -0
  81. package/src/FindBar/index.js +411 -0
  82. package/src/FindBar/style.css +46 -0
  83. package/src/GlobalDialog.js +66 -0
  84. package/src/GlobalDialogUtils.js +85 -0
  85. package/src/LinearView/SequenceName.js +15 -0
  86. package/src/LinearView/ZoomLinearView.js +47 -0
  87. package/src/LinearView/index.js +374 -0
  88. package/src/LinearView/style.css +12 -0
  89. package/src/ManageEnzymes/index.js +326 -0
  90. package/src/ManageEnzymes/style.css +100 -0
  91. package/src/MenuBar/defaultConfig.js +149 -0
  92. package/src/MenuBar/index.js +98 -0
  93. package/src/MenuBar/viewSubmenu.js +479 -0
  94. package/src/PCRTool/PCRTool.js +173 -0
  95. package/src/Reflex/Browser.js +107 -0
  96. package/src/Reflex/ReflexContainer.js +802 -0
  97. package/src/Reflex/ReflexElement.js +160 -0
  98. package/src/Reflex/ReflexEvents.js +77 -0
  99. package/src/Reflex/ReflexSplitter.js +205 -0
  100. package/src/Reflex/index.js +5 -0
  101. package/src/Reflex/reflex-styles.css +128 -0
  102. package/src/Reflex/reflex-styles.css.map +9 -0
  103. package/src/RowItem/AnnotationContainerHolder.js +20 -0
  104. package/src/RowItem/AnnotationPositioner.js +27 -0
  105. package/src/RowItem/Axis.js +149 -0
  106. package/src/RowItem/Caret/index.js +64 -0
  107. package/src/RowItem/Caret/style.css +8 -0
  108. package/src/RowItem/Chromatograms/Chromatogram.js +289 -0
  109. package/src/RowItem/CutsiteSelectionLayers.js +47 -0
  110. package/src/RowItem/Cutsites.js +271 -0
  111. package/src/RowItem/DeletionLayers/index.js +113 -0
  112. package/src/RowItem/DeletionLayers/style.css +5 -0
  113. package/src/RowItem/Labels.js +327 -0
  114. package/src/RowItem/Orf.js +109 -0
  115. package/src/RowItem/Orfs.js +35 -0
  116. package/src/RowItem/ReplacementLayers/style.css +5 -0
  117. package/src/RowItem/SelectionLayer/index.js +184 -0
  118. package/src/RowItem/SelectionLayer/style.css +21 -0
  119. package/src/RowItem/Sequence.js +269 -0
  120. package/src/RowItem/StackedAnnotations/PointedAnnotation.js +347 -0
  121. package/src/RowItem/StackedAnnotations/getStructuredBases.js +97 -0
  122. package/src/RowItem/StackedAnnotations/index.js +182 -0
  123. package/src/RowItem/StackedAnnotations/primerBases.js +218 -0
  124. package/src/RowItem/StackedAnnotations/style.css +14 -0
  125. package/src/RowItem/Translations/AASliver.js +190 -0
  126. package/src/RowItem/Translations/Translation.js +162 -0
  127. package/src/RowItem/Translations/index.js +54 -0
  128. package/src/RowItem/Translations/style.css +3 -0
  129. package/src/RowItem/constants.js +3 -0
  130. package/src/RowItem/getCutsiteLabelHeights.js +56 -0
  131. package/src/RowItem/getXStartAndWidthFromNonCircularRange.js +12 -0
  132. package/src/RowItem/getXStartAndWidthOfRangeWrtRow.js +27 -0
  133. package/src/RowItem/getXStartAndWidthOfRowAnnotation.js +19 -0
  134. package/src/RowItem/index.js +647 -0
  135. package/src/RowItem/partOverhangs.js +6 -0
  136. package/src/RowItem/style.css +103 -0
  137. package/src/RowItem/utils.js +32 -0
  138. package/src/RowView/estimateRowHeight.js +184 -0
  139. package/src/RowView/index.d.ts +10 -0
  140. package/src/RowView/index.js +554 -0
  141. package/src/RowView/style.css +12 -0
  142. package/src/SimpleCircularOrLinearView.js +379 -0
  143. package/src/SimpleOligoPreview.js +39 -0
  144. package/src/StatusBar/MeltingTemp.js +81 -0
  145. package/src/StatusBar/index.js +275 -0
  146. package/src/StatusBar/style.css +38 -0
  147. package/src/ToolBar/ToolbarItem.js +194 -0
  148. package/src/ToolBar/alignmentTool.js +503 -0
  149. package/src/ToolBar/array_move.js +10 -0
  150. package/src/ToolBar/cutsiteTool.js +88 -0
  151. package/src/ToolBar/downloadTool.js +38 -0
  152. package/src/ToolBar/editTool.js +26 -0
  153. package/src/ToolBar/featureTool.js +34 -0
  154. package/src/ToolBar/findTool.js +2 -0
  155. package/src/ToolBar/importTool.js +27 -0
  156. package/src/ToolBar/index.js +231 -0
  157. package/src/ToolBar/inlineFindTool.js +38 -0
  158. package/src/ToolBar/oligoTool.js +30 -0
  159. package/src/ToolBar/orfTool.js +141 -0
  160. package/src/ToolBar/partTool.js +47 -0
  161. package/src/ToolBar/printTool.js +31 -0
  162. package/src/ToolBar/redoTool.js +30 -0
  163. package/src/ToolBar/saveTool.js +48 -0
  164. package/src/ToolBar/style.css +138 -0
  165. package/src/ToolBar/undoTool.js +30 -0
  166. package/src/ToolBar/veToolbarIcons/find.png +0 -0
  167. package/src/ToolBar/veToolbarIcons/fullscreen.png +0 -0
  168. package/src/ToolBar/veToolbarIcons/linear.png +0 -0
  169. package/src/ToolBar/veToolbarIcons/pie.png +0 -0
  170. package/src/ToolBar/veToolbarIcons/print.png +0 -0
  171. package/src/ToolBar/veToolbarIcons/save.png +0 -0
  172. package/src/ToolBar/veToolbarIcons/show_cut_sites.png +0 -0
  173. package/src/ToolBar/veToolbarIcons/show_features.png +0 -0
  174. package/src/ToolBar/veToolbarIcons/show_orfs.png +0 -0
  175. package/src/ToolBar/veToolbarIcons/show_primers.png +0 -0
  176. package/src/ToolBar/veToolbarIcons/toggle_views.svg +1 -0
  177. package/src/ToolBar/versionHistoryTool.js +20 -0
  178. package/src/ToolBar/visibilityTool.js +39 -0
  179. package/src/VersionHistoryView/index.js +215 -0
  180. package/src/addAlignment.js +6 -0
  181. package/src/commands/getOveHotkeyDefs.js +12 -0
  182. package/src/commands/index.js +1585 -0
  183. package/src/constants/constants.js +2 -0
  184. package/src/constants/dnaToColor.js +17 -0
  185. package/src/constants/draggableClassnames.js +5 -0
  186. package/src/constants/findToolConstants.js +1 -0
  187. package/src/constants/orfFrameToColorMap.js +10 -0
  188. package/src/constants/rowviewContants.js +3 -0
  189. package/src/constants/specialCutsiteFilterOptions.js +22 -0
  190. package/src/constants.js +1 -0
  191. package/src/createVectorEditor/index.js +138 -0
  192. package/src/createVectorEditor/makeStore.js +34 -0
  193. package/src/fileUtils.js +103 -0
  194. package/src/helperComponents/AddOrEditAnnotationDialog/index.js +711 -0
  195. package/src/helperComponents/AddOrEditAnnotationDialog/style.css +11 -0
  196. package/src/helperComponents/AddOrEditFeatureDialog/index.js +58 -0
  197. package/src/helperComponents/AddOrEditPartDialog/index.js +101 -0
  198. package/src/helperComponents/AddOrEditPrimerDialog/EditCaretPosition.js +234 -0
  199. package/src/helperComponents/AddOrEditPrimerDialog/index.js +329 -0
  200. package/src/helperComponents/AddOrEditPrimerDialog/style.css +41 -0
  201. package/src/helperComponents/EnzymesDialog/index.js +904 -0
  202. package/src/helperComponents/EnzymesDialog/style.css +21 -0
  203. package/src/helperComponents/GoToDialog.js +21 -0
  204. package/src/helperComponents/MergeFeaturesDialog/index.js +253 -0
  205. package/src/helperComponents/MergeFeaturesDialog/style.css +3 -0
  206. package/src/helperComponents/MultipleSeqsDetectedOnImportDialog.js +74 -0
  207. package/src/helperComponents/PinchHelper/PinchHelper.js +24 -0
  208. package/src/helperComponents/PrintDialog/index.js +396 -0
  209. package/src/helperComponents/PrintDialog/style.css +4 -0
  210. package/src/helperComponents/PropertiesDialog/ColorPicker.js +30 -0
  211. package/src/helperComponents/PropertiesDialog/CutsiteProperties.js +185 -0
  212. package/src/helperComponents/PropertiesDialog/FeatureProperties.js +6 -0
  213. package/src/helperComponents/PropertiesDialog/GenbankView.js +74 -0
  214. package/src/helperComponents/PropertiesDialog/GeneralProperties.js +140 -0
  215. package/src/helperComponents/PropertiesDialog/GenericAnnotationProperties.js +406 -0
  216. package/src/helperComponents/PropertiesDialog/OrfProperties.js +117 -0
  217. package/src/helperComponents/PropertiesDialog/PartProperties.js +9 -0
  218. package/src/helperComponents/PropertiesDialog/PrimerProperties.js +19 -0
  219. package/src/helperComponents/PropertiesDialog/SingleEnzymeCutsiteInfo.js +131 -0
  220. package/src/helperComponents/PropertiesDialog/TranslationProperties.js +149 -0
  221. package/src/helperComponents/PropertiesDialog/index.js +166 -0
  222. package/src/helperComponents/PropertiesDialog/style.css +68 -0
  223. package/src/helperComponents/PropertiesDialog/typeField.js +24 -0
  224. package/src/helperComponents/PropertiesDialog/utils.js +37 -0
  225. package/src/helperComponents/RemoveDuplicates/index.js +194 -0
  226. package/src/helperComponents/RenameSequenceDialog.js +7 -0
  227. package/src/helperComponents/SelectDialog.js +150 -0
  228. package/src/helperComponents/UncontrolledSliderWithPlusMinusBtns.css +5 -0
  229. package/src/helperComponents/UncontrolledSliderWithPlusMinusBtns.js +134 -0
  230. package/src/helperComponents/VeWarning/index.js +22 -0
  231. package/src/helperComponents/VeWarning/style.css +10 -0
  232. package/src/helperComponents/createSimpleDialog.js +89 -0
  233. package/src/helperComponents/partTagSearch.js +72 -0
  234. package/src/helperComponents/simpleDialog.css +13 -0
  235. package/src/helperComponents/withHover.js +90 -0
  236. package/src/index.js +60 -0
  237. package/src/redux/alignments.js +373 -0
  238. package/src/redux/annotationLabelVisibility.js +53 -0
  239. package/src/redux/annotationVisibility.js +196 -0
  240. package/src/redux/annotationsToSupport.js +104 -0
  241. package/src/redux/caretPosition.js +27 -0
  242. package/src/redux/charWidth.js +22 -0
  243. package/src/redux/copyOptions.js +34 -0
  244. package/src/redux/createYourOwnEnzyme.js +39 -0
  245. package/src/redux/deletionLayers.js +36 -0
  246. package/src/redux/digestTool.js +34 -0
  247. package/src/redux/featureLengthsToHide.js +27 -0
  248. package/src/redux/findTool.js +79 -0
  249. package/src/redux/frameTranslations.js +52 -0
  250. package/src/redux/hoveredAnnotation.js +24 -0
  251. package/src/redux/index.js +196 -0
  252. package/src/redux/labelLineIntensity.js +25 -0
  253. package/src/redux/labelSize.js +23 -0
  254. package/src/redux/lastSavedId.js +20 -0
  255. package/src/redux/middleware.js +112 -0
  256. package/src/redux/minimumOrfSize.js +24 -0
  257. package/src/redux/modalActions.js +3 -0
  258. package/src/redux/panelsShown.js +273 -0
  259. package/src/redux/partLengthsToHide.js +23 -0
  260. package/src/redux/primerLengthsToHide.js +27 -0
  261. package/src/redux/propertiesTool.js +40 -0
  262. package/src/redux/readOnly.js +28 -0
  263. package/src/redux/replacementLayers.js +36 -0
  264. package/src/redux/restrictionEnzymes.js +52 -0
  265. package/src/redux/selectedAnnotations.js +89 -0
  266. package/src/redux/selectedPartTags.js +21 -0
  267. package/src/redux/selectionLayer.js +46 -0
  268. package/src/redux/sequenceData/circular.js +19 -0
  269. package/src/redux/sequenceData/description.js +21 -0
  270. package/src/redux/sequenceData/features.js +19 -0
  271. package/src/redux/sequenceData/index.js +81 -0
  272. package/src/redux/sequenceData/lineageLines.js +11 -0
  273. package/src/redux/sequenceData/materiallyAvailable.js +19 -0
  274. package/src/redux/sequenceData/name.js +19 -0
  275. package/src/redux/sequenceData/parts.js +19 -0
  276. package/src/redux/sequenceData/primers.js +19 -0
  277. package/src/redux/sequenceData/sequence.js +12 -0
  278. package/src/redux/sequenceData/sharedActionCreators.js +0 -0
  279. package/src/redux/sequenceData/translations.js +20 -0
  280. package/src/redux/sequenceData/upsertDeleteActionGenerator.js +31 -0
  281. package/src/redux/sequenceDataHistory.js +43 -0
  282. package/src/redux/showGCContent.js +23 -0
  283. package/src/redux/toolBar.js +25 -0
  284. package/src/redux/uppercaseSequenceMapFont.js +25 -0
  285. package/src/redux/useAdditionalOrfStartCodons.js +24 -0
  286. package/src/redux/utils/addDashesForMatchStartAndEndForTracks/index.js +71 -0
  287. package/src/redux/utils/addMetaToActionCreators.js +12 -0
  288. package/src/redux/utils/createMergedDefaultStateReducer.js +30 -0
  289. package/src/redux/utils/createMetaAction.js +12 -0
  290. package/src/redux/versionHistory.js +27 -0
  291. package/src/selectors/annotationLabelVisibility.js +2 -0
  292. package/src/selectors/annotationSearchSelector.js +24 -0
  293. package/src/selectors/cdsFeaturesSelector.js +9 -0
  294. package/src/selectors/circularSelector.js +4 -0
  295. package/src/selectors/cutsiteLabelColorSelector.js +6 -0
  296. package/src/selectors/cutsitesByRangeSelector.js +5 -0
  297. package/src/selectors/cutsitesSelector.js +61 -0
  298. package/src/selectors/editorSelector.js +2 -0
  299. package/src/selectors/featuresSelector.js +8 -0
  300. package/src/selectors/filteredCutsitesSelector.js +137 -0
  301. package/src/selectors/filteredFeaturesSelector.js +32 -0
  302. package/src/selectors/filteredPartsSelector.js +57 -0
  303. package/src/selectors/filteredPrimersSelector.js +27 -0
  304. package/src/selectors/filteredRestrictionEnzymesSelector.js +1 -0
  305. package/src/selectors/getAdditionalEnzymesSelector.js +46 -0
  306. package/src/selectors/index.js +41 -0
  307. package/src/selectors/isEnzymeFilterAndSelector.js +1 -0
  308. package/src/selectors/minimumOrfSizeSelector.js +2 -0
  309. package/src/selectors/orfsSelector.js +15 -0
  310. package/src/selectors/partsSelector.js +8 -0
  311. package/src/selectors/primersSelector.js +8 -0
  312. package/src/selectors/restrictionEnzymesSelector.js +34 -0
  313. package/src/selectors/searchLayersSelector.js +71 -0
  314. package/src/selectors/selectedAnnotationsSelector.js +1 -0
  315. package/src/selectors/selectedCutsitesSelector.js +21 -0
  316. package/src/selectors/sequenceDataSelector.js +2 -0
  317. package/src/selectors/sequenceLengthSelector.js +5 -0
  318. package/src/selectors/sequenceSelector.js +4 -0
  319. package/src/selectors/tagsToBoldSelector.js +2 -0
  320. package/src/selectors/translationSearchMatchesSelector.js +14 -0
  321. package/src/selectors/translationsRawSelector.js +8 -0
  322. package/src/selectors/translationsSelector.js +137 -0
  323. package/src/style.css +82 -0
  324. package/src/updateEditor.js +198 -0
  325. package/src/utils/PassThrough.js +3 -0
  326. package/src/utils/addWrappedAddons.js +20 -0
  327. package/src/utils/annotationTypes.js +37 -0
  328. package/src/utils/arrayUtils.js +19 -0
  329. package/src/utils/calculateTickMarkPositionsForGivenRange.js +47 -0
  330. package/src/utils/cleanSequenceData_DEPRECATED/arrayToObjWithIds.js +17 -0
  331. package/src/utils/combineReducersDontIgnoreKeys.js +12 -0
  332. package/src/utils/commandUtils.js +18 -0
  333. package/src/utils/editorUtils.js +223 -0
  334. package/src/utils/getAnnotationClassnames.js +12 -0
  335. package/src/utils/getAnnotationNameAndStartStopString.js +61 -0
  336. package/src/utils/getVisibleStartEnd.js +7 -0
  337. package/src/utils/massageTickSpacing.js +19 -0
  338. package/src/utils/onlyUpdateForKeysDeep.js +31 -0
  339. package/src/utils/prepareRowData.js +64 -0
  340. package/src/utils/proteinUtils.js +3 -0
  341. package/src/utils/pureNoFunc.js +18 -0
  342. package/src/utils/selectionLayer.js +25 -0
  343. package/src/utils/shouldRerender.js +27 -0
  344. package/src/utils/showFileDialog.js +26 -0
  345. package/src/utils/updateLabelsForInViewFeatures.js +55 -0
  346. package/src/utils/updateLabelsForInViewFeaturesCircView.js +41 -0
  347. package/src/utils/useAAColorType.js +8 -0
  348. package/src/utils/useAnnotationLimits.js +42 -0
  349. package/src/utils/useChromatogramPrefs.js +31 -0
  350. package/src/utils/useLadders.js +6 -0
  351. package/src/utils/useMeltingTemp.js +7 -0
  352. package/src/utils/useTmType.js +10 -0
  353. package/src/withEditorInteractions/Keyboard.js +86 -0
  354. package/src/withEditorInteractions/clickAndDragUtils.js +576 -0
  355. package/src/withEditorInteractions/createSequenceInputPopup.js +296 -0
  356. package/src/withEditorInteractions/createSequenceInputPopupStyle.css +85 -0
  357. package/src/withEditorInteractions/getBpsPerRow.js +19 -0
  358. package/src/withEditorInteractions/index.js +1252 -0
  359. package/src/withEditorInteractions/isElementInViewport.js +29 -0
  360. package/src/withEditorInteractions/moveCaret.js +58 -0
  361. package/src/withEditorProps/index.js +1010 -0
  362. package/index.mjs +0 -193228
@@ -0,0 +1,27 @@
1
+ import createMergedDefaultStateReducer from "./utils/createMergedDefaultStateReducer";
2
+ import createAction from "./utils/createMetaAction";
3
+
4
+ // ------------------------------------
5
+ // Actions
6
+ // ------------------------------------
7
+ export const updatePrimerLengthsToHide = createAction(
8
+ "updatePrimerLengthsToHide"
9
+ );
10
+ export const togglePrimerLengthsToHide = createAction(
11
+ "togglePrimerLengthsToHide"
12
+ );
13
+
14
+ // ------------------------------------
15
+ // Reducer
16
+ // ------------------------------------
17
+ export default createMergedDefaultStateReducer(
18
+ {
19
+ [updatePrimerLengthsToHide]: (state, payload) => {
20
+ return { ...state, ...payload };
21
+ },
22
+ [togglePrimerLengthsToHide]: (state) => {
23
+ return { ...state, enabled: !state["enabled"] };
24
+ }
25
+ },
26
+ { enabled: false, min: 0, max: 40 }
27
+ );
@@ -0,0 +1,40 @@
1
+ import createAction from "./utils/createMetaAction";
2
+ import createMergedDefaultStateReducer from "./utils/createMergedDefaultStateReducer";
3
+
4
+ // ------------------------------------
5
+ // Actions
6
+ // ------------------------------------
7
+ // export const propertiesViewToggle = createAction(
8
+ // "TOGGLE_PROPERTIES_VIEW",
9
+ // () => {}
10
+ // ); //NOTE!!:: second argument sanitizes actions so no payload is passed
11
+ // export const propertiesViewOpen = createAction(
12
+ // "Open_PROPERTIES_VIEW",
13
+ // () => {}
14
+ // ); //NOTE!!:: second argument sanitizes actions so no payload is passed
15
+ export const propertiesViewTabUpdate = createAction("propertiesViewTabUpdate"); //NOTE!!:: second argument sanitizes actions so no payload is passed
16
+
17
+ // ------------------------------------
18
+ // Reducer
19
+ // ------------------------------------
20
+ export default createMergedDefaultStateReducer(
21
+ {
22
+ [propertiesViewTabUpdate]: (
23
+ state,
24
+ tabId,
25
+ selectedAnnotationOrAnnotationId
26
+ ) => {
27
+ return {
28
+ ...state,
29
+ selectedAnnotationId: selectedAnnotationOrAnnotationId
30
+ ? selectedAnnotationOrAnnotationId.id ||
31
+ selectedAnnotationOrAnnotationId
32
+ : undefined,
33
+ tabId
34
+ };
35
+ }
36
+ },
37
+ {
38
+ tabId: "general"
39
+ }
40
+ );
@@ -0,0 +1,28 @@
1
+ //./caretPosition.js
2
+ import { createReducer } from "redux-act";
3
+ import createAction from "./utils/createMetaAction";
4
+ import { noop } from "lodash";
5
+
6
+ // ------------------------------------
7
+ // Actions
8
+ // ------------------------------------
9
+ export const toggleReadOnlyMode = createAction(
10
+ "TOGGLE_READ_ONLY_MODE",
11
+ noop
12
+ ); //NOTE!!:: second argument sanitizes actions so no payload is passed
13
+ export const updateReadOnlyMode = createAction("UPDATE_READ_ONLY_MODE");
14
+
15
+ // ------------------------------------
16
+ // Reducer
17
+ // ------------------------------------
18
+ export default createReducer(
19
+ {
20
+ [updateReadOnlyMode]: (state, payload) => {
21
+ return payload;
22
+ },
23
+ [toggleReadOnlyMode]: state => {
24
+ return !state;
25
+ }
26
+ },
27
+ true
28
+ );
@@ -0,0 +1,36 @@
1
+ //./selectionLayer.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 replacementLayerClear = createAction("replacementLayerClear");
10
+ export const replacementLayerUpdate = createAction("REPLACEMENT_LAYER_UPDATE");
11
+ export const replacementLayerDelete = createAction("REPLACEMENT_LAYER_DELETE");
12
+
13
+ // ------------------------------------
14
+ // Reducer
15
+ // ------------------------------------
16
+ export default createReducer(
17
+ {
18
+ [replacementLayerClear]: () => {
19
+ return {};
20
+ },
21
+ [replacementLayerUpdate]: (state, payload) => {
22
+ return {
23
+ ...state,
24
+ [payload.id]: {
25
+ color: "darkolivegreen",
26
+ id: payload.id,
27
+ ...payload.range
28
+ }
29
+ };
30
+ },
31
+ [replacementLayerDelete]: (state, payload) => {
32
+ return omit(state, payload.id);
33
+ }
34
+ },
35
+ {}
36
+ );
@@ -0,0 +1,52 @@
1
+ import { combineReducers } from "redux";
2
+ import { createReducer } from "redux-act";
3
+ import createAction from "./utils/createMetaAction";
4
+ import specialCutsiteFilterOptions from "../constants/specialCutsiteFilterOptions";
5
+ // ------------------------------------
6
+ // Actions
7
+ // ------------------------------------
8
+ export const filteredRestrictionEnzymesUpdate = createAction(
9
+ "FILTERED_RESTRICTION_ENZYMES_UPDATE"
10
+ );
11
+ export const isEnzymeFilterAndUpdate = createAction("IS_ENZYME_FILTER_AND");
12
+ export const filteredRestrictionEnzymesReset = createAction(
13
+ "FILTERED_RESTRICTION_ENZYMES_RESET"
14
+ );
15
+ export const filteredRestrictionEnzymesAdd = createAction(
16
+ "FILTERED_RESTRICTION_ENZYMES_ADD"
17
+ );
18
+ // ------------------------------------
19
+ // Reducer
20
+ // ------------------------------------
21
+ const defaultInitialState = [specialCutsiteFilterOptions.single];
22
+ // let initialState = defaultInitialState;
23
+ // const localDefault = window.localStorage.getItem("tgInitialCutsiteFilter");
24
+
25
+ // if (localDefault) {
26
+ // try {
27
+ // initialState = JSON.parse(localDefault);
28
+ // if (!Array.isArray(initialState)) throw new Error("Must be an array");
29
+ // } catch (e) {
30
+ // initialState = defaultInitialState;
31
+ // }
32
+ // }
33
+
34
+ export default combineReducers({
35
+ //filteredRestrictionEnzymes refer to the enzymes actively included in the react-select filter component
36
+ isEnzymeFilterAnd: createReducer(
37
+ {
38
+ [isEnzymeFilterAndUpdate]: (state, payload) => payload
39
+ },
40
+ false
41
+ ),
42
+ filteredRestrictionEnzymes: createReducer(
43
+ {
44
+ [filteredRestrictionEnzymesReset]: () => defaultInitialState,
45
+ [filteredRestrictionEnzymesUpdate]: (state, payload) => payload,
46
+ [filteredRestrictionEnzymesAdd]: function (state, payload) {
47
+ return [...state, payload];
48
+ }
49
+ },
50
+ defaultInitialState
51
+ )
52
+ });
@@ -0,0 +1,89 @@
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
+ );
@@ -0,0 +1,21 @@
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
+ );
@@ -0,0 +1,46 @@
1
+ //./selectionLayer.js
2
+ import { createReducer } from "redux-act";
3
+ import createAction from "./utils/createMetaAction";
4
+
5
+ // ------------------------------------
6
+ // Actions
7
+ // ------------------------------------
8
+ export const selectionLayerClear = createAction("SELECTION_LAYER_CLEAR");
9
+ export const selectionLayerUpdate = createAction("SELECTION_LAYER_UPDATE");
10
+
11
+ // ------------------------------------
12
+ // Reducer
13
+ // ------------------------------------
14
+ export default createReducer(
15
+ {
16
+ CARET_POSITION_UPDATE: () => {
17
+ //clear the selection layer if the caret is updated!
18
+ return {
19
+ start: -1,
20
+ end: -1
21
+ };
22
+ },
23
+ [selectionLayerClear]: () => {
24
+ return {
25
+ start: -1,
26
+ end: -1
27
+ };
28
+ },
29
+ [selectionLayerUpdate]: (state, newSelectionLayer) => {
30
+ if (
31
+ !newSelectionLayer ||
32
+ !(newSelectionLayer.start >= 0 && newSelectionLayer.end >= 0)
33
+ ) {
34
+ console.error(
35
+ "we should never be here! selectionLayerUpdate must always be called with a valid selection layer"
36
+ );
37
+ return state
38
+ }
39
+ return newSelectionLayer;
40
+ }
41
+ },
42
+ {
43
+ start: -1,
44
+ end: -1
45
+ }
46
+ );
@@ -0,0 +1,19 @@
1
+ import { createReducer } from "redux-act";
2
+ import createAction from "../utils/createMetaAction";
3
+
4
+ // ------------------------------------
5
+ // Actions
6
+ // ------------------------------------
7
+ export const _updateCircular = createAction("UPDATE_CIRCULAR");
8
+
9
+ // ------------------------------------
10
+ // Reducer
11
+ // ------------------------------------
12
+ export default createReducer(
13
+ {
14
+ [_updateCircular]: (state, payload) => {
15
+ return payload;
16
+ }
17
+ },
18
+ true
19
+ );
@@ -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
+ );
@@ -0,0 +1,19 @@
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 upsertFeature = createAction("UPSERT_FEATURE");
9
+ export const deleteFeature = createAction("DELETE_FEATURE");
10
+
11
+ // ------------------------------------
12
+ // Reducer
13
+ // ------------------------------------
14
+ export default createReducer(
15
+ {
16
+ ...upsertDeleteActionGenerator(upsertFeature, deleteFeature),
17
+ },
18
+ {}
19
+ );
@@ -0,0 +1,81 @@
1
+ import deepEqual from "deep-equal";
2
+ import { tidyUpSequenceData } from "@teselagen/sequence-utils";
3
+ import uuid from "shortid";
4
+
5
+ import createAction from "../utils/createMetaAction";
6
+ import features from "./features";
7
+ import parts from "./parts";
8
+ import name from "./name";
9
+ import description from "./description";
10
+ import primers from "./primers";
11
+ import sequence from "./sequence";
12
+ import circular from "./circular";
13
+ import materiallyAvailable from "./materiallyAvailable";
14
+ import translations from "./translations";
15
+ import combineReducersDontIgnoreKeys from "../../utils/combineReducersDontIgnoreKeys";
16
+ // import cleanSequenceData from "../../utils/cleanSequenceData";
17
+
18
+ import { createReducer } from "redux-act";
19
+ // export * from './sharedActionCreators';
20
+ export * from "./primers";
21
+ export * from "./features";
22
+ export * from "./parts";
23
+ export * from "./name";
24
+ export * from "./description";
25
+ // export * from './sequence';
26
+ export * from "./circular";
27
+ export * from "./materiallyAvailable";
28
+ export * from "./translations";
29
+
30
+ // ------------------------------------
31
+ // Actions
32
+ // ------------------------------------
33
+
34
+ const _updateSequenceData = createAction("SEQUENCE_DATA_UPDATE");
35
+ export const updateSequenceData = function (seqData, ...rest) {
36
+ //tnrtodo: currently we're not using that type variable for anything
37
+ return _updateSequenceData(
38
+ tidyUpSequenceData(seqData, { annotationsAsObjects: true }),
39
+ ...rest
40
+ );
41
+ };
42
+
43
+ // ------------------------------------
44
+ // Reducer
45
+ // ------------------------------------
46
+
47
+ const coreReducer = combineReducersDontIgnoreKeys({
48
+ primers,
49
+ features,
50
+ parts,
51
+ sequence,
52
+ translations,
53
+ size: (state = {}) => state,
54
+ circular,
55
+ materiallyAvailable,
56
+ name,
57
+ description,
58
+ fromFileUpload: createReducer({}, false)
59
+ });
60
+
61
+ export default function (state, action) {
62
+ let stateToPass = state;
63
+ if (action.type === "SEQUENCE_DATA_UPDATE") {
64
+ stateToPass = action.payload;
65
+ }
66
+ //tnr: do a clone deep here in order to make sure we are using a totally new object for undo/redo tracking
67
+ // stateToPass = cloneDeep(stateToPass);
68
+
69
+ const newState = coreReducer(stateToPass, action);
70
+ if (deepEqual(newState, state)) {
71
+ return state;
72
+ } else {
73
+ //tnr: do a clone deep here in order to make sure we are using a totally new object for undo/redo tracking
74
+ // mm: we don't need this if we are not mutating the newState, which we shouldn't be doing.
75
+ return {
76
+ // ...cloneDeep(newState),
77
+ ...newState,
78
+ stateTrackingId: newState.stateTrackingId ? uuid() : "initialLoadId"
79
+ };
80
+ }
81
+ }
@@ -0,0 +1,11 @@
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({}, []);
@@ -0,0 +1,19 @@
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
+ );
@@ -0,0 +1,19 @@
1
+ import { createReducer } from "redux-act";
2
+ import createAction from "../utils/createMetaAction";
3
+
4
+ // ------------------------------------
5
+ // Actions
6
+ // ------------------------------------
7
+ export const sequenceNameUpdate = createAction("sequenceNameUpdate");
8
+
9
+ // ------------------------------------
10
+ // Reducer
11
+ // ------------------------------------
12
+ export default createReducer(
13
+ {
14
+ [sequenceNameUpdate]: (state, payload) => {
15
+ return payload;
16
+ }
17
+ },
18
+ "Untitled Sequence"
19
+ );
@@ -0,0 +1,19 @@
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 upsertPart = createAction("UPSERT_PART");
9
+ export const deletePart = createAction("DELETE_PART");
10
+
11
+ // ------------------------------------
12
+ // Reducer
13
+ // ------------------------------------
14
+ export default createReducer(
15
+ {
16
+ ...upsertDeleteActionGenerator(upsertPart, deletePart)
17
+ },
18
+ {}
19
+ );
@@ -0,0 +1,19 @@
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 upsertPrimer = createAction("UPSERT_PRIMER");
9
+ export const deletePrimer = createAction("DELETE_PRIMER");
10
+
11
+ // ------------------------------------
12
+ // Reducer
13
+ // ------------------------------------
14
+ export default createReducer(
15
+ {
16
+ ...upsertDeleteActionGenerator(upsertPrimer, deletePrimer)
17
+ },
18
+ {}
19
+ );
@@ -0,0 +1,12 @@
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({}, "");
File without changes
@@ -0,0 +1,20 @@
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
+ );
@@ -0,0 +1,31 @@
1
+ import omit from "lodash/omit";
2
+ import uuid from "shortid";
3
+
4
+ // ------------------------------------
5
+ // Reducer
6
+ // ------------------------------------
7
+ export default function upsertDeleteActionGenerator(
8
+ upsertAction,
9
+ deleteAction
10
+ ) {
11
+ return {
12
+ [upsertAction]: (state, payload) => {
13
+ const idToUse = payload.id || uuid();
14
+ return {
15
+ ...state,
16
+ [idToUse]: { ...(state[idToUse] || {}), ...payload, id: idToUse }
17
+ };
18
+ },
19
+ [deleteAction]: (state, payload) => {
20
+ let ids;
21
+ if (Array.isArray(payload)) {
22
+ ids = payload.map((val) => {
23
+ return val.id || val;
24
+ });
25
+ } else {
26
+ ids = [payload.id || payload];
27
+ }
28
+ return omit(state, ids);
29
+ }
30
+ };
31
+ }