@jbrowse/core 4.3.0 → 5.0.0-beta.2
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 +822 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.d.ts +13 -3
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.js +33 -22
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.d.ts +8 -3
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.js +117 -19
- 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 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCoreDetails.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCoreDetails.js +4 -4
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BasicValue.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BasicValue.js +12 -5
- package/esm/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.js +28 -17
- package/esm/BaseFeatureWidget/BaseFeatureDetail/DataGridDetails.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/DataGridDetails.js +19 -40
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.d.ts +6 -4
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.js +46 -30
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureWash.d.ts +20 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureWash.js +66 -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 +17 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Position.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Position.js +3 -9
- package/esm/BaseFeatureWidget/BaseFeatureDetail/SimpleField.d.ts +3 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/SimpleField.js +3 -3
- package/esm/BaseFeatureWidget/BaseFeatureDetail/UriField.d.ts +3 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/UriField.js +7 -14
- package/esm/BaseFeatureWidget/BaseFeatureDetail/index.d.ts +2 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/index.js +19 -13
- package/esm/BaseFeatureWidget/BaseFeatureDetail/types.d.ts +5 -4
- package/esm/BaseFeatureWidget/BaseFeatureDetail/util.d.ts +8 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/util.js +32 -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 +62 -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 +1 -1
- 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 +18 -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 +50 -63
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/model.js +62 -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/test_data/DLGAP3.d.ts +1 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/NCDN.d.ts +7 -7
- 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.js +1 -1
- package/esm/BaseFeatureWidget/formatDetails.d.ts +38 -0
- package/esm/BaseFeatureWidget/formatDetails.js +103 -0
- package/esm/BaseFeatureWidget/index.d.ts +3 -1
- package/esm/BaseFeatureWidget/index.js +2 -2
- package/esm/BaseFeatureWidget/stateModelFactory.d.ts +80 -62
- package/esm/BaseFeatureWidget/stateModelFactory.js +128 -29
- package/esm/BaseFeatureWidget/types.d.ts +4 -3
- package/esm/BaseFeatureWidget/util.d.ts +4 -29
- package/esm/BaseFeatureWidget/util.js +20 -84
- package/esm/CorePlugin.js +11 -6
- 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 +41 -40
- package/esm/PluginLoader.js +206 -78
- package/esm/PluginManager.d.ts +421 -55
- package/esm/PluginManager.js +461 -89
- package/esm/ReExports/BaseFeatureDetails.js +7 -6
- package/esm/ReExports/MuiDataGridReExports.d.ts +2 -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/index.js +1 -1
- package/esm/ReExports/lazify.d.ts +2 -2
- package/esm/ReExports/lazify.js +16 -3
- package/esm/ReExports/list.js +54 -229
- package/esm/ReExports/modules.js +62 -93
- package/esm/ReExports/muiComponentNames.d.ts +18 -0
- package/esm/ReExports/muiComponentNames.js +130 -0
- package/esm/ReExports/publicUtil.d.ts +1 -0
- package/esm/ReExports/publicUtil.js +28 -0
- package/esm/ReExports/registry.d.ts +2 -0
- package/esm/ReExports/registry.js +28 -0
- package/esm/ReExports/sharedModules.d.ts +96 -0
- package/esm/ReExports/sharedModules.js +59 -0
- package/esm/ReExports/uiStub.d.ts +1 -0
- package/esm/ReExports/uiStub.js +13 -0
- package/esm/ReExports/workerModules.d.ts +2 -0
- package/esm/ReExports/workerModules.js +10 -0
- package/esm/TextSearch/BaseResults.d.ts +20 -21
- package/esm/TextSearch/BaseResults.js +8 -33
- package/esm/TextSearch/TextSearchManager.d.ts +14 -34
- package/esm/TextSearch/TextSearchManager.js +87 -34
- package/esm/assemblyManager/assembly.d.ts +307 -34
- package/esm/assemblyManager/assembly.js +551 -262
- package/esm/assemblyManager/assemblyAdapters.d.ts +12 -0
- package/esm/assemblyManager/assemblyAdapters.js +18 -0
- package/esm/assemblyManager/assemblyConfigSchema.d.ts +192 -17
- package/esm/assemblyManager/assemblyConfigSchema.js +213 -19
- package/esm/assemblyManager/assemblyManager.d.ts +711 -303
- package/esm/assemblyManager/assemblyManager.js +351 -46
- package/esm/assemblyManager/expandAssemblyConfigShorthand.d.ts +32 -0
- package/esm/assemblyManager/expandAssemblyConfigShorthand.js +85 -0
- package/esm/assemblyManager/geneticCodes.d.ts +21 -0
- package/esm/assemblyManager/geneticCodes.js +47 -0
- package/esm/assemblyManager/getSequenceAdapterConfig.d.ts +9 -0
- package/esm/assemblyManager/getSequenceAdapterConfig.js +12 -0
- package/esm/assemblyManager/index.d.ts +1 -1
- package/esm/assemblyManager/index.js +2 -2
- package/esm/assemblyManager/loadRefNameMap.d.ts +5 -0
- package/esm/assemblyManager/loadRefNameMap.js +80 -0
- package/esm/assemblyManager/refNameColors.d.ts +1 -0
- package/esm/assemblyManager/refNameColors.js +32 -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 +11 -0
- package/esm/checkPlugins.js +77 -0
- package/esm/configuration/configurationSchema.d.ts +122 -20
- package/esm/configuration/configurationSchema.js +374 -140
- package/esm/configuration/configurationSlot.d.ts +283 -30
- package/esm/configuration/configurationSlot.js +205 -226
- package/esm/configuration/formatAboutConfigSchema.d.ts +55 -0
- package/esm/configuration/formatAboutConfigSchema.js +58 -0
- package/esm/configuration/formatDetailsConfigSchema.d.ts +80 -0
- package/esm/configuration/formatDetailsConfigSchema.js +90 -0
- package/esm/configuration/fullConfSnapshot.d.ts +28 -0
- package/esm/configuration/fullConfSnapshot.js +66 -0
- package/esm/configuration/getConf.d.ts +88 -0
- package/esm/configuration/getConf.js +74 -0
- package/esm/configuration/index.d.ts +19 -3
- package/esm/configuration/index.js +19 -2
- package/esm/configuration/mergeFormatCallbacks.d.ts +15 -0
- package/esm/configuration/mergeFormatCallbacks.js +24 -0
- package/esm/configuration/promotableDefaults.d.ts +199 -0
- package/esm/configuration/promotableDefaults.js +332 -0
- package/esm/configuration/promotablePin.d.ts +55 -0
- package/esm/configuration/promotableResolve.d.ts +108 -0
- package/esm/configuration/promotableResolve.js +117 -0
- package/esm/configuration/promotableSlots.d.ts +12 -0
- package/esm/configuration/promotableSlots.js +45 -0
- package/esm/configuration/readConfObject.d.ts +56 -0
- package/esm/configuration/readConfObject.js +161 -0
- package/esm/configuration/schemaRegistry.d.ts +35 -0
- package/esm/configuration/schemaRegistry.js +50 -0
- package/esm/configuration/schemaTypes.d.ts +23 -0
- package/esm/configuration/schemaTypes.js +94 -0
- package/esm/configuration/slotFacade.d.ts +82 -0
- package/esm/configuration/slotFacade.js +89 -0
- package/esm/configuration/slotShape.d.ts +12 -0
- package/esm/configuration/slotShape.js +84 -0
- package/esm/configuration/slotValueUtils.d.ts +17 -0
- package/esm/configuration/slotValueUtils.js +25 -0
- package/esm/configuration/tabixIndexFields.d.ts +44 -0
- package/esm/configuration/tabixIndexFields.js +45 -0
- package/esm/configuration/tabixShorthand.d.ts +34 -0
- package/esm/configuration/tabixShorthand.js +45 -0
- package/esm/configuration/types.d.ts +170 -7
- package/esm/data_adapters/BaseAdapter/BaseAdapter.d.ts +24 -10
- package/esm/data_adapters/BaseAdapter/BaseAdapter.js +23 -15
- package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.d.ts +132 -7
- package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.js +136 -25
- 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 +29 -0
- package/esm/data_adapters/BaseAdapter/featureDensity.js +17 -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 +7 -4
- package/esm/data_adapters/BaseAdapter/index.js +6 -5
- 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 -8
- 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/CytobandAdapter/CytobandAdapter.d.ts +1 -1
- package/esm/data_adapters/CytobandAdapter/CytobandAdapter.js +4 -4
- package/esm/data_adapters/CytobandAdapter/configSchema.d.ts +36 -4
- package/esm/data_adapters/CytobandAdapter/configSchema.js +46 -2
- 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 +35 -1
- package/esm/data_adapters/dataAdapterCache.js +62 -22
- package/esm/data_adapters/getFeatureAdapter.d.ts +22 -0
- package/esm/data_adapters/getFeatureAdapter.js +27 -0
- package/esm/data_adapters/getSequenceSubAdapter.d.ts +21 -0
- package/esm/data_adapters/getSequenceSubAdapter.js +44 -0
- package/esm/pluggableElementTypes/AdapterType.d.ts +52 -2
- 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 +19 -10
- package/esm/pluggableElementTypes/DisplayType.js +53 -5
- package/esm/pluggableElementTypes/InternetAccountType.js +1 -1
- package/esm/pluggableElementTypes/PluggableElementBase.d.ts +13 -0
- package/esm/pluggableElementTypes/PluggableElementBase.js +13 -0
- package/esm/pluggableElementTypes/RpcMethodType.d.ts +132 -12
- package/esm/pluggableElementTypes/RpcMethodType.js +263 -98
- package/esm/pluggableElementTypes/RpcMethodTypeWithFiltersAndRenameRegions.d.ts +19 -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 +3 -3
- 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 +27 -3
- package/esm/pluggableElementTypes/ViewType.js +84 -4
- package/esm/pluggableElementTypes/WidgetType.d.ts +2 -2
- package/esm/pluggableElementTypes/WidgetType.js +1 -1
- package/esm/pluggableElementTypes/addMenuItems.d.ts +87 -0
- package/esm/pluggableElementTypes/addMenuItems.js +82 -0
- package/esm/pluggableElementTypes/extendElementType.d.ts +30 -0
- package/esm/pluggableElementTypes/extendElementType.js +73 -0
- package/esm/pluggableElementTypes/index.d.ts +7 -7
- package/esm/pluggableElementTypes/index.js +24 -14
- package/esm/pluggableElementTypes/models/BaseConnectionModelFactory.d.ts +70 -15
- package/esm/pluggableElementTypes/models/BaseConnectionModelFactory.js +90 -10
- package/esm/pluggableElementTypes/models/BaseDisplayModel.d.ts +646 -84
- package/esm/pluggableElementTypes/models/BaseDisplayModel.js +241 -60
- package/esm/pluggableElementTypes/models/BaseTrackModel.d.ts +216 -35
- package/esm/pluggableElementTypes/models/BaseTrackModel.js +365 -83
- package/esm/pluggableElementTypes/models/BaseViewModel.d.ts +216 -16
- package/esm/pluggableElementTypes/models/BaseViewModel.js +150 -16
- package/esm/pluggableElementTypes/models/HighlightsMixin.d.ts +51 -0
- package/esm/pluggableElementTypes/models/HighlightsMixin.js +78 -0
- package/esm/pluggableElementTypes/models/InternetAccountModel.d.ts +163 -29
- package/esm/pluggableElementTypes/models/InternetAccountModel.js +218 -48
- package/esm/pluggableElementTypes/models/assertDisplayContract.d.ts +177 -0
- package/esm/pluggableElementTypes/models/assertDisplayContract.js +239 -0
- package/esm/pluggableElementTypes/models/baseConnectionConfig.d.ts +22 -8
- package/esm/pluggableElementTypes/models/baseConnectionConfig.js +18 -2
- package/esm/pluggableElementTypes/models/baseInternetAccountConfig.d.ts +39 -20
- package/esm/pluggableElementTypes/models/baseInternetAccountConfig.js +23 -2
- package/esm/pluggableElementTypes/models/baseTrackConfig.d.ts +181 -65
- package/esm/pluggableElementTypes/models/baseTrackConfig.js +191 -89
- package/esm/pluggableElementTypes/models/components/SaveTrackData.d.ts +3 -8
- package/esm/pluggableElementTypes/models/components/SaveTrackData.js +113 -139
- package/esm/pluggableElementTypes/models/components/fetchTrackData.d.ts +55 -0
- package/esm/pluggableElementTypes/models/components/fetchTrackData.js +83 -0
- package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.d.ts +40 -0
- package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.js +115 -0
- package/esm/pluggableElementTypes/models/index.d.ts +6 -3
- package/esm/pluggableElementTypes/models/index.js +10 -8
- package/esm/pluggableElementTypes/models/migrateTrackConfig.d.ts +34 -0
- package/esm/pluggableElementTypes/models/migrateTrackConfig.js +54 -0
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/bed.js +75 -7
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.d.ts +9 -3
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.js +153 -103
- 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 +198 -0
- package/esm/pluginDefinitions.js +220 -0
- package/esm/rpc/BaseRpcDriver.d.ts +27 -35
- package/esm/rpc/BaseRpcDriver.js +74 -107
- package/esm/rpc/MainThreadRpcDriver.d.ts +9 -10
- package/esm/rpc/MainThreadRpcDriver.js +18 -29
- package/esm/rpc/RpcClient.d.ts +38 -0
- package/esm/rpc/RpcClient.js +154 -0
- package/esm/rpc/RpcManager.d.ts +116 -27
- package/esm/rpc/RpcManager.js +177 -50
- package/esm/rpc/RpcRegistry.d.ts +275 -0
- package/esm/rpc/RpcRegistry.js +1 -0
- package/esm/rpc/RpcServer.d.ts +41 -0
- package/esm/rpc/RpcServer.js +235 -0
- package/esm/rpc/WebWorkerRpcDriver.d.ts +71 -24
- package/esm/rpc/WebWorkerRpcDriver.js +312 -27
- package/esm/rpc/byteBudget.d.ts +58 -0
- package/esm/rpc/byteBudget.js +50 -0
- package/esm/rpc/configSchema.d.ts +27 -5
- package/esm/rpc/configSchema.js +40 -16
- package/esm/rpc/coreRpcMethods.d.ts +3 -5
- package/esm/rpc/coreRpcMethods.js +10 -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/CoreGetExportData.d.ts +5 -18
- package/esm/rpc/methods/CoreGetExportData.js +26 -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 +15 -17
- 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 +24 -13
- 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/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 +53 -0
- package/esm/svg/constants.d.ts +1 -0
- package/esm/svg/constants.js +5 -0
- package/esm/svg/saveSvgAsImage.d.ts +6 -0
- package/esm/svg/saveSvgAsImage.js +90 -0
- package/esm/svg/svgId.d.ts +42 -0
- package/esm/svg/svgId.js +84 -0
- package/esm/svg/svgReady.d.ts +137 -0
- package/esm/svg/svgReady.js +164 -0
- package/esm/svg/trackNames.d.ts +27 -0
- package/esm/svg/trackNames.js +31 -0
- package/esm/svg/wrapSvgExport.d.ts +12 -0
- package/esm/svg/wrapSvgExport.js +78 -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 +61 -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/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 +390 -41
- 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 +4 -4
- 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 +3 -3
- package/esm/ui/ErrorMessageStackTraceDialog.d.ts +1 -1
- package/esm/ui/ErrorMessageStackTraceDialog.js +57 -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 +128 -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 +383 -71
- 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 +12 -3
- package/esm/ui/HoverMenu.js +31 -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 +23 -0
- package/esm/ui/JexlFilterDialog.js +94 -0
- package/esm/ui/LabeledCheckbox.d.ts +9 -0
- package/esm/ui/LabeledCheckbox.js +7 -0
- package/esm/ui/LegendSwatchGlyph.d.ts +7 -0
- package/esm/ui/LegendSwatchGlyph.js +25 -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 +137 -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 +134 -5
- package/esm/ui/MenuTypes.js +16 -1
- package/esm/ui/MonospaceTextField.d.ts +9 -0
- package/esm/ui/MonospaceTextField.js +37 -0
- package/esm/ui/NumberTextField.d.ts +31 -0
- package/esm/ui/NumberTextField.js +33 -0
- package/esm/ui/PaletteContext.d.ts +92 -0
- package/esm/ui/PaletteContext.js +133 -0
- package/esm/ui/PinAdornment.d.ts +5 -0
- package/esm/ui/PinAdornment.js +85 -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/index.d.ts +22 -0
- package/esm/ui/RefNameAutocomplete/index.js +78 -0
- package/esm/ui/RefNameAutocomplete/util.d.ts +49 -0
- package/esm/ui/RefNameAutocomplete/util.js +168 -0
- package/esm/ui/ReplaceCurrentViewButton.d.ts +19 -0
- package/esm/ui/ReplaceCurrentViewButton.js +22 -0
- package/esm/ui/ResizeHandle.d.ts +13 -7
- package/esm/ui/ResizeHandle.js +42 -55
- 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/ScrollEdgeShadow.d.ts +44 -0
- package/esm/ui/ScrollEdgeShadow.js +98 -0
- package/esm/ui/ScrollZoomToggle.d.ts +38 -0
- package/esm/ui/ScrollZoomToggle.js +92 -0
- package/esm/ui/SequenceAdapterInputs.d.ts +9 -0
- package/esm/ui/SequenceAdapterInputs.js +30 -0
- package/esm/ui/SettingsChangesTable.d.ts +14 -0
- package/esm/ui/SettingsChangesTable.js +49 -0
- package/esm/ui/ShareLinkField.d.ts +6 -0
- package/esm/ui/ShareLinkField.js +42 -0
- package/esm/ui/SingleSlider.d.ts +8 -0
- package/esm/ui/SingleSlider.js +11 -0
- package/esm/ui/SizeSliderRow.d.ts +16 -0
- package/esm/ui/SizeSliderRow.js +50 -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 +43 -11
- 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 +13 -0
- package/esm/ui/SvgColorLegend.js +65 -0
- package/esm/ui/SvgGradientLegend.d.ts +26 -0
- package/esm/ui/SvgGradientLegend.js +26 -0
- package/esm/ui/TagTextField.d.ts +40 -0
- package/esm/ui/TagTextField.js +32 -0
- package/esm/ui/VerticalScrollbar.d.ts +45 -0
- package/esm/ui/VerticalScrollbar.js +158 -0
- package/esm/ui/ViewLoadingScreen.d.ts +24 -0
- package/esm/ui/ViewLoadingScreen.js +76 -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/colorSwatchStyle.d.ts +9 -0
- package/esm/ui/colorSwatchStyle.js +11 -0
- package/esm/ui/colors.d.ts +61 -8
- package/esm/ui/colors.js +135 -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/highlightChipReveal.d.ts +32 -0
- package/esm/ui/highlightChipReveal.js +39 -0
- package/esm/ui/hoverBoxStyle.d.ts +11 -0
- package/esm/ui/hoverBoxStyle.js +13 -0
- package/esm/ui/index.d.ts +76 -4
- package/esm/ui/index.js +90 -19
- 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 +42 -0
- package/esm/ui/legendMenuItem.d.ts +38 -0
- package/esm/ui/legendMenuItem.js +44 -0
- package/esm/ui/legendSpec.d.ts +62 -0
- package/esm/ui/legendSpec.js +78 -0
- package/esm/ui/loadingDotKeyframes.d.ts +18 -0
- package/esm/ui/loadingDotKeyframes.js +17 -0
- package/esm/ui/makeSizeMenu.d.ts +30 -0
- package/esm/ui/makeSizeMenu.js +82 -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 +33 -0
- package/esm/ui/menuItemAdornment.js +50 -0
- package/esm/ui/menuItems.d.ts +28 -0
- package/esm/ui/menuItems.js +26 -0
- package/esm/ui/menuLabels.d.ts +41 -0
- package/esm/ui/menuLabels.js +43 -0
- package/esm/ui/multiTrackMenuItems.d.ts +19 -0
- package/esm/ui/multiTrackMenuItems.js +15 -0
- package/esm/ui/palette.d.ts +559 -0
- package/esm/ui/palette.js +746 -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/promotableMenuItems.d.ts +19 -0
- package/esm/ui/promotableMenuItems.js +91 -0
- package/esm/ui/promotablePinCoverage.d.ts +44 -0
- package/esm/ui/promotablePinCoverage.js +88 -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 +343 -29
- package/esm/ui/theme.js +258 -342
- package/esm/ui/toggleMenuItems.d.ts +42 -0
- package/esm/ui/toggleMenuItems.js +60 -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/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 +204 -16
- package/esm/util/Base1DUtils.js +310 -175
- package/esm/util/Base1DViewModel.d.ts +97 -20
- package/esm/util/Base1DViewModel.js +148 -39
- 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 +81 -0
- package/esm/util/SvgCanvas.js +500 -0
- package/esm/util/TimeTraveller.d.ts +12 -0
- package/esm/util/TimeTraveller.js +130 -27
- package/esm/util/aborting.d.ts +17 -4
- package/esm/util/aborting.js +30 -25
- package/esm/util/adapterMetadata.d.ts +20 -0
- package/esm/util/adapterMetadata.js +39 -0
- package/esm/util/addAndShowTrack.d.ts +22 -0
- package/esm/util/addAndShowTrack.js +27 -0
- package/esm/util/addRelativeUris.d.ts +17 -0
- package/esm/util/addRelativeUris.js +42 -0
- package/esm/util/addTrackComponent.d.ts +72 -0
- package/esm/util/addTrackComponent.js +53 -0
- package/esm/util/addTrackFromWidget.d.ts +94 -0
- package/esm/util/addTrackFromWidget.js +90 -0
- package/esm/util/analytics.d.ts +32 -3
- package/esm/util/analytics.js +102 -49
- package/esm/util/animationAllowed.d.ts +17 -0
- package/esm/util/animationAllowed.js +22 -0
- package/esm/util/applyRowResizeWheel.d.ts +10 -0
- package/esm/util/applyRowResizeWheel.js +34 -0
- package/esm/util/assemblyConfigUtils.d.ts +144 -0
- package/esm/util/assemblyConfigUtils.js +498 -0
- package/esm/util/bandHeight.d.ts +53 -0
- package/esm/util/bandHeight.js +56 -0
- package/esm/util/bandLayout.d.ts +51 -0
- package/esm/util/bandLayout.js +36 -0
- package/esm/util/bezierConnector.d.ts +14 -0
- package/esm/util/bezierConnector.js +108 -0
- package/esm/util/bgzfWorkerPool.d.ts +78 -0
- package/esm/util/bgzfWorkerPool.js +81 -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/chooseGridPitch.d.ts +9 -0
- package/esm/util/chooseGridPitch.js +31 -0
- package/esm/util/clampToContig.d.ts +26 -0
- package/esm/util/clampToContig.js +28 -0
- package/esm/util/cmpStr.d.ts +1 -0
- package/esm/util/cmpStr.js +7 -0
- package/esm/util/coarseStripHTML.js +3 -15
- package/esm/util/color/cssColorsLevel4.js +6 -2
- package/esm/util/color/index.d.ts +81 -2
- package/esm/util/color/index.js +194 -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 +180 -0
- package/esm/util/colorRamp.d.ts +37 -0
- package/esm/util/colorRamp.js +93 -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/createStopTokenRotation.d.ts +118 -0
- package/esm/util/createStopTokenRotation.js +127 -0
- package/esm/util/createSvgRasterCanvas.d.ts +7 -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/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 +23 -0
- package/esm/util/diagonalizeRegions.js +192 -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/fetchAndMaybeUnzip.d.ts +6 -0
- package/esm/util/fetchAndMaybeUnzip.js +64 -0
- package/esm/util/fetchContext.d.ts +82 -0
- package/esm/util/fetchContext.js +59 -0
- package/esm/util/fetchHub.d.ts +15 -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 +5 -1
- package/esm/util/fetchSeq.js +18 -6
- 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 +28 -0
- package/esm/util/freezeDeep.js +41 -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/highlights.d.ts +21 -0
- package/esm/util/highlights.js +100 -0
- package/esm/util/hooks.d.ts +168 -0
- package/esm/util/hooks.js +443 -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 +81 -268
- package/esm/util/index.js +135 -853
- package/esm/util/indexCandidates.d.ts +50 -0
- package/esm/util/indexCandidates.js +101 -0
- package/esm/util/installClearHoverOnSurfaceMove.d.ts +40 -0
- package/esm/util/installClearHoverOnSurfaceMove.js +41 -0
- package/esm/util/installFetch.d.ts +220 -0
- package/esm/util/installFetch.js +206 -0
- package/esm/util/installInitAutorun.d.ts +62 -0
- package/esm/util/installInitAutorun.js +107 -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 +115 -12
- package/esm/util/isDataCurrent.d.ts +7 -0
- package/esm/util/isDataCurrent.js +9 -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 +141 -17
- package/esm/util/jexlFilters.d.ts +75 -0
- package/esm/util/jexlFilters.js +49 -0
- package/esm/util/jexlStrings.d.ts +22 -1
- package/esm/util/jexlStrings.js +21 -14
- package/esm/util/layouts/GranularRectLayout.d.ts +13 -25
- package/esm/util/layouts/GranularRectLayout.js +99 -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/leadingEdgeAutorun.d.ts +40 -0
- package/esm/util/leadingEdgeAutorun.js +51 -0
- package/esm/util/legendCandidates.d.ts +50 -0
- package/esm/util/legendCandidates.js +87 -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/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 +14 -4
- package/esm/util/mst-reflection.js +33 -32
- package/esm/util/mstUtils.d.ts +100 -0
- package/esm/util/mstUtils.js +140 -0
- package/esm/util/nanoid.d.ts +0 -4
- package/esm/util/nanoid.js +10 -20
- package/esm/util/numericUtils.d.ts +20 -0
- package/esm/util/numericUtils.js +127 -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/openDisplays.d.ts +23 -0
- package/esm/util/openDisplays.js +79 -0
- package/esm/util/openFeatureWidget.d.ts +33 -0
- package/esm/util/openFeatureWidget.js +64 -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 +45 -2
- package/esm/util/parseLineByLine.js +156 -15
- package/esm/util/parseMotifList.d.ts +17 -0
- package/esm/util/parseMotifList.js +69 -0
- package/esm/util/pluginStore.d.ts +114 -0
- package/esm/util/pluginStore.js +260 -0
- package/esm/util/pointerPresence.d.ts +5 -0
- package/esm/util/pointerPresence.js +21 -0
- package/esm/util/progress.d.ts +459 -0
- package/esm/util/progress.js +820 -0
- package/esm/util/range.d.ts +46 -1
- package/esm/util/range.js +68 -2
- package/esm/util/renameRegions.d.ts +21 -0
- package/esm/util/renameRegions.js +129 -0
- package/esm/util/renderToStaticMarkup.d.ts +2 -0
- package/esm/util/renderToStaticMarkup.js +50 -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 -1
- package/esm/util/rxjs.js +88 -10
- package/esm/util/sameStrings.d.ts +16 -0
- package/esm/util/sameStrings.js +20 -0
- package/esm/util/scrollLatch.d.ts +4 -0
- package/esm/util/scrollLatch.js +59 -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 +38 -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/simpleFeature.d.ts +112 -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/stats.d.ts +25 -2
- package/esm/util/stats.js +39 -8
- package/esm/util/stopToken.d.ts +207 -15
- package/esm/util/stopToken.js +403 -55
- package/esm/util/stringUtils.d.ts +5 -0
- package/esm/util/stringUtils.js +34 -0
- package/esm/util/svgColorProps.d.ts +7 -0
- package/esm/util/svgColorProps.js +28 -0
- package/esm/util/tabix.d.ts +126 -0
- package/esm/util/tabix.js +149 -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/tickLabels.d.ts +36 -0
- package/esm/util/tickLabels.js +45 -0
- package/esm/util/timeGate.d.ts +26 -0
- package/esm/util/timeGate.js +79 -0
- package/esm/util/trackConfigDelta.d.ts +84 -0
- package/esm/util/trackConfigDelta.js +190 -0
- package/esm/util/tracks.d.ts +398 -30
- package/esm/util/tracks.js +699 -191
- 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 +75 -0
- package/esm/util/types/data.js +41 -0
- package/esm/util/types/index.d.ts +402 -120
- package/esm/util/types/index.js +90 -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 +71 -47
- package/esm/util/types/mst.js +27 -22
- package/esm/util/types/predicate.d.ts +9 -0
- package/esm/util/types/predicate.js +1 -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 +36 -0
- package/esm/util/unknownSnapshotKeys.js +69 -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 +56 -78
- package/esm/util/useFetch.d.ts +56 -0
- package/esm/util/useFetch.js +188 -0
- package/esm/util/useFetchPlugins.d.ts +12 -0
- package/esm/util/useFetchPlugins.js +14 -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 +37 -0
- package/esm/util/usePanelVirtualScroll.js +42 -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 +32 -0
- package/esm/util/useRowVirtualScroll.js +63 -0
- package/esm/util/useVirtualScrollWheel.d.ts +7 -0
- package/esm/util/useVirtualScrollWheel.js +108 -0
- package/esm/util/viewStatus.d.ts +81 -0
- package/esm/util/viewStatus.js +37 -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 +59 -0
- package/esm/util/wheelZoom.js +231 -0
- package/esm/util/whenViewSettled.d.ts +40 -0
- package/esm/util/whenViewSettled.js +41 -0
- package/esm/util/withFeatureDetails.d.ts +34 -0
- package/esm/util/withFeatureDetails.js +59 -0
- package/esm/util/withLaunchInput.d.ts +123 -0
- package/esm/util/withLaunchInput.js +228 -0
- package/package.json +243 -820
- package/esm/ReExports/DataGrid.d.ts +0 -1
- package/esm/ReExports/DataGrid.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/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/{data_adapters/BaseAdapter/BaseOptions.js → configuration/promotablePin.js} +0 -0
- /package/esm/{util/layouts/BaseLayout.js → data_adapters/BaseAdapter/CytobandAdapter.js} +0 -0
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import type { Region } from './types/data.ts';
|
|
2
|
+
export interface MinimalRegion {
|
|
3
|
+
start: number;
|
|
4
|
+
end: number;
|
|
5
|
+
reversed?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare function bpToPx(bp: number, { reversed, end, start, }: {
|
|
8
|
+
start?: number;
|
|
9
|
+
end?: number;
|
|
10
|
+
reversed?: boolean;
|
|
11
|
+
}, bpPerPx: number): number;
|
|
12
|
+
export declare function bpSpanPx(leftBp: number, rightBp: number, region: MinimalRegion, bpPerPx: number): readonly [number, number];
|
|
13
|
+
export declare function featureSpanPx(feature: {
|
|
14
|
+
get: (key: string) => number;
|
|
15
|
+
}, region: MinimalRegion, bpPerPx: number): readonly [number, number];
|
|
16
|
+
export declare function getBpDisplayStr(total: number): string;
|
|
17
|
+
/**
|
|
18
|
+
* The grammar of a single base-pair quantity, as a regex source fragment so
|
|
19
|
+
* that callers matching it in a larger pattern (a locString coordinate range,
|
|
20
|
+
* say) stay in step with {@link parseBpString}. Match case-insensitively.
|
|
21
|
+
*
|
|
22
|
+
* A decimal point is allowed only on the unit-suffixed alternative. That is
|
|
23
|
+
* deliberate: "1.5Mb" is a number a user means, whereas a bare "1.5" as a
|
|
24
|
+
* coordinate is a mistake, and it should stay an error rather than silently
|
|
25
|
+
* yielding a fractional coordinate.
|
|
26
|
+
*/
|
|
27
|
+
export declare const BP_QUANTITY_SOURCE: string;
|
|
28
|
+
/**
|
|
29
|
+
* Parse a base-pair count written the way people type one: plain digits, with
|
|
30
|
+
* optional thousand separators, and with an optional metric unit suffix. So
|
|
31
|
+
* "150", "1,500", "1.5kb", "1.5k", "34Mb" and "2G" are all accepted.
|
|
32
|
+
*
|
|
33
|
+
* The unit's tail is loose because both "kb" and "k" are in common use, and
|
|
34
|
+
* because everything {@link getBpDisplayStr} prints has to come back in. The
|
|
35
|
+
* app shows a window size as "1.5Mbp" in the zoom slider tooltip and over a
|
|
36
|
+
* rubberband selection, so a user who reads one off the screen and types it
|
|
37
|
+
* into a bp field has typed a string this must accept.
|
|
38
|
+
*
|
|
39
|
+
* Returns undefined, rather than NaN or a throw, when the string is not a bp
|
|
40
|
+
* quantity, so that callers validating a text field can test it directly.
|
|
41
|
+
*/
|
|
42
|
+
export declare function parseBpString(str: string): number | undefined;
|
|
43
|
+
export declare function getTickDisplayStr(totalBp: number, bpPerPx: number): string;
|
|
44
|
+
interface VirtualOffset {
|
|
45
|
+
blockPosition: number;
|
|
46
|
+
dataPosition?: number;
|
|
47
|
+
}
|
|
48
|
+
interface Block {
|
|
49
|
+
minv: VirtualOffset;
|
|
50
|
+
maxv: VirtualOffset;
|
|
51
|
+
/**
|
|
52
|
+
* Bytes this block's fetch actually reads. @gmod/tabix and @gmod/bam compute
|
|
53
|
+
* it from an `endPosition` that `clampChunkEnds` has tightened down to the
|
|
54
|
+
* next known BGZF block boundary, so it is materially smaller than the
|
|
55
|
+
* full-block padding the fallback below has to assume.
|
|
56
|
+
*/
|
|
57
|
+
fetchedSize?: () => number;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Index-only estimate of the bytes a fetch of these regions would download.
|
|
61
|
+
*
|
|
62
|
+
* Prefers each block's own `fetchedSize()`. The fallback —
|
|
63
|
+
* `maxv + 65535 - minv` — has to pad by a whole maximum-size BGZF block,
|
|
64
|
+
* because the compressed length of the block at `maxv` is not recorded in the
|
|
65
|
+
* index; it is what this did for every block before the parsers exposed a
|
|
66
|
+
* tightened figure, and it over-estimates.
|
|
67
|
+
*
|
|
68
|
+
* Blocks are also de-duplicated across regions. Two adjacent regions routinely
|
|
69
|
+
* resolve to the same chunk, and it is downloaded once, so counting it twice
|
|
70
|
+
* inflated the estimate for exactly the multi-region queries this gates.
|
|
71
|
+
*
|
|
72
|
+
* Note @gmod/tabix's own `TabixIndexedFile.bytesForRegions` is strictly better
|
|
73
|
+
* still — it runs the chunk merger over the combined set, so it also collapses
|
|
74
|
+
* *overlapping* blocks rather than only identical ones — and every tabix
|
|
75
|
+
* adapter in this repo calls that instead. This remains for other index shapes
|
|
76
|
+
* and for plugins outside the repo, which reach it through `@jbrowse/core/util`.
|
|
77
|
+
*/
|
|
78
|
+
export declare function bytesForRegions(regions: Region[], index: {
|
|
79
|
+
blocksForRange: (ref: string, start: number, end: number) => Promise<Block[]>;
|
|
80
|
+
}): Promise<number>;
|
|
81
|
+
export {};
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { reducePrecision, sum, toLocale, toPrecision } from './numericUtils.js';
|
|
2
|
+
function roundToNearestPointOne(num) {
|
|
3
|
+
return Math.round(num * 10) / 10;
|
|
4
|
+
}
|
|
5
|
+
export function bpToPx(bp, { reversed, end = 0, start = 0, }, bpPerPx) {
|
|
6
|
+
return roundToNearestPointOne((reversed ? end - bp : bp - start) / bpPerPx);
|
|
7
|
+
}
|
|
8
|
+
export function bpSpanPx(leftBp, rightBp, region, bpPerPx) {
|
|
9
|
+
const start = bpToPx(leftBp, region, bpPerPx);
|
|
10
|
+
const end = bpToPx(rightBp, region, bpPerPx);
|
|
11
|
+
return region.reversed ? [end, start] : [start, end];
|
|
12
|
+
}
|
|
13
|
+
export function featureSpanPx(feature, region, bpPerPx) {
|
|
14
|
+
return bpSpanPx(feature.get('start'), feature.get('end'), region, bpPerPx);
|
|
15
|
+
}
|
|
16
|
+
export function getBpDisplayStr(total) {
|
|
17
|
+
// the unit comes from the rounded value, not the raw one: 3-significant-digit
|
|
18
|
+
// rounding of 999,500bp reaches 1000, which reads as "1Mbp" not "1,000Kbp"
|
|
19
|
+
const mb = toPrecision(total / 1_000_000);
|
|
20
|
+
return mb >= 1
|
|
21
|
+
? `${toLocale(mb)}Mbp`
|
|
22
|
+
: total >= 1000
|
|
23
|
+
? `${reducePrecision(total / 1_000)}Kbp`
|
|
24
|
+
: `${Math.floor(total)}bp`;
|
|
25
|
+
}
|
|
26
|
+
const BP_UNITS = {
|
|
27
|
+
k: 1_000,
|
|
28
|
+
m: 1_000_000,
|
|
29
|
+
g: 1_000_000_000,
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* The grammar of a single base-pair quantity, as a regex source fragment so
|
|
33
|
+
* that callers matching it in a larger pattern (a locString coordinate range,
|
|
34
|
+
* say) stay in step with {@link parseBpString}. Match case-insensitively.
|
|
35
|
+
*
|
|
36
|
+
* A decimal point is allowed only on the unit-suffixed alternative. That is
|
|
37
|
+
* deliberate: "1.5Mb" is a number a user means, whereas a bare "1.5" as a
|
|
38
|
+
* coordinate is a mistake, and it should stay an error rather than silently
|
|
39
|
+
* yielding a fractional coordinate.
|
|
40
|
+
*/
|
|
41
|
+
export const BP_QUANTITY_SOURCE = String.raw `(?:-?\d+(?:\.\d+)?[kmg](?:bp?)?|-?\d+(?:bp)?)`;
|
|
42
|
+
const BP_QUANTITY_REGEX = new RegExp(String.raw `^(?:(-?\d+(?:\.\d+)?)([kmg])(?:bp?)?|(-?\d+)(?:bp)?)$`, 'i');
|
|
43
|
+
/**
|
|
44
|
+
* Parse a base-pair count written the way people type one: plain digits, with
|
|
45
|
+
* optional thousand separators, and with an optional metric unit suffix. So
|
|
46
|
+
* "150", "1,500", "1.5kb", "1.5k", "34Mb" and "2G" are all accepted.
|
|
47
|
+
*
|
|
48
|
+
* The unit's tail is loose because both "kb" and "k" are in common use, and
|
|
49
|
+
* because everything {@link getBpDisplayStr} prints has to come back in. The
|
|
50
|
+
* app shows a window size as "1.5Mbp" in the zoom slider tooltip and over a
|
|
51
|
+
* rubberband selection, so a user who reads one off the screen and types it
|
|
52
|
+
* into a bp field has typed a string this must accept.
|
|
53
|
+
*
|
|
54
|
+
* Returns undefined, rather than NaN or a throw, when the string is not a bp
|
|
55
|
+
* quantity, so that callers validating a text field can test it directly.
|
|
56
|
+
*/
|
|
57
|
+
export function parseBpString(str) {
|
|
58
|
+
const match = BP_QUANTITY_REGEX.exec(str.replaceAll(',', ''));
|
|
59
|
+
if (!match) {
|
|
60
|
+
return undefined;
|
|
61
|
+
}
|
|
62
|
+
const [, scaled, unit, plain] = match;
|
|
63
|
+
return plain === undefined
|
|
64
|
+
? // rounded because the scaled value can land off an integer ("1.0000001M"),
|
|
65
|
+
// and a coordinate is a whole number of bases
|
|
66
|
+
Math.round(+scaled * BP_UNITS[unit.toLowerCase()])
|
|
67
|
+
: +plain;
|
|
68
|
+
}
|
|
69
|
+
export function getTickDisplayStr(totalBp, bpPerPx) {
|
|
70
|
+
return Math.floor(bpPerPx / 1_000) > 0
|
|
71
|
+
? `${toLocale(Number.parseFloat((totalBp / 1_000_000).toFixed(2)))}M`
|
|
72
|
+
: toLocale(Math.floor(totalBp));
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Index-only estimate of the bytes a fetch of these regions would download.
|
|
76
|
+
*
|
|
77
|
+
* Prefers each block's own `fetchedSize()`. The fallback —
|
|
78
|
+
* `maxv + 65535 - minv` — has to pad by a whole maximum-size BGZF block,
|
|
79
|
+
* because the compressed length of the block at `maxv` is not recorded in the
|
|
80
|
+
* index; it is what this did for every block before the parsers exposed a
|
|
81
|
+
* tightened figure, and it over-estimates.
|
|
82
|
+
*
|
|
83
|
+
* Blocks are also de-duplicated across regions. Two adjacent regions routinely
|
|
84
|
+
* resolve to the same chunk, and it is downloaded once, so counting it twice
|
|
85
|
+
* inflated the estimate for exactly the multi-region queries this gates.
|
|
86
|
+
*
|
|
87
|
+
* Note @gmod/tabix's own `TabixIndexedFile.bytesForRegions` is strictly better
|
|
88
|
+
* still — it runs the chunk merger over the combined set, so it also collapses
|
|
89
|
+
* *overlapping* blocks rather than only identical ones — and every tabix
|
|
90
|
+
* adapter in this repo calls that instead. This remains for other index shapes
|
|
91
|
+
* and for plugins outside the repo, which reach it through `@jbrowse/core/util`.
|
|
92
|
+
*/
|
|
93
|
+
export async function bytesForRegions(regions, index) {
|
|
94
|
+
const blockResults = await Promise.all(regions.map(r => index.blocksForRange(r.refName, r.start, r.end)));
|
|
95
|
+
const seen = new Map();
|
|
96
|
+
for (const block of blockResults.flat()) {
|
|
97
|
+
const { minv, maxv } = block;
|
|
98
|
+
seen.set(`${minv.blockPosition}:${minv.dataPosition ?? 0}-${maxv.blockPosition}:${maxv.dataPosition ?? 0}`, block);
|
|
99
|
+
}
|
|
100
|
+
return sum([...seen.values()].map(block => block.fetchedSize
|
|
101
|
+
? block.fetchedSize()
|
|
102
|
+
: block.maxv.blockPosition + 65535 - block.minv.blockPosition));
|
|
103
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { SharedBudget } from '@gmod/shared-read-cache';
|
|
2
|
+
/**
|
|
3
|
+
* The ceiling on what the indexed-format libraries retain, shared by every
|
|
4
|
+
* adapter in this JS context — so one per RPC worker, plus one on the main
|
|
5
|
+
* thread, which is the scope that actually runs out of memory.
|
|
6
|
+
*
|
|
7
|
+
* ## Why this is not per file
|
|
8
|
+
*
|
|
9
|
+
* `@gmod/bam`, `@gmod/tabix` and `@gmod/cram` each take a per-file budget,
|
|
10
|
+
* sized so that a single track panning never falls off the cliff where a cache
|
|
11
|
+
* smaller than one query's working set stops caching entirely (`@gmod/bam` ADR
|
|
12
|
+
* 0014). But `dataAdapterCache` holds one adapter — and so one `BamFile`, one
|
|
13
|
+
* `TabixIndexedFile`, one `IndexedCramFile` — per open track for the life of
|
|
14
|
+
* that track, so a per-file ceiling is multiplied by the track count and
|
|
15
|
+
* nothing bounds the sum.
|
|
16
|
+
*
|
|
17
|
+
* Measured in `@gmod/bam` ADR 0018: three moderately deep alignments tracks
|
|
18
|
+
* browsing eight windows retained 1109 MB at 1665 MB RSS, still climbing, with
|
|
19
|
+
* **every cache well under its own 1 GB ceiling** — so the ceiling was not what
|
|
20
|
+
* held the line, and nothing else was either. Six tracks reached 1442 MB. The
|
|
21
|
+
* idle timeouts cannot help here by construction: they reclaim what has gone
|
|
22
|
+
* quiet, and nothing is quiet while the reader is browsing.
|
|
23
|
+
*
|
|
24
|
+
* Dividing each library's ceiling by the track count is the obvious fix and it
|
|
25
|
+
* is worse than doing nothing: at 128 MB per file — eight tracks under a
|
|
26
|
+
* gigabyte — the same workload cost 101 refills on the revisit against 98 for
|
|
27
|
+
* the cold pass. A shared budget has no such failure, because a member yields
|
|
28
|
+
* only what is globally least-recently-used: tracks the reader is not looking
|
|
29
|
+
* at hand their space to the one being panned, so the active track keeps a
|
|
30
|
+
* whole working set however many are open.
|
|
31
|
+
*
|
|
32
|
+
* ## The number is not new
|
|
33
|
+
*
|
|
34
|
+
* 1 GB is the libraries' own per-file default (`DEFAULT_MAX_CACHE_BYTES` in
|
|
35
|
+
* both `@gmod/bam` and `@gmod/cram`), moved from per-file to per-context. That
|
|
36
|
+
* makes this a strict tightening — retention can only fall — and avoids
|
|
37
|
+
* inventing a number that would need its own justification. With one file open
|
|
38
|
+
* the two ceilings coincide; from the second file on, this one is the one that
|
|
39
|
+
* binds. The budget still has to clear one query's working set or the cliff
|
|
40
|
+
* returns, and on that workload 512 MB shared across three tracks already cost
|
|
41
|
+
* 43 refills where 1 GB cost 4.
|
|
42
|
+
*
|
|
43
|
+
* ## One budget, because every member weighs bytes
|
|
44
|
+
*
|
|
45
|
+
* `SharedBudget.total` is a sum over its members, so they must all weigh in the
|
|
46
|
+
* same unit, and `sizeOf` is opaque, so nothing could catch a mismatch at
|
|
47
|
+
* runtime. `@gmod/bam` and `@gmod/tabix` weigh decompressed bytes, and since 14
|
|
48
|
+
* `@gmod/cram` weighs a decoded slice by `DecodedSlice.byteLength` — its typed
|
|
49
|
+
* columns exactly and its strings by estimate, within 1–8% of the measured heap
|
|
50
|
+
* (its ADR 0013). Before that a CRAM slice weighed its record count, which is
|
|
51
|
+
* why this used to be two budgets named for their units: a million records
|
|
52
|
+
* could not be added to bytes, and never bound long-read data either, where a
|
|
53
|
+
* 6 MB slice counted as 37.
|
|
54
|
+
*/
|
|
55
|
+
export declare const decompressedBytesBudget: SharedBudget;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { SharedBudget } from '@gmod/shared-read-cache';
|
|
2
|
+
/**
|
|
3
|
+
* The ceiling on what the indexed-format libraries retain, shared by every
|
|
4
|
+
* adapter in this JS context — so one per RPC worker, plus one on the main
|
|
5
|
+
* thread, which is the scope that actually runs out of memory.
|
|
6
|
+
*
|
|
7
|
+
* ## Why this is not per file
|
|
8
|
+
*
|
|
9
|
+
* `@gmod/bam`, `@gmod/tabix` and `@gmod/cram` each take a per-file budget,
|
|
10
|
+
* sized so that a single track panning never falls off the cliff where a cache
|
|
11
|
+
* smaller than one query's working set stops caching entirely (`@gmod/bam` ADR
|
|
12
|
+
* 0014). But `dataAdapterCache` holds one adapter — and so one `BamFile`, one
|
|
13
|
+
* `TabixIndexedFile`, one `IndexedCramFile` — per open track for the life of
|
|
14
|
+
* that track, so a per-file ceiling is multiplied by the track count and
|
|
15
|
+
* nothing bounds the sum.
|
|
16
|
+
*
|
|
17
|
+
* Measured in `@gmod/bam` ADR 0018: three moderately deep alignments tracks
|
|
18
|
+
* browsing eight windows retained 1109 MB at 1665 MB RSS, still climbing, with
|
|
19
|
+
* **every cache well under its own 1 GB ceiling** — so the ceiling was not what
|
|
20
|
+
* held the line, and nothing else was either. Six tracks reached 1442 MB. The
|
|
21
|
+
* idle timeouts cannot help here by construction: they reclaim what has gone
|
|
22
|
+
* quiet, and nothing is quiet while the reader is browsing.
|
|
23
|
+
*
|
|
24
|
+
* Dividing each library's ceiling by the track count is the obvious fix and it
|
|
25
|
+
* is worse than doing nothing: at 128 MB per file — eight tracks under a
|
|
26
|
+
* gigabyte — the same workload cost 101 refills on the revisit against 98 for
|
|
27
|
+
* the cold pass. A shared budget has no such failure, because a member yields
|
|
28
|
+
* only what is globally least-recently-used: tracks the reader is not looking
|
|
29
|
+
* at hand their space to the one being panned, so the active track keeps a
|
|
30
|
+
* whole working set however many are open.
|
|
31
|
+
*
|
|
32
|
+
* ## The number is not new
|
|
33
|
+
*
|
|
34
|
+
* 1 GB is the libraries' own per-file default (`DEFAULT_MAX_CACHE_BYTES` in
|
|
35
|
+
* both `@gmod/bam` and `@gmod/cram`), moved from per-file to per-context. That
|
|
36
|
+
* makes this a strict tightening — retention can only fall — and avoids
|
|
37
|
+
* inventing a number that would need its own justification. With one file open
|
|
38
|
+
* the two ceilings coincide; from the second file on, this one is the one that
|
|
39
|
+
* binds. The budget still has to clear one query's working set or the cliff
|
|
40
|
+
* returns, and on that workload 512 MB shared across three tracks already cost
|
|
41
|
+
* 43 refills where 1 GB cost 4.
|
|
42
|
+
*
|
|
43
|
+
* ## One budget, because every member weighs bytes
|
|
44
|
+
*
|
|
45
|
+
* `SharedBudget.total` is a sum over its members, so they must all weigh in the
|
|
46
|
+
* same unit, and `sizeOf` is opaque, so nothing could catch a mismatch at
|
|
47
|
+
* runtime. `@gmod/bam` and `@gmod/tabix` weigh decompressed bytes, and since 14
|
|
48
|
+
* `@gmod/cram` weighs a decoded slice by `DecodedSlice.byteLength` — its typed
|
|
49
|
+
* columns exactly and its strings by estimate, within 1–8% of the measured heap
|
|
50
|
+
* (its ADR 0013). Before that a CRAM slice weighed its record count, which is
|
|
51
|
+
* why this used to be two budgets named for their units: a million records
|
|
52
|
+
* could not be added to bytes, and never bound long-read data either, where a
|
|
53
|
+
* 6 MB slice counted as 37.
|
|
54
|
+
*/
|
|
55
|
+
export const decompressedBytesBudget = new SharedBudget(1024 * 2 ** 20);
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { BaseOptions } from '../data_adapters/BaseAdapter/types.ts';
|
|
2
|
+
/** byte-granularity progress reporter to hand an index reader's `onProgress` */
|
|
3
|
+
type OnProgress = (current: number, total?: number) => void;
|
|
4
|
+
/**
|
|
5
|
+
* Memoize an adapter's one-time setup (open the file, read the header, build a
|
|
6
|
+
* parser, download and parse a whole file) into a loader every method can
|
|
7
|
+
* await.
|
|
8
|
+
*
|
|
9
|
+
* Four behaviors, each of which a hand-rolled `p ??= f().catch(...)` gets wrong
|
|
10
|
+
* in a way that is invisible until it isn't:
|
|
11
|
+
*
|
|
12
|
+
* - **A rejected setup clears the memo**, so the next call retries instead of
|
|
13
|
+
* replaying the same rejection for the life of the adapter.
|
|
14
|
+
* - **Progress fans out to every live waiter.** The setup body reports to
|
|
15
|
+
* whoever is *currently* awaiting it, not to whoever happened to start it. A
|
|
16
|
+
* memo that captured the first caller's `statusCallback` went silent the
|
|
17
|
+
* moment that fetch was superseded — the display's latest-wins guard gates the
|
|
18
|
+
* old callback off — so the fetch replacing it awaited a multi-GB parse behind
|
|
19
|
+
* a blank loading overlay.
|
|
20
|
+
* - **`stopToken` is withheld from the shared work.** Honoring one caller's
|
|
21
|
+
* cancel would abort a parse the caller replacing it is already waiting on,
|
|
22
|
+
* and reject them both. A superseded fetch just stops listening. Cancellation
|
|
23
|
+
* stays with the per-call work (indexed range queries), which no one else is
|
|
24
|
+
* waiting on.
|
|
25
|
+
* - **`label` is shown only while the *first* attempt is in flight.** Re-entry
|
|
26
|
+
* on pan/zoom (every getFeatures and byte estimate awaits the loader) would
|
|
27
|
+
* otherwise re-flash "Downloading index" over an index that is already
|
|
28
|
+
* resident.
|
|
29
|
+
*
|
|
30
|
+
* Pass `label` when the setup is an index read that narrates nothing itself, so
|
|
31
|
+
* the label is the whole story. Omit it when the setup reports from the inside —
|
|
32
|
+
* a whole-file fetch driving its own download bar — since two labels for one
|
|
33
|
+
* download is worse than one, and phases nest (see `openPhase` in progress.ts).
|
|
34
|
+
* `onProgress` is for handing to an index reader that can upgrade the label to a
|
|
35
|
+
* determinate bar.
|
|
36
|
+
*/
|
|
37
|
+
export declare function cachedSetup<T>({ setup, label, }: {
|
|
38
|
+
setup: (opts: BaseOptions, onProgress?: OnProgress) => Promise<T>;
|
|
39
|
+
label?: string;
|
|
40
|
+
}): (opts?: BaseOptions) => Promise<T>;
|
|
41
|
+
/**
|
|
42
|
+
* {@link cachedSetup} taking a bare function instead of an options object.
|
|
43
|
+
*
|
|
44
|
+
* Kept because it is a published `@jbrowse/core/util` export and so pinned ABI
|
|
45
|
+
* (see reference/PLUGIN_ABI_STABILITY.md); nothing in this repo calls it. It
|
|
46
|
+
* used to be a second implementation, which is the thing worth not having: two
|
|
47
|
+
* memos with the same shape and different answers about whose `statusCallback`
|
|
48
|
+
* the shared work reports to, and no one place saying which to reach for.
|
|
49
|
+
*/
|
|
50
|
+
export declare function createSharedSetup<T>(run: (opts: BaseOptions) => Promise<T>): (opts?: BaseOptions) => Promise<T>;
|
|
51
|
+
export {};
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { downloadStatus } from './progress.js';
|
|
2
|
+
/**
|
|
3
|
+
* Memoize an adapter's one-time setup (open the file, read the header, build a
|
|
4
|
+
* parser, download and parse a whole file) into a loader every method can
|
|
5
|
+
* await.
|
|
6
|
+
*
|
|
7
|
+
* Four behaviors, each of which a hand-rolled `p ??= f().catch(...)` gets wrong
|
|
8
|
+
* in a way that is invisible until it isn't:
|
|
9
|
+
*
|
|
10
|
+
* - **A rejected setup clears the memo**, so the next call retries instead of
|
|
11
|
+
* replaying the same rejection for the life of the adapter.
|
|
12
|
+
* - **Progress fans out to every live waiter.** The setup body reports to
|
|
13
|
+
* whoever is *currently* awaiting it, not to whoever happened to start it. A
|
|
14
|
+
* memo that captured the first caller's `statusCallback` went silent the
|
|
15
|
+
* moment that fetch was superseded — the display's latest-wins guard gates the
|
|
16
|
+
* old callback off — so the fetch replacing it awaited a multi-GB parse behind
|
|
17
|
+
* a blank loading overlay.
|
|
18
|
+
* - **`stopToken` is withheld from the shared work.** Honoring one caller's
|
|
19
|
+
* cancel would abort a parse the caller replacing it is already waiting on,
|
|
20
|
+
* and reject them both. A superseded fetch just stops listening. Cancellation
|
|
21
|
+
* stays with the per-call work (indexed range queries), which no one else is
|
|
22
|
+
* waiting on.
|
|
23
|
+
* - **`label` is shown only while the *first* attempt is in flight.** Re-entry
|
|
24
|
+
* on pan/zoom (every getFeatures and byte estimate awaits the loader) would
|
|
25
|
+
* otherwise re-flash "Downloading index" over an index that is already
|
|
26
|
+
* resident.
|
|
27
|
+
*
|
|
28
|
+
* Pass `label` when the setup is an index read that narrates nothing itself, so
|
|
29
|
+
* the label is the whole story. Omit it when the setup reports from the inside —
|
|
30
|
+
* a whole-file fetch driving its own download bar — since two labels for one
|
|
31
|
+
* download is worse than one, and phases nest (see `openPhase` in progress.ts).
|
|
32
|
+
* `onProgress` is for handing to an index reader that can upgrade the label to a
|
|
33
|
+
* determinate bar.
|
|
34
|
+
*/
|
|
35
|
+
export function cachedSetup({ setup, label, }) {
|
|
36
|
+
const waiting = new Set();
|
|
37
|
+
let cached;
|
|
38
|
+
let ready = false;
|
|
39
|
+
const run = (opts, onProgress) => {
|
|
40
|
+
cached ??= setup({
|
|
41
|
+
...opts,
|
|
42
|
+
stopToken: undefined,
|
|
43
|
+
statusCallback: status => {
|
|
44
|
+
for (const cb of waiting) {
|
|
45
|
+
cb(status);
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
}, onProgress)
|
|
49
|
+
.then(result => {
|
|
50
|
+
ready = true;
|
|
51
|
+
return result;
|
|
52
|
+
})
|
|
53
|
+
.catch((e) => {
|
|
54
|
+
cached = undefined;
|
|
55
|
+
throw e;
|
|
56
|
+
});
|
|
57
|
+
return cached;
|
|
58
|
+
};
|
|
59
|
+
return async (opts = {}) => {
|
|
60
|
+
const { statusCallback } = opts;
|
|
61
|
+
if (statusCallback) {
|
|
62
|
+
waiting.add(statusCallback);
|
|
63
|
+
}
|
|
64
|
+
try {
|
|
65
|
+
return await (label === undefined || ready
|
|
66
|
+
? run(opts)
|
|
67
|
+
: downloadStatus(label, statusCallback, onProgress => run(opts, onProgress)));
|
|
68
|
+
}
|
|
69
|
+
finally {
|
|
70
|
+
if (statusCallback) {
|
|
71
|
+
waiting.delete(statusCallback);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* {@link cachedSetup} taking a bare function instead of an options object.
|
|
78
|
+
*
|
|
79
|
+
* Kept because it is a published `@jbrowse/core/util` export and so pinned ABI
|
|
80
|
+
* (see reference/PLUGIN_ABI_STABILITY.md); nothing in this repo calls it. It
|
|
81
|
+
* used to be a second implementation, which is the thing worth not having: two
|
|
82
|
+
* memos with the same shape and different answers about whose `statusCallback`
|
|
83
|
+
* the shared work reports to, and no one place saying which to reach for.
|
|
84
|
+
*/
|
|
85
|
+
export function createSharedSetup(run) {
|
|
86
|
+
return cachedSetup({ setup: run });
|
|
87
|
+
}
|
|
@@ -1,3 +1,8 @@
|
|
|
1
1
|
import { BlockSet } from './blockTypes.ts';
|
|
2
2
|
import type { Base1DViewModel } from './calculateStaticBlocks.ts';
|
|
3
|
+
/**
|
|
4
|
+
* Returns a BlockSet covering only the regions currently visible in the view.
|
|
5
|
+
* Used by tracks where static blocks are not feasible. start/end/offsetPx may
|
|
6
|
+
* be fractional.
|
|
7
|
+
*/
|
|
3
8
|
export default function calculateDynamicBlocks(model: Base1DViewModel, padding?: boolean, elision?: boolean): BlockSet;
|
|
@@ -1,104 +1,107 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { BlockSet } from './blockTypes.js';
|
|
2
|
+
import { intersection2 } from './range.js';
|
|
3
|
+
/**
|
|
4
|
+
* Returns a BlockSet covering only the regions currently visible in the view.
|
|
5
|
+
* Used by tracks where static blocks are not feasible. start/end/offsetPx may
|
|
6
|
+
* be fractional.
|
|
7
|
+
*/
|
|
5
8
|
export default function calculateDynamicBlocks(model, padding = true, elision = true) {
|
|
6
|
-
const { offsetPx, displayedRegions, bpPerPx, width, minimumBlockWidth
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
9
|
+
const { offsetPx, displayedRegions, bpPerPx, width, minimumBlockWidth } = model;
|
|
10
|
+
// A zero-width view yields an empty BlockSet: intersection2 rejects the
|
|
11
|
+
// degenerate window, so the loop pushes nothing. Mirrors calculateStaticBlocks
|
|
12
|
+
// rather than throwing inside what callers read as a MobX computed.
|
|
10
13
|
const invBpPerPx = 1 / bpPerPx;
|
|
11
14
|
const blocks = new BlockSet();
|
|
12
15
|
let displayedRegionLeftPx = 0;
|
|
13
16
|
const windowLeftPx = offsetPx;
|
|
14
17
|
const windowRightPx = windowLeftPx + width;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
18
|
+
const lastRegionIndex = displayedRegions.length - 1;
|
|
19
|
+
for (let displayedRegionIndex = 0; displayedRegionIndex < displayedRegions.length; displayedRegionIndex++) {
|
|
20
|
+
// see calculateStaticBlocks: regions are laid out left to right, so nothing
|
|
21
|
+
// past the window's right edge can intersect it
|
|
22
|
+
if (displayedRegionLeftPx > windowRightPx) {
|
|
23
|
+
break;
|
|
24
|
+
}
|
|
25
|
+
const region = displayedRegions[displayedRegionIndex];
|
|
26
|
+
const { start: regionStart, end: regionEnd, reversed } = region;
|
|
19
27
|
const regionWidthPx = (regionEnd - regionStart) * invBpPerPx;
|
|
20
|
-
const
|
|
28
|
+
const displayedRegionRightPx = displayedRegionLeftPx + regionWidthPx;
|
|
21
29
|
const [leftPx, rightPx] = intersection2(windowLeftPx, windowRightPx, displayedRegionLeftPx, displayedRegionRightPx);
|
|
22
30
|
if (leftPx !== undefined && rightPx !== undefined) {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
start = (leftPx - displayedRegionLeftPx) * bpPerPx + regionStart;
|
|
37
|
-
end = Math.min(regionEnd, (rightPx - displayedRegionLeftPx) * bpPerPx + regionStart);
|
|
38
|
-
isLeftEndOfDisplayedRegion = start === regionStart;
|
|
39
|
-
isRightEndOfDisplayedRegion = end === regionEnd;
|
|
40
|
-
blockOffsetPx =
|
|
41
|
-
displayedRegionLeftPx + (start - regionStart) * invBpPerPx;
|
|
42
|
-
}
|
|
31
|
+
// bp spanned between the region's left edge and the clipped block edges
|
|
32
|
+
const leftBp = (leftPx - displayedRegionLeftPx) * bpPerPx;
|
|
33
|
+
const rightBp = (rightPx - displayedRegionLeftPx) * bpPerPx;
|
|
34
|
+
const start = reversed
|
|
35
|
+
? Math.max(regionStart, regionEnd - rightBp)
|
|
36
|
+
: regionStart + leftBp;
|
|
37
|
+
const end = reversed
|
|
38
|
+
? regionEnd - leftBp
|
|
39
|
+
: Math.min(regionEnd, regionStart + rightBp);
|
|
40
|
+
// both reversed/forward offset formulae reduce algebraically to leftPx
|
|
41
|
+
const blockOffsetPx = leftPx;
|
|
43
42
|
const widthPx = (end - start) * invBpPerPx;
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
43
|
+
// Under minimumBlockWidth this region is elided, and BlockSet merges an
|
|
44
|
+
// elided block into a preceding elided run keeping only its widthPx — so
|
|
45
|
+
// building the key and the block object is work thrown away, which at
|
|
46
|
+
// whole-genome zoom on a fragmented assembly is nearly every region and
|
|
47
|
+
// most of the frame. Two edges keep the skip output-identical: the first
|
|
48
|
+
// region can never take it, because nothing has been pushed for the run
|
|
49
|
+
// to merge into, so its leading padding block still gets built; the last
|
|
50
|
+
// region is held out, because it may still owe a trailing padding block
|
|
51
|
+
// keyed off its own key.
|
|
52
|
+
const merged = elision &&
|
|
53
|
+
regionWidthPx < minimumBlockWidth &&
|
|
54
|
+
displayedRegionIndex !== lastRegionIndex &&
|
|
55
|
+
blocks.growElidedRun(widthPx);
|
|
56
|
+
if (!merged) {
|
|
57
|
+
const { assemblyName, refName } = region;
|
|
58
|
+
// Pixel comparisons avoid the bpPerPx round-trip float drift that can
|
|
59
|
+
// make end !== regionEnd even when the full region is in view.
|
|
60
|
+
const isLeftEndOfDisplayedRegion = leftPx <= displayedRegionLeftPx;
|
|
61
|
+
const isRightEndOfDisplayedRegion = rightPx >= displayedRegionRightPx;
|
|
62
|
+
const key = `${assemblyName}:${refName}:${start}:${end}:${displayedRegionIndex}${reversed ? ':rev' : ''}`;
|
|
63
|
+
if (padding &&
|
|
64
|
+
displayedRegionIndex === 0 &&
|
|
65
|
+
isLeftEndOfDisplayedRegion) {
|
|
66
|
+
blocks.push({
|
|
67
|
+
type: 'InterRegionPaddingBlock',
|
|
68
|
+
key: `${key}-beforeFirstRegion`,
|
|
69
|
+
widthPx: -offsetPx,
|
|
70
|
+
offsetPx: blockOffsetPx + offsetPx,
|
|
71
|
+
variant: 'boundary',
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
const data = {
|
|
57
75
|
assemblyName,
|
|
58
76
|
refName,
|
|
59
77
|
start,
|
|
60
78
|
end,
|
|
61
79
|
reversed,
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
regionNumber < displayedRegions.length - 1) {
|
|
82
|
-
blocks.push(new InterRegionPaddingBlock({
|
|
83
|
-
key: `${blockData.key}-rightpad`,
|
|
84
|
-
widthPx: interRegionPaddingWidth,
|
|
85
|
-
offsetPx: blockData.offsetPx + blockData.widthPx,
|
|
86
|
-
}));
|
|
87
|
-
displayedRegionLeftPx += interRegionPaddingWidth;
|
|
88
|
-
}
|
|
89
|
-
if (regionNumber === displayedRegions.length - 1 &&
|
|
90
|
-
blockData.isRightEndOfDisplayedRegion) {
|
|
91
|
-
blockOffsetPx = blockData.offsetPx + blockData.widthPx;
|
|
92
|
-
blocks.push(new InterRegionPaddingBlock({
|
|
93
|
-
key: `${blockData.key}-afterLastRegion`,
|
|
94
|
-
widthPx: width - blockOffsetPx + offsetPx,
|
|
95
|
-
offsetPx: blockOffsetPx,
|
|
80
|
+
offsetPx: blockOffsetPx,
|
|
81
|
+
displayedRegionIndex,
|
|
82
|
+
widthPx,
|
|
83
|
+
isLeftEndOfDisplayedRegion,
|
|
84
|
+
isRightEndOfDisplayedRegion,
|
|
85
|
+
key,
|
|
86
|
+
};
|
|
87
|
+
blocks.push(elision && regionWidthPx < minimumBlockWidth
|
|
88
|
+
? { ...data, type: 'ElidedBlock' }
|
|
89
|
+
: { ...data, type: 'ContentBlock' });
|
|
90
|
+
if (padding &&
|
|
91
|
+
displayedRegionIndex === lastRegionIndex &&
|
|
92
|
+
isRightEndOfDisplayedRegion) {
|
|
93
|
+
const afterOffsetPx = blockOffsetPx + widthPx;
|
|
94
|
+
blocks.push({
|
|
95
|
+
type: 'InterRegionPaddingBlock',
|
|
96
|
+
key: `${key}-afterLastRegion`,
|
|
97
|
+
widthPx: width - afterOffsetPx + offsetPx,
|
|
98
|
+
offsetPx: afterOffsetPx,
|
|
96
99
|
variant: 'boundary',
|
|
97
|
-
})
|
|
100
|
+
});
|
|
98
101
|
}
|
|
99
102
|
}
|
|
100
103
|
}
|
|
101
|
-
displayedRegionLeftPx +=
|
|
104
|
+
displayedRegionLeftPx += regionWidthPx;
|
|
102
105
|
}
|
|
103
106
|
return blocks;
|
|
104
107
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BlockSet } from './blockTypes.ts';
|
|
2
|
-
import type { Region } from './types/
|
|
2
|
+
import type { Region } from './types/data.ts';
|
|
3
3
|
import type { Region as RegionModel } from './types/mst.ts';
|
|
4
4
|
import type { Instance } from '@jbrowse/mobx-state-tree';
|
|
5
5
|
export interface Base1DViewModel {
|
|
@@ -8,6 +8,5 @@ export interface Base1DViewModel {
|
|
|
8
8
|
displayedRegions: (Region | Instance<typeof RegionModel>)[];
|
|
9
9
|
bpPerPx: number;
|
|
10
10
|
minimumBlockWidth: number;
|
|
11
|
-
interRegionPaddingWidth: number;
|
|
12
11
|
}
|
|
13
|
-
export default function calculateStaticBlocks(model: Base1DViewModel, padding?: boolean, elision?: boolean
|
|
12
|
+
export default function calculateStaticBlocks(model: Base1DViewModel, padding?: boolean, elision?: boolean): BlockSet;
|