jbrowse-plugin-msaview 2.2.1 → 2.2.3

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 (132) hide show
  1. package/dist/BgzipFastaMsaAdapter/BgzipFastaMsaAdapter.d.ts +10 -0
  2. package/dist/BgzipFastaMsaAdapter/BgzipFastaMsaAdapter.js +64 -0
  3. package/dist/BgzipFastaMsaAdapter/BgzipFastaMsaAdapter.js.map +1 -0
  4. package/dist/BgzipFastaMsaAdapter/configSchema.d.ts +7 -0
  5. package/dist/BgzipFastaMsaAdapter/configSchema.js +13 -0
  6. package/dist/BgzipFastaMsaAdapter/configSchema.js.map +1 -0
  7. package/dist/BgzipFastaMsaAdapter/index.d.ts +2 -0
  8. package/dist/BgzipFastaMsaAdapter/index.js +15 -0
  9. package/dist/BgzipFastaMsaAdapter/index.js.map +1 -0
  10. package/dist/LaunchMsaView/components/EnsemblGeneTree/EnsemblGeneTree.js.map +1 -1
  11. package/dist/LaunchMsaView/components/EnsemblGeneTree/useGeneTree.d.ts +1 -1
  12. package/dist/LaunchMsaView/components/EnsemblGeneTree/useGeneTree.js +3 -23
  13. package/dist/LaunchMsaView/components/EnsemblGeneTree/useGeneTree.js.map +1 -1
  14. package/dist/LaunchMsaView/components/EnsemblGeneTree/util.d.ts +1 -4
  15. package/dist/LaunchMsaView/components/EnsemblGeneTree/util.js +1 -37
  16. package/dist/LaunchMsaView/components/EnsemblGeneTree/util.js.map +1 -1
  17. package/dist/LaunchMsaView/components/LaunchMsaViewDialog.d.ts +1 -1
  18. package/dist/LaunchMsaView/components/LaunchMsaViewDialog.js +21 -16
  19. package/dist/LaunchMsaView/components/LaunchMsaViewDialog.js.map +1 -1
  20. package/dist/LaunchMsaView/components/ManualMSALoader/ManualMSALoader.js +1 -1
  21. package/dist/LaunchMsaView/components/ManualMSALoader/ManualMSALoader.js.map +1 -1
  22. package/dist/LaunchMsaView/components/NCBIBlastQuery/NCBIBlastAutomaticPanel.js +12 -8
  23. package/dist/LaunchMsaView/components/NCBIBlastQuery/NCBIBlastAutomaticPanel.js.map +1 -1
  24. package/dist/LaunchMsaView/components/NCBIBlastQuery/NCBIBlastManualPanel.js +1 -1
  25. package/dist/LaunchMsaView/components/NCBIBlastQuery/NCBIBlastManualPanel.js.map +1 -1
  26. package/dist/LaunchMsaView/components/NCBIBlastQuery/NCBIBlastPanel.js +8 -7
  27. package/dist/LaunchMsaView/components/NCBIBlastQuery/NCBIBlastPanel.js.map +1 -1
  28. package/dist/LaunchMsaView/components/NCBIBlastQuery/NCBISettingsDialog.js +1 -1
  29. package/dist/LaunchMsaView/components/NCBIBlastQuery/NCBISettingsDialog.js.map +1 -1
  30. package/dist/LaunchMsaView/components/PreLoadedMSA/PreLoadedMSADataPanel.js +87 -63
  31. package/dist/LaunchMsaView/components/PreLoadedMSA/PreLoadedMSADataPanel.js.map +1 -1
  32. package/dist/LaunchMsaView/components/PreLoadedMSA/consts.d.ts +7 -0
  33. package/dist/LaunchMsaView/components/PreLoadedMSA/consts.js +8 -0
  34. package/dist/LaunchMsaView/components/PreLoadedMSA/consts.js.map +1 -0
  35. package/dist/LaunchMsaView/components/PreLoadedMSA/fetchMSAData.d.ts +12 -0
  36. package/dist/LaunchMsaView/components/PreLoadedMSA/fetchMSAData.js +12 -0
  37. package/dist/LaunchMsaView/components/PreLoadedMSA/fetchMSAData.js.map +1 -0
  38. package/dist/LaunchMsaView/components/PreLoadedMSA/findValidTranscriptId.d.ts +5 -0
  39. package/dist/LaunchMsaView/components/PreLoadedMSA/findValidTranscriptId.js +16 -0
  40. package/dist/LaunchMsaView/components/PreLoadedMSA/findValidTranscriptId.js.map +1 -0
  41. package/dist/LaunchMsaView/components/PreLoadedMSA/preCalculatedLaunchView.d.ts +6 -3
  42. package/dist/LaunchMsaView/components/PreLoadedMSA/preCalculatedLaunchView.js +3 -20
  43. package/dist/LaunchMsaView/components/PreLoadedMSA/preCalculatedLaunchView.js.map +1 -1
  44. package/dist/LaunchMsaView/components/PreLoadedMSA/types.d.ts +7 -0
  45. package/dist/LaunchMsaView/components/PreLoadedMSA/types.js +2 -0
  46. package/dist/LaunchMsaView/components/PreLoadedMSA/types.js.map +1 -0
  47. package/dist/LaunchMsaView/components/TranscriptSelector.js +2 -2
  48. package/dist/LaunchMsaView/components/TranscriptSelector.js.map +1 -1
  49. package/dist/LaunchMsaView/components/calculateProteinSequence.d.ts +2 -2
  50. package/dist/LaunchMsaView/components/calculateProteinSequence.js +2 -2
  51. package/dist/LaunchMsaView/components/calculateProteinSequence.js.map +1 -1
  52. package/dist/LaunchMsaView/components/types.d.ts +1 -0
  53. package/dist/LaunchMsaView/components/useFeatureSequence.d.ts +3 -7
  54. package/dist/LaunchMsaView/components/useFeatureSequence.js +9 -62
  55. package/dist/LaunchMsaView/components/useFeatureSequence.js.map +1 -1
  56. package/dist/LaunchMsaView/components/useSWRFeatureSequence.d.ts +13 -0
  57. package/dist/LaunchMsaView/components/useSWRFeatureSequence.js +53 -0
  58. package/dist/LaunchMsaView/components/useSWRFeatureSequence.js.map +1 -0
  59. package/dist/LaunchMsaView/index.js +3 -1
  60. package/dist/LaunchMsaView/index.js.map +1 -1
  61. package/dist/MsaViewPanel/components/RIDLink.js +1 -1
  62. package/dist/MsaViewPanel/components/RIDLink.js.map +1 -1
  63. package/dist/MsaViewPanel/genomeToMSA.js +2 -2
  64. package/dist/MsaViewPanel/genomeToMSA.js.map +1 -1
  65. package/dist/MsaViewPanel/model.d.ts +23 -84
  66. package/dist/MsaViewPanel/model.js +42 -22
  67. package/dist/MsaViewPanel/model.js.map +1 -1
  68. package/dist/MsaViewPanel/msaCoordToGenomeCoord.d.ts +6 -3
  69. package/dist/MsaViewPanel/msaCoordToGenomeCoord.js +39 -14
  70. package/dist/MsaViewPanel/msaCoordToGenomeCoord.js.map +1 -1
  71. package/dist/MsaViewPanel/util.js +2 -2
  72. package/dist/MsaViewPanel/util.js.map +1 -1
  73. package/dist/components/ExternalLink.js.map +1 -0
  74. package/dist/components/ReadOnlyTextField2.js.map +1 -0
  75. package/dist/components/TextField2.js.map +1 -0
  76. package/dist/index.d.ts +19 -0
  77. package/dist/index.js +26 -0
  78. package/dist/index.js.map +1 -1
  79. package/dist/jbrowse-plugin-msaview.umd.production.min.js +46 -33
  80. package/dist/jbrowse-plugin-msaview.umd.production.min.js.map +4 -4
  81. package/dist/out.js +55381 -0
  82. package/dist/utils/fetch.d.ts +3 -1
  83. package/dist/utils/fetch.js +24 -3
  84. package/dist/utils/fetch.js.map +1 -1
  85. package/package.json +7 -6
  86. package/src/BgzipFastaMsaAdapter/BgzipFastaMsaAdapter.ts +78 -0
  87. package/src/BgzipFastaMsaAdapter/configSchema.ts +18 -0
  88. package/src/BgzipFastaMsaAdapter/index.ts +18 -0
  89. package/src/LaunchMsaView/components/EnsemblGeneTree/EnsemblGeneTree.tsx +0 -1
  90. package/src/LaunchMsaView/components/EnsemblGeneTree/useGeneTree.ts +6 -24
  91. package/src/LaunchMsaView/components/EnsemblGeneTree/util.ts +6 -45
  92. package/src/LaunchMsaView/components/LaunchMsaViewDialog.tsx +23 -24
  93. package/src/LaunchMsaView/components/ManualMSALoader/ManualMSALoader.tsx +1 -1
  94. package/src/LaunchMsaView/components/NCBIBlastQuery/NCBIBlastAutomaticPanel.tsx +13 -8
  95. package/src/LaunchMsaView/components/NCBIBlastQuery/NCBIBlastManualPanel.tsx +1 -1
  96. package/src/LaunchMsaView/components/NCBIBlastQuery/NCBIBlastPanel.tsx +20 -29
  97. package/src/LaunchMsaView/components/NCBIBlastQuery/NCBISettingsDialog.tsx +1 -1
  98. package/src/LaunchMsaView/components/PreLoadedMSA/PreLoadedMSADataPanel.tsx +154 -68
  99. package/src/LaunchMsaView/components/PreLoadedMSA/consts.ts +7 -0
  100. package/src/LaunchMsaView/components/PreLoadedMSA/fetchMSAData.ts +33 -0
  101. package/src/LaunchMsaView/components/PreLoadedMSA/findValidTranscriptId.ts +25 -0
  102. package/src/LaunchMsaView/components/PreLoadedMSA/preCalculatedLaunchView.ts +7 -26
  103. package/src/LaunchMsaView/components/PreLoadedMSA/types.ts +8 -0
  104. package/src/LaunchMsaView/components/TranscriptSelector.tsx +2 -2
  105. package/src/LaunchMsaView/components/calculateProteinSequence.ts +3 -3
  106. package/src/LaunchMsaView/components/types.ts +1 -0
  107. package/src/LaunchMsaView/components/useFeatureSequence.ts +10 -71
  108. package/src/LaunchMsaView/components/useSWRFeatureSequence.ts +90 -0
  109. package/src/LaunchMsaView/index.ts +4 -1
  110. package/src/MsaViewPanel/components/RIDLink.tsx +1 -1
  111. package/src/MsaViewPanel/genomeToMSA.ts +2 -2
  112. package/src/MsaViewPanel/model.ts +45 -29
  113. package/src/MsaViewPanel/msaCoordToGenomeCoord.ts +43 -18
  114. package/src/MsaViewPanel/util.ts +2 -2
  115. package/src/index.ts +31 -0
  116. package/src/utils/fetch.ts +31 -3
  117. package/dist/ExternalLink.js.map +0 -1
  118. package/dist/LaunchMsaView/components/PreLoadedMSA/fetchGeneList.d.ts +0 -1
  119. package/dist/LaunchMsaView/components/PreLoadedMSA/fetchGeneList.js +0 -12
  120. package/dist/LaunchMsaView/components/PreLoadedMSA/fetchGeneList.js.map +0 -1
  121. package/dist/ReadOnlyTextField2.js.map +0 -1
  122. package/dist/TextField2.js.map +0 -1
  123. package/src/LaunchMsaView/components/PreLoadedMSA/fetchGeneList.ts +0 -13
  124. /package/dist/{ExternalLink.d.ts → components/ExternalLink.d.ts} +0 -0
  125. /package/dist/{ExternalLink.js → components/ExternalLink.js} +0 -0
  126. /package/dist/{ReadOnlyTextField2.d.ts → components/ReadOnlyTextField2.d.ts} +0 -0
  127. /package/dist/{ReadOnlyTextField2.js → components/ReadOnlyTextField2.js} +0 -0
  128. /package/dist/{TextField2.d.ts → components/TextField2.d.ts} +0 -0
  129. /package/dist/{TextField2.js → components/TextField2.js} +0 -0
  130. /package/src/{ExternalLink.tsx → components/ExternalLink.tsx} +0 -0
  131. /package/src/{ReadOnlyTextField2.tsx → components/ReadOnlyTextField2.tsx} +0 -0
  132. /package/src/{TextField2.tsx → components/TextField2.tsx} +0 -0
@@ -65,6 +65,10 @@ export default function stateModelFactory() {
65
65
  * #property
66
66
  */
67
67
  blastParams: types.frozen<BlastParams | undefined>(),
68
+ /**
69
+ * #property
70
+ */
71
+ querySeqName: 'QUERY',
68
72
 
69
73
  /**
70
74
  * #property
@@ -198,7 +202,46 @@ export default function stateModelFactory() {
198
202
  setBlastParams(args?: BlastParams) {
199
203
  self.blastParams = args
200
204
  },
205
+ /**
206
+ * #action
207
+ */
208
+ handleMsaClick(coord: number) {
209
+ const { connectedView, zoomToBaseLevel } = self
210
+ const { assemblyManager } = getSession(self)
211
+ const r2 = msaCoordToGenomeCoord({ model: self, coord })
212
+
213
+ if (!r2 || !connectedView) {
214
+ return
215
+ }
216
+
217
+ if (zoomToBaseLevel) {
218
+ connectedView.navTo(r2)
219
+ } else {
220
+ const r =
221
+ assemblyManager
222
+ .get(connectedView.assemblyNames[0]!)
223
+ ?.getCanonicalRefName(r2.refName) ?? r2.refName
224
+ connectedView.centerAt(r2.start, r)
225
+ }
226
+ },
201
227
  }))
228
+ .actions(self => {
229
+ // store reference to the original action from react-msaview
230
+ const superSetMouseClickPos = self.setMouseClickPos
231
+
232
+ return {
233
+ /**
234
+ * #action
235
+ * overrides base setMouseClickPos to trigger navigation
236
+ */
237
+ setMouseClickPos(col?: number, row?: number) {
238
+ superSetMouseClickPos(col, row)
239
+ if (col !== undefined) {
240
+ self.handleMsaClick(col)
241
+ }
242
+ },
243
+ }
244
+ })
202
245
 
203
246
  .views(self => ({
204
247
  /**
@@ -241,12 +284,12 @@ export default function stateModelFactory() {
241
284
  if (self.blastParams) {
242
285
  try {
243
286
  self.setProgress('Submitting query')
287
+ self.setError(undefined)
244
288
  const data = await doLaunchBlast({
245
- self: self as JBrowsePluginMsaViewModel,
289
+ self,
246
290
  })
247
291
  self.setData(data)
248
292
  self.setBlastParams(undefined)
249
- self.setProgress('')
250
293
  } catch (e) {
251
294
  self.setError(e)
252
295
  console.error(e)
@@ -273,33 +316,6 @@ export default function stateModelFactory() {
273
316
  self.setConnectedHighlights([r1, r2].filter(f => !!f))
274
317
  }),
275
318
  )
276
-
277
- // nav to genome position after click
278
- addDisposer(
279
- self,
280
- autorun(() => {
281
- const { connectedView, zoomToBaseLevel, mouseClickCol } = self
282
- const { assemblyManager } = getSession(self)
283
- const r2 =
284
- mouseClickCol === undefined
285
- ? undefined
286
- : msaCoordToGenomeCoord({ model: self, coord: mouseClickCol })
287
-
288
- if (!r2 || !connectedView) {
289
- return
290
- }
291
-
292
- if (zoomToBaseLevel) {
293
- connectedView.navTo(r2)
294
- } else {
295
- const r =
296
- assemblyManager
297
- .get(connectedView.assemblyNames[0]!)
298
- ?.getCanonicalRefName(r2.refName) ?? r2.refName
299
- connectedView.centerAt(r2.start, r)
300
- }
301
- }),
302
- )
303
319
  },
304
320
  }))
305
321
  }
@@ -1,28 +1,53 @@
1
- import { JBrowsePluginMsaViewModel } from './model'
1
+ /**
2
+ * Convert gapped MSA column coordinate to ungapped sequence coordinate
3
+ * This is the inverse of ungappedCoordMap
4
+ */
5
+ function gappedToUngappedCoord(seq: string, gappedPos: number): number {
6
+ let ungappedPos = 0
7
+ for (let i = 0; i < gappedPos && i < seq.length; i++) {
8
+ if (seq[i] !== '-') {
9
+ ungappedPos++
10
+ }
11
+ }
12
+ return ungappedPos
13
+ }
2
14
 
3
15
  export function msaCoordToGenomeCoord({
4
16
  model,
5
17
  coord: mouseCol,
6
18
  }: {
7
- model: JBrowsePluginMsaViewModel
19
+ model: { querySeqName: string; transcriptToMsaMap: any; rows: string[][] }
8
20
  coord: number
9
21
  }) {
10
- const { transcriptToMsaMap } = model
22
+ const { querySeqName, transcriptToMsaMap } = model
11
23
  if (transcriptToMsaMap === undefined) {
12
- return
13
- }
24
+ return undefined
25
+ } else {
26
+ // Get the query sequence
27
+ const queryRow = model.rows.find(f => f[0] === querySeqName)
28
+ const querySeq = queryRow?.[1]
29
+ if (!querySeq) {
30
+ return undefined
31
+ }
14
32
 
15
- const c = mouseCol
16
- const k1 = model.seqCoordToRowSpecificGlobalCoord('QUERY', c) || 0
17
- const k2 = model.seqCoordToRowSpecificGlobalCoord('QUERY', c + 1) || 0
18
- const { refName, p2g } = transcriptToMsaMap
19
- const s = p2g[k1]
20
- const e = p2g[k2]
21
- return s !== undefined && e !== undefined
22
- ? {
23
- refName,
24
- start: Math.min(s, e),
25
- end: Math.max(s, e),
26
- }
27
- : undefined
33
+ // Check if the position in the query sequence is a gap
34
+ if (querySeq[mouseCol] === '-') {
35
+ return undefined
36
+ }
37
+
38
+ // Convert gapped MSA column to ungapped sequence coordinate
39
+ const ungappedPos = gappedToUngappedCoord(querySeq, mouseCol)
40
+
41
+ // Use the ungapped position to look up in the p2g map
42
+ const { refName, p2g } = transcriptToMsaMap
43
+ const s = p2g[ungappedPos]
44
+ const e = p2g[ungappedPos + 1]
45
+ return s !== undefined && e !== undefined
46
+ ? {
47
+ refName,
48
+ start: Math.min(s, e),
49
+ end: Math.max(s, e),
50
+ }
51
+ : undefined
52
+ }
28
53
  }
@@ -5,8 +5,8 @@ export function checkHovered(hovered: unknown): hovered is {
5
5
  hoverPosition: { coord: number; refName: string }
6
6
  } {
7
7
  return (
8
- !!hovered &&
9
- typeof hovered == 'object' &&
8
+ typeof hovered === 'object' &&
9
+ hovered !== null &&
10
10
  'hoverFeature' in hovered &&
11
11
  'hoverPosition' in hovered
12
12
  )
package/src/index.ts CHANGED
@@ -1,10 +1,13 @@
1
1
  import Plugin from '@jbrowse/core/Plugin'
2
2
  import PluginManager from '@jbrowse/core/PluginManager'
3
+ import { ConfigurationSchema } from '@jbrowse/core/configuration'
3
4
  import { AbstractSessionModel, isAbstractMenuManager } from '@jbrowse/core/util'
4
5
  import GridOn from '@mui/icons-material/GridOn'
6
+ import { types } from 'mobx-state-tree'
5
7
 
6
8
  import { version } from '../package.json'
7
9
  import AddHighlightModelF from './AddHighlightModel'
10
+ import BgzipFastaMsaAdapterF from './BgzipFastaMsaAdapter'
8
11
  import LaunchMsaViewF from './LaunchMsaView'
9
12
  import MsaViewF from './MsaViewPanel'
10
13
 
@@ -16,6 +19,7 @@ export default class MsaViewPlugin extends Plugin {
16
19
  MsaViewF(pluginManager)
17
20
  LaunchMsaViewF(pluginManager)
18
21
  AddHighlightModelF(pluginManager)
22
+ BgzipFastaMsaAdapterF(pluginManager)
19
23
  }
20
24
 
21
25
  configure(pluginManager: PluginManager) {
@@ -29,4 +33,31 @@ export default class MsaViewPlugin extends Plugin {
29
33
  })
30
34
  }
31
35
  }
36
+
37
+ // @ts-expect-error
38
+ rootConfigurationSchema(pluginManager: PluginManager) {
39
+ return {
40
+ msa: ConfigurationSchema('MSA', {
41
+ datasets: types.maybe(
42
+ types.array(
43
+ ConfigurationSchema('MSAEntry', {
44
+ datasetId: {
45
+ type: 'string',
46
+ defaultValue: '',
47
+ },
48
+ description: {
49
+ type: 'string',
50
+ defaultValue: '',
51
+ },
52
+ name: {
53
+ type: 'string',
54
+ defaultValue: '',
55
+ },
56
+ adapter: pluginManager.pluggableConfigSchemaType('adapter'),
57
+ }),
58
+ ),
59
+ ),
60
+ }),
61
+ }
62
+ }
32
63
  }
@@ -1,4 +1,6 @@
1
- export async function myfetch(url: string, args?: RequestInit) {
1
+ import { ungzip } from 'pako'
2
+
3
+ export async function handleFetch(url: string, args?: RequestInit) {
2
4
  const response = await fetch(url, args)
3
5
 
4
6
  if (!response.ok) {
@@ -11,15 +13,41 @@ export async function myfetch(url: string, args?: RequestInit) {
11
13
  }
12
14
 
13
15
  export async function textfetch(url: string, args?: RequestInit) {
14
- const response = await myfetch(url, args)
16
+ const response = await handleFetch(url, args)
15
17
  return response.text()
16
18
  }
17
19
 
18
20
  export async function jsonfetch<T>(url: string, args?: RequestInit) {
19
- const response = await myfetch(url, args)
21
+ const response = await handleFetch(url, args)
20
22
  return response.json() as Promise<T>
21
23
  }
22
24
 
23
25
  export function timeout(time: number) {
24
26
  return new Promise(res => setTimeout(res, time))
25
27
  }
28
+
29
+ export async function fetchWithLocalStorageCache<T>(
30
+ key: string,
31
+ fetchFn: () => Promise<T>,
32
+ ): Promise<T> {
33
+ const cachedData = localStorage.getItem(key)
34
+
35
+ if (cachedData) {
36
+ try {
37
+ return JSON.parse(cachedData) as T
38
+ } catch (error) {
39
+ console.error(`Error parsing cached data for ${key}:`, error)
40
+ // Continue to fetch fresh data if parsing fails
41
+ localStorage.removeItem(key)
42
+ }
43
+ }
44
+
45
+ const data = await fetchFn()
46
+ localStorage.setItem(key, JSON.stringify(data))
47
+ return data
48
+ }
49
+
50
+ export async function unzipfetch(url: string, arg?: RequestInit) {
51
+ const res = await handleFetch(url, arg)
52
+ return ungzip(await res.arrayBuffer(), { to: 'string' })
53
+ }
@@ -1 +0,0 @@
1
- {"version":3,"file":"ExternalLink.js","sourceRoot":"","sources":["../src/ExternalLink.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,aAAa,MAAM,+BAA+B,CAAA;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AAIpC,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,KAAgB;IACnD,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAA;IACnC,OAAO,CACL,oBAAC,IAAI,OAAK,IAAI,EAAE,MAAM,EAAC,QAAQ,EAAC,GAAG,EAAC,YAAY;QAC7C,QAAQ;;QAAE,oBAAC,aAAa,IAAC,QAAQ,EAAC,OAAO,GAAG,CACxC,CACR,CAAA;AACH,CAAC"}
@@ -1 +0,0 @@
1
- export declare function fetchGeneList(): Promise<string[]>;
@@ -1,12 +0,0 @@
1
- export async function fetchGeneList() {
2
- const res = await fetch('https://jbrowse.org/demos/msaview/knownCanonical/list.txt');
3
- if (!res.ok) {
4
- throw new Error(`HTTP ${res.status} fetching list ${await res.text()}`);
5
- }
6
- const result = await res.text();
7
- return result
8
- .split('\n')
9
- .map(f => f.trim())
10
- .filter(f => !!f);
11
- }
12
- //# sourceMappingURL=fetchGeneList.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fetchGeneList.js","sourceRoot":"","sources":["../../../../src/LaunchMsaView/components/PreLoadedMSA/fetchGeneList.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,GAAG,GAAG,MAAM,KAAK,CACrB,2DAA2D,CAC5D,CAAA;IACD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,MAAM,kBAAkB,MAAM,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;IACzE,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;IAC/B,OAAO,MAAM;SACV,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SAClB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACrB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ReadOnlyTextField2.js","sourceRoot":"","sources":["../src/ReadOnlyTextField2.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE1C,OAAO,UAAU,MAAM,cAAc,CAAA;AAErC,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC;IAC7B,YAAY,EAAE;QACZ,UAAU,EAAE,aAAa;KAC1B;CACF,CAAC,CAAA;AAEF,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,EAAE,KAAK,EAAqB;IACrE,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,CAAA;IAC/B,OAAO,CACL,oBAAC,UAAU,IACT,OAAO,EAAC,UAAU,EAClB,SAAS,QACT,OAAO,EAAE,CAAC,EACV,OAAO,EAAE,EAAE,EACX,SAAS,QACT,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE;YACT,KAAK,EAAE;gBACL,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE;oBACP,KAAK,EAAE,OAAO,CAAC,YAAY;iBAC5B;aACF;SACF,GACD,CACH,CAAA;AACH,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TextField2.js","sourceRoot":"","sources":["../src/TextField2.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAIzC,SAAS,UAAU,CAAC,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAkB;IACvD,OAAO,CACL;QACE,oBAAC,SAAS,OAAK,IAAI,IAAG,QAAQ,CAAa,CACvC,CACP,CAAA;AACH,CAAC;AAED,eAAe,UAAU,CAAA"}
@@ -1,13 +0,0 @@
1
- export async function fetchGeneList() {
2
- const res = await fetch(
3
- 'https://jbrowse.org/demos/msaview/knownCanonical/list.txt',
4
- )
5
- if (!res.ok) {
6
- throw new Error(`HTTP ${res.status} fetching list ${await res.text()}`)
7
- }
8
- const result = await res.text()
9
- return result
10
- .split('\n')
11
- .map(f => f.trim())
12
- .filter(f => !!f)
13
- }