@jbrowse/plugin-alignments 2.16.1 → 2.17.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 (215) hide show
  1. package/dist/AlignmentsFeatureDetail/AlignmentsFeatureDetail.js +1 -2
  2. package/dist/AlignmentsFeatureDetail/getSAFeatures.js +2 -2
  3. package/dist/AlignmentsFeatureDetail/stateModelFactory.d.ts +1 -1
  4. package/dist/BamAdapter/BamAdapter.d.ts +3 -2
  5. package/dist/BamAdapter/BamAdapter.js +34 -11
  6. package/dist/BamAdapter/BamSlightlyLazyFeature.d.ts +3 -17
  7. package/dist/BamAdapter/BamSlightlyLazyFeature.js +42 -72
  8. package/dist/CramAdapter/CramAdapter.d.ts +4 -3
  9. package/dist/CramAdapter/CramAdapter.js +24 -7
  10. package/dist/CramAdapter/CramSlightlyLazyFeature.d.ts +21 -27
  11. package/dist/CramAdapter/CramSlightlyLazyFeature.js +74 -73
  12. package/dist/CramAdapter/util.d.ts +1 -10
  13. package/dist/LinearAlignmentsDisplay/components/AlignmentsDisplay.d.ts +1 -1
  14. package/dist/LinearAlignmentsDisplay/index.js +2 -2
  15. package/dist/LinearAlignmentsDisplay/{models/model.d.ts → model.d.ts} +6 -3
  16. package/dist/LinearAlignmentsDisplay/{models/model.js → model.js} +11 -7
  17. package/dist/LinearPileupDisplay/SharedLinearPileupDisplayMixin.d.ts +6 -27
  18. package/dist/LinearPileupDisplay/SharedLinearPileupDisplayMixin.js +43 -21
  19. package/dist/LinearPileupDisplay/components/ColorByTagDialog.d.ts +5 -4
  20. package/dist/LinearPileupDisplay/components/ColorByTagDialog.js +3 -1
  21. package/dist/LinearPileupDisplay/components/GroupByDialog.js +8 -6
  22. package/dist/LinearPileupDisplay/components/SortByTagDialog.js +6 -4
  23. package/dist/LinearPileupDisplay/model.d.ts +40 -40
  24. package/dist/LinearPileupDisplay/model.js +118 -41
  25. package/dist/LinearReadArcsDisplay/components/ReactComponent.js +1 -1
  26. package/dist/LinearReadArcsDisplay/model.d.ts +22 -21
  27. package/dist/LinearReadArcsDisplay/model.js +13 -14
  28. package/dist/LinearReadCloudDisplay/components/ReactComponent.js +1 -1
  29. package/dist/LinearReadCloudDisplay/model.d.ts +14 -22
  30. package/dist/LinearReadCloudDisplay/model.js +12 -13
  31. package/dist/LinearSNPCoverageDisplay/components/Tooltip.js +49 -19
  32. package/dist/LinearSNPCoverageDisplay/index.js +3 -2
  33. package/dist/LinearSNPCoverageDisplay/{models/model.d.ts → model.d.ts} +3 -13
  34. package/dist/LinearSNPCoverageDisplay/{models/model.js → model.js} +71 -45
  35. package/dist/MismatchParser/cigarToMismatches.d.ts +3 -0
  36. package/dist/MismatchParser/cigarToMismatches.js +94 -0
  37. package/dist/MismatchParser/getNextRefPos.d.ts +4 -0
  38. package/dist/MismatchParser/getNextRefPos.js +40 -0
  39. package/dist/MismatchParser/index.d.ts +4 -29
  40. package/dist/MismatchParser/index.js +10 -327
  41. package/dist/MismatchParser/mdToMismatches.d.ts +3 -0
  42. package/dist/MismatchParser/mdToMismatches.js +80 -0
  43. package/dist/ModificationParser/index.d.ts +19 -0
  44. package/dist/ModificationParser/index.js +144 -0
  45. package/dist/PileupRPC/methods/GetGlobalValueForTag.js +1 -2
  46. package/dist/PileupRPC/methods/GetReducedFeatures.d.ts +1 -1
  47. package/dist/PileupRPC/methods/GetReducedFeatures.js +19 -16
  48. package/dist/PileupRPC/methods/GetVisibleModifications.d.ts +2 -1
  49. package/dist/PileupRPC/methods/GetVisibleModifications.js +9 -6
  50. package/dist/PileupRenderer/PileupLayoutSession.d.ts +8 -7
  51. package/dist/PileupRenderer/PileupRenderer.d.ts +6 -14
  52. package/dist/PileupRenderer/PileupRenderer.js +7 -5
  53. package/dist/PileupRenderer/renderAlignment.js +17 -4
  54. package/dist/PileupRenderer/renderAlignmentShape.js +102 -21
  55. package/dist/PileupRenderer/renderMethylation.d.ts +2 -1
  56. package/dist/PileupRenderer/renderMethylation.js +17 -9
  57. package/dist/PileupRenderer/renderMismatches.js +19 -19
  58. package/dist/PileupRenderer/renderModifications.d.ts +3 -2
  59. package/dist/PileupRenderer/renderModifications.js +31 -34
  60. package/dist/PileupRenderer/renderPerBaseLettering.d.ts +2 -1
  61. package/dist/PileupRenderer/renderPerBaseLettering.js +1 -3
  62. package/dist/PileupRenderer/renderPerBaseQuality.d.ts +2 -1
  63. package/dist/PileupRenderer/renderPerBaseQuality.js +1 -3
  64. package/dist/PileupRenderer/renderSoftClipping.js +6 -6
  65. package/dist/PileupRenderer/sortUtil.d.ts +2 -7
  66. package/dist/PileupRenderer/sortUtil.js +13 -13
  67. package/dist/SNPCoverageAdapter/SNPCoverageAdapter.js +10 -5
  68. package/dist/SNPCoverageAdapter/generateCoverageBins.d.ts +13 -9
  69. package/dist/SNPCoverageAdapter/generateCoverageBins.js +269 -166
  70. package/dist/SNPCoverageRenderer/SNPCoverageRenderer.d.ts +2 -1
  71. package/dist/SNPCoverageRenderer/SNPCoverageRenderer.js +171 -54
  72. package/dist/shared/color.d.ts +0 -10
  73. package/dist/shared/color.js +1 -7
  74. package/{esm/shared → dist/shared/components}/BaseDisplayComponent.d.ts +2 -2
  75. package/{esm/shared → dist/shared/components}/FilterByTagDialog.d.ts +3 -3
  76. package/dist/shared/{FilterByTagDialog.js → components/FilterByTagDialog.js} +5 -1
  77. package/dist/shared/fetchChains.js +1 -2
  78. package/dist/shared/getMaximumModificationAtEachPosition.d.ts +8 -0
  79. package/dist/shared/getMaximumModificationAtEachPosition.js +42 -0
  80. package/dist/shared/getUniqueModifications.d.ts +14 -0
  81. package/dist/shared/getUniqueModifications.js +16 -0
  82. package/dist/shared/getUniqueTags.d.ts +15 -0
  83. package/dist/shared/getUniqueTags.js +18 -0
  84. package/dist/shared/types.d.ts +94 -0
  85. package/dist/shared/util.d.ts +8 -0
  86. package/dist/shared/util.js +26 -0
  87. package/dist/util.d.ts +6 -3
  88. package/dist/util.js +24 -29
  89. package/esm/AlignmentsFeatureDetail/AlignmentsFeatureDetail.js +1 -2
  90. package/esm/AlignmentsFeatureDetail/getSAFeatures.js +2 -2
  91. package/esm/AlignmentsFeatureDetail/stateModelFactory.d.ts +1 -1
  92. package/esm/BamAdapter/BamAdapter.d.ts +3 -2
  93. package/esm/BamAdapter/BamAdapter.js +31 -8
  94. package/esm/BamAdapter/BamSlightlyLazyFeature.d.ts +3 -17
  95. package/esm/BamAdapter/BamSlightlyLazyFeature.js +43 -73
  96. package/esm/CramAdapter/CramAdapter.d.ts +4 -3
  97. package/esm/CramAdapter/CramAdapter.js +22 -5
  98. package/esm/CramAdapter/CramSlightlyLazyFeature.d.ts +21 -27
  99. package/esm/CramAdapter/CramSlightlyLazyFeature.js +74 -73
  100. package/esm/CramAdapter/util.d.ts +1 -10
  101. package/esm/LinearAlignmentsDisplay/components/AlignmentsDisplay.d.ts +1 -1
  102. package/esm/LinearAlignmentsDisplay/index.js +2 -2
  103. package/esm/LinearAlignmentsDisplay/{models/model.d.ts → model.d.ts} +6 -3
  104. package/esm/LinearAlignmentsDisplay/{models/model.js → model.js} +11 -7
  105. package/esm/LinearPileupDisplay/SharedLinearPileupDisplayMixin.d.ts +6 -27
  106. package/esm/LinearPileupDisplay/SharedLinearPileupDisplayMixin.js +45 -23
  107. package/esm/LinearPileupDisplay/components/ColorByTagDialog.d.ts +5 -4
  108. package/esm/LinearPileupDisplay/components/ColorByTagDialog.js +3 -1
  109. package/esm/LinearPileupDisplay/components/GroupByDialog.js +8 -6
  110. package/esm/LinearPileupDisplay/components/SortByTagDialog.js +6 -4
  111. package/esm/LinearPileupDisplay/model.d.ts +40 -40
  112. package/esm/LinearPileupDisplay/model.js +119 -42
  113. package/esm/LinearReadArcsDisplay/components/ReactComponent.js +1 -1
  114. package/esm/LinearReadArcsDisplay/model.d.ts +22 -21
  115. package/esm/LinearReadArcsDisplay/model.js +14 -15
  116. package/esm/LinearReadCloudDisplay/components/ReactComponent.js +1 -1
  117. package/esm/LinearReadCloudDisplay/model.d.ts +14 -22
  118. package/esm/LinearReadCloudDisplay/model.js +13 -14
  119. package/esm/LinearSNPCoverageDisplay/components/Tooltip.js +49 -19
  120. package/esm/LinearSNPCoverageDisplay/index.js +3 -2
  121. package/esm/LinearSNPCoverageDisplay/{models/model.d.ts → model.d.ts} +3 -13
  122. package/esm/LinearSNPCoverageDisplay/{models/model.js → model.js} +72 -46
  123. package/esm/MismatchParser/cigarToMismatches.d.ts +3 -0
  124. package/esm/MismatchParser/cigarToMismatches.js +91 -0
  125. package/esm/MismatchParser/getNextRefPos.d.ts +4 -0
  126. package/esm/MismatchParser/getNextRefPos.js +37 -0
  127. package/esm/MismatchParser/index.d.ts +4 -29
  128. package/esm/MismatchParser/index.js +5 -317
  129. package/esm/MismatchParser/mdToMismatches.d.ts +3 -0
  130. package/esm/MismatchParser/mdToMismatches.js +77 -0
  131. package/esm/ModificationParser/index.d.ts +19 -0
  132. package/esm/ModificationParser/index.js +138 -0
  133. package/esm/PileupRPC/methods/GetGlobalValueForTag.js +1 -2
  134. package/esm/PileupRPC/methods/GetReducedFeatures.d.ts +1 -1
  135. package/esm/PileupRPC/methods/GetReducedFeatures.js +19 -16
  136. package/esm/PileupRPC/methods/GetVisibleModifications.d.ts +2 -1
  137. package/esm/PileupRPC/methods/GetVisibleModifications.js +9 -6
  138. package/esm/PileupRenderer/PileupLayoutSession.d.ts +8 -7
  139. package/esm/PileupRenderer/PileupRenderer.d.ts +6 -14
  140. package/esm/PileupRenderer/PileupRenderer.js +8 -6
  141. package/esm/PileupRenderer/renderAlignment.js +17 -4
  142. package/esm/PileupRenderer/renderAlignmentShape.js +102 -21
  143. package/esm/PileupRenderer/renderMethylation.d.ts +2 -1
  144. package/esm/PileupRenderer/renderMethylation.js +17 -9
  145. package/esm/PileupRenderer/renderMismatches.js +19 -19
  146. package/esm/PileupRenderer/renderModifications.d.ts +3 -2
  147. package/esm/PileupRenderer/renderModifications.js +30 -33
  148. package/esm/PileupRenderer/renderPerBaseLettering.d.ts +2 -1
  149. package/esm/PileupRenderer/renderPerBaseLettering.js +1 -3
  150. package/esm/PileupRenderer/renderPerBaseQuality.d.ts +2 -1
  151. package/esm/PileupRenderer/renderPerBaseQuality.js +1 -3
  152. package/esm/PileupRenderer/renderSoftClipping.js +6 -6
  153. package/esm/PileupRenderer/sortUtil.d.ts +2 -7
  154. package/esm/PileupRenderer/sortUtil.js +13 -13
  155. package/esm/SNPCoverageAdapter/SNPCoverageAdapter.js +10 -5
  156. package/esm/SNPCoverageAdapter/generateCoverageBins.d.ts +13 -9
  157. package/esm/SNPCoverageAdapter/generateCoverageBins.js +269 -166
  158. package/esm/SNPCoverageRenderer/SNPCoverageRenderer.d.ts +2 -1
  159. package/esm/SNPCoverageRenderer/SNPCoverageRenderer.js +171 -54
  160. package/esm/shared/color.d.ts +0 -10
  161. package/esm/shared/color.js +0 -6
  162. package/{dist/shared → esm/shared/components}/BaseDisplayComponent.d.ts +2 -2
  163. package/{dist/shared → esm/shared/components}/FilterByTagDialog.d.ts +3 -3
  164. package/esm/shared/{FilterByTagDialog.js → components/FilterByTagDialog.js} +5 -1
  165. package/esm/shared/fetchChains.js +1 -2
  166. package/esm/shared/getMaximumModificationAtEachPosition.d.ts +8 -0
  167. package/esm/shared/getMaximumModificationAtEachPosition.js +39 -0
  168. package/esm/shared/getUniqueModifications.d.ts +14 -0
  169. package/esm/shared/getUniqueModifications.js +13 -0
  170. package/esm/shared/getUniqueTags.d.ts +15 -0
  171. package/esm/shared/getUniqueTags.js +15 -0
  172. package/esm/shared/types.d.ts +94 -0
  173. package/esm/shared/util.d.ts +8 -0
  174. package/esm/shared/util.js +23 -0
  175. package/esm/util.d.ts +6 -3
  176. package/esm/util.js +22 -26
  177. package/package.json +4 -4
  178. package/dist/LinearPileupDisplay/components/ColorByModificationsDialog.d.ts +0 -15
  179. package/dist/LinearPileupDisplay/components/ColorByModificationsDialog.js +0 -41
  180. package/dist/LinearPileupDisplay/components/ModificationsTable.d.ts +0 -4
  181. package/dist/LinearPileupDisplay/components/ModificationsTable.js +0 -28
  182. package/dist/SNPCoverageAdapter/util.d.ts +0 -25
  183. package/dist/shared/index.d.ts +0 -49
  184. package/dist/shared/index.js +0 -41
  185. package/esm/LinearPileupDisplay/components/ColorByModificationsDialog.d.ts +0 -15
  186. package/esm/LinearPileupDisplay/components/ColorByModificationsDialog.js +0 -36
  187. package/esm/LinearPileupDisplay/components/ModificationsTable.d.ts +0 -4
  188. package/esm/LinearPileupDisplay/components/ModificationsTable.js +0 -22
  189. package/esm/SNPCoverageAdapter/util.d.ts +0 -25
  190. package/esm/shared/index.d.ts +0 -49
  191. package/esm/shared/index.js +0 -36
  192. /package/dist/LinearAlignmentsDisplay/{models/alignmentsModel.d.ts → alignmentsModel.d.ts} +0 -0
  193. /package/dist/LinearAlignmentsDisplay/{models/alignmentsModel.js → alignmentsModel.js} +0 -0
  194. /package/dist/LinearAlignmentsDisplay/{models/configSchema.d.ts → configSchema.d.ts} +0 -0
  195. /package/dist/LinearAlignmentsDisplay/{models/configSchema.js → configSchema.js} +0 -0
  196. /package/dist/LinearAlignmentsDisplay/{models/util.d.ts → util.d.ts} +0 -0
  197. /package/dist/LinearAlignmentsDisplay/{models/util.js → util.js} +0 -0
  198. /package/dist/LinearSNPCoverageDisplay/{models/configSchema.d.ts → configSchema.d.ts} +0 -0
  199. /package/dist/LinearSNPCoverageDisplay/{models/configSchema.js → configSchema.js} +0 -0
  200. /package/dist/shared/{BaseDisplayComponent.js → components/BaseDisplayComponent.js} +0 -0
  201. /package/dist/shared/{renderSvg.d.ts → renderSvgUtil.d.ts} +0 -0
  202. /package/dist/shared/{renderSvg.js → renderSvgUtil.js} +0 -0
  203. /package/dist/{SNPCoverageAdapter/util.js → shared/types.js} +0 -0
  204. /package/esm/LinearAlignmentsDisplay/{models/alignmentsModel.d.ts → alignmentsModel.d.ts} +0 -0
  205. /package/esm/LinearAlignmentsDisplay/{models/alignmentsModel.js → alignmentsModel.js} +0 -0
  206. /package/esm/LinearAlignmentsDisplay/{models/configSchema.d.ts → configSchema.d.ts} +0 -0
  207. /package/esm/LinearAlignmentsDisplay/{models/configSchema.js → configSchema.js} +0 -0
  208. /package/esm/LinearAlignmentsDisplay/{models/util.d.ts → util.d.ts} +0 -0
  209. /package/esm/LinearAlignmentsDisplay/{models/util.js → util.js} +0 -0
  210. /package/esm/LinearSNPCoverageDisplay/{models/configSchema.d.ts → configSchema.d.ts} +0 -0
  211. /package/esm/LinearSNPCoverageDisplay/{models/configSchema.js → configSchema.js} +0 -0
  212. /package/esm/shared/{BaseDisplayComponent.js → components/BaseDisplayComponent.js} +0 -0
  213. /package/esm/shared/{renderSvg.d.ts → renderSvgUtil.d.ts} +0 -0
  214. /package/esm/shared/{renderSvg.js → renderSvgUtil.js} +0 -0
  215. /package/esm/{SNPCoverageAdapter/util.js → shared/types.js} +0 -0
@@ -1,5 +1,6 @@
1
1
  import { Instance } from 'mobx-state-tree';
2
2
  import { AnyConfigurationSchemaType } from '@jbrowse/core/configuration';
3
+ import { ModificationType, ModificationTypeWithColor, SortedBy } from '../shared/types';
3
4
  /**
4
5
  * #stateModel LinearPileupDisplay
5
6
  * #category display
@@ -48,9 +49,7 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
48
49
  message: React.ReactNode;
49
50
  filled?: boolean;
50
51
  status?: string;
51
- reactElement? /**
52
- * #property
53
- */: React.ReactElement;
52
+ reactElement?: React.ReactElement;
54
53
  };
55
54
  }) => import("react").JSX.Element | undefined;
56
55
  renderProps: any;
@@ -61,9 +60,7 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
61
60
  setLoading(abortController: AbortController): void;
62
61
  setMessage(messageText: string): void;
63
62
  setRendered(props: {
64
- reactElement: React.ReactElement /**
65
- * #action
66
- */;
63
+ reactElement: React.ReactElement;
67
64
  features: Map<string, import("@jbrowse/core/util").Feature>;
68
65
  layout: any;
69
66
  maxHeightReached: boolean;
@@ -107,33 +104,15 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
107
104
  noSpacing: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<boolean>>;
108
105
  fadeLikelihood: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<boolean>>;
109
106
  trackMaxHeight: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<number>>;
110
- colorBy: import("mobx-state-tree").IMaybe<import("mobx-state-tree").IModelType<{
111
- type: import("mobx-state-tree").ISimpleType<string>;
112
- tag: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
113
- extra: import("mobx-state-tree").IType<any, any, any>;
114
- }, {}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
115
- filterBy: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IModelType<{
116
- flagInclude: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<number>, [undefined]>;
117
- flagExclude: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<number>, [undefined]>;
118
- readName: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
119
- tagFilter: import("mobx-state-tree").IMaybe<import("mobx-state-tree").IModelType<{
120
- tag: import("mobx-state-tree").ISimpleType<string>;
121
- value: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
122
- }, {}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
123
- }, {}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>, [undefined]>;
107
+ colorBy: import("mobx-state-tree").IType<import("../shared/types").ColorBy | undefined, import("../shared/types").ColorBy | undefined, import("../shared/types").ColorBy | undefined>;
108
+ filterBy: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IType<import("../shared/types").FilterBy, import("../shared/types").FilterBy, import("../shared/types").FilterBy>, [undefined]>;
124
109
  jexlFilters: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IArrayType<import("mobx-state-tree").ISimpleType<string>>, [undefined]>;
125
110
  } & {
126
111
  type: import("mobx-state-tree").ISimpleType<"LinearPileupDisplay">;
127
112
  configuration: AnyConfigurationSchemaType;
128
113
  showSoftClipping: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
129
114
  mismatchAlpha: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<boolean>>;
130
- sortedBy: import("mobx-state-tree").IMaybe<import("mobx-state-tree").IModelType<{
131
- type: import("mobx-state-tree").ISimpleType<string>;
132
- pos: import("mobx-state-tree").ISimpleType<number>;
133
- tag: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
134
- refName: import("mobx-state-tree").ISimpleType<string>;
135
- assemblyName: import("mobx-state-tree").ISimpleType<string>;
136
- }, {}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
115
+ sortedBy: import("mobx-state-tree").IType<SortedBy | undefined, SortedBy | undefined, SortedBy | undefined>;
137
116
  }, {
138
117
  rendererTypeName: string;
139
118
  error: unknown;
@@ -156,10 +135,10 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
156
135
  rendererTypeName: string;
157
136
  error: unknown;
158
137
  message: string | undefined;
159
- }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree" /**
138
+ }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
139
+ onHorizontalScroll? /**
160
140
  * #property
161
- */)._NotCustomized>>;
162
- onHorizontalScroll?: () => void;
141
+ */: () => void;
163
142
  blockState?: Record<string, any>;
164
143
  }>;
165
144
  readonly DisplayBlurb: React.FC<{
@@ -272,17 +251,13 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
272
251
  setMaxHeight(n?: number): void;
273
252
  setFeatureHeight(n?: number): void;
274
253
  setNoSpacing(flag?: boolean): void;
275
- setColorScheme(colorScheme: {
276
- type: string;
277
- tag?: string;
278
- extra?: import("../shared/color").ExtraColorBy;
279
- }): void;
254
+ setColorScheme(colorScheme: import("../shared/types").ColorBy): void;
280
255
  updateColorTagMap(uniqueTag: string[]): void;
281
256
  setFeatureUnderMouse(feat?: import("@jbrowse/core/util").Feature): void;
282
257
  selectFeature(feature: import("@jbrowse/core/util").Feature): void;
283
258
  copyFeatureToClipboard(feature: import("@jbrowse/core/util").Feature): void;
284
259
  setConfig(conf: import("@jbrowse/core/configuration").AnyConfigurationModel): void;
285
- setFilterBy(filter: import("../shared").IFilter): void;
260
+ setFilterBy(filter: import("../shared/types").FilterBy): void;
286
261
  setJexlFilters(filters: string[]): void;
287
262
  } & {
288
263
  readonly rendererConfig: {
@@ -342,9 +317,21 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
342
317
  } & {
343
318
  afterAttach(): void;
344
319
  } & {
320
+ /**
321
+ * #volatile
322
+ */
345
323
  sortReady: boolean;
324
+ /**
325
+ * #volatile
326
+ */
346
327
  currSortBpPerPx: number;
347
- modificationTagMap: import("mobx").ObservableMap<string, string>;
328
+ /**
329
+ * #volatile
330
+ */
331
+ visibleModifications: import("mobx").ObservableMap<string, ModificationTypeWithColor>;
332
+ /**
333
+ * #volatile
334
+ */
348
335
  modificationsReady: boolean;
349
336
  } & {
350
337
  /**
@@ -354,7 +341,7 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
354
341
  /**
355
342
  * #action
356
343
  */
357
- updateModificationColorMap(uniqueModifications: string[]): void;
344
+ updateVisibleModifications(uniqueModifications: ModificationType[]): void;
358
345
  /**
359
346
  * #action
360
347
  */
@@ -391,6 +378,10 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
391
378
  */
392
379
  reload(): void;
393
380
  } & {
381
+ /**
382
+ * #getter
383
+ */
384
+ readonly visibleModificationTypes: string[];
394
385
  /**
395
386
  * #getter
396
387
  */
@@ -451,8 +442,17 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
451
442
  readonly label: "Pair orientation";
452
443
  readonly onClick: () => void;
453
444
  }, {
454
- readonly label: "Modifications or methylation";
455
- readonly onClick: () => void;
445
+ readonly label: "Modifications";
446
+ readonly type: "subMenu";
447
+ readonly subMenu: ({
448
+ label: string;
449
+ onClick: () => void;
450
+ type?: undefined;
451
+ } | {
452
+ type: string;
453
+ label?: undefined;
454
+ onClick?: undefined;
455
+ })[];
456
456
  }, {
457
457
  readonly label: "Insert size";
458
458
  readonly onClick: () => void;
@@ -27,24 +27,23 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
29
  const react_1 = require("react");
30
+ const mobx_1 = require("mobx");
30
31
  const mobx_state_tree_1 = require("mobx-state-tree");
31
32
  const configuration_1 = require("@jbrowse/core/configuration");
32
33
  const tracks_1 = require("@jbrowse/core/util/tracks");
33
34
  const util_1 = require("@jbrowse/core/util");
34
- const shared_1 = require("../shared");
35
- const util_2 = require("../util");
36
35
  // icons
37
36
  const Visibility_1 = __importDefault(require("@mui/icons-material/Visibility"));
38
- const Sort_1 = __importDefault(require("@mui/icons-material/Sort"));
37
+ const SwapVert_1 = __importDefault(require("@mui/icons-material/SwapVert"));
39
38
  const Workspaces_1 = __importDefault(require("@mui/icons-material/Workspaces"));
40
39
  const ColorLens_1 = __importDefault(require("@mui/icons-material/ColorLens"));
41
40
  // locals
42
41
  const SharedLinearPileupDisplayMixin_1 = require("./SharedLinearPileupDisplayMixin");
43
- const mobx_1 = require("mobx");
42
+ const util_2 = require("../util");
43
+ const getUniqueModifications_1 = require("../shared/getUniqueModifications");
44
44
  // lazies
45
45
  const SortByTagDialog = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./components/SortByTagDialog'))));
46
46
  const GroupByDialog = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./components/GroupByDialog'))));
47
- const ModificationsDialog = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./components/ColorByModificationsDialog'))));
48
47
  /**
49
48
  * #stateModel LinearPileupDisplay
50
49
  * #category display
@@ -73,18 +72,24 @@ function stateModelFactory(configSchema) {
73
72
  /**
74
73
  * #property
75
74
  */
76
- sortedBy: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.model({
77
- type: mobx_state_tree_1.types.string,
78
- pos: mobx_state_tree_1.types.number,
79
- tag: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.string),
80
- refName: mobx_state_tree_1.types.string,
81
- assemblyName: mobx_state_tree_1.types.string,
82
- })),
75
+ sortedBy: mobx_state_tree_1.types.frozen(),
83
76
  }))
84
77
  .volatile(() => ({
78
+ /**
79
+ * #volatile
80
+ */
85
81
  sortReady: false,
82
+ /**
83
+ * #volatile
84
+ */
86
85
  currSortBpPerPx: 0,
87
- modificationTagMap: mobx_1.observable.map({}),
86
+ /**
87
+ * #volatile
88
+ */
89
+ visibleModifications: mobx_1.observable.map({}),
90
+ /**
91
+ * #volatile
92
+ */
88
93
  modificationsReady: false,
89
94
  }))
90
95
  .actions(self => ({
@@ -97,10 +102,13 @@ function stateModelFactory(configSchema) {
97
102
  /**
98
103
  * #action
99
104
  */
100
- updateModificationColorMap(uniqueModifications) {
105
+ updateVisibleModifications(uniqueModifications) {
101
106
  uniqueModifications.forEach(value => {
102
- if (!self.modificationTagMap.has(value)) {
103
- self.modificationTagMap.set(value, util_2.modificationColors[value] || (0, util_2.randomColor)(value));
107
+ if (!self.visibleModifications.has(value.type)) {
108
+ self.visibleModifications.set(value.type, {
109
+ ...value,
110
+ color: (0, util_2.getColorForModification)(value.type),
111
+ });
104
112
  }
105
113
  });
106
114
  },
@@ -180,6 +188,12 @@ function stateModelFactory(configSchema) {
180
188
  };
181
189
  })
182
190
  .views(self => ({
191
+ /**
192
+ * #getter
193
+ */
194
+ get visibleModificationTypes() {
195
+ return [...self.visibleModifications.keys()];
196
+ },
183
197
  /**
184
198
  * #getter
185
199
  */
@@ -224,13 +238,13 @@ function stateModelFactory(configSchema) {
224
238
  * #method
225
239
  */
226
240
  renderPropsPre() {
227
- const { sortedBy, showSoftClipping, modificationTagMap } = self;
241
+ const { sortedBy, showSoftClipping, visibleModifications } = self;
228
242
  const superProps = superRenderPropsPre();
229
243
  return {
230
244
  ...superProps,
231
245
  showSoftClip: showSoftClipping,
232
246
  sortedBy,
233
- modificationTagMap: Object.fromEntries(modificationTagMap.toJSON()),
247
+ visibleModifications: Object.fromEntries(visibleModifications.toJSON()),
234
248
  };
235
249
  },
236
250
  /**
@@ -252,7 +266,7 @@ function stateModelFactory(configSchema) {
252
266
  ...superTrackMenuItems(),
253
267
  {
254
268
  label: 'Sort by...',
255
- icon: Sort_1.default,
269
+ icon: SwapVert_1.default,
256
270
  disabled: self.showSoftClipping,
257
271
  subMenu: [
258
272
  ...['Start location', 'Read strand', 'Base pair'].map(option => ({
@@ -288,25 +302,88 @@ function stateModelFactory(configSchema) {
288
302
  {
289
303
  label: 'Pair orientation',
290
304
  onClick: () => {
291
- self.setColorScheme({ type: 'pairOrientation' });
305
+ self.setColorScheme({
306
+ type: 'pairOrientation',
307
+ });
292
308
  },
293
309
  },
294
310
  {
295
- label: 'Modifications or methylation',
296
- onClick: () => {
297
- (0, util_1.getSession)(self).queueDialog(doneCallback => [
298
- ModificationsDialog,
311
+ label: 'Modifications',
312
+ type: 'subMenu',
313
+ subMenu: self.modificationsReady
314
+ ? [
299
315
  {
300
- model: self,
301
- handleClose: doneCallback,
316
+ label: 'All modifications',
317
+ onClick: () => {
318
+ self.setColorScheme({
319
+ type: 'modifications',
320
+ });
321
+ },
302
322
  },
303
- ]);
304
- },
323
+ ...self.visibleModificationTypes.map(key => {
324
+ var _a;
325
+ return ({
326
+ label: `Show only ${((_a = util_2.modificationData[key]) === null || _a === void 0 ? void 0 : _a.name) || key}`,
327
+ onClick: () => {
328
+ self.setColorScheme({
329
+ type: 'modifications',
330
+ modifications: {
331
+ isolatedModification: key,
332
+ },
333
+ });
334
+ },
335
+ });
336
+ }),
337
+ { type: 'divider' },
338
+ {
339
+ label: 'All modifications (<50% prob colored blue)',
340
+ onClick: () => {
341
+ self.setColorScheme({
342
+ type: 'modifications',
343
+ modifications: {
344
+ twoColor: true,
345
+ },
346
+ });
347
+ },
348
+ },
349
+ ...self.visibleModificationTypes.map(key => {
350
+ var _a;
351
+ return ({
352
+ label: `Show only ${((_a = util_2.modificationData[key]) === null || _a === void 0 ? void 0 : _a.name) || key} (<50% prob colored blue)`,
353
+ onClick: () => {
354
+ self.setColorScheme({
355
+ type: 'modifications',
356
+ modifications: {
357
+ isolatedModification: key,
358
+ twoColor: true,
359
+ },
360
+ });
361
+ },
362
+ });
363
+ }),
364
+ { type: 'divider' },
365
+ {
366
+ label: 'All reference CpGs',
367
+ onClick: () => {
368
+ self.setColorScheme({
369
+ type: 'methylation',
370
+ });
371
+ },
372
+ },
373
+ ]
374
+ : [
375
+ {
376
+ label: 'Loading modifications...',
377
+ onClick: () => { },
378
+ },
379
+ ],
305
380
  },
306
381
  {
307
382
  label: 'Insert size',
308
383
  onClick: () => {
309
- self.setColorScheme({ type: 'insertSize' });
384
+ self.setColorScheme({
385
+ type: 'insertSize',
386
+ });
310
387
  },
311
388
  },
312
389
  ...superColorSchemeSubMenuItems(),
@@ -388,25 +465,25 @@ function stateModelFactory(configSchema) {
388
465
  ...self.renderPropsPre(),
389
466
  });
390
467
  }
391
- self.setCurrSortBpPerPx(bpPerPx);
392
- self.setSortReady(true);
468
+ if ((0, mobx_state_tree_1.isAlive)(self)) {
469
+ self.setCurrSortBpPerPx(bpPerPx);
470
+ self.setSortReady(true);
471
+ }
393
472
  }, { delay: 1000 });
394
473
  (0, util_2.createAutorun)(self, async () => {
395
474
  if (!self.autorunReady) {
396
475
  return;
397
476
  }
398
- const { parentTrack, colorBy } = self;
399
477
  const { staticBlocks } = (0, util_1.getContainingView)(self);
400
- if ((colorBy === null || colorBy === void 0 ? void 0 : colorBy.type) === 'modifications') {
401
- const adapter = (0, configuration_1.getConf)(parentTrack, ['adapter']);
402
- const vals = await (0, shared_1.getUniqueModificationValues)({
403
- self,
404
- adapterConfig: adapter,
405
- blocks: staticBlocks,
406
- });
407
- self.updateModificationColorMap(vals);
478
+ const vals = await (0, getUniqueModifications_1.getUniqueModifications)({
479
+ self,
480
+ adapterConfig: (0, configuration_1.getConf)(self.parentTrack, 'adapter'),
481
+ blocks: staticBlocks,
482
+ });
483
+ if ((0, mobx_state_tree_1.isAlive)(self)) {
484
+ self.updateVisibleModifications(vals);
485
+ self.setModificationsReady(true);
408
486
  }
409
- self.setModificationsReady(true);
410
487
  });
411
488
  },
412
489
  }));
@@ -29,7 +29,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
29
29
  const react_1 = __importStar(require("react"));
30
30
  const mobx_react_1 = require("mobx-react");
31
31
  const util_1 = require("@jbrowse/core/util");
32
- const BaseDisplayComponent_1 = __importDefault(require("../../shared/BaseDisplayComponent"));
32
+ const BaseDisplayComponent_1 = __importDefault(require("../../shared/components/BaseDisplayComponent"));
33
33
  const Arcs = (0, mobx_react_1.observer)(function ({ model, }) {
34
34
  const view = (0, util_1.getContainingView)(model);
35
35
  const width = Math.round(view.dynamicBlocks.totalWidthPx);
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { Instance } from 'mobx-state-tree';
3
3
  import { AnyConfigurationSchemaType } from '@jbrowse/core/configuration';
4
- import { IFilter } from '../shared';
4
+ import { ColorBy, FilterBy } from '../shared/types';
5
5
  import { ChainData } from '../shared/fetchChains';
6
6
  /**
7
7
  * #stateModel LinearReadArcsDisplay
@@ -24,22 +24,10 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
24
24
  } & {
25
25
  type: import("mobx-state-tree").ISimpleType<"LinearReadArcsDisplay">;
26
26
  configuration: AnyConfigurationSchemaType;
27
- filterBy: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IModelType<{
28
- flagInclude: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<number>, [undefined]>;
29
- flagExclude: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<number>, [undefined]>;
30
- readName: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
31
- tagFilter: import("mobx-state-tree").IMaybe<import("mobx-state-tree").IModelType<{
32
- tag: import("mobx-state-tree").ISimpleType<string>;
33
- value: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
34
- }, {}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
35
- }, {}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>, [undefined]>;
27
+ filterBy: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IType<FilterBy, FilterBy, FilterBy>, [undefined]>;
36
28
  lineWidth: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<number>>;
37
29
  jitter: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<number>>;
38
- colorBy: import("mobx-state-tree").IMaybe<import("mobx-state-tree").IModelType<{
39
- type: import("mobx-state-tree").ISimpleType<string>;
40
- tag: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
41
- extra: import("mobx-state-tree").IType<any, any, any>;
42
- }, {}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
30
+ colorBy: import("mobx-state-tree").IType<ColorBy | undefined, ColorBy | undefined, ColorBy | undefined>;
43
31
  drawInter: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
44
32
  drawLongRange: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
45
33
  }, {
@@ -66,9 +54,17 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
66
54
  message: string | undefined;
67
55
  }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
68
56
  onHorizontalScroll?: () => void;
69
- blockState?: Record<string, any>;
57
+ blockState? /**
58
+ * #property
59
+ */: Record<string, any>;
70
60
  }>;
71
- readonly DisplayBlurb: React.FC<{
61
+ readonly DisplayBlurb: React.
62
+ /**
63
+ * #property
64
+ */
65
+ FC /**
66
+ * #property
67
+ */<{
72
68
  model: {
73
69
  id: string;
74
70
  type: string;
@@ -79,7 +75,9 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
79
75
  message: string | undefined;
80
76
  } & import("mobx-state-tree").IStateTreeNode<import("mobx-state-tree").IModelType<{
81
77
  id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
82
- type: import("mobx-state-tree").ISimpleType<string>;
78
+ type: import("mobx-state-tree" /**
79
+ * #action
80
+ */).ISimpleType<string>;
83
81
  rpcDriverName: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
84
82
  }, {
85
83
  rendererTypeName: string;
@@ -91,7 +89,10 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
91
89
  readonly parentTrack: any;
92
90
  renderProps(): any;
93
91
  readonly rendererType: import("@jbrowse/core/pluggableElementTypes").RendererType;
94
- readonly DisplayMessageComponent: undefined | React.FC<any>;
92
+ readonly DisplayMessageComponent: undefined | React.FC /**
93
+ * #action
94
+ * thin, bold, extrabold, etc
95
+ */<any>;
95
96
  trackMenuItems(): import("@jbrowse/core/ui").MenuItem[];
96
97
  readonly viewMenuActions: import("@jbrowse/core/ui").MenuItem[];
97
98
  regionCannotBeRendered(): null;
@@ -165,7 +166,7 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
165
166
  /**
166
167
  * #action
167
168
  */
168
- setColorScheme(s: {
169
+ setColorScheme(colorBy: {
169
170
  type: string;
170
171
  }): void;
171
172
  /**
@@ -183,7 +184,7 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
183
184
  /**
184
185
  * #action
185
186
  */
186
- setFilterBy(filter: IFilter): void;
187
+ setFilterBy(filter: FilterBy): void;
187
188
  /**
188
189
  * #action
189
190
  * thin, bold, extrabold, etc
@@ -35,10 +35,9 @@ const plugin_linear_genome_view_1 = require("@jbrowse/plugin-linear-genome-view"
35
35
  // icons
36
36
  const Palette_1 = __importDefault(require("@mui/icons-material/Palette"));
37
37
  const ClearAll_1 = __importDefault(require("@mui/icons-material/ClearAll"));
38
- // locals
39
- const shared_1 = require("../shared");
40
- // async
41
- const FilterByTagDialog = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('../shared/FilterByTagDialog'))));
38
+ const util_2 = require("../shared/util");
39
+ // lazies
40
+ const FilterByTagDialog = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('../shared/components/FilterByTagDialog'))));
42
41
  /**
43
42
  * #stateModel LinearReadArcsDisplay
44
43
  * the arc display is a non-block-based track, so draws to a single canvas and
@@ -62,7 +61,7 @@ function stateModelFactory(configSchema) {
62
61
  /**
63
62
  * #property
64
63
  */
65
- filterBy: mobx_state_tree_1.types.optional(shared_1.FilterModel, {}),
64
+ filterBy: mobx_state_tree_1.types.optional(mobx_state_tree_1.types.frozen(), util_2.defaultFilterFlags),
66
65
  /**
67
66
  * #property
68
67
  */
@@ -74,11 +73,7 @@ function stateModelFactory(configSchema) {
74
73
  /**
75
74
  * #property
76
75
  */
77
- colorBy: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.model({
78
- type: mobx_state_tree_1.types.string,
79
- tag: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.string),
80
- extra: mobx_state_tree_1.types.frozen(),
81
- })),
76
+ colorBy: mobx_state_tree_1.types.frozen(),
82
77
  /**
83
78
  * #property
84
79
  */
@@ -131,8 +126,10 @@ function stateModelFactory(configSchema) {
131
126
  /**
132
127
  * #action
133
128
  */
134
- setColorScheme(s) {
135
- self.colorBy = (0, mobx_state_tree_1.cast)(s);
129
+ setColorScheme(colorBy) {
130
+ self.colorBy = {
131
+ ...colorBy,
132
+ };
136
133
  },
137
134
  /**
138
135
  * #action
@@ -156,7 +153,9 @@ function stateModelFactory(configSchema) {
156
153
  * #action
157
154
  */
158
155
  setFilterBy(filter) {
159
- self.filterBy = (0, mobx_state_tree_1.cast)(filter);
156
+ self.filterBy = {
157
+ ...filter,
158
+ };
160
159
  },
161
160
  /**
162
161
  * #action
@@ -332,7 +331,7 @@ function stateModelFactory(configSchema) {
332
331
  * #method
333
332
  */
334
333
  async renderSvg(opts) {
335
- const { renderSvg } = await Promise.resolve().then(() => __importStar(require('../shared/renderSvg')));
334
+ const { renderSvg } = await Promise.resolve().then(() => __importStar(require('../shared/renderSvgUtil')));
336
335
  const { drawFeats } = await Promise.resolve().then(() => __importStar(require('./drawFeats')));
337
336
  return renderSvg(self, opts, drawFeats);
338
337
  },
@@ -29,7 +29,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
29
29
  const react_1 = __importStar(require("react"));
30
30
  const mobx_react_1 = require("mobx-react");
31
31
  const util_1 = require("@jbrowse/core/util");
32
- const BaseDisplayComponent_1 = __importDefault(require("../../shared/BaseDisplayComponent"));
32
+ const BaseDisplayComponent_1 = __importDefault(require("../../shared/components/BaseDisplayComponent"));
33
33
  const Cloud = (0, mobx_react_1.observer)(function ({ model, }) {
34
34
  const view = (0, util_1.getContainingView)(model);
35
35
  const width = Math.round(view.dynamicBlocks.totalWidthPx);