@jbrowse/core 5.0.0-beta.1 → 5.0.0-beta.11
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/README.md +1709 -390
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.d.ts +3 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.js +5 -5
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.d.ts +3 -5
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.js +34 -29
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCard.js +1 -4
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BasicValue.d.ts +11 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BasicValue.js +37 -14
- package/esm/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.js +15 -31
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.d.ts +4 -3
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.js +12 -25
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetailsFrame.d.ts +11 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetailsFrame.js +11 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldActionsButton.d.ts +8 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldActionsButton.js +24 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Formatter.js +6 -4
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ParentFeatureLine.d.ts +4 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ParentFeatureLine.js +17 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/SimpleField.d.ts +3 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/SimpleField.js +5 -3
- package/esm/BaseFeatureWidget/BaseFeatureDetail/index.d.ts +6 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/index.js +7 -18
- package/esm/BaseFeatureWidget/BaseFeatureDetail/jexlFilterActions.d.ts +16 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/jexlFilterActions.js +49 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/util.d.ts +0 -8
- package/esm/BaseFeatureWidget/BaseFeatureDetail/util.js +6 -29
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceContents.js +7 -34
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeaturePanel.d.ts +2 -2
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceName.js +2 -2
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/TranscriptSelector.js +3 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/model.d.ts +12 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/model.js +12 -5
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/useSequenceData.js +8 -5
- package/esm/BaseFeatureWidget/configSchema.d.ts +1 -1
- package/esm/BaseFeatureWidget/formatDetails.d.ts +13 -29
- package/esm/BaseFeatureWidget/formatDetails.js +62 -83
- package/esm/BaseFeatureWidget/index.d.ts +2 -1
- package/esm/BaseFeatureWidget/stateModelFactory.d.ts +42 -29
- package/esm/BaseFeatureWidget/stateModelFactory.js +98 -98
- package/esm/BaseFeatureWidget/types.d.ts +12 -6
- package/esm/BaseFeatureWidget/util.d.ts +0 -10
- package/esm/BaseFeatureWidget/util.js +0 -17
- package/esm/CorePlugin.js +34 -3
- package/esm/PluginLoader.d.ts +24 -13
- package/esm/PluginLoader.js +167 -51
- package/esm/PluginManager.d.ts +130 -24
- package/esm/PluginManager.js +180 -32
- package/esm/ReExports/MuiDataGridReExports.d.ts +1 -0
- package/esm/ReExports/MuiDataGridReExports.js +2 -2
- package/esm/ReExports/coreModules.generated.d.ts +2 -0
- package/esm/ReExports/coreModules.generated.js +530 -0
- package/esm/ReExports/coreWorkerModules.generated.d.ts +2 -0
- package/esm/ReExports/coreWorkerModules.generated.js +490 -0
- package/esm/ReExports/frameworkModules.d.ts +2 -0
- package/esm/ReExports/frameworkModules.js +68 -0
- package/esm/ReExports/frameworkShared.d.ts +12 -0
- package/esm/ReExports/frameworkShared.js +16 -0
- package/esm/ReExports/frameworkWorkerModules.generated.d.ts +2 -0
- package/esm/ReExports/frameworkWorkerModules.generated.js +130 -0
- package/esm/ReExports/list.js +528 -79
- package/esm/ReExports/modules.d.ts +1 -1
- package/esm/ReExports/modules.js +10 -165
- package/esm/ReExports/registry.d.ts +1 -0
- package/esm/ReExports/registry.js +23 -5
- package/esm/ReExports/uiStub.d.ts +3 -0
- package/esm/ReExports/uiStub.js +33 -0
- package/esm/ReExports/workerModules.d.ts +2 -0
- package/esm/ReExports/workerModules.js +11 -0
- package/esm/TextSearch/TextSearchManager.d.ts +27 -13
- package/esm/TextSearch/TextSearchManager.js +77 -36
- package/esm/TextSearch/places.d.ts +12 -0
- package/esm/TextSearch/places.js +94 -0
- package/esm/assemblyManager/assembly.d.ts +21 -19
- package/esm/assemblyManager/assembly.js +28 -26
- package/esm/assemblyManager/assemblyAdapters.d.ts +1 -1
- package/esm/assemblyManager/assemblyAdapters.js +8 -2
- package/esm/assemblyManager/assemblyConfigSchema.d.ts +31 -90
- package/esm/assemblyManager/assemblyConfigSchema.js +35 -47
- package/esm/assemblyManager/assemblyManager.d.ts +35 -180
- package/esm/assemblyManager/assemblyManager.js +47 -51
- package/esm/assemblyManager/expandAssemblyConfigShorthand.d.ts +25 -18
- package/esm/assemblyManager/expandAssemblyConfigShorthand.js +78 -49
- package/esm/assemblyManager/geneticCodes.js +2 -5
- package/esm/assemblyManager/getSequenceAdapterConfig.d.ts +10 -0
- package/esm/assemblyManager/getSequenceAdapterConfig.js +10 -0
- package/esm/assemblyManager/indexAssemblyNames.d.ts +9 -0
- package/esm/assemblyManager/indexAssemblyNames.js +22 -0
- package/esm/assemblyManager/loadRefNameMap.d.ts +1 -1
- package/esm/assemblyManager/loadRefNameMap.js +4 -9
- package/esm/assemblyManager/refNameMapKey.d.ts +7 -0
- package/esm/assemblyManager/refNameMapKey.js +12 -0
- package/esm/checkPlugins.d.ts +2 -0
- package/esm/checkPlugins.js +38 -17
- package/esm/configuration/bamIndexFields.d.ts +49 -0
- package/esm/configuration/bamIndexFields.js +41 -0
- package/esm/configuration/configurationSchema.d.ts +101 -71
- package/esm/configuration/configurationSchema.js +207 -134
- package/esm/configuration/configurationSchemaUnion.d.ts +39 -0
- package/esm/configuration/configurationSchemaUnion.js +56 -0
- package/esm/configuration/configurationSlot.d.ts +150 -60
- package/esm/configuration/configurationSlot.js +103 -75
- package/esm/configuration/fillLocations.d.ts +14 -0
- package/esm/configuration/fillLocations.js +14 -0
- package/esm/configuration/formatAboutConfigSchema.d.ts +7 -21
- package/esm/configuration/formatDetailsConfigSchema.d.ts +11 -37
- package/esm/configuration/formatDetailsConfigSchema.js +10 -13
- package/esm/configuration/fullConfSnapshot.d.ts +4 -19
- package/esm/configuration/fullConfSnapshot.js +30 -52
- package/esm/configuration/getConf.d.ts +45 -41
- package/esm/configuration/getConf.js +111 -44
- package/esm/configuration/index.d.ts +26 -11
- package/esm/configuration/index.js +16 -7
- package/esm/configuration/indexType.d.ts +26 -0
- package/esm/configuration/indexType.js +38 -0
- package/esm/configuration/mergeFormatCallbacks.d.ts +6 -7
- package/esm/configuration/mergeFormatCallbacks.js +13 -10
- package/esm/configuration/plot.d.ts +61 -0
- package/esm/configuration/plot.js +142 -0
- package/esm/configuration/readConfObject.d.ts +2 -24
- package/esm/configuration/readConfObject.js +20 -63
- package/esm/configuration/requirements.d.ts +37 -0
- package/esm/configuration/requirements.js +88 -0
- package/esm/configuration/schemaRegistry.d.ts +32 -15
- package/esm/configuration/schemaRegistry.js +33 -35
- package/esm/configuration/schemaTypes.d.ts +21 -5
- package/esm/configuration/schemaTypes.js +66 -55
- package/esm/configuration/slotFacade.d.ts +12 -29
- package/esm/configuration/slotFacade.js +44 -23
- package/esm/configuration/snapshotPreprocess.d.ts +43 -0
- package/esm/configuration/snapshotPreprocess.js +161 -0
- package/esm/configuration/tabixIndexFields.d.ts +30 -4
- package/esm/configuration/tabixIndexFields.js +21 -4
- package/esm/configuration/tabixShorthand.d.ts +34 -17
- package/esm/configuration/tabixShorthand.js +49 -22
- package/esm/configuration/types.d.ts +182 -43
- package/esm/configuration/uriShorthand.d.ts +9 -0
- package/esm/configuration/uriShorthand.js +16 -0
- package/esm/data_adapters/BaseAdapter/BaseAdapter.d.ts +13 -19
- package/esm/data_adapters/BaseAdapter/BaseAdapter.js +12 -19
- package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.d.ts +40 -2
- package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.js +68 -5
- package/esm/data_adapters/BaseAdapter/featureDensity.d.ts +40 -0
- package/esm/data_adapters/BaseAdapter/featureDensity.js +31 -0
- package/esm/data_adapters/BaseAdapter/index.d.ts +23 -3
- package/esm/data_adapters/BaseAdapter/index.js +1 -0
- package/esm/data_adapters/BaseAdapter/rowSources.d.ts +37 -0
- package/esm/data_adapters/BaseAdapter/rowSources.js +7 -0
- package/esm/data_adapters/BaseAdapter/stats.d.ts +33 -1
- package/esm/data_adapters/BaseAdapter/stats.js +52 -13
- package/esm/data_adapters/BaseAdapter/types.d.ts +8 -12
- package/esm/data_adapters/BaseAdapter/zoomRange.d.ts +10 -0
- package/esm/data_adapters/CytobandAdapter/CytobandAdapter.js +1 -1
- package/esm/data_adapters/CytobandAdapter/configSchema.d.ts +7 -11
- package/esm/data_adapters/CytobandAdapter/configSchema.js +3 -17
- package/esm/data_adapters/dataAdapterCache.d.ts +19 -2
- package/esm/data_adapters/dataAdapterCache.js +44 -10
- package/esm/data_adapters/getFeatureAdapter.d.ts +6 -4
- package/esm/data_adapters/getFeatureAdapter.js +8 -8
- package/esm/data_adapters/getSequenceSubAdapter.d.ts +7 -9
- package/esm/data_adapters/getSequenceSubAdapter.js +8 -10
- package/esm/pluggableElementTypes/AdapterType.d.ts +8 -8
- package/esm/pluggableElementTypes/AdapterType.js +1 -1
- package/esm/pluggableElementTypes/DisplayType.d.ts +53 -16
- package/esm/pluggableElementTypes/DisplayType.js +28 -12
- package/esm/pluggableElementTypes/LazyStateModelElement.d.ts +32 -0
- package/esm/pluggableElementTypes/LazyStateModelElement.js +77 -0
- package/esm/pluggableElementTypes/PluggableElementBase.d.ts +3 -5
- package/esm/pluggableElementTypes/PluggableElementBase.js +3 -5
- package/esm/pluggableElementTypes/RpcMethodType.d.ts +11 -1
- package/esm/pluggableElementTypes/RpcMethodType.js +25 -9
- package/esm/pluggableElementTypes/RpcMethodTypeWithFiltersAndRenameRegions.d.ts +1 -2
- package/esm/pluggableElementTypes/TextSearchAdapterType.d.ts +7 -7
- package/esm/pluggableElementTypes/ViewType.d.ts +20 -4
- package/esm/pluggableElementTypes/ViewType.js +32 -4
- package/esm/pluggableElementTypes/WidgetType.d.ts +6 -0
- package/esm/pluggableElementTypes/WidgetType.js +6 -0
- package/esm/pluggableElementTypes/addMenuItems.d.ts +3 -2
- package/esm/pluggableElementTypes/extendElementType.d.ts +1 -2
- package/esm/pluggableElementTypes/extendElementType.js +9 -5
- package/esm/pluggableElementTypes/index.d.ts +2 -1
- package/esm/pluggableElementTypes/index.js +2 -9
- package/esm/pluggableElementTypes/models/BaseConnectionModelFactory.d.ts +19 -9
- package/esm/pluggableElementTypes/models/BaseDisplayModel.d.ts +122 -28
- package/esm/pluggableElementTypes/models/BaseDisplayModel.js +155 -11
- package/esm/pluggableElementTypes/models/BaseTrackModel.d.ts +65 -16
- package/esm/pluggableElementTypes/models/BaseTrackModel.js +179 -117
- package/esm/pluggableElementTypes/models/BaseViewModel.d.ts +87 -18
- package/esm/pluggableElementTypes/models/BaseViewModel.js +54 -11
- package/esm/pluggableElementTypes/models/InternetAccountModel.d.ts +26 -16
- package/esm/pluggableElementTypes/models/assertDisplayContract.d.ts +15 -11
- package/esm/pluggableElementTypes/models/assertDisplayContract.js +25 -32
- package/esm/pluggableElementTypes/models/baseConnectionConfig.d.ts +22 -18
- package/esm/pluggableElementTypes/models/baseConnectionConfig.js +5 -5
- package/esm/pluggableElementTypes/models/baseInternetAccountConfig.d.ts +26 -31
- package/esm/pluggableElementTypes/models/baseTrackConfig.d.ts +108 -147
- package/esm/pluggableElementTypes/models/baseTrackConfig.js +96 -73
- package/esm/pluggableElementTypes/models/components/SaveTrackData.js +4 -6
- package/esm/pluggableElementTypes/models/components/fetchTrackData.d.ts +3 -4
- package/esm/pluggableElementTypes/models/components/fetchTrackData.js +3 -3
- package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.d.ts +23 -13
- package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.js +80 -48
- package/esm/pluggableElementTypes/models/index.d.ts +2 -3
- package/esm/pluggableElementTypes/models/index.js +2 -3
- package/esm/pluggableElementTypes/models/migrateTrackConfig.d.ts +15 -1
- package/esm/pluggableElementTypes/models/migrateTrackConfig.js +85 -25
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.d.ts +4 -3
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.js +141 -19
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/types.d.ts +3 -3
- package/esm/pluginDefinitions.d.ts +34 -7
- package/esm/pluginDefinitions.js +54 -20
- package/esm/rpc/BaseRpcDriver.d.ts +2 -2
- package/esm/rpc/BaseRpcDriver.js +25 -30
- package/esm/rpc/MainThreadRpcDriver.d.ts +2 -2
- package/esm/rpc/MainThreadRpcDriver.js +13 -8
- package/esm/rpc/RpcClient.d.ts +18 -6
- package/esm/rpc/RpcClient.js +51 -16
- package/esm/rpc/RpcManager.d.ts +14 -10
- package/esm/rpc/RpcManager.js +11 -1
- package/esm/rpc/RpcRegistry.d.ts +40 -7
- package/esm/rpc/RpcServer.d.ts +3 -1
- package/esm/rpc/RpcServer.js +19 -12
- package/esm/rpc/WebWorkerRpcDriver.d.ts +11 -4
- package/esm/rpc/WebWorkerRpcDriver.js +64 -68
- package/esm/rpc/byteBudget.d.ts +20 -5
- package/esm/rpc/byteBudget.js +16 -5
- package/esm/rpc/configSchema.d.ts +7 -21
- package/esm/rpc/coreRpcMethods.d.ts +4 -0
- package/esm/rpc/coreRpcMethods.js +4 -0
- package/esm/rpc/methods/CoreGetEncodedFeature.d.ts +13 -0
- package/esm/rpc/methods/CoreGetEncodedFeature.js +32 -0
- package/esm/rpc/methods/CoreGetEncodedLayers.d.ts +16 -0
- package/esm/rpc/methods/CoreGetEncodedLayers.js +59 -0
- package/esm/rpc/methods/CoreGetExportData.js +3 -4
- package/esm/rpc/methods/CoreGetFeatureDensity.d.ts +11 -0
- package/esm/rpc/methods/CoreGetFeatureDensity.js +22 -0
- package/esm/rpc/methods/CoreGetFeatures.js +3 -5
- package/esm/rpc/methods/CoreGetRefNames.js +2 -12
- package/esm/rpc/methods/CoreGetRegionByteEstimate.js +1 -1
- package/esm/rpc/methods/CoreGetSequence.js +2 -2
- package/esm/rpc/methods/CoreLoadAdapterCode.d.ts +13 -0
- package/esm/rpc/methods/CoreLoadAdapterCode.js +16 -0
- package/esm/rpc/methods/layerFeatures.d.ts +33 -0
- package/esm/rpc/methods/layerFeatures.js +29 -0
- package/esm/svg/SvgExport.js +6 -7
- package/esm/svg/SvgThemeProviders.d.ts +12 -0
- package/esm/svg/SvgThemeProviders.js +15 -0
- package/esm/svg/exportViewSvg.d.ts +28 -0
- package/esm/svg/exportViewSvg.js +13 -0
- package/esm/svg/normalizeSvgMarkup.d.ts +7 -0
- package/esm/svg/normalizeSvgMarkup.js +99 -0
- package/esm/svg/serializeSvg.d.ts +7 -0
- package/esm/svg/serializeSvg.js +11 -0
- package/esm/svg/svgId.d.ts +1 -1
- package/esm/svg/svgId.js +1 -1
- package/esm/svg/svgReady.d.ts +9 -7
- package/esm/svg/svgReady.js +8 -7
- package/esm/svg/trackNames.d.ts +7 -5
- package/esm/svg/trackNames.js +12 -9
- package/esm/svg/wrapSvgExport.js +6 -74
- package/esm/ui/AddCustomPluginDialog.js +3 -8
- package/esm/ui/AppReadyMarker.d.ts +45 -0
- package/esm/ui/AppReadyMarker.js +89 -0
- package/esm/ui/BaseExportSvgDialog.d.ts +1 -1
- package/esm/ui/CascadingMenu.js +181 -104
- package/esm/ui/DropDownMenu.js +2 -1
- package/esm/ui/ErrorBanner.js +1 -1
- package/esm/ui/ErrorBoundary.d.ts +2 -2
- package/esm/ui/ErrorMessageStackTraceContents.js +2 -1
- package/esm/ui/ErrorMessageStackTraceDialog.js +5 -11
- package/esm/ui/ExportSvgDialog.d.ts +1 -1
- package/esm/ui/FileDropZone.js +2 -1
- package/esm/ui/FileSelector/useInternetAccounts.d.ts +156 -96
- package/esm/ui/HoverMenu.d.ts +1 -2
- package/esm/ui/HoverMenu.js +6 -3
- package/esm/ui/JexlFilterDialog.d.ts +13 -10
- package/esm/ui/JexlFilterDialog.js +122 -50
- package/esm/ui/JexlFilterRowEditors.d.ts +15 -0
- package/esm/ui/JexlFilterRowEditors.js +90 -0
- package/esm/ui/LazyBaseTooltip.d.ts +4 -0
- package/esm/ui/LazyBaseTooltip.js +9 -0
- package/esm/ui/LegendSwatchGlyph.js +26 -21
- package/esm/ui/LoadingOverlay.d.ts +14 -0
- package/esm/ui/LoadingOverlay.js +4 -2
- package/esm/ui/MenuTypes.d.ts +23 -53
- package/esm/ui/MenuTypes.js +3 -0
- package/esm/ui/MonospaceTextField.d.ts +2 -1
- package/esm/ui/MonospaceTextField.js +23 -20
- package/esm/ui/PaletteContext.d.ts +10 -5
- package/esm/ui/PaletteContext.js +44 -6
- package/esm/ui/RefNameAutocomplete/SearchOption.d.ts +13 -0
- package/esm/ui/RefNameAutocomplete/SearchOption.js +45 -0
- package/esm/ui/RefNameAutocomplete/index.d.ts +1 -2
- package/esm/ui/RefNameAutocomplete/index.js +8 -2
- package/esm/ui/RefNameAutocomplete/util.d.ts +13 -0
- package/esm/ui/RefNameAutocomplete/util.js +42 -1
- package/esm/ui/ResizeHandle.d.ts +3 -1
- package/esm/ui/ResizeHandle.js +44 -11
- package/esm/ui/ScrollChrome.d.ts +13 -0
- package/esm/ui/ScrollChrome.js +11 -0
- package/esm/ui/ScrollEdgeShadow.d.ts +6 -9
- package/esm/ui/ScrollEdgeShadow.js +14 -35
- package/esm/ui/ScrollZoomToggle.d.ts +4 -27
- package/esm/ui/ScrollZoomToggle.js +34 -51
- package/esm/ui/SessionJsonPanel.d.ts +3 -0
- package/esm/ui/SessionJsonPanel.js +14 -0
- package/esm/ui/SettingsChangesTable.d.ts +1 -0
- package/esm/ui/SettingsChangesTable.js +49 -11
- package/esm/ui/ShareLinkField.d.ts +1 -3
- package/esm/ui/ShareLinkField.js +13 -40
- package/esm/ui/SizeSliderRow.d.ts +1 -3
- package/esm/ui/SizeSliderRow.js +4 -6
- package/esm/ui/SnackbarModel.js +79 -67
- package/esm/ui/StatusProgressBar.js +2 -2
- package/esm/ui/SvgColorLegend.d.ts +9 -4
- package/esm/ui/SvgColorLegend.js +82 -41
- package/esm/ui/VerticalScrollbar.d.ts +13 -34
- package/esm/ui/VerticalScrollbar.js +29 -83
- package/esm/ui/ViewLoadingScreen.d.ts +5 -4
- package/esm/ui/ViewLoadingScreen.js +8 -32
- package/esm/ui/colorScale.d.ts +92 -0
- package/esm/ui/colorScale.js +72 -0
- package/esm/ui/colors.d.ts +64 -0
- package/esm/ui/colors.js +230 -1
- package/esm/ui/hoverBoxStyle.d.ts +14 -2
- package/esm/ui/hoverBoxStyle.js +17 -2
- package/esm/ui/index.d.ts +12 -12
- package/esm/ui/index.js +14 -22
- package/esm/ui/launchViewMenu.js +15 -5
- package/esm/ui/legendMenuItem.d.ts +10 -32
- package/esm/ui/legendMenuItem.js +9 -36
- package/esm/ui/legendSpec.d.ts +15 -8
- package/esm/ui/legendSpec.js +14 -23
- package/esm/ui/makeSizeMenu.d.ts +0 -6
- package/esm/ui/makeSizeMenu.js +6 -30
- package/esm/ui/measureLegendText.js +1 -1
- package/esm/ui/menuItemAdornment.d.ts +9 -20
- package/esm/ui/menuItemAdornment.js +10 -32
- package/esm/ui/menuItems.d.ts +2 -7
- package/esm/ui/menuItems.js +1 -6
- package/esm/ui/multiTrackMenuItems.d.ts +6 -0
- package/esm/ui/palette.d.ts +118 -116
- package/esm/ui/palette.js +114 -75
- package/esm/ui/replaceViewAction.d.ts +1 -1
- package/esm/ui/replaceViewAction.js +1 -1
- package/esm/ui/theme.d.ts +43 -119
- package/esm/ui/theme.js +62 -78
- package/esm/ui/toggleMenuItems.d.ts +1 -3
- package/esm/ui/toggleMenuItems.js +6 -5
- package/esm/ui/useAssemblySelection.d.ts +4 -4
- package/esm/ui/viewHeaderHeight.d.ts +1 -0
- package/esm/ui/viewHeaderHeight.js +1 -0
- package/esm/util/Base1DUtils.d.ts +5 -3
- package/esm/util/Base1DUtils.js +14 -6
- package/esm/util/Base1DViewModel.d.ts +2 -1
- package/esm/util/Base1DViewModel.js +3 -2
- package/esm/util/SvgCanvas.d.ts +15 -13
- package/esm/util/SvgCanvas.js +76 -56
- package/esm/util/TimeTraveller.d.ts +3 -0
- package/esm/util/TimeTraveller.js +34 -2
- package/esm/util/aborting.d.ts +39 -0
- package/esm/util/aborting.js +88 -6
- package/esm/util/adapterMetadata.d.ts +1 -1
- package/esm/util/adapterMetadata.js +6 -5
- package/esm/util/addAndShowTrack.d.ts +2 -5
- package/esm/util/addAndShowTrack.js +5 -1
- package/esm/util/addRelativeUris.d.ts +17 -5
- package/esm/util/addRelativeUris.js +46 -10
- package/esm/util/addTrackFromWidget.d.ts +2 -5
- package/esm/util/addTrackFromWidget.js +5 -4
- package/esm/util/aggregateFieldName.d.ts +10 -0
- package/esm/util/aggregateFieldName.js +8 -0
- package/esm/util/analytics.js +46 -13
- package/esm/util/animationAllowed.d.ts +9 -0
- package/esm/util/animationAllowed.js +13 -0
- package/esm/util/applyRowResizeWheel.d.ts +10 -5
- package/esm/util/applyRowResizeWheel.js +10 -21
- package/esm/util/bandHeight.d.ts +10 -0
- package/esm/util/bandHeight.js +29 -0
- package/esm/util/bandLayout.d.ts +4 -4
- package/esm/util/bandLayout.js +4 -4
- package/esm/util/baseDisplayConfig.d.ts +8 -0
- package/esm/util/baseDisplayConfig.js +27 -0
- package/esm/util/bezierConnector.d.ts +4 -3
- package/esm/util/bezierConnector.js +38 -45
- package/esm/util/bgzfWorkerPool.d.ts +20 -74
- package/esm/util/bgzfWorkerPool.js +20 -74
- package/esm/util/binnedAggregate.d.ts +17 -0
- package/esm/util/binnedAggregate.js +275 -0
- package/esm/util/cacheBudgets.d.ts +22 -19
- package/esm/util/cacheBudgets.js +22 -19
- package/esm/util/cachedSetup.d.ts +16 -6
- package/esm/util/cachedSetup.js +108 -38
- package/esm/util/categoricalField.d.ts +56 -0
- package/esm/util/categoricalField.js +73 -0
- package/esm/util/cellMatches.d.ts +23 -0
- package/esm/util/cellMatches.js +264 -0
- package/esm/util/cellsStep.d.ts +29 -0
- package/esm/util/cellsStep.js +437 -0
- package/esm/util/clampToContig.d.ts +17 -0
- package/esm/util/clampToContig.js +19 -0
- package/esm/util/coarseStripHTML.js +1 -2
- package/esm/util/color/cssColorsLevel4.d.ts +1 -0
- package/esm/util/color/cssColorsLevel4.js +1 -0
- package/esm/util/color/index.d.ts +5 -3
- package/esm/util/color/index.js +7 -4
- package/esm/util/colorBits.d.ts +3 -3
- package/esm/util/colorBits.js +19 -44
- package/esm/util/colorRamp.d.ts +49 -5
- package/esm/util/colorRamp.js +169 -18
- package/esm/util/colorScale.d.ts +156 -0
- package/esm/util/colorScale.js +243 -0
- package/esm/util/colorSchemes.d.ts +21 -0
- package/esm/util/colorSchemes.js +30 -0
- package/esm/util/copyToClipboard.js +8 -1
- package/esm/util/{createStopTokenRotation.d.ts → createAbortRotation.d.ts} +21 -23
- package/esm/util/{createStopTokenRotation.js → createAbortRotation.js} +21 -52
- package/esm/util/createSvgRasterCanvas.d.ts +10 -0
- package/esm/util/cssColorParse.d.ts +15 -0
- package/esm/util/cssColorParse.js +53 -0
- package/esm/util/diagonalizeRegions.d.ts +2 -3
- package/esm/util/diagonalizeRegions.js +8 -13
- package/esm/util/expandLooseSearchIndex.d.ts +19 -0
- package/esm/util/expandLooseSearchIndex.js +29 -0
- package/esm/util/featureTable.d.ts +224 -0
- package/esm/util/featureTable.js +366 -0
- package/esm/util/featureTransforms.d.ts +81 -0
- package/esm/util/featureTransforms.js +1231 -0
- package/esm/util/featureTypes.d.ts +24 -0
- package/esm/util/featureTypes.js +35 -0
- package/esm/util/fetchAndMaybeUnzip.js +16 -9
- package/esm/util/fetchContext.d.ts +7 -8
- package/esm/util/fetchContext.js +3 -3
- package/esm/util/fetchHub.d.ts +4 -2
- package/esm/util/fetchHub.js +2 -2
- package/esm/util/fetchPhases.d.ts +10 -10
- package/esm/util/fetchSeq.d.ts +2 -3
- package/esm/util/fetchSeq.js +2 -2
- package/esm/util/fieldReader.d.ts +17 -0
- package/esm/util/fieldReader.js +62 -0
- package/esm/util/formatBytes.js +1 -1
- package/esm/util/formatGuessers.d.ts +25 -14
- package/esm/util/formatGuessers.js +42 -27
- package/esm/util/formatRelativeTime.js +1 -1
- package/esm/util/freezeDeep.d.ts +8 -10
- package/esm/util/freezeDeep.js +8 -10
- package/esm/util/getLocationUri.d.ts +2 -1
- package/esm/util/getLocationUri.js +8 -2
- package/esm/util/groupKeys.d.ts +76 -0
- package/esm/util/groupKeys.js +156 -0
- package/esm/util/highlights.d.ts +10 -6
- package/esm/util/highlights.js +12 -25
- package/esm/util/hooks.d.ts +31 -2
- package/esm/util/hooks.js +72 -3
- package/esm/util/index.d.ts +11 -11
- package/esm/util/index.js +11 -10
- package/esm/util/indexCandidates.d.ts +1 -31
- package/esm/util/indexCandidates.js +5 -63
- package/esm/util/installFetch.d.ts +77 -37
- package/esm/util/installFetch.js +65 -38
- package/esm/util/installInitAutorun.d.ts +14 -13
- package/esm/util/installInitAutorun.js +17 -17
- package/esm/util/installPrerequisiteFetch.d.ts +115 -0
- package/esm/util/installPrerequisiteFetch.js +111 -0
- package/esm/util/intervals.js +9 -4
- package/esm/util/io/index.js +22 -15
- package/esm/util/isDataCurrent.d.ts +7 -5
- package/esm/util/isDataCurrent.js +9 -6
- package/esm/util/isTextEntryFocused.d.ts +7 -0
- package/esm/util/isTextEntryFocused.js +16 -0
- package/esm/util/jexl.js +24 -21
- package/esm/util/jexlFilterRows.d.ts +89 -0
- package/esm/util/jexlFilterRows.js +252 -0
- package/esm/util/jexlFilters.d.ts +32 -57
- package/esm/util/jexlFilters.js +31 -29
- package/esm/util/jexlStrings.d.ts +3 -4
- package/esm/util/jexlStrings.js +2 -3
- package/esm/util/layouts/GranularRectLayout.d.ts +8 -1
- package/esm/util/layouts/GranularRectLayout.js +25 -8
- package/esm/util/lazyAfterAttach.d.ts +13 -0
- package/esm/util/lazyAfterAttach.js +31 -0
- package/esm/util/lazyWithPreload.d.ts +19 -0
- package/esm/util/lazyWithPreload.js +27 -0
- package/esm/util/legendCandidates.d.ts +72 -0
- package/esm/util/legendCandidates.js +138 -0
- package/esm/util/locString.js +5 -2
- package/esm/util/localStorage.js +4 -4
- package/esm/util/markEncoding.d.ts +150 -0
- package/esm/util/markEncoding.js +885 -0
- package/esm/util/markEncodingTypes.d.ts +595 -0
- package/esm/util/markEncodingTypes.js +8 -0
- package/esm/util/mst-reflection.d.ts +2 -20
- package/esm/util/mst-reflection.js +3 -53
- package/esm/util/mstUtils.d.ts +31 -23
- package/esm/util/mstUtils.js +39 -24
- package/esm/util/numericUtils.d.ts +7 -0
- package/esm/util/numericUtils.js +16 -0
- package/esm/util/numericValue.d.ts +14 -0
- package/esm/util/numericValue.js +34 -0
- package/esm/util/openFeatureWidget.d.ts +5 -0
- package/esm/util/openFeatureWidget.js +2 -2
- package/esm/util/openViews.d.ts +17 -0
- package/esm/util/openViews.js +22 -0
- package/esm/util/parentWalk.d.ts +1 -1
- package/esm/util/parentWalk.js +1 -1
- package/esm/util/parseLineByLine.d.ts +4 -5
- package/esm/util/parseLineByLine.js +8 -14
- package/esm/util/pluginStore.d.ts +6 -8
- package/esm/util/pluginStore.js +17 -16
- package/esm/util/preloadComponent.d.ts +5 -0
- package/esm/util/preloadComponent.js +11 -0
- package/esm/util/progress.d.ts +22 -22
- package/esm/util/progress.js +27 -26
- package/esm/util/quantileExtent.d.ts +49 -0
- package/esm/util/quantileExtent.js +162 -0
- package/esm/util/range.d.ts +13 -9
- package/esm/util/range.js +17 -8
- package/esm/util/renameRegions.d.ts +26 -6
- package/esm/util/renameRegions.js +68 -54
- package/esm/util/renderToStaticMarkup.js +24 -14
- package/esm/util/rxjs.d.ts +23 -8
- package/esm/util/rxjs.js +61 -15
- package/esm/util/samplesTsv.d.ts +49 -0
- package/esm/util/samplesTsv.js +86 -0
- package/esm/util/scheduleDetachedDestroy.d.ts +18 -0
- package/esm/util/scheduleDetachedDestroy.js +24 -0
- package/esm/util/scrollLatch.d.ts +1 -0
- package/esm/util/scrollLatch.js +8 -0
- package/esm/util/selectEncodedFeature.d.ts +16 -0
- package/esm/util/selectEncodedFeature.js +34 -0
- package/esm/util/sessionSharing.d.ts +7 -5
- package/esm/util/sessionSharing.js +23 -23
- package/esm/util/shapeNameList.d.ts +2 -0
- package/esm/util/shapeNameList.js +6 -0
- package/esm/util/shapeNames.d.ts +7 -0
- package/esm/util/shapeNames.js +11 -0
- package/esm/util/simpleFeature.d.ts +0 -1
- package/esm/util/springAnimate.js +1 -1
- package/esm/util/starFusion.d.ts +26 -0
- package/esm/util/starFusion.js +37 -0
- package/esm/util/stepTables.d.ts +96 -0
- package/esm/util/stepTables.js +277 -0
- package/esm/util/svAlt.d.ts +145 -0
- package/esm/util/svAlt.js +364 -0
- package/esm/util/svgColorProps.d.ts +11 -0
- package/esm/util/svgColorProps.js +28 -1
- package/esm/util/systemColorScheme.d.ts +12 -0
- package/esm/util/systemColorScheme.js +27 -0
- package/esm/util/tabix.d.ts +19 -10
- package/esm/util/tabix.js +19 -14
- package/esm/util/thresholdScale.d.ts +91 -0
- package/esm/util/thresholdScale.js +166 -0
- package/esm/util/timeGate.d.ts +4 -5
- package/esm/util/timeGate.js +4 -5
- package/esm/util/trackConfigDelta.d.ts +26 -26
- package/esm/util/trackConfigDelta.js +63 -47
- package/esm/util/tracks.d.ts +120 -66
- package/esm/util/tracks.js +501 -151
- package/esm/util/translateTranscript.d.ts +44 -0
- package/esm/util/translateTranscript.js +102 -0
- package/esm/util/types/data.d.ts +0 -2
- package/esm/util/types/index.d.ts +121 -22
- package/esm/util/types/index.js +9 -0
- package/esm/util/types/mst.d.ts +3 -0
- package/esm/util/types/mst.js +4 -0
- package/esm/util/types/renameIds.d.ts +1 -0
- package/esm/util/types/renameIds.js +29 -0
- package/esm/util/types/services.d.ts +1 -1
- package/esm/util/unknownSnapshotKeys.d.ts +53 -0
- package/esm/util/unknownSnapshotKeys.js +76 -0
- package/esm/util/useFeatureSequence.js +5 -5
- package/esm/util/useFetch.d.ts +3 -4
- package/esm/util/useFetch.js +19 -10
- package/esm/util/useFetchPlugins.d.ts +6 -2
- package/esm/util/useFetchPlugins.js +7 -3
- package/esm/util/usePanZoom.js +10 -3
- package/esm/util/usePanelVirtualScroll.d.ts +7 -35
- package/esm/util/usePanelVirtualScroll.js +9 -36
- package/esm/util/useRafCommit.js +1 -0
- package/esm/util/useRowVirtualScroll.d.ts +6 -29
- package/esm/util/useRowVirtualScroll.js +8 -49
- package/esm/util/useVirtualScrollWheel.d.ts +20 -4
- package/esm/util/useVirtualScrollWheel.js +40 -74
- package/esm/util/viewHighlights.d.ts +3 -0
- package/esm/util/viewHighlights.js +5 -0
- package/esm/util/viewStatus.d.ts +47 -15
- package/esm/util/viewStatus.js +34 -0
- package/esm/util/wheelZoom.d.ts +7 -1
- package/esm/util/wheelZoom.js +85 -19
- package/esm/util/whenViewSettled.d.ts +55 -8
- package/esm/util/whenViewSettled.js +56 -7
- package/esm/util/withFeatureDetails.js +4 -0
- package/esm/util/withLaunchInput.d.ts +174 -0
- package/esm/util/withLaunchInput.js +274 -0
- package/package.json +75 -24
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Position.d.ts +0 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Position.js +0 -8
- package/esm/BaseFeatureWidget/BaseFeatureDetail/types.d.ts +0 -8
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/DLGAP3.d.ts +0 -80
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/DLGAP3.js +0 -583
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/NCDN.d.ts +0 -141
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/NCDN.js +0 -1116
- package/esm/ReExports/BaseFeatureDetails.d.ts +0 -1
- package/esm/ReExports/BaseFeatureDetails.js +0 -10
- package/esm/ReExports/index.d.ts +0 -1
- package/esm/ReExports/index.js +0 -1
- package/esm/ReExports/publicUtil.d.ts +0 -1
- package/esm/ReExports/publicUtil.js +0 -28
- package/esm/configuration/promotableDefaults.d.ts +0 -199
- package/esm/configuration/promotableDefaults.js +0 -326
- package/esm/configuration/promotablePin.d.ts +0 -55
- package/esm/configuration/promotablePin.js +0 -1
- package/esm/configuration/promotableResolve.d.ts +0 -108
- package/esm/configuration/promotableResolve.js +0 -117
- package/esm/configuration/promotableSlots.d.ts +0 -12
- package/esm/configuration/promotableSlots.js +0 -45
- package/esm/configuration/slotShape.d.ts +0 -12
- package/esm/configuration/slotShape.js +0 -84
- package/esm/pluggableElementTypes/models/HighlightsMixin.d.ts +0 -51
- package/esm/pluggableElementTypes/models/HighlightsMixin.js +0 -78
- package/esm/ui/PinAdornment.d.ts +0 -5
- package/esm/ui/PinAdornment.js +0 -79
- package/esm/ui/SvgGradientLegend.d.ts +0 -26
- package/esm/ui/SvgGradientLegend.js +0 -26
- package/esm/ui/highlightChipReveal.d.ts +0 -32
- package/esm/ui/highlightChipReveal.js +0 -39
- package/esm/ui/promotableMenuItems.d.ts +0 -19
- package/esm/ui/promotableMenuItems.js +0 -89
- package/esm/ui/promotablePinCoverage.d.ts +0 -44
- package/esm/ui/promotablePinCoverage.js +0 -87
- package/esm/util/applyInitSettings.d.ts +0 -79
- package/esm/util/applyInitSettings.js +0 -91
- package/esm/util/openDisplays.d.ts +0 -23
- package/esm/util/openDisplays.js +0 -79
- package/esm/util/stopToken.d.ts +0 -211
- package/esm/util/stopToken.js +0 -438
- /package/esm/{BaseFeatureWidget/BaseFeatureDetail/types.js → data_adapters/BaseAdapter/zoomRange.js} +0 -0
|
@@ -2,17 +2,15 @@
|
|
|
2
2
|
* Resolves the reference sequence an adapter reads from.
|
|
3
3
|
*
|
|
4
4
|
* **The assembly is the source, and a hand-written `sequenceAdapter` slot is an
|
|
5
|
-
* anti-pattern.**
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
5
|
+
* anti-pattern.** A reference-reading adapter is built with the sequence of the
|
|
6
|
+
* assembly the request that created it named (dataAdapterCache), so no config
|
|
7
|
+
* has to copy a sequence adapter into a track. The slot survives as an escape
|
|
8
|
+
* hatch for reading some *other* sequence, and setting it pins the track to
|
|
9
|
+
* that source even when the assembly's own sequence changes — so it wins only
|
|
10
|
+
* when explicitly present, and `jbrowse validate` warns about it.
|
|
11
11
|
*
|
|
12
12
|
* In core rather than beside one of its callers because the field it reads is
|
|
13
|
-
* `BaseAdapter`'s.
|
|
14
|
-
* `@jbrowse/core/*` re-export, and a name published there is load-bearing ABI —
|
|
15
|
-
* `abi.test.ts`/`abiBaseline.json` fails a removal from it.
|
|
13
|
+
* `BaseAdapter`'s.
|
|
16
14
|
*
|
|
17
15
|
* `configured` is passed in rather than read here so each adapter reads its own
|
|
18
16
|
* slot through its own config type.
|
|
@@ -20,7 +18,7 @@
|
|
|
20
18
|
export async function getSequenceSubAdapter(adapter, configured) {
|
|
21
19
|
const config = configured ?? adapter.sequenceAdapterConfig;
|
|
22
20
|
if (!config) {
|
|
23
|
-
throw new Error(
|
|
21
|
+
throw new Error(`${adapter.config.type} was built with no reference: the request that created it named no assembly, and no \`sequenceAdapter\` slot is set`);
|
|
24
22
|
}
|
|
25
23
|
const result = await adapter.getSubAdapter?.(config);
|
|
26
24
|
if (!result) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import PluggableElementBase from './PluggableElementBase.ts';
|
|
2
2
|
import type { AnyConfigurationSchemaType } from '../configuration/index.ts';
|
|
3
|
-
import type {
|
|
3
|
+
import type { AdapterClassFor } from '../data_adapters/BaseAdapter/index.ts';
|
|
4
4
|
export interface AdapterMetadata {
|
|
5
5
|
category?: string;
|
|
6
6
|
hiddenFromGUI?: boolean;
|
|
@@ -25,9 +25,9 @@ export interface AdapterMetadata {
|
|
|
25
25
|
}
|
|
26
26
|
/** Expand a raw adapter config snapshot (plain JSON) to its canonical form. */
|
|
27
27
|
export type NormalizeSnapshot = (snap: Record<string, unknown>) => Record<string, unknown>;
|
|
28
|
-
export default class AdapterType extends PluggableElementBase {
|
|
29
|
-
getAdapterClass: () => Promise<
|
|
30
|
-
configSchema:
|
|
28
|
+
export default class AdapterType<SCHEMA extends AnyConfigurationSchemaType = any> extends PluggableElementBase {
|
|
29
|
+
getAdapterClass: () => Promise<AdapterClassFor<SCHEMA>>;
|
|
30
|
+
configSchema: SCHEMA;
|
|
31
31
|
adapterCapabilities: string[];
|
|
32
32
|
adapterMetadata?: AdapterMetadata;
|
|
33
33
|
private declaredNormalizeSnapshot?;
|
|
@@ -42,7 +42,7 @@ export default class AdapterType extends PluggableElementBase {
|
|
|
42
42
|
* declaring the shorthand once gets both. It used to be a second, separate
|
|
43
43
|
* registration, and five in-tree adapters had only the schema half
|
|
44
44
|
* (`MafTabixAdapter`, `BgzipMafAdapter`, `BgzipTaffyAdapter`,
|
|
45
|
-
* `
|
|
45
|
+
* `MultiGenomePAFAdapter`, `MCScanBlocksAdapter`) — which reads as working,
|
|
46
46
|
* because loading such a config from a URL goes through the schema. Only
|
|
47
47
|
* `normalizeAdapterSnapshots` consults *this*, so what broke was `localFiles`
|
|
48
48
|
* in the embedded products: the shorthand stayed unexpanded, `uri` never
|
|
@@ -61,15 +61,15 @@ export default class AdapterType extends PluggableElementBase {
|
|
|
61
61
|
locationKey?: string;
|
|
62
62
|
constructor(stuff: {
|
|
63
63
|
name: string;
|
|
64
|
-
configSchema:
|
|
64
|
+
configSchema: SCHEMA;
|
|
65
65
|
displayName?: string;
|
|
66
66
|
adapterCapabilities?: string[];
|
|
67
67
|
adapterMetadata?: AdapterMetadata;
|
|
68
68
|
normalizeSnapshot?: NormalizeSnapshot;
|
|
69
69
|
locationKey?: string;
|
|
70
70
|
} & ({
|
|
71
|
-
getAdapterClass: () => Promise<
|
|
71
|
+
getAdapterClass: () => Promise<AdapterClassFor<SCHEMA>>;
|
|
72
72
|
} | {
|
|
73
|
-
AdapterClass:
|
|
73
|
+
AdapterClass: AdapterClassFor<SCHEMA>;
|
|
74
74
|
}));
|
|
75
75
|
}
|
|
@@ -17,7 +17,7 @@ export default class AdapterType extends PluggableElementBase {
|
|
|
17
17
|
* declaring the shorthand once gets both. It used to be a second, separate
|
|
18
18
|
* registration, and five in-tree adapters had only the schema half
|
|
19
19
|
* (`MafTabixAdapter`, `BgzipMafAdapter`, `BgzipTaffyAdapter`,
|
|
20
|
-
* `
|
|
20
|
+
* `MultiGenomePAFAdapter`, `MCScanBlocksAdapter`) — which reads as working,
|
|
21
21
|
* because loading such a config from a URL goes through the schema. Only
|
|
22
22
|
* `normalizeAdapterSnapshots` consults *this*, so what broke was `localFiles`
|
|
23
23
|
* in the embedded products: the shorthand stayed unexpanded, `uri` never
|
|
@@ -1,19 +1,43 @@
|
|
|
1
|
-
import
|
|
1
|
+
import LazyStateModelElement from './LazyStateModelElement.ts';
|
|
2
2
|
import type { AnyConfigurationSchemaType } from '../configuration/index.ts';
|
|
3
|
+
import type { PlotExample } from '../configuration/plot.ts';
|
|
3
4
|
import type { AnyReactComponentType } from '../util/index.ts';
|
|
4
5
|
import type { IAnyModelType } from '@jbrowse/mobx-state-tree';
|
|
5
|
-
export
|
|
6
|
-
|
|
6
|
+
export type DisplayEntry = Record<string, unknown>;
|
|
7
|
+
/**
|
|
8
|
+
* A display type retired into this one. Configs and sessions naming it load
|
|
9
|
+
* as this display, the entry rewritten by `migrate` first: the settings the
|
|
10
|
+
* old type's picture needs, and its own spelling of any slot value, which
|
|
11
|
+
* `values` lists by slot so the published JSON schema and `jbrowse validate`
|
|
12
|
+
* admit it. A session track's entry keeps the retired type after its lifted
|
|
13
|
+
* settings are folded onto it, so `migrate` must leave an entry it already
|
|
14
|
+
* rewrote as it found it.
|
|
15
|
+
*/
|
|
16
|
+
export interface RetiredDisplayType {
|
|
17
|
+
type: string;
|
|
18
|
+
migrate?: (entry: DisplayEntry) => DisplayEntry;
|
|
19
|
+
values?: Readonly<Record<string, readonly unknown[]>>;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Display-instance props an old session carries that are config slots now.
|
|
23
|
+
* `lift` answers the slots they become, which the session migration writes
|
|
24
|
+
* into the track's config; `keys` lists them, so the instance sheds them and
|
|
25
|
+
* `jbrowse validate` reports them as stale rather than dead.
|
|
26
|
+
*/
|
|
27
|
+
export interface RetiredDisplayState {
|
|
28
|
+
keys: readonly string[];
|
|
29
|
+
lift: (instance: DisplayEntry) => DisplayEntry;
|
|
30
|
+
}
|
|
31
|
+
export default class DisplayType extends LazyStateModelElement {
|
|
32
|
+
protected readonly group = "display";
|
|
7
33
|
configSchema: AnyConfigurationSchemaType;
|
|
8
34
|
ReactComponent: AnyReactComponentType;
|
|
9
35
|
/**
|
|
10
|
-
* The track type the display
|
|
36
|
+
* The track type the display attaches to, or several: a display that reads
|
|
37
|
+
* a field any feature adapter serves (the Manhattan plot's `score`) belongs
|
|
38
|
+
* to every track type whose adapters serve it.
|
|
11
39
|
*/
|
|
12
|
-
trackType: string;
|
|
13
|
-
subDisplay?: {
|
|
14
|
-
type: string;
|
|
15
|
-
[key: string]: unknown;
|
|
16
|
-
};
|
|
40
|
+
trackType: string | string[];
|
|
17
41
|
/**
|
|
18
42
|
* The view type the display is associated with
|
|
19
43
|
*/
|
|
@@ -22,19 +46,32 @@ export default class DisplayType extends PluggableElementBase {
|
|
|
22
46
|
* Help text describing the display type
|
|
23
47
|
*/
|
|
24
48
|
helpText?: string;
|
|
49
|
+
/**
|
|
50
|
+
* What the track's adapter must declare it can answer for this display to
|
|
51
|
+
* be offered on the track: a graph display draws only from an adapter that
|
|
52
|
+
* cuts a subgraph (`['getSubgraph']`), so a track whose adapter cannot is
|
|
53
|
+
* not given one.
|
|
54
|
+
*/
|
|
55
|
+
adapterCapabilities: readonly string[];
|
|
56
|
+
retiredTypes: readonly RetiredDisplayType[];
|
|
57
|
+
retiredState?: RetiredDisplayState;
|
|
58
|
+
/**
|
|
59
|
+
* Worked examples of this display's plot, which "Edit plot..." offers as
|
|
60
|
+
* buttons. Each has to pass the display's config schema.
|
|
61
|
+
*/
|
|
62
|
+
plotExamples: readonly PlotExample[];
|
|
25
63
|
constructor(stuff: {
|
|
26
64
|
name: string;
|
|
27
|
-
stateModel: IAnyModelType;
|
|
28
|
-
trackType: string;
|
|
65
|
+
stateModel: IAnyModelType | (() => Promise<IAnyModelType>);
|
|
66
|
+
trackType: string | string[];
|
|
29
67
|
viewType: string;
|
|
30
68
|
displayName?: string;
|
|
31
|
-
subDisplay?: {
|
|
32
|
-
type: string;
|
|
33
|
-
[key: string]: unknown;
|
|
34
|
-
};
|
|
35
69
|
configSchema: AnyConfigurationSchemaType;
|
|
36
70
|
ReactComponent: AnyReactComponentType;
|
|
37
71
|
helpText?: string;
|
|
38
|
-
|
|
72
|
+
adapterCapabilities?: readonly string[];
|
|
73
|
+
retiredTypes?: readonly RetiredDisplayType[];
|
|
74
|
+
retiredState?: RetiredDisplayState;
|
|
75
|
+
plotExamples?: readonly PlotExample[];
|
|
39
76
|
});
|
|
40
77
|
}
|
|
@@ -1,17 +1,14 @@
|
|
|
1
|
-
import
|
|
2
|
-
export default class DisplayType extends
|
|
3
|
-
|
|
1
|
+
import LazyStateModelElement from './LazyStateModelElement.js';
|
|
2
|
+
export default class DisplayType extends LazyStateModelElement {
|
|
3
|
+
group = 'display';
|
|
4
4
|
configSchema;
|
|
5
5
|
ReactComponent;
|
|
6
6
|
/**
|
|
7
|
-
* The track type the display
|
|
7
|
+
* The track type the display attaches to, or several: a display that reads
|
|
8
|
+
* a field any feature adapter serves (the Manhattan plot's `score`) belongs
|
|
9
|
+
* to every track type whose adapters serve it.
|
|
8
10
|
*/
|
|
9
11
|
trackType;
|
|
10
|
-
/*
|
|
11
|
-
* Indicates that this display type can be a "sub-display" of another type of
|
|
12
|
-
* display, e.g. in AlignmentsDisplay, has Pileup and SNPCoverage subDisplays
|
|
13
|
-
*/
|
|
14
|
-
subDisplay;
|
|
15
12
|
/**
|
|
16
13
|
* The view type the display is associated with
|
|
17
14
|
*/
|
|
@@ -20,14 +17,33 @@ export default class DisplayType extends PluggableElementBase {
|
|
|
20
17
|
* Help text describing the display type
|
|
21
18
|
*/
|
|
22
19
|
helpText;
|
|
20
|
+
/**
|
|
21
|
+
* What the track's adapter must declare it can answer for this display to
|
|
22
|
+
* be offered on the track: a graph display draws only from an adapter that
|
|
23
|
+
* cuts a subgraph (`['getSubgraph']`), so a track whose adapter cannot is
|
|
24
|
+
* not given one.
|
|
25
|
+
*/
|
|
26
|
+
adapterCapabilities;
|
|
27
|
+
retiredTypes;
|
|
28
|
+
retiredState;
|
|
29
|
+
/**
|
|
30
|
+
* Worked examples of this display's plot, which "Edit plot..." offers as
|
|
31
|
+
* buttons. Each has to pass the display's config schema.
|
|
32
|
+
*/
|
|
33
|
+
plotExamples;
|
|
23
34
|
constructor(stuff) {
|
|
24
|
-
super(
|
|
25
|
-
|
|
26
|
-
|
|
35
|
+
super({
|
|
36
|
+
...stuff,
|
|
37
|
+
aliases: stuff.retiredTypes?.map(r => r.type),
|
|
38
|
+
});
|
|
27
39
|
this.configSchema = stuff.configSchema;
|
|
28
40
|
this.ReactComponent = stuff.ReactComponent;
|
|
29
41
|
this.trackType = stuff.trackType;
|
|
30
42
|
this.viewType = stuff.viewType;
|
|
31
43
|
this.helpText = stuff.helpText;
|
|
44
|
+
this.adapterCapabilities = stuff.adapterCapabilities ?? [];
|
|
45
|
+
this.retiredTypes = stuff.retiredTypes ?? [];
|
|
46
|
+
this.retiredState = stuff.retiredState;
|
|
47
|
+
this.plotExamples = stuff.plotExamples ?? [];
|
|
32
48
|
}
|
|
33
49
|
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import PluggableElementBase from './PluggableElementBase.ts';
|
|
2
|
+
import type { IAnyModelType } from '@jbrowse/mobx-state-tree';
|
|
3
|
+
/**
|
|
4
|
+
* A pluggable element whose state model may arrive through a dynamic import.
|
|
5
|
+
* Code that can run before any instance exists — session preloading, pruning,
|
|
6
|
+
* union membership — checks `isStateModelLoaded` before reading `stateModel`.
|
|
7
|
+
*/
|
|
8
|
+
export default abstract class LazyStateModelElement extends PluggableElementBase {
|
|
9
|
+
protected abstract readonly group: 'view' | 'display';
|
|
10
|
+
abstract ReactComponent: unknown;
|
|
11
|
+
private loadedStateModel?;
|
|
12
|
+
private stateModelPromise?;
|
|
13
|
+
private pendingStateModelExtensions;
|
|
14
|
+
stateModelLoader?: () => Promise<IAnyModelType>;
|
|
15
|
+
onStateModelLoaded?: () => void;
|
|
16
|
+
constructor(stuff: {
|
|
17
|
+
name: string;
|
|
18
|
+
displayName?: string;
|
|
19
|
+
aliases?: string[];
|
|
20
|
+
stateModel: IAnyModelType | (() => Promise<IAnyModelType>);
|
|
21
|
+
});
|
|
22
|
+
get stateModel(): IAnyModelType;
|
|
23
|
+
set stateModel(stateModel: IAnyModelType);
|
|
24
|
+
get isStateModelLoaded(): boolean;
|
|
25
|
+
assertStateModelLoaded(): void;
|
|
26
|
+
/**
|
|
27
|
+
* Also starts the component's download, which rendering would otherwise
|
|
28
|
+
* request only after the model exists and the element mounts.
|
|
29
|
+
*/
|
|
30
|
+
loadStateModel(): Promise<IAnyModelType>;
|
|
31
|
+
extendStateModel(extend: (stateModel: IAnyModelType) => IAnyModelType): void;
|
|
32
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { preloadComponent } from '../util/preloadComponent.js';
|
|
2
|
+
import PluggableElementBase from './PluggableElementBase.js';
|
|
3
|
+
/**
|
|
4
|
+
* A pluggable element whose state model may arrive through a dynamic import.
|
|
5
|
+
* Code that can run before any instance exists — session preloading, pruning,
|
|
6
|
+
* union membership — checks `isStateModelLoaded` before reading `stateModel`.
|
|
7
|
+
*/
|
|
8
|
+
export default class LazyStateModelElement extends PluggableElementBase {
|
|
9
|
+
loadedStateModel;
|
|
10
|
+
stateModelPromise;
|
|
11
|
+
pendingStateModelExtensions = [];
|
|
12
|
+
// named `stateModel` + `Loader` because pluggableMstType probes
|
|
13
|
+
// `${fieldName}Loader` generically
|
|
14
|
+
stateModelLoader;
|
|
15
|
+
// set by PluginManager.addElementType: runs Core-extendPluggableElement once
|
|
16
|
+
// the loader resolves, so a callback reading `stateModel` sees a model
|
|
17
|
+
onStateModelLoaded;
|
|
18
|
+
constructor(stuff) {
|
|
19
|
+
super(stuff);
|
|
20
|
+
if (typeof stuff.stateModel === 'function') {
|
|
21
|
+
this.stateModelLoader = stuff.stateModel;
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
this.loadedStateModel = stuff.stateModel;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
// Throws before the loader resolves, so a plugin composing an unloaded
|
|
28
|
+
// model fails here rather than as an opaque MST error.
|
|
29
|
+
get stateModel() {
|
|
30
|
+
this.assertStateModelLoaded();
|
|
31
|
+
return this.loadedStateModel;
|
|
32
|
+
}
|
|
33
|
+
set stateModel(stateModel) {
|
|
34
|
+
this.loadedStateModel = stateModel;
|
|
35
|
+
}
|
|
36
|
+
get isStateModelLoaded() {
|
|
37
|
+
return this.loadedStateModel !== undefined;
|
|
38
|
+
}
|
|
39
|
+
assertStateModelLoaded() {
|
|
40
|
+
if (this.loadedStateModel === undefined) {
|
|
41
|
+
const getter = this.group === 'view' ? 'getViewType' : 'getDisplayType';
|
|
42
|
+
throw new Error(`state model for ${this.group} type ${this.name} is not loaded yet — await ${getter}('${this.name}').loadStateModel() first`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Also starts the component's download, which rendering would otherwise
|
|
47
|
+
* request only after the model exists and the element mounts.
|
|
48
|
+
*/
|
|
49
|
+
loadStateModel() {
|
|
50
|
+
preloadComponent(this.ReactComponent);
|
|
51
|
+
if (this.loadedStateModel !== undefined) {
|
|
52
|
+
return Promise.resolve(this.loadedStateModel);
|
|
53
|
+
}
|
|
54
|
+
if (!this.stateModelLoader) {
|
|
55
|
+
throw new Error(`${this.group} type ${this.name} has neither a state model nor a loader`);
|
|
56
|
+
}
|
|
57
|
+
this.stateModelPromise ??= this.stateModelLoader().then(loaded => {
|
|
58
|
+
let stateModel = loaded;
|
|
59
|
+
for (const extend of this.pendingStateModelExtensions) {
|
|
60
|
+
stateModel = extend(stateModel);
|
|
61
|
+
}
|
|
62
|
+
this.pendingStateModelExtensions = [];
|
|
63
|
+
this.loadedStateModel = stateModel;
|
|
64
|
+
this.onStateModelLoaded?.();
|
|
65
|
+
return this.stateModel;
|
|
66
|
+
});
|
|
67
|
+
return this.stateModelPromise;
|
|
68
|
+
}
|
|
69
|
+
extendStateModel(extend) {
|
|
70
|
+
if (this.loadedStateModel !== undefined) {
|
|
71
|
+
this.loadedStateModel = extend(this.loadedStateModel);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
this.pendingStateModelExtensions.push(extend);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
@@ -6,11 +6,9 @@ export default abstract class PluggableElementBase {
|
|
|
6
6
|
* or config names one. Each entry is a legacy `type` value previously used.
|
|
7
7
|
*
|
|
8
8
|
* Lets an element own its renames instead of a central migration file, so a
|
|
9
|
-
* plugin can be renamed out of tree. A
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* rename, a type narrow) use `addDisplayConfigMigration` instead — see that
|
|
13
|
-
* helper for why.
|
|
9
|
+
* plugin can be renamed out of tree. A display declares its renames as
|
|
10
|
+
* `retiredTypes`, which also say what the old type's entries become, and
|
|
11
|
+
* answers these from them.
|
|
14
12
|
*/
|
|
15
13
|
aliases?: string[];
|
|
16
14
|
constructor(args?: {
|
|
@@ -6,11 +6,9 @@ export default class PluggableElementBase {
|
|
|
6
6
|
* or config names one. Each entry is a legacy `type` value previously used.
|
|
7
7
|
*
|
|
8
8
|
* Lets an element own its renames instead of a central migration file, so a
|
|
9
|
-
* plugin can be renamed out of tree. A
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* rename, a type narrow) use `addDisplayConfigMigration` instead — see that
|
|
13
|
-
* helper for why.
|
|
9
|
+
* plugin can be renamed out of tree. A display declares its renames as
|
|
10
|
+
* `retiredTypes`, which also say what the old type's entries become, and
|
|
11
|
+
* answers these from them.
|
|
14
12
|
*/
|
|
15
13
|
aliases;
|
|
16
14
|
constructor(args) {
|
|
@@ -71,6 +71,16 @@ export default abstract class RpcMethodType<MethodName extends string = string>
|
|
|
71
71
|
pluginManager: PluginManager;
|
|
72
72
|
constructor(pluginManager: PluginManager);
|
|
73
73
|
serializeArguments(args: object): Promise<Record<string, unknown>>;
|
|
74
|
+
/**
|
|
75
|
+
* The reference sequence of the genome a call names in `assemblyName`, as a
|
|
76
|
+
* sibling of `adapterConfig`. The worker keys and builds a reference-reading
|
|
77
|
+
* adapter with it (dataAdapterCache), and this is the one place it comes
|
|
78
|
+
* from: a per-genome renaming method's regions have already become its
|
|
79
|
+
* `assemblyName` by the time super is reached, a header call names its own,
|
|
80
|
+
* and a comparative method names none. Ahead of the location walk, which
|
|
81
|
+
* converts and authorizes what the worker opens.
|
|
82
|
+
*/
|
|
83
|
+
private attachReference;
|
|
74
84
|
protected renameRegions<T extends RenameRegionsArgs>(args: T): Promise<T>;
|
|
75
85
|
/**
|
|
76
86
|
* The root model to resolve internet accounts against, but only while it is
|
|
@@ -109,7 +119,7 @@ export default abstract class RpcMethodType<MethodName extends string = string>
|
|
|
109
119
|
* is not cosmetic, because the two handles every method receives are the two
|
|
110
120
|
* an author who did not write them down never forwards.
|
|
111
121
|
*
|
|
112
|
-
* `CoreGetExportData` is the worked example: the
|
|
122
|
+
* `CoreGetExportData` is the worked example: the signal and status
|
|
113
123
|
* callback arrived on every call and its `execute` destructured neither, so
|
|
114
124
|
* the Save-track-data dialog's cancel did nothing and its progress never moved
|
|
115
125
|
* on the adapter-export branch. Nothing was mistyped — the fields simply were
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { isAlive, isStateTreeNode } from '@jbrowse/mobx-state-tree';
|
|
2
|
+
import { untracked } from 'mobx';
|
|
3
|
+
import { getSequenceAdapterConfigByName } from '../assemblyManager/getSequenceAdapterConfig.js';
|
|
2
4
|
import { renameRegionsIfNeeded } from '../util/index.js';
|
|
3
5
|
import { resolveUriLocation } from '../util/io/index.js';
|
|
4
6
|
import { unwrapRpcResult } from '../util/rpc.js';
|
|
@@ -64,17 +66,12 @@ function isCloneable(thing) {
|
|
|
64
66
|
}
|
|
65
67
|
// Values that structuredClone handles natively and that must pass through
|
|
66
68
|
// ownArgs unchanged: `Object.entries` on them yields `[]`, so naive cloning
|
|
67
|
-
// would collapse them to plain `{}` (
|
|
68
|
-
// would silently stop working, a typed array would lose its data).
|
|
69
|
+
// would collapse them to plain `{}` (a typed array would lose its data).
|
|
69
70
|
function isStructuredClonePassthrough(thing) {
|
|
70
71
|
return (thing instanceof File ||
|
|
71
72
|
thing instanceof Blob ||
|
|
72
73
|
thing instanceof ArrayBuffer ||
|
|
73
|
-
//
|
|
74
|
-
// collapses to {} and SAB-based stop tokens silently stop working. Nothing
|
|
75
|
-
// we ship mints one (see `stopToken.ts`, "Which path runs where"), so this
|
|
76
|
-
// arm is correctness for an isolated embedding host and nothing else —
|
|
77
|
-
// keep it, but it is not a hot path and never was.
|
|
74
|
+
// not an ArrayBuffer subclass
|
|
78
75
|
(typeof SharedArrayBuffer !== 'undefined' &&
|
|
79
76
|
thing instanceof SharedArrayBuffer) ||
|
|
80
77
|
ArrayBuffer.isView(thing) ||
|
|
@@ -96,7 +93,7 @@ function isStructuredClonePassthrough(thing) {
|
|
|
96
93
|
// DataCloneError on every call a display makes.
|
|
97
94
|
//
|
|
98
95
|
// So: non-cloneable leaves (functions, Errors) and structured-clone natives
|
|
99
|
-
// (typed arrays, Blobs
|
|
96
|
+
// (typed arrays, Blobs...) pass through by reference
|
|
100
97
|
// unchanged. A genuinely non-cloneable value that leaked in by mistake is still
|
|
101
98
|
// caught — at the worker postMessage boundary, which is a real structuredClone.
|
|
102
99
|
function ownArgs(thing, seen = new WeakMap()) {
|
|
@@ -171,12 +168,31 @@ export default class RpcMethodType extends PluggableElementBase {
|
|
|
171
168
|
this.pluginManager = pluginManager;
|
|
172
169
|
}
|
|
173
170
|
async serializeArguments(args) {
|
|
174
|
-
const augmented = await this.augmentLocationObjects(args);
|
|
171
|
+
const augmented = await this.augmentLocationObjects(this.attachReference(args));
|
|
175
172
|
return {
|
|
176
173
|
...augmented,
|
|
177
174
|
blobMap: getBlobMap(),
|
|
178
175
|
};
|
|
179
176
|
}
|
|
177
|
+
/**
|
|
178
|
+
* The reference sequence of the genome a call names in `assemblyName`, as a
|
|
179
|
+
* sibling of `adapterConfig`. The worker keys and builds a reference-reading
|
|
180
|
+
* adapter with it (dataAdapterCache), and this is the one place it comes
|
|
181
|
+
* from: a per-genome renaming method's regions have already become its
|
|
182
|
+
* `assemblyName` by the time super is reached, a header call names its own,
|
|
183
|
+
* and a comparative method names none. Ahead of the location walk, which
|
|
184
|
+
* converts and authorizes what the worker opens.
|
|
185
|
+
*/
|
|
186
|
+
attachReference(args) {
|
|
187
|
+
const { assemblyName } = args;
|
|
188
|
+
const assemblyManager = this.pluginManager.rootModel?.session?.assemblyManager;
|
|
189
|
+
if (!assemblyName || !assemblyManager) {
|
|
190
|
+
return args;
|
|
191
|
+
}
|
|
192
|
+
// eslint-disable-next-line no-restricted-syntax -- EFFECT INPUT: the reference only rides along on the RPC this call sends; the autorun that reached here (the synteny swap check) branches on the call's result, not on this read
|
|
193
|
+
const sequenceAdapter = untracked(() => getSequenceAdapterConfigByName(assemblyManager, assemblyName));
|
|
194
|
+
return sequenceAdapter ? { ...args, sequenceAdapter } : args;
|
|
195
|
+
}
|
|
180
196
|
async renameRegions(args) {
|
|
181
197
|
const { rootModel } = this.pluginManager;
|
|
182
198
|
return renameRegionsIfNeeded(rootModel.session.assemblyManager, args);
|
|
@@ -2,7 +2,6 @@ import RpcMethodTypeWithRenameRegions from './RpcMethodTypeWithRenameRegions.ts'
|
|
|
2
2
|
import SerializableFilterChain from './renderers/util/serializableFilterChain.ts';
|
|
3
3
|
import type { Region } from '../util/index.ts';
|
|
4
4
|
import type { StatusCallback } from '../util/progress.ts';
|
|
5
|
-
import type { StopToken } from '../util/stopToken.ts';
|
|
6
5
|
interface FilterRenameArgs {
|
|
7
6
|
sessionId: string;
|
|
8
7
|
regions?: Region[];
|
|
@@ -14,7 +13,7 @@ export default abstract class RpcMethodTypeWithFiltersAndRenameRegions<MethodNam
|
|
|
14
13
|
filters?: unknown;
|
|
15
14
|
}): Promise<T>;
|
|
16
15
|
serializeArguments(args: FilterRenameArgs & {
|
|
17
|
-
|
|
16
|
+
signal?: AbortSignal;
|
|
18
17
|
statusCallback?: StatusCallback;
|
|
19
18
|
}): Promise<Record<string, unknown>>;
|
|
20
19
|
}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import PluggableElementBase from './PluggableElementBase.ts';
|
|
2
2
|
import type { AnyConfigurationSchemaType } from '../configuration/index.ts';
|
|
3
|
-
import type {
|
|
4
|
-
export default class TextSearchAdapterType extends PluggableElementBase {
|
|
5
|
-
getAdapterClass: () => Promise<
|
|
6
|
-
configSchema:
|
|
3
|
+
import type { AdapterClassFor } from '../data_adapters/BaseAdapter/index.ts';
|
|
4
|
+
export default class TextSearchAdapterType<SCHEMA extends AnyConfigurationSchemaType = any> extends PluggableElementBase {
|
|
5
|
+
getAdapterClass: () => Promise<AdapterClassFor<SCHEMA>>;
|
|
6
|
+
configSchema: SCHEMA;
|
|
7
7
|
description?: string;
|
|
8
8
|
constructor(stuff: {
|
|
9
9
|
name: string;
|
|
10
|
-
configSchema:
|
|
10
|
+
configSchema: SCHEMA;
|
|
11
11
|
displayName?: string;
|
|
12
12
|
description?: string;
|
|
13
13
|
} & ({
|
|
14
|
-
getAdapterClass: () => Promise<
|
|
14
|
+
getAdapterClass: () => Promise<AdapterClassFor<SCHEMA>>;
|
|
15
15
|
} | {
|
|
16
|
-
AdapterClass:
|
|
16
|
+
AdapterClass: AdapterClassFor<SCHEMA>;
|
|
17
17
|
}));
|
|
18
18
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import LazyStateModelElement from './LazyStateModelElement.ts';
|
|
2
|
+
import type { LaunchKeyRegistration } from '../util/withLaunchInput.ts';
|
|
2
3
|
import type DisplayType from './DisplayType.ts';
|
|
3
4
|
import type { IAnyModelType, IAnyStateTreeNode } from '@jbrowse/mobx-state-tree';
|
|
4
5
|
import type React from 'react';
|
|
@@ -10,21 +11,36 @@ type ViewComponentType = React.LazyExoticComponent<BasicView> | BasicView;
|
|
|
10
11
|
interface ViewMetadata {
|
|
11
12
|
hiddenFromGUI?: boolean;
|
|
12
13
|
}
|
|
13
|
-
export default class ViewType extends
|
|
14
|
+
export default class ViewType extends LazyStateModelElement {
|
|
15
|
+
protected readonly group = "view";
|
|
14
16
|
ReactComponent: ViewComponentType;
|
|
15
|
-
|
|
17
|
+
launchKeys?: LaunchKeyRegistration<unknown, string>;
|
|
16
18
|
displayTypes: DisplayType[];
|
|
17
19
|
viewMetadata: ViewMetadata;
|
|
18
20
|
extendedName?: string;
|
|
19
21
|
constructor(stuff: {
|
|
20
22
|
name: string;
|
|
21
23
|
displayName?: string;
|
|
22
|
-
stateModel: IAnyModelType;
|
|
24
|
+
stateModel: IAnyModelType | (() => Promise<IAnyModelType>);
|
|
25
|
+
launchKeys?: LaunchKeyRegistration<unknown, string>;
|
|
23
26
|
extendedName?: string;
|
|
24
27
|
viewMetadata?: ViewMetadata;
|
|
25
28
|
ReactComponent: ViewComponentType;
|
|
26
29
|
aliases?: string[];
|
|
27
30
|
});
|
|
31
|
+
/**
|
|
32
|
+
* Every key this view accepts written on the view object — its declared MST
|
|
33
|
+
* properties plus the launch keys above. `undefined` for a view that
|
|
34
|
+
* registers none: nothing there says which of its launcher's arguments are
|
|
35
|
+
* settings, so a caller must classify nothing rather than call them all typos.
|
|
36
|
+
* Also `undefined` while a lazily registered state model is not loaded yet,
|
|
37
|
+
* for the same reason: nothing is known, so nothing is a typo.
|
|
38
|
+
*
|
|
39
|
+
* This is the set `withLaunchInput`'s partition reads off the same two
|
|
40
|
+
* declarations, published for the surfaces that never build a view snapshot —
|
|
41
|
+
* a session spec launches straight through `LaunchView-<type>`.
|
|
42
|
+
*/
|
|
43
|
+
get acceptedKeys(): string[] | undefined;
|
|
28
44
|
addDisplayType(display: DisplayType): void;
|
|
29
45
|
}
|
|
30
46
|
export {};
|
|
@@ -1,7 +1,11 @@
|
|
|
1
|
-
import
|
|
2
|
-
export default class ViewType extends
|
|
1
|
+
import LazyStateModelElement from './LazyStateModelElement.js';
|
|
2
|
+
export default class ViewType extends LazyStateModelElement {
|
|
3
|
+
group = 'view';
|
|
3
4
|
ReactComponent;
|
|
4
|
-
|
|
5
|
+
// What `withLaunchInput` partitioned out of this view's snapshots, published
|
|
6
|
+
// beside the model so an out-of-tree plugin, the doc generator and the
|
|
7
|
+
// validator read one declaration rather than each keeping a list.
|
|
8
|
+
launchKeys;
|
|
5
9
|
displayTypes = [];
|
|
6
10
|
viewMetadata = {};
|
|
7
11
|
// extendedName can be used for when you extend a given view type, and want
|
|
@@ -16,9 +20,33 @@ export default class ViewType extends PluggableElementBase {
|
|
|
16
20
|
super(stuff);
|
|
17
21
|
this.ReactComponent = stuff.ReactComponent;
|
|
18
22
|
this.viewMetadata = stuff.viewMetadata ?? {};
|
|
19
|
-
this.
|
|
23
|
+
this.launchKeys = stuff.launchKeys;
|
|
20
24
|
this.extendedName = stuff.extendedName;
|
|
21
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Every key this view accepts written on the view object — its declared MST
|
|
28
|
+
* properties plus the launch keys above. `undefined` for a view that
|
|
29
|
+
* registers none: nothing there says which of its launcher's arguments are
|
|
30
|
+
* settings, so a caller must classify nothing rather than call them all typos.
|
|
31
|
+
* Also `undefined` while a lazily registered state model is not loaded yet,
|
|
32
|
+
* for the same reason: nothing is known, so nothing is a typo.
|
|
33
|
+
*
|
|
34
|
+
* This is the set `withLaunchInput`'s partition reads off the same two
|
|
35
|
+
* declarations, published for the surfaces that never build a view snapshot —
|
|
36
|
+
* a session spec launches straight through `LaunchView-<type>`.
|
|
37
|
+
*/
|
|
38
|
+
get acceptedKeys() {
|
|
39
|
+
const properties = this.isStateModelLoaded
|
|
40
|
+
? this.stateModel.properties
|
|
41
|
+
: undefined;
|
|
42
|
+
return this.launchKeys && properties
|
|
43
|
+
? [
|
|
44
|
+
...Object.keys(properties),
|
|
45
|
+
...Object.keys(this.launchKeys.keys),
|
|
46
|
+
...this.launchKeys.passThrough,
|
|
47
|
+
]
|
|
48
|
+
: undefined;
|
|
49
|
+
}
|
|
22
50
|
addDisplayType(display) {
|
|
23
51
|
this.displayTypes.push(display);
|
|
24
52
|
}
|
|
@@ -14,6 +14,11 @@ export default class WidgetType extends PluggableElementBase {
|
|
|
14
14
|
ReactComponent: WidgetComponentType;
|
|
15
15
|
stateModel: IAnyModelType;
|
|
16
16
|
helpText?: React.ReactNode;
|
|
17
|
+
/**
|
|
18
|
+
* Closing the widget removes it from the session rather than hiding it, so
|
|
19
|
+
* what it holds stops riding along in every saved and shared session (#3538)
|
|
20
|
+
*/
|
|
21
|
+
discardOnClose: boolean;
|
|
17
22
|
constructor(stuff: {
|
|
18
23
|
name: string;
|
|
19
24
|
heading?: string;
|
|
@@ -22,6 +27,7 @@ export default class WidgetType extends PluggableElementBase {
|
|
|
22
27
|
stateModel: IAnyModelType;
|
|
23
28
|
ReactComponent: WidgetComponentType;
|
|
24
29
|
helpText?: React.ReactNode;
|
|
30
|
+
discardOnClose?: boolean;
|
|
25
31
|
});
|
|
26
32
|
}
|
|
27
33
|
export {};
|