@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
|
@@ -49,10 +49,13 @@ export default class GranularRectLayout {
|
|
|
49
49
|
this.maxHeight = Math.ceil(maxHeight / this.pitchY);
|
|
50
50
|
}
|
|
51
51
|
/**
|
|
52
|
+
* `lower` gives the rows lying wholly at or past `lower.top` px below the
|
|
53
|
+
* rect's top a span of their own.
|
|
54
|
+
*
|
|
52
55
|
* @returns top position for the rect, or Null if laying
|
|
53
56
|
* out the rect would exceed maxHeight
|
|
54
57
|
*/
|
|
55
|
-
addRect(id, left, right, height) {
|
|
58
|
+
addRect(id, left, right, height, lower) {
|
|
56
59
|
const pitchX = this.pitchX;
|
|
57
60
|
const pitchY = this.pitchY;
|
|
58
61
|
// if we have already laid it out, return its layout
|
|
@@ -65,12 +68,19 @@ export default class GranularRectLayout {
|
|
|
65
68
|
const pLeft = Math.trunc(left / pitchX);
|
|
66
69
|
const pRight = Math.trunc(right / pitchX);
|
|
67
70
|
const pHeight = Math.ceil(height / pitchY);
|
|
71
|
+
const pLowerTop = lower ? Math.ceil(lower.top / pitchY) : pHeight;
|
|
68
72
|
const rectangle = {
|
|
69
73
|
l: pLeft,
|
|
70
74
|
r: pRight,
|
|
71
75
|
top: null,
|
|
72
76
|
h: pHeight,
|
|
73
77
|
};
|
|
78
|
+
const lowerSpan = lower
|
|
79
|
+
? {
|
|
80
|
+
l: Math.trunc(lower.left / pitchX),
|
|
81
|
+
r: Math.trunc(lower.right / pitchX),
|
|
82
|
+
}
|
|
83
|
+
: rectangle;
|
|
74
84
|
// Allow features to start at any position up to maxHeight
|
|
75
85
|
// Features starting at maxHeight or beyond are filtered out, but features
|
|
76
86
|
// that start below maxHeight and extend past it are allowed
|
|
@@ -84,7 +94,10 @@ export default class GranularRectLayout {
|
|
|
84
94
|
// between them still spans y, because y < top + pHeight — so nothing between
|
|
85
95
|
// can fit. `top = y` plus the loop's own increment is that jump, and it turns
|
|
86
96
|
// the scan from O(rows * pHeight) into O(rows): without it, a rect pHeight
|
|
87
|
-
// rows tall re-tests the row that blocked it pHeight times over.
|
|
97
|
+
// rows tall re-tests the row that blocked it pHeight times over. Moving
|
|
98
|
+
// the rect down only moves y up within it, so a hit above the lower span
|
|
99
|
+
// blocks every top to y, and a hit in the lower span blocks just the tops
|
|
100
|
+
// keeping y there: the jump goes to the first top putting y above it.
|
|
88
101
|
outer: for (; top <= maxTop; top += 1) {
|
|
89
102
|
// Check all rows that this rectangle would occupy
|
|
90
103
|
const maxY = top + pHeight;
|
|
@@ -97,13 +110,17 @@ export default class GranularRectLayout {
|
|
|
97
110
|
const intervals = row.getIntervals();
|
|
98
111
|
const len = intervals.length;
|
|
99
112
|
if (len > 0) {
|
|
113
|
+
const inLower = y - top >= pLowerTop;
|
|
114
|
+
const l = inLower ? lowerSpan.l : pLeft;
|
|
115
|
+
const r = inLower ? lowerSpan.r : pRight;
|
|
116
|
+
const blockedTop = inLower ? y - pLowerTop : y;
|
|
100
117
|
if (len < 40) {
|
|
101
118
|
// Linear scan for small arrays
|
|
102
119
|
for (let i = 0; i < len; i += 2) {
|
|
103
120
|
const start = intervals[i];
|
|
104
121
|
const end = intervals[i + 1];
|
|
105
|
-
if (end >
|
|
106
|
-
top =
|
|
122
|
+
if (end > l && start < r) {
|
|
123
|
+
top = blockedTop;
|
|
107
124
|
continue outer;
|
|
108
125
|
}
|
|
109
126
|
}
|
|
@@ -115,7 +132,7 @@ export default class GranularRectLayout {
|
|
|
115
132
|
while (low < high) {
|
|
116
133
|
const mid = (low + high) >>> 1;
|
|
117
134
|
const midIdx = mid << 1;
|
|
118
|
-
if (intervals[midIdx + 1] <=
|
|
135
|
+
if (intervals[midIdx + 1] <= l) {
|
|
119
136
|
low = mid + 1;
|
|
120
137
|
}
|
|
121
138
|
else {
|
|
@@ -125,8 +142,8 @@ export default class GranularRectLayout {
|
|
|
125
142
|
const idx = low << 1;
|
|
126
143
|
if (idx < len) {
|
|
127
144
|
const start = intervals[idx];
|
|
128
|
-
if (start <
|
|
129
|
-
top =
|
|
145
|
+
if (start < r) {
|
|
146
|
+
top = blockedTop;
|
|
130
147
|
continue outer;
|
|
131
148
|
}
|
|
132
149
|
}
|
|
@@ -143,7 +160,7 @@ export default class GranularRectLayout {
|
|
|
143
160
|
rectangle.top = top;
|
|
144
161
|
const yEnd = top + pHeight;
|
|
145
162
|
for (let y = top; y < yEnd; y += 1) {
|
|
146
|
-
this.getOrCreateRow(y).addRect(rectangle);
|
|
163
|
+
this.getOrCreateRow(y).addRect(y - top >= pLowerTop ? lowerSpan : rectangle);
|
|
147
164
|
}
|
|
148
165
|
return top * pitchY;
|
|
149
166
|
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { IStateTreeNode } from '@jbrowse/mobx-state-tree';
|
|
2
|
+
/**
|
|
3
|
+
* #api core/util
|
|
4
|
+
* Run a display's `afterAttach` body from a module loaded on demand, so the
|
|
5
|
+
* autorun installers stay out of the display's eager bundle.
|
|
6
|
+
*
|
|
7
|
+
* One policy for the gap the `await` opens: a node torn down before the module
|
|
8
|
+
* lands installs nothing, and a module that fails to load is reported where the
|
|
9
|
+
* user can see it rather than onto the display's own error slot — that slot is
|
|
10
|
+
* what `reload()` clears, and nothing would re-run the install behind it.
|
|
11
|
+
* Three displays hand-rolled this IIFE and each drew the lines differently.
|
|
12
|
+
*/
|
|
13
|
+
export declare function runLazyAfterAttach<Self extends IStateTreeNode>(self: Self, load: () => Promise<(self: Self) => void>): void;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { isAlive } from '@jbrowse/mobx-state-tree';
|
|
2
|
+
import { getNotificationSink } from './sessionServices.js';
|
|
3
|
+
/**
|
|
4
|
+
* #api core/util
|
|
5
|
+
* Run a display's `afterAttach` body from a module loaded on demand, so the
|
|
6
|
+
* autorun installers stay out of the display's eager bundle.
|
|
7
|
+
*
|
|
8
|
+
* One policy for the gap the `await` opens: a node torn down before the module
|
|
9
|
+
* lands installs nothing, and a module that fails to load is reported where the
|
|
10
|
+
* user can see it rather than onto the display's own error slot — that slot is
|
|
11
|
+
* what `reload()` clears, and nothing would re-run the install behind it.
|
|
12
|
+
* Three displays hand-rolled this IIFE and each drew the lines differently.
|
|
13
|
+
*/
|
|
14
|
+
export function runLazyAfterAttach(self, load) {
|
|
15
|
+
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
|
16
|
+
;
|
|
17
|
+
(async () => {
|
|
18
|
+
try {
|
|
19
|
+
const install = await load();
|
|
20
|
+
if (isAlive(self)) {
|
|
21
|
+
install(self);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
catch (e) {
|
|
25
|
+
if (isAlive(self)) {
|
|
26
|
+
console.error(e);
|
|
27
|
+
getNotificationSink(self).notifyError(`${e}`, e);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
})();
|
|
31
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { AnyReactComponentType } from './types/util.ts';
|
|
2
|
+
/**
|
|
3
|
+
* `React.lazy` that also exposes the import it wraps, so code that knows a
|
|
4
|
+
* component is about to render (a session naming a view, a track being shown)
|
|
5
|
+
* can start the download instead of waiting for React to reach it. A failed
|
|
6
|
+
* load is not kept, so the render that follows tries again.
|
|
7
|
+
*
|
|
8
|
+
* Once the import has landed, the first render gets the module synchronously.
|
|
9
|
+
* React.lazy suspends on any promise, settled or not, and React holds a
|
|
10
|
+
* suspended boundary's reveal for 300 ms after its fallback commits, so a
|
|
11
|
+
* preloaded component nested under another cost that 300 ms per level.
|
|
12
|
+
*/
|
|
13
|
+
export declare function lazyWithPreload<T extends AnyReactComponentType>(factory: () => Promise<{
|
|
14
|
+
default: T;
|
|
15
|
+
}>): import("react").LazyExoticComponent<T> & {
|
|
16
|
+
preload: () => Promise<{
|
|
17
|
+
default: T;
|
|
18
|
+
}>;
|
|
19
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { lazy } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* `React.lazy` that also exposes the import it wraps, so code that knows a
|
|
4
|
+
* component is about to render (a session naming a view, a track being shown)
|
|
5
|
+
* can start the download instead of waiting for React to reach it. A failed
|
|
6
|
+
* load is not kept, so the render that follows tries again.
|
|
7
|
+
*
|
|
8
|
+
* Once the import has landed, the first render gets the module synchronously.
|
|
9
|
+
* React.lazy suspends on any promise, settled or not, and React holds a
|
|
10
|
+
* suspended boundary's reveal for 300 ms after its fallback commits, so a
|
|
11
|
+
* preloaded component nested under another cost that 300 ms per level.
|
|
12
|
+
*/
|
|
13
|
+
export function lazyWithPreload(factory) {
|
|
14
|
+
let loaded;
|
|
15
|
+
let loading;
|
|
16
|
+
const load = () => (loading ??= factory().then(module => (loaded = module), (error) => {
|
|
17
|
+
loading = undefined;
|
|
18
|
+
throw error;
|
|
19
|
+
}));
|
|
20
|
+
const settled = (module) => ({
|
|
21
|
+
// eslint-disable-next-line unicorn/no-thenable -- React.lazy takes a module synchronously only from a then that calls back at once
|
|
22
|
+
then: (resolve) => {
|
|
23
|
+
resolve(module);
|
|
24
|
+
},
|
|
25
|
+
});
|
|
26
|
+
return Object.assign(lazy(() => (loaded ? settled(loaded) : load())), { preload: load });
|
|
27
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import type { CategoricalEntry, CategoricalScale } from '../ui/colorScale.ts';
|
|
2
|
+
import type { LegendSwatch } from '../ui/legendSpec.ts';
|
|
3
|
+
import type { CategoricalField } from './categoricalField.ts';
|
|
4
|
+
export interface LegendCandidate {
|
|
5
|
+
rowIndex: number;
|
|
6
|
+
value: string;
|
|
7
|
+
color: number;
|
|
8
|
+
}
|
|
9
|
+
export interface LegendEntry {
|
|
10
|
+
values: string[];
|
|
11
|
+
color: number;
|
|
12
|
+
}
|
|
13
|
+
export declare const MAX_LEGEND_ENTRIES = 30;
|
|
14
|
+
export declare const MAX_LEGEND_CANDIDATES = 1024;
|
|
15
|
+
/**
|
|
16
|
+
* Accumulator for the distinct (row, value, color) combinations a packer walks
|
|
17
|
+
* past, in first-seen order and bounded, so the main thread never re-walks the
|
|
18
|
+
* features. Deduped on the whole triple: a row of the union lists every value
|
|
19
|
+
* painted in its color, so a second value on that color has to still be in the
|
|
20
|
+
* list to reach it.
|
|
21
|
+
*/
|
|
22
|
+
export declare function createLegendCandidateCollector(maxCandidates?: number): {
|
|
23
|
+
candidates: LegendCandidate[];
|
|
24
|
+
add(rowIndex: number, value: string, color: number): void;
|
|
25
|
+
};
|
|
26
|
+
export interface LegendCandidateSource {
|
|
27
|
+
candidates: readonly LegendCandidate[];
|
|
28
|
+
rowPaintsCandidateColor: (rowIndex: number) => boolean;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* The categorical color key over any number of packed regions: one entry per
|
|
32
|
+
* distinct color listing every value painted in it, colors in first-seen
|
|
33
|
+
* order. Keyed by color rather than by value because hiding a category hides
|
|
34
|
+
* features BY color, so two values sharing one color are one row that names
|
|
35
|
+
* both; a value met in two colors stays with the first.
|
|
36
|
+
*
|
|
37
|
+
* `[]` when there are more than `maxEntries` distinct colors, where the data is
|
|
38
|
+
* not a categorical vocabulary. `regions` is consumed lazily.
|
|
39
|
+
*/
|
|
40
|
+
export declare function unionLegendCandidates<T>(regions: Iterable<T>, resolve: (region: T) => LegendCandidateSource, maxEntries?: number): LegendEntry[];
|
|
41
|
+
/**
|
|
42
|
+
* A source whose every entry is a candidate its one row paints: the entries of
|
|
43
|
+
* a scale table `encodeFeatures` resolved, or any walk that met each value in
|
|
44
|
+
* one color.
|
|
45
|
+
*/
|
|
46
|
+
export declare function everyRowPaints(entries: readonly {
|
|
47
|
+
value: string;
|
|
48
|
+
color: number;
|
|
49
|
+
}[]): LegendCandidateSource;
|
|
50
|
+
/**
|
|
51
|
+
* The one categorical key a color channel derives from what a worker painted:
|
|
52
|
+
* the union above over the loaded regions, each row a painted color naming
|
|
53
|
+
* every value in it through `field` and ordered by it, and nothing where the
|
|
54
|
+
* rows would say nothing (`legendIsReadable`). A display resolving its own colors hands the
|
|
55
|
+
* candidates its packer recorded; one resolved by `encodeFeatures` hands the
|
|
56
|
+
* entries of the scale tables that came back. Either way the key lists what
|
|
57
|
+
* the painting holds, and a `closed` field's domain besides once anything
|
|
58
|
+
* painted. `title` heads it in place of the field's name, `''` heading
|
|
59
|
+
* nothing, and `swatches` draws a row as something other than its color's box.
|
|
60
|
+
* `besides` are the colors of rows a display lists beside these, which the
|
|
61
|
+
* one-color test counts and the length test does not.
|
|
62
|
+
*/
|
|
63
|
+
export declare function derivedColorScale<T>(regions: Iterable<T>, resolve: (region: T) => LegendCandidateSource, { id, field, title, maxItems, swatches, besides, }: {
|
|
64
|
+
id: string;
|
|
65
|
+
field: CategoricalField;
|
|
66
|
+
title?: string;
|
|
67
|
+
maxItems?: number;
|
|
68
|
+
swatches?: (row: CategoricalEntry & {
|
|
69
|
+
color: string;
|
|
70
|
+
}) => LegendSwatch[];
|
|
71
|
+
besides?: readonly string[];
|
|
72
|
+
}): CategoricalScale[];
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { MAX_LEGEND_ITEMS, legendIsReadable } from '../ui/legendSpec.js';
|
|
2
|
+
import { abgrToCssRgba, cssColorToABGR } from './colorBits.js';
|
|
3
|
+
// How many distinct colors a derived key may name and still BE a key. Past this
|
|
4
|
+
// the data is not a categorical vocabulary (a track keyed by unique per-feature
|
|
5
|
+
// names), and a list of every feature is the thing a key exists instead of.
|
|
6
|
+
//
|
|
7
|
+
// A different question from `legendIsReadable`'s lower bar, which asks whether a
|
|
8
|
+
// key a display already has is worth the rows it costs.
|
|
9
|
+
export const MAX_LEGEND_ENTRIES = 30;
|
|
10
|
+
// Bound on the candidate list one region ships. Far above MAX_LEGEND_ENTRIES, so
|
|
11
|
+
// a vocabulary that is categorical at all crosses whole, and a track with a name
|
|
12
|
+
// per feature ships a prefix that reads the same way it would have.
|
|
13
|
+
export const MAX_LEGEND_CANDIDATES = 1024;
|
|
14
|
+
/**
|
|
15
|
+
* Accumulator for the distinct (row, value, color) combinations a packer walks
|
|
16
|
+
* past, in first-seen order and bounded, so the main thread never re-walks the
|
|
17
|
+
* features. Deduped on the whole triple: a row of the union lists every value
|
|
18
|
+
* painted in its color, so a second value on that color has to still be in the
|
|
19
|
+
* list to reach it.
|
|
20
|
+
*/
|
|
21
|
+
export function createLegendCandidateCollector(maxCandidates = MAX_LEGEND_CANDIDATES) {
|
|
22
|
+
const candidates = [];
|
|
23
|
+
const seen = new Set();
|
|
24
|
+
return {
|
|
25
|
+
candidates,
|
|
26
|
+
add(rowIndex, value, color) {
|
|
27
|
+
const id = `${rowIndex}\u0000${color}\u0000${value}`;
|
|
28
|
+
if (candidates.length < maxCandidates && !seen.has(id)) {
|
|
29
|
+
seen.add(id);
|
|
30
|
+
candidates.push({ rowIndex, value, color });
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* The categorical color key over any number of packed regions: one entry per
|
|
37
|
+
* distinct color listing every value painted in it, colors in first-seen
|
|
38
|
+
* order. Keyed by color rather than by value because hiding a category hides
|
|
39
|
+
* features BY color, so two values sharing one color are one row that names
|
|
40
|
+
* both; a value met in two colors stays with the first.
|
|
41
|
+
*
|
|
42
|
+
* `[]` when there are more than `maxEntries` distinct colors, where the data is
|
|
43
|
+
* not a categorical vocabulary. `regions` is consumed lazily.
|
|
44
|
+
*/
|
|
45
|
+
export function unionLegendCandidates(regions, resolve, maxEntries = MAX_LEGEND_ENTRIES) {
|
|
46
|
+
const rows = new Map();
|
|
47
|
+
const seenValues = new Set();
|
|
48
|
+
for (const region of regions) {
|
|
49
|
+
const { candidates, rowPaintsCandidateColor } = resolve(region);
|
|
50
|
+
for (const { rowIndex, value, color } of candidates) {
|
|
51
|
+
if (!rowPaintsCandidateColor(rowIndex) || seenValues.has(value)) {
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
seenValues.add(value);
|
|
55
|
+
const row = rows.get(color);
|
|
56
|
+
if (row) {
|
|
57
|
+
row.values.push(value);
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
rows.set(color, { values: [value], color });
|
|
61
|
+
if (rows.size > maxEntries) {
|
|
62
|
+
return [];
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return [...rows.values()];
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* A source whose every entry is a candidate its one row paints: the entries of
|
|
71
|
+
* a scale table `encodeFeatures` resolved, or any walk that met each value in
|
|
72
|
+
* one color.
|
|
73
|
+
*/
|
|
74
|
+
export function everyRowPaints(entries) {
|
|
75
|
+
return {
|
|
76
|
+
candidates: entries.map(({ value, color }) => ({
|
|
77
|
+
rowIndex: 0,
|
|
78
|
+
value,
|
|
79
|
+
color,
|
|
80
|
+
})),
|
|
81
|
+
rowPaintsCandidateColor: () => true,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* The one categorical key a color channel derives from what a worker painted:
|
|
86
|
+
* the union above over the loaded regions, each row a painted color naming
|
|
87
|
+
* every value in it through `field` and ordered by it, and nothing where the
|
|
88
|
+
* rows would say nothing (`legendIsReadable`). A display resolving its own colors hands the
|
|
89
|
+
* candidates its packer recorded; one resolved by `encodeFeatures` hands the
|
|
90
|
+
* entries of the scale tables that came back. Either way the key lists what
|
|
91
|
+
* the painting holds, and a `closed` field's domain besides once anything
|
|
92
|
+
* painted. `title` heads it in place of the field's name, `''` heading
|
|
93
|
+
* nothing, and `swatches` draws a row as something other than its color's box.
|
|
94
|
+
* `besides` are the colors of rows a display lists beside these, which the
|
|
95
|
+
* one-color test counts and the length test does not.
|
|
96
|
+
*/
|
|
97
|
+
export function derivedColorScale(regions, resolve, { id, field, title = field.field, maxItems, swatches, besides = [], }) {
|
|
98
|
+
const painted = unionLegendCandidates(regions, resolve).map(({ values, color }) => {
|
|
99
|
+
const sorted = values.toSorted(field.compare);
|
|
100
|
+
const value = sorted[0];
|
|
101
|
+
return {
|
|
102
|
+
value,
|
|
103
|
+
values: sorted,
|
|
104
|
+
label: sorted.map(v => field.label(v)).join(', '),
|
|
105
|
+
color: abgrToCssRgba(color),
|
|
106
|
+
...(value === '' ? { missing: true } : {}),
|
|
107
|
+
};
|
|
108
|
+
});
|
|
109
|
+
const named = new Set(painted.flatMap(e => e.values));
|
|
110
|
+
const unpainted = field.closed && painted.length > 0
|
|
111
|
+
? field.domain
|
|
112
|
+
.filter(value => !named.has(value))
|
|
113
|
+
.map(value => ({
|
|
114
|
+
value,
|
|
115
|
+
label: field.label(value),
|
|
116
|
+
color: abgrToCssRgba(cssColorToABGR(field.color(value))),
|
|
117
|
+
}))
|
|
118
|
+
: [];
|
|
119
|
+
const entries = [...painted, ...unpainted].sort((a, b) => field.compare(a.value, b.value));
|
|
120
|
+
const beside = besides.map(color => ({
|
|
121
|
+
label: '',
|
|
122
|
+
color: abgrToCssRgba(cssColorToABGR(color)),
|
|
123
|
+
}));
|
|
124
|
+
return painted.length > 0 &&
|
|
125
|
+
legendIsReadable([...entries, ...beside], (maxItems ?? MAX_LEGEND_ITEMS) + beside.length)
|
|
126
|
+
? [
|
|
127
|
+
{
|
|
128
|
+
kind: 'categorical',
|
|
129
|
+
id,
|
|
130
|
+
...(title ? { title } : {}),
|
|
131
|
+
...(field.domain.length > 0 ? { domain: field.domain } : {}),
|
|
132
|
+
entries: swatches
|
|
133
|
+
? entries.map(row => ({ ...row, swatches: swatches(row) }))
|
|
134
|
+
: entries,
|
|
135
|
+
},
|
|
136
|
+
]
|
|
137
|
+
: [];
|
|
138
|
+
}
|
package/esm/util/locString.js
CHANGED
|
@@ -36,12 +36,12 @@ export function parseLocStringOneBased(locString, isValidRefName) {
|
|
|
36
36
|
throw new Error('no location string provided, could not parse');
|
|
37
37
|
}
|
|
38
38
|
// handle reverse strand notation e.g. "chr1:1-100[rev]"
|
|
39
|
+
locString = locString.replaceAll(/\s/g, '');
|
|
39
40
|
let reversed = false;
|
|
40
41
|
if (locString.endsWith('[rev]')) {
|
|
41
42
|
reversed = true;
|
|
42
43
|
locString = locString.slice(0, -5);
|
|
43
44
|
}
|
|
44
|
-
locString = locString.replaceAll(/\s/g, '');
|
|
45
45
|
// extract optional assembly name in braces e.g. "{hg19}chr1:1-100"
|
|
46
46
|
const assemblyMatch = ASSEMBLY_REGEX.exec(locString);
|
|
47
47
|
if (!assemblyMatch) {
|
|
@@ -174,7 +174,10 @@ function assembleLocStringWith(region, cb = (n) => n) {
|
|
|
174
174
|
}
|
|
175
175
|
let endString;
|
|
176
176
|
if (end !== undefined) {
|
|
177
|
-
endString =
|
|
177
|
+
endString =
|
|
178
|
+
start !== undefined && (start + 1 === end || start === end)
|
|
179
|
+
? ''
|
|
180
|
+
: `..${cb(end)}`;
|
|
178
181
|
}
|
|
179
182
|
else {
|
|
180
183
|
endString = start !== undefined ? '..' : '';
|
package/esm/util/localStorage.js
CHANGED
|
@@ -12,10 +12,10 @@ export const { available: localStorageAvailable, getItem: localStorageGetItem, s
|
|
|
12
12
|
// and has to be announced by hand. Missing that half is what let two components
|
|
13
13
|
// on one key show different values until one of them remounted.
|
|
14
14
|
//
|
|
15
|
-
// Announcing is deliberately not folded into localStorageSetItem.
|
|
16
|
-
//
|
|
17
|
-
//
|
|
18
|
-
//
|
|
15
|
+
// Announcing is deliberately not folded into localStorageSetItem. A writer
|
|
16
|
+
// that persists from an autorun over its own state would, if its write called
|
|
17
|
+
// its own subscriber back, re-enter that autorun and write again, forever. A
|
|
18
|
+
// writer says when its write is news.
|
|
19
19
|
const listeners = new Map();
|
|
20
20
|
// Installed on the first subscription rather than at module scope, so importing
|
|
21
21
|
// this file from a worker or a test never touches `window`.
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import Flatbush from './flatbush/index.ts';
|
|
2
|
+
import type { FeatureTable } from './featureTable.ts';
|
|
3
|
+
import type { JexlInstance } from './jexlStrings.ts';
|
|
4
|
+
import type { ColorEncoding, ColorScaleTable, ContinuousRef, Encoded, EncodedChannels, FieldRef, LocusRef, ShapeEncoding, SizeEncoding, LaneName } from './markEncodingTypes.ts';
|
|
5
|
+
import type { ProgressReporter } from './progress.ts';
|
|
6
|
+
import type { Feature } from './simpleFeature.ts';
|
|
7
|
+
export type { AggregateOp, AggregateStep, BinStep, CategoricalRef, ColorEncoding, ContinuousRef, CoverageStep, ColorScaleTable, CoreGetEncodedLayersArgs, Encoded, EncodedChannels, EncodedLayersResult, FacetSection, FacetSpec, FieldRef, FilterStep, FormulaStep, LocusRef, MateStep, ShapeEncoding, ShapeName, ShapeScaleTable, SizeEncoding, SizeRef, SizeScaleTable, LaneName, LayerRequest, MarkEncoding, ScaleTable, ThresholdRef, TransformStep, } from './markEncodingTypes.ts';
|
|
8
|
+
export type { ColorSchemeName } from './colorSchemes.ts';
|
|
9
|
+
export { COLOR_SCHEMES } from './colorSchemes.ts';
|
|
10
|
+
export { NO_VALUE_LABEL } from './categoricalField.ts';
|
|
11
|
+
export declare const DEFAULT_MARK_COLOR = "#0068d1";
|
|
12
|
+
export declare const DEFAULT_SIZE_RANGE_PX: [number, number];
|
|
13
|
+
/**
|
|
14
|
+
* #api
|
|
15
|
+
* The misconfiguration grey packed as the encoder paints it: a `jexl:` colour
|
|
16
|
+
* that answered no string, a ramp value that is no number, text a threshold
|
|
17
|
+
* cannot read.
|
|
18
|
+
*/
|
|
19
|
+
export declare const MISCONFIGURED_ABGR: number;
|
|
20
|
+
/**
|
|
21
|
+
* #api
|
|
22
|
+
* The no-value grey packed as the encoder paints it: a feature with nothing in
|
|
23
|
+
* the field a threshold reads.
|
|
24
|
+
*/
|
|
25
|
+
export declare const NO_VALUE_ABGR: number;
|
|
26
|
+
/**
|
|
27
|
+
* #api
|
|
28
|
+
* A channel read per feature: the compiled form of a {@link FieldRef}, and
|
|
29
|
+
* what a display's own worker method hands the encoder for a channel no
|
|
30
|
+
* field name can say — a join against a second adapter, a lookup table, a
|
|
31
|
+
* rule over two fields.
|
|
32
|
+
*/
|
|
33
|
+
export type ChannelReader<T = unknown> = (feature: Feature) => T;
|
|
34
|
+
/**
|
|
35
|
+
* #api
|
|
36
|
+
* What `encodeFeatures` takes: a {@link MarkEncoding}, any channel of which
|
|
37
|
+
* may be a {@link ChannelReader} in place of its declared form, and `row` the
|
|
38
|
+
* values themselves, one per input feature, where the caller computed them —
|
|
39
|
+
* a facet's stacked rows. The declared form is what crosses the wire; a
|
|
40
|
+
* reader or a value list is built in the worker.
|
|
41
|
+
*/
|
|
42
|
+
export interface MarkEncodingInput {
|
|
43
|
+
x?: FieldRef | ChannelReader;
|
|
44
|
+
x2?: FieldRef | LocusRef | ChannelReader;
|
|
45
|
+
y?: FieldRef | ChannelReader;
|
|
46
|
+
row?: FieldRef | ChannelReader | ArrayLike<number>;
|
|
47
|
+
color?: ColorEncoding | ChannelReader<number>;
|
|
48
|
+
shape?: ShapeEncoding | ChannelReader<number>;
|
|
49
|
+
text?: FieldRef | ChannelReader;
|
|
50
|
+
size?: SizeEncoding;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* #api
|
|
54
|
+
* What surrounds an encode: the jexl instance a `jexl:` channel compiles
|
|
55
|
+
* against — a caller whose channels are all readers or field names passes
|
|
56
|
+
* none — and a progress reporter.
|
|
57
|
+
*/
|
|
58
|
+
export interface EncodeContext {
|
|
59
|
+
jexl?: JexlInstance;
|
|
60
|
+
report?: ProgressReporter;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* #api
|
|
64
|
+
* The hit index over `count` instances: each a box from `x` to `x2` at its
|
|
65
|
+
* `y`, or at 0 for a mark with no value.
|
|
66
|
+
*/
|
|
67
|
+
export declare function hitIndexOf(x: Uint32Array, x2: Uint32Array, y: Float32Array | undefined, count?: number): Flatbush;
|
|
68
|
+
/**
|
|
69
|
+
* #api
|
|
70
|
+
* An encoded payload as a display stores it: the hit index the worker built
|
|
71
|
+
* with {@link hitIndexOf}, wrapped once where the payload lands.
|
|
72
|
+
*/
|
|
73
|
+
export type HitIndexed<T extends EncodedChannels> = T & {
|
|
74
|
+
flatbush?: Flatbush;
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* #api
|
|
78
|
+
* {@link HitIndexed} over what the worker shipped.
|
|
79
|
+
*/
|
|
80
|
+
export declare function withHitIndex<T extends EncodedChannels>(channels: T): HitIndexed<T>;
|
|
81
|
+
/**
|
|
82
|
+
* #api
|
|
83
|
+
* Evaluate one encoding over a feature list into dense channel arrays for
|
|
84
|
+
* the lanes named, the scale table each scaled channel came from, the `y`
|
|
85
|
+
* extremes and — when `index` is among the lanes — a hit index.
|
|
86
|
+
*
|
|
87
|
+
* A feature whose `x`, `x2` or (declared and asked-for) `y` is not finite is
|
|
88
|
+
* skipped and counted in `skipped`, so every array stays index-aligned with
|
|
89
|
+
* the Flatbush. Pure: the RPC around it owns the adapter, the filters and the
|
|
90
|
+
* transferables.
|
|
91
|
+
*
|
|
92
|
+
* Columnar: one pass admits the rows over `x`, `x2` and `y` alone, and none
|
|
93
|
+
* runs where all three are lanes of whole numbers; every other lane is then
|
|
94
|
+
* filled in its own loop over the admitted rows, a lane straight off a typed
|
|
95
|
+
* column and a categorical over a `category` column per label.
|
|
96
|
+
*/
|
|
97
|
+
export declare function encodeFeatures<L extends LaneName>(input: readonly Feature[] | FeatureTable, encoding: MarkEncodingInput, lanes: readonly L[], ctx?: EncodeContext): Encoded<L>;
|
|
98
|
+
/**
|
|
99
|
+
* #api
|
|
100
|
+
* A continuous colour scale over `extent`, the values it met: the domain its
|
|
101
|
+
* declared ends and the extent make, the straight table its stops bake to and
|
|
102
|
+
* where its middle stop sits, and the packed colour a value paints through
|
|
103
|
+
* them: an infinity the end on its side, as a threshold places it, and NaN,
|
|
104
|
+
* text that is no number, the misconfiguration grey. The encoder and every
|
|
105
|
+
* display painting a ramp itself read it, so a value takes one colour whoever
|
|
106
|
+
* paints it.
|
|
107
|
+
*/
|
|
108
|
+
export declare function continuousColorScale(encoding: ContinuousRef, extent: readonly [number, number]): {
|
|
109
|
+
domain: [number, number];
|
|
110
|
+
lut: Uint8Array<ArrayBufferLike>;
|
|
111
|
+
midNorm: number;
|
|
112
|
+
colorOf: (value: number) => number;
|
|
113
|
+
};
|
|
114
|
+
/**
|
|
115
|
+
* #api
|
|
116
|
+
* A ramp table over `extent`, the union a display took across the regions it
|
|
117
|
+
* loaded: each open end of the domain moved to the union's, the pinned ends
|
|
118
|
+
* kept. The table stays straight and `domainMid` a value, so the middle stop
|
|
119
|
+
* follows the widened domain with no table baked again.
|
|
120
|
+
*/
|
|
121
|
+
export declare function rampOverExtent(table: Extract<ColorScaleTable, {
|
|
122
|
+
kind: 'ramp';
|
|
123
|
+
}>, extent: [number, number]): Extract<ColorScaleTable, {
|
|
124
|
+
kind: 'ramp';
|
|
125
|
+
}>;
|
|
126
|
+
/**
|
|
127
|
+
* #api
|
|
128
|
+
* A CSS colour or `jexl:` colour expression as a per-feature packed ABGR —
|
|
129
|
+
* the unscaled arm of {@link ColorEncoding}, on its own for a display that
|
|
130
|
+
* carries a plain `color` slot.
|
|
131
|
+
*/
|
|
132
|
+
export declare function colorEvaluator(color: string, jexl: JexlInstance | undefined): (feature: Feature) => number;
|
|
133
|
+
/**
|
|
134
|
+
* #api
|
|
135
|
+
* The input feature instance `i` of `channels` was: `featureIndex[i]`, or `i`
|
|
136
|
+
* itself where the encoder skipped none and so shipped no index.
|
|
137
|
+
*/
|
|
138
|
+
export declare function featureIndexAt(channels: Pick<EncodedChannels, 'featureIndex'>, i: number): number;
|
|
139
|
+
/**
|
|
140
|
+
* #api
|
|
141
|
+
* The packed colour instance `i` of `channels` paints: `color[i]`, or `color`
|
|
142
|
+
* itself where the colour is a constant and so shipped as one number.
|
|
143
|
+
*/
|
|
144
|
+
export declare function colorAt(channels: Pick<EncodedChannels, 'color'>, i: number): number | undefined;
|
|
145
|
+
/**
|
|
146
|
+
* #api
|
|
147
|
+
* The buffers an {@link EncodedChannels} owns, for `rpcResult`'s transfer
|
|
148
|
+
* list.
|
|
149
|
+
*/
|
|
150
|
+
export declare function encodedChannelTransferables(c: EncodedChannels): ArrayBufferLike[];
|