@jbrowse/core 4.3.0 → 5.0.0-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1994 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.d.ts +14 -3
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.js +36 -23
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.d.ts +10 -7
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.js +124 -21
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseAttributes.d.ts +2 -8
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseAttributes.js +4 -4
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCard.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCard.js +2 -5
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCoreDetails.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCoreDetails.js +4 -4
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BasicValue.d.ts +12 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BasicValue.js +19 -5
- package/esm/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.js +18 -23
- package/esm/BaseFeatureWidget/BaseFeatureDetail/DataGridDetails.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/DataGridDetails.js +19 -40
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.d.ts +9 -6
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.js +33 -30
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetailsFrame.d.ts +11 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetailsFrame.js +11 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureWash.d.ts +20 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureWash.js +66 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldActionsButton.d.ts +8 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldActionsButton.js +24 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldName.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldName.js +2 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Formatter.d.ts +3 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Formatter.js +19 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ParentFeatureLine.d.ts +4 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ParentFeatureLine.js +17 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/SimpleField.d.ts +5 -3
- package/esm/BaseFeatureWidget/BaseFeatureDetail/SimpleField.js +8 -6
- package/esm/BaseFeatureWidget/BaseFeatureDetail/UriField.d.ts +3 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/UriField.js +7 -14
- package/esm/BaseFeatureWidget/BaseFeatureDetail/index.d.ts +7 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/index.js +15 -20
- package/esm/BaseFeatureWidget/BaseFeatureDetail/jexlFilterActions.d.ts +16 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/jexlFilterActions.js +50 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/util.d.ts +0 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/util.js +9 -10
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceBody.d.ts +18 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceBody.js +10 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceContents.d.ts +7 -4
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceContents.js +35 -24
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureDetails.d.ts +10 -5
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureDetails.js +64 -41
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeaturePanel.d.ts +3 -3
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeaturePanel.js +17 -8
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceLegend.d.ts +6 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceLegend.js +19 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceName.d.ts +5 -4
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceName.js +15 -18
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequencePanel.d.ts +1 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequencePanel.js +33 -17
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/consts.d.ts +3 -3
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/consts.js +7 -3
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/FeatureSequenceDialog.d.ts +11 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/FeatureSequenceDialog.js +29 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/HelpDialog.d.ts +1 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/HelpDialog.js +4 -6
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceDialog.d.ts +18 -6
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceDialog.js +11 -29
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceFeatureMenu.d.ts +9 -2
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceFeatureMenu.js +63 -58
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceTypeSelector.d.ts +7 -3
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceTypeSelector.js +38 -51
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SettingsDialog.d.ts +1 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SettingsDialog.js +19 -27
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/TranscriptSelector.d.ts +6 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/TranscriptSelector.js +20 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/featureTypeUtil.d.ts +12 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/featureTypeUtil.js +97 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/index.js +1 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/model.d.ts +62 -63
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/model.js +69 -59
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/panelAssemblyName.d.ts +21 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/panelAssemblyName.js +24 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDNASequence.d.ts +5 -3
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDNASequence.js +93 -75
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDSSequence.d.ts +1 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDSSequence.js +4 -11
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/GenomicSequence.d.ts +5 -2
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/GenomicSequence.js +21 -48
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/PlainSequence.d.ts +8 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/PlainSequence.js +20 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/ProteinSequence.d.ts +6 -3
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/ProteinSequence.js +33 -13
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/SequenceDisplay.d.ts +7 -4
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/SequenceDisplay.js +67 -11
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/renderSequenceSegments.d.ts +14 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/renderSequenceSegments.js +42 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/types.d.ts +8 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/useSequenceData.d.ts +9 -9
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/useSequenceData.js +28 -44
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/useSequenceFetch.d.ts +23 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/useSequenceFetch.js +31 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/util.d.ts +90 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/util.js +145 -23
- package/esm/BaseFeatureWidget/configSchema.d.ts +1 -1
- package/esm/BaseFeatureWidget/configSchema.js +1 -1
- package/esm/BaseFeatureWidget/formatDetails.d.ts +22 -0
- package/esm/BaseFeatureWidget/formatDetails.js +82 -0
- package/esm/BaseFeatureWidget/index.d.ts +4 -1
- package/esm/BaseFeatureWidget/index.js +2 -2
- package/esm/BaseFeatureWidget/stateModelFactory.d.ts +102 -71
- package/esm/BaseFeatureWidget/stateModelFactory.js +162 -63
- package/esm/BaseFeatureWidget/types.d.ts +15 -8
- package/esm/BaseFeatureWidget/util.d.ts +2 -37
- package/esm/BaseFeatureWidget/util.js +4 -85
- package/esm/CorePlugin.js +12 -7
- package/esm/PhasedScheduler.d.ts +4 -2
- package/esm/PhasedScheduler.js +18 -2
- package/esm/Plugin.d.ts +6 -1
- package/esm/Plugin.js +7 -0
- package/esm/PluginLoader.d.ts +55 -44
- package/esm/PluginLoader.js +290 -90
- package/esm/PluginManager.d.ts +476 -57
- package/esm/PluginManager.js +480 -91
- package/esm/ReExports/MuiDataGridReExports.d.ts +3 -2
- package/esm/ReExports/MuiDataGridReExports.js +58 -130
- package/esm/ReExports/MuiReExports.d.ts +3 -134
- package/esm/ReExports/MuiReExports.js +43 -16
- package/esm/ReExports/MuiStylesReExports.d.ts +66 -0
- package/esm/ReExports/MuiStylesReExports.js +55 -0
- package/esm/ReExports/coreModules.generated.d.ts +2 -0
- package/esm/ReExports/coreModules.generated.js +528 -0
- package/esm/ReExports/coreWorkerModules.generated.d.ts +2 -0
- package/esm/ReExports/coreWorkerModules.generated.js +488 -0
- package/esm/ReExports/frameworkModules.d.ts +2 -0
- package/esm/ReExports/frameworkModules.js +68 -0
- package/esm/ReExports/frameworkShared.d.ts +12 -0
- package/esm/ReExports/frameworkShared.js +16 -0
- package/esm/ReExports/frameworkWorkerModules.generated.d.ts +2 -0
- package/esm/ReExports/frameworkWorkerModules.generated.js +130 -0
- package/esm/ReExports/lazify.d.ts +2 -2
- package/esm/ReExports/lazify.js +16 -3
- package/esm/ReExports/list.js +433 -160
- package/esm/ReExports/modules.d.ts +1 -1
- package/esm/ReExports/modules.js +10 -146
- package/esm/ReExports/muiComponentNames.d.ts +18 -0
- package/esm/ReExports/muiComponentNames.js +130 -0
- package/esm/ReExports/registry.d.ts +3 -0
- package/esm/ReExports/registry.js +46 -0
- 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/BaseResults.d.ts +20 -21
- package/esm/TextSearch/BaseResults.js +8 -33
- package/esm/TextSearch/TextSearchManager.d.ts +30 -36
- package/esm/TextSearch/TextSearchManager.js +138 -44
- package/esm/TextSearch/places.d.ts +12 -0
- package/esm/TextSearch/places.js +94 -0
- package/esm/assemblyManager/assembly.d.ts +310 -35
- package/esm/assemblyManager/assembly.js +554 -263
- package/esm/assemblyManager/assemblyAdapters.d.ts +12 -0
- package/esm/assemblyManager/assemblyAdapters.js +24 -0
- package/esm/assemblyManager/assemblyConfigSchema.d.ts +135 -19
- package/esm/assemblyManager/assemblyConfigSchema.js +205 -23
- package/esm/assemblyManager/assemblyManager.d.ts +586 -323
- package/esm/assemblyManager/assemblyManager.js +352 -51
- package/esm/assemblyManager/expandAssemblyConfigShorthand.d.ts +39 -0
- package/esm/assemblyManager/expandAssemblyConfigShorthand.js +114 -0
- package/esm/assemblyManager/geneticCodes.d.ts +21 -0
- package/esm/assemblyManager/geneticCodes.js +44 -0
- package/esm/assemblyManager/getSequenceAdapterConfig.d.ts +19 -0
- package/esm/assemblyManager/getSequenceAdapterConfig.js +22 -0
- package/esm/assemblyManager/index.d.ts +1 -1
- package/esm/assemblyManager/index.js +2 -2
- package/esm/assemblyManager/indexAssemblyNames.d.ts +9 -0
- package/esm/assemblyManager/indexAssemblyNames.js +22 -0
- package/esm/assemblyManager/loadRefNameMap.d.ts +5 -0
- package/esm/assemblyManager/loadRefNameMap.js +75 -0
- package/esm/assemblyManager/refNameColors.d.ts +1 -0
- package/esm/assemblyManager/refNameColors.js +32 -0
- package/esm/assemblyManager/refNameMapKey.d.ts +7 -0
- package/esm/assemblyManager/refNameMapKey.js +12 -0
- package/esm/assemblyManager/refNameMaps.d.ts +26 -0
- package/esm/assemblyManager/refNameMaps.js +87 -0
- package/esm/assemblyManager/refNameMismatch.d.ts +54 -0
- package/esm/assemblyManager/refNameMismatch.js +66 -0
- package/esm/checkPlugins.d.ts +13 -0
- package/esm/checkPlugins.js +98 -0
- package/esm/configuration/bamIndexFields.d.ts +49 -0
- package/esm/configuration/bamIndexFields.js +41 -0
- package/esm/configuration/configurationSchema.d.ts +194 -29
- package/esm/configuration/configurationSchema.js +439 -145
- package/esm/configuration/configurationSchemaUnion.d.ts +39 -0
- package/esm/configuration/configurationSchemaUnion.js +56 -0
- package/esm/configuration/configurationSlot.d.ts +373 -30
- package/esm/configuration/configurationSlot.js +231 -224
- package/esm/configuration/fillLocations.d.ts +14 -0
- package/esm/configuration/fillLocations.js +14 -0
- package/esm/configuration/formatAboutConfigSchema.d.ts +41 -0
- package/esm/configuration/formatAboutConfigSchema.js +58 -0
- package/esm/configuration/formatDetailsConfigSchema.d.ts +54 -0
- package/esm/configuration/formatDetailsConfigSchema.js +87 -0
- package/esm/configuration/fullConfSnapshot.d.ts +13 -0
- package/esm/configuration/fullConfSnapshot.js +44 -0
- package/esm/configuration/getConf.d.ts +92 -0
- package/esm/configuration/getConf.js +141 -0
- package/esm/configuration/index.d.ts +32 -3
- package/esm/configuration/index.js +27 -2
- package/esm/configuration/indexType.d.ts +26 -0
- package/esm/configuration/indexType.js +38 -0
- package/esm/configuration/mergeFormatCallbacks.d.ts +14 -0
- package/esm/configuration/mergeFormatCallbacks.js +27 -0
- package/esm/configuration/readConfObject.d.ts +34 -0
- package/esm/configuration/readConfObject.js +118 -0
- package/esm/configuration/requirements.d.ts +37 -0
- package/esm/configuration/requirements.js +88 -0
- package/esm/configuration/schemaRegistry.d.ts +52 -0
- package/esm/configuration/schemaRegistry.js +48 -0
- package/esm/configuration/schemaTypes.d.ts +39 -0
- package/esm/configuration/schemaTypes.js +105 -0
- package/esm/configuration/slotFacade.d.ts +65 -0
- package/esm/configuration/slotFacade.js +110 -0
- package/esm/configuration/slotValueUtils.d.ts +17 -0
- package/esm/configuration/slotValueUtils.js +25 -0
- package/esm/configuration/snapshotPreprocess.d.ts +43 -0
- package/esm/configuration/snapshotPreprocess.js +161 -0
- package/esm/configuration/tabixIndexFields.d.ts +70 -0
- package/esm/configuration/tabixIndexFields.js +62 -0
- package/esm/configuration/tabixShorthand.d.ts +51 -0
- package/esm/configuration/tabixShorthand.js +72 -0
- package/esm/configuration/types.d.ts +315 -13
- package/esm/configuration/uriShorthand.d.ts +9 -0
- package/esm/configuration/uriShorthand.js +16 -0
- package/esm/data_adapters/BaseAdapter/BaseAdapter.d.ts +19 -11
- package/esm/data_adapters/BaseAdapter/BaseAdapter.js +19 -18
- package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.d.ts +158 -7
- package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.js +164 -29
- package/esm/data_adapters/BaseAdapter/BaseRefNameAliasAdapter.d.ts +1 -0
- package/esm/data_adapters/BaseAdapter/BaseSequenceAdapter.d.ts +13 -5
- package/esm/data_adapters/BaseAdapter/BaseSequenceAdapter.js +9 -7
- package/esm/data_adapters/BaseAdapter/BaseTextSearchAdapter.d.ts +2 -1
- package/esm/data_adapters/BaseAdapter/CytobandAdapter.d.ts +7 -0
- package/esm/data_adapters/BaseAdapter/RegionsAdapter.d.ts +2 -1
- package/esm/data_adapters/BaseAdapter/featureDensity.d.ts +40 -0
- package/esm/data_adapters/BaseAdapter/featureDensity.js +31 -0
- package/esm/data_adapters/BaseAdapter/getAdapterId.d.ts +2 -0
- package/esm/data_adapters/BaseAdapter/getAdapterId.js +9 -0
- package/esm/data_adapters/BaseAdapter/index.d.ts +28 -6
- package/esm/data_adapters/BaseAdapter/index.js +6 -5
- 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 +37 -5
- package/esm/data_adapters/BaseAdapter/stats.js +89 -24
- package/esm/data_adapters/BaseAdapter/types.d.ts +11 -13
- package/esm/data_adapters/BaseAdapter/types.js +1 -0
- package/esm/data_adapters/BaseAdapter/util.d.ts +5 -1
- package/esm/data_adapters/BaseAdapter/util.js +14 -3
- package/esm/data_adapters/BaseAdapter/zoomRange.d.ts +10 -0
- package/esm/data_adapters/CytobandAdapter/CytobandAdapter.d.ts +1 -1
- package/esm/data_adapters/CytobandAdapter/CytobandAdapter.js +5 -5
- package/esm/data_adapters/CytobandAdapter/configSchema.d.ts +34 -6
- package/esm/data_adapters/CytobandAdapter/configSchema.js +47 -17
- package/esm/data_adapters/CytobandAdapter/index.js +3 -3
- package/esm/data_adapters/adapterSessionRefcount.d.ts +61 -0
- package/esm/data_adapters/adapterSessionRefcount.js +96 -0
- package/esm/data_adapters/dataAdapterCache.d.ts +53 -2
- package/esm/data_adapters/dataAdapterCache.js +99 -25
- package/esm/data_adapters/getFeatureAdapter.d.ts +24 -0
- package/esm/data_adapters/getFeatureAdapter.js +27 -0
- package/esm/data_adapters/getSequenceSubAdapter.d.ts +19 -0
- package/esm/data_adapters/getSequenceSubAdapter.js +42 -0
- package/esm/pluggableElementTypes/AdapterType.d.ts +57 -7
- package/esm/pluggableElementTypes/AdapterType.js +44 -5
- package/esm/pluggableElementTypes/AddTrackWorkflowType.d.ts +6 -1
- package/esm/pluggableElementTypes/AddTrackWorkflowType.js +3 -1
- package/esm/pluggableElementTypes/ConnectionType.d.ts +5 -5
- package/esm/pluggableElementTypes/ConnectionType.js +1 -1
- package/esm/pluggableElementTypes/DisplayType.d.ts +54 -14
- package/esm/pluggableElementTypes/DisplayType.js +30 -7
- package/esm/pluggableElementTypes/InternetAccountType.js +1 -1
- package/esm/pluggableElementTypes/LazyStateModelElement.d.ts +32 -0
- package/esm/pluggableElementTypes/LazyStateModelElement.js +77 -0
- package/esm/pluggableElementTypes/PluggableElementBase.d.ts +11 -0
- package/esm/pluggableElementTypes/PluggableElementBase.js +11 -0
- package/esm/pluggableElementTypes/RpcMethodType.d.ts +142 -12
- package/esm/pluggableElementTypes/RpcMethodType.js +279 -98
- package/esm/pluggableElementTypes/RpcMethodTypeWithFiltersAndRenameRegions.d.ts +18 -9
- package/esm/pluggableElementTypes/RpcMethodTypeWithFiltersAndRenameRegions.js +26 -20
- package/esm/pluggableElementTypes/RpcMethodTypeWithRenameRegion.d.ts +5 -0
- package/esm/pluggableElementTypes/RpcMethodTypeWithRenameRegion.js +18 -0
- package/esm/pluggableElementTypes/RpcMethodTypeWithRenameRegions.d.ts +5 -0
- package/esm/pluggableElementTypes/RpcMethodTypeWithRenameRegions.js +10 -0
- package/esm/pluggableElementTypes/TextSearchAdapterType.d.ts +7 -7
- package/esm/pluggableElementTypes/TextSearchAdapterType.js +3 -1
- package/esm/pluggableElementTypes/TrackType.d.ts +2 -1
- package/esm/pluggableElementTypes/TrackType.js +1 -1
- package/esm/pluggableElementTypes/ViewType.d.ts +22 -5
- package/esm/pluggableElementTypes/ViewType.js +40 -5
- package/esm/pluggableElementTypes/WidgetType.d.ts +2 -2
- package/esm/pluggableElementTypes/WidgetType.js +1 -1
- package/esm/pluggableElementTypes/addMenuItems.d.ts +88 -0
- package/esm/pluggableElementTypes/addMenuItems.js +82 -0
- package/esm/pluggableElementTypes/extendElementType.d.ts +29 -0
- package/esm/pluggableElementTypes/extendElementType.js +72 -0
- package/esm/pluggableElementTypes/index.d.ts +8 -7
- package/esm/pluggableElementTypes/index.js +24 -14
- package/esm/pluggableElementTypes/models/BaseConnectionModelFactory.d.ts +80 -15
- package/esm/pluggableElementTypes/models/BaseConnectionModelFactory.js +90 -10
- package/esm/pluggableElementTypes/models/BaseDisplayModel.d.ts +643 -84
- package/esm/pluggableElementTypes/models/BaseDisplayModel.js +230 -60
- package/esm/pluggableElementTypes/models/BaseTrackModel.d.ts +246 -37
- package/esm/pluggableElementTypes/models/BaseTrackModel.js +416 -107
- package/esm/pluggableElementTypes/models/BaseViewModel.d.ts +236 -16
- package/esm/pluggableElementTypes/models/BaseViewModel.js +154 -16
- package/esm/pluggableElementTypes/models/InternetAccountModel.d.ts +169 -25
- package/esm/pluggableElementTypes/models/InternetAccountModel.js +218 -48
- package/esm/pluggableElementTypes/models/assertDisplayContract.d.ts +178 -0
- package/esm/pluggableElementTypes/models/assertDisplayContract.js +239 -0
- package/esm/pluggableElementTypes/models/baseConnectionConfig.d.ts +26 -8
- package/esm/pluggableElementTypes/models/baseConnectionConfig.js +18 -2
- package/esm/pluggableElementTypes/models/baseInternetAccountConfig.d.ts +31 -17
- package/esm/pluggableElementTypes/models/baseInternetAccountConfig.js +23 -2
- package/esm/pluggableElementTypes/models/baseTrackConfig.d.ts +142 -65
- package/esm/pluggableElementTypes/models/baseTrackConfig.js +215 -90
- package/esm/pluggableElementTypes/models/components/SaveTrackData.d.ts +3 -8
- package/esm/pluggableElementTypes/models/components/SaveTrackData.js +111 -139
- package/esm/pluggableElementTypes/models/components/fetchTrackData.d.ts +54 -0
- package/esm/pluggableElementTypes/models/components/fetchTrackData.js +83 -0
- package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.d.ts +50 -0
- package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.js +147 -0
- package/esm/pluggableElementTypes/models/index.d.ts +5 -3
- package/esm/pluggableElementTypes/models/index.js +9 -8
- package/esm/pluggableElementTypes/models/migrateTrackConfig.d.ts +48 -0
- package/esm/pluggableElementTypes/models/migrateTrackConfig.js +114 -0
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/bed.js +75 -7
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.d.ts +10 -3
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.js +272 -100
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/gff3.d.ts +6 -1
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/gff3.js +70 -74
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/types.d.ts +9 -1
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/util.d.ts +21 -0
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/util.js +51 -0
- package/esm/pluggableElementTypes/models/uriMatchesDomains.d.ts +29 -0
- package/esm/pluggableElementTypes/models/uriMatchesDomains.js +62 -0
- package/esm/pluggableElementTypes/renderers/util/serializableFilterChain.d.ts +5 -4
- package/esm/pluggableElementTypes/renderers/util/serializableFilterChain.js +20 -10
- package/esm/pluginDefinitions.d.ts +225 -0
- package/esm/pluginDefinitions.js +254 -0
- package/esm/rpc/BaseRpcDriver.d.ts +27 -35
- package/esm/rpc/BaseRpcDriver.js +68 -106
- package/esm/rpc/MainThreadRpcDriver.d.ts +9 -10
- package/esm/rpc/MainThreadRpcDriver.js +23 -29
- package/esm/rpc/RpcClient.d.ts +50 -0
- package/esm/rpc/RpcClient.js +189 -0
- package/esm/rpc/RpcManager.d.ts +120 -27
- package/esm/rpc/RpcManager.js +187 -50
- package/esm/rpc/RpcRegistry.d.ts +298 -0
- package/esm/rpc/RpcServer.d.ts +43 -0
- package/esm/rpc/RpcServer.js +242 -0
- package/esm/rpc/WebWorkerRpcDriver.d.ts +78 -24
- package/esm/rpc/WebWorkerRpcDriver.js +311 -30
- package/esm/rpc/byteBudget.d.ts +64 -0
- package/esm/rpc/byteBudget.js +61 -0
- package/esm/rpc/configSchema.d.ts +13 -5
- package/esm/rpc/configSchema.js +40 -16
- package/esm/rpc/coreRpcMethods.d.ts +6 -5
- package/esm/rpc/coreRpcMethods.js +13 -12
- package/esm/rpc/explainTransferError.d.ts +35 -0
- package/esm/rpc/explainTransferError.js +158 -0
- package/esm/rpc/methods/CoreFreeResources.d.ts +19 -4
- package/esm/rpc/methods/CoreFreeResources.js +17 -6
- 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.d.ts +5 -18
- package/esm/rpc/methods/CoreGetExportData.js +25 -15
- package/esm/rpc/methods/CoreGetFeatureDensity.d.ts +11 -0
- package/esm/rpc/methods/CoreGetFeatureDensity.js +22 -0
- package/esm/rpc/methods/CoreGetFeatures.d.ts +6 -15
- package/esm/rpc/methods/CoreGetFeatures.js +14 -18
- package/esm/rpc/methods/CoreGetInfo.d.ts +6 -0
- package/esm/rpc/methods/CoreGetInfo.js +12 -0
- package/esm/rpc/methods/CoreGetMetadata.d.ts +4 -7
- package/esm/rpc/methods/CoreGetMetadata.js +6 -9
- package/esm/rpc/methods/CoreGetRefNames.d.ts +4 -8
- package/esm/rpc/methods/CoreGetRefNames.js +16 -15
- package/esm/rpc/methods/CoreGetRegionByteEstimate.d.ts +6 -0
- package/esm/rpc/methods/CoreGetRegionByteEstimate.js +19 -0
- package/esm/rpc/methods/CoreGetRegions.d.ts +4 -6
- package/esm/rpc/methods/CoreGetRegions.js +6 -9
- package/esm/rpc/methods/CoreGetSequence.d.ts +4 -11
- package/esm/rpc/methods/CoreGetSequence.js +12 -13
- 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/rpc/serializeError/index.d.ts +9 -0
- package/esm/rpc/serializeError/index.js +86 -0
- package/esm/svg/SvgExport.d.ts +30 -0
- package/esm/svg/SvgExport.js +52 -0
- package/esm/svg/SvgThemeProviders.d.ts +12 -0
- package/esm/svg/SvgThemeProviders.js +15 -0
- package/esm/svg/constants.d.ts +1 -0
- package/esm/svg/constants.js +5 -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/saveSvgAsImage.d.ts +6 -0
- package/esm/svg/saveSvgAsImage.js +90 -0
- package/esm/svg/serializeSvg.d.ts +7 -0
- package/esm/svg/serializeSvg.js +11 -0
- package/esm/svg/svgId.d.ts +42 -0
- package/esm/svg/svgId.js +84 -0
- package/esm/svg/svgReady.d.ts +138 -0
- package/esm/svg/svgReady.js +165 -0
- package/esm/svg/trackNames.d.ts +29 -0
- package/esm/svg/trackNames.js +34 -0
- package/esm/svg/wrapSvgExport.d.ts +12 -0
- package/esm/svg/wrapSvgExport.js +10 -0
- package/esm/ui/ActionLink.d.ts +7 -0
- package/esm/ui/ActionLink.js +9 -0
- package/esm/ui/AddCustomPluginDialog.d.ts +14 -0
- package/esm/ui/AddCustomPluginDialog.js +56 -0
- package/esm/ui/AddGenomePane.d.ts +8 -0
- package/esm/ui/AddGenomePane.js +228 -0
- package/esm/ui/AdvancedOptions.d.ts +6 -0
- package/esm/ui/AdvancedOptions.js +17 -0
- package/esm/ui/AppLogo.d.ts +1 -1
- package/esm/ui/AppLogo.js +2 -2
- package/esm/ui/AppReadyMarker.d.ts +45 -0
- package/esm/ui/AppReadyMarker.js +89 -0
- package/esm/ui/AssemblySelector.d.ts +5 -8
- package/esm/ui/AssemblySelector.js +8 -26
- package/esm/ui/BaseExportSvgDialog.d.ts +16 -0
- package/esm/ui/BaseExportSvgDialog.js +84 -0
- package/esm/ui/BaseTooltip.d.ts +14 -3
- package/esm/ui/BaseTooltip.js +151 -34
- package/esm/ui/CascadingMenu.d.ts +9 -18
- package/esm/ui/CascadingMenu.js +446 -42
- package/esm/ui/CascadingMenuButton.d.ts +9 -11
- package/esm/ui/CascadingMenuButton.js +36 -18
- package/esm/ui/CascadingMenuHelpDialog.d.ts +2 -2
- package/esm/ui/CascadingMenuHelpDialog.js +4 -5
- package/esm/ui/CascadingMenuHelpIconButton.d.ts +2 -1
- package/esm/ui/CascadingMenuHelpIconButton.js +18 -9
- package/esm/ui/ColorPicker.d.ts +6 -9
- package/esm/ui/ColorPicker.js +36 -39
- package/esm/ui/ConfirmDialog.d.ts +2 -9
- package/esm/ui/ConfirmDialog.js +6 -9
- package/esm/ui/ContextMenu.d.ts +50 -0
- package/esm/ui/ContextMenu.js +55 -0
- package/esm/ui/CopyToClipboardButton.d.ts +10 -0
- package/esm/ui/CopyToClipboardButton.js +14 -0
- package/esm/ui/Crosshairs.d.ts +10 -0
- package/esm/ui/Crosshairs.js +15 -0
- package/esm/ui/DOMPurifySanitizedHTML.d.ts +1 -1
- package/esm/ui/DOMPurifySanitizedHTML.js +5 -5
- package/esm/ui/DataGridFlexContainer.d.ts +9 -2
- package/esm/ui/DataGridFlexContainer.js +4 -3
- package/esm/ui/Dialog.d.ts +5 -2
- package/esm/ui/Dialog.js +35 -27
- package/esm/ui/DraggableDialog.d.ts +3 -3
- package/esm/ui/DraggableDialog.js +50 -12
- package/esm/ui/DropDownMenu.d.ts +4 -2
- package/esm/ui/DropDownMenu.js +6 -5
- package/esm/ui/EditableTypography.d.ts +3 -1
- package/esm/ui/EditableTypography.js +34 -26
- package/esm/ui/ErrorActions.d.ts +24 -0
- package/esm/ui/ErrorActions.js +20 -0
- package/esm/ui/ErrorBanner.d.ts +7 -0
- package/esm/ui/ErrorBanner.js +35 -0
- package/esm/ui/ErrorBar.d.ts +6 -0
- package/esm/ui/ErrorBar.js +35 -0
- package/esm/ui/ErrorBoundary.d.ts +29 -5
- package/esm/ui/ErrorBoundary.js +32 -2
- package/esm/ui/ErrorMessage.d.ts +2 -4
- package/esm/ui/ErrorMessage.js +17 -52
- package/esm/ui/ErrorMessageStackTraceContents.d.ts +1 -1
- package/esm/ui/ErrorMessageStackTraceContents.js +5 -4
- package/esm/ui/ErrorMessageStackTraceDialog.d.ts +1 -1
- package/esm/ui/ErrorMessageStackTraceDialog.js +51 -96
- package/esm/ui/ErrorOverlay.d.ts +8 -0
- package/esm/ui/ErrorOverlay.js +5 -0
- package/esm/ui/ExportSvgDialog.d.ts +7 -0
- package/esm/ui/ExportSvgDialog.js +9 -0
- package/esm/ui/ExternalLink.d.ts +1 -1
- package/esm/ui/FactoryResetDialog.d.ts +1 -1
- package/esm/ui/FactoryResetDialog.js +6 -15
- package/esm/ui/FatalErrorDialog.d.ts +3 -2
- package/esm/ui/FatalErrorDialog.js +6 -5
- package/esm/ui/FileDropZone.d.ts +25 -0
- package/esm/ui/FileDropZone.js +129 -0
- package/esm/ui/FileSelector/FileSelector.d.ts +1 -1
- package/esm/ui/FileSelector/FileSelector.js +59 -30
- package/esm/ui/FileSelector/LocalFileChooser.d.ts +7 -2
- package/esm/ui/FileSelector/LocalFileChooser.js +61 -47
- package/esm/ui/FileSelector/LocationInput.d.ts +1 -1
- package/esm/ui/FileSelector/LocationInput.js +8 -12
- package/esm/ui/FileSelector/SourceTypeSelector.d.ts +5 -5
- package/esm/ui/FileSelector/SourceTypeSelector.js +9 -7
- package/esm/ui/FileSelector/UrlChooser.d.ts +1 -1
- package/esm/ui/FileSelector/UrlChooser.js +26 -2
- package/esm/ui/FileSelector/emptySourceType.d.ts +2 -0
- package/esm/ui/FileSelector/emptySourceType.js +14 -0
- package/esm/ui/FileSelector/useInternetAccounts.d.ts +436 -64
- package/esm/ui/FileSelector/useInternetAccounts.js +13 -6
- package/esm/ui/FileSelector/util.d.ts +58 -3
- package/esm/ui/FileSelector/util.js +128 -11
- package/esm/ui/GpuFallbackButton.d.ts +12 -0
- package/esm/ui/GpuFallbackButton.js +20 -0
- package/esm/ui/HoverMenu.d.ts +11 -3
- package/esm/ui/HoverMenu.js +34 -9
- package/esm/ui/HoverTooltip.d.ts +27 -0
- package/esm/ui/HoverTooltip.js +24 -0
- package/esm/ui/Icons.d.ts +6 -4
- package/esm/ui/Icons.js +9 -0
- package/esm/ui/InfoDialog.d.ts +7 -0
- package/esm/ui/InfoDialog.js +16 -0
- package/esm/ui/InlineMenuControls.d.ts +6 -0
- package/esm/ui/InlineMenuControls.js +17 -0
- package/esm/ui/JexlFilterDialog.d.ts +26 -0
- package/esm/ui/JexlFilterDialog.js +167 -0
- package/esm/ui/JexlFilterRowEditors.d.ts +15 -0
- package/esm/ui/JexlFilterRowEditors.js +90 -0
- package/esm/ui/LabeledCheckbox.d.ts +9 -0
- package/esm/ui/LabeledCheckbox.js +7 -0
- package/esm/ui/LazyBaseTooltip.d.ts +4 -0
- package/esm/ui/LazyBaseTooltip.js +9 -0
- package/esm/ui/LegendSwatchGlyph.d.ts +7 -0
- package/esm/ui/LegendSwatchGlyph.js +30 -0
- package/esm/ui/LoadingDots.d.ts +1 -0
- package/esm/ui/LoadingDots.js +30 -0
- package/esm/ui/LoadingEllipses.d.ts +17 -1
- package/esm/ui/LoadingEllipses.js +20 -29
- package/esm/ui/LoadingOverlay.d.ts +23 -0
- package/esm/ui/LoadingOverlay.js +139 -0
- package/esm/ui/LoadingProgress.d.ts +16 -0
- package/esm/ui/LoadingProgress.js +16 -0
- package/esm/ui/Logo.d.ts +2 -2
- package/esm/ui/Logo.js +23 -24
- package/esm/ui/Menu.js +1 -1
- package/esm/ui/MenuItemChevron.d.ts +3 -0
- package/esm/ui/MenuItemChevron.js +19 -0
- package/esm/ui/MenuItemEndDecoration.d.ts +4 -0
- package/esm/ui/MenuItemEndDecoration.js +28 -0
- package/esm/ui/MenuItemTrailing.d.ts +12 -0
- package/esm/ui/MenuItemTrailing.js +42 -0
- package/esm/ui/MenuTypes.d.ts +95 -5
- package/esm/ui/MenuTypes.js +16 -1
- package/esm/ui/MonospaceTextField.d.ts +10 -0
- package/esm/ui/MonospaceTextField.js +40 -0
- package/esm/ui/NumberTextField.d.ts +31 -0
- package/esm/ui/NumberTextField.js +33 -0
- package/esm/ui/PaletteContext.d.ts +90 -0
- package/esm/ui/PaletteContext.js +142 -0
- package/esm/ui/PluggableComponent.d.ts +10 -0
- package/esm/ui/PluggableComponent.js +19 -0
- package/esm/ui/PluggableComponents.d.ts +29 -0
- package/esm/ui/PluggableComponents.js +28 -0
- package/esm/ui/PluggableElements.d.ts +23 -0
- package/esm/ui/PluggableElements.js +24 -0
- package/esm/ui/PluginStoreCard.d.ts +17 -0
- package/esm/ui/PluginStoreCard.js +45 -0
- package/esm/ui/PopoverPicker.d.ts +6 -0
- package/esm/ui/PopoverPicker.js +25 -0
- package/esm/ui/PrerenderedCanvas.d.ts +1 -1
- package/esm/ui/PrerenderedCanvas.js +5 -4
- package/esm/ui/ProgressChip.d.ts +37 -0
- package/esm/ui/ProgressChip.js +66 -0
- package/esm/ui/RedErrorMessageBox.d.ts +1 -1
- package/esm/ui/RedErrorMessageBox.js +9 -3
- package/esm/ui/RefNameAutocomplete/EndAdornment.d.ts +5 -0
- package/esm/ui/RefNameAutocomplete/EndAdornment.js +31 -0
- package/esm/ui/RefNameAutocomplete/HelpDialog.d.ts +3 -0
- package/esm/ui/RefNameAutocomplete/HelpDialog.js +7 -0
- package/esm/ui/RefNameAutocomplete/SearchOption.d.ts +13 -0
- package/esm/ui/RefNameAutocomplete/SearchOption.js +45 -0
- package/esm/ui/RefNameAutocomplete/index.d.ts +21 -0
- package/esm/ui/RefNameAutocomplete/index.js +84 -0
- package/esm/ui/RefNameAutocomplete/util.d.ts +62 -0
- package/esm/ui/RefNameAutocomplete/util.js +209 -0
- package/esm/ui/ReplaceCurrentViewButton.d.ts +19 -0
- package/esm/ui/ReplaceCurrentViewButton.js +22 -0
- package/esm/ui/ResizeHandle.d.ts +15 -7
- package/esm/ui/ResizeHandle.js +73 -53
- package/esm/ui/ReturnToImportFormDialog.d.ts +1 -1
- package/esm/ui/ReturnToImportFormDialog.js +7 -9
- package/esm/ui/SanitizedHTML.d.ts +6 -1
- package/esm/ui/SanitizedHTML.js +7 -47
- package/esm/ui/ScrollChrome.d.ts +13 -0
- package/esm/ui/ScrollChrome.js +11 -0
- package/esm/ui/ScrollEdgeShadow.d.ts +41 -0
- package/esm/ui/ScrollEdgeShadow.js +77 -0
- package/esm/ui/ScrollZoomToggle.d.ts +15 -0
- package/esm/ui/ScrollZoomToggle.js +75 -0
- package/esm/ui/SequenceAdapterInputs.d.ts +9 -0
- package/esm/ui/SequenceAdapterInputs.js +30 -0
- package/esm/ui/SessionJsonPanel.d.ts +3 -0
- package/esm/ui/SessionJsonPanel.js +14 -0
- package/esm/ui/SettingsChangesTable.d.ts +15 -0
- package/esm/ui/SettingsChangesTable.js +87 -0
- package/esm/ui/ShareLinkField.d.ts +4 -0
- package/esm/ui/ShareLinkField.js +15 -0
- package/esm/ui/SingleSlider.d.ts +8 -0
- package/esm/ui/SingleSlider.js +11 -0
- package/esm/ui/SizeSliderRow.d.ts +14 -0
- package/esm/ui/SizeSliderRow.js +48 -0
- package/esm/ui/SliderTooltip.d.ts +2 -0
- package/esm/ui/SliderTooltip.js +17 -0
- package/esm/ui/Snackbar.d.ts +4 -2
- package/esm/ui/Snackbar.js +11 -8
- package/esm/ui/SnackbarContents.d.ts +1 -1
- package/esm/ui/SnackbarContents.js +21 -3
- package/esm/ui/SnackbarModel.d.ts +40 -0
- package/esm/ui/SnackbarModel.js +96 -52
- package/esm/ui/StackTraceButton.d.ts +5 -0
- package/esm/ui/StackTraceButton.js +16 -0
- package/esm/ui/StatusProgressBar.d.ts +37 -0
- package/esm/ui/StatusProgressBar.js +76 -0
- package/esm/ui/SubmitDialog.d.ts +6 -0
- package/esm/ui/SubmitDialog.js +9 -0
- package/esm/ui/SubmitForm.d.ts +23 -0
- package/esm/ui/SubmitForm.js +23 -0
- package/esm/ui/SvgColorLegend.d.ts +18 -0
- package/esm/ui/SvgColorLegend.js +106 -0
- package/esm/ui/TagTextField.d.ts +40 -0
- package/esm/ui/TagTextField.js +32 -0
- package/esm/ui/VerticalScrollbar.d.ts +24 -0
- package/esm/ui/VerticalScrollbar.js +104 -0
- package/esm/ui/ViewLoadingScreen.d.ts +25 -0
- package/esm/ui/ViewLoadingScreen.js +52 -0
- package/esm/ui/addExtensionElement.d.ts +18 -0
- package/esm/ui/addExtensionElement.js +23 -0
- package/esm/ui/buildExtraTrackMenuItems.d.ts +22 -0
- package/esm/ui/buildExtraTrackMenuItems.js +14 -0
- package/esm/ui/colorScale.d.ts +92 -0
- package/esm/ui/colorScale.js +72 -0
- package/esm/ui/colorSwatchStyle.d.ts +9 -0
- package/esm/ui/colorSwatchStyle.js +11 -0
- package/esm/ui/colors.d.ts +125 -8
- package/esm/ui/colors.js +364 -1
- package/esm/ui/extensionSelectors.d.ts +38 -0
- package/esm/ui/extensionSelectors.js +49 -0
- package/esm/ui/filterMenuItems.d.ts +112 -0
- package/esm/ui/filterMenuItems.js +86 -0
- package/esm/ui/formatErrorStack.d.ts +1 -0
- package/esm/ui/formatErrorStack.js +56 -0
- package/esm/ui/gpuFallback.d.ts +33 -0
- package/esm/ui/gpuFallback.js +39 -0
- package/esm/ui/hoverBoxStyle.d.ts +23 -0
- package/esm/ui/hoverBoxStyle.js +28 -0
- package/esm/ui/index.d.ts +77 -5
- package/esm/ui/index.js +83 -20
- package/esm/ui/inlineMenuRowWidth.d.ts +1 -0
- package/esm/ui/inlineMenuRowWidth.js +8 -0
- package/esm/ui/launchTargetsMenuItem.d.ts +18 -0
- package/esm/ui/launchTargetsMenuItem.js +24 -0
- package/esm/ui/launchViewMenu.d.ts +4 -0
- package/esm/ui/launchViewMenu.js +46 -0
- package/esm/ui/legendMenuItem.d.ts +16 -0
- package/esm/ui/legendMenuItem.js +17 -0
- package/esm/ui/legendSpec.d.ts +69 -0
- package/esm/ui/legendSpec.js +69 -0
- package/esm/ui/loadingDotKeyframes.d.ts +18 -0
- package/esm/ui/loadingDotKeyframes.js +17 -0
- package/esm/ui/makeSizeMenu.d.ts +24 -0
- package/esm/ui/makeSizeMenu.js +58 -0
- package/esm/ui/mapStackTrace.d.ts +8 -0
- package/esm/ui/mapStackTrace.js +108 -0
- package/esm/ui/measureLegendText.d.ts +1 -0
- package/esm/ui/measureLegendText.js +8 -0
- package/esm/ui/menuItemAdornment.d.ts +22 -0
- package/esm/ui/menuItemAdornment.js +28 -0
- package/esm/ui/menuItems.d.ts +23 -0
- package/esm/ui/menuItems.js +21 -0
- package/esm/ui/menuLabels.d.ts +41 -0
- package/esm/ui/menuLabels.js +43 -0
- package/esm/ui/multiTrackMenuItems.d.ts +25 -0
- package/esm/ui/multiTrackMenuItems.js +15 -0
- package/esm/ui/palette.d.ts +561 -0
- package/esm/ui/palette.js +785 -0
- package/esm/ui/parseError.d.ts +4 -0
- package/esm/ui/parseError.js +18 -0
- package/esm/ui/persistentScrollbarStyle.d.ts +49 -0
- package/esm/ui/persistentScrollbarStyle.js +53 -0
- package/esm/ui/radioSubMenu.d.ts +33 -0
- package/esm/ui/radioSubMenu.js +32 -0
- package/esm/ui/react-colorful.js +5 -1
- package/esm/ui/replaceViewAction.d.ts +31 -0
- package/esm/ui/replaceViewAction.js +39 -0
- package/esm/ui/rewriteExternalAnchors.d.ts +1 -0
- package/esm/ui/rewriteExternalAnchors.js +8 -0
- package/esm/ui/scrollZoomLabels.d.ts +17 -0
- package/esm/ui/scrollZoomLabels.js +22 -0
- package/esm/ui/showSubMenu.d.ts +19 -0
- package/esm/ui/showSubMenu.js +30 -0
- package/esm/ui/sliderScale.d.ts +6 -0
- package/esm/ui/sliderScale.js +30 -0
- package/esm/ui/statusProgressKeyframes.d.ts +6 -0
- package/esm/ui/statusProgressKeyframes.js +14 -0
- package/esm/ui/stripStackTraceMessage.d.ts +1 -0
- package/esm/ui/stripStackTraceMessage.js +9 -0
- package/esm/ui/styleTheme.d.ts +158 -0
- package/esm/ui/styleTheme.js +115 -0
- package/esm/ui/submenuAim.d.ts +30 -0
- package/esm/ui/submenuAim.js +37 -0
- package/esm/ui/theme.d.ts +268 -30
- package/esm/ui/theme.js +250 -350
- package/esm/ui/toggleMenuItems.d.ts +42 -0
- package/esm/ui/toggleMenuItems.js +61 -0
- package/esm/ui/useAssemblySelection.d.ts +153 -0
- package/esm/ui/useAssemblySelection.js +54 -0
- package/esm/ui/useCoalescedPointer.d.ts +36 -0
- package/esm/ui/useCoalescedPointer.js +60 -0
- package/esm/ui/useCopyToClipboard.d.ts +15 -0
- package/esm/ui/useCopyToClipboard.js +41 -0
- package/esm/ui/useExportSvgPreference.d.ts +1 -0
- package/esm/ui/useExportSvgPreference.js +4 -0
- package/esm/ui/useMouseTracking.d.ts +71 -0
- package/esm/ui/useMouseTracking.js +179 -0
- package/esm/ui/useRecentLocations.d.ts +28 -0
- package/esm/ui/useRecentLocations.js +31 -0
- package/esm/ui/viewHeaderHeight.d.ts +1 -0
- package/esm/ui/viewHeaderHeight.js +1 -0
- package/esm/ui/wrapComponent.d.ts +47 -0
- package/esm/ui/wrapComponent.js +58 -0
- package/esm/ui/zIndexes.d.ts +28 -0
- package/esm/ui/zIndexes.js +38 -0
- package/esm/util/Base1DUtils.d.ts +207 -17
- package/esm/util/Base1DUtils.js +316 -173
- package/esm/util/Base1DViewModel.d.ts +99 -21
- package/esm/util/Base1DViewModel.js +151 -41
- package/esm/util/FileSaver/index.d.ts +1 -0
- package/esm/util/FileSaver/index.js +27 -0
- package/esm/util/IntervalTree.d.ts +18 -39
- package/esm/util/IntervalTree.js +63 -244
- package/esm/util/SvgCanvas.d.ts +83 -0
- package/esm/util/SvgCanvas.js +520 -0
- package/esm/util/TimeTraveller.d.ts +12 -0
- package/esm/util/TimeTraveller.js +130 -27
- package/esm/util/aborting.d.ts +56 -4
- package/esm/util/aborting.js +112 -25
- package/esm/util/adapterMetadata.d.ts +20 -0
- package/esm/util/adapterMetadata.js +40 -0
- package/esm/util/addAndShowTrack.d.ts +19 -0
- package/esm/util/addAndShowTrack.js +27 -0
- package/esm/util/addRelativeUris.d.ts +29 -0
- package/esm/util/addRelativeUris.js +78 -0
- package/esm/util/addTrackComponent.d.ts +72 -0
- package/esm/util/addTrackComponent.js +53 -0
- package/esm/util/addTrackFromWidget.d.ts +91 -0
- package/esm/util/addTrackFromWidget.js +91 -0
- package/esm/util/aggregateFieldName.d.ts +10 -0
- package/esm/util/aggregateFieldName.js +8 -0
- package/esm/util/analytics.d.ts +32 -3
- package/esm/util/analytics.js +135 -49
- package/esm/util/animationAllowed.d.ts +26 -0
- package/esm/util/animationAllowed.js +35 -0
- package/esm/util/applyRowResizeWheel.d.ts +15 -0
- package/esm/util/applyRowResizeWheel.js +23 -0
- package/esm/util/assemblyConfigUtils.d.ts +144 -0
- package/esm/util/assemblyConfigUtils.js +498 -0
- package/esm/util/bandHeight.d.ts +63 -0
- package/esm/util/bandHeight.js +85 -0
- package/esm/util/bandLayout.d.ts +51 -0
- package/esm/util/bandLayout.js +36 -0
- package/esm/util/bezierConnector.d.ts +15 -0
- package/esm/util/bezierConnector.js +101 -0
- package/esm/util/bgzfWorkerPool.d.ts +24 -0
- package/esm/util/bgzfWorkerPool.js +27 -0
- package/esm/util/binnedAggregate.d.ts +17 -0
- package/esm/util/binnedAggregate.js +275 -0
- package/esm/util/blockTypes.d.ts +64 -45
- package/esm/util/blockTypes.js +67 -74
- package/esm/util/bpUtils.d.ts +81 -0
- package/esm/util/bpUtils.js +103 -0
- package/esm/util/cacheBudgets.d.ts +55 -0
- package/esm/util/cacheBudgets.js +55 -0
- package/esm/util/cachedSetup.d.ts +51 -0
- package/esm/util/cachedSetup.js +87 -0
- package/esm/util/calculateDynamicBlocks.d.ts +5 -0
- package/esm/util/calculateDynamicBlocks.js +85 -82
- package/esm/util/calculateStaticBlocks.d.ts +2 -3
- package/esm/util/calculateStaticBlocks.js +48 -71
- package/esm/util/categoricalField.d.ts +56 -0
- package/esm/util/categoricalField.js +73 -0
- package/esm/util/chooseGridPitch.d.ts +9 -0
- package/esm/util/chooseGridPitch.js +31 -0
- package/esm/util/clampToContig.d.ts +43 -0
- package/esm/util/clampToContig.js +47 -0
- package/esm/util/cmpStr.d.ts +1 -0
- package/esm/util/cmpStr.js +7 -0
- package/esm/util/coarseStripHTML.js +2 -15
- package/esm/util/color/cssColorsLevel4.d.ts +1 -0
- package/esm/util/color/cssColorsLevel4.js +7 -2
- package/esm/util/color/index.d.ts +84 -3
- package/esm/util/color/index.js +197 -25
- package/esm/util/color-bits/bit.d.ts +4 -0
- package/esm/util/color-bits/bit.js +37 -0
- package/esm/util/color-bits/convert.d.ts +23 -0
- package/esm/util/color-bits/convert.js +294 -0
- package/esm/util/color-bits/core.d.ts +34 -0
- package/esm/util/color-bits/core.js +67 -0
- package/esm/util/color-bits/format.d.ts +24 -0
- package/esm/util/color-bits/format.js +82 -0
- package/esm/util/color-bits/functions.d.ts +33 -0
- package/esm/util/color-bits/functions.js +70 -0
- package/esm/util/color-bits/index.d.ts +5 -0
- package/esm/util/color-bits/index.js +4 -0
- package/esm/util/color-bits/parse.d.ts +17 -0
- package/esm/util/color-bits/parse.js +382 -0
- package/esm/util/colorBits.d.ts +39 -0
- package/esm/util/colorBits.js +155 -0
- package/esm/util/colorRamp.d.ts +81 -0
- package/esm/util/colorRamp.js +244 -0
- 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/colord.d.ts +8 -0
- package/esm/util/colord.js +43 -191
- package/esm/util/convertCodingSequenceToPeptides.d.ts +17 -3
- package/esm/util/convertCodingSequenceToPeptides.js +51 -4
- package/esm/util/copyText.d.ts +18 -0
- package/esm/util/copyText.js +30 -0
- package/esm/util/copyToClipboard.d.ts +4 -0
- package/esm/util/copyToClipboard.js +58 -0
- package/esm/util/createAbortRotation.d.ts +115 -0
- package/esm/util/createAbortRotation.js +116 -0
- package/esm/util/createSvgRasterCanvas.d.ts +17 -0
- package/esm/util/createSvgRasterCanvas.js +22 -0
- package/esm/util/crypto.d.ts +24 -0
- package/esm/util/crypto.js +85 -2
- package/esm/util/cssColorParse.d.ts +15 -0
- package/esm/util/cssColorParse.js +53 -0
- package/esm/util/dataGridUtils.d.ts +9 -0
- package/esm/util/dataGridUtils.js +36 -0
- package/esm/util/dedupe.js +1 -0
- package/esm/util/deepEqual.d.ts +8 -0
- package/esm/util/deepEqual.js +22 -0
- package/esm/util/deepMerge.d.ts +20 -0
- package/esm/util/deepMerge.js +44 -0
- package/esm/util/diagonalizeRegions.d.ts +22 -0
- package/esm/util/diagonalizeRegions.js +187 -0
- package/esm/util/environment.d.ts +4 -0
- package/esm/util/environment.js +43 -0
- package/esm/util/eventPoint.d.ts +32 -0
- package/esm/util/eventPoint.js +28 -0
- package/esm/util/expandLooseSearchIndex.d.ts +19 -0
- package/esm/util/expandLooseSearchIndex.js +29 -0
- package/esm/util/featureTable.d.ts +224 -0
- package/esm/util/featureTable.js +366 -0
- package/esm/util/featureTransforms.d.ts +80 -0
- package/esm/util/featureTransforms.js +1579 -0
- package/esm/util/featureTypes.d.ts +24 -0
- package/esm/util/featureTypes.js +35 -0
- package/esm/util/fetchAndMaybeUnzip.d.ts +6 -0
- package/esm/util/fetchAndMaybeUnzip.js +71 -0
- package/esm/util/fetchContext.d.ts +81 -0
- package/esm/util/fetchContext.js +59 -0
- package/esm/util/fetchHub.d.ts +17 -0
- package/esm/util/fetchHub.js +31 -0
- package/esm/util/fetchJson.d.ts +1 -0
- package/esm/util/fetchJson.js +7 -0
- package/esm/util/fetchPhases.d.ts +77 -0
- package/esm/util/fetchPhases.js +1 -0
- package/esm/util/fetchSeq.d.ts +4 -1
- package/esm/util/fetchSeq.js +18 -6
- package/esm/util/fieldReader.d.ts +17 -0
- package/esm/util/fieldReader.js +62 -0
- package/esm/util/fileHandleStore.d.ts +19 -2
- package/esm/util/fileHandleStore.js +95 -35
- package/esm/util/flatbush/index.d.ts +27 -6
- package/esm/util/flatbush/index.js +194 -218
- package/esm/util/formatBytes.d.ts +9 -0
- package/esm/util/formatBytes.js +18 -0
- package/esm/util/formatFastaStrings.d.ts +13 -0
- package/esm/util/formatFastaStrings.js +13 -0
- package/esm/util/formatGuessers.d.ts +30 -0
- package/esm/util/formatGuessers.js +69 -0
- package/esm/util/formatRelativeTime.d.ts +1 -0
- package/esm/util/formatRelativeTime.js +25 -0
- package/esm/util/frameCoalescer.d.ts +30 -0
- package/esm/util/frameCoalescer.js +22 -0
- package/esm/util/freezeDeep.d.ts +26 -0
- package/esm/util/freezeDeep.js +39 -0
- package/esm/util/geneticCodes.d.ts +56 -0
- package/esm/util/geneticCodes.js +371 -0
- package/esm/util/getFileName.d.ts +11 -0
- package/esm/util/getFileName.js +34 -0
- package/esm/util/getLocationUri.d.ts +49 -0
- package/esm/util/getLocationUri.js +63 -0
- package/esm/util/getRelativeX.d.ts +4 -0
- package/esm/util/getRelativeX.js +7 -0
- package/esm/util/getStr.d.ts +6 -0
- package/esm/util/getStr.js +15 -0
- package/esm/util/groupKeys.d.ts +77 -0
- package/esm/util/groupKeys.js +155 -0
- package/esm/util/highlights.d.ts +25 -0
- package/esm/util/highlights.js +87 -0
- package/esm/util/hooks.d.ts +189 -0
- package/esm/util/hooks.js +485 -0
- package/esm/util/htmlText.d.ts +13 -0
- package/esm/util/htmlText.js +66 -0
- package/esm/util/idMaker.d.ts +1 -1
- package/esm/util/idMaker.js +31 -18
- package/esm/util/index.d.ts +82 -268
- package/esm/util/index.js +137 -853
- package/esm/util/indexCandidates.d.ts +20 -0
- package/esm/util/indexCandidates.js +43 -0
- package/esm/util/installClearHoverOnSurfaceMove.d.ts +40 -0
- package/esm/util/installClearHoverOnSurfaceMove.js +41 -0
- package/esm/util/installFetch.d.ts +234 -0
- package/esm/util/installFetch.js +205 -0
- package/esm/util/installInitAutorun.d.ts +63 -0
- package/esm/util/installInitAutorun.js +107 -0
- package/esm/util/installPrerequisiteFetch.d.ts +115 -0
- package/esm/util/installPrerequisiteFetch.js +111 -0
- package/esm/util/intervals.d.ts +20 -0
- package/esm/util/intervals.js +37 -0
- package/esm/util/io/RemoteFileWithRangeCache.d.ts +10 -11
- package/esm/util/io/RemoteFileWithRangeCache.js +10 -148
- package/esm/util/io/index.d.ts +39 -2
- package/esm/util/io/index.js +120 -12
- package/esm/util/isDataCurrent.d.ts +9 -0
- package/esm/util/isDataCurrent.js +12 -0
- package/esm/util/isTextEntryFocused.d.ts +7 -0
- package/esm/util/isTextEntryFocused.js +16 -0
- package/esm/util/isWebWorker.js +1 -2
- package/esm/util/iupac.d.ts +4 -0
- package/esm/util/iupac.js +59 -0
- package/esm/util/jexl.js +146 -19
- package/esm/util/jexlFilterRows.d.ts +89 -0
- package/esm/util/jexlFilterRows.js +252 -0
- package/esm/util/jexlFilters.d.ts +68 -0
- package/esm/util/jexlFilters.js +61 -0
- package/esm/util/jexlStrings.d.ts +21 -1
- package/esm/util/jexlStrings.js +20 -14
- package/esm/util/layouts/GranularRectLayout.d.ts +20 -25
- package/esm/util/layouts/GranularRectLayout.js +116 -356
- package/esm/util/layouts/index.d.ts +1 -7
- package/esm/util/layouts/index.js +2 -6
- package/esm/util/layouts/intervalUtils.d.ts +12 -1
- package/esm/util/layouts/intervalUtils.js +13 -31
- package/esm/util/layouts/placeRect.d.ts +50 -0
- package/esm/util/layouts/placeRect.js +97 -0
- 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/leadingEdgeAutorun.d.ts +40 -0
- package/esm/util/leadingEdgeAutorun.js +51 -0
- package/esm/util/legendCandidates.d.ts +72 -0
- package/esm/util/legendCandidates.js +138 -0
- package/esm/util/librpc.d.ts +5 -2
- package/esm/util/librpc.js +6 -1
- package/esm/util/linkify.js +2 -0
- package/esm/util/locString.d.ts +72 -0
- package/esm/util/locString.js +178 -7
- package/esm/util/locStringsToRegions.d.ts +10 -0
- package/esm/util/locStringsToRegions.js +35 -0
- package/esm/util/localStorage.d.ts +36 -0
- package/esm/util/localStorage.js +137 -0
- package/esm/util/makeAssembly.d.ts +54 -0
- package/esm/util/makeAssembly.js +52 -0
- package/esm/util/makeTrackId.d.ts +14 -0
- package/esm/util/makeTrackId.js +14 -0
- package/esm/util/markEncoding.d.ts +150 -0
- package/esm/util/markEncoding.js +845 -0
- package/esm/util/markEncodingTypes.d.ts +588 -0
- package/esm/util/markEncodingTypes.js +8 -0
- package/esm/util/matchTrackId.d.ts +11 -0
- package/esm/util/matchTrackId.js +14 -0
- package/esm/util/measureText.d.ts +24 -0
- package/esm/util/measureText.js +51 -0
- package/esm/util/mst-reflection.d.ts +3 -11
- package/esm/util/mst-reflection.js +3 -52
- package/esm/util/mstUtils.d.ts +97 -0
- package/esm/util/mstUtils.js +137 -0
- package/esm/util/nanoid.d.ts +0 -4
- package/esm/util/nanoid.js +10 -20
- package/esm/util/numericUtils.d.ts +27 -0
- package/esm/util/numericUtils.js +143 -0
- package/esm/util/numericValue.d.ts +14 -0
- package/esm/util/numericValue.js +34 -0
- package/esm/util/objectUtils.d.ts +2 -0
- package/esm/util/objectUtils.js +9 -0
- package/esm/util/offscreenCanvasPonyfill.d.ts +5 -4
- package/esm/util/offscreenCanvasPonyfill.js +5 -47
- package/esm/util/openFeatureWidget.d.ts +38 -0
- package/esm/util/openFeatureWidget.js +64 -0
- package/esm/util/openViews.d.ts +17 -0
- package/esm/util/openViews.js +22 -0
- package/esm/util/paintLayer.d.ts +32 -0
- package/esm/util/paintLayer.js +33 -0
- package/esm/util/parentWalk.d.ts +32 -0
- package/esm/util/parentWalk.js +84 -0
- package/esm/util/parseLineByLine.d.ts +44 -2
- package/esm/util/parseLineByLine.js +150 -15
- package/esm/util/parseMotifList.d.ts +17 -0
- package/esm/util/parseMotifList.js +69 -0
- package/esm/util/pluginStore.d.ts +111 -0
- package/esm/util/pluginStore.js +254 -0
- package/esm/util/pointerPresence.d.ts +5 -0
- package/esm/util/pointerPresence.js +21 -0
- package/esm/util/preloadComponent.d.ts +5 -0
- package/esm/util/preloadComponent.js +11 -0
- package/esm/util/progress.d.ts +459 -0
- package/esm/util/progress.js +821 -0
- package/esm/util/quantileExtent.d.ts +49 -0
- package/esm/util/quantileExtent.js +162 -0
- package/esm/util/range.d.ts +46 -1
- package/esm/util/range.js +68 -2
- package/esm/util/renameRegions.d.ts +41 -0
- package/esm/util/renameRegions.js +143 -0
- package/esm/util/renderToStaticMarkup.d.ts +2 -0
- package/esm/util/renderToStaticMarkup.js +60 -0
- package/esm/util/reorder.d.ts +35 -0
- package/esm/util/reorder.js +83 -0
- package/esm/util/resolveRowHeight.d.ts +27 -0
- package/esm/util/resolveRowHeight.js +30 -0
- package/esm/util/revlist.d.ts +13 -0
- package/esm/util/revlist.js +14 -0
- package/esm/util/rowStackGeometry.d.ts +66 -0
- package/esm/util/rowStackGeometry.js +70 -0
- package/esm/util/rpc.d.ts +16 -1
- package/esm/util/rpc.js +12 -1
- package/esm/util/rxjs.d.ts +30 -2
- package/esm/util/rxjs.js +85 -10
- package/esm/util/sameStrings.d.ts +16 -0
- package/esm/util/sameStrings.js +20 -0
- 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 +5 -0
- package/esm/util/scrollLatch.js +67 -0
- package/esm/util/selectEncodedFeature.d.ts +16 -0
- package/esm/util/selectEncodedFeature.js +34 -0
- package/esm/util/selectNamedRegions.d.ts +136 -0
- package/esm/util/selectNamedRegions.js +222 -0
- package/esm/util/seqUtils.d.ts +17 -0
- package/esm/util/seqUtils.js +80 -0
- package/esm/util/sessionServices.d.ts +29 -0
- package/esm/util/sessionServices.js +46 -0
- package/esm/util/sessionSharing.d.ts +40 -0
- package/esm/util/sessionSharing.js +154 -0
- package/esm/util/sessionStorage.d.ts +1 -0
- package/esm/util/sessionStorage.js +15 -0
- package/esm/util/setStackTraceLimit.d.ts +6 -0
- package/esm/util/setStackTraceLimit.js +20 -0
- 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 +111 -4
- package/esm/util/simpleFeature.js +181 -29
- package/esm/util/springAnimate.d.ts +20 -0
- package/esm/util/springAnimate.js +80 -0
- package/esm/util/starFusion.d.ts +26 -0
- package/esm/util/starFusion.js +37 -0
- package/esm/util/stats.d.ts +25 -2
- package/esm/util/stats.js +39 -8
- package/esm/util/stepTables.d.ts +82 -0
- package/esm/util/stepTables.js +243 -0
- package/esm/util/stringUtils.d.ts +5 -0
- package/esm/util/stringUtils.js +34 -0
- package/esm/util/svAlt.d.ts +145 -0
- package/esm/util/svAlt.js +364 -0
- package/esm/util/svgColorProps.d.ts +18 -0
- package/esm/util/svgColorProps.js +55 -0
- package/esm/util/systemColorScheme.d.ts +12 -0
- package/esm/util/systemColorScheme.js +27 -0
- package/esm/util/tabix.d.ts +125 -0
- package/esm/util/tabix.js +148 -0
- package/esm/util/tags.d.ts +2 -0
- package/esm/util/tags.js +5 -0
- package/esm/util/temporaryAssembly.d.ts +21 -0
- package/esm/util/temporaryAssembly.js +29 -0
- package/esm/util/thresholdScale.d.ts +91 -0
- package/esm/util/thresholdScale.js +166 -0
- package/esm/util/tickLabels.d.ts +36 -0
- package/esm/util/tickLabels.js +45 -0
- package/esm/util/timeGate.d.ts +25 -0
- package/esm/util/timeGate.js +78 -0
- package/esm/util/trackConfigDelta.d.ts +84 -0
- package/esm/util/trackConfigDelta.js +206 -0
- package/esm/util/tracks.d.ts +431 -30
- package/esm/util/tracks.js +952 -185
- package/esm/util/translateTranscript.d.ts +44 -0
- package/esm/util/translateTranscript.js +102 -0
- package/esm/util/tss-react/cssAndCx.js +11 -66
- package/esm/util/tss-react/index.d.ts +11 -2
- package/esm/util/tss-react/index.js +9 -2
- package/esm/util/tss-react/makeStyles.js +7 -4
- package/esm/util/tss-react/mergeClasses.js +1 -0
- package/esm/util/tss-react/tools/classnames.d.ts +3 -0
- package/esm/util/tss-react/tools/classnames.js +3 -0
- package/esm/util/tss-react/tools/getDependencyArrayRef.d.ts +18 -0
- package/esm/util/tss-react/tools/getDependencyArrayRef.js +19 -0
- package/esm/util/tss-react/types.d.ts +1 -1
- package/esm/util/tss-react/types.js +1 -6
- package/esm/util/types/ElementId.js +1 -1
- package/esm/util/types/data.d.ts +73 -0
- package/esm/util/types/data.js +41 -0
- package/esm/util/types/index.d.ts +459 -121
- package/esm/util/types/index.js +96 -64
- package/esm/util/types/isAny.d.ts +11 -0
- package/esm/util/types/isAny.js +1 -0
- package/esm/util/types/mst.d.ts +74 -47
- package/esm/util/types/mst.js +31 -22
- package/esm/util/types/predicate.d.ts +9 -0
- package/esm/util/types/predicate.js +1 -0
- package/esm/util/types/renameIds.d.ts +1 -0
- package/esm/util/types/renameIds.js +29 -0
- package/esm/util/types/renderingServices.d.ts +16 -0
- package/esm/util/types/renderingServices.js +1 -0
- package/esm/util/types/services.d.ts +55 -0
- package/esm/util/types/services.js +10 -0
- package/esm/util/types/util.d.ts +8 -2
- package/esm/util/unknownSnapshotKeys.d.ts +51 -0
- package/esm/util/unknownSnapshotKeys.js +82 -0
- package/esm/util/unzip.d.ts +1 -0
- package/esm/util/unzip.js +6 -0
- package/esm/util/useEventCallback.d.ts +1 -0
- package/esm/util/useEventCallback.js +16 -0
- package/esm/util/useFeatureSequence.d.ts +13 -7
- package/esm/util/useFeatureSequence.js +55 -77
- package/esm/util/useFetch.d.ts +55 -0
- package/esm/util/useFetch.js +197 -0
- package/esm/util/useFetchPlugins.d.ts +16 -0
- package/esm/util/useFetchPlugins.js +18 -0
- package/esm/util/useMeasure.d.ts +11 -1
- package/esm/util/useMeasure.js +20 -6
- package/esm/util/usePanZoom.d.ts +75 -0
- package/esm/util/usePanZoom.js +175 -0
- package/esm/util/usePanelVirtualScroll.d.ts +9 -0
- package/esm/util/usePanelVirtualScroll.js +15 -0
- package/esm/util/usePointerDrag.d.ts +37 -0
- package/esm/util/usePointerDrag.js +61 -0
- package/esm/util/useRafCommit.d.ts +4 -0
- package/esm/util/useRafCommit.js +50 -0
- package/esm/util/useResizeDrag.d.ts +91 -0
- package/esm/util/useResizeDrag.js +105 -0
- package/esm/util/useRowVirtualScroll.d.ts +9 -0
- package/esm/util/useRowVirtualScroll.js +22 -0
- package/esm/util/useVirtualScrollWheel.d.ts +23 -0
- package/esm/util/useVirtualScrollWheel.js +74 -0
- package/esm/util/viewHighlights.d.ts +3 -0
- package/esm/util/viewHighlights.js +5 -0
- package/esm/util/viewStatus.d.ts +90 -0
- package/esm/util/viewStatus.js +54 -0
- package/esm/util/virtualRange.d.ts +36 -0
- package/esm/util/virtualRange.js +26 -0
- package/esm/util/webStorage.d.ts +26 -0
- package/esm/util/webStorage.js +92 -0
- package/esm/util/wheelZoom.d.ts +65 -0
- package/esm/util/wheelZoom.js +297 -0
- package/esm/util/whenViewSettled.d.ts +74 -0
- package/esm/util/whenViewSettled.js +77 -0
- package/esm/util/withFeatureDetails.d.ts +34 -0
- package/esm/util/withFeatureDetails.js +59 -0
- package/esm/util/withLaunchInput.d.ts +174 -0
- package/esm/util/withLaunchInput.js +274 -0
- package/package.json +290 -820
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Position.d.ts +0 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Position.js +0 -14
- package/esm/BaseFeatureWidget/BaseFeatureDetail/types.d.ts +0 -7
- 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 -9
- package/esm/ReExports/DataGrid.d.ts +0 -1
- package/esm/ReExports/DataGrid.js +0 -1
- package/esm/ReExports/index.d.ts +0 -1
- package/esm/ReExports/index.js +0 -1
- package/esm/configuration/util.d.ts +0 -10
- package/esm/configuration/util.js +0 -123
- package/esm/data_adapters/BaseAdapter/BaseOptions.d.ts +0 -18
- package/esm/data_adapters/util.d.ts +0 -1
- package/esm/data_adapters/util.js +0 -6
- package/esm/pluggableElementTypes/GlyphType.d.ts +0 -43
- package/esm/pluggableElementTypes/GlyphType.js +0 -18
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/fetchSequence.d.ts +0 -5
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/fetchSequence.js +0 -17
- package/esm/pluggableElementTypes/renderers/BoxRendererType.d.ts +0 -52
- package/esm/pluggableElementTypes/renderers/BoxRendererType.js +0 -78
- package/esm/pluggableElementTypes/renderers/CircularChordRendererType.d.ts +0 -4
- package/esm/pluggableElementTypes/renderers/CircularChordRendererType.js +0 -4
- package/esm/pluggableElementTypes/renderers/FeatureRendererType.d.ts +0 -58
- package/esm/pluggableElementTypes/renderers/FeatureRendererType.js +0 -77
- package/esm/pluggableElementTypes/renderers/LayoutSession.d.ts +0 -31
- package/esm/pluggableElementTypes/renderers/LayoutSession.js +0 -40
- package/esm/pluggableElementTypes/renderers/RendererType.d.ts +0 -28
- package/esm/pluggableElementTypes/renderers/RendererType.js +0 -20
- package/esm/pluggableElementTypes/renderers/ServerSideRendererType.d.ts +0 -58
- package/esm/pluggableElementTypes/renderers/ServerSideRendererType.js +0 -108
- package/esm/pluggableElementTypes/renderers/index.d.ts +0 -6
- package/esm/pluggableElementTypes/renderers/index.js +0 -6
- package/esm/pluggableElementTypes/renderers/util.d.ts +0 -3
- package/esm/pluggableElementTypes/renderers/util.js +0 -14
- package/esm/rpc/baseRpcConfig.d.ts +0 -8
- package/esm/rpc/baseRpcConfig.js +0 -10
- package/esm/rpc/mainThreadRpcConfig.d.ts +0 -8
- package/esm/rpc/mainThreadRpcConfig.js +0 -8
- package/esm/rpc/methods/CoreGetFeatureDensityStats.d.ts +0 -17
- package/esm/rpc/methods/CoreGetFeatureDensityStats.js +0 -25
- package/esm/rpc/methods/CoreGetFeatureDetails.d.ts +0 -11
- package/esm/rpc/methods/CoreGetFeatureDetails.js +0 -24
- package/esm/rpc/methods/CoreGetFileInfo.d.ts +0 -9
- package/esm/rpc/methods/CoreGetFileInfo.js +0 -15
- package/esm/rpc/methods/CoreRender.d.ts +0 -14
- package/esm/rpc/methods/CoreRender.js +0 -40
- package/esm/rpc/methods/CoreSaveFeatureData.d.ts +0 -16
- package/esm/rpc/methods/CoreSaveFeatureData.js +0 -32
- package/esm/rpc/methods/util.d.ts +0 -15
- package/esm/rpc/methods/util.js +0 -7
- package/esm/rpc/webWorkerRpcConfig.d.ts +0 -8
- package/esm/rpc/webWorkerRpcConfig.js +0 -8
- package/esm/ui/MenuButton.d.ts +0 -1
- package/esm/ui/MenuButton.js +0 -1
- package/esm/ui/MenuItems.d.ts +0 -15
- package/esm/ui/MenuItems.js +0 -59
- package/esm/ui/useEvent.d.ts +0 -1
- package/esm/ui/useEvent.js +0 -10
- package/esm/util/blobToDataURL.d.ts +0 -1
- package/esm/util/blobToDataURL.js +0 -14
- package/esm/util/compositeMap.d.ts +0 -11
- package/esm/util/compositeMap.js +0 -59
- package/esm/util/flatqueue/index.d.ts +0 -11
- package/esm/util/flatqueue/index.js +0 -61
- package/esm/util/layouts/BaseLayout.d.ts +0 -30
- package/esm/util/layouts/MultiLayout.d.ts +0 -12
- package/esm/util/layouts/MultiLayout.js +0 -40
- package/esm/util/layouts/PileupLayout.d.ts +0 -41
- package/esm/util/layouts/PileupLayout.js +0 -202
- package/esm/util/layouts/PrecomputedLayout.d.ts +0 -30
- package/esm/util/layouts/PrecomputedLayout.js +0 -71
- package/esm/util/layouts/SceneGraph.d.ts +0 -31
- package/esm/util/layouts/SceneGraph.js +0 -121
- package/esm/util/makeAbortableReaction.d.ts +0 -3
- package/esm/util/makeAbortableReaction.js +0 -47
- package/esm/util/map-obj/index.d.ts +0 -13
- package/esm/util/map-obj/index.js +0 -92
- package/esm/util/nextTick.d.ts +0 -1
- package/esm/util/nextTick.js +0 -3
- package/esm/util/offscreenCanvasGetSerializingSvg.d.ts +0 -5
- package/esm/util/offscreenCanvasGetSerializingSvg.js +0 -9
- package/esm/util/offscreenCanvasUtils.d.ts +0 -12
- package/esm/util/offscreenCanvasUtils.js +0 -19
- package/esm/util/renderToAbstractCanvas.d.ts +0 -17
- package/esm/util/renderToAbstractCanvas.js +0 -53
- package/esm/util/stopToken.d.ts +0 -19
- package/esm/util/stopToken.js +0 -90
- package/esm/util/transferables.d.ts +0 -2
- package/esm/util/transferables.js +0 -35
- package/esm/util/tss-react/mui/index.d.ts +0 -1
- package/esm/util/tss-react/mui/index.js +0 -1
- package/esm/util/tss-react/mui/mui.d.ts +0 -10
- package/esm/util/tss-react/mui/mui.js +0 -5
- package/esm/util/when.d.ts +0 -1
- package/esm/util/when.js +0 -1
- /package/esm/{BaseFeatureWidget/BaseFeatureDetail/types.js → data_adapters/BaseAdapter/CytobandAdapter.js} +0 -0
- /package/esm/data_adapters/BaseAdapter/{BaseOptions.js → zoomRange.js} +0 -0
- /package/esm/{util/layouts/BaseLayout.js → rpc/RpcRegistry.js} +0 -0
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Move `idx` within the subsequence of `arr` that `inScope` selects, leaving
|
|
3
|
+
* every out-of-scope element where it sits.
|
|
4
|
+
*
|
|
5
|
+
* The scoped move: one list holds everything, but a move is only ever relative
|
|
6
|
+
* to a subset of it. "Move this view up" in a tabbed workspace means up past the
|
|
7
|
+
* previous view IN THIS PANEL, not past whatever happens to precede it in
|
|
8
|
+
* `session.views` — which may be in another panel entirely and would make the
|
|
9
|
+
* move look like a no-op.
|
|
10
|
+
*
|
|
11
|
+
* Implemented as a permutation of the in-scope positions: pull out the in-scope
|
|
12
|
+
* elements, reorder that list, then write it back into the same index slots.
|
|
13
|
+
* That is what keeps out-of-scope elements pinned, and what makes an unscoped
|
|
14
|
+
* move (everything in scope) exactly `reorder`.
|
|
15
|
+
*/
|
|
16
|
+
export function reorderWithin(arr, idx, direction, inScope) {
|
|
17
|
+
const slots = [];
|
|
18
|
+
const scoped = [];
|
|
19
|
+
for (const [i, item] of arr.entries()) {
|
|
20
|
+
if (inScope(item, i)) {
|
|
21
|
+
slots.push(i);
|
|
22
|
+
scoped.push(item);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
const scopedIdx = slots.indexOf(idx);
|
|
26
|
+
if (scopedIdx === -1) {
|
|
27
|
+
return [...arr];
|
|
28
|
+
}
|
|
29
|
+
const moved = reorder(scoped, scopedIdx, direction);
|
|
30
|
+
const next = [...arr];
|
|
31
|
+
for (const [i, slot] of slots.entries()) {
|
|
32
|
+
next[slot] = moved[i];
|
|
33
|
+
}
|
|
34
|
+
return next;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Move the element at `idx` within `arr` in the given direction, returning a new
|
|
38
|
+
* array. An edge move (already at top/bottom) returns an unchanged copy.
|
|
39
|
+
*/
|
|
40
|
+
export function reorder(arr, idx, direction) {
|
|
41
|
+
const next = [...arr];
|
|
42
|
+
if (idx >= 0 && idx < arr.length) {
|
|
43
|
+
const [item] = next.splice(idx, 1);
|
|
44
|
+
const target = direction === 'up'
|
|
45
|
+
? Math.max(0, idx - 1)
|
|
46
|
+
: direction === 'down'
|
|
47
|
+
? Math.min(arr.length - 1, idx + 1)
|
|
48
|
+
: direction === 'top'
|
|
49
|
+
? 0
|
|
50
|
+
: arr.length - 1;
|
|
51
|
+
next.splice(target, 0, item);
|
|
52
|
+
}
|
|
53
|
+
return next;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Put the elements whose id appears in `ids` into that relative order, leaving
|
|
57
|
+
* every other element in its own slot.
|
|
58
|
+
*
|
|
59
|
+
* The same slot permutation `reorderWithin` performs, driven by a stated order
|
|
60
|
+
* rather than by a direction. It exists because an order can arrive in another
|
|
61
|
+
* vocabulary entirely — a session spec's `layout` names views per panel, top to
|
|
62
|
+
* bottom — and there is one list that order has to land in.
|
|
63
|
+
*
|
|
64
|
+
* Elements named in `ids` but absent from `arr` are ignored, so a layout may
|
|
65
|
+
* name a view that failed to open.
|
|
66
|
+
*/
|
|
67
|
+
export function applyOrderWithin(arr, ids, getId) {
|
|
68
|
+
const rank = new Map(ids.map((id, i) => [id, i]));
|
|
69
|
+
const slots = [];
|
|
70
|
+
for (const [i, item] of arr.entries()) {
|
|
71
|
+
if (rank.has(getId(item))) {
|
|
72
|
+
slots.push(i);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
const ordered = slots
|
|
76
|
+
.map(i => arr[i])
|
|
77
|
+
.sort((a, b) => rank.get(getId(a)) - rank.get(getId(b)));
|
|
78
|
+
const next = [...arr];
|
|
79
|
+
for (const [i, slot] of slots.entries()) {
|
|
80
|
+
next[slot] = ordered[i];
|
|
81
|
+
}
|
|
82
|
+
return next;
|
|
83
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve a multi-row display's raw `rowHeight` setting, where `0` is the
|
|
3
|
+
* fit-to-display-height sentinel, into the px height consumers actually draw
|
|
4
|
+
* with and divide by. The other half of the contract `applyRowResizeWheel` and
|
|
5
|
+
* tree-sidebar's `TreeDrawingModel` both spell `effectiveRowHeight` — see
|
|
6
|
+
* agent-docs/reference/ROW_HEIGHT_AND_FIT.md.
|
|
7
|
+
*
|
|
8
|
+
* Two rules, and they pull in opposite directions, which is why they live here
|
|
9
|
+
* rather than being restated per display:
|
|
10
|
+
*
|
|
11
|
+
* - **A sub-pixel fit height is legitimate and must pass through.** A cohort
|
|
12
|
+
* with more rows than the display has pixels genuinely has a fractional row
|
|
13
|
+
* height, and flooring it makes the content taller than the height it was
|
|
14
|
+
* asked to fit inside — which re-grows the track and makes fit mode report a
|
|
15
|
+
* scroll it is documented never to have. (2000 species floored to 1px re-grew
|
|
16
|
+
* a MAF track to 2045px; the same regression hit the variant displays.) So
|
|
17
|
+
* `autoRowHeight` itself is never floored.
|
|
18
|
+
* - **The resolved value must never be non-positive.** Consumers divide by it
|
|
19
|
+
* (`rowAtY`, the hit tests, the renderers), so a `0` propagates NaN/Infinity.
|
|
20
|
+
* A rows viewport can legitimately reach 0px — the variant matrix's
|
|
21
|
+
* connector-line zone can swallow the whole display height — so this is
|
|
22
|
+
* reachable, and it is the one place the floor belongs.
|
|
23
|
+
*
|
|
24
|
+
* Multi-wiggle is always-fit and has no sentinel to resolve, so it computes its
|
|
25
|
+
* `effectiveRowHeight` directly rather than calling this.
|
|
26
|
+
*/
|
|
27
|
+
export declare function resolveRowHeight(rowHeight: number, autoRowHeight: number): number;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve a multi-row display's raw `rowHeight` setting, where `0` is the
|
|
3
|
+
* fit-to-display-height sentinel, into the px height consumers actually draw
|
|
4
|
+
* with and divide by. The other half of the contract `applyRowResizeWheel` and
|
|
5
|
+
* tree-sidebar's `TreeDrawingModel` both spell `effectiveRowHeight` — see
|
|
6
|
+
* agent-docs/reference/ROW_HEIGHT_AND_FIT.md.
|
|
7
|
+
*
|
|
8
|
+
* Two rules, and they pull in opposite directions, which is why they live here
|
|
9
|
+
* rather than being restated per display:
|
|
10
|
+
*
|
|
11
|
+
* - **A sub-pixel fit height is legitimate and must pass through.** A cohort
|
|
12
|
+
* with more rows than the display has pixels genuinely has a fractional row
|
|
13
|
+
* height, and flooring it makes the content taller than the height it was
|
|
14
|
+
* asked to fit inside — which re-grows the track and makes fit mode report a
|
|
15
|
+
* scroll it is documented never to have. (2000 species floored to 1px re-grew
|
|
16
|
+
* a MAF track to 2045px; the same regression hit the variant displays.) So
|
|
17
|
+
* `autoRowHeight` itself is never floored.
|
|
18
|
+
* - **The resolved value must never be non-positive.** Consumers divide by it
|
|
19
|
+
* (`rowAtY`, the hit tests, the renderers), so a `0` propagates NaN/Infinity.
|
|
20
|
+
* A rows viewport can legitimately reach 0px — the variant matrix's
|
|
21
|
+
* connector-line zone can swallow the whole display height — so this is
|
|
22
|
+
* reachable, and it is the one place the floor belongs.
|
|
23
|
+
*
|
|
24
|
+
* Multi-wiggle is always-fit and has no sentinel to resolve, so it computes its
|
|
25
|
+
* `effectiveRowHeight` directly rather than calling this.
|
|
26
|
+
*/
|
|
27
|
+
export function resolveRowHeight(rowHeight, autoRowHeight) {
|
|
28
|
+
const height = rowHeight === 0 ? autoRowHeight : rowHeight;
|
|
29
|
+
return height > 0 ? height : 1;
|
|
30
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Flip a list of intervals onto the opposite strand of a `seqlen`-long
|
|
3
|
+
* sequence, returning them in ascending order. Every field other than
|
|
4
|
+
* start/end is carried through, so a CDS keeps its phase and type.
|
|
5
|
+
*
|
|
6
|
+
* Its own module because both the sequence helpers and `geneticCodes` need it,
|
|
7
|
+
* and `geneticCodes` importing `seqUtils` for it is what made the two mutually
|
|
8
|
+
* dependent — see the codon-table note in geneticCodes.ts.
|
|
9
|
+
*/
|
|
10
|
+
export declare function revlist<T extends {
|
|
11
|
+
start: number;
|
|
12
|
+
end: number;
|
|
13
|
+
}>(list: T[], seqlen: number): T[];
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Flip a list of intervals onto the opposite strand of a `seqlen`-long
|
|
3
|
+
* sequence, returning them in ascending order. Every field other than
|
|
4
|
+
* start/end is carried through, so a CDS keeps its phase and type.
|
|
5
|
+
*
|
|
6
|
+
* Its own module because both the sequence helpers and `geneticCodes` need it,
|
|
7
|
+
* and `geneticCodes` importing `seqUtils` for it is what made the two mutually
|
|
8
|
+
* dependent — see the codon-table note in geneticCodes.ts.
|
|
9
|
+
*/
|
|
10
|
+
export function revlist(list, seqlen) {
|
|
11
|
+
return list
|
|
12
|
+
.map(sub => ({ ...sub, start: seqlen - sub.end, end: seqlen - sub.start }))
|
|
13
|
+
.sort((a, b) => a.start - b.start);
|
|
14
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mouse-Y → row index for the displays that stack rows behind
|
|
3
|
+
* `useRowVirtualScroll`.
|
|
4
|
+
*
|
|
5
|
+
* That hook is what makes the arithmetic subtle, so the reader lives beside it.
|
|
6
|
+
* `applyRowResizeWheel` sets `scrollTop` to `rowUnderMouse * newRowHeight -
|
|
7
|
+
* mouseY` to pin the row under the cursor, which leaves it fractional, and it
|
|
8
|
+
* lets `rowHeight` fall to `viewportHeight / nrow` — sub-pixel on a
|
|
9
|
+
* cohort-sized track. Two rules follow, and each caller used to restate them:
|
|
10
|
+
*
|
|
11
|
+
* - **Ask at the pixel's centre.** Rasterization fills a pixel when its centre
|
|
12
|
+
* falls inside the rect, so the centre is the scanline the colour the reader
|
|
13
|
+
* is pointing at was decided on. The top edge misses by `0.5 / rowHeight`
|
|
14
|
+
* rows — 5.4 of them on a 2,504-sample matrix at the default fit height.
|
|
15
|
+
* - **Floor `mouseY` before adding `scrollTop`.** The canvas draws at
|
|
16
|
+
* `row * rowHeight - scrollTop` with `scrollTop` unrounded; flooring the sum
|
|
17
|
+
* snaps to a pixel grid the content is not on. This is the half a reader gets
|
|
18
|
+
* backwards.
|
|
19
|
+
*/
|
|
20
|
+
export interface RowStack {
|
|
21
|
+
/** resolved height, never the 0/fit sentinel — this is divided into */
|
|
22
|
+
rowHeight: number;
|
|
23
|
+
/** unrounded, and routinely fractional */
|
|
24
|
+
scrollTop?: number;
|
|
25
|
+
/** chrome above the rows area, e.g. MAF's stacked bands */
|
|
26
|
+
topOffset?: number;
|
|
27
|
+
}
|
|
28
|
+
/** Content-space Y of the centre of the screen pixel `mouseY` is in. */
|
|
29
|
+
export declare function contentYAt(mouseY: number, stack: RowStack): number;
|
|
30
|
+
/** Continuous row coordinate at `mouseY`; callers round to suit. */
|
|
31
|
+
export declare function rowCoordAt(mouseY: number, stack: RowStack): number;
|
|
32
|
+
/** The row `mouseY` is on. Negative above the rows area, and not range-checked. */
|
|
33
|
+
export declare function rowIndexAt(mouseY: number, stack: RowStack): number;
|
|
34
|
+
/**
|
|
35
|
+
* Half-open `[startRow, endRow)` covered by a vertical px span, ready to
|
|
36
|
+
* `slice` a sample list with.
|
|
37
|
+
*
|
|
38
|
+
* Both ends are the row at that pixel's centre and the range includes both, so
|
|
39
|
+
* a span can never come back empty: a drag straight across one row — which
|
|
40
|
+
* `useDragSelection` supports, gating on X alone — covers the row it is on.
|
|
41
|
+
* Taking `endRow` as the `ceil` of the same coordinate instead collapsed on
|
|
42
|
+
* every exact row boundary, one pixel row in every `rowHeight`.
|
|
43
|
+
*/
|
|
44
|
+
export declare function rowSpanAt(y0: number, y1: number, stack: RowStack): {
|
|
45
|
+
startRow: number;
|
|
46
|
+
endRow: number;
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* The rows whose *drawn* cell covers `mouseY`, nearest first.
|
|
50
|
+
*
|
|
51
|
+
* Row r occupies `[r*rowHeight, r*rowHeight + drawnRowHeight)`.
|
|
52
|
+
* `drawnRowHeight` is the height the painter *resolved* for this `rowHeight`,
|
|
53
|
+
* not the floor it clamps to — pass `drawnCellHeightPx(rowHeight)` from the
|
|
54
|
+
* module generated out of the display's own shader (ADR-051), so what is
|
|
55
|
+
* painted and what is pickable stay one rule. At `rowHeight` above the floor it
|
|
56
|
+
* equals `rowHeight`, the band collapses to `nearest`, and only sub-pixel rows
|
|
57
|
+
* stack several under one drawn pixel — where the last drawn wins, and
|
|
58
|
+
* `nearest` is it.
|
|
59
|
+
*
|
|
60
|
+
* Walking down to `lowest` keeps those rows hoverable when the nearest one has
|
|
61
|
+
* nothing to report.
|
|
62
|
+
*/
|
|
63
|
+
export declare function rowsUnderPointer(mouseY: number, stack: RowStack, drawnRowHeight: number): {
|
|
64
|
+
nearest: number;
|
|
65
|
+
lowest: number;
|
|
66
|
+
};
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mouse-Y → row index for the displays that stack rows behind
|
|
3
|
+
* `useRowVirtualScroll`.
|
|
4
|
+
*
|
|
5
|
+
* That hook is what makes the arithmetic subtle, so the reader lives beside it.
|
|
6
|
+
* `applyRowResizeWheel` sets `scrollTop` to `rowUnderMouse * newRowHeight -
|
|
7
|
+
* mouseY` to pin the row under the cursor, which leaves it fractional, and it
|
|
8
|
+
* lets `rowHeight` fall to `viewportHeight / nrow` — sub-pixel on a
|
|
9
|
+
* cohort-sized track. Two rules follow, and each caller used to restate them:
|
|
10
|
+
*
|
|
11
|
+
* - **Ask at the pixel's centre.** Rasterization fills a pixel when its centre
|
|
12
|
+
* falls inside the rect, so the centre is the scanline the colour the reader
|
|
13
|
+
* is pointing at was decided on. The top edge misses by `0.5 / rowHeight`
|
|
14
|
+
* rows — 5.4 of them on a 2,504-sample matrix at the default fit height.
|
|
15
|
+
* - **Floor `mouseY` before adding `scrollTop`.** The canvas draws at
|
|
16
|
+
* `row * rowHeight - scrollTop` with `scrollTop` unrounded; flooring the sum
|
|
17
|
+
* snaps to a pixel grid the content is not on. This is the half a reader gets
|
|
18
|
+
* backwards.
|
|
19
|
+
*/
|
|
20
|
+
/** Content-space Y of the centre of the screen pixel `mouseY` is in. */
|
|
21
|
+
export function contentYAt(mouseY, stack) {
|
|
22
|
+
const { scrollTop = 0, topOffset = 0 } = stack;
|
|
23
|
+
return Math.floor(mouseY) + 0.5 + scrollTop - topOffset;
|
|
24
|
+
}
|
|
25
|
+
/** Continuous row coordinate at `mouseY`; callers round to suit. */
|
|
26
|
+
export function rowCoordAt(mouseY, stack) {
|
|
27
|
+
return contentYAt(mouseY, stack) / stack.rowHeight;
|
|
28
|
+
}
|
|
29
|
+
/** The row `mouseY` is on. Negative above the rows area, and not range-checked. */
|
|
30
|
+
export function rowIndexAt(mouseY, stack) {
|
|
31
|
+
return Math.floor(rowCoordAt(mouseY, stack));
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Half-open `[startRow, endRow)` covered by a vertical px span, ready to
|
|
35
|
+
* `slice` a sample list with.
|
|
36
|
+
*
|
|
37
|
+
* Both ends are the row at that pixel's centre and the range includes both, so
|
|
38
|
+
* a span can never come back empty: a drag straight across one row — which
|
|
39
|
+
* `useDragSelection` supports, gating on X alone — covers the row it is on.
|
|
40
|
+
* Taking `endRow` as the `ceil` of the same coordinate instead collapsed on
|
|
41
|
+
* every exact row boundary, one pixel row in every `rowHeight`.
|
|
42
|
+
*/
|
|
43
|
+
export function rowSpanAt(y0, y1, stack) {
|
|
44
|
+
const first = rowIndexAt(Math.min(y0, y1), stack);
|
|
45
|
+
const last = rowIndexAt(Math.max(y0, y1), stack);
|
|
46
|
+
return { startRow: Math.max(0, first), endRow: Math.max(0, last + 1) };
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* The rows whose *drawn* cell covers `mouseY`, nearest first.
|
|
50
|
+
*
|
|
51
|
+
* Row r occupies `[r*rowHeight, r*rowHeight + drawnRowHeight)`.
|
|
52
|
+
* `drawnRowHeight` is the height the painter *resolved* for this `rowHeight`,
|
|
53
|
+
* not the floor it clamps to — pass `drawnCellHeightPx(rowHeight)` from the
|
|
54
|
+
* module generated out of the display's own shader (ADR-051), so what is
|
|
55
|
+
* painted and what is pickable stay one rule. At `rowHeight` above the floor it
|
|
56
|
+
* equals `rowHeight`, the band collapses to `nearest`, and only sub-pixel rows
|
|
57
|
+
* stack several under one drawn pixel — where the last drawn wins, and
|
|
58
|
+
* `nearest` is it.
|
|
59
|
+
*
|
|
60
|
+
* Walking down to `lowest` keeps those rows hoverable when the nearest one has
|
|
61
|
+
* nothing to report.
|
|
62
|
+
*/
|
|
63
|
+
export function rowsUnderPointer(mouseY, stack, drawnRowHeight) {
|
|
64
|
+
const y = contentYAt(mouseY, stack);
|
|
65
|
+
const { rowHeight } = stack;
|
|
66
|
+
return {
|
|
67
|
+
nearest: Math.floor(y / rowHeight),
|
|
68
|
+
lowest: Math.max(0, Math.floor((y - drawnRowHeight) / rowHeight) + 1),
|
|
69
|
+
};
|
|
70
|
+
}
|
package/esm/util/rpc.d.ts
CHANGED
|
@@ -1,2 +1,17 @@
|
|
|
1
|
-
import type { RpcResult } from '
|
|
1
|
+
import type { RpcResult } from '../rpc/RpcServer.ts';
|
|
2
|
+
/**
|
|
3
|
+
* Type guard to check if a value is an RpcResult.
|
|
4
|
+
* Used to detect when a renderer has returned pre-serialized data with transferables.
|
|
5
|
+
*
|
|
6
|
+
* Note: Transferables flow only from worker to main thread (in responses),
|
|
7
|
+
* not from main thread to worker. This is because the render results contain
|
|
8
|
+
* ImageBitmaps and ArrayBuffers that benefit from zero-copy transfer.
|
|
9
|
+
*/
|
|
2
10
|
export declare function isRpcResult(value: unknown): value is RpcResult;
|
|
11
|
+
/**
|
|
12
|
+
* Take the `rpcResult` envelope off if there is one. Distributes over a union,
|
|
13
|
+
* because a method can wrap one arm and not another — only the data half of the
|
|
14
|
+
* canvas gates owns buffers worth transferring.
|
|
15
|
+
*/
|
|
16
|
+
export type UnwrapRpcResult<T> = T extends RpcResult<infer V> ? V : T;
|
|
17
|
+
export declare function unwrapRpcResult<T>(value: T): UnwrapRpcResult<T>;
|
package/esm/util/rpc.js
CHANGED
|
@@ -1,6 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type guard to check if a value is an RpcResult.
|
|
3
|
+
* Used to detect when a renderer has returned pre-serialized data with transferables.
|
|
4
|
+
*
|
|
5
|
+
* Note: Transferables flow only from worker to main thread (in responses),
|
|
6
|
+
* not from main thread to worker. This is because the render results contain
|
|
7
|
+
* ImageBitmaps and ArrayBuffers that benefit from zero-copy transfer.
|
|
8
|
+
*/
|
|
1
9
|
export function isRpcResult(value) {
|
|
2
10
|
return (typeof value === 'object' &&
|
|
3
11
|
value !== null &&
|
|
4
12
|
'__rpcResult' in value &&
|
|
5
|
-
value.__rpcResult);
|
|
13
|
+
value.__rpcResult === true);
|
|
14
|
+
}
|
|
15
|
+
export function unwrapRpcResult(value) {
|
|
16
|
+
return (isRpcResult(value) ? value.value : value);
|
|
6
17
|
}
|
package/esm/util/rxjs.d.ts
CHANGED
|
@@ -1,4 +1,32 @@
|
|
|
1
1
|
import { Observable } from 'rxjs';
|
|
2
|
-
import type { StopToken } from './stopToken.ts';
|
|
3
2
|
import type { Observer } from 'rxjs';
|
|
4
|
-
|
|
3
|
+
/**
|
|
4
|
+
* Wrapper for rxjs Observable.create with improved error handling and aborting
|
|
5
|
+
* support.
|
|
6
|
+
*
|
|
7
|
+
* A `signal` errors the subscriber with an abort error the moment it aborts,
|
|
8
|
+
* rather than waiting for `func` to finish work whose result is already
|
|
9
|
+
* discarded. The fetch paths filter abort errors out (`isAbortException`) so a
|
|
10
|
+
* cancel does not surface as a track error. It cannot interrupt `func` itself
|
|
11
|
+
* — a body doing long synchronous work still needs its own `checkAbortSignal`
|
|
12
|
+
* ticks — but it does stop delivery downstream.
|
|
13
|
+
*
|
|
14
|
+
* @param func - observer function, could be async
|
|
15
|
+
*/
|
|
16
|
+
export declare function ObservableCreate<T>(func: (arg: Observer<T>) => void | Promise<void>, signal?: AbortSignal): Observable<T>;
|
|
17
|
+
/**
|
|
18
|
+
* Subscribe to an observable and resolve when it completes, running `onNext` per
|
|
19
|
+
* item as it arrives — the streaming shape for parsing items out of a feature
|
|
20
|
+
* stream rather than collecting them first.
|
|
21
|
+
*
|
|
22
|
+
* **`onNext` throwing rejects the promise.** rxjs does not do that on its own:
|
|
23
|
+
* an exception out of a `next` handler goes to its global unhandled-error hook,
|
|
24
|
+
* so the subscriber keeps being fed and `complete` still fires — a bare promise
|
|
25
|
+
* around that resolves as *success* with the items silently missing. Beside
|
|
26
|
+
* `ObservableCreate` because it is the other half of the pattern: the adapter
|
|
27
|
+
* wraps its body in that, the RPC `await`s this, so a per-item parse failure
|
|
28
|
+
* surfaces as a track error instead of a blank-but-loaded track.
|
|
29
|
+
*
|
|
30
|
+
* The source is unsubscribed on the first throw.
|
|
31
|
+
*/
|
|
32
|
+
export declare function subscribeToObservable<T>(observable: Observable<T>, onNext: (item: T) => void): Promise<void>;
|
package/esm/util/rxjs.js
CHANGED
|
@@ -1,16 +1,91 @@
|
|
|
1
1
|
import { Observable } from 'rxjs';
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* Wrapper for rxjs Observable.create with improved error handling and aborting
|
|
4
|
+
* support.
|
|
5
|
+
*
|
|
6
|
+
* A `signal` errors the subscriber with an abort error the moment it aborts,
|
|
7
|
+
* rather than waiting for `func` to finish work whose result is already
|
|
8
|
+
* discarded. The fetch paths filter abort errors out (`isAbortException`) so a
|
|
9
|
+
* cancel does not surface as a track error. It cannot interrupt `func` itself
|
|
10
|
+
* — a body doing long synchronous work still needs its own `checkAbortSignal`
|
|
11
|
+
* ticks — but it does stop delivery downstream.
|
|
12
|
+
*
|
|
13
|
+
* @param func - observer function, could be async
|
|
14
|
+
*/
|
|
15
|
+
export function ObservableCreate(func, signal) {
|
|
3
16
|
return new Observable((observer) => {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
}
|
|
17
|
+
const stop = () => {
|
|
18
|
+
observer.error(signal?.reason);
|
|
19
|
+
};
|
|
20
|
+
if (signal?.aborted) {
|
|
21
|
+
// aborted before subscribe: no 'abort' event is coming
|
|
22
|
+
stop();
|
|
11
23
|
}
|
|
12
|
-
|
|
13
|
-
|
|
24
|
+
else {
|
|
25
|
+
signal?.addEventListener('abort', stop);
|
|
26
|
+
try {
|
|
27
|
+
const ret = func(observer);
|
|
28
|
+
if (ret?.catch) {
|
|
29
|
+
ret.catch((error) => {
|
|
30
|
+
observer.error(error);
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
observer.error(error);
|
|
36
|
+
}
|
|
14
37
|
}
|
|
38
|
+
return () => {
|
|
39
|
+
signal?.removeEventListener('abort', stop);
|
|
40
|
+
};
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Subscribe to an observable and resolve when it completes, running `onNext` per
|
|
45
|
+
* item as it arrives — the streaming shape for parsing items out of a feature
|
|
46
|
+
* stream rather than collecting them first.
|
|
47
|
+
*
|
|
48
|
+
* **`onNext` throwing rejects the promise.** rxjs does not do that on its own:
|
|
49
|
+
* an exception out of a `next` handler goes to its global unhandled-error hook,
|
|
50
|
+
* so the subscriber keeps being fed and `complete` still fires — a bare promise
|
|
51
|
+
* around that resolves as *success* with the items silently missing. Beside
|
|
52
|
+
* `ObservableCreate` because it is the other half of the pattern: the adapter
|
|
53
|
+
* wraps its body in that, the RPC `await`s this, so a per-item parse failure
|
|
54
|
+
* surfaces as a track error instead of a blank-but-loaded track.
|
|
55
|
+
*
|
|
56
|
+
* The source is unsubscribed on the first throw.
|
|
57
|
+
*/
|
|
58
|
+
export function subscribeToObservable(observable, onNext) {
|
|
59
|
+
return new Promise((resolve, reject) => {
|
|
60
|
+
// A box rather than two bare `let`s: oxlint narrows a flag assigned only
|
|
61
|
+
// inside a closure to its initializer and reports the reads as always-false.
|
|
62
|
+
// `subscription` is genuinely still undefined during a synchronous source's
|
|
63
|
+
// first emissions, which is why it is read optionally below.
|
|
64
|
+
const state = {
|
|
65
|
+
failed: false,
|
|
66
|
+
};
|
|
67
|
+
state.subscription = observable.subscribe({
|
|
68
|
+
next: item => {
|
|
69
|
+
if (!state.failed) {
|
|
70
|
+
try {
|
|
71
|
+
onNext(item);
|
|
72
|
+
}
|
|
73
|
+
catch (e) {
|
|
74
|
+
state.failed = true;
|
|
75
|
+
// A parser throws an Error in every real case here; the wrap is for
|
|
76
|
+
// the rule that a rejection reason must be one, and keeps whatever
|
|
77
|
+
// was actually thrown as the `cause`.
|
|
78
|
+
reject(e instanceof Error ? e : new Error(String(e), { cause: e }));
|
|
79
|
+
state.subscription?.unsubscribe();
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
error: reject,
|
|
84
|
+
complete: () => {
|
|
85
|
+
if (!state.failed) {
|
|
86
|
+
resolve();
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
});
|
|
15
90
|
});
|
|
16
91
|
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Element-wise equality for two string lists, so a setter can skip rewriting
|
|
3
|
+
* observable state with contents it already holds.
|
|
4
|
+
*
|
|
5
|
+
* A primitive prop gets this for free — MobX drops a write of the same number or
|
|
6
|
+
* string — and an array does not: a fresh array is a fresh identity, so every
|
|
7
|
+
* write invalidates everything computed from it however little changed. That
|
|
8
|
+
* makes an unguarded array setter on a per-mousemove path a re-render per raw
|
|
9
|
+
* pointer event, which is how both display families came to want this: the
|
|
10
|
+
* pileup rewriting a chain's read ids while the cursor tracks along one chain,
|
|
11
|
+
* and the canvas display rewriting its tooltip rows while the cursor sits still
|
|
12
|
+
* over one feature.
|
|
13
|
+
*/
|
|
14
|
+
export declare function sameStrings(a: readonly string[], b: readonly string[]): boolean;
|
|
15
|
+
/** The same, for a pair that may be absent — two absent lists are equal. */
|
|
16
|
+
export declare function sameOptionalStrings(a: readonly string[] | undefined, b: readonly string[] | undefined): boolean;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Element-wise equality for two string lists, so a setter can skip rewriting
|
|
3
|
+
* observable state with contents it already holds.
|
|
4
|
+
*
|
|
5
|
+
* A primitive prop gets this for free — MobX drops a write of the same number or
|
|
6
|
+
* string — and an array does not: a fresh array is a fresh identity, so every
|
|
7
|
+
* write invalidates everything computed from it however little changed. That
|
|
8
|
+
* makes an unguarded array setter on a per-mousemove path a re-render per raw
|
|
9
|
+
* pointer event, which is how both display families came to want this: the
|
|
10
|
+
* pileup rewriting a chain's read ids while the cursor tracks along one chain,
|
|
11
|
+
* and the canvas display rewriting its tooltip rows while the cursor sits still
|
|
12
|
+
* over one feature.
|
|
13
|
+
*/
|
|
14
|
+
export function sameStrings(a, b) {
|
|
15
|
+
return a.length === b.length && a.every((s, i) => s === b[i]);
|
|
16
|
+
}
|
|
17
|
+
/** The same, for a pair that may be absent — two absent lists are equal. */
|
|
18
|
+
export function sameOptionalStrings(a, b) {
|
|
19
|
+
return a === undefined || b === undefined ? a === b : sameStrings(a, b);
|
|
20
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type PluginManager from '../PluginManager.ts';
|
|
2
|
+
import type { BaseOptions } from '../data_adapters/BaseAdapter/types.ts';
|
|
3
|
+
import type { FileLocation } from './types/data.ts';
|
|
4
|
+
export type SamplesTsvRow = Record<string, string> & {
|
|
5
|
+
name: string;
|
|
6
|
+
};
|
|
7
|
+
export interface SamplesTsvResult {
|
|
8
|
+
sources: SamplesTsvRow[];
|
|
9
|
+
warnings: string[];
|
|
10
|
+
}
|
|
11
|
+
export declare const samplesTsvAdapterConfigSchemaFields: {
|
|
12
|
+
/**
|
|
13
|
+
* #slot
|
|
14
|
+
*/
|
|
15
|
+
readonly samplesTsvLocation: {
|
|
16
|
+
readonly type: 'maybeFileLocation';
|
|
17
|
+
readonly description: "optional tab-separated table of per-sample metadata. It needs a header row, and its first column is the sample name exactly as the adapter spells it: a VCF sample, a MultiWiggle subtrack's name, a MAF species id. Every other column (`population`, `tissue`, ...) becomes an attribute of that sample, which the multi-row displays group, sort, color and tooltip rows by; a MAF adapter reads the `label`, `color` and `assemblyName` columns onto its species rows, over its `samples` entries. The table also narrows the adapter's samples to the ones it lists, and a table naming none of them is an error. An adapter that lists no samples of its own (a MAF track discovering its species from the file) takes the table's rows as its samples";
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* The metadata rows for the samples an adapter names, plus a warning for the
|
|
22
|
+
* samples the table leaves out, which no row is drawn for. Rows naming samples
|
|
23
|
+
* the adapter lacks are dropped silently: one project-wide table serving
|
|
24
|
+
* several tracks is the normal shape. `names` undefined means the adapter lists
|
|
25
|
+
* no samples of its own, so the rows become the set.
|
|
26
|
+
*
|
|
27
|
+
* A table matching none of `names` throws. Falling back to `names` would show
|
|
28
|
+
* every sample when the config asked for a curated subset, and an empty result
|
|
29
|
+
* draws a blank track with no banner. The message quotes both sides of the
|
|
30
|
+
* mismatch, because a prefix is what separates `1000GP_HG00096` from
|
|
31
|
+
* `HG00096`.
|
|
32
|
+
*
|
|
33
|
+
* `fileLabel` names the file in a message; `namesLabel` names where `names`
|
|
34
|
+
* came from ("the VCF").
|
|
35
|
+
*/
|
|
36
|
+
export declare function parseSamplesTsv(txt: string, names: readonly string[] | undefined, fileLabel: string, namesLabel: string): SamplesTsvResult;
|
|
37
|
+
/**
|
|
38
|
+
* An adapter's samples merged with its `samplesTsvLocation` table: the bare
|
|
39
|
+
* `names` when the slot is unset, otherwise {@link parseSamplesTsv}'s rows.
|
|
40
|
+
* The warnings come back rather than going to `console.warn`, because this runs
|
|
41
|
+
* in a worker whose console nobody reads.
|
|
42
|
+
*/
|
|
43
|
+
export declare function getSamplesTsvSources({ location, names, namesLabel, pluginManager, opts, }: {
|
|
44
|
+
location: FileLocation | undefined;
|
|
45
|
+
names: readonly string[] | undefined;
|
|
46
|
+
namesLabel: string;
|
|
47
|
+
pluginManager?: PluginManager;
|
|
48
|
+
opts?: BaseOptions;
|
|
49
|
+
}): Promise<SamplesTsvResult>;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { fetchAndMaybeUnzipText } from './fetchAndMaybeUnzip.js';
|
|
2
|
+
import { getFileName } from './getFileName.js';
|
|
3
|
+
import { openLocation } from './io/index.js';
|
|
4
|
+
import { shorten2 } from './stringUtils.js';
|
|
5
|
+
export const samplesTsvAdapterConfigSchemaFields = {
|
|
6
|
+
/**
|
|
7
|
+
* #slot
|
|
8
|
+
*/
|
|
9
|
+
samplesTsvLocation: {
|
|
10
|
+
type: 'maybeFileLocation',
|
|
11
|
+
description: "optional tab-separated table of per-sample metadata. It needs a header row, and its first column is the sample name exactly as the adapter spells it: a VCF sample, a MultiWiggle subtrack's name, a MAF species id. Every other column (`population`, `tissue`, ...) becomes an attribute of that sample, which the multi-row displays group, sort, color and tooltip rows by; a MAF adapter reads the `label`, `color` and `assemblyName` columns onto its species rows, over its `samples` entries. The table also narrows the adapter's samples to the ones it lists, and a table naming none of them is an error. An adapter that lists no samples of its own (a MAF track discovering its species from the file) takes the table's rows as its samples",
|
|
12
|
+
},
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* The metadata rows for the samples an adapter names, plus a warning for the
|
|
16
|
+
* samples the table leaves out, which no row is drawn for. Rows naming samples
|
|
17
|
+
* the adapter lacks are dropped silently: one project-wide table serving
|
|
18
|
+
* several tracks is the normal shape. `names` undefined means the adapter lists
|
|
19
|
+
* no samples of its own, so the rows become the set.
|
|
20
|
+
*
|
|
21
|
+
* A table matching none of `names` throws. Falling back to `names` would show
|
|
22
|
+
* every sample when the config asked for a curated subset, and an empty result
|
|
23
|
+
* draws a blank track with no banner. The message quotes both sides of the
|
|
24
|
+
* mismatch, because a prefix is what separates `1000GP_HG00096` from
|
|
25
|
+
* `HG00096`.
|
|
26
|
+
*
|
|
27
|
+
* `fileLabel` names the file in a message; `namesLabel` names where `names`
|
|
28
|
+
* came from ("the VCF").
|
|
29
|
+
*/
|
|
30
|
+
export function parseSamplesTsv(txt, names, fileLabel, namesLabel) {
|
|
31
|
+
const lines = txt.split(/\n|\r\n|\r/);
|
|
32
|
+
const header = lines[0].split('\t');
|
|
33
|
+
const metadataSet = new Set();
|
|
34
|
+
const duplicates = new Set();
|
|
35
|
+
const metadataLines = lines
|
|
36
|
+
.slice(1)
|
|
37
|
+
.filter(Boolean)
|
|
38
|
+
.map(line => {
|
|
39
|
+
const [name, ...rest] = line.split('\t');
|
|
40
|
+
return {
|
|
41
|
+
...Object.fromEntries(header.slice(1).map((col, idx) => [col, rest[idx] ?? ''])),
|
|
42
|
+
name: name,
|
|
43
|
+
};
|
|
44
|
+
})
|
|
45
|
+
.filter(row => {
|
|
46
|
+
if (metadataSet.has(row.name)) {
|
|
47
|
+
duplicates.add(row.name);
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
metadataSet.add(row.name);
|
|
51
|
+
return true;
|
|
52
|
+
});
|
|
53
|
+
const warnings = [];
|
|
54
|
+
if (duplicates.size) {
|
|
55
|
+
warnings.push(`${duplicates.size} samples appear more than once in the metadata file ${fileLabel}; the first row of each is used: ${shorten2([...duplicates].join(','))}`);
|
|
56
|
+
}
|
|
57
|
+
if (!names) {
|
|
58
|
+
return { sources: metadataLines, warnings };
|
|
59
|
+
}
|
|
60
|
+
const nameSet = new Set(names);
|
|
61
|
+
const namesNotInMetadata = [...nameSet].filter(f => !metadataSet.has(f));
|
|
62
|
+
const sources = metadataLines.filter(f => nameSet.has(f.name));
|
|
63
|
+
if (sources.length === 0 && names.length > 0) {
|
|
64
|
+
const example = metadataLines[0]?.name;
|
|
65
|
+
throw new Error(example === undefined
|
|
66
|
+
? `The samples metadata file ${fileLabel} has a header but no sample rows, so this track has no rows to draw`
|
|
67
|
+
: `No sample in the metadata file ${fileLabel} matches ${namesLabel}, so this track has no rows to draw: its first column reads "${example}" where ${namesLabel} names "${names[0]}". Check for an added prefix or suffix, or for the sample IDs being in a different column.`);
|
|
68
|
+
}
|
|
69
|
+
if (namesNotInMetadata.length) {
|
|
70
|
+
warnings.push(`${namesNotInMetadata.length} of the ${names.length} samples in ${namesLabel} are not in the metadata file ${fileLabel} (${metadataLines.length} lines) and are not shown: ${shorten2(namesNotInMetadata.join(','))}`);
|
|
71
|
+
}
|
|
72
|
+
return { sources, warnings };
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* An adapter's samples merged with its `samplesTsvLocation` table: the bare
|
|
76
|
+
* `names` when the slot is unset, otherwise {@link parseSamplesTsv}'s rows.
|
|
77
|
+
* The warnings come back rather than going to `console.warn`, because this runs
|
|
78
|
+
* in a worker whose console nobody reads.
|
|
79
|
+
*/
|
|
80
|
+
export async function getSamplesTsvSources({ location, names, namesLabel, pluginManager, opts, }) {
|
|
81
|
+
if (!location) {
|
|
82
|
+
return { sources: (names ?? []).map(name => ({ name })), warnings: [] };
|
|
83
|
+
}
|
|
84
|
+
const txt = await fetchAndMaybeUnzipText(openLocation(location, pluginManager), opts, 'Downloading sample metadata');
|
|
85
|
+
return parseSamplesTsv(txt, names, 'uri' in location ? location.uri : getFileName(location), namesLabel);
|
|
86
|
+
}
|