@jbrowse/plugin-hic 3.7.0 → 4.0.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 (70) hide show
  1. package/esm/HicAdapter/HicAdapter.d.ts +9 -0
  2. package/esm/HicAdapter/HicAdapter.js +33 -2
  3. package/esm/HicAdapter/HicFilehandle.js +1 -0
  4. package/esm/HicAdapter/configSchema.d.ts +2 -2
  5. package/esm/HicAdapter/index.js +2 -2
  6. package/esm/HicRenderer/HicRenderer.d.ts +7 -36
  7. package/esm/HicRenderer/HicRenderer.js +19 -26
  8. package/esm/HicRenderer/components/HicColorLegend.d.ts +6 -0
  9. package/esm/HicRenderer/components/HicColorLegend.js +52 -0
  10. package/esm/HicRenderer/components/HicRendering.d.ts +1 -8
  11. package/esm/HicRenderer/components/HicRendering.js +3 -8
  12. package/esm/HicRenderer/configSchema.d.ts +2 -2
  13. package/esm/HicRenderer/index.js +4 -4
  14. package/esm/HicRenderer/makeImageData.d.ts +9 -2
  15. package/esm/HicRenderer/makeImageData.js +83 -58
  16. package/esm/HicRenderer/types.d.ts +7 -0
  17. package/esm/HicRenderer/types.js +1 -0
  18. package/esm/HicTrack/configSchema.d.ts +16 -11
  19. package/esm/HicTrack/index.js +1 -1
  20. package/esm/LinearHicDisplay/afterAttach.d.ts +2 -0
  21. package/esm/LinearHicDisplay/afterAttach.js +111 -0
  22. package/esm/LinearHicDisplay/components/BaseDisplayComponent.d.ts +2 -0
  23. package/esm/LinearHicDisplay/components/BaseDisplayComponent.js +1 -0
  24. package/esm/LinearHicDisplay/components/HicSVGColorLegend.d.ts +7 -0
  25. package/esm/LinearHicDisplay/components/HicSVGColorLegend.js +60 -0
  26. package/esm/LinearHicDisplay/components/ReactComponent.d.ts +5 -0
  27. package/esm/LinearHicDisplay/components/ReactComponent.js +83 -0
  28. package/esm/LinearHicDisplay/configSchema.d.ts +9 -4
  29. package/esm/LinearHicDisplay/configSchema.js +5 -0
  30. package/esm/LinearHicDisplay/index.js +4 -4
  31. package/esm/LinearHicDisplay/model.d.ts +180 -235
  32. package/esm/LinearHicDisplay/model.js +71 -34
  33. package/esm/LinearHicDisplay/renderSvg.d.ts +3 -0
  34. package/esm/LinearHicDisplay/renderSvg.js +32 -0
  35. package/esm/index.js +6 -9
  36. package/package.json +27 -32
  37. package/dist/GuessAdapter/index.d.ts +0 -2
  38. package/dist/GuessAdapter/index.js +0 -23
  39. package/dist/HicAdapter/HicAdapter.d.ts +0 -27
  40. package/dist/HicAdapter/HicAdapter.js +0 -63
  41. package/dist/HicAdapter/HicFilehandle.d.ts +0 -10
  42. package/dist/HicAdapter/HicFilehandle.js +0 -16
  43. package/dist/HicAdapter/configSchema.d.ts +0 -15
  44. package/dist/HicAdapter/configSchema.js +0 -32
  45. package/dist/HicAdapter/index.d.ts +0 -2
  46. package/dist/HicAdapter/index.js +0 -49
  47. package/dist/HicRenderer/HicRenderer.d.ts +0 -54
  48. package/dist/HicRenderer/HicRenderer.js +0 -87
  49. package/dist/HicRenderer/components/HicRendering.d.ts +0 -9
  50. package/dist/HicRenderer/components/HicRendering.js +0 -11
  51. package/dist/HicRenderer/configSchema.d.ts +0 -19
  52. package/dist/HicRenderer/configSchema.js +0 -23
  53. package/dist/HicRenderer/index.d.ts +0 -2
  54. package/dist/HicRenderer/index.js +0 -17
  55. package/dist/HicRenderer/makeImageData.d.ts +0 -11
  56. package/dist/HicRenderer/makeImageData.js +0 -81
  57. package/dist/HicRenderer/viridis.d.ts +0 -2
  58. package/dist/HicRenderer/viridis.js +0 -18
  59. package/dist/HicTrack/configSchema.d.ts +0 -80
  60. package/dist/HicTrack/configSchema.js +0 -9
  61. package/dist/HicTrack/index.d.ts +0 -2
  62. package/dist/HicTrack/index.js +0 -20
  63. package/dist/LinearHicDisplay/configSchema.d.ts +0 -35
  64. package/dist/LinearHicDisplay/configSchema.js +0 -14
  65. package/dist/LinearHicDisplay/index.d.ts +0 -2
  66. package/dist/LinearHicDisplay/index.js +0 -24
  67. package/dist/LinearHicDisplay/model.d.ts +0 -359
  68. package/dist/LinearHicDisplay/model.js +0 -205
  69. package/dist/index.d.ts +0 -7
  70. package/dist/index.js +0 -33
@@ -1,111 +1,49 @@
1
+ import type React from 'react';
2
+ import type { HicFlatbushItem } from '../HicRenderer/types.ts';
1
3
  import type { AnyConfigurationSchemaType } from '@jbrowse/core/configuration';
2
- export default function stateModelFactory(configSchema: AnyConfigurationSchemaType): import("mobx-state-tree").IModelType<{
3
- id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
4
- type: import("mobx-state-tree").ISimpleType<string>;
5
- rpcDriverName: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
4
+ import type { Instance } from '@jbrowse/mobx-state-tree';
5
+ import type { ExportSvgDisplayOptions, LegendItem } from '@jbrowse/plugin-linear-genome-view';
6
+ export default function stateModelFactory(configSchema: AnyConfigurationSchemaType): import("@jbrowse/mobx-state-tree").IModelType<{
7
+ id: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<string>, [undefined]>;
8
+ type: import("@jbrowse/mobx-state-tree").ISimpleType<string>;
9
+ rpcDriverName: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").ISimpleType<string>>;
6
10
  } & {
7
- heightPreConfig: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<number>>;
11
+ heightPreConfig: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").ISimpleType<number>>;
8
12
  } & {
9
- userBpPerPxLimit: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<number>>;
10
- userByteSizeLimit: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<number>>;
13
+ userBpPerPxLimit: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").ISimpleType<number>>;
14
+ userByteSizeLimit: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").ISimpleType<number>>;
11
15
  } & {
12
- blockState: import("mobx-state-tree").IMapType<import("mobx-state-tree").IModelType<{
13
- key: import("mobx-state-tree").ISimpleType<string>;
14
- region: import("mobx-state-tree").IType<import("@jbrowse/core/util").Region, import("@jbrowse/core/util").Region, import("@jbrowse/core/util").Region>;
15
- reloadFlag: import("mobx-state-tree").IType<number | undefined, number, number>;
16
- isLeftEndOfDisplayedRegion: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
17
- isRightEndOfDisplayedRegion: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
18
- }, {
19
- stopToken: string | undefined;
20
- filled: boolean;
21
- reactElement: React.ReactElement | undefined;
22
- features: Map<string, import("@jbrowse/core/util").Feature> | undefined;
23
- layout: any;
24
- status: string;
25
- error: unknown;
26
- message: string | undefined;
27
- maxHeightReached: boolean;
28
- ReactComponent: ({ model, }: {
29
- model: {
30
- error?: unknown;
31
- reload: () => void;
32
- message: React.ReactNode;
33
- filled?: boolean;
34
- status?: string;
35
- reactElement?: React.ReactElement;
36
- };
37
- }) => import("react/jsx-runtime").JSX.Element | undefined;
38
- renderProps: any;
39
- } & {
40
- doReload(): void;
41
- afterAttach(): void;
42
- setStatus(message: string): void;
43
- setLoading(newStopToken: string): void;
44
- setMessage(messageText: string): void;
45
- setRendered(props: import("@jbrowse/plugin-linear-genome-view/src/BaseLinearDisplay/models/serverSideRenderedBlock").RenderedProps | undefined): void;
46
- setError(error: unknown): void;
47
- reload(): void;
48
- beforeDestroy(): void;
49
- }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
50
- configuration: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
51
- maxFeatureScreenDensity: {
52
- type: string;
53
- description: string;
54
- defaultValue: number;
55
- };
56
- fetchSizeLimit: {
57
- type: string;
58
- defaultValue: number;
59
- description: string;
60
- };
61
- height: {
62
- type: string;
63
- defaultValue: number;
64
- description: string;
65
- };
66
- mouseover: {
67
- type: string;
68
- description: string;
69
- defaultValue: string;
70
- contextVariable: string[];
71
- };
72
- jexlFilters: {
73
- type: string;
74
- description: string;
75
- defaultValue: never[];
76
- };
77
- }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, "displayId">>;
78
- } & {
79
- type: import("mobx-state-tree").ISimpleType<"LinearHicDisplay">;
16
+ type: import("@jbrowse/mobx-state-tree").ISimpleType<"LinearHicDisplay">;
80
17
  configuration: AnyConfigurationSchemaType;
81
- resolution: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<number>, [undefined]>;
82
- useLogScale: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
83
- colorScheme: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
84
- activeNormalization: import("mobx-state-tree").IType<string | undefined, string, string>;
85
- mode: import("mobx-state-tree").IType<string | undefined, string, string>;
18
+ resolution: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<number>, [undefined]>;
19
+ useLogScale: import("@jbrowse/mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
20
+ colorScheme: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").ISimpleType<string>>;
21
+ activeNormalization: import("@jbrowse/mobx-state-tree").IType<string | undefined, string, string>;
22
+ mode: import("@jbrowse/mobx-state-tree").IType<string | undefined, string, string>;
23
+ showLegend: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>>;
86
24
  }, {
87
25
  rendererTypeName: string;
88
26
  error: unknown;
89
- message: string | undefined;
27
+ statusMessage: string | undefined;
90
28
  } & {
91
29
  readonly RenderingComponent: React.FC<{
92
30
  model: {
93
31
  id: string;
94
32
  type: string;
95
33
  rpcDriverName: string | undefined;
96
- } & import("mobx-state-tree/dist/internal").NonEmptyObject & {
34
+ } & import("@jbrowse/mobx-state-tree/dist/internal").NonEmptyObject & {
97
35
  rendererTypeName: string;
98
36
  error: unknown;
99
- message: string | undefined;
100
- } & import("mobx-state-tree").IStateTreeNode<import("mobx-state-tree").IModelType<{
101
- id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
102
- type: import("mobx-state-tree").ISimpleType<string>;
103
- rpcDriverName: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
37
+ statusMessage: string | undefined;
38
+ } & import("@jbrowse/mobx-state-tree").IStateTreeNode<import("@jbrowse/mobx-state-tree").IModelType<{
39
+ id: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<string>, [undefined]>;
40
+ type: import("@jbrowse/mobx-state-tree").ISimpleType<string>;
41
+ rpcDriverName: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").ISimpleType<string>>;
104
42
  }, {
105
43
  rendererTypeName: string;
106
44
  error: unknown;
107
- message: string | undefined;
108
- }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
45
+ statusMessage: string | undefined;
46
+ }, import("@jbrowse/mobx-state-tree")._NotCustomized, import("@jbrowse/mobx-state-tree")._NotCustomized>>;
109
47
  onHorizontalScroll?: () => void;
110
48
  blockState?: Record<string, any>;
111
49
  }>;
@@ -114,30 +52,142 @@ export default function stateModelFactory(configSchema: AnyConfigurationSchemaTy
114
52
  id: string;
115
53
  type: string;
116
54
  rpcDriverName: string | undefined;
117
- } & import("mobx-state-tree/dist/internal").NonEmptyObject & {
55
+ } & import("@jbrowse/mobx-state-tree/dist/internal").NonEmptyObject & {
118
56
  rendererTypeName: string;
119
57
  error: unknown;
120
- message: string | undefined;
121
- } & import("mobx-state-tree").IStateTreeNode<import("mobx-state-tree").IModelType<{
122
- id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
123
- type: import("mobx-state-tree").ISimpleType<string>;
124
- rpcDriverName: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
58
+ statusMessage: string | undefined;
59
+ } & import("@jbrowse/mobx-state-tree").IStateTreeNode<import("@jbrowse/mobx-state-tree").IModelType<{
60
+ id: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<string>, [undefined]>;
61
+ type: import("@jbrowse/mobx-state-tree").ISimpleType<string>;
62
+ rpcDriverName: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").ISimpleType<string>>;
125
63
  }, {
126
64
  rendererTypeName: string;
127
65
  error: unknown;
128
- message: string | undefined;
129
- }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
66
+ statusMessage: string | undefined;
67
+ }, import("@jbrowse/mobx-state-tree")._NotCustomized, import("@jbrowse/mobx-state-tree")._NotCustomized>>;
130
68
  }> | null;
131
69
  readonly adapterConfig: any;
132
- readonly parentTrack: any;
70
+ readonly parentTrack: import("@jbrowse/core/util").AbstractTrackModel;
71
+ readonly parentDisplay: any;
72
+ readonly effectiveRpcDriverName: any;
73
+ } & {
133
74
  renderProps(): any;
75
+ renderingProps(): {
76
+ displayModel: {
77
+ id: string;
78
+ type: string;
79
+ rpcDriverName: string | undefined;
80
+ } & import("@jbrowse/mobx-state-tree/dist/internal").NonEmptyObject & {
81
+ rendererTypeName: string;
82
+ error: unknown;
83
+ statusMessage: string | undefined;
84
+ } & {
85
+ readonly RenderingComponent: React.FC<{
86
+ model: {
87
+ id: string;
88
+ type: string;
89
+ rpcDriverName: string | undefined;
90
+ } & import("@jbrowse/mobx-state-tree/dist/internal").NonEmptyObject & {
91
+ rendererTypeName: string;
92
+ error: unknown;
93
+ statusMessage: string | undefined;
94
+ } & import("@jbrowse/mobx-state-tree").IStateTreeNode<import("@jbrowse/mobx-state-tree").IModelType<{
95
+ id: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<string>, [undefined]>;
96
+ type: import("@jbrowse/mobx-state-tree").ISimpleType<string>;
97
+ rpcDriverName: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").ISimpleType<string>>;
98
+ }, {
99
+ rendererTypeName: string;
100
+ error: unknown;
101
+ statusMessage: string | undefined;
102
+ }, import("@jbrowse/mobx-state-tree")._NotCustomized, import("@jbrowse/mobx-state-tree")._NotCustomized>>;
103
+ onHorizontalScroll?: () => void;
104
+ blockState?: Record<string, any>;
105
+ }>;
106
+ readonly DisplayBlurb: React.FC<{
107
+ model: {
108
+ id: string;
109
+ type: string;
110
+ rpcDriverName: string | undefined;
111
+ } & import("@jbrowse/mobx-state-tree/dist/internal").NonEmptyObject & {
112
+ rendererTypeName: string;
113
+ error: unknown;
114
+ statusMessage: string | undefined;
115
+ } & import("@jbrowse/mobx-state-tree").IStateTreeNode<import("@jbrowse/mobx-state-tree").IModelType<{
116
+ id: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<string>, [undefined]>;
117
+ type: import("@jbrowse/mobx-state-tree").ISimpleType<string>;
118
+ rpcDriverName: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").ISimpleType<string>>;
119
+ }, {
120
+ rendererTypeName: string;
121
+ error: unknown;
122
+ statusMessage: string | undefined;
123
+ }, import("@jbrowse/mobx-state-tree")._NotCustomized, import("@jbrowse/mobx-state-tree")._NotCustomized>>;
124
+ }> | null;
125
+ readonly adapterConfig: any;
126
+ readonly parentTrack: import("@jbrowse/core/util").AbstractTrackModel;
127
+ readonly parentDisplay: any;
128
+ readonly effectiveRpcDriverName: any;
129
+ } & import("@jbrowse/mobx-state-tree").IStateTreeNode<import("@jbrowse/mobx-state-tree").IModelType<{
130
+ id: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<string>, [undefined]>;
131
+ type: import("@jbrowse/mobx-state-tree").ISimpleType<string>;
132
+ rpcDriverName: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").ISimpleType<string>>;
133
+ }, {
134
+ rendererTypeName: string;
135
+ error: unknown;
136
+ statusMessage: string | undefined;
137
+ } & {
138
+ readonly RenderingComponent: React.FC<{
139
+ model: {
140
+ id: string;
141
+ type: string;
142
+ rpcDriverName: string | undefined;
143
+ } & import("@jbrowse/mobx-state-tree/dist/internal").NonEmptyObject & {
144
+ rendererTypeName: string;
145
+ error: unknown;
146
+ statusMessage: string | undefined;
147
+ } & import("@jbrowse/mobx-state-tree").IStateTreeNode<import("@jbrowse/mobx-state-tree").IModelType<{
148
+ id: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<string>, [undefined]>;
149
+ type: import("@jbrowse/mobx-state-tree").ISimpleType<string>;
150
+ rpcDriverName: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").ISimpleType<string>>;
151
+ }, {
152
+ rendererTypeName: string;
153
+ error: unknown;
154
+ statusMessage: string | undefined;
155
+ }, import("@jbrowse/mobx-state-tree")._NotCustomized, import("@jbrowse/mobx-state-tree")._NotCustomized>>;
156
+ onHorizontalScroll?: () => void;
157
+ blockState?: Record<string, any>;
158
+ }>;
159
+ readonly DisplayBlurb: React.FC<{
160
+ model: {
161
+ id: string;
162
+ type: string;
163
+ rpcDriverName: string | undefined;
164
+ } & import("@jbrowse/mobx-state-tree/dist/internal").NonEmptyObject & {
165
+ rendererTypeName: string;
166
+ error: unknown;
167
+ statusMessage: string | undefined;
168
+ } & import("@jbrowse/mobx-state-tree").IStateTreeNode<import("@jbrowse/mobx-state-tree").IModelType<{
169
+ id: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<string>, [undefined]>;
170
+ type: import("@jbrowse/mobx-state-tree").ISimpleType<string>;
171
+ rpcDriverName: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").ISimpleType<string>>;
172
+ }, {
173
+ rendererTypeName: string;
174
+ error: unknown;
175
+ statusMessage: string | undefined;
176
+ }, import("@jbrowse/mobx-state-tree")._NotCustomized, import("@jbrowse/mobx-state-tree")._NotCustomized>>;
177
+ }> | null;
178
+ readonly adapterConfig: any;
179
+ readonly parentTrack: import("@jbrowse/core/util").AbstractTrackModel;
180
+ readonly parentDisplay: any;
181
+ readonly effectiveRpcDriverName: any;
182
+ }, import("@jbrowse/mobx-state-tree")._NotCustomized, import("@jbrowse/mobx-state-tree")._NotCustomized>>;
183
+ };
134
184
  readonly rendererType: import("@jbrowse/core/pluggableElementTypes").RendererType;
135
185
  readonly DisplayMessageComponent: undefined | React.FC<any>;
136
186
  trackMenuItems(): import("@jbrowse/core/ui").MenuItem[];
137
187
  readonly viewMenuActions: import("@jbrowse/core/ui").MenuItem[];
138
188
  regionCannotBeRendered(): null;
139
189
  } & {
140
- setMessage(arg?: string): void;
190
+ setStatusMessage(arg?: string): void;
141
191
  setError(error?: unknown): void;
142
192
  setRpcDriverName(rpcDriverName: string): void;
143
193
  reload(): void;
@@ -172,77 +222,55 @@ export default function stateModelFactory(configSchema: AnyConfigurationSchemaTy
172
222
  readonly regionTooLarge: boolean;
173
223
  readonly regionTooLargeReason: string;
174
224
  } & {
175
- readonly statsReadyAndRegionNotTooLarge: boolean;
225
+ readonly featureDensityStatsReadyAndRegionNotTooLarge: boolean;
176
226
  regionCannotBeRenderedText(_region: import("@jbrowse/core/util").Region): "" | "Force load to see features";
177
227
  regionCannotBeRendered(_region: import("@jbrowse/core/util").Region): import("react/jsx-runtime").JSX.Element | null;
178
228
  } & {
179
- mouseoverExtraInformation: string | undefined;
180
- featureIdUnderMouse: undefined | string;
181
- contextMenuFeature: undefined | import("@jbrowse/core/util").Feature;
182
- } & {
183
- readonly DisplayMessageComponent: undefined | React.FC<any>;
184
- readonly blockType: "staticBlocks" | "dynamicBlocks";
185
- readonly blockDefinitions: import("@jbrowse/core/util/blockTypes").BlockSet;
186
- } & {
187
- readonly renderDelay: number;
188
- readonly TooltipComponent: import("@jbrowse/core/util").AnyReactComponentType;
189
- readonly selectedFeatureId: string | undefined;
190
- copyInfoToClipboard(feature: import("@jbrowse/core/util").Feature): void;
229
+ loading: boolean;
230
+ lastDrawnOffsetPx: number | undefined;
231
+ ref: HTMLCanvasElement | null;
232
+ renderingImageData: ImageBitmap | undefined;
233
+ renderingStopToken: import("@jbrowse/core/util").StopToken | undefined;
234
+ statusMessage: string | undefined;
191
235
  } & {
192
- readonly features: import("@jbrowse/core/util/compositeMap").default<string, import("@jbrowse/core/util").Feature>;
193
- readonly featureUnderMouse: import("@jbrowse/core/util").Feature | undefined;
194
- readonly layoutFeatures: import("@jbrowse/core/util/compositeMap").default<string, [number, number, number, number] | [number, number, number, number, {
195
- label?: string;
196
- description?: string;
197
- refName: string;
198
- }]>;
199
- getFeatureOverlapping(blockKey: string, x: number, y: number): string | undefined;
200
- getFeatureByID(blockKey: string, id: string): ([number, number, number, number] | [number, number, number, number, {
201
- label?: string;
202
- description?: string;
203
- refName: string;
204
- }]) | undefined;
205
- searchFeatureByID(id: string): ([number, number, number, number] | [number, number, number, number, {
206
- label?: string;
207
- description?: string;
208
- refName: string;
209
- }]) | undefined;
236
+ readonly drawn: boolean;
210
237
  } & {
211
- addBlock(key: string, block: import("@jbrowse/core/util/blockTypes").BaseBlock): void;
212
- deleteBlock(key: string): void;
213
- selectFeature(feature: import("@jbrowse/core/util").Feature): void;
214
- navToFeature(feature: import("@jbrowse/core/util").Feature): void;
215
- clearFeatureSelection(): void;
216
- setFeatureIdUnderMouse(feature?: string): void;
217
- setContextMenuFeature(feature?: import("@jbrowse/core/util").Feature): void;
218
- setMouseoverExtraInformation(extra?: string): void;
238
+ setLastDrawnOffsetPx(n: number): void;
239
+ setLoading(f: boolean): void;
240
+ setRef(ref: HTMLCanvasElement | null): void;
241
+ setRenderingImageData(imageData: ImageBitmap | undefined): void;
242
+ setRenderingStopToken(token?: import("@jbrowse/core/util").StopToken): void;
243
+ setStatusMessage(msg?: string): void;
219
244
  } & {
220
- reload(): Promise<void>;
221
- } & {
222
- trackMenuItems(): import("@jbrowse/core/ui").MenuItem[];
223
- contextMenuItems(): import("@jbrowse/core/ui").MenuItem[];
224
- renderProps(): any;
225
- } & {
226
- renderSvg(opts: import("@jbrowse/plugin-linear-genome-view").ExportSvgDisplayOptions): Promise<import("react/jsx-runtime").JSX.Element>;
227
- afterAttach(): void;
245
+ beforeDestroy(): void;
228
246
  } & {
229
247
  availableNormalizations: string[] | undefined;
248
+ flatbush: ArrayBufferLike | undefined;
249
+ flatbushItems: HicFlatbushItem[];
250
+ maxScore: number;
251
+ yScalar: number;
230
252
  } & {
231
- readonly blockType: string;
232
253
  readonly rendererTypeName: string;
254
+ readonly rendererConfig: any;
255
+ } & {
233
256
  renderProps(): any;
257
+ legendItems(): LegendItem[];
258
+ svgLegendWidth(): number;
234
259
  } & {
260
+ setFlatbushData(flatbush: ArrayBufferLike | undefined, items: HicFlatbushItem[], maxScore: number, yScalar: number): void;
261
+ reload(): void;
235
262
  setResolution(n: number): void;
236
263
  setUseLogScale(f: boolean): void;
237
264
  setColorScheme(f?: string): void;
238
265
  setActiveNormalization(f: string): void;
239
266
  setAvailableNormalizations(f: string[]): void;
240
267
  setMode(arg: string): void;
268
+ setShowLegend(arg: boolean): void;
241
269
  } & {
242
270
  trackMenuItems(): (import("@jbrowse/core/ui").MenuDivider | import("@jbrowse/core/ui").MenuSubHeader | import("@jbrowse/core/ui").NormalMenuItem | import("@jbrowse/core/ui").CheckboxMenuItem | import("@jbrowse/core/ui").RadioMenuItem | import("@jbrowse/core/ui").SubMenuItem | {
243
271
  label: string;
244
272
  type: string;
245
- checked: boolean;
273
+ checked: boolean | undefined;
246
274
  onClick: () => void;
247
275
  subMenu?: undefined;
248
276
  } | {
@@ -268,92 +296,9 @@ export default function stateModelFactory(configSchema: AnyConfigurationSchemaTy
268
296
  checked?: undefined;
269
297
  onClick?: undefined;
270
298
  })[];
299
+ renderSvg(opts: ExportSvgDisplayOptions): Promise<React.ReactNode>;
271
300
  } & {
272
301
  afterAttach(): void;
273
- }, {
274
- type: string;
275
- } & Partial<import("mobx-state-tree/dist/internal").ExtractCFromProps<{
276
- id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
277
- type: import("mobx-state-tree").ISimpleType<string>;
278
- rpcDriverName: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
279
- } & {
280
- heightPreConfig: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<number>>;
281
- } & {
282
- userBpPerPxLimit: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<number>>;
283
- userByteSizeLimit: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<number>>;
284
- } & {
285
- blockState: import("mobx-state-tree").IMapType<import("mobx-state-tree").IModelType<{
286
- key: import("mobx-state-tree").ISimpleType<string>;
287
- region: import("mobx-state-tree").IType<import("@jbrowse/core/util").Region, import("@jbrowse/core/util").Region, import("@jbrowse/core/util").Region>;
288
- reloadFlag: import("mobx-state-tree").IType<number | undefined, number, number>;
289
- isLeftEndOfDisplayedRegion: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
290
- isRightEndOfDisplayedRegion: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
291
- }, {
292
- stopToken: string | undefined;
293
- filled: boolean;
294
- reactElement: React.ReactElement | undefined;
295
- features: Map<string, import("@jbrowse/core/util").Feature> | undefined;
296
- layout: any;
297
- status: string;
298
- error: unknown;
299
- message: string | undefined;
300
- maxHeightReached: boolean;
301
- ReactComponent: ({ model, }: {
302
- model: {
303
- error?: unknown;
304
- reload: () => void;
305
- message: React.ReactNode;
306
- filled?: boolean;
307
- status?: string;
308
- reactElement?: React.ReactElement;
309
- };
310
- }) => import("react/jsx-runtime").JSX.Element | undefined;
311
- renderProps: any;
312
- } & {
313
- doReload(): void;
314
- afterAttach(): void;
315
- setStatus(message: string): void;
316
- setLoading(newStopToken: string): void;
317
- setMessage(messageText: string): void;
318
- setRendered(props: import("@jbrowse/plugin-linear-genome-view/src/BaseLinearDisplay/models/serverSideRenderedBlock").RenderedProps | undefined): void;
319
- setError(error: unknown): void;
320
- reload(): void;
321
- beforeDestroy(): void;
322
- }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
323
- configuration: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
324
- maxFeatureScreenDensity: {
325
- type: string;
326
- description: string;
327
- defaultValue: number;
328
- };
329
- fetchSizeLimit: {
330
- type: string;
331
- defaultValue: number;
332
- description: string;
333
- };
334
- height: {
335
- type: string;
336
- defaultValue: number;
337
- description: string;
338
- };
339
- mouseover: {
340
- type: string;
341
- description: string;
342
- defaultValue: string;
343
- contextVariable: string[];
344
- };
345
- jexlFilters: {
346
- type: string;
347
- description: string;
348
- defaultValue: never[];
349
- };
350
- }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, "displayId">>;
351
- }>> & import("mobx-state-tree/dist/internal").NonEmptyObject & import("mobx-state-tree")._NotCustomized, {
352
- type: string;
353
- id: string;
354
- configuration: import("mobx-state-tree").ModelSnapshotType<Record<string, any>>;
355
- rpcDriverName: string | undefined;
356
- heightPreConfig: number | undefined;
357
- userBpPerPxLimit: number | undefined;
358
- userByteSizeLimit: number | undefined;
359
- } & import("mobx-state-tree")._NotCustomized>;
302
+ }, import("@jbrowse/mobx-state-tree")._NotCustomized, import("@jbrowse/mobx-state-tree")._NotCustomized>;
303
+ export type LinearHicDisplayStateModel = ReturnType<typeof stateModelFactory>;
304
+ export type LinearHicDisplayModel = Instance<LinearHicDisplayStateModel>;
@@ -1,12 +1,11 @@
1
1
  import { ConfigurationReference, getConf } from '@jbrowse/core/configuration';
2
- import { getContainingTrack, getSession } from '@jbrowse/core/util';
3
- import { BaseLinearDisplay } from '@jbrowse/plugin-linear-genome-view';
4
- import { autorun } from 'mobx';
5
- import { addDisposer, getEnv, types } from 'mobx-state-tree';
2
+ import { BaseDisplay } from '@jbrowse/core/pluggableElementTypes';
3
+ import { types } from '@jbrowse/mobx-state-tree';
4
+ import { FeatureDensityMixin, NonBlockCanvasDisplayMixin, TrackHeightMixin, } from '@jbrowse/plugin-linear-genome-view';
6
5
  function x() { }
7
6
  export default function stateModelFactory(configSchema) {
8
7
  return types
9
- .compose('LinearHicDisplay', BaseLinearDisplay, types.model({
8
+ .compose('LinearHicDisplay', BaseDisplay, TrackHeightMixin(), FeatureDensityMixin(), NonBlockCanvasDisplayMixin(), types.model({
10
9
  type: types.literal('LinearHicDisplay'),
11
10
  configuration: ConfigurationReference(configSchema),
12
11
  resolution: types.optional(types.number, 1),
@@ -14,41 +13,70 @@ export default function stateModelFactory(configSchema) {
14
13
  colorScheme: types.maybe(types.string),
15
14
  activeNormalization: 'KR',
16
15
  mode: 'triangular',
16
+ showLegend: types.maybe(types.boolean),
17
17
  }))
18
18
  .volatile(() => ({
19
19
  availableNormalizations: undefined,
20
+ flatbush: undefined,
21
+ flatbushItems: [],
22
+ maxScore: 0,
23
+ yScalar: 1,
24
+ }))
25
+ .views(self => ({
26
+ get rendererTypeName() {
27
+ return 'HicRenderer';
28
+ },
29
+ get rendererConfig() {
30
+ return {
31
+ ...getConf(self, 'renderer'),
32
+ ...(self.colorScheme
33
+ ? { color: 'jexl:interpolate(count,scale)' }
34
+ : {}),
35
+ };
36
+ },
20
37
  }))
21
38
  .views(self => {
22
39
  const { renderProps: superRenderProps } = self;
23
40
  return {
24
- get blockType() {
25
- return 'dynamicBlocks';
26
- },
27
- get rendererTypeName() {
28
- return 'HicRenderer';
29
- },
30
41
  renderProps() {
31
- const config = self.rendererType.configSchema.create({
32
- ...getConf(self, 'renderer'),
33
- ...(self.colorScheme
34
- ? { color: 'jexl:interpolate(count,scale)' }
35
- : {}),
36
- }, getEnv(self));
37
42
  return {
38
43
  ...superRenderProps(),
39
- config,
40
- displayHeight: self.mode === 'adjust' ? self.height : undefined,
41
- normalization: self.activeNormalization,
42
- rpcDriverName: self.rpcDriverName,
43
- displayModel: self,
44
+ config: self.rendererConfig,
44
45
  resolution: self.resolution,
45
46
  useLogScale: self.useLogScale,
46
47
  colorScheme: self.colorScheme,
48
+ normalization: self.activeNormalization,
49
+ displayHeight: self.mode === 'adjust' ? self.height : undefined,
47
50
  };
48
51
  },
52
+ legendItems() {
53
+ const colorScheme = self.colorScheme ?? 'juicebox';
54
+ const displayMax = self.useLogScale
55
+ ? self.maxScore
56
+ : Math.round(self.maxScore / 20);
57
+ const minLabel = self.useLogScale ? '1' : '0';
58
+ const maxLabel = `${displayMax.toLocaleString()}${self.useLogScale ? ' (log)' : ''}`;
59
+ return [
60
+ {
61
+ label: `${minLabel} - ${maxLabel} (${colorScheme})`,
62
+ },
63
+ ];
64
+ },
65
+ svgLegendWidth() {
66
+ return self.showLegend && self.maxScore > 0 ? 140 : 0;
67
+ },
49
68
  };
50
69
  })
51
70
  .actions(self => ({
71
+ setFlatbushData(flatbush, items, maxScore, yScalar) {
72
+ self.flatbush = flatbush;
73
+ self.flatbushItems = items;
74
+ self.maxScore = maxScore;
75
+ self.yScalar = yScalar;
76
+ },
77
+ reload() {
78
+ self.error = undefined;
79
+ },
52
80
  setResolution(n) {
53
81
  self.resolution = n;
54
82
  },
@@ -67,6 +95,9 @@ export default function stateModelFactory(configSchema) {
67
95
  setMode(arg) {
68
96
  self.mode = arg;
69
97
  },
98
+ setShowLegend(arg) {
99
+ self.showLegend = arg;
100
+ },
70
101
  }))
71
102
  .views(self => {
72
103
  const { trackMenuItems: superTrackMenuItems } = self;
@@ -82,6 +113,14 @@ export default function stateModelFactory(configSchema) {
82
113
  self.setUseLogScale(!self.useLogScale);
83
114
  },
84
115
  },
116
+ {
117
+ label: 'Show legend',
118
+ type: 'checkbox',
119
+ checked: self.showLegend,
120
+ onClick: () => {
121
+ self.setShowLegend(!self.showLegend);
122
+ },
123
+ },
85
124
  {
86
125
  label: 'Rendering mode',
87
126
  type: 'subMenu',
@@ -176,27 +215,25 @@ export default function stateModelFactory(configSchema) {
176
215
  : []),
177
216
  ];
178
217
  },
218
+ async renderSvg(opts) {
219
+ const { renderSvg } = await import("./renderSvg.js");
220
+ return renderSvg(self, opts);
221
+ },
179
222
  };
180
223
  })
181
224
  .actions(self => ({
182
225
  afterAttach() {
183
- addDisposer(self, autorun(async () => {
226
+ ;
227
+ (async () => {
184
228
  try {
185
- const { rpcManager } = getSession(self);
186
- const track = getContainingTrack(self);
187
- const adapterConfig = getConf(track, 'adapter');
188
- const { norms } = (await rpcManager.call(getConf(track, 'trackId'), 'CoreGetInfo', {
189
- adapterConfig,
190
- }));
191
- if (norms) {
192
- self.setAvailableNormalizations(norms);
193
- }
229
+ const { doAfterAttach } = await import("./afterAttach.js");
230
+ doAfterAttach(self);
194
231
  }
195
232
  catch (e) {
196
233
  console.error(e);
197
- getSession(self).notifyError(`${e}`, e);
234
+ self.setError(e);
198
235
  }
199
- }));
236
+ })();
200
237
  },
201
238
  }));
202
239
  }