@teselagen/ove 0.7.28 → 0.7.29

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 (285) hide show
  1. package/index.cjs.js +1055 -996
  2. package/index.es.js +1055 -996
  3. package/index.umd.js +189036 -0
  4. package/ove.css +1 -1
  5. package/package.json +2 -6
  6. package/src/helperComponents/PropertiesDialog/TranslationProperties.js +1 -1
  7. package/AASliver.js +0 -187
  8. package/AddLaddersDialog.js +0 -82
  9. package/AdditionalCutsiteInfoDialog.js +0 -599
  10. package/AlignmentVisibilityTool.js +0 -105
  11. package/AnnotationContainerHolder.js +0 -20
  12. package/AnnotationPositioner.js +0 -27
  13. package/AutoAnnotate.js +0 -501
  14. package/AutoAnnotateBpMatchingDialog.js +0 -208
  15. package/Axis.js +0 -151
  16. package/AxisNumbers.js +0 -35
  17. package/Browser.js +0 -106
  18. package/Caret.js +0 -63
  19. package/Chromatogram.js +0 -293
  20. package/CircularDnaSequence.js +0 -73
  21. package/CircularZoomMinimap.js +0 -16
  22. package/ColorPicker.js +0 -30
  23. package/CommandHotkeyHandler.js +0 -44
  24. package/CreateAnnotationsPage.js +0 -98
  25. package/Cutsite.js +0 -18
  26. package/CutsiteProperties.js +0 -176
  27. package/CutsiteSelectionLayers.js +0 -47
  28. package/Cutsites.js +0 -271
  29. package/DeletionLayer.js +0 -28
  30. package/DropHandler.css +0 -21
  31. package/DropHandler.js +0 -64
  32. package/EditCaretPosition.js +0 -234
  33. package/EditTrackNameDialog.js +0 -30
  34. package/Feature.js +0 -83
  35. package/FeatureProperties.js +0 -6
  36. package/FillWindow.js +0 -47
  37. package/GenbankView.js +0 -74
  38. package/GeneralProperties.js +0 -117
  39. package/GenericAnnotationProperties.js +0 -406
  40. package/GlobalDialog.js +0 -73
  41. package/GlobalDialogUtils.js +0 -110
  42. package/GoToDialog.js +0 -25
  43. package/HorizontalPanelDragHandle.js +0 -35
  44. package/Keyboard.js +0 -85
  45. package/Labels.js +0 -327
  46. package/Ladder.css +0 -20
  47. package/Ladder.js +0 -303
  48. package/MeltingTemp.js +0 -85
  49. package/Menlo.ttf +0 -0
  50. package/Minimap.js +0 -515
  51. package/Mismatches.js +0 -134
  52. package/Monaco.ttf +0 -0
  53. package/MultipleSeqsDetectedOnImportDialog.js +0 -74
  54. package/Orf.js +0 -109
  55. package/OrfProperties.js +0 -117
  56. package/Orfs.js +0 -35
  57. package/PCRTool.js +0 -179
  58. package/PairwiseAlignmentView.js +0 -68
  59. package/Part.js +0 -34
  60. package/PartProperties.js +0 -9
  61. package/PassThrough.js +0 -3
  62. package/PerformantSelectionLayer.js +0 -32
  63. package/PinchHelper.js +0 -24
  64. package/PointedAnnotation.js +0 -347
  65. package/PositionAnnotationOnCircle.js +0 -26
  66. package/Primer.js +0 -41
  67. package/PrimerProperties.js +0 -19
  68. package/ReflexContainer.js +0 -802
  69. package/ReflexElement.js +0 -160
  70. package/ReflexEvents.js +0 -77
  71. package/ReflexSplitter.js +0 -205
  72. package/RenameSequenceDialog.js +0 -7
  73. package/RotateCircularViewSlider.js +0 -93
  74. package/SelectDialog.js +0 -150
  75. package/SequenceName.js +0 -15
  76. package/SimpleCircularOrLinearView.js +0 -381
  77. package/SimpleOligoPreview.js +0 -39
  78. package/SingleEnzymeCutsiteInfo.js +0 -139
  79. package/ToolbarItem.js +0 -192
  80. package/Translation.js +0 -198
  81. package/TranslationProperties.js +0 -149
  82. package/UncontrolledSliderWithPlusMinusBtns.css +0 -5
  83. package/UncontrolledSliderWithPlusMinusBtns.js +0 -134
  84. package/VeTopRightContainer.js +0 -12
  85. package/ZoomCircularViewSlider.js +0 -62
  86. package/ZoomLinearView.js +0 -47
  87. package/addAlignment.js +0 -6
  88. package/addMetaToActionCreators.js +0 -12
  89. package/addWrappedAddons.js +0 -20
  90. package/alignmentTool.js +0 -503
  91. package/alignments.js +0 -379
  92. package/annotationLabelVisibility.js +0 -2
  93. package/annotationSearchSelector.js +0 -24
  94. package/annotationTypes.js +0 -35
  95. package/annotationVisibility.js +0 -196
  96. package/annotationsToSupport.js +0 -104
  97. package/arrayToObjWithIds.js +0 -17
  98. package/arrayUtils.js +0 -19
  99. package/array_move.js +0 -10
  100. package/calculateTickMarkPositionsForGivenRange.js +0 -47
  101. package/caretPosition.js +0 -27
  102. package/cdsFeaturesSelector.js +0 -9
  103. package/charWidth.js +0 -22
  104. package/circular.js +0 -19
  105. package/circularSelector.js +0 -4
  106. package/clickAndDragUtils.js +0 -576
  107. package/coerceInitialValue.js +0 -7
  108. package/combineReducersDontIgnoreKeys.js +0 -12
  109. package/commandUtils.js +0 -20
  110. package/constants.js +0 -2
  111. package/copyOptions.js +0 -34
  112. package/createFragmentLines.js +0 -120
  113. package/createMergedDefaultStateReducer.js +0 -30
  114. package/createMetaAction.js +0 -12
  115. package/createSequenceInputPopup.js +0 -290
  116. package/createSequenceInputPopupStyle.css +0 -87
  117. package/createSimpleDialog.js +0 -89
  118. package/createYourOwnEnzyme.js +0 -39
  119. package/cutsiteLabelColorSelector.js +0 -6
  120. package/cutsiteTool.js +0 -88
  121. package/cutsitesByRangeSelector.js +0 -5
  122. package/cutsitesSelector.js +0 -61
  123. package/darkmode.css +0 -98
  124. package/defaultConfig.js +0 -150
  125. package/deletionLayers.js +0 -36
  126. package/description.js +0 -21
  127. package/digestTool.js +0 -34
  128. package/dnaToColor.js +0 -17
  129. package/downloadTool.js +0 -39
  130. package/draggableClassnames.js +0 -5
  131. package/drawAnnotations.js +0 -440
  132. package/drawDirectedPiePiece.js +0 -142
  133. package/editTool.js +0 -49
  134. package/editorSelector.js +0 -2
  135. package/editorUtils.js +0 -205
  136. package/estimateRowHeight.js +0 -184
  137. package/featureLengthsToHide.js +0 -27
  138. package/featureTool.js +0 -34
  139. package/features.js +0 -19
  140. package/featuresSelector.js +0 -8
  141. package/filteredCutsitesSelector.js +0 -136
  142. package/filteredFeaturesSelector.js +0 -32
  143. package/filteredPartsSelector.js +0 -57
  144. package/filteredPrimersSelector.js +0 -27
  145. package/filteredRestrictionEnzymesSelector.js +0 -1
  146. package/find.png +0 -0
  147. package/findTool.js +0 -79
  148. package/findToolConstants.js +0 -1
  149. package/frameTranslations.js +0 -52
  150. package/fullscreen.png +0 -0
  151. package/getAdditionalEnzymesSelector.js +0 -46
  152. package/getAngleForPositionMidpoint.js +0 -3
  153. package/getAnnotationClassnames.js +0 -12
  154. package/getAnnotationNameAndStartStopString.js +0 -61
  155. package/getBpsPerRow.js +0 -19
  156. package/getCutsiteLabelHeights.js +0 -56
  157. package/getGapMap.js +0 -12
  158. package/getGaps.js +0 -27
  159. package/getInternalLabel.js +0 -40
  160. package/getOveHotkeyDefs.js +0 -12
  161. package/getPairwiseOverviewLinearViewOptions.js +0 -38
  162. package/getRangeAnglesSpecial.js +0 -12
  163. package/getStructuredBases.js +0 -97
  164. package/getTrackFromEvent.js +0 -25
  165. package/getVisibleStartEnd.js +0 -7
  166. package/getXStartAndWidthFromNonCircularRange.js +0 -12
  167. package/getXStartAndWidthOfRangeWrtRow.js +0 -27
  168. package/getXStartAndWidthOfRowAnnotation.js +0 -19
  169. package/getYOffset.js +0 -15
  170. package/hoveredAnnotation.js +0 -24
  171. package/importTool.js +0 -27
  172. package/index.js +0 -71
  173. package/inlineFindTool.js +0 -38
  174. package/isElementInViewport.js +0 -29
  175. package/isEnzymeFilterAndSelector.js +0 -1
  176. package/isTargetWithinEl.js +0 -6
  177. package/labelLineIntensity.js +0 -25
  178. package/labelSize.js +0 -23
  179. package/ladderDefaults.js +0 -25
  180. package/lastSavedId.js +0 -20
  181. package/lineageLines.js +0 -11
  182. package/linear.png +0 -0
  183. package/makeStore.js +0 -34
  184. package/massageTickSpacing.js +0 -19
  185. package/materiallyAvailable.js +0 -19
  186. package/middleware.js +0 -112
  187. package/minimumOrfSize.js +0 -24
  188. package/minimumOrfSizeSelector.js +0 -2
  189. package/modalActions.js +0 -3
  190. package/moveCaret.js +0 -58
  191. package/name.js +0 -19
  192. package/normalizeAngle.js +0 -3
  193. package/normalizeAngleRange.js +0 -9
  194. package/oligoTool.js +0 -30
  195. package/onlyUpdateForKeysDeep.js +0 -31
  196. package/orfFrameToColorMap.js +0 -10
  197. package/orfTool.js +0 -136
  198. package/orfsSelector.js +0 -15
  199. package/panelsShown.js +0 -294
  200. package/partLengthsToHide.js +0 -23
  201. package/partOverhangs.js +0 -6
  202. package/partTagSearch.js +0 -69
  203. package/partTool.js +0 -45
  204. package/parts.js +0 -19
  205. package/partsSelector.js +0 -8
  206. package/pie.png +0 -0
  207. package/polarToSpecialCartesian.js +0 -7
  208. package/positionCutsites.js +0 -6
  209. package/prepareRowData.js +0 -64
  210. package/primerBases.js +0 -221
  211. package/primerLengthsToHide.js +0 -27
  212. package/primers.js +0 -19
  213. package/primersSelector.js +0 -8
  214. package/print.png +0 -0
  215. package/printTool.js +0 -31
  216. package/propertiesTool.js +0 -40
  217. package/proteinUtils.js +0 -3
  218. package/pureNoFunc.js +0 -18
  219. package/readOnly.js +0 -25
  220. package/redoTool.js +0 -30
  221. package/reflex-styles.css +0 -128
  222. package/reflex-styles.css.map +0 -9
  223. package/relaxLabelAngles.js +0 -157
  224. package/relaxLabels_DEPRECATED.js +0 -105
  225. package/replacementLayers.js +0 -36
  226. package/restrictionEnzymes.js +0 -52
  227. package/restrictionEnzymesSelector.js +0 -34
  228. package/rowviewContants.js +0 -3
  229. package/ruler.css +0 -89
  230. package/save.png +0 -0
  231. package/saveTool.js +0 -44
  232. package/searchLayersSelector.js +0 -71
  233. package/selectedAnnotations.js +0 -89
  234. package/selectedAnnotationsSelector.js +0 -1
  235. package/selectedCutsitesSelector.js +0 -21
  236. package/selectedPartTags.js +0 -21
  237. package/selectionLayer.js +0 -25
  238. package/sequence.js +0 -12
  239. package/sequenceDataHistory.js +0 -43
  240. package/sequenceDataSelector.js +0 -2
  241. package/sequenceLengthSelector.js +0 -5
  242. package/sequenceSelector.js +0 -4
  243. package/sharedActionCreators.js +0 -0
  244. package/shouldFlipText.js +0 -4
  245. package/shouldRerender.js +0 -27
  246. package/showFileDialog.js +0 -25
  247. package/showGCContent.js +0 -23
  248. package/show_cut_sites.png +0 -0
  249. package/show_features.png +0 -0
  250. package/show_orfs.png +0 -0
  251. package/show_primers.png +0 -0
  252. package/simpleDialog.css +0 -13
  253. package/specialCutsiteFilterOptions.js +0 -22
  254. package/style.css +0 -10
  255. package/tagsToBoldSelector.js +0 -2
  256. package/toggle_views.svg +0 -1
  257. package/toolBar.js +0 -23
  258. package/translationSearchMatchesSelector.js +0 -14
  259. package/translations.js +0 -20
  260. package/translationsRawSelector.js +0 -8
  261. package/translationsSelector.js +0 -137
  262. package/typeField.js +0 -24
  263. package/undoTool.js +0 -30
  264. package/updateEditor.js +0 -200
  265. package/updateLabelsForInViewFeatures.js +0 -55
  266. package/updateLabelsForInViewFeaturesCircView.js +0 -41
  267. package/updateTrackHelper.js +0 -58
  268. package/uppercaseSequenceMapFont.js +0 -25
  269. package/upsertDeleteActionGenerator.js +0 -31
  270. package/useAAColorType.js +0 -8
  271. package/useAdditionalOrfStartCodons.js +0 -24
  272. package/useAnnotationLimits.js +0 -42
  273. package/useChromatogramPrefs.js +0 -31
  274. package/useFormValue.js +0 -7
  275. package/useLadders.js +0 -6
  276. package/useMeltingTemp.js +0 -7
  277. package/useTmType.js +0 -10
  278. package/userDefinedHandlersAndOpts.js +0 -61
  279. package/utils.js +0 -37
  280. package/versionHistory.js +0 -26
  281. package/versionHistoryTool.js +0 -21
  282. package/viewSubmenu.js +0 -479
  283. package/visibilityTool.js +0 -39
  284. package/withHover.js +0 -113
  285. package/withRestrictionEnzymes.js +0 -15
package/Keyboard.js DELETED
@@ -1,85 +0,0 @@
1
- import { noop } from "lodash-es";
2
- import React from "react";
3
-
4
- class Clipboard extends React.Component {
5
- // static propTypes = {
6
- // value: PropTypes.string.isRequired
7
- // };
8
-
9
- static defaultProps = {
10
- className: "clipboard"
11
- };
12
-
13
- componentDidMount() {
14
- this.node.parentNode.addEventListener("keydown", this.handleKeyDown, false);
15
- this.node.parentNode.addEventListener("keyup", this.handleKeyUp, false);
16
- }
17
-
18
- componentWillUnmount() {
19
- this.node.parentNode.removeEventListener(
20
- "keydown",
21
- this.handleKeyDown,
22
- false
23
- );
24
- this.node.parentNode.removeEventListener("keyup", this.handleKeyUp, false);
25
- }
26
-
27
- handleKeyDown = e => {
28
- if (
29
- document.activeElement &&
30
- ["input", "select", "textarea"].indexOf(
31
- document.activeElement.tagName.toLowerCase()
32
- ) !== -1
33
- ) {
34
- return; //stop early if we're inside an input
35
- }
36
- const metaKeyIsDown = e.ctrlKey || e.metaKey;
37
- if (!metaKeyIsDown || !["x", "c", "v"].includes(e.key)) {
38
- this.origFocusedElement = null;
39
- return;
40
- }
41
- this.origFocusedElement = document.activeElement;
42
- this.node.select();
43
- };
44
-
45
- handleKeyUp = () => {
46
- if (this.origFocusedElement) {
47
- this.origFocusedElement.focus();
48
- }
49
- };
50
-
51
- render() {
52
- const value = this.props.value;
53
- const style = {
54
- position: "fixed",
55
- width: 1,
56
- height: 1,
57
- opacity: 0,
58
- left: 0,
59
- padding: 0,
60
- top: 0,
61
- margin: 0,
62
- zIndex: 100
63
- };
64
- return (
65
- <input
66
- ref={c => {
67
- if (c) {
68
- this.node = c;
69
- }
70
- }}
71
- style={style}
72
- type="text"
73
- value={value}
74
- onChange={noop}
75
- readOnly
76
- className="clipboard"
77
- onPaste={this.props.onPaste}
78
- onCopy={this.props.onCopy}
79
- onCut={this.props.onCut}
80
- />
81
- );
82
- }
83
- }
84
-
85
- export default Clipboard;
package/Labels.js DELETED
@@ -1,327 +0,0 @@
1
- import React from "react";
2
- import { onlyUpdateForKeys } from "recompose";
3
- import withHover from "../helperComponents/withHover";
4
- import getXStartAndWidthOfRowAnnotation from "./getXStartAndWidthOfRowAnnotation";
5
- import IntervalTree from "node-interval-tree";
6
- import getYOffset from "../CircularView/getYOffset";
7
- import { reduce, values, startCase, filter, clamp } from "lodash-es";
8
- import { getRangeLength } from "@teselagen/range-utils";
9
- import { doesLabelFitInAnnotation } from "./utils";
10
- import getAnnotationNameAndStartStopString from "../utils/getAnnotationNameAndStartStopString";
11
-
12
- const BUFFER_WIDTH = 6; //labels shouldn't be less than 6px from eachother on the same line
13
-
14
- function Labels(props) {
15
- let {
16
- annotationRanges = {},
17
- bpsPerRow,
18
- charWidth,
19
- rangeMax,
20
- onlyShowLabelsThatDoNotFit,
21
- annotationHeight,
22
- textWidth = 6,
23
- editorName,
24
- labelLineIntensity,
25
- isProtein,
26
- noRedux,
27
- readOnly,
28
- noLabelLine
29
- } = props;
30
-
31
- if (annotationRanges.length === 0) {
32
- return null;
33
- }
34
- const warningMessage = null;
35
- // if (Object.keys(annotationRanges).length > 50) {
36
- // warningMessage = (
37
- // <span style={{ color: "red" }}>
38
- // <br />
39
- // Warning: Only the first 50 cutsites will be displayed. Filter the
40
- // cutsites you wish to see using the filter tool <br />
41
- // </span>
42
- // );
43
- // }
44
-
45
- const rowLength = bpsPerRow * charWidth;
46
- // let counter = 0;
47
- let maxAnnotationYOffset = 0;
48
- const annotationsSVG = [];
49
- const rowCenter = rowLength / 2;
50
- const iTree = new IntervalTree(rowCenter);
51
-
52
- annotationRanges = values(
53
- reduce(
54
- annotationRanges,
55
- (accum, annotationRange) => {
56
- const identifier =
57
- annotationRange.annotation.annotationTypePlural +
58
- "--" +
59
- annotationRange.id;
60
- if (
61
- // annotationRange.annotation.annotationTypePlural === "parts" ||
62
- !accum[identifier] ||
63
- getRangeLength(accum[identifier], rangeMax) <
64
- getRangeLength(annotationRange, rangeMax)
65
- ) {
66
- accum[identifier] = annotationRange;
67
- return accum;
68
- } else {
69
- return accum;
70
- }
71
- },
72
- {}
73
- )
74
- );
75
-
76
- filter(annotationRanges, r => {
77
- if (onlyShowLabelsThatDoNotFit) {
78
- //tnrtodo: more work needs to be done here to make this actually configurable
79
- //check if annotation name will fit
80
- if (
81
- r.annotation.annotationTypePlural === "cutsites" ||
82
- (r.annotation.annotationTypePlural === "primers" && r.annotation.bases)
83
- ) {
84
- //we don't want to filter out any cutsite labels
85
- return true;
86
- }
87
- return !doesLabelFitInAnnotation(
88
- r.annotation.name,
89
- { range: r },
90
- charWidth
91
- );
92
- }
93
- return true;
94
- }).forEach(function (annotationRange, index) {
95
- const pluralType = annotationRange.annotation.annotationTypePlural;
96
- let annotation = annotationRange.annotation;
97
- if (!annotation) {
98
- annotation = annotationRange;
99
- }
100
- const annotationLength =
101
- (
102
- annotation.name ||
103
- (annotation.restrictionEnzyme && annotation.restrictionEnzyme.name) ||
104
- ""
105
- ).length * textWidth;
106
- let { xStart, width } = getXStartAndWidthOfRowAnnotation(
107
- annotationRange,
108
- bpsPerRow,
109
- charWidth
110
- );
111
-
112
- xStart =
113
- annotation.annotationTypePlural === "cutsites"
114
- ? xStart
115
- : xStart + width / 2;
116
-
117
- const xStartOriginal = xStart;
118
- let xEnd = xStart + annotationLength;
119
-
120
- if (xEnd > rowLength) {
121
- xStart = xStart - (xEnd - rowLength);
122
- xEnd = rowLength;
123
- }
124
- xEnd += BUFFER_WIDTH;
125
- const yOffset = getYOffset(iTree, xStart, xEnd);
126
- iTree.insert(xStart, xEnd, {
127
- ...annotationRange,
128
- yOffset
129
- });
130
-
131
- if (yOffset > maxAnnotationYOffset) {
132
- maxAnnotationYOffset = yOffset;
133
- }
134
- const height = yOffset * annotationHeight;
135
- annotationsSVG.push(
136
- <DrawLabel
137
- id={annotation.id}
138
- key={"cutsiteLabel" + index}
139
- {...{
140
- readOnly,
141
- editorName,
142
- annotation,
143
- noLabelLine,
144
- className: `${annotationRange.annotation.labelClassName || ""} ${
145
- labelClassNames[pluralType]
146
- } veLabel `,
147
- isProtein,
148
- xStartOriginal,
149
- onClick: annotationRange.onClick,
150
- onDoubleClick: annotationRange.onDoubleClick,
151
- onRightClick: annotationRange.onRightClick,
152
- height,
153
- xStart,
154
- xEnd,
155
- textWidth,
156
- labelLineIntensity,
157
- noRedux
158
- }}
159
- />
160
- );
161
- });
162
- if (!annotationsSVG.length) return null;
163
- const containerHeight = (maxAnnotationYOffset + 1) * annotationHeight;
164
- return (
165
- <div
166
- width="100%"
167
- style={{
168
- position: "relative",
169
- height: containerHeight,
170
- display: "block"
171
- }}
172
- className="veRowViewLabelsContainer"
173
- >
174
- {annotationsSVG}
175
- {warningMessage}
176
- </div>
177
- );
178
- }
179
-
180
- export default onlyUpdateForKeys([
181
- "annotationRanges",
182
- "bpsPerRow",
183
- "charWidth",
184
- "annotationHeight",
185
- "spaceBetweenAnnotations",
186
- "onClick",
187
- "onRightClick",
188
- "onDoubleClick",
189
- "textWidth",
190
- "editorName"
191
- ])(Labels);
192
-
193
- const DrawLabel = withHover(
194
- class DrawLabelInner extends React.Component {
195
- render() {
196
- const {
197
- hovered,
198
- className,
199
- annotation,
200
- onClick,
201
- noLabelLine,
202
- onDoubleClick,
203
- onRightClick,
204
- height,
205
- xStartOriginal,
206
- xStart,
207
- onMouseLeave,
208
- isProtein,
209
- onMouseOver,
210
- editorName,
211
- labelLineIntensity,
212
- textWidth,
213
- readOnly
214
- } = this.props;
215
- let heightToUse = height;
216
- let bottom = 0;
217
- if (hovered) {
218
- try {
219
- const line = this.n;
220
- const isRowView = document
221
- .querySelector(`.veEditor.${editorName} .veRowView`)
222
- .contains(line);
223
-
224
- const el = line
225
- .closest(".veRowItem")
226
-
227
- .querySelector(
228
- annotation.annotationTypePlural === "cutsites"
229
- ? isRowView
230
- ? ".cutsiteLabelSelectionLayer"
231
- : ".veRowViewAxis"
232
- : `[data-id="${annotation.id}"].veRowView${startCase(
233
- annotation.annotationTypePlural.slice(0, -1)
234
- )}`
235
- );
236
- const annDims = el.getBoundingClientRect();
237
- const lineDims = line.getBoundingClientRect();
238
- const heightDiff =
239
- annDims.bottom - lineDims.bottom - annDims.height / 2;
240
- heightToUse = height + heightDiff;
241
- bottom = -heightDiff;
242
- } catch (e) {
243
- window.veDebugLabels && console.error(`err computing label line:`, e);
244
- }
245
- }
246
-
247
- const truncateLabelIfNeeded = (annotationText, xLeftCoord) => {
248
- const numberOfCharsToChop =
249
- xLeftCoord < 0 ? Math.ceil(Math.abs(xLeftCoord) / textWidth) + 2 : 0;
250
- return numberOfCharsToChop > 0
251
- ? annotationText.slice(0, -numberOfCharsToChop) + ".."
252
- : annotationText;
253
- };
254
- const titleText = getAnnotationNameAndStartStopString(annotation, {
255
- isProtein,
256
- readOnly
257
- });
258
- const labelText = annotation.name || annotation.restrictionEnzyme.name;
259
- return (
260
- <div>
261
- <div
262
- {...{ onMouseLeave, onMouseOver }}
263
- className={className + " veLabelText ve-monospace-font"}
264
- onClick={function (event) {
265
- onClick && onClick({ event, annotation });
266
- event.stopPropagation();
267
- }}
268
- onDoubleClick={function (event) {
269
- if (onDoubleClick) {
270
- onDoubleClick({ event, annotation });
271
- event.stopPropagation();
272
- }
273
- }}
274
- onContextMenu={function (event) {
275
- onRightClick({ event, annotation });
276
- event.stopPropagation();
277
- }}
278
- title={titleText}
279
- style={{
280
- cursor: "pointer",
281
- position: "absolute",
282
- bottom: height,
283
- ...(hovered && { textDecoration: "underline" }),
284
- ...(annotation.annotationTypePlural !== "cutsites" && {
285
- fontStyle: "normal"
286
- }),
287
- left: clamp(xStart, 0, Number.MAX_VALUE),
288
- whiteSpace: "nowrap",
289
- color:
290
- annotation.annotationTypePlural === "parts"
291
- ? "#ac68cc"
292
- : annotation.labelColor,
293
- zIndex: 10
294
- }}
295
- >
296
- {truncateLabelIfNeeded(labelText, xStart)}
297
- </div>
298
-
299
- {!noLabelLine && (
300
- <div
301
- ref={n => {
302
- if (n) this.n = n;
303
- }}
304
- className="veLabelLine"
305
- style={{
306
- zIndex: 50,
307
- position: "absolute",
308
- left: xStartOriginal,
309
- bottom,
310
- height: Math.max(heightToUse, 3),
311
- width: hovered ? 2 : 1,
312
- opacity: hovered ? 1 : labelLineIntensity
313
- // background: "black"
314
- }}
315
- />
316
- )}
317
- </div>
318
- );
319
- }
320
- }
321
- );
322
-
323
- const labelClassNames = {
324
- cutsites: "veCutsiteLabel",
325
- parts: "vePartLabel",
326
- features: "veFeatureLabel"
327
- };
package/Ladder.css DELETED
@@ -1,20 +0,0 @@
1
- .ve-digest-column {
2
- position: relative;
3
- width: 90px;
4
- }
5
- .ve-digest-header {
6
- height: 40px;
7
- padding-left: 10px;
8
- padding-top: 10px;
9
- }
10
- .ve-digest-container {
11
- display: flex;
12
- width: fit-content;
13
- }
14
- .ve-digest-fragment-tooltip {
15
- height: 100%;
16
- width: 100%;
17
- }
18
- .tg-ladder-selector .tg-select-value .bp3-button {
19
- display: none;
20
- }