@jbrowse/plugin-linear-comparative-view 2.6.1 → 2.6.2

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 (209) hide show
  1. package/dist/LGVSyntenyDisplay/configSchemaF.d.ts +1 -3
  2. package/dist/LGVSyntenyDisplay/configSchemaF.js +0 -1
  3. package/dist/LGVSyntenyDisplay/index.js +0 -1
  4. package/dist/LGVSyntenyDisplay/model.d.ts +4 -2
  5. package/dist/LGVSyntenyDisplay/model.js +0 -1
  6. package/dist/LaunchLinearSyntenyView.js +0 -1
  7. package/dist/LinearComparativeDisplay/configSchemaF.js +0 -1
  8. package/dist/LinearComparativeDisplay/index.js +0 -1
  9. package/dist/LinearComparativeDisplay/stateModelFactory.js +0 -1
  10. package/dist/LinearComparativeView/components/Header.js +11 -2
  11. package/dist/LinearComparativeView/components/LinearComparativeView.js +0 -1
  12. package/dist/LinearComparativeView/components/Rubberband.js +11 -33
  13. package/dist/LinearComparativeView/components/VerticalGuide.d.ts +8 -0
  14. package/dist/LinearComparativeView/components/VerticalGuide.js +33 -0
  15. package/dist/LinearComparativeView/index.js +0 -1
  16. package/dist/LinearComparativeView/model.d.ts +9 -15
  17. package/dist/LinearComparativeView/model.js +0 -1
  18. package/dist/LinearReadVsRef/LinearReadVsRef.js +0 -1
  19. package/dist/LinearReadVsRef/index.js +0 -1
  20. package/dist/LinearSyntenyDisplay/afterAttach.js +0 -1
  21. package/dist/LinearSyntenyDisplay/components/Component.js +0 -1
  22. package/dist/LinearSyntenyDisplay/components/LinearSyntenyRendering.js +0 -1
  23. package/dist/LinearSyntenyDisplay/components/SyntenyTooltip.js +0 -1
  24. package/dist/LinearSyntenyDisplay/components/util.js +0 -1
  25. package/dist/LinearSyntenyDisplay/configSchemaF.js +0 -1
  26. package/dist/LinearSyntenyDisplay/drawSynteny.js +0 -1
  27. package/dist/LinearSyntenyDisplay/index.js +0 -1
  28. package/dist/LinearSyntenyDisplay/model.js +0 -1
  29. package/dist/LinearSyntenyView/components/ExportSvgDialog.js +0 -1
  30. package/dist/LinearSyntenyView/components/Icons.js +0 -1
  31. package/dist/LinearSyntenyView/components/ImportCustomTrack.js +0 -1
  32. package/dist/LinearSyntenyView/components/ImportForm.js +0 -1
  33. package/dist/LinearSyntenyView/components/ImportSyntenyTrackSelector.js +0 -1
  34. package/dist/LinearSyntenyView/components/LinearSyntenyView.js +0 -1
  35. package/dist/LinearSyntenyView/index.js +0 -1
  36. package/dist/LinearSyntenyView/model.d.ts +9 -9
  37. package/dist/LinearSyntenyView/model.js +0 -1
  38. package/dist/LinearSyntenyView/svgcomponents/SVGBackground.js +0 -1
  39. package/dist/LinearSyntenyView/svgcomponents/SVGLinearSyntenyView.js +0 -1
  40. package/dist/SyntenyFeatureDetail/SyntenyFeatureDetail.js +0 -1
  41. package/dist/SyntenyFeatureDetail/index.js +0 -1
  42. package/dist/SyntenyTrack/configSchema.js +0 -1
  43. package/dist/SyntenyTrack/index.js +0 -1
  44. package/dist/index.js +0 -1
  45. package/dist/util.js +0 -1
  46. package/esm/LGVSyntenyDisplay/configSchemaF.d.ts +1 -3
  47. package/esm/LGVSyntenyDisplay/configSchemaF.js +0 -1
  48. package/esm/LGVSyntenyDisplay/index.js +0 -1
  49. package/esm/LGVSyntenyDisplay/model.d.ts +4 -2
  50. package/esm/LGVSyntenyDisplay/model.js +0 -1
  51. package/esm/LaunchLinearSyntenyView.js +0 -1
  52. package/esm/LinearComparativeDisplay/configSchemaF.js +0 -1
  53. package/esm/LinearComparativeDisplay/index.js +0 -1
  54. package/esm/LinearComparativeDisplay/stateModelFactory.js +0 -1
  55. package/esm/LinearComparativeView/components/Header.js +11 -2
  56. package/esm/LinearComparativeView/components/LinearComparativeView.js +0 -1
  57. package/esm/LinearComparativeView/components/Rubberband.js +8 -33
  58. package/esm/LinearComparativeView/components/VerticalGuide.d.ts +8 -0
  59. package/esm/LinearComparativeView/components/VerticalGuide.js +28 -0
  60. package/esm/LinearComparativeView/index.js +0 -1
  61. package/esm/LinearComparativeView/model.d.ts +9 -15
  62. package/esm/LinearComparativeView/model.js +0 -1
  63. package/esm/LinearReadVsRef/LinearReadVsRef.js +0 -1
  64. package/esm/LinearReadVsRef/index.js +0 -1
  65. package/esm/LinearSyntenyDisplay/afterAttach.js +0 -1
  66. package/esm/LinearSyntenyDisplay/components/Component.js +0 -1
  67. package/esm/LinearSyntenyDisplay/components/LinearSyntenyRendering.js +0 -1
  68. package/esm/LinearSyntenyDisplay/components/SyntenyTooltip.js +0 -1
  69. package/esm/LinearSyntenyDisplay/components/util.js +0 -1
  70. package/esm/LinearSyntenyDisplay/configSchemaF.js +0 -1
  71. package/esm/LinearSyntenyDisplay/drawSynteny.js +0 -1
  72. package/esm/LinearSyntenyDisplay/index.js +0 -1
  73. package/esm/LinearSyntenyDisplay/model.js +0 -1
  74. package/esm/LinearSyntenyView/components/ExportSvgDialog.js +0 -1
  75. package/esm/LinearSyntenyView/components/Icons.js +0 -1
  76. package/esm/LinearSyntenyView/components/ImportCustomTrack.js +0 -1
  77. package/esm/LinearSyntenyView/components/ImportForm.js +0 -1
  78. package/esm/LinearSyntenyView/components/ImportSyntenyTrackSelector.js +0 -1
  79. package/esm/LinearSyntenyView/components/LinearSyntenyView.js +0 -1
  80. package/esm/LinearSyntenyView/index.js +0 -1
  81. package/esm/LinearSyntenyView/model.d.ts +9 -9
  82. package/esm/LinearSyntenyView/model.js +0 -1
  83. package/esm/LinearSyntenyView/svgcomponents/SVGBackground.js +0 -1
  84. package/esm/LinearSyntenyView/svgcomponents/SVGLinearSyntenyView.js +0 -1
  85. package/esm/SyntenyFeatureDetail/SyntenyFeatureDetail.js +0 -1
  86. package/esm/SyntenyFeatureDetail/index.js +0 -1
  87. package/esm/SyntenyTrack/configSchema.js +0 -1
  88. package/esm/SyntenyTrack/index.js +0 -1
  89. package/esm/index.js +0 -1
  90. package/esm/util.js +0 -1
  91. package/package.json +3 -4
  92. package/dist/LGVSyntenyDisplay/configSchemaF.js.map +0 -1
  93. package/dist/LGVSyntenyDisplay/index.js.map +0 -1
  94. package/dist/LGVSyntenyDisplay/model.js.map +0 -1
  95. package/dist/LaunchLinearSyntenyView.js.map +0 -1
  96. package/dist/LinearComparativeDisplay/configSchemaF.js.map +0 -1
  97. package/dist/LinearComparativeDisplay/index.js.map +0 -1
  98. package/dist/LinearComparativeDisplay/stateModelFactory.js.map +0 -1
  99. package/dist/LinearComparativeView/components/Header.js.map +0 -1
  100. package/dist/LinearComparativeView/components/LinearComparativeView.js.map +0 -1
  101. package/dist/LinearComparativeView/components/Rubberband.js.map +0 -1
  102. package/dist/LinearComparativeView/index.js.map +0 -1
  103. package/dist/LinearComparativeView/model.js.map +0 -1
  104. package/dist/LinearReadVsRef/LinearReadVsRef.js.map +0 -1
  105. package/dist/LinearReadVsRef/index.js.map +0 -1
  106. package/dist/LinearSyntenyDisplay/afterAttach.js.map +0 -1
  107. package/dist/LinearSyntenyDisplay/components/Component.js.map +0 -1
  108. package/dist/LinearSyntenyDisplay/components/LinearSyntenyRendering.js.map +0 -1
  109. package/dist/LinearSyntenyDisplay/components/SyntenyTooltip.js.map +0 -1
  110. package/dist/LinearSyntenyDisplay/components/util.js.map +0 -1
  111. package/dist/LinearSyntenyDisplay/configSchemaF.js.map +0 -1
  112. package/dist/LinearSyntenyDisplay/drawSynteny.js.map +0 -1
  113. package/dist/LinearSyntenyDisplay/index.js.map +0 -1
  114. package/dist/LinearSyntenyDisplay/model.js.map +0 -1
  115. package/dist/LinearSyntenyView/components/ExportSvgDialog.js.map +0 -1
  116. package/dist/LinearSyntenyView/components/Icons.js.map +0 -1
  117. package/dist/LinearSyntenyView/components/ImportCustomTrack.js.map +0 -1
  118. package/dist/LinearSyntenyView/components/ImportForm.js.map +0 -1
  119. package/dist/LinearSyntenyView/components/ImportSyntenyTrackSelector.js.map +0 -1
  120. package/dist/LinearSyntenyView/components/LinearSyntenyView.js.map +0 -1
  121. package/dist/LinearSyntenyView/index.js.map +0 -1
  122. package/dist/LinearSyntenyView/model.js.map +0 -1
  123. package/dist/LinearSyntenyView/svgcomponents/SVGBackground.js.map +0 -1
  124. package/dist/LinearSyntenyView/svgcomponents/SVGLinearSyntenyView.js.map +0 -1
  125. package/dist/SyntenyFeatureDetail/SyntenyFeatureDetail.js.map +0 -1
  126. package/dist/SyntenyFeatureDetail/index.js.map +0 -1
  127. package/dist/SyntenyTrack/configSchema.js.map +0 -1
  128. package/dist/SyntenyTrack/index.js.map +0 -1
  129. package/dist/index.js.map +0 -1
  130. package/dist/util.js.map +0 -1
  131. package/esm/LGVSyntenyDisplay/configSchemaF.js.map +0 -1
  132. package/esm/LGVSyntenyDisplay/index.js.map +0 -1
  133. package/esm/LGVSyntenyDisplay/model.js.map +0 -1
  134. package/esm/LaunchLinearSyntenyView.js.map +0 -1
  135. package/esm/LinearComparativeDisplay/configSchemaF.js.map +0 -1
  136. package/esm/LinearComparativeDisplay/index.js.map +0 -1
  137. package/esm/LinearComparativeDisplay/stateModelFactory.js.map +0 -1
  138. package/esm/LinearComparativeView/components/Header.js.map +0 -1
  139. package/esm/LinearComparativeView/components/LinearComparativeView.js.map +0 -1
  140. package/esm/LinearComparativeView/components/Rubberband.js.map +0 -1
  141. package/esm/LinearComparativeView/index.js.map +0 -1
  142. package/esm/LinearComparativeView/model.js.map +0 -1
  143. package/esm/LinearReadVsRef/LinearReadVsRef.js.map +0 -1
  144. package/esm/LinearReadVsRef/index.js.map +0 -1
  145. package/esm/LinearSyntenyDisplay/afterAttach.js.map +0 -1
  146. package/esm/LinearSyntenyDisplay/components/Component.js.map +0 -1
  147. package/esm/LinearSyntenyDisplay/components/LinearSyntenyRendering.js.map +0 -1
  148. package/esm/LinearSyntenyDisplay/components/SyntenyTooltip.js.map +0 -1
  149. package/esm/LinearSyntenyDisplay/components/util.js.map +0 -1
  150. package/esm/LinearSyntenyDisplay/configSchemaF.js.map +0 -1
  151. package/esm/LinearSyntenyDisplay/drawSynteny.js.map +0 -1
  152. package/esm/LinearSyntenyDisplay/index.js.map +0 -1
  153. package/esm/LinearSyntenyDisplay/model.js.map +0 -1
  154. package/esm/LinearSyntenyView/components/ExportSvgDialog.js.map +0 -1
  155. package/esm/LinearSyntenyView/components/Icons.js.map +0 -1
  156. package/esm/LinearSyntenyView/components/ImportCustomTrack.js.map +0 -1
  157. package/esm/LinearSyntenyView/components/ImportForm.js.map +0 -1
  158. package/esm/LinearSyntenyView/components/ImportSyntenyTrackSelector.js.map +0 -1
  159. package/esm/LinearSyntenyView/components/LinearSyntenyView.js.map +0 -1
  160. package/esm/LinearSyntenyView/index.js.map +0 -1
  161. package/esm/LinearSyntenyView/model.js.map +0 -1
  162. package/esm/LinearSyntenyView/svgcomponents/SVGBackground.js.map +0 -1
  163. package/esm/LinearSyntenyView/svgcomponents/SVGLinearSyntenyView.js.map +0 -1
  164. package/esm/SyntenyFeatureDetail/SyntenyFeatureDetail.js.map +0 -1
  165. package/esm/SyntenyFeatureDetail/index.js.map +0 -1
  166. package/esm/SyntenyTrack/configSchema.js.map +0 -1
  167. package/esm/SyntenyTrack/index.js.map +0 -1
  168. package/esm/index.js.map +0 -1
  169. package/esm/util.js.map +0 -1
  170. package/src/LGVSyntenyDisplay/configSchemaF.ts +0 -22
  171. package/src/LGVSyntenyDisplay/index.ts +0 -20
  172. package/src/LGVSyntenyDisplay/model.ts +0 -177
  173. package/src/LaunchLinearSyntenyView.ts +0 -86
  174. package/src/LinearComparativeDisplay/configSchemaF.ts +0 -22
  175. package/src/LinearComparativeDisplay/index.ts +0 -21
  176. package/src/LinearComparativeDisplay/stateModelFactory.ts +0 -212
  177. package/src/LinearComparativeView/components/Header.tsx +0 -103
  178. package/src/LinearComparativeView/components/LinearComparativeView.tsx +0 -152
  179. package/src/LinearComparativeView/components/Rubberband.tsx +0 -329
  180. package/src/LinearComparativeView/index.ts +0 -15
  181. package/src/LinearComparativeView/model.ts +0 -395
  182. package/src/LinearReadVsRef/LinearReadVsRef.tsx +0 -360
  183. package/src/LinearReadVsRef/index.ts +0 -58
  184. package/src/LinearSyntenyDisplay/afterAttach.ts +0 -149
  185. package/src/LinearSyntenyDisplay/components/Component.tsx +0 -75
  186. package/src/LinearSyntenyDisplay/components/LinearSyntenyRendering.tsx +0 -200
  187. package/src/LinearSyntenyDisplay/components/SyntenyTooltip.tsx +0 -82
  188. package/src/LinearSyntenyDisplay/components/util.ts +0 -142
  189. package/src/LinearSyntenyDisplay/configSchemaF.ts +0 -38
  190. package/src/LinearSyntenyDisplay/drawSynteny.ts +0 -266
  191. package/src/LinearSyntenyDisplay/index.ts +0 -21
  192. package/src/LinearSyntenyDisplay/model.ts +0 -187
  193. package/src/LinearSyntenyView/components/ExportSvgDialog.tsx +0 -148
  194. package/src/LinearSyntenyView/components/Icons.tsx +0 -24
  195. package/src/LinearSyntenyView/components/ImportCustomTrack.tsx +0 -262
  196. package/src/LinearSyntenyView/components/ImportForm.tsx +0 -221
  197. package/src/LinearSyntenyView/components/ImportSyntenyTrackSelector.tsx +0 -82
  198. package/src/LinearSyntenyView/components/LinearSyntenyView.tsx +0 -20
  199. package/src/LinearSyntenyView/index.ts +0 -15
  200. package/src/LinearSyntenyView/model.test.ts +0 -1605
  201. package/src/LinearSyntenyView/model.ts +0 -169
  202. package/src/LinearSyntenyView/svgcomponents/SVGBackground.tsx +0 -21
  203. package/src/LinearSyntenyView/svgcomponents/SVGLinearSyntenyView.tsx +0 -176
  204. package/src/SyntenyFeatureDetail/SyntenyFeatureDetail.tsx +0 -64
  205. package/src/SyntenyFeatureDetail/index.ts +0 -36
  206. package/src/SyntenyTrack/configSchema.ts +0 -23
  207. package/src/SyntenyTrack/index.tsx +0 -15
  208. package/src/index.tsx +0 -42
  209. package/src/util.ts +0 -124
@@ -1,329 +0,0 @@
1
- import React, { useRef, useEffect, useState } from 'react'
2
- import { observer } from 'mobx-react'
3
- import { Popover, Tooltip, Typography, alpha } from '@mui/material'
4
- import { makeStyles } from 'tss-react/mui'
5
- import { stringify } from '@jbrowse/core/util'
6
- import { Menu } from '@jbrowse/core/ui'
7
- import { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'
8
- import { LinearComparativeViewModel } from '../model'
9
-
10
- type LCV = LinearComparativeViewModel
11
- type LGV = LinearGenomeViewModel
12
-
13
- const useStyles = makeStyles()(theme => {
14
- const { tertiary, primary } = theme.palette
15
- const background = tertiary
16
- ? alpha(tertiary.main, 0.7)
17
- : alpha(primary.main, 0.7)
18
- return {
19
- rubberband: {
20
- height: '100%',
21
- background,
22
- position: 'absolute',
23
- zIndex: 10,
24
- textAlign: 'center',
25
- overflow: 'hidden',
26
- },
27
- rubberbandControl: {
28
- cursor: 'crosshair',
29
- width: '100%',
30
- minHeight: 8,
31
- },
32
- rubberbandText: {
33
- color: tertiary ? tertiary.contrastText : primary.contrastText,
34
- },
35
- popover: {
36
- mouseEvents: 'none',
37
- cursor: 'crosshair',
38
- },
39
- paper: {
40
- paddingLeft: theme.spacing(1),
41
- paddingRight: theme.spacing(1),
42
- },
43
- guide: {
44
- pointerEvents: 'none',
45
- height: '100%',
46
- width: 1,
47
- position: 'absolute',
48
- zIndex: 10,
49
- },
50
- sm: {
51
- fontSize: 10,
52
- },
53
- }
54
- })
55
-
56
- const VerticalGuide = observer(
57
- ({ model, coordX }: { model: LCV; coordX: number }) => {
58
- const { classes } = useStyles()
59
- return (
60
- <Tooltip
61
- open
62
- placement="top"
63
- title={model.views
64
- .map(view => view.pxToBp(coordX))
65
- .map(elt => (
66
- <Typography className={classes.sm} key={JSON.stringify(elt)}>
67
- {stringify(elt)}
68
- </Typography>
69
- ))}
70
- arrow
71
- >
72
- <div
73
- className={classes.guide}
74
- style={{
75
- left: coordX,
76
- background: 'red',
77
- }}
78
- />
79
- </Tooltip>
80
- )
81
- },
82
- )
83
-
84
- function Rubberband({
85
- model,
86
- ControlComponent = <div />,
87
- }: {
88
- model: LCV
89
- ControlComponent?: React.ReactElement
90
- }) {
91
- const [startX, setStartX] = useState<number>()
92
- const [currentX, setCurrentX] = useState<number>()
93
-
94
- // clientX and clientY used for anchorPosition for menu
95
- // offsetX used for calculations about width of selection
96
- const [anchorPosition, setAnchorPosition] = useState<{
97
- offsetX: number
98
- clientX: number
99
- clientY: number
100
- }>()
101
- const [guideX, setGuideX] = useState<number>()
102
- const controlsRef = useRef<HTMLDivElement>(null)
103
- const rubberbandRef = useRef(null)
104
- const { classes } = useStyles()
105
- const mouseDragging = startX !== undefined && anchorPosition === undefined
106
-
107
- useEffect(() => {
108
- function computeOffsets(offsetX: number, view: LGV) {
109
- if (startX === undefined) {
110
- return
111
- }
112
- let leftPx = startX
113
- let rightPx = offsetX
114
- // handles clicking and dragging to the left
115
- if (rightPx < leftPx) {
116
- ;[leftPx, rightPx] = [rightPx, leftPx]
117
- }
118
- const leftOffset = view.pxToBp(leftPx)
119
- const rightOffset = view.pxToBp(rightPx)
120
-
121
- return { leftOffset, rightOffset }
122
- }
123
-
124
- function globalMouseMove(event: MouseEvent) {
125
- if (controlsRef.current && mouseDragging) {
126
- const relativeX =
127
- event.clientX - controlsRef.current.getBoundingClientRect().left
128
- setCurrentX(relativeX)
129
- }
130
- }
131
-
132
- function globalMouseUp(event: MouseEvent) {
133
- if (startX !== undefined && controlsRef.current) {
134
- const { clientX, clientY } = event
135
- const ref = controlsRef.current
136
- const offsetX = clientX - ref.getBoundingClientRect().left
137
- // as stated above, store both clientX/Y and offsetX for different
138
- // purposes
139
- setAnchorPosition({
140
- offsetX,
141
- clientX,
142
- clientY,
143
- })
144
- model.views.forEach(view => {
145
- const args = computeOffsets(offsetX, view)
146
- if (args) {
147
- const { leftOffset, rightOffset } = args
148
- view.setOffsets(leftOffset, rightOffset)
149
- }
150
- })
151
- setGuideX(undefined)
152
- }
153
- }
154
- if (mouseDragging) {
155
- window.addEventListener('mousemove', globalMouseMove)
156
- window.addEventListener('mouseup', globalMouseUp)
157
- return () => {
158
- window.removeEventListener('mousemove', globalMouseMove)
159
- window.removeEventListener('mouseup', globalMouseUp)
160
- }
161
- }
162
- return () => {}
163
- }, [startX, mouseDragging, anchorPosition, model])
164
-
165
- useEffect(() => {
166
- if (
167
- !mouseDragging &&
168
- currentX !== undefined &&
169
- startX !== undefined &&
170
- Math.abs(currentX - startX) <= 3
171
- ) {
172
- handleClose()
173
- }
174
- }, [mouseDragging, currentX, startX])
175
-
176
- function mouseDown(event: React.MouseEvent<HTMLDivElement>) {
177
- event.preventDefault()
178
- event.stopPropagation()
179
- const relativeX =
180
- event.clientX -
181
- (event.target as HTMLDivElement).getBoundingClientRect().left
182
- setStartX(relativeX)
183
- setCurrentX(relativeX)
184
- }
185
-
186
- function mouseMove(event: React.MouseEvent<HTMLDivElement>) {
187
- const target = event.target as HTMLDivElement
188
- setGuideX(event.clientX - target.getBoundingClientRect().left)
189
- }
190
-
191
- function mouseOut() {
192
- setGuideX(undefined)
193
- model.views.forEach(view => view.setOffsets(undefined, undefined))
194
- }
195
-
196
- function handleClose() {
197
- setAnchorPosition(undefined)
198
- setStartX(undefined)
199
- setCurrentX(undefined)
200
- }
201
-
202
- const open = Boolean(anchorPosition)
203
-
204
- function handleMenuItemClick(_: unknown, callback: Function) {
205
- callback()
206
- handleClose()
207
- }
208
-
209
- if (startX === undefined) {
210
- return (
211
- <>
212
- {guideX !== undefined ? (
213
- <VerticalGuide model={model} coordX={guideX} />
214
- ) : null}
215
- <div
216
- data-testid="rubberband_controls"
217
- className={classes.rubberbandControl}
218
- role="presentation"
219
- ref={controlsRef}
220
- onMouseDown={mouseDown}
221
- onMouseOut={mouseOut}
222
- onMouseMove={mouseMove}
223
- >
224
- {ControlComponent}
225
- </div>
226
- </>
227
- )
228
- }
229
-
230
- /* Calculating Pixels for Mouse Dragging */
231
- const right = anchorPosition ? anchorPosition.offsetX : currentX || 0
232
- const left = right < startX ? right : startX
233
- const width = Math.abs(right - startX)
234
- const { views } = model
235
- const leftBpOffset = views.map(view => view.pxToBp(left))
236
- const rightBpOffset = views.map(view => view.pxToBp(left + width))
237
- const numOfBpSelected = views.map(view => Math.ceil(width * view.bpPerPx))
238
- return (
239
- <>
240
- {rubberbandRef.current ? (
241
- <>
242
- <Popover
243
- className={classes.popover}
244
- classes={{
245
- paper: classes.paper,
246
- }}
247
- open
248
- anchorEl={rubberbandRef.current}
249
- anchorOrigin={{
250
- vertical: 'top',
251
- horizontal: 'left',
252
- }}
253
- transformOrigin={{
254
- vertical: 'bottom',
255
- horizontal: 'right',
256
- }}
257
- keepMounted
258
- disableRestoreFocus
259
- >
260
- {leftBpOffset.map(l => (
261
- <Typography key={JSON.stringify(l)}>{stringify(l)}</Typography>
262
- ))}
263
- </Popover>
264
- <Popover
265
- className={classes.popover}
266
- classes={{
267
- paper: classes.paper,
268
- }}
269
- open
270
- anchorEl={rubberbandRef.current}
271
- anchorOrigin={{
272
- vertical: 'top',
273
- horizontal: 'right',
274
- }}
275
- transformOrigin={{
276
- vertical: 'bottom',
277
- horizontal: 'left',
278
- }}
279
- keepMounted
280
- disableRestoreFocus
281
- >
282
- {rightBpOffset.map(l => (
283
- <Typography key={JSON.stringify(l)}>{stringify(l)}</Typography>
284
- ))}
285
- </Popover>
286
- </>
287
- ) : null}
288
- <div
289
- ref={rubberbandRef}
290
- className={classes.rubberband}
291
- style={{ left, width }}
292
- >
293
- <Typography variant="h6" className={classes.rubberbandText}>
294
- {numOfBpSelected.map((n, i) => (
295
- <Typography key={`${n}_${i}`}>{`${n.toLocaleString(
296
- 'en-US',
297
- )}bp`}</Typography>
298
- ))}
299
- </Typography>
300
- </div>
301
- <div
302
- data-testid="rubberband_controls"
303
- className={classes.rubberbandControl}
304
- role="presentation"
305
- ref={controlsRef}
306
- onMouseDown={mouseDown}
307
- onMouseOut={mouseOut}
308
- onMouseMove={mouseMove}
309
- >
310
- {ControlComponent}
311
- </div>
312
- {anchorPosition ? (
313
- <Menu
314
- anchorReference="anchorPosition"
315
- anchorPosition={{
316
- left: anchorPosition.clientX,
317
- top: anchorPosition.clientY,
318
- }}
319
- onMenuItemClick={handleMenuItemClick}
320
- open={open}
321
- onClose={handleClose}
322
- menuItems={model.rubberBandMenuItems()}
323
- />
324
- ) : null}
325
- </>
326
- )
327
- }
328
-
329
- export default observer(Rubberband)
@@ -1,15 +0,0 @@
1
- import { lazy } from 'react'
2
- import PluginManager from '@jbrowse/core/PluginManager'
3
- import ViewType from '@jbrowse/core/pluggableElementTypes/ViewType'
4
- import modelFactory from './model'
5
-
6
- export default (pluginManager: PluginManager) => {
7
- pluginManager.addViewType(() => {
8
- return new ViewType({
9
- name: 'LinearComparativeView',
10
- displayName: 'Linear comparative view',
11
- stateModel: modelFactory(pluginManager),
12
- ReactComponent: lazy(() => import('./components/LinearComparativeView')),
13
- })
14
- })
15
- }