@apollo-annotation/jbrowse-plugin-apollo 0.3.13 → 1.0.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 (192) hide show
  1. package/dist/ApolloRefNameAliasAdapter/ApolloRefNameAliasAdapter.d.ts +1 -1
  2. package/dist/ApolloRefNameAliasAdapter/ApolloRefNameAliasAdapter.d.ts.map +1 -1
  3. package/dist/BackendDrivers/BackendDriver.d.ts +29 -4
  4. package/dist/BackendDrivers/BackendDriver.d.ts.map +1 -1
  5. package/dist/BackendDrivers/CollaborationServerDriver.d.ts +3 -1
  6. package/dist/BackendDrivers/CollaborationServerDriver.d.ts.map +1 -1
  7. package/dist/BackendDrivers/LocalDriver/LocalDriver.d.ts +22 -0
  8. package/dist/BackendDrivers/LocalDriver/LocalDriver.d.ts.map +1 -0
  9. package/dist/BackendDrivers/LocalDriver/db.d.ts +4 -0
  10. package/dist/BackendDrivers/LocalDriver/db.d.ts.map +1 -0
  11. package/dist/BackendDrivers/index.d.ts +1 -2
  12. package/dist/BackendDrivers/index.d.ts.map +1 -1
  13. package/dist/ChangeManager.d.ts +3 -3
  14. package/dist/ChangeManager.d.ts.map +1 -1
  15. package/dist/FeatureDetailsWidget/ApolloTranscriptDetailsWidget.d.ts +0 -6
  16. package/dist/FeatureDetailsWidget/ApolloTranscriptDetailsWidget.d.ts.map +1 -1
  17. package/dist/FeatureDetailsWidget/TranscriptWidgetEditLocation.d.ts.map +1 -1
  18. package/dist/FeatureDetailsWidget/model.d.ts +0 -2
  19. package/dist/FeatureDetailsWidget/model.d.ts.map +1 -1
  20. package/dist/LinearApolloDisplay/components/CheckResultWarnings.d.ts.map +1 -1
  21. package/dist/LinearApolloDisplay/components/LinearApolloDisplay.d.ts.map +1 -1
  22. package/dist/LinearApolloDisplay/components/OverlayCanvas.d.ts +7 -0
  23. package/dist/LinearApolloDisplay/components/OverlayCanvas.d.ts.map +1 -0
  24. package/dist/LinearApolloDisplay/components/Tooltip.d.ts +10 -0
  25. package/dist/LinearApolloDisplay/components/Tooltip.d.ts.map +1 -0
  26. package/dist/LinearApolloDisplay/glyphs/BoxGlyph.d.ts +0 -1
  27. package/dist/LinearApolloDisplay/glyphs/BoxGlyph.d.ts.map +1 -1
  28. package/dist/LinearApolloDisplay/glyphs/CDSGlyph.d.ts +3 -0
  29. package/dist/LinearApolloDisplay/glyphs/CDSGlyph.d.ts.map +1 -0
  30. package/dist/LinearApolloDisplay/glyphs/ExonGlyph.d.ts +3 -0
  31. package/dist/LinearApolloDisplay/glyphs/ExonGlyph.d.ts.map +1 -0
  32. package/dist/LinearApolloDisplay/glyphs/GeneGlyph.d.ts.map +1 -1
  33. package/dist/LinearApolloDisplay/glyphs/GenericChildGlyph.d.ts.map +1 -1
  34. package/dist/LinearApolloDisplay/glyphs/Glyph.d.ts +26 -20
  35. package/dist/LinearApolloDisplay/glyphs/Glyph.d.ts.map +1 -1
  36. package/dist/LinearApolloDisplay/glyphs/TranscriptGlyph.d.ts +3 -0
  37. package/dist/LinearApolloDisplay/glyphs/TranscriptGlyph.d.ts.map +1 -0
  38. package/dist/LinearApolloDisplay/glyphs/util.d.ts +13 -0
  39. package/dist/LinearApolloDisplay/glyphs/util.d.ts.map +1 -1
  40. package/dist/LinearApolloDisplay/stateModel/base.d.ts +17 -0
  41. package/dist/LinearApolloDisplay/stateModel/base.d.ts.map +1 -1
  42. package/dist/LinearApolloDisplay/stateModel/index.d.ts +35 -17
  43. package/dist/LinearApolloDisplay/stateModel/index.d.ts.map +1 -1
  44. package/dist/LinearApolloDisplay/stateModel/layouts.d.ts +29 -7
  45. package/dist/LinearApolloDisplay/stateModel/layouts.d.ts.map +1 -1
  46. package/dist/LinearApolloDisplay/stateModel/mouseEvents.d.ts +69 -23
  47. package/dist/LinearApolloDisplay/stateModel/mouseEvents.d.ts.map +1 -1
  48. package/dist/LinearApolloDisplay/stateModel/rendering.d.ts +26 -9
  49. package/dist/LinearApolloDisplay/stateModel/rendering.d.ts.map +1 -1
  50. package/dist/LinearApolloReferenceSequenceDisplay/stateModel/base.d.ts +6 -0
  51. package/dist/LinearApolloReferenceSequenceDisplay/stateModel/base.d.ts.map +1 -1
  52. package/dist/LinearApolloReferenceSequenceDisplay/stateModel/index.d.ts +6 -0
  53. package/dist/LinearApolloReferenceSequenceDisplay/stateModel/index.d.ts.map +1 -1
  54. package/dist/LinearApolloReferenceSequenceDisplay/stateModel/rendering.d.ts +6 -0
  55. package/dist/LinearApolloReferenceSequenceDisplay/stateModel/rendering.d.ts.map +1 -1
  56. package/dist/LinearApolloSixFrameDisplay/components/LinearApolloSixFrameDisplay.d.ts.map +1 -1
  57. package/dist/LinearApolloSixFrameDisplay/glyphs/GeneGlyph.d.ts.map +1 -1
  58. package/dist/LinearApolloSixFrameDisplay/glyphs/Glyph.d.ts +1 -1
  59. package/dist/LinearApolloSixFrameDisplay/glyphs/Glyph.d.ts.map +1 -1
  60. package/dist/LinearApolloSixFrameDisplay/stateModel/layouts.d.ts.map +1 -1
  61. package/dist/LinearApolloSixFrameDisplay/stateModel/rendering.d.ts.map +1 -1
  62. package/dist/OntologyManager/OntologyStore/fulltext.d.ts +1 -1
  63. package/dist/OntologyManager/OntologyStore/fulltext.d.ts.map +1 -1
  64. package/dist/OntologyManager/OntologyStore/index.d.ts +2 -2
  65. package/dist/OntologyManager/OntologyStore/index.d.ts.map +1 -1
  66. package/dist/OntologyManager/OntologyStore/indexeddb-storage.d.ts +1 -1
  67. package/dist/OntologyManager/OntologyStore/indexeddb-storage.d.ts.map +1 -1
  68. package/dist/OntologyManager/OntologyStore/types.d.ts +18 -0
  69. package/dist/OntologyManager/OntologyStore/types.d.ts.map +1 -0
  70. package/dist/TabularEditor/HybridGrid/featureContextMenuItems.d.ts.map +1 -1
  71. package/dist/components/AddChildFeature.d.ts.map +1 -1
  72. package/dist/components/ColorFeature.d.ts +13 -0
  73. package/dist/components/ColorFeature.d.ts.map +1 -0
  74. package/dist/components/CreateApolloAnnotation.d.ts.map +1 -1
  75. package/dist/components/DownloadGFF3.d.ts +4 -1
  76. package/dist/components/DownloadGFF3.d.ts.map +1 -1
  77. package/dist/components/DuplicateTranscript.d.ts.map +1 -1
  78. package/dist/components/ViewChangeLog.d.ts +2 -1
  79. package/dist/components/ViewChangeLog.d.ts.map +1 -1
  80. package/dist/components/ViewCheckResults.d.ts +2 -1
  81. package/dist/components/ViewCheckResults.d.ts.map +1 -1
  82. package/dist/components/index.d.ts +1 -1
  83. package/dist/components/index.d.ts.map +1 -1
  84. package/dist/config.d.ts +4 -0
  85. package/dist/config.d.ts.map +1 -0
  86. package/dist/extensions/annotationFromJBrowseFeature.d.ts.map +1 -1
  87. package/dist/extensions/annotationFromPileup.d.ts.map +1 -1
  88. package/dist/index.d.ts +11 -0
  89. package/dist/index.d.ts.map +1 -0
  90. package/dist/index.esm.js +6325 -5997
  91. package/dist/index.esm.js.map +1 -1
  92. package/dist/jbrowse-plugin-apollo.cjs.development.js +5869 -5541
  93. package/dist/jbrowse-plugin-apollo.cjs.development.js.map +1 -1
  94. package/dist/jbrowse-plugin-apollo.cjs.production.min.js +1 -1
  95. package/dist/jbrowse-plugin-apollo.cjs.production.min.js.map +1 -1
  96. package/dist/jbrowse-plugin-apollo.umd.development.js +16782 -25897
  97. package/dist/jbrowse-plugin-apollo.umd.development.js.map +1 -1
  98. package/dist/jbrowse-plugin-apollo.umd.production.min.js +1 -1
  99. package/dist/jbrowse-plugin-apollo.umd.production.min.js.map +1 -1
  100. package/dist/makeDisplayComponent.d.ts.map +1 -1
  101. package/dist/menus/Icons.d.ts +3 -0
  102. package/dist/menus/Icons.d.ts.map +1 -0
  103. package/dist/menus/topLevelMenu.d.ts.map +1 -1
  104. package/dist/session/changeHandlers.d.ts +9 -0
  105. package/dist/session/changeHandlers.d.ts.map +1 -0
  106. package/dist/util/annotationFeatureUtils.d.ts +2 -1
  107. package/dist/util/annotationFeatureUtils.d.ts.map +1 -1
  108. package/dist/util/glyphUtils.d.ts +3 -3
  109. package/dist/util/glyphUtils.d.ts.map +1 -1
  110. package/dist/util/index.d.ts +0 -1
  111. package/dist/util/index.d.ts.map +1 -1
  112. package/package.json +4 -4
  113. package/src/ApolloInternetAccount/model.ts +68 -4
  114. package/src/ApolloRefNameAliasAdapter/ApolloRefNameAliasAdapter.ts +6 -3
  115. package/src/ApolloTextSearchAdapter/ApolloTextSearchAdapter.ts +1 -1
  116. package/src/BackendDrivers/BackendDriver.ts +36 -3
  117. package/src/BackendDrivers/CollaborationServerDriver.ts +78 -23
  118. package/src/BackendDrivers/LocalDriver/LocalDriver.ts +367 -0
  119. package/src/BackendDrivers/LocalDriver/db.ts +37 -0
  120. package/src/BackendDrivers/index.ts +1 -2
  121. package/src/ChangeManager.ts +27 -25
  122. package/src/FeatureDetailsWidget/ApolloTranscriptDetailsWidget.tsx +1 -1
  123. package/src/FeatureDetailsWidget/TranscriptWidgetEditLocation.tsx +69 -53
  124. package/src/LinearApolloDisplay/components/CheckResultWarnings.tsx +1 -5
  125. package/src/LinearApolloDisplay/components/LinearApolloDisplay.tsx +95 -115
  126. package/src/LinearApolloDisplay/components/OverlayCanvas.tsx +76 -0
  127. package/src/LinearApolloDisplay/components/Tooltip.tsx +42 -0
  128. package/src/LinearApolloDisplay/glyphs/BoxGlyph.ts +60 -302
  129. package/src/LinearApolloDisplay/glyphs/CDSGlyph.ts +145 -0
  130. package/src/LinearApolloDisplay/glyphs/ExonGlyph.ts +212 -0
  131. package/src/LinearApolloDisplay/glyphs/GeneGlyph.ts +65 -999
  132. package/src/LinearApolloDisplay/glyphs/GenericChildGlyph.ts +71 -181
  133. package/src/LinearApolloDisplay/glyphs/Glyph.ts +42 -66
  134. package/src/LinearApolloDisplay/glyphs/TranscriptGlyph.ts +291 -0
  135. package/src/LinearApolloDisplay/glyphs/util.ts +87 -0
  136. package/src/LinearApolloDisplay/stateModel/base.ts +83 -0
  137. package/src/LinearApolloDisplay/stateModel/layouts.ts +198 -138
  138. package/src/LinearApolloDisplay/stateModel/mouseEvents.ts +252 -158
  139. package/src/LinearApolloDisplay/stateModel/rendering.ts +103 -21
  140. package/src/LinearApolloReferenceSequenceDisplay/drawSequenceOverlay.ts +3 -3
  141. package/src/LinearApolloReferenceSequenceDisplay/stateModel/base.ts +20 -2
  142. package/src/LinearApolloSixFrameDisplay/components/LinearApolloSixFrameDisplay.tsx +7 -2
  143. package/src/LinearApolloSixFrameDisplay/glyphs/GeneGlyph.ts +8 -13
  144. package/src/LinearApolloSixFrameDisplay/glyphs/Glyph.ts +1 -1
  145. package/src/LinearApolloSixFrameDisplay/stateModel/layouts.ts +4 -3
  146. package/src/LinearApolloSixFrameDisplay/stateModel/mouseEvents.ts +1 -1
  147. package/src/LinearApolloSixFrameDisplay/stateModel/rendering.ts +2 -1
  148. package/src/OntologyManager/OntologyStore/__snapshots__/index.test.ts.snap +18262 -8519
  149. package/src/OntologyManager/OntologyStore/fulltext.ts +1 -2
  150. package/src/OntologyManager/OntologyStore/index.test.ts +5 -2
  151. package/src/OntologyManager/OntologyStore/index.ts +7 -8
  152. package/src/OntologyManager/OntologyStore/indexeddb-storage.ts +2 -2
  153. package/src/OntologyManager/OntologyStore/types.ts +27 -0
  154. package/src/OntologyManager/index.ts +15 -26
  155. package/src/TabularEditor/HybridGrid/featureContextMenuItems.ts +4 -5
  156. package/src/components/AddChildFeature.tsx +15 -8
  157. package/src/components/ColorFeature.tsx +167 -0
  158. package/src/components/CreateApolloAnnotation.tsx +35 -9
  159. package/src/components/DownloadGFF3.tsx +92 -121
  160. package/src/components/DuplicateTranscript.tsx +10 -0
  161. package/src/components/ViewChangeLog.tsx +123 -83
  162. package/src/components/ViewCheckResults.tsx +15 -73
  163. package/src/components/index.ts +1 -1
  164. package/src/config.ts +37 -19
  165. package/src/extensions/annotationFromJBrowseFeature.test.ts +1 -1
  166. package/src/extensions/annotationFromJBrowseFeature.ts +91 -63
  167. package/src/extensions/annotationFromPileup.ts +40 -40
  168. package/src/index.ts +45 -1
  169. package/src/makeDisplayComponent.tsx +10 -3
  170. package/src/menus/Icons.tsx +49 -0
  171. package/src/menus/topLevelMenu.ts +24 -96
  172. package/src/session/ClientDataStore.ts +16 -17
  173. package/src/session/changeHandlers.ts +261 -0
  174. package/src/session/session.ts +77 -46
  175. package/src/util/annotationFeatureUtils.ts +29 -1
  176. package/src/util/glyphUtils.ts +74 -31
  177. package/src/util/index.ts +0 -1
  178. package/dist/BackendDrivers/DesktopFileDriver.d.ts +0 -160
  179. package/dist/BackendDrivers/DesktopFileDriver.d.ts.map +0 -1
  180. package/dist/BackendDrivers/InMemoryFileDriver.d.ts +0 -162
  181. package/dist/BackendDrivers/InMemoryFileDriver.d.ts.map +0 -1
  182. package/dist/LinearApolloDisplay/glyphs/index.d.ts +0 -4
  183. package/dist/LinearApolloDisplay/glyphs/index.d.ts.map +0 -1
  184. package/dist/components/OpenLocalFile.d.ts +0 -15
  185. package/dist/components/OpenLocalFile.d.ts.map +0 -1
  186. package/dist/util/loadAssemblyIntoClient.d.ts +0 -5
  187. package/dist/util/loadAssemblyIntoClient.d.ts.map +0 -1
  188. package/src/BackendDrivers/DesktopFileDriver.ts +0 -184
  189. package/src/BackendDrivers/InMemoryFileDriver.ts +0 -107
  190. package/src/LinearApolloDisplay/glyphs/index.ts +0 -3
  191. package/src/components/OpenLocalFile.tsx +0 -189
  192. package/src/util/loadAssemblyIntoClient.ts +0 -94
@@ -0,0 +1,212 @@
1
+ import type { AnnotationFeature } from '@apollo-annotation/mst'
2
+ import type { BaseDisplayModel } from '@jbrowse/core/pluggableElementTypes'
3
+ import type { MenuItem } from '@jbrowse/core/ui'
4
+ import {
5
+ type AbstractSessionModel,
6
+ getContainingView,
7
+ } from '@jbrowse/core/util'
8
+ import type { ContentBlock } from '@jbrowse/core/util/blockTypes'
9
+ import type { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'
10
+
11
+ import { MergeExons, SplitExon } from '../../components'
12
+ import {
13
+ getAdjacentExons,
14
+ getStreamIcon,
15
+ isSelectedFeature,
16
+ navToFeatureCenter,
17
+ selectFeatureAndOpenWidget,
18
+ } from '../../util'
19
+ import type { LinearApolloDisplay } from '../stateModel'
20
+
21
+ import { boxGlyph } from './BoxGlyph'
22
+ import type { Glyph, OverlayType } from './Glyph'
23
+ import { drawOverlayBox, getFeatureBox, strokeRectInner } from './util'
24
+
25
+ function draw(
26
+ display: LinearApolloDisplay,
27
+ ctx: CanvasRenderingContext2D,
28
+ exon: AnnotationFeature,
29
+ row: number,
30
+ rowInFeature: number,
31
+ block: ContentBlock,
32
+ ) {
33
+ const { apolloRowHeight, canvasPatterns, selectedFeature, theme } = display
34
+ const [, left, width] = getFeatureBox(display, exon, row, block)
35
+ const height = Math.round(0.6 * apolloRowHeight)
36
+ const halfHeight = Math.round(height / 2)
37
+ const top = Math.round(halfHeight / 2) + row * apolloRowHeight
38
+ if (width > 2) {
39
+ ctx.fillStyle = 'rgb(211,211,211)'
40
+ ctx.fillRect(left, top, width, height)
41
+ const forwardFill = canvasPatterns.forward
42
+ const backwardFill = canvasPatterns.backward
43
+ const { strand } = exon
44
+ if (forwardFill && backwardFill && strand) {
45
+ const { reversed } = block
46
+ const reversal = reversed ? -1 : 1
47
+ const [topFill, bottomFill] =
48
+ strand * reversal === 1
49
+ ? [forwardFill, backwardFill]
50
+ : [backwardFill, forwardFill]
51
+ ctx.fillStyle = topFill
52
+ ctx.fillRect(left, top, width, halfHeight)
53
+ ctx.fillStyle = bottomFill
54
+ ctx.fillRect(left, top + halfHeight, width, halfHeight)
55
+ }
56
+ }
57
+ strokeRectInner(ctx, left, top, width, height, theme.palette.text.primary)
58
+ if (isSelectedFeature(exon, selectedFeature)) {
59
+ drawOverlay(display, ctx, exon, row, block, 'select')
60
+ }
61
+ }
62
+
63
+ function drawOverlay(
64
+ display: LinearApolloDisplay,
65
+ overlayCtx: CanvasRenderingContext2D,
66
+ exon: AnnotationFeature,
67
+ row: number,
68
+ block: ContentBlock,
69
+ overlayType: OverlayType,
70
+ ) {
71
+ const { apolloRowHeight } = display
72
+ const [, left, width] = getFeatureBox(display, exon, row, block)
73
+ const height = Math.round(0.6 * apolloRowHeight)
74
+ const halfHeight = Math.round(height / 2)
75
+ const top = Math.round(halfHeight / 2) + row * apolloRowHeight
76
+ drawOverlayBox(
77
+ display,
78
+ overlayCtx,
79
+ left,
80
+ top,
81
+ width,
82
+ height,
83
+ exon,
84
+ overlayType,
85
+ )
86
+ }
87
+
88
+ function getLayout(display: LinearApolloDisplay, feature: AnnotationFeature) {
89
+ return {
90
+ byFeature: new Map([[feature._id, 0]]),
91
+ byRow: [[{ feature, rowInFeature: 0 }]],
92
+ min: feature.min,
93
+ max: feature.max,
94
+ }
95
+ }
96
+
97
+ function getContextMenuItems(
98
+ display: LinearApolloDisplay,
99
+ feature: AnnotationFeature,
100
+ ): MenuItem[] {
101
+ const {
102
+ apolloInternetAccount: internetAccount,
103
+ changeManager,
104
+ regions,
105
+ selectedFeature,
106
+ session,
107
+ } = display
108
+ const [region] = regions
109
+ const currentAssemblyId = display.getAssemblyId(region.assemblyName)
110
+ const role = internetAccount ? internetAccount.role : 'admin'
111
+ const admin = role === 'admin'
112
+ const menuItems: MenuItem[] = []
113
+ const adjacentExons = getAdjacentExons(feature, display)
114
+ const lgv = getContainingView(
115
+ display as BaseDisplayModel,
116
+ ) as unknown as LinearGenomeViewModel
117
+ if (adjacentExons.upstream) {
118
+ const exon = adjacentExons.upstream
119
+ menuItems.push({
120
+ label: 'Go to upstream exon',
121
+ icon: getStreamIcon(
122
+ feature.strand,
123
+ true,
124
+ lgv.displayedRegions.at(0)?.reversed,
125
+ ),
126
+ onClick: () => {
127
+ lgv.navTo(navToFeatureCenter(exon, 0.1, lgv.totalBp))
128
+ selectFeatureAndOpenWidget(display, exon)
129
+ },
130
+ })
131
+ }
132
+ if (adjacentExons.downstream) {
133
+ const exon = adjacentExons.downstream
134
+ menuItems.push({
135
+ label: 'Go to downstream exon',
136
+ icon: getStreamIcon(
137
+ feature.strand,
138
+ false,
139
+ lgv.displayedRegions.at(0)?.reversed,
140
+ ),
141
+ onClick: () => {
142
+ lgv.navTo(navToFeatureCenter(exon, 0.1, lgv.totalBp))
143
+ selectFeatureAndOpenWidget(display, exon)
144
+ },
145
+ })
146
+ }
147
+ menuItems.push(
148
+ {
149
+ label: 'Merge exons',
150
+ disabled: !admin,
151
+ onClick: () => {
152
+ ;(session as unknown as AbstractSessionModel).queueDialog(
153
+ (doneCallback) => [
154
+ MergeExons,
155
+ {
156
+ session,
157
+ handleClose: () => {
158
+ doneCallback()
159
+ },
160
+ changeManager,
161
+ sourceFeature: feature,
162
+ sourceAssemblyId: currentAssemblyId,
163
+ selectedFeature,
164
+ setSelectedFeature: (feature?: AnnotationFeature) => {
165
+ display.setSelectedFeature(feature)
166
+ },
167
+ },
168
+ ],
169
+ )
170
+ },
171
+ },
172
+ {
173
+ label: 'Split exon',
174
+ disabled: !admin,
175
+ onClick: () => {
176
+ ;(session as unknown as AbstractSessionModel).queueDialog(
177
+ (doneCallback) => [
178
+ SplitExon,
179
+ {
180
+ session,
181
+ handleClose: () => {
182
+ doneCallback()
183
+ },
184
+ changeManager,
185
+ sourceFeature: feature,
186
+ sourceAssemblyId: currentAssemblyId,
187
+ selectedFeature,
188
+ setSelectedFeature: (feature?: AnnotationFeature) => {
189
+ display.setSelectedFeature(feature)
190
+ },
191
+ },
192
+ ],
193
+ )
194
+ },
195
+ },
196
+ )
197
+ return menuItems
198
+ }
199
+
200
+ // False positive here, none of these functions use "this"
201
+ /* eslint-disable @typescript-eslint/unbound-method */
202
+ const { drawDragPreview } = boxGlyph
203
+ /* eslint-enable @typescript-eslint/unbound-method */
204
+
205
+ export const exonGlyph: Glyph = {
206
+ draw,
207
+ drawDragPreview,
208
+ drawOverlay,
209
+ getContextMenuItems,
210
+ getLayout,
211
+ isDraggable: true,
212
+ }