@teselagen/ove 0.0.14 → 0.0.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.umd.js +164777 -135861
- package/package.json +78 -2
- package/src/AlignmentTool/index.js +16 -0
- package/src/AlignmentView/AlignmentVisibilityTool.js +105 -0
- package/src/AlignmentView/EditTrackNameDialog.js +34 -0
- package/src/AlignmentView/HorizontalPanelDragHandle.js +35 -0
- package/src/AlignmentView/Minimap.js +520 -0
- package/src/AlignmentView/Mismatches.js +134 -0
- package/src/AlignmentView/PairwiseAlignmentView.js +68 -0
- package/src/AlignmentView/PerformantSelectionLayer.js +32 -0
- package/src/AlignmentView/coerceInitialValue.js +7 -0
- package/src/AlignmentView/getGapMap.js +12 -0
- package/src/AlignmentView/getGaps.js +27 -0
- package/src/AlignmentView/getPairwiseOverviewLinearViewOptions.js +38 -0
- package/src/AlignmentView/getTrackFromEvent.js +25 -0
- package/src/AlignmentView/index.js +2058 -0
- package/src/AlignmentView/isTargetWithinEl.js +6 -0
- package/src/AlignmentView/style.css +100 -0
- package/src/AlignmentView/updateTrackHelper.js +58 -0
- package/src/AutoAnnotate.js +500 -0
- package/src/AutoAnnotateBpMatchingDialog.js +208 -0
- package/src/CircularView/Axis.js +40 -0
- package/src/CircularView/AxisNumbers.js +35 -0
- package/src/CircularView/Caret.js +63 -0
- package/src/CircularView/CircularDnaSequence.js +73 -0
- package/src/CircularView/CircularZoomMinimap.js +16 -0
- package/src/CircularView/Cutsite.js +18 -0
- package/src/CircularView/Cutsites.js +113 -0
- package/src/CircularView/DeletionLayer.js +28 -0
- package/src/CircularView/Feature.js +83 -0
- package/src/CircularView/Labels/index.js +536 -0
- package/src/CircularView/Labels/relaxLabelAngles.js +157 -0
- package/src/CircularView/Labels/relaxLabels_DEPRECATED.js +105 -0
- package/src/CircularView/Labels/style.css +55 -0
- package/src/CircularView/Orf.js +25 -0
- package/src/CircularView/Part.js +34 -0
- package/src/CircularView/PositionAnnotationOnCircle.js +26 -0
- package/src/CircularView/Primer.js +41 -0
- package/src/CircularView/RotateCircularViewSlider.js +82 -0
- package/src/CircularView/SelectionLayer.js +132 -0
- package/src/CircularView/VeTopRightContainer.js +12 -0
- package/src/CircularView/ZoomCircularViewSlider.js +62 -0
- package/src/CircularView/drawAnnotations.js +433 -0
- package/src/CircularView/drawDirectedPiePiece.js +142 -0
- package/src/CircularView/getAngleForPositionMidpoint.js +3 -0
- package/src/CircularView/getInternalLabel.js +40 -0
- package/src/CircularView/getRangeAnglesSpecial.js +12 -0
- package/src/CircularView/getYOffset.js +15 -0
- package/src/CircularView/index.d.ts +20 -0
- package/src/CircularView/index.js +930 -0
- package/src/CircularView/normalizeAngle.js +3 -0
- package/src/CircularView/normalizeAngleRange.js +9 -0
- package/src/CircularView/positionCutsites.js +6 -0
- package/src/CircularView/shouldFlipText.js +4 -0
- package/src/CircularView/style.css +47 -0
- package/src/CircularView/utils/polarToSpecialCartesian.js +7 -0
- package/src/CreateAnnotationsPage.js +96 -0
- package/src/CreateCustomEnzyme/index.js +337 -0
- package/src/CreateCustomEnzyme/style.css +100 -0
- package/src/CutsiteFilter/AdditionalCutsiteInfoDialog.js +599 -0
- package/src/CutsiteFilter/index.js +408 -0
- package/src/CutsiteFilter/style.css +23 -0
- package/src/CutsiteFilter/withRestrictionEnzymes.js +15 -0
- package/src/DigestTool/AddLaddersDialog.js +82 -0
- package/src/DigestTool/DigestTool.js +223 -0
- package/src/DigestTool/Ladder.css +20 -0
- package/src/DigestTool/Ladder.js +303 -0
- package/src/DigestTool/createFragmentLines.js +120 -0
- package/src/DigestTool/ladderDefaults.js +26 -0
- package/src/DigestTool/ruler.css +89 -0
- package/src/Editor/CommandHotkeyHandler.js +44 -0
- package/src/Editor/DropHandler.css +21 -0
- package/src/Editor/DropHandler.js +64 -0
- package/src/Editor/FillWindow.js +46 -0
- package/src/Editor/darkmode.css +98 -0
- package/src/Editor/index.js +1005 -0
- package/src/Editor/style.css +235 -0
- package/src/Editor/userDefinedHandlersAndOpts.js +56 -0
- package/src/EnzymeViewer/index.js +81 -0
- package/src/EnzymeViewer/style.css +6 -0
- package/src/FindBar/index.js +411 -0
- package/src/FindBar/style.css +46 -0
- package/src/GlobalDialog.js +66 -0
- package/src/GlobalDialogUtils.js +85 -0
- package/src/LinearView/SequenceName.js +15 -0
- package/src/LinearView/ZoomLinearView.js +47 -0
- package/src/LinearView/index.js +374 -0
- package/src/LinearView/style.css +12 -0
- package/src/ManageEnzymes/index.js +326 -0
- package/src/ManageEnzymes/style.css +100 -0
- package/src/MenuBar/defaultConfig.js +149 -0
- package/src/MenuBar/index.js +98 -0
- package/src/MenuBar/viewSubmenu.js +479 -0
- package/src/PCRTool/PCRTool.js +173 -0
- package/src/Reflex/Browser.js +107 -0
- package/src/Reflex/ReflexContainer.js +802 -0
- package/src/Reflex/ReflexElement.js +160 -0
- package/src/Reflex/ReflexEvents.js +77 -0
- package/src/Reflex/ReflexSplitter.js +205 -0
- package/src/Reflex/index.js +5 -0
- package/src/Reflex/reflex-styles.css +128 -0
- package/src/Reflex/reflex-styles.css.map +9 -0
- package/src/RowItem/AnnotationContainerHolder.js +20 -0
- package/src/RowItem/AnnotationPositioner.js +27 -0
- package/src/RowItem/Axis.js +149 -0
- package/src/RowItem/Caret/index.js +64 -0
- package/src/RowItem/Caret/style.css +8 -0
- package/src/RowItem/Chromatograms/Chromatogram.js +289 -0
- package/src/RowItem/CutsiteSelectionLayers.js +47 -0
- package/src/RowItem/Cutsites.js +271 -0
- package/src/RowItem/DeletionLayers/index.js +113 -0
- package/src/RowItem/DeletionLayers/style.css +5 -0
- package/src/RowItem/Labels.js +327 -0
- package/src/RowItem/Orf.js +109 -0
- package/src/RowItem/Orfs.js +35 -0
- package/src/RowItem/ReplacementLayers/style.css +5 -0
- package/src/RowItem/SelectionLayer/index.js +184 -0
- package/src/RowItem/SelectionLayer/style.css +21 -0
- package/src/RowItem/Sequence.js +269 -0
- package/src/RowItem/StackedAnnotations/PointedAnnotation.js +347 -0
- package/src/RowItem/StackedAnnotations/getStructuredBases.js +97 -0
- package/src/RowItem/StackedAnnotations/index.js +182 -0
- package/src/RowItem/StackedAnnotations/primerBases.js +218 -0
- package/src/RowItem/StackedAnnotations/style.css +14 -0
- package/src/RowItem/Translations/AASliver.js +190 -0
- package/src/RowItem/Translations/Translation.js +162 -0
- package/src/RowItem/Translations/index.js +54 -0
- package/src/RowItem/Translations/style.css +3 -0
- package/src/RowItem/constants.js +3 -0
- package/src/RowItem/getCutsiteLabelHeights.js +56 -0
- package/src/RowItem/getXStartAndWidthFromNonCircularRange.js +12 -0
- package/src/RowItem/getXStartAndWidthOfRangeWrtRow.js +27 -0
- package/src/RowItem/getXStartAndWidthOfRowAnnotation.js +19 -0
- package/src/RowItem/index.js +647 -0
- package/src/RowItem/partOverhangs.js +6 -0
- package/src/RowItem/style.css +103 -0
- package/src/RowItem/utils.js +32 -0
- package/src/RowView/estimateRowHeight.js +184 -0
- package/src/RowView/index.d.ts +10 -0
- package/src/RowView/index.js +554 -0
- package/src/RowView/style.css +12 -0
- package/src/SimpleCircularOrLinearView.js +379 -0
- package/src/SimpleOligoPreview.js +39 -0
- package/src/StatusBar/MeltingTemp.js +81 -0
- package/src/StatusBar/index.js +275 -0
- package/src/StatusBar/style.css +38 -0
- package/src/ToolBar/ToolbarItem.js +194 -0
- package/src/ToolBar/alignmentTool.js +503 -0
- package/src/ToolBar/array_move.js +10 -0
- package/src/ToolBar/cutsiteTool.js +88 -0
- package/src/ToolBar/downloadTool.js +38 -0
- package/src/ToolBar/editTool.js +26 -0
- package/src/ToolBar/featureTool.js +34 -0
- package/src/ToolBar/findTool.js +2 -0
- package/src/ToolBar/importTool.js +27 -0
- package/src/ToolBar/index.js +231 -0
- package/src/ToolBar/inlineFindTool.js +38 -0
- package/src/ToolBar/oligoTool.js +30 -0
- package/src/ToolBar/orfTool.js +141 -0
- package/src/ToolBar/partTool.js +47 -0
- package/src/ToolBar/printTool.js +31 -0
- package/src/ToolBar/redoTool.js +30 -0
- package/src/ToolBar/saveTool.js +48 -0
- package/src/ToolBar/style.css +138 -0
- package/src/ToolBar/undoTool.js +30 -0
- package/src/ToolBar/veToolbarIcons/find.png +0 -0
- package/src/ToolBar/veToolbarIcons/fullscreen.png +0 -0
- package/src/ToolBar/veToolbarIcons/linear.png +0 -0
- package/src/ToolBar/veToolbarIcons/pie.png +0 -0
- package/src/ToolBar/veToolbarIcons/print.png +0 -0
- package/src/ToolBar/veToolbarIcons/save.png +0 -0
- package/src/ToolBar/veToolbarIcons/show_cut_sites.png +0 -0
- package/src/ToolBar/veToolbarIcons/show_features.png +0 -0
- package/src/ToolBar/veToolbarIcons/show_orfs.png +0 -0
- package/src/ToolBar/veToolbarIcons/show_primers.png +0 -0
- package/src/ToolBar/veToolbarIcons/toggle_views.svg +1 -0
- package/src/ToolBar/versionHistoryTool.js +20 -0
- package/src/ToolBar/visibilityTool.js +39 -0
- package/src/VersionHistoryView/index.js +215 -0
- package/src/addAlignment.js +6 -0
- package/src/commands/getOveHotkeyDefs.js +12 -0
- package/src/commands/index.js +1585 -0
- package/src/constants/constants.js +2 -0
- package/src/constants/dnaToColor.js +17 -0
- package/src/constants/draggableClassnames.js +5 -0
- package/src/constants/findToolConstants.js +1 -0
- package/src/constants/orfFrameToColorMap.js +10 -0
- package/src/constants/rowviewContants.js +3 -0
- package/src/constants/specialCutsiteFilterOptions.js +22 -0
- package/src/constants.js +1 -0
- package/src/createVectorEditor/index.js +138 -0
- package/src/createVectorEditor/makeStore.js +34 -0
- package/src/fileUtils.js +103 -0
- package/src/helperComponents/AddOrEditAnnotationDialog/index.js +711 -0
- package/src/helperComponents/AddOrEditAnnotationDialog/style.css +11 -0
- package/src/helperComponents/AddOrEditFeatureDialog/index.js +58 -0
- package/src/helperComponents/AddOrEditPartDialog/index.js +101 -0
- package/src/helperComponents/AddOrEditPrimerDialog/EditCaretPosition.js +234 -0
- package/src/helperComponents/AddOrEditPrimerDialog/index.js +329 -0
- package/src/helperComponents/AddOrEditPrimerDialog/style.css +41 -0
- package/src/helperComponents/EnzymesDialog/index.js +904 -0
- package/src/helperComponents/EnzymesDialog/style.css +21 -0
- package/src/helperComponents/GoToDialog.js +21 -0
- package/src/helperComponents/MergeFeaturesDialog/index.js +253 -0
- package/src/helperComponents/MergeFeaturesDialog/style.css +3 -0
- package/src/helperComponents/MultipleSeqsDetectedOnImportDialog.js +74 -0
- package/src/helperComponents/PinchHelper/PinchHelper.js +24 -0
- package/src/helperComponents/PrintDialog/index.js +396 -0
- package/src/helperComponents/PrintDialog/style.css +4 -0
- package/src/helperComponents/PropertiesDialog/ColorPicker.js +30 -0
- package/src/helperComponents/PropertiesDialog/CutsiteProperties.js +185 -0
- package/src/helperComponents/PropertiesDialog/FeatureProperties.js +6 -0
- package/src/helperComponents/PropertiesDialog/GenbankView.js +74 -0
- package/src/helperComponents/PropertiesDialog/GeneralProperties.js +140 -0
- package/src/helperComponents/PropertiesDialog/GenericAnnotationProperties.js +406 -0
- package/src/helperComponents/PropertiesDialog/OrfProperties.js +117 -0
- package/src/helperComponents/PropertiesDialog/PartProperties.js +9 -0
- package/src/helperComponents/PropertiesDialog/PrimerProperties.js +19 -0
- package/src/helperComponents/PropertiesDialog/SingleEnzymeCutsiteInfo.js +131 -0
- package/src/helperComponents/PropertiesDialog/TranslationProperties.js +149 -0
- package/src/helperComponents/PropertiesDialog/index.js +166 -0
- package/src/helperComponents/PropertiesDialog/style.css +68 -0
- package/src/helperComponents/PropertiesDialog/typeField.js +24 -0
- package/src/helperComponents/PropertiesDialog/utils.js +37 -0
- package/src/helperComponents/RemoveDuplicates/index.js +194 -0
- package/src/helperComponents/RenameSequenceDialog.js +7 -0
- package/src/helperComponents/SelectDialog.js +150 -0
- package/src/helperComponents/UncontrolledSliderWithPlusMinusBtns.css +5 -0
- package/src/helperComponents/UncontrolledSliderWithPlusMinusBtns.js +134 -0
- package/src/helperComponents/VeWarning/index.js +22 -0
- package/src/helperComponents/VeWarning/style.css +10 -0
- package/src/helperComponents/createSimpleDialog.js +89 -0
- package/src/helperComponents/partTagSearch.js +72 -0
- package/src/helperComponents/simpleDialog.css +13 -0
- package/src/helperComponents/withHover.js +90 -0
- package/src/index.js +60 -0
- package/src/redux/alignments.js +373 -0
- package/src/redux/annotationLabelVisibility.js +53 -0
- package/src/redux/annotationVisibility.js +196 -0
- package/src/redux/annotationsToSupport.js +104 -0
- package/src/redux/caretPosition.js +27 -0
- package/src/redux/charWidth.js +22 -0
- package/src/redux/copyOptions.js +34 -0
- package/src/redux/createYourOwnEnzyme.js +39 -0
- package/src/redux/deletionLayers.js +36 -0
- package/src/redux/digestTool.js +34 -0
- package/src/redux/featureLengthsToHide.js +27 -0
- package/src/redux/findTool.js +79 -0
- package/src/redux/frameTranslations.js +52 -0
- package/src/redux/hoveredAnnotation.js +24 -0
- package/src/redux/index.js +196 -0
- package/src/redux/labelLineIntensity.js +25 -0
- package/src/redux/labelSize.js +23 -0
- package/src/redux/lastSavedId.js +20 -0
- package/src/redux/middleware.js +112 -0
- package/src/redux/minimumOrfSize.js +24 -0
- package/src/redux/modalActions.js +3 -0
- package/src/redux/panelsShown.js +273 -0
- package/src/redux/partLengthsToHide.js +23 -0
- package/src/redux/primerLengthsToHide.js +27 -0
- package/src/redux/propertiesTool.js +40 -0
- package/src/redux/readOnly.js +28 -0
- package/src/redux/replacementLayers.js +36 -0
- package/src/redux/restrictionEnzymes.js +52 -0
- package/src/redux/selectedAnnotations.js +89 -0
- package/src/redux/selectedPartTags.js +21 -0
- package/src/redux/selectionLayer.js +46 -0
- package/src/redux/sequenceData/circular.js +19 -0
- package/src/redux/sequenceData/description.js +21 -0
- package/src/redux/sequenceData/features.js +19 -0
- package/src/redux/sequenceData/index.js +81 -0
- package/src/redux/sequenceData/lineageLines.js +11 -0
- package/src/redux/sequenceData/materiallyAvailable.js +19 -0
- package/src/redux/sequenceData/name.js +19 -0
- package/src/redux/sequenceData/parts.js +19 -0
- package/src/redux/sequenceData/primers.js +19 -0
- package/src/redux/sequenceData/sequence.js +12 -0
- package/src/redux/sequenceData/sharedActionCreators.js +0 -0
- package/src/redux/sequenceData/translations.js +20 -0
- package/src/redux/sequenceData/upsertDeleteActionGenerator.js +31 -0
- package/src/redux/sequenceDataHistory.js +43 -0
- package/src/redux/showGCContent.js +23 -0
- package/src/redux/toolBar.js +25 -0
- package/src/redux/uppercaseSequenceMapFont.js +25 -0
- package/src/redux/useAdditionalOrfStartCodons.js +24 -0
- package/src/redux/utils/addDashesForMatchStartAndEndForTracks/index.js +71 -0
- package/src/redux/utils/addMetaToActionCreators.js +12 -0
- package/src/redux/utils/createMergedDefaultStateReducer.js +30 -0
- package/src/redux/utils/createMetaAction.js +12 -0
- package/src/redux/versionHistory.js +27 -0
- package/src/selectors/annotationLabelVisibility.js +2 -0
- package/src/selectors/annotationSearchSelector.js +24 -0
- package/src/selectors/cdsFeaturesSelector.js +9 -0
- package/src/selectors/circularSelector.js +4 -0
- package/src/selectors/cutsiteLabelColorSelector.js +6 -0
- package/src/selectors/cutsitesByRangeSelector.js +5 -0
- package/src/selectors/cutsitesSelector.js +61 -0
- package/src/selectors/editorSelector.js +2 -0
- package/src/selectors/featuresSelector.js +8 -0
- package/src/selectors/filteredCutsitesSelector.js +137 -0
- package/src/selectors/filteredFeaturesSelector.js +32 -0
- package/src/selectors/filteredPartsSelector.js +57 -0
- package/src/selectors/filteredPrimersSelector.js +27 -0
- package/src/selectors/filteredRestrictionEnzymesSelector.js +1 -0
- package/src/selectors/getAdditionalEnzymesSelector.js +46 -0
- package/src/selectors/index.js +41 -0
- package/src/selectors/isEnzymeFilterAndSelector.js +1 -0
- package/src/selectors/minimumOrfSizeSelector.js +2 -0
- package/src/selectors/orfsSelector.js +15 -0
- package/src/selectors/partsSelector.js +8 -0
- package/src/selectors/primersSelector.js +8 -0
- package/src/selectors/restrictionEnzymesSelector.js +34 -0
- package/src/selectors/searchLayersSelector.js +71 -0
- package/src/selectors/selectedAnnotationsSelector.js +1 -0
- package/src/selectors/selectedCutsitesSelector.js +21 -0
- package/src/selectors/sequenceDataSelector.js +2 -0
- package/src/selectors/sequenceLengthSelector.js +5 -0
- package/src/selectors/sequenceSelector.js +4 -0
- package/src/selectors/tagsToBoldSelector.js +2 -0
- package/src/selectors/translationSearchMatchesSelector.js +14 -0
- package/src/selectors/translationsRawSelector.js +8 -0
- package/src/selectors/translationsSelector.js +137 -0
- package/src/style.css +82 -0
- package/src/updateEditor.js +198 -0
- package/src/utils/PassThrough.js +3 -0
- package/src/utils/addWrappedAddons.js +20 -0
- package/src/utils/annotationTypes.js +37 -0
- package/src/utils/arrayUtils.js +19 -0
- package/src/utils/calculateTickMarkPositionsForGivenRange.js +47 -0
- package/src/utils/cleanSequenceData_DEPRECATED/arrayToObjWithIds.js +17 -0
- package/src/utils/combineReducersDontIgnoreKeys.js +12 -0
- package/src/utils/commandUtils.js +18 -0
- package/src/utils/editorUtils.js +223 -0
- package/src/utils/getAnnotationClassnames.js +12 -0
- package/src/utils/getAnnotationNameAndStartStopString.js +61 -0
- package/src/utils/getVisibleStartEnd.js +7 -0
- package/src/utils/massageTickSpacing.js +19 -0
- package/src/utils/onlyUpdateForKeysDeep.js +31 -0
- package/src/utils/prepareRowData.js +64 -0
- package/src/utils/proteinUtils.js +3 -0
- package/src/utils/pureNoFunc.js +18 -0
- package/src/utils/selectionLayer.js +25 -0
- package/src/utils/shouldRerender.js +27 -0
- package/src/utils/showFileDialog.js +26 -0
- package/src/utils/updateLabelsForInViewFeatures.js +55 -0
- package/src/utils/updateLabelsForInViewFeaturesCircView.js +41 -0
- package/src/utils/useAAColorType.js +8 -0
- package/src/utils/useAnnotationLimits.js +42 -0
- package/src/utils/useChromatogramPrefs.js +31 -0
- package/src/utils/useLadders.js +6 -0
- package/src/utils/useMeltingTemp.js +7 -0
- package/src/utils/useTmType.js +10 -0
- package/src/withEditorInteractions/Keyboard.js +86 -0
- package/src/withEditorInteractions/clickAndDragUtils.js +576 -0
- package/src/withEditorInteractions/createSequenceInputPopup.js +296 -0
- package/src/withEditorInteractions/createSequenceInputPopupStyle.css +85 -0
- package/src/withEditorInteractions/getBpsPerRow.js +19 -0
- package/src/withEditorInteractions/index.js +1252 -0
- package/src/withEditorInteractions/isElementInViewport.js +29 -0
- package/src/withEditorInteractions/moveCaret.js +58 -0
- package/src/withEditorProps/index.js +1010 -0
- package/index.mjs +0 -193228
| @@ -0,0 +1,27 @@ | |
| 1 | 
            +
            import { createSelector } from "reselect";
         | 
| 2 | 
            +
            import { omitBy } from "lodash";
         | 
| 3 | 
            +
            import primersSelector from "./primersSelector";
         | 
| 4 | 
            +
            import sequenceLengthSelector from "./sequenceLengthSelector";
         | 
| 5 | 
            +
            import { hideAnnByLengthFilter } from "../utils/editorUtils";
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            function filteredPrimersSelector(
         | 
| 8 | 
            +
              primers,
         | 
| 9 | 
            +
              seqLen,
         | 
| 10 | 
            +
              primerIndividualToHide,
         | 
| 11 | 
            +
              lengthsToHide
         | 
| 12 | 
            +
            ) {
         | 
| 13 | 
            +
              return omitBy(primers, (ann) => {
         | 
| 14 | 
            +
                const hideIndividually = primerIndividualToHide[ann.id];
         | 
| 15 | 
            +
                return (
         | 
| 16 | 
            +
                  hideAnnByLengthFilter(lengthsToHide, ann, seqLen) || hideIndividually
         | 
| 17 | 
            +
                );
         | 
| 18 | 
            +
              });
         | 
| 19 | 
            +
            }
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            export default createSelector(
         | 
| 22 | 
            +
              primersSelector,
         | 
| 23 | 
            +
              sequenceLengthSelector,
         | 
| 24 | 
            +
              (state) => state.annotationVisibility.primerIndividualToHide,
         | 
| 25 | 
            +
              (state) => state.primerLengthsToHide,
         | 
| 26 | 
            +
              filteredPrimersSelector
         | 
| 27 | 
            +
            );
         | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            export default state => state.restrictionEnzymes.filteredRestrictionEnzymes;
         | 
| @@ -0,0 +1,46 @@ | |
| 1 | 
            +
            import { pickBy } from "lodash";
         | 
| 2 | 
            +
            import { createSelector } from "reselect";
         | 
| 3 | 
            +
            import { getLowerCaseObj } from "../utils/arrayUtils";
         | 
| 4 | 
            +
            import { getCustomEnzymes } from "../utils/editorUtils";
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            export default createSelector(
         | 
| 7 | 
            +
              () => window.localStorage.getItem("customEnzymes"),
         | 
| 8 | 
            +
              (state, additionalEnzymes) => additionalEnzymes,
         | 
| 9 | 
            +
              (customEnzymesString, additionalEnzymes) => {
         | 
| 10 | 
            +
                return getLowerCaseObj(
         | 
| 11 | 
            +
                  pickBy(
         | 
| 12 | 
            +
                    {
         | 
| 13 | 
            +
                      ...additionalEnzymes,
         | 
| 14 | 
            +
                      ...getCustomEnzymes(customEnzymesString)
         | 
| 15 | 
            +
                    },
         | 
| 16 | 
            +
                    (val, key) => {
         | 
| 17 | 
            +
                      if (!val) {
         | 
| 18 | 
            +
                        console.error(
         | 
| 19 | 
            +
                          "43ti3523: Error: Missing enzyme data for key: ",
         | 
| 20 | 
            +
                          key,
         | 
| 21 | 
            +
                          "Ignoring this enzyme"
         | 
| 22 | 
            +
                        );
         | 
| 23 | 
            +
                        return false;
         | 
| 24 | 
            +
                      }
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                      // eslint-disable-next-line no-unused-vars
         | 
| 27 | 
            +
                      for (const prop of [
         | 
| 28 | 
            +
                        "forwardRegex",
         | 
| 29 | 
            +
                        "reverseRegex",
         | 
| 30 | 
            +
                        "topSnipOffset",
         | 
| 31 | 
            +
                        "bottomSnipOffset",
         | 
| 32 | 
            +
                        "site"
         | 
| 33 | 
            +
                      ]) {
         | 
| 34 | 
            +
                        if (val[prop] === undefined || val[prop] === null) {
         | 
| 35 | 
            +
                          console.error(
         | 
| 36 | 
            +
                            `23483g93h Error: Missing property ${prop} for enzyme ${key}. Ignoring this enzyme`
         | 
| 37 | 
            +
                          );
         | 
| 38 | 
            +
                          return false;
         | 
| 39 | 
            +
                        }
         | 
| 40 | 
            +
                      }
         | 
| 41 | 
            +
                      return true;
         | 
| 42 | 
            +
                    }
         | 
| 43 | 
            +
                  )
         | 
| 44 | 
            +
                );
         | 
| 45 | 
            +
              }
         | 
| 46 | 
            +
            );
         | 
| @@ -0,0 +1,41 @@ | |
| 1 | 
            +
            import cutsitesSelector from "./cutsitesSelector";
         | 
| 2 | 
            +
            import getAdditionalEnzymesSelector from "./getAdditionalEnzymesSelector";
         | 
| 3 | 
            +
            import translationsSelector from "./translationsSelector";
         | 
| 4 | 
            +
            import sequenceLengthSelector from "./sequenceLengthSelector";
         | 
| 5 | 
            +
            import sequenceDataSelector from "./sequenceDataSelector";
         | 
| 6 | 
            +
            import sequenceSelector from "./sequenceSelector";
         | 
| 7 | 
            +
            import circularSelector from "./circularSelector";
         | 
| 8 | 
            +
            import orfsSelector from "./orfsSelector";
         | 
| 9 | 
            +
            import selectedCutsitesSelector from "./selectedCutsitesSelector";
         | 
| 10 | 
            +
            import filteredRestrictionEnzymesSelector from "./filteredRestrictionEnzymesSelector";
         | 
| 11 | 
            +
            import filteredCutsitesSelector from "./filteredCutsitesSelector";
         | 
| 12 | 
            +
            import searchLayersSelector from "./searchLayersSelector";
         | 
| 13 | 
            +
            import annotationSearchSelector from "./annotationSearchSelector";
         | 
| 14 | 
            +
            import restrictionEnzymesSelector from "./restrictionEnzymesSelector";
         | 
| 15 | 
            +
            import filteredFeaturesSelector from "./filteredFeaturesSelector";
         | 
| 16 | 
            +
            import filteredPrimersSelector from "./filteredPrimersSelector";
         | 
| 17 | 
            +
            import cutsiteLabelColorSelector from "./cutsiteLabelColorSelector";
         | 
| 18 | 
            +
            import filteredPartsSelector from "./filteredPartsSelector";
         | 
| 19 | 
            +
            import isEnzymeFilterAndSelector from "./isEnzymeFilterAndSelector";
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            export default {
         | 
| 22 | 
            +
              translationsSelector,
         | 
| 23 | 
            +
              getAdditionalEnzymesSelector,
         | 
| 24 | 
            +
              cutsitesSelector,
         | 
| 25 | 
            +
              sequenceDataSelector,
         | 
| 26 | 
            +
              sequenceLengthSelector,
         | 
| 27 | 
            +
              selectedCutsitesSelector,
         | 
| 28 | 
            +
              orfsSelector,
         | 
| 29 | 
            +
              circularSelector,
         | 
| 30 | 
            +
              annotationSearchSelector,
         | 
| 31 | 
            +
              searchLayersSelector,
         | 
| 32 | 
            +
              filteredCutsitesSelector,
         | 
| 33 | 
            +
              filteredRestrictionEnzymesSelector,
         | 
| 34 | 
            +
              filteredPrimersSelector,
         | 
| 35 | 
            +
              filteredFeaturesSelector,
         | 
| 36 | 
            +
              filteredPartsSelector,
         | 
| 37 | 
            +
              isEnzymeFilterAndSelector,
         | 
| 38 | 
            +
              restrictionEnzymesSelector,
         | 
| 39 | 
            +
              sequenceSelector,
         | 
| 40 | 
            +
              cutsiteLabelColorSelector
         | 
| 41 | 
            +
            };
         | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            export default (state) => state.restrictionEnzymes.isEnzymeFilterAnd;
         | 
| @@ -0,0 +1,15 @@ | |
| 1 | 
            +
            import circularSelector from "./circularSelector";
         | 
| 2 | 
            +
            import sequenceSelector from "./sequenceSelector";
         | 
| 3 | 
            +
            import minimumOrfSizeSelector from "./minimumOrfSizeSelector";
         | 
| 4 | 
            +
            import { findOrfsInPlasmid } from "@teselagen/sequence-utils";
         | 
| 5 | 
            +
            import { createSelector } from "reselect";
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            export default createSelector(
         | 
| 8 | 
            +
              sequenceSelector,
         | 
| 9 | 
            +
              circularSelector,
         | 
| 10 | 
            +
              minimumOrfSizeSelector,
         | 
| 11 | 
            +
              (state) => state.useAdditionalOrfStartCodons,
         | 
| 12 | 
            +
              findOrfsInPlasmid
         | 
| 13 | 
            +
            );
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            //tiny
         | 
| @@ -0,0 +1,34 @@ | |
| 1 | 
            +
            import { forEach } from "lodash";
         | 
| 2 | 
            +
            import { createSelector } from "reselect";
         | 
| 3 | 
            +
            import {
         | 
| 4 | 
            +
              defaultEnzymesByName,
         | 
| 5 | 
            +
              aliasedEnzymesByName
         | 
| 6 | 
            +
            } from "@teselagen/sequence-utils";
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            export default createSelector(
         | 
| 9 | 
            +
              () => defaultEnzymesByName,
         | 
| 10 | 
            +
              (state, additionalEnzymes) => {
         | 
| 11 | 
            +
                return additionalEnzymes;
         | 
| 12 | 
            +
              },
         | 
| 13 | 
            +
              () => localStorage.getItem("enzymeGroups"), //it should recompute if the enzyme groups change in localstorage
         | 
| 14 | 
            +
              (defaultEnzymesByName, additionalEnzymes) => {
         | 
| 15 | 
            +
                const enzymesFromGroups = {};
         | 
| 16 | 
            +
                forEach(window.getExistingEnzymeGroups(), (group) => {
         | 
| 17 | 
            +
                  forEach(group, (enzymeName) => {
         | 
| 18 | 
            +
                    const enzyme = { ...aliasedEnzymesByName, ...additionalEnzymes }[
         | 
| 19 | 
            +
                      enzymeName.toLowerCase()
         | 
| 20 | 
            +
                    ];
         | 
| 21 | 
            +
                    if (!enzyme) {
         | 
| 22 | 
            +
                      console.warn("ruh roh, no enzyme found for: ", enzymeName);
         | 
| 23 | 
            +
                    } else {
         | 
| 24 | 
            +
                      enzymesFromGroups[enzymeName.toLowerCase()] = enzyme;
         | 
| 25 | 
            +
                    }
         | 
| 26 | 
            +
                  });
         | 
| 27 | 
            +
                });
         | 
| 28 | 
            +
                return {
         | 
| 29 | 
            +
                  ...defaultEnzymesByName,
         | 
| 30 | 
            +
                  ...additionalEnzymes,
         | 
| 31 | 
            +
                  ...enzymesFromGroups
         | 
| 32 | 
            +
                };
         | 
| 33 | 
            +
              }
         | 
| 34 | 
            +
            );
         | 
| @@ -0,0 +1,71 @@ | |
| 1 | 
            +
            import { findSequenceMatches } from "@teselagen/sequence-utils";
         | 
| 2 | 
            +
            import sequenceSelector from "./sequenceSelector";
         | 
| 3 | 
            +
            import { createSelector } from "reselect";
         | 
| 4 | 
            +
            import circularSelector from "./circularSelector";
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            function searchLayersSelector(
         | 
| 7 | 
            +
              sequence,
         | 
| 8 | 
            +
              isCircular,
         | 
| 9 | 
            +
              isOpen,
         | 
| 10 | 
            +
              searchString,
         | 
| 11 | 
            +
              ambiguousOrLiteral,
         | 
| 12 | 
            +
              dnaOrAA,
         | 
| 13 | 
            +
              isProtein,
         | 
| 14 | 
            +
              proteinSequence
         | 
| 15 | 
            +
            ) {
         | 
| 16 | 
            +
              if (!searchString || !isOpen) {
         | 
| 17 | 
            +
                return [];
         | 
| 18 | 
            +
              }
         | 
| 19 | 
            +
              if (isProtein) {
         | 
| 20 | 
            +
                const searchingDna = dnaOrAA === "DNA";
         | 
| 21 | 
            +
                const matches = findSequenceMatches(
         | 
| 22 | 
            +
                  searchingDna ? sequence : proteinSequence,
         | 
| 23 | 
            +
                  searchString,
         | 
| 24 | 
            +
                  {
         | 
| 25 | 
            +
                    isCircular: false,
         | 
| 26 | 
            +
                    isProteinSequence: true,
         | 
| 27 | 
            +
                    isAmbiguous: ambiguousOrLiteral === "AMBIGUOUS",
         | 
| 28 | 
            +
                    // isProteinSearch: dnaOrAA !== "DNA",
         | 
| 29 | 
            +
                    searchReverseStrand: false
         | 
| 30 | 
            +
                  }
         | 
| 31 | 
            +
                ).sort(({ start }, { start: start2 }) => {
         | 
| 32 | 
            +
                  return start - start2;
         | 
| 33 | 
            +
                });
         | 
| 34 | 
            +
                return searchingDna
         | 
| 35 | 
            +
                  ? matches
         | 
| 36 | 
            +
                  : matches.map(({ start, end, ...rest }) => ({
         | 
| 37 | 
            +
                      ...rest,
         | 
| 38 | 
            +
                      isSearchLayer: true,
         | 
| 39 | 
            +
                      start: start * 3,
         | 
| 40 | 
            +
                      end: end * 3 + 2
         | 
| 41 | 
            +
                    }));
         | 
| 42 | 
            +
              }
         | 
| 43 | 
            +
              const matches = findSequenceMatches(sequence, searchString, {
         | 
| 44 | 
            +
                isCircular,
         | 
| 45 | 
            +
                isAmbiguous: ambiguousOrLiteral === "AMBIGUOUS",
         | 
| 46 | 
            +
                isProteinSearch: dnaOrAA !== "DNA",
         | 
| 47 | 
            +
                searchReverseStrand: true
         | 
| 48 | 
            +
              }).sort(({ start }, { start: start2 }) => {
         | 
| 49 | 
            +
                return start - start2;
         | 
| 50 | 
            +
              });
         | 
| 51 | 
            +
              return matches.map((match) => ({
         | 
| 52 | 
            +
                ...match,
         | 
| 53 | 
            +
                forward: !match.bottomStrand,
         | 
| 54 | 
            +
                className:
         | 
| 55 | 
            +
                  "veSearchLayer " +
         | 
| 56 | 
            +
                  (match.bottomStrand ? " veSearchLayerBottomStrand" : ""),
         | 
| 57 | 
            +
                isSearchLayer: true
         | 
| 58 | 
            +
              }));
         | 
| 59 | 
            +
            }
         | 
| 60 | 
            +
             | 
| 61 | 
            +
            export default createSelector(
         | 
| 62 | 
            +
              sequenceSelector,
         | 
| 63 | 
            +
              circularSelector,
         | 
| 64 | 
            +
              (state) => state.findTool && state.findTool.isOpen,
         | 
| 65 | 
            +
              (state) => state.findTool && state.findTool.searchText,
         | 
| 66 | 
            +
              (state) => state.findTool && state.findTool.ambiguousOrLiteral,
         | 
| 67 | 
            +
              (state) => state.findTool && state.findTool.dnaOrAA,
         | 
| 68 | 
            +
              (state) => state.sequenceData.isProtein,
         | 
| 69 | 
            +
              (state) => state.sequenceData.proteinSequence,
         | 
| 70 | 
            +
              searchLayersSelector
         | 
| 71 | 
            +
            );
         | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            export default state => state.selectedAnnotations;
         | 
| @@ -0,0 +1,21 @@ | |
| 1 | 
            +
            import { createSelector } from "reselect";
         | 
| 2 | 
            +
            import selectedAnnotationsSelector from "./selectedAnnotationsSelector";
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            export default createSelector(
         | 
| 5 | 
            +
              selectedAnnotationsSelector,
         | 
| 6 | 
            +
              function (selectedAnnotations) {
         | 
| 7 | 
            +
                const { idStack, idMap } = selectedAnnotations;
         | 
| 8 | 
            +
                const cutsiteIdMap = {};
         | 
| 9 | 
            +
                const cutsiteIdStack = idStack.filter(function (id) {
         | 
| 10 | 
            +
                  if (idMap[id].annotationType === "cutsite") {
         | 
| 11 | 
            +
                    cutsiteIdMap[id] = idMap[id];
         | 
| 12 | 
            +
                    return true;
         | 
| 13 | 
            +
                  }
         | 
| 14 | 
            +
                  return false;
         | 
| 15 | 
            +
                });
         | 
| 16 | 
            +
                return {
         | 
| 17 | 
            +
                  idStack: cutsiteIdStack,
         | 
| 18 | 
            +
                  idMap: cutsiteIdMap
         | 
| 19 | 
            +
                };
         | 
| 20 | 
            +
              }
         | 
| 21 | 
            +
            );
         | 
| @@ -0,0 +1,14 @@ | |
| 1 | 
            +
            import { createSelector } from "reselect";
         | 
| 2 | 
            +
            import searchLayersSelector from "./searchLayersSelector";
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            export default createSelector(
         | 
| 5 | 
            +
              searchLayersSelector,
         | 
| 6 | 
            +
              state => state.findTool && state.findTool.dnaOrAA,
         | 
| 7 | 
            +
              state => state.findTool && state.findTool.highlightAll,
         | 
| 8 | 
            +
              state => state.findTool && state.findTool.matchNumber,
         | 
| 9 | 
            +
              (searchLayers, dnaOrAA, highlightAll, matchNumber) => {
         | 
| 10 | 
            +
                if (dnaOrAA === "DNA") return [];
         | 
| 11 | 
            +
                if (!highlightAll) return [searchLayers[matchNumber]];
         | 
| 12 | 
            +
                return searchLayers;
         | 
| 13 | 
            +
              }
         | 
| 14 | 
            +
            );
         | 
| @@ -0,0 +1,8 @@ | |
| 1 | 
            +
            import { createSelector } from "reselect";
         | 
| 2 | 
            +
            import sequenceDataSelector from "./sequenceDataSelector";
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            function translationsRawSelector(sequenceData) {
         | 
| 5 | 
            +
              return sequenceData.translations;
         | 
| 6 | 
            +
            }
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            export default createSelector(sequenceDataSelector, translationsRawSelector);
         | 
| @@ -0,0 +1,137 @@ | |
| 1 | 
            +
            import { reduce } from "lodash";
         | 
| 2 | 
            +
            import uuid from "shortid";
         | 
| 3 | 
            +
            import sequenceSelector from "./sequenceSelector";
         | 
| 4 | 
            +
            import orfsSelector from "./orfsSelector";
         | 
| 5 | 
            +
            import { createSelector } from "reselect";
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            import { getAminoAcidDataForEachBaseOfDna } from "@teselagen/sequence-utils";
         | 
| 8 | 
            +
            import each from "lodash/each";
         | 
| 9 | 
            +
            import translationsRawSelector from "./translationsRawSelector";
         | 
| 10 | 
            +
            import translationSearchMatchesSelector from "./translationSearchMatchesSelector";
         | 
| 11 | 
            +
            import { normalizePositionByRangeLength } from "@teselagen/range-utils";
         | 
| 12 | 
            +
            import cdsFeaturesSelector from "./cdsFeaturesSelector";
         | 
| 13 | 
            +
            import circularSelector from "./circularSelector";
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            function translationsSelector(
         | 
| 16 | 
            +
              isCircular,
         | 
| 17 | 
            +
              translationSearchMatches,
         | 
| 18 | 
            +
              sequence,
         | 
| 19 | 
            +
              orfs,
         | 
| 20 | 
            +
              showOrfTranslations,
         | 
| 21 | 
            +
              showOrfs,
         | 
| 22 | 
            +
              cdsFeatures,
         | 
| 23 | 
            +
              showCdsFeatureTranslations,
         | 
| 24 | 
            +
              showFeatures,
         | 
| 25 | 
            +
              translations,
         | 
| 26 | 
            +
              frameTranslations
         | 
| 27 | 
            +
            ) {
         | 
| 28 | 
            +
              const translationsToPass = {
         | 
| 29 | 
            +
                ...translationSearchMatches.reduce((acc, match) => {
         | 
| 30 | 
            +
                  if (!match) return acc;
         | 
| 31 | 
            +
                  const id = match.id || uuid();
         | 
| 32 | 
            +
                  acc[id] = {
         | 
| 33 | 
            +
                    ...match,
         | 
| 34 | 
            +
                    id,
         | 
| 35 | 
            +
                    translationType: "AA Search Match",
         | 
| 36 | 
            +
                    isOrf: true, //pass isOrf = true here in order to not have it show up in the properties window
         | 
| 37 | 
            +
                    forward: !match.bottomStrand
         | 
| 38 | 
            +
                  };
         | 
| 39 | 
            +
                  return acc;
         | 
| 40 | 
            +
                }, {}),
         | 
| 41 | 
            +
                ...reduce(
         | 
| 42 | 
            +
                  translations,
         | 
| 43 | 
            +
                  (acc, translation) => {
         | 
| 44 | 
            +
                    if (!translation.isOrf) {
         | 
| 45 | 
            +
                      acc[translation.id] = {
         | 
| 46 | 
            +
                        ...translation,
         | 
| 47 | 
            +
                        translationType: "User Created"
         | 
| 48 | 
            +
                      };
         | 
| 49 | 
            +
                    }
         | 
| 50 | 
            +
                    return acc;
         | 
| 51 | 
            +
                  },
         | 
| 52 | 
            +
                  {}
         | 
| 53 | 
            +
                ),
         | 
| 54 | 
            +
                ...(showOrfTranslations && showOrfs
         | 
| 55 | 
            +
                  ? reduce(
         | 
| 56 | 
            +
                      orfs,
         | 
| 57 | 
            +
                      (acc, orf) => {
         | 
| 58 | 
            +
                        acc[orf.id] = { ...orf, translationType: "ORF" };
         | 
| 59 | 
            +
                        return acc;
         | 
| 60 | 
            +
                      },
         | 
| 61 | 
            +
                      {}
         | 
| 62 | 
            +
                    )
         | 
| 63 | 
            +
                  : {}),
         | 
| 64 | 
            +
                ...(showCdsFeatureTranslations &&
         | 
| 65 | 
            +
                  showFeatures &&
         | 
| 66 | 
            +
                  reduce(
         | 
| 67 | 
            +
                    cdsFeatures,
         | 
| 68 | 
            +
                    (acc, cdsFeature) => {
         | 
| 69 | 
            +
                      acc[cdsFeature.id] = {
         | 
| 70 | 
            +
                        ...cdsFeature,
         | 
| 71 | 
            +
                        translationType: "CDS Feature"
         | 
| 72 | 
            +
                      };
         | 
| 73 | 
            +
                      return acc;
         | 
| 74 | 
            +
                    },
         | 
| 75 | 
            +
                    {}
         | 
| 76 | 
            +
                  )),
         | 
| 77 | 
            +
                ...reduce(
         | 
| 78 | 
            +
                  frameTranslations,
         | 
| 79 | 
            +
                  (acc, isActive, frameName) => {
         | 
| 80 | 
            +
                    const frameOffset = Number(frameName);
         | 
| 81 | 
            +
                    if (isActive) {
         | 
| 82 | 
            +
                      const id = uuid();
         | 
| 83 | 
            +
                      acc[id] = {
         | 
| 84 | 
            +
                        id,
         | 
| 85 | 
            +
                        start:
         | 
| 86 | 
            +
                          isCircular || frameOffset > 0
         | 
| 87 | 
            +
                            ? normalizePositionByRangeLength(
         | 
| 88 | 
            +
                                0 + frameOffset + (frameOffset > 0 ? -1 : 1),
         | 
| 89 | 
            +
                                sequence.length
         | 
| 90 | 
            +
                              )
         | 
| 91 | 
            +
                            : 0,
         | 
| 92 | 
            +
                        end:
         | 
| 93 | 
            +
                          isCircular || frameOffset < 0
         | 
| 94 | 
            +
                            ? normalizePositionByRangeLength(
         | 
| 95 | 
            +
                                sequence.length -
         | 
| 96 | 
            +
                                  1 +
         | 
| 97 | 
            +
                                  frameOffset +
         | 
| 98 | 
            +
                                  (frameOffset > 0 ? -1 : 1),
         | 
| 99 | 
            +
                                sequence.length
         | 
| 100 | 
            +
                              )
         | 
| 101 | 
            +
                            : sequence.length - 1,
         | 
| 102 | 
            +
                        translationType: "Frame",
         | 
| 103 | 
            +
                        forward: frameOffset > 0,
         | 
| 104 | 
            +
                        isOrf: true //pass isOrf = true here in order to not have it show up in the properties window
         | 
| 105 | 
            +
                      };
         | 
| 106 | 
            +
                    }
         | 
| 107 | 
            +
                    return acc;
         | 
| 108 | 
            +
                  },
         | 
| 109 | 
            +
                  {}
         | 
| 110 | 
            +
                )
         | 
| 111 | 
            +
              };
         | 
| 112 | 
            +
              each(translationsToPass, function (translation) {
         | 
| 113 | 
            +
                translation.aminoAcids = getAminoAcidDataForEachBaseOfDna(
         | 
| 114 | 
            +
                  sequence,
         | 
| 115 | 
            +
                  translation.forward,
         | 
| 116 | 
            +
                  translation
         | 
| 117 | 
            +
                );
         | 
| 118 | 
            +
              });
         | 
| 119 | 
            +
              return translationsToPass;
         | 
| 120 | 
            +
            }
         | 
| 121 | 
            +
             | 
| 122 | 
            +
            export default createSelector(
         | 
| 123 | 
            +
              circularSelector,
         | 
| 124 | 
            +
              translationSearchMatchesSelector,
         | 
| 125 | 
            +
              sequenceSelector,
         | 
| 126 | 
            +
              orfsSelector,
         | 
| 127 | 
            +
              (state) => state.annotationVisibility.orfTranslations,
         | 
| 128 | 
            +
              (state) => state.annotationVisibility.orfs,
         | 
| 129 | 
            +
              cdsFeaturesSelector,
         | 
| 130 | 
            +
              (state) => state.annotationVisibility.cdsFeatureTranslations,
         | 
| 131 | 
            +
              (state) => state.annotationVisibility.features,
         | 
| 132 | 
            +
              translationsRawSelector,
         | 
| 133 | 
            +
              (state) => state.frameTranslations,
         | 
| 134 | 
            +
              (state) => state.sequenceData.isProtein,
         | 
| 135 | 
            +
              (state) => state.sequenceData.proteinSequence,
         | 
| 136 | 
            +
              translationsSelector
         | 
| 137 | 
            +
            );
         | 
    
        package/src/style.css
    ADDED
    
    | @@ -0,0 +1,82 @@ | |
| 1 | 
            +
            .ve-monospace-font {
         | 
| 2 | 
            +
              font-family: "Ubuntu Mono", "Lucida Console", Monaco, monospace;
         | 
| 3 | 
            +
              font-size: 12px;
         | 
| 4 | 
            +
            }
         | 
| 5 | 
            +
            .rowViewTextContainer text {
         | 
| 6 | 
            +
              user-select: none;
         | 
| 7 | 
            +
            }
         | 
| 8 | 
            +
            .translationLayer text {
         | 
| 9 | 
            +
              user-select: none;
         | 
| 10 | 
            +
            }
         | 
| 11 | 
            +
            .ve-sequence-reverse {
         | 
| 12 | 
            +
              fill: #b0b0b0;
         | 
| 13 | 
            +
            }
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            .veCircularView .ve-monospace-font {
         | 
| 16 | 
            +
              font-family: "Lucida Console", Monaco, monospace;
         | 
| 17 | 
            +
              font-size: 14px;
         | 
| 18 | 
            +
            }
         | 
| 19 | 
            +
             | 
| 20 | 
            +
            .vespacer {
         | 
| 21 | 
            +
              height: 15px;
         | 
| 22 | 
            +
            }
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            .clickable {
         | 
| 25 | 
            +
              cursor: pointer;
         | 
| 26 | 
            +
            }
         | 
| 27 | 
            +
             | 
| 28 | 
            +
            .openVeContextMenu .bp3-key {
         | 
| 29 | 
            +
              box-shadow: none;
         | 
| 30 | 
            +
              margin: 0px !important;
         | 
| 31 | 
            +
              padding: 0px !important;
         | 
| 32 | 
            +
              height: 11px;
         | 
| 33 | 
            +
              line-height: 7px;
         | 
| 34 | 
            +
              background: none;
         | 
| 35 | 
            +
            }
         | 
| 36 | 
            +
             | 
| 37 | 
            +
            .openVeContextMenu .bp3-icon-standard {
         | 
| 38 | 
            +
              font-size: 10px;
         | 
| 39 | 
            +
              height: 10px;
         | 
| 40 | 
            +
            }
         | 
| 41 | 
            +
             | 
| 42 | 
            +
            .veCutsiteLabel {
         | 
| 43 | 
            +
              font-style: italic;
         | 
| 44 | 
            +
              user-select: none;
         | 
| 45 | 
            +
            }
         | 
| 46 | 
            +
             | 
| 47 | 
            +
            .veCutsiteLabel:hover {
         | 
| 48 | 
            +
              font-weight: bold;
         | 
| 49 | 
            +
            }
         | 
| 50 | 
            +
             | 
| 51 | 
            +
            /* .disable-hover .veRowItem {
         | 
| 52 | 
            +
              pointer-events: none !important;
         | 
| 53 | 
            +
            } */
         | 
| 54 | 
            +
             | 
| 55 | 
            +
            .veWhiteBackground {
         | 
| 56 | 
            +
              background: white;
         | 
| 57 | 
            +
            }
         | 
| 58 | 
            +
             | 
| 59 | 
            +
            .tg-min-width-dialog {
         | 
| 60 | 
            +
              min-width: 300px;
         | 
| 61 | 
            +
            }
         | 
| 62 | 
            +
             | 
| 63 | 
            +
            /* this is necessary to allow the editor and its portals to sit at the top of the z-index stack for jbei */
         | 
| 64 | 
            +
             | 
| 65 | 
            +
            .ove-portal {
         | 
| 66 | 
            +
              z-index: 100000;
         | 
| 67 | 
            +
            }
         | 
| 68 | 
            +
            body.tg-no-scroll-body {
         | 
| 69 | 
            +
              overflow-x: hidden;
         | 
| 70 | 
            +
              overflow-y: hidden;
         | 
| 71 | 
            +
            }
         | 
| 72 | 
            +
             | 
| 73 | 
            +
            .veToolbar {
         | 
| 74 | 
            +
              padding-top: 3px;
         | 
| 75 | 
            +
            }
         | 
| 76 | 
            +
            .veToolbar-outer {
         | 
| 77 | 
            +
              padding-bottom: 1px;
         | 
| 78 | 
            +
              background: #ebf1f5;
         | 
| 79 | 
            +
            }
         | 
| 80 | 
            +
            .bp3-dark .veToolbar-outer {
         | 
| 81 | 
            +
              background: #202b33;
         | 
| 82 | 
            +
            }
         |