@teselagen/ove 0.7.26 → 0.7.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (304) hide show
  1. package/AASliver.js +187 -0
  2. package/AddLaddersDialog.js +82 -0
  3. package/AdditionalCutsiteInfoDialog.js +599 -0
  4. package/AlignmentView/Mismatches.d.ts +3 -3
  5. package/AlignmentVisibilityTool.js +105 -0
  6. package/AnnotationContainerHolder.js +20 -0
  7. package/AnnotationPositioner.js +27 -0
  8. package/AutoAnnotate.js +501 -0
  9. package/AutoAnnotateBpMatchingDialog.js +208 -0
  10. package/Axis.js +151 -0
  11. package/AxisNumbers.js +35 -0
  12. package/Browser.js +106 -0
  13. package/Caret.js +63 -0
  14. package/Chromatogram.js +293 -0
  15. package/CircularDnaSequence.js +73 -0
  16. package/CircularView/Labels/index.d.ts +1 -1
  17. package/CircularView/index.d.ts +0 -1
  18. package/CircularZoomMinimap.js +16 -0
  19. package/ColorPicker.js +30 -0
  20. package/CommandHotkeyHandler.js +44 -0
  21. package/CreateAnnotationsPage.d.ts +4 -4
  22. package/CreateAnnotationsPage.js +98 -0
  23. package/Cutsite.js +18 -0
  24. package/CutsiteProperties.js +176 -0
  25. package/CutsiteSelectionLayers.js +47 -0
  26. package/Cutsites.js +271 -0
  27. package/DeletionLayer.js +28 -0
  28. package/DigestTool/Ladder.d.ts +1 -1
  29. package/DropHandler.css +21 -0
  30. package/DropHandler.js +64 -0
  31. package/EditCaretPosition.js +234 -0
  32. package/EditTrackNameDialog.js +30 -0
  33. package/Feature.js +83 -0
  34. package/FeatureProperties.js +6 -0
  35. package/FillWindow.js +47 -0
  36. package/GenbankView.js +74 -0
  37. package/GeneralProperties.js +117 -0
  38. package/GenericAnnotationProperties.js +406 -0
  39. package/GlobalDialog.js +73 -0
  40. package/GlobalDialogUtils.js +110 -0
  41. package/GoToDialog.js +25 -0
  42. package/HorizontalPanelDragHandle.js +35 -0
  43. package/Keyboard.js +85 -0
  44. package/Labels.js +327 -0
  45. package/Ladder.css +20 -0
  46. package/Ladder.js +303 -0
  47. package/MeltingTemp.js +85 -0
  48. package/Menlo.ttf +0 -0
  49. package/Minimap.js +515 -0
  50. package/Mismatches.js +134 -0
  51. package/Monaco.ttf +0 -0
  52. package/MultipleSeqsDetectedOnImportDialog.js +74 -0
  53. package/Orf.js +109 -0
  54. package/OrfProperties.js +117 -0
  55. package/Orfs.js +35 -0
  56. package/PCRTool.js +179 -0
  57. package/PairwiseAlignmentView.js +68 -0
  58. package/Part.js +34 -0
  59. package/PartProperties.js +9 -0
  60. package/PassThrough.js +3 -0
  61. package/PerformantSelectionLayer.js +32 -0
  62. package/PinchHelper.js +24 -0
  63. package/PointedAnnotation.js +347 -0
  64. package/PositionAnnotationOnCircle.js +26 -0
  65. package/Primer.js +41 -0
  66. package/PrimerProperties.js +19 -0
  67. package/Reflex/index.d.ts +0 -1
  68. package/ReflexContainer.js +802 -0
  69. package/ReflexElement.js +160 -0
  70. package/ReflexEvents.js +77 -0
  71. package/ReflexSplitter.js +205 -0
  72. package/RenameSequenceDialog.js +7 -0
  73. package/RotateCircularViewSlider.js +93 -0
  74. package/RowView/index.d.ts +0 -1
  75. package/SelectDialog.js +150 -0
  76. package/SequenceName.js +15 -0
  77. package/SimpleCircularOrLinearView.js +381 -0
  78. package/SimpleOligoPreview.js +39 -0
  79. package/SingleEnzymeCutsiteInfo.js +139 -0
  80. package/ToolBar/ToolbarItem.d.ts +1 -3
  81. package/ToolbarItem.js +192 -0
  82. package/Translation.js +198 -0
  83. package/TranslationProperties.js +149 -0
  84. package/UncontrolledSliderWithPlusMinusBtns.css +5 -0
  85. package/UncontrolledSliderWithPlusMinusBtns.js +134 -0
  86. package/VeTopRightContainer.js +12 -0
  87. package/ZoomCircularViewSlider.js +62 -0
  88. package/ZoomLinearView.js +47 -0
  89. package/addAlignment.js +6 -0
  90. package/addMetaToActionCreators.js +12 -0
  91. package/addWrappedAddons.js +20 -0
  92. package/alignmentTool.js +503 -0
  93. package/alignments.js +379 -0
  94. package/annotationLabelVisibility.js +2 -0
  95. package/annotationSearchSelector.js +24 -0
  96. package/annotationTypes.js +35 -0
  97. package/annotationVisibility.js +196 -0
  98. package/annotationsToSupport.js +104 -0
  99. package/arrayToObjWithIds.js +17 -0
  100. package/arrayUtils.js +19 -0
  101. package/array_move.js +10 -0
  102. package/calculateTickMarkPositionsForGivenRange.js +47 -0
  103. package/caretPosition.js +27 -0
  104. package/cdsFeaturesSelector.js +9 -0
  105. package/charWidth.js +22 -0
  106. package/circular.js +19 -0
  107. package/circularSelector.js +4 -0
  108. package/clickAndDragUtils.js +576 -0
  109. package/coerceInitialValue.js +7 -0
  110. package/combineReducersDontIgnoreKeys.js +12 -0
  111. package/commandUtils.js +20 -0
  112. package/constants.js +2 -0
  113. package/copyOptions.js +34 -0
  114. package/createFragmentLines.js +120 -0
  115. package/createMergedDefaultStateReducer.js +30 -0
  116. package/createMetaAction.js +12 -0
  117. package/createSequenceInputPopup.js +290 -0
  118. package/createSequenceInputPopupStyle.css +87 -0
  119. package/createSimpleDialog.js +89 -0
  120. package/createYourOwnEnzyme.js +39 -0
  121. package/cutsiteLabelColorSelector.js +6 -0
  122. package/cutsiteTool.js +88 -0
  123. package/cutsitesByRangeSelector.js +5 -0
  124. package/cutsitesSelector.js +61 -0
  125. package/darkmode.css +98 -0
  126. package/defaultConfig.js +150 -0
  127. package/deletionLayers.js +36 -0
  128. package/description.js +21 -0
  129. package/digestTool.js +34 -0
  130. package/dnaToColor.js +17 -0
  131. package/downloadTool.js +39 -0
  132. package/draggableClassnames.js +5 -0
  133. package/drawAnnotations.js +440 -0
  134. package/drawDirectedPiePiece.js +142 -0
  135. package/editTool.js +49 -0
  136. package/editorSelector.js +2 -0
  137. package/editorUtils.js +205 -0
  138. package/estimateRowHeight.js +184 -0
  139. package/featureLengthsToHide.js +27 -0
  140. package/featureTool.js +34 -0
  141. package/features.js +19 -0
  142. package/featuresSelector.js +8 -0
  143. package/filteredCutsitesSelector.js +136 -0
  144. package/filteredFeaturesSelector.js +32 -0
  145. package/filteredPartsSelector.js +57 -0
  146. package/filteredPrimersSelector.js +27 -0
  147. package/filteredRestrictionEnzymesSelector.js +1 -0
  148. package/find.png +0 -0
  149. package/findTool.js +79 -0
  150. package/findToolConstants.js +1 -0
  151. package/frameTranslations.js +52 -0
  152. package/fullscreen.png +0 -0
  153. package/getAdditionalEnzymesSelector.js +46 -0
  154. package/getAngleForPositionMidpoint.js +3 -0
  155. package/getAnnotationClassnames.js +12 -0
  156. package/getAnnotationNameAndStartStopString.js +61 -0
  157. package/getBpsPerRow.js +19 -0
  158. package/getCutsiteLabelHeights.js +56 -0
  159. package/getGapMap.js +12 -0
  160. package/getGaps.js +27 -0
  161. package/getInternalLabel.js +40 -0
  162. package/getOveHotkeyDefs.js +12 -0
  163. package/getPairwiseOverviewLinearViewOptions.js +38 -0
  164. package/getRangeAnglesSpecial.js +12 -0
  165. package/getStructuredBases.js +97 -0
  166. package/getTrackFromEvent.js +25 -0
  167. package/getVisibleStartEnd.js +7 -0
  168. package/getXStartAndWidthFromNonCircularRange.js +12 -0
  169. package/getXStartAndWidthOfRangeWrtRow.js +27 -0
  170. package/getXStartAndWidthOfRowAnnotation.js +19 -0
  171. package/getYOffset.js +15 -0
  172. package/hoveredAnnotation.js +24 -0
  173. package/{html2canvas.esm--JN4fLQL.js → html2canvas.esm-DiGWN1gP.js} +187 -229
  174. package/{html2canvas.esm-B7d7VJmQ.cjs → html2canvas.esm-J1esNpMJ.cjs} +187 -229
  175. package/importTool.js +27 -0
  176. package/index.cjs.js +48165 -47142
  177. package/index.es.js +47699 -46676
  178. package/index.js +71 -0
  179. package/inlineFindTool.js +38 -0
  180. package/isElementInViewport.js +29 -0
  181. package/isEnzymeFilterAndSelector.js +1 -0
  182. package/isTargetWithinEl.js +6 -0
  183. package/labelLineIntensity.js +25 -0
  184. package/labelSize.js +23 -0
  185. package/ladderDefaults.js +25 -0
  186. package/lastSavedId.js +20 -0
  187. package/lineageLines.js +11 -0
  188. package/linear.png +0 -0
  189. package/makeStore.js +34 -0
  190. package/massageTickSpacing.js +19 -0
  191. package/materiallyAvailable.js +19 -0
  192. package/middleware.js +112 -0
  193. package/minimumOrfSize.js +24 -0
  194. package/minimumOrfSizeSelector.js +2 -0
  195. package/modalActions.js +3 -0
  196. package/moveCaret.js +58 -0
  197. package/name.js +19 -0
  198. package/normalizeAngle.js +3 -0
  199. package/normalizeAngleRange.js +9 -0
  200. package/oligoTool.js +30 -0
  201. package/onlyUpdateForKeysDeep.js +31 -0
  202. package/orfFrameToColorMap.js +10 -0
  203. package/orfTool.js +136 -0
  204. package/orfsSelector.js +15 -0
  205. package/ove.css +12107 -0
  206. package/package.json +8 -7
  207. package/panelsShown.js +294 -0
  208. package/partLengthsToHide.js +23 -0
  209. package/partOverhangs.js +6 -0
  210. package/partTagSearch.js +69 -0
  211. package/partTool.js +45 -0
  212. package/parts.js +19 -0
  213. package/partsSelector.js +8 -0
  214. package/pie.png +0 -0
  215. package/polarToSpecialCartesian.js +7 -0
  216. package/positionCutsites.js +6 -0
  217. package/prepareRowData.js +64 -0
  218. package/primerBases.js +221 -0
  219. package/primerLengthsToHide.js +27 -0
  220. package/primers.js +19 -0
  221. package/primersSelector.js +8 -0
  222. package/print.png +0 -0
  223. package/printTool.js +31 -0
  224. package/propertiesTool.js +40 -0
  225. package/proteinUtils.js +3 -0
  226. package/pureNoFunc.js +18 -0
  227. package/readOnly.js +25 -0
  228. package/redoTool.js +30 -0
  229. package/reflex-styles.css +128 -0
  230. package/reflex-styles.css.map +9 -0
  231. package/relaxLabelAngles.js +157 -0
  232. package/relaxLabels_DEPRECATED.js +105 -0
  233. package/replacementLayers.js +36 -0
  234. package/restrictionEnzymes.js +52 -0
  235. package/restrictionEnzymesSelector.js +34 -0
  236. package/rowviewContants.js +3 -0
  237. package/ruler.css +89 -0
  238. package/save.png +0 -0
  239. package/saveTool.js +44 -0
  240. package/searchLayersSelector.js +71 -0
  241. package/selectedAnnotations.js +89 -0
  242. package/selectedAnnotationsSelector.js +1 -0
  243. package/selectedCutsitesSelector.js +21 -0
  244. package/selectedPartTags.js +21 -0
  245. package/selectionLayer.js +25 -0
  246. package/selectors/annotationSearchSelector.d.ts +1 -1
  247. package/sequence.js +12 -0
  248. package/sequenceDataHistory.js +43 -0
  249. package/sequenceDataSelector.js +2 -0
  250. package/sequenceLengthSelector.js +5 -0
  251. package/sequenceSelector.js +4 -0
  252. package/sharedActionCreators.js +0 -0
  253. package/shouldFlipText.js +4 -0
  254. package/shouldRerender.js +27 -0
  255. package/showFileDialog.js +25 -0
  256. package/showGCContent.js +23 -0
  257. package/show_cut_sites.png +0 -0
  258. package/show_features.png +0 -0
  259. package/show_orfs.png +0 -0
  260. package/show_primers.png +0 -0
  261. package/simpleDialog.css +13 -0
  262. package/specialCutsiteFilterOptions.js +22 -0
  263. package/src/Editor/DropHandler.js +2 -1
  264. package/src/Editor/index.js +0 -2
  265. package/src/RowItem/StackedAnnotations/getStructuredBases.js +20 -6
  266. package/src/ToolBar/cutsiteTool.js +1 -1
  267. package/src/helperComponents/PropertiesDialog/TranslationProperties.js +2 -1
  268. package/style.css +3 -12100
  269. package/tagsToBoldSelector.js +2 -0
  270. package/toggle_views.svg +1 -0
  271. package/toolBar.js +23 -0
  272. package/translationSearchMatchesSelector.js +14 -0
  273. package/translations.js +20 -0
  274. package/translationsRawSelector.js +8 -0
  275. package/translationsSelector.js +137 -0
  276. package/typeField.js +24 -0
  277. package/undoTool.js +30 -0
  278. package/updateEditor.d.ts +1 -3
  279. package/updateEditor.js +200 -0
  280. package/updateLabelsForInViewFeatures.js +55 -0
  281. package/updateLabelsForInViewFeaturesCircView.js +41 -0
  282. package/updateTrackHelper.js +58 -0
  283. package/uppercaseSequenceMapFont.js +25 -0
  284. package/upsertDeleteActionGenerator.js +31 -0
  285. package/useAAColorType.js +8 -0
  286. package/useAdditionalOrfStartCodons.js +24 -0
  287. package/useAnnotationLimits.js +42 -0
  288. package/useChromatogramPrefs.js +31 -0
  289. package/useFormValue.js +7 -0
  290. package/useLadders.js +6 -0
  291. package/useMeltingTemp.js +7 -0
  292. package/useTmType.js +10 -0
  293. package/userDefinedHandlersAndOpts.js +61 -0
  294. package/utils/getAnnotationNameAndStartStopString.d.ts +1 -5
  295. package/utils/selectionLayer.d.ts +2 -2
  296. package/utils.js +37 -0
  297. package/versionHistory.js +26 -0
  298. package/versionHistoryTool.js +21 -0
  299. package/viewSubmenu.js +479 -0
  300. package/visibilityTool.js +39 -0
  301. package/withEditorInteractions/getBpsPerRow.d.ts +1 -3
  302. package/withHover.js +113 -0
  303. package/withRestrictionEnzymes.js +15 -0
  304. package/index.umd.js +0 -188322
@@ -0,0 +1,160 @@
1
+ ///////////////////////////////////////////////////////////
2
+ // ReflexElement
3
+ // By Philippe Leefsma
4
+ // December 2016
5
+ //
6
+ ///////////////////////////////////////////////////////////
7
+ import { throttle } from "lodash-es";
8
+ import Measure from "react-measure";
9
+ import PropTypes from "prop-types";
10
+ import Browser from "./Browser";
11
+ import React from "react";
12
+
13
+ export default class ReflexElement extends React.Component {
14
+ /////////////////////////////////////////////////////////
15
+ //
16
+ //
17
+ /////////////////////////////////////////////////////////
18
+ static propTypes = {
19
+ renderOnResizeRate: PropTypes.number,
20
+ propagateDimensions: PropTypes.bool,
21
+ renderOnResize: PropTypes.bool,
22
+ resizeHeight: PropTypes.bool,
23
+ resizeWidth: PropTypes.bool,
24
+ className: PropTypes.string
25
+ };
26
+
27
+ /////////////////////////////////////////////////////////
28
+ //
29
+ //
30
+ /////////////////////////////////////////////////////////
31
+ static defaultProps = {
32
+ renderOnResize: Browser.isSafari(), // Safari is creepy ...
33
+ propagateDimensions: false,
34
+ renderOnResizeRate: 60,
35
+ resizeHeight: true,
36
+ resizeWidth: true,
37
+ className: ""
38
+ };
39
+
40
+ /////////////////////////////////////////////////////////
41
+ //
42
+ //
43
+ /////////////////////////////////////////////////////////
44
+ constructor(props) {
45
+ super(props);
46
+
47
+ this.onResize = this.onResize.bind(this);
48
+
49
+ this.setStateThrottled = throttle(state => {
50
+ this.setState(state);
51
+ }, this.props.renderOnResizeRate);
52
+
53
+ this.state = {
54
+ dimensions: {
55
+ height: "100%",
56
+ width: "100%"
57
+ }
58
+ };
59
+ }
60
+
61
+ /////////////////////////////////////////////////////////
62
+ //
63
+ //
64
+ /////////////////////////////////////////////////////////
65
+ async UNSAFE_componentWillReceiveProps(props) {
66
+ if (props.size !== this.props.size) {
67
+ const directions = this.toArray(props.direction);
68
+
69
+ for (const dir of directions) {
70
+ await this.props.events.emit("element.size", {
71
+ size: props.size,
72
+ direction: dir,
73
+ element: this
74
+ });
75
+ }
76
+ }
77
+ }
78
+
79
+ /////////////////////////////////////////////////////////
80
+ //
81
+ //
82
+ /////////////////////////////////////////////////////////
83
+ toArray(obj) {
84
+ return obj ? (Array.isArray(obj) ? obj : [obj]) : [];
85
+ }
86
+
87
+ /////////////////////////////////////////////////////////
88
+ //
89
+ //
90
+ /////////////////////////////////////////////////////////
91
+ onResize(rect) {
92
+ const { renderOnResize, resizeHeight, resizeWidth } = this.props;
93
+
94
+ if (renderOnResize) {
95
+ this.setStateThrottled({
96
+ dimensions: {
97
+ ...(resizeHeight && { height: Math.floor(rect.bounds.height) }),
98
+ ...(resizeWidth && { width: Math.floor(rect.bounds.width) })
99
+ }
100
+ });
101
+ }
102
+ }
103
+
104
+ /////////////////////////////////////////////////////////
105
+ //
106
+ //
107
+ /////////////////////////////////////////////////////////
108
+ renderChildren() {
109
+ if (this.props.propagateDimensions) {
110
+ return React.Children.map(this.props.children, child => {
111
+ const newProps = Object.assign({}, child.props, {
112
+ dimensions: this.state.dimensions
113
+ });
114
+
115
+ return React.cloneElement(child, newProps);
116
+ });
117
+ }
118
+
119
+ return this.props.children;
120
+ }
121
+
122
+ /////////////////////////////////////////////////////////
123
+ //
124
+ //
125
+ /////////////////////////////////////////////////////////
126
+ render() {
127
+ const classNames = ["reflex-element", ...this.props.className.split(" ")];
128
+
129
+ const className = classNames.join(" ");
130
+
131
+ const outerStyle = Object.assign(
132
+ {},
133
+ {
134
+ WebkitBoxFlex: this.props.flex,
135
+ FlexElement: this.props.flex,
136
+ MozBoxFlex: this.props.flex,
137
+ WebkitFlex: this.props.flex,
138
+ flex: this.props.flex
139
+ },
140
+ this.props.style
141
+ );
142
+
143
+ const innerStyle = {
144
+ height: this.state.dimensions.height,
145
+ width: this.state.dimensions.width
146
+ };
147
+
148
+ return (
149
+ <Measure bounds onResize={this.onResize}>
150
+ {({ measureRef }) => (
151
+ <div ref={measureRef} className={className} style={outerStyle}>
152
+ <div className="tg-reflex-element-inner" style={innerStyle}>
153
+ {this.renderChildren()}
154
+ </div>
155
+ </div>
156
+ )}
157
+ </Measure>
158
+ );
159
+ }
160
+ }
@@ -0,0 +1,77 @@
1
+ ///////////////////////////////////////////////////////////
2
+ // ReflexEvents
3
+ // By Philippe Leefsma
4
+ // December 2016
5
+ //
6
+ ///////////////////////////////////////////////////////////
7
+ class ReflexEvents {
8
+ /////////////////////////////////////////////////////////
9
+ //
10
+ //
11
+ /////////////////////////////////////////////////////////
12
+ constructor() {
13
+ this._events = {};
14
+ }
15
+
16
+ /////////////////////////////////////////////////////////
17
+ // Supports multiple events space-separated
18
+ //
19
+ /////////////////////////////////////////////////////////
20
+ on(events, fct) {
21
+ events.split(" ").forEach(event => {
22
+ this._events[event] = this._events[event] || [];
23
+ this._events[event].push(fct);
24
+ });
25
+
26
+ return this;
27
+ }
28
+
29
+ /////////////////////////////////////////////////////////
30
+ // Supports multiple events space-separated
31
+ //
32
+ /////////////////////////////////////////////////////////
33
+ off(events, fct) {
34
+ // eslint-disable-next-line eqeqeq
35
+ if (events == undefined) {
36
+ this._events = {};
37
+ return;
38
+ }
39
+
40
+ events.split(" ").forEach(event => {
41
+ if (event in this._events === false) return;
42
+
43
+ if (fct) {
44
+ this._events[event].splice(this._events[event].indexOf(fct), 1);
45
+ } else {
46
+ this._events[event] = [];
47
+ }
48
+ });
49
+
50
+ return this;
51
+ }
52
+
53
+ /////////////////////////////////////////////////////////
54
+ //
55
+ //
56
+ /////////////////////////////////////////////////////////
57
+ emit(event /* , args... */) {
58
+ if (this._events[event] === undefined) return;
59
+
60
+ const tmpArray = this._events[event].slice();
61
+
62
+ for (let i = 0; i < tmpArray.length; ++i) {
63
+ const result = tmpArray[i].apply(
64
+ this,
65
+ Array.prototype.slice.call(arguments, 1)
66
+ );
67
+
68
+ if (result !== undefined) {
69
+ return result;
70
+ }
71
+ }
72
+
73
+ return undefined;
74
+ }
75
+ }
76
+
77
+ export default ReflexEvents;
@@ -0,0 +1,205 @@
1
+ ///////////////////////////////////////////////////////////
2
+ // ReflexSplitter
3
+ // By Philippe Leefsma
4
+ // December 2016
5
+ //
6
+ ///////////////////////////////////////////////////////////
7
+ import PropTypes from "prop-types";
8
+ import ReactDOM from "react-dom";
9
+ import Browser from "./Browser";
10
+ import React from "react";
11
+
12
+ export default class ReflexSplitter extends React.Component {
13
+ /////////////////////////////////////////////////////////
14
+ //
15
+ //
16
+ /////////////////////////////////////////////////////////
17
+ static propTypes = {
18
+ children: PropTypes.oneOfType([
19
+ PropTypes.arrayOf(PropTypes.node),
20
+ PropTypes.node
21
+ ]),
22
+ onStartResize: PropTypes.func,
23
+ onStopResize: PropTypes.func,
24
+ className: PropTypes.string,
25
+ propagate: PropTypes.bool,
26
+ onResize: PropTypes.func,
27
+ style: PropTypes.object
28
+ };
29
+
30
+ /////////////////////////////////////////////////////////
31
+ //
32
+ //
33
+ /////////////////////////////////////////////////////////
34
+ static defaultProps = {
35
+ document: typeof document === "undefined" ? null : document,
36
+ onStartResize: null,
37
+ onStopResize: null,
38
+ propagate: false,
39
+ onResize: null,
40
+ className: "",
41
+ style: {}
42
+ };
43
+
44
+ /////////////////////////////////////////////////////////
45
+ //
46
+ //
47
+ /////////////////////////////////////////////////////////
48
+ constructor(props) {
49
+ super(props);
50
+
51
+ this.state = {
52
+ active: false
53
+ };
54
+
55
+ this.onMouseMove = this.onMouseMove.bind(this);
56
+ this.onMouseDown = this.onMouseDown.bind(this);
57
+ this.onMouseUp = this.onMouseUp.bind(this);
58
+
59
+ this.document = props.document;
60
+ }
61
+
62
+ /////////////////////////////////////////////////////////
63
+ //
64
+ //
65
+ /////////////////////////////////////////////////////////
66
+ componentDidMount() {
67
+ if (!this.document) {
68
+ return;
69
+ }
70
+
71
+ this.document.addEventListener("touchend", this.onMouseUp);
72
+
73
+ this.document.addEventListener("mouseup", this.onMouseUp);
74
+
75
+ this.document.addEventListener("mousemove", this.onMouseMove, {
76
+ passive: false
77
+ });
78
+
79
+ this.document.addEventListener("touchmove", this.onMouseMove, {
80
+ passive: false
81
+ });
82
+ }
83
+
84
+ /////////////////////////////////////////////////////////
85
+ //
86
+ //
87
+ /////////////////////////////////////////////////////////
88
+ componentWillUnmount() {
89
+ if (!this.document) {
90
+ return;
91
+ }
92
+
93
+ this.document.removeEventListener("mouseup", this.onMouseUp);
94
+
95
+ this.document.removeEventListener("touchend", this.onMouseUp);
96
+
97
+ this.document.removeEventListener("mousemove", this.onMouseMove);
98
+
99
+ this.document.removeEventListener("touchmove", this.onMouseMove);
100
+ }
101
+
102
+ /////////////////////////////////////////////////////////
103
+ //
104
+ //
105
+ /////////////////////////////////////////////////////////
106
+ onMouseMove(event) {
107
+ if (this.state.active) {
108
+ this.props.events.emit("splitter.resize", {
109
+ splitter: this,
110
+ event
111
+ });
112
+
113
+ if (this.props.onResize) {
114
+ this.props.onResize({
115
+ domElement: ReactDOM.findDOMNode(this),
116
+ component: this
117
+ });
118
+ }
119
+
120
+ event.stopPropagation();
121
+ event.preventDefault();
122
+ }
123
+ }
124
+
125
+ /////////////////////////////////////////////////////////
126
+ //
127
+ //
128
+ /////////////////////////////////////////////////////////
129
+ onMouseDown(event) {
130
+ this.setState({
131
+ active: true
132
+ });
133
+
134
+ if (this.props.onStartResize) {
135
+ // cancels resize from controller
136
+ // if needed by returning true
137
+ // to onStartResize
138
+ if (
139
+ this.props.onStartResize({
140
+ domElement: ReactDOM.findDOMNode(this),
141
+ component: this
142
+ })
143
+ ) {
144
+ return;
145
+ }
146
+ }
147
+
148
+ this.props.events.emit("splitter.startResize", {
149
+ splitter: this,
150
+ event
151
+ });
152
+ }
153
+
154
+ /////////////////////////////////////////////////////////
155
+ //
156
+ //
157
+ /////////////////////////////////////////////////////////
158
+ onMouseUp(event) {
159
+ if (this.state.active) {
160
+ this.setState({
161
+ active: false
162
+ });
163
+
164
+ if (this.props.onStopResize) {
165
+ this.props.onStopResize({
166
+ domElement: ReactDOM.findDOMNode(this),
167
+ component: this
168
+ });
169
+ }
170
+
171
+ this.props.events.emit("splitter.stopResize", {
172
+ splitter: this,
173
+ event
174
+ });
175
+ }
176
+ }
177
+
178
+ /////////////////////////////////////////////////////////
179
+ //
180
+ //
181
+ /////////////////////////////////////////////////////////
182
+ render() {
183
+ const classNames = ["reflex-splitter", ...this.props.className.split(" ")];
184
+
185
+ if (Browser.isMobile()) {
186
+ classNames.push("reflex-thin");
187
+ }
188
+
189
+ if (this.state.active) {
190
+ classNames.push("active");
191
+ }
192
+
193
+ return (
194
+ <div
195
+ className={classNames.join(" ")}
196
+ onTouchStart={this.onMouseDown}
197
+ onMouseDown={this.onMouseDown}
198
+ style={this.props.style}
199
+ id={this.props.id}
200
+ >
201
+ {this.props.children}
202
+ </div>
203
+ );
204
+ }
205
+ }
@@ -0,0 +1,7 @@
1
+ import createSimpleDialog from "./createSimpleDialog";
2
+
3
+ export default createSimpleDialog({
4
+ formName: "renameSequenceDialog",
5
+ fields: [{ name: "newName", isRequired: true }],
6
+ withDialogProps: { title: "Rename Sequence", height: 190 }
7
+ });
@@ -0,0 +1,93 @@
1
+ import React, { useEffect } from "react";
2
+ import { useDebouncedCallback } from "use-debounce";
3
+ import { SLIDER_NORM_WIDTH, SLIDER_SMALL_WIDTH } from "../constants/constants";
4
+
5
+ import UncontrolledSliderWithPlusMinusBtns from "../helperComponents/UncontrolledSliderWithPlusMinusBtns";
6
+
7
+ export function RotateCircularViewSlider({
8
+ setRotationRadians,
9
+ zoomLevel,
10
+ maxZoomLevel,
11
+ bindOutsideChangeHelper,
12
+ smallSlider,
13
+ editorName
14
+ }) {
15
+ const mainSelector = editorName ? `.veEditor.${editorName}` : ".veEditor";
16
+ const target = React.useRef();
17
+ const svgEleRef = React.useRef();
18
+
19
+ useEffect(() => {
20
+ // use document.querySelector so that the code can still work after changing the parent node of this component
21
+ const svgEle = document
22
+ .querySelector(mainSelector)
23
+ ?.querySelector(".veCircularView .circularViewSvg");
24
+ svgEleRef.current = svgEle;
25
+ }, [editorName, mainSelector]);
26
+
27
+ const showLabelsDebounced = useDebouncedCallback(
28
+ el => {
29
+ try {
30
+ if (el) el.classList.remove("veHideLabels");
31
+ else {
32
+ console.error(`whoops we shouldn't be here`);
33
+ }
34
+ } catch (e) {
35
+ console.error(`error 92hf290fasd:`, e);
36
+ }
37
+ },
38
+ // delay in ms
39
+ 300,
40
+ { leading: true }
41
+ );
42
+
43
+ const stepSize = Math.min(
44
+ 3,
45
+ (3 / (zoomLevel / 2)) * (maxZoomLevel / (zoomLevel / 2))
46
+ );
47
+ return (
48
+ <div
49
+ style={{
50
+ zIndex: 900,
51
+ position: "absolute"
52
+ }}
53
+ >
54
+ <UncontrolledSliderWithPlusMinusBtns
55
+ bindOutsideChangeHelper={bindOutsideChangeHelper}
56
+ onChange={_val => {
57
+ const val = 360 - _val;
58
+ if (!svgEleRef.current) {
59
+ svgEleRef.current = document
60
+ .querySelector(mainSelector)
61
+ ?.querySelector(".veCircularView .circularViewSvg");
62
+ }
63
+ const el = svgEleRef.current;
64
+ if (!el) return;
65
+ const innerEl = el?.querySelector("g");
66
+ innerEl.style.transform = `rotate(${val}deg)`;
67
+ setRotationRadians((val * Math.PI) / 180);
68
+ if (zoomLevel <= 1) {
69
+ el.classList.add("veHideLabels");
70
+ }
71
+ showLabelsDebounced(el);
72
+ }}
73
+ smallSlider
74
+ passedRef={target}
75
+ showTrackFill={false}
76
+ leftIcon="arrow-left"
77
+ rightIcon="arrow-right"
78
+ title="Rotate"
79
+ style={{
80
+ paddingTop: "4px",
81
+ width: smallSlider ? SLIDER_SMALL_WIDTH : SLIDER_NORM_WIDTH
82
+ }}
83
+ className="veRotateCircularSlider ove-slider"
84
+ labelRenderer={false}
85
+ stepSize={stepSize}
86
+ justUpdateInitialValOnce
87
+ // initialValue={initialRotation || 0}
88
+ max={360}
89
+ min={0}
90
+ />
91
+ </div>
92
+ );
93
+ }
@@ -1,5 +1,4 @@
1
1
  import { default as React } from '../../../../node_modules/react';
2
-
3
2
  export interface RowViewProps {
4
3
  editorName: string; //the name of the editor instance (this should match what you've set up in your redux store)
5
4
  height: number; //default = 400