@jbrowse/core 5.0.0-beta.1 → 5.0.0-beta.10
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 +1476 -265
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.d.ts +3 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.js +5 -3
- 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 +16 -9
- 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 +50 -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/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 +2 -2
- 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 +528 -0
- package/esm/ReExports/coreWorkerModules.generated.d.ts +2 -0
- package/esm/ReExports/coreWorkerModules.generated.js +488 -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 +527 -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 +24 -11
- package/esm/configuration/index.js +15 -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/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 +46 -16
- package/esm/pluggableElementTypes/DisplayType.js +22 -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/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 +1 -1
- package/esm/pluggableElementTypes/models/BaseConnectionModelFactory.d.ts +19 -9
- package/esm/pluggableElementTypes/models/BaseDisplayModel.d.ts +65 -27
- package/esm/pluggableElementTypes/models/BaseDisplayModel.js +72 -10
- package/esm/pluggableElementTypes/models/BaseTrackModel.d.ts +65 -16
- package/esm/pluggableElementTypes/models/BaseTrackModel.js +179 -117
- package/esm/pluggableElementTypes/models/BaseViewModel.d.ts +85 -16
- package/esm/pluggableElementTypes/models/BaseViewModel.js +53 -10
- 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 -49
- 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/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/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 +1 -1
- package/esm/util/cachedSetup.js +2 -2
- package/esm/util/categoricalField.d.ts +56 -0
- package/esm/util/categoricalField.js +73 -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/{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 +80 -0
- package/esm/util/featureTransforms.js +1579 -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/freezeDeep.d.ts +8 -10
- package/esm/util/freezeDeep.js +8 -10
- package/esm/util/groupKeys.d.ts +77 -0
- package/esm/util/groupKeys.js +155 -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/io/index.js +19 -14
- 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 +20 -27
- package/esm/util/jexlFilters.js +23 -11
- 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/localStorage.js +4 -4
- package/esm/util/markEncoding.d.ts +150 -0
- package/esm/util/markEncoding.js +845 -0
- package/esm/util/markEncodingTypes.d.ts +588 -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/starFusion.d.ts +26 -0
- package/esm/util/starFusion.js +37 -0
- package/esm/util/stepTables.d.ts +82 -0
- package/esm/util/stepTables.js +243 -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 +13 -8
- package/esm/util/tabix.js +17 -12
- 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 +121 -40
- package/esm/util/tracks.js +497 -112
- 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 +51 -0
- package/esm/util/unknownSnapshotKeys.js +82 -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/usePanelVirtualScroll.d.ts +7 -35
- package/esm/util/usePanelVirtualScroll.js +9 -36
- 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/withLaunchInput.d.ts +174 -0
- package/esm/util/withLaunchInput.js +274 -0
- package/package.json +70 -20
- 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
|
@@ -5,6 +5,14 @@ declare const slotTypes: {
|
|
|
5
5
|
model: import("@jbrowse/mobx-state-tree").IArrayType<import("@jbrowse/mobx-state-tree").ISimpleType<string>>;
|
|
6
6
|
fallbackDefault: never[];
|
|
7
7
|
};
|
|
8
|
+
expressionArray: {
|
|
9
|
+
model: import("@jbrowse/mobx-state-tree").IArrayType<import("@jbrowse/mobx-state-tree").ISimpleType<string>>;
|
|
10
|
+
fallbackDefault: never[];
|
|
11
|
+
};
|
|
12
|
+
colorArray: {
|
|
13
|
+
model: import("@jbrowse/mobx-state-tree").IArrayType<import("@jbrowse/mobx-state-tree").ISimpleType<string>>;
|
|
14
|
+
fallbackDefault: never[];
|
|
15
|
+
};
|
|
8
16
|
stringArrayMap: {
|
|
9
17
|
model: import("@jbrowse/mobx-state-tree").IMapType<import("@jbrowse/mobx-state-tree").IArrayType<import("@jbrowse/mobx-state-tree").ISimpleType<string>>>;
|
|
10
18
|
fallbackDefault: {};
|
|
@@ -13,6 +21,10 @@ declare const slotTypes: {
|
|
|
13
21
|
model: import("@jbrowse/mobx-state-tree").IMapType<import("@jbrowse/mobx-state-tree").ISimpleType<number>>;
|
|
14
22
|
fallbackDefault: {};
|
|
15
23
|
};
|
|
24
|
+
stringMap: {
|
|
25
|
+
model: import("@jbrowse/mobx-state-tree").IMapType<import("@jbrowse/mobx-state-tree").ISimpleType<string>>;
|
|
26
|
+
fallbackDefault: {};
|
|
27
|
+
};
|
|
16
28
|
boolean: {
|
|
17
29
|
model: import("@jbrowse/mobx-state-tree").ISimpleType<boolean>;
|
|
18
30
|
fallbackDefault: boolean;
|
|
@@ -41,6 +53,9 @@ declare const slotTypes: {
|
|
|
41
53
|
maybeFrozen: {
|
|
42
54
|
model: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").IType<any, any, any>>;
|
|
43
55
|
};
|
|
56
|
+
maybeString: {
|
|
57
|
+
model: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").ISimpleType<string>>;
|
|
58
|
+
};
|
|
44
59
|
string: {
|
|
45
60
|
model: import("@jbrowse/mobx-state-tree").ISimpleType<string>;
|
|
46
61
|
fallbackDefault: string;
|
|
@@ -49,6 +64,10 @@ declare const slotTypes: {
|
|
|
49
64
|
model: import("@jbrowse/mobx-state-tree").ISimpleType<string>;
|
|
50
65
|
fallbackDefault: string;
|
|
51
66
|
};
|
|
67
|
+
featureField: {
|
|
68
|
+
model: import("@jbrowse/mobx-state-tree").ISimpleType<string>;
|
|
69
|
+
fallbackDefault: string;
|
|
70
|
+
};
|
|
52
71
|
fileLocation: {
|
|
53
72
|
model: import("@jbrowse/mobx-state-tree").ISnapshotProcessor<import("@jbrowse/mobx-state-tree").ITypeUnion<import("@jbrowse/mobx-state-tree").ModelCreationType<{
|
|
54
73
|
locationType: "LocalPathLocation";
|
|
@@ -135,6 +154,108 @@ declare const slotTypes: {
|
|
|
135
154
|
locationType: string;
|
|
136
155
|
};
|
|
137
156
|
};
|
|
157
|
+
maybeFileLocation: {
|
|
158
|
+
model: import("@jbrowse/mobx-state-tree").ISnapshotProcessor<import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").ISnapshotProcessor<import("@jbrowse/mobx-state-tree").ITypeUnion<import("@jbrowse/mobx-state-tree").ModelCreationType<{
|
|
159
|
+
locationType: "LocalPathLocation";
|
|
160
|
+
localPath: string;
|
|
161
|
+
}> | import("@jbrowse/mobx-state-tree").ModelCreationType<{
|
|
162
|
+
locationType: "BlobLocation";
|
|
163
|
+
name: string;
|
|
164
|
+
blobId: string;
|
|
165
|
+
}> | import("@jbrowse/mobx-state-tree").ModelCreationType<{
|
|
166
|
+
locationType: "FileHandleLocation";
|
|
167
|
+
name: string;
|
|
168
|
+
handleId: string;
|
|
169
|
+
}> | import("@jbrowse/mobx-state-tree").ModelCreationType<{
|
|
170
|
+
locationType: "UriLocation";
|
|
171
|
+
uri: string;
|
|
172
|
+
baseUri: string | undefined;
|
|
173
|
+
internetAccountId: string | undefined;
|
|
174
|
+
internetAccountPreAuthorization: import("@jbrowse/mobx-state-tree").ModelCreationType<{
|
|
175
|
+
internetAccountType: string;
|
|
176
|
+
authInfo: any;
|
|
177
|
+
}> | undefined;
|
|
178
|
+
}>, import("@jbrowse/mobx-state-tree").ModelSnapshotType<{
|
|
179
|
+
locationType: import("@jbrowse/mobx-state-tree").ILiteralType<"LocalPathLocation">;
|
|
180
|
+
localPath: import("@jbrowse/mobx-state-tree").ISimpleType<string>;
|
|
181
|
+
}> | import("@jbrowse/mobx-state-tree").ModelSnapshotType<{
|
|
182
|
+
locationType: import("@jbrowse/mobx-state-tree").ILiteralType<"BlobLocation">;
|
|
183
|
+
name: import("@jbrowse/mobx-state-tree").ISimpleType<string>;
|
|
184
|
+
blobId: import("@jbrowse/mobx-state-tree").ISimpleType<string>;
|
|
185
|
+
}> | import("@jbrowse/mobx-state-tree").ModelSnapshotType<{
|
|
186
|
+
locationType: import("@jbrowse/mobx-state-tree").ILiteralType<"FileHandleLocation">;
|
|
187
|
+
name: import("@jbrowse/mobx-state-tree").ISimpleType<string>;
|
|
188
|
+
handleId: import("@jbrowse/mobx-state-tree").ISimpleType<string>;
|
|
189
|
+
}> | {
|
|
190
|
+
locationType: "UriLocation";
|
|
191
|
+
uri: string;
|
|
192
|
+
internetAccountId: string | undefined;
|
|
193
|
+
internetAccountPreAuthorization: import("@jbrowse/mobx-state-tree").ModelSnapshotType<{
|
|
194
|
+
internetAccountType: import("@jbrowse/mobx-state-tree").ISimpleType<string>;
|
|
195
|
+
authInfo: import("@jbrowse/mobx-state-tree").IType<any, any, any>;
|
|
196
|
+
}> | undefined;
|
|
197
|
+
}, import("@jbrowse/mobx-state-tree").ModelInstanceTypeProps<{
|
|
198
|
+
locationType: import("@jbrowse/mobx-state-tree").ILiteralType<"LocalPathLocation">;
|
|
199
|
+
localPath: import("@jbrowse/mobx-state-tree").ISimpleType<string>;
|
|
200
|
+
}> | import("@jbrowse/mobx-state-tree").ModelInstanceTypeProps<{
|
|
201
|
+
locationType: import("@jbrowse/mobx-state-tree").ILiteralType<"BlobLocation">;
|
|
202
|
+
name: import("@jbrowse/mobx-state-tree").ISimpleType<string>;
|
|
203
|
+
blobId: import("@jbrowse/mobx-state-tree").ISimpleType<string>;
|
|
204
|
+
}> | import("@jbrowse/mobx-state-tree").ModelInstanceTypeProps<{
|
|
205
|
+
locationType: import("@jbrowse/mobx-state-tree").ILiteralType<"FileHandleLocation">;
|
|
206
|
+
name: import("@jbrowse/mobx-state-tree").ISimpleType<string>;
|
|
207
|
+
handleId: import("@jbrowse/mobx-state-tree").ISimpleType<string>;
|
|
208
|
+
}> | import("@jbrowse/mobx-state-tree").ModelInstanceTypeProps<{
|
|
209
|
+
locationType: import("@jbrowse/mobx-state-tree").ILiteralType<"UriLocation">;
|
|
210
|
+
uri: import("@jbrowse/mobx-state-tree").ISimpleType<string>;
|
|
211
|
+
baseUri: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").ISimpleType<string>>;
|
|
212
|
+
internetAccountId: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").ISimpleType<string>>;
|
|
213
|
+
internetAccountPreAuthorization: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").IModelType<{
|
|
214
|
+
internetAccountType: import("@jbrowse/mobx-state-tree").ISimpleType<string>;
|
|
215
|
+
authInfo: import("@jbrowse/mobx-state-tree").IType<any, any, any>;
|
|
216
|
+
}, {}, import("@jbrowse/mobx-state-tree")._NotCustomized, import("@jbrowse/mobx-state-tree")._NotCustomized>>;
|
|
217
|
+
}>>, import("../util/types/mst.ts").LegacyFileLocation | import("@jbrowse/mobx-state-tree").ModelCreationType<{
|
|
218
|
+
locationType: "LocalPathLocation";
|
|
219
|
+
localPath: string;
|
|
220
|
+
}> | import("@jbrowse/mobx-state-tree").ModelCreationType<{
|
|
221
|
+
locationType: "BlobLocation";
|
|
222
|
+
name: string;
|
|
223
|
+
blobId: string;
|
|
224
|
+
}> | import("@jbrowse/mobx-state-tree").ModelCreationType<{
|
|
225
|
+
locationType: "FileHandleLocation";
|
|
226
|
+
name: string;
|
|
227
|
+
handleId: string;
|
|
228
|
+
}> | import("@jbrowse/mobx-state-tree").ModelCreationType<{
|
|
229
|
+
locationType: "UriLocation";
|
|
230
|
+
uri: string;
|
|
231
|
+
baseUri: string | undefined;
|
|
232
|
+
internetAccountId: string | undefined;
|
|
233
|
+
internetAccountPreAuthorization: import("@jbrowse/mobx-state-tree").ModelCreationType<{
|
|
234
|
+
internetAccountType: string;
|
|
235
|
+
authInfo: any;
|
|
236
|
+
}> | undefined;
|
|
237
|
+
}>, import("@jbrowse/mobx-state-tree")._NotCustomized>>, import("../util/types/mst.ts").LegacyFileLocation | import("@jbrowse/mobx-state-tree").ModelCreationType<{
|
|
238
|
+
locationType: "LocalPathLocation";
|
|
239
|
+
localPath: string;
|
|
240
|
+
}> | import("@jbrowse/mobx-state-tree").ModelCreationType<{
|
|
241
|
+
locationType: "BlobLocation";
|
|
242
|
+
name: string;
|
|
243
|
+
blobId: string;
|
|
244
|
+
}> | import("@jbrowse/mobx-state-tree").ModelCreationType<{
|
|
245
|
+
locationType: "FileHandleLocation";
|
|
246
|
+
name: string;
|
|
247
|
+
handleId: string;
|
|
248
|
+
}> | import("@jbrowse/mobx-state-tree").ModelCreationType<{
|
|
249
|
+
locationType: "UriLocation";
|
|
250
|
+
uri: string;
|
|
251
|
+
baseUri: string | undefined;
|
|
252
|
+
internetAccountId: string | undefined;
|
|
253
|
+
internetAccountPreAuthorization: import("@jbrowse/mobx-state-tree").ModelCreationType<{
|
|
254
|
+
internetAccountType: string;
|
|
255
|
+
authInfo: any;
|
|
256
|
+
}> | undefined;
|
|
257
|
+
}> | undefined, import("@jbrowse/mobx-state-tree")._NotCustomized>;
|
|
258
|
+
};
|
|
138
259
|
frozen: {
|
|
139
260
|
model: import("@jbrowse/mobx-state-tree").IType<any, any, any>;
|
|
140
261
|
fallbackDefault: {};
|
|
@@ -146,10 +267,10 @@ declare const slotTypes: {
|
|
|
146
267
|
* `types.ts`, which has to name the same set and is checked against this.
|
|
147
268
|
*/
|
|
148
269
|
export type BuiltinSlotTypeName = keyof typeof slotTypes;
|
|
149
|
-
declare const ENUM_SLOT_TYPES: readonly ['stringEnum', 'maybeStringEnum'];
|
|
270
|
+
declare const ENUM_SLOT_TYPES: readonly ['stringEnum', 'maybeStringEnum', 'stringEnumArray'];
|
|
150
271
|
/**
|
|
151
272
|
* Every legal `type` on a slot definition: the builtin table's own names, plus
|
|
152
|
-
* the
|
|
273
|
+
* the enum types.
|
|
153
274
|
*
|
|
154
275
|
* Closed on purpose. A name outside this set still *works* at runtime as long
|
|
155
276
|
* as a `model` is given — which is exactly the trap: the value round-trips
|
|
@@ -167,65 +288,23 @@ type MaybeBuiltinSlotTypeName = {
|
|
|
167
288
|
[K in keyof typeof slotTypes]: 'fallbackDefault' extends keyof (typeof slotTypes)[K] ? never : K;
|
|
168
289
|
}[keyof typeof slotTypes];
|
|
169
290
|
export type MaybeSlotTypeName = MaybeBuiltinSlotTypeName | 'maybeStringEnum';
|
|
291
|
+
/** Why the slot `name`, of type `type`, refuses `value` on a write. */
|
|
292
|
+
export declare function slotWriteRefusal(name: string, type: string, value: unknown): string;
|
|
170
293
|
interface ConfigSlotDefinitionCommon {
|
|
171
294
|
/** human-readable description of the slot's meaning */
|
|
172
295
|
description?: string;
|
|
173
296
|
/** custom base MST model for the slot's value */
|
|
174
297
|
model?: IAnyType;
|
|
175
|
-
/**
|
|
298
|
+
/**
|
|
299
|
+
* The names a `jexl:` callback in this slot reads. Declaring any is what
|
|
300
|
+
* makes the slot take a callback; every other slot refuses one.
|
|
301
|
+
*/
|
|
176
302
|
contextVariable?: string[];
|
|
177
303
|
/**
|
|
178
304
|
* hide this slot behind a "Show advanced settings" toggle in the config
|
|
179
305
|
* editor, so common slots aren't crowded out by rarely-changed ones
|
|
180
306
|
*/
|
|
181
307
|
advanced?: boolean;
|
|
182
|
-
/**
|
|
183
|
-
* **Declaring this makes the slot promotable**, and it is the only thing that
|
|
184
|
-
* does: a user can promote the slot's value to a session-wide default for all
|
|
185
|
-
* tracks of the same display type (the track-menu pin). An *unset* slot
|
|
186
|
-
* follows (inherits) that promoted default; any concrete value customizes the
|
|
187
|
-
* track. Read it with `resolveConf`, never `getConf`; see
|
|
188
|
-
* `promotableResolve.ts`.
|
|
189
|
-
*
|
|
190
|
-
* The value itself is what the unset state resolves to when a track inherits
|
|
191
|
-
* and nothing is promoted. This is the CSS model — being unset is the
|
|
192
|
-
* `inherit` keyword and `promotedBase` is `initial` (the value at the bottom
|
|
193
|
-
* of the cascade). Spending only `undefined` on the sentinel is what leaves
|
|
194
|
-
* every *real* value — `promotedBase` included — customizable over an opposite
|
|
195
|
-
* session default, so a track can hold `displayMode: 'normal'` under a
|
|
196
|
-
* promoted `'compact'`.
|
|
197
|
-
*
|
|
198
|
-
* Requires a `maybe*` slot type (whose `undefined` is the inherit sentinel)
|
|
199
|
-
* and no `defaultValue`; `ConfigSlot` throws otherwise, and both stay runtime
|
|
200
|
-
* checks. Forbidding it on the plain half of `ConfigSlotDefinition` was tried:
|
|
201
|
-
* it forces a cast into `mergeSchemaDefinition`, whose spread of two slot
|
|
202
|
-
* definitions lands in neither member, and buys only an earlier version of a
|
|
203
|
-
* throw that already fires when the schema is built.
|
|
204
|
-
*
|
|
205
|
-
* A subclass turns an inherited promotable slot back into a plain one by
|
|
206
|
-
* stating `promotedBase: undefined` — the definition merge is a spread, so a
|
|
207
|
-
* stated `undefined` really does overwrite the base's value.
|
|
208
|
-
*/
|
|
209
|
-
promotedBase?: unknown;
|
|
210
|
-
/**
|
|
211
|
-
* For a promotable slot: an extra semantic check a stored value must pass,
|
|
212
|
-
* on top of the built-in type-shape check, before the cascade
|
|
213
|
-
* (`promotableResolve.ts`'s `isUsableValue`) treats it as usable. Applies to
|
|
214
|
-
* both cascade tiers — a session-wide promoted default and a track's own saved
|
|
215
|
-
* value. Needed when a slot's shape alone can't catch a semantically-invalid
|
|
216
|
-
* value — e.g. alignments `colorBy`'s `.type` must name a currently-registered
|
|
217
|
-
* color scheme, not just be *some* string — so a stale scheme name (renamed or
|
|
218
|
-
* removed since the value was saved) degrades to "not usable" (falls back to
|
|
219
|
-
* the base) instead of reaching a lookup that assumes every `.type` is
|
|
220
|
-
* registered. Omit when the type-shape check alone is enough to trust the value.
|
|
221
|
-
*
|
|
222
|
-
* Runs at **schema build** too, over the slot's own `promotedBase` — the base
|
|
223
|
-
* is what every failing tier degrades to, so it has to clear the same bar.
|
|
224
|
-
* Keep the hook a function of module-level data (as `isRegisteredColorScheme`
|
|
225
|
-
* is of `COLOR_SCHEMES`); one that consults state its plugin registers later
|
|
226
|
-
* during `install()` would reject a base that is really fine.
|
|
227
|
-
*/
|
|
228
|
-
validate?: (value: unknown) => boolean;
|
|
229
308
|
}
|
|
230
309
|
/**
|
|
231
310
|
* A slot definition, split on whether the slot's type spends `undefined` on
|
|
@@ -244,7 +323,9 @@ interface ConfigSlotDefinitionCommon {
|
|
|
244
323
|
* this mistake actually happens.
|
|
245
324
|
*
|
|
246
325
|
* Stating the sentinel stays meaningful in a subclass override, where the merge
|
|
247
|
-
* is a spread and an omitted key inherits the base's value.
|
|
326
|
+
* is a spread and an omitted key inherits the base's value. The same spread is
|
|
327
|
+
* why an enum slot's `model` stays optional here though `ConfigSlot` requires
|
|
328
|
+
* one: a subclass restating only the default inherits the vocabulary.
|
|
248
329
|
*/
|
|
249
330
|
export type ConfigSlotDefinition = (ConfigSlotDefinitionCommon & {
|
|
250
331
|
/** a `maybe*` slot type, whose unset state is `undefined` */
|
|
@@ -258,16 +339,25 @@ export type ConfigSlotDefinition = (ConfigSlotDefinitionCommon & {
|
|
|
258
339
|
defaultValue: unknown;
|
|
259
340
|
});
|
|
260
341
|
/**
|
|
261
|
-
* A configuration slot is a plain
|
|
262
|
-
*
|
|
263
|
-
*
|
|
264
|
-
*
|
|
265
|
-
*
|
|
266
|
-
*
|
|
267
|
-
*
|
|
268
|
-
*
|
|
342
|
+
* A configuration slot is a plain MST property holding the slot's value type,
|
|
343
|
+
* or, where the slot declares a `contextVariable`, that or a `jexl:...`
|
|
344
|
+
* callback string. Every other slot refuses a `jexl:` string, so a callback
|
|
345
|
+
* the reader would evaluate is one the schema says it takes. A `featureField`
|
|
346
|
+
* holds a `jexl:` expression as its value, which the display evaluates per
|
|
347
|
+
* feature. The value lives directly on the parent configuration model — there
|
|
348
|
+
* is no per-slot sub-model. `types.stripDefault` omits the property from the
|
|
349
|
+
* parent snapshot when it equals the default, so saved sessions stay minimal.
|
|
350
|
+
* Per-slot metadata (type/description/defaultValue/contextVariable) lives in
|
|
351
|
+
* the schema registry (a WeakMap keyed by the MST type, see
|
|
352
|
+
* schemaRegistry.ts); jexl callbacks are evaluated on read by
|
|
353
|
+
* `readConfObject`.
|
|
354
|
+
*
|
|
355
|
+
* Interning the returned type on `(type, model, defaultValue)` was prototyped
|
|
356
|
+
* and declined: a session builds 1197 slot types for 222 distinct ones, and
|
|
357
|
+
* removing the repeats moves neither the time nor the heap
|
|
358
|
+
* (`config-schema-construction`, published in `reference/EAGER_BUNDLE.md`).
|
|
269
359
|
*/
|
|
270
|
-
export default function ConfigSlot(definition: ConfigSlotDefinition): import("@jbrowse/mobx-state-tree").IOptionalIType<
|
|
360
|
+
export default function ConfigSlot(definition: ConfigSlotDefinition): import("@jbrowse/mobx-state-tree").IOptionalIType<IAnyType, [undefined]>;
|
|
271
361
|
/**
|
|
272
362
|
* New value when converting a fixed-value slot to a jexl callback. Already-
|
|
273
363
|
* callback values are returned unchanged.
|
|
@@ -1,9 +1,21 @@
|
|
|
1
1
|
import { types } from '@jbrowse/mobx-state-tree';
|
|
2
|
-
import {
|
|
2
|
+
import { isCssColor } from '../util/cssColorParse.js';
|
|
3
3
|
import { isJexl, stringToJexlExpression } from '../util/jexlStrings.js';
|
|
4
|
-
import { FileLocation } from '../util/types/mst.js';
|
|
5
|
-
import { isUsableValue } from './slotShape.js';
|
|
4
|
+
import { FileLocation, JexlExpressionString } from '../util/types/mst.js';
|
|
6
5
|
import { isCallbackValue } from './slotValueUtils.js';
|
|
6
|
+
// What a color slot admits is what the painters parse (`isCssColor`), plus the
|
|
7
|
+
// empty string a slot such as `outlineColor` spells "none" with; a field name
|
|
8
|
+
// written where a color goes used to load and paint the invalid sentinel.
|
|
9
|
+
function notAColor(value) {
|
|
10
|
+
return `${JSON.stringify(value)} is not a color. A color is a CSS color: a name like "red" or "steelblue", "#rgb" / "#rrggbb" / "#rrggbbaa", "rgb()" / "rgba()" / "hsl()" / "hsla()", or "transparent"; a color computed per feature is a "jexl:" callback, in a slot that takes one`;
|
|
11
|
+
}
|
|
12
|
+
const CssColorType = types.refinement('CssColor', types.string, value => value === '' || isCssColor(value), notAColor);
|
|
13
|
+
// An entry of a colour list has no "none" to spell, so '' is refused with the
|
|
14
|
+
// rest of what is not a colour.
|
|
15
|
+
const CssColorEntryType = types.refinement('CssColorEntry', types.string, isCssColor, notAColor);
|
|
16
|
+
const MaybeFileLocation = types.snapshotProcessor(types.maybe(FileLocation), {
|
|
17
|
+
preProcessor: (snap) => snap && 'uri' in snap && snap.uri === '' ? undefined : snap,
|
|
18
|
+
});
|
|
7
19
|
// Single source of truth for the builtin slot type names, pairing each with its
|
|
8
20
|
// MST value type and its editor fallback default. Keeping model + fallback in
|
|
9
21
|
// one table means adding a slot type is one edit and can't half-register.
|
|
@@ -15,31 +27,39 @@ import { isCallbackValue } from './slotValueUtils.js';
|
|
|
15
27
|
// of.
|
|
16
28
|
const slotTypes = {
|
|
17
29
|
stringArray: { model: types.array(types.string), fallbackDefault: [] },
|
|
30
|
+
expressionArray: {
|
|
31
|
+
model: types.array(JexlExpressionString),
|
|
32
|
+
fallbackDefault: [],
|
|
33
|
+
},
|
|
34
|
+
colorArray: { model: types.array(CssColorEntryType), fallbackDefault: [] },
|
|
18
35
|
stringArrayMap: {
|
|
19
36
|
model: types.map(types.array(types.string)),
|
|
20
37
|
fallbackDefault: {},
|
|
21
38
|
},
|
|
22
39
|
numberMap: { model: types.map(types.number), fallbackDefault: {} },
|
|
40
|
+
stringMap: { model: types.map(types.string), fallbackDefault: {} },
|
|
23
41
|
boolean: { model: types.boolean, fallbackDefault: true },
|
|
24
|
-
|
|
25
|
-
// `type` metadata, and values are accepted unvalidated (CSS names, hex, jexl)
|
|
26
|
-
color: { model: types.string, fallbackDefault: 'black' },
|
|
42
|
+
color: { model: CssColorType, fallbackDefault: 'black' },
|
|
27
43
|
integer: { model: types.integer, fallbackDefault: 1 },
|
|
28
44
|
number: { model: types.number, fallbackDefault: 1 },
|
|
29
45
|
// The `maybe*` types spend `undefined` on "not explicitly set", which is the
|
|
30
46
|
// one value no config can spell and so the only reliable way to say it — a
|
|
31
|
-
// computed/auto fallback
|
|
32
|
-
// sentinel every promotable slot needs (pair with `promotedBase`, and read
|
|
33
|
-
// with `resolveConf`).
|
|
47
|
+
// computed/auto fallback, e.g. a drag-resized track height.
|
|
34
48
|
maybeNumber: { model: types.maybe(types.number) },
|
|
35
49
|
maybeBoolean: { model: types.maybe(types.boolean) },
|
|
36
50
|
// for a slot whose unset state means "decide from the data" — a feature's own
|
|
37
51
|
// BED itemRgb, say
|
|
38
|
-
maybeColor: { model: types.maybe(
|
|
39
|
-
// object-valued, e.g. alignments `
|
|
52
|
+
maybeColor: { model: types.maybe(CssColorType) },
|
|
53
|
+
// object-valued, e.g. alignments `sortedBy`
|
|
40
54
|
maybeFrozen: { model: types.maybe(types.frozen()) },
|
|
55
|
+
// for text whose unset state is a third thing beside some text and none: an
|
|
56
|
+
// axis title is derived while unset, and drawn bare once it is ''
|
|
57
|
+
maybeString: { model: types.maybe(types.string) },
|
|
41
58
|
string: { model: types.string, fallbackDefault: '' },
|
|
42
59
|
text: { model: types.string, fallbackDefault: '' },
|
|
60
|
+
// a field the display reads per feature: a name, a dotted path, or a
|
|
61
|
+
// `jexl:` expression, which the display evaluates and the reader never does
|
|
62
|
+
featureField: { model: types.string, fallbackDefault: '' },
|
|
43
63
|
fileLocation: {
|
|
44
64
|
model: FileLocation,
|
|
45
65
|
fallbackDefault: {
|
|
@@ -47,12 +67,22 @@ const slotTypes = {
|
|
|
47
67
|
locationType: 'UriLocation',
|
|
48
68
|
},
|
|
49
69
|
},
|
|
70
|
+
// for a sidecar the adapter works without: unset means no file is
|
|
71
|
+
// configured, and so does the `{ uri: '' }` a cleared URL field in the
|
|
72
|
+
// config editor writes
|
|
73
|
+
maybeFileLocation: { model: MaybeFileLocation },
|
|
50
74
|
frozen: { model: types.frozen(), fallbackDefault: {} },
|
|
51
75
|
};
|
|
52
|
-
// The
|
|
53
|
-
// `types.enumeration` as `model
|
|
54
|
-
//
|
|
55
|
-
|
|
76
|
+
// The types with no builtin table entry, because the author supplies the
|
|
77
|
+
// `types.enumeration` as `model` and `ConfigSlot` wraps it: in `types.maybe`
|
|
78
|
+
// for `maybeStringEnum`, in `types.array` for `stringEnumArray`. Named once,
|
|
79
|
+
// and spliced into both the type union and the runtime set below so those two
|
|
80
|
+
// cannot drift apart.
|
|
81
|
+
const ENUM_SLOT_TYPES = [
|
|
82
|
+
'stringEnum',
|
|
83
|
+
'maybeStringEnum',
|
|
84
|
+
'stringEnumArray',
|
|
85
|
+
];
|
|
56
86
|
/**
|
|
57
87
|
* The same closed set, at runtime, because the type alone does not close it for
|
|
58
88
|
* the callers that matter most: `ConfigSlot` is plugin-facing, and a JS plugin
|
|
@@ -86,18 +116,45 @@ const MAYBE_TYPES = new Set([
|
|
|
86
116
|
'maybeStringEnum',
|
|
87
117
|
]);
|
|
88
118
|
const JexlStringType = types.refinement('JexlString', types.string, isJexl);
|
|
119
|
+
const CALLBACK_SLOTS = 'a slot that takes a callback declares the names it reads, which its config docs list as callback args';
|
|
120
|
+
function notACallbackSlot(value) {
|
|
121
|
+
return `${JSON.stringify(value)} is a jexl: callback, and this slot takes a value: ${CALLBACK_SLOTS}`;
|
|
122
|
+
}
|
|
123
|
+
/** Why the slot `name`, of type `type`, refuses `value` on a write. */
|
|
124
|
+
export function slotWriteRefusal(name, type, value) {
|
|
125
|
+
const bare = type === 'expressionArray' && Array.isArray(value)
|
|
126
|
+
? value.find(entry => !isJexl(entry))
|
|
127
|
+
: undefined;
|
|
128
|
+
return isJexl(value)
|
|
129
|
+
? `${name} takes no jexl: callback, and ${JSON.stringify(value)} is one: ${CALLBACK_SLOTS}`
|
|
130
|
+
: bare !== undefined
|
|
131
|
+
? `${name} takes jexl: expressions, and ${JSON.stringify(bare)} is not an expression: write it with its prefix, as "jexl:${String(bare)}"`
|
|
132
|
+
: `${name} is a ${type} slot and cannot take ${JSON.stringify(value)}`;
|
|
133
|
+
}
|
|
134
|
+
function refusingCallbacks(model) {
|
|
135
|
+
return types.refinement(model, value => !isJexl(value), notACallbackSlot);
|
|
136
|
+
}
|
|
89
137
|
/**
|
|
90
|
-
* A configuration slot is a plain
|
|
91
|
-
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
*
|
|
96
|
-
*
|
|
97
|
-
*
|
|
138
|
+
* A configuration slot is a plain MST property holding the slot's value type,
|
|
139
|
+
* or, where the slot declares a `contextVariable`, that or a `jexl:...`
|
|
140
|
+
* callback string. Every other slot refuses a `jexl:` string, so a callback
|
|
141
|
+
* the reader would evaluate is one the schema says it takes. A `featureField`
|
|
142
|
+
* holds a `jexl:` expression as its value, which the display evaluates per
|
|
143
|
+
* feature. The value lives directly on the parent configuration model — there
|
|
144
|
+
* is no per-slot sub-model. `types.stripDefault` omits the property from the
|
|
145
|
+
* parent snapshot when it equals the default, so saved sessions stay minimal.
|
|
146
|
+
* Per-slot metadata (type/description/defaultValue/contextVariable) lives in
|
|
147
|
+
* the schema registry (a WeakMap keyed by the MST type, see
|
|
148
|
+
* schemaRegistry.ts); jexl callbacks are evaluated on read by
|
|
149
|
+
* `readConfObject`.
|
|
150
|
+
*
|
|
151
|
+
* Interning the returned type on `(type, model, defaultValue)` was prototyped
|
|
152
|
+
* and declined: a session builds 1197 slot types for 222 distinct ones, and
|
|
153
|
+
* removing the repeats moves neither the time nor the heap
|
|
154
|
+
* (`config-schema-construction`, published in `reference/EAGER_BUNDLE.md`).
|
|
98
155
|
*/
|
|
99
156
|
export default function ConfigSlot(definition) {
|
|
100
|
-
const { model, type, defaultValue
|
|
157
|
+
const { model, type, defaultValue } = definition;
|
|
101
158
|
if (!CONFIG_SLOT_TYPE_NAMES.has(type)) {
|
|
102
159
|
throw new Error(`config slot needs a known type name, got ${JSON.stringify(type)}`);
|
|
103
160
|
}
|
|
@@ -111,49 +168,6 @@ export default function ConfigSlot(definition) {
|
|
|
111
168
|
if (defaultValue === undefined && !MAYBE_TYPES.has(type)) {
|
|
112
169
|
throw new Error("no 'defaultValue' provided");
|
|
113
170
|
}
|
|
114
|
-
// `promotedBase` is what makes a slot promotable, so its presence is the whole
|
|
115
|
-
// condition here (ADR-047).
|
|
116
|
-
//
|
|
117
|
-
// A promotable slot spends being-unset on the inherit sentinel, so it must be a
|
|
118
|
-
// `maybe*` type. Any *concrete* default would double as the inherit signal,
|
|
119
|
-
// making that one value un-customizable under an opposite promoted default — an
|
|
120
|
-
// authoring mistake with no runtime symptom other than a setting that won't
|
|
121
|
-
// stay put, so fail at construction.
|
|
122
|
-
if (promotedBase !== undefined) {
|
|
123
|
-
if (!MAYBE_TYPES.has(type)) {
|
|
124
|
-
throw new Error(`a 'promotedBase' slot needs a maybe* type whose undefined is the inherit sentinel, not "${type}"`);
|
|
125
|
-
}
|
|
126
|
-
if (defaultValue !== undefined) {
|
|
127
|
-
throw new Error("a promotable slot must leave 'defaultValue' undefined — that IS the inherit sentinel; 'promotedBase' is what an unset slot resolves to");
|
|
128
|
-
}
|
|
129
|
-
// The base is the bottom of the cascade: every other tier that fails
|
|
130
|
-
// `isUsableValue` falls back to it, so a base that would itself fail has
|
|
131
|
-
// nowhere left to fall and every read of the slot returns a value no
|
|
132
|
-
// consumer handles — with nothing thrown anywhere. The typo this catches is
|
|
133
|
-
// a `promotedBase` outside the slot's own vocabulary (an enum member not in
|
|
134
|
-
// `model`, a non-finite number), which nothing else in the system checks.
|
|
135
|
-
if (!isUsableValue(definition, promotedBase)) {
|
|
136
|
-
throw new Error(`a 'promotedBase' must be a value the slot can hold: ${JSON.stringify(promotedBase)} is not a valid "${type}"`);
|
|
137
|
-
}
|
|
138
|
-
// A promotable slot cannot hold a callback: `isUsableValue` refuses a
|
|
139
|
-
// `jexl:` value at both cascade tiers, so one written into the slot is
|
|
140
|
-
// discarded straight back to the base. `contextVariable` is the only thing
|
|
141
|
-
// that offers writing one — it is what raises the config editor's jexl
|
|
142
|
-
// toggle (`SlotEditor`) — so the pair is a control whose every write the
|
|
143
|
-
// cascade throws away, with nothing thrown anywhere. Nothing else in the
|
|
144
|
-
// system states this; DISPLAY_TYPE_DEFAULTS.md §"No callbacks" only
|
|
145
|
-
// describes the read side.
|
|
146
|
-
if (definition.contextVariable?.length) {
|
|
147
|
-
throw new Error("a promotable slot ('promotedBase') cannot declare 'contextVariable': the cascade refuses a jexl: callback, so the config editor would offer a toggle whose writes silently degrade back to the base");
|
|
148
|
-
}
|
|
149
|
-
// The resolver hands `promotedBase` out by reference, so an object-valued one
|
|
150
|
-
// (`maybeFrozen`, e.g. alignments `colorBy`) is one literal shared live by
|
|
151
|
-
// every track sitting at base. Freeze it here, the only place it enters the
|
|
152
|
-
// system, so mutating a resolved value throws instead of silently rewriting
|
|
153
|
-
// the default for every other track — and for every later session, since this
|
|
154
|
-
// object belongs to the schema. See `freezeDeep` for why by-reference stays.
|
|
155
|
-
freezeDeep(promotedBase);
|
|
156
|
-
}
|
|
157
171
|
// The inverse of the `defaultValue === undefined` check above, and the half
|
|
158
172
|
// that had no guard. A `maybe*` slot whose default is concrete can never *be*
|
|
159
173
|
// unset — no config can spell `undefined` — so the unset state such a slot
|
|
@@ -161,8 +175,6 @@ export default function ConfigSlot(definition) {
|
|
|
161
175
|
// and the branch reading it never runs. There is no symptom: the slot reads as
|
|
162
176
|
// a perfectly good value everywhere.
|
|
163
177
|
//
|
|
164
|
-
// Last, so a promotable slot still gets the more specific message above.
|
|
165
|
-
//
|
|
166
178
|
// The way this happens is **inheritance**, which is why the type can't catch
|
|
167
179
|
// it: a `maybe*` override of a plain base slot inherits the base's concrete
|
|
168
180
|
// default through the definition spread, and the override's own literal looks
|
|
@@ -171,12 +183,28 @@ export default function ConfigSlot(definition) {
|
|
|
171
183
|
if (defaultValue !== undefined && MAYBE_TYPES.has(type)) {
|
|
172
184
|
throw new Error(`a "${type}" slot cannot have a concrete defaultValue (${JSON.stringify(defaultValue)}): unset is the state a maybe* slot exists for, and no config can spell undefined, so it would be unreachable. If this slot overrides a base slot, the base's defaultValue merged in — state 'defaultValue: undefined' to overwrite it. Otherwise use the non-maybe form of the type.`);
|
|
173
185
|
}
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
186
|
+
const callback = !!definition.contextVariable?.length;
|
|
187
|
+
if (type === 'featureField' && callback) {
|
|
188
|
+
throw new Error('a "featureField" slot names a field the display reads per feature, and its jexl: expression is evaluated there, never called with a contextVariable. If this slot overrides a base callback slot, state \'contextVariable: undefined\'.');
|
|
189
|
+
}
|
|
190
|
+
if (!callback && isJexl(defaultValue)) {
|
|
191
|
+
throw new Error(`the defaultValue ${JSON.stringify(defaultValue)} is a jexl: callback, so the slot declares the contextVariable names it reads`);
|
|
192
|
+
}
|
|
193
|
+
const value = enumShaped(type, valueModel);
|
|
194
|
+
return types.stripDefault(callback
|
|
195
|
+
? types.union(JexlStringType, value)
|
|
196
|
+
: type === 'featureField'
|
|
197
|
+
? value
|
|
198
|
+
: refusingCallbacks(value), defaultValue);
|
|
199
|
+
}
|
|
200
|
+
// The author writes an enum slot's plain vocabulary, and the slot's shape
|
|
201
|
+
// around it is added here.
|
|
202
|
+
function enumShaped(type, model) {
|
|
203
|
+
return type === 'maybeStringEnum'
|
|
204
|
+
? types.maybe(model)
|
|
205
|
+
: type === 'stringEnumArray'
|
|
206
|
+
? types.array(model)
|
|
207
|
+
: model;
|
|
180
208
|
}
|
|
181
209
|
/**
|
|
182
210
|
* New value when converting a fixed-value slot to a jexl callback. Already-
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A shorthand snapshot with its location slots filled in: `derived` supplies
|
|
3
|
+
* what the shorthand implies, and any key the config spells out for itself
|
|
4
|
+
* wins.
|
|
5
|
+
*
|
|
6
|
+
* Spread the other way round — derived over the snapshot — a config naming both
|
|
7
|
+
* a `uri` and a location that is not the sibling of it, `{ uri: 'x.fa',
|
|
8
|
+
* faiLocation: { uri: 'custom.fai' } }`, silently lost the index it named to
|
|
9
|
+
* the one the shorthand invents. Every adapter's normalizer had its own copy of
|
|
10
|
+
* the spread, so the precedence had to be got right 30-odd times.
|
|
11
|
+
*/
|
|
12
|
+
export declare function fillLocations(snap: Record<string, unknown>, derived: Record<string, unknown>): {
|
|
13
|
+
[x: string]: unknown;
|
|
14
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A shorthand snapshot with its location slots filled in: `derived` supplies
|
|
3
|
+
* what the shorthand implies, and any key the config spells out for itself
|
|
4
|
+
* wins.
|
|
5
|
+
*
|
|
6
|
+
* Spread the other way round — derived over the snapshot — a config naming both
|
|
7
|
+
* a `uri` and a location that is not the sibling of it, `{ uri: 'x.fa',
|
|
8
|
+
* faiLocation: { uri: 'custom.fai' } }`, silently lost the index it named to
|
|
9
|
+
* the one the shorthand invents. Every adapter's normalizer had its own copy of
|
|
10
|
+
* the spread, so the precedence had to be got right 30-odd times.
|
|
11
|
+
*/
|
|
12
|
+
export function fillLocations(snap, derived) {
|
|
13
|
+
return { ...derived, ...snap };
|
|
14
|
+
}
|
|
@@ -28,28 +28,14 @@
|
|
|
28
28
|
* ```
|
|
29
29
|
*/
|
|
30
30
|
export declare function FormatAboutConfigSchemaFactory(): import("./configurationSchema.ts").ConfigurationSchemaType<{
|
|
31
|
-
/**
|
|
32
|
-
* #slot formatAbout.config
|
|
33
|
-
* callback returning an object of fields to merge over the config shown
|
|
34
|
-
*/
|
|
35
31
|
readonly config: {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
readonly contextVariable: ["config"];
|
|
32
|
+
type: "frozen";
|
|
33
|
+
} & {
|
|
34
|
+
defaultValue: unknown;
|
|
40
35
|
};
|
|
41
|
-
/**
|
|
42
|
-
* #slot formatAbout.hideUris
|
|
43
|
-
* leave file locations out of the About dialog, for a deployment that would
|
|
44
|
-
* rather not show users where the data sits. Hides URIs and local paths
|
|
45
|
-
* alike, drops the "Copy config" button, and suppresses the File info panel
|
|
46
|
-
* — a BAM's `@SQ UR:` and `@PG CL:` lines are locations too. "Show ref
|
|
47
|
-
* names" stays, since it exposes none. The two tiers are OR'd, so a
|
|
48
|
-
* session-wide `true` cannot be turned back on by a track. It hides the
|
|
49
|
-
* locations from the dialog only, not from `config.json`
|
|
50
|
-
*/
|
|
51
36
|
readonly hideUris: {
|
|
52
|
-
|
|
53
|
-
|
|
37
|
+
type: "boolean";
|
|
38
|
+
} & {
|
|
39
|
+
defaultValue: boolean;
|
|
54
40
|
};
|
|
55
|
-
}, import("./configurationSchema.ts").ConfigurationSchemaOptions<undefined, undefined>>;
|
|
41
|
+
}, import("./configurationSchema.ts").ConfigurationSchemaOptions<undefined, undefined, undefined, import("./requirements.ts").ConfigurationSchemaRequirement<Partial<Record<string, string[]>>, string>, any>>;
|