@jbrowse/plugin-alignments 3.6.4 → 3.7.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 (243) hide show
  1. package/dist/AlignmentsFeatureDetail/stateModelFactory.d.ts +4 -4
  2. package/dist/CramAdapter/CramAdapter.js +1 -1
  3. package/dist/CramAdapter/CramSlightlyLazyFeature.js +8 -7
  4. package/dist/CramAdapter/{util.js → readFeaturesToCIGAR.js} +4 -5
  5. package/dist/CramAdapter/readFeaturesToMismatches.d.ts +5 -0
  6. package/dist/CramAdapter/readFeaturesToMismatches.js +106 -0
  7. package/dist/LinearAlignmentsDisplay/components/AlignmentsDisplay.js +6 -2
  8. package/dist/LinearAlignmentsDisplay/model.js +3 -2
  9. package/dist/LinearPileupDisplay/SharedLinearPileupDisplayMixin.d.ts +17 -2
  10. package/dist/LinearPileupDisplay/SharedLinearPileupDisplayMixin.js +2 -2
  11. package/dist/LinearPileupDisplay/components/GroupByDialog.js +4 -4
  12. package/dist/LinearPileupDisplay/components/SetModificationThresholdDialog.d.ts +10 -0
  13. package/dist/LinearPileupDisplay/components/SetModificationThresholdDialog.js +39 -0
  14. package/dist/LinearPileupDisplay/doAfterAttach.d.ts +1 -0
  15. package/dist/LinearPileupDisplay/doAfterAttach.js +3 -2
  16. package/dist/LinearPileupDisplay/model.d.ts +20 -2
  17. package/dist/LinearPileupDisplay/model.js +39 -4
  18. package/dist/LinearReadArcsDisplay/index.js +1 -1
  19. package/dist/LinearReadArcsDisplay/model.d.ts +23 -30
  20. package/dist/LinearReadArcsDisplay/model.js +5 -86
  21. package/dist/LinearReadCloudDisplay/components/ReactComponent.js +84 -2
  22. package/dist/LinearReadCloudDisplay/components/SetFeatureHeightDialog.d.ts +10 -0
  23. package/dist/LinearReadCloudDisplay/components/SetFeatureHeightDialog.js +26 -0
  24. package/dist/LinearReadCloudDisplay/configSchema.d.ts +7 -0
  25. package/dist/LinearReadCloudDisplay/configSchema.js +5 -0
  26. package/dist/LinearReadCloudDisplay/drawFeatsAbstract.js +13 -0
  27. package/dist/LinearReadCloudDisplay/drawFeatsCloud.js +24 -0
  28. package/dist/LinearReadCloudDisplay/drawFeatsCommon.d.ts +23 -0
  29. package/dist/LinearReadCloudDisplay/drawFeatsCommon.js +198 -0
  30. package/dist/LinearReadCloudDisplay/drawFeatsStack.d.ts +2 -0
  31. package/dist/LinearReadCloudDisplay/drawFeatsStack.js +36 -0
  32. package/dist/LinearReadCloudDisplay/index.js +1 -1
  33. package/dist/LinearReadCloudDisplay/model.d.ts +51 -31
  34. package/dist/LinearReadCloudDisplay/model.js +93 -78
  35. package/dist/LinearSNPCoverageDisplay/components/TooltipContents.d.ts +3 -0
  36. package/dist/LinearSNPCoverageDisplay/components/TooltipContents.js +148 -19
  37. package/dist/LinearSNPCoverageDisplay/model.js +14 -3
  38. package/dist/MismatchParser/cigarToMismatches.js +1 -0
  39. package/dist/ModificationParser/detectSimplexModifications.d.ts +4 -0
  40. package/dist/ModificationParser/detectSimplexModifications.js +20 -0
  41. package/dist/ModificationParser/getModPositions.d.ts +1 -1
  42. package/dist/ModificationParser/getModPositions.js +13 -16
  43. package/dist/PileupRPC/methods/GetVisibleModifications.d.ts +4 -1
  44. package/dist/PileupRPC/methods/GetVisibleModifications.js +16 -3
  45. package/dist/PileupRenderer/PileupRenderer.d.ts +6 -1
  46. package/dist/PileupRenderer/PileupRenderer.js +11 -14
  47. package/dist/PileupRenderer/components/PileupRendering.d.ts +8 -15
  48. package/dist/PileupRenderer/components/PileupRendering.js +18 -2
  49. package/dist/PileupRenderer/makeImageData.d.ts +5 -2
  50. package/dist/PileupRenderer/makeImageData.js +37 -6
  51. package/dist/PileupRenderer/{getAlignmentShapeColor.js → renderers/getAlignmentShapeColor.js} +2 -2
  52. package/{esm/PileupRenderer → dist/PileupRenderer/renderers}/renderAlignment.d.ts +6 -3
  53. package/dist/PileupRenderer/{renderAlignment.js → renderers/renderAlignment.js} +12 -3
  54. package/{esm/PileupRenderer → dist/PileupRenderer/renderers}/renderAlignmentShape.d.ts +2 -2
  55. package/dist/PileupRenderer/{renderAlignmentShape.js → renderers/renderAlignmentShape.js} +1 -1
  56. package/dist/PileupRenderer/{renderMethylation.d.ts → renderers/renderMethylation.d.ts} +2 -2
  57. package/dist/PileupRenderer/{renderMethylation.js → renderers/renderMethylation.js} +2 -2
  58. package/dist/PileupRenderer/{renderMismatches.d.ts → renderers/renderMismatches.d.ts} +6 -3
  59. package/dist/PileupRenderer/{renderMismatches.js → renderers/renderMismatches.js} +29 -5
  60. package/dist/PileupRenderer/{renderModifications.d.ts → renderers/renderModifications.d.ts} +6 -3
  61. package/dist/PileupRenderer/renderers/renderModifications.js +84 -0
  62. package/dist/PileupRenderer/{renderPerBaseLettering.d.ts → renderers/renderPerBaseLettering.d.ts} +1 -1
  63. package/dist/PileupRenderer/{renderPerBaseLettering.js → renderers/renderPerBaseLettering.js} +1 -1
  64. package/{esm/PileupRenderer → dist/PileupRenderer/renderers}/renderPerBaseQuality.d.ts +1 -1
  65. package/dist/PileupRenderer/{renderPerBaseQuality.js → renderers/renderPerBaseQuality.js} +1 -1
  66. package/dist/PileupRenderer/{renderSoftClipping.d.ts → renderers/renderSoftClipping.d.ts} +2 -2
  67. package/dist/PileupRenderer/{renderSoftClipping.js → renderers/renderSoftClipping.js} +2 -2
  68. package/dist/PileupRenderer/types.d.ts +6 -0
  69. package/dist/SNPCoverageAdapter/generateCoverageBins.js +5 -4
  70. package/dist/SNPCoverageAdapter/processModifications.js +14 -4
  71. package/dist/SNPCoverageRenderer/makeImage.js +44 -33
  72. package/dist/SNPCoverageRenderer/types.d.ts +1 -0
  73. package/dist/shared/LinearReadDisplayBaseMixin.d.ts +24 -0
  74. package/dist/shared/LinearReadDisplayBaseMixin.js +50 -0
  75. package/dist/shared/LinearReadDisplayWithLayoutMixin.d.ts +11 -0
  76. package/dist/shared/LinearReadDisplayWithLayoutMixin.js +24 -0
  77. package/dist/shared/LinearReadDisplayWithPairFiltersMixin.d.ts +11 -0
  78. package/dist/shared/LinearReadDisplayWithPairFiltersMixin.js +27 -0
  79. package/dist/shared/afterAttach.js +3 -2
  80. package/dist/shared/chainToSimpleFeature.d.ts +3 -0
  81. package/dist/shared/chainToSimpleFeature.js +43 -0
  82. package/dist/shared/chevron.d.ts +1 -0
  83. package/dist/shared/chevron.js +27 -0
  84. package/dist/shared/color.d.ts +43 -6
  85. package/dist/shared/color.js +101 -22
  86. package/dist/shared/components/BaseDisplayComponent.d.ts +12 -3
  87. package/dist/shared/components/BaseDisplayComponent.js +2 -2
  88. package/dist/shared/components/SetFeatureHeightDialog.d.ts +10 -0
  89. package/dist/shared/components/SetFeatureHeightDialog.js +26 -0
  90. package/dist/shared/components/SetMaxHeightDialog.d.ts +8 -0
  91. package/dist/shared/components/SetMaxHeightDialog.js +28 -0
  92. package/dist/shared/drawLongReadChains.d.ts +24 -0
  93. package/dist/shared/drawLongReadChains.js +104 -0
  94. package/dist/shared/drawPairChains.d.ts +24 -0
  95. package/dist/shared/drawPairChains.js +94 -0
  96. package/dist/shared/flatbushType.d.ts +12 -0
  97. package/dist/shared/flatbushType.js +2 -0
  98. package/dist/shared/getUniqueModifications.d.ts +4 -1
  99. package/dist/shared/menuItems.d.ts +23 -0
  100. package/dist/shared/menuItems.js +89 -0
  101. package/dist/shared/modificationData.d.ts +6 -0
  102. package/dist/shared/modificationData.js +22 -0
  103. package/dist/shared/primaryStrand.d.ts +3 -0
  104. package/dist/shared/primaryStrand.js +24 -0
  105. package/dist/shared/types.d.ts +2 -0
  106. package/dist/shared/util.d.ts +2 -0
  107. package/dist/shared/util.js +6 -1
  108. package/dist/util.d.ts +1 -6
  109. package/dist/util.js +4 -15
  110. package/esm/AlignmentsFeatureDetail/stateModelFactory.d.ts +4 -4
  111. package/esm/CramAdapter/CramAdapter.js +1 -1
  112. package/esm/CramAdapter/CramSlightlyLazyFeature.js +2 -1
  113. package/esm/CramAdapter/{util.js → readFeaturesToCIGAR.js} +4 -5
  114. package/esm/CramAdapter/readFeaturesToMismatches.d.ts +5 -0
  115. package/esm/CramAdapter/readFeaturesToMismatches.js +103 -0
  116. package/esm/LinearAlignmentsDisplay/components/AlignmentsDisplay.js +6 -2
  117. package/esm/LinearAlignmentsDisplay/model.js +3 -2
  118. package/esm/LinearPileupDisplay/SharedLinearPileupDisplayMixin.d.ts +17 -2
  119. package/esm/LinearPileupDisplay/SharedLinearPileupDisplayMixin.js +2 -2
  120. package/esm/LinearPileupDisplay/components/GroupByDialog.js +4 -4
  121. package/esm/LinearPileupDisplay/components/SetModificationThresholdDialog.d.ts +10 -0
  122. package/esm/LinearPileupDisplay/components/SetModificationThresholdDialog.js +37 -0
  123. package/esm/LinearPileupDisplay/doAfterAttach.d.ts +1 -0
  124. package/esm/LinearPileupDisplay/doAfterAttach.js +3 -2
  125. package/esm/LinearPileupDisplay/model.d.ts +20 -2
  126. package/esm/LinearPileupDisplay/model.js +39 -4
  127. package/esm/LinearReadArcsDisplay/index.js +1 -1
  128. package/esm/LinearReadArcsDisplay/model.d.ts +23 -30
  129. package/esm/LinearReadArcsDisplay/model.js +5 -83
  130. package/esm/LinearReadCloudDisplay/components/ReactComponent.js +86 -4
  131. package/esm/LinearReadCloudDisplay/components/SetFeatureHeightDialog.d.ts +10 -0
  132. package/esm/LinearReadCloudDisplay/components/SetFeatureHeightDialog.js +24 -0
  133. package/esm/LinearReadCloudDisplay/configSchema.d.ts +7 -0
  134. package/esm/LinearReadCloudDisplay/configSchema.js +5 -0
  135. package/esm/LinearReadCloudDisplay/drawFeatsAbstract.d.ts +2 -0
  136. package/esm/LinearReadCloudDisplay/drawFeatsAbstract.js +10 -0
  137. package/esm/LinearReadCloudDisplay/drawFeatsCloud.d.ts +2 -0
  138. package/esm/LinearReadCloudDisplay/drawFeatsCloud.js +21 -0
  139. package/esm/LinearReadCloudDisplay/drawFeatsCommon.d.ts +23 -0
  140. package/esm/LinearReadCloudDisplay/drawFeatsCommon.js +187 -0
  141. package/esm/LinearReadCloudDisplay/drawFeatsStack.d.ts +2 -0
  142. package/esm/LinearReadCloudDisplay/drawFeatsStack.js +30 -0
  143. package/esm/LinearReadCloudDisplay/index.js +1 -1
  144. package/esm/LinearReadCloudDisplay/model.d.ts +51 -31
  145. package/esm/LinearReadCloudDisplay/model.js +94 -76
  146. package/esm/LinearSNPCoverageDisplay/components/TooltipContents.d.ts +3 -0
  147. package/esm/LinearSNPCoverageDisplay/components/TooltipContents.js +149 -20
  148. package/esm/LinearSNPCoverageDisplay/model.js +14 -3
  149. package/esm/MismatchParser/cigarToMismatches.js +1 -0
  150. package/esm/ModificationParser/detectSimplexModifications.d.ts +4 -0
  151. package/esm/ModificationParser/detectSimplexModifications.js +17 -0
  152. package/esm/ModificationParser/getModPositions.d.ts +1 -1
  153. package/esm/ModificationParser/getModPositions.js +13 -16
  154. package/esm/PileupRPC/methods/GetVisibleModifications.d.ts +4 -1
  155. package/esm/PileupRPC/methods/GetVisibleModifications.js +16 -3
  156. package/esm/PileupRenderer/PileupRenderer.d.ts +6 -1
  157. package/esm/PileupRenderer/PileupRenderer.js +11 -14
  158. package/esm/PileupRenderer/components/PileupRendering.d.ts +8 -15
  159. package/esm/PileupRenderer/components/PileupRendering.js +16 -3
  160. package/esm/PileupRenderer/makeImageData.d.ts +5 -2
  161. package/esm/PileupRenderer/makeImageData.js +34 -6
  162. package/esm/PileupRenderer/{getAlignmentShapeColor.js → renderers/getAlignmentShapeColor.js} +2 -2
  163. package/{dist/PileupRenderer → esm/PileupRenderer/renderers}/renderAlignment.d.ts +6 -3
  164. package/esm/PileupRenderer/{renderAlignment.js → renderers/renderAlignment.js} +12 -3
  165. package/{dist/PileupRenderer → esm/PileupRenderer/renderers}/renderAlignmentShape.d.ts +2 -2
  166. package/esm/PileupRenderer/{renderAlignmentShape.js → renderers/renderAlignmentShape.js} +1 -1
  167. package/esm/PileupRenderer/{renderMethylation.d.ts → renderers/renderMethylation.d.ts} +2 -2
  168. package/esm/PileupRenderer/{renderMethylation.js → renderers/renderMethylation.js} +2 -2
  169. package/esm/PileupRenderer/{renderMismatches.d.ts → renderers/renderMismatches.d.ts} +6 -3
  170. package/esm/PileupRenderer/{renderMismatches.js → renderers/renderMismatches.js} +29 -5
  171. package/esm/PileupRenderer/{renderModifications.d.ts → renderers/renderModifications.d.ts} +6 -3
  172. package/esm/PileupRenderer/renderers/renderModifications.js +81 -0
  173. package/esm/PileupRenderer/{renderPerBaseLettering.d.ts → renderers/renderPerBaseLettering.d.ts} +1 -1
  174. package/esm/PileupRenderer/{renderPerBaseLettering.js → renderers/renderPerBaseLettering.js} +1 -1
  175. package/{dist/PileupRenderer → esm/PileupRenderer/renderers}/renderPerBaseQuality.d.ts +1 -1
  176. package/esm/PileupRenderer/{renderPerBaseQuality.js → renderers/renderPerBaseQuality.js} +1 -1
  177. package/esm/PileupRenderer/{renderSoftClipping.d.ts → renderers/renderSoftClipping.d.ts} +2 -2
  178. package/esm/PileupRenderer/{renderSoftClipping.js → renderers/renderSoftClipping.js} +2 -2
  179. package/esm/PileupRenderer/types.d.ts +6 -0
  180. package/esm/SNPCoverageAdapter/generateCoverageBins.js +5 -4
  181. package/esm/SNPCoverageAdapter/processModifications.js +14 -4
  182. package/esm/SNPCoverageRenderer/makeImage.js +44 -33
  183. package/esm/SNPCoverageRenderer/types.d.ts +1 -0
  184. package/esm/shared/LinearReadDisplayBaseMixin.d.ts +24 -0
  185. package/esm/shared/LinearReadDisplayBaseMixin.js +47 -0
  186. package/esm/shared/LinearReadDisplayWithLayoutMixin.d.ts +11 -0
  187. package/esm/shared/LinearReadDisplayWithLayoutMixin.js +21 -0
  188. package/esm/shared/LinearReadDisplayWithPairFiltersMixin.d.ts +11 -0
  189. package/esm/shared/LinearReadDisplayWithPairFiltersMixin.js +24 -0
  190. package/esm/shared/afterAttach.js +3 -2
  191. package/esm/shared/chainToSimpleFeature.d.ts +3 -0
  192. package/esm/shared/chainToSimpleFeature.js +40 -0
  193. package/esm/shared/chevron.d.ts +1 -0
  194. package/esm/shared/chevron.js +24 -0
  195. package/esm/shared/color.d.ts +43 -6
  196. package/esm/shared/color.js +96 -20
  197. package/esm/shared/components/BaseDisplayComponent.d.ts +12 -3
  198. package/esm/shared/components/BaseDisplayComponent.js +2 -2
  199. package/esm/shared/components/SetFeatureHeightDialog.d.ts +10 -0
  200. package/esm/shared/components/SetFeatureHeightDialog.js +24 -0
  201. package/esm/shared/components/SetMaxHeightDialog.d.ts +8 -0
  202. package/esm/shared/components/SetMaxHeightDialog.js +26 -0
  203. package/esm/shared/drawLongReadChains.d.ts +24 -0
  204. package/esm/shared/drawLongReadChains.js +101 -0
  205. package/esm/shared/drawPairChains.d.ts +24 -0
  206. package/esm/shared/drawPairChains.js +91 -0
  207. package/esm/shared/flatbushType.d.ts +12 -0
  208. package/esm/shared/flatbushType.js +1 -0
  209. package/esm/shared/getUniqueModifications.d.ts +4 -1
  210. package/esm/shared/menuItems.d.ts +23 -0
  211. package/esm/shared/menuItems.js +49 -0
  212. package/esm/shared/modificationData.d.ts +6 -0
  213. package/esm/shared/modificationData.js +18 -0
  214. package/esm/shared/primaryStrand.d.ts +3 -0
  215. package/esm/shared/primaryStrand.js +20 -0
  216. package/esm/shared/types.d.ts +2 -0
  217. package/esm/shared/util.d.ts +2 -0
  218. package/esm/shared/util.js +4 -0
  219. package/esm/util.d.ts +1 -6
  220. package/esm/util.js +2 -14
  221. package/package.json +6 -6
  222. package/dist/LinearReadCloudDisplay/drawFeats.js +0 -27
  223. package/dist/LinearReadCloudDisplay/drawLongReadChains.d.ts +0 -11
  224. package/dist/LinearReadCloudDisplay/drawLongReadChains.js +0 -64
  225. package/dist/LinearReadCloudDisplay/drawPairChains.d.ts +0 -17
  226. package/dist/LinearReadCloudDisplay/drawPairChains.js +0 -94
  227. package/dist/PileupRenderer/renderModifications.js +0 -44
  228. package/esm/LinearReadCloudDisplay/drawFeats.js +0 -24
  229. package/esm/LinearReadCloudDisplay/drawLongReadChains.d.ts +0 -11
  230. package/esm/LinearReadCloudDisplay/drawLongReadChains.js +0 -61
  231. package/esm/LinearReadCloudDisplay/drawPairChains.d.ts +0 -17
  232. package/esm/LinearReadCloudDisplay/drawPairChains.js +0 -90
  233. package/esm/PileupRenderer/renderModifications.js +0 -41
  234. /package/dist/CramAdapter/{util.d.ts → readFeaturesToCIGAR.d.ts} +0 -0
  235. /package/dist/LinearReadCloudDisplay/{drawFeats.d.ts → drawFeatsAbstract.d.ts} +0 -0
  236. /package/{esm/LinearReadCloudDisplay/drawFeats.d.ts → dist/LinearReadCloudDisplay/drawFeatsCloud.d.ts} +0 -0
  237. /package/dist/PileupRenderer/{getAlignmentShapeColor.d.ts → renderers/getAlignmentShapeColor.d.ts} +0 -0
  238. /package/dist/{LinearReadCloudDisplay/util.d.ts → shared/canvasUtils.d.ts} +0 -0
  239. /package/dist/{LinearReadCloudDisplay/util.js → shared/canvasUtils.js} +0 -0
  240. /package/esm/CramAdapter/{util.d.ts → readFeaturesToCIGAR.d.ts} +0 -0
  241. /package/esm/PileupRenderer/{getAlignmentShapeColor.d.ts → renderers/getAlignmentShapeColor.d.ts} +0 -0
  242. /package/esm/{LinearReadCloudDisplay/util.d.ts → shared/canvasUtils.d.ts} +0 -0
  243. /package/esm/{LinearReadCloudDisplay/util.js → shared/canvasUtils.js} +0 -0
@@ -1,6 +1,4 @@
1
1
  import type React from 'react';
2
- import type { ChainData } from '../shared/fetchChains';
3
- import type { ColorBy, FilterBy } from '../shared/types';
4
2
  import type { AnyConfigurationSchemaType } from '@jbrowse/core/configuration';
5
3
  import type { Instance } from 'mobx-state-tree';
6
4
  declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): import("mobx-state-tree").IModelType<{
@@ -12,13 +10,14 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
12
10
  } & {
13
11
  userBpPerPxLimit: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<number>>;
14
12
  userByteSizeLimit: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<number>>;
13
+ } & {
14
+ filterBySetting: import("mobx-state-tree").IType<import("../shared/types").FilterBy | undefined, import("../shared/types").FilterBy | undefined, import("../shared/types").FilterBy | undefined>;
15
+ colorBySetting: import("mobx-state-tree").IType<import("../shared/types").ColorBy | undefined, import("../shared/types").ColorBy | undefined, import("../shared/types").ColorBy | undefined>;
15
16
  } & {
16
17
  type: import("mobx-state-tree").ISimpleType<"LinearReadArcsDisplay">;
17
18
  configuration: AnyConfigurationSchemaType;
18
19
  lineWidth: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<number>>;
19
20
  jitter: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<number>>;
20
- colorBySetting: import("mobx-state-tree").IType<ColorBy | undefined, ColorBy | undefined, ColorBy | undefined>;
21
- filterBySetting: import("mobx-state-tree").IType<FilterBy | undefined, FilterBy | undefined, FilterBy | undefined>;
22
21
  drawInter: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
23
22
  drawLongRange: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
24
23
  }, {
@@ -115,43 +114,51 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
115
114
  regionCannotBeRendered(_region: import("@jbrowse/core/util").Region): import("react/jsx-runtime").JSX.Element | null;
116
115
  } & {
117
116
  loading: boolean;
118
- chainData: ChainData | undefined;
117
+ chainData: import("../shared/fetchChains").ChainData | undefined;
119
118
  lastDrawnOffsetPx: number | undefined;
120
119
  lastDrawnBpPerPx: number;
121
120
  ref: HTMLCanvasElement | null;
122
- } & {
123
- readonly colorBy: any;
124
- readonly filterBy: any;
125
121
  } & {
126
122
  setLastDrawnOffsetPx(n: number): void;
127
123
  setLastDrawnBpPerPx(n: number): void;
128
124
  setLoading(f: boolean): void;
129
- reload(): void;
130
125
  setRef(ref: HTMLCanvasElement | null): void;
131
126
  setColorScheme(colorBy: {
132
127
  type: string;
133
128
  }): void;
134
- setChainData(args: ChainData): void;
129
+ setChainData(args: import("../shared/fetchChains").ChainData): void;
130
+ setFilterBy(filter: import("../shared/types").FilterBy): void;
131
+ } & {
132
+ readonly drawn: boolean;
133
+ } & {
134
+ readonly colorBy: any;
135
+ readonly filterBy: any;
136
+ } & {
137
+ reload(): void;
135
138
  setDrawInter(f: boolean): void;
136
139
  setDrawLongRange(f: boolean): void;
137
- setFilterBy(filter: FilterBy): void;
138
140
  setLineWidth(n: number): void;
139
141
  setJitter(n: number): void;
140
142
  } & {
141
- readonly drawn: boolean;
142
143
  readonly lineWidthSetting: any;
143
144
  readonly jitterVal: number;
144
145
  } & {
145
146
  renderProps(): any;
146
147
  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 | {
148
+ label: string;
149
+ icon: import("@mui/material/OverridableComponent").OverridableComponent<import("@mui/material").SvgIconTypeMap<{}, "svg">> & {
150
+ muiName: string;
151
+ };
152
+ subMenu: {
153
+ label: string;
154
+ onClick: () => void;
155
+ }[];
156
+ } | {
147
157
  label: string;
148
158
  icon: import("@mui/material/OverridableComponent").OverridableComponent<import("@mui/material").SvgIconTypeMap<{}, "svg">> & {
149
159
  muiName: string;
150
160
  };
151
161
  onClick: () => void;
152
- subMenu?: undefined;
153
- type?: undefined;
154
- checked?: undefined;
155
162
  } | {
156
163
  label: string;
157
164
  subMenu: {
@@ -160,29 +167,15 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
160
167
  label: string;
161
168
  onClick: () => void;
162
169
  }[];
163
- icon?: undefined;
164
- onClick?: undefined;
165
170
  type?: undefined;
166
171
  checked?: undefined;
172
+ onClick?: undefined;
167
173
  } | {
168
174
  label: string;
169
175
  type: string;
170
176
  checked: boolean;
171
177
  onClick: () => void;
172
- icon?: undefined;
173
178
  subMenu?: undefined;
174
- } | {
175
- label: string;
176
- icon: import("@mui/material/OverridableComponent").OverridableComponent<import("@mui/material").SvgIconTypeMap<{}, "svg">> & {
177
- muiName: string;
178
- };
179
- subMenu: {
180
- label: string;
181
- onClick: () => void;
182
- }[];
183
- onClick?: undefined;
184
- type?: undefined;
185
- checked?: undefined;
186
179
  })[];
187
180
  } & {
188
181
  renderSvg(opts: {
@@ -32,37 +32,22 @@ var __importStar = (this && this.__importStar) || (function () {
32
32
  return result;
33
33
  };
34
34
  })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
35
  Object.defineProperty(exports, "__esModule", { value: true });
39
- const react_1 = require("react");
40
36
  const configuration_1 = require("@jbrowse/core/configuration");
41
37
  const pluggableElementTypes_1 = require("@jbrowse/core/pluggableElementTypes");
42
- const util_1 = require("@jbrowse/core/util");
43
38
  const plugin_linear_genome_view_1 = require("@jbrowse/plugin-linear-genome-view");
44
- const ClearAll_1 = __importDefault(require("@mui/icons-material/ClearAll"));
45
- const Palette_1 = __importDefault(require("@mui/icons-material/Palette"));
46
39
  const mobx_state_tree_1 = require("mobx-state-tree");
47
- const FilterByTagDialog = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('../shared/components/FilterByTagDialog'))));
40
+ const LinearReadDisplayBaseMixin_1 = require("../shared/LinearReadDisplayBaseMixin");
41
+ const menuItems_1 = require("../shared/menuItems");
48
42
  function stateModelFactory(configSchema) {
49
43
  return mobx_state_tree_1.types
50
- .compose('LinearReadArcsDisplay', pluggableElementTypes_1.BaseDisplay, (0, plugin_linear_genome_view_1.TrackHeightMixin)(), (0, plugin_linear_genome_view_1.FeatureDensityMixin)(), mobx_state_tree_1.types.model({
44
+ .compose('LinearReadArcsDisplay', pluggableElementTypes_1.BaseDisplay, (0, plugin_linear_genome_view_1.TrackHeightMixin)(), (0, plugin_linear_genome_view_1.FeatureDensityMixin)(), (0, LinearReadDisplayBaseMixin_1.LinearReadDisplayBaseMixin)(), mobx_state_tree_1.types.model({
51
45
  type: mobx_state_tree_1.types.literal('LinearReadArcsDisplay'),
52
46
  configuration: (0, configuration_1.ConfigurationReference)(configSchema),
53
47
  lineWidth: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.number),
54
48
  jitter: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.number),
55
- colorBySetting: mobx_state_tree_1.types.frozen(),
56
- filterBySetting: mobx_state_tree_1.types.frozen(),
57
49
  drawInter: true,
58
50
  drawLongRange: true,
59
- }))
60
- .volatile(() => ({
61
- loading: false,
62
- chainData: undefined,
63
- lastDrawnOffsetPx: undefined,
64
- lastDrawnBpPerPx: 0,
65
- ref: null,
66
51
  }))
67
52
  .views(self => ({
68
53
  get colorBy() {
@@ -75,40 +60,15 @@ function stateModelFactory(configSchema) {
75
60
  },
76
61
  }))
77
62
  .actions(self => ({
78
- setLastDrawnOffsetPx(n) {
79
- self.lastDrawnOffsetPx = n;
80
- },
81
- setLastDrawnBpPerPx(n) {
82
- self.lastDrawnBpPerPx = n;
83
- },
84
- setLoading(f) {
85
- self.loading = f;
86
- },
87
63
  reload() {
88
64
  self.error = undefined;
89
65
  },
90
- setRef(ref) {
91
- self.ref = ref;
92
- },
93
- setColorScheme(colorBy) {
94
- self.colorBySetting = {
95
- ...colorBy,
96
- };
97
- },
98
- setChainData(args) {
99
- self.chainData = args;
100
- },
101
66
  setDrawInter(f) {
102
67
  self.drawInter = f;
103
68
  },
104
69
  setDrawLongRange(f) {
105
70
  self.drawLongRange = f;
106
71
  },
107
- setFilterBy(filter) {
108
- self.filterBySetting = {
109
- ...filter,
110
- };
111
- },
112
72
  setLineWidth(n) {
113
73
  self.lineWidth = n;
114
74
  },
@@ -117,9 +77,6 @@ function stateModelFactory(configSchema) {
117
77
  },
118
78
  }))
119
79
  .views(self => ({
120
- get drawn() {
121
- return self.lastDrawnOffsetPx !== undefined;
122
- },
123
80
  get lineWidthSetting() {
124
81
  var _a;
125
82
  return (_a = self.lineWidth) !== null && _a !== void 0 ? _a : (0, configuration_1.getConf)(self, 'lineWidth');
@@ -141,16 +98,7 @@ function stateModelFactory(configSchema) {
141
98
  trackMenuItems() {
142
99
  return [
143
100
  ...superTrackMenuItems(),
144
- {
145
- label: 'Filter by',
146
- icon: ClearAll_1.default,
147
- onClick: () => {
148
- (0, util_1.getSession)(self).queueDialog(handleClose => [
149
- FilterByTagDialog,
150
- { model: self, handleClose },
151
- ]);
152
- },
153
- },
101
+ (0, menuItems_1.getFilterByMenuItem)(self),
154
102
  {
155
103
  label: 'Line width',
156
104
  subMenu: [
@@ -219,36 +167,7 @@ function stateModelFactory(configSchema) {
219
167
  self.setDrawLongRange(!self.drawLongRange);
220
168
  },
221
169
  },
222
- {
223
- label: 'Color scheme',
224
- icon: Palette_1.default,
225
- subMenu: [
226
- {
227
- label: 'Insert size ± 3σ and orientation',
228
- onClick: () => {
229
- self.setColorScheme({ type: 'insertSizeAndOrientation' });
230
- },
231
- },
232
- {
233
- label: 'Insert size ± 3σ',
234
- onClick: () => {
235
- self.setColorScheme({ type: 'insertSize' });
236
- },
237
- },
238
- {
239
- label: 'Orientation',
240
- onClick: () => {
241
- self.setColorScheme({ type: 'orientation' });
242
- },
243
- },
244
- {
245
- label: 'Insert size gradient',
246
- onClick: () => {
247
- self.setColorScheme({ type: 'gradient' });
248
- },
249
- },
250
- ],
251
- },
170
+ (0, menuItems_1.getColorSchemeMenuItem)(self),
252
171
  ];
253
172
  },
254
173
  };
@@ -5,17 +5,99 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const jsx_runtime_1 = require("react/jsx-runtime");
7
7
  const react_1 = require("react");
8
+ const BaseTooltip_1 = __importDefault(require("@jbrowse/core/ui/BaseTooltip"));
8
9
  const util_1 = require("@jbrowse/core/util");
10
+ const flatbush_1 = __importDefault(require("@jbrowse/core/util/flatbush"));
9
11
  const mobx_react_1 = require("mobx-react");
10
12
  const BaseDisplayComponent_1 = __importDefault(require("../../shared/components/BaseDisplayComponent"));
11
13
  const Cloud = (0, mobx_react_1.observer)(function ({ model, }) {
12
14
  const view = (0, util_1.getContainingView)(model);
13
15
  const width = Math.round(view.dynamicBlocks.totalWidthPx);
14
- const height = model.height;
16
+ const height = model.drawCloud ? model.height : model.layoutHeight;
17
+ const containerRef = (0, react_1.useRef)(null);
18
+ const [hoveredFeature, setHoveredFeature] = (0, react_1.useState)(null);
19
+ const [hoveredFeatureData, setHoveredFeatureData] = (0, react_1.useState)(null);
20
+ const [mousePosition, setMousePosition] = (0, react_1.useState)(null);
21
+ const flatbushIndex = (0, react_1.useMemo)(() => {
22
+ return model.featureLayout ? flatbush_1.default.from(model.featureLayout.data) : null;
23
+ }, [model.featureLayout]);
15
24
  const cb = (0, react_1.useCallback)((ref) => {
16
25
  model.setRef(ref);
17
26
  }, [model, width, height]);
18
- return ((0, jsx_runtime_1.jsx)("canvas", { "data-testid": "cloud-canvas", ref: cb, style: { width, height, position: 'absolute' }, width: width * 2, height: height * 2 }));
27
+ const mouseoverCb = (0, react_1.useCallback)((ref) => {
28
+ model.setMouseoverRef(ref);
29
+ }, [model, width, height]);
30
+ const onMouseMove = (0, react_1.useCallback)((event) => {
31
+ if (!containerRef.current || !flatbushIndex) {
32
+ setHoveredFeature(null);
33
+ setHoveredFeatureData(null);
34
+ setMousePosition(null);
35
+ return;
36
+ }
37
+ const rect = containerRef.current.getBoundingClientRect();
38
+ const offsetX = event.clientX - rect.left;
39
+ const offsetY = event.clientY - rect.top;
40
+ setMousePosition({ x: event.clientX, y: event.clientY });
41
+ const results = flatbushIndex.search(offsetX, offsetY, offsetX + 1, offsetY + 1);
42
+ if (results.length > 0) {
43
+ const featureIndex = results[0];
44
+ const feature = model.featuresForFlatbush[featureIndex];
45
+ if (feature) {
46
+ setHoveredFeature({
47
+ x: feature.chainMinX,
48
+ y: feature.y1,
49
+ width: feature.chainMaxX - feature.chainMinX,
50
+ height: feature.y2 - feature.y1,
51
+ });
52
+ setHoveredFeatureData(feature.data);
53
+ }
54
+ else {
55
+ setHoveredFeature(null);
56
+ setHoveredFeatureData(null);
57
+ }
58
+ }
59
+ else {
60
+ setHoveredFeature(null);
61
+ setHoveredFeatureData(null);
62
+ }
63
+ }, [flatbushIndex, model.featuresForFlatbush]);
64
+ const onMouseLeave = (0, react_1.useCallback)(() => {
65
+ setHoveredFeature(null);
66
+ setHoveredFeatureData(null);
67
+ setMousePosition(null);
68
+ }, []);
69
+ const onClick = (0, react_1.useCallback)((event) => {
70
+ if (!containerRef.current || !flatbushIndex) {
71
+ return;
72
+ }
73
+ const rect = containerRef.current.getBoundingClientRect();
74
+ const offsetX = event.clientX - rect.left;
75
+ const offsetY = event.clientY - rect.top;
76
+ const results = flatbushIndex.search(offsetX, offsetY, offsetX + 1, offsetY + 1);
77
+ if (results.length > 0) {
78
+ const featureIndex = results[0];
79
+ const feature = model.featuresForFlatbush[featureIndex];
80
+ if (feature) {
81
+ model.selectFeature(feature.chain);
82
+ }
83
+ }
84
+ }, [flatbushIndex, model]);
85
+ return ((0, jsx_runtime_1.jsxs)("div", { ref: containerRef, style: { position: 'relative', width, height }, onMouseMove: onMouseMove, onMouseLeave: onMouseLeave, onClick: onClick, children: [(0, jsx_runtime_1.jsx)("canvas", { "data-testid": model.drawCloud ? 'cloud-canvas' : 'stack-canvas', ref: cb, style: { width, height, position: 'absolute', left: 0, top: 0 }, width: width * 2, height: height * 2 }), (0, jsx_runtime_1.jsx)("canvas", { "data-testid": "cloud-mouseover-canvas", ref: mouseoverCb, style: {
86
+ width,
87
+ height,
88
+ position: 'absolute',
89
+ left: 0,
90
+ top: 0,
91
+ pointerEvents: 'none',
92
+ }, width: width * 2, height: height * 2 }), hoveredFeature ? ((0, jsx_runtime_1.jsx)("div", { style: {
93
+ position: 'absolute',
94
+ left: hoveredFeature.x,
95
+ top: hoveredFeature.y,
96
+ width: hoveredFeature.width,
97
+ height: hoveredFeature.height,
98
+ backgroundColor: 'rgba(0, 0, 0, 0.2)',
99
+ pointerEvents: 'none',
100
+ } })) : null, hoveredFeatureData && mousePosition ? ((0, jsx_runtime_1.jsx)(BaseTooltip_1.default, { clientPoint: { x: mousePosition.x, y: mousePosition.y + 20 }, placement: "bottom-start", children: (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsx)("strong", { children: hoveredFeatureData.name }) }), (0, jsx_runtime_1.jsxs)("div", { children: [hoveredFeatureData.refName, ":", hoveredFeatureData.start.toLocaleString(), "-", hoveredFeatureData.end.toLocaleString()] }), hoveredFeatureData.tlen !== 0 ? ((0, jsx_runtime_1.jsxs)("div", { children: ["Template length: ", hoveredFeatureData.tlen] })) : null] }) })) : null] }));
19
101
  });
20
102
  const LinearReadCloudReactComponent = (0, mobx_react_1.observer)(function ({ model, }) {
21
103
  return ((0, jsx_runtime_1.jsx)(BaseDisplayComponent_1.default, { model: model, children: (0, jsx_runtime_1.jsx)(Cloud, { model: model }) }));
@@ -0,0 +1,10 @@
1
+ declare const SetFeatureHeightDialog: (props: {
2
+ model: {
3
+ setFeatureHeight: (arg?: number) => void;
4
+ setNoSpacing: (arg?: boolean) => void;
5
+ featureHeightSetting: number;
6
+ noSpacing?: boolean;
7
+ };
8
+ handleClose: () => void;
9
+ }) => import("react/jsx-runtime").JSX.Element;
10
+ export default SetFeatureHeightDialog;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const jsx_runtime_1 = require("react/jsx-runtime");
4
+ const react_1 = require("react");
5
+ const ui_1 = require("@jbrowse/core/ui");
6
+ const material_1 = require("@mui/material");
7
+ const mobx_react_1 = require("mobx-react");
8
+ const SetFeatureHeightDialog = (0, mobx_react_1.observer)(function (props) {
9
+ const { model, handleClose } = props;
10
+ const { featureHeightSetting, noSpacing: noSpacingSetting } = model;
11
+ const [height, setHeight] = (0, react_1.useState)(`${featureHeightSetting}`);
12
+ const [noSpacing, setNoSpacing] = (0, react_1.useState)(noSpacingSetting);
13
+ const ok = height !== '' && !Number.isNaN(+height);
14
+ return ((0, jsx_runtime_1.jsx)(ui_1.Dialog, { open: true, onClose: handleClose, title: "Set feature height", children: (0, jsx_runtime_1.jsxs)(material_1.DialogContent, { children: [(0, jsx_runtime_1.jsx)(material_1.Typography, { children: "Adjust the feature height and whether there is any spacing between features. Setting feature height to 1 and removing spacing makes the display very compact." }), (0, jsx_runtime_1.jsx)(material_1.TextField, { value: height, helperText: "Feature height", onChange: event => {
15
+ setHeight(event.target.value);
16
+ } }), (0, jsx_runtime_1.jsx)(material_1.FormControlLabel, { control: (0, jsx_runtime_1.jsx)(material_1.Checkbox, { checked: !!noSpacing, onChange: () => {
17
+ setNoSpacing(val => !val);
18
+ } }), label: "Remove spacing between features in y-direction?" }), (0, jsx_runtime_1.jsxs)(material_1.DialogActions, { children: [(0, jsx_runtime_1.jsx)(material_1.Button, { variant: "contained", color: "primary", type: "submit", autoFocus: true, disabled: !ok, onClick: () => {
19
+ model.setFeatureHeight(height !== '' && !Number.isNaN(+height) ? +height : undefined);
20
+ model.setNoSpacing(noSpacing);
21
+ handleClose();
22
+ }, children: "Submit" }), (0, jsx_runtime_1.jsx)(material_1.Button, { variant: "contained", color: "secondary", onClick: () => {
23
+ handleClose();
24
+ }, children: "Cancel" })] })] }) }));
25
+ });
26
+ exports.default = SetFeatureHeightDialog;
@@ -15,6 +15,13 @@ declare function configSchemaF(pluginManager: PluginManager): import("@jbrowse/c
15
15
  type: string;
16
16
  };
17
17
  };
18
+ filterBy: {
19
+ type: string;
20
+ defaultValue: {
21
+ flagInclude: number;
22
+ flagExclude: number;
23
+ };
24
+ };
18
25
  }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
19
26
  renderer: import("mobx-state-tree").IAnyModelType;
20
27
  }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const configuration_1 = require("@jbrowse/core/configuration");
4
4
  const plugin_linear_genome_view_1 = require("@jbrowse/plugin-linear-genome-view");
5
+ const util_1 = require("../shared/util");
5
6
  function configSchemaF(pluginManager) {
6
7
  return (0, configuration_1.ConfigurationSchema)('LinearReadCloudDisplay', {
7
8
  maxFeatureScreenDensity: {
@@ -17,6 +18,10 @@ function configSchemaF(pluginManager) {
17
18
  type: 'frozen',
18
19
  defaultValue: { type: 'insertSizeAndOrientation' },
19
20
  },
21
+ filterBy: {
22
+ type: 'frozen',
23
+ defaultValue: util_1.defaultFilterFlags,
24
+ },
20
25
  }, {
21
26
  baseConfiguration: (0, plugin_linear_genome_view_1.linearBasicDisplayConfigSchemaFactory)(pluginManager),
22
27
  explicitlyTyped: true,
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.drawFeats = drawFeats;
4
+ const drawFeatsCloud_1 = require("./drawFeatsCloud");
5
+ const drawFeatsStack_1 = require("./drawFeatsStack");
6
+ function drawFeats(self, ctx) {
7
+ if (self.drawCloud) {
8
+ (0, drawFeatsCloud_1.drawFeats)(self, ctx);
9
+ }
10
+ else {
11
+ (0, drawFeatsStack_1.drawFeats)(self, ctx);
12
+ }
13
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.drawFeats = drawFeats;
4
+ const util_1 = require("@jbrowse/core/util");
5
+ const drawFeatsCommon_1 = require("./drawFeatsCommon");
6
+ function calculateCloudYOffsets(computedChains, self, _view, _featureHeight) {
7
+ const distances = computedChains.map(c => c.distance).filter(d => d > 0);
8
+ if (distances.length === 0) {
9
+ return { chainYOffsets: new Map() };
10
+ }
11
+ const logOffset = 10;
12
+ const maxD = Math.log((0, util_1.max)(distances) + logOffset);
13
+ const minD = Math.log((0, util_1.min)(distances) + logOffset);
14
+ const scaler = (self.height - 20) / (maxD - minD || 1);
15
+ const chainYOffsets = new Map();
16
+ for (const { id, distance } of computedChains) {
17
+ const top = distance > 0 ? (Math.log(distance + logOffset) - minD) * scaler : 0;
18
+ chainYOffsets.set(id, top);
19
+ }
20
+ return { chainYOffsets };
21
+ }
22
+ function drawFeats(self, ctx) {
23
+ (0, drawFeatsCommon_1.drawFeatsCommon)(self, ctx, calculateCloudYOffsets);
24
+ }
@@ -0,0 +1,23 @@
1
+ import type { LinearReadCloudDisplayModel } from './model';
2
+ import type { ChainData, ReducedFeature } from '../shared/fetchChains';
3
+ import type { FlatbushEntry } from '../shared/flatbushType';
4
+ import type { Assembly } from '@jbrowse/core/assemblyManager/assembly';
5
+ import type { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view';
6
+ type LGV = LinearGenomeViewModel;
7
+ export interface ComputedChain {
8
+ distance: number;
9
+ minX: number;
10
+ maxX: number;
11
+ chain: ReducedFeature[];
12
+ id: string;
13
+ }
14
+ export declare function filterChains(chains: ReducedFeature[][], drawSingletons: boolean, drawProperPairs: boolean, type: string, chainData: ChainData): ReducedFeature[][];
15
+ export declare function computeChainBounds(chains: ReducedFeature[][], view: LGV, asm: Assembly): ComputedChain[];
16
+ export declare function sortComputedChains(computedChains: ComputedChain[]): void;
17
+ export declare function buildFlatbushIndex(featuresForFlatbush: FlatbushEntry[], self: LinearReadCloudDisplayModel): void;
18
+ export declare function addChainMouseoverRects(computedChains: ComputedChain[], chainYOffsets: Map<string, number>, featureHeight: number, view: LGV, featuresForFlatbush: FlatbushEntry[]): void;
19
+ export declare function drawFeatsCommon(self: LinearReadCloudDisplayModel, ctx: CanvasRenderingContext2D, calculateYOffsets: (computedChains: ComputedChain[], self: LinearReadCloudDisplayModel, view: LGV, featureHeight: number) => {
20
+ chainYOffsets: Map<string, number>;
21
+ layoutHeight?: number;
22
+ }): void;
23
+ export {};