@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
package/esm/util/colorRamp.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { RampStop } from '../ui/colorScale.ts';
|
|
2
|
+
import type { ColorSchemeName } from './colorSchemes.ts';
|
|
2
3
|
/** One evenly-spaced ramp stop: 8-bit red, green, blue, alpha. */
|
|
3
4
|
export type ColorRampStop = readonly [number, number, number, number];
|
|
4
5
|
/**
|
|
@@ -8,6 +9,27 @@ export type ColorRampStop = readonly [number, number, number, number];
|
|
|
8
9
|
* stops.
|
|
9
10
|
*/
|
|
10
11
|
export declare const VIRIDIS_STOPS: readonly ColorRampStop[];
|
|
12
|
+
/**
|
|
13
|
+
* #api
|
|
14
|
+
* Whether a named ramp runs dark at its low end, drawn over white: viridis
|
|
15
|
+
* and its siblings do, juicebox, fall, reds and blues do not.
|
|
16
|
+
*/
|
|
17
|
+
export declare function darkAtLowEnd(scheme: ColorSchemeName): boolean;
|
|
18
|
+
/**
|
|
19
|
+
* #api
|
|
20
|
+
* The domain a continuous colour scale spans: each end `min` or `max` pins,
|
|
21
|
+
* else the extent's, ascending, since a span has no direction and `reverse`
|
|
22
|
+
* is the ramp's. An open end stops at a pinned one rather than crossing it,
|
|
23
|
+
* and an extent holding no value (`[Infinity, -Infinity]`) spans [0, 1].
|
|
24
|
+
*/
|
|
25
|
+
export declare function rampDomain(min: number | undefined, max: number | undefined, extent: readonly [number, number]): [number, number];
|
|
26
|
+
/**
|
|
27
|
+
* #api
|
|
28
|
+
* The stops a continuous colour scale samples: `range`'s CSS colours where it
|
|
29
|
+
* lists any, else the named `scheme`, viridis while that is unset, turned
|
|
30
|
+
* round under `reverse`.
|
|
31
|
+
*/
|
|
32
|
+
export declare function colorRampStops({ range, scheme, reverse, }: RampDeclaration): readonly ColorRampStop[];
|
|
11
33
|
/**
|
|
12
34
|
* #api
|
|
13
35
|
* The color at `t` in `[0, 1]` across a list of EVENLY SPACED stops, linearly
|
|
@@ -22,16 +44,38 @@ export declare function sampleColorRamp(stops: readonly ColorRampStop[], t: numb
|
|
|
22
44
|
* texture both GPU backends upload and the Canvas2D twins index — entry `i` is
|
|
23
45
|
* the color at `t = i / (N - 1)`. N comes off the shader that samples it, so
|
|
24
46
|
* the table and `rampColor`'s texel mapping cannot disagree.
|
|
47
|
+
*
|
|
48
|
+
* The table is always straight. A diverging ramp whose middle belongs at a
|
|
49
|
+
* value off the centre of the domain reads it through `rampMidT`, the shader's
|
|
50
|
+
* rule and its generated twin, so the middle follows a moving domain without a
|
|
51
|
+
* new table.
|
|
25
52
|
*/
|
|
26
53
|
export declare function buildColorRampLut(stops: readonly ColorRampStop[]): Uint8Array<ArrayBuffer>;
|
|
54
|
+
/**
|
|
55
|
+
* #api
|
|
56
|
+
* A continuous colour scale's ramp as a config declares it.
|
|
57
|
+
*/
|
|
58
|
+
export interface RampDeclaration {
|
|
59
|
+
range?: readonly string[];
|
|
60
|
+
scheme?: ColorSchemeName;
|
|
61
|
+
reverse?: boolean;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* #api
|
|
65
|
+
* The {@link buildColorRampLut} table a ramp declaration asks for, the same
|
|
66
|
+
* `Uint8Array` for the same declaration, since a GPU backend re-uploads its
|
|
67
|
+
* ramp texture when the identity changes and a render state is rebuilt far
|
|
68
|
+
* more often than its ramp.
|
|
69
|
+
*/
|
|
70
|
+
export declare function rampLutOf(ramp: RampDeclaration): Uint8Array;
|
|
27
71
|
/**
|
|
28
72
|
* #api
|
|
29
73
|
* `n` evenly spaced legend stops read straight out of a
|
|
30
74
|
* {@link buildColorRampLut} byte table — the same 256×1 RGBA array
|
|
31
75
|
* `uploadColorRampLut` hands the GPU and the Canvas2D fillStyle LUTs index —
|
|
32
|
-
*
|
|
33
|
-
* swatch at bar fraction `t` is byte-identical to the ramp entry
|
|
34
|
-
*
|
|
76
|
+
* as the stops of a `RampScale`. It holds one claim by construction: the
|
|
77
|
+
* swatch at bar fraction `t` is byte-identical to the ramp entry both backends
|
|
78
|
+
* read at `t`, through the ramp's middle stop at `midNorm` (`rampMidT`). Alpha rides `opacity` (the juicebox fade), never baked into
|
|
35
79
|
* the color string.
|
|
36
80
|
*/
|
|
37
|
-
export declare function stopsFromRampLut(lut: Uint8Array, n: number):
|
|
81
|
+
export declare function stopsFromRampLut(lut: Uint8Array, n: number, midNorm?: number): RampStop[];
|
package/esm/util/colorRamp.js
CHANGED
|
@@ -1,18 +1,15 @@
|
|
|
1
1
|
import { COLOR_RAMP_LUT_ENTRIES } from '@jbrowse/render-core/colorRampLut';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
// gained the same named ramp; both build their 256×1 GPU/Canvas2D LUTs from
|
|
6
|
-
// this one table.
|
|
2
|
+
import { rampMidT } from '@jbrowse/render-core/shaders/colorRampLut';
|
|
3
|
+
import { cssColorToRgba } from './colorBits.js';
|
|
4
|
+
import { DEFAULT_COLOR_SCHEME } from './colorSchemes.js';
|
|
7
5
|
const VIRIDIS_HEX_SPEC = '44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725';
|
|
8
|
-
function
|
|
6
|
+
function stopsFromHex(spec) {
|
|
9
7
|
const out = [];
|
|
10
|
-
for (let i = 0; i <
|
|
11
|
-
const hex = VIRIDIS_HEX_SPEC.slice(i * 6, i * 6 + 6);
|
|
8
|
+
for (let i = 0; i < spec.length; i += 6) {
|
|
12
9
|
out.push([
|
|
13
|
-
Number.parseInt(
|
|
14
|
-
Number.parseInt(
|
|
15
|
-
Number.parseInt(
|
|
10
|
+
Number.parseInt(spec.slice(i, i + 2), 16),
|
|
11
|
+
Number.parseInt(spec.slice(i + 2, i + 4), 16),
|
|
12
|
+
Number.parseInt(spec.slice(i + 4, i + 6), 16),
|
|
16
13
|
255,
|
|
17
14
|
]);
|
|
18
15
|
}
|
|
@@ -24,7 +21,133 @@ function viridisStopsFromHex() {
|
|
|
24
21
|
* for the texture/fillStyle form, or to {@link sampleColorRamp} for legend
|
|
25
22
|
* stops.
|
|
26
23
|
*/
|
|
27
|
-
export const VIRIDIS_STOPS =
|
|
24
|
+
export const VIRIDIS_STOPS = stopsFromHex(VIRIDIS_HEX_SPEC);
|
|
25
|
+
const MAGMA_HEX_SPEC = '00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf';
|
|
26
|
+
const INFERNO_HEX_SPEC = '00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4';
|
|
27
|
+
const CIVIDIS_HEX_SPEC = '00224e00234f00245100255300255400265600275800285900285b00295d002a5f002a61002b62002c64002c66002d68002e6a002e6c002f6d00306f0030700031700031710132710533710833700c34700f357012357014367016377018376f1a386f1c396f1e3a6f203a6f213b6e233c6e243c6e263d6e273e6e293f6e2a3f6d2b406d2d416d2e416d2f426d31436d32436d33446d34456c35456c36466c38476c39486c3a486c3b496c3c4a6c3d4a6c3e4b6c3f4c6c404c6c414d6c424e6c434e6c444f6c45506c46516c47516c48526c49536c4a536c4b546c4c556c4d556c4e566c4f576c50576c51586d52596d535a6d545a6d555b6d555c6d565c6d575d6d585e6d595e6e5a5f6e5b606e5c616e5d616e5e626e5e636f5f636f60646f61656f62656f636670646770656870656870666970676a71686a71696b716a6c716b6d726c6d726c6e726d6f726e6f736f70737071737172747272747273747374757474757575757676767777767777777878777979777a7a787b7a787c7b787d7c787e7c787e7d787f7e78807f78817f788280798381798482798582798683798784788885788985788a86788b87788c88788d88788e89788f8a78908b78918b78928c78928d78938e78948e77958f779690779791779892779992779a93769b94769c95769d95769e96769f9775a09875a19975a29975a39a74a49b74a59c74a69c74a79d73a89e73a99f73aaa073aba072aca172ada272aea371afa471b0a571b1a570b3a670b4a76fb5a86fb6a96fb7a96eb8aa6eb9ab6dbaac6dbbad6dbcae6cbdae6cbeaf6bbfb06bc0b16ac1b26ac2b369c3b369c4b468c5b568c6b667c7b767c8b866c9b965cbb965ccba64cdbb63cebc63cfbd62d0be62d1bf61d2c060d3c05fd4c15fd5c25ed6c35dd7c45cd9c55cdac65bdbc75adcc859ddc858dec958dfca57e0cb56e1cc55e2cd54e4ce53e5cf52e6d051e7d150e8d24fe9d34eead34cebd44bedd54aeed649efd748f0d846f1d945f2da44f3db42f5dc41f6dd3ff7de3ef8df3cf9e03afbe138fce236fde334fee434fee535fee636fee838';
|
|
28
|
+
const FALL_STOPS = [
|
|
29
|
+
[255, 255, 255, 255],
|
|
30
|
+
[255, 255, 204, 255],
|
|
31
|
+
[255, 237, 160, 255],
|
|
32
|
+
[254, 217, 118, 255],
|
|
33
|
+
[254, 178, 76, 255],
|
|
34
|
+
[253, 141, 60, 255],
|
|
35
|
+
[252, 78, 42, 255],
|
|
36
|
+
[227, 26, 28, 255],
|
|
37
|
+
[189, 0, 38, 255],
|
|
38
|
+
[128, 0, 38, 255],
|
|
39
|
+
[0, 0, 0, 255],
|
|
40
|
+
];
|
|
41
|
+
const JUICEBOX_STOPS = [
|
|
42
|
+
[255, 0, 0, 0],
|
|
43
|
+
[255, 0, 0, 255],
|
|
44
|
+
];
|
|
45
|
+
const REDS_STOPS = [
|
|
46
|
+
[255, 245, 240, 255],
|
|
47
|
+
[254, 224, 210, 255],
|
|
48
|
+
[252, 187, 161, 255],
|
|
49
|
+
[252, 146, 114, 255],
|
|
50
|
+
[251, 106, 74, 255],
|
|
51
|
+
[239, 59, 44, 255],
|
|
52
|
+
[203, 24, 29, 255],
|
|
53
|
+
[165, 15, 21, 255],
|
|
54
|
+
[103, 0, 13, 255],
|
|
55
|
+
];
|
|
56
|
+
const BLUES_STOPS = [
|
|
57
|
+
[247, 251, 255, 255],
|
|
58
|
+
[222, 235, 247, 255],
|
|
59
|
+
[198, 219, 239, 255],
|
|
60
|
+
[158, 202, 225, 255],
|
|
61
|
+
[107, 174, 214, 255],
|
|
62
|
+
[66, 146, 198, 255],
|
|
63
|
+
[33, 113, 181, 255],
|
|
64
|
+
[8, 81, 156, 255],
|
|
65
|
+
[8, 48, 107, 255],
|
|
66
|
+
];
|
|
67
|
+
const REDBLUE_STOPS = [
|
|
68
|
+
[103, 0, 31, 255],
|
|
69
|
+
[178, 24, 43, 255],
|
|
70
|
+
[214, 96, 77, 255],
|
|
71
|
+
[244, 165, 130, 255],
|
|
72
|
+
[253, 219, 199, 255],
|
|
73
|
+
[247, 247, 247, 255],
|
|
74
|
+
[209, 229, 240, 255],
|
|
75
|
+
[146, 197, 222, 255],
|
|
76
|
+
[67, 147, 195, 255],
|
|
77
|
+
[33, 102, 172, 255],
|
|
78
|
+
[5, 48, 97, 255],
|
|
79
|
+
];
|
|
80
|
+
const PURPLEORANGE_STOPS = [
|
|
81
|
+
[45, 0, 75, 255],
|
|
82
|
+
[84, 39, 136, 255],
|
|
83
|
+
[128, 115, 172, 255],
|
|
84
|
+
[178, 171, 210, 255],
|
|
85
|
+
[216, 218, 235, 255],
|
|
86
|
+
[247, 247, 247, 255],
|
|
87
|
+
[254, 224, 182, 255],
|
|
88
|
+
[253, 184, 99, 255],
|
|
89
|
+
[224, 130, 20, 255],
|
|
90
|
+
[179, 88, 6, 255],
|
|
91
|
+
[127, 59, 8, 255],
|
|
92
|
+
];
|
|
93
|
+
const SCHEME_STOPS = {
|
|
94
|
+
viridis: VIRIDIS_STOPS,
|
|
95
|
+
juicebox: JUICEBOX_STOPS,
|
|
96
|
+
fall: FALL_STOPS,
|
|
97
|
+
reds: REDS_STOPS,
|
|
98
|
+
blues: BLUES_STOPS,
|
|
99
|
+
magma: stopsFromHex(MAGMA_HEX_SPEC),
|
|
100
|
+
inferno: stopsFromHex(INFERNO_HEX_SPEC),
|
|
101
|
+
cividis: stopsFromHex(CIVIDIS_HEX_SPEC),
|
|
102
|
+
redblue: REDBLUE_STOPS,
|
|
103
|
+
purpleorange: PURPLEORANGE_STOPS,
|
|
104
|
+
};
|
|
105
|
+
function luminanceOverWhite([r, g, b, a]) {
|
|
106
|
+
const over = (c) => 255 + (c - 255) * (a / 255);
|
|
107
|
+
return 0.2126 * over(r) + 0.7152 * over(g) + 0.0722 * over(b);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* #api
|
|
111
|
+
* Whether a named ramp runs dark at its low end, drawn over white: viridis
|
|
112
|
+
* and its siblings do, juicebox, fall, reds and blues do not.
|
|
113
|
+
*/
|
|
114
|
+
export function darkAtLowEnd(scheme) {
|
|
115
|
+
const stops = SCHEME_STOPS[scheme];
|
|
116
|
+
return luminanceOverWhite(stops[0]) < luminanceOverWhite(stops.at(-1));
|
|
117
|
+
}
|
|
118
|
+
const EMPTY_EXTENT_DOMAIN = [0, 1];
|
|
119
|
+
/**
|
|
120
|
+
* #api
|
|
121
|
+
* The domain a continuous colour scale spans: each end `min` or `max` pins,
|
|
122
|
+
* else the extent's, ascending, since a span has no direction and `reverse`
|
|
123
|
+
* is the ramp's. An open end stops at a pinned one rather than crossing it,
|
|
124
|
+
* and an extent holding no value (`[Infinity, -Infinity]`) spans [0, 1].
|
|
125
|
+
*/
|
|
126
|
+
export function rampDomain(min, max, extent) {
|
|
127
|
+
const [lo, hi] = extent[0] <= extent[1] ? extent : EMPTY_EXTENT_DOMAIN;
|
|
128
|
+
if (min !== undefined && max !== undefined) {
|
|
129
|
+
return min <= max ? [min, max] : [max, min];
|
|
130
|
+
}
|
|
131
|
+
if (min !== undefined) {
|
|
132
|
+
return [min, Math.max(min, hi)];
|
|
133
|
+
}
|
|
134
|
+
if (max !== undefined) {
|
|
135
|
+
return [Math.min(lo, max), max];
|
|
136
|
+
}
|
|
137
|
+
return [lo, hi];
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* #api
|
|
141
|
+
* The stops a continuous colour scale samples: `range`'s CSS colours where it
|
|
142
|
+
* lists any, else the named `scheme`, viridis while that is unset, turned
|
|
143
|
+
* round under `reverse`.
|
|
144
|
+
*/
|
|
145
|
+
export function colorRampStops({ range, scheme, reverse, }) {
|
|
146
|
+
const stops = range?.length
|
|
147
|
+
? range.map(c => cssColorToRgba(c))
|
|
148
|
+
: SCHEME_STOPS[scheme ?? DEFAULT_COLOR_SCHEME];
|
|
149
|
+
return reverse ? stops.toReversed() : stops;
|
|
150
|
+
}
|
|
28
151
|
function lerp8(a, b, t) {
|
|
29
152
|
return Math.round(a * (1 - t) + b * t);
|
|
30
153
|
}
|
|
@@ -54,6 +177,11 @@ export function sampleColorRamp(stops, t) {
|
|
|
54
177
|
* texture both GPU backends upload and the Canvas2D twins index — entry `i` is
|
|
55
178
|
* the color at `t = i / (N - 1)`. N comes off the shader that samples it, so
|
|
56
179
|
* the table and `rampColor`'s texel mapping cannot disagree.
|
|
180
|
+
*
|
|
181
|
+
* The table is always straight. A diverging ramp whose middle belongs at a
|
|
182
|
+
* value off the centre of the domain reads it through `rampMidT`, the shader's
|
|
183
|
+
* rule and its generated twin, so the middle follows a moving domain without a
|
|
184
|
+
* new table.
|
|
57
185
|
*/
|
|
58
186
|
export function buildColorRampLut(stops) {
|
|
59
187
|
const last = COLOR_RAMP_LUT_ENTRIES - 1;
|
|
@@ -67,24 +195,47 @@ export function buildColorRampLut(stops) {
|
|
|
67
195
|
}
|
|
68
196
|
return data;
|
|
69
197
|
}
|
|
198
|
+
const MAX_RAMP_LUTS = 32;
|
|
199
|
+
const luts = new Map();
|
|
200
|
+
/**
|
|
201
|
+
* #api
|
|
202
|
+
* The {@link buildColorRampLut} table a ramp declaration asks for, the same
|
|
203
|
+
* `Uint8Array` for the same declaration, since a GPU backend re-uploads its
|
|
204
|
+
* ramp texture when the identity changes and a render state is rebuilt far
|
|
205
|
+
* more often than its ramp.
|
|
206
|
+
*/
|
|
207
|
+
export function rampLutOf(ramp) {
|
|
208
|
+
const key = [ramp.scheme ?? '', ramp.range?.join(' ') ?? '', !!ramp.reverse]
|
|
209
|
+
.map(String)
|
|
210
|
+
.join('|');
|
|
211
|
+
let lut = luts.get(key);
|
|
212
|
+
if (!lut) {
|
|
213
|
+
if (luts.size >= MAX_RAMP_LUTS) {
|
|
214
|
+
luts.delete(luts.keys().next().value);
|
|
215
|
+
}
|
|
216
|
+
lut = buildColorRampLut(colorRampStops(ramp));
|
|
217
|
+
luts.set(key, lut);
|
|
218
|
+
}
|
|
219
|
+
return lut;
|
|
220
|
+
}
|
|
70
221
|
/**
|
|
71
222
|
* #api
|
|
72
223
|
* `n` evenly spaced legend stops read straight out of a
|
|
73
224
|
* {@link buildColorRampLut} byte table — the same 256×1 RGBA array
|
|
74
225
|
* `uploadColorRampLut` hands the GPU and the Canvas2D fillStyle LUTs index —
|
|
75
|
-
*
|
|
76
|
-
* swatch at bar fraction `t` is byte-identical to the ramp entry
|
|
77
|
-
*
|
|
226
|
+
* as the stops of a `RampScale`. It holds one claim by construction: the
|
|
227
|
+
* swatch at bar fraction `t` is byte-identical to the ramp entry both backends
|
|
228
|
+
* read at `t`, through the ramp's middle stop at `midNorm` (`rampMidT`). Alpha rides `opacity` (the juicebox fade), never baked into
|
|
78
229
|
* the color string.
|
|
79
230
|
*/
|
|
80
|
-
export function stopsFromRampLut(lut, n) {
|
|
231
|
+
export function stopsFromRampLut(lut, n, midNorm = 0.5) {
|
|
81
232
|
const lastEntry = lut.length / 4 - 1;
|
|
82
233
|
const out = [];
|
|
83
234
|
for (let i = 0; i < n; i++) {
|
|
84
235
|
const t = n === 1 ? 0 : i / (n - 1);
|
|
85
|
-
const o = Math.round(t * lastEntry) * 4;
|
|
236
|
+
const o = Math.round(rampMidT(t, midNorm) * lastEntry) * 4;
|
|
86
237
|
out.push({
|
|
87
|
-
offset:
|
|
238
|
+
offset: t,
|
|
88
239
|
color: `rgb(${lut[o]},${lut[o + 1]},${lut[o + 2]})`,
|
|
89
240
|
opacity: lut[o + 3] / 255,
|
|
90
241
|
});
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The scales a colour object paints through, in a module that imports
|
|
3
|
+
* nothing: `jbrowse validate` carries a copy of it, so the validator and the
|
|
4
|
+
* displays read one statement.
|
|
5
|
+
*/
|
|
6
|
+
/** How a colour object maps its `field`; `none` paints `value`. */
|
|
7
|
+
export declare const COLOR_SCALES: readonly ['none', 'categorical', 'linear', 'log', 'threshold'];
|
|
8
|
+
/**
|
|
9
|
+
* The scale that maps no field: each feature paints the colour it carries, and
|
|
10
|
+
* the key names the colours `domain` lists. Only a display whose features
|
|
11
|
+
* carry colours of their own declares it.
|
|
12
|
+
*/
|
|
13
|
+
export declare const IDENTITY_SCALE = "identity";
|
|
14
|
+
export type ColorScaleName = (typeof COLOR_SCALES)[number] | typeof IDENTITY_SCALE;
|
|
15
|
+
/**
|
|
16
|
+
* A field's defaults on a display: the scale it paints through while `scale`
|
|
17
|
+
* is unset, and the members that scale reads while the config leaves them
|
|
18
|
+
* unwritten, so a field with a vocabulary or ramp of its own is the colour
|
|
19
|
+
* object's defaults rather than a painter beside it.
|
|
20
|
+
*/
|
|
21
|
+
export interface FieldPreset<S extends string = ColorScaleName> {
|
|
22
|
+
scale: S;
|
|
23
|
+
/** The key a feature carrying no value files under. */
|
|
24
|
+
missing?: string;
|
|
25
|
+
domain?: readonly string[];
|
|
26
|
+
range?: readonly string[];
|
|
27
|
+
labels?: readonly string[];
|
|
28
|
+
title?: string;
|
|
29
|
+
domainMin?: number;
|
|
30
|
+
domainMax?: number;
|
|
31
|
+
domainMid?: number;
|
|
32
|
+
scheme?: string;
|
|
33
|
+
reverse?: boolean;
|
|
34
|
+
}
|
|
35
|
+
/** Each field's preset, `*` for any other field. */
|
|
36
|
+
export type FieldPresets<S extends string = ColorScaleName> = Readonly<Record<string, FieldPreset<S>>>;
|
|
37
|
+
/**
|
|
38
|
+
* The fields whose values have names, an order and colours of their own on
|
|
39
|
+
* every display, beneath each display's own presets. Red forward and blue
|
|
40
|
+
* reverse is what the synteny ribbons paint too. The SV classes are
|
|
41
|
+
* `svClassOf`'s, deletion red and duplication blue as dbVar and gnomAD-SV
|
|
42
|
+
* paint them, insertion the pileup's purple, and the rest kept apart under
|
|
43
|
+
* deuteranopia and protanopia. A record with no class files under `''`, so
|
|
44
|
+
* each display keeps its own no-value colour for it.
|
|
45
|
+
*/
|
|
46
|
+
export declare const UNIVERSAL_FIELD_PRESETS: {
|
|
47
|
+
readonly strand: {
|
|
48
|
+
readonly scale: 'categorical';
|
|
49
|
+
readonly missing: '0';
|
|
50
|
+
readonly domain: readonly ["1", "-1", "0"];
|
|
51
|
+
readonly range: readonly ["tomato", "cornflowerblue", "goldenrod"];
|
|
52
|
+
readonly labels: readonly ["Forward strand", "Reverse strand", "No strand"];
|
|
53
|
+
};
|
|
54
|
+
readonly svType: {
|
|
55
|
+
readonly scale: 'categorical';
|
|
56
|
+
readonly domain: readonly ["DEL", "DUP", "INS", "INV", "CNV", "TR", "BND", "CPX", "OTHER"];
|
|
57
|
+
readonly range: readonly ["#e41a1c", "#377eb8", "#800080", "#ff7f00", "#7e6148", "#e7298a", "#17becf", "#66a61e", "#000000"];
|
|
58
|
+
readonly labels: readonly ["Deletion", "Duplication", "Insertion", "Inversion", "Copy-number variable", "Tandem repeat", "Breakend / translocation", "Complex", "Other / mixed"];
|
|
59
|
+
readonly title: 'SV type';
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
/** The universal preset of `field`, if it has one. */
|
|
63
|
+
export declare function universalPresetOf(field: string): FieldPreset<'categorical'> | undefined;
|
|
64
|
+
/** Every field categorical while `scale` is unset, with nothing preset. */
|
|
65
|
+
export declare const CATEGORICAL_FIELD_PRESETS: {
|
|
66
|
+
readonly '*': FieldPreset<"categorical">;
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* What a feature's field paints through while `scale` is unset: `score` a
|
|
70
|
+
* ramp, any other field categories.
|
|
71
|
+
*/
|
|
72
|
+
export declare const FEATURE_FIELD_PRESETS: {
|
|
73
|
+
readonly score: {
|
|
74
|
+
readonly scale: 'linear';
|
|
75
|
+
};
|
|
76
|
+
readonly '*': FieldPreset<"categorical">;
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* A field's preset under `presets`: its own, else a universal one, else
|
|
80
|
+
* `*`'s, else categorical.
|
|
81
|
+
*/
|
|
82
|
+
export declare function presetOf<S extends string>(presets: FieldPresets<S>, field: string): FieldPreset<S | 'categorical'>;
|
|
83
|
+
/** What a field paints through under `presets` while `scale` is unset. */
|
|
84
|
+
export declare function fieldScaleOf<S extends string>(presets: FieldPresets<S>, field: string): S | 'categorical';
|
|
85
|
+
/**
|
|
86
|
+
* A colour object with its field's preset under it: each member the preset
|
|
87
|
+
* names and the config leaves unwritten, an empty list counting as unwritten.
|
|
88
|
+
* Only while the colour paints through the preset's own scale, so the cuts of
|
|
89
|
+
* a threshold preset never reach a field read through a ramp. A categorical
|
|
90
|
+
* preset's `range` and `labels` name its `domain`'s values in order, so they
|
|
91
|
+
* fill only while `domain` does too: a written order keeps each value's own
|
|
92
|
+
* colour and name.
|
|
93
|
+
*/
|
|
94
|
+
export declare function withPreset<C extends {
|
|
95
|
+
field?: string;
|
|
96
|
+
scale?: string;
|
|
97
|
+
}>(color: C, presets: FieldPresets<string>): C;
|
|
98
|
+
/**
|
|
99
|
+
* The scale a colour object paints through: `none` while no `field` is
|
|
100
|
+
* named, else its own `scale`, or `fieldScale` where that is unset.
|
|
101
|
+
*/
|
|
102
|
+
export declare function paintedScale<S extends string, F extends string>({ scale, field }: {
|
|
103
|
+
scale: S | undefined;
|
|
104
|
+
field: string;
|
|
105
|
+
}, fieldScale: F): S | F | 'none';
|
|
106
|
+
/** A combination of a scale's slots the display cannot draw as written. */
|
|
107
|
+
export interface ScaleProblem {
|
|
108
|
+
rule: 'threshold-cuts' | 'threshold-range' | 'ramp-domain' | 'domain-ends' | 'domain-quantile' | 'labels-domain';
|
|
109
|
+
/** the slot to look at, relative to the scale's own object */
|
|
110
|
+
slot: string;
|
|
111
|
+
message: string;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* The members a quantitative scale's ends are read by, as a colour ramp,
|
|
115
|
+
* `scales.y` and a mark's width spell them alike.
|
|
116
|
+
*/
|
|
117
|
+
export interface ScaleEnds {
|
|
118
|
+
domainMin?: number;
|
|
119
|
+
domainMax?: number;
|
|
120
|
+
domainQuantile?: number;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* What a quantitative scale's ends say together that neither can refuse
|
|
124
|
+
* alone: a `domainMax` below its `domainMin`, which every such scale draws in
|
|
125
|
+
* order either way, and a `domainQuantile` outside 0.5 to 1, where the quantile
|
|
126
|
+
* an open end follows is clamped. `reverse` is whether the scale turns round by
|
|
127
|
+
* a member of its own, which is then the spelling to point at.
|
|
128
|
+
*/
|
|
129
|
+
export declare function scaleEndProblems({ domainMin, domainMax, domainQuantile }: ScaleEnds, { reverse }?: {
|
|
130
|
+
reverse?: boolean;
|
|
131
|
+
}): ScaleProblem[];
|
|
132
|
+
/** Problems as the lines a display's corner notice lists, under the setting that holds the scale. */
|
|
133
|
+
export declare function noticeLines(setting: string, problems: readonly ScaleProblem[]): string[];
|
|
134
|
+
/** The slots `colorProblems` reads, as a snapshot or a resolved setting holds them. */
|
|
135
|
+
export interface ColorSlots {
|
|
136
|
+
value?: string;
|
|
137
|
+
field?: string;
|
|
138
|
+
scale?: string;
|
|
139
|
+
domain?: readonly unknown[];
|
|
140
|
+
range?: readonly unknown[];
|
|
141
|
+
domainMin?: number;
|
|
142
|
+
domainMax?: number;
|
|
143
|
+
domainQuantile?: number;
|
|
144
|
+
labels?: readonly unknown[];
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* What a colour object's slots say together that no single slot can refuse,
|
|
148
|
+
* since the config editor writes one slot at a time (ADR-133), read with its
|
|
149
|
+
* field's preset under it. A display shows these as a notice and draws what
|
|
150
|
+
* it can. A threshold naming no cuts leaves its intervals to the display —
|
|
151
|
+
* the alignments insert-size band samples its cuts, the wiggle plot cuts at
|
|
152
|
+
* its origin — so its `labels` go uncounted.
|
|
153
|
+
*/
|
|
154
|
+
export declare function colorProblems(written: ColorSlots, presets: FieldPresets<string>): ScaleProblem[];
|
|
155
|
+
/** `colorProblems` as the lines a display's corner notice lists, under `color`. */
|
|
156
|
+
export declare function colorNotices(color: ColorSlots, presets: FieldPresets<string>): string[];
|