@teselagen/ove 0.7.28 → 0.7.30-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (301) hide show
  1. package/CreateAnnotationsPage.d.ts +4 -3
  2. package/README.md +1 -1
  3. package/fileUtils.d.ts +12 -0
  4. package/html2canvas.esm--JN4fLQL.js +7891 -0
  5. package/html2canvas.esm-B7d7VJmQ.cjs +7891 -0
  6. package/index.cjs.js +1305 -1121
  7. package/index.es.js +1305 -1121
  8. package/index.umd.js +189161 -0
  9. package/ove.css +17 -4
  10. package/package.json +5 -9
  11. package/redux/findTool.d.ts +1 -0
  12. package/selectors/searchLayersSelector.d.ts +1 -1
  13. package/src/AutoAnnotate.js +1 -1
  14. package/src/CreateAnnotationsPage.js +1 -2
  15. package/src/Editor/style.css +8 -3
  16. package/src/FindBar/index.js +32 -1
  17. package/src/RowItem/SelectionLayer/index.js +42 -4
  18. package/src/RowItem/SelectionLayer/style.css +8 -0
  19. package/src/fileUtils.js +103 -0
  20. package/src/helperComponents/PropertiesDialog/TranslationProperties.js +1 -1
  21. package/src/redux/findTool.js +9 -0
  22. package/src/selectors/searchLayersSelector.js +40 -2
  23. package/style.css +12098 -1
  24. package/AASliver.js +0 -187
  25. package/AddLaddersDialog.js +0 -82
  26. package/AdditionalCutsiteInfoDialog.js +0 -599
  27. package/AlignmentVisibilityTool.js +0 -105
  28. package/AnnotationContainerHolder.js +0 -20
  29. package/AnnotationPositioner.js +0 -27
  30. package/AutoAnnotate.js +0 -501
  31. package/AutoAnnotateBpMatchingDialog.js +0 -208
  32. package/Axis.js +0 -151
  33. package/AxisNumbers.js +0 -35
  34. package/Browser.js +0 -106
  35. package/Caret.js +0 -63
  36. package/Chromatogram.js +0 -293
  37. package/CircularDnaSequence.js +0 -73
  38. package/CircularZoomMinimap.js +0 -16
  39. package/ColorPicker.js +0 -30
  40. package/CommandHotkeyHandler.js +0 -44
  41. package/CreateAnnotationsPage.js +0 -98
  42. package/Cutsite.js +0 -18
  43. package/CutsiteProperties.js +0 -176
  44. package/CutsiteSelectionLayers.js +0 -47
  45. package/Cutsites.js +0 -271
  46. package/DeletionLayer.js +0 -28
  47. package/DropHandler.css +0 -21
  48. package/DropHandler.js +0 -64
  49. package/EditCaretPosition.js +0 -234
  50. package/EditTrackNameDialog.js +0 -30
  51. package/Feature.js +0 -83
  52. package/FeatureProperties.js +0 -6
  53. package/FillWindow.js +0 -47
  54. package/GenbankView.js +0 -74
  55. package/GeneralProperties.js +0 -117
  56. package/GenericAnnotationProperties.js +0 -406
  57. package/GlobalDialog.js +0 -73
  58. package/GlobalDialogUtils.js +0 -110
  59. package/GoToDialog.js +0 -25
  60. package/HorizontalPanelDragHandle.js +0 -35
  61. package/Keyboard.js +0 -85
  62. package/Labels.js +0 -327
  63. package/Ladder.css +0 -20
  64. package/Ladder.js +0 -303
  65. package/MeltingTemp.js +0 -85
  66. package/Menlo.ttf +0 -0
  67. package/Minimap.js +0 -515
  68. package/Mismatches.js +0 -134
  69. package/Monaco.ttf +0 -0
  70. package/MultipleSeqsDetectedOnImportDialog.js +0 -74
  71. package/Orf.js +0 -109
  72. package/OrfProperties.js +0 -117
  73. package/Orfs.js +0 -35
  74. package/PCRTool.js +0 -179
  75. package/PairwiseAlignmentView.js +0 -68
  76. package/Part.js +0 -34
  77. package/PartProperties.js +0 -9
  78. package/PassThrough.js +0 -3
  79. package/PerformantSelectionLayer.js +0 -32
  80. package/PinchHelper.js +0 -24
  81. package/PointedAnnotation.js +0 -347
  82. package/PositionAnnotationOnCircle.js +0 -26
  83. package/Primer.js +0 -41
  84. package/PrimerProperties.js +0 -19
  85. package/ReflexContainer.js +0 -802
  86. package/ReflexElement.js +0 -160
  87. package/ReflexEvents.js +0 -77
  88. package/ReflexSplitter.js +0 -205
  89. package/RenameSequenceDialog.js +0 -7
  90. package/RotateCircularViewSlider.js +0 -93
  91. package/SelectDialog.js +0 -150
  92. package/SequenceName.js +0 -15
  93. package/SimpleCircularOrLinearView.js +0 -381
  94. package/SimpleOligoPreview.js +0 -39
  95. package/SingleEnzymeCutsiteInfo.js +0 -139
  96. package/ToolbarItem.js +0 -192
  97. package/Translation.js +0 -198
  98. package/TranslationProperties.js +0 -149
  99. package/UncontrolledSliderWithPlusMinusBtns.css +0 -5
  100. package/UncontrolledSliderWithPlusMinusBtns.js +0 -134
  101. package/VeTopRightContainer.js +0 -12
  102. package/ZoomCircularViewSlider.js +0 -62
  103. package/ZoomLinearView.js +0 -47
  104. package/addAlignment.js +0 -6
  105. package/addMetaToActionCreators.js +0 -12
  106. package/addWrappedAddons.js +0 -20
  107. package/alignmentTool.js +0 -503
  108. package/alignments.js +0 -379
  109. package/annotationLabelVisibility.js +0 -2
  110. package/annotationSearchSelector.js +0 -24
  111. package/annotationTypes.js +0 -35
  112. package/annotationVisibility.js +0 -196
  113. package/annotationsToSupport.js +0 -104
  114. package/arrayToObjWithIds.js +0 -17
  115. package/arrayUtils.js +0 -19
  116. package/array_move.js +0 -10
  117. package/calculateTickMarkPositionsForGivenRange.js +0 -47
  118. package/caretPosition.js +0 -27
  119. package/cdsFeaturesSelector.js +0 -9
  120. package/charWidth.js +0 -22
  121. package/circular.js +0 -19
  122. package/circularSelector.js +0 -4
  123. package/clickAndDragUtils.js +0 -576
  124. package/coerceInitialValue.js +0 -7
  125. package/combineReducersDontIgnoreKeys.js +0 -12
  126. package/commandUtils.js +0 -20
  127. package/constants.js +0 -2
  128. package/copyOptions.js +0 -34
  129. package/createFragmentLines.js +0 -120
  130. package/createMergedDefaultStateReducer.js +0 -30
  131. package/createMetaAction.js +0 -12
  132. package/createSequenceInputPopup.js +0 -290
  133. package/createSequenceInputPopupStyle.css +0 -87
  134. package/createSimpleDialog.js +0 -89
  135. package/createYourOwnEnzyme.js +0 -39
  136. package/cutsiteLabelColorSelector.js +0 -6
  137. package/cutsiteTool.js +0 -88
  138. package/cutsitesByRangeSelector.js +0 -5
  139. package/cutsitesSelector.js +0 -61
  140. package/darkmode.css +0 -98
  141. package/defaultConfig.js +0 -150
  142. package/deletionLayers.js +0 -36
  143. package/description.js +0 -21
  144. package/digestTool.js +0 -34
  145. package/dnaToColor.js +0 -17
  146. package/downloadTool.js +0 -39
  147. package/draggableClassnames.js +0 -5
  148. package/drawAnnotations.js +0 -440
  149. package/drawDirectedPiePiece.js +0 -142
  150. package/editTool.js +0 -49
  151. package/editorSelector.js +0 -2
  152. package/editorUtils.js +0 -205
  153. package/estimateRowHeight.js +0 -184
  154. package/featureLengthsToHide.js +0 -27
  155. package/featureTool.js +0 -34
  156. package/features.js +0 -19
  157. package/featuresSelector.js +0 -8
  158. package/filteredCutsitesSelector.js +0 -136
  159. package/filteredFeaturesSelector.js +0 -32
  160. package/filteredPartsSelector.js +0 -57
  161. package/filteredPrimersSelector.js +0 -27
  162. package/filteredRestrictionEnzymesSelector.js +0 -1
  163. package/find.png +0 -0
  164. package/findTool.js +0 -79
  165. package/findToolConstants.js +0 -1
  166. package/frameTranslations.js +0 -52
  167. package/fullscreen.png +0 -0
  168. package/getAdditionalEnzymesSelector.js +0 -46
  169. package/getAngleForPositionMidpoint.js +0 -3
  170. package/getAnnotationClassnames.js +0 -12
  171. package/getAnnotationNameAndStartStopString.js +0 -61
  172. package/getBpsPerRow.js +0 -19
  173. package/getCutsiteLabelHeights.js +0 -56
  174. package/getGapMap.js +0 -12
  175. package/getGaps.js +0 -27
  176. package/getInternalLabel.js +0 -40
  177. package/getOveHotkeyDefs.js +0 -12
  178. package/getPairwiseOverviewLinearViewOptions.js +0 -38
  179. package/getRangeAnglesSpecial.js +0 -12
  180. package/getStructuredBases.js +0 -97
  181. package/getTrackFromEvent.js +0 -25
  182. package/getVisibleStartEnd.js +0 -7
  183. package/getXStartAndWidthFromNonCircularRange.js +0 -12
  184. package/getXStartAndWidthOfRangeWrtRow.js +0 -27
  185. package/getXStartAndWidthOfRowAnnotation.js +0 -19
  186. package/getYOffset.js +0 -15
  187. package/hoveredAnnotation.js +0 -24
  188. package/importTool.js +0 -27
  189. package/index.js +0 -71
  190. package/inlineFindTool.js +0 -38
  191. package/isElementInViewport.js +0 -29
  192. package/isEnzymeFilterAndSelector.js +0 -1
  193. package/isTargetWithinEl.js +0 -6
  194. package/labelLineIntensity.js +0 -25
  195. package/labelSize.js +0 -23
  196. package/ladderDefaults.js +0 -25
  197. package/lastSavedId.js +0 -20
  198. package/lineageLines.js +0 -11
  199. package/linear.png +0 -0
  200. package/makeStore.js +0 -34
  201. package/massageTickSpacing.js +0 -19
  202. package/materiallyAvailable.js +0 -19
  203. package/middleware.js +0 -112
  204. package/minimumOrfSize.js +0 -24
  205. package/minimumOrfSizeSelector.js +0 -2
  206. package/modalActions.js +0 -3
  207. package/moveCaret.js +0 -58
  208. package/name.js +0 -19
  209. package/normalizeAngle.js +0 -3
  210. package/normalizeAngleRange.js +0 -9
  211. package/oligoTool.js +0 -30
  212. package/onlyUpdateForKeysDeep.js +0 -31
  213. package/orfFrameToColorMap.js +0 -10
  214. package/orfTool.js +0 -136
  215. package/orfsSelector.js +0 -15
  216. package/panelsShown.js +0 -294
  217. package/partLengthsToHide.js +0 -23
  218. package/partOverhangs.js +0 -6
  219. package/partTagSearch.js +0 -69
  220. package/partTool.js +0 -45
  221. package/parts.js +0 -19
  222. package/partsSelector.js +0 -8
  223. package/pie.png +0 -0
  224. package/polarToSpecialCartesian.js +0 -7
  225. package/positionCutsites.js +0 -6
  226. package/prepareRowData.js +0 -64
  227. package/primerBases.js +0 -221
  228. package/primerLengthsToHide.js +0 -27
  229. package/primers.js +0 -19
  230. package/primersSelector.js +0 -8
  231. package/print.png +0 -0
  232. package/printTool.js +0 -31
  233. package/propertiesTool.js +0 -40
  234. package/proteinUtils.js +0 -3
  235. package/pureNoFunc.js +0 -18
  236. package/readOnly.js +0 -25
  237. package/redoTool.js +0 -30
  238. package/reflex-styles.css +0 -128
  239. package/reflex-styles.css.map +0 -9
  240. package/relaxLabelAngles.js +0 -157
  241. package/relaxLabels_DEPRECATED.js +0 -105
  242. package/replacementLayers.js +0 -36
  243. package/restrictionEnzymes.js +0 -52
  244. package/restrictionEnzymesSelector.js +0 -34
  245. package/rowviewContants.js +0 -3
  246. package/ruler.css +0 -89
  247. package/save.png +0 -0
  248. package/saveTool.js +0 -44
  249. package/searchLayersSelector.js +0 -71
  250. package/selectedAnnotations.js +0 -89
  251. package/selectedAnnotationsSelector.js +0 -1
  252. package/selectedCutsitesSelector.js +0 -21
  253. package/selectedPartTags.js +0 -21
  254. package/selectionLayer.js +0 -25
  255. package/sequence.js +0 -12
  256. package/sequenceDataHistory.js +0 -43
  257. package/sequenceDataSelector.js +0 -2
  258. package/sequenceLengthSelector.js +0 -5
  259. package/sequenceSelector.js +0 -4
  260. package/sharedActionCreators.js +0 -0
  261. package/shouldFlipText.js +0 -4
  262. package/shouldRerender.js +0 -27
  263. package/showFileDialog.js +0 -25
  264. package/showGCContent.js +0 -23
  265. package/show_cut_sites.png +0 -0
  266. package/show_features.png +0 -0
  267. package/show_orfs.png +0 -0
  268. package/show_primers.png +0 -0
  269. package/simpleDialog.css +0 -13
  270. package/specialCutsiteFilterOptions.js +0 -22
  271. package/tagsToBoldSelector.js +0 -2
  272. package/toggle_views.svg +0 -1
  273. package/toolBar.js +0 -23
  274. package/translationSearchMatchesSelector.js +0 -14
  275. package/translations.js +0 -20
  276. package/translationsRawSelector.js +0 -8
  277. package/translationsSelector.js +0 -137
  278. package/typeField.js +0 -24
  279. package/undoTool.js +0 -30
  280. package/updateEditor.js +0 -200
  281. package/updateLabelsForInViewFeatures.js +0 -55
  282. package/updateLabelsForInViewFeaturesCircView.js +0 -41
  283. package/updateTrackHelper.js +0 -58
  284. package/uppercaseSequenceMapFont.js +0 -25
  285. package/upsertDeleteActionGenerator.js +0 -31
  286. package/useAAColorType.js +0 -8
  287. package/useAdditionalOrfStartCodons.js +0 -24
  288. package/useAnnotationLimits.js +0 -42
  289. package/useChromatogramPrefs.js +0 -31
  290. package/useFormValue.js +0 -7
  291. package/useLadders.js +0 -6
  292. package/useMeltingTemp.js +0 -7
  293. package/useTmType.js +0 -10
  294. package/userDefinedHandlersAndOpts.js +0 -61
  295. package/utils.js +0 -37
  296. package/versionHistory.js +0 -26
  297. package/versionHistoryTool.js +0 -21
  298. package/viewSubmenu.js +0 -479
  299. package/visibilityTool.js +0 -39
  300. package/withHover.js +0 -113
  301. package/withRestrictionEnzymes.js +0 -15
package/AASliver.js DELETED
@@ -1,187 +0,0 @@
1
- // import PropTypes from "prop-types";
2
- import React from "react";
3
- import pureNoFunc from "../../utils/pureNoFunc";
4
-
5
- function AASliver(props) {
6
- const {
7
- forward,
8
- aminoAcidIndex,
9
- showAAColors = true,
10
- onClick,
11
- onContextMenu,
12
- width,
13
- height,
14
- isFiller,
15
- isTruncatedStart,
16
- isTruncatedEnd,
17
- relativeAAPositionInTranslation,
18
- title,
19
- color,
20
- showAminoAcidNumbers,
21
- letter
22
- } = props;
23
-
24
- if (letter === "-") {
25
- return null;
26
- }
27
-
28
- const dirX1 = 1 / Math.sqrt(26);
29
- const dirY1 = 5 * dirX1;
30
-
31
- const dirX2 = 16 / Math.sqrt(2756);
32
- const dirY2 = 50 / Math.sqrt(2756);
33
-
34
- const roundedCorner = 15;
35
- let path = "";
36
- path = isFiller
37
- ? "25,0 49,0 60,50 49,100 25,100 38,50 25,0"
38
- : isTruncatedStart
39
- ? // ? "0,0 50,0 60,50 50,100 00,100 16,50 0,0"
40
- `M ${roundedCorner / 3}, 0
41
- L ${50 - roundedCorner / 3}, 0
42
- Q 50 0 ${50 + roundedCorner * dirX1} ${roundedCorner * dirY1}
43
- L ${60 - roundedCorner * dirX1}, ${50 - roundedCorner * dirY1}
44
- Q 60 50 ${60 - roundedCorner * dirX1} ${
45
- 50 + roundedCorner * dirY1
46
- }
47
- L ${50 + roundedCorner * dirX1}, ${
48
- 100 - roundedCorner * dirY1
49
- }
50
- Q 50 100 ${50 - roundedCorner} 100
51
- L ${roundedCorner / 3}, 100
52
- Q 0 100 ${roundedCorner * dirX2} ${
53
- 100 - roundedCorner * dirY2
54
- }
55
- L ${16 - roundedCorner * dirX2}, ${50 + roundedCorner * dirY2}
56
- Q 16 50 ${16 - roundedCorner * dirX2} ${
57
- 50 - roundedCorner * dirY2
58
- }
59
- L ${roundedCorner * dirX2}, ${roundedCorner * dirY2}
60
- Q 0 0 ${roundedCorner / 3} 0
61
- z`
62
- : isTruncatedEnd
63
- ? // ? "24,0 74,0 84,50 74,100 24,100 40,50 24,0"
64
- `M ${24 + roundedCorner / 3}, 0
65
- L ${74 - roundedCorner / 3}, 0
66
- Q 74 0 ${74 + roundedCorner * dirX1} ${roundedCorner * dirY1}
67
- L ${84 - roundedCorner * dirX1}, ${50 - roundedCorner * dirY1}
68
- Q 84 50 ${84 - roundedCorner * dirX1} ${
69
- 50 + roundedCorner * dirY1
70
- }
71
- L ${74 + roundedCorner * dirX1}, ${
72
- 100 - roundedCorner * dirY1
73
- }
74
- Q 74 100 ${74 - roundedCorner} 100
75
- L ${24 + roundedCorner / 3}, 100
76
- Q 24 100 ${24 + roundedCorner * dirX2} ${
77
- 100 - roundedCorner * dirY2
78
- }
79
- L ${40 - roundedCorner * dirX2}, ${50 + roundedCorner * dirY2}
80
- Q 40 50 ${40 - roundedCorner * dirX2}, ${
81
- 50 - roundedCorner * dirY2
82
- }
83
- L ${24 + roundedCorner * dirX2}, ${roundedCorner * dirY2}
84
- Q 24 0 ${24 + roundedCorner / 3} 0
85
- z`
86
- : `M ${roundedCorner / 3}, 0
87
- L ${74 - roundedCorner / 3}, 0
88
- Q 74 0 ${74 + roundedCorner * dirX1} ${roundedCorner * dirY1}
89
- L ${84 - roundedCorner * dirX1}, ${50 - roundedCorner * dirY1}
90
- Q 84 50 ${84 - roundedCorner * dirX1} ${
91
- 50 + roundedCorner * dirY1
92
- }
93
- L ${74 + roundedCorner * dirX1}, ${
94
- 100 - roundedCorner * dirY1
95
- }
96
- Q 74 100 ${74 - roundedCorner / 3} 100
97
- L ${roundedCorner / 3}, 100
98
- Q 0 100 ${roundedCorner * dirX2} ${
99
- 100 - roundedCorner * dirY2
100
- }
101
- L ${16 - roundedCorner * dirX2}, ${50 + roundedCorner * dirY2}
102
- Q 16 50 ${16 - roundedCorner * dirX2}, ${
103
- 50 - roundedCorner * dirY2
104
- }
105
- L ${roundedCorner * dirX2}, ${roundedCorner * dirY2}
106
- Q 0 0 ${roundedCorner / 3} 0
107
- z`;
108
- return (
109
- <g
110
- onClick={onClick}
111
- onContextMenu={onContextMenu}
112
- transform={
113
- "scale(" +
114
- (width / 100) * 1.25 +
115
- ", " +
116
- height / 100 +
117
- ") translate(" +
118
- ((forward ? -20 : -50) +
119
- ((relativeAAPositionInTranslation - 1) * 100) / 1.25) +
120
- ",0)"
121
- }
122
- >
123
- <title>{title}</title>
124
- {showAAColors &&
125
- (isFiller ? (
126
- <polyline
127
- className={letter}
128
- transform={forward ? "scale(3,1)" : "translate(300,0) scale(-3,1) "}
129
- points={
130
- isFiller
131
- ? "25,0 49,0 60,50 49,100 25,100 38,50 25,0"
132
- : isTruncatedStart
133
- ? "0,0 50,0 60,50 50,100 00,100 16,50 0,0"
134
- : isTruncatedEnd
135
- ? "24,0 74,0 84,50 74,100 24,100 40,50 24,0"
136
- : "0,0 74,0 85,50 74,100 0,100 16,50 0,0"
137
- }
138
- strokeWidth="5"
139
- fill={color || "gray"}
140
- />
141
- ) : (
142
- <path
143
- className={letter}
144
- transform={forward ? "scale(3,1)" : "translate(300,0) scale(-3,1) "}
145
- d={path}
146
- strokeWidth="5"
147
- fill={color || "gray"}
148
- />
149
- ))}
150
-
151
- {/* isTruncatedEnd && isTruncatedStart is the special case of a single base exon */}
152
- {(!isFiller || (isTruncatedEnd && isTruncatedStart)) && (
153
- <text
154
- fontSize={25}
155
- stroke="black"
156
- strokeWidth={2}
157
- transform={`scale(${(3 / width) * 10},3) translate(${
158
- ((forward ? 45 : 55) * width) / 10
159
- },21)`}
160
- x="0"
161
- y="4"
162
- style={{ textAnchor: "middle" }}
163
- >
164
- {letter}
165
- </text>
166
- )}
167
-
168
- {showAminoAcidNumbers && (aminoAcidIndex + 1) % 5 === 0 && (
169
- <text
170
- fontSize={25}
171
- stroke="black"
172
- strokeWidth={2}
173
- transform={`scale(${(3 / width) * 10},3) translate(${
174
- ((forward ? 45 : 55) * width) / 10
175
- },51)`}
176
- x="0"
177
- y="4"
178
- style={{ textAnchor: "middle" }}
179
- >
180
- {aminoAcidIndex + 1}
181
- </text>
182
- )}
183
- </g>
184
- );
185
- }
186
-
187
- export default pureNoFunc(AASliver);
@@ -1,82 +0,0 @@
1
- import { FileUploadField, wrapDialog } from "@teselagen/ui";
2
- import React from "react";
3
- import { compose } from "recompose";
4
- import { reduxForm } from "redux-form";
5
- import useLadders from "../utils/useLadders";
6
- import { MenuItem } from "@blueprintjs/core";
7
- import downloadjs from "downloadjs";
8
- import { isArray } from "lodash-es";
9
- import { hideDialog } from "../GlobalDialogUtils";
10
-
11
- export const AddLaddersDialog = compose(
12
- wrapDialog({ title: "Add Ladder" }),
13
- reduxForm({ form: "AddLaddersDialog" })
14
- )(function AddLaddersDialog({ setSelectedLadder }) {
15
- const [additionalLadders, setLadders] = useLadders();
16
- return (
17
- <div className="bp3-dialog-body">
18
- <FileUploadField
19
- fileLimit={1}
20
- threeDotMenuItems={
21
- <MenuItem
22
- text="Download Example File"
23
- onClick={() => {
24
- downloadjs(
25
- `{
26
- "value": "exampleRuler",
27
- "label": "Example Ladder 2Kb",
28
- "markings": [
29
- 40000, 20000, 8000, 3000, 1500, 900, 440, 333,
30
- 222, 17
31
- ]
32
- }
33
- `,
34
- `exampleLadderFile.json`,
35
- "text/plain"
36
- );
37
- }}
38
- />
39
- }
40
- name="ladderUpload"
41
- innerText="Upload a new ladder .json file"
42
- accept={[".json"]}
43
- readBeforeUpload
44
- style={{ maxWidth: 400 }}
45
- beforeUpload={async files => {
46
- try {
47
- const newLadder = JSON.parse(files[0].parsedString);
48
- if (!newLadder) {
49
- throw new Error(
50
- "No new ladder found. Use the example file for the proper JSON format"
51
- );
52
- }
53
- if (typeof newLadder.value !== "string") {
54
- throw new Error(
55
- "Incorrect value. Use the example file for the proper JSON format"
56
- );
57
- }
58
- if (typeof newLadder.label !== "string") {
59
- throw new Error(
60
- "Incorrect label. Use the example file for the proper JSON format"
61
- );
62
- }
63
- if (!isArray(newLadder.markings)) {
64
- throw new Error(
65
- "Incorrect markings. Use the example file for the proper JSON format"
66
- );
67
- }
68
- setLadders([...additionalLadders, newLadder]);
69
- window.toastr.success(`Added New Ladder ${newLadder.label}`);
70
- setSelectedLadder(newLadder.value);
71
- } catch (e) {
72
- console.error(`e:`, e);
73
- window.toastr.error(
74
- "Something went wrong with the file upload. Check the dev console for more details. Use the example file for the proper JSON format"
75
- );
76
- }
77
- hideDialog();
78
- }}
79
- />
80
- </div>
81
- );
82
- });