From 945ab9e7cbec716c463e31517b4638745d5905a4 Mon Sep 17 00:00:00 2001 From: Colin Date: Thu, 29 Sep 2022 15:54:14 -0600 Subject: [PATCH] Add getEnv helper that resolves to proper PluginManager typescripting --- .../core/configuration/configurationSlot.ts | 3 ++- .../models/BaseDisplayModel.tsx | 3 ++- .../models/BaseTrackModel.ts | 10 ++------ packages/core/ui/AboutDialog.tsx | 15 ++++++------ packages/core/ui/DrawerWidget.tsx | 16 +++++++------ packages/core/util/index.ts | 6 +++++ packages/core/util/tracks.ts | 11 +++++---- .../components/LinearPileupDisplayBlurb.tsx | 2 +- .../src/LinearPileupDisplay/model.ts | 4 +++- .../models/BaseChordDisplayModel.ts | 3 ++- .../components/SlotEditor.tsx | 4 ++-- .../components/AddConnectionWidget.tsx | 11 +++++---- .../components/AddTrackWidget.tsx | 3 +-- .../components/ConfirmTrack.tsx | 24 +++++++++---------- .../components/DefaultAddTrackWorkflow.tsx | 8 +++---- .../components/Header.tsx | 19 +++++++-------- .../HierarchicalTrackSelectorWidget/model.ts | 4 ++-- .../components/PluginCard.tsx | 7 +++--- .../components/LinearComparativeView.tsx | 4 ++-- .../components/SearchResultsDialog.tsx | 4 ++-- .../SpreadsheetView/models/ImportWizard.ts | 4 ++-- .../src/SpreadsheetView/models/Spreadsheet.ts | 3 +-- .../models/breakpointSplitViewFromTableRow.js | 3 +-- .../VariantFeatureWidget/BreakendPanel.tsx | 3 +-- .../src/LinearWiggleDisplay/models/model.tsx | 3 ++- .../MultiLinearWiggleDisplay/models/model.tsx | 3 ++- .../JBrowseCircularGenomeView.tsx | 2 +- .../JBrowseLinearGenomeView.tsx | 2 +- website/docs/api_guide.md | 10 +++++++- 29 files changed, 104 insertions(+), 90 deletions(-) diff --git a/packages/core/configuration/configurationSlot.ts b/packages/core/configuration/configurationSlot.ts index 173b4fd769..79476d8f3d 100644 --- a/packages/core/configuration/configurationSlot.ts +++ b/packages/core/configuration/configurationSlot.ts @@ -1,7 +1,8 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ -import { types, IAnyModelType, IAnyComplexType, getEnv } from 'mobx-state-tree' +import { types, IAnyModelType, IAnyComplexType } from 'mobx-state-tree' import { stringToJexlExpression } from '../util/jexlStrings' import { FileLocation } from '../util/types/mst' +import { getEnv } from '../util' function isValidColorString(/* str */) { // TODO: check all the crazy cases for whether it's a valid HTML/CSS color string diff --git a/packages/core/pluggableElementTypes/models/BaseDisplayModel.tsx b/packages/core/pluggableElementTypes/models/BaseDisplayModel.tsx index 013c23de85..8ee944fa8b 100644 --- a/packages/core/pluggableElementTypes/models/BaseDisplayModel.tsx +++ b/packages/core/pluggableElementTypes/models/BaseDisplayModel.tsx @@ -1,9 +1,10 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ -import { getParent, Instance, types, isRoot, getEnv } from 'mobx-state-tree' +import { getParent, Instance, types, isRoot } from 'mobx-state-tree' import React from 'react' import { getConf } from '../../configuration' import { MenuItem } from '../../ui' import { getParentRenderProps } from '../../util/tracks' +import { getEnv } from '../../util' import { ElementId } from '../../util/types/mst' export const BaseDisplay = types diff --git a/packages/core/pluggableElementTypes/models/BaseTrackModel.ts b/packages/core/pluggableElementTypes/models/BaseTrackModel.ts index 5f20d6b596..3cf78dc42c 100644 --- a/packages/core/pluggableElementTypes/models/BaseTrackModel.ts +++ b/packages/core/pluggableElementTypes/models/BaseTrackModel.ts @@ -1,11 +1,5 @@ import { transaction } from 'mobx' -import { - getEnv, - getRoot, - resolveIdentifier, - types, - Instance, -} from 'mobx-state-tree' +import { getRoot, resolveIdentifier, types, Instance } from 'mobx-state-tree' import { getConf, AnyConfigurationModel, @@ -14,7 +8,7 @@ import { } from '../../configuration' import PluginManager from '../../PluginManager' import { MenuItem } from '../../ui' -import { getContainingView, getSession } from '../../util' +import { getContainingView, getSession, getEnv } from '../../util' import { isSessionModelWithConfigEditing } from '../../util/types' import { ElementId } from '../../util/types/mst' diff --git a/packages/core/ui/AboutDialog.tsx b/packages/core/ui/AboutDialog.tsx index f3e1df7cf7..a364c5960e 100644 --- a/packages/core/ui/AboutDialog.tsx +++ b/packages/core/ui/AboutDialog.tsx @@ -1,5 +1,4 @@ import React, { useState, useEffect } from 'react' -import { getEnv } from 'mobx-state-tree' import copy from 'copy-to-clipboard' import { Button, @@ -16,7 +15,7 @@ import { readConfObject, AnyConfigurationModel, } from '../configuration' -import { getSession } from '../util' +import { getSession, getEnv } from '../util' import { getTrackName } from '../util/tracks' import { BaseCard, Attributes } from '../BaseFeatureWidget/BaseFeatureDetail' @@ -59,9 +58,11 @@ export default function AboutDialog({ } const { pluginManager } = getEnv(session) - pluginManager.evaluateExtensionPoist('Core-customizeAbout', confPost, { - session, - }) + const confPostExt = pluginManager.evaluateExtensionPoint( + 'Core-customizeAbout', + { conf: confPost }, + { session }, + ) as Record useEffect(() => { const aborter = new AbortController() @@ -121,7 +122,7 @@ export default function AboutDialog({ variant="contained" style={{ float: 'right' }} onClick={() => { - copy(JSON.stringify(confPost, null, 2)) + copy(JSON.stringify(conf, null, 2)) setCopied(true) setTimeout(() => setCopied(false), 1000) }} @@ -130,7 +131,7 @@ export default function AboutDialog({ ) : null} diff --git a/packages/core/ui/DrawerWidget.tsx b/packages/core/ui/DrawerWidget.tsx index c2a6572212..c1ef1f4ad4 100644 --- a/packages/core/ui/DrawerWidget.tsx +++ b/packages/core/ui/DrawerWidget.tsx @@ -13,7 +13,7 @@ import { } from '@mui/material' import { makeStyles } from 'tss-react/mui' import { observer } from 'mobx-react' -import { getEnv } from 'mobx-state-tree' +import { getEnv } from '../util' import { SessionWithDrawerWidgets } from '../util/types' // icons @@ -58,7 +58,7 @@ const DrawerHeader = observer( const { visibleWidget, activeWidgets, drawerPosition } = session const { classes } = useStyles() - const [anchorEl, setAnchorEl] = React.useState(null) + const [anchorEl, setAnchorEl] = useState(null) return ( } > - + {DrawerComponent ? ( + + ) : null} diff --git a/packages/core/util/index.ts b/packages/core/util/index.ts index e1a2611ab0..45777d3a3f 100644 --- a/packages/core/util/index.ts +++ b/packages/core/util/index.ts @@ -1,10 +1,12 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ import { useEffect, useRef, useState } from 'react' import isObject from 'is-object' +import PluginManager from '../PluginManager' import { addDisposer, getParent, getSnapshot, + getEnv as getEnvMST, isAlive, isStateTreeNode, hasParent, @@ -1173,3 +1175,7 @@ export function measureGridWidth(elements: string[]) { ), ) } + +export function getEnv(obj: any) { + return getEnvMST<{ pluginManager: PluginManager }>(obj) +} diff --git a/packages/core/util/tracks.ts b/packages/core/util/tracks.ts index 4135084876..116d93eae8 100644 --- a/packages/core/util/tracks.ts +++ b/packages/core/util/tracks.ts @@ -1,8 +1,11 @@ -import { getParent, isRoot, IAnyStateTreeNode, getEnv } from 'mobx-state-tree' -import { getSession, objectHash } from './index' +import { getParent, isRoot, IAnyStateTreeNode } from 'mobx-state-tree' +import { getSession, objectHash, getEnv } from './index' import { PreFileLocation, FileLocation } from './types' -import { AnyConfigurationModel } from '../configuration/configurationSchema' -import { getConf, readConfObject } from '../configuration' +import { + getConf, + readConfObject, + AnyConfigurationModel, +} from '../configuration' /* utility functions for use by track models and so forth */ diff --git a/plugins/alignments/src/LinearPileupDisplay/components/LinearPileupDisplayBlurb.tsx b/plugins/alignments/src/LinearPileupDisplay/components/LinearPileupDisplayBlurb.tsx index 9698bc3873..0964d846e2 100644 --- a/plugins/alignments/src/LinearPileupDisplay/components/LinearPileupDisplayBlurb.tsx +++ b/plugins/alignments/src/LinearPileupDisplay/components/LinearPileupDisplayBlurb.tsx @@ -1,6 +1,6 @@ import React from 'react' import { observer } from 'mobx-react' -import Typography from '@mui/material/Typography' +import { Typography } from '@mui/material' export interface LinearPileupDisplayBlurbProps { model: { diff --git a/plugins/alignments/src/LinearPileupDisplay/model.ts b/plugins/alignments/src/LinearPileupDisplay/model.ts index 22edbfc04f..df8e35756e 100644 --- a/plugins/alignments/src/LinearPileupDisplay/model.ts +++ b/plugins/alignments/src/LinearPileupDisplay/model.ts @@ -1,6 +1,6 @@ import { lazy } from 'react' import { autorun, observable } from 'mobx' -import { cast, types, addDisposer, getEnv, Instance } from 'mobx-state-tree' +import { cast, types, addDisposer, Instance } from 'mobx-state-tree' import copy from 'copy-to-clipboard' import { AnyConfigurationModel, @@ -10,6 +10,7 @@ import { } from '@jbrowse/core/configuration' import { getRpcSessionId } from '@jbrowse/core/util/tracks' import { + getEnv, getSession, isSessionModelWithWidgets, getContainingView, @@ -213,6 +214,7 @@ const stateModelFactory = (configSchema: LinearPileupDisplayConfigModel) => const { pos, refName, assemblyName } = sortedBy // render just the sorted region first + // @ts-ignore await self.rendererType.renderInClient(rpcManager, { assemblyName, regions: [ diff --git a/plugins/circular-view/src/BaseChordDisplay/models/BaseChordDisplayModel.ts b/plugins/circular-view/src/BaseChordDisplay/models/BaseChordDisplayModel.ts index 87a67ba98d..ef2c33dd3e 100644 --- a/plugins/circular-view/src/BaseChordDisplay/models/BaseChordDisplayModel.ts +++ b/plugins/circular-view/src/BaseChordDisplay/models/BaseChordDisplayModel.ts @@ -6,6 +6,7 @@ import RendererType from '@jbrowse/core/pluggableElementTypes/renderers/Renderer import { getContainingView, getSession, + getEnv, makeAbortableReaction, AnyReactComponentType, } from '@jbrowse/core/util' @@ -16,7 +17,7 @@ import { getTrackAssemblyNames, } from '@jbrowse/core/util/tracks' import { Region } from '@jbrowse/core/util/types' -import { getParent, isAlive, types, getEnv } from 'mobx-state-tree' +import { getParent, isAlive, types } from 'mobx-state-tree' import { renderReactionData, renderReactionEffect } from './renderReaction' import { CircularViewModel } from '../../CircularView/models/CircularView' diff --git a/plugins/config/src/ConfigurationEditorWidget/components/SlotEditor.tsx b/plugins/config/src/ConfigurationEditorWidget/components/SlotEditor.tsx index a0b21594d4..a8c0212117 100644 --- a/plugins/config/src/ConfigurationEditorWidget/components/SlotEditor.tsx +++ b/plugins/config/src/ConfigurationEditorWidget/components/SlotEditor.tsx @@ -1,6 +1,7 @@ import React, { useEffect, useState } from 'react' import { observer } from 'mobx-react' -import { getPropertyMembers, getEnv, IAnyType } from 'mobx-state-tree' +import { getPropertyMembers, IAnyType } from 'mobx-state-tree' +import { getEnv, FileLocation } from '@jbrowse/core/util' import { FileSelector, SanitizedHTML } from '@jbrowse/core/ui' import { getPropertyType, @@ -36,7 +37,6 @@ import StringArrayEditor from './StringArrayEditor' import CallbackEditor from './CallbackEditor' import ColorEditor from './ColorEditor' import JsonEditor from './JsonEditor' -import { FileLocation } from '@jbrowse/core/util' // adds ability to have html in helperText. note that FormHelperTextProps is // div because the default is p which does not like div children diff --git a/plugins/data-management/src/AddConnectionWidget/components/AddConnectionWidget.tsx b/plugins/data-management/src/AddConnectionWidget/components/AddConnectionWidget.tsx index 42fd67022c..a9b4d95571 100644 --- a/plugins/data-management/src/AddConnectionWidget/components/AddConnectionWidget.tsx +++ b/plugins/data-management/src/AddConnectionWidget/components/AddConnectionWidget.tsx @@ -1,5 +1,5 @@ import React, { useState } from 'react' -import { getSession } from '@jbrowse/core/util' +import { getSession, getEnv } from '@jbrowse/core/util' import { Button, Step, @@ -10,7 +10,6 @@ import { } from '@mui/material' import { makeStyles } from 'tss-react/mui' import { observer } from 'mobx-react' -import { getEnv } from 'mobx-state-tree' import { ConnectionType } from '@jbrowse/core/pluggableElementTypes' // locals @@ -51,9 +50,11 @@ function AddConnectionWidget({ model }: { model: unknown }) { case 0: return ( { setConnectionType(c) diff --git a/plugins/data-management/src/AddTrackWidget/components/AddTrackWidget.tsx b/plugins/data-management/src/AddTrackWidget/components/AddTrackWidget.tsx index b7dbee9787..3be05bf231 100644 --- a/plugins/data-management/src/AddTrackWidget/components/AddTrackWidget.tsx +++ b/plugins/data-management/src/AddTrackWidget/components/AddTrackWidget.tsx @@ -2,8 +2,7 @@ import React from 'react' import { observer } from 'mobx-react' import { FormControl, FormHelperText, Select, MenuItem } from '@mui/material' import { AddTrackWorkflowType } from '@jbrowse/core/pluggableElementTypes' -import { useLocalStorage } from '@jbrowse/core/util' -import { getEnv } from 'mobx-state-tree' +import { getEnv, useLocalStorage } from '@jbrowse/core/util' // locals import { AddTrackModel } from '../model' diff --git a/plugins/data-management/src/AddTrackWidget/components/ConfirmTrack.tsx b/plugins/data-management/src/AddTrackWidget/components/ConfirmTrack.tsx index 2e59186c46..b699d07889 100644 --- a/plugins/data-management/src/AddTrackWidget/components/ConfirmTrack.tsx +++ b/plugins/data-management/src/AddTrackWidget/components/ConfirmTrack.tsx @@ -1,10 +1,4 @@ import React, { useEffect, useState } from 'react' -import { readConfObject } from '@jbrowse/core/configuration' -import { - supportedIndexingAdapters, - getSession, - isElectron, -} from '@jbrowse/core/util' import { Card, CardContent, @@ -24,19 +18,23 @@ import { Typography, } from '@mui/material' import { makeStyles } from 'tss-react/mui' - -// icons -import DeleteIcon from '@mui/icons-material/Delete' -import AddIcon from '@mui/icons-material//Add' -// other +import { readConfObject } from '@jbrowse/core/configuration' +import { + supportedIndexingAdapters, + getSession, + getEnv, + isElectron, +} from '@jbrowse/core/util' import PluginManager from '@jbrowse/core/PluginManager' import { observer } from 'mobx-react' -import { getEnv } from 'mobx-state-tree' import { UNKNOWN } from '@jbrowse/core/util/tracks' +import { AdapterMetadata } from '@jbrowse/core/pluggableElementTypes/AdapterType' +// icons +import DeleteIcon from '@mui/icons-material/Delete' +import AddIcon from '@mui/icons-material//Add' // locals import { AddTrackModel } from '../model' -import { AdapterMetadata } from '@jbrowse/core/pluggableElementTypes/AdapterType' const useStyles = makeStyles()(theme => ({ spacing: { diff --git a/plugins/data-management/src/AddTrackWidget/components/DefaultAddTrackWorkflow.tsx b/plugins/data-management/src/AddTrackWidget/components/DefaultAddTrackWorkflow.tsx index cad2e6c7b6..6f9f2429f5 100644 --- a/plugins/data-management/src/AddTrackWidget/components/DefaultAddTrackWorkflow.tsx +++ b/plugins/data-management/src/AddTrackWidget/components/DefaultAddTrackWorkflow.tsx @@ -9,6 +9,7 @@ import { Typography, } from '@mui/material' import { makeStyles } from 'tss-react/mui' +import { getRoot } from 'mobx-state-tree' import { getSession, @@ -17,7 +18,6 @@ import { } from '@jbrowse/core/util' import { getConf } from '@jbrowse/core/configuration' import { observer } from 'mobx-react' -import { getEnv } from 'mobx-state-tree' // locals import ConfirmTrack from './ConfirmTrack' @@ -52,9 +52,9 @@ const steps = ['Enter track data', 'Confirm track type'] function AddTrackWorkflow({ model }: { model: AddTrackModel }) { const [activeStep, setActiveStep] = useState(0) const { classes } = useStyles() - const { pluginManager } = getEnv(model) - const { rootModel } = pluginManager - const { jobsManager } = rootModel + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const { jobsManager } = getRoot(model) const session = getSession(model) const { assembly, diff --git a/plugins/data-management/src/HierarchicalTrackSelectorWidget/components/Header.tsx b/plugins/data-management/src/HierarchicalTrackSelectorWidget/components/Header.tsx index f846b47531..436314871d 100644 --- a/plugins/data-management/src/HierarchicalTrackSelectorWidget/components/Header.tsx +++ b/plugins/data-management/src/HierarchicalTrackSelectorWidget/components/Header.tsx @@ -1,16 +1,11 @@ import React, { Suspense, lazy, useState } from 'react' -import { makeStyles } from 'tss-react/mui' import { Badge, IconButton, InputAdornment, TextField } from '@mui/material' -// icons -import ClearIcon from '@mui/icons-material/Clear' -import MenuIcon from '@mui/icons-material/Menu' -import ShoppingCartIcon from '@mui/icons-material/ShoppingCart' -import { Cable } from '@jbrowse/core/ui/Icons' - -// other +import { makeStyles } from 'tss-react/mui' +import { observer } from 'mobx-react' import JBrowseMenu, { MenuItem } from '@jbrowse/core/ui/Menu' import { getSession, + getEnv, isSessionModelWithWidgets, isSessionModelWithConnections, isSessionWithAddTracks, @@ -19,8 +14,12 @@ import { AnyConfigurationModel, readConfObject, } from '@jbrowse/core/configuration' -import { observer } from 'mobx-react' -import { getEnv } from 'mobx-state-tree' + +// icons +import ClearIcon from '@mui/icons-material/Clear' +import MenuIcon from '@mui/icons-material/Menu' +import ShoppingCartIcon from '@mui/icons-material/ShoppingCart' +import { Cable } from '@jbrowse/core/ui/Icons' // locals import { HierarchicalTrackSelectorModel } from '../model' diff --git a/plugins/data-management/src/HierarchicalTrackSelectorWidget/model.ts b/plugins/data-management/src/HierarchicalTrackSelectorWidget/model.ts index e3b972da50..c67279942d 100644 --- a/plugins/data-management/src/HierarchicalTrackSelectorWidget/model.ts +++ b/plugins/data-management/src/HierarchicalTrackSelectorWidget/model.ts @@ -1,10 +1,10 @@ -import { types, getEnv, getSnapshot, Instance } from 'mobx-state-tree' +import { types, getSnapshot, Instance } from 'mobx-state-tree' import { getConf, readConfObject, AnyConfigurationModel, } from '@jbrowse/core/configuration' -import { AbstractSessionModel, getSession } from '@jbrowse/core/util' +import { AbstractSessionModel, getSession, getEnv } from '@jbrowse/core/util' import { getTrackName } from '@jbrowse/core/util/tracks' import { ElementId } from '@jbrowse/core/util/types/mst' import PluginManager from '@jbrowse/core/PluginManager' diff --git a/plugins/data-management/src/PluginStoreWidget/components/PluginCard.tsx b/plugins/data-management/src/PluginStoreWidget/components/PluginCard.tsx index f00ec90474..c15d09be51 100644 --- a/plugins/data-management/src/PluginStoreWidget/components/PluginCard.tsx +++ b/plugins/data-management/src/PluginStoreWidget/components/PluginCard.tsx @@ -1,8 +1,7 @@ import React, { useState } from 'react' -import PluginManager from '@jbrowse/core/PluginManager' import { observer } from 'mobx-react' -import { getEnv, getParent } from 'mobx-state-tree' -import { getSession } from '@jbrowse/core/util' +import { getParent } from 'mobx-state-tree' +import { getSession, getEnv } from '@jbrowse/core/util' import { JBrowsePlugin, isSessionWithSessionPlugins, @@ -52,7 +51,7 @@ function PluginCard({ }) { const { classes } = useStyles() const session = getSession(model) - const { pluginManager } = getEnv(model) as { pluginManager: PluginManager } + const { pluginManager } = getEnv(model) const isInstalled = Boolean( pluginManager.runtimePluginDefinitions.find(def => def.url === plugin.url), ) diff --git a/plugins/linear-comparative-view/src/LinearComparativeView/components/LinearComparativeView.tsx b/plugins/linear-comparative-view/src/LinearComparativeView/components/LinearComparativeView.tsx index 13bb28625c..c1badefa7a 100644 --- a/plugins/linear-comparative-view/src/LinearComparativeView/components/LinearComparativeView.tsx +++ b/plugins/linear-comparative-view/src/LinearComparativeView/components/LinearComparativeView.tsx @@ -1,8 +1,8 @@ import React from 'react' +import { makeStyles } from 'tss-react/mui' import { observer } from 'mobx-react' import { getConf, AnyConfigurationModel } from '@jbrowse/core/configuration' -import { makeStyles } from 'tss-react/mui' -import { getEnv } from 'mobx-state-tree' +import { getEnv } from '@jbrowse/core/util' import { ResizeHandle } from '@jbrowse/core/ui' // locals diff --git a/plugins/linear-genome-view/src/LinearGenomeView/components/SearchResultsDialog.tsx b/plugins/linear-genome-view/src/LinearGenomeView/components/SearchResultsDialog.tsx index 1588fa8102..b5a6e06f7a 100644 --- a/plugins/linear-genome-view/src/LinearGenomeView/components/SearchResultsDialog.tsx +++ b/plugins/linear-genome-view/src/LinearGenomeView/components/SearchResultsDialog.tsx @@ -1,7 +1,7 @@ import React from 'react' import { makeStyles } from 'tss-react/mui' -import { getEnv, resolveIdentifier, getRoot } from 'mobx-state-tree' -import { getSession } from '@jbrowse/core/util' +import { resolveIdentifier, getRoot } from 'mobx-state-tree' +import { getSession, getEnv } from '@jbrowse/core/util' import { Button, Dialog, diff --git a/plugins/spreadsheet-view/src/SpreadsheetView/models/ImportWizard.ts b/plugins/spreadsheet-view/src/SpreadsheetView/models/ImportWizard.ts index 1f22401f48..18519c3558 100644 --- a/plugins/spreadsheet-view/src/SpreadsheetView/models/ImportWizard.ts +++ b/plugins/spreadsheet-view/src/SpreadsheetView/models/ImportWizard.ts @@ -1,6 +1,6 @@ -import { types, getEnv, getParent, Instance } from 'mobx-state-tree' +import { types, getParent, Instance } from 'mobx-state-tree' import { openLocation } from '@jbrowse/core/util/io' -import { getSession } from '@jbrowse/core/util' +import { getSession, getEnv } from '@jbrowse/core/util' // 30MB const IMPORT_SIZE_LIMIT = 30_000_000 diff --git a/plugins/spreadsheet-view/src/SpreadsheetView/models/Spreadsheet.ts b/plugins/spreadsheet-view/src/SpreadsheetView/models/Spreadsheet.ts index 8d1f462c20..ad7b6acecc 100644 --- a/plugins/spreadsheet-view/src/SpreadsheetView/models/Spreadsheet.ts +++ b/plugins/spreadsheet-view/src/SpreadsheetView/models/Spreadsheet.ts @@ -1,11 +1,10 @@ import { stringToJexlExpression } from '@jbrowse/core/util/jexlStrings' -import { getSession } from '@jbrowse/core/util' +import { getSession, getEnv } from '@jbrowse/core/util' import { autorun } from 'mobx' import { addDisposer, types, getParent, - getEnv, SnapshotIn, Instance, } from 'mobx-state-tree' diff --git a/plugins/sv-inspector/src/SvInspectorView/models/breakpointSplitViewFromTableRow.js b/plugins/sv-inspector/src/SvInspectorView/models/breakpointSplitViewFromTableRow.js index 9526ef95f8..cbc75cb321 100644 --- a/plugins/sv-inspector/src/SvInspectorView/models/breakpointSplitViewFromTableRow.js +++ b/plugins/sv-inspector/src/SvInspectorView/models/breakpointSplitViewFromTableRow.js @@ -1,7 +1,6 @@ import SimpleFeature from '@jbrowse/core/util/simpleFeature' import { makeAdHocSvFeature } from './adhocFeatureUtils' -import { getSession } from '@jbrowse/core/util' -import { getEnv } from 'mobx-state-tree' +import { getEnv, getSession } from '@jbrowse/core/util' export function getSerializedFeatureForRow( session, diff --git a/plugins/variants/src/VariantFeatureWidget/BreakendPanel.tsx b/plugins/variants/src/VariantFeatureWidget/BreakendPanel.tsx index ad7846cfd4..1cfd2fa353 100644 --- a/plugins/variants/src/VariantFeatureWidget/BreakendPanel.tsx +++ b/plugins/variants/src/VariantFeatureWidget/BreakendPanel.tsx @@ -4,8 +4,7 @@ import { Link, Typography } from '@mui/material' import SimpleFeature, { SimpleFeatureSerialized, } from '@jbrowse/core/util/simpleFeature' -import { getSession } from '@jbrowse/core/util' -import { getEnv } from 'mobx-state-tree' +import { getEnv, getSession } from '@jbrowse/core/util' import { BaseCard } from '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail' import BreakendOptionDialog from './BreakendOptionDialog' diff --git a/plugins/wiggle/src/LinearWiggleDisplay/models/model.tsx b/plugins/wiggle/src/LinearWiggleDisplay/models/model.tsx index ddde21eba6..b89d62a85b 100644 --- a/plugins/wiggle/src/LinearWiggleDisplay/models/model.tsx +++ b/plugins/wiggle/src/LinearWiggleDisplay/models/model.tsx @@ -6,6 +6,7 @@ import { readConfObject, } from '@jbrowse/core/configuration' import { + getEnv, getSession, getContainingView, isSelectionContainer, @@ -15,7 +16,7 @@ import { LinearGenomeViewModel, } from '@jbrowse/plugin-linear-genome-view' import { when } from 'mobx' -import { isAlive, types, getEnv, Instance } from 'mobx-state-tree' +import { isAlive, types, Instance } from 'mobx-state-tree' import PluginManager from '@jbrowse/core/PluginManager' import { Feature } from '@jbrowse/core/util/simpleFeature' diff --git a/plugins/wiggle/src/MultiLinearWiggleDisplay/models/model.tsx b/plugins/wiggle/src/MultiLinearWiggleDisplay/models/model.tsx index 808ef9e9fc..1a67972685 100644 --- a/plugins/wiggle/src/MultiLinearWiggleDisplay/models/model.tsx +++ b/plugins/wiggle/src/MultiLinearWiggleDisplay/models/model.tsx @@ -1,5 +1,5 @@ import React, { lazy } from 'react' -import { addDisposer, getEnv, isAlive, types, Instance } from 'mobx-state-tree' +import { addDisposer, isAlive, types, Instance } from 'mobx-state-tree' import { autorun, when } from 'mobx' import { axisPropsFromTickScale } from 'react-d3-axis-mod' import deepEqual from 'fast-deep-equal' @@ -13,6 +13,7 @@ import { } from '@jbrowse/core/configuration' import { getSession, + getEnv, getContainingView, isSelectionContainer, Feature, diff --git a/products/jbrowse-react-circular-genome-view/src/JBrowseCircularGenomeView/JBrowseCircularGenomeView.tsx b/products/jbrowse-react-circular-genome-view/src/JBrowseCircularGenomeView/JBrowseCircularGenomeView.tsx index 3f0083cc9b..af4a060668 100644 --- a/products/jbrowse-react-circular-genome-view/src/JBrowseCircularGenomeView/JBrowseCircularGenomeView.tsx +++ b/products/jbrowse-react-circular-genome-view/src/JBrowseCircularGenomeView/JBrowseCircularGenomeView.tsx @@ -1,6 +1,6 @@ import React, { Suspense } from 'react' import { observer } from 'mobx-react' -import { getEnv } from 'mobx-state-tree' +import { getEnv } from '@jbrowse/core/util' import { readConfObject } from '@jbrowse/core/configuration' import { createJBrowseTheme } from '@jbrowse/core/ui' import { ThemeProvider } from '@mui/material/styles' diff --git a/products/jbrowse-react-linear-genome-view/src/JBrowseLinearGenomeView/JBrowseLinearGenomeView.tsx b/products/jbrowse-react-linear-genome-view/src/JBrowseLinearGenomeView/JBrowseLinearGenomeView.tsx index fbf374b193..e558318e22 100644 --- a/products/jbrowse-react-linear-genome-view/src/JBrowseLinearGenomeView/JBrowseLinearGenomeView.tsx +++ b/products/jbrowse-react-linear-genome-view/src/JBrowseLinearGenomeView/JBrowseLinearGenomeView.tsx @@ -1,8 +1,8 @@ import React, { Suspense } from 'react' import { observer } from 'mobx-react' -import { getEnv } from 'mobx-state-tree' import { readConfObject } from '@jbrowse/core/configuration' import { createJBrowseTheme } from '@jbrowse/core/ui' +import { getEnv } from '@jbrowse/core/util' import { ThemeProvider } from '@mui/material/styles' import { ScopedCssBaseline } from '@mui/material' import { makeStyles } from 'tss-react/mui' diff --git a/website/docs/api_guide.md b/website/docs/api_guide.md index 8283bdaddb..396876b68e 100644 --- a/website/docs/api_guide.md +++ b/website/docs/api_guide.md @@ -269,7 +269,15 @@ type: synchronous used to extend the session model itself with new features -- `session: AbstractSessionModel` - instance of the session model to extend +- `session: AbstractSessionModel` - instance of the session model to customize + the about dialog + +### Core-customizeAbout + +type: synchronous + +- `conf: Record` - a snapshot of a configuration object that is + displayed in the about dialog ### TrackSelector-multiTrackMenuItems