@apollo-annotation/jbrowse-plugin-apollo 0.3.4 → 0.3.6

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 (131) hide show
  1. package/dist/index.esm.js +5466 -4490
  2. package/dist/index.esm.js.map +1 -1
  3. package/dist/jbrowse-plugin-apollo.cjs.development.js +5283 -4318
  4. package/dist/jbrowse-plugin-apollo.cjs.development.js.map +1 -1
  5. package/dist/jbrowse-plugin-apollo.cjs.production.min.js +1 -1
  6. package/dist/jbrowse-plugin-apollo.cjs.production.min.js.map +1 -1
  7. package/dist/jbrowse-plugin-apollo.umd.development.js +6806 -4088
  8. package/dist/jbrowse-plugin-apollo.umd.development.js.map +1 -1
  9. package/dist/jbrowse-plugin-apollo.umd.production.min.js +1 -1
  10. package/dist/jbrowse-plugin-apollo.umd.production.min.js.map +1 -1
  11. package/package.json +4 -4
  12. package/src/ApolloInternetAccount/addMenuItems.ts +5 -2
  13. package/src/ApolloInternetAccount/components/AuthTypeSelector.tsx +1 -0
  14. package/src/ApolloInternetAccount/components/LoginButtons.tsx +1 -1
  15. package/src/ApolloInternetAccount/components/LoginIcons.tsx +1 -1
  16. package/src/ApolloInternetAccount/configSchema.ts +1 -1
  17. package/src/ApolloInternetAccount/model.ts +11 -10
  18. package/src/ApolloJobModel.ts +1 -1
  19. package/src/ApolloRefNameAliasAdapter/ApolloRefNameAliasAdapter.ts +8 -6
  20. package/src/ApolloRefNameAliasAdapter/index.ts +2 -2
  21. package/src/ApolloSequenceAdapter/ApolloSequenceAdapter.ts +17 -4
  22. package/src/ApolloSequenceAdapter/index.ts +1 -1
  23. package/src/ApolloTextSearchAdapter/ApolloTextSearchAdapter.ts +8 -7
  24. package/src/ApolloTextSearchAdapter/index.ts +1 -1
  25. package/src/BackendDrivers/BackendDriver.ts +7 -7
  26. package/src/BackendDrivers/CollaborationServerDriver.ts +14 -10
  27. package/src/BackendDrivers/DesktopFileDriver.ts +11 -10
  28. package/src/BackendDrivers/InMemoryFileDriver.ts +10 -6
  29. package/src/ChangeManager.ts +5 -5
  30. package/src/FeatureDetailsWidget/ApolloFeatureDetailsWidget.tsx +92 -20
  31. package/src/FeatureDetailsWidget/ApolloTranscriptDetailsWidget.tsx +170 -27
  32. package/src/FeatureDetailsWidget/AttributeKey.tsx +50 -0
  33. package/src/FeatureDetailsWidget/AttributeKeySelector.tsx +104 -0
  34. package/src/FeatureDetailsWidget/Attributes.tsx +213 -320
  35. package/src/FeatureDetailsWidget/BasicInformation.tsx +8 -9
  36. package/src/FeatureDetailsWidget/DefaultAttributeEditor.tsx +104 -0
  37. package/src/FeatureDetailsWidget/DefaultAttributeViewer.tsx +22 -0
  38. package/src/FeatureDetailsWidget/FeatureDetailsNavigation.tsx +10 -8
  39. package/src/FeatureDetailsWidget/NumberTextField.tsx +1 -1
  40. package/src/FeatureDetailsWidget/Sequence.tsx +18 -35
  41. package/src/FeatureDetailsWidget/StringTextField.tsx +1 -1
  42. package/src/FeatureDetailsWidget/TranscriptSequence.tsx +140 -95
  43. package/src/FeatureDetailsWidget/TranscriptWidgetEditLocation.tsx +600 -0
  44. package/src/FeatureDetailsWidget/TranscriptWidgetSummary.tsx +54 -0
  45. package/src/FeatureDetailsWidget/model.ts +8 -3
  46. package/src/LinearApolloDisplay/components/LinearApolloDisplay.tsx +19 -12
  47. package/src/LinearApolloDisplay/glyphs/BoxGlyph.ts +19 -41
  48. package/src/LinearApolloDisplay/glyphs/GeneGlyph.ts +44 -22
  49. package/src/LinearApolloDisplay/glyphs/GenericChildGlyph.ts +6 -5
  50. package/src/LinearApolloDisplay/glyphs/Glyph.ts +7 -7
  51. package/src/LinearApolloDisplay/stateModel/base.ts +52 -10
  52. package/src/LinearApolloDisplay/stateModel/index.ts +4 -3
  53. package/src/LinearApolloDisplay/stateModel/layouts.ts +8 -34
  54. package/src/LinearApolloDisplay/stateModel/mouseEvents.ts +13 -12
  55. package/src/LinearApolloDisplay/stateModel/rendering.ts +63 -31
  56. package/src/LinearApolloSixFrameDisplay/components/LinearApolloSixFrameDisplay.tsx +221 -0
  57. package/src/LinearApolloSixFrameDisplay/components/TrackLines.tsx +40 -0
  58. package/src/LinearApolloSixFrameDisplay/components/index.ts +2 -0
  59. package/src/LinearApolloSixFrameDisplay/configSchema.ts +7 -0
  60. package/src/LinearApolloSixFrameDisplay/glyphs/GeneGlyph.ts +821 -0
  61. package/src/LinearApolloSixFrameDisplay/glyphs/Glyph.ts +63 -0
  62. package/src/LinearApolloSixFrameDisplay/glyphs/index.ts +1 -0
  63. package/src/LinearApolloSixFrameDisplay/index.ts +2 -0
  64. package/src/LinearApolloSixFrameDisplay/stateModel/base.ts +261 -0
  65. package/src/LinearApolloSixFrameDisplay/stateModel/index.ts +27 -0
  66. package/src/LinearApolloSixFrameDisplay/stateModel/layouts.ts +236 -0
  67. package/src/LinearApolloSixFrameDisplay/stateModel/mouseEvents.ts +349 -0
  68. package/src/LinearApolloSixFrameDisplay/stateModel/rendering.ts +199 -0
  69. package/src/LinearApolloSixFrameDisplay/types.ts +1 -0
  70. package/src/OntologyManager/OntologyStore/fulltext-stopwords.ts +10 -1
  71. package/src/OntologyManager/OntologyStore/fulltext.test.ts +1 -1
  72. package/src/OntologyManager/OntologyStore/fulltext.ts +8 -3
  73. package/src/OntologyManager/OntologyStore/index.test.ts +4 -1
  74. package/src/OntologyManager/OntologyStore/index.ts +19 -14
  75. package/src/OntologyManager/OntologyStore/indexeddb-schema.ts +6 -5
  76. package/src/OntologyManager/OntologyStore/indexeddb-storage.ts +11 -5
  77. package/src/OntologyManager/index.ts +10 -6
  78. package/src/OntologyManager/util.ts +3 -2
  79. package/src/TabularEditor/HybridGrid/ChangeHandling.ts +2 -2
  80. package/src/TabularEditor/HybridGrid/Feature.tsx +9 -8
  81. package/src/TabularEditor/HybridGrid/FeatureAttributes.tsx +1 -1
  82. package/src/TabularEditor/HybridGrid/HybridGrid.tsx +3 -2
  83. package/src/TabularEditor/HybridGrid/NumberCell.tsx +8 -1
  84. package/src/TabularEditor/HybridGrid/ToolBar.tsx +15 -13
  85. package/src/TabularEditor/HybridGrid/featureContextMenuItems.ts +9 -33
  86. package/src/TabularEditor/TabularEditorPane.tsx +1 -1
  87. package/src/TabularEditor/model.ts +2 -2
  88. package/src/TabularEditor/types.ts +5 -2
  89. package/src/components/AddAssembly.tsx +611 -291
  90. package/src/components/AddChildFeature.tsx +6 -5
  91. package/src/components/AddFeature.tsx +211 -38
  92. package/src/components/AddRefSeqAliases.tsx +14 -12
  93. package/src/components/CopyFeature.tsx +8 -7
  94. package/src/components/CreateApolloAnnotation.tsx +154 -46
  95. package/src/components/DeleteAssembly.tsx +9 -8
  96. package/src/components/DeleteFeature.tsx +5 -4
  97. package/src/components/Dialog.tsx +1 -1
  98. package/src/components/DownloadGFF3.tsx +11 -10
  99. package/src/components/FilterFeatures.tsx +6 -4
  100. package/src/components/ImportFeatures.tsx +7 -6
  101. package/src/components/LogOut.tsx +5 -4
  102. package/src/components/ManageChecks.tsx +9 -8
  103. package/src/components/ManageUsers.tsx +11 -10
  104. package/src/components/OntologyTermAutocomplete.tsx +5 -5
  105. package/src/components/OntologyTermMultiSelect.tsx +9 -6
  106. package/src/components/OpenLocalFile.tsx +4 -3
  107. package/src/components/ViewChangeLog.tsx +7 -6
  108. package/src/components/ViewCheckResults.tsx +8 -7
  109. package/src/components/index.ts +0 -1
  110. package/src/extensions/annotationFromJBrowseFeature.test.ts +1 -0
  111. package/src/extensions/annotationFromJBrowseFeature.ts +14 -12
  112. package/src/extensions/annotationFromPileup.ts +6 -6
  113. package/src/index.ts +33 -50
  114. package/src/makeDisplayComponent.tsx +93 -41
  115. package/src/session/ClientDataStore.ts +21 -17
  116. package/src/session/session.ts +20 -26
  117. package/src/types.ts +4 -4
  118. package/src/util/annotationFeatureUtils.ts +53 -0
  119. package/src/util/index.ts +4 -3
  120. package/src/util/loadAssemblyIntoClient.ts +10 -3
  121. package/src/ApolloSixFrameRenderer/ApolloSixFrameRenderer.tsx +0 -13
  122. package/src/ApolloSixFrameRenderer/components/ApolloRendering.tsx +0 -707
  123. package/src/ApolloSixFrameRenderer/configSchema.ts +0 -7
  124. package/src/ApolloSixFrameRenderer/index.ts +0 -3
  125. package/src/FeatureDetailsWidget/TranscriptBasic.tsx +0 -200
  126. package/src/SixFrameFeatureDisplay/components/TrackLines.tsx +0 -19
  127. package/src/SixFrameFeatureDisplay/components/index.ts +0 -1
  128. package/src/SixFrameFeatureDisplay/configSchema.ts +0 -21
  129. package/src/SixFrameFeatureDisplay/index.ts +0 -2
  130. package/src/SixFrameFeatureDisplay/stateModel.ts +0 -439
  131. package/src/components/ModifyFeatureAttribute.tsx +0 -460
@@ -1,17 +1,23 @@
1
1
  /* eslint-disable @typescript-eslint/no-unnecessary-condition */
2
2
  import { openLocation } from '@jbrowse/core/util/io'
3
3
  import equal from 'fast-deep-equal/es6'
4
- import { IDBPDatabase, IDBPTransaction, openDB } from 'idb/with-async-ittr'
4
+ import {
5
+ type IDBPDatabase,
6
+ type IDBPTransaction,
7
+ openDB,
8
+ } from 'idb/with-async-ittr'
9
+
10
+ import { defaultTextIndexFields } from '..'
5
11
 
6
12
  import { PREFIXED_ID_PATH, getWords } from './fulltext'
7
13
  import {
8
- OntologyDB,
14
+ type OntologyDB,
9
15
  isOntologyDBEdge,
10
16
  isOntologyDBNode,
11
17
  } from './indexeddb-schema'
12
- import { GraphDocument } from './obo-graph-json-schema'
13
- import OntologyStore from '.'
14
- import { defaultTextIndexFields } from '..'
18
+ import { type GraphDocument } from './obo-graph-json-schema'
19
+
20
+ import type OntologyStore from '.'
15
21
 
16
22
  /** schema version we are currently on, used for the IndexedDB schema open call */
17
23
  const schemaVersion = 2
@@ -1,5 +1,5 @@
1
1
  import {
2
- AnyConfigurationModel,
2
+ type AnyConfigurationModel,
3
3
  ConfigurationSchema,
4
4
  readConfObject,
5
5
  } from '@jbrowse/core/configuration'
@@ -10,18 +10,20 @@ import {
10
10
  } from '@jbrowse/core/util/types/mst'
11
11
  import { autorun } from 'mobx'
12
12
  import {
13
- Instance,
13
+ type Instance,
14
14
  addDisposer,
15
15
  flow,
16
16
  getRoot,
17
17
  getSnapshot,
18
18
  types,
19
19
  } from 'mobx-state-tree'
20
- import OntologyStore, { OntologyStoreOptions } from './OntologyStore'
21
- import { OntologyDBNode } from './OntologyStore/indexeddb-schema'
20
+
21
+ import type ApolloPluginConfigurationSchema from '../config'
22
+ import { type ApolloRootModel } from '../types'
23
+
24
+ import OntologyStore, { type OntologyStoreOptions } from './OntologyStore'
25
+ import { type OntologyDBNode } from './OntologyStore/indexeddb-schema'
22
26
  import { applyPrefixes, expandPrefixes } from './OntologyStore/prefixes'
23
- import ApolloPluginConfigurationSchema from '../config'
24
- import { ApolloRootModel } from '../types'
25
27
 
26
28
  export { isDeprecated } from './OntologyStore/indexeddb-schema'
27
29
 
@@ -87,7 +89,9 @@ export const OntologyRecordType = types
87
89
  return
88
90
  }
89
91
  void self.loadEquivalentTypes('gene')
92
+ void self.loadEquivalentTypes('pseudogene')
90
93
  void self.loadEquivalentTypes('transcript')
94
+ void self.loadEquivalentTypes('pseudogenic_transcript')
91
95
  void self.loadEquivalentTypes('CDS')
92
96
  void self.loadEquivalentTypes('mRNA')
93
97
  reaction.dispose()
@@ -1,6 +1,7 @@
1
- import { AnnotationFeature } from '@apollo-annotation/mst'
1
+ import { type AnnotationFeature } from '@apollo-annotation/mst'
2
+
3
+ import type OntologyStore from './OntologyStore'
2
4
 
3
- import OntologyStore from './OntologyStore'
4
5
  import { isOntologyClass } from '.'
5
6
 
6
7
  export async function fetchValidDescendantTerms(
@@ -1,11 +1,11 @@
1
- import type { AnnotationFeature } from '@apollo-annotation/mst'
1
+ import { type AnnotationFeature } from '@apollo-annotation/mst'
2
2
  import {
3
3
  LocationEndChange,
4
4
  LocationStartChange,
5
5
  TypeChange,
6
6
  } from '@apollo-annotation/shared'
7
7
 
8
- import type { ChangeManager } from '../../ChangeManager'
8
+ import { type ChangeManager } from '../../ChangeManager'
9
9
 
10
10
  export function handleFeatureTypeChange(
11
11
  changeManager: ChangeManager,
@@ -1,26 +1,26 @@
1
- /* eslint-disable @typescript-eslint/use-unknown-in-catch-callback-variable */
2
1
  /* eslint-disable unicorn/no-nested-ternary */
3
2
  /* eslint-disable @typescript-eslint/unbound-method */
4
3
 
5
- import { AnnotationFeature } from '@apollo-annotation/mst'
6
- import { AbstractSessionModel } from '@jbrowse/core/util'
4
+ import { type AnnotationFeature } from '@apollo-annotation/mst'
5
+ import { type AbstractSessionModel } from '@jbrowse/core/util'
7
6
  import { observer } from 'mobx-react'
8
7
  import React from 'react'
9
8
  import { makeStyles } from 'tss-react/mui'
10
9
 
11
- import { OntologyTermAutocomplete } from '../../components/OntologyTermAutocomplete'
12
10
  import { isOntologyClass } from '../../OntologyManager'
13
- import OntologyStore from '../../OntologyManager/OntologyStore'
14
- import { DisplayStateModel } from '../types'
11
+ import type OntologyStore from '../../OntologyManager/OntologyStore'
12
+ import { OntologyTermAutocomplete } from '../../components/OntologyTermAutocomplete'
13
+ import { type DisplayStateModel } from '../types'
14
+
15
15
  import {
16
16
  handleFeatureEndChange,
17
17
  handleFeatureStartChange,
18
18
  handleFeatureTypeChange,
19
19
  } from './ChangeHandling'
20
20
  import { FeatureAttributes } from './FeatureAttributes'
21
- import { featureContextMenuItems } from './featureContextMenuItems'
22
- import type { ContextMenuState } from './HybridGrid'
21
+ import { type ContextMenuState } from './HybridGrid'
23
22
  import { NumberCell } from './NumberCell'
23
+ import { featureContextMenuItems } from './featureContextMenuItems'
24
24
 
25
25
  const useStyles = makeStyles()((theme) => ({
26
26
  typeContent: {
@@ -133,6 +133,7 @@ export const Feature = observer(function Feature({
133
133
  displayState.setApolloHover({
134
134
  feature,
135
135
  topLevelFeature: getTopLevelFeature(feature),
136
+ // @ts-expect-error TODO fix in future when moving hover logic to session.
136
137
  glyph: displayState.getGlyph(getTopLevelFeature(feature)),
137
138
  })
138
139
  }}
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable @typescript-eslint/restrict-template-expressions */
2
- import { AnnotationFeature } from '@apollo-annotation/mst'
2
+ import { type AnnotationFeature } from '@apollo-annotation/mst'
3
3
  import { observer } from 'mobx-react'
4
4
  import { getSnapshot } from 'mobx-state-tree'
5
5
  import React from 'react'
@@ -1,10 +1,11 @@
1
- import { Menu, MenuItem } from '@jbrowse/core/ui'
1
+ import { Menu, type MenuItem } from '@jbrowse/core/ui'
2
2
  import { useTheme } from '@mui/material'
3
3
  import { observer } from 'mobx-react'
4
4
  import React, { useEffect, useRef, useState } from 'react'
5
5
  import { makeStyles } from 'tss-react/mui'
6
6
 
7
- import { DisplayStateModel } from '../types'
7
+ import { type DisplayStateModel } from '../types'
8
+
8
9
  import { Feature } from './Feature'
9
10
 
10
11
  const useStyles = makeStyles()((theme) => ({
@@ -1,5 +1,4 @@
1
1
  /* eslint-disable @typescript-eslint/unbound-method */
2
- /* eslint-disable @typescript-eslint/use-unknown-in-catch-callback-variable */
3
2
  import { observer } from 'mobx-react'
4
3
  import React, { useEffect, useState } from 'react'
5
4
  import { makeStyles } from 'tss-react/mui'
@@ -37,6 +36,14 @@ export const NumberCell = observer(function NumberCell({
37
36
  const [blur, setBlur] = useState(false)
38
37
  const [inputNode, setInputNode] = useState<HTMLInputElement | null>(null)
39
38
  const { classes } = useStyles()
39
+
40
+ useEffect(() => {
41
+ if (initialValue !== value) {
42
+ setValue(initialValue)
43
+ }
44
+ // eslint-disable-next-line react-hooks/exhaustive-deps
45
+ }, [initialValue])
46
+
40
47
  useEffect(() => {
41
48
  if (blur) {
42
49
  inputNode?.blur()
@@ -6,7 +6,7 @@ import { observer } from 'mobx-react'
6
6
  import React from 'react'
7
7
  import { makeStyles } from 'tss-react/mui'
8
8
 
9
- import { DisplayStateModel } from '../types'
9
+ import { type DisplayStateModel } from '../types'
10
10
 
11
11
  const useStyles = makeStyles()({
12
12
  toolbar: {
@@ -47,18 +47,20 @@ export const ToolBar = observer(function ToolBar({
47
47
  onChange={(event) => {
48
48
  model.setFilterText(event.target.value)
49
49
  }}
50
- InputProps={{
51
- endAdornment: (
52
- <InputAdornment position="end">
53
- <IconButton
54
- onClick={() => {
55
- model.clearFilterText()
56
- }}
57
- >
58
- <ClearIcon />
59
- </IconButton>
60
- </InputAdornment>
61
- ),
50
+ slotProps={{
51
+ input: {
52
+ endAdornment: (
53
+ <InputAdornment position="end">
54
+ <IconButton
55
+ onClick={() => {
56
+ model.clearFilterText()
57
+ }}
58
+ >
59
+ <ClearIcon />
60
+ </IconButton>
61
+ </InputAdornment>
62
+ ),
63
+ },
62
64
  }}
63
65
  />
64
66
  </div>
@@ -1,19 +1,14 @@
1
- import { AnnotationFeature } from '@apollo-annotation/mst'
2
- import { MenuItem } from '@jbrowse/core/ui'
1
+ import { type AnnotationFeature } from '@apollo-annotation/mst'
2
+ import { type MenuItem } from '@jbrowse/core/ui'
3
3
  import {
4
- AbstractSessionModel,
5
- SessionWithWidgets,
4
+ type AbstractSessionModel,
5
+ type SessionWithWidgets,
6
6
  isSessionModelWithWidgets,
7
7
  } from '@jbrowse/core/util'
8
8
 
9
- import { ChangeManager } from '../../ChangeManager'
10
- import {
11
- AddChildFeature,
12
- CopyFeature,
13
- DeleteFeature,
14
- ModifyFeatureAttribute,
15
- } from '../../components'
16
- import { ApolloSessionModel } from '../../session'
9
+ import { type ChangeManager } from '../../ChangeManager'
10
+ import { AddChildFeature, CopyFeature, DeleteFeature } from '../../components'
11
+ import { type ApolloSessionModel } from '../../session'
17
12
  import { getApolloInternetAccount } from '../../util'
18
13
 
19
14
  export function featureContextMenuItems(
@@ -116,33 +111,14 @@ export function featureContextMenuItems(
116
111
  )
117
112
  },
118
113
  },
119
- {
120
- label: 'Edit attributes',
121
- disabled: readOnly,
122
- onClick: () => {
123
- ;(session as unknown as AbstractSessionModel).queueDialog(
124
- (doneCallback) => [
125
- ModifyFeatureAttribute,
126
- {
127
- session,
128
- handleClose: () => {
129
- doneCallback()
130
- },
131
- changeManager,
132
- sourceFeature: feature,
133
- sourceAssemblyId: currentAssemblyId,
134
- },
135
- ],
136
- )
137
- },
138
- },
139
114
  )
140
115
  const { featureTypeOntology } = session.apolloDataStore.ontologyManager
141
116
  if (!featureTypeOntology) {
142
117
  throw new Error('featureTypeOntology is undefined')
143
118
  }
144
119
  if (
145
- featureTypeOntology.isTypeOf(feature.type, 'transcript') &&
120
+ (featureTypeOntology.isTypeOf(feature.type, 'transcript') ||
121
+ featureTypeOntology.isTypeOf(feature.type, 'pseudogenic_transcript')) &&
146
122
  isSessionModelWithWidgets(session)
147
123
  ) {
148
124
  menuItems.push({
@@ -3,7 +3,7 @@ import React from 'react'
3
3
 
4
4
  import HybridGrid from './HybridGrid'
5
5
  import { ToolBar } from './HybridGrid/ToolBar'
6
- import { DisplayStateModel } from './types'
6
+ import { type DisplayStateModel } from './types'
7
7
 
8
8
  function stopPropagation(e: React.MouseEvent) {
9
9
  e.stopPropagation()
@@ -1,6 +1,6 @@
1
- import { Instance, getParent, types } from 'mobx-state-tree'
1
+ import { type Instance, getParent, types } from 'mobx-state-tree'
2
2
 
3
- import { DisplayStateModel } from './types'
3
+ import { type DisplayStateModel } from './types'
4
4
 
5
5
  export const TabularEditorStateModelType = types
6
6
  .model('TabularEditor', {
@@ -1,3 +1,6 @@
1
- import { LinearApolloDisplay } from '../LinearApolloDisplay/stateModel'
1
+ import { type LinearApolloDisplay } from '../LinearApolloDisplay/stateModel'
2
+ import { type LinearApolloSixFrameDisplay } from '../LinearApolloSixFrameDisplay/stateModel'
2
3
 
3
- export type DisplayStateModel = LinearApolloDisplay
4
+ export type DisplayStateModel =
5
+ | LinearApolloDisplay
6
+ | LinearApolloSixFrameDisplay