@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
|
@@ -6,6 +6,11 @@ export default class WidgetType extends PluggableElementBase {
|
|
|
6
6
|
ReactComponent;
|
|
7
7
|
stateModel;
|
|
8
8
|
helpText;
|
|
9
|
+
/**
|
|
10
|
+
* Closing the widget removes it from the session rather than hiding it, so
|
|
11
|
+
* what it holds stops riding along in every saved and shared session (#3538)
|
|
12
|
+
*/
|
|
13
|
+
discardOnClose;
|
|
9
14
|
constructor(stuff) {
|
|
10
15
|
super(stuff);
|
|
11
16
|
this.heading = stuff.heading;
|
|
@@ -14,5 +19,6 @@ export default class WidgetType extends PluggableElementBase {
|
|
|
14
19
|
this.stateModel = stuff.stateModel;
|
|
15
20
|
this.ReactComponent = stuff.ReactComponent;
|
|
16
21
|
this.helpText = stuff.helpText;
|
|
22
|
+
this.discardOnClose = stuff.discardOnClose ?? false;
|
|
17
23
|
}
|
|
18
24
|
}
|
|
@@ -12,9 +12,10 @@ type ModelOf<T> = T extends IAnyType ? Instance<T> : never;
|
|
|
12
12
|
/**
|
|
13
13
|
* The methods on a model that return a menu. Derived from the model rather than
|
|
14
14
|
* listed, which is what makes a renamed or retired method a compile error at
|
|
15
|
-
* the call site: there are
|
|
15
|
+
* the call site: there are seven of them across views and displays (`menuItems`,
|
|
16
16
|
* `trackMenuItems`, `contextMenuItems`, `rubberBandMenuItems`,
|
|
17
|
-
* `rubberBandLaunchMenuItems`, `highlightMenuItems`),
|
|
17
|
+
* `rubberBandLaunchMenuItems`, `highlightMenuItems`, `highlightsSubMenuItems`),
|
|
18
|
+
* they are a convention
|
|
18
19
|
* rather than one declared interface, and a contribution to a name the model no
|
|
19
20
|
* longer has is otherwise silent.
|
|
20
21
|
*
|
|
@@ -5,8 +5,7 @@ import type { IAnyModelType } from '@jbrowse/mobx-state-tree';
|
|
|
5
5
|
* Replace a view type's state model with an extended one, e.g. to add a menu
|
|
6
6
|
* item to `LinearGenomeView`. Pass an array to extend several at once, which is
|
|
7
7
|
* how a contribution reaches a family: the tree spells a display family as a
|
|
8
|
-
* shared mixin set rather than a chain, so there is no parent to name
|
|
9
|
-
* `reference/REJECTED_IDEAS.md`, "Give a pluggable element an `extendsType`".
|
|
8
|
+
* shared mixin set rather than a chain, so there is no parent to name, which is why an `extendsType` was declined.
|
|
10
9
|
*
|
|
11
10
|
* `Core-extendPluggableElement` fires for every pluggable element there is —
|
|
12
11
|
* adapters, widgets, RPC methods, all of them — so a callback written against
|
|
@@ -14,8 +14,7 @@ function namesOf(name) {
|
|
|
14
14
|
* Replace a view type's state model with an extended one, e.g. to add a menu
|
|
15
15
|
* item to `LinearGenomeView`. Pass an array to extend several at once, which is
|
|
16
16
|
* how a contribution reaches a family: the tree spells a display family as a
|
|
17
|
-
* shared mixin set rather than a chain, so there is no parent to name
|
|
18
|
-
* `reference/REJECTED_IDEAS.md`, "Give a pluggable element an `extendsType`".
|
|
17
|
+
* shared mixin set rather than a chain, so there is no parent to name, which is why an `extendsType` was declined.
|
|
19
18
|
*
|
|
20
19
|
* `Core-extendPluggableElement` fires for every pluggable element there is —
|
|
21
20
|
* adapters, widgets, RPC methods, all of them — so a callback written against
|
|
@@ -45,8 +44,12 @@ export function extendViewType(pluginManager, name, extend) {
|
|
|
45
44
|
// point of the signature; widening it once here costs nothing, since
|
|
46
45
|
// the only operation is handing the model to `extend` and storing what
|
|
47
46
|
// comes back.
|
|
47
|
+
//
|
|
48
|
+
// Routed through extendStateModel rather than assigning `.stateModel`
|
|
49
|
+
// directly so a view registered with a lazy loader queues the
|
|
50
|
+
// extension and composes it when the loader resolves.
|
|
48
51
|
const view = element;
|
|
49
|
-
view.
|
|
52
|
+
view.extendStateModel(widen(extend));
|
|
50
53
|
}
|
|
51
54
|
return element;
|
|
52
55
|
});
|
|
@@ -59,9 +62,10 @@ export function extendDisplayType(pluginManager, name, extend) {
|
|
|
59
62
|
const names = namesOf(name);
|
|
60
63
|
pluginManager.addToExtensionPoint('Core-extendPluggableElement', (element, props) => {
|
|
61
64
|
if (props.group === 'display' && names.has(element.name)) {
|
|
62
|
-
// widened for the reason in extendViewType
|
|
65
|
+
// widened for the reason in extendViewType; routed through
|
|
66
|
+
// extendStateModel so a lazy registration queues the extension
|
|
63
67
|
const display = element;
|
|
64
|
-
display.
|
|
68
|
+
display.extendStateModel(widen(extend));
|
|
65
69
|
}
|
|
66
70
|
return element;
|
|
67
71
|
});
|
|
@@ -8,7 +8,7 @@ import type TextSearchAdapterType from './TextSearchAdapterType.ts';
|
|
|
8
8
|
import type TrackType from './TrackType.ts';
|
|
9
9
|
import type ViewType from './ViewType.ts';
|
|
10
10
|
import type WidgetType from './WidgetType.ts';
|
|
11
|
-
export { BaseConnectionModelFactory, BaseDisplay, type BaseDisplayModel, type BaseDisplayStateModel, BaseInternetAccountConfig, type BaseInternetAccountModel, type BaseInternetAccountStateModel, type BaseTrackConfig, type BaseTrackModel, type BaseTrackStateModel, BaseViewModel, type DisplayModel, type FileTypeExporter,
|
|
11
|
+
export { BaseConnectionModelFactory, BaseDisplay, type BaseDisplayModel, type BaseDisplayStateModel, BaseInternetAccountConfig, type BaseInternetAccountModel, type BaseInternetAccountStateModel, type BaseTrackConfig, type BaseTrackModel, type BaseTrackStateModel, BaseViewModel, type DisplayModel, type FileTypeExporter, type IBaseViewModel, InternetAccount, baseConnectionConfig, createBaseTrackConfig, createBaseTrackModel, preprocessTrackConfigSnapshot, type TrackConfigSnapshot, } from './models/index.ts';
|
|
12
12
|
export type PluggableElementType = AdapterType | ConnectionType | WidgetType | TrackType | DisplayType | ViewType | RpcMethodType | InternetAccountType | TextSearchAdapterType | AddTrackWorkflowType;
|
|
13
13
|
export { extendDisplayType, extendViewType } from './extendElementType.ts';
|
|
14
14
|
export { addDisplayMenuItems, addViewMenuItems } from './addMenuItems.ts';
|
|
@@ -18,6 +18,7 @@ export { default as TrackType } from './TrackType.ts';
|
|
|
18
18
|
export { default as WidgetType } from './WidgetType.ts';
|
|
19
19
|
export { default as ViewType } from './ViewType.ts';
|
|
20
20
|
export { default as DisplayType } from './DisplayType.ts';
|
|
21
|
+
export type { DisplayEntry, RetiredDisplayState, RetiredDisplayType, } from './DisplayType.ts';
|
|
21
22
|
export { default as InternetAccountType } from './InternetAccountType.ts';
|
|
22
23
|
export { default as RpcMethodType } from './RpcMethodType.ts';
|
|
23
24
|
export { default as RpcMethodTypeWithRenameRegion } from './RpcMethodTypeWithRenameRegion.ts';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { BaseConnectionModelFactory, BaseDisplay, BaseInternetAccountConfig, BaseViewModel,
|
|
1
|
+
export { BaseConnectionModelFactory, BaseDisplay, BaseInternetAccountConfig, BaseViewModel, InternetAccount, baseConnectionConfig, createBaseTrackConfig, createBaseTrackModel, preprocessTrackConfigSnapshot, } from './models/index.js';
|
|
2
2
|
export { extendDisplayType, extendViewType } from './extendElementType.js';
|
|
3
3
|
export { addDisplayMenuItems, addViewMenuItems } from './addMenuItems.js';
|
|
4
4
|
export { default as AdapterType } from './AdapterType.js';
|
|
@@ -9,15 +9,8 @@ export { default as ViewType } from './ViewType.js';
|
|
|
9
9
|
export { default as DisplayType } from './DisplayType.js';
|
|
10
10
|
export { default as InternetAccountType } from './InternetAccountType.js';
|
|
11
11
|
export { default as RpcMethodType } from './RpcMethodType.js';
|
|
12
|
-
// The two region-renaming bases, which nearly every RPC method that takes a
|
|
13
|
-
// viewport wants — without them an external plugin deep-imports the file and
|
|
14
|
-
// bundles its own copy, which is only harmless because RPC methods are keyed by
|
|
15
|
-
// name (PluginManager.rpcMethods) and nothing does an instanceof.
|
|
16
12
|
// `RpcMethodTypeWithFiltersAndRenameRegions` is deliberately not here: it pulls
|
|
17
|
-
// in `renderers/util/serializableFilterChain`, and
|
|
18
|
-
// `pluggableElementTypes/renderers/*` after the legacy renderer migration. This
|
|
19
|
-
// barrel is served as ABI, so exporting it would pin a directory we intend to
|
|
20
|
-
// remove.
|
|
13
|
+
// in `renderers/util/serializableFilterChain`, and this barrel is served as ABI.
|
|
21
14
|
export { default as RpcMethodTypeWithRenameRegion } from './RpcMethodTypeWithRenameRegion.js';
|
|
22
15
|
export { default as RpcMethodTypeWithRenameRegions } from './RpcMethodTypeWithRenameRegions.js';
|
|
23
16
|
export { default as AddTrackWorkflowType } from './AddTrackWorkflowType.js';
|
|
@@ -8,22 +8,32 @@ declare function stateModelFactory(pluginManager: PluginManager): import("@jbrow
|
|
|
8
8
|
/**
|
|
9
9
|
* #property
|
|
10
10
|
*/
|
|
11
|
-
tracks: import("@jbrowse/mobx-state-tree").IArrayType<import("@jbrowse/
|
|
11
|
+
tracks: import("@jbrowse/mobx-state-tree").IArrayType<import("@jbrowse/core/PluginManager").PluggableConfigSchemaType>;
|
|
12
12
|
/**
|
|
13
13
|
* #property
|
|
14
14
|
*/
|
|
15
15
|
configuration: import("../../configuration/configurationSchema.ts").IConfigurationReference<import("../../configuration/configurationSchema.ts").ConfigurationSchemaType<{
|
|
16
16
|
readonly name: {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
type: "string";
|
|
18
|
+
} & {
|
|
19
|
+
defaultValue: string;
|
|
20
20
|
};
|
|
21
21
|
readonly assemblyNames: {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
type: "stringArray";
|
|
23
|
+
} & {
|
|
24
|
+
defaultValue: unknown;
|
|
25
25
|
};
|
|
26
|
-
|
|
26
|
+
type: {
|
|
27
|
+
type: "string";
|
|
28
|
+
} & {
|
|
29
|
+
defaultValue: string;
|
|
30
|
+
};
|
|
31
|
+
connectionId: {
|
|
32
|
+
type: "string";
|
|
33
|
+
} & {
|
|
34
|
+
defaultValue: string;
|
|
35
|
+
};
|
|
36
|
+
}, import("../../configuration/configurationSchema.ts").ConfigurationSchemaOptions<undefined, "connectionId", true, import("../../configuration/requirements.ts").ConfigurationSchemaRequirement<Partial<Record<string, string[]>>, string>, any>>>;
|
|
27
37
|
/**
|
|
28
38
|
* #property
|
|
29
39
|
* set when the connection is being re-established on session load (its
|
|
@@ -70,7 +80,7 @@ declare function stateModelFactory(pluginManager: PluginManager): import("@jbrow
|
|
|
70
80
|
/**
|
|
71
81
|
* #action
|
|
72
82
|
*/
|
|
73
|
-
addTrackConf(trackConf: TrackConf):
|
|
83
|
+
addTrackConf(trackConf: TrackConf): (import("../../configuration/types.ts").PluggableConfigNode & import("@jbrowse/mobx-state-tree").IStateTreeNode<import("@jbrowse/core/PluginManager").PluggableConfigSchemaType>) | undefined;
|
|
74
84
|
/**
|
|
75
85
|
* #action
|
|
76
86
|
*/
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { AnyConfigurationModel } from '../../configuration/index.ts';
|
|
2
|
+
import type { Plot, PlotExample } from '../../configuration/plot.ts';
|
|
2
3
|
import type { MenuItem } from '../../ui/index.ts';
|
|
3
4
|
import type { RpcStatus } from '../../util/progress.ts';
|
|
5
|
+
import type { UnappliedSetting } from '../../util/unknownSnapshotKeys.ts';
|
|
4
6
|
import type { Instance } from '@jbrowse/mobx-state-tree';
|
|
5
7
|
import type React from 'react';
|
|
6
8
|
export declare const BaseDisplay: import("@jbrowse/mobx-state-tree").IModelType<{
|
|
@@ -161,7 +163,7 @@ export declare const BaseDisplay: import("@jbrowse/mobx-state-tree").IModelType<
|
|
|
161
163
|
* pointing at" channel a plugin can subscribe to.
|
|
162
164
|
*
|
|
163
165
|
* Declared here because a cross-display consumer can only read a name the
|
|
164
|
-
* base declares — the same reason `
|
|
166
|
+
* base declares — the same reason `FetchMixin.fetchInert` is a
|
|
165
167
|
* hook rather than a getter each display invents. The container used to
|
|
166
168
|
* read `featureUnderMouse`, which only the wiggle, alignments and
|
|
167
169
|
* Manhattan families spelled that way — canvas said `hoveredFeature`,
|
|
@@ -202,15 +204,14 @@ export declare const BaseDisplay: import("@jbrowse/mobx-state-tree").IModelType<
|
|
|
202
204
|
readonly featureNoun: string;
|
|
203
205
|
/**
|
|
204
206
|
* #getter
|
|
205
|
-
*
|
|
206
|
-
*
|
|
207
|
-
*
|
|
208
|
-
* out by hand.
|
|
207
|
+
* The widget `openFeatureWidget` opens for one of this display's
|
|
208
|
+
* features. Displays may override it. The default is the generic feature
|
|
209
|
+
* widget, for displays drawing plain features.
|
|
209
210
|
*
|
|
210
|
-
*
|
|
211
|
-
*
|
|
212
|
-
*
|
|
213
|
-
*
|
|
211
|
+
* Displays whose features are a specific kind (a read, a variant, a
|
|
212
|
+
* synteny block) override it, including the `id`: two displays naming
|
|
213
|
+
* one id share the drawer panel, which suits two displays showing the
|
|
214
|
+
* same kind of feature.
|
|
214
215
|
*/
|
|
215
216
|
readonly featureWidgetType: {
|
|
216
217
|
type: string;
|
|
@@ -382,7 +383,7 @@ export declare const BaseDisplay: import("@jbrowse/mobx-state-tree").IModelType<
|
|
|
382
383
|
* pointing at" channel a plugin can subscribe to.
|
|
383
384
|
*
|
|
384
385
|
* Declared here because a cross-display consumer can only read a name the
|
|
385
|
-
* base declares — the same reason `
|
|
386
|
+
* base declares — the same reason `FetchMixin.fetchInert` is a
|
|
386
387
|
* hook rather than a getter each display invents. The container used to
|
|
387
388
|
* read `featureUnderMouse`, which only the wiggle, alignments and
|
|
388
389
|
* Manhattan families spelled that way — canvas said `hoveredFeature`,
|
|
@@ -423,15 +424,14 @@ export declare const BaseDisplay: import("@jbrowse/mobx-state-tree").IModelType<
|
|
|
423
424
|
readonly featureNoun: string;
|
|
424
425
|
/**
|
|
425
426
|
* #getter
|
|
426
|
-
*
|
|
427
|
-
*
|
|
428
|
-
*
|
|
429
|
-
* out by hand.
|
|
427
|
+
* The widget `openFeatureWidget` opens for one of this display's
|
|
428
|
+
* features. Displays may override it. The default is the generic feature
|
|
429
|
+
* widget, for displays drawing plain features.
|
|
430
430
|
*
|
|
431
|
-
*
|
|
432
|
-
*
|
|
433
|
-
*
|
|
434
|
-
*
|
|
431
|
+
* Displays whose features are a specific kind (a read, a variant, a
|
|
432
|
+
* synteny block) override it, including the `id`: two displays naming
|
|
433
|
+
* one id share the drawer panel, which suits two displays showing the
|
|
434
|
+
* same kind of feature.
|
|
435
435
|
*/
|
|
436
436
|
readonly featureWidgetType: {
|
|
437
437
|
type: string;
|
|
@@ -595,7 +595,7 @@ export declare const BaseDisplay: import("@jbrowse/mobx-state-tree").IModelType<
|
|
|
595
595
|
* pointing at" channel a plugin can subscribe to.
|
|
596
596
|
*
|
|
597
597
|
* Declared here because a cross-display consumer can only read a name the
|
|
598
|
-
* base declares — the same reason `
|
|
598
|
+
* base declares — the same reason `FetchMixin.fetchInert` is a
|
|
599
599
|
* hook rather than a getter each display invents. The container used to
|
|
600
600
|
* read `featureUnderMouse`, which only the wiggle, alignments and
|
|
601
601
|
* Manhattan families spelled that way — canvas said `hoveredFeature`,
|
|
@@ -636,15 +636,14 @@ export declare const BaseDisplay: import("@jbrowse/mobx-state-tree").IModelType<
|
|
|
636
636
|
readonly featureNoun: string;
|
|
637
637
|
/**
|
|
638
638
|
* #getter
|
|
639
|
-
*
|
|
640
|
-
*
|
|
641
|
-
*
|
|
642
|
-
* out by hand.
|
|
639
|
+
* The widget `openFeatureWidget` opens for one of this display's
|
|
640
|
+
* features. Displays may override it. The default is the generic feature
|
|
641
|
+
* widget, for displays drawing plain features.
|
|
643
642
|
*
|
|
644
|
-
*
|
|
645
|
-
*
|
|
646
|
-
*
|
|
647
|
-
*
|
|
643
|
+
* Displays whose features are a specific kind (a read, a variant, a
|
|
644
|
+
* synteny block) override it, including the `id`: two displays naming
|
|
645
|
+
* one id share the drawer panel, which suits two displays showing the
|
|
646
|
+
* same kind of feature.
|
|
648
647
|
*/
|
|
649
648
|
readonly featureWidgetType: {
|
|
650
649
|
type: string;
|
|
@@ -672,7 +671,7 @@ export declare const BaseDisplay: import("@jbrowse/mobx-state-tree").IModelType<
|
|
|
672
671
|
* `installClearHoverOnViewportChange` calls.
|
|
673
672
|
*
|
|
674
673
|
* A display that STORES its hover owes an override; one that derives it
|
|
675
|
-
* from the live pointer (
|
|
674
|
+
* from the live pointer (Hi-C, LD) owes nothing, and the default
|
|
676
675
|
* costs it nothing. Declared here so the clear can be installed for every
|
|
677
676
|
* display rather than remembered per display — forgetting it is the
|
|
678
677
|
* failure ARCHITECTURE.md's stored-hover section is about, and it used to
|
|
@@ -684,6 +683,101 @@ export declare const BaseDisplay: import("@jbrowse/mobx-state-tree").IModelType<
|
|
|
684
683
|
* base display reload does nothing, see specialized displays for details
|
|
685
684
|
*/
|
|
686
685
|
reload(): void;
|
|
686
|
+
/**
|
|
687
|
+
* #action
|
|
688
|
+
* Apply a set of display settings to the live display, and report which
|
|
689
|
+
* were applied. Each key runs through the display config schema's
|
|
690
|
+
* `preProcessSnapshot` (shorthand expansions and legacy-key migrations,
|
|
691
|
+
* as `showTrackGeneric` applies to a session spec's inline track keys),
|
|
692
|
+
* then writes the matching config slot. A key naming a sub-schema
|
|
693
|
+
* (`facet`, `color`) replaces the whole object, its string shorthand
|
|
694
|
+
* lifted by that schema, and `null` clears it. Keys that are not slots
|
|
695
|
+
* come back in `unapplied` as `{ key, reason }`, so a caller can tell a
|
|
696
|
+
* misspelling from a key that has an action instead of a slot.
|
|
697
|
+
*
|
|
698
|
+
* `allowSetters` also routes a non-slot key to a single-argument action
|
|
699
|
+
* named `set<Key>`. It is off by default because session specs, share
|
|
700
|
+
* links and embeds pass untyped JSON here, and a default fallback would
|
|
701
|
+
* let them call internal setters (`setError`, `setScrollTop`, ...) and
|
|
702
|
+
* call multi-argument setters with one argument. A caller that wants a
|
|
703
|
+
* specific action can call it directly.
|
|
704
|
+
*
|
|
705
|
+
* A key whose write threw is reported in `failed`. Only `failed` means
|
|
706
|
+
* the caller passed a bad value. `unapplied` needs the caller's own
|
|
707
|
+
* context to read: `showTrackGeneric` spreads the same settings into the
|
|
708
|
+
* display's snapshot, so a declared prop (`resolution`) has already
|
|
709
|
+
* landed by the time it reports here, while the restyle path spreads
|
|
710
|
+
* nothing and every entry there did nothing.
|
|
711
|
+
*
|
|
712
|
+
* A per-key error does not abort the remaining keys. A caller
|
|
713
|
+
* mid-`showTrack` has already pushed the track, and one rejected value
|
|
714
|
+
* should not leave it half-configured.
|
|
715
|
+
*/
|
|
716
|
+
applyDisplaySettings(settings: Record<string, unknown>, options?: {
|
|
717
|
+
allowSetters?: boolean;
|
|
718
|
+
}): {
|
|
719
|
+
applied: string[];
|
|
720
|
+
unapplied: UnappliedSetting[];
|
|
721
|
+
failed: {
|
|
722
|
+
key: string;
|
|
723
|
+
error: string;
|
|
724
|
+
}[];
|
|
725
|
+
};
|
|
726
|
+
} & {
|
|
727
|
+
/**
|
|
728
|
+
* #getter
|
|
729
|
+
* The grammar settings this display's config declares, by slot name
|
|
730
|
+
* (`PLOT_VOCABULARY`): what "Edit plot..." edits. Empty on a display
|
|
731
|
+
* with none, which then offers no editor.
|
|
732
|
+
*/
|
|
733
|
+
readonly plotKeys: string[];
|
|
734
|
+
/**
|
|
735
|
+
* #getter
|
|
736
|
+
* Those settings as declared, defaults left off and a shorthand written
|
|
737
|
+
* as a config file writes it. An agent edits a `structuredClone` of it,
|
|
738
|
+
* checks it with `plotProblems` and hands it to `applyPlot`.
|
|
739
|
+
*/
|
|
740
|
+
readonly plot: Plot;
|
|
741
|
+
/**
|
|
742
|
+
* #getter
|
|
743
|
+
* The worked examples this display type declares, which "Edit plot..."
|
|
744
|
+
* offers as buttons.
|
|
745
|
+
*/
|
|
746
|
+
readonly plotExamples: readonly PlotExample[];
|
|
747
|
+
/**
|
|
748
|
+
* #getter
|
|
749
|
+
* This display type's page in the config reference, which lists every
|
|
750
|
+
* setting it takes.
|
|
751
|
+
*/
|
|
752
|
+
readonly configDocsUrl: string;
|
|
753
|
+
/**
|
|
754
|
+
* #method
|
|
755
|
+
* A draft as the config would hold it, merged over `plot`, throwing what
|
|
756
|
+
* a config file would be refused for. Nothing on the display changes.
|
|
757
|
+
*/
|
|
758
|
+
liftPlot(draft: Plot): AnyConfigurationModel;
|
|
759
|
+
/**
|
|
760
|
+
* #method
|
|
761
|
+
* What a draft would report once applied, throwing a refusal as
|
|
762
|
+
* `liftPlot` does. A display with a rule list over its settings
|
|
763
|
+
* overrides it; the draft still applies, and draws what it can.
|
|
764
|
+
*/
|
|
765
|
+
plotProblems(draft: Plot): string[];
|
|
766
|
+
/**
|
|
767
|
+
* #method
|
|
768
|
+
* What applying a draft would write, by setting: the lifted value where
|
|
769
|
+
* it differs from `plot`, `null` where it resets one. Throws a refusal.
|
|
770
|
+
*/
|
|
771
|
+
plotWrites(draft: Plot): Record<string, unknown>;
|
|
772
|
+
} & {
|
|
773
|
+
/**
|
|
774
|
+
* #action
|
|
775
|
+
* Write a draft over `plot`: each setting it changes is replaced whole,
|
|
776
|
+
* so a member left out of an object goes back to its default, and `null`
|
|
777
|
+
* resets the setting. A draft the schema refuses, or naming a setting
|
|
778
|
+
* outside the plot, throws before anything is written.
|
|
779
|
+
*/
|
|
780
|
+
applyPlot(draft: Plot): void;
|
|
687
781
|
}, import("@jbrowse/mobx-state-tree")._NotCustomized, import("@jbrowse/mobx-state-tree")._NotCustomized>;
|
|
688
782
|
export type BaseDisplayStateModel = typeof BaseDisplay;
|
|
689
783
|
export type BaseDisplayModel = Instance<BaseDisplayStateModel>;
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { hasParent, isAlive, types } from '@jbrowse/mobx-state-tree';
|
|
2
|
-
import { getConf } from '../../configuration/index.js';
|
|
2
|
+
import { applyConfSettings, getConfigurationSchemaMetadata, getConf, setConf, } from '../../configuration/index.js';
|
|
3
|
+
import { liftPlot as liftPlotDraft, plotKeysOf, plotOf, plotWrites as plotWritesOf, } from '../../configuration/plot.js';
|
|
3
4
|
import { getContainingTrack, getEnv, statusFraction, statusMessageText, } from '../../util/index.js';
|
|
4
5
|
import { ElementId } from '../../util/types/mst.js';
|
|
6
|
+
import { displaySetterName } from '../../util/unknownSnapshotKeys.js';
|
|
5
7
|
/**
|
|
6
8
|
* #stateModel BaseDisplay
|
|
7
9
|
* #category display
|
|
@@ -94,7 +96,7 @@ function stateModelFactory() {
|
|
|
94
96
|
* pointing at" channel a plugin can subscribe to.
|
|
95
97
|
*
|
|
96
98
|
* Declared here because a cross-display consumer can only read a name the
|
|
97
|
-
* base declares — the same reason `
|
|
99
|
+
* base declares — the same reason `FetchMixin.fetchInert` is a
|
|
98
100
|
* hook rather than a getter each display invents. The container used to
|
|
99
101
|
* read `featureUnderMouse`, which only the wiggle, alignments and
|
|
100
102
|
* Manhattan families spelled that way — canvas said `hoveredFeature`,
|
|
@@ -139,15 +141,14 @@ function stateModelFactory() {
|
|
|
139
141
|
},
|
|
140
142
|
/**
|
|
141
143
|
* #getter
|
|
142
|
-
*
|
|
143
|
-
*
|
|
144
|
-
*
|
|
145
|
-
* out by hand.
|
|
144
|
+
* The widget `openFeatureWidget` opens for one of this display's
|
|
145
|
+
* features. Displays may override it. The default is the generic feature
|
|
146
|
+
* widget, for displays drawing plain features.
|
|
146
147
|
*
|
|
147
|
-
*
|
|
148
|
-
*
|
|
149
|
-
*
|
|
150
|
-
*
|
|
148
|
+
* Displays whose features are a specific kind (a read, a variant, a
|
|
149
|
+
* synteny block) override it, including the `id`: two displays naming
|
|
150
|
+
* one id share the drawer panel, which suits two displays showing the
|
|
151
|
+
* same kind of feature.
|
|
151
152
|
*/
|
|
152
153
|
get featureWidgetType() {
|
|
153
154
|
return {
|
|
@@ -198,7 +199,7 @@ function stateModelFactory() {
|
|
|
198
199
|
* `installClearHoverOnViewportChange` calls.
|
|
199
200
|
*
|
|
200
201
|
* A display that STORES its hover owes an override; one that derives it
|
|
201
|
-
* from the live pointer (
|
|
202
|
+
* from the live pointer (Hi-C, LD) owes nothing, and the default
|
|
202
203
|
* costs it nothing. Declared here so the clear can be installed for every
|
|
203
204
|
* display rather than remembered per display — forgetting it is the
|
|
204
205
|
* failure ARCHITECTURE.md's stored-hover section is about, and it used to
|
|
@@ -210,6 +211,149 @@ function stateModelFactory() {
|
|
|
210
211
|
* base display reload does nothing, see specialized displays for details
|
|
211
212
|
*/
|
|
212
213
|
reload() { },
|
|
214
|
+
/**
|
|
215
|
+
* #action
|
|
216
|
+
* Apply a set of display settings to the live display, and report which
|
|
217
|
+
* were applied. Each key runs through the display config schema's
|
|
218
|
+
* `preProcessSnapshot` (shorthand expansions and legacy-key migrations,
|
|
219
|
+
* as `showTrackGeneric` applies to a session spec's inline track keys),
|
|
220
|
+
* then writes the matching config slot. A key naming a sub-schema
|
|
221
|
+
* (`facet`, `color`) replaces the whole object, its string shorthand
|
|
222
|
+
* lifted by that schema, and `null` clears it. Keys that are not slots
|
|
223
|
+
* come back in `unapplied` as `{ key, reason }`, so a caller can tell a
|
|
224
|
+
* misspelling from a key that has an action instead of a slot.
|
|
225
|
+
*
|
|
226
|
+
* `allowSetters` also routes a non-slot key to a single-argument action
|
|
227
|
+
* named `set<Key>`. It is off by default because session specs, share
|
|
228
|
+
* links and embeds pass untyped JSON here, and a default fallback would
|
|
229
|
+
* let them call internal setters (`setError`, `setScrollTop`, ...) and
|
|
230
|
+
* call multi-argument setters with one argument. A caller that wants a
|
|
231
|
+
* specific action can call it directly.
|
|
232
|
+
*
|
|
233
|
+
* A key whose write threw is reported in `failed`. Only `failed` means
|
|
234
|
+
* the caller passed a bad value. `unapplied` needs the caller's own
|
|
235
|
+
* context to read: `showTrackGeneric` spreads the same settings into the
|
|
236
|
+
* display's snapshot, so a declared prop (`resolution`) has already
|
|
237
|
+
* landed by the time it reports here, while the restyle path spreads
|
|
238
|
+
* nothing and every entry there did nothing.
|
|
239
|
+
*
|
|
240
|
+
* A per-key error does not abort the remaining keys. A caller
|
|
241
|
+
* mid-`showTrack` has already pushed the track, and one rejected value
|
|
242
|
+
* should not leave it half-configured.
|
|
243
|
+
*/
|
|
244
|
+
applyDisplaySettings(settings, options) {
|
|
245
|
+
// configuration is the reference every concrete display adds at
|
|
246
|
+
// instantiation (see DisplayModel below); the base model composes
|
|
247
|
+
// before it exists, hence the cast rather than a prop
|
|
248
|
+
const { configuration } = self;
|
|
249
|
+
const { applied, undeclared, failed } = applyConfSettings(configuration, settings);
|
|
250
|
+
const unapplied = [];
|
|
251
|
+
for (const [key, value] of Object.entries(undeclared)) {
|
|
252
|
+
if (!key || key === 'type') {
|
|
253
|
+
unapplied.push({ key, reason: key ? 'display-type' : 'no-slot' });
|
|
254
|
+
continue;
|
|
255
|
+
}
|
|
256
|
+
const setter = self[displaySetterName(key)];
|
|
257
|
+
if (typeof setter !== 'function') {
|
|
258
|
+
unapplied.push({ key, reason: 'no-slot' });
|
|
259
|
+
}
|
|
260
|
+
else if (!options?.allowSetters) {
|
|
261
|
+
unapplied.push({ key, reason: 'setter-only' });
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
try {
|
|
265
|
+
;
|
|
266
|
+
setter(value);
|
|
267
|
+
applied.push(`${key} (via setter)`);
|
|
268
|
+
}
|
|
269
|
+
catch (e) {
|
|
270
|
+
failed.push({ key, error: `${e}` });
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
return { applied, unapplied, failed };
|
|
275
|
+
},
|
|
276
|
+
}))
|
|
277
|
+
.views(self => ({
|
|
278
|
+
/**
|
|
279
|
+
* #getter
|
|
280
|
+
* The grammar settings this display's config declares, by slot name
|
|
281
|
+
* (`PLOT_VOCABULARY`): what "Edit plot..." edits. Empty on a display
|
|
282
|
+
* with none, which then offers no editor.
|
|
283
|
+
*/
|
|
284
|
+
get plotKeys() {
|
|
285
|
+
return plotKeysOf(self.configuration);
|
|
286
|
+
},
|
|
287
|
+
/**
|
|
288
|
+
* #getter
|
|
289
|
+
* Those settings as declared, defaults left off and a shorthand written
|
|
290
|
+
* as a config file writes it. An agent edits a `structuredClone` of it,
|
|
291
|
+
* checks it with `plotProblems` and hands it to `applyPlot`.
|
|
292
|
+
*/
|
|
293
|
+
get plot() {
|
|
294
|
+
return plotOf(self.configuration);
|
|
295
|
+
},
|
|
296
|
+
/**
|
|
297
|
+
* #getter
|
|
298
|
+
* The worked examples this display type declares, which "Edit plot..."
|
|
299
|
+
* offers as buttons.
|
|
300
|
+
*/
|
|
301
|
+
get plotExamples() {
|
|
302
|
+
const { pluginManager } = getEnv(self);
|
|
303
|
+
return pluginManager.getDisplayType(self.type).plotExamples;
|
|
304
|
+
},
|
|
305
|
+
/**
|
|
306
|
+
* #getter
|
|
307
|
+
* This display type's page in the config reference, which lists every
|
|
308
|
+
* setting it takes.
|
|
309
|
+
*/
|
|
310
|
+
get configDocsUrl() {
|
|
311
|
+
const name = getConfigurationSchemaMetadata(self.configuration)?.name;
|
|
312
|
+
return name
|
|
313
|
+
? `https://jbrowse.org/jb2/docs/config/${name.toLowerCase()}/`
|
|
314
|
+
: 'https://jbrowse.org/jb2/docs/config_guide/';
|
|
315
|
+
},
|
|
316
|
+
/**
|
|
317
|
+
* #method
|
|
318
|
+
* A draft as the config would hold it, merged over `plot`, throwing what
|
|
319
|
+
* a config file would be refused for. Nothing on the display changes.
|
|
320
|
+
*/
|
|
321
|
+
liftPlot(draft) {
|
|
322
|
+
return liftPlotDraft(self.configuration, draft);
|
|
323
|
+
},
|
|
324
|
+
/**
|
|
325
|
+
* #method
|
|
326
|
+
* What a draft would report once applied, throwing a refusal as
|
|
327
|
+
* `liftPlot` does. A display with a rule list over its settings
|
|
328
|
+
* overrides it; the draft still applies, and draws what it can.
|
|
329
|
+
*/
|
|
330
|
+
plotProblems(draft) {
|
|
331
|
+
this.liftPlot(draft);
|
|
332
|
+
return [];
|
|
333
|
+
},
|
|
334
|
+
/**
|
|
335
|
+
* #method
|
|
336
|
+
* What applying a draft would write, by setting: the lifted value where
|
|
337
|
+
* it differs from `plot`, `null` where it resets one. Throws a refusal.
|
|
338
|
+
*/
|
|
339
|
+
plotWrites(draft) {
|
|
340
|
+
return plotWritesOf(self.configuration, draft);
|
|
341
|
+
},
|
|
342
|
+
}))
|
|
343
|
+
.actions(self => ({
|
|
344
|
+
/**
|
|
345
|
+
* #action
|
|
346
|
+
* Write a draft over `plot`: each setting it changes is replaced whole,
|
|
347
|
+
* so a member left out of an object goes back to its default, and `null`
|
|
348
|
+
* resets the setting. A draft the schema refuses, or naming a setting
|
|
349
|
+
* outside the plot, throws before anything is written.
|
|
350
|
+
*/
|
|
351
|
+
applyPlot(draft) {
|
|
352
|
+
const { configuration } = self;
|
|
353
|
+
for (const [key, value] of Object.entries(self.plotWrites(draft))) {
|
|
354
|
+
setConf(configuration, key, value);
|
|
355
|
+
}
|
|
356
|
+
},
|
|
213
357
|
}));
|
|
214
358
|
}
|
|
215
359
|
export const BaseDisplay = stateModelFactory();
|