@jbrowse/core 4.3.0 → 5.0.0-beta.1
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 +783 -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 +40 -40
- package/esm/PluginLoader.js +166 -82
- package/esm/PluginManager.d.ts +368 -55
- package/esm/PluginManager.js +326 -85
- 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 +84 -65
- 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/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 +154 -19
- package/esm/configuration/configurationSchema.js +359 -138
- 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 +326 -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 +120 -7
- package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.js +99 -27
- 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/getAdapterId.d.ts +2 -0
- package/esm/data_adapters/BaseAdapter/getAdapterId.js +9 -0
- package/esm/data_adapters/BaseAdapter/index.d.ts +6 -4
- package/esm/data_adapters/BaseAdapter/index.js +5 -5
- package/esm/data_adapters/BaseAdapter/stats.d.ts +5 -5
- package/esm/data_adapters/BaseAdapter/stats.js +48 -22
- package/esm/data_adapters/BaseAdapter/types.d.ts +10 -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 +10 -0
- package/esm/pluggableElementTypes/DisplayType.js +14 -1
- 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 +2 -1
- package/esm/pluggableElementTypes/ViewType.js +9 -2
- 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 +68 -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 +605 -84
- package/esm/pluggableElementTypes/models/BaseDisplayModel.js +172 -64
- package/esm/pluggableElementTypes/models/BaseTrackModel.d.ts +195 -35
- package/esm/pluggableElementTypes/models/BaseTrackModel.js +332 -85
- package/esm/pluggableElementTypes/models/BaseViewModel.d.ts +167 -16
- package/esm/pluggableElementTypes/models/BaseViewModel.js +111 -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 +174 -0
- package/esm/pluggableElementTypes/models/assertDisplayContract.js +246 -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 +265 -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 +49 -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 +2 -5
- package/esm/rpc/coreRpcMethods.js +9 -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/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 +136 -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 +368 -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 +9 -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 +124 -4
- package/esm/ui/MenuTypes.js +13 -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 +85 -0
- package/esm/ui/PaletteContext.js +104 -0
- package/esm/ui/PinAdornment.d.ts +5 -0
- package/esm/ui/PinAdornment.js +79 -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 +36 -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 +89 -0
- package/esm/ui/promotablePinCoverage.d.ts +44 -0
- package/esm/ui/promotablePinCoverage.js +87 -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 +44 -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 +23 -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/applyInitSettings.d.ts +79 -0
- package/esm/util/applyInitSettings.js +91 -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 +52 -0
- package/esm/util/cacheBudgets.js +52 -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 +117 -0
- package/esm/util/createStopTokenRotation.js +147 -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 +160 -0
- package/esm/util/hooks.js +416 -0
- package/esm/util/htmlText.d.ts +13 -0
- package/esm/util/htmlText.js +66 -0
- package/esm/util/idMaker.d.ts +1 -1
- package/esm/util/idMaker.js +31 -18
- package/esm/util/index.d.ts +82 -268
- package/esm/util/index.js +136 -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 +194 -0
- package/esm/util/installFetch.js +178 -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/leadingEdgeAutorun.d.ts +40 -0
- package/esm/util/leadingEdgeAutorun.js +51 -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 +89 -0
- package/esm/util/mstUtils.js +122 -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 +113 -0
- package/esm/util/pluginStore.js +253 -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 +42 -1
- package/esm/util/range.js +59 -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 +14 -1
- package/esm/util/rxjs.js +39 -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 +120 -0
- package/esm/util/tabix.js +143 -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 +350 -30
- package/esm/util/tracks.js +574 -192
- 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 +358 -119
- package/esm/util/types/index.js +87 -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/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 +58 -0
- package/esm/util/viewStatus.js +20 -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 +27 -0
- package/esm/util/whenViewSettled.js +28 -0
- package/esm/util/withFeatureDetails.d.ts +34 -0
- package/esm/util/withFeatureDetails.js +59 -0
- package/package.json +240 -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
package/esm/util/blockTypes.js
CHANGED
|
@@ -1,32 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A content block as a region that addresses whole bases.
|
|
3
|
+
*
|
|
4
|
+
* `calculateDynamicBlocks` says in its own docstring that start/end may be
|
|
5
|
+
* FRACTIONAL — a block is a span of screen, and the view is only at a whole
|
|
6
|
+
* base when the pan and the zoom both happen to land there. Anything naming
|
|
7
|
+
* bases rather than pixels needs this: a sequence fetch, a bookmark, and above
|
|
8
|
+
* all a locString, since `BP_QUANTITY_SOURCE` rejects a bare fractional
|
|
9
|
+
* coordinate on purpose ("a bare '1.5' as a coordinate is a mistake").
|
|
10
|
+
*
|
|
11
|
+
* `reversed` is dropped with the pixels. It orients a projection, and a region
|
|
12
|
+
* that has left the screen is not being projected; carrying it only reached
|
|
13
|
+
* `assembleLocString`, which spells it `[rev]` in a field the user is about to
|
|
14
|
+
* read.
|
|
15
|
+
*/
|
|
16
|
+
export function wholeBaseRegion(block) {
|
|
17
|
+
return {
|
|
18
|
+
assemblyName: block.assemblyName,
|
|
19
|
+
refName: block.refName,
|
|
20
|
+
start: Math.floor(block.start),
|
|
21
|
+
end: Math.ceil(block.end),
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
export function wholeBaseRegions(blocks) {
|
|
25
|
+
return blocks.map(wholeBaseRegion);
|
|
26
|
+
}
|
|
27
|
+
// A merged elided run can span several displayed regions, so its per-region
|
|
28
|
+
// identity is meaningless: refName/start/end are cleared and only widthPx stays
|
|
29
|
+
// valid. The leftover key, assemblyName, displayedRegionIndex,
|
|
30
|
+
// isRightEndOfDisplayedRegion belong to the FIRST sub-block — don't key off them
|
|
31
|
+
// for an ElidedBlock.
|
|
32
|
+
function mergeElided(run, widthPx) {
|
|
33
|
+
run.refName = '';
|
|
34
|
+
run.start = 0;
|
|
35
|
+
run.end = 0;
|
|
36
|
+
run.widthPx += widthPx;
|
|
37
|
+
}
|
|
1
38
|
export class BlockSet {
|
|
2
39
|
blocks;
|
|
3
40
|
constructor(blocks = []) {
|
|
4
41
|
this.blocks = blocks;
|
|
5
42
|
}
|
|
6
|
-
*[Symbol.iterator]() {
|
|
7
|
-
yield* this.blocks;
|
|
8
|
-
}
|
|
9
43
|
push(block) {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
44
|
+
const last = this.blocks.at(-1);
|
|
45
|
+
if (block.type === 'ElidedBlock' && last?.type === 'ElidedBlock') {
|
|
46
|
+
mergeElided(last, block.widthPx);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
this.blocks.push(block);
|
|
17
50
|
}
|
|
18
|
-
this.blocks.push(block);
|
|
19
|
-
}
|
|
20
|
-
getBlocks() {
|
|
21
|
-
return this.blocks;
|
|
22
51
|
}
|
|
23
|
-
|
|
24
|
-
|
|
52
|
+
/**
|
|
53
|
+
* Widen a trailing elided run by widthPx, reporting whether there was one to
|
|
54
|
+
* widen. `push` keeps nothing but the width off an ElidedBlock it merges, so
|
|
55
|
+
* a caller holding the width can skip building the block that would have
|
|
56
|
+
* carried it — which at whole-genome zoom is nearly every region, see
|
|
57
|
+
* calculateDynamicBlocks.
|
|
58
|
+
*/
|
|
59
|
+
growElidedRun(widthPx) {
|
|
60
|
+
const last = this.blocks.at(-1);
|
|
61
|
+
if (last?.type !== 'ElidedBlock') {
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
mergeElided(last, widthPx);
|
|
65
|
+
return true;
|
|
25
66
|
}
|
|
26
67
|
map(func, thisarg) {
|
|
68
|
+
// deliberately mirrors Array#map's (callback, thisArg) signature
|
|
69
|
+
// eslint-disable-next-line unicorn/no-array-method-this-argument
|
|
27
70
|
return this.blocks.map(func, thisarg);
|
|
28
71
|
}
|
|
29
72
|
forEach(func, thisarg) {
|
|
73
|
+
// deliberately mirrors Array#forEach's (callback, thisArg) signature
|
|
74
|
+
// eslint-disable-next-line unicorn/no-array-method-this-argument
|
|
30
75
|
this.blocks.forEach(func, thisarg);
|
|
31
76
|
}
|
|
32
77
|
get length() {
|
|
@@ -52,68 +97,16 @@ export class BlockSet {
|
|
|
52
97
|
return this.blocks.length > 0 ? this.blocks[0].offsetPx : 0;
|
|
53
98
|
}
|
|
54
99
|
get contentBlocks() {
|
|
55
|
-
return this.blocks.filter(block => block.type === 'ContentBlock');
|
|
100
|
+
return this.blocks.filter((block) => block.type === 'ContentBlock');
|
|
56
101
|
}
|
|
57
102
|
get totalBp() {
|
|
58
103
|
let total = 0;
|
|
59
|
-
for (let i = 0, l = this.
|
|
60
|
-
const b = this.
|
|
61
|
-
|
|
104
|
+
for (let i = 0, l = this.blocks.length; i < l; i++) {
|
|
105
|
+
const b = this.blocks[i];
|
|
106
|
+
if (b.type === 'ContentBlock') {
|
|
107
|
+
total += b.end - b.start;
|
|
108
|
+
}
|
|
62
109
|
}
|
|
63
110
|
return total;
|
|
64
111
|
}
|
|
65
112
|
}
|
|
66
|
-
export class BaseBlock {
|
|
67
|
-
type = 'BaseBlock';
|
|
68
|
-
regionNumber;
|
|
69
|
-
reversed;
|
|
70
|
-
refName;
|
|
71
|
-
start;
|
|
72
|
-
end;
|
|
73
|
-
assemblyName;
|
|
74
|
-
key;
|
|
75
|
-
offsetPx;
|
|
76
|
-
widthPx = 0;
|
|
77
|
-
variant;
|
|
78
|
-
isLeftEndOfDisplayedRegion;
|
|
79
|
-
constructor(data) {
|
|
80
|
-
Object.assign(this, data);
|
|
81
|
-
this.assemblyName = data.assemblyName;
|
|
82
|
-
this.refName = data.refName;
|
|
83
|
-
this.start = data.start;
|
|
84
|
-
this.end = data.end;
|
|
85
|
-
this.key = data.key;
|
|
86
|
-
this.offsetPx = data.offsetPx;
|
|
87
|
-
}
|
|
88
|
-
toRegion() {
|
|
89
|
-
return {
|
|
90
|
-
refName: this.refName,
|
|
91
|
-
start: this.start,
|
|
92
|
-
end: this.end,
|
|
93
|
-
assemblyName: this.assemblyName,
|
|
94
|
-
reversed: this.reversed,
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
export class ContentBlock extends BaseBlock {
|
|
99
|
-
type = 'ContentBlock';
|
|
100
|
-
}
|
|
101
|
-
export class ElidedBlock extends BaseBlock {
|
|
102
|
-
type = 'ElidedBlock';
|
|
103
|
-
widthPx;
|
|
104
|
-
elidedBlockCount = 0;
|
|
105
|
-
constructor(data) {
|
|
106
|
-
super(data);
|
|
107
|
-
this.widthPx = data.widthPx;
|
|
108
|
-
}
|
|
109
|
-
push(otherBlock) {
|
|
110
|
-
this.elidedBlockCount += 1;
|
|
111
|
-
this.refName = '';
|
|
112
|
-
this.start = 0;
|
|
113
|
-
this.end = 0;
|
|
114
|
-
this.widthPx += otherBlock.widthPx;
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
export class InterRegionPaddingBlock extends BaseBlock {
|
|
118
|
-
type = 'InterRegionPaddingBlock';
|
|
119
|
-
}
|
|
@@ -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,52 @@
|
|
|
1
|
+
import { SharedBudget } from '@gmod/shared-read-cache';
|
|
2
|
+
/**
|
|
3
|
+
* Ceilings on what the indexed-format libraries retain, shared by every adapter
|
|
4
|
+
* in this JS context — so one per RPC worker, plus one on the main thread,
|
|
5
|
+
* which is the scope that actually runs out of memory.
|
|
6
|
+
*
|
|
7
|
+
* ## Why these are 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 numbers are not new
|
|
33
|
+
*
|
|
34
|
+
* Both are the libraries' own per-file defaults, moved from per-file to
|
|
35
|
+
* per-context. That makes this a strict tightening — retention can only fall —
|
|
36
|
+
* and avoids inventing a number that would need its own justification. The
|
|
37
|
+
* budget still has to clear one query's working set or the cliff returns, and
|
|
38
|
+
* on that workload 512 MB shared across three tracks already cost 43 refills
|
|
39
|
+
* where 1 GB cost 4.
|
|
40
|
+
*
|
|
41
|
+
* ## Two budgets, because units cannot mix
|
|
42
|
+
*
|
|
43
|
+
* `SharedBudget.total` is a sum over its members, so they must all weigh in the
|
|
44
|
+
* same unit. `@gmod/bam` and `@gmod/tabix` weigh decompressed bytes;
|
|
45
|
+
* `@gmod/cram` weighs decoded records, because a decoded record has no cheap
|
|
46
|
+
* size. A single budget spanning them would add records to bytes and bound
|
|
47
|
+
* neither. `sizeOf` is opaque, so nothing can catch that at runtime — hence two
|
|
48
|
+
* budgets named for their units.
|
|
49
|
+
*/
|
|
50
|
+
export declare const decompressedBytesBudget: SharedBudget;
|
|
51
|
+
/** See {@link decompressedBytesBudget}. Records, not bytes — CRAM only. */
|
|
52
|
+
export declare const decodedRecordsBudget: SharedBudget;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { SharedBudget } from '@gmod/shared-read-cache';
|
|
2
|
+
/**
|
|
3
|
+
* Ceilings on what the indexed-format libraries retain, shared by every adapter
|
|
4
|
+
* in this JS context — so one per RPC worker, plus one on the main thread,
|
|
5
|
+
* which is the scope that actually runs out of memory.
|
|
6
|
+
*
|
|
7
|
+
* ## Why these are 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 numbers are not new
|
|
33
|
+
*
|
|
34
|
+
* Both are the libraries' own per-file defaults, moved from per-file to
|
|
35
|
+
* per-context. That makes this a strict tightening — retention can only fall —
|
|
36
|
+
* and avoids inventing a number that would need its own justification. The
|
|
37
|
+
* budget still has to clear one query's working set or the cliff returns, and
|
|
38
|
+
* on that workload 512 MB shared across three tracks already cost 43 refills
|
|
39
|
+
* where 1 GB cost 4.
|
|
40
|
+
*
|
|
41
|
+
* ## Two budgets, because units cannot mix
|
|
42
|
+
*
|
|
43
|
+
* `SharedBudget.total` is a sum over its members, so they must all weigh in the
|
|
44
|
+
* same unit. `@gmod/bam` and `@gmod/tabix` weigh decompressed bytes;
|
|
45
|
+
* `@gmod/cram` weighs decoded records, because a decoded record has no cheap
|
|
46
|
+
* size. A single budget spanning them would add records to bytes and bound
|
|
47
|
+
* neither. `sizeOf` is opaque, so nothing can catch that at runtime — hence two
|
|
48
|
+
* budgets named for their units.
|
|
49
|
+
*/
|
|
50
|
+
export const decompressedBytesBudget = new SharedBudget(1024 * 2 ** 20);
|
|
51
|
+
/** See {@link decompressedBytesBudget}. Records, not bytes — CRAM only. */
|
|
52
|
+
export const decodedRecordsBudget = new SharedBudget(1_000_000);
|
|
@@ -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;
|