@jbrowse/core 2.17.0 → 3.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.
- package/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.d.ts +1 -2
- package/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.js +7 -13
- package/BaseFeatureWidget/BaseFeatureDetail/Attributes.d.ts +1 -2
- package/BaseFeatureWidget/BaseFeatureDetail/Attributes.js +20 -25
- package/BaseFeatureWidget/BaseFeatureDetail/BaseCard.d.ts +2 -3
- package/BaseFeatureWidget/BaseFeatureDetail/BaseCard.js +3 -7
- package/BaseFeatureWidget/BaseFeatureDetail/BasicValue.d.ts +1 -2
- package/BaseFeatureWidget/BaseFeatureDetail/BasicValue.js +5 -8
- package/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.d.ts +2 -3
- package/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.js +7 -10
- package/BaseFeatureWidget/BaseFeatureDetail/DataGridDetails.d.ts +1 -2
- package/BaseFeatureWidget/BaseFeatureDetail/DataGridDetails.js +25 -55
- package/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.d.ts +3 -4
- package/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.js +16 -34
- package/BaseFeatureWidget/BaseFeatureDetail/FieldName.d.ts +1 -2
- package/BaseFeatureWidget/BaseFeatureDetail/FieldName.js +2 -6
- package/BaseFeatureWidget/BaseFeatureDetail/Position.d.ts +2 -3
- package/BaseFeatureWidget/BaseFeatureDetail/Position.js +2 -5
- package/BaseFeatureWidget/BaseFeatureDetail/SimpleField.d.ts +1 -2
- package/BaseFeatureWidget/BaseFeatureDetail/SimpleField.js +3 -5
- package/BaseFeatureWidget/BaseFeatureDetail/UriField.d.ts +1 -2
- package/BaseFeatureWidget/BaseFeatureDetail/UriField.js +3 -5
- package/BaseFeatureWidget/BaseFeatureDetail/index.d.ts +4 -5
- package/BaseFeatureWidget/BaseFeatureDetail/index.js +6 -14
- package/BaseFeatureWidget/BaseFeatureDetail/util.js +4 -13
- package/BaseFeatureWidget/SequenceFeatureDetails/SequenceContents.d.ts +10 -0
- package/BaseFeatureWidget/SequenceFeatureDetails/SequenceContents.js +48 -0
- package/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureDetails.d.ts +3 -4
- package/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureDetails.js +33 -41
- package/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeaturePanel.d.ts +3 -4
- package/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeaturePanel.js +30 -29
- package/BaseFeatureWidget/SequenceFeatureDetails/SequenceName.d.ts +8 -0
- package/BaseFeatureWidget/SequenceFeatureDetails/SequenceName.js +28 -0
- package/BaseFeatureWidget/SequenceFeatureDetails/SequencePanel.d.ts +2 -10
- package/BaseFeatureWidget/SequenceFeatureDetails/SequencePanel.js +11 -85
- package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/HelpDialog.d.ts +1 -2
- package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/HelpDialog.js +6 -25
- package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceDialog.d.ts +3 -4
- package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceDialog.js +11 -46
- package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceFeatureMenu.d.ts +3 -4
- package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceFeatureMenu.js +101 -96
- package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceTypeSelector.d.ts +2 -3
- package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceTypeSelector.js +49 -53
- package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SettingsDialog.d.ts +2 -3
- package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SettingsDialog.js +20 -55
- package/BaseFeatureWidget/SequenceFeatureDetails/hooks.d.ts +2 -2
- package/BaseFeatureWidget/SequenceFeatureDetails/hooks.js +1 -2
- package/BaseFeatureWidget/SequenceFeatureDetails/model.d.ts +2 -56
- package/BaseFeatureWidget/SequenceFeatureDetails/model.js +4 -66
- package/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDNASequence.d.ts +4 -5
- package/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDNASequence.js +6 -9
- package/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDSSequence.d.ts +3 -4
- package/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDSSequence.js +6 -7
- package/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/GenomicSequence.d.ts +3 -4
- package/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/GenomicSequence.js +5 -9
- package/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/ProteinSequence.d.ts +3 -4
- package/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/ProteinSequence.js +2 -4
- package/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/SequenceDisplay.d.ts +2 -3
- package/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/SequenceDisplay.js +3 -10
- package/BaseFeatureWidget/SequenceFeatureDetails/types.d.ts +8 -0
- package/BaseFeatureWidget/SequenceFeatureDetails/types.js +2 -0
- package/BaseFeatureWidget/SequenceFeatureDetails/util.js +1 -5
- package/BaseFeatureWidget/stateModelFactory.d.ts +2 -93
- package/BaseFeatureWidget/stateModelFactory.js +3 -73
- package/BaseFeatureWidget/types.d.ts +3 -3
- package/BaseFeatureWidget/util.js +0 -4
- package/CorePlugin.d.ts +1 -1
- package/CorePlugin.js +19 -12
- package/Plugin.d.ts +2 -5
- package/Plugin.js +0 -3
- package/PluginLoader.d.ts +1 -1
- package/PluginLoader.js +2 -19
- package/PluginManager.d.ts +17 -32
- package/PluginManager.js +15 -41
- package/ReExports/DataGrid.js +0 -1
- package/ReExports/list.d.ts +0 -5
- package/ReExports/list.js +3 -5
- package/ReExports/modules.d.ts +26 -22
- package/ReExports/modules.js +45 -44
- package/TextSearch/BaseResults.d.ts +4 -4
- package/TextSearch/TextSearchManager.d.ts +4 -16
- package/TextSearch/TextSearchManager.js +1 -13
- package/assemblyManager/assembly.d.ts +5 -100
- package/assemblyManager/assembly.js +30 -146
- package/assemblyManager/assemblyConfigSchema.d.ts +1 -34
- package/assemblyManager/assemblyConfigSchema.js +12 -46
- package/assemblyManager/assemblyManager.d.ts +7 -57
- package/assemblyManager/assemblyManager.js +2 -57
- package/configuration/configurationSchema.d.ts +4 -4
- package/configuration/configurationSchema.js +2 -14
- package/configuration/configurationSlot.d.ts +2 -13
- package/configuration/configurationSlot.js +2 -32
- package/configuration/index.d.ts +2 -2
- package/configuration/index.js +2 -2
- package/configuration/types.d.ts +2 -3
- package/configuration/util.d.ts +1 -25
- package/configuration/util.js +19 -56
- package/data_adapters/BaseAdapter/BaseAdapter.d.ts +4 -14
- package/data_adapters/BaseAdapter/BaseAdapter.js +1 -10
- package/data_adapters/BaseAdapter/BaseFeatureDataAdapter.d.ts +5 -114
- package/data_adapters/BaseAdapter/BaseFeatureDataAdapter.js +3 -79
- package/data_adapters/BaseAdapter/BaseOptions.d.ts +2 -2
- package/data_adapters/BaseAdapter/BaseRefNameAliasAdapter.d.ts +2 -2
- package/data_adapters/BaseAdapter/BaseSequenceAdapter.d.ts +3 -6
- package/data_adapters/BaseAdapter/BaseTextSearchAdapter.d.ts +3 -3
- package/data_adapters/BaseAdapter/RegionsAdapter.d.ts +3 -3
- package/data_adapters/BaseAdapter/index.d.ts +4 -4
- package/data_adapters/BaseAdapter/types.d.ts +2 -2
- package/data_adapters/BaseAdapter/util.d.ts +6 -6
- package/data_adapters/CytobandAdapter/CytobandAdapter.d.ts +1 -1
- package/data_adapters/CytobandAdapter/CytobandAdapter.js +2 -6
- package/data_adapters/CytobandAdapter/configSchema.d.ts +0 -3
- package/data_adapters/CytobandAdapter/configSchema.js +1 -7
- package/data_adapters/CytobandAdapter/index.d.ts +1 -1
- package/data_adapters/CytobandAdapter/index.js +21 -8
- package/data_adapters/dataAdapterCache.d.ts +4 -22
- package/data_adapters/dataAdapterCache.js +2 -28
- package/data_adapters/util.d.ts +1 -0
- package/data_adapters/util.js +10 -0
- package/package.json +8 -11
- package/pluggableElementTypes/AdapterType.d.ts +2 -2
- package/pluggableElementTypes/AddTrackWorkflowType.d.ts +2 -2
- package/pluggableElementTypes/ConnectionType.d.ts +3 -3
- package/pluggableElementTypes/DisplayType.d.ts +3 -9
- package/pluggableElementTypes/InternetAccountType.d.ts +2 -2
- package/pluggableElementTypes/PluggableElementBase.d.ts +1 -1
- package/pluggableElementTypes/PluggableElementBase.js +2 -2
- package/pluggableElementTypes/RpcMethodType.d.ts +5 -11
- package/pluggableElementTypes/RpcMethodType.js +7 -19
- package/pluggableElementTypes/RpcMethodTypeWithFiltersAndRenameRegions.d.ts +9 -0
- package/pluggableElementTypes/RpcMethodTypeWithFiltersAndRenameRegions.js +35 -0
- package/pluggableElementTypes/TextSearchAdapterType.d.ts +2 -2
- package/pluggableElementTypes/TrackType.d.ts +3 -3
- package/pluggableElementTypes/ViewType.d.ts +3 -3
- package/pluggableElementTypes/WidgetType.d.ts +4 -3
- package/pluggableElementTypes/index.d.ts +11 -11
- package/pluggableElementTypes/models/BaseConnectionModelFactory.d.ts +2 -29
- package/pluggableElementTypes/models/BaseConnectionModelFactory.js +1 -28
- package/pluggableElementTypes/models/BaseDisplayModel.d.ts +3 -83
- package/pluggableElementTypes/models/BaseDisplayModel.js +2 -69
- package/pluggableElementTypes/models/BaseTrackModel.d.ts +4 -46
- package/pluggableElementTypes/models/BaseTrackModel.js +9 -63
- package/pluggableElementTypes/models/BaseViewModel.d.ts +2 -42
- package/pluggableElementTypes/models/BaseViewModel.js +2 -38
- package/pluggableElementTypes/models/InternetAccountModel.d.ts +3 -119
- package/pluggableElementTypes/models/InternetAccountModel.js +3 -123
- package/pluggableElementTypes/models/baseConnectionConfig.d.ts +0 -6
- package/pluggableElementTypes/models/baseConnectionConfig.js +1 -13
- package/pluggableElementTypes/models/baseInternetAccountConfig.d.ts +0 -15
- package/pluggableElementTypes/models/baseInternetAccountConfig.js +1 -23
- package/pluggableElementTypes/models/baseTrackConfig.d.ts +2 -53
- package/pluggableElementTypes/models/baseTrackConfig.js +1 -58
- package/pluggableElementTypes/renderers/BoxRendererType.d.ts +7 -15
- package/pluggableElementTypes/renderers/BoxRendererType.js +3 -14
- package/pluggableElementTypes/renderers/CircularChordRendererType.d.ts +4 -4
- package/pluggableElementTypes/renderers/CircularChordRendererType.js +3 -8
- package/pluggableElementTypes/renderers/ComparativeServerSideRendererType.d.ts +6 -21
- package/pluggableElementTypes/renderers/ComparativeServerSideRendererType.js +2 -25
- package/pluggableElementTypes/renderers/FeatureRendererType.d.ts +5 -47
- package/pluggableElementTypes/renderers/FeatureRendererType.js +15 -68
- package/pluggableElementTypes/renderers/RendererType.d.ts +5 -9
- package/pluggableElementTypes/renderers/RendererType.js +3 -7
- package/pluggableElementTypes/renderers/RpcRenderedSvgGroup.d.ts +3 -4
- package/pluggableElementTypes/renderers/RpcRenderedSvgGroup.js +11 -76
- package/pluggableElementTypes/renderers/ServerSideRenderedContent.d.ts +2 -3
- package/pluggableElementTypes/renderers/ServerSideRenderedContent.js +10 -74
- package/pluggableElementTypes/renderers/ServerSideRendererType.d.ts +9 -49
- package/pluggableElementTypes/renderers/ServerSideRendererType.js +10 -60
- package/pluggableElementTypes/renderers/index.d.ts +1 -1
- package/pluggableElementTypes/renderers/util/serializableFilterChain.js +1 -3
- package/rpc/BaseRpcDriver.d.ts +3 -4
- package/rpc/BaseRpcDriver.js +20 -80
- package/rpc/MainThreadRpcDriver.d.ts +3 -7
- package/rpc/MainThreadRpcDriver.js +0 -5
- package/rpc/RpcManager.d.ts +3 -3
- package/rpc/RpcManager.js +2 -4
- package/rpc/WebWorkerRpcDriver.d.ts +3 -2
- package/rpc/WebWorkerRpcDriver.js +2 -13
- package/rpc/baseRpcConfig.d.ts +0 -3
- package/rpc/baseRpcConfig.js +1 -7
- package/rpc/configSchema.d.ts +0 -6
- package/rpc/configSchema.js +2 -11
- package/rpc/mainThreadRpcConfig.js +1 -7
- package/rpc/methods/CoreFreeResources.d.ts +0 -6
- package/rpc/methods/CoreFreeResources.js +2 -9
- package/rpc/methods/CoreGetFeatureDensityStats.d.ts +4 -5
- package/rpc/methods/CoreGetFeatureDensityStats.js +1 -1
- package/rpc/methods/CoreGetFeatureDetails.d.ts +2 -7
- package/rpc/methods/CoreGetFeatureDetails.js +0 -5
- package/rpc/methods/CoreGetFeatures.d.ts +5 -5
- package/rpc/methods/CoreGetFeatures.js +4 -5
- package/rpc/methods/CoreGetFileInfo.d.ts +1 -2
- package/rpc/methods/CoreGetFileInfo.js +1 -1
- package/rpc/methods/CoreGetMetadata.d.ts +1 -2
- package/rpc/methods/CoreGetMetadata.js +1 -1
- package/rpc/methods/CoreGetRefNames.d.ts +1 -2
- package/rpc/methods/CoreGetRefNames.js +1 -1
- package/rpc/methods/CoreRender.d.ts +2 -6
- package/rpc/methods/CoreRender.js +5 -7
- package/rpc/methods/util.d.ts +3 -3
- package/rpc/methods/util.js +0 -1
- package/rpc/webWorkerRpcConfig.js +1 -7
- package/stories/JBrowseCore.stories.d.ts +1 -1
- package/stories/JBrowseCore.stories.js +3 -3
- package/stories/examples/WithSequencePanel.d.ts +6 -7
- package/stories/examples/WithSequencePanel.js +9 -9
- package/tsconfig.build.tsbuildinfo +1 -1
- package/ui/AppLogo.d.ts +2 -3
- package/ui/AppLogo.js +2 -7
- package/ui/AssemblySelector.d.ts +5 -5
- package/ui/AssemblySelector.js +11 -36
- package/ui/BaseTooltip.d.ts +1 -2
- package/ui/BaseTooltip.js +10 -17
- package/ui/CascadingMenu.d.ts +3 -4
- package/ui/CascadingMenu.js +18 -57
- package/ui/CascadingMenuButton.d.ts +2 -3
- package/ui/CascadingMenuButton.js +18 -42
- package/ui/ColorPicker.d.ts +3 -4
- package/ui/ColorPicker.js +33 -37
- package/ui/Dialog.d.ts +2 -3
- package/ui/Dialog.js +15 -27
- package/ui/DraggableDialog.d.ts +5 -0
- package/ui/DraggableDialog.js +32 -0
- package/ui/DropDownMenu.d.ts +2 -3
- package/ui/DropDownMenu.js +10 -36
- package/ui/EditableTypography.d.ts +2 -3
- package/ui/EditableTypography.js +30 -59
- package/ui/ErrorBoundary.d.ts +3 -2
- package/ui/ErrorBoundary.js +3 -25
- package/ui/ErrorMessage.d.ts +1 -2
- package/ui/ErrorMessage.js +27 -34
- package/ui/ErrorMessageStackTraceDialog.d.ts +1 -2
- package/ui/ErrorMessageStackTraceDialog.js +13 -54
- package/ui/FactoryResetDialog.d.ts +1 -2
- package/ui/FactoryResetDialog.js +8 -13
- package/ui/FatalErrorDialog.d.ts +1 -2
- package/ui/FatalErrorDialog.js +11 -42
- package/ui/FileSelector/FileSelector.d.ts +5 -5
- package/ui/FileSelector/FileSelector.js +41 -80
- package/ui/FileSelector/LocalFileChooser.d.ts +2 -3
- package/ui/FileSelector/LocalFileChooser.js +17 -29
- package/ui/FileSelector/UrlChooser.d.ts +5 -5
- package/ui/FileSelector/UrlChooser.js +6 -7
- package/ui/Icons.d.ts +10 -11
- package/ui/Icons.js +10 -25
- package/ui/LoadingEllipses.d.ts +2 -3
- package/ui/LoadingEllipses.js +4 -7
- package/ui/Logo.d.ts +2 -3
- package/ui/Logo.js +5 -23
- package/ui/Menu.d.ts +3 -4
- package/ui/Menu.js +85 -122
- package/ui/MenuButton.d.ts +2 -3
- package/ui/MenuButton.js +11 -35
- package/ui/PrerenderedCanvas.d.ts +1 -2
- package/ui/PrerenderedCanvas.js +3 -25
- package/ui/RedErrorMessageBox.d.ts +1 -2
- package/ui/RedErrorMessageBox.js +2 -5
- package/ui/ResizeHandle.d.ts +1 -2
- package/ui/ResizeHandle.js +5 -27
- package/ui/ReturnToImportFormDialog.d.ts +1 -2
- package/ui/ReturnToImportFormDialog.js +8 -13
- package/ui/SanitizedHTML.d.ts +2 -3
- package/ui/SanitizedHTML.js +4 -24
- package/ui/Snackbar.d.ts +3 -4
- package/ui/Snackbar.js +41 -21
- package/ui/SnackbarContents.d.ts +5 -0
- package/ui/SnackbarContents.js +16 -0
- package/ui/SnackbarModel.d.ts +1 -26
- package/ui/SnackbarModel.js +22 -39
- package/ui/colors.d.ts +1 -1
- package/ui/colors.js +2 -2
- package/ui/index.d.ts +0 -2
- package/ui/index.js +1 -5
- package/ui/react-colorful.js +17 -10
- package/ui/theme.d.ts +1 -1
- package/ui/theme.js +7 -40
- package/util/Base1DUtils.d.ts +1 -1
- package/util/Base1DUtils.js +0 -12
- package/util/Base1DViewModel.d.ts +4 -81
- package/util/Base1DViewModel.js +4 -108
- package/util/QuickLRU.js +0 -9
- package/util/TimeTraveller.js +0 -4
- package/util/aborting.d.ts +0 -20
- package/util/aborting.js +0 -31
- package/util/analytics.js +1 -12
- package/util/blockTypes.d.ts +0 -11
- package/util/blockTypes.js +0 -13
- package/util/calculateDynamicBlocks.d.ts +1 -20
- package/util/calculateDynamicBlocks.js +1 -22
- package/util/calculateStaticBlocks.d.ts +2 -2
- package/util/calculateStaticBlocks.js +0 -2
- package/util/color/cssColorsLevel4.js +0 -1
- package/util/color/index.d.ts +0 -19
- package/util/color/index.js +0 -30
- package/util/compositeMap.js +0 -2
- package/util/dedupe.js +0 -1
- package/util/formatFastaStrings.d.ts +0 -13
- package/util/formatFastaStrings.js +0 -13
- package/util/idMaker.d.ts +1 -1
- package/util/idMaker.js +16 -12
- package/util/index.d.ts +27 -173
- package/util/index.js +53 -293
- package/util/io/RemoteFileWithRangeCache.d.ts +4 -5
- package/util/io/RemoteFileWithRangeCache.js +12 -14
- package/util/io/index.d.ts +3 -4
- package/util/io/index.js +5 -19
- package/util/jexl.js +3 -13
- package/util/jexlStrings.d.ts +0 -6
- package/util/jexlStrings.js +0 -8
- package/util/layouts/BaseLayout.d.ts +1 -1
- package/util/layouts/GranularRectLayout.d.ts +1 -17
- package/util/layouts/GranularRectLayout.js +4 -81
- package/util/layouts/MultiLayout.d.ts +1 -6
- package/util/layouts/MultiLayout.js +0 -6
- package/util/layouts/PrecomputedLayout.d.ts +1 -4
- package/util/layouts/PrecomputedLayout.js +0 -5
- package/util/layouts/PrecomputedMultiLayout.js +0 -2
- package/util/layouts/SceneGraph.d.ts +0 -12
- package/util/layouts/SceneGraph.js +0 -13
- package/util/makeAbortableReaction.d.ts +2 -0
- package/util/makeAbortableReaction.js +50 -0
- package/util/map-obj.js +0 -4
- package/util/mst-reflection.d.ts +1 -14
- package/util/mst-reflection.js +1 -28
- package/util/nanoid.d.ts +1 -1
- package/util/nanoid.js +0 -31
- package/util/nextTick.d.ts +1 -0
- package/util/nextTick.js +6 -0
- package/util/offscreenCanvasPonyfill.d.ts +0 -1
- package/util/offscreenCanvasPonyfill.js +1 -9
- package/util/offscreenCanvasUtils.d.ts +2 -3
- package/util/offscreenCanvasUtils.js +22 -21
- package/util/range.d.ts +0 -25
- package/util/range.js +0 -34
- package/util/rxjs.d.ts +3 -7
- package/util/rxjs.js +2 -9
- package/util/simpleFeature.d.ts +0 -50
- package/util/simpleFeature.js +0 -35
- package/util/stats.d.ts +3 -26
- package/util/stats.js +0 -25
- package/util/stopToken.d.ts +3 -0
- package/util/stopToken.js +29 -0
- package/util/tracks.d.ts +4 -26
- package/util/tracks.js +8 -33
- package/util/types/index.d.ts +14 -30
- package/util/types/index.js +5 -14
- package/util/types/mst.js +0 -9
- package/util/types/util.d.ts +2 -9
- package/util/useMeasure.d.ts +1 -1
- package/util/useMeasure.js +0 -1
- package/util/when.d.ts +1 -15
- package/util/when.js +3 -70
- package/rpc/remoteAbortSignals.d.ts +0 -36
- package/rpc/remoteAbortSignals.js +0 -79
|
@@ -4,44 +4,36 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.FeatureDetails = exports.BaseCard = exports.BaseAttributes = exports.BaseCoreDetails = void 0;
|
|
7
|
-
const
|
|
7
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
8
|
const mobx_react_1 = require("mobx-react");
|
|
9
|
-
// utils
|
|
10
|
-
const ui_1 = require("../../ui");
|
|
11
9
|
const util_1 = require("./util");
|
|
12
10
|
const util_2 = require("../util");
|
|
13
|
-
// locals
|
|
14
11
|
const Attributes_1 = __importDefault(require("./Attributes"));
|
|
15
12
|
const BaseCard_1 = __importDefault(require("./BaseCard"));
|
|
16
13
|
const CoreDetails_1 = __importDefault(require("./CoreDetails"));
|
|
17
14
|
const FeatureDetails_1 = __importDefault(require("./FeatureDetails"));
|
|
15
|
+
const ui_1 = require("../../ui");
|
|
18
16
|
const BaseCoreDetails = (props) => {
|
|
19
17
|
const { title = 'Primary data' } = props;
|
|
20
|
-
return (
|
|
21
|
-
react_1.default.createElement(CoreDetails_1.default, { ...props })));
|
|
18
|
+
return ((0, jsx_runtime_1.jsx)(BaseCard_1.default, { ...props, title: title, children: (0, jsx_runtime_1.jsx)(CoreDetails_1.default, { ...props }) }));
|
|
22
19
|
};
|
|
23
20
|
exports.BaseCoreDetails = BaseCoreDetails;
|
|
24
21
|
const BaseAttributes = (props) => {
|
|
25
22
|
const { feature } = props;
|
|
26
|
-
return (
|
|
27
|
-
react_1.default.createElement(Attributes_1.default, { ...props, attributes: feature })));
|
|
23
|
+
return ((0, jsx_runtime_1.jsx)(BaseCard_1.default, { ...props, title: "Attributes", children: (0, jsx_runtime_1.jsx)(Attributes_1.default, { ...props, attributes: feature }) }));
|
|
28
24
|
};
|
|
29
25
|
exports.BaseAttributes = BaseAttributes;
|
|
30
26
|
const BaseFeatureDetail = (0, mobx_react_1.observer)(function ({ model }) {
|
|
31
27
|
const { error, featureData } = model;
|
|
32
28
|
if (error) {
|
|
33
|
-
return
|
|
29
|
+
return (0, jsx_runtime_1.jsx)(ui_1.ErrorMessage, { error: error });
|
|
34
30
|
}
|
|
35
31
|
else if (!featureData) {
|
|
36
32
|
return null;
|
|
37
33
|
}
|
|
38
34
|
else {
|
|
39
|
-
// replacing undefined with null helps with allowing fields to be hidden,
|
|
40
|
-
// setting null is not allowed by jexl so we set it to undefined to hide.
|
|
41
|
-
// see config guide. this replacement happens both here and when
|
|
42
|
-
// snapshotting the featureData
|
|
43
35
|
const featureData2 = (0, util_2.replaceUndefinedWithNull)(featureData);
|
|
44
|
-
return (0, util_1.isEmpty)(featureData2) ? null : (
|
|
36
|
+
return (0, util_1.isEmpty)(featureData2) ? null : ((0, jsx_runtime_1.jsx)(FeatureDetails_1.default, { model: model, feature: featureData2 }));
|
|
45
37
|
}
|
|
46
38
|
});
|
|
47
39
|
exports.default = BaseFeatureDetail;
|
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.isEmpty = isEmpty;
|
|
7
4
|
exports.generateTitle = generateTitle;
|
|
8
5
|
exports.generateMaxWidth = generateMaxWidth;
|
|
9
6
|
exports.accessNested = accessNested;
|
|
10
|
-
const is_object_1 = __importDefault(require("is-object"));
|
|
11
7
|
const util_1 = require("../../util");
|
|
12
8
|
const util_2 = require("../util");
|
|
13
9
|
function isEmpty(obj) {
|
|
@@ -21,21 +17,16 @@ function generateTitle(name, id, type) {
|
|
|
21
17
|
function generateMaxWidth(array, prefix) {
|
|
22
18
|
return (Math.ceil((0, util_1.max)(array.map(key => (0, util_1.measureText)([...prefix, key[0]].join('.'), 12)))) + 10);
|
|
23
19
|
}
|
|
24
|
-
// pick using a path from an object, similar to _.get from lodash with special
|
|
25
|
-
// logic for Descriptions from e.g. VCF headers
|
|
26
|
-
//
|
|
27
|
-
// @param arr example ['a','b'], obj = {a:{b:'hello}}
|
|
28
|
-
// @returns hello (with special addition to grab description also)
|
|
29
20
|
function accessNested(arr, obj = {}) {
|
|
30
21
|
let obj2 = obj;
|
|
31
|
-
|
|
32
|
-
if ((0,
|
|
22
|
+
for (const elt of arr) {
|
|
23
|
+
if ((0, util_1.isObject)(obj2)) {
|
|
33
24
|
obj2 = obj2[elt];
|
|
34
25
|
}
|
|
35
|
-
}
|
|
26
|
+
}
|
|
36
27
|
return typeof obj2 === 'string'
|
|
37
28
|
? obj2
|
|
38
|
-
: (0,
|
|
29
|
+
: (0, util_1.isObject)(obj2) && typeof obj2.Description === 'string'
|
|
39
30
|
? obj2.Description
|
|
40
31
|
: undefined;
|
|
41
32
|
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { SequenceFeatureDetailsModel } from './model';
|
|
2
|
+
import type { SimpleFeatureSerialized } from '../../util';
|
|
3
|
+
import type { SeqState } from '../util';
|
|
4
|
+
declare const SequenceContents: ({ mode, feature, sequence, model, }: {
|
|
5
|
+
mode: string;
|
|
6
|
+
feature: SimpleFeatureSerialized;
|
|
7
|
+
sequence: SeqState;
|
|
8
|
+
model: SequenceFeatureDetailsModel;
|
|
9
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export default SequenceContents;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
7
|
+
const mobx_react_1 = require("mobx-react");
|
|
8
|
+
const util_1 = require("../../util");
|
|
9
|
+
const util_2 = require("../util");
|
|
10
|
+
const CDNASequence_1 = __importDefault(require("./seqtypes/CDNASequence"));
|
|
11
|
+
const CDSSequence_1 = __importDefault(require("./seqtypes/CDSSequence"));
|
|
12
|
+
const GenomicSequence_1 = __importDefault(require("./seqtypes/GenomicSequence"));
|
|
13
|
+
const ProteinSequence_1 = __importDefault(require("./seqtypes/ProteinSequence"));
|
|
14
|
+
const SequenceContents = (0, mobx_react_1.observer)(function ({ mode, feature, sequence, model, }) {
|
|
15
|
+
var _a;
|
|
16
|
+
let { seq, upstream = '', downstream = '' } = sequence;
|
|
17
|
+
const children = ((_a = feature.subfeatures) === null || _a === void 0 ? void 0 : _a.sort((a, b) => a.start - b.start).map(sub => ({
|
|
18
|
+
...sub,
|
|
19
|
+
start: sub.start - feature.start,
|
|
20
|
+
end: sub.end - feature.start,
|
|
21
|
+
}))) || [];
|
|
22
|
+
let cds = (0, util_2.dedupe)(children.filter(sub => sub.type === 'CDS'));
|
|
23
|
+
let utr = (0, util_2.dedupe)(children.filter(sub => { var _a; return (_a = sub.type) === null || _a === void 0 ? void 0 : _a.match(/utr/i); }));
|
|
24
|
+
let exons = (0, util_2.dedupe)(children.filter(sub => sub.type === 'exon'));
|
|
25
|
+
if (!utr.length && cds.length && exons.length) {
|
|
26
|
+
utr = (0, util_2.calculateUTRs)(cds, exons);
|
|
27
|
+
}
|
|
28
|
+
if (!utr.length && cds.length && !exons.length) {
|
|
29
|
+
utr = (0, util_2.calculateUTRs2)(cds, {
|
|
30
|
+
start: 0,
|
|
31
|
+
end: feature.end - feature.start,
|
|
32
|
+
type: 'gene',
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
if (feature.strand === -1) {
|
|
36
|
+
;
|
|
37
|
+
[seq, upstream, downstream] = [
|
|
38
|
+
(0, util_1.revcom)(seq),
|
|
39
|
+
(0, util_1.revcom)(downstream),
|
|
40
|
+
(0, util_1.revcom)(upstream),
|
|
41
|
+
];
|
|
42
|
+
cds = (0, util_2.revlist)(cds, seq.length);
|
|
43
|
+
exons = (0, util_2.revlist)(exons, seq.length);
|
|
44
|
+
utr = (0, util_2.revlist)(utr, seq.length);
|
|
45
|
+
}
|
|
46
|
+
return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: mode === 'genomic' ? ((0, jsx_runtime_1.jsx)(GenomicSequence_1.default, { feature: feature, model: model, sequence: seq })) : mode === 'genomic_sequence_updownstream' ? ((0, jsx_runtime_1.jsx)(GenomicSequence_1.default, { model: model, feature: feature, sequence: seq, upstream: upstream, downstream: downstream })) : mode === 'cds' ? ((0, jsx_runtime_1.jsx)(CDSSequence_1.default, { model: model, cds: cds, sequence: seq })) : mode === 'cdna' ? ((0, jsx_runtime_1.jsx)(CDNASequence_1.default, { model: model, exons: exons, feature: feature, cds: cds, utr: utr, sequence: seq })) : mode === 'protein' ? ((0, jsx_runtime_1.jsx)(ProteinSequence_1.default, { model: model, cds: cds, codonTable: (0, util_1.generateCodonTable)(util_1.defaultCodonTable), sequence: seq })) : mode === 'gene' ? ((0, jsx_runtime_1.jsx)(CDNASequence_1.default, { model: model, exons: exons, feature: feature, cds: cds, utr: utr, sequence: seq, includeIntrons: true })) : mode === 'gene_collapsed_intron' ? ((0, jsx_runtime_1.jsx)(CDNASequence_1.default, { model: model, exons: exons, feature: feature, cds: cds, sequence: seq, utr: utr, includeIntrons: true, collapseIntron: true })) : mode === 'gene_updownstream' ? ((0, jsx_runtime_1.jsx)(CDNASequence_1.default, { model: model, exons: exons, feature: feature, cds: cds, sequence: seq, utr: utr, upstream: upstream, downstream: downstream, includeIntrons: true })) : mode === 'gene_updownstream_collapsed_intron' ? ((0, jsx_runtime_1.jsx)(CDNASequence_1.default, { model: model, exons: exons, feature: feature, cds: cds, sequence: seq, utr: utr, upstream: upstream, downstream: downstream, includeIntrons: true, collapseIntron: true })) : ((0, jsx_runtime_1.jsx)("div", { children: "Unknown type" })) }));
|
|
47
|
+
});
|
|
48
|
+
exports.default = SequenceContents;
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import { BaseFeatureWidgetModel } from '../stateModelFactory';
|
|
1
|
+
import type { SimpleFeatureSerialized } from '../../util';
|
|
2
|
+
import type { BaseFeatureWidgetModel } from '../stateModelFactory';
|
|
4
3
|
declare const SequenceFeatureDetails: ({ model, feature, }: {
|
|
5
4
|
model: BaseFeatureWidgetModel;
|
|
6
5
|
feature: SimpleFeatureSerialized;
|
|
7
|
-
}) =>
|
|
6
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
8
7
|
export default SequenceFeatureDetails;
|
|
@@ -15,31 +15,37 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
25
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
37
|
};
|
|
28
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
const
|
|
39
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
40
|
+
const react_1 = require("react");
|
|
30
41
|
const material_1 = require("@mui/material");
|
|
31
42
|
const mobx_react_1 = require("mobx-react");
|
|
32
|
-
// locals
|
|
33
43
|
const hooks_1 = require("./hooks");
|
|
34
44
|
const ui_1 = require("../../ui");
|
|
35
|
-
// icons
|
|
36
45
|
const SequenceFeatureMenu_1 = __importDefault(require("./dialogs/SequenceFeatureMenu"));
|
|
37
46
|
const SequenceTypeSelector_1 = __importDefault(require("./dialogs/SequenceTypeSelector"));
|
|
38
|
-
// lazies
|
|
39
47
|
const SequencePanel = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./SequencePanel'))));
|
|
40
48
|
const SequenceDialog = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./dialogs/SequenceDialog'))));
|
|
41
|
-
// set the key on this component to feature.id to clear state after new feature
|
|
42
|
-
// is selected
|
|
43
49
|
const SequenceFeatureDetails = (0, mobx_react_1.observer)(function ({ model, feature, }) {
|
|
44
50
|
const { sequenceFeatureDetails } = model;
|
|
45
51
|
const { upDownBp } = sequenceFeatureDetails;
|
|
@@ -50,33 +56,19 @@ const SequenceFeatureDetails = (0, mobx_react_1.observer)(function ({ model, fea
|
|
|
50
56
|
(0, react_1.useEffect)(() => {
|
|
51
57
|
sequenceFeatureDetails.setFeature(feature);
|
|
52
58
|
}, [sequenceFeatureDetails, feature]);
|
|
53
|
-
return (
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
setOpenInDialog(
|
|
64
|
-
},
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
] })),
|
|
68
|
-
openInDialog ? (react_1.default.createElement("div", null,
|
|
69
|
-
"Open in dialog...",
|
|
70
|
-
react_1.default.createElement(react_1.Suspense, { fallback: react_1.default.createElement(ui_1.LoadingEllipses, null) },
|
|
71
|
-
react_1.default.createElement(SequenceDialog, { model: model, feature: feature, handleClose: () => {
|
|
72
|
-
setOpenInDialog(false);
|
|
73
|
-
} })))) : (react_1.default.createElement("div", null,
|
|
74
|
-
feature.type === 'gene' ? (react_1.default.createElement(material_1.Typography, null, "Note: inspect subfeature sequences for protein/CDS computations")) : null,
|
|
75
|
-
error ? (react_1.default.createElement(ui_1.ErrorMessage, { error: error })) : !sequence ? (react_1.default.createElement(ui_1.LoadingEllipses, null)) : 'error' in sequence ? (react_1.default.createElement(react_1.default.Fragment, null,
|
|
76
|
-
react_1.default.createElement(material_1.Typography, { color: "error" }, sequence.error),
|
|
77
|
-
react_1.default.createElement(material_1.Button, { variant: "contained", color: "inherit", onClick: () => {
|
|
78
|
-
setForce(true);
|
|
79
|
-
} }, "Force load"))) : (react_1.default.createElement(react_1.Suspense, { fallback: react_1.default.createElement(ui_1.LoadingEllipses, null) },
|
|
80
|
-
react_1.default.createElement(SequencePanel, { ref: seqPanelRef, feature: feature, sequence: sequence, model: sequenceFeatureDetails })))))));
|
|
59
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)(SequenceTypeSelector_1.default, { model: sequenceFeatureDetails }), (0, jsx_runtime_1.jsx)(SequenceFeatureMenu_1.default, { ref: seqPanelRef, model: sequenceFeatureDetails, extraItems: [
|
|
60
|
+
{
|
|
61
|
+
label: 'Open in dialog',
|
|
62
|
+
onClick: () => {
|
|
63
|
+
setTimeout(() => {
|
|
64
|
+
setOpenInDialog(true);
|
|
65
|
+
}, 1);
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
] })] }), openInDialog ? ((0, jsx_runtime_1.jsxs)("div", { children: ["Open in dialog...", (0, jsx_runtime_1.jsx)(react_1.Suspense, { fallback: (0, jsx_runtime_1.jsx)(ui_1.LoadingEllipses, {}), children: (0, jsx_runtime_1.jsx)(SequenceDialog, { model: model, feature: feature, handleClose: () => {
|
|
69
|
+
setOpenInDialog(false);
|
|
70
|
+
} }) })] })) : ((0, jsx_runtime_1.jsxs)("div", { children: [feature.type === 'gene' ? ((0, jsx_runtime_1.jsx)(material_1.Typography, { children: "Note: inspect subfeature sequences for protein/CDS computations" })) : null, error ? ((0, jsx_runtime_1.jsx)(ui_1.ErrorMessage, { error: error })) : !sequence ? ((0, jsx_runtime_1.jsx)(ui_1.LoadingEllipses, {})) : 'error' in sequence ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(material_1.Typography, { color: "error", children: sequence.error }), (0, jsx_runtime_1.jsx)(material_1.Button, { variant: "contained", color: "inherit", onClick: () => {
|
|
71
|
+
setForce(true);
|
|
72
|
+
}, children: "Force load" })] })) : ((0, jsx_runtime_1.jsx)(react_1.Suspense, { fallback: (0, jsx_runtime_1.jsx)(ui_1.LoadingEllipses, {}), children: (0, jsx_runtime_1.jsx)(SequencePanel, { ref: seqPanelRef, feature: feature, sequence: sequence, model: sequenceFeatureDetails }) }))] }))] }));
|
|
81
73
|
});
|
|
82
74
|
exports.default = SequenceFeatureDetails;
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { BaseFeatureWidgetModel } from '../stateModelFactory';
|
|
3
|
-
import { SimpleFeatureSerialized } from '../../util';
|
|
1
|
+
import type { SimpleFeatureSerialized } from '../../util';
|
|
2
|
+
import type { BaseFeatureWidgetModel } from '../stateModelFactory';
|
|
4
3
|
declare const SequenceFeaturePanel: ({ model, feature, }: {
|
|
5
4
|
model: BaseFeatureWidgetModel;
|
|
6
5
|
feature: SimpleFeatureSerialized;
|
|
7
|
-
}) =>
|
|
6
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
8
7
|
export default SequenceFeaturePanel;
|
|
@@ -15,27 +15,35 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
25
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
37
|
};
|
|
28
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
const
|
|
39
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
40
|
+
const react_1 = require("react");
|
|
41
|
+
const Help_1 = __importDefault(require("@mui/icons-material/Help"));
|
|
30
42
|
const material_1 = require("@mui/material");
|
|
31
43
|
const mobx_react_1 = require("mobx-react");
|
|
32
44
|
const mui_1 = require("tss-react/mui");
|
|
33
|
-
// locals
|
|
34
45
|
const ui_1 = require("../../ui");
|
|
35
46
|
const util_1 = require("../../util");
|
|
36
|
-
// icons
|
|
37
|
-
const Help_1 = __importDefault(require("@mui/icons-material/Help"));
|
|
38
|
-
// lazies
|
|
39
47
|
const SequenceFeatureDetails = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./SequenceFeatureDetails'))));
|
|
40
48
|
const HelpDialog = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./dialogs/HelpDialog'))));
|
|
41
49
|
const useStyles = (0, mui_1.makeStyles)()(theme => ({
|
|
@@ -47,25 +55,18 @@ const useStyles = (0, mui_1.makeStyles)()(theme => ({
|
|
|
47
55
|
marginBottom: theme.spacing(4),
|
|
48
56
|
},
|
|
49
57
|
}));
|
|
50
|
-
// display the stitched-together sequence of a gene's CDS, cDNA, or protein
|
|
51
|
-
// sequence. this is a best effort and weird genomic phenomena could lead these
|
|
52
|
-
// to not be 100% accurate
|
|
53
58
|
const SequenceFeaturePanel = (0, mobx_react_1.observer)(function ({ model, feature, }) {
|
|
54
59
|
const { classes } = useStyles();
|
|
55
60
|
const [shown, setShown] = (0, react_1.useState)(false);
|
|
56
|
-
return (
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
]);
|
|
66
|
-
} },
|
|
67
|
-
react_1.default.createElement(Help_1.default, null)),
|
|
68
|
-
shown ? (react_1.default.createElement(react_1.Suspense, { fallback: react_1.default.createElement(ui_1.LoadingEllipses, null) },
|
|
69
|
-
react_1.default.createElement(SequenceFeatureDetails, { key: feature.uniqueId, model: model, feature: feature }))) : null));
|
|
61
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: classes.container, children: [(0, jsx_runtime_1.jsx)(material_1.FormControl, { className: classes.formControl, children: (0, jsx_runtime_1.jsx)(material_1.Button, { variant: "contained", onClick: () => {
|
|
62
|
+
setShown(!shown);
|
|
63
|
+
}, children: shown ? 'Hide feature sequence' : 'Show feature sequence' }) }), (0, jsx_runtime_1.jsx)(material_1.IconButton, { onClick: () => {
|
|
64
|
+
(0, util_1.getSession)(model).queueDialog(handleClose => [
|
|
65
|
+
HelpDialog,
|
|
66
|
+
{
|
|
67
|
+
handleClose,
|
|
68
|
+
},
|
|
69
|
+
]);
|
|
70
|
+
}, children: (0, jsx_runtime_1.jsx)(Help_1.default, {}) }), shown ? ((0, jsx_runtime_1.jsx)(react_1.Suspense, { fallback: (0, jsx_runtime_1.jsx)(ui_1.LoadingEllipses, {}), children: (0, jsx_runtime_1.jsx)(SequenceFeatureDetails, { model: model, feature: feature }, feature.uniqueId) })) : null] }));
|
|
70
71
|
});
|
|
71
72
|
exports.default = SequenceFeaturePanel;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { SequenceFeatureDetailsModel } from './model';
|
|
2
|
+
import type { SimpleFeatureSerialized } from '../../util';
|
|
3
|
+
declare const SequenceName: ({ mode, model, feature, }: {
|
|
4
|
+
model: SequenceFeatureDetailsModel;
|
|
5
|
+
mode: string;
|
|
6
|
+
feature: SimpleFeatureSerialized;
|
|
7
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export default SequenceName;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
4
|
+
const mobx_react_1 = require("mobx-react");
|
|
5
|
+
const util_1 = require("../../util");
|
|
6
|
+
function getStrand(strand) {
|
|
7
|
+
if (strand === -1) {
|
|
8
|
+
return '(-)';
|
|
9
|
+
}
|
|
10
|
+
else if (strand === 1) {
|
|
11
|
+
return '(+)';
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
return '';
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
const SequenceName = (0, mobx_react_1.observer)(function ({ mode, model, feature, }) {
|
|
18
|
+
return ((0, jsx_runtime_1.jsx)("div", { style: { background: 'white' }, children: `>${[
|
|
19
|
+
[feature.name || feature.id, mode].filter(f => !!f).join('-'),
|
|
20
|
+
`${feature.refName}:${(0, util_1.toLocale)(feature.start + 1)}-${(0, util_1.toLocale)(feature.end)}${getStrand(feature.strand)}`,
|
|
21
|
+
mode.endsWith('updownstream')
|
|
22
|
+
? `+/- ${(0, util_1.toLocale)(model.upDownBp)} up/downstream bp`
|
|
23
|
+
: '',
|
|
24
|
+
]
|
|
25
|
+
.filter(f => !!f)
|
|
26
|
+
.join(' ')}\n` }));
|
|
27
|
+
});
|
|
28
|
+
exports.default = SequenceName;
|
|
@@ -1,11 +1,3 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
import { SeqState } from '../util';
|
|
4
|
-
import { SequenceFeatureDetailsModel } from './model';
|
|
5
|
-
interface SequencePanelProps {
|
|
6
|
-
sequence: SeqState;
|
|
7
|
-
feature: SimpleFeatureSerialized;
|
|
8
|
-
model: SequenceFeatureDetailsModel;
|
|
9
|
-
}
|
|
10
|
-
declare const SequencePanel: React.ForwardRefExoticComponent<SequencePanelProps & React.RefAttributes<HTMLDivElement>>;
|
|
1
|
+
import type { SequencePanelProps } from './types';
|
|
2
|
+
declare const SequencePanel: import("react").ForwardRefExoticComponent<SequencePanelProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
11
3
|
export default SequencePanel;
|
|
@@ -3,106 +3,32 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const
|
|
6
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
7
|
+
const react_1 = require("react");
|
|
7
8
|
const mobx_react_1 = require("mobx-react");
|
|
8
|
-
|
|
9
|
-
const
|
|
10
|
-
const util_2 = require("../util");
|
|
11
|
-
// panel types
|
|
12
|
-
const CDNASequence_1 = __importDefault(require("./seqtypes/CDNASequence"));
|
|
13
|
-
const ProteinSequence_1 = __importDefault(require("./seqtypes/ProteinSequence"));
|
|
14
|
-
const GenomicSequence_1 = __importDefault(require("./seqtypes/GenomicSequence"));
|
|
15
|
-
const CDSSequence_1 = __importDefault(require("./seqtypes/CDSSequence"));
|
|
16
|
-
function getStrand(strand) {
|
|
17
|
-
if (strand === -1) {
|
|
18
|
-
return '(-)';
|
|
19
|
-
}
|
|
20
|
-
else if (strand === 1) {
|
|
21
|
-
return '(+)';
|
|
22
|
-
}
|
|
23
|
-
else {
|
|
24
|
-
return '';
|
|
25
|
-
}
|
|
26
|
-
}
|
|
9
|
+
const SequenceContents_1 = __importDefault(require("./SequenceContents"));
|
|
10
|
+
const SequenceName_1 = __importDefault(require("./SequenceName"));
|
|
27
11
|
function WordWrap({ children }) {
|
|
28
|
-
return (
|
|
29
|
-
/* raw styles instead of className so that html copy works */
|
|
12
|
+
return ((0, jsx_runtime_1.jsx)("pre", { style: {
|
|
30
13
|
fontFamily: 'monospace',
|
|
31
14
|
color: 'black',
|
|
32
15
|
fontSize: 11,
|
|
33
|
-
}
|
|
16
|
+
}, children: children }));
|
|
34
17
|
}
|
|
35
18
|
function NoWordWrap({ children }) {
|
|
36
|
-
return (
|
|
37
|
-
/* raw styles instead of className so that html copy works */
|
|
19
|
+
return ((0, jsx_runtime_1.jsx)("div", { style: {
|
|
38
20
|
fontFamily: 'monospace',
|
|
39
21
|
color: 'black',
|
|
40
22
|
fontSize: 11,
|
|
41
23
|
maxWidth: 600,
|
|
42
24
|
whiteSpace: 'wrap',
|
|
43
25
|
wordBreak: 'break-all',
|
|
44
|
-
}
|
|
26
|
+
}, children: children }));
|
|
45
27
|
}
|
|
46
|
-
const SequencePanel = (0, mobx_react_1.observer)(react_1.
|
|
47
|
-
const { model, feature } = props;
|
|
28
|
+
const SequencePanel = (0, mobx_react_1.observer)((0, react_1.forwardRef)(function S(props, ref) {
|
|
29
|
+
const { sequence, model, feature } = props;
|
|
48
30
|
const { showCoordinates, mode } = model;
|
|
49
|
-
let { sequence: { seq, upstream = '', downstream = '' }, } = props;
|
|
50
|
-
const { subfeatures = [] } = feature;
|
|
51
|
-
const children = subfeatures
|
|
52
|
-
.sort((a, b) => a.start - b.start)
|
|
53
|
-
.map(sub => ({
|
|
54
|
-
...sub,
|
|
55
|
-
start: sub.start - feature.start,
|
|
56
|
-
end: sub.end - feature.start,
|
|
57
|
-
}));
|
|
58
|
-
// we filter duplicate entries in cds and exon lists duplicate entries
|
|
59
|
-
// may be rare but was seen in Gencode v36 track NCList, likely a bug
|
|
60
|
-
// on GFF3 or probably worth ignoring here (produces broken protein
|
|
61
|
-
// translations if included)
|
|
62
|
-
//
|
|
63
|
-
// position 1:224,800,006..225,203,064 gene ENSG00000185842.15 first
|
|
64
|
-
// transcript ENST00000445597.6
|
|
65
|
-
//
|
|
66
|
-
// http://localhost:3000/?config=test_data%2Fconfig.json&session=share-FUl7G1isvF&password=HXh5Y
|
|
67
|
-
let cds = (0, util_2.dedupe)(children.filter(sub => sub.type === 'CDS'));
|
|
68
|
-
let utr = (0, util_2.dedupe)(children.filter(sub => { var _a; return (_a = sub.type) === null || _a === void 0 ? void 0 : _a.match(/utr/i); }));
|
|
69
|
-
let exons = (0, util_2.dedupe)(children.filter(sub => sub.type === 'exon'));
|
|
70
|
-
if (!utr.length && cds.length && exons.length) {
|
|
71
|
-
utr = (0, util_2.calculateUTRs)(cds, exons);
|
|
72
|
-
}
|
|
73
|
-
if (!utr.length && cds.length && !exons.length) {
|
|
74
|
-
utr = (0, util_2.calculateUTRs2)(cds, {
|
|
75
|
-
start: 0,
|
|
76
|
-
end: feature.end - feature.start,
|
|
77
|
-
type: 'gene',
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
if (feature.strand === -1) {
|
|
81
|
-
// doing this in a single assignment is needed because downstream and
|
|
82
|
-
// upstream are swapped so this avoids a temp variable
|
|
83
|
-
;
|
|
84
|
-
[seq, upstream, downstream] = [
|
|
85
|
-
(0, util_1.revcom)(seq),
|
|
86
|
-
(0, util_1.revcom)(downstream),
|
|
87
|
-
(0, util_1.revcom)(upstream),
|
|
88
|
-
];
|
|
89
|
-
cds = (0, util_2.revlist)(cds, seq.length);
|
|
90
|
-
exons = (0, util_2.revlist)(exons, seq.length);
|
|
91
|
-
utr = (0, util_2.revlist)(utr, seq.length);
|
|
92
|
-
}
|
|
93
|
-
const codonTable = (0, util_1.generateCodonTable)(util_1.defaultCodonTable);
|
|
94
31
|
const Container = showCoordinates ? WordWrap : NoWordWrap;
|
|
95
|
-
return (
|
|
96
|
-
react_1.default.createElement(Container, null,
|
|
97
|
-
react_1.default.createElement("div", { style: { background: 'white' } }, `>${[
|
|
98
|
-
`${feature.name || feature.id}-${mode}`,
|
|
99
|
-
`${feature.refName}:${(0, util_1.toLocale)(feature.start + 1)}-${(0, util_1.toLocale)(feature.end)}${getStrand(feature.strand)}`,
|
|
100
|
-
mode.endsWith('updownstream')
|
|
101
|
-
? `+/- ${(0, util_1.toLocale)(model.upDownBp)} up/downstream bp`
|
|
102
|
-
: '',
|
|
103
|
-
]
|
|
104
|
-
.filter(f => !!f)
|
|
105
|
-
.join(' ')}\n`),
|
|
106
|
-
mode === 'genomic' ? (react_1.default.createElement(GenomicSequence_1.default, { feature: feature, model: model, sequence: seq })) : mode === 'genomic_sequence_updownstream' ? (react_1.default.createElement(GenomicSequence_1.default, { model: model, feature: feature, sequence: seq, upstream: upstream, downstream: downstream })) : mode === 'cds' ? (react_1.default.createElement(CDSSequence_1.default, { model: model, cds: cds, sequence: seq })) : mode === 'cdna' ? (react_1.default.createElement(CDNASequence_1.default, { model: model, exons: exons, feature: feature, cds: cds, utr: utr, sequence: seq })) : mode === 'protein' ? (react_1.default.createElement(ProteinSequence_1.default, { model: model, cds: cds, codonTable: codonTable, sequence: seq })) : mode === 'gene' ? (react_1.default.createElement(CDNASequence_1.default, { model: model, exons: exons, feature: feature, cds: cds, utr: utr, sequence: seq, includeIntrons: true })) : mode === 'gene_collapsed_intron' ? (react_1.default.createElement(CDNASequence_1.default, { model: model, exons: exons, feature: feature, cds: cds, sequence: seq, utr: utr, includeIntrons: true, collapseIntron: true })) : mode === 'gene_updownstream' ? (react_1.default.createElement(CDNASequence_1.default, { model: model, exons: exons, feature: feature, cds: cds, sequence: seq, utr: utr, upstream: upstream, downstream: downstream, includeIntrons: true })) : mode === 'gene_updownstream_collapsed_intron' ? (react_1.default.createElement(CDNASequence_1.default, { model: model, exons: exons, feature: feature, cds: cds, sequence: seq, utr: utr, upstream: upstream, downstream: downstream, includeIntrons: true, collapseIntron: true })) : (react_1.default.createElement("div", null, "Unknown type")))));
|
|
32
|
+
return ((0, jsx_runtime_1.jsx)("div", { "data-testid": "sequence_panel", ref: ref, style: { maxHeight: 300, overflow: 'auto' }, children: (0, jsx_runtime_1.jsxs)(Container, { children: [(0, jsx_runtime_1.jsx)(SequenceName_1.default, { model: model, mode: mode, feature: feature }), (0, jsx_runtime_1.jsx)(SequenceContents_1.default, { model: model, mode: mode, feature: feature, sequence: sequence })] }) }));
|
|
107
33
|
}));
|
|
108
34
|
exports.default = SequencePanel;
|
|
@@ -4,33 +4,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.default = HelpDialog;
|
|
7
|
-
const
|
|
8
|
-
const material_1 = require("@mui/material");
|
|
7
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
9
8
|
const ui_1 = require("@jbrowse/core/ui");
|
|
10
|
-
// icons
|
|
11
9
|
const Settings_1 = __importDefault(require("@mui/icons-material/Settings"));
|
|
10
|
+
const material_1 = require("@mui/material");
|
|
12
11
|
function HelpDialog({ handleClose, }) {
|
|
13
|
-
return (
|
|
12
|
+
return ((0, jsx_runtime_1.jsxs)(ui_1.Dialog, { maxWidth: "xl", open: true, onClose: () => {
|
|
14
13
|
handleClose();
|
|
15
|
-
}, title: "Feature sequence panel help" },
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
react_1.default.createElement(material_1.Typography, null, "For gene features, this panel does special calculations to e.g. stitch together the coding sequence, the options are:"),
|
|
19
|
-
react_1.default.createElement("ul", null,
|
|
20
|
-
react_1.default.createElement("li", null, "CDS - shows the stitched together CDS sequences"),
|
|
21
|
-
react_1.default.createElement("li", null, "Protein - the translated coding sequence, with the \"standard\" genetic code"),
|
|
22
|
-
react_1.default.createElement("li", null, "cDNA - shows the 'copy DNA' of transcript, formed from exon sequences"),
|
|
23
|
-
react_1.default.createElement("li", null, "Genomic w/ introns +/- Nbp up+down stream - the sequence underlying the entire gene including including introns, with UTR and CDS highlighted")),
|
|
24
|
-
react_1.default.createElement(material_1.Typography, { paragraph: true }, "For other feature types, the options are:"),
|
|
25
|
-
react_1.default.createElement("ul", null,
|
|
26
|
-
react_1.default.createElement("li", null, "Genomic +/- Nbp up+down stream - the reference genome sequence underlying the feature, with the up and downstream sequence")),
|
|
27
|
-
react_1.default.createElement(material_1.Typography, null,
|
|
28
|
-
"Note 1: you can use the \"gear icon\" ",
|
|
29
|
-
react_1.default.createElement(Settings_1.default, null),
|
|
30
|
-
" to edit the number of bp displayed up/downstream and in the intron region"),
|
|
31
|
-
react_1.default.createElement(material_1.Typography, null, "Note 2: The 'Copy HTML' function retains the colors from the sequence panel but cannot be pasted into some programs like notepad that only expect plain text.")),
|
|
32
|
-
react_1.default.createElement(material_1.DialogActions, null,
|
|
33
|
-
react_1.default.createElement(material_1.Button, { onClick: () => {
|
|
34
|
-
handleClose();
|
|
35
|
-
}, autoFocus: true, variant: "contained" }, "Close"))));
|
|
14
|
+
}, title: "Feature sequence panel help", children: [(0, jsx_runtime_1.jsxs)(material_1.DialogContent, { children: [(0, jsx_runtime_1.jsx)(material_1.Typography, { paragraph: true, children: "The \"Feature sequence\" panel shows the underlying genomic sequence for a given feature, fetched from the reference genome." }), (0, jsx_runtime_1.jsx)(material_1.Typography, { children: "For gene features, this panel does special calculations to e.g. stitch together the coding sequence, the options are:" }), (0, jsx_runtime_1.jsxs)("ul", { children: [(0, jsx_runtime_1.jsx)("li", { children: "CDS - shows the stitched together CDS sequences" }), (0, jsx_runtime_1.jsx)("li", { children: "Protein - the translated coding sequence, with the \"standard\" genetic code" }), (0, jsx_runtime_1.jsx)("li", { children: "cDNA - shows the 'copy DNA' of transcript, formed from exon sequences" }), (0, jsx_runtime_1.jsx)("li", { children: "Genomic w/ introns +/- Nbp up+down stream - the sequence underlying the entire gene including including introns, with UTR and CDS highlighted" })] }), (0, jsx_runtime_1.jsx)(material_1.Typography, { paragraph: true, children: "For other feature types, the options are:" }), (0, jsx_runtime_1.jsx)("ul", { children: (0, jsx_runtime_1.jsx)("li", { children: "Genomic +/- Nbp up+down stream - the reference genome sequence underlying the feature, with the up and downstream sequence" }) }), (0, jsx_runtime_1.jsxs)(material_1.Typography, { children: ["Note 1: you can use the \"gear icon\" ", (0, jsx_runtime_1.jsx)(Settings_1.default, {}), " to edit the number of bp displayed up/downstream and in the intron region"] }), (0, jsx_runtime_1.jsx)(material_1.Typography, { children: "Note 2: The 'Copy HTML' function retains the colors from the sequence panel but cannot be pasted into some programs like notepad that only expect plain text." })] }), (0, jsx_runtime_1.jsx)(material_1.DialogActions, { children: (0, jsx_runtime_1.jsx)(material_1.Button, { onClick: () => {
|
|
15
|
+
handleClose();
|
|
16
|
+
}, autoFocus: true, variant: "contained", children: "Close" }) })] }));
|
|
36
17
|
}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import { BaseFeatureWidgetModel } from '../../stateModelFactory';
|
|
1
|
+
import type { SimpleFeatureSerialized } from '../../../util';
|
|
2
|
+
import type { BaseFeatureWidgetModel } from '../../stateModelFactory';
|
|
4
3
|
declare const SequenceDialog: ({ handleClose, model, feature, }: {
|
|
5
4
|
handleClose: () => void;
|
|
6
5
|
feature: SimpleFeatureSerialized;
|
|
7
6
|
model: BaseFeatureWidgetModel;
|
|
8
|
-
}) =>
|
|
7
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
9
8
|
export default SequenceDialog;
|