@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
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const BaseFeatureDetail: any;
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { lazy } from 'react';
|
|
2
|
-
import { lazyMap } from './lazify.js';
|
|
3
|
-
export const BaseFeatureDetail = lazyMap({
|
|
4
|
-
Attributes: lazy(() => import('../BaseFeatureWidget/BaseFeatureDetail/Attributes.js')),
|
|
5
|
-
FeatureDetails: lazy(() => import('../BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.js')),
|
|
6
|
-
FeatureWash: lazy(() => import('../BaseFeatureWidget/BaseFeatureDetail/FeatureWash.js')),
|
|
7
|
-
BaseCard: lazy(() => import('../BaseFeatureWidget/BaseFeatureDetail/BaseCard.js')),
|
|
8
|
-
BaseAttributes: lazy(() => import('../BaseFeatureWidget/BaseFeatureDetail/BaseAttributes.js')),
|
|
9
|
-
BaseCoreDetails: lazy(() => import('../BaseFeatureWidget/BaseFeatureDetail/BaseCoreDetails.js')),
|
|
10
|
-
}, '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail/');
|
package/esm/ReExports/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { default } from './modules.ts';
|
package/esm/ReExports/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { default } from './modules.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { AuthNeededError, BEZIER_CONNECTOR_MAX_REACH_PX, ENCODED_PREFIX, IUPAC_MOTIF_REGEX, IntervalTree, JSON_PREFIX, MAX_ZOOM_RATE_PER_MS, SCROLL_ZOOM_FACTOR_DIVISOR, SHARE_PREFIX, SimpleFeature, UNKNOWN, UNSUPPORTED, UnknownRefNameError, ZOOM_ACTIVE_WINDOW_MS, accumulateScroll, adapterConfigFromSpec, addAdapterGuesser, addAddTrackComponent, addAndShowTrack, addOrReplaceView, addTrackFromWidget, addTrackTypeGuesser, aesDecrypt, aesEncrypt, animationAllowed, applyOrderWithin, applyZoomAccum, assembleLocString, assembleLocStringRaw, avg, b64PadSuffix, bezierConnectorPath, bpSpanPx, bpToPx, bytesForRegions, calculateRedispatchRange, canReplaceView, capitalizeFirst, checkStopToken, checkStopTokenThrottled, clamp, clearFileFromCache, cmpStr, coarseStripHTML, codonTable, compareLocStrings, compareLocs, complement, complementTable, createProgressReporter, createScrollLatch, createSharedSetup, createStatusChannel, createStatusFanOut, createStatusWindow, createStopToken, createStopTokenChecker, createStopTokenRotation, dedupe, defaultCodonTable, defaultStarts, diagonalizeRegions, diffTrackConfig, doesIntersect2, downloadStatus, drawImageOntoCanvasContext, encodeSessionParam, ensureFileHandleReady, expandLooseTrackConfig, featureSpanPx, fetchAndMaybeUnzip, fetchAndMaybeUnzipText, fetchJson, fileToLocation, findFileHandleIds, findParentThat, findParentThatIs, flattenTrackConfigDelta, formatRelativeTime, fromUrlSafeB64, gatherOverlaps, generateCodonTable, generateUnknownTrackConf, generateUnsupportedTrackConf, getAssemblyHost, getBlob, getBlobMap, getBpDisplayStr, getConfAssemblyNames, getContainingDisplay, getContainingTrack, getContainingView, getDialogHost, getEnv, getFileFromCache, getFileHandle, getFileName, getFillProps, getFrame, getNotificationSink, getNumberGrouping, getPaletteHost, getPluginUpdate, getRenderingServices, getRpcHost, getRpcSessionId, getSession, getSessionServices, getStr, getStrokeProps, getTickDisplayStr, getTrackAssemblyNames, getTrackName, getZoomNormalizer, groupBy, guessAdapter, guessTrackConf, guessTrackType, hasFileHandlesInCache, hasSharedArrayBuffer, hashCode, hideTrackGeneric, installedVersionFromUrl, intersection2, isAbortException, isAbstractMenuManager, isActivelyZooming, isAppRootModel, isAuthNeededException, isBlobLocation, isDataCurrent, isDisplayModel, isElectron, isFeature, isFileHandleLocation, isFileSystemAccessSupported, isGzip, isLocalPathLocation, isLooseTrackConfig, isNode, isObject, isPalindromic, isPluginInstalled, isRootModelWithInternetAccounts, isRpcResult, isSelectionContainer, isSessionModel, isSessionServices, isSessionModelWithConfigEditing, isSessionModelWithConnectionEditing, isSessionModelWithConnections, isSessionModelWithWidgets, isSessionWithAddAssembly, isSessionWithAddSessionTrack, isSessionWithAddTracks, isSessionWithPublishTrackConf, isSessionWithDeleteTrackConf, isSessionWithSessionPlugins, isSessionWithSessionTracks, isSessionWithShareURL, isSessionWithViewReplacement, isStopToken, isStopped, isSupportedIndexingAdapter, isTrackModel, isTrackViewModel, isUriLocation, isValidTag, isViewContainer, isViewModel, iupacToRegex, linkify, locStringsToRegions, localStorageGetBoolean, localStorageGetItem, localStorageGetJSON, localStorageGetNumber, localStorageRemoveItem, localStorageSetBoolean, localStorageSetItem, localStorageSetJSON, localStorageSetNumber, makeAbortError, makeIndex, makeIndexType, makeTrackId, markStopTokenStopped, matchTrackId, max, maxFinite, measureGridWidth, measureText, mergeIntervals, mergeTrackConfig, min, minmax, normalizeWheelDelta, notEmpty, objectHash, openFeatureWidget, openPromotableDisplays, parseLocString, parseLocStringOneBased, parseMotifList, pluralize, polarToCartesian, progressLabel, rIC, radToDeg, readSessionFromDynamo, reducePrecision, registerStopTokenBroadcaster, renameRegionIfNeeded, renameRegionsIfNeeded, renderToStaticMarkup, reorder, reorderWithin, resolvePlugin, resolveSelectedIds, restoreFileHandles, restoreFileHandlesFromSnapshot, revcom, reverse, reverseComplementIupac, revlist, saveAs, saveSvgAsImage, selectNamedRegions, setBlobMap, setFileInCache, setNumberGrouping, sha256, sha256Base64, sha256Base64Url, shareEndpoint, shorten, shorten2, showTrackGeneric, springAnimate, statusFraction, statusMessageText, statusProgressLabel, statusReading, stitch, stopStopToken, stopTokenSignal, storeBlobLocation, storeFileHandle, storeFileHandleLocation, stringify, stripAlpha, stripFileExtension, stripTrackIds, sum, svgHtmlToPngBlob, tagRegex, testAdapter, toBase64, toBase64Url, toLocale, toUrlSafeB64, toggleTrackGeneric, truncateMiddle, updateStatus, useDebounce, useLocalStorage, useWidthSetter, verifyPermission, wheelFrameElapsedMs, wheelZoomAccum, withProgress, withStopTokenCheck, withStopTokenSignal, } from '../util/index.ts';
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
// The published `@jbrowse/core/util` module, listed by name.
|
|
2
|
-
//
|
|
3
|
-
// modules.ts used to serve `import * as coreUtil from '../util/index.ts'`, which
|
|
4
|
-
// made the external ABI a side effect of an internal barrel. The two want
|
|
5
|
-
// opposite things: in-tree code wants util/ reorganized freely, and a published
|
|
6
|
-
// plugin wants the names it linked against to still be there. Coupling them
|
|
7
|
-
// meant moving a file inside util/ silently edited the ABI, and nothing in the
|
|
8
|
-
// diff said so -- that is how `defaultCodonTable`, `iterMap`, `when` and the
|
|
9
|
-
// rest went, each one an `undefined` inside a bundle nobody was going to build
|
|
10
|
-
// again.
|
|
11
|
-
//
|
|
12
|
-
// Re-exporting by name from the barrel splits those jobs without freezing
|
|
13
|
-
// anything. Moving code between modules under util/ is still free, since only
|
|
14
|
-
// the barrel's own line changes. Taking a name *out* of the barrel stops
|
|
15
|
-
// compiling here, and the fix -- deleting the line below -- is an ABI removal
|
|
16
|
-
// that reads as one in review.
|
|
17
|
-
//
|
|
18
|
-
// So: adding a line is how a helper becomes public, and it is a decision rather
|
|
19
|
-
// than a side effect of where the code happens to live. This list is the ABI,
|
|
20
|
-
// which abiBaseline.json is deliberately not: that baseline fails on removals
|
|
21
|
-
// but not additions, so it sat 11 names behind what was actually being served
|
|
22
|
-
// by the time this was written. A list that has to be edited by hand cannot
|
|
23
|
-
// drift that way.
|
|
24
|
-
//
|
|
25
|
-
// The same split is worth making for '@jbrowse/core/ui' (115 pinned names) and
|
|
26
|
-
// '@jbrowse/core/util/tracks' (36), which have the same shape and the same
|
|
27
|
-
// history: BaseTooltip and getParentRenderProps each left this way.
|
|
28
|
-
export { AuthNeededError, BEZIER_CONNECTOR_MAX_REACH_PX, ENCODED_PREFIX, IUPAC_MOTIF_REGEX, IntervalTree, JSON_PREFIX, MAX_ZOOM_RATE_PER_MS, SCROLL_ZOOM_FACTOR_DIVISOR, SHARE_PREFIX, SimpleFeature, UNKNOWN, UNSUPPORTED, UnknownRefNameError, ZOOM_ACTIVE_WINDOW_MS, accumulateScroll, adapterConfigFromSpec, addAdapterGuesser, addAddTrackComponent, addAndShowTrack, addOrReplaceView, addTrackFromWidget, addTrackTypeGuesser, aesDecrypt, aesEncrypt, animationAllowed, applyOrderWithin, applyZoomAccum, assembleLocString, assembleLocStringRaw, avg, b64PadSuffix, bezierConnectorPath, bpSpanPx, bpToPx, bytesForRegions, calculateRedispatchRange, canReplaceView, capitalizeFirst, checkStopToken, checkStopTokenThrottled, clamp, clearFileFromCache, cmpStr, coarseStripHTML, codonTable, compareLocStrings, compareLocs, complement, complementTable, createProgressReporter, createScrollLatch, createSharedSetup, createStatusChannel, createStatusFanOut, createStatusWindow, createStopToken, createStopTokenChecker, createStopTokenRotation, dedupe, defaultCodonTable, defaultStarts, diagonalizeRegions, diffTrackConfig, doesIntersect2, downloadStatus, drawImageOntoCanvasContext, encodeSessionParam, ensureFileHandleReady, expandLooseTrackConfig, featureSpanPx, fetchAndMaybeUnzip, fetchAndMaybeUnzipText, fetchJson, fileToLocation, findFileHandleIds, findParentThat, findParentThatIs, flattenTrackConfigDelta, formatRelativeTime, fromUrlSafeB64, gatherOverlaps, generateCodonTable, generateUnknownTrackConf, generateUnsupportedTrackConf, getAssemblyHost, getBlob, getBlobMap, getBpDisplayStr, getConfAssemblyNames, getContainingDisplay, getContainingTrack, getContainingView, getDialogHost, getEnv, getFileFromCache, getFileHandle, getFileName, getFillProps, getFrame, getNotificationSink, getNumberGrouping, getPaletteHost, getPluginUpdate, getRenderingServices, getRpcHost, getRpcSessionId, getSession, getSessionServices, getStr, getStrokeProps, getTickDisplayStr, getTrackAssemblyNames, getTrackName, getZoomNormalizer, groupBy, guessAdapter, guessTrackConf, guessTrackType, hasFileHandlesInCache, hasSharedArrayBuffer, hashCode, hideTrackGeneric, installedVersionFromUrl, intersection2, isAbortException, isAbstractMenuManager, isActivelyZooming, isAppRootModel, isAuthNeededException, isBlobLocation, isDataCurrent, isDisplayModel, isElectron, isFeature, isFileHandleLocation, isFileSystemAccessSupported, isGzip, isLocalPathLocation, isLooseTrackConfig, isNode, isObject, isPalindromic, isPluginInstalled, isRootModelWithInternetAccounts, isRpcResult, isSelectionContainer, isSessionModel, isSessionServices, isSessionModelWithConfigEditing, isSessionModelWithConnectionEditing, isSessionModelWithConnections, isSessionModelWithWidgets, isSessionWithAddAssembly, isSessionWithAddSessionTrack, isSessionWithAddTracks, isSessionWithPublishTrackConf, isSessionWithDeleteTrackConf, isSessionWithSessionPlugins, isSessionWithSessionTracks, isSessionWithShareURL, isSessionWithViewReplacement, isStopToken, isStopped, isSupportedIndexingAdapter, isTrackModel, isTrackViewModel, isUriLocation, isValidTag, isViewContainer, isViewModel, iupacToRegex, linkify, locStringsToRegions, localStorageGetBoolean, localStorageGetItem, localStorageGetJSON, localStorageGetNumber, localStorageRemoveItem, localStorageSetBoolean, localStorageSetItem, localStorageSetJSON, localStorageSetNumber, makeAbortError, makeIndex, makeIndexType, makeTrackId, markStopTokenStopped, matchTrackId, max, maxFinite, measureGridWidth, measureText, mergeIntervals, mergeTrackConfig, min, minmax, normalizeWheelDelta, notEmpty, objectHash, openFeatureWidget, openPromotableDisplays, parseLocString, parseLocStringOneBased, parseMotifList, pluralize, polarToCartesian, progressLabel, rIC, radToDeg, readSessionFromDynamo, reducePrecision, registerStopTokenBroadcaster, renameRegionIfNeeded, renameRegionsIfNeeded, renderToStaticMarkup, reorder, reorderWithin, resolvePlugin, resolveSelectedIds, restoreFileHandles, restoreFileHandlesFromSnapshot, revcom, reverse, reverseComplementIupac, revlist, saveAs, saveSvgAsImage, selectNamedRegions, setBlobMap, setFileInCache, setNumberGrouping, sha256, sha256Base64, sha256Base64Url, shareEndpoint, shorten, shorten2, showTrackGeneric, springAnimate, statusFraction, statusMessageText, statusProgressLabel, statusReading, stitch, stopStopToken, stopTokenSignal, storeBlobLocation, storeFileHandle, storeFileHandleLocation, stringify, stripAlpha, stripFileExtension, stripTrackIds, sum, svgHtmlToPngBlob, tagRegex, testAdapter, toBase64, toBase64Url, toLocale, toUrlSafeB64, toggleTrackGeneric, truncateMiddle, updateStatus, useDebounce, useLocalStorage, useWidthSetter, verifyPermission, wheelFrameElapsedMs, wheelZoomAccum, withProgress, withStopTokenCheck, withStopTokenSignal, } from '../util/index.js';
|
|
@@ -1,199 +0,0 @@
|
|
|
1
|
-
import type { TrackConfigChange } from '../util/trackConfigDelta.ts';
|
|
2
|
-
import type { Pin } from './promotablePin.ts';
|
|
3
|
-
import type { PromotedDefaultStore, ResolvableDisplay } from './promotableResolve.ts';
|
|
4
|
-
import type { AnyConfigurationModel, ConfigurationSchemaForModel, ConfigurationSlotName, ConfigurationSlotValueResolved } from './types.ts';
|
|
5
|
-
export type { Pin } from './promotablePin.ts';
|
|
6
|
-
/**
|
|
7
|
-
* #api core/configuration
|
|
8
|
-
* Whether this track has customized the slot (holds a non-default value of its
|
|
9
|
-
* own) rather than following the display type's default. The correct "reset to
|
|
10
|
-
* default" predicate for a promotable slot: comparing the resolved value to the
|
|
11
|
-
* base instead reads as at-default for a track merely *following* a non-base
|
|
12
|
-
* promoted default, so the reset control lights up on a no-op.
|
|
13
|
-
*
|
|
14
|
-
* `SLOT` is constrained the way `getConf`'s is. A pin or a reset over a slot
|
|
15
|
-
* name the schema does not declare is inert and silent — `resolveSlot` answers
|
|
16
|
-
* about nothing, so the control draws outline forever — and a widened `self`
|
|
17
|
-
* switches the check off (`HostChecksSlotNames`).
|
|
18
|
-
*/
|
|
19
|
-
export declare function isSlotCustomized<CONFMODEL extends AnyConfigurationModel, SLOT extends ConfigurationSlotName<ConfigurationSchemaForModel<CONFMODEL>>>(self: ResolvableDisplay<CONFMODEL>, slot: SLOT): boolean;
|
|
20
|
-
declare const promotablesResolved: unique symbol;
|
|
21
|
-
/**
|
|
22
|
-
* #api core/configuration
|
|
23
|
-
* A display config snapshot whose promotable slots hold RESOLVED values rather
|
|
24
|
-
* than the inherit sentinel — what a worker payload has to be built from.
|
|
25
|
-
*
|
|
26
|
-
* The brand is required and unforgeable, so a plain `Record<string, unknown>`
|
|
27
|
-
* is not assignable to it and neither is `getSnapshot(self.configuration)`.
|
|
28
|
-
* That is the whole point. Everything downstream of the resolve is an ERASED
|
|
29
|
-
* container — a snapshot is `Record<string, unknown>`, and the payload it
|
|
30
|
-
* becomes is an `as`-asserted interface — so a payload builder handed the RAW
|
|
31
|
-
* snapshot instead typechecks, ships `undefined` for every promotable slot, and
|
|
32
|
-
* types it as the resolved value. That was measured, not supposed: the raw
|
|
33
|
-
* spelling in `LinearBasicDisplay`'s `rpcProps()` passed `pnpm typecheck` and
|
|
34
|
-
* every suite in `plugins/canvas`, `packages/core/src/configuration` and
|
|
35
|
-
* `products/jbrowse-web`, while sending the worker `undefined` for chevrons,
|
|
36
|
-
* subfeature labels and feature height.
|
|
37
|
-
*
|
|
38
|
-
* The rest of this subsystem's guarantees are carried by types that stay
|
|
39
|
-
* connected to the schema: a raw read of a promotable `maybe*` slot is
|
|
40
|
-
* `T | undefined` (see `ConfigurationSlotValue`), so `getConf` where
|
|
41
|
-
* `resolveConf` was meant is a compile error at any typed consumer. The brand is
|
|
42
|
-
* that guarantee re-established at the point where the connection is cut.
|
|
43
|
-
*/
|
|
44
|
-
export interface ResolvedConfigSnapshot extends Record<string, unknown> {
|
|
45
|
-
readonly [promotablesResolved]: true;
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* #api core/configuration
|
|
49
|
-
* The display's full config snapshot with every `promotable`
|
|
50
|
-
* slot overwritten by its resolved value in place. For building a worker payload:
|
|
51
|
-
* a promotable slot serializes as its raw inherit sentinel (`undefined`, since
|
|
52
|
-
* they're all `maybe*` types), which the worker can't interpret — it has no
|
|
53
|
-
* session to resolve against. This hands it concrete values instead, with no per-slot
|
|
54
|
-
* bookkeeping, so adding a promotable worker-consumed slot needs no rpcProps
|
|
55
|
-
* change and can't silently ship a sentinel. Main-thread only (the cascade
|
|
56
|
-
* consults the session). Display-only promotable slots the worker never reads
|
|
57
|
-
* (e.g. displayMode) are still excluded by the caller — resolving them here is a
|
|
58
|
-
* harmless no-op since they're dropped anyway.
|
|
59
|
-
*
|
|
60
|
-
* The return type is branded (`ResolvedConfigSnapshot`) so a payload builder can
|
|
61
|
-
* demand a snapshot that has been through here. The assertion below is the one
|
|
62
|
-
* place the brand is applied, and it sits on the line after the resolve.
|
|
63
|
-
*/
|
|
64
|
-
export declare function getConfigSnapshotWithPromotables(self: ResolvableDisplay): ResolvedConfigSnapshot;
|
|
65
|
-
/**
|
|
66
|
-
* #api core/configuration
|
|
67
|
-
* A track config snapshot with every display's `promotable` slots resolved, plus
|
|
68
|
-
* the list of values that came from a session-wide default rather than from the
|
|
69
|
-
* config itself.
|
|
70
|
-
*
|
|
71
|
-
* For handing a track's config to somewhere that leaves the cascade for good —
|
|
72
|
-
* the About dialog's "Copy config", whose output a user pastes into a
|
|
73
|
-
* `config.json`. A raw `getSnapshot` records a slot a track merely *follows* as
|
|
74
|
-
* absent (`stripDefault` collapsed it), so the copied config renders differently
|
|
75
|
-
* from the track it was copied from. This is `getComputedStyle` at that
|
|
76
|
-
* boundary, and `fromDisplayTypeDefaults` is what lets the UI say so rather than
|
|
77
|
-
* silently materializing a session preference into a track config.
|
|
78
|
-
*
|
|
79
|
-
* Resolves from the display *config* alone, whether or not the track is open.
|
|
80
|
-
* Everything the cascade takes is on the config node: it is the same node an
|
|
81
|
-
* open display's `configuration` points at (the hydration cache makes it
|
|
82
|
-
* stable), its `type` is the display type the session-wide tier is keyed on
|
|
83
|
-
* (every display schema is `explicitlyTyped` under the display type's own name),
|
|
84
|
-
* and the session is passed in. So an unopened track — which has no display
|
|
85
|
-
* state at all — still has an answer to "what would this render as", by the same
|
|
86
|
-
* code path.
|
|
87
|
-
*
|
|
88
|
-
* **Writes every promotable slot, including the ones sitting at `promotedBase`,
|
|
89
|
-
* and that is the decision — don't "align" it with the share bake.** A pasted
|
|
90
|
-
* `config.json` is read by a mechanism with no cascade in it at all, so writing
|
|
91
|
-
* only the inherited values would leave every other slot to pick up whatever the
|
|
92
|
-
* reader has promoted in their own browser. Pinned by
|
|
93
|
-
* `products/jbrowse-web/src/tests/CopyConfigPromotedDefaults.test.ts`.
|
|
94
|
-
*/
|
|
95
|
-
export interface TrackConfigWithPromotables {
|
|
96
|
-
config: Record<string, unknown>;
|
|
97
|
-
/** `<displayType>.<slot>`, one per value inherited from a promoted default */
|
|
98
|
-
fromDisplayTypeDefaults: string[];
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* #api core/configuration
|
|
102
|
-
* See {@link TrackConfigWithPromotables}.
|
|
103
|
-
*/
|
|
104
|
-
export declare function getTrackConfigWithPromotables(session: PromotedDefaultStore, trackConfig: AnyConfigurationModel): TrackConfigWithPromotables;
|
|
105
|
-
/**
|
|
106
|
-
* Open displays of this display's type, **one entry per track** — the set the
|
|
107
|
-
* pin's click writes. Module-internal (exercised by promotableDefaults.test.ts);
|
|
108
|
-
* not part of the public barrel.
|
|
109
|
-
*
|
|
110
|
-
* A track open in two views is two display *models* over one display *config* —
|
|
111
|
-
* `TrackConfigurationReference` resolves both through the hydration cache
|
|
112
|
-
* (ADR-031) — so the raw walk yields it twice. That is the ordinary case in a
|
|
113
|
-
* breakpoint-split view, which shows the same track in both halves and is one of
|
|
114
|
-
* the composite shapes `openPromotableDisplays` recurses into. The count reaches
|
|
115
|
-
* the user in the snackbar and the set gets written, and both
|
|
116
|
-
* go wrong on a duplicate: the toast offered to act on "2 tracks" over a single
|
|
117
|
-
* track, and the second write was a no-op against a node the first had already
|
|
118
|
-
* set.
|
|
119
|
-
*
|
|
120
|
-
* Keying on the config node rather than on `trackId` is what keeps this
|
|
121
|
-
* cast-free: the node is a member of `ResolvableDisplay`, and within one display
|
|
122
|
-
* type it is 1:1 with the track.
|
|
123
|
-
*/
|
|
124
|
-
export declare function openTracksOfType(self: ResolvableDisplay): ResolvableDisplay[];
|
|
125
|
-
/**
|
|
126
|
-
* Whether `value` is the current session default for `slot`. The live state the
|
|
127
|
-
* pin's filled/outline reflects — a session-wide fact, so it reads the raw
|
|
128
|
-
* promoted default rather than what this display resolves to (a customized track
|
|
129
|
-
* can be showing something else entirely). The named form of the comparison
|
|
130
|
-
* {@link makePin} inlines off a resolution it already holds. Module-internal
|
|
131
|
-
* (exercised by promotableDefaults.test.ts); not part of the public barrel.
|
|
132
|
-
*/
|
|
133
|
-
export declare function isPromotableDefault(self: ResolvableDisplay, slot: string, value: unknown): boolean;
|
|
134
|
-
/**
|
|
135
|
-
* Write `value` into each display's own config for `slot`, so the track *holds*
|
|
136
|
-
* it rather than resolving it through the cascade. The pin's click, over every
|
|
137
|
-
* open track of the display type.
|
|
138
|
-
*
|
|
139
|
-
* **A track already showing `value` still has to be written**, which is why this
|
|
140
|
-
* compares the *stored* value and not the resolved one: a follower stores
|
|
141
|
-
* nothing and is showing `value` only by way of some promoted default, so
|
|
142
|
-
* skipping it would leave it to move again the moment that default changed.
|
|
143
|
-
* Comparing the stored value is also what lets a `jexl:` value answer "is this
|
|
144
|
-
* already what we would write?" without being evaluated.
|
|
145
|
-
*
|
|
146
|
-
* Skips dead displays, since the caller supplies the list and MST throws on any
|
|
147
|
-
* read or write to a destroyed node.
|
|
148
|
-
*/
|
|
149
|
-
export declare function applySlotToOpenTracks(displays: ResolvableDisplay[], slot: string, value: unknown): void;
|
|
150
|
-
/**
|
|
151
|
-
* #api core/configuration
|
|
152
|
-
* The pin for one promotable slot: "apply this value to every open track of this
|
|
153
|
-
* display type", and — via the snackbar it raises — "keep it as the default for
|
|
154
|
-
* the ones opened later".
|
|
155
|
-
*
|
|
156
|
-
* `value` chooses between the subsystem's two meanings, which are otherwise
|
|
157
|
-
* identical:
|
|
158
|
-
*
|
|
159
|
-
* - **Give it** for a per-value pin — "make *arcs* the default" — independent of
|
|
160
|
-
* what the track currently shows. Use on an always-visible pin so it can never
|
|
161
|
-
* promote a meaningless value, and so two rows sharing one slot (arcs `'arc'`
|
|
162
|
-
* vs read cloud `'cloud'`; sashimi `'down'` vs `'auto'`) stay independent.
|
|
163
|
-
* - **Omit it** for "whatever I'm showing", resolved through the cascade. Use for
|
|
164
|
-
* a symmetric or continuous setting where no fixed on-value makes sense
|
|
165
|
-
* (wiggle point size, arc line width, `mismatchAlpha`).
|
|
166
|
-
*
|
|
167
|
-
* One function with an optional argument, rather than the two exported builders
|
|
168
|
-
* it replaces — a per-value one and a `…CurrentValue…` one, the second of which
|
|
169
|
-
* was exactly the first applied to `resolveSlot(self, slot).value`. The pair was
|
|
170
|
-
* one function plus a doc section explaining which name to reach for; omitting
|
|
171
|
-
* the argument now says what the longer name said.
|
|
172
|
-
*/
|
|
173
|
-
export declare function makePin<CONFMODEL extends AnyConfigurationModel, SLOT extends ConfigurationSlotName<ConfigurationSchemaForModel<CONFMODEL>>>(self: ResolvableDisplay<CONFMODEL>, slot: SLOT, ...value: [] | [
|
|
174
|
-
ConfigurationSlotValueResolved<ConfigurationSchemaForModel<CONFMODEL>, SLOT>
|
|
175
|
-
]): Pin;
|
|
176
|
-
/**
|
|
177
|
-
* #api core/configuration
|
|
178
|
-
* Effective differences a track following the default inherits from session-wide
|
|
179
|
-
* defaults, one per promotable slot whose inherited value differs from its schema
|
|
180
|
-
* default. Drives the track-selector "affected by a session default" badge.
|
|
181
|
-
*/
|
|
182
|
-
export declare function getDisplayTypeDefaultChanges(self: ResolvableDisplay): TrackConfigChange[];
|
|
183
|
-
/**
|
|
184
|
-
* #api core/configuration
|
|
185
|
-
* Clear the named promoted defaults for this display type, so every track
|
|
186
|
-
* following one reverts to its own config value. Backs the badge's "clear
|
|
187
|
-
* session default" action, which passes the slots it actually listed
|
|
188
|
-
* (`getDisplayTypeDefaultChanges`).
|
|
189
|
-
*
|
|
190
|
-
* **`slots` is required, and an all-slots default is not the convenience it
|
|
191
|
-
* looks like.** It reaches further than any list a dialog can have shown: a
|
|
192
|
-
* promoted default the track *customized* over, or one promoted to a value
|
|
193
|
-
* equal to `promotedBase`, is `inherited: false` and so appears in no row, yet
|
|
194
|
-
* still governs sibling tracks — so clearing it from a dialog that never showed
|
|
195
|
-
* it moves tracks other than the one whose badge was clicked. Clearing every
|
|
196
|
-
* promoted default at once is a preferences-scope action, and Preferences →
|
|
197
|
-
* "Reset to defaults" is where it lives (`clearPreferenceOverrides`).
|
|
198
|
-
*/
|
|
199
|
-
export declare function clearPromotedDefaults(self: ResolvableDisplay, slots: Iterable<string>): void;
|
|
@@ -1,326 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module
|
|
3
|
-
* Session-wide "promoted defaults" for display-type config slots — the UI /
|
|
4
|
-
* control layer over the read-time cascade in `promotableResolve.ts`, whose
|
|
5
|
-
* `SlotResolution` every function here reads a field off. The session store
|
|
6
|
-
* (`get/setDisplayTypeDefault`) holds the promoted value.
|
|
7
|
-
*/
|
|
8
|
-
import { getSnapshot, isAlive } from '@jbrowse/mobx-state-tree';
|
|
9
|
-
import { deepEqual } from '../util/deepEqual.js';
|
|
10
|
-
import { getSession } from '../util/mstUtils.js';
|
|
11
|
-
import { isObject } from '../util/objectUtils.js';
|
|
12
|
-
import { openPromotableDisplays } from '../util/openDisplays.js';
|
|
13
|
-
import { pluralize } from '../util/stringUtils.js';
|
|
14
|
-
import { fullConfSnapshot } from './fullConfSnapshot.js';
|
|
15
|
-
import { setConf } from './getConf.js';
|
|
16
|
-
import { cascadeContextFor, isPromotableValue, resolveSlot, resolveSlotIn, storedSlotValue, } from './promotableResolve.js';
|
|
17
|
-
import { promotableSlotNames } from './promotableSlots.js';
|
|
18
|
-
import { isConfigurationModel } from './schemaTypes.js';
|
|
19
|
-
/**
|
|
20
|
-
* #api core/configuration
|
|
21
|
-
* Whether this track has customized the slot (holds a non-default value of its
|
|
22
|
-
* own) rather than following the display type's default. The correct "reset to
|
|
23
|
-
* default" predicate for a promotable slot: comparing the resolved value to the
|
|
24
|
-
* base instead reads as at-default for a track merely *following* a non-base
|
|
25
|
-
* promoted default, so the reset control lights up on a no-op.
|
|
26
|
-
*
|
|
27
|
-
* `SLOT` is constrained the way `getConf`'s is. A pin or a reset over a slot
|
|
28
|
-
* name the schema does not declare is inert and silent — `resolveSlot` answers
|
|
29
|
-
* about nothing, so the control draws outline forever — and a widened `self`
|
|
30
|
-
* switches the check off (`HostChecksSlotNames`).
|
|
31
|
-
*/
|
|
32
|
-
export function isSlotCustomized(self, slot) {
|
|
33
|
-
return resolveSlot(self, slot).customized;
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* #api core/configuration
|
|
37
|
-
* The display's full config snapshot with every `promotable`
|
|
38
|
-
* slot overwritten by its resolved value in place. For building a worker payload:
|
|
39
|
-
* a promotable slot serializes as its raw inherit sentinel (`undefined`, since
|
|
40
|
-
* they're all `maybe*` types), which the worker can't interpret — it has no
|
|
41
|
-
* session to resolve against. This hands it concrete values instead, with no per-slot
|
|
42
|
-
* bookkeeping, so adding a promotable worker-consumed slot needs no rpcProps
|
|
43
|
-
* change and can't silently ship a sentinel. Main-thread only (the cascade
|
|
44
|
-
* consults the session). Display-only promotable slots the worker never reads
|
|
45
|
-
* (e.g. displayMode) are still excluded by the caller — resolving them here is a
|
|
46
|
-
* harmless no-op since they're dropped anyway.
|
|
47
|
-
*
|
|
48
|
-
* The return type is branded (`ResolvedConfigSnapshot`) so a payload builder can
|
|
49
|
-
* demand a snapshot that has been through here. The assertion below is the one
|
|
50
|
-
* place the brand is applied, and it sits on the line after the resolve.
|
|
51
|
-
*/
|
|
52
|
-
export function getConfigSnapshotWithPromotables(self) {
|
|
53
|
-
// the unresolved walk: this is the one place allowed to snapshot a promotable
|
|
54
|
-
// config, because `resolvePromotablesInto` is what resolves every such slot
|
|
55
|
-
const snap = fullConfSnapshot(self.configuration);
|
|
56
|
-
resolvePromotablesInto(cascadeContextFor(self), snap);
|
|
57
|
-
return snap;
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* The subsystem's one resolve loop: every promotable slot of `ctx.config`
|
|
61
|
-
* written into `snap` in place, returning the slots whose value came from a
|
|
62
|
-
* promoted default rather than from the config. Both serialization boundaries
|
|
63
|
-
* are this function over a different context — a display state node for the
|
|
64
|
-
* worker payload, a bare display config for the About dialog's copy.
|
|
65
|
-
*/
|
|
66
|
-
function resolvePromotablesInto(ctx, snap) {
|
|
67
|
-
const inherited = [];
|
|
68
|
-
for (const slot of promotableSlotNames(ctx.config)) {
|
|
69
|
-
const res = resolveSlotIn(ctx, slot);
|
|
70
|
-
snap[slot] = res.value;
|
|
71
|
-
if (res.inherited) {
|
|
72
|
-
inherited.push(slot);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
return inherited;
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* #api core/configuration
|
|
79
|
-
* See {@link TrackConfigWithPromotables}.
|
|
80
|
-
*/
|
|
81
|
-
export function getTrackConfigWithPromotables(session, trackConfig) {
|
|
82
|
-
const config = structuredClone(getSnapshot(trackConfig));
|
|
83
|
-
const fromDisplayTypeDefaults = [];
|
|
84
|
-
const displayConfigs = trackConfig.displays;
|
|
85
|
-
const displaySnaps = config.displays;
|
|
86
|
-
// a config with no `displays` (an assembly, a plain customized About config)
|
|
87
|
-
// has no promotable slot to resolve — every one of them is display-level
|
|
88
|
-
if (Array.isArray(displayConfigs) && Array.isArray(displaySnaps)) {
|
|
89
|
-
for (const [i, displayConfig] of displayConfigs.entries()) {
|
|
90
|
-
const snap = displaySnaps[i];
|
|
91
|
-
if (!isConfigurationModel(displayConfig) || !isObject(snap)) {
|
|
92
|
-
continue;
|
|
93
|
-
}
|
|
94
|
-
// off the live config node, not off `snap` — the snapshot is what this
|
|
95
|
-
// function *writes*, so the key it resolves against shouldn't depend on
|
|
96
|
-
// what survived `stripDefault` on the way out. A display schema is
|
|
97
|
-
// `explicitlyTyped`, so the node always carries `type`; reading the
|
|
98
|
-
// snapshot's copy meant a display whose `type` ever stopped being emitted
|
|
99
|
-
// got skipped whole, and a skipped display is a copied config that
|
|
100
|
-
// silently isn't flattened. Same source `cascadeContextFor` reads.
|
|
101
|
-
const displayType = displayConfig.type;
|
|
102
|
-
if (typeof displayType === 'string') {
|
|
103
|
-
const ctx = { config: displayConfig, displayType, defaults: session };
|
|
104
|
-
for (const slot of resolvePromotablesInto(ctx, snap)) {
|
|
105
|
-
fromDisplayTypeDefaults.push(`${displayType}.${slot}`);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
return { config, fromDisplayTypeDefaults };
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Open displays of this display's type, **one entry per track** — the set the
|
|
114
|
-
* pin's click writes. Module-internal (exercised by promotableDefaults.test.ts);
|
|
115
|
-
* not part of the public barrel.
|
|
116
|
-
*
|
|
117
|
-
* A track open in two views is two display *models* over one display *config* —
|
|
118
|
-
* `TrackConfigurationReference` resolves both through the hydration cache
|
|
119
|
-
* (ADR-031) — so the raw walk yields it twice. That is the ordinary case in a
|
|
120
|
-
* breakpoint-split view, which shows the same track in both halves and is one of
|
|
121
|
-
* the composite shapes `openPromotableDisplays` recurses into. The count reaches
|
|
122
|
-
* the user in the snackbar and the set gets written, and both
|
|
123
|
-
* go wrong on a duplicate: the toast offered to act on "2 tracks" over a single
|
|
124
|
-
* track, and the second write was a no-op against a node the first had already
|
|
125
|
-
* set.
|
|
126
|
-
*
|
|
127
|
-
* Keying on the config node rather than on `trackId` is what keeps this
|
|
128
|
-
* cast-free: the node is a member of `ResolvableDisplay`, and within one display
|
|
129
|
-
* type it is 1:1 with the track.
|
|
130
|
-
*/
|
|
131
|
-
export function openTracksOfType(self) {
|
|
132
|
-
// seeded with the clicked display so it is in the set by construction rather
|
|
133
|
-
// than by the walk happening to reach it. A display the walk misses used to
|
|
134
|
-
// cost nothing — the click wrote only the session default — and would now be
|
|
135
|
-
// the whole of the click. A duplicate from the walk lands on the same config
|
|
136
|
-
// key, so this adds no entry.
|
|
137
|
-
const byTrack = new Map([
|
|
138
|
-
[self.configuration, self],
|
|
139
|
-
]);
|
|
140
|
-
for (const display of openPromotableDisplays(getSession(self))) {
|
|
141
|
-
if (display.type === self.type) {
|
|
142
|
-
byTrack.set(display.configuration, display);
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
return [...byTrack.values()];
|
|
146
|
-
}
|
|
147
|
-
/**
|
|
148
|
-
* Whether `value` is the current session default for `slot`. The live state the
|
|
149
|
-
* pin's filled/outline reflects — a session-wide fact, so it reads the raw
|
|
150
|
-
* promoted default rather than what this display resolves to (a customized track
|
|
151
|
-
* can be showing something else entirely). The named form of the comparison
|
|
152
|
-
* {@link makePin} inlines off a resolution it already holds. Module-internal
|
|
153
|
-
* (exercised by promotableDefaults.test.ts); not part of the public barrel.
|
|
154
|
-
*/
|
|
155
|
-
export function isPromotableDefault(self, slot, value) {
|
|
156
|
-
return deepEqual(resolveSlot(self, slot).promoted, value);
|
|
157
|
-
}
|
|
158
|
-
/**
|
|
159
|
-
* Write `value` into each display's own config for `slot`, so the track *holds*
|
|
160
|
-
* it rather than resolving it through the cascade. The pin's click, over every
|
|
161
|
-
* open track of the display type.
|
|
162
|
-
*
|
|
163
|
-
* **A track already showing `value` still has to be written**, which is why this
|
|
164
|
-
* compares the *stored* value and not the resolved one: a follower stores
|
|
165
|
-
* nothing and is showing `value` only by way of some promoted default, so
|
|
166
|
-
* skipping it would leave it to move again the moment that default changed.
|
|
167
|
-
* Comparing the stored value is also what lets a `jexl:` value answer "is this
|
|
168
|
-
* already what we would write?" without being evaluated.
|
|
169
|
-
*
|
|
170
|
-
* Skips dead displays, since the caller supplies the list and MST throws on any
|
|
171
|
-
* read or write to a destroyed node.
|
|
172
|
-
*/
|
|
173
|
-
export function applySlotToOpenTracks(displays, slot, value) {
|
|
174
|
-
for (const display of displays.filter(display => isAlive(display))) {
|
|
175
|
-
if (!deepEqual(storedSlotValue(display.configuration, slot), value)) {
|
|
176
|
-
setConf(display, slot, value);
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
/**
|
|
181
|
-
* The pin's click. Two branches, chosen by whether this value is *already* the
|
|
182
|
-
* display type's promoted default:
|
|
183
|
-
*
|
|
184
|
-
* - **It isn't** — write `value` into every open track of the type, and offer
|
|
185
|
-
* the promotion as a snackbar action. Applying to the tracks in front of the
|
|
186
|
-
* user is the click they mean far more often, so it is the one that needs no
|
|
187
|
-
* second click; a default outlives the tracks it was set for and governs every
|
|
188
|
-
* track of the type opened later, so it is the escalation (ADR-048).
|
|
189
|
-
* - **It is** — clear it, touching no track. The open tracks hold their values
|
|
190
|
-
* because the user applied them, so reverting them here would make a toggle
|
|
191
|
-
* into a bulk discard.
|
|
192
|
-
*
|
|
193
|
-
* The apply is one operation over *every* open track, not a labeled pair over
|
|
194
|
-
* the tracks that differ and the tracks that follow. Overwriting a customized
|
|
195
|
-
* track is the same write as filling in a follower, and the distinction the two
|
|
196
|
-
* actions drew is not one the user has any reason to see.
|
|
197
|
-
*
|
|
198
|
-
* The snackbar outlives the click that raised it, so the promotion re-derives
|
|
199
|
-
* `self`'s liveness inside `onClick` rather than closing over a decision —
|
|
200
|
-
* ADR-048 has the ways that goes wrong.
|
|
201
|
-
*/
|
|
202
|
-
function applyPinClick(self, slot, value, isDefault) {
|
|
203
|
-
const session = getSession(self);
|
|
204
|
-
if (isDefault) {
|
|
205
|
-
session.setDisplayTypeDefault(self.type, slot, undefined);
|
|
206
|
-
session.notify('Cleared the default', 'info');
|
|
207
|
-
}
|
|
208
|
-
else {
|
|
209
|
-
const open = openTracksOfType(self);
|
|
210
|
-
applySlotToOpenTracks(open, slot, value);
|
|
211
|
-
session.notify(`Applied to ${open.length} open ${pluralize(open.length, 'track')}`, 'info', {
|
|
212
|
-
name: 'Set as the default',
|
|
213
|
-
onClick: () => {
|
|
214
|
-
if (isAlive(self)) {
|
|
215
|
-
session.setDisplayTypeDefault(self.type, slot, value);
|
|
216
|
-
}
|
|
217
|
-
},
|
|
218
|
-
});
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
/**
|
|
222
|
-
* #api core/configuration
|
|
223
|
-
* The pin for one promotable slot: "apply this value to every open track of this
|
|
224
|
-
* display type", and — via the snackbar it raises — "keep it as the default for
|
|
225
|
-
* the ones opened later".
|
|
226
|
-
*
|
|
227
|
-
* `value` chooses between the subsystem's two meanings, which are otherwise
|
|
228
|
-
* identical:
|
|
229
|
-
*
|
|
230
|
-
* - **Give it** for a per-value pin — "make *arcs* the default" — independent of
|
|
231
|
-
* what the track currently shows. Use on an always-visible pin so it can never
|
|
232
|
-
* promote a meaningless value, and so two rows sharing one slot (arcs `'arc'`
|
|
233
|
-
* vs read cloud `'cloud'`; sashimi `'down'` vs `'auto'`) stay independent.
|
|
234
|
-
* - **Omit it** for "whatever I'm showing", resolved through the cascade. Use for
|
|
235
|
-
* a symmetric or continuous setting where no fixed on-value makes sense
|
|
236
|
-
* (wiggle point size, arc line width, `mismatchAlpha`).
|
|
237
|
-
*
|
|
238
|
-
* One function with an optional argument, rather than the two exported builders
|
|
239
|
-
* it replaces — a per-value one and a `…CurrentValue…` one, the second of which
|
|
240
|
-
* was exactly the first applied to `resolveSlot(self, slot).value`. The pair was
|
|
241
|
-
* one function plus a doc section explaining which name to reach for; omitting
|
|
242
|
-
* the argument now says what the longer name said.
|
|
243
|
-
*/
|
|
244
|
-
export function makePin(self, slot, ...value) {
|
|
245
|
-
// One walk of the cascade feeds both halves. The value-omitted form's
|
|
246
|
-
// on-value IS the settled value, and `active` compares against the raw
|
|
247
|
-
// promoted default of that same resolution — taking the two from separate
|
|
248
|
-
// `resolveSlot` calls read as though they could disagree, and cost a second
|
|
249
|
-
// walk per pin on a menu that builds a dozen of them.
|
|
250
|
-
const res = resolveSlot(self, slot);
|
|
251
|
-
// rest-tuple, not `value?: unknown`: the promote-current case has to stay
|
|
252
|
-
// distinguishable from an explicit `undefined` rather than collapsing into it.
|
|
253
|
-
const onValue = value.length ? value[0] : res.value;
|
|
254
|
-
// The value-omitted form can't fail this — the cascade only ever settles on a
|
|
255
|
-
// usable value — so this is entirely about a caller-supplied one. An on-value
|
|
256
|
-
// the cascade would refuse builds a pin that is inert *and* silent: clicking
|
|
257
|
-
// it stores a key `resolveSlotIn` then drops, so no track moves and the pin
|
|
258
|
-
// draws outline forever. The reachable mistakes are the inherit sentinel
|
|
259
|
-
// itself (`makePin(self, slot, undefined)`, which additionally reads as the
|
|
260
|
-
// default the moment nothing is promoted, so it draws *filled* and does
|
|
261
|
-
// nothing), a non-finite number, and a value outside a `maybeStringEnum`'s
|
|
262
|
-
// vocabulary. The `value` parameter's type catches those wherever the slot
|
|
263
|
-
// resolves to a real value type; what is left for runtime is the slot whose
|
|
264
|
-
// schema widened to `any` — a `frozen`/`maybeFrozen` one by design, or a
|
|
265
|
-
// display whose config model was not narrowed. Same bargain `ConfigSlot`
|
|
266
|
-
// strikes over `promotedBase`, which is this gate at the other end.
|
|
267
|
-
if (!isPromotableValue(self.configuration, slot, onValue)) {
|
|
268
|
-
throw new Error(`cannot pin ${JSON.stringify(onValue)} as the default for config slot "${slot}": the cascade refuses it, so the pin could never light up`);
|
|
269
|
-
}
|
|
270
|
-
// `isPromotableDefault` off the resolution already in hand — same comparison,
|
|
271
|
-
// same `deepEqual`, no second walk.
|
|
272
|
-
const active = deepEqual(res.promoted, onValue);
|
|
273
|
-
return {
|
|
274
|
-
slot,
|
|
275
|
-
onValue,
|
|
276
|
-
active,
|
|
277
|
-
toggle: () => {
|
|
278
|
-
applyPinClick(self, slot, onValue, active);
|
|
279
|
-
},
|
|
280
|
-
};
|
|
281
|
-
}
|
|
282
|
-
/**
|
|
283
|
-
* #api core/configuration
|
|
284
|
-
* Effective differences a track following the default inherits from session-wide
|
|
285
|
-
* defaults, one per promotable slot whose inherited value differs from its schema
|
|
286
|
-
* default. Drives the track-selector "affected by a session default" badge.
|
|
287
|
-
*/
|
|
288
|
-
export function getDisplayTypeDefaultChanges(self) {
|
|
289
|
-
const changes = [];
|
|
290
|
-
for (const slot of promotableSlotNames(self.configuration)) {
|
|
291
|
-
const res = resolveSlot(self, slot);
|
|
292
|
-
if (res.inherited) {
|
|
293
|
-
changes.push({
|
|
294
|
-
path: [slot],
|
|
295
|
-
// a cascade value is `unknown` here but JSON by contract — it has to
|
|
296
|
-
// survive `postMessage` to a worker. Asserted per field rather than on
|
|
297
|
-
// the whole entry, so `path` stays type-checked.
|
|
298
|
-
from: res.base,
|
|
299
|
-
to: res.value,
|
|
300
|
-
});
|
|
301
|
-
}
|
|
302
|
-
}
|
|
303
|
-
return changes;
|
|
304
|
-
}
|
|
305
|
-
/**
|
|
306
|
-
* #api core/configuration
|
|
307
|
-
* Clear the named promoted defaults for this display type, so every track
|
|
308
|
-
* following one reverts to its own config value. Backs the badge's "clear
|
|
309
|
-
* session default" action, which passes the slots it actually listed
|
|
310
|
-
* (`getDisplayTypeDefaultChanges`).
|
|
311
|
-
*
|
|
312
|
-
* **`slots` is required, and an all-slots default is not the convenience it
|
|
313
|
-
* looks like.** It reaches further than any list a dialog can have shown: a
|
|
314
|
-
* promoted default the track *customized* over, or one promoted to a value
|
|
315
|
-
* equal to `promotedBase`, is `inherited: false` and so appears in no row, yet
|
|
316
|
-
* still governs sibling tracks — so clearing it from a dialog that never showed
|
|
317
|
-
* it moves tracks other than the one whose badge was clicked. Clearing every
|
|
318
|
-
* promoted default at once is a preferences-scope action, and Preferences →
|
|
319
|
-
* "Reset to defaults" is where it lives (`clearPreferenceOverrides`).
|
|
320
|
-
*/
|
|
321
|
-
export function clearPromotedDefaults(self, slots) {
|
|
322
|
-
const session = getSession(self);
|
|
323
|
-
for (const slot of slots) {
|
|
324
|
-
session.setDisplayTypeDefault(self.type, slot, undefined);
|
|
325
|
-
}
|
|
326
|
-
}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* #api core/configuration
|
|
3
|
-
* The "apply this to every open track of this type" affordance on a menu row —
|
|
4
|
-
* the trailing `PushPin`, bundled so the row consumes it as one prop. Built by
|
|
5
|
-
* {@link makePin}.
|
|
6
|
-
*
|
|
7
|
-
* `active` = this value is currently the session default (a filled pin), which
|
|
8
|
-
* is the state, not the click. `toggle` **applies the value to every open track
|
|
9
|
-
* of the display type** and raises a snackbar whose one action promotes it to
|
|
10
|
-
* the display type's default; on an already-promoted value it clears that
|
|
11
|
-
* default instead, touching no track (see `applyPinClick`).
|
|
12
|
-
*
|
|
13
|
-
* **`toggle` rather than an `apply`/`clear` pair**, which was tried and dropped:
|
|
14
|
-
* the sole renderer is a MUI `ToggleButton` whose `onChange` means exactly
|
|
15
|
-
* "flip", so splitting it adds a member *and* a branch at the one call site that
|
|
16
|
-
* never needed one. `active` is already public for a caller that wants to state a
|
|
17
|
-
* direction. (The house preference for explicit setters over toggles is about MST
|
|
18
|
-
* actions, where a toggle destroys the ability to set a known state; nothing here
|
|
19
|
-
* stores a value.)
|
|
20
|
-
*
|
|
21
|
-
* Lives here, alone and with no imports, rather than beside `makePin` in
|
|
22
|
-
* `promotableDefaults.ts`: the menu types describe a pin without building one,
|
|
23
|
-
* and `MenuTypes.ts` taking this one interface from that module gave a
|
|
24
|
-
* React-free type file a type closure of 374 files. See
|
|
25
|
-
* `agent-docs/ideas/barrels-block-extraction.md` and `scripts/moduleClosure.ts`.
|
|
26
|
-
*/
|
|
27
|
-
export interface Pin {
|
|
28
|
-
/**
|
|
29
|
-
* The promotable slot this pin promotes a value of. Nothing in the UI reads
|
|
30
|
-
* it — a pin renders from `active`, `onValue` and the toggle. It is here so a
|
|
31
|
-
* *built menu* can be asked which promotable slots it offers a pin for, which
|
|
32
|
-
* is the only way that question has an answer: declaring `promotedBase` is a
|
|
33
|
-
* schema fact and the pin is a menu fact, and a display that inherits the slot
|
|
34
|
-
* but never builds a row has a slot nothing can ever promote, silently
|
|
35
|
-
* (`promotableSlotsWithoutPin`, guarded by
|
|
36
|
-
* `products/jbrowse-web/src/tests/PromotablePinCoverage.test.ts`).
|
|
37
|
-
*/
|
|
38
|
-
slot: string;
|
|
39
|
-
/**
|
|
40
|
-
* The value `toggle` promotes — the on-value {@link makePin} was given, or the
|
|
41
|
-
* track's current resolved value for the value-omitted form.
|
|
42
|
-
*
|
|
43
|
-
* `PinAdornment` words itself from this, and has to: a **boolean** on-value
|
|
44
|
-
* promotes a *state*, so a row whose label names the setting rather than a
|
|
45
|
-
* value ("Show legend") gets a pin that promotes hiding the legend as often as
|
|
46
|
-
* showing it. Every other on-value IS what the row's label says — a radio
|
|
47
|
-
* option, a slider's current size — so those keep the value-shaped copy.
|
|
48
|
-
*
|
|
49
|
-
* Required, like `slot`: a pin that cannot say what it promotes is what let
|
|
50
|
-
* that copy state the opposite of what the click does.
|
|
51
|
-
*/
|
|
52
|
-
onValue: unknown;
|
|
53
|
-
active: boolean;
|
|
54
|
-
toggle: () => void;
|
|
55
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|