@jbrowse/plugin-arc 2.6.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 (61) hide show
  1. package/LICENSE +201 -0
  2. package/dist/ArcRenderer/ArcRenderer.d.ts +3 -0
  3. package/dist/ArcRenderer/ArcRenderer.js +10 -0
  4. package/dist/ArcRenderer/ArcRenderer.js.map +1 -0
  5. package/dist/ArcRenderer/ArcRendering.d.ts +4 -0
  6. package/dist/ArcRenderer/ArcRendering.js +62 -0
  7. package/dist/ArcRenderer/ArcRendering.js.map +1 -0
  8. package/dist/ArcRenderer/configSchema.d.ts +48 -0
  9. package/dist/ArcRenderer/configSchema.js +56 -0
  10. package/dist/ArcRenderer/configSchema.js.map +1 -0
  11. package/dist/ArcRenderer/index.d.ts +3 -0
  12. package/dist/ArcRenderer/index.js +17 -0
  13. package/dist/ArcRenderer/index.js.map +1 -0
  14. package/dist/LinearArcDisplay/configSchema.d.ts +32 -0
  15. package/dist/LinearArcDisplay/configSchema.js +25 -0
  16. package/dist/LinearArcDisplay/configSchema.js.map +1 -0
  17. package/dist/LinearArcDisplay/index.d.ts +3 -0
  18. package/dist/LinearArcDisplay/index.js +21 -0
  19. package/dist/LinearArcDisplay/index.js.map +1 -0
  20. package/dist/LinearArcDisplay/model.d.ts +303 -0
  21. package/dist/LinearArcDisplay/model.js +36 -0
  22. package/dist/LinearArcDisplay/model.js.map +1 -0
  23. package/dist/index.d.ts +6 -0
  24. package/dist/index.js +23 -0
  25. package/dist/index.js.map +1 -0
  26. package/esm/ArcRenderer/ArcRenderer.d.ts +3 -0
  27. package/esm/ArcRenderer/ArcRenderer.js +4 -0
  28. package/esm/ArcRenderer/ArcRenderer.js.map +1 -0
  29. package/esm/ArcRenderer/ArcRendering.d.ts +4 -0
  30. package/esm/ArcRenderer/ArcRendering.js +57 -0
  31. package/esm/ArcRenderer/ArcRendering.js.map +1 -0
  32. package/esm/ArcRenderer/configSchema.d.ts +48 -0
  33. package/esm/ArcRenderer/configSchema.js +54 -0
  34. package/esm/ArcRenderer/configSchema.js.map +1 -0
  35. package/esm/ArcRenderer/index.d.ts +3 -0
  36. package/esm/ArcRenderer/index.js +12 -0
  37. package/esm/ArcRenderer/index.js.map +1 -0
  38. package/esm/LinearArcDisplay/configSchema.d.ts +32 -0
  39. package/esm/LinearArcDisplay/configSchema.js +21 -0
  40. package/esm/LinearArcDisplay/configSchema.js.map +1 -0
  41. package/esm/LinearArcDisplay/index.d.ts +3 -0
  42. package/esm/LinearArcDisplay/index.js +19 -0
  43. package/esm/LinearArcDisplay/index.js.map +1 -0
  44. package/esm/LinearArcDisplay/model.d.ts +303 -0
  45. package/esm/LinearArcDisplay/model.js +32 -0
  46. package/esm/LinearArcDisplay/model.js.map +1 -0
  47. package/esm/index.d.ts +6 -0
  48. package/esm/index.js +17 -0
  49. package/esm/index.js.map +1 -0
  50. package/package.json +61 -0
  51. package/src/ArcRenderer/ArcRenderer.ts +3 -0
  52. package/src/ArcRenderer/ArcRendering.test.tsx +45 -0
  53. package/src/ArcRenderer/ArcRendering.tsx +131 -0
  54. package/src/ArcRenderer/__snapshots__/ArcRendering.test.tsx.snap +40 -0
  55. package/src/ArcRenderer/configSchema.ts +60 -0
  56. package/src/ArcRenderer/index.ts +17 -0
  57. package/src/LinearArcDisplay/configSchema.ts +29 -0
  58. package/src/LinearArcDisplay/index.ts +21 -0
  59. package/src/LinearArcDisplay/model.ts +40 -0
  60. package/src/declare.d.ts +1 -0
  61. package/src/index.ts +20 -0
@@ -0,0 +1,40 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`no features 1`] = `
4
+ <svg
5
+ class="ArcRendering"
6
+ height="500"
7
+ style="outline: none; position: relative;"
8
+ width="100"
9
+ />
10
+ `;
11
+
12
+ exports[`one feature 1`] = `
13
+ <svg
14
+ class="ArcRendering"
15
+ height="500"
16
+ style="outline: none; position: relative;"
17
+ width="333.3333333333333"
18
+ >
19
+ <g>
20
+ <path
21
+ d="M 0.3 0 C 0.3 100, 1 100, 1 0"
22
+ fill="transparent"
23
+ id="1-one"
24
+ pointer-events="stroke"
25
+ stroke-width="1"
26
+ />
27
+ <g />
28
+ <text
29
+ style="stroke: white; stroke-width: 0.6em;"
30
+ x="0.6499999999999999"
31
+ y="78"
32
+ />
33
+ <text
34
+ style="stroke: black;"
35
+ x="0.6499999999999999"
36
+ y="78"
37
+ />
38
+ </g>
39
+ </svg>
40
+ `;
@@ -0,0 +1,60 @@
1
+ import { ConfigurationSchema } from '@jbrowse/core/configuration'
2
+
3
+ /**
4
+ * #config ArcRenderer
5
+ */
6
+ function x() {} // eslint-disable-line @typescript-eslint/no-unused-vars
7
+
8
+ const ArcRenderer = ConfigurationSchema(
9
+ 'ArcRenderer',
10
+ {
11
+ /**
12
+ * #slot
13
+ */
14
+ color: {
15
+ type: 'color',
16
+ description: 'the color of the arcs',
17
+ defaultValue: 'darkblue',
18
+ contextVariable: ['feature'],
19
+ },
20
+ /**
21
+ * #slot
22
+ */
23
+ thickness: {
24
+ type: 'number',
25
+ description: 'the thickness of the arcs',
26
+ defaultValue: `jexl:logThickness(feature,'score')`,
27
+ contextVariable: ['feature'],
28
+ },
29
+ /**
30
+ * #slot
31
+ */
32
+ label: {
33
+ type: 'string',
34
+ description: 'the label to appear at the apex of the arcs',
35
+ defaultValue: `jexl:get(feature,'score')`,
36
+ contextVariable: ['feature'],
37
+ },
38
+ /**
39
+ * #slot
40
+ */
41
+ height: {
42
+ type: 'number',
43
+ description: 'the height of the arcs',
44
+ defaultValue: `jexl:log10(get(feature,'end')-get(feature,'start'))*50`,
45
+ contextVariable: ['feature'],
46
+ },
47
+ /**
48
+ * #slot
49
+ */
50
+ caption: {
51
+ type: 'string',
52
+ description:
53
+ 'the caption to appear when hovering over any point on the arcs',
54
+ defaultValue: `jexl:get(feature,'name')`,
55
+ contextVariable: ['feature'],
56
+ },
57
+ },
58
+ { explicitlyTyped: true },
59
+ )
60
+ export default ArcRenderer
@@ -0,0 +1,17 @@
1
+ import PluginManager from '@jbrowse/core/PluginManager'
2
+
3
+ import ReactComponent from './ArcRendering'
4
+ import configSchema from './configSchema'
5
+ import ArcRenderer from './ArcRenderer'
6
+
7
+ export default (pluginManager: PluginManager) => {
8
+ pluginManager.addRendererType(
9
+ () =>
10
+ new ArcRenderer({
11
+ name: 'ArcRenderer',
12
+ ReactComponent,
13
+ configSchema,
14
+ pluginManager,
15
+ }),
16
+ )
17
+ }
@@ -0,0 +1,29 @@
1
+ import PluginManager from '@jbrowse/core/PluginManager'
2
+ import { types } from 'mobx-state-tree'
3
+ import { ConfigurationSchema } from '@jbrowse/core/configuration'
4
+ import { baseLinearDisplayConfigSchema } from '@jbrowse/plugin-linear-genome-view'
5
+
6
+ /**
7
+ * #config LinearArcDisplay
8
+ */
9
+ export function configSchemaFactory(pluginManager: PluginManager) {
10
+ return ConfigurationSchema(
11
+ 'LinearArcDisplay',
12
+ {
13
+ /**
14
+ * #slot
15
+ */
16
+ renderer: types.optional(
17
+ pluginManager.pluggableConfigSchemaType('renderer'),
18
+ { type: 'ArcRenderer' },
19
+ ),
20
+ },
21
+ {
22
+ /**
23
+ * #baseConfiguration
24
+ */
25
+ baseConfiguration: baseLinearDisplayConfigSchema,
26
+ explicitlyTyped: true,
27
+ },
28
+ )
29
+ }
@@ -0,0 +1,21 @@
1
+ import PluginManager from '@jbrowse/core/PluginManager'
2
+ import { DisplayType } from '@jbrowse/core/pluggableElementTypes'
3
+ import { BaseLinearDisplayComponent } from '@jbrowse/plugin-linear-genome-view'
4
+
5
+ import { configSchemaFactory } from './configSchema'
6
+ import { stateModelFactory } from './model'
7
+
8
+ export default (pluginManager: PluginManager) => {
9
+ pluginManager.addDisplayType(() => {
10
+ const configSchema = configSchemaFactory(pluginManager)
11
+ return new DisplayType({
12
+ name: 'LinearArcDisplay',
13
+ displayName: 'Arc display',
14
+ configSchema,
15
+ stateModel: stateModelFactory(configSchema),
16
+ trackType: 'FeatureTrack',
17
+ viewType: 'LinearGenomeView',
18
+ ReactComponent: BaseLinearDisplayComponent,
19
+ })
20
+ })
21
+ }
@@ -0,0 +1,40 @@
1
+ import {
2
+ AnyConfigurationSchemaType,
3
+ ConfigurationReference,
4
+ } from '@jbrowse/core/configuration'
5
+ import { types } from 'mobx-state-tree'
6
+ import { BaseLinearDisplay } from '@jbrowse/plugin-linear-genome-view'
7
+
8
+ export function stateModelFactory(configSchema: AnyConfigurationSchemaType) {
9
+ return types
10
+ .compose(
11
+ 'LinearArcDisplay',
12
+ BaseLinearDisplay,
13
+ types.model({
14
+ type: types.literal('LinearArcDisplay'),
15
+ configuration: ConfigurationReference(configSchema),
16
+ }),
17
+ )
18
+
19
+ .views(self => {
20
+ const { renderProps: superRenderProps } = self
21
+ return {
22
+ get blockType() {
23
+ return 'staticBlocks'
24
+ },
25
+ get renderDelay() {
26
+ return 500
27
+ },
28
+ renderProps() {
29
+ return {
30
+ ...superRenderProps(),
31
+ rpcDriverName: self.rpcDriverName,
32
+ config: self.configuration.renderer,
33
+ }
34
+ },
35
+ get rendererTypeName() {
36
+ return self.configuration.renderer.type
37
+ },
38
+ }
39
+ })
40
+ }
@@ -0,0 +1 @@
1
+ declare module '*.json'
package/src/index.ts ADDED
@@ -0,0 +1,20 @@
1
+ import Plugin from '@jbrowse/core/Plugin'
2
+ import PluginManager from '@jbrowse/core/PluginManager'
3
+ import LinearArcDisplayF from './LinearArcDisplay'
4
+ import ArcRendererF from './ArcRenderer'
5
+ import { Feature } from '@jbrowse/core/util'
6
+
7
+ export default class ArcPlugin extends Plugin {
8
+ name = 'ArcRenderer'
9
+ install(pluginManager: PluginManager) {
10
+ ArcRendererF(pluginManager)
11
+ LinearArcDisplayF(pluginManager)
12
+
13
+ pluginManager.jexl.addFunction(
14
+ 'logThickness',
15
+ (feature: Feature, attributeName: string) => {
16
+ return Math.log(feature.get(attributeName) + 1)
17
+ },
18
+ )
19
+ }
20
+ }