@jbrowse/plugin-circular-view 2.3.3 → 2.4.0

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 (90) hide show
  1. package/dist/BaseChordDisplay/components/Loading.js.map +1 -1
  2. package/dist/BaseChordDisplay/index.d.ts +2 -2
  3. package/dist/BaseChordDisplay/index.js +4 -4
  4. package/dist/BaseChordDisplay/index.js.map +1 -1
  5. package/dist/BaseChordDisplay/models/{baseChordDisplayConfig.js → configSchema.js} +1 -1
  6. package/dist/BaseChordDisplay/models/configSchema.js.map +1 -0
  7. package/dist/BaseChordDisplay/models/{BaseChordDisplayModel.d.ts → model.d.ts} +12 -0
  8. package/dist/BaseChordDisplay/models/{BaseChordDisplayModel.js → model.js} +32 -22
  9. package/dist/BaseChordDisplay/models/model.js.map +1 -0
  10. package/dist/BaseChordDisplay/models/renderReaction.d.ts +1 -1
  11. package/dist/BaseChordDisplay/models/renderReaction.js +4 -5
  12. package/dist/BaseChordDisplay/models/renderReaction.js.map +1 -1
  13. package/dist/CircularView/components/CircularView.js +8 -17
  14. package/dist/CircularView/components/CircularView.js.map +1 -1
  15. package/dist/CircularView/components/Controls.d.ts +2 -2
  16. package/dist/CircularView/components/Controls.js +60 -24
  17. package/dist/CircularView/components/Controls.js.map +1 -1
  18. package/dist/CircularView/components/ExportSvgDialog.d.ts +8 -0
  19. package/dist/CircularView/components/ExportSvgDialog.js +76 -0
  20. package/dist/CircularView/components/ExportSvgDialog.js.map +1 -0
  21. package/dist/CircularView/components/Ruler.d.ts +2 -2
  22. package/dist/CircularView/components/Ruler.js +10 -14
  23. package/dist/CircularView/components/Ruler.js.map +1 -1
  24. package/dist/CircularView/models/CircularView.d.ts +30 -26
  25. package/dist/CircularView/models/CircularView.js +61 -17
  26. package/dist/CircularView/models/CircularView.js.map +1 -1
  27. package/dist/CircularView/models/slices.d.ts +23 -10
  28. package/dist/CircularView/models/slices.js +10 -7
  29. package/dist/CircularView/models/slices.js.map +1 -1
  30. package/dist/CircularView/svgcomponents/SVGBackground.d.ts +6 -0
  31. package/dist/CircularView/svgcomponents/SVGBackground.js +13 -0
  32. package/dist/CircularView/svgcomponents/SVGBackground.js.map +1 -0
  33. package/dist/CircularView/svgcomponents/SVGCircularView.d.ts +4 -0
  34. package/dist/CircularView/svgcomponents/SVGCircularView.js +40 -0
  35. package/dist/CircularView/svgcomponents/SVGCircularView.js.map +1 -0
  36. package/esm/BaseChordDisplay/components/Loading.js.map +1 -1
  37. package/esm/BaseChordDisplay/index.d.ts +2 -2
  38. package/esm/BaseChordDisplay/index.js +2 -2
  39. package/esm/BaseChordDisplay/index.js.map +1 -1
  40. package/esm/BaseChordDisplay/models/{baseChordDisplayConfig.js → configSchema.js} +1 -1
  41. package/esm/BaseChordDisplay/models/configSchema.js.map +1 -0
  42. package/esm/BaseChordDisplay/models/{BaseChordDisplayModel.d.ts → model.d.ts} +12 -0
  43. package/esm/BaseChordDisplay/models/{BaseChordDisplayModel.js → model.js} +33 -23
  44. package/esm/BaseChordDisplay/models/model.js.map +1 -0
  45. package/esm/BaseChordDisplay/models/renderReaction.d.ts +1 -1
  46. package/esm/BaseChordDisplay/models/renderReaction.js +4 -5
  47. package/esm/BaseChordDisplay/models/renderReaction.js.map +1 -1
  48. package/esm/CircularView/components/CircularView.js +8 -17
  49. package/esm/CircularView/components/CircularView.js.map +1 -1
  50. package/esm/CircularView/components/Controls.d.ts +2 -2
  51. package/esm/CircularView/components/Controls.js +37 -24
  52. package/esm/CircularView/components/Controls.js.map +1 -1
  53. package/esm/CircularView/components/ExportSvgDialog.d.ts +8 -0
  54. package/esm/CircularView/components/ExportSvgDialog.js +50 -0
  55. package/esm/CircularView/components/ExportSvgDialog.js.map +1 -0
  56. package/esm/CircularView/components/Ruler.d.ts +2 -2
  57. package/esm/CircularView/components/Ruler.js +10 -14
  58. package/esm/CircularView/components/Ruler.js.map +1 -1
  59. package/esm/CircularView/models/CircularView.d.ts +30 -26
  60. package/esm/CircularView/models/CircularView.js +58 -17
  61. package/esm/CircularView/models/CircularView.js.map +1 -1
  62. package/esm/CircularView/models/slices.d.ts +23 -10
  63. package/esm/CircularView/models/slices.js +10 -7
  64. package/esm/CircularView/models/slices.js.map +1 -1
  65. package/esm/CircularView/svgcomponents/SVGBackground.d.ts +6 -0
  66. package/esm/CircularView/svgcomponents/SVGBackground.js +7 -0
  67. package/esm/CircularView/svgcomponents/SVGBackground.js.map +1 -0
  68. package/esm/CircularView/svgcomponents/SVGCircularView.d.ts +4 -0
  69. package/esm/CircularView/svgcomponents/SVGCircularView.js +33 -0
  70. package/esm/CircularView/svgcomponents/SVGCircularView.js.map +1 -0
  71. package/package.json +5 -3
  72. package/src/BaseChordDisplay/components/Loading.tsx +1 -0
  73. package/src/BaseChordDisplay/index.ts +2 -2
  74. package/src/BaseChordDisplay/models/{BaseChordDisplayModel.ts → model.tsx} +46 -24
  75. package/src/BaseChordDisplay/models/renderReaction.ts +4 -7
  76. package/src/CircularView/components/CircularView.tsx +11 -25
  77. package/src/CircularView/components/Controls.tsx +41 -28
  78. package/src/CircularView/components/ExportSvgDialog.tsx +132 -0
  79. package/src/CircularView/components/Ruler.tsx +193 -182
  80. package/src/CircularView/models/CircularView.ts +78 -40
  81. package/src/CircularView/models/slices.ts +32 -12
  82. package/src/CircularView/svgcomponents/SVGBackground.tsx +21 -0
  83. package/src/CircularView/svgcomponents/SVGCircularView.tsx +58 -0
  84. package/dist/BaseChordDisplay/models/BaseChordDisplayModel.js.map +0 -1
  85. package/dist/BaseChordDisplay/models/baseChordDisplayConfig.js.map +0 -1
  86. package/esm/BaseChordDisplay/models/BaseChordDisplayModel.js.map +0 -1
  87. package/esm/BaseChordDisplay/models/baseChordDisplayConfig.js.map +0 -1
  88. /package/dist/BaseChordDisplay/models/{baseChordDisplayConfig.d.ts → configSchema.d.ts} +0 -0
  89. /package/esm/BaseChordDisplay/models/{baseChordDisplayConfig.d.ts → configSchema.d.ts} +0 -0
  90. /package/src/BaseChordDisplay/models/{baseChordDisplayConfig.ts → configSchema.ts} +0 -0
@@ -1,3 +1,4 @@
1
+ import React from 'react'
1
2
  import PluginManager from '@jbrowse/core/PluginManager'
2
3
  import {
3
4
  cast,
@@ -10,22 +11,38 @@ import {
10
11
  } from 'mobx-state-tree'
11
12
  import { Region } from '@jbrowse/core/util/types/mst'
12
13
  import { transaction } from 'mobx'
14
+ import { saveAs } from 'file-saver'
15
+ import { renderToSvg } from '../svgcomponents/SVGCircularView'
13
16
  import {
14
17
  AnyConfigurationModel,
15
18
  readConfObject,
16
19
  } from '@jbrowse/core/configuration'
17
-
20
+ import { MenuItem } from '@jbrowse/core/ui'
18
21
  import {
19
22
  getSession,
20
23
  clamp,
21
24
  isSessionModelWithWidgets,
22
- Region as IRegion,
23
25
  } from '@jbrowse/core/util'
24
26
  import { BaseViewModel } from '@jbrowse/core/pluggableElementTypes/models'
25
- import { calculateStaticSlices, sliceIsVisible } from './slices'
26
27
 
28
+ // icons
29
+ import { TrackSelector as TrackSelectorIcon } from '@jbrowse/core/ui/Icons'
30
+ import FolderOpenIcon from '@mui/icons-material/FolderOpen'
31
+ import PhotoCameraIcon from '@mui/icons-material/PhotoCamera'
32
+
33
+ // locals
34
+ import ExportSvgDlg from '../components/ExportSvgDialog'
35
+ import { calculateStaticSlices, sliceIsVisible, SliceRegion } from './slices'
27
36
  import { viewportVisibleSection } from './viewportVisibleRegion'
28
37
 
38
+ export interface ExportSvgOptions {
39
+ rasterizeLayers?: boolean
40
+ filename?: string
41
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
42
+ Wrapper?: React.FC<any>
43
+ themeName?: string
44
+ }
45
+
29
46
  /**
30
47
  * #stateModel CircularView
31
48
  * extends `BaseViewModel`
@@ -121,12 +138,6 @@ function stateModelFactory(pluginManager: PluginManager) {
121
138
  }
122
139
  return self.volatileWidth
123
140
  },
124
- /**
125
- * #getter
126
- */
127
- get staticSlices() {
128
- return calculateStaticSlices(self)
129
- },
130
141
 
131
142
  /**
132
143
  * #getter
@@ -262,20 +273,7 @@ function stateModelFactory(pluginManager: PluginManager) {
262
273
  * elide regions that are too small to see reasonably
263
274
  */
264
275
  get elidedRegions() {
265
- const visible: (
266
- | {
267
- elided: true
268
- widthBp: number
269
- regions: IRegion[]
270
- }
271
- | {
272
- elided: false
273
- widthBp: number
274
- start: number
275
- end: number
276
- refName: string
277
- }
278
- )[] = []
276
+ const visible: SliceRegion[] = []
279
277
  self.displayedRegions.forEach(region => {
280
278
  const widthBp = region.end - region.start
281
279
  const widthPx = widthBp / self.bpPerPx
@@ -330,6 +328,14 @@ function stateModelFactory(pluginManager: PluginManager) {
330
328
  )
331
329
  },
332
330
  }))
331
+ .views(self => ({
332
+ /**
333
+ * #getter
334
+ */
335
+ get staticSlices() {
336
+ return calculateStaticSlices(self)
337
+ },
338
+ }))
333
339
  .views(self => ({
334
340
  /**
335
341
  * #getter
@@ -529,14 +535,15 @@ function stateModelFactory(pluginManager: PluginManager) {
529
535
  const displayConf = configuration.displays.find(
530
536
  (d: AnyConfigurationModel) => supportedDisplays.includes(d.type),
531
537
  )
532
- const track = trackType.stateModel.create({
533
- ...initialSnapshot,
534
- name,
535
- type,
536
- configuration,
537
- displays: [{ type: displayConf.type, configuration: displayConf }],
538
- })
539
- self.tracks.push(track)
538
+ self.tracks.push(
539
+ trackType.stateModel.create({
540
+ ...initialSnapshot,
541
+ name,
542
+ type,
543
+ configuration,
544
+ displays: [{ type: displayConf.type, configuration: displayConf }],
545
+ }),
546
+ )
540
547
  },
541
548
 
542
549
  /**
@@ -560,19 +567,50 @@ function stateModelFactory(pluginManager: PluginManager) {
560
567
  this.setModelViewWhenAdjust(self.atMinBpPerPx)
561
568
  return self.lockedFitToWindow
562
569
  },
570
+ /**
571
+ * #action
572
+ * creates an svg export and save using FileSaver
573
+ */
574
+ async exportSvg(opts: ExportSvgOptions = {}) {
575
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
576
+ const html = await renderToSvg(self as any, opts)
577
+ const blob = new Blob([html], { type: 'image/svg+xml' })
578
+ saveAs(blob, opts.filename || 'image.svg')
579
+ },
580
+ }))
581
+ .views(self => ({
582
+ /**
583
+ * #method
584
+ * return the view menu items
585
+ */
586
+ menuItems(): MenuItem[] {
587
+ return [
588
+ {
589
+ label: 'Return to import form',
590
+ onClick: () => self.setDisplayedRegions([]),
591
+ icon: FolderOpenIcon,
592
+ },
593
+ {
594
+ label: 'Export SVG',
595
+ icon: PhotoCameraIcon,
596
+ onClick: () => {
597
+ getSession(self).queueDialog(handleClose => [
598
+ ExportSvgDlg,
599
+ { model: self, handleClose },
600
+ ])
601
+ },
602
+ },
603
+ {
604
+ label: 'Open track selector',
605
+ onClick: self.activateTrackSelector,
606
+ icon: TrackSelectorIcon,
607
+ },
608
+ ]
609
+ },
563
610
  }))
564
611
  }
565
612
 
566
613
  export type CircularViewStateModel = ReturnType<typeof stateModelFactory>
567
614
  export type CircularViewModel = Instance<CircularViewStateModel>
568
615
 
569
- /**
570
- PLANS
571
-
572
- - tracks
573
- - ruler tick marks
574
- - set viewport scroll from state snapshot
575
-
576
- */
577
-
578
616
  export default stateModelFactory
@@ -1,11 +1,25 @@
1
1
  import { polarToCartesian, assembleLocString, Region } from '@jbrowse/core/util'
2
2
  import { thetaRangesOverlap } from './viewportVisibleRegion'
3
3
 
4
+ export type SliceElidedRegion = {
5
+ elided: true
6
+ widthBp: number
7
+ regions: Region[]
8
+ }
9
+
10
+ export type SliceNonElidedRegion = {
11
+ elided: false
12
+ widthBp: number
13
+ start: number
14
+ end: number
15
+ refName: string
16
+ assemblyName: string
17
+ }
18
+ export type SliceRegion = SliceNonElidedRegion | SliceElidedRegion
19
+
4
20
  export class Slice {
5
21
  key: string
6
22
 
7
- offsetRadians: number
8
-
9
23
  startRadians: number
10
24
 
11
25
  endRadians: number
@@ -16,18 +30,20 @@ export class Slice {
16
30
 
17
31
  constructor(
18
32
  view: { bpPerRadian: number },
19
- public region: Region & { widthBp: number; elided: boolean },
20
- currentRadianOffset: number,
33
+ public region: SliceRegion,
34
+ public offsetRadians: number,
21
35
  public radianWidth: number,
22
36
  ) {
23
37
  const { bpPerRadian } = view
24
- this.key = assembleLocString(region)
25
- this.offsetRadians = currentRadianOffset
38
+ this.key =
39
+ 'regions' in region
40
+ ? JSON.stringify(region.regions)
41
+ : assembleLocString(region)
26
42
  this.bpPerRadian = bpPerRadian
27
43
  this.flipped = false
28
44
 
29
- this.startRadians = this.offsetRadians
30
- this.endRadians = region.widthBp / this.bpPerRadian + this.offsetRadians
45
+ this.startRadians = offsetRadians
46
+ this.endRadians = region.widthBp / this.bpPerRadian + offsetRadians
31
47
  Object.freeze(this)
32
48
  }
33
49
 
@@ -49,13 +65,17 @@ export class Slice {
49
65
  }
50
66
  }
51
67
 
52
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
53
- function calculateStaticSlices(self: any) {
68
+ function calculateStaticSlices(self: {
69
+ elidedRegions: SliceRegion[]
70
+ bpPerRadian: number
71
+ spacingPx: number
72
+ pxPerRadian: number
73
+ }) {
54
74
  const slices = []
55
75
  let currentRadianOffset = 0
76
+ const { bpPerRadian, spacingPx, pxPerRadian } = self
56
77
  for (const region of self.elidedRegions) {
57
- const radianWidth =
58
- region.widthBp / self.bpPerRadian + self.spacingPx / self.pxPerRadian
78
+ const radianWidth = region.widthBp / bpPerRadian + spacingPx / pxPerRadian
59
79
  slices.push(new Slice(self, region, currentRadianOffset, radianWidth))
60
80
  currentRadianOffset += radianWidth
61
81
  }
@@ -0,0 +1,21 @@
1
+ import React from 'react'
2
+ import { useTheme } from '@mui/material'
3
+
4
+ export default function SVGBackground({
5
+ width,
6
+ height,
7
+ shift,
8
+ }: {
9
+ width: number
10
+ height: number
11
+ shift: number
12
+ }) {
13
+ const theme = useTheme()
14
+ return (
15
+ <rect
16
+ width={width + shift * 2}
17
+ height={height}
18
+ fill={theme.palette.background.default}
19
+ />
20
+ )
21
+ }
@@ -0,0 +1,58 @@
1
+ import React from 'react'
2
+ import { ThemeProvider } from '@mui/material'
3
+ import { renderToStaticMarkup } from 'react-dom/server'
4
+ import { when } from 'mobx'
5
+ import { getSession, radToDeg } from '@jbrowse/core/util'
6
+ import { createJBrowseTheme } from '@jbrowse/core/ui'
7
+
8
+ // locals
9
+ import { ExportSvgOptions, CircularViewModel } from '../models/CircularView'
10
+ import SVGBackground from './SVGBackground'
11
+ import Ruler from '../components/Ruler'
12
+
13
+ type CGV = CircularViewModel
14
+
15
+ export async function renderToSvg(model: CGV, opts: ExportSvgOptions) {
16
+ await when(() => model.initialized)
17
+ const { themeName = 'default', Wrapper = ({ children }) => <>{children}</> } =
18
+ opts
19
+ const session = getSession(model)
20
+ const theme = session.allThemes?.()[themeName]
21
+ const { width, tracks, height } = model
22
+ const shift = 50
23
+ const displayResults = await Promise.all(
24
+ tracks.map(async track => {
25
+ const display = track.displays[0]
26
+ await when(() => (display.ready !== undefined ? display.ready : true))
27
+ return { track, result: await display.renderSvg({ ...opts, theme }) }
28
+ }),
29
+ )
30
+
31
+ const { staticSlices, offsetRadians, centerXY } = model
32
+ const deg = radToDeg(offsetRadians)
33
+
34
+ // the xlink namespace is used for rendering <image> tag
35
+ return renderToStaticMarkup(
36
+ <ThemeProvider theme={createJBrowseTheme(theme)}>
37
+ <Wrapper>
38
+ <svg
39
+ width={width}
40
+ height={height}
41
+ xmlns="http://www.w3.org/2000/svg"
42
+ xmlnsXlink="http://www.w3.org/1999/xlink"
43
+ viewBox={[0, 0, width + shift * 2, height].toString()}
44
+ >
45
+ <SVGBackground width={width} height={height} shift={shift} />
46
+ <g transform={`translate(${centerXY}) rotate(${deg})`}>
47
+ {staticSlices.map((slice, i) => (
48
+ <Ruler key={i} model={model} slice={slice} />
49
+ ))}
50
+ {displayResults.map(({ result }, i) => (
51
+ <React.Fragment key={i}>{result}</React.Fragment>
52
+ ))}
53
+ </g>
54
+ </svg>
55
+ </Wrapper>
56
+ </ThemeProvider>,
57
+ )
58
+ }
@@ -1 +0,0 @@
1
- {"version":3,"file":"BaseChordDisplayModel.js","sourceRoot":"","sources":["../../../src/BaseChordDisplay/models/BaseChordDisplayModel.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"baseChordDisplayConfig.js","sourceRoot":"","sources":["../../../src/BaseChordDisplay/models/baseChordDisplayConfig.ts"],"names":[],"mappings":";;;AAAA,+DAAiE;AAEjE;;GAEG;AACH,SAAS,CAAC,KAAI,CAAC,CAAC,wDAAwD;AAExE,MAAM,sBAAsB,GAAG,IAAA,mCAAmB,EAChD,kBAAkB,EAClB;IACE;;OAEG;IACH,YAAY,EAAE;QACZ,IAAI,EAAE,SAAS;QACf,WAAW,EACT,kEAAkE;QACpE,YAAY,EAAE,KAAK;QACnB,eAAe,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,eAAe,CAAC;KACvD;CACF,EACD;IACE;;OAEG;IACH,kBAAkB,EAAE,WAAW;CAChC,CACF,CAAA;AAEQ,wDAAsB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"BaseChordDisplayModel.js","sourceRoot":"","sources":["../../../src/BaseChordDisplay/models/BaseChordDisplayModel.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"baseChordDisplayConfig.js","sourceRoot":"","sources":["../../../src/BaseChordDisplay/models/baseChordDisplayConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAEjE;;GAEG;AACH,SAAS,CAAC,KAAI,CAAC,CAAC,wDAAwD;AAExE,MAAM,sBAAsB,GAAG,mBAAmB,CAChD,kBAAkB,EAClB;IACE;;OAEG;IACH,YAAY,EAAE;QACZ,IAAI,EAAE,SAAS;QACf,WAAW,EACT,kEAAkE;QACpE,YAAY,EAAE,KAAK;QACnB,eAAe,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,eAAe,CAAC;KACvD;CACF,EACD;IACE;;OAEG;IACH,kBAAkB,EAAE,WAAW;CAChC,CACF,CAAA;AAED,OAAO,EAAE,sBAAsB,EAAE,CAAA"}