@teselagen/ove 0.0.13 → 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 +164751 -135808
- 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 -193201
|
@@ -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
|
+
}
|