@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
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { cmpStr } from './cmpStr.js';
|
|
2
|
+
import { createProgressReporter } from './progress.js';
|
|
3
|
+
import { checkStopToken } from './stopToken.js';
|
|
4
|
+
// A strand vote at least this lopsided (80% of aligned bases agreeing) decides
|
|
5
|
+
// the reversal by itself. Below that the vote is unreliable: a chromosome
|
|
6
|
+
// carrying many inversions splits it near 50/50, and MCScan `strand` is the
|
|
7
|
+
// product of two gene strands rather than a block orientation. The ref-vs-query
|
|
8
|
+
// position covariance then decides instead, which is the question reversal is
|
|
9
|
+
// actually trying to answer (does the panel read monotonically along the
|
|
10
|
+
// reference).
|
|
11
|
+
const decisiveStrandFraction = 0.6;
|
|
12
|
+
// Position along the anchor reference chromosome, and whether the query
|
|
13
|
+
// chromosome should be displayed reversed.
|
|
14
|
+
//
|
|
15
|
+
// Summing in a fixed intra-pair order is what makes the result deterministic:
|
|
16
|
+
// the synteny worker emits alignments in nondeterministic order (features from
|
|
17
|
+
// concurrently-resolved blocks are concatenated by arrival, not position) and
|
|
18
|
+
// float addition is non-associative, so a varying order would perturb these sums
|
|
19
|
+
// in their low bits and could flip the query-chromosome ordering on a near-tie.
|
|
20
|
+
// Only intra-pair order matters, since every sum here is over one pair.
|
|
21
|
+
function anchorStats({ alignments, bases, strandWeightedSum }) {
|
|
22
|
+
alignments.sort((a, b) => a.refStart - b.refStart ||
|
|
23
|
+
a.queryStart - b.queryStart ||
|
|
24
|
+
a.refEnd - b.refEnd ||
|
|
25
|
+
a.queryEnd - b.queryEnd);
|
|
26
|
+
// x-axis (reference) length weights everything: consistent weighting for
|
|
27
|
+
// x-axis position and base count, matching the original jmonlong R
|
|
28
|
+
// implementation
|
|
29
|
+
let refPosSum = 0;
|
|
30
|
+
let queryPosSum = 0;
|
|
31
|
+
for (const aln of alignments) {
|
|
32
|
+
const alnLength = aln.refEnd - aln.refStart;
|
|
33
|
+
refPosSum += ((aln.refStart + aln.refEnd) / 2) * alnLength;
|
|
34
|
+
queryPosSum += ((aln.queryStart + aln.queryEnd) / 2) * alnLength;
|
|
35
|
+
}
|
|
36
|
+
const refMean = refPosSum / bases;
|
|
37
|
+
const queryMean = queryPosSum / bases;
|
|
38
|
+
// length-weighted covariance of the two axes' positions, centered on the means
|
|
39
|
+
// so it stays precise at genomic magnitudes. Negative means the query runs
|
|
40
|
+
// antiparallel to the reference.
|
|
41
|
+
let covariance = 0;
|
|
42
|
+
for (const aln of alignments) {
|
|
43
|
+
covariance +=
|
|
44
|
+
(aln.refEnd - aln.refStart) *
|
|
45
|
+
((aln.refStart + aln.refEnd) / 2 - refMean) *
|
|
46
|
+
((aln.queryStart + aln.queryEnd) / 2 - queryMean);
|
|
47
|
+
}
|
|
48
|
+
const strandFraction = strandWeightedSum / bases;
|
|
49
|
+
return {
|
|
50
|
+
bestRefPos: refMean,
|
|
51
|
+
shouldReverse: Math.abs(strandFraction) > decisiveStrandFraction || covariance === 0
|
|
52
|
+
? strandFraction < 0
|
|
53
|
+
: covariance < 0,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
// Groups alignments by vertical-axis (query) chromosome, accumulates total
|
|
57
|
+
// aligned bases and strand per (query, reference) pair. Selects the reference
|
|
58
|
+
// chromosome with the most aligned bases as the anchor, then sorts query
|
|
59
|
+
// chromosomes to follow that reference's order, reversing a query chromosome
|
|
60
|
+
// that runs antiparallel to its anchor.
|
|
61
|
+
//
|
|
62
|
+
// - refRefName: horizontal-axis (reference) chromosome
|
|
63
|
+
// - queryRefName: vertical-axis (query) chromosome
|
|
64
|
+
export async function diagonalizeRegions(alignments, referenceRegions, currentRegions, { stopToken, statusCallback, } = {}) {
|
|
65
|
+
// Both passes below are long enough to notice on a whole-genome alignment —
|
|
66
|
+
// the grouping walks every alignment, and the ordering pass sorts each query
|
|
67
|
+
// chromosome's group. They used to share a single cancel check between them,
|
|
68
|
+
// so the whole grouping pass ran after a cancel and the bar sat on the
|
|
69
|
+
// fetch's last message throughout. Two reporters because the phases count
|
|
70
|
+
// different things (alignments, then chromosomes), so one auto-incrementing
|
|
71
|
+
// counter across both would report a meaningless fraction.
|
|
72
|
+
const reportGrouping = createProgressReporter({
|
|
73
|
+
label: 'Grouping alignments',
|
|
74
|
+
total: alignments.length,
|
|
75
|
+
statusCallback,
|
|
76
|
+
stopToken,
|
|
77
|
+
});
|
|
78
|
+
// first appearance wins: a refName can appear in more than one reference
|
|
79
|
+
// region, and the ordering key is where that chromosome starts on the axis
|
|
80
|
+
const refOrder = new Map();
|
|
81
|
+
for (const [i, region] of referenceRegions.entries()) {
|
|
82
|
+
if (!refOrder.has(region.refName)) {
|
|
83
|
+
refOrder.set(region.refName, i);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
// outer key: vertical chrom; inner key: horizontal chrom. Alignments to a
|
|
87
|
+
// reference chromosome the axis does not display are skipped: they can supply
|
|
88
|
+
// neither an ordering index nor a comparable position.
|
|
89
|
+
const queryGroups = new Map();
|
|
90
|
+
for (const aln of alignments) {
|
|
91
|
+
reportGrouping();
|
|
92
|
+
const refIndex = refOrder.get(aln.refRefName);
|
|
93
|
+
if (refIndex !== undefined) {
|
|
94
|
+
let group = queryGroups.get(aln.queryRefName);
|
|
95
|
+
if (!group) {
|
|
96
|
+
group = new Map();
|
|
97
|
+
queryGroups.set(aln.queryRefName, group);
|
|
98
|
+
}
|
|
99
|
+
let data = group.get(aln.refRefName);
|
|
100
|
+
if (!data) {
|
|
101
|
+
data = {
|
|
102
|
+
refName: aln.refRefName,
|
|
103
|
+
refIndex,
|
|
104
|
+
bases: 0,
|
|
105
|
+
strandWeightedSum: 0,
|
|
106
|
+
alignments: [],
|
|
107
|
+
};
|
|
108
|
+
group.set(aln.refRefName, data);
|
|
109
|
+
}
|
|
110
|
+
const alnLength = aln.refEnd - aln.refStart;
|
|
111
|
+
data.bases += alnLength;
|
|
112
|
+
data.strandWeightedSum += (aln.strand >= 0 ? 1 : -1) * alnLength;
|
|
113
|
+
data.alignments.push(aln);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
const queryOrdering = [];
|
|
117
|
+
const reportOrdering = createProgressReporter({
|
|
118
|
+
label: 'Ordering chromosomes',
|
|
119
|
+
total: queryGroups.size,
|
|
120
|
+
statusCallback,
|
|
121
|
+
stopToken,
|
|
122
|
+
});
|
|
123
|
+
for (const [verticalChrom, group] of queryGroups) {
|
|
124
|
+
reportOrdering();
|
|
125
|
+
let best;
|
|
126
|
+
for (const data of group.values()) {
|
|
127
|
+
// the refName tiebreak is explicit because Map iteration follows insertion
|
|
128
|
+
// order, which follows the order alignments arrived in
|
|
129
|
+
if (!best ||
|
|
130
|
+
data.bases > best.bases ||
|
|
131
|
+
(data.bases === best.bases && cmpStr(data.refName, best.refName) < 0)) {
|
|
132
|
+
best = data;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
// bases === 0 means every alignment was zero-length, leaving no position to
|
|
136
|
+
// order by, so such a chromosome joins the unaligned tail below
|
|
137
|
+
if (best !== undefined && best.bases > 0) {
|
|
138
|
+
queryOrdering.push({
|
|
139
|
+
refName: verticalChrom,
|
|
140
|
+
bestRefIndex: best.refIndex,
|
|
141
|
+
...anchorStats(best),
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
checkStopToken(stopToken);
|
|
146
|
+
queryOrdering.sort((a, b) => a.bestRefIndex - b.bestRefIndex ||
|
|
147
|
+
a.bestRefPos - b.bestRefPos ||
|
|
148
|
+
cmpStr(a.refName, b.refName));
|
|
149
|
+
// group by refName: a refName can appear in more than one region (e.g. a
|
|
150
|
+
// chromosome displayed in multiple regions), and all of them move together
|
|
151
|
+
const regionsByName = new Map();
|
|
152
|
+
for (const region of currentRegions) {
|
|
153
|
+
let group = regionsByName.get(region.refName);
|
|
154
|
+
if (!group) {
|
|
155
|
+
group = [];
|
|
156
|
+
regionsByName.set(region.refName, group);
|
|
157
|
+
}
|
|
158
|
+
group.push(region);
|
|
159
|
+
}
|
|
160
|
+
const orderedNames = new Set(queryOrdering.map(q => q.refName));
|
|
161
|
+
const newQueryRegions = [];
|
|
162
|
+
let regionsReversed = 0;
|
|
163
|
+
for (const { refName, shouldReverse } of queryOrdering) {
|
|
164
|
+
for (const region of regionsByName.get(refName) ?? []) {
|
|
165
|
+
newQueryRegions.push({ ...region, reversed: shouldReverse });
|
|
166
|
+
if (shouldReverse !== (region.reversed ?? false)) {
|
|
167
|
+
regionsReversed++;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
// Regions with no alignments are appended after the ordered ones
|
|
172
|
+
const regionsWithoutAlignments = currentRegions.filter(r => !orderedNames.has(r.refName));
|
|
173
|
+
// Count how many regions ended up at a different position than they started
|
|
174
|
+
// (within the subset that participated in the ordering — unaligned regions
|
|
175
|
+
// keep their tail position and aren't counted as moves).
|
|
176
|
+
const previousOrder = currentRegions
|
|
177
|
+
.map(r => r.refName)
|
|
178
|
+
.filter(name => orderedNames.has(name));
|
|
179
|
+
let regionsReordered = 0;
|
|
180
|
+
for (let i = 0; i < newQueryRegions.length; i++) {
|
|
181
|
+
if (newQueryRegions[i].refName !== previousOrder[i]) {
|
|
182
|
+
regionsReordered++;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
return {
|
|
186
|
+
newRegions: [...newQueryRegions, ...regionsWithoutAlignments],
|
|
187
|
+
stats: {
|
|
188
|
+
regionsReordered,
|
|
189
|
+
regionsReversed,
|
|
190
|
+
},
|
|
191
|
+
};
|
|
192
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare const isElectron: boolean;
|
|
2
|
+
export declare const isNode: boolean;
|
|
3
|
+
export declare function indexedDBAvailable(): boolean;
|
|
4
|
+
export declare const rIC: ((cb: () => void) => void) | (((callback: IdleRequestCallback, options?: IdleRequestOptions) => number) & typeof requestIdleCallback);
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// Which JS environment we are running in, plus the idle-callback shim that
|
|
2
|
+
// depends on it. Deliberately dependency-free and separate from the `util`
|
|
3
|
+
// barrel: `util/io` needs `isElectron`/`isNode`, and importing them from the
|
|
4
|
+
// barrel dragged the whole of `@jbrowse/core/util` — MST, the configuration
|
|
5
|
+
// system, MUI — into anything that opened a file.
|
|
6
|
+
export const isElectron = /electron/i.test(typeof navigator !== 'undefined' ? navigator.userAgent : '');
|
|
7
|
+
// equivalent to the `detect-node` package: true only inside a real Node.js
|
|
8
|
+
// process, not in browsers where `process` may be polyfilled by the bundler
|
|
9
|
+
// (the toString brand is '[object process]' only for the genuine global).
|
|
10
|
+
// `process` isn't in core's browser-targeted build lib, so read it off
|
|
11
|
+
// globalThis rather than referencing the bare global
|
|
12
|
+
export const isNode = Object.prototype.toString.call(globalThis.process) === '[object process]';
|
|
13
|
+
// Whether there is an IndexedDB to open. The two callers gate on it rather than
|
|
14
|
+
// catching, so the absence stays silent: opening it anyway throws a
|
|
15
|
+
// ReferenceError that reads like a real failure, and that is the reason every
|
|
16
|
+
// test run had to filter "indexedDB" out of console.error wholesale.
|
|
17
|
+
//
|
|
18
|
+
// Guarded like the Web Storage globals (see util/webStorage.ts): a bare
|
|
19
|
+
// `typeof indexedDB` invokes the same getter, which throws rather than answering
|
|
20
|
+
// in a cross-origin iframe with third-party storage blocked. So the probe that
|
|
21
|
+
// exists to avoid a throw was itself the throw, in the one environment where it
|
|
22
|
+
// matters — an embedded product on someone else's page.
|
|
23
|
+
export function indexedDBAvailable() {
|
|
24
|
+
try {
|
|
25
|
+
return typeof indexedDB !== 'undefined';
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
// the real idle callback where the realm has one, otherwise a short timeout.
|
|
32
|
+
// jsdom has neither, so tests install a synchronous shim
|
|
33
|
+
// (config/jest/requestIdleCallback.js) rather than this branching on the
|
|
34
|
+
// environment
|
|
35
|
+
export const rIC =
|
|
36
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
37
|
+
typeof window !== 'undefined' && window.requestIdleCallback
|
|
38
|
+
? window.requestIdleCallback
|
|
39
|
+
: (cb) => {
|
|
40
|
+
setTimeout(() => {
|
|
41
|
+
cb();
|
|
42
|
+
}, 1);
|
|
43
|
+
};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A mouse event's position in the coordinate space of the element the handler
|
|
3
|
+
* is bound to.
|
|
4
|
+
*
|
|
5
|
+
* Off `currentTarget`, so there is no ref to thread and no way to measure
|
|
6
|
+
* against an element other than the one that received the event — which is the
|
|
7
|
+
* mistake this replaces. Five display handlers spelled the same three lines out,
|
|
8
|
+
* in three spellings, and each was one edit from measuring against a box the
|
|
9
|
+
* pointer was not in.
|
|
10
|
+
*
|
|
11
|
+
* **Read it during the handler.** React clears `currentTarget` once the handler
|
|
12
|
+
* returns, so a deferred read (an rAF, a promise) measures `null`.
|
|
13
|
+
*
|
|
14
|
+
* Two neighbours do a deliberately different thing, and neither is a candidate
|
|
15
|
+
* for this:
|
|
16
|
+
*
|
|
17
|
+
* - `getRelativeX` measures against an element passed in, because a rubberband
|
|
18
|
+
* drag tracks the pointer across the whole document and the box it projects
|
|
19
|
+
* through is not whatever is under the cursor.
|
|
20
|
+
* - A display whose canvas is a borderless leaf element (the pileup) reads
|
|
21
|
+
* `offsetX`/`offsetY` off the native event, which is already this and costs no
|
|
22
|
+
* layout read. That only holds while nothing is drawn inside the element, so
|
|
23
|
+
* it is a fact about that canvas rather than a style to copy.
|
|
24
|
+
*/
|
|
25
|
+
export declare function eventPoint(event: {
|
|
26
|
+
clientX: number;
|
|
27
|
+
clientY: number;
|
|
28
|
+
currentTarget: Element;
|
|
29
|
+
}): {
|
|
30
|
+
x: number;
|
|
31
|
+
y: number;
|
|
32
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A mouse event's position in the coordinate space of the element the handler
|
|
3
|
+
* is bound to.
|
|
4
|
+
*
|
|
5
|
+
* Off `currentTarget`, so there is no ref to thread and no way to measure
|
|
6
|
+
* against an element other than the one that received the event — which is the
|
|
7
|
+
* mistake this replaces. Five display handlers spelled the same three lines out,
|
|
8
|
+
* in three spellings, and each was one edit from measuring against a box the
|
|
9
|
+
* pointer was not in.
|
|
10
|
+
*
|
|
11
|
+
* **Read it during the handler.** React clears `currentTarget` once the handler
|
|
12
|
+
* returns, so a deferred read (an rAF, a promise) measures `null`.
|
|
13
|
+
*
|
|
14
|
+
* Two neighbours do a deliberately different thing, and neither is a candidate
|
|
15
|
+
* for this:
|
|
16
|
+
*
|
|
17
|
+
* - `getRelativeX` measures against an element passed in, because a rubberband
|
|
18
|
+
* drag tracks the pointer across the whole document and the box it projects
|
|
19
|
+
* through is not whatever is under the cursor.
|
|
20
|
+
* - A display whose canvas is a borderless leaf element (the pileup) reads
|
|
21
|
+
* `offsetX`/`offsetY` off the native event, which is already this and costs no
|
|
22
|
+
* layout read. That only holds while nothing is drawn inside the element, so
|
|
23
|
+
* it is a fact about that canvas rather than a style to copy.
|
|
24
|
+
*/
|
|
25
|
+
export function eventPoint(event) {
|
|
26
|
+
const rect = event.currentTarget.getBoundingClientRect();
|
|
27
|
+
return { x: event.clientX - rect.left, y: event.clientY - rect.top };
|
|
28
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { BaseOptions } from '../data_adapters/BaseAdapter/index.ts';
|
|
2
|
+
import type { StatusPhase } from './progress.ts';
|
|
3
|
+
import type { GenericFilehandle } from 'generic-filehandle2';
|
|
4
|
+
export declare function isGzip(buf: Uint8Array): boolean;
|
|
5
|
+
export declare function fetchAndMaybeUnzip(loc: GenericFilehandle, opts?: BaseOptions, label?: string | StatusPhase): Promise<Uint8Array<ArrayBufferLike>>;
|
|
6
|
+
export declare function fetchAndMaybeUnzipText(loc: GenericFilehandle, opts?: BaseOptions, label?: string | StatusPhase): Promise<string>;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { redactSource } from './getLocationUri.js';
|
|
2
|
+
import { downloadStatus, phaseOf, updateStatus } from './progress.js';
|
|
3
|
+
import { withStopTokenSignal } from './stopToken.js';
|
|
4
|
+
export function isGzip(buf) {
|
|
5
|
+
return buf[0] === 31 && buf[1] === 139 && buf[2] === 8;
|
|
6
|
+
}
|
|
7
|
+
export async function fetchAndMaybeUnzip(loc, opts = {},
|
|
8
|
+
// what is being downloaded, for the loading UI. Defaulted rather than
|
|
9
|
+
// required because most callers are a track's one data file, where the track
|
|
10
|
+
// name is already on screen; name it wherever several files load at once
|
|
11
|
+
// behind a single indicator and "Downloading file" can't say which (the four
|
|
12
|
+
// parallel assembly loads, say). The URL is not the caller's to supply — see
|
|
13
|
+
// below
|
|
14
|
+
label = 'Downloading file') {
|
|
15
|
+
// statusCallback is passed through as-is rather than defaulted to a no-op, so
|
|
16
|
+
// that "nobody is listening" reaches the reader: downloadStatus then hands it
|
|
17
|
+
// no onProgress and generic-filehandle2 takes `res.bytes()` rather than its
|
|
18
|
+
// getReader loop.
|
|
19
|
+
//
|
|
20
|
+
// **That is not the faster path, and this comment used to say it was.** In a
|
|
21
|
+
// Chrome worker the loop is ~1.8x faster up to 10MB and only ~1.1x slower past
|
|
22
|
+
// ~25MB — agent-docs/measurements/download-read-path.json. What withholding it
|
|
23
|
+
// buys is that a caller who asked for no reporting gets none, here and in the
|
|
24
|
+
// worker alike; the read speed is a wash at best and against us at the sizes a
|
|
25
|
+
// whole-file load usually is.
|
|
26
|
+
// Where a stalled load gets the URL it names, and the reason no call site
|
|
27
|
+
// passes one: `loc` knows. Every filehandle `openLocation` builds carries the
|
|
28
|
+
// address it was constructed with (generic-filehandle2 2.4.0), so this is true
|
|
29
|
+
// of every download in the tree rather than of the handful that remembered to
|
|
30
|
+
// say so. A Blob and a FileHandle report nothing, which is right — their bytes
|
|
31
|
+
// came from the user and there is no server to go and check.
|
|
32
|
+
//
|
|
33
|
+
// Redacted here rather than at the source, because the handle's `source` is
|
|
34
|
+
// verbatim what it fetches (a presigned URL keeps its signature) and this is
|
|
35
|
+
// the layer that hands it to a display.
|
|
36
|
+
const phase = loc.source === undefined
|
|
37
|
+
? label
|
|
38
|
+
: { message: phaseOf(label), source: redactSource(loc.source) };
|
|
39
|
+
const { statusCallback, stopToken } = opts;
|
|
40
|
+
// the stop token becomes the read's signal, so a cancelled whole-file load
|
|
41
|
+
// drops at the socket rather than downloading a multi-GB body to completion
|
|
42
|
+
const buf = await withStopTokenSignal(stopToken, signal => downloadStatus(phase, statusCallback, onProgress => loc.readFile({ ...opts, onProgress, signal })));
|
|
43
|
+
// the inflater is imported dynamically because this module is reachable from
|
|
44
|
+
// the core/util barrel, so a static import put bgzf-filehandle + pako
|
|
45
|
+
// (~180KB) on the startup path of every page load; only an actually-gzipped
|
|
46
|
+
// file needs them
|
|
47
|
+
return isGzip(buf)
|
|
48
|
+
? await updateStatus('Unzipping', statusCallback, async () => {
|
|
49
|
+
const { unzip } = await import('@gmod/bgzf-filehandle');
|
|
50
|
+
return unzip(buf);
|
|
51
|
+
},
|
|
52
|
+
// a cancel landing here is otherwise discovered only by whatever parses
|
|
53
|
+
// the result, after a whole-file inflate has run to completion
|
|
54
|
+
stopToken)
|
|
55
|
+
: buf;
|
|
56
|
+
}
|
|
57
|
+
export async function fetchAndMaybeUnzipText(loc, opts, label) {
|
|
58
|
+
const buffer = await fetchAndMaybeUnzip(loc, opts, label);
|
|
59
|
+
// 512MB max chrome string length is 512MB
|
|
60
|
+
if (buffer.length > 536_870_888) {
|
|
61
|
+
throw new Error('Data exceeds maximum string length (512MB)');
|
|
62
|
+
}
|
|
63
|
+
return new TextDecoder('utf8', { fatal: true }).decode(buffer);
|
|
64
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import type { RpcCallArgs, RpcCallReturn } from '../rpc/RpcRegistry.ts';
|
|
2
|
+
import type { StatusCallback } from './progress.ts';
|
|
3
|
+
import type { StopToken } from './stopToken.ts';
|
|
4
|
+
import type { IStateTreeNode } from '@jbrowse/mobx-state-tree';
|
|
5
|
+
export interface FetchContext {
|
|
6
|
+
stopToken: StopToken;
|
|
7
|
+
isStale: () => boolean;
|
|
8
|
+
/**
|
|
9
|
+
* The RPC `statusCallback` for the work this context describes: guarded to
|
|
10
|
+
* this fetch (a superseded one cannot repaint the overlay of the fetch that
|
|
11
|
+
* replaced it) and throttled through the display-wide window. `callRpc`
|
|
12
|
+
* injects it — read it directly only for a status write of your own
|
|
13
|
+
* (`updateStatus` phase labels).
|
|
14
|
+
*
|
|
15
|
+
* The fan-out helpers hand each region a context whose callback is that
|
|
16
|
+
* region's own slot (`callEachRegion`, and `fetchEachRegion` through it), so
|
|
17
|
+
* a `ctx.callRpc` aggregates N parallel regions into one bar in the fan-out
|
|
18
|
+
* case and reports the whole fetch in the batched one. Reading it off the
|
|
19
|
+
* model instead — or reusing the *outer* ctx's inside a fan-out — is what
|
|
20
|
+
* made parallel regions clobber each other's progress, and is now the thing
|
|
21
|
+
* you would have to go out of your way to do.
|
|
22
|
+
*/
|
|
23
|
+
statusCallback: StatusCallback;
|
|
24
|
+
/**
|
|
25
|
+
* The one way a fetch calls an RPC: the registry-typed
|
|
26
|
+
* `rpcManager.call(rpcSessionId, method, args)` with this context's
|
|
27
|
+
* `stopToken` and `statusCallback` injected. Both used to be hand-threaded
|
|
28
|
+
* at every fetch site, and forgetting either was silent — no cancellation
|
|
29
|
+
* for that display, or no progress — which is exactly the failure class the
|
|
30
|
+
* envelope makes inexpressible: a fetch cannot issue an RPC the cancel and
|
|
31
|
+
* the status bar don't know about.
|
|
32
|
+
*
|
|
33
|
+
* Declared with a `this` parameter so it reads the *holding* context's
|
|
34
|
+
* token and callback — the fan-out copies rebind it to their own status
|
|
35
|
+
* slot by construction — and so destructuring it off the context is a type
|
|
36
|
+
* error rather than a stale binding.
|
|
37
|
+
*/
|
|
38
|
+
callRpc: <M extends string>(this: FetchContext, method: M, args: Omit<RpcCallArgs<M>, 'stopToken' | 'statusCallback'>) => Promise<RpcCallReturn<M>>;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Build a {@link FetchContext} over a live fetch's primitives. One
|
|
42
|
+
* constructor, so every context — `runFetch`'s, the prerequisite skeleton's —
|
|
43
|
+
* carries the same `callRpc` envelope.
|
|
44
|
+
*
|
|
45
|
+
* **`self` has to be somewhere `getRpcSessionId` can find one, which in practice
|
|
46
|
+
* means a track or something under it.** `rpcSessionId` is declared by
|
|
47
|
+
* `BaseTrackModel` and by nothing above it, so the walk throws rather than
|
|
48
|
+
* falling back — and a fetch installed on a VIEW gets a context whose `callRpc`
|
|
49
|
+
* cannot be called at all. That is not a gap to fix here: the id names the track
|
|
50
|
+
* whose adapter is being read, and a view fetching for several tracks has a
|
|
51
|
+
* different one per call. The shape is to fan out and rebuild a context per
|
|
52
|
+
* track, which is what the breakpoint split view's overlay fetch does.
|
|
53
|
+
*/
|
|
54
|
+
export declare function makeFetchContext(self: IStateTreeNode, base: {
|
|
55
|
+
stopToken: StopToken;
|
|
56
|
+
isStale: () => boolean;
|
|
57
|
+
statusCallback: StatusCallback;
|
|
58
|
+
}): FetchContext;
|
|
59
|
+
/**
|
|
60
|
+
* One context per concurrent operation, each carrying its own status slot, so
|
|
61
|
+
* the N of them aggregate into a single Σcurrent/Σtotal bar rather than
|
|
62
|
+
* last-writer-wins on the owner's one status field.
|
|
63
|
+
*
|
|
64
|
+
* A copy of the ctx rather than a separate `slot()` on it because a caller
|
|
65
|
+
* should not have to know which kind of context it holds: the field is called
|
|
66
|
+
* `statusCallback` in both, and `statusCallback: ctx.statusCallback` at the RPC
|
|
67
|
+
* call site is correct in the fan-out and in the batched case alike — as is
|
|
68
|
+
* {@link makeFetchContext}'s `callRpc`, whose `this` parameter rebinds to the
|
|
69
|
+
* copy, so the envelope injects that operation's slot and not the batch's.
|
|
70
|
+
* Callers used to reach back to the model for `makeRegionStatusCallback(index)`,
|
|
71
|
+
* and the whole hazard was that forgetting to looked exactly like remembering
|
|
72
|
+
* to.
|
|
73
|
+
*
|
|
74
|
+
* Here beside `makeFetchContext` rather than in either fetch family, because
|
|
75
|
+
* both fan out inside one run: the per-region LGV helpers over N regions
|
|
76
|
+
* (`callEachRegion`), and the shared `installFetch` skeleton over whatever a
|
|
77
|
+
* display's `run` issues concurrently — the multi-way display's N lanes.
|
|
78
|
+
*
|
|
79
|
+
* The fan-out's lifetime is this batch's: slots are never reclaimed, and the
|
|
80
|
+
* batch is the thing that ends.
|
|
81
|
+
*/
|
|
82
|
+
export declare function fanOutStatus<C extends FetchContext>(ctx: C, count: number): C[];
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { getRpcSessionId } from './parentWalk.js';
|
|
2
|
+
import { createStatusFanOut } from './progress.js';
|
|
3
|
+
import { getRpcHost } from './sessionServices.js';
|
|
4
|
+
/**
|
|
5
|
+
* Build a {@link FetchContext} over a live fetch's primitives. One
|
|
6
|
+
* constructor, so every context — `runFetch`'s, the prerequisite skeleton's —
|
|
7
|
+
* carries the same `callRpc` envelope.
|
|
8
|
+
*
|
|
9
|
+
* **`self` has to be somewhere `getRpcSessionId` can find one, which in practice
|
|
10
|
+
* means a track or something under it.** `rpcSessionId` is declared by
|
|
11
|
+
* `BaseTrackModel` and by nothing above it, so the walk throws rather than
|
|
12
|
+
* falling back — and a fetch installed on a VIEW gets a context whose `callRpc`
|
|
13
|
+
* cannot be called at all. That is not a gap to fix here: the id names the track
|
|
14
|
+
* whose adapter is being read, and a view fetching for several tracks has a
|
|
15
|
+
* different one per call. The shape is to fan out and rebuild a context per
|
|
16
|
+
* track, which is what the breakpoint split view's overlay fetch does.
|
|
17
|
+
*/
|
|
18
|
+
export function makeFetchContext(self, base) {
|
|
19
|
+
return {
|
|
20
|
+
...base,
|
|
21
|
+
callRpc(method, args) {
|
|
22
|
+
return getRpcHost(self).rpcManager.call(getRpcSessionId(self), method, {
|
|
23
|
+
...args,
|
|
24
|
+
stopToken: this.stopToken,
|
|
25
|
+
statusCallback: this.statusCallback,
|
|
26
|
+
});
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* One context per concurrent operation, each carrying its own status slot, so
|
|
32
|
+
* the N of them aggregate into a single Σcurrent/Σtotal bar rather than
|
|
33
|
+
* last-writer-wins on the owner's one status field.
|
|
34
|
+
*
|
|
35
|
+
* A copy of the ctx rather than a separate `slot()` on it because a caller
|
|
36
|
+
* should not have to know which kind of context it holds: the field is called
|
|
37
|
+
* `statusCallback` in both, and `statusCallback: ctx.statusCallback` at the RPC
|
|
38
|
+
* call site is correct in the fan-out and in the batched case alike — as is
|
|
39
|
+
* {@link makeFetchContext}'s `callRpc`, whose `this` parameter rebinds to the
|
|
40
|
+
* copy, so the envelope injects that operation's slot and not the batch's.
|
|
41
|
+
* Callers used to reach back to the model for `makeRegionStatusCallback(index)`,
|
|
42
|
+
* and the whole hazard was that forgetting to looked exactly like remembering
|
|
43
|
+
* to.
|
|
44
|
+
*
|
|
45
|
+
* Here beside `makeFetchContext` rather than in either fetch family, because
|
|
46
|
+
* both fan out inside one run: the per-region LGV helpers over N regions
|
|
47
|
+
* (`callEachRegion`), and the shared `installFetch` skeleton over whatever a
|
|
48
|
+
* display's `run` issues concurrently — the multi-way display's N lanes.
|
|
49
|
+
*
|
|
50
|
+
* The fan-out's lifetime is this batch's: slots are never reclaimed, and the
|
|
51
|
+
* batch is the thing that ends.
|
|
52
|
+
*/
|
|
53
|
+
export function fanOutStatus(ctx, count) {
|
|
54
|
+
const slot = createStatusFanOut(ctx.statusCallback);
|
|
55
|
+
return Array.from({ length: count }, () => ({
|
|
56
|
+
...ctx,
|
|
57
|
+
statusCallback: slot(),
|
|
58
|
+
}));
|
|
59
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface HubConfig {
|
|
2
|
+
assemblies?: Record<string, unknown>[];
|
|
3
|
+
aggregateTextSearchAdapters?: Record<string, unknown>[];
|
|
4
|
+
tracks?: Record<string, unknown>[];
|
|
5
|
+
[key: string]: unknown;
|
|
6
|
+
}
|
|
7
|
+
export declare function hubUrl(hub: string): string;
|
|
8
|
+
/**
|
|
9
|
+
* Fetch a hosted assembly config from jbrowse.org by UCSC database name (`hg38`,
|
|
10
|
+
* `mm10`, ...) or GenArk accession (`GCA_...`/`GCF_...`). Returns the full config
|
|
11
|
+
* — a self-contained assembly plus a catalog of CORS-enabled hosted tracks. Pass
|
|
12
|
+
* the name straight to `createLinearGenomeView({ assembly: 'hg38' })` for the
|
|
13
|
+
* common case; call this directly only to cherry-pick tracks from the catalog.
|
|
14
|
+
*/
|
|
15
|
+
export declare function fetchHub(hub: string): Promise<HubConfig>;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { addRelativeUris } from './addRelativeUris.js';
|
|
2
|
+
const HUB_HOST = 'https://jbrowse.org';
|
|
3
|
+
// A UCSC database name (hg38, mm10, ...) maps to /ucsc/<db>/; a GenArk accession
|
|
4
|
+
// (GCA_/GCF_...) fans its 9 digits out into a 3-level directory tree.
|
|
5
|
+
export function hubUrl(hub) {
|
|
6
|
+
const genark = /^(GC[AF])_(\d{3})(\d{3})(\d{3})/.exec(hub);
|
|
7
|
+
return genark
|
|
8
|
+
? `${HUB_HOST}/hubs/genark/${genark[1]}/${genark[2]}/${genark[3]}/${genark[4]}/${hub}/config.json`
|
|
9
|
+
: `${HUB_HOST}/ucsc/${hub}/config.json`;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Fetch a hosted assembly config from jbrowse.org by UCSC database name (`hg38`,
|
|
13
|
+
* `mm10`, ...) or GenArk accession (`GCA_...`/`GCF_...`). Returns the full config
|
|
14
|
+
* — a self-contained assembly plus a catalog of CORS-enabled hosted tracks. Pass
|
|
15
|
+
* the name straight to `createLinearGenomeView({ assembly: 'hg38' })` for the
|
|
16
|
+
* common case; call this directly only to cherry-pick tracks from the catalog.
|
|
17
|
+
*/
|
|
18
|
+
export async function fetchHub(hub) {
|
|
19
|
+
const url = hubUrl(hub);
|
|
20
|
+
const response = await fetch(url);
|
|
21
|
+
if (response.ok) {
|
|
22
|
+
const config = (await response.json());
|
|
23
|
+
// hosted configs reference their data relative to the config's own location
|
|
24
|
+
addRelativeUris(config, new URL(url));
|
|
25
|
+
return config;
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
throw new Error(`hub "${hub}" not found (${response.status} from ${url}). ` +
|
|
29
|
+
'See https://jbrowse.org for available assemblies.');
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function fetchJson<T = unknown>(url: string, init?: RequestInit): Promise<T>;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The three phases a single-payload fetch is written in, so the rules that
|
|
3
|
+
* strand a display when any of them is got wrong are structural rather than
|
|
4
|
+
* remembered.
|
|
5
|
+
*
|
|
6
|
+
* The shared `installFetch` skeleton takes this shape, and so does the LGV
|
|
7
|
+
* global family (`installGlobalFetchAutorun`, over `FetchMixin.runFetch`). It
|
|
8
|
+
* was the same contract declared twice, with the same three rules explained
|
|
9
|
+
* twice, which is a drift axis over rules whose whole value is being the same
|
|
10
|
+
* everywhere.
|
|
11
|
+
*
|
|
12
|
+
* `TCtx` is what a family hands its `run`: a `FetchContext` for most of them, a
|
|
13
|
+
* `ComparativeFetchContext` (that plus adapter config and refName rename) for
|
|
14
|
+
* the comparative displays, which wrap their own `run` rather than the skeleton
|
|
15
|
+
* growing an option. That is the one thing that genuinely differs, so it is the
|
|
16
|
+
* one parameter.
|
|
17
|
+
*
|
|
18
|
+
* **The per-region family is deliberately not this shape.** N regions stream and
|
|
19
|
+
* four displays decide something across them mid-fetch, so there is nowhere to
|
|
20
|
+
* put a single `commit` — it gets the same "never record what you did not
|
|
21
|
+
* receive" invariant from `RegionFetchContext.commitRegion` instead, and the
|
|
22
|
+
* note there is worth reading beside this one.
|
|
23
|
+
*/
|
|
24
|
+
export interface FetchPhases<TArgs, TResult, TCtx> {
|
|
25
|
+
/**
|
|
26
|
+
* Runs synchronously inside the autorun, so its reads — on top of the
|
|
27
|
+
* skeleton's own trigger list — are the dependency set. Returning `undefined`
|
|
28
|
+
* skips the run (minimized, an empty viewport, the display's own gate shut);
|
|
29
|
+
* the reads that decided that stay tracked, so the autorun rewakes. Everything
|
|
30
|
+
* the round trip has to be judged against is captured here and travels in
|
|
31
|
+
* `TArgs`: the viewport, the region set, the resolution.
|
|
32
|
+
*
|
|
33
|
+
* Prefer folding the fetch's inputs into one `currentFetchKey` computed over
|
|
34
|
+
* tracking them individually: a pan inside the buffered window then recomputes
|
|
35
|
+
* the same string and does not refire, and that same string tags the committed
|
|
36
|
+
* data so it cannot drift from what was fetched even if the view moves again
|
|
37
|
+
* mid-RPC.
|
|
38
|
+
*
|
|
39
|
+
* **Comparing that key against what is already committed does not belong
|
|
40
|
+
* here.** This gate is "is there anything to fetch", which a retry must not
|
|
41
|
+
* override; "do I already have exactly this" is `installFetch`'s `fetchKey` gate,
|
|
42
|
+
* which a retry must. Writing the second one into this one is how a display
|
|
43
|
+
* gets a dead Retry button — see there.
|
|
44
|
+
*
|
|
45
|
+
* What it must **not** do is move a trigger read of its own under a bail-out.
|
|
46
|
+
* See ARCHITECTURE.md §"The global-fetch trigger list must be read
|
|
47
|
+
* unconditionally".
|
|
48
|
+
*/
|
|
49
|
+
prepare: () => TArgs | undefined;
|
|
50
|
+
/**
|
|
51
|
+
* Owns every await — the RPC, a byte-gate pre-flight, any post-RPC derivation
|
|
52
|
+
* the commit needs — and writes nothing to the model. Returns `undefined` for
|
|
53
|
+
* "nothing to commit", which is what a pre-flight that stopped this fetch
|
|
54
|
+
* says.
|
|
55
|
+
*
|
|
56
|
+
* **Nothing it reads is tracked**, so the payload it assembles cannot widen
|
|
57
|
+
* the autorun's dependency set the way calling `rpcProps()` in the body would.
|
|
58
|
+
* Being async is not what buys that — `run` is *called* synchronously, so its
|
|
59
|
+
* own prefix down to its first `await` runs wherever the caller was. Each
|
|
60
|
+
* family arranges it: the global one reaches `run` through
|
|
61
|
+
* `FetchMixin.runFetch`, an MST flow and so an action, which MobX runs
|
|
62
|
+
* untracked; the comparative one calls its lifecycle inside `untracked`
|
|
63
|
+
* because it has no action to hide behind.
|
|
64
|
+
*/
|
|
65
|
+
run: (args: TArgs, ctx: TCtx) => Promise<TResult | undefined>;
|
|
66
|
+
/**
|
|
67
|
+
* Synchronous, and reached only while this is still the latest fetch, so a
|
|
68
|
+
* superseded fetch resolving late cannot clobber fresher data. Async work here
|
|
69
|
+
* would reopen exactly that window, which is why it may not await. It takes
|
|
70
|
+
* `args` back, so what it stamps onto the committed data is what the fetch was
|
|
71
|
+
* issued for and not a live re-read.
|
|
72
|
+
*
|
|
73
|
+
* **Reached only when `run` produced a result**, which is what keeps a display
|
|
74
|
+
* from ever recording data it did not receive.
|
|
75
|
+
*/
|
|
76
|
+
commit: (result: TResult, args: TArgs) => void;
|
|
77
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|