@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
package/esm/ui/theme.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { createTheme } from '@mui/material';
|
|
1
|
+
import { createTheme } from '@mui/material/styles';
|
|
2
2
|
import { deepMerge } from '../util/deepMerge.js';
|
|
3
|
-
import { palettePresets, resolvePalette } from './palette.js';
|
|
3
|
+
import { palettePresets, resolvePalette, resolveThemeSelection, } from './palette.js';
|
|
4
4
|
import { DEFAULT_FONT_SIZE, DEFAULT_SPACING } from './styleTheme.js';
|
|
5
5
|
// The colors themselves live in `palette.ts`, which imports no toolkit. This
|
|
6
6
|
// module's job is to hand what `resolvePalette` produces to MUI, so JBrowse's
|
|
@@ -9,46 +9,38 @@ import { DEFAULT_FONT_SIZE, DEFAULT_SPACING } from './styleTheme.js';
|
|
|
9
9
|
// Static domain colors and the theme presets are re-exported from palette.ts so
|
|
10
10
|
// existing `@jbrowse/core/ui` imports are unaffected. Import them from
|
|
11
11
|
// `@jbrowse/core/ui/palette` to get them without pulling in Material UI.
|
|
12
|
-
export { colorFwdStrand, colorInterchrom, colorLongInsert, colorLongreadInv,
|
|
13
|
-
// The display names and MUI component overrides layered on top of each palette
|
|
14
|
-
//
|
|
15
|
-
//
|
|
12
|
+
export { colorFwdStrand, colorInterchrom, colorLongInsert, colorLongreadInv, colorPairLL, colorPairLR, colorPairLRDark, colorPairRL, colorPairRR, colorRevStrand, colorShortInsert, colorSplitReadInversion, colorSupplementary, colorUnmappedMate, colorUnmappedMateDark, methylated5hmC, methylated5mC, tagColorPalette, unmethylated5mC, } from './palette.js';
|
|
13
|
+
// The display names and MUI component overrides layered on top of each palette.
|
|
14
|
+
// The colors come from palette.ts, so a palette is stated once and this map is
|
|
15
|
+
// the Material UI half of it. Light and dark are not entries here — they are
|
|
16
|
+
// `mode`, which every one of these resolves along.
|
|
16
17
|
export const defaultThemes = {
|
|
17
18
|
default: { palette: palettePresets.default, name: 'Default (from config)' },
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
palette: palettePresets.lightMinimal,
|
|
19
|
+
stock: {
|
|
20
|
+
name: 'Stock',
|
|
21
|
+
palette: palettePresets.stock,
|
|
22
22
|
},
|
|
23
|
-
|
|
24
|
-
name: '
|
|
25
|
-
palette: palettePresets.
|
|
26
|
-
},
|
|
27
|
-
darkStock: {
|
|
28
|
-
name: 'Dark (stock)',
|
|
29
|
-
palette: palettePresets.darkStock,
|
|
30
|
-
components: {
|
|
31
|
-
// enableColorOnDark keeps the AppBar tinted with primary.main in dark
|
|
32
|
-
// mode (default MUI behavior is to flatten it to the paper color)
|
|
33
|
-
MuiAppBar: { defaultProps: { enableColorOnDark: true } },
|
|
34
|
-
},
|
|
23
|
+
minimal: {
|
|
24
|
+
name: 'Minimal',
|
|
25
|
+
palette: palettePresets.minimal,
|
|
35
26
|
},
|
|
36
27
|
};
|
|
37
|
-
// The default primary (midnight) has poor contrast as a
|
|
38
|
-
//
|
|
39
|
-
//
|
|
28
|
+
// The default primary (midnight) has poor contrast as a control color in dark
|
|
29
|
+
// mode, so a control takes `accent` there, the token JBrowse's own non-Material
|
|
30
|
+
// controls read. The extra selectors recolor checked/focused states too.
|
|
40
31
|
// xref https://stackoverflow.com/a/72546130/2129219
|
|
41
|
-
function darkModeContrastOverride(extraSelectors = [],
|
|
32
|
+
function darkModeContrastOverride(extraSelectors = [], colorOf = p => p.accent) {
|
|
42
33
|
return {
|
|
43
|
-
root: ({ theme }) =>
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
...Object.fromEntries(extraSelectors.map(selector => [
|
|
47
|
-
selector,
|
|
48
|
-
{ color: theme.palette.text[textColor] },
|
|
49
|
-
])),
|
|
34
|
+
root: ({ theme }) => {
|
|
35
|
+
if (theme.palette.mode !== 'dark') {
|
|
36
|
+
return undefined;
|
|
50
37
|
}
|
|
51
|
-
|
|
38
|
+
const color = colorOf(theme.palette);
|
|
39
|
+
return {
|
|
40
|
+
color,
|
|
41
|
+
...Object.fromEntries(extraSelectors.map(s => [s, { color }])),
|
|
42
|
+
};
|
|
43
|
+
},
|
|
52
44
|
};
|
|
53
45
|
}
|
|
54
46
|
// midnight primary is nearly invisible as an icon color on the dark header/
|
|
@@ -68,7 +60,19 @@ const baseThemeOptions = {
|
|
|
68
60
|
fontSize: DEFAULT_FONT_SIZE,
|
|
69
61
|
},
|
|
70
62
|
spacing: DEFAULT_SPACING,
|
|
63
|
+
// an animation makes every popover, dialog and hover trail the input
|
|
64
|
+
motion: {
|
|
65
|
+
reducedMotion: 'always',
|
|
66
|
+
},
|
|
71
67
|
components: {
|
|
68
|
+
MuiAppBar: {
|
|
69
|
+
// JBrowse's header keeps its brand in dark mode; MUI's default is to
|
|
70
|
+
// flatten it to the paper colour. A property of the app rather than of
|
|
71
|
+
// one palette — it used to sit on `darkStock` alone, so the theme a
|
|
72
|
+
// reader reaches by picking Dark over the default palette lost the
|
|
73
|
+
// header the old dark theme had. MUI reads this only in dark mode.
|
|
74
|
+
defaultProps: { enableColorOnDark: true },
|
|
75
|
+
},
|
|
72
76
|
MuiTooltip: {
|
|
73
77
|
styleOverrides: {
|
|
74
78
|
tooltip: {
|
|
@@ -83,14 +87,13 @@ const baseThemeOptions = {
|
|
|
83
87
|
// the default button, especially when not using variant=contained, uses
|
|
84
88
|
// theme.palette.primary.main for text which is very bad with dark
|
|
85
89
|
// mode+midnight primary
|
|
86
|
-
styleOverrides: darkModeContrastOverride([],
|
|
90
|
+
styleOverrides: darkModeContrastOverride([], p => p.text.primary),
|
|
87
91
|
},
|
|
88
92
|
MuiAccordion: {
|
|
89
93
|
defaultProps: {
|
|
90
94
|
disableGutters: true,
|
|
91
95
|
slotProps: {
|
|
92
96
|
transition: {
|
|
93
|
-
timeout: 150,
|
|
94
97
|
unmountOnExit: true,
|
|
95
98
|
},
|
|
96
99
|
},
|
|
@@ -166,16 +169,6 @@ const baseThemeOptions = {
|
|
|
166
169
|
size: 'small',
|
|
167
170
|
},
|
|
168
171
|
},
|
|
169
|
-
MuiPopover: {
|
|
170
|
-
defaultProps: {
|
|
171
|
-
transitionDuration: 0,
|
|
172
|
-
},
|
|
173
|
-
},
|
|
174
|
-
MuiMenu: {
|
|
175
|
-
defaultProps: {
|
|
176
|
-
transitionDuration: 0,
|
|
177
|
-
},
|
|
178
|
-
},
|
|
179
172
|
MuiMenuItem: {
|
|
180
173
|
defaultProps: {
|
|
181
174
|
dense: true,
|
|
@@ -209,6 +202,11 @@ const baseThemeOptions = {
|
|
|
209
202
|
MuiFormLabel: {
|
|
210
203
|
styleOverrides: darkModeContrastOverride(['&.Mui-focused']),
|
|
211
204
|
},
|
|
205
|
+
// the rail, track and thumb are all `currentColor` off the root, so a
|
|
206
|
+
// midnight root paints the whole control dark-on-dark
|
|
207
|
+
MuiSlider: {
|
|
208
|
+
styleOverrides: darkModeContrastOverride(),
|
|
209
|
+
},
|
|
212
210
|
MuiAccordionSummary: {
|
|
213
211
|
styleOverrides: {
|
|
214
212
|
root: ({ theme: t }) => ({
|
|
@@ -217,6 +215,10 @@ const baseThemeOptions = {
|
|
|
217
215
|
content: ({ theme: t }) => ({
|
|
218
216
|
color: t.palette.tertiary.contrastText,
|
|
219
217
|
}),
|
|
218
|
+
// MUI paints the chevron action.active, which vanishes on tertiary
|
|
219
|
+
expandIconWrapper: ({ theme: t }) => ({
|
|
220
|
+
color: t.palette.tertiary.contrastText,
|
|
221
|
+
}),
|
|
220
222
|
},
|
|
221
223
|
},
|
|
222
224
|
MuiToggleButtonGroup: {
|
|
@@ -224,33 +226,6 @@ const baseThemeOptions = {
|
|
|
224
226
|
size: 'small',
|
|
225
227
|
},
|
|
226
228
|
},
|
|
227
|
-
// Speed up ripple animations for snappier feel (default is 550ms)
|
|
228
|
-
// See https://mui.com/material-ui/api/button-base/
|
|
229
|
-
// and https://github.com/mui/material-ui/blob/master/packages/mui-material/src/ButtonBase/TouchRipple.js
|
|
230
|
-
//
|
|
231
|
-
// The click ripple only: a *focus* ripple is a different animation on the
|
|
232
|
-
// same two elements — childPulsate, which runs `infinite` — so a blanket
|
|
233
|
-
// 50ms turns MUI's 2500ms breath into a 20Hz strobe that never stops. It
|
|
234
|
-
// shows up on any focus-visible button, and Chrome hands one out unasked:
|
|
235
|
-
// it re-evaluates :focus-visible on the already-focused element after any
|
|
236
|
-
// keystroke, and the focus event that a browser-tab switch fires on the way
|
|
237
|
-
// back is what makes MUI act on it. So these select the enter and leaving
|
|
238
|
-
// keyframes by name and let the pulsate keep its own duration.
|
|
239
|
-
//
|
|
240
|
-
// Both selectors also outrank TouchRipple's own rules on specificity, which
|
|
241
|
-
// is what `!important` was here for.
|
|
242
|
-
MuiButtonBase: {
|
|
243
|
-
styleOverrides: {
|
|
244
|
-
root: {
|
|
245
|
-
'& .MuiTouchRipple-ripple.MuiTouchRipple-rippleVisible:not(.MuiTouchRipple-ripplePulsate)': {
|
|
246
|
-
animationDuration: '50ms',
|
|
247
|
-
},
|
|
248
|
-
'& .MuiTouchRipple-child.MuiTouchRipple-childLeaving': {
|
|
249
|
-
animationDuration: '50ms',
|
|
250
|
-
},
|
|
251
|
-
},
|
|
252
|
-
},
|
|
253
|
-
},
|
|
254
229
|
},
|
|
255
230
|
};
|
|
256
231
|
export function createJBrowseBaseTheme(theme = {}) {
|
|
@@ -262,12 +237,12 @@ export function createJBrowseBaseTheme(theme = {}) {
|
|
|
262
237
|
* thread and a worker resolve to the same colors.
|
|
263
238
|
*/
|
|
264
239
|
export function createJBrowseThemeFromArgs(args = {}) {
|
|
265
|
-
return createJBrowseTheme(args.configTheme, { ...defaultThemes, ...args.extraThemes }, args.themeName);
|
|
240
|
+
return createJBrowseTheme(args.configTheme, { ...defaultThemes, ...args.extraThemes }, args.themeName, args.mode);
|
|
266
241
|
}
|
|
267
242
|
// Memoizes the built MUI theme across calls. Bounded in practice: the key space
|
|
268
243
|
// is (config theme x selected preset), a handful of entries.
|
|
269
244
|
const themeCache = new Map();
|
|
270
|
-
function getThemeCacheKey(configTheme, selectedTheme, themeName) {
|
|
245
|
+
function getThemeCacheKey(configTheme, selectedTheme, themeName, mode) {
|
|
271
246
|
// key on the single selected theme definition, not the whole themes map,
|
|
272
247
|
// so configurable extraThemes that reuse a name still bust the cache.
|
|
273
248
|
// configTheme only participates on the 'default' path that reads it
|
|
@@ -275,6 +250,7 @@ function getThemeCacheKey(configTheme, selectedTheme, themeName) {
|
|
|
275
250
|
configTheme: themeName === 'default' ? configTheme : undefined,
|
|
276
251
|
selectedTheme,
|
|
277
252
|
themeName,
|
|
253
|
+
mode,
|
|
278
254
|
},
|
|
279
255
|
// a plugin-supplied theme can carry style-override callbacks, which
|
|
280
256
|
// JSON.stringify drops, so two such themes would otherwise share a key
|
|
@@ -289,8 +265,11 @@ function getThemeCacheKey(configTheme, selectedTheme, themeName) {
|
|
|
289
265
|
* component defaults and style overrides in `baseThemeOptions`, plus whatever
|
|
290
266
|
* non-palette options the selected theme or the config theme declares.
|
|
291
267
|
*/
|
|
292
|
-
export function createJBrowseTheme(configTheme = {}, themes = defaultThemes,
|
|
293
|
-
|
|
268
|
+
export function createJBrowseTheme(configTheme = {}, themes = defaultThemes, requestedName = 'default', requestedMode) {
|
|
269
|
+
// one resolver with resolvePalette, so a retired name and an extraThemes
|
|
270
|
+
// entry shadowing one mean the same thing to the colors and to the chrome
|
|
271
|
+
const { themeName, mode } = resolveThemeSelection(requestedName, requestedMode, themes);
|
|
272
|
+
const cacheKey = getThemeCacheKey(configTheme, themes[themeName], themeName, mode);
|
|
294
273
|
const cached = themeCache.get(cacheKey);
|
|
295
274
|
if (cached) {
|
|
296
275
|
return cached;
|
|
@@ -301,7 +280,12 @@ export function createJBrowseTheme(configTheme = {}, themes = defaultThemes, the
|
|
|
301
280
|
const merged = themeName === 'default' ? deepMerge(selected, configTheme) : selected;
|
|
302
281
|
const theme = createTheme(createJBrowseBaseTheme({
|
|
303
282
|
...merged,
|
|
304
|
-
palette: resolvePalette({
|
|
283
|
+
palette: resolvePalette({
|
|
284
|
+
configTheme,
|
|
285
|
+
themeName,
|
|
286
|
+
mode,
|
|
287
|
+
extraThemes: themes,
|
|
288
|
+
}),
|
|
305
289
|
}));
|
|
306
290
|
themeCache.set(cacheKey, theme);
|
|
307
291
|
return theme;
|
|
@@ -26,11 +26,9 @@ export declare function checkboxItem(label: string, checked: boolean, onToggle:
|
|
|
26
26
|
export declare function toggleItem(label: string, value: boolean, setValue: (value: boolean) => void, opts?: SettingRowOptions): CheckboxMenuItem;
|
|
27
27
|
/** #menuBuilder radioItem | one radio setting row; the singular of `radioItems` */
|
|
28
28
|
export declare function radioItem(label: string, checked: boolean, onClick: () => void, opts?: SettingRowOptions): RadioMenuItem;
|
|
29
|
-
export interface RadioOption<T extends string> {
|
|
29
|
+
export interface RadioOption<T extends string> extends SettingRowOptions {
|
|
30
30
|
value: T;
|
|
31
31
|
label: string;
|
|
32
|
-
helpText?: string;
|
|
33
|
-
keepMenuOpen?: boolean;
|
|
34
32
|
}
|
|
35
33
|
/** #menuBuilder radioItems | a radio group, one row per option */
|
|
36
34
|
export declare function radioItems<T extends string>(options: readonly RadioOption<T>[], current: T | undefined, setMode: (m: T) => void): RadioMenuItem[];
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** #menuBuilder checkboxItem | one checkbox setting row */
|
|
2
|
-
export function checkboxItem(label, checked, onToggle, opts) {
|
|
2
|
+
export function checkboxItem(label, checked, onToggle, opts = {}) {
|
|
3
3
|
return {
|
|
4
4
|
label,
|
|
5
5
|
type: 'checkbox',
|
|
@@ -29,11 +29,12 @@ export function toggleItem(label, value, setValue, opts) {
|
|
|
29
29
|
setValue(!value);
|
|
30
30
|
}, opts);
|
|
31
31
|
}
|
|
32
|
-
// One radio row. The singular of `radioItems`,
|
|
33
|
-
//
|
|
34
|
-
// group
|
|
32
|
+
// One radio row. The singular of `radioItems`, for a group the plural form
|
|
33
|
+
// can't express: a row with no single value (the colorBy "Tag..." row before a
|
|
34
|
+
// tag is picked), or a group gated row by row and mixing in a non-uniform peer
|
|
35
|
+
// (the alignments size presets and their "Custom..." row).
|
|
35
36
|
/** #menuBuilder radioItem | one radio setting row; the singular of `radioItems` */
|
|
36
|
-
export function radioItem(label, checked, onClick, opts) {
|
|
37
|
+
export function radioItem(label, checked, onClick, opts = {}) {
|
|
37
38
|
return {
|
|
38
39
|
label,
|
|
39
40
|
type: 'radio',
|
|
@@ -19,7 +19,7 @@ export declare function useAssemblySelection(session: AbstractSessionModel, loca
|
|
|
19
19
|
error: unknown;
|
|
20
20
|
loadingP: Promise<void> | undefined;
|
|
21
21
|
adapterLoads: import("@jbrowse/quick-lru").default<string, Promise<import("../assemblyManager/refNameMaps.ts").RefNameAliases>>;
|
|
22
|
-
|
|
22
|
+
regions: import("../assemblyManager/assembly.ts").BasicRegion[] | undefined;
|
|
23
23
|
refNameAliases: import("../assemblyManager/refNameMaps.ts").RefNameAliases | undefined;
|
|
24
24
|
canonicalToSeqAdapterRefNames: Record<string, string> | undefined;
|
|
25
25
|
cytobands: import("../util/simpleFeature.ts").Feature[] | undefined;
|
|
@@ -57,7 +57,6 @@ export declare function useAssemblySelection(session: AbstractSessionModel, loca
|
|
|
57
57
|
afterAttach(): void;
|
|
58
58
|
} & {
|
|
59
59
|
readonly initialized: boolean;
|
|
60
|
-
readonly regions: import("../assemblyManager/assembly.ts").BasicRegion[] | undefined;
|
|
61
60
|
readonly allRefNames: string[] | undefined;
|
|
62
61
|
readonly namesByCanonicalRefName: Map<string, string[]> | undefined;
|
|
63
62
|
readonly rpcManager: import("../rpc/RpcManager.ts").default;
|
|
@@ -75,6 +74,7 @@ export declare function useAssemblySelection(session: AbstractSessionModel, loca
|
|
|
75
74
|
getCanonicalRefName2(refName: string): string;
|
|
76
75
|
isValidRefName(refName: string): boolean;
|
|
77
76
|
} & {
|
|
77
|
+
getRefNamePosition(refName: string): number | undefined;
|
|
78
78
|
getAliasesForRefName(refName: string): string[];
|
|
79
79
|
getRefNameMapForAdapter(adapterConf: {
|
|
80
80
|
[x: string]: unknown;
|
|
@@ -86,7 +86,7 @@ export declare function useAssemblySelection(session: AbstractSessionModel, loca
|
|
|
86
86
|
error: unknown;
|
|
87
87
|
loadingP: Promise<void> | undefined;
|
|
88
88
|
adapterLoads: import("@jbrowse/quick-lru").default<string, Promise<import("../assemblyManager/refNameMaps.ts").RefNameAliases>>;
|
|
89
|
-
|
|
89
|
+
regions: import("../assemblyManager/assembly.ts").BasicRegion[] | undefined;
|
|
90
90
|
refNameAliases: import("../assemblyManager/refNameMaps.ts").RefNameAliases | undefined;
|
|
91
91
|
canonicalToSeqAdapterRefNames: Record<string, string> | undefined;
|
|
92
92
|
cytobands: import("../util/simpleFeature.ts").Feature[] | undefined;
|
|
@@ -124,7 +124,6 @@ export declare function useAssemblySelection(session: AbstractSessionModel, loca
|
|
|
124
124
|
afterAttach(): void;
|
|
125
125
|
} & {
|
|
126
126
|
readonly initialized: boolean;
|
|
127
|
-
readonly regions: import("../assemblyManager/assembly.ts").BasicRegion[] | undefined;
|
|
128
127
|
readonly allRefNames: string[] | undefined;
|
|
129
128
|
readonly namesByCanonicalRefName: Map<string, string[]> | undefined;
|
|
130
129
|
readonly rpcManager: import("../rpc/RpcManager.ts").default;
|
|
@@ -142,6 +141,7 @@ export declare function useAssemblySelection(session: AbstractSessionModel, loca
|
|
|
142
141
|
getCanonicalRefName2(refName: string): string;
|
|
143
142
|
isValidRefName(refName: string): boolean;
|
|
144
143
|
} & {
|
|
144
|
+
getRefNamePosition(refName: string): number | undefined;
|
|
145
145
|
getAliasesForRefName(refName: string): string[];
|
|
146
146
|
getRefNameMapForAdapter(adapterConf: {
|
|
147
147
|
[x: string]: unknown;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const VIEW_HEADER_HEIGHT = 28;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const VIEW_HEADER_HEIGHT = 28;
|
|
@@ -43,7 +43,7 @@ export interface ViewLayout {
|
|
|
43
43
|
export declare function moveTo(self: MoveSnap & {
|
|
44
44
|
zoomTo: (arg: number) => number;
|
|
45
45
|
scrollTo: (arg: number) => void;
|
|
46
|
-
}, start?: BpOffset, end?: BpOffset): void;
|
|
46
|
+
}, start?: BpOffset, end?: BpOffset, minBpPerPx?: number): void;
|
|
47
47
|
/**
|
|
48
48
|
* Pure version of moveTo: returns the {bpPerPx, offsetPx} that moveTo would
|
|
49
49
|
* apply, without mutating any model. Assumes no bpPerPx clamping (i.e.
|
|
@@ -121,7 +121,7 @@ export declare function bpToPx({ refName, coord, displayedRegionIndex, self, }:
|
|
|
121
121
|
* Undefined when no displayed region holds the coord, same as `bpToPx`; a
|
|
122
122
|
* caller that means "as far as the region goes" clamps before asking.
|
|
123
123
|
*/
|
|
124
|
-
export declare function bpToOffset({ refName, coord, displayedRegions, }: {
|
|
124
|
+
export declare function bpToOffset({ refName, coord, displayedRegions, displayedRegionIndex, }: {
|
|
125
125
|
refName: string;
|
|
126
126
|
coord: number;
|
|
127
127
|
displayedRegions: {
|
|
@@ -130,6 +130,7 @@ export declare function bpToOffset({ refName, coord, displayedRegions, }: {
|
|
|
130
130
|
end: number;
|
|
131
131
|
reversed?: boolean;
|
|
132
132
|
}[];
|
|
133
|
+
displayedRegionIndex?: number;
|
|
133
134
|
}): BpOffset | undefined;
|
|
134
135
|
/**
|
|
135
136
|
* Where a 0-based genomic coord sits in the LINEARIZED bp space — the
|
|
@@ -145,7 +146,7 @@ export declare function bpToOffset({ refName, coord, displayedRegions, }: {
|
|
|
145
146
|
* `undefined` when no displayed region holds the coord, exactly as `bpToPx`
|
|
146
147
|
* answers: a refName the view is not showing has no place on its screen.
|
|
147
148
|
*/
|
|
148
|
-
export declare function bpToLinearBp({ refName, coord, displayedRegions, }: {
|
|
149
|
+
export declare function bpToLinearBp({ refName, coord, displayedRegions, displayedRegionIndex, }: {
|
|
149
150
|
refName: string;
|
|
150
151
|
coord: number;
|
|
151
152
|
displayedRegions: {
|
|
@@ -154,6 +155,7 @@ export declare function bpToLinearBp({ refName, coord, displayedRegions, }: {
|
|
|
154
155
|
end: number;
|
|
155
156
|
reversed?: boolean;
|
|
156
157
|
}[];
|
|
158
|
+
displayedRegionIndex?: number;
|
|
157
159
|
}): number | undefined;
|
|
158
160
|
/**
|
|
159
161
|
* Screen order of two {@link BpOffset}s: negative when `a` is to the left of
|
package/esm/util/Base1DUtils.js
CHANGED
|
@@ -28,10 +28,10 @@ function computeScrollPos(self, start, bpPerPx, extraBp) {
|
|
|
28
28
|
return Math.round((cumulativeBp(self.displayedRegions, start.index, start.offset) - extraBp) /
|
|
29
29
|
bpPerPx);
|
|
30
30
|
}
|
|
31
|
-
export function moveTo(self, start, end) {
|
|
31
|
+
export function moveTo(self, start, end, minBpPerPx = 0) {
|
|
32
32
|
if (start && end) {
|
|
33
33
|
const targetBpPerPx = computeTargetBpPerPx(self, start, end);
|
|
34
|
-
const newBpPerPx = self.zoomTo(targetBpPerPx);
|
|
34
|
+
const newBpPerPx = self.zoomTo(Math.max(targetBpPerPx, minBpPerPx));
|
|
35
35
|
const extraBp = targetBpPerPx < newBpPerPx
|
|
36
36
|
? ((newBpPerPx - targetBpPerPx) * self.width) / 2
|
|
37
37
|
: 0;
|
|
@@ -187,9 +187,12 @@ export function bpToPx({ refName, coord, displayedRegionIndex, self, }) {
|
|
|
187
187
|
* Undefined when no displayed region holds the coord, same as `bpToPx`; a
|
|
188
188
|
* caller that means "as far as the region goes" clamps before asking.
|
|
189
189
|
*/
|
|
190
|
-
export function bpToOffset({ refName, coord, displayedRegions, }) {
|
|
190
|
+
export function bpToOffset({ refName, coord, displayedRegions, displayedRegionIndex, }) {
|
|
191
191
|
for (const [index, r] of displayedRegions.entries()) {
|
|
192
|
-
if (refName === r.refName &&
|
|
192
|
+
if (refName === r.refName &&
|
|
193
|
+
coord >= r.start &&
|
|
194
|
+
coord <= r.end &&
|
|
195
|
+
(displayedRegionIndex === undefined || displayedRegionIndex === index)) {
|
|
193
196
|
return { refName, index, offset: bpOffsetInRegion(r, coord) };
|
|
194
197
|
}
|
|
195
198
|
}
|
|
@@ -209,8 +212,13 @@ export function bpToOffset({ refName, coord, displayedRegions, }) {
|
|
|
209
212
|
* `undefined` when no displayed region holds the coord, exactly as `bpToPx`
|
|
210
213
|
* answers: a refName the view is not showing has no place on its screen.
|
|
211
214
|
*/
|
|
212
|
-
export function bpToLinearBp({ refName, coord, displayedRegions, }) {
|
|
213
|
-
const at = bpToOffset({
|
|
215
|
+
export function bpToLinearBp({ refName, coord, displayedRegions, displayedRegionIndex, }) {
|
|
216
|
+
const at = bpToOffset({
|
|
217
|
+
refName,
|
|
218
|
+
coord,
|
|
219
|
+
displayedRegions,
|
|
220
|
+
displayedRegionIndex,
|
|
221
|
+
});
|
|
214
222
|
return at ? cumulativeBp(displayedRegions, at.index, at.offset) : undefined;
|
|
215
223
|
}
|
|
216
224
|
/**
|
|
@@ -130,8 +130,9 @@ declare const Base1DView: import("@jbrowse/mobx-state-tree").IModelType<{
|
|
|
130
130
|
*
|
|
131
131
|
* @param start - object as `{start, end, offset, index}`
|
|
132
132
|
* @param end - object as `{start, end, offset, index}`
|
|
133
|
+
* @param minBpPerPx - zoom no further in than this, centering the span
|
|
133
134
|
*/
|
|
134
|
-
moveTo(start?: BpOffset, end?: BpOffset): void;
|
|
135
|
+
moveTo(start?: BpOffset, end?: BpOffset, minBpPerPx?: number): void;
|
|
135
136
|
}, import("@jbrowse/mobx-state-tree")._NotCustomized, import("@jbrowse/mobx-state-tree")._NotCustomized>;
|
|
136
137
|
export type Base1DViewStateModel = typeof Base1DView;
|
|
137
138
|
export type Base1DViewModel = Instance<Base1DViewStateModel>;
|
|
@@ -230,9 +230,10 @@ const Base1DView = types
|
|
|
230
230
|
*
|
|
231
231
|
* @param start - object as `{start, end, offset, index}`
|
|
232
232
|
* @param end - object as `{start, end, offset, index}`
|
|
233
|
+
* @param minBpPerPx - zoom no further in than this, centering the span
|
|
233
234
|
*/
|
|
234
|
-
moveTo(start, end) {
|
|
235
|
-
moveTo(self, start, end);
|
|
235
|
+
moveTo(start, end, minBpPerPx) {
|
|
236
|
+
moveTo(self, start, end, minBpPerPx);
|
|
236
237
|
},
|
|
237
238
|
}));
|
|
238
239
|
export default Base1DView;
|
package/esm/util/SvgCanvas.d.ts
CHANGED
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Run `render` as one document's clip-id numbering run, starting at 0, then put
|
|
3
|
+
* the counter back.
|
|
3
4
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* that aren't real, and `jest -t` on any export test but the first fails its
|
|
9
|
-
* checked-in snapshot with a diff that is nothing but renumbering.
|
|
5
|
+
* Starting at 0 is what makes the same view export to the same bytes: a counter
|
|
6
|
+
* left running numbers each export from wherever the previous one stopped, so
|
|
7
|
+
* diffing two saved SVGs shows changes that aren't real and `jest -t` on any
|
|
8
|
+
* export test but the first fails its snapshot on renumbering alone.
|
|
10
9
|
*
|
|
11
|
-
*
|
|
12
|
-
* `
|
|
13
|
-
*
|
|
14
|
-
*
|
|
10
|
+
* Putting it back is what keeps a file export from renumbering the page: live
|
|
11
|
+
* figures (`useViewSvgFigure`) mint from the same counter into one DOM, where
|
|
12
|
+
* ids must not repeat, so a reset that stuck would let the next figure reuse an
|
|
13
|
+
* id another figure still points at.
|
|
14
|
+
*
|
|
15
|
+
* `render` must be synchronous — an `await` inside it would let two documents
|
|
16
|
+
* share a numbering run.
|
|
15
17
|
*/
|
|
16
|
-
export declare function
|
|
18
|
+
export declare function withFreshSvgClipIds<T>(render: () => T): T;
|
|
17
19
|
export declare class SvgCanvas {
|
|
18
20
|
private parts;
|
|
19
21
|
private pathData;
|
|
@@ -36,6 +38,7 @@ export declare class SvgCanvas {
|
|
|
36
38
|
private e;
|
|
37
39
|
private f;
|
|
38
40
|
private get axisAligned();
|
|
41
|
+
private get lengthScale();
|
|
39
42
|
private transformPoint;
|
|
40
43
|
private transformSize;
|
|
41
44
|
private originMatrixAttr;
|
|
@@ -72,7 +75,6 @@ export declare class SvgCanvas {
|
|
|
72
75
|
fillText(text: string, x: number, y: number): void;
|
|
73
76
|
strokeText(text: string, x: number, y: number): void;
|
|
74
77
|
drawImage(..._args: unknown[]): void;
|
|
75
|
-
putImageData(..._args: unknown[]): void;
|
|
76
78
|
clip(..._args: unknown[]): void;
|
|
77
79
|
measureText(text: string): {
|
|
78
80
|
width: number;
|