@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/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
- }