@jbrowse/core 2.17.0 → 2.18.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.js +1 -2
- package/BaseFeatureWidget/BaseFeatureDetail/Attributes.js +4 -8
- package/BaseFeatureWidget/BaseFeatureDetail/BaseCard.d.ts +1 -1
- package/BaseFeatureWidget/BaseFeatureDetail/BaseCard.js +1 -2
- package/BaseFeatureWidget/BaseFeatureDetail/BasicValue.js +2 -3
- package/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.d.ts +1 -1
- package/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.js +2 -3
- package/BaseFeatureWidget/BaseFeatureDetail/DataGridDetails.js +22 -25
- package/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.d.ts +2 -2
- package/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.js +6 -8
- package/BaseFeatureWidget/BaseFeatureDetail/Position.d.ts +1 -1
- package/BaseFeatureWidget/BaseFeatureDetail/SimpleField.js +1 -1
- package/BaseFeatureWidget/BaseFeatureDetail/UriField.js +1 -1
- package/BaseFeatureWidget/BaseFeatureDetail/index.d.ts +1 -1
- package/BaseFeatureWidget/BaseFeatureDetail/index.js +1 -7
- package/BaseFeatureWidget/BaseFeatureDetail/util.js +0 -5
- package/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureDetails.d.ts +2 -2
- package/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureDetails.js +0 -7
- package/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeaturePanel.d.ts +2 -2
- package/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeaturePanel.js +1 -7
- package/BaseFeatureWidget/SequenceFeatureDetails/SequencePanel.d.ts +3 -3
- package/BaseFeatureWidget/SequenceFeatureDetails/SequencePanel.js +24 -33
- package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/HelpDialog.js +1 -2
- package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceDialog.d.ts +2 -2
- package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceDialog.js +3 -4
- package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceFeatureMenu.d.ts +2 -2
- package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceFeatureMenu.js +3 -6
- package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceTypeSelector.d.ts +1 -1
- package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SettingsDialog.d.ts +1 -1
- package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SettingsDialog.js +2 -2
- 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 +1 -56
- package/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDNASequence.d.ts +3 -3
- package/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDSSequence.d.ts +2 -2
- package/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDSSequence.js +5 -6
- package/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/GenomicSequence.d.ts +2 -2
- package/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/GenomicSequence.js +0 -1
- package/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/ProteinSequence.d.ts +2 -2
- package/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/ProteinSequence.js +0 -2
- package/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/SequenceDisplay.d.ts +1 -1
- package/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/SequenceDisplay.js +1 -3
- 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 +2 -5
- 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 +15 -31
- package/PluginManager.js +11 -39
- package/ReExports/DataGrid.js +0 -1
- package/ReExports/list.d.ts +0 -5
- package/ReExports/list.js +0 -5
- package/ReExports/modules.d.ts +22 -20
- package/ReExports/modules.js +16 -25
- package/TextSearch/BaseResults.d.ts +3 -3
- package/TextSearch/TextSearchManager.d.ts +4 -16
- package/TextSearch/TextSearchManager.js +1 -13
- package/assemblyManager/assembly.d.ts +5 -100
- package/assemblyManager/assembly.js +27 -143
- 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 +1 -12
- 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 +1 -2
- 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 +1 -1
- package/data_adapters/dataAdapterCache.d.ts +4 -21
- package/data_adapters/dataAdapterCache.js +0 -19
- package/package.json +3 -4
- 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 +0 -58
- 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 +3 -2
- package/pluggableElementTypes/renderers/CircularChordRendererType.js +1 -6
- 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 +4 -8
- package/pluggableElementTypes/renderers/RendererType.js +1 -5
- package/pluggableElementTypes/renderers/RpcRenderedSvgGroup.d.ts +2 -2
- package/pluggableElementTypes/renderers/RpcRenderedSvgGroup.js +3 -12
- package/pluggableElementTypes/renderers/ServerSideRenderedContent.d.ts +1 -1
- package/pluggableElementTypes/renderers/ServerSideRenderedContent.js +6 -14
- package/pluggableElementTypes/renderers/ServerSideRendererType.d.ts +9 -49
- package/pluggableElementTypes/renderers/ServerSideRendererType.js +7 -57
- 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 +1 -1
- package/stories/examples/WithSequencePanel.js +3 -3
- package/tsconfig.build.tsbuildinfo +1 -1
- package/ui/AppLogo.d.ts +1 -1
- package/ui/AppLogo.js +0 -2
- package/ui/AssemblySelector.d.ts +2 -2
- package/ui/AssemblySelector.js +0 -3
- package/ui/BaseTooltip.js +2 -6
- package/ui/CascadingMenu.d.ts +2 -2
- package/ui/CascadingMenu.js +3 -4
- package/ui/CascadingMenuButton.d.ts +1 -1
- package/ui/CascadingMenuButton.js +1 -1
- package/ui/ColorPicker.js +1 -7
- package/ui/Dialog.d.ts +1 -1
- package/ui/Dialog.js +2 -6
- package/ui/DropDownMenu.d.ts +1 -1
- package/ui/DropDownMenu.js +2 -2
- package/ui/EditableTypography.d.ts +1 -1
- package/ui/EditableTypography.js +1 -5
- package/ui/ErrorBoundary.d.ts +2 -1
- package/ui/ErrorMessage.js +2 -9
- package/ui/ErrorMessageStackTraceDialog.js +2 -10
- package/ui/FactoryResetDialog.js +1 -1
- package/ui/FatalErrorDialog.js +1 -1
- package/ui/FileSelector/FileSelector.d.ts +4 -3
- package/ui/FileSelector/FileSelector.js +40 -40
- package/ui/FileSelector/LocalFileChooser.d.ts +1 -1
- package/ui/FileSelector/LocalFileChooser.js +0 -1
- package/ui/FileSelector/UrlChooser.d.ts +4 -3
- package/ui/FileSelector/UrlChooser.js +5 -3
- package/ui/Icons.d.ts +1 -1
- package/ui/Icons.js +1 -7
- package/ui/LoadingEllipses.d.ts +1 -1
- package/ui/LoadingEllipses.js +3 -3
- package/ui/Menu.d.ts +1 -1
- package/ui/Menu.js +3 -10
- package/ui/MenuButton.d.ts +1 -1
- package/ui/ResizeHandle.js +2 -2
- package/ui/ReturnToImportFormDialog.js +1 -1
- package/ui/SanitizedHTML.js +1 -21
- package/ui/Snackbar.d.ts +2 -2
- package/ui/Snackbar.js +1 -2
- package/ui/SnackbarModel.d.ts +1 -26
- package/ui/SnackbarModel.js +2 -30
- package/ui/colors.d.ts +1 -1
- package/ui/colors.js +1 -1
- package/ui/react-colorful.js +0 -3
- package/ui/theme.d.ts +1 -1
- package/ui/theme.js +0 -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 +16 -164
- package/util/index.js +22 -282
- package/util/io/RemoteFileWithRangeCache.d.ts +3 -2
- package/util/io/RemoteFileWithRangeCache.js +6 -10
- package/util/io/index.d.ts +3 -4
- package/util/io/index.js +3 -17
- 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.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.js +1 -8
- 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 +3 -25
- package/util/tracks.js +0 -30
- 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.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
|
@@ -3,111 +3,66 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.createBaseTrackConfig = createBaseTrackConfig;
|
|
4
4
|
const mobx_state_tree_1 = require("mobx-state-tree");
|
|
5
5
|
const configuration_1 = require("../../configuration");
|
|
6
|
-
/**
|
|
7
|
-
* #config BaseTrack
|
|
8
|
-
*/
|
|
9
6
|
function createBaseTrackConfig(pluginManager) {
|
|
10
7
|
return (0, configuration_1.ConfigurationSchema)('BaseTrack', {
|
|
11
|
-
/**
|
|
12
|
-
* #slot
|
|
13
|
-
*/
|
|
14
8
|
name: {
|
|
15
9
|
description: 'descriptive name of the track',
|
|
16
10
|
type: 'string',
|
|
17
11
|
defaultValue: 'Track',
|
|
18
12
|
},
|
|
19
|
-
/**
|
|
20
|
-
* #slot
|
|
21
|
-
*/
|
|
22
13
|
assemblyNames: {
|
|
23
14
|
description: 'name of the assembly (or assemblies) track belongs to',
|
|
24
15
|
type: 'stringArray',
|
|
25
16
|
defaultValue: ['assemblyName'],
|
|
26
17
|
},
|
|
27
|
-
/**
|
|
28
|
-
* #slot
|
|
29
|
-
*/
|
|
30
18
|
description: {
|
|
31
19
|
description: 'a description of the track',
|
|
32
20
|
type: 'string',
|
|
33
21
|
defaultValue: '',
|
|
34
22
|
},
|
|
35
|
-
/**
|
|
36
|
-
* #slot
|
|
37
|
-
*/
|
|
38
23
|
category: {
|
|
39
24
|
description: 'the category and sub-categories of a track',
|
|
40
25
|
type: 'stringArray',
|
|
41
26
|
defaultValue: [],
|
|
42
27
|
},
|
|
43
|
-
/**
|
|
44
|
-
* #slot
|
|
45
|
-
*/
|
|
46
28
|
metadata: {
|
|
47
29
|
type: 'frozen',
|
|
48
30
|
description: 'anything to add about this track',
|
|
49
31
|
defaultValue: {},
|
|
50
32
|
},
|
|
51
|
-
/**
|
|
52
|
-
* #slot
|
|
53
|
-
*/
|
|
54
33
|
adapter: pluginManager.pluggableConfigSchemaType('adapter'),
|
|
55
34
|
textSearching: (0, configuration_1.ConfigurationSchema)('textSearching', {
|
|
56
|
-
/**
|
|
57
|
-
* #slot textSearching.indexedAttributes
|
|
58
|
-
*/
|
|
59
35
|
indexingAttributes: {
|
|
60
36
|
type: 'stringArray',
|
|
61
37
|
description: 'list of which feature attributes to index for text searching',
|
|
62
38
|
defaultValue: ['Name', 'ID'],
|
|
63
39
|
},
|
|
64
|
-
/**
|
|
65
|
-
* #slot textSearching.indexingFeatureTypesToExclude
|
|
66
|
-
*/
|
|
67
40
|
indexingFeatureTypesToExclude: {
|
|
68
41
|
type: 'stringArray',
|
|
69
42
|
description: 'list of feature types to exclude in text search index',
|
|
70
43
|
defaultValue: ['CDS', 'exon'],
|
|
71
44
|
},
|
|
72
|
-
/**
|
|
73
|
-
* #slot textSearching.textSearchAdapter
|
|
74
|
-
*/
|
|
75
45
|
textSearchAdapter: pluginManager.pluggableConfigSchemaType('text search adapter'),
|
|
76
46
|
}),
|
|
77
|
-
/**
|
|
78
|
-
* #slot
|
|
79
|
-
*/
|
|
80
47
|
displays: mobx_state_tree_1.types.array(pluginManager.pluggableConfigSchemaType('display')),
|
|
81
48
|
formatDetails: (0, configuration_1.ConfigurationSchema)('FormatDetails', {
|
|
82
|
-
/**
|
|
83
|
-
* #slot formatDetails.feature
|
|
84
|
-
*/
|
|
85
49
|
feature: {
|
|
86
50
|
type: 'frozen',
|
|
87
51
|
description: 'adds extra fields to the feature details',
|
|
88
52
|
defaultValue: {},
|
|
89
53
|
contextVariable: ['feature'],
|
|
90
54
|
},
|
|
91
|
-
/**
|
|
92
|
-
* #slot formatDetails.subfeatures
|
|
93
|
-
*/
|
|
94
55
|
subfeatures: {
|
|
95
56
|
type: 'frozen',
|
|
96
57
|
description: 'adds extra fields to the subfeatures of a feature',
|
|
97
58
|
defaultValue: {},
|
|
98
59
|
contextVariable: ['feature'],
|
|
99
60
|
},
|
|
100
|
-
/**
|
|
101
|
-
* #slot formatDetails.depth
|
|
102
|
-
*/
|
|
103
61
|
depth: {
|
|
104
62
|
type: 'number',
|
|
105
63
|
defaultValue: 2,
|
|
106
64
|
description: 'depth of subfeatures to iterate the formatter on formatDetails.subfeatures (e.g. you may not want to format the exon/cds subfeatures, so limited to 2',
|
|
107
65
|
},
|
|
108
|
-
/**
|
|
109
|
-
* #slot formatDetails.maxDepth
|
|
110
|
-
*/
|
|
111
66
|
maxDepth: {
|
|
112
67
|
type: 'number',
|
|
113
68
|
defaultValue: 99999,
|
|
@@ -115,18 +70,12 @@ function createBaseTrackConfig(pluginManager) {
|
|
|
115
70
|
},
|
|
116
71
|
}),
|
|
117
72
|
formatAbout: (0, configuration_1.ConfigurationSchema)('FormatAbout', {
|
|
118
|
-
/**
|
|
119
|
-
* #slot formatAbout.config
|
|
120
|
-
*/
|
|
121
73
|
config: {
|
|
122
74
|
type: 'frozen',
|
|
123
75
|
description: 'formats configuration object in about dialog',
|
|
124
76
|
defaultValue: {},
|
|
125
77
|
contextVariable: ['config'],
|
|
126
78
|
},
|
|
127
|
-
/**
|
|
128
|
-
* #slot formatAbout.hideUris
|
|
129
|
-
*/
|
|
130
79
|
hideUris: {
|
|
131
80
|
type: 'boolean',
|
|
132
81
|
defaultValue: false,
|
|
@@ -134,12 +83,9 @@ function createBaseTrackConfig(pluginManager) {
|
|
|
134
83
|
}),
|
|
135
84
|
}, {
|
|
136
85
|
preProcessSnapshot: s2 => {
|
|
137
|
-
const snap = pluginManager.evaluateExtensionPoint('Core-preProcessTrackConfig',
|
|
86
|
+
const snap = pluginManager.evaluateExtensionPoint('Core-preProcessTrackConfig', structuredClone(s2));
|
|
138
87
|
const { displays = [] } = snap;
|
|
139
88
|
if (snap.trackId !== 'placeholderId') {
|
|
140
|
-
// Gets the displays on the track snapshot and the possible displays
|
|
141
|
-
// from the track type and adds any missing possible displays to the
|
|
142
|
-
// snapshot
|
|
143
89
|
const configDisplayTypes = new Set(displays.map(d => d.type));
|
|
144
90
|
pluginManager.getTrackType(snap.type).displayTypes.forEach(d => {
|
|
145
91
|
if (!configDisplayTypes.has(d.name)) {
|
|
@@ -152,9 +98,6 @@ function createBaseTrackConfig(pluginManager) {
|
|
|
152
98
|
}
|
|
153
99
|
return { ...snap, displays };
|
|
154
100
|
},
|
|
155
|
-
/**
|
|
156
|
-
* #identifier
|
|
157
|
-
*/
|
|
158
101
|
explicitIdentifier: 'trackId',
|
|
159
102
|
explicitlyTyped: true,
|
|
160
103
|
actions: (self) => ({
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
+
import FeatureRendererType from './FeatureRendererType';
|
|
1
2
|
import GranularRectLayout from '../../util/layouts/GranularRectLayout';
|
|
2
3
|
import MultiLayout from '../../util/layouts/MultiLayout';
|
|
3
|
-
import { SerializedLayout, BaseLayout } from '../../util/layouts/BaseLayout';
|
|
4
4
|
import PrecomputedLayout from '../../util/layouts/PrecomputedLayout';
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import SerializableFilterChain from './util/serializableFilterChain';
|
|
9
|
-
import RpcManager from '../../rpc/RpcManager';
|
|
5
|
+
import type { RenderArgs as FeatureRenderArgs, RenderArgsDeserialized as FeatureRenderArgsDeserialized, RenderArgsSerialized as FeatureRenderArgsSerialized, RenderResults as FeatureRenderResults, ResultsDeserialized as FeatureResultsDeserialized, ResultsSerialized as FeatureResultsSerialized } from './FeatureRendererType';
|
|
6
|
+
import type { AnyConfigurationModel } from '../../configuration';
|
|
7
|
+
import type { Feature, Region } from '../../util';
|
|
8
|
+
import type SerializableFilterChain from './util/serializableFilterChain';
|
|
9
|
+
import type RpcManager from '../../rpc/RpcManager';
|
|
10
|
+
import type { BaseLayout, SerializedLayout } from '../../util/layouts/BaseLayout';
|
|
10
11
|
export interface LayoutSessionProps {
|
|
11
12
|
config: AnyConfigurationModel;
|
|
12
13
|
bpPerPx: number;
|
|
@@ -25,10 +26,6 @@ export declare class LayoutSession implements LayoutSessionProps {
|
|
|
25
26
|
constructor(args: LayoutSessionProps);
|
|
26
27
|
update(props: LayoutSessionProps): void;
|
|
27
28
|
makeLayout(): MultiLayout<GranularRectLayout<unknown>, unknown>;
|
|
28
|
-
/**
|
|
29
|
-
* @param layout -
|
|
30
|
-
* @returns true if the given layout is a valid one to use for this session
|
|
31
|
-
*/
|
|
32
29
|
cachedLayoutIsValid(cachedLayout: CachedLayout): boolean;
|
|
33
30
|
cachedLayout: CachedLayout | undefined;
|
|
34
31
|
get layout(): MyMultiLayout;
|
|
@@ -74,10 +71,5 @@ export default class BoxRendererType extends FeatureRendererType {
|
|
|
74
71
|
deserializeResultsInClient(result: ResultsSerialized, args: RenderArgs): ResultsDeserialized;
|
|
75
72
|
createLayoutInWorker(args: RenderArgsDeserialized): GranularRectLayout<unknown>;
|
|
76
73
|
serializeResultsInWorker(results: RenderResults, args: RenderArgsDeserialized): ResultsSerialized;
|
|
77
|
-
/**
|
|
78
|
-
* gets layout and renders
|
|
79
|
-
*
|
|
80
|
-
* @param props - render args
|
|
81
|
-
*/
|
|
82
74
|
render(props: RenderArgsDeserialized): Promise<RenderResults>;
|
|
83
75
|
}
|
|
@@ -5,14 +5,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.LayoutSession = void 0;
|
|
7
7
|
const fast_deep_equal_1 = __importDefault(require("fast-deep-equal"));
|
|
8
|
-
|
|
8
|
+
const FeatureRendererType_1 = __importDefault(require("./FeatureRendererType"));
|
|
9
|
+
const configuration_1 = require("../../configuration");
|
|
10
|
+
const util_1 = require("../../util");
|
|
9
11
|
const GranularRectLayout_1 = __importDefault(require("../../util/layouts/GranularRectLayout"));
|
|
10
12
|
const MultiLayout_1 = __importDefault(require("../../util/layouts/MultiLayout"));
|
|
11
13
|
const PrecomputedLayout_1 = __importDefault(require("../../util/layouts/PrecomputedLayout"));
|
|
12
|
-
// other
|
|
13
|
-
const FeatureRendererType_1 = __importDefault(require("./FeatureRendererType"));
|
|
14
|
-
const util_1 = require("../../util");
|
|
15
|
-
const configuration_1 = require("../../configuration");
|
|
16
14
|
class LayoutSession {
|
|
17
15
|
constructor(args) {
|
|
18
16
|
this.config = args.config;
|
|
@@ -31,10 +29,6 @@ class LayoutSession {
|
|
|
31
29
|
pitchY: (0, configuration_1.readConfObject)(this.config, 'noSpacing') ? 1 : 3,
|
|
32
30
|
});
|
|
33
31
|
}
|
|
34
|
-
/**
|
|
35
|
-
* @param layout -
|
|
36
|
-
* @returns true if the given layout is a valid one to use for this session
|
|
37
|
-
*/
|
|
38
32
|
cachedLayoutIsValid(cachedLayout) {
|
|
39
33
|
return (cachedLayout.layout.subLayoutConstructorArgs.pitchX === this.bpPerPx &&
|
|
40
34
|
(0, fast_deep_equal_1.default)((0, configuration_1.readConfObject)(this.config), cachedLayout.config) &&
|
|
@@ -111,11 +105,6 @@ class BoxRendererType extends FeatureRendererType_1.default {
|
|
|
111
105
|
serialized.maxHeightReached = serialized.layout.maxHeightReached;
|
|
112
106
|
return serialized;
|
|
113
107
|
}
|
|
114
|
-
/**
|
|
115
|
-
* gets layout and renders
|
|
116
|
-
*
|
|
117
|
-
* @param props - render args
|
|
118
|
-
*/
|
|
119
108
|
async render(props) {
|
|
120
109
|
const layout = props.layout ||
|
|
121
110
|
this.createLayoutInWorker(props);
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { SimpleFeature, SimpleFeatureSerialized } from '../../util';
|
|
3
2
|
import FeatureRenderer from './FeatureRendererType';
|
|
4
|
-
import {
|
|
3
|
+
import { SimpleFeature } from '../../util';
|
|
4
|
+
import type { SimpleFeatureSerialized } from '../../util';
|
|
5
|
+
import type { ThemeOptions } from '@mui/material';
|
|
5
6
|
export default class CircularChordRendererType extends FeatureRenderer {
|
|
6
7
|
supportsSVG: boolean;
|
|
7
8
|
deserializeResultsInClient(res: {
|
|
@@ -4,9 +4,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const react_1 = __importDefault(require("react"));
|
|
7
|
-
const util_1 = require("../../util");
|
|
8
7
|
const FeatureRendererType_1 = __importDefault(require("./FeatureRendererType"));
|
|
9
8
|
const RpcRenderedSvgGroup_1 = __importDefault(require("./RpcRenderedSvgGroup"));
|
|
9
|
+
const util_1 = require("../../util");
|
|
10
10
|
class CircularChordRendererType extends FeatureRendererType_1.default {
|
|
11
11
|
constructor() {
|
|
12
12
|
super(...arguments);
|
|
@@ -14,11 +14,7 @@ class CircularChordRendererType extends FeatureRendererType_1.default {
|
|
|
14
14
|
}
|
|
15
15
|
deserializeResultsInClient(res, args) {
|
|
16
16
|
const deserializedFeatures = new Map(res.features.map(f => util_1.SimpleFeature.fromJSON(f)).map(f => [f.id(), f]));
|
|
17
|
-
// if we are rendering svg, we skip hydration
|
|
18
17
|
if (args.exportSVG) {
|
|
19
|
-
// only return the res if the renderer explicitly has
|
|
20
|
-
// this.supportsSVG support to avoid garbage being rendered in SVG
|
|
21
|
-
// document
|
|
22
18
|
return {
|
|
23
19
|
...res,
|
|
24
20
|
features: deserializedFeatures,
|
|
@@ -28,7 +24,6 @@ class CircularChordRendererType extends FeatureRendererType_1.default {
|
|
|
28
24
|
: '<text y="12" fill="black">SVG export not supported for this track</text>',
|
|
29
25
|
};
|
|
30
26
|
}
|
|
31
|
-
// hydrate res using ServerSideRenderedContent
|
|
32
27
|
return {
|
|
33
28
|
...res,
|
|
34
29
|
features: deserializedFeatures,
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
import RpcManager from '../../rpc/RpcManager';
|
|
5
|
-
import {
|
|
1
|
+
import ServerSideRenderer from './ServerSideRendererType';
|
|
2
|
+
import type { RenderArgs as ServerSideRenderArgs, RenderArgsDeserialized as ServerSideRenderArgsDeserialized, RenderArgsSerialized as ServerSideRenderArgsSerialized, ResultsDeserialized as ServerSideResultsDeserialized, ResultsSerialized as ServerSideResultsSerialized } from './ServerSideRendererType';
|
|
3
|
+
import type { AnyConfigurationModel } from '../../configuration';
|
|
4
|
+
import type RpcManager from '../../rpc/RpcManager';
|
|
5
|
+
import type { Feature } from '../../util/simpleFeature';
|
|
6
|
+
import type { Region } from '../../util/types';
|
|
6
7
|
export interface RenderArgs extends ServerSideRenderArgs {
|
|
7
8
|
blockKey: string;
|
|
8
9
|
}
|
|
@@ -23,26 +24,10 @@ export interface ResultsSerializedSvgExport extends ResultsSerialized {
|
|
|
23
24
|
reactElement: unknown;
|
|
24
25
|
}
|
|
25
26
|
export default class ComparativeServerSideRenderer extends ServerSideRenderer {
|
|
26
|
-
/**
|
|
27
|
-
* directly modifies the render arguments to prepare them to be serialized
|
|
28
|
-
* and sent to the worker.
|
|
29
|
-
*
|
|
30
|
-
* @param args - the arguments passed to render
|
|
31
|
-
* @returns the same object
|
|
32
|
-
*/
|
|
33
27
|
renameRegionsIfNeeded(args: RenderArgs): Promise<RenderArgs>;
|
|
34
28
|
serializeArgsInClient(args: RenderArgs): ServerSideRenderArgsSerialized;
|
|
35
29
|
deserializeResultsInClient(result: ResultsSerialized, args: RenderArgs): ResultsDeserialized;
|
|
36
|
-
/**
|
|
37
|
-
* Render method called on the client. Serializes args, then
|
|
38
|
-
* calls `render` with the RPC manager.
|
|
39
|
-
*/
|
|
40
30
|
renderInClient(rpcManager: RpcManager, args: RenderArgs): Promise<ServerSideResultsSerialized>;
|
|
41
|
-
/**
|
|
42
|
-
* @param renderArgs -
|
|
43
|
-
* @param feature -
|
|
44
|
-
* @returns true if this feature passes all configured filters
|
|
45
|
-
*/
|
|
46
31
|
featurePassesFilters(renderArgs: RenderArgsDeserialized, feature: Feature): boolean;
|
|
47
32
|
getFeatures(renderArgs: {
|
|
48
33
|
regions: Region[];
|
|
@@ -3,22 +3,15 @@ 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 rxjs_1 = require("rxjs");
|
|
6
7
|
const operators_1 = require("rxjs/operators");
|
|
7
8
|
const ServerSideRendererType_1 = __importDefault(require("./ServerSideRendererType"));
|
|
8
9
|
const dataAdapterCache_1 = require("../../data_adapters/dataAdapterCache");
|
|
9
10
|
const util_1 = require("../../util");
|
|
10
|
-
const rxjs_1 = require("rxjs");
|
|
11
11
|
function isSvgExport(e) {
|
|
12
12
|
return 'canvasRecordedData' in e;
|
|
13
13
|
}
|
|
14
14
|
class ComparativeServerSideRenderer extends ServerSideRendererType_1.default {
|
|
15
|
-
/**
|
|
16
|
-
* directly modifies the render arguments to prepare them to be serialized
|
|
17
|
-
* and sent to the worker.
|
|
18
|
-
*
|
|
19
|
-
* @param args - the arguments passed to render
|
|
20
|
-
* @returns the same object
|
|
21
|
-
*/
|
|
22
15
|
async renameRegionsIfNeeded(args) {
|
|
23
16
|
return args;
|
|
24
17
|
}
|
|
@@ -29,7 +22,6 @@ class ComparativeServerSideRenderer extends ServerSideRendererType_1.default {
|
|
|
29
22
|
};
|
|
30
23
|
return super.serializeArgsInClient(deserializedArgs);
|
|
31
24
|
}
|
|
32
|
-
// deserialize some of the results that came back from the worker
|
|
33
25
|
deserializeResultsInClient(result, args) {
|
|
34
26
|
const deserialized = super.deserializeResultsInClient(result, args);
|
|
35
27
|
return {
|
|
@@ -37,10 +29,6 @@ class ComparativeServerSideRenderer extends ServerSideRendererType_1.default {
|
|
|
37
29
|
blockKey: args.blockKey,
|
|
38
30
|
};
|
|
39
31
|
}
|
|
40
|
-
/**
|
|
41
|
-
* Render method called on the client. Serializes args, then
|
|
42
|
-
* calls `render` with the RPC manager.
|
|
43
|
-
*/
|
|
44
32
|
async renderInClient(rpcManager, args) {
|
|
45
33
|
const results = (await rpcManager.call(args.sessionId, 'ComparativeRender', args));
|
|
46
34
|
if (isSvgExport(results)) {
|
|
@@ -49,11 +37,6 @@ class ComparativeServerSideRenderer extends ServerSideRendererType_1.default {
|
|
|
49
37
|
}
|
|
50
38
|
return results;
|
|
51
39
|
}
|
|
52
|
-
/**
|
|
53
|
-
* @param renderArgs -
|
|
54
|
-
* @param feature -
|
|
55
|
-
* @returns true if this feature passes all configured filters
|
|
56
|
-
*/
|
|
57
40
|
featurePassesFilters(renderArgs, feature) {
|
|
58
41
|
return renderArgs.filters
|
|
59
42
|
? renderArgs.filters.passes(feature, renderArgs)
|
|
@@ -64,8 +47,6 @@ class ComparativeServerSideRenderer extends ServerSideRendererType_1.default {
|
|
|
64
47
|
const { regions, sessionId, adapterConfig } = renderArgs;
|
|
65
48
|
const { dataAdapter } = await (0, dataAdapterCache_1.getAdapter)(pm, sessionId, adapterConfig);
|
|
66
49
|
const requestRegions = regions.map(r => {
|
|
67
|
-
// make sure the requested region's start and end are integers, if
|
|
68
|
-
// there is a region specification.
|
|
69
50
|
const requestRegion = { ...r };
|
|
70
51
|
if (requestRegion.start) {
|
|
71
52
|
requestRegion.start = Math.floor(requestRegion.start);
|
|
@@ -75,13 +56,9 @@ class ComparativeServerSideRenderer extends ServerSideRendererType_1.default {
|
|
|
75
56
|
}
|
|
76
57
|
return requestRegion;
|
|
77
58
|
});
|
|
78
|
-
// note that getFeaturesInMultipleRegions does not do glyph expansion
|
|
79
59
|
const res = await (0, rxjs_1.firstValueFrom)(dataAdapter
|
|
80
60
|
.getFeaturesInMultipleRegions(requestRegions, renderArgs)
|
|
81
|
-
.pipe(
|
|
82
|
-
// @ts-expect-error
|
|
83
|
-
(0, operators_1.filter)(f => this.featurePassesFilters(renderArgs, f)), (0, operators_1.toArray)()));
|
|
84
|
-
// dedupe needed xref https://github.com/GMOD/jbrowse-components/pull/3404/
|
|
61
|
+
.pipe((0, operators_1.filter)(f => this.featurePassesFilters(renderArgs, f)), (0, operators_1.toArray)()));
|
|
85
62
|
return (0, util_1.dedupe)(res, f => f.id());
|
|
86
63
|
}
|
|
87
64
|
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
1
|
+
import ServerSideRendererType from './ServerSideRendererType';
|
|
2
|
+
import type { RenderArgs as ServerSideRenderArgs, RenderArgsDeserialized as ServerSideRenderArgsDeserialized, RenderArgsSerialized as ServerSideRenderArgsSerialized, RenderResults as ServerSideRenderResults, ResultsDeserialized as ServerSideResultsDeserialized, ResultsSerialized as ServerSideResultsSerialized } from './ServerSideRendererType';
|
|
3
|
+
import type { AnyConfigurationModel } from '../../configuration';
|
|
4
|
+
import type { Feature, SimpleFeatureSerialized } from '../../util/simpleFeature';
|
|
5
|
+
import type { AugmentedRegion as Region } from '../../util/types';
|
|
5
6
|
export interface RenderArgs extends ServerSideRenderArgs {
|
|
6
7
|
displayModel?: {
|
|
7
8
|
id: string;
|
|
@@ -38,55 +39,12 @@ export interface ResultsDeserialized extends ServerSideResultsDeserialized {
|
|
|
38
39
|
blockKey: string;
|
|
39
40
|
}
|
|
40
41
|
export default class FeatureRendererType extends ServerSideRendererType {
|
|
41
|
-
/**
|
|
42
|
-
* replaces the `displayModel` param (which on the client is a MST model)
|
|
43
|
-
* with a stub that only contains the `selectedFeature`, since this is the
|
|
44
|
-
* only part of the track model that most renderers read. also serializes the
|
|
45
|
-
* config and regions to JSON from MST objects.
|
|
46
|
-
*
|
|
47
|
-
* @param args - the arguments passed to render
|
|
48
|
-
*/
|
|
49
42
|
serializeArgsInClient(args: RenderArgs): ServerSideRenderArgsSerialized;
|
|
50
|
-
/**
|
|
51
|
-
* Adds feature deserialization to base server-side result deserialization
|
|
52
|
-
*
|
|
53
|
-
* @param results - the results of the render
|
|
54
|
-
* @param args - the arguments passed to render
|
|
55
|
-
*/
|
|
56
43
|
deserializeResultsInClient(result: ResultsSerialized, args: RenderArgs): ResultsDeserialized;
|
|
57
|
-
/**
|
|
58
|
-
* Adds feature serialization to base server-side result serialization
|
|
59
|
-
*
|
|
60
|
-
* @param result - object containing the results of calling the `render`
|
|
61
|
-
* method
|
|
62
|
-
* @param args - deserialized render args
|
|
63
|
-
*/
|
|
64
44
|
serializeResultsInWorker(result: RenderResults, args: RenderArgsDeserialized): ResultsSerialized;
|
|
65
|
-
/**
|
|
66
|
-
* will expand if soft clipping or feature glyphs are shown
|
|
67
|
-
*
|
|
68
|
-
* @param region - rendering region
|
|
69
|
-
* @param _renderArgs - render args, unused, may be used in deriving classes
|
|
70
|
-
*/
|
|
71
45
|
getExpandedRegion(region: Region, _renderArgs: RenderArgsDeserialized): Region;
|
|
72
|
-
/**
|
|
73
|
-
* use the dataAdapter to fetch the features to be rendered
|
|
74
|
-
*
|
|
75
|
-
* @param renderArgs -
|
|
76
|
-
* @returns Map of features as `{ id => feature, ... }`
|
|
77
|
-
*/
|
|
78
46
|
getFeatures(renderArgs: RenderArgsDeserialized): Promise<Map<string, Feature>>;
|
|
79
|
-
/**
|
|
80
|
-
* @param renderArgs -
|
|
81
|
-
* @param feature -
|
|
82
|
-
* @returns true if this feature passes all configured filters
|
|
83
|
-
*/
|
|
84
47
|
featurePassesFilters(renderArgs: RenderArgsDeserialized, feature: Feature): boolean;
|
|
85
|
-
/**
|
|
86
|
-
* gets features and renders
|
|
87
|
-
*
|
|
88
|
-
* @param props - render args
|
|
89
|
-
*/
|
|
90
48
|
render(props: RenderArgsDeserialized & {
|
|
91
49
|
features?: Map<string, Feature>;
|
|
92
50
|
}): Promise<RenderResults>;
|
|
@@ -3,39 +3,22 @@ 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 operators_1 = require("rxjs/operators");
|
|
7
|
-
const clone_1 = __importDefault(require("clone"));
|
|
8
6
|
const rxjs_1 = require("rxjs");
|
|
9
|
-
|
|
10
|
-
const util_1 = require("../../util");
|
|
11
|
-
const simpleFeature_1 = __importDefault(require("../../util/simpleFeature"));
|
|
12
|
-
const dataAdapterCache_1 = require("../../data_adapters/dataAdapterCache");
|
|
7
|
+
const operators_1 = require("rxjs/operators");
|
|
13
8
|
const ServerSideRendererType_1 = __importDefault(require("./ServerSideRendererType"));
|
|
14
9
|
const BaseAdapter_1 = require("../../data_adapters/BaseAdapter");
|
|
10
|
+
const dataAdapterCache_1 = require("../../data_adapters/dataAdapterCache");
|
|
11
|
+
const util_1 = require("../../util");
|
|
12
|
+
const simpleFeature_1 = __importDefault(require("../../util/simpleFeature"));
|
|
13
|
+
const stopToken_1 = require("../../util/stopToken");
|
|
15
14
|
class FeatureRendererType extends ServerSideRendererType_1.default {
|
|
16
|
-
/**
|
|
17
|
-
* replaces the `displayModel` param (which on the client is a MST model)
|
|
18
|
-
* with a stub that only contains the `selectedFeature`, since this is the
|
|
19
|
-
* only part of the track model that most renderers read. also serializes the
|
|
20
|
-
* config and regions to JSON from MST objects.
|
|
21
|
-
*
|
|
22
|
-
* @param args - the arguments passed to render
|
|
23
|
-
*/
|
|
24
15
|
serializeArgsInClient(args) {
|
|
25
|
-
|
|
26
|
-
const serializedArgs = {
|
|
16
|
+
return super.serializeArgsInClient({
|
|
27
17
|
...args,
|
|
28
18
|
displayModel: undefined,
|
|
29
|
-
regions: (
|
|
30
|
-
};
|
|
31
|
-
return super.serializeArgsInClient(serializedArgs);
|
|
19
|
+
regions: structuredClone(args.regions),
|
|
20
|
+
});
|
|
32
21
|
}
|
|
33
|
-
/**
|
|
34
|
-
* Adds feature deserialization to base server-side result deserialization
|
|
35
|
-
*
|
|
36
|
-
* @param results - the results of the render
|
|
37
|
-
* @param args - the arguments passed to render
|
|
38
|
-
*/
|
|
39
22
|
deserializeResultsInClient(result, args) {
|
|
40
23
|
const deserializedFeatures = new Map(result.features.map(f => simpleFeature_1.default.fromJSON(f)).map(f => [f.id(), f]));
|
|
41
24
|
const deserialized = super.deserializeResultsInClient({
|
|
@@ -48,13 +31,6 @@ class FeatureRendererType extends ServerSideRendererType_1.default {
|
|
|
48
31
|
features: deserializedFeatures,
|
|
49
32
|
};
|
|
50
33
|
}
|
|
51
|
-
/**
|
|
52
|
-
* Adds feature serialization to base server-side result serialization
|
|
53
|
-
*
|
|
54
|
-
* @param result - object containing the results of calling the `render`
|
|
55
|
-
* method
|
|
56
|
-
* @param args - deserialized render args
|
|
57
|
-
*/
|
|
58
34
|
serializeResultsInWorker(result, args) {
|
|
59
35
|
const serialized = super.serializeResultsInWorker(result, args);
|
|
60
36
|
const { features } = result;
|
|
@@ -63,65 +39,36 @@ class FeatureRendererType extends ServerSideRendererType_1.default {
|
|
|
63
39
|
features: (0, util_1.iterMap)(features.values(), f => f.toJSON(), features.size),
|
|
64
40
|
};
|
|
65
41
|
}
|
|
66
|
-
/**
|
|
67
|
-
* will expand if soft clipping or feature glyphs are shown
|
|
68
|
-
*
|
|
69
|
-
* @param region - rendering region
|
|
70
|
-
* @param _renderArgs - render args, unused, may be used in deriving classes
|
|
71
|
-
*/
|
|
72
42
|
getExpandedRegion(region, _renderArgs) {
|
|
73
43
|
return region;
|
|
74
44
|
}
|
|
75
|
-
/**
|
|
76
|
-
* use the dataAdapter to fetch the features to be rendered
|
|
77
|
-
*
|
|
78
|
-
* @param renderArgs -
|
|
79
|
-
* @returns Map of features as `{ id => feature, ... }`
|
|
80
|
-
*/
|
|
81
45
|
async getFeatures(renderArgs) {
|
|
82
46
|
const pm = this.pluginManager;
|
|
83
|
-
const {
|
|
47
|
+
const { stopToken, regions, sessionId, adapterConfig } = renderArgs;
|
|
84
48
|
const { dataAdapter } = await (0, dataAdapterCache_1.getAdapter)(pm, sessionId, adapterConfig);
|
|
85
49
|
if (!(0, BaseAdapter_1.isFeatureAdapter)(dataAdapter)) {
|
|
86
50
|
throw new Error('Adapter does not support retrieving features');
|
|
87
51
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
requestRegion.start = Math.floor(requestRegion.start);
|
|
94
|
-
}
|
|
95
|
-
if (requestRegion.end) {
|
|
96
|
-
requestRegion.end = Math.ceil(requestRegion.end);
|
|
97
|
-
}
|
|
98
|
-
return requestRegion;
|
|
99
|
-
});
|
|
52
|
+
const requestRegions = regions.map(r => ({
|
|
53
|
+
...r,
|
|
54
|
+
start: Math.floor(r.start),
|
|
55
|
+
end: Math.ceil(r.end),
|
|
56
|
+
}));
|
|
100
57
|
const region = requestRegions[0];
|
|
101
58
|
const featureObservable = requestRegions.length === 1
|
|
102
59
|
? dataAdapter.getFeatures(this.getExpandedRegion(region, renderArgs), renderArgs)
|
|
103
60
|
: dataAdapter.getFeaturesInMultipleRegions(requestRegions, renderArgs);
|
|
104
61
|
const feats = await (0, rxjs_1.firstValueFrom)(featureObservable.pipe((0, operators_1.toArray)()));
|
|
105
|
-
(0,
|
|
62
|
+
(0, stopToken_1.checkStopToken)(stopToken);
|
|
106
63
|
return new Map(feats
|
|
107
64
|
.filter(feat => this.featurePassesFilters(renderArgs, feat))
|
|
108
65
|
.map(feat => [feat.id(), feat]));
|
|
109
66
|
}
|
|
110
|
-
/**
|
|
111
|
-
* @param renderArgs -
|
|
112
|
-
* @param feature -
|
|
113
|
-
* @returns true if this feature passes all configured filters
|
|
114
|
-
*/
|
|
115
67
|
featurePassesFilters(renderArgs, feature) {
|
|
116
68
|
return renderArgs.filters
|
|
117
69
|
? renderArgs.filters.passes(feature, renderArgs)
|
|
118
70
|
: true;
|
|
119
71
|
}
|
|
120
|
-
/**
|
|
121
|
-
* gets features and renders
|
|
122
|
-
*
|
|
123
|
-
* @param props - render args
|
|
124
|
-
*/
|
|
125
72
|
async render(props) {
|
|
126
73
|
const features = props.features || (await this.getFeatures(props));
|
|
127
74
|
const result = await super.render({ ...props, features });
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { ReactElement } from 'react';
|
|
1
|
+
import type { ReactElement } from 'react';
|
|
2
2
|
import PluggableElementBase from '../PluggableElementBase';
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
import
|
|
3
|
+
import type PluginManager from '../../PluginManager';
|
|
4
|
+
import type { AnyConfigurationSchemaType } from '../../configuration';
|
|
5
|
+
import type { AnyReactComponentType } from '../../util';
|
|
6
6
|
export type RenderProps = Record<string, unknown>;
|
|
7
7
|
export interface RenderResults {
|
|
8
8
|
reactElement?: ReactElement;
|
|
@@ -21,9 +21,5 @@ export default class RendererType extends PluggableElementBase {
|
|
|
21
21
|
pluginManager: PluginManager;
|
|
22
22
|
});
|
|
23
23
|
render(props: RenderProps): Promise<RenderResults>;
|
|
24
|
-
/**
|
|
25
|
-
* frees resources associated with the given range, session, etc.
|
|
26
|
-
* optionally returns the number of data items deleted
|
|
27
|
-
*/
|
|
28
24
|
freeResources(): number;
|
|
29
25
|
}
|
|
@@ -18,11 +18,7 @@ class RendererType extends PluggableElementBase_1.default {
|
|
|
18
18
|
reactElement: react_1.default.createElement(this.ReactComponent, props, null),
|
|
19
19
|
};
|
|
20
20
|
}
|
|
21
|
-
|
|
22
|
-
* frees resources associated with the given range, session, etc.
|
|
23
|
-
* optionally returns the number of data items deleted
|
|
24
|
-
*/
|
|
25
|
-
freeResources( /* specification: {} */) {
|
|
21
|
+
freeResources() {
|
|
26
22
|
return 0;
|
|
27
23
|
}
|
|
28
24
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { AnyReactComponentType, Feature } from '../../util';
|
|
3
|
-
import { ThemeOptions } from '@mui/material';
|
|
2
|
+
import type { AnyReactComponentType, Feature } from '../../util';
|
|
3
|
+
import type { ThemeOptions } from '@mui/material';
|
|
4
4
|
interface Props {
|
|
5
5
|
html: string;
|
|
6
6
|
features: Map<string, Feature>;
|