@jbrowse/plugin-linear-genome-view 2.4.2 → 2.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (326) hide show
  1. package/dist/BaseLinearDisplay/components/BaseLinearDisplay.d.ts +1 -1
  2. package/dist/BaseLinearDisplay/components/Block.d.ts +3 -3
  3. package/dist/BaseLinearDisplay/components/BlockMsg.d.ts +1 -1
  4. package/dist/BaseLinearDisplay/components/LinearBlocks.d.ts +3 -3
  5. package/dist/BaseLinearDisplay/components/TooLargeMessage.d.ts +5 -5
  6. package/dist/BaseLinearDisplay/components/TooLargeMessage.js +7 -3
  7. package/dist/BaseLinearDisplay/components/TooLargeMessage.js.map +1 -1
  8. package/dist/BaseLinearDisplay/components/Tooltip.d.ts +2 -2
  9. package/dist/BaseLinearDisplay/index.d.ts +5 -2
  10. package/dist/BaseLinearDisplay/index.js +7 -1
  11. package/dist/BaseLinearDisplay/index.js.map +1 -1
  12. package/dist/BaseLinearDisplay/models/BaseLinearDisplayModel.d.ts +107 -126
  13. package/dist/BaseLinearDisplay/models/BaseLinearDisplayModel.js +37 -352
  14. package/dist/BaseLinearDisplay/models/BaseLinearDisplayModel.js.map +1 -1
  15. package/dist/BaseLinearDisplay/models/FeatureDensityMixin.d.ts +99 -0
  16. package/dist/BaseLinearDisplay/models/FeatureDensityMixin.js +190 -0
  17. package/dist/BaseLinearDisplay/models/FeatureDensityMixin.js.map +1 -0
  18. package/dist/BaseLinearDisplay/models/TrackHeightMixin.d.ts +30 -0
  19. package/dist/BaseLinearDisplay/models/TrackHeightMixin.js +56 -0
  20. package/dist/BaseLinearDisplay/models/TrackHeightMixin.js.map +1 -0
  21. package/dist/BaseLinearDisplay/models/autorunFeatureDensityStats.d.ts +2 -0
  22. package/dist/BaseLinearDisplay/models/autorunFeatureDensityStats.js +42 -0
  23. package/dist/BaseLinearDisplay/models/autorunFeatureDensityStats.js.map +1 -0
  24. package/dist/BaseLinearDisplay/models/configSchema.d.ts +35 -1
  25. package/dist/BaseLinearDisplay/models/configSchema.js +10 -0
  26. package/dist/BaseLinearDisplay/models/configSchema.js.map +1 -1
  27. package/dist/BaseLinearDisplay/models/renderSvg.d.ts +8 -0
  28. package/dist/BaseLinearDisplay/models/renderSvg.js +83 -0
  29. package/dist/BaseLinearDisplay/models/renderSvg.js.map +1 -0
  30. package/dist/BaseLinearDisplay/models/serverSideRenderedBlock.js +30 -22
  31. package/dist/BaseLinearDisplay/models/serverSideRenderedBlock.js.map +1 -1
  32. package/dist/BaseLinearDisplay/models/util.d.ts +6 -2
  33. package/dist/BaseLinearDisplay/models/util.js +4 -4
  34. package/dist/BaseLinearDisplay/models/util.js.map +1 -1
  35. package/dist/BasicTrack/configSchema.d.ts +73 -1
  36. package/dist/BasicTrack/configSchema.js +1 -0
  37. package/dist/BasicTrack/configSchema.js.map +1 -1
  38. package/dist/FeatureTrack/configSchema.d.ts +73 -1
  39. package/dist/FeatureTrack/configSchema.js +1 -0
  40. package/dist/FeatureTrack/configSchema.js.map +1 -1
  41. package/dist/LinearBareDisplay/configSchema.d.ts +29 -1
  42. package/dist/LinearBareDisplay/configSchema.js +1 -0
  43. package/dist/LinearBareDisplay/configSchema.js.map +1 -1
  44. package/dist/LinearBareDisplay/model.d.ts +106 -42
  45. package/dist/LinearBareDisplay/model.js +3 -2
  46. package/dist/LinearBareDisplay/model.js.map +1 -1
  47. package/dist/LinearBasicDisplay/components/SetMaxHeight.d.ts +2 -2
  48. package/dist/LinearBasicDisplay/configSchema.d.ts +29 -1
  49. package/dist/LinearBasicDisplay/configSchema.js +1 -9
  50. package/dist/LinearBasicDisplay/configSchema.js.map +1 -1
  51. package/dist/LinearBasicDisplay/model.d.ts +124 -62
  52. package/dist/LinearBasicDisplay/model.js +1 -0
  53. package/dist/LinearBasicDisplay/model.js.map +1 -1
  54. package/dist/LinearGenomeView/components/CenterLine.d.ts +2 -2
  55. package/dist/LinearGenomeView/components/Cytobands.d.ts +24 -24
  56. package/dist/LinearGenomeView/components/ExportSvgDialog.d.ts +2 -2
  57. package/dist/LinearGenomeView/components/GetSequenceDialog.d.ts +2 -2
  58. package/dist/LinearGenomeView/components/GetSequenceDialog.js +14 -16
  59. package/dist/LinearGenomeView/components/GetSequenceDialog.js.map +1 -1
  60. package/dist/LinearGenomeView/components/Gridlines.d.ts +2 -2
  61. package/dist/LinearGenomeView/components/Header.d.ts +2 -2
  62. package/dist/LinearGenomeView/components/ImportForm.d.ts +2 -2
  63. package/dist/LinearGenomeView/components/ImportForm.js +4 -7
  64. package/dist/LinearGenomeView/components/ImportForm.js.map +1 -1
  65. package/dist/LinearGenomeView/components/LinearGenomeView.d.ts +2 -2
  66. package/dist/LinearGenomeView/components/LinearGenomeView.js +28 -8
  67. package/dist/LinearGenomeView/components/LinearGenomeView.js.map +1 -1
  68. package/dist/LinearGenomeView/components/MiniControls.d.ts +3 -3
  69. package/dist/LinearGenomeView/components/MiniControls.js +20 -40
  70. package/dist/LinearGenomeView/components/MiniControls.js.map +1 -1
  71. package/dist/LinearGenomeView/components/OverviewRubberband.d.ts +1 -1
  72. package/dist/LinearGenomeView/components/OverviewScalebar.d.ts +2 -2
  73. package/dist/LinearGenomeView/components/OverviewScalebar.js +12 -5
  74. package/dist/LinearGenomeView/components/OverviewScalebar.js.map +1 -1
  75. package/dist/LinearGenomeView/components/RefNameAutocomplete/AutocompleteTextField.d.ts +10 -0
  76. package/dist/LinearGenomeView/components/RefNameAutocomplete/AutocompleteTextField.js +22 -0
  77. package/dist/LinearGenomeView/components/RefNameAutocomplete/AutocompleteTextField.js.map +1 -0
  78. package/dist/LinearGenomeView/components/RefNameAutocomplete/EndAdornment.d.ts +5 -0
  79. package/dist/LinearGenomeView/components/RefNameAutocomplete/EndAdornment.js +52 -0
  80. package/dist/LinearGenomeView/components/RefNameAutocomplete/EndAdornment.js.map +1 -0
  81. package/dist/LinearGenomeView/components/{HelpDialog.d.ts → RefNameAutocomplete/HelpDialog.d.ts} +2 -2
  82. package/dist/LinearGenomeView/components/RefNameAutocomplete/HelpDialog.js.map +1 -0
  83. package/dist/LinearGenomeView/components/RefNameAutocomplete/index.d.ts +18 -0
  84. package/dist/LinearGenomeView/components/RefNameAutocomplete/index.js +111 -0
  85. package/dist/LinearGenomeView/components/RefNameAutocomplete/index.js.map +1 -0
  86. package/dist/LinearGenomeView/components/RefNameAutocomplete/util.d.ts +12 -0
  87. package/dist/LinearGenomeView/components/RefNameAutocomplete/util.js +59 -0
  88. package/dist/LinearGenomeView/components/RefNameAutocomplete/util.js.map +1 -0
  89. package/dist/LinearGenomeView/components/Rubberband.d.ts +1 -1
  90. package/dist/LinearGenomeView/components/RubberbandSpan.d.ts +2 -2
  91. package/dist/LinearGenomeView/components/SearchBox.d.ts +2 -2
  92. package/dist/LinearGenomeView/components/SearchResultsDialog.d.ts +7 -4
  93. package/dist/LinearGenomeView/components/SearchResultsDialog.js +6 -82
  94. package/dist/LinearGenomeView/components/SearchResultsDialog.js.map +1 -1
  95. package/dist/LinearGenomeView/components/SearchResultsTable.d.ts +9 -0
  96. package/dist/LinearGenomeView/components/SearchResultsTable.js +83 -0
  97. package/dist/LinearGenomeView/components/SearchResultsTable.js.map +1 -0
  98. package/dist/LinearGenomeView/components/SequenceSearchDialog.d.ts +2 -2
  99. package/dist/LinearGenomeView/components/TrackContainer.d.ts +3 -4
  100. package/dist/LinearGenomeView/components/TrackContainer.js +17 -67
  101. package/dist/LinearGenomeView/components/TrackContainer.js.map +1 -1
  102. package/dist/LinearGenomeView/components/TrackLabel.js +6 -10
  103. package/dist/LinearGenomeView/components/TrackLabel.js.map +1 -1
  104. package/dist/LinearGenomeView/components/TrackLabelContainer.d.ts +9 -0
  105. package/dist/LinearGenomeView/components/TrackLabelContainer.js +32 -0
  106. package/dist/LinearGenomeView/components/TrackLabelContainer.js.map +1 -0
  107. package/dist/LinearGenomeView/components/TrackRenderingContainer.d.ts +10 -0
  108. package/dist/LinearGenomeView/components/TrackRenderingContainer.js +74 -0
  109. package/dist/LinearGenomeView/components/TrackRenderingContainer.js.map +1 -0
  110. package/dist/LinearGenomeView/components/TracksContainer.d.ts +1 -1
  111. package/dist/LinearGenomeView/components/TracksContainer.js +5 -7
  112. package/dist/LinearGenomeView/components/TracksContainer.js.map +1 -1
  113. package/dist/LinearGenomeView/components/VerticalGuide.d.ts +2 -2
  114. package/dist/LinearGenomeView/components/ZoomControls.d.ts +2 -2
  115. package/dist/LinearGenomeView/components/util.js +1 -1
  116. package/dist/LinearGenomeView/components/util.js.map +1 -1
  117. package/dist/LinearGenomeView/model.d.ts +51 -37
  118. package/dist/LinearGenomeView/model.js +132 -209
  119. package/dist/LinearGenomeView/model.js.map +1 -1
  120. package/dist/LinearGenomeView/svgcomponents/SVGBackground.d.ts +2 -2
  121. package/dist/LinearGenomeView/svgcomponents/SVGHeader.d.ts +3 -5
  122. package/dist/LinearGenomeView/svgcomponents/SVGHeader.js +7 -2
  123. package/dist/LinearGenomeView/svgcomponents/SVGHeader.js.map +1 -1
  124. package/dist/LinearGenomeView/svgcomponents/SVGLinearGenomeView.js +1 -1
  125. package/dist/LinearGenomeView/svgcomponents/SVGLinearGenomeView.js.map +1 -1
  126. package/dist/LinearGenomeView/svgcomponents/SVGRegionSeparators.d.ts +2 -2
  127. package/dist/LinearGenomeView/svgcomponents/SVGRuler.d.ts +2 -2
  128. package/dist/LinearGenomeView/svgcomponents/SVGScalebar.d.ts +2 -2
  129. package/dist/LinearGenomeView/svgcomponents/SVGTrackLabel.d.ts +2 -2
  130. package/dist/LinearGenomeView/svgcomponents/SVGTracks.d.ts +2 -2
  131. package/dist/LinearGenomeView/util.d.ts +29 -0
  132. package/dist/LinearGenomeView/util.js +79 -1
  133. package/dist/LinearGenomeView/util.js.map +1 -1
  134. package/dist/index.d.ts +325 -180
  135. package/dist/index.js +6 -3
  136. package/dist/index.js.map +1 -1
  137. package/esm/BaseLinearDisplay/components/BaseLinearDisplay.d.ts +1 -1
  138. package/esm/BaseLinearDisplay/components/Block.d.ts +3 -3
  139. package/esm/BaseLinearDisplay/components/BlockMsg.d.ts +1 -1
  140. package/esm/BaseLinearDisplay/components/LinearBlocks.d.ts +3 -3
  141. package/esm/BaseLinearDisplay/components/TooLargeMessage.d.ts +5 -5
  142. package/esm/BaseLinearDisplay/components/TooLargeMessage.js +7 -3
  143. package/esm/BaseLinearDisplay/components/TooLargeMessage.js.map +1 -1
  144. package/esm/BaseLinearDisplay/components/Tooltip.d.ts +2 -2
  145. package/esm/BaseLinearDisplay/index.d.ts +5 -2
  146. package/esm/BaseLinearDisplay/index.js +3 -0
  147. package/esm/BaseLinearDisplay/index.js.map +1 -1
  148. package/esm/BaseLinearDisplay/models/BaseLinearDisplayModel.d.ts +107 -126
  149. package/esm/BaseLinearDisplay/models/BaseLinearDisplayModel.js +39 -331
  150. package/esm/BaseLinearDisplay/models/BaseLinearDisplayModel.js.map +1 -1
  151. package/esm/BaseLinearDisplay/models/FeatureDensityMixin.d.ts +99 -0
  152. package/esm/BaseLinearDisplay/models/FeatureDensityMixin.js +184 -0
  153. package/esm/BaseLinearDisplay/models/FeatureDensityMixin.js.map +1 -0
  154. package/esm/BaseLinearDisplay/models/TrackHeightMixin.d.ts +30 -0
  155. package/esm/BaseLinearDisplay/models/TrackHeightMixin.js +53 -0
  156. package/esm/BaseLinearDisplay/models/TrackHeightMixin.js.map +1 -0
  157. package/esm/BaseLinearDisplay/models/autorunFeatureDensityStats.d.ts +2 -0
  158. package/esm/BaseLinearDisplay/models/autorunFeatureDensityStats.js +39 -0
  159. package/esm/BaseLinearDisplay/models/autorunFeatureDensityStats.js.map +1 -0
  160. package/esm/BaseLinearDisplay/models/configSchema.d.ts +35 -1
  161. package/esm/BaseLinearDisplay/models/configSchema.js +10 -0
  162. package/esm/BaseLinearDisplay/models/configSchema.js.map +1 -1
  163. package/esm/BaseLinearDisplay/models/renderSvg.d.ts +8 -0
  164. package/esm/BaseLinearDisplay/models/renderSvg.js +54 -0
  165. package/esm/BaseLinearDisplay/models/renderSvg.js.map +1 -0
  166. package/esm/BaseLinearDisplay/models/serverSideRenderedBlock.js +30 -22
  167. package/esm/BaseLinearDisplay/models/serverSideRenderedBlock.js.map +1 -1
  168. package/esm/BaseLinearDisplay/models/util.d.ts +6 -2
  169. package/esm/BaseLinearDisplay/models/util.js +2 -2
  170. package/esm/BaseLinearDisplay/models/util.js.map +1 -1
  171. package/esm/BasicTrack/configSchema.d.ts +73 -1
  172. package/esm/BasicTrack/configSchema.js +1 -0
  173. package/esm/BasicTrack/configSchema.js.map +1 -1
  174. package/esm/FeatureTrack/configSchema.d.ts +73 -1
  175. package/esm/FeatureTrack/configSchema.js +1 -0
  176. package/esm/FeatureTrack/configSchema.js.map +1 -1
  177. package/esm/LinearBareDisplay/configSchema.d.ts +29 -1
  178. package/esm/LinearBareDisplay/configSchema.js +1 -0
  179. package/esm/LinearBareDisplay/configSchema.js.map +1 -1
  180. package/esm/LinearBareDisplay/model.d.ts +106 -42
  181. package/esm/LinearBareDisplay/model.js +2 -1
  182. package/esm/LinearBareDisplay/model.js.map +1 -1
  183. package/esm/LinearBasicDisplay/components/SetMaxHeight.d.ts +2 -2
  184. package/esm/LinearBasicDisplay/configSchema.d.ts +29 -1
  185. package/esm/LinearBasicDisplay/configSchema.js +1 -9
  186. package/esm/LinearBasicDisplay/configSchema.js.map +1 -1
  187. package/esm/LinearBasicDisplay/model.d.ts +124 -62
  188. package/esm/LinearBasicDisplay/model.js +1 -0
  189. package/esm/LinearBasicDisplay/model.js.map +1 -1
  190. package/esm/LinearGenomeView/components/CenterLine.d.ts +2 -2
  191. package/esm/LinearGenomeView/components/Cytobands.d.ts +24 -24
  192. package/esm/LinearGenomeView/components/ExportSvgDialog.d.ts +2 -2
  193. package/esm/LinearGenomeView/components/GetSequenceDialog.d.ts +2 -2
  194. package/esm/LinearGenomeView/components/GetSequenceDialog.js +15 -17
  195. package/esm/LinearGenomeView/components/GetSequenceDialog.js.map +1 -1
  196. package/esm/LinearGenomeView/components/Gridlines.d.ts +2 -2
  197. package/esm/LinearGenomeView/components/Header.d.ts +2 -2
  198. package/esm/LinearGenomeView/components/ImportForm.d.ts +2 -2
  199. package/esm/LinearGenomeView/components/ImportForm.js +5 -8
  200. package/esm/LinearGenomeView/components/ImportForm.js.map +1 -1
  201. package/esm/LinearGenomeView/components/LinearGenomeView.d.ts +2 -2
  202. package/esm/LinearGenomeView/components/LinearGenomeView.js +4 -7
  203. package/esm/LinearGenomeView/components/LinearGenomeView.js.map +1 -1
  204. package/esm/LinearGenomeView/components/MiniControls.d.ts +3 -3
  205. package/esm/LinearGenomeView/components/MiniControls.js +20 -17
  206. package/esm/LinearGenomeView/components/MiniControls.js.map +1 -1
  207. package/esm/LinearGenomeView/components/OverviewRubberband.d.ts +1 -1
  208. package/esm/LinearGenomeView/components/OverviewScalebar.d.ts +2 -2
  209. package/esm/LinearGenomeView/components/OverviewScalebar.js +12 -5
  210. package/esm/LinearGenomeView/components/OverviewScalebar.js.map +1 -1
  211. package/esm/LinearGenomeView/components/RefNameAutocomplete/AutocompleteTextField.d.ts +10 -0
  212. package/esm/LinearGenomeView/components/RefNameAutocomplete/AutocompleteTextField.js +16 -0
  213. package/esm/LinearGenomeView/components/RefNameAutocomplete/AutocompleteTextField.js.map +1 -0
  214. package/esm/LinearGenomeView/components/RefNameAutocomplete/EndAdornment.d.ts +5 -0
  215. package/esm/LinearGenomeView/components/RefNameAutocomplete/EndAdornment.js +23 -0
  216. package/esm/LinearGenomeView/components/RefNameAutocomplete/EndAdornment.js.map +1 -0
  217. package/esm/LinearGenomeView/components/{HelpDialog.d.ts → RefNameAutocomplete/HelpDialog.d.ts} +2 -2
  218. package/esm/LinearGenomeView/components/RefNameAutocomplete/HelpDialog.js.map +1 -0
  219. package/esm/LinearGenomeView/components/RefNameAutocomplete/index.d.ts +18 -0
  220. package/esm/LinearGenomeView/components/RefNameAutocomplete/index.js +83 -0
  221. package/esm/LinearGenomeView/components/RefNameAutocomplete/index.js.map +1 -0
  222. package/esm/LinearGenomeView/components/RefNameAutocomplete/util.d.ts +12 -0
  223. package/esm/LinearGenomeView/components/RefNameAutocomplete/util.js +50 -0
  224. package/esm/LinearGenomeView/components/RefNameAutocomplete/util.js.map +1 -0
  225. package/esm/LinearGenomeView/components/Rubberband.d.ts +1 -1
  226. package/esm/LinearGenomeView/components/RubberbandSpan.d.ts +2 -2
  227. package/esm/LinearGenomeView/components/SearchBox.d.ts +2 -2
  228. package/esm/LinearGenomeView/components/SearchResultsDialog.d.ts +7 -4
  229. package/esm/LinearGenomeView/components/SearchResultsDialog.js +7 -83
  230. package/esm/LinearGenomeView/components/SearchResultsDialog.js.map +1 -1
  231. package/esm/LinearGenomeView/components/SearchResultsTable.d.ts +9 -0
  232. package/esm/LinearGenomeView/components/SearchResultsTable.js +77 -0
  233. package/esm/LinearGenomeView/components/SearchResultsTable.js.map +1 -0
  234. package/esm/LinearGenomeView/components/SequenceSearchDialog.d.ts +2 -2
  235. package/esm/LinearGenomeView/components/TrackContainer.d.ts +3 -4
  236. package/esm/LinearGenomeView/components/TrackContainer.js +18 -68
  237. package/esm/LinearGenomeView/components/TrackContainer.js.map +1 -1
  238. package/esm/LinearGenomeView/components/TrackLabel.js +6 -10
  239. package/esm/LinearGenomeView/components/TrackLabel.js.map +1 -1
  240. package/esm/LinearGenomeView/components/TrackLabelContainer.d.ts +9 -0
  241. package/esm/LinearGenomeView/components/TrackLabelContainer.js +27 -0
  242. package/esm/LinearGenomeView/components/TrackLabelContainer.js.map +1 -0
  243. package/esm/LinearGenomeView/components/TrackRenderingContainer.d.ts +10 -0
  244. package/esm/LinearGenomeView/components/TrackRenderingContainer.js +49 -0
  245. package/esm/LinearGenomeView/components/TrackRenderingContainer.js.map +1 -0
  246. package/esm/LinearGenomeView/components/TracksContainer.d.ts +1 -1
  247. package/esm/LinearGenomeView/components/TracksContainer.js +5 -7
  248. package/esm/LinearGenomeView/components/TracksContainer.js.map +1 -1
  249. package/esm/LinearGenomeView/components/VerticalGuide.d.ts +2 -2
  250. package/esm/LinearGenomeView/components/ZoomControls.d.ts +2 -2
  251. package/esm/LinearGenomeView/components/util.js +1 -1
  252. package/esm/LinearGenomeView/components/util.js.map +1 -1
  253. package/esm/LinearGenomeView/model.d.ts +51 -37
  254. package/esm/LinearGenomeView/model.js +129 -206
  255. package/esm/LinearGenomeView/model.js.map +1 -1
  256. package/esm/LinearGenomeView/svgcomponents/SVGBackground.d.ts +2 -2
  257. package/esm/LinearGenomeView/svgcomponents/SVGHeader.d.ts +3 -5
  258. package/esm/LinearGenomeView/svgcomponents/SVGHeader.js +7 -2
  259. package/esm/LinearGenomeView/svgcomponents/SVGHeader.js.map +1 -1
  260. package/esm/LinearGenomeView/svgcomponents/SVGLinearGenomeView.js +1 -1
  261. package/esm/LinearGenomeView/svgcomponents/SVGLinearGenomeView.js.map +1 -1
  262. package/esm/LinearGenomeView/svgcomponents/SVGRegionSeparators.d.ts +2 -2
  263. package/esm/LinearGenomeView/svgcomponents/SVGRuler.d.ts +2 -2
  264. package/esm/LinearGenomeView/svgcomponents/SVGScalebar.d.ts +2 -2
  265. package/esm/LinearGenomeView/svgcomponents/SVGTrackLabel.d.ts +2 -2
  266. package/esm/LinearGenomeView/svgcomponents/SVGTracks.d.ts +2 -2
  267. package/esm/LinearGenomeView/util.d.ts +29 -0
  268. package/esm/LinearGenomeView/util.js +76 -0
  269. package/esm/LinearGenomeView/util.js.map +1 -1
  270. package/esm/index.d.ts +325 -180
  271. package/esm/index.js +1 -1
  272. package/esm/index.js.map +1 -1
  273. package/package.json +3 -3
  274. package/src/BaseLinearDisplay/components/TooLargeMessage.tsx +10 -6
  275. package/src/BaseLinearDisplay/index.ts +5 -1
  276. package/src/BaseLinearDisplay/models/BaseLinearDisplayModel.tsx +50 -401
  277. package/src/BaseLinearDisplay/models/FeatureDensityMixin.tsx +213 -0
  278. package/src/BaseLinearDisplay/models/TrackHeightMixin.tsx +59 -0
  279. package/src/BaseLinearDisplay/models/autorunFeatureDensityStats.ts +46 -0
  280. package/src/BaseLinearDisplay/models/configSchema.ts +11 -0
  281. package/src/BaseLinearDisplay/models/renderSvg.tsx +101 -0
  282. package/src/BaseLinearDisplay/models/serverSideRenderedBlock.ts +40 -32
  283. package/src/BaseLinearDisplay/models/util.ts +10 -4
  284. package/src/BasicTrack/configSchema.ts +1 -0
  285. package/src/FeatureTrack/configSchema.ts +1 -0
  286. package/src/LinearBareDisplay/configSchema.ts +1 -0
  287. package/src/LinearBareDisplay/model.ts +2 -1
  288. package/src/LinearBasicDisplay/configSchema.ts +1 -10
  289. package/src/LinearBasicDisplay/model.ts +1 -0
  290. package/src/LinearGenomeView/components/GetSequenceDialog.tsx +15 -25
  291. package/src/LinearGenomeView/components/ImportForm.tsx +4 -14
  292. package/src/LinearGenomeView/components/LinearGenomeView.test.tsx +3 -3
  293. package/src/LinearGenomeView/components/LinearGenomeView.tsx +6 -17
  294. package/src/LinearGenomeView/components/MiniControls.tsx +37 -38
  295. package/src/LinearGenomeView/components/OverviewScalebar.tsx +13 -6
  296. package/src/LinearGenomeView/components/RefNameAutocomplete/AutocompleteTextField.tsx +53 -0
  297. package/src/LinearGenomeView/components/RefNameAutocomplete/EndAdornment.tsx +44 -0
  298. package/src/LinearGenomeView/components/RefNameAutocomplete/index.tsx +160 -0
  299. package/src/LinearGenomeView/components/RefNameAutocomplete/util.ts +65 -0
  300. package/src/LinearGenomeView/components/SearchResultsDialog.tsx +17 -112
  301. package/src/LinearGenomeView/components/SearchResultsTable.tsx +121 -0
  302. package/src/LinearGenomeView/components/TrackContainer.tsx +25 -104
  303. package/src/LinearGenomeView/components/TrackLabel.tsx +7 -27
  304. package/src/LinearGenomeView/components/TrackLabelContainer.tsx +48 -0
  305. package/src/LinearGenomeView/components/TrackRenderingContainer.tsx +96 -0
  306. package/src/LinearGenomeView/components/TracksContainer.tsx +9 -6
  307. package/src/LinearGenomeView/components/__snapshots__/LinearGenomeView.test.tsx.snap +14 -14
  308. package/src/LinearGenomeView/components/util.ts +2 -1
  309. package/src/LinearGenomeView/index.test.ts +10 -12
  310. package/src/LinearGenomeView/model.ts +175 -247
  311. package/src/LinearGenomeView/svgcomponents/SVGHeader.tsx +8 -6
  312. package/src/LinearGenomeView/svgcomponents/SVGLinearGenomeView.tsx +1 -1
  313. package/src/LinearGenomeView/util.ts +98 -0
  314. package/src/index.ts +11 -5
  315. package/dist/LinearGenomeView/components/HelpDialog.js.map +0 -1
  316. package/dist/LinearGenomeView/components/RefNameAutocomplete.d.ts +0 -23
  317. package/dist/LinearGenomeView/components/RefNameAutocomplete.js +0 -182
  318. package/dist/LinearGenomeView/components/RefNameAutocomplete.js.map +0 -1
  319. package/esm/LinearGenomeView/components/HelpDialog.js.map +0 -1
  320. package/esm/LinearGenomeView/components/RefNameAutocomplete.d.ts +0 -23
  321. package/esm/LinearGenomeView/components/RefNameAutocomplete.js +0 -154
  322. package/esm/LinearGenomeView/components/RefNameAutocomplete.js.map +0 -1
  323. package/src/LinearGenomeView/components/RefNameAutocomplete.tsx +0 -279
  324. /package/dist/LinearGenomeView/components/{HelpDialog.js → RefNameAutocomplete/HelpDialog.js} +0 -0
  325. /package/esm/LinearGenomeView/components/{HelpDialog.js → RefNameAutocomplete/HelpDialog.js} +0 -0
  326. /package/src/LinearGenomeView/components/{HelpDialog.tsx → RefNameAutocomplete/HelpDialog.tsx} +0 -0
@@ -1,3 +1,9 @@
1
+ import {
2
+ AssemblyManager,
3
+ ParsedLocString,
4
+ parseLocString,
5
+ } from '@jbrowse/core/util'
6
+
1
7
  /**
2
8
  * Given a scale ( bp/px ) and minimum distances (px) between major and minor
3
9
  * gridlines, return an object like `{ majorPitch: bp, minorPitch: bp }` giving
@@ -82,3 +88,95 @@ export function makeTicks(
82
88
  }
83
89
  return ticks
84
90
  }
91
+
92
+ /**
93
+ * Generate location objects for a set of parsed locstrings, which includes
94
+ * translating the refNames to assembly-canonical refNames and adding the
95
+ * 'parentRegion'
96
+ *
97
+ * Used by navToLocations and navToLocString
98
+ */
99
+ export async function generateLocations(
100
+ regions: ParsedLocString[] = [],
101
+ assemblyManager: AssemblyManager,
102
+ assemblyName?: string,
103
+ ) {
104
+ return Promise.all(
105
+ regions.map(async region => {
106
+ const asmName = region.assemblyName || assemblyName
107
+ if (!asmName) {
108
+ throw new Error('no assembly provided')
109
+ }
110
+ const asm = await assemblyManager.waitForAssembly(asmName)
111
+ const { refName } = region
112
+ if (!asm) {
113
+ throw new Error(`assembly ${asmName} not found`)
114
+ }
115
+ const { regions } = asm
116
+ if (!regions) {
117
+ throw new Error(`regions not loaded yet for ${asmName}`)
118
+ }
119
+ const canonicalRefName = asm.getCanonicalRefName(region.refName)
120
+ if (!canonicalRefName) {
121
+ throw new Error(`Could not find refName ${refName} in ${asm.name}`)
122
+ }
123
+ const parentRegion = regions.find(r => r.refName === canonicalRefName)
124
+ if (!parentRegion) {
125
+ throw new Error(`Could not find refName ${refName} in ${asmName}`)
126
+ }
127
+
128
+ return {
129
+ ...(region as Omit<typeof region, symbol>),
130
+ assemblyName: asmName,
131
+ parentRegion,
132
+ }
133
+ }),
134
+ )
135
+ }
136
+
137
+ /**
138
+ * Parses locString or space separated set of locStrings into location objects
139
+ * Example inputs:
140
+ * "chr1"
141
+ * "chr1:1-100"
142
+ * "chr1:1..100"
143
+ * "chr1 chr2"
144
+ * "chr1:1-100 chr2:1-100"
145
+ * "chr1 100 200" equivalent to "chr1:1-100"
146
+ *
147
+ * Used by navToLocString
148
+ */
149
+ export function parseLocStrings(
150
+ input: string,
151
+ assemblyName: string,
152
+ isValidRefName: (str: string, assemblyName: string) => boolean,
153
+ ) {
154
+ const inputs = input
155
+ .split(/(\s+)/)
156
+ .map(f => f.trim())
157
+ .filter(f => !!f)
158
+ // first try interpreting as a whitespace-separated sequence of
159
+ // multiple locstrings
160
+ try {
161
+ return inputs.map(loc =>
162
+ parseLocString(loc, ref => isValidRefName(ref, assemblyName)),
163
+ )
164
+ } catch (e) {
165
+ // if this fails, try interpreting as a whitespace-separated refname,
166
+ // start, end if start and end are integer inputs
167
+ const [refName, start, end] = inputs
168
+ if (
169
+ `${e}`.match(/Unknown reference sequence/) &&
170
+ Number.isInteger(+start) &&
171
+ Number.isInteger(+end)
172
+ ) {
173
+ return [
174
+ parseLocString(refName + ':' + start + '..' + end, ref =>
175
+ isValidRefName(ref, assemblyName),
176
+ ),
177
+ ]
178
+ } else {
179
+ throw e
180
+ }
181
+ }
182
+ }
package/src/index.ts CHANGED
@@ -19,7 +19,6 @@ import LinearGenomeViewF, {
19
19
  } from './LinearGenomeView'
20
20
 
21
21
  import LinearBasicDisplayF from './LinearBasicDisplay'
22
-
23
22
  import FeatureTrackF from './FeatureTrack'
24
23
  import BasicTrackF from './BasicTrack'
25
24
  import LaunchLinearGenomeViewF from './LaunchLinearGenomeView'
@@ -58,19 +57,26 @@ export default class LinearGenomeViewPlugin extends Plugin {
58
57
  }
59
58
  }
60
59
 
61
- export type { BaseLinearDisplayModel, BlockModel } from './BaseLinearDisplay'
60
+ export type {
61
+ ExportSvgDisplayOptions,
62
+ BaseLinearDisplayModel,
63
+ BlockModel,
64
+ } from './BaseLinearDisplay'
62
65
 
63
66
  export { configSchemaFactory as linearBareDisplayConfigSchemaFactory } from './LinearBareDisplay'
64
67
  export {
65
- BlockMsg,
66
68
  baseLinearDisplayConfigSchema,
67
- BaseLinearDisplayComponent,
68
69
  BaseLinearDisplay,
70
+ BlockMsg,
71
+ BaseLinearDisplayComponent,
72
+ TrackHeightMixin,
73
+ FeatureDensityMixin,
74
+ TooLargeMessage,
69
75
  } from './BaseLinearDisplay'
70
76
  export {
71
77
  type LinearGenomeViewModel,
72
- RefNameAutocomplete,
73
78
  type LinearGenomeViewStateModel,
79
+ RefNameAutocomplete,
74
80
  SearchBox,
75
81
  } from './LinearGenomeView'
76
82
  export {
@@ -1 +0,0 @@
1
- {"version":3,"file":"HelpDialog.js","sourceRoot":"","sources":["../../../src/LinearGenomeView/components/HelpDialog.tsx"],"names":[],"mappings":";;;;;AAAA,kDAAyB;AACzB,4CAA6E;AAC7E,yCAAyC;AAEzC,SAAwB,UAAU,CAAC,EACjC,WAAW,GAGZ;IACC,OAAO,CACL,8BAAC,WAAM,IACL,IAAI,QACJ,QAAQ,EAAC,IAAI,EACb,OAAO,EAAE,WAAW,EACpB,KAAK,EAAC,sBAAsB;QAE5B,8BAAC,wBAAa;YACZ,sDAAkB;YAClB;gBACE,+IAGK;gBACL;;oBAEM,6DAA2B;;oBAAI,4DAA0B;wKAI1D,CACF;YACL,6DAAyB;YACzB;gBACE;oBACE,mDAAiB;6DACd;gBACL;oBACE,mDAAiB;+CACd;gBACL;oBACE,0EAAwC;mFAErC;gBACL;oBACE,oEAAkC;0EAE/B;gBACL;oBACE,6DAA2B;8DACxB;gBACL;oBACE,yEAAuC;0FAEpC;gBACL;oBACE,2DAAyB;sEAEtB,CACF,CACS;QAChB,8BAAC,kBAAO,OAAG;QACX,8BAAC,wBAAa;YACZ,8BAAC,iBAAM,IAAC,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,EAAE,KAAK,EAAC,SAAS,YAE5C,CACK,CACT,CACV,CAAA;AACH,CAAC;AAhED,6BAgEC"}
@@ -1,23 +0,0 @@
1
- import React from 'react';
2
- import BaseResult from '@jbrowse/core/TextSearch/BaseResults';
3
- import { TextFieldProps as TFP } from '@mui/material';
4
- import { LinearGenomeViewModel } from '..';
5
- export interface Option {
6
- group?: string;
7
- result: BaseResult;
8
- }
9
- declare function RefNameAutocomplete({ model, onSelect, assemblyName, style, fetchResults, onChange, value, showHelp, minWidth, maxWidth, TextFieldProps, }: {
10
- model: LinearGenomeViewModel;
11
- onSelect?: (region: BaseResult) => void;
12
- onChange?: (val: string) => void;
13
- assemblyName?: string;
14
- value?: string;
15
- fetchResults: (query: string) => Promise<BaseResult[]>;
16
- style?: React.CSSProperties;
17
- minWidth?: number;
18
- maxWidth?: number;
19
- showHelp?: boolean;
20
- TextFieldProps?: TFP;
21
- }): JSX.Element;
22
- declare const _default: typeof RefNameAutocomplete;
23
- export default _default;
@@ -1,182 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- const react_1 = __importStar(require("react"));
30
- const mobx_react_1 = require("mobx-react");
31
- const util_1 = require("@jbrowse/core/util");
32
- const BaseResults_1 = __importStar(require("@jbrowse/core/TextSearch/BaseResults"));
33
- const material_1 = require("@mui/material");
34
- // icons
35
- const Search_1 = __importDefault(require("@mui/icons-material/Search"));
36
- const Help_1 = __importDefault(require("@mui/icons-material/Help"));
37
- // lazy
38
- const HelpDialog = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./HelpDialog'))));
39
- function aggregateResults(results) {
40
- const m = {};
41
- for (const result of results) {
42
- const displayString = result.getDisplayString();
43
- if (!m[displayString]) {
44
- m[displayString] = [];
45
- }
46
- m[displayString].push(result);
47
- }
48
- return m;
49
- }
50
- function getDeduplicatedResult(results) {
51
- return Object.entries(aggregateResults(results)).map(([displayString, results]) => results.length === 1
52
- ? {
53
- result: results[0],
54
- }
55
- : {
56
- // deduplicate a "multi-result"
57
- result: new BaseResults_1.default({
58
- displayString,
59
- results,
60
- label: displayString,
61
- }),
62
- });
63
- }
64
- // the logic of this method is to only apply a filter to RefSequenceResults
65
- // because they do not have a matchedObject. the trix search results already
66
- // filter so don't need re-filtering
67
- function filterOptions(options, searchQuery) {
68
- return options.filter(({ result }) => result.getLabel().toLowerCase().includes(searchQuery) ||
69
- result.matchedObject);
70
- }
71
- function RefNameAutocomplete({ model, onSelect, assemblyName, style, fetchResults, onChange, value, showHelp = true, minWidth = 200, maxWidth = 550, TextFieldProps = {}, }) {
72
- const session = (0, util_1.getSession)(model);
73
- const { assemblyManager } = session;
74
- const [open, setOpen] = (0, react_1.useState)(false);
75
- const [loaded, setLoaded] = (0, react_1.useState)(true);
76
- const [isHelpDialogDisplayed, setHelpDialogDisplayed] = (0, react_1.useState)(false);
77
- const [currentSearch, setCurrentSearch] = (0, react_1.useState)('');
78
- const [inputValue, setInputValue] = (0, react_1.useState)('');
79
- const [searchOptions, setSearchOptions] = (0, react_1.useState)();
80
- const debouncedSearch = (0, util_1.useDebounce)(currentSearch, 300);
81
- const assembly = assemblyName ? assemblyManager.get(assemblyName) : undefined;
82
- const { coarseVisibleLocStrings, hasDisplayedRegions } = model;
83
- const regions = assembly === null || assembly === void 0 ? void 0 : assembly.regions;
84
- const options = (0, react_1.useMemo)(() => (regions === null || regions === void 0 ? void 0 : regions.map(option => ({
85
- result: new BaseResults_1.RefSequenceResult({
86
- refName: option.refName,
87
- label: option.refName,
88
- matchedAttribute: 'refName',
89
- }),
90
- }))) || [], [regions]);
91
- (0, react_1.useEffect)(() => {
92
- let active = true;
93
- (async () => {
94
- try {
95
- if (debouncedSearch === '' || !assemblyName) {
96
- return;
97
- }
98
- setLoaded(false);
99
- const results = await fetchResults(debouncedSearch);
100
- if (active) {
101
- setLoaded(true);
102
- setSearchOptions(getDeduplicatedResult(results));
103
- }
104
- }
105
- catch (e) {
106
- console.error(e);
107
- if (active) {
108
- session.notify(`${e}`, 'error');
109
- }
110
- }
111
- })();
112
- return () => {
113
- active = false;
114
- };
115
- }, [assemblyName, fetchResults, debouncedSearch, session, model]);
116
- const inputBoxVal = coarseVisibleLocStrings || value || '';
117
- // heuristic, text width + icon width + 50 accommodates help icon and search
118
- // icon
119
- const width = Math.min(Math.max((0, util_1.measureText)(inputBoxVal, 16) + 50, minWidth), maxWidth);
120
- // notes on implementation:
121
- // The selectOnFocus setting helps highlight the field when clicked
122
- return (react_1.default.createElement(react_1.default.Fragment, null,
123
- react_1.default.createElement(material_1.Autocomplete, { "data-testid": "autocomplete", disableListWrap: true, disableClearable: true, disabled: !assemblyName, freeSolo: true, includeInputInList: true, selectOnFocus: true, style: { ...style, width }, value: inputBoxVal, loading: !loaded, inputValue: inputValue, onInputChange: (_event, newInputValue) => {
124
- setInputValue(newInputValue);
125
- onChange === null || onChange === void 0 ? void 0 : onChange(newInputValue);
126
- }, loadingText: "loading results", open: open, onOpen: () => setOpen(true), onClose: () => {
127
- setOpen(false);
128
- setLoaded(true);
129
- if (hasDisplayedRegions) {
130
- setCurrentSearch('');
131
- setSearchOptions(undefined);
132
- }
133
- }, onChange: (_event, selectedOption) => {
134
- if (!selectedOption || !assemblyName) {
135
- return;
136
- }
137
- if (typeof selectedOption === 'string') {
138
- // handles string inputs on keyPress enter
139
- onSelect === null || onSelect === void 0 ? void 0 : onSelect(new BaseResults_1.default({ label: selectedOption }));
140
- }
141
- else {
142
- onSelect === null || onSelect === void 0 ? void 0 : onSelect(selectedOption.result);
143
- }
144
- setInputValue(inputBoxVal);
145
- }, options: !(searchOptions === null || searchOptions === void 0 ? void 0 : searchOptions.length) ? options : searchOptions, getOptionDisabled: option => (option === null || option === void 0 ? void 0 : option.group) === 'limitOption', filterOptions: (options, params) => {
146
- const filtered = filterOptions(options, params.inputValue.toLocaleLowerCase());
147
- return [
148
- ...filtered.slice(0, 100),
149
- ...(filtered.length > 100
150
- ? [
151
- {
152
- group: 'limitOption',
153
- result: new BaseResults_1.default({
154
- label: 'keep typing for more results',
155
- }),
156
- },
157
- ]
158
- : []),
159
- ];
160
- }, renderInput: params => {
161
- const { helperText, InputProps = {} } = TextFieldProps;
162
- return (react_1.default.createElement(material_1.TextField, { onBlur: () =>
163
- // this is used to restore a refName or the non-user-typed input
164
- // to the box on blurring
165
- setInputValue(inputBoxVal), ...params, ...TextFieldProps, helperText: helperText, InputProps: {
166
- ...params.InputProps,
167
- ...InputProps,
168
- endAdornment: (react_1.default.createElement(react_1.default.Fragment, null,
169
- react_1.default.createElement(material_1.InputAdornment, { position: "end", style: { marginRight: 7 } },
170
- react_1.default.createElement(Search_1.default, { fontSize: "small" }),
171
- showHelp ? (react_1.default.createElement(material_1.IconButton, { onClick: () => setHelpDialogDisplayed(true), size: "small" },
172
- react_1.default.createElement(Help_1.default, { fontSize: "small" }))) : null),
173
- params.InputProps.endAdornment)),
174
- }, placeholder: "Search for location", onChange: e => setCurrentSearch(e.target.value) }));
175
- }, getOptionLabel: option => (typeof option === 'string'
176
- ? option
177
- : option.result.getDisplayString()) || '' }),
178
- isHelpDialogDisplayed ? (react_1.default.createElement(react_1.Suspense, { fallback: react_1.default.createElement("div", null) },
179
- react_1.default.createElement(HelpDialog, { handleClose: () => setHelpDialogDisplayed(false) }))) : null));
180
- }
181
- exports.default = (0, mobx_react_1.observer)(RefNameAutocomplete);
182
- //# sourceMappingURL=RefNameAutocomplete.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RefNameAutocomplete.js","sourceRoot":"","sources":["../../../src/LinearGenomeView/components/RefNameAutocomplete.tsx"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"HelpDialog.js","sourceRoot":"","sources":["../../../src/LinearGenomeView/components/HelpDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAC7E,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAEzC,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,WAAW,GAGZ;IACC,OAAO,CACL,oBAAC,MAAM,IACL,IAAI,QACJ,QAAQ,EAAC,IAAI,EACb,OAAO,EAAE,WAAW,EACpB,KAAK,EAAC,sBAAsB;QAE5B,oBAAC,aAAa;YACZ,4CAAkB;YAClB;gBACE,qIAGK;gBACL;;oBAEM,mDAA2B;;oBAAI,kDAA0B;wKAI1D,CACF;YACL,mDAAyB;YACzB;gBACE;oBACE,yCAAiB;6DACd;gBACL;oBACE,yCAAiB;+CACd;gBACL;oBACE,gEAAwC;mFAErC;gBACL;oBACE,0DAAkC;0EAE/B;gBACL;oBACE,mDAA2B;8DACxB;gBACL;oBACE,+DAAuC;0FAEpC;gBACL;oBACE,iDAAyB;sEAEtB,CACF,CACS;QAChB,oBAAC,OAAO,OAAG;QACX,oBAAC,aAAa;YACZ,oBAAC,MAAM,IAAC,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,EAAE,KAAK,EAAC,SAAS,YAE5C,CACK,CACT,CACV,CAAA;AACH,CAAC"}
@@ -1,23 +0,0 @@
1
- import React from 'react';
2
- import BaseResult from '@jbrowse/core/TextSearch/BaseResults';
3
- import { TextFieldProps as TFP } from '@mui/material';
4
- import { LinearGenomeViewModel } from '..';
5
- export interface Option {
6
- group?: string;
7
- result: BaseResult;
8
- }
9
- declare function RefNameAutocomplete({ model, onSelect, assemblyName, style, fetchResults, onChange, value, showHelp, minWidth, maxWidth, TextFieldProps, }: {
10
- model: LinearGenomeViewModel;
11
- onSelect?: (region: BaseResult) => void;
12
- onChange?: (val: string) => void;
13
- assemblyName?: string;
14
- value?: string;
15
- fetchResults: (query: string) => Promise<BaseResult[]>;
16
- style?: React.CSSProperties;
17
- minWidth?: number;
18
- maxWidth?: number;
19
- showHelp?: boolean;
20
- TextFieldProps?: TFP;
21
- }): JSX.Element;
22
- declare const _default: typeof RefNameAutocomplete;
23
- export default _default;
@@ -1,154 +0,0 @@
1
- import React, { Suspense, lazy, useMemo, useEffect, useState } from 'react';
2
- import { observer } from 'mobx-react';
3
- import { getSession, useDebounce, measureText } from '@jbrowse/core/util';
4
- import BaseResult, { RefSequenceResult, } from '@jbrowse/core/TextSearch/BaseResults';
5
- import { Autocomplete, IconButton, InputAdornment, TextField, } from '@mui/material';
6
- // icons
7
- import SearchIcon from '@mui/icons-material/Search';
8
- import HelpIcon from '@mui/icons-material/Help';
9
- // lazy
10
- const HelpDialog = lazy(() => import('./HelpDialog'));
11
- function aggregateResults(results) {
12
- const m = {};
13
- for (const result of results) {
14
- const displayString = result.getDisplayString();
15
- if (!m[displayString]) {
16
- m[displayString] = [];
17
- }
18
- m[displayString].push(result);
19
- }
20
- return m;
21
- }
22
- function getDeduplicatedResult(results) {
23
- return Object.entries(aggregateResults(results)).map(([displayString, results]) => results.length === 1
24
- ? {
25
- result: results[0],
26
- }
27
- : {
28
- // deduplicate a "multi-result"
29
- result: new BaseResult({
30
- displayString,
31
- results,
32
- label: displayString,
33
- }),
34
- });
35
- }
36
- // the logic of this method is to only apply a filter to RefSequenceResults
37
- // because they do not have a matchedObject. the trix search results already
38
- // filter so don't need re-filtering
39
- function filterOptions(options, searchQuery) {
40
- return options.filter(({ result }) => result.getLabel().toLowerCase().includes(searchQuery) ||
41
- result.matchedObject);
42
- }
43
- function RefNameAutocomplete({ model, onSelect, assemblyName, style, fetchResults, onChange, value, showHelp = true, minWidth = 200, maxWidth = 550, TextFieldProps = {}, }) {
44
- const session = getSession(model);
45
- const { assemblyManager } = session;
46
- const [open, setOpen] = useState(false);
47
- const [loaded, setLoaded] = useState(true);
48
- const [isHelpDialogDisplayed, setHelpDialogDisplayed] = useState(false);
49
- const [currentSearch, setCurrentSearch] = useState('');
50
- const [inputValue, setInputValue] = useState('');
51
- const [searchOptions, setSearchOptions] = useState();
52
- const debouncedSearch = useDebounce(currentSearch, 300);
53
- const assembly = assemblyName ? assemblyManager.get(assemblyName) : undefined;
54
- const { coarseVisibleLocStrings, hasDisplayedRegions } = model;
55
- const regions = assembly === null || assembly === void 0 ? void 0 : assembly.regions;
56
- const options = useMemo(() => (regions === null || regions === void 0 ? void 0 : regions.map(option => ({
57
- result: new RefSequenceResult({
58
- refName: option.refName,
59
- label: option.refName,
60
- matchedAttribute: 'refName',
61
- }),
62
- }))) || [], [regions]);
63
- useEffect(() => {
64
- let active = true;
65
- (async () => {
66
- try {
67
- if (debouncedSearch === '' || !assemblyName) {
68
- return;
69
- }
70
- setLoaded(false);
71
- const results = await fetchResults(debouncedSearch);
72
- if (active) {
73
- setLoaded(true);
74
- setSearchOptions(getDeduplicatedResult(results));
75
- }
76
- }
77
- catch (e) {
78
- console.error(e);
79
- if (active) {
80
- session.notify(`${e}`, 'error');
81
- }
82
- }
83
- })();
84
- return () => {
85
- active = false;
86
- };
87
- }, [assemblyName, fetchResults, debouncedSearch, session, model]);
88
- const inputBoxVal = coarseVisibleLocStrings || value || '';
89
- // heuristic, text width + icon width + 50 accommodates help icon and search
90
- // icon
91
- const width = Math.min(Math.max(measureText(inputBoxVal, 16) + 50, minWidth), maxWidth);
92
- // notes on implementation:
93
- // The selectOnFocus setting helps highlight the field when clicked
94
- return (React.createElement(React.Fragment, null,
95
- React.createElement(Autocomplete, { "data-testid": "autocomplete", disableListWrap: true, disableClearable: true, disabled: !assemblyName, freeSolo: true, includeInputInList: true, selectOnFocus: true, style: { ...style, width }, value: inputBoxVal, loading: !loaded, inputValue: inputValue, onInputChange: (_event, newInputValue) => {
96
- setInputValue(newInputValue);
97
- onChange === null || onChange === void 0 ? void 0 : onChange(newInputValue);
98
- }, loadingText: "loading results", open: open, onOpen: () => setOpen(true), onClose: () => {
99
- setOpen(false);
100
- setLoaded(true);
101
- if (hasDisplayedRegions) {
102
- setCurrentSearch('');
103
- setSearchOptions(undefined);
104
- }
105
- }, onChange: (_event, selectedOption) => {
106
- if (!selectedOption || !assemblyName) {
107
- return;
108
- }
109
- if (typeof selectedOption === 'string') {
110
- // handles string inputs on keyPress enter
111
- onSelect === null || onSelect === void 0 ? void 0 : onSelect(new BaseResult({ label: selectedOption }));
112
- }
113
- else {
114
- onSelect === null || onSelect === void 0 ? void 0 : onSelect(selectedOption.result);
115
- }
116
- setInputValue(inputBoxVal);
117
- }, options: !(searchOptions === null || searchOptions === void 0 ? void 0 : searchOptions.length) ? options : searchOptions, getOptionDisabled: option => (option === null || option === void 0 ? void 0 : option.group) === 'limitOption', filterOptions: (options, params) => {
118
- const filtered = filterOptions(options, params.inputValue.toLocaleLowerCase());
119
- return [
120
- ...filtered.slice(0, 100),
121
- ...(filtered.length > 100
122
- ? [
123
- {
124
- group: 'limitOption',
125
- result: new BaseResult({
126
- label: 'keep typing for more results',
127
- }),
128
- },
129
- ]
130
- : []),
131
- ];
132
- }, renderInput: params => {
133
- const { helperText, InputProps = {} } = TextFieldProps;
134
- return (React.createElement(TextField, { onBlur: () =>
135
- // this is used to restore a refName or the non-user-typed input
136
- // to the box on blurring
137
- setInputValue(inputBoxVal), ...params, ...TextFieldProps, helperText: helperText, InputProps: {
138
- ...params.InputProps,
139
- ...InputProps,
140
- endAdornment: (React.createElement(React.Fragment, null,
141
- React.createElement(InputAdornment, { position: "end", style: { marginRight: 7 } },
142
- React.createElement(SearchIcon, { fontSize: "small" }),
143
- showHelp ? (React.createElement(IconButton, { onClick: () => setHelpDialogDisplayed(true), size: "small" },
144
- React.createElement(HelpIcon, { fontSize: "small" }))) : null),
145
- params.InputProps.endAdornment)),
146
- }, placeholder: "Search for location", onChange: e => setCurrentSearch(e.target.value) }));
147
- }, getOptionLabel: option => (typeof option === 'string'
148
- ? option
149
- : option.result.getDisplayString()) || '' }),
150
- isHelpDialogDisplayed ? (React.createElement(Suspense, { fallback: React.createElement("div", null) },
151
- React.createElement(HelpDialog, { handleClose: () => setHelpDialogDisplayed(false) }))) : null));
152
- }
153
- export default observer(RefNameAutocomplete);
154
- //# sourceMappingURL=RefNameAutocomplete.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RefNameAutocomplete.js","sourceRoot":"","sources":["../../../src/LinearGenomeView/components/RefNameAutocomplete.tsx"],"names":[],"mappings":"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"}