@jbrowse/core 4.3.0 → 5.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +822 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.d.ts +13 -3
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.js +33 -22
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.d.ts +8 -3
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.js +117 -19
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseAttributes.d.ts +2 -8
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseAttributes.js +4 -4
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCard.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCard.js +2 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCoreDetails.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCoreDetails.js +4 -4
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BasicValue.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BasicValue.js +12 -5
- package/esm/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.js +28 -17
- package/esm/BaseFeatureWidget/BaseFeatureDetail/DataGridDetails.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/DataGridDetails.js +19 -40
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.d.ts +6 -4
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.js +46 -30
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureWash.d.ts +20 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureWash.js +66 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldName.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldName.js +2 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Formatter.d.ts +3 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Formatter.js +17 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Position.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Position.js +3 -9
- package/esm/BaseFeatureWidget/BaseFeatureDetail/SimpleField.d.ts +3 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/SimpleField.js +3 -3
- package/esm/BaseFeatureWidget/BaseFeatureDetail/UriField.d.ts +3 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/UriField.js +7 -14
- package/esm/BaseFeatureWidget/BaseFeatureDetail/index.d.ts +2 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/index.js +19 -13
- package/esm/BaseFeatureWidget/BaseFeatureDetail/types.d.ts +5 -4
- package/esm/BaseFeatureWidget/BaseFeatureDetail/util.d.ts +8 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/util.js +32 -10
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceBody.d.ts +18 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceBody.js +10 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceContents.d.ts +7 -4
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceContents.js +62 -24
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureDetails.d.ts +10 -5
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureDetails.js +64 -41
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeaturePanel.d.ts +1 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeaturePanel.js +17 -8
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceLegend.d.ts +6 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceLegend.js +19 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceName.d.ts +5 -4
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceName.js +15 -18
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequencePanel.d.ts +1 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequencePanel.js +33 -17
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/consts.d.ts +3 -3
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/consts.js +7 -3
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/FeatureSequenceDialog.d.ts +11 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/FeatureSequenceDialog.js +29 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/HelpDialog.d.ts +1 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/HelpDialog.js +4 -6
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceDialog.d.ts +18 -6
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceDialog.js +11 -29
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceFeatureMenu.d.ts +9 -2
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceFeatureMenu.js +63 -58
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceTypeSelector.d.ts +7 -3
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceTypeSelector.js +38 -51
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SettingsDialog.d.ts +1 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SettingsDialog.js +19 -27
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/TranscriptSelector.d.ts +6 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/TranscriptSelector.js +18 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/featureTypeUtil.d.ts +12 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/featureTypeUtil.js +97 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/index.js +1 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/model.d.ts +50 -63
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/model.js +62 -59
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/panelAssemblyName.d.ts +21 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/panelAssemblyName.js +24 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDNASequence.d.ts +5 -3
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDNASequence.js +93 -75
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDSSequence.d.ts +1 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDSSequence.js +4 -11
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/GenomicSequence.d.ts +5 -2
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/GenomicSequence.js +21 -48
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/PlainSequence.d.ts +8 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/PlainSequence.js +20 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/ProteinSequence.d.ts +6 -3
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/ProteinSequence.js +33 -13
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/SequenceDisplay.d.ts +7 -4
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/SequenceDisplay.js +67 -11
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/renderSequenceSegments.d.ts +14 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/renderSequenceSegments.js +42 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/DLGAP3.d.ts +1 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/NCDN.d.ts +7 -7
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/types.d.ts +8 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/useSequenceData.d.ts +9 -9
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/useSequenceData.js +28 -44
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/useSequenceFetch.d.ts +23 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/useSequenceFetch.js +31 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/util.d.ts +90 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/util.js +145 -23
- package/esm/BaseFeatureWidget/configSchema.js +1 -1
- package/esm/BaseFeatureWidget/formatDetails.d.ts +38 -0
- package/esm/BaseFeatureWidget/formatDetails.js +103 -0
- package/esm/BaseFeatureWidget/index.d.ts +3 -1
- package/esm/BaseFeatureWidget/index.js +2 -2
- package/esm/BaseFeatureWidget/stateModelFactory.d.ts +80 -62
- package/esm/BaseFeatureWidget/stateModelFactory.js +128 -29
- package/esm/BaseFeatureWidget/types.d.ts +4 -3
- package/esm/BaseFeatureWidget/util.d.ts +4 -29
- package/esm/BaseFeatureWidget/util.js +20 -84
- package/esm/CorePlugin.js +11 -6
- package/esm/PhasedScheduler.d.ts +4 -2
- package/esm/PhasedScheduler.js +18 -2
- package/esm/Plugin.d.ts +6 -1
- package/esm/Plugin.js +7 -0
- package/esm/PluginLoader.d.ts +41 -40
- package/esm/PluginLoader.js +206 -78
- package/esm/PluginManager.d.ts +421 -55
- package/esm/PluginManager.js +461 -89
- package/esm/ReExports/BaseFeatureDetails.js +7 -6
- package/esm/ReExports/MuiDataGridReExports.d.ts +2 -2
- package/esm/ReExports/MuiDataGridReExports.js +58 -130
- package/esm/ReExports/MuiReExports.d.ts +3 -134
- package/esm/ReExports/MuiReExports.js +43 -16
- package/esm/ReExports/MuiStylesReExports.d.ts +66 -0
- package/esm/ReExports/MuiStylesReExports.js +55 -0
- package/esm/ReExports/index.js +1 -1
- package/esm/ReExports/lazify.d.ts +2 -2
- package/esm/ReExports/lazify.js +16 -3
- package/esm/ReExports/list.js +54 -229
- package/esm/ReExports/modules.js +62 -93
- package/esm/ReExports/muiComponentNames.d.ts +18 -0
- package/esm/ReExports/muiComponentNames.js +130 -0
- package/esm/ReExports/publicUtil.d.ts +1 -0
- package/esm/ReExports/publicUtil.js +28 -0
- package/esm/ReExports/registry.d.ts +2 -0
- package/esm/ReExports/registry.js +28 -0
- package/esm/ReExports/sharedModules.d.ts +96 -0
- package/esm/ReExports/sharedModules.js +59 -0
- package/esm/ReExports/uiStub.d.ts +1 -0
- package/esm/ReExports/uiStub.js +13 -0
- package/esm/ReExports/workerModules.d.ts +2 -0
- package/esm/ReExports/workerModules.js +10 -0
- package/esm/TextSearch/BaseResults.d.ts +20 -21
- package/esm/TextSearch/BaseResults.js +8 -33
- package/esm/TextSearch/TextSearchManager.d.ts +14 -34
- package/esm/TextSearch/TextSearchManager.js +87 -34
- package/esm/assemblyManager/assembly.d.ts +307 -34
- package/esm/assemblyManager/assembly.js +551 -262
- package/esm/assemblyManager/assemblyAdapters.d.ts +12 -0
- package/esm/assemblyManager/assemblyAdapters.js +18 -0
- package/esm/assemblyManager/assemblyConfigSchema.d.ts +192 -17
- package/esm/assemblyManager/assemblyConfigSchema.js +213 -19
- package/esm/assemblyManager/assemblyManager.d.ts +711 -303
- package/esm/assemblyManager/assemblyManager.js +351 -46
- package/esm/assemblyManager/expandAssemblyConfigShorthand.d.ts +32 -0
- package/esm/assemblyManager/expandAssemblyConfigShorthand.js +85 -0
- package/esm/assemblyManager/geneticCodes.d.ts +21 -0
- package/esm/assemblyManager/geneticCodes.js +47 -0
- package/esm/assemblyManager/getSequenceAdapterConfig.d.ts +9 -0
- package/esm/assemblyManager/getSequenceAdapterConfig.js +12 -0
- package/esm/assemblyManager/index.d.ts +1 -1
- package/esm/assemblyManager/index.js +2 -2
- package/esm/assemblyManager/loadRefNameMap.d.ts +5 -0
- package/esm/assemblyManager/loadRefNameMap.js +80 -0
- package/esm/assemblyManager/refNameColors.d.ts +1 -0
- package/esm/assemblyManager/refNameColors.js +32 -0
- package/esm/assemblyManager/refNameMaps.d.ts +26 -0
- package/esm/assemblyManager/refNameMaps.js +87 -0
- package/esm/assemblyManager/refNameMismatch.d.ts +54 -0
- package/esm/assemblyManager/refNameMismatch.js +66 -0
- package/esm/checkPlugins.d.ts +11 -0
- package/esm/checkPlugins.js +77 -0
- package/esm/configuration/configurationSchema.d.ts +122 -20
- package/esm/configuration/configurationSchema.js +374 -140
- package/esm/configuration/configurationSlot.d.ts +283 -30
- package/esm/configuration/configurationSlot.js +205 -226
- package/esm/configuration/formatAboutConfigSchema.d.ts +55 -0
- package/esm/configuration/formatAboutConfigSchema.js +58 -0
- package/esm/configuration/formatDetailsConfigSchema.d.ts +80 -0
- package/esm/configuration/formatDetailsConfigSchema.js +90 -0
- package/esm/configuration/fullConfSnapshot.d.ts +28 -0
- package/esm/configuration/fullConfSnapshot.js +66 -0
- package/esm/configuration/getConf.d.ts +88 -0
- package/esm/configuration/getConf.js +74 -0
- package/esm/configuration/index.d.ts +19 -3
- package/esm/configuration/index.js +19 -2
- package/esm/configuration/mergeFormatCallbacks.d.ts +15 -0
- package/esm/configuration/mergeFormatCallbacks.js +24 -0
- package/esm/configuration/promotableDefaults.d.ts +199 -0
- package/esm/configuration/promotableDefaults.js +332 -0
- package/esm/configuration/promotablePin.d.ts +55 -0
- package/esm/configuration/promotableResolve.d.ts +108 -0
- package/esm/configuration/promotableResolve.js +117 -0
- package/esm/configuration/promotableSlots.d.ts +12 -0
- package/esm/configuration/promotableSlots.js +45 -0
- package/esm/configuration/readConfObject.d.ts +56 -0
- package/esm/configuration/readConfObject.js +161 -0
- package/esm/configuration/schemaRegistry.d.ts +35 -0
- package/esm/configuration/schemaRegistry.js +50 -0
- package/esm/configuration/schemaTypes.d.ts +23 -0
- package/esm/configuration/schemaTypes.js +94 -0
- package/esm/configuration/slotFacade.d.ts +82 -0
- package/esm/configuration/slotFacade.js +89 -0
- package/esm/configuration/slotShape.d.ts +12 -0
- package/esm/configuration/slotShape.js +84 -0
- package/esm/configuration/slotValueUtils.d.ts +17 -0
- package/esm/configuration/slotValueUtils.js +25 -0
- package/esm/configuration/tabixIndexFields.d.ts +44 -0
- package/esm/configuration/tabixIndexFields.js +45 -0
- package/esm/configuration/tabixShorthand.d.ts +34 -0
- package/esm/configuration/tabixShorthand.js +45 -0
- package/esm/configuration/types.d.ts +170 -7
- package/esm/data_adapters/BaseAdapter/BaseAdapter.d.ts +24 -10
- package/esm/data_adapters/BaseAdapter/BaseAdapter.js +23 -15
- package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.d.ts +132 -7
- package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.js +136 -25
- package/esm/data_adapters/BaseAdapter/BaseRefNameAliasAdapter.d.ts +1 -0
- package/esm/data_adapters/BaseAdapter/BaseSequenceAdapter.d.ts +13 -5
- package/esm/data_adapters/BaseAdapter/BaseSequenceAdapter.js +9 -7
- package/esm/data_adapters/BaseAdapter/BaseTextSearchAdapter.d.ts +2 -1
- package/esm/data_adapters/BaseAdapter/CytobandAdapter.d.ts +7 -0
- package/esm/data_adapters/BaseAdapter/RegionsAdapter.d.ts +2 -1
- package/esm/data_adapters/BaseAdapter/featureDensity.d.ts +29 -0
- package/esm/data_adapters/BaseAdapter/featureDensity.js +17 -0
- package/esm/data_adapters/BaseAdapter/getAdapterId.d.ts +2 -0
- package/esm/data_adapters/BaseAdapter/getAdapterId.js +9 -0
- package/esm/data_adapters/BaseAdapter/index.d.ts +7 -4
- package/esm/data_adapters/BaseAdapter/index.js +6 -5
- package/esm/data_adapters/BaseAdapter/stats.d.ts +37 -5
- package/esm/data_adapters/BaseAdapter/stats.js +89 -24
- package/esm/data_adapters/BaseAdapter/types.d.ts +11 -8
- package/esm/data_adapters/BaseAdapter/types.js +1 -0
- package/esm/data_adapters/BaseAdapter/util.d.ts +5 -1
- package/esm/data_adapters/BaseAdapter/util.js +14 -3
- package/esm/data_adapters/CytobandAdapter/CytobandAdapter.d.ts +1 -1
- package/esm/data_adapters/CytobandAdapter/CytobandAdapter.js +4 -4
- package/esm/data_adapters/CytobandAdapter/configSchema.d.ts +36 -4
- package/esm/data_adapters/CytobandAdapter/configSchema.js +46 -2
- package/esm/data_adapters/CytobandAdapter/index.js +3 -3
- package/esm/data_adapters/adapterSessionRefcount.d.ts +61 -0
- package/esm/data_adapters/adapterSessionRefcount.js +96 -0
- package/esm/data_adapters/dataAdapterCache.d.ts +35 -1
- package/esm/data_adapters/dataAdapterCache.js +62 -22
- package/esm/data_adapters/getFeatureAdapter.d.ts +22 -0
- package/esm/data_adapters/getFeatureAdapter.js +27 -0
- package/esm/data_adapters/getSequenceSubAdapter.d.ts +21 -0
- package/esm/data_adapters/getSequenceSubAdapter.js +44 -0
- package/esm/pluggableElementTypes/AdapterType.d.ts +52 -2
- package/esm/pluggableElementTypes/AdapterType.js +44 -5
- package/esm/pluggableElementTypes/AddTrackWorkflowType.d.ts +6 -1
- package/esm/pluggableElementTypes/AddTrackWorkflowType.js +3 -1
- package/esm/pluggableElementTypes/ConnectionType.d.ts +5 -5
- package/esm/pluggableElementTypes/ConnectionType.js +1 -1
- package/esm/pluggableElementTypes/DisplayType.d.ts +19 -10
- package/esm/pluggableElementTypes/DisplayType.js +53 -5
- package/esm/pluggableElementTypes/InternetAccountType.js +1 -1
- package/esm/pluggableElementTypes/PluggableElementBase.d.ts +13 -0
- package/esm/pluggableElementTypes/PluggableElementBase.js +13 -0
- package/esm/pluggableElementTypes/RpcMethodType.d.ts +132 -12
- package/esm/pluggableElementTypes/RpcMethodType.js +263 -98
- package/esm/pluggableElementTypes/RpcMethodTypeWithFiltersAndRenameRegions.d.ts +19 -9
- package/esm/pluggableElementTypes/RpcMethodTypeWithFiltersAndRenameRegions.js +26 -20
- package/esm/pluggableElementTypes/RpcMethodTypeWithRenameRegion.d.ts +5 -0
- package/esm/pluggableElementTypes/RpcMethodTypeWithRenameRegion.js +18 -0
- package/esm/pluggableElementTypes/RpcMethodTypeWithRenameRegions.d.ts +5 -0
- package/esm/pluggableElementTypes/RpcMethodTypeWithRenameRegions.js +10 -0
- package/esm/pluggableElementTypes/TextSearchAdapterType.d.ts +3 -3
- package/esm/pluggableElementTypes/TextSearchAdapterType.js +3 -1
- package/esm/pluggableElementTypes/TrackType.d.ts +2 -1
- package/esm/pluggableElementTypes/TrackType.js +1 -1
- package/esm/pluggableElementTypes/ViewType.d.ts +27 -3
- package/esm/pluggableElementTypes/ViewType.js +84 -4
- package/esm/pluggableElementTypes/WidgetType.d.ts +2 -2
- package/esm/pluggableElementTypes/WidgetType.js +1 -1
- package/esm/pluggableElementTypes/addMenuItems.d.ts +87 -0
- package/esm/pluggableElementTypes/addMenuItems.js +82 -0
- package/esm/pluggableElementTypes/extendElementType.d.ts +30 -0
- package/esm/pluggableElementTypes/extendElementType.js +73 -0
- package/esm/pluggableElementTypes/index.d.ts +7 -7
- package/esm/pluggableElementTypes/index.js +24 -14
- package/esm/pluggableElementTypes/models/BaseConnectionModelFactory.d.ts +70 -15
- package/esm/pluggableElementTypes/models/BaseConnectionModelFactory.js +90 -10
- package/esm/pluggableElementTypes/models/BaseDisplayModel.d.ts +646 -84
- package/esm/pluggableElementTypes/models/BaseDisplayModel.js +241 -60
- package/esm/pluggableElementTypes/models/BaseTrackModel.d.ts +216 -35
- package/esm/pluggableElementTypes/models/BaseTrackModel.js +365 -83
- package/esm/pluggableElementTypes/models/BaseViewModel.d.ts +216 -16
- package/esm/pluggableElementTypes/models/BaseViewModel.js +150 -16
- package/esm/pluggableElementTypes/models/HighlightsMixin.d.ts +51 -0
- package/esm/pluggableElementTypes/models/HighlightsMixin.js +78 -0
- package/esm/pluggableElementTypes/models/InternetAccountModel.d.ts +163 -29
- package/esm/pluggableElementTypes/models/InternetAccountModel.js +218 -48
- package/esm/pluggableElementTypes/models/assertDisplayContract.d.ts +177 -0
- package/esm/pluggableElementTypes/models/assertDisplayContract.js +239 -0
- package/esm/pluggableElementTypes/models/baseConnectionConfig.d.ts +22 -8
- package/esm/pluggableElementTypes/models/baseConnectionConfig.js +18 -2
- package/esm/pluggableElementTypes/models/baseInternetAccountConfig.d.ts +39 -20
- package/esm/pluggableElementTypes/models/baseInternetAccountConfig.js +23 -2
- package/esm/pluggableElementTypes/models/baseTrackConfig.d.ts +181 -65
- package/esm/pluggableElementTypes/models/baseTrackConfig.js +191 -89
- package/esm/pluggableElementTypes/models/components/SaveTrackData.d.ts +3 -8
- package/esm/pluggableElementTypes/models/components/SaveTrackData.js +113 -139
- package/esm/pluggableElementTypes/models/components/fetchTrackData.d.ts +55 -0
- package/esm/pluggableElementTypes/models/components/fetchTrackData.js +83 -0
- package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.d.ts +40 -0
- package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.js +115 -0
- package/esm/pluggableElementTypes/models/index.d.ts +6 -3
- package/esm/pluggableElementTypes/models/index.js +10 -8
- package/esm/pluggableElementTypes/models/migrateTrackConfig.d.ts +34 -0
- package/esm/pluggableElementTypes/models/migrateTrackConfig.js +54 -0
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/bed.js +75 -7
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.d.ts +9 -3
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.js +153 -103
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/gff3.d.ts +6 -1
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/gff3.js +70 -74
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/types.d.ts +9 -1
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/util.d.ts +21 -0
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/util.js +51 -0
- package/esm/pluggableElementTypes/models/uriMatchesDomains.d.ts +29 -0
- package/esm/pluggableElementTypes/models/uriMatchesDomains.js +62 -0
- package/esm/pluggableElementTypes/renderers/util/serializableFilterChain.d.ts +5 -4
- package/esm/pluggableElementTypes/renderers/util/serializableFilterChain.js +20 -10
- package/esm/pluginDefinitions.d.ts +198 -0
- package/esm/pluginDefinitions.js +220 -0
- package/esm/rpc/BaseRpcDriver.d.ts +27 -35
- package/esm/rpc/BaseRpcDriver.js +74 -107
- package/esm/rpc/MainThreadRpcDriver.d.ts +9 -10
- package/esm/rpc/MainThreadRpcDriver.js +18 -29
- package/esm/rpc/RpcClient.d.ts +38 -0
- package/esm/rpc/RpcClient.js +154 -0
- package/esm/rpc/RpcManager.d.ts +116 -27
- package/esm/rpc/RpcManager.js +177 -50
- package/esm/rpc/RpcRegistry.d.ts +275 -0
- package/esm/rpc/RpcRegistry.js +1 -0
- package/esm/rpc/RpcServer.d.ts +41 -0
- package/esm/rpc/RpcServer.js +235 -0
- package/esm/rpc/WebWorkerRpcDriver.d.ts +71 -24
- package/esm/rpc/WebWorkerRpcDriver.js +312 -27
- package/esm/rpc/byteBudget.d.ts +58 -0
- package/esm/rpc/byteBudget.js +50 -0
- package/esm/rpc/configSchema.d.ts +27 -5
- package/esm/rpc/configSchema.js +40 -16
- package/esm/rpc/coreRpcMethods.d.ts +3 -5
- package/esm/rpc/coreRpcMethods.js +10 -12
- package/esm/rpc/explainTransferError.d.ts +35 -0
- package/esm/rpc/explainTransferError.js +158 -0
- package/esm/rpc/methods/CoreFreeResources.d.ts +19 -4
- package/esm/rpc/methods/CoreFreeResources.js +17 -6
- package/esm/rpc/methods/CoreGetExportData.d.ts +5 -18
- package/esm/rpc/methods/CoreGetExportData.js +26 -15
- package/esm/rpc/methods/CoreGetFeatureDensity.d.ts +11 -0
- package/esm/rpc/methods/CoreGetFeatureDensity.js +22 -0
- package/esm/rpc/methods/CoreGetFeatures.d.ts +6 -15
- package/esm/rpc/methods/CoreGetFeatures.js +15 -17
- package/esm/rpc/methods/CoreGetInfo.d.ts +6 -0
- package/esm/rpc/methods/CoreGetInfo.js +12 -0
- package/esm/rpc/methods/CoreGetMetadata.d.ts +4 -7
- package/esm/rpc/methods/CoreGetMetadata.js +6 -9
- package/esm/rpc/methods/CoreGetRefNames.d.ts +4 -8
- package/esm/rpc/methods/CoreGetRefNames.js +24 -13
- package/esm/rpc/methods/CoreGetRegionByteEstimate.d.ts +6 -0
- package/esm/rpc/methods/CoreGetRegionByteEstimate.js +19 -0
- package/esm/rpc/methods/CoreGetRegions.d.ts +4 -6
- package/esm/rpc/methods/CoreGetRegions.js +6 -9
- package/esm/rpc/methods/CoreGetSequence.d.ts +4 -11
- package/esm/rpc/methods/CoreGetSequence.js +12 -13
- package/esm/rpc/serializeError/index.d.ts +9 -0
- package/esm/rpc/serializeError/index.js +86 -0
- package/esm/svg/SvgExport.d.ts +30 -0
- package/esm/svg/SvgExport.js +53 -0
- package/esm/svg/constants.d.ts +1 -0
- package/esm/svg/constants.js +5 -0
- package/esm/svg/saveSvgAsImage.d.ts +6 -0
- package/esm/svg/saveSvgAsImage.js +90 -0
- package/esm/svg/svgId.d.ts +42 -0
- package/esm/svg/svgId.js +84 -0
- package/esm/svg/svgReady.d.ts +137 -0
- package/esm/svg/svgReady.js +164 -0
- package/esm/svg/trackNames.d.ts +27 -0
- package/esm/svg/trackNames.js +31 -0
- package/esm/svg/wrapSvgExport.d.ts +12 -0
- package/esm/svg/wrapSvgExport.js +78 -0
- package/esm/ui/ActionLink.d.ts +7 -0
- package/esm/ui/ActionLink.js +9 -0
- package/esm/ui/AddCustomPluginDialog.d.ts +14 -0
- package/esm/ui/AddCustomPluginDialog.js +61 -0
- package/esm/ui/AddGenomePane.d.ts +8 -0
- package/esm/ui/AddGenomePane.js +228 -0
- package/esm/ui/AdvancedOptions.d.ts +6 -0
- package/esm/ui/AdvancedOptions.js +17 -0
- package/esm/ui/AppLogo.d.ts +1 -1
- package/esm/ui/AppLogo.js +2 -2
- package/esm/ui/AssemblySelector.d.ts +5 -8
- package/esm/ui/AssemblySelector.js +8 -26
- package/esm/ui/BaseExportSvgDialog.d.ts +16 -0
- package/esm/ui/BaseExportSvgDialog.js +84 -0
- package/esm/ui/BaseTooltip.d.ts +14 -3
- package/esm/ui/BaseTooltip.js +151 -34
- package/esm/ui/CascadingMenu.d.ts +9 -18
- package/esm/ui/CascadingMenu.js +390 -41
- package/esm/ui/CascadingMenuButton.d.ts +9 -11
- package/esm/ui/CascadingMenuButton.js +36 -18
- package/esm/ui/CascadingMenuHelpDialog.d.ts +2 -2
- package/esm/ui/CascadingMenuHelpDialog.js +4 -5
- package/esm/ui/CascadingMenuHelpIconButton.d.ts +2 -1
- package/esm/ui/CascadingMenuHelpIconButton.js +18 -9
- package/esm/ui/ColorPicker.d.ts +6 -9
- package/esm/ui/ColorPicker.js +36 -39
- package/esm/ui/ConfirmDialog.d.ts +2 -9
- package/esm/ui/ConfirmDialog.js +6 -9
- package/esm/ui/ContextMenu.d.ts +50 -0
- package/esm/ui/ContextMenu.js +55 -0
- package/esm/ui/CopyToClipboardButton.d.ts +10 -0
- package/esm/ui/CopyToClipboardButton.js +14 -0
- package/esm/ui/Crosshairs.d.ts +10 -0
- package/esm/ui/Crosshairs.js +15 -0
- package/esm/ui/DOMPurifySanitizedHTML.d.ts +1 -1
- package/esm/ui/DOMPurifySanitizedHTML.js +5 -5
- package/esm/ui/DataGridFlexContainer.d.ts +9 -2
- package/esm/ui/DataGridFlexContainer.js +4 -3
- package/esm/ui/Dialog.d.ts +5 -2
- package/esm/ui/Dialog.js +35 -27
- package/esm/ui/DraggableDialog.d.ts +3 -3
- package/esm/ui/DraggableDialog.js +50 -12
- package/esm/ui/DropDownMenu.d.ts +4 -2
- package/esm/ui/DropDownMenu.js +4 -4
- package/esm/ui/EditableTypography.d.ts +3 -1
- package/esm/ui/EditableTypography.js +34 -26
- package/esm/ui/ErrorActions.d.ts +24 -0
- package/esm/ui/ErrorActions.js +20 -0
- package/esm/ui/ErrorBanner.d.ts +7 -0
- package/esm/ui/ErrorBanner.js +35 -0
- package/esm/ui/ErrorBar.d.ts +6 -0
- package/esm/ui/ErrorBar.js +35 -0
- package/esm/ui/ErrorBoundary.d.ts +29 -5
- package/esm/ui/ErrorBoundary.js +32 -2
- package/esm/ui/ErrorMessage.d.ts +2 -4
- package/esm/ui/ErrorMessage.js +17 -52
- package/esm/ui/ErrorMessageStackTraceContents.d.ts +1 -1
- package/esm/ui/ErrorMessageStackTraceContents.js +3 -3
- package/esm/ui/ErrorMessageStackTraceDialog.d.ts +1 -1
- package/esm/ui/ErrorMessageStackTraceDialog.js +57 -96
- package/esm/ui/ErrorOverlay.d.ts +8 -0
- package/esm/ui/ErrorOverlay.js +5 -0
- package/esm/ui/ExportSvgDialog.d.ts +7 -0
- package/esm/ui/ExportSvgDialog.js +9 -0
- package/esm/ui/ExternalLink.d.ts +1 -1
- package/esm/ui/FactoryResetDialog.d.ts +1 -1
- package/esm/ui/FactoryResetDialog.js +6 -15
- package/esm/ui/FatalErrorDialog.d.ts +3 -2
- package/esm/ui/FatalErrorDialog.js +6 -5
- package/esm/ui/FileDropZone.d.ts +25 -0
- package/esm/ui/FileDropZone.js +128 -0
- package/esm/ui/FileSelector/FileSelector.d.ts +1 -1
- package/esm/ui/FileSelector/FileSelector.js +59 -30
- package/esm/ui/FileSelector/LocalFileChooser.d.ts +7 -2
- package/esm/ui/FileSelector/LocalFileChooser.js +61 -47
- package/esm/ui/FileSelector/LocationInput.d.ts +1 -1
- package/esm/ui/FileSelector/LocationInput.js +8 -12
- package/esm/ui/FileSelector/SourceTypeSelector.d.ts +5 -5
- package/esm/ui/FileSelector/SourceTypeSelector.js +9 -7
- package/esm/ui/FileSelector/UrlChooser.d.ts +1 -1
- package/esm/ui/FileSelector/UrlChooser.js +26 -2
- package/esm/ui/FileSelector/emptySourceType.d.ts +2 -0
- package/esm/ui/FileSelector/emptySourceType.js +14 -0
- package/esm/ui/FileSelector/useInternetAccounts.d.ts +383 -71
- package/esm/ui/FileSelector/useInternetAccounts.js +13 -6
- package/esm/ui/FileSelector/util.d.ts +58 -3
- package/esm/ui/FileSelector/util.js +128 -11
- package/esm/ui/GpuFallbackButton.d.ts +12 -0
- package/esm/ui/GpuFallbackButton.js +20 -0
- package/esm/ui/HoverMenu.d.ts +12 -3
- package/esm/ui/HoverMenu.js +31 -9
- package/esm/ui/HoverTooltip.d.ts +27 -0
- package/esm/ui/HoverTooltip.js +24 -0
- package/esm/ui/Icons.d.ts +6 -4
- package/esm/ui/Icons.js +9 -0
- package/esm/ui/InfoDialog.d.ts +7 -0
- package/esm/ui/InfoDialog.js +16 -0
- package/esm/ui/InlineMenuControls.d.ts +6 -0
- package/esm/ui/InlineMenuControls.js +17 -0
- package/esm/ui/JexlFilterDialog.d.ts +23 -0
- package/esm/ui/JexlFilterDialog.js +94 -0
- package/esm/ui/LabeledCheckbox.d.ts +9 -0
- package/esm/ui/LabeledCheckbox.js +7 -0
- package/esm/ui/LegendSwatchGlyph.d.ts +7 -0
- package/esm/ui/LegendSwatchGlyph.js +25 -0
- package/esm/ui/LoadingDots.d.ts +1 -0
- package/esm/ui/LoadingDots.js +30 -0
- package/esm/ui/LoadingEllipses.d.ts +17 -1
- package/esm/ui/LoadingEllipses.js +20 -29
- package/esm/ui/LoadingOverlay.d.ts +23 -0
- package/esm/ui/LoadingOverlay.js +137 -0
- package/esm/ui/LoadingProgress.d.ts +16 -0
- package/esm/ui/LoadingProgress.js +16 -0
- package/esm/ui/Logo.d.ts +2 -2
- package/esm/ui/Logo.js +23 -24
- package/esm/ui/Menu.js +1 -1
- package/esm/ui/MenuItemChevron.d.ts +3 -0
- package/esm/ui/MenuItemChevron.js +19 -0
- package/esm/ui/MenuItemEndDecoration.d.ts +4 -0
- package/esm/ui/MenuItemEndDecoration.js +28 -0
- package/esm/ui/MenuItemTrailing.d.ts +12 -0
- package/esm/ui/MenuItemTrailing.js +42 -0
- package/esm/ui/MenuTypes.d.ts +134 -5
- package/esm/ui/MenuTypes.js +16 -1
- package/esm/ui/MonospaceTextField.d.ts +9 -0
- package/esm/ui/MonospaceTextField.js +37 -0
- package/esm/ui/NumberTextField.d.ts +31 -0
- package/esm/ui/NumberTextField.js +33 -0
- package/esm/ui/PaletteContext.d.ts +92 -0
- package/esm/ui/PaletteContext.js +133 -0
- package/esm/ui/PinAdornment.d.ts +5 -0
- package/esm/ui/PinAdornment.js +85 -0
- package/esm/ui/PluggableComponent.d.ts +10 -0
- package/esm/ui/PluggableComponent.js +19 -0
- package/esm/ui/PluggableComponents.d.ts +29 -0
- package/esm/ui/PluggableComponents.js +28 -0
- package/esm/ui/PluggableElements.d.ts +23 -0
- package/esm/ui/PluggableElements.js +24 -0
- package/esm/ui/PluginStoreCard.d.ts +17 -0
- package/esm/ui/PluginStoreCard.js +45 -0
- package/esm/ui/PopoverPicker.d.ts +6 -0
- package/esm/ui/PopoverPicker.js +25 -0
- package/esm/ui/PrerenderedCanvas.d.ts +1 -1
- package/esm/ui/PrerenderedCanvas.js +5 -4
- package/esm/ui/ProgressChip.d.ts +37 -0
- package/esm/ui/ProgressChip.js +66 -0
- package/esm/ui/RedErrorMessageBox.d.ts +1 -1
- package/esm/ui/RedErrorMessageBox.js +9 -3
- package/esm/ui/RefNameAutocomplete/EndAdornment.d.ts +5 -0
- package/esm/ui/RefNameAutocomplete/EndAdornment.js +31 -0
- package/esm/ui/RefNameAutocomplete/HelpDialog.d.ts +3 -0
- package/esm/ui/RefNameAutocomplete/HelpDialog.js +7 -0
- package/esm/ui/RefNameAutocomplete/index.d.ts +22 -0
- package/esm/ui/RefNameAutocomplete/index.js +78 -0
- package/esm/ui/RefNameAutocomplete/util.d.ts +49 -0
- package/esm/ui/RefNameAutocomplete/util.js +168 -0
- package/esm/ui/ReplaceCurrentViewButton.d.ts +19 -0
- package/esm/ui/ReplaceCurrentViewButton.js +22 -0
- package/esm/ui/ResizeHandle.d.ts +13 -7
- package/esm/ui/ResizeHandle.js +42 -55
- package/esm/ui/ReturnToImportFormDialog.d.ts +1 -1
- package/esm/ui/ReturnToImportFormDialog.js +7 -9
- package/esm/ui/SanitizedHTML.d.ts +6 -1
- package/esm/ui/SanitizedHTML.js +7 -47
- package/esm/ui/ScrollEdgeShadow.d.ts +44 -0
- package/esm/ui/ScrollEdgeShadow.js +98 -0
- package/esm/ui/ScrollZoomToggle.d.ts +38 -0
- package/esm/ui/ScrollZoomToggle.js +92 -0
- package/esm/ui/SequenceAdapterInputs.d.ts +9 -0
- package/esm/ui/SequenceAdapterInputs.js +30 -0
- package/esm/ui/SettingsChangesTable.d.ts +14 -0
- package/esm/ui/SettingsChangesTable.js +49 -0
- package/esm/ui/ShareLinkField.d.ts +6 -0
- package/esm/ui/ShareLinkField.js +42 -0
- package/esm/ui/SingleSlider.d.ts +8 -0
- package/esm/ui/SingleSlider.js +11 -0
- package/esm/ui/SizeSliderRow.d.ts +16 -0
- package/esm/ui/SizeSliderRow.js +50 -0
- package/esm/ui/SliderTooltip.d.ts +2 -0
- package/esm/ui/SliderTooltip.js +17 -0
- package/esm/ui/Snackbar.d.ts +4 -2
- package/esm/ui/Snackbar.js +11 -8
- package/esm/ui/SnackbarContents.d.ts +1 -1
- package/esm/ui/SnackbarContents.js +21 -3
- package/esm/ui/SnackbarModel.d.ts +40 -0
- package/esm/ui/SnackbarModel.js +43 -11
- package/esm/ui/StackTraceButton.d.ts +5 -0
- package/esm/ui/StackTraceButton.js +16 -0
- package/esm/ui/StatusProgressBar.d.ts +37 -0
- package/esm/ui/StatusProgressBar.js +76 -0
- package/esm/ui/SubmitDialog.d.ts +6 -0
- package/esm/ui/SubmitDialog.js +9 -0
- package/esm/ui/SubmitForm.d.ts +23 -0
- package/esm/ui/SubmitForm.js +23 -0
- package/esm/ui/SvgColorLegend.d.ts +13 -0
- package/esm/ui/SvgColorLegend.js +65 -0
- package/esm/ui/SvgGradientLegend.d.ts +26 -0
- package/esm/ui/SvgGradientLegend.js +26 -0
- package/esm/ui/TagTextField.d.ts +40 -0
- package/esm/ui/TagTextField.js +32 -0
- package/esm/ui/VerticalScrollbar.d.ts +45 -0
- package/esm/ui/VerticalScrollbar.js +158 -0
- package/esm/ui/ViewLoadingScreen.d.ts +24 -0
- package/esm/ui/ViewLoadingScreen.js +76 -0
- package/esm/ui/addExtensionElement.d.ts +18 -0
- package/esm/ui/addExtensionElement.js +23 -0
- package/esm/ui/buildExtraTrackMenuItems.d.ts +22 -0
- package/esm/ui/buildExtraTrackMenuItems.js +14 -0
- package/esm/ui/colorSwatchStyle.d.ts +9 -0
- package/esm/ui/colorSwatchStyle.js +11 -0
- package/esm/ui/colors.d.ts +61 -8
- package/esm/ui/colors.js +135 -1
- package/esm/ui/extensionSelectors.d.ts +38 -0
- package/esm/ui/extensionSelectors.js +49 -0
- package/esm/ui/filterMenuItems.d.ts +112 -0
- package/esm/ui/filterMenuItems.js +86 -0
- package/esm/ui/formatErrorStack.d.ts +1 -0
- package/esm/ui/formatErrorStack.js +56 -0
- package/esm/ui/gpuFallback.d.ts +33 -0
- package/esm/ui/gpuFallback.js +39 -0
- package/esm/ui/highlightChipReveal.d.ts +32 -0
- package/esm/ui/highlightChipReveal.js +39 -0
- package/esm/ui/hoverBoxStyle.d.ts +11 -0
- package/esm/ui/hoverBoxStyle.js +13 -0
- package/esm/ui/index.d.ts +76 -4
- package/esm/ui/index.js +90 -19
- package/esm/ui/inlineMenuRowWidth.d.ts +1 -0
- package/esm/ui/inlineMenuRowWidth.js +8 -0
- package/esm/ui/launchTargetsMenuItem.d.ts +18 -0
- package/esm/ui/launchTargetsMenuItem.js +24 -0
- package/esm/ui/launchViewMenu.d.ts +4 -0
- package/esm/ui/launchViewMenu.js +42 -0
- package/esm/ui/legendMenuItem.d.ts +38 -0
- package/esm/ui/legendMenuItem.js +44 -0
- package/esm/ui/legendSpec.d.ts +62 -0
- package/esm/ui/legendSpec.js +78 -0
- package/esm/ui/loadingDotKeyframes.d.ts +18 -0
- package/esm/ui/loadingDotKeyframes.js +17 -0
- package/esm/ui/makeSizeMenu.d.ts +30 -0
- package/esm/ui/makeSizeMenu.js +82 -0
- package/esm/ui/mapStackTrace.d.ts +8 -0
- package/esm/ui/mapStackTrace.js +108 -0
- package/esm/ui/measureLegendText.d.ts +1 -0
- package/esm/ui/measureLegendText.js +8 -0
- package/esm/ui/menuItemAdornment.d.ts +33 -0
- package/esm/ui/menuItemAdornment.js +50 -0
- package/esm/ui/menuItems.d.ts +28 -0
- package/esm/ui/menuItems.js +26 -0
- package/esm/ui/menuLabels.d.ts +41 -0
- package/esm/ui/menuLabels.js +43 -0
- package/esm/ui/multiTrackMenuItems.d.ts +19 -0
- package/esm/ui/multiTrackMenuItems.js +15 -0
- package/esm/ui/palette.d.ts +559 -0
- package/esm/ui/palette.js +746 -0
- package/esm/ui/parseError.d.ts +4 -0
- package/esm/ui/parseError.js +18 -0
- package/esm/ui/persistentScrollbarStyle.d.ts +49 -0
- package/esm/ui/persistentScrollbarStyle.js +53 -0
- package/esm/ui/promotableMenuItems.d.ts +19 -0
- package/esm/ui/promotableMenuItems.js +91 -0
- package/esm/ui/promotablePinCoverage.d.ts +44 -0
- package/esm/ui/promotablePinCoverage.js +88 -0
- package/esm/ui/radioSubMenu.d.ts +33 -0
- package/esm/ui/radioSubMenu.js +32 -0
- package/esm/ui/react-colorful.js +5 -1
- package/esm/ui/replaceViewAction.d.ts +31 -0
- package/esm/ui/replaceViewAction.js +39 -0
- package/esm/ui/rewriteExternalAnchors.d.ts +1 -0
- package/esm/ui/rewriteExternalAnchors.js +8 -0
- package/esm/ui/scrollZoomLabels.d.ts +17 -0
- package/esm/ui/scrollZoomLabels.js +22 -0
- package/esm/ui/showSubMenu.d.ts +19 -0
- package/esm/ui/showSubMenu.js +30 -0
- package/esm/ui/sliderScale.d.ts +6 -0
- package/esm/ui/sliderScale.js +30 -0
- package/esm/ui/statusProgressKeyframes.d.ts +6 -0
- package/esm/ui/statusProgressKeyframes.js +14 -0
- package/esm/ui/stripStackTraceMessage.d.ts +1 -0
- package/esm/ui/stripStackTraceMessage.js +9 -0
- package/esm/ui/styleTheme.d.ts +158 -0
- package/esm/ui/styleTheme.js +115 -0
- package/esm/ui/submenuAim.d.ts +30 -0
- package/esm/ui/submenuAim.js +37 -0
- package/esm/ui/theme.d.ts +343 -29
- package/esm/ui/theme.js +258 -342
- package/esm/ui/toggleMenuItems.d.ts +42 -0
- package/esm/ui/toggleMenuItems.js +60 -0
- package/esm/ui/useAssemblySelection.d.ts +153 -0
- package/esm/ui/useAssemblySelection.js +54 -0
- package/esm/ui/useCoalescedPointer.d.ts +36 -0
- package/esm/ui/useCoalescedPointer.js +60 -0
- package/esm/ui/useCopyToClipboard.d.ts +15 -0
- package/esm/ui/useCopyToClipboard.js +41 -0
- package/esm/ui/useExportSvgPreference.d.ts +1 -0
- package/esm/ui/useExportSvgPreference.js +4 -0
- package/esm/ui/useMouseTracking.d.ts +71 -0
- package/esm/ui/useMouseTracking.js +179 -0
- package/esm/ui/useRecentLocations.d.ts +28 -0
- package/esm/ui/useRecentLocations.js +31 -0
- package/esm/ui/wrapComponent.d.ts +47 -0
- package/esm/ui/wrapComponent.js +58 -0
- package/esm/ui/zIndexes.d.ts +28 -0
- package/esm/ui/zIndexes.js +38 -0
- package/esm/util/Base1DUtils.d.ts +204 -16
- package/esm/util/Base1DUtils.js +310 -175
- package/esm/util/Base1DViewModel.d.ts +97 -20
- package/esm/util/Base1DViewModel.js +148 -39
- package/esm/util/FileSaver/index.d.ts +1 -0
- package/esm/util/FileSaver/index.js +27 -0
- package/esm/util/IntervalTree.d.ts +18 -39
- package/esm/util/IntervalTree.js +63 -244
- package/esm/util/SvgCanvas.d.ts +81 -0
- package/esm/util/SvgCanvas.js +500 -0
- package/esm/util/TimeTraveller.d.ts +12 -0
- package/esm/util/TimeTraveller.js +130 -27
- package/esm/util/aborting.d.ts +17 -4
- package/esm/util/aborting.js +30 -25
- package/esm/util/adapterMetadata.d.ts +20 -0
- package/esm/util/adapterMetadata.js +39 -0
- package/esm/util/addAndShowTrack.d.ts +22 -0
- package/esm/util/addAndShowTrack.js +27 -0
- package/esm/util/addRelativeUris.d.ts +17 -0
- package/esm/util/addRelativeUris.js +42 -0
- package/esm/util/addTrackComponent.d.ts +72 -0
- package/esm/util/addTrackComponent.js +53 -0
- package/esm/util/addTrackFromWidget.d.ts +94 -0
- package/esm/util/addTrackFromWidget.js +90 -0
- package/esm/util/analytics.d.ts +32 -3
- package/esm/util/analytics.js +102 -49
- package/esm/util/animationAllowed.d.ts +17 -0
- package/esm/util/animationAllowed.js +22 -0
- package/esm/util/applyRowResizeWheel.d.ts +10 -0
- package/esm/util/applyRowResizeWheel.js +34 -0
- package/esm/util/assemblyConfigUtils.d.ts +144 -0
- package/esm/util/assemblyConfigUtils.js +498 -0
- package/esm/util/bandHeight.d.ts +53 -0
- package/esm/util/bandHeight.js +56 -0
- package/esm/util/bandLayout.d.ts +51 -0
- package/esm/util/bandLayout.js +36 -0
- package/esm/util/bezierConnector.d.ts +14 -0
- package/esm/util/bezierConnector.js +108 -0
- package/esm/util/bgzfWorkerPool.d.ts +78 -0
- package/esm/util/bgzfWorkerPool.js +81 -0
- package/esm/util/blockTypes.d.ts +64 -45
- package/esm/util/blockTypes.js +67 -74
- package/esm/util/bpUtils.d.ts +81 -0
- package/esm/util/bpUtils.js +103 -0
- package/esm/util/cacheBudgets.d.ts +55 -0
- package/esm/util/cacheBudgets.js +55 -0
- package/esm/util/cachedSetup.d.ts +51 -0
- package/esm/util/cachedSetup.js +87 -0
- package/esm/util/calculateDynamicBlocks.d.ts +5 -0
- package/esm/util/calculateDynamicBlocks.js +85 -82
- package/esm/util/calculateStaticBlocks.d.ts +2 -3
- package/esm/util/calculateStaticBlocks.js +48 -71
- package/esm/util/chooseGridPitch.d.ts +9 -0
- package/esm/util/chooseGridPitch.js +31 -0
- package/esm/util/clampToContig.d.ts +26 -0
- package/esm/util/clampToContig.js +28 -0
- package/esm/util/cmpStr.d.ts +1 -0
- package/esm/util/cmpStr.js +7 -0
- package/esm/util/coarseStripHTML.js +3 -15
- package/esm/util/color/cssColorsLevel4.js +6 -2
- package/esm/util/color/index.d.ts +81 -2
- package/esm/util/color/index.js +194 -25
- package/esm/util/color-bits/bit.d.ts +4 -0
- package/esm/util/color-bits/bit.js +37 -0
- package/esm/util/color-bits/convert.d.ts +23 -0
- package/esm/util/color-bits/convert.js +294 -0
- package/esm/util/color-bits/core.d.ts +34 -0
- package/esm/util/color-bits/core.js +67 -0
- package/esm/util/color-bits/format.d.ts +24 -0
- package/esm/util/color-bits/format.js +82 -0
- package/esm/util/color-bits/functions.d.ts +33 -0
- package/esm/util/color-bits/functions.js +70 -0
- package/esm/util/color-bits/index.d.ts +5 -0
- package/esm/util/color-bits/index.js +4 -0
- package/esm/util/color-bits/parse.d.ts +17 -0
- package/esm/util/color-bits/parse.js +382 -0
- package/esm/util/colorBits.d.ts +39 -0
- package/esm/util/colorBits.js +180 -0
- package/esm/util/colorRamp.d.ts +37 -0
- package/esm/util/colorRamp.js +93 -0
- package/esm/util/colord.d.ts +8 -0
- package/esm/util/colord.js +43 -191
- package/esm/util/convertCodingSequenceToPeptides.d.ts +17 -3
- package/esm/util/convertCodingSequenceToPeptides.js +51 -4
- package/esm/util/copyText.d.ts +18 -0
- package/esm/util/copyText.js +30 -0
- package/esm/util/copyToClipboard.d.ts +4 -0
- package/esm/util/copyToClipboard.js +58 -0
- package/esm/util/createStopTokenRotation.d.ts +118 -0
- package/esm/util/createStopTokenRotation.js +127 -0
- package/esm/util/createSvgRasterCanvas.d.ts +7 -0
- package/esm/util/createSvgRasterCanvas.js +22 -0
- package/esm/util/crypto.d.ts +24 -0
- package/esm/util/crypto.js +85 -2
- package/esm/util/dataGridUtils.d.ts +9 -0
- package/esm/util/dataGridUtils.js +36 -0
- package/esm/util/dedupe.js +1 -0
- package/esm/util/deepEqual.d.ts +8 -0
- package/esm/util/deepEqual.js +22 -0
- package/esm/util/deepMerge.d.ts +20 -0
- package/esm/util/deepMerge.js +44 -0
- package/esm/util/diagonalizeRegions.d.ts +23 -0
- package/esm/util/diagonalizeRegions.js +192 -0
- package/esm/util/environment.d.ts +4 -0
- package/esm/util/environment.js +43 -0
- package/esm/util/eventPoint.d.ts +32 -0
- package/esm/util/eventPoint.js +28 -0
- package/esm/util/fetchAndMaybeUnzip.d.ts +6 -0
- package/esm/util/fetchAndMaybeUnzip.js +64 -0
- package/esm/util/fetchContext.d.ts +82 -0
- package/esm/util/fetchContext.js +59 -0
- package/esm/util/fetchHub.d.ts +15 -0
- package/esm/util/fetchHub.js +31 -0
- package/esm/util/fetchJson.d.ts +1 -0
- package/esm/util/fetchJson.js +7 -0
- package/esm/util/fetchPhases.d.ts +77 -0
- package/esm/util/fetchPhases.js +1 -0
- package/esm/util/fetchSeq.d.ts +5 -1
- package/esm/util/fetchSeq.js +18 -6
- package/esm/util/fileHandleStore.d.ts +19 -2
- package/esm/util/fileHandleStore.js +95 -35
- package/esm/util/flatbush/index.d.ts +27 -6
- package/esm/util/flatbush/index.js +194 -218
- package/esm/util/formatBytes.d.ts +9 -0
- package/esm/util/formatBytes.js +18 -0
- package/esm/util/formatFastaStrings.d.ts +13 -0
- package/esm/util/formatFastaStrings.js +13 -0
- package/esm/util/formatGuessers.d.ts +30 -0
- package/esm/util/formatGuessers.js +69 -0
- package/esm/util/formatRelativeTime.d.ts +1 -0
- package/esm/util/formatRelativeTime.js +25 -0
- package/esm/util/frameCoalescer.d.ts +30 -0
- package/esm/util/frameCoalescer.js +22 -0
- package/esm/util/freezeDeep.d.ts +28 -0
- package/esm/util/freezeDeep.js +41 -0
- package/esm/util/geneticCodes.d.ts +56 -0
- package/esm/util/geneticCodes.js +371 -0
- package/esm/util/getFileName.d.ts +11 -0
- package/esm/util/getFileName.js +34 -0
- package/esm/util/getLocationUri.d.ts +49 -0
- package/esm/util/getLocationUri.js +63 -0
- package/esm/util/getRelativeX.d.ts +4 -0
- package/esm/util/getRelativeX.js +7 -0
- package/esm/util/getStr.d.ts +6 -0
- package/esm/util/getStr.js +15 -0
- package/esm/util/highlights.d.ts +21 -0
- package/esm/util/highlights.js +100 -0
- package/esm/util/hooks.d.ts +168 -0
- package/esm/util/hooks.js +443 -0
- package/esm/util/htmlText.d.ts +13 -0
- package/esm/util/htmlText.js +66 -0
- package/esm/util/idMaker.d.ts +1 -1
- package/esm/util/idMaker.js +31 -18
- package/esm/util/index.d.ts +81 -268
- package/esm/util/index.js +135 -853
- package/esm/util/indexCandidates.d.ts +50 -0
- package/esm/util/indexCandidates.js +101 -0
- package/esm/util/installClearHoverOnSurfaceMove.d.ts +40 -0
- package/esm/util/installClearHoverOnSurfaceMove.js +41 -0
- package/esm/util/installFetch.d.ts +220 -0
- package/esm/util/installFetch.js +206 -0
- package/esm/util/installInitAutorun.d.ts +62 -0
- package/esm/util/installInitAutorun.js +107 -0
- package/esm/util/intervals.d.ts +20 -0
- package/esm/util/intervals.js +37 -0
- package/esm/util/io/RemoteFileWithRangeCache.d.ts +10 -11
- package/esm/util/io/RemoteFileWithRangeCache.js +10 -148
- package/esm/util/io/index.d.ts +39 -2
- package/esm/util/io/index.js +115 -12
- package/esm/util/isDataCurrent.d.ts +7 -0
- package/esm/util/isDataCurrent.js +9 -0
- package/esm/util/isWebWorker.js +1 -2
- package/esm/util/iupac.d.ts +4 -0
- package/esm/util/iupac.js +59 -0
- package/esm/util/jexl.js +141 -17
- package/esm/util/jexlFilters.d.ts +75 -0
- package/esm/util/jexlFilters.js +49 -0
- package/esm/util/jexlStrings.d.ts +22 -1
- package/esm/util/jexlStrings.js +21 -14
- package/esm/util/layouts/GranularRectLayout.d.ts +13 -25
- package/esm/util/layouts/GranularRectLayout.js +99 -356
- package/esm/util/layouts/index.d.ts +1 -7
- package/esm/util/layouts/index.js +2 -6
- package/esm/util/layouts/intervalUtils.d.ts +12 -1
- package/esm/util/layouts/intervalUtils.js +13 -31
- package/esm/util/layouts/placeRect.d.ts +50 -0
- package/esm/util/layouts/placeRect.js +97 -0
- package/esm/util/lazyAfterAttach.d.ts +13 -0
- package/esm/util/lazyAfterAttach.js +31 -0
- package/esm/util/leadingEdgeAutorun.d.ts +40 -0
- package/esm/util/leadingEdgeAutorun.js +51 -0
- package/esm/util/legendCandidates.d.ts +50 -0
- package/esm/util/legendCandidates.js +87 -0
- package/esm/util/librpc.d.ts +5 -2
- package/esm/util/librpc.js +6 -1
- package/esm/util/linkify.js +2 -0
- package/esm/util/locString.d.ts +72 -0
- package/esm/util/locString.js +178 -7
- package/esm/util/locStringsToRegions.d.ts +10 -0
- package/esm/util/locStringsToRegions.js +35 -0
- package/esm/util/localStorage.d.ts +36 -0
- package/esm/util/localStorage.js +137 -0
- package/esm/util/makeAssembly.d.ts +54 -0
- package/esm/util/makeAssembly.js +52 -0
- package/esm/util/makeTrackId.d.ts +14 -0
- package/esm/util/makeTrackId.js +14 -0
- package/esm/util/matchTrackId.d.ts +11 -0
- package/esm/util/matchTrackId.js +14 -0
- package/esm/util/measureText.d.ts +24 -0
- package/esm/util/measureText.js +51 -0
- package/esm/util/mst-reflection.d.ts +14 -4
- package/esm/util/mst-reflection.js +33 -32
- package/esm/util/mstUtils.d.ts +100 -0
- package/esm/util/mstUtils.js +140 -0
- package/esm/util/nanoid.d.ts +0 -4
- package/esm/util/nanoid.js +10 -20
- package/esm/util/numericUtils.d.ts +20 -0
- package/esm/util/numericUtils.js +127 -0
- package/esm/util/objectUtils.d.ts +2 -0
- package/esm/util/objectUtils.js +9 -0
- package/esm/util/offscreenCanvasPonyfill.d.ts +5 -4
- package/esm/util/offscreenCanvasPonyfill.js +5 -47
- package/esm/util/openDisplays.d.ts +23 -0
- package/esm/util/openDisplays.js +79 -0
- package/esm/util/openFeatureWidget.d.ts +33 -0
- package/esm/util/openFeatureWidget.js +64 -0
- package/esm/util/paintLayer.d.ts +32 -0
- package/esm/util/paintLayer.js +33 -0
- package/esm/util/parentWalk.d.ts +32 -0
- package/esm/util/parentWalk.js +84 -0
- package/esm/util/parseLineByLine.d.ts +45 -2
- package/esm/util/parseLineByLine.js +156 -15
- package/esm/util/parseMotifList.d.ts +17 -0
- package/esm/util/parseMotifList.js +69 -0
- package/esm/util/pluginStore.d.ts +114 -0
- package/esm/util/pluginStore.js +260 -0
- package/esm/util/pointerPresence.d.ts +5 -0
- package/esm/util/pointerPresence.js +21 -0
- package/esm/util/progress.d.ts +459 -0
- package/esm/util/progress.js +820 -0
- package/esm/util/range.d.ts +46 -1
- package/esm/util/range.js +68 -2
- package/esm/util/renameRegions.d.ts +21 -0
- package/esm/util/renameRegions.js +129 -0
- package/esm/util/renderToStaticMarkup.d.ts +2 -0
- package/esm/util/renderToStaticMarkup.js +50 -0
- package/esm/util/reorder.d.ts +35 -0
- package/esm/util/reorder.js +83 -0
- package/esm/util/resolveRowHeight.d.ts +27 -0
- package/esm/util/resolveRowHeight.js +30 -0
- package/esm/util/revlist.d.ts +13 -0
- package/esm/util/revlist.js +14 -0
- package/esm/util/rowStackGeometry.d.ts +66 -0
- package/esm/util/rowStackGeometry.js +70 -0
- package/esm/util/rpc.d.ts +16 -1
- package/esm/util/rpc.js +12 -1
- package/esm/util/rxjs.d.ts +30 -1
- package/esm/util/rxjs.js +88 -10
- package/esm/util/sameStrings.d.ts +16 -0
- package/esm/util/sameStrings.js +20 -0
- package/esm/util/scrollLatch.d.ts +4 -0
- package/esm/util/scrollLatch.js +59 -0
- package/esm/util/selectNamedRegions.d.ts +136 -0
- package/esm/util/selectNamedRegions.js +222 -0
- package/esm/util/seqUtils.d.ts +17 -0
- package/esm/util/seqUtils.js +80 -0
- package/esm/util/sessionServices.d.ts +29 -0
- package/esm/util/sessionServices.js +46 -0
- package/esm/util/sessionSharing.d.ts +38 -0
- package/esm/util/sessionSharing.js +154 -0
- package/esm/util/sessionStorage.d.ts +1 -0
- package/esm/util/sessionStorage.js +15 -0
- package/esm/util/setStackTraceLimit.d.ts +6 -0
- package/esm/util/setStackTraceLimit.js +20 -0
- package/esm/util/simpleFeature.d.ts +112 -4
- package/esm/util/simpleFeature.js +181 -29
- package/esm/util/springAnimate.d.ts +20 -0
- package/esm/util/springAnimate.js +80 -0
- package/esm/util/stats.d.ts +25 -2
- package/esm/util/stats.js +39 -8
- package/esm/util/stopToken.d.ts +207 -15
- package/esm/util/stopToken.js +403 -55
- package/esm/util/stringUtils.d.ts +5 -0
- package/esm/util/stringUtils.js +34 -0
- package/esm/util/svgColorProps.d.ts +7 -0
- package/esm/util/svgColorProps.js +28 -0
- package/esm/util/tabix.d.ts +126 -0
- package/esm/util/tabix.js +149 -0
- package/esm/util/tags.d.ts +2 -0
- package/esm/util/tags.js +5 -0
- package/esm/util/temporaryAssembly.d.ts +21 -0
- package/esm/util/temporaryAssembly.js +29 -0
- package/esm/util/tickLabels.d.ts +36 -0
- package/esm/util/tickLabels.js +45 -0
- package/esm/util/timeGate.d.ts +26 -0
- package/esm/util/timeGate.js +79 -0
- package/esm/util/trackConfigDelta.d.ts +84 -0
- package/esm/util/trackConfigDelta.js +190 -0
- package/esm/util/tracks.d.ts +398 -30
- package/esm/util/tracks.js +699 -191
- package/esm/util/tss-react/cssAndCx.js +11 -66
- package/esm/util/tss-react/index.d.ts +11 -2
- package/esm/util/tss-react/index.js +9 -2
- package/esm/util/tss-react/makeStyles.js +7 -4
- package/esm/util/tss-react/mergeClasses.js +1 -0
- package/esm/util/tss-react/tools/classnames.d.ts +3 -0
- package/esm/util/tss-react/tools/classnames.js +3 -0
- package/esm/util/tss-react/tools/getDependencyArrayRef.d.ts +18 -0
- package/esm/util/tss-react/tools/getDependencyArrayRef.js +19 -0
- package/esm/util/tss-react/types.d.ts +1 -1
- package/esm/util/tss-react/types.js +1 -6
- package/esm/util/types/ElementId.js +1 -1
- package/esm/util/types/data.d.ts +75 -0
- package/esm/util/types/data.js +41 -0
- package/esm/util/types/index.d.ts +402 -120
- package/esm/util/types/index.js +90 -64
- package/esm/util/types/isAny.d.ts +11 -0
- package/esm/util/types/isAny.js +1 -0
- package/esm/util/types/mst.d.ts +71 -47
- package/esm/util/types/mst.js +27 -22
- package/esm/util/types/predicate.d.ts +9 -0
- package/esm/util/types/predicate.js +1 -0
- package/esm/util/types/renderingServices.d.ts +16 -0
- package/esm/util/types/renderingServices.js +1 -0
- package/esm/util/types/services.d.ts +55 -0
- package/esm/util/types/services.js +10 -0
- package/esm/util/types/util.d.ts +8 -2
- package/esm/util/unknownSnapshotKeys.d.ts +36 -0
- package/esm/util/unknownSnapshotKeys.js +69 -0
- package/esm/util/unzip.d.ts +1 -0
- package/esm/util/unzip.js +6 -0
- package/esm/util/useEventCallback.d.ts +1 -0
- package/esm/util/useEventCallback.js +16 -0
- package/esm/util/useFeatureSequence.d.ts +13 -7
- package/esm/util/useFeatureSequence.js +56 -78
- package/esm/util/useFetch.d.ts +56 -0
- package/esm/util/useFetch.js +188 -0
- package/esm/util/useFetchPlugins.d.ts +12 -0
- package/esm/util/useFetchPlugins.js +14 -0
- package/esm/util/useMeasure.d.ts +11 -1
- package/esm/util/useMeasure.js +20 -6
- package/esm/util/usePanZoom.d.ts +75 -0
- package/esm/util/usePanZoom.js +175 -0
- package/esm/util/usePanelVirtualScroll.d.ts +37 -0
- package/esm/util/usePanelVirtualScroll.js +42 -0
- package/esm/util/usePointerDrag.d.ts +37 -0
- package/esm/util/usePointerDrag.js +61 -0
- package/esm/util/useRafCommit.d.ts +4 -0
- package/esm/util/useRafCommit.js +50 -0
- package/esm/util/useResizeDrag.d.ts +91 -0
- package/esm/util/useResizeDrag.js +105 -0
- package/esm/util/useRowVirtualScroll.d.ts +32 -0
- package/esm/util/useRowVirtualScroll.js +63 -0
- package/esm/util/useVirtualScrollWheel.d.ts +7 -0
- package/esm/util/useVirtualScrollWheel.js +108 -0
- package/esm/util/viewStatus.d.ts +81 -0
- package/esm/util/viewStatus.js +37 -0
- package/esm/util/virtualRange.d.ts +36 -0
- package/esm/util/virtualRange.js +26 -0
- package/esm/util/webStorage.d.ts +26 -0
- package/esm/util/webStorage.js +92 -0
- package/esm/util/wheelZoom.d.ts +59 -0
- package/esm/util/wheelZoom.js +231 -0
- package/esm/util/whenViewSettled.d.ts +40 -0
- package/esm/util/whenViewSettled.js +41 -0
- package/esm/util/withFeatureDetails.d.ts +34 -0
- package/esm/util/withFeatureDetails.js +59 -0
- package/esm/util/withLaunchInput.d.ts +123 -0
- package/esm/util/withLaunchInput.js +228 -0
- package/package.json +243 -820
- package/esm/ReExports/DataGrid.d.ts +0 -1
- package/esm/ReExports/DataGrid.js +0 -1
- package/esm/configuration/util.d.ts +0 -10
- package/esm/configuration/util.js +0 -123
- package/esm/data_adapters/BaseAdapter/BaseOptions.d.ts +0 -18
- package/esm/data_adapters/util.d.ts +0 -1
- package/esm/data_adapters/util.js +0 -6
- package/esm/pluggableElementTypes/GlyphType.d.ts +0 -43
- package/esm/pluggableElementTypes/GlyphType.js +0 -18
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/fetchSequence.d.ts +0 -5
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/fetchSequence.js +0 -17
- package/esm/pluggableElementTypes/renderers/BoxRendererType.d.ts +0 -52
- package/esm/pluggableElementTypes/renderers/BoxRendererType.js +0 -78
- package/esm/pluggableElementTypes/renderers/CircularChordRendererType.d.ts +0 -4
- package/esm/pluggableElementTypes/renderers/CircularChordRendererType.js +0 -4
- package/esm/pluggableElementTypes/renderers/FeatureRendererType.d.ts +0 -58
- package/esm/pluggableElementTypes/renderers/FeatureRendererType.js +0 -77
- package/esm/pluggableElementTypes/renderers/LayoutSession.d.ts +0 -31
- package/esm/pluggableElementTypes/renderers/LayoutSession.js +0 -40
- package/esm/pluggableElementTypes/renderers/RendererType.d.ts +0 -28
- package/esm/pluggableElementTypes/renderers/RendererType.js +0 -20
- package/esm/pluggableElementTypes/renderers/ServerSideRendererType.d.ts +0 -58
- package/esm/pluggableElementTypes/renderers/ServerSideRendererType.js +0 -108
- package/esm/pluggableElementTypes/renderers/index.d.ts +0 -6
- package/esm/pluggableElementTypes/renderers/index.js +0 -6
- package/esm/pluggableElementTypes/renderers/util.d.ts +0 -3
- package/esm/pluggableElementTypes/renderers/util.js +0 -14
- package/esm/rpc/baseRpcConfig.d.ts +0 -8
- package/esm/rpc/baseRpcConfig.js +0 -10
- package/esm/rpc/mainThreadRpcConfig.d.ts +0 -8
- package/esm/rpc/mainThreadRpcConfig.js +0 -8
- package/esm/rpc/methods/CoreGetFeatureDensityStats.d.ts +0 -17
- package/esm/rpc/methods/CoreGetFeatureDensityStats.js +0 -25
- package/esm/rpc/methods/CoreGetFeatureDetails.d.ts +0 -11
- package/esm/rpc/methods/CoreGetFeatureDetails.js +0 -24
- package/esm/rpc/methods/CoreGetFileInfo.d.ts +0 -9
- package/esm/rpc/methods/CoreGetFileInfo.js +0 -15
- package/esm/rpc/methods/CoreRender.d.ts +0 -14
- package/esm/rpc/methods/CoreRender.js +0 -40
- package/esm/rpc/methods/CoreSaveFeatureData.d.ts +0 -16
- package/esm/rpc/methods/CoreSaveFeatureData.js +0 -32
- package/esm/rpc/methods/util.d.ts +0 -15
- package/esm/rpc/methods/util.js +0 -7
- package/esm/rpc/webWorkerRpcConfig.d.ts +0 -8
- package/esm/rpc/webWorkerRpcConfig.js +0 -8
- package/esm/ui/MenuButton.d.ts +0 -1
- package/esm/ui/MenuButton.js +0 -1
- package/esm/ui/MenuItems.d.ts +0 -15
- package/esm/ui/MenuItems.js +0 -59
- package/esm/ui/useEvent.d.ts +0 -1
- package/esm/ui/useEvent.js +0 -10
- package/esm/util/blobToDataURL.d.ts +0 -1
- package/esm/util/blobToDataURL.js +0 -14
- package/esm/util/compositeMap.d.ts +0 -11
- package/esm/util/compositeMap.js +0 -59
- package/esm/util/flatqueue/index.d.ts +0 -11
- package/esm/util/flatqueue/index.js +0 -61
- package/esm/util/layouts/BaseLayout.d.ts +0 -30
- package/esm/util/layouts/MultiLayout.d.ts +0 -12
- package/esm/util/layouts/MultiLayout.js +0 -40
- package/esm/util/layouts/PileupLayout.d.ts +0 -41
- package/esm/util/layouts/PileupLayout.js +0 -202
- package/esm/util/layouts/PrecomputedLayout.d.ts +0 -30
- package/esm/util/layouts/PrecomputedLayout.js +0 -71
- package/esm/util/layouts/SceneGraph.d.ts +0 -31
- package/esm/util/layouts/SceneGraph.js +0 -121
- package/esm/util/makeAbortableReaction.d.ts +0 -3
- package/esm/util/makeAbortableReaction.js +0 -47
- package/esm/util/map-obj/index.d.ts +0 -13
- package/esm/util/map-obj/index.js +0 -92
- package/esm/util/nextTick.d.ts +0 -1
- package/esm/util/nextTick.js +0 -3
- package/esm/util/offscreenCanvasGetSerializingSvg.d.ts +0 -5
- package/esm/util/offscreenCanvasGetSerializingSvg.js +0 -9
- package/esm/util/offscreenCanvasUtils.d.ts +0 -12
- package/esm/util/offscreenCanvasUtils.js +0 -19
- package/esm/util/renderToAbstractCanvas.d.ts +0 -17
- package/esm/util/renderToAbstractCanvas.js +0 -53
- package/esm/util/transferables.d.ts +0 -2
- package/esm/util/transferables.js +0 -35
- package/esm/util/tss-react/mui/index.d.ts +0 -1
- package/esm/util/tss-react/mui/index.js +0 -1
- package/esm/util/tss-react/mui/mui.d.ts +0 -10
- package/esm/util/tss-react/mui/mui.js +0 -5
- package/esm/util/when.d.ts +0 -1
- package/esm/util/when.js +0 -1
- /package/esm/{data_adapters/BaseAdapter/BaseOptions.js → configuration/promotablePin.js} +0 -0
- /package/esm/{util/layouts/BaseLayout.js → data_adapters/BaseAdapter/CytobandAdapter.js} +0 -0
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { IStateTreeNode } from '@jbrowse/mobx-state-tree';
|
|
2
|
+
interface InitAutorunHost<T> extends IStateTreeNode {
|
|
3
|
+
pendingLaunch?: T;
|
|
4
|
+
setLaunch: (launch?: T) => void;
|
|
5
|
+
setError: (error: unknown) => void;
|
|
6
|
+
}
|
|
7
|
+
export interface InitApplyContext {
|
|
8
|
+
/**
|
|
9
|
+
* True once this init can no longer be the one being applied: the node is
|
|
10
|
+
* gone, or a newer `setLaunch` has replaced it. Any mid-apply wait that can
|
|
11
|
+
* park indefinitely must fold this into its condition — an unbounded wait on
|
|
12
|
+
* state that never arrives holds the drain open, and the newer init that
|
|
13
|
+
* would have superseded it is exactly what gets stranded. This is the causal
|
|
14
|
+
* form of the wait ceiling; a fixed timeout bounds the same hazard only by
|
|
15
|
+
* guessing, and pays for it by expiring on slow-but-healthy loads.
|
|
16
|
+
*/
|
|
17
|
+
superseded: () => boolean;
|
|
18
|
+
}
|
|
19
|
+
interface InitAutorunOptions<T> {
|
|
20
|
+
/** autorun name, for the MobX devtools/spy stream */
|
|
21
|
+
name: string;
|
|
22
|
+
/**
|
|
23
|
+
* Read synchronously at the top of the autorun, so whatever it touches is
|
|
24
|
+
* the dependency set that re-fires this. Typically the measured width plus
|
|
25
|
+
* whatever the view needs before `apply` can run.
|
|
26
|
+
*/
|
|
27
|
+
ready: () => boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Whether the view has materialized — the same line each view's
|
|
30
|
+
* postProcessSnapshot draws for persistence (dotplot: assemblyNames set;
|
|
31
|
+
* synteny: rows built). Decides the failure policy, see below.
|
|
32
|
+
*/
|
|
33
|
+
materialized: () => boolean;
|
|
34
|
+
/** Apply one init blob. Owns the ordered steps; never clears `init`. */
|
|
35
|
+
apply: (init: T, ctx: InitApplyContext) => Promise<void>;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* The launch state machine shared by the views that take a declarative launch
|
|
39
|
+
* blob (LinearGenomeView, DotplotView, LinearSyntenyView): the re-entry guard,
|
|
40
|
+
* the readiness gate, the serialized drain, the identity-checked clear, the
|
|
41
|
+
* isAlive guards, and one failure policy.
|
|
42
|
+
*
|
|
43
|
+
* The failure policy keys off `materialized`, the same line each view's
|
|
44
|
+
* postProcessSnapshot already draws for persistence:
|
|
45
|
+
*
|
|
46
|
+
* - Not materialized — nothing is on screen and `launch` is still persisted, so
|
|
47
|
+
* keep it for a reload retry and `setError`. That flips the view onto its
|
|
48
|
+
* import form, which renders the error in its own banner; a snackbar would
|
|
49
|
+
* state the same failure twice and the banner is the one that persists.
|
|
50
|
+
* - Materialized — the view works, so a later failure is one sub-step's
|
|
51
|
+
* problem and must not take the view down with it. `setError` would, since
|
|
52
|
+
* showImportForm keys off `error` alone and would discard rows that loaded
|
|
53
|
+
* fine, so report it as a snackbar instead. Clearing `launch` is also what
|
|
54
|
+
* disarms the re-fire: `ready` usually folds in the measured width, so
|
|
55
|
+
* leaving it set lets any resize re-run `apply` over a half-applied blob.
|
|
56
|
+
*
|
|
57
|
+
* `apply` therefore never clears `launch` and never catches for reporting — it
|
|
58
|
+
* catches only the failures it wants to keep going through (a bad locstring in
|
|
59
|
+
* one row), and everything it lets escape is fatal-as-of-that-point.
|
|
60
|
+
*/
|
|
61
|
+
export declare function installInitAutorun<T>(self: InitAutorunHost<T>, opts: InitAutorunOptions<T>): void;
|
|
62
|
+
export {};
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { addDisposer, isAlive } from '@jbrowse/mobx-state-tree';
|
|
2
|
+
import { autorun } from 'mobx';
|
|
3
|
+
import { getNotificationSink } from './sessionServices.js';
|
|
4
|
+
// Clear only when the pending blob is still the exact object we applied. A
|
|
5
|
+
// setLaunch that lands while `apply` is awaiting (React StrictMode remounts, a
|
|
6
|
+
// programmatic re-launch) swaps in a new object; clearing unconditionally would
|
|
7
|
+
// silently drop it. Leaving it lets the drain loop apply it next.
|
|
8
|
+
function clearIfUnchanged(self, init) {
|
|
9
|
+
if (isAlive(self) && self.pendingLaunch === init) {
|
|
10
|
+
self.setLaunch(undefined);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
async function applyInitOnce(self, init, { apply, materialized }) {
|
|
14
|
+
try {
|
|
15
|
+
await apply(init, {
|
|
16
|
+
superseded: () => !isAlive(self) || self.pendingLaunch !== init,
|
|
17
|
+
});
|
|
18
|
+
clearIfUnchanged(self, init);
|
|
19
|
+
}
|
|
20
|
+
catch (e) {
|
|
21
|
+
// the autorun body is async, so anything escaping here becomes an
|
|
22
|
+
// unhandled rejection: no report at all, and the drain stops with the view
|
|
23
|
+
// half-initialized
|
|
24
|
+
console.error(e);
|
|
25
|
+
if (isAlive(self)) {
|
|
26
|
+
if (materialized()) {
|
|
27
|
+
clearIfUnchanged(self, init);
|
|
28
|
+
getNotificationSink(self).notifyError(`${e}`, e);
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
self.setError(e);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
function currentInit(self, { ready }) {
|
|
37
|
+
return isAlive(self) && ready() ? self.pendingLaunch : undefined;
|
|
38
|
+
}
|
|
39
|
+
// Apply pending inits one at a time until none remain. Serializing (rather
|
|
40
|
+
// than letting the autorun run `apply` concurrently) is what keeps re-entrant
|
|
41
|
+
// width churn safe: overlapping applies duplicate whatever the init appends
|
|
42
|
+
// (LGV's highlights did exactly this) and, where `apply` rebuilds sub-views,
|
|
43
|
+
// the second run detaches the models the first is still awaiting. Looping also
|
|
44
|
+
// guarantees an init set mid-apply is eventually applied instead of stranded.
|
|
45
|
+
async function drainInit(self, opts) {
|
|
46
|
+
let pending = currentInit(self, opts);
|
|
47
|
+
while (pending !== undefined) {
|
|
48
|
+
await applyInitOnce(self, pending, opts);
|
|
49
|
+
const next = currentInit(self, opts);
|
|
50
|
+
// a fatal failure keeps `launch` for a reload retry; the same object still
|
|
51
|
+
// sitting there means it was not consumed, so stop rather than spin on it
|
|
52
|
+
pending = next === pending ? undefined : next;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* The launch state machine shared by the views that take a declarative launch
|
|
57
|
+
* blob (LinearGenomeView, DotplotView, LinearSyntenyView): the re-entry guard,
|
|
58
|
+
* the readiness gate, the serialized drain, the identity-checked clear, the
|
|
59
|
+
* isAlive guards, and one failure policy.
|
|
60
|
+
*
|
|
61
|
+
* The failure policy keys off `materialized`, the same line each view's
|
|
62
|
+
* postProcessSnapshot already draws for persistence:
|
|
63
|
+
*
|
|
64
|
+
* - Not materialized — nothing is on screen and `launch` is still persisted, so
|
|
65
|
+
* keep it for a reload retry and `setError`. That flips the view onto its
|
|
66
|
+
* import form, which renders the error in its own banner; a snackbar would
|
|
67
|
+
* state the same failure twice and the banner is the one that persists.
|
|
68
|
+
* - Materialized — the view works, so a later failure is one sub-step's
|
|
69
|
+
* problem and must not take the view down with it. `setError` would, since
|
|
70
|
+
* showImportForm keys off `error` alone and would discard rows that loaded
|
|
71
|
+
* fine, so report it as a snackbar instead. Clearing `launch` is also what
|
|
72
|
+
* disarms the re-fire: `ready` usually folds in the measured width, so
|
|
73
|
+
* leaving it set lets any resize re-run `apply` over a half-applied blob.
|
|
74
|
+
*
|
|
75
|
+
* `apply` therefore never clears `launch` and never catches for reporting — it
|
|
76
|
+
* catches only the failures it wants to keep going through (a bad locstring in
|
|
77
|
+
* one row), and everything it lets escape is fatal-as-of-that-point.
|
|
78
|
+
*/
|
|
79
|
+
export function installInitAutorun(self, opts) {
|
|
80
|
+
// `draining` is a plain closure flag, intentionally NOT observable so it
|
|
81
|
+
// stays out of the dependency graph. The autorun observes init + whatever
|
|
82
|
+
// `ready` reads, so it re-fires when either changes, but a re-entrant pass
|
|
83
|
+
// while a drain is in flight is a no-op — drainInit already consumes
|
|
84
|
+
// whatever init is current. The flag is load-bearing, not incidental:
|
|
85
|
+
// `ready` flips true→false→true when the measured width resets (StrictMode
|
|
86
|
+
// remount, a workspace tab being shown again), which re-fires this whether it
|
|
87
|
+
// is an autorun or a reaction.
|
|
88
|
+
let draining = false;
|
|
89
|
+
addDisposer(self, autorun(async function initAutorun() {
|
|
90
|
+
// read both unconditionally: they are the dependency set, and a run
|
|
91
|
+
// that bails still has to be woken by the thing it bailed on. Teardown
|
|
92
|
+
// mutates observables `ready` reads before the disposers run, and
|
|
93
|
+
// reading a detached node throws — here into an unawaited promise.
|
|
94
|
+
const alive = isAlive(self);
|
|
95
|
+
const isReady = alive && opts.ready();
|
|
96
|
+
const init = alive ? self.pendingLaunch : undefined;
|
|
97
|
+
if (isReady && init !== undefined && !draining) {
|
|
98
|
+
draining = true;
|
|
99
|
+
try {
|
|
100
|
+
await drainInit(self, opts);
|
|
101
|
+
}
|
|
102
|
+
finally {
|
|
103
|
+
draining = false;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}, { name: opts.name }));
|
|
107
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface BasicFeature {
|
|
2
|
+
end: number;
|
|
3
|
+
start: number;
|
|
4
|
+
refName: string;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Merge intervals that overlap once each is grown by `padding` on both sides.
|
|
8
|
+
* `padding` is per side, so the merge window between two intervals is `2 *
|
|
9
|
+
* padding` — the default merges anything within 10kb of its neighbour, not 5kb.
|
|
10
|
+
* Callers that have already baked their padding into start/end pass 0.
|
|
11
|
+
*/
|
|
12
|
+
export declare function mergeIntervals<T extends {
|
|
13
|
+
start: number;
|
|
14
|
+
end: number;
|
|
15
|
+
}>(intervals: T[], padding?: number): T[];
|
|
16
|
+
/**
|
|
17
|
+
* {@link mergeIntervals} per refName: returns a new array of non-overlapping
|
|
18
|
+
* features. `padding` carries the same per-side meaning.
|
|
19
|
+
*/
|
|
20
|
+
export declare function gatherOverlaps<T extends BasicFeature>(regions: T[], padding?: number): T[];
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Merge intervals that overlap once each is grown by `padding` on both sides.
|
|
3
|
+
* `padding` is per side, so the merge window between two intervals is `2 *
|
|
4
|
+
* padding` — the default merges anything within 10kb of its neighbour, not 5kb.
|
|
5
|
+
* Callers that have already baked their padding into start/end pass 0.
|
|
6
|
+
*/
|
|
7
|
+
export function mergeIntervals(intervals, padding = 5000) {
|
|
8
|
+
if (intervals.length <= 1) {
|
|
9
|
+
return intervals;
|
|
10
|
+
}
|
|
11
|
+
// clone so neither the input array order nor its elements are mutated
|
|
12
|
+
const sorted = [...intervals].sort((a, b) => a.start - b.start);
|
|
13
|
+
const stack = [{ ...sorted[0] }];
|
|
14
|
+
for (let i = 1; i < sorted.length; i++) {
|
|
15
|
+
const top = stack.at(-1);
|
|
16
|
+
const next = sorted[i];
|
|
17
|
+
if (top.end + padding < next.start - padding) {
|
|
18
|
+
stack.push({ ...next });
|
|
19
|
+
}
|
|
20
|
+
else if (top.end < next.end) {
|
|
21
|
+
top.end = next.end;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return stack;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* {@link mergeIntervals} per refName: returns a new array of non-overlapping
|
|
28
|
+
* features. `padding` carries the same per-side meaning.
|
|
29
|
+
*/
|
|
30
|
+
export function gatherOverlaps(regions, padding = 5000) {
|
|
31
|
+
const memo = {};
|
|
32
|
+
for (const x of regions) {
|
|
33
|
+
memo[x.refName] ??= [];
|
|
34
|
+
memo[x.refName].push(x);
|
|
35
|
+
}
|
|
36
|
+
return Object.values(memo).flatMap(group => mergeIntervals(group, padding));
|
|
37
|
+
}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* The chunk cache now lives in `@gmod/range-cache-filehandle`, extracted from
|
|
3
|
+
* this file so the @gmod parsers can use it without depending on
|
|
4
|
+
* `@jbrowse/core`, react and mobx-state-tree.
|
|
5
|
+
*
|
|
6
|
+
* Kept as a re-export rather than deleted: `products/jbrowse-web/src/tests`
|
|
7
|
+
* imports `clearCache` from this path directly, and `@jbrowse/core/util/io`
|
|
8
|
+
* re-exports the two classes from here.
|
|
9
|
+
*/
|
|
10
|
+
export { CachedFilehandle, RemoteFileWithRangeCache, clearCache, sweepIdleCache, } from '@gmod/range-cache-filehandle';
|
|
@@ -1,148 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
}
|
|
11
|
-
function putCached(key, buffer) {
|
|
12
|
-
if (cache.size >= MAX_CACHE_ENTRIES) {
|
|
13
|
-
const firstKey = cache.keys().next().value;
|
|
14
|
-
if (firstKey !== undefined) {
|
|
15
|
-
cache.delete(firstKey);
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
cache.set(key, buffer);
|
|
19
|
-
}
|
|
20
|
-
export function clearCache() {
|
|
21
|
-
cache = new Map();
|
|
22
|
-
}
|
|
23
|
-
function runNext() {
|
|
24
|
-
if (queue.length > 0 && activeCount < MAX_CONCURRENT) {
|
|
25
|
-
activeCount++;
|
|
26
|
-
const next = queue.shift();
|
|
27
|
-
next();
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
function limitConcurrency(fn) {
|
|
31
|
-
return new Promise((resolve, reject) => {
|
|
32
|
-
function run() {
|
|
33
|
-
fn().then(val => {
|
|
34
|
-
activeCount--;
|
|
35
|
-
resolve(val);
|
|
36
|
-
runNext();
|
|
37
|
-
}, (err) => {
|
|
38
|
-
activeCount--;
|
|
39
|
-
reject(err instanceof Error ? err : new Error(String(err)));
|
|
40
|
-
runNext();
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
if (activeCount < MAX_CONCURRENT) {
|
|
44
|
-
activeCount++;
|
|
45
|
-
run();
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
queue.push(run);
|
|
49
|
-
}
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
function cacheKey(url, chunkIndex) {
|
|
53
|
-
return `${url}:${chunkIndex}`;
|
|
54
|
-
}
|
|
55
|
-
export class RemoteFileWithRangeCache extends RemoteFile {
|
|
56
|
-
cachedStat;
|
|
57
|
-
async stat() {
|
|
58
|
-
if (!this.cachedStat) {
|
|
59
|
-
await this.getCachedRange(this.url, 0, 1);
|
|
60
|
-
}
|
|
61
|
-
return this.cachedStat ?? { size: 0 };
|
|
62
|
-
}
|
|
63
|
-
async fetchRange(url, start, end, signal) {
|
|
64
|
-
const res = await super.fetch(url, {
|
|
65
|
-
signal: signal ?? undefined,
|
|
66
|
-
headers: { range: `bytes=${start}-${end}` },
|
|
67
|
-
});
|
|
68
|
-
if (res.status === 416) {
|
|
69
|
-
return new Uint8Array(0);
|
|
70
|
-
}
|
|
71
|
-
if (!res.ok) {
|
|
72
|
-
const hint = ' (should be 206 for range requests)';
|
|
73
|
-
const msg = `HTTP ${res.status} fetching ${url} bytes ${start}-${end}${res.status === 200 ? hint : ''}`;
|
|
74
|
-
throw Object.assign(new Error(msg), { status: res.status });
|
|
75
|
-
}
|
|
76
|
-
if (!this.cachedStat) {
|
|
77
|
-
const contentRange = res.headers.get('content-range');
|
|
78
|
-
const match = contentRange ? /\/(\d+)$/.exec(contentRange) : null;
|
|
79
|
-
if (match) {
|
|
80
|
-
this.cachedStat = { size: parseInt(match[1], 10) };
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
return new Uint8Array(await res.arrayBuffer());
|
|
84
|
-
}
|
|
85
|
-
async getCachedRange(url, start, length, signal) {
|
|
86
|
-
const startChunk = Math.floor(start / CHUNK_SIZE);
|
|
87
|
-
const endChunk = Math.floor((start + length - 1) / CHUNK_SIZE);
|
|
88
|
-
let effectiveEndChunk = endChunk;
|
|
89
|
-
for (let i = startChunk; i < endChunk; i++) {
|
|
90
|
-
const c = getCached(cacheKey(url, i));
|
|
91
|
-
if (c !== undefined && c.length < CHUNK_SIZE) {
|
|
92
|
-
effectiveEndChunk = i;
|
|
93
|
-
break;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
const chunkCount = effectiveEndChunk - startChunk + 1;
|
|
97
|
-
const runs = [];
|
|
98
|
-
for (let i = 0; i < chunkCount; i++) {
|
|
99
|
-
if (!getCached(cacheKey(url, startChunk + i))) {
|
|
100
|
-
const lastRun = runs[runs.length - 1];
|
|
101
|
-
if (lastRun?.end === i - 1) {
|
|
102
|
-
lastRun.end = i;
|
|
103
|
-
}
|
|
104
|
-
else {
|
|
105
|
-
runs.push({ start: i, end: i });
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
await Promise.all(runs.map(run => limitConcurrency(async () => {
|
|
110
|
-
const runStartChunk = startChunk + run.start;
|
|
111
|
-
const runEndChunk = startChunk + run.end;
|
|
112
|
-
const rangeStart = runStartChunk * CHUNK_SIZE;
|
|
113
|
-
const rangeEnd = (runEndChunk + 1) * CHUNK_SIZE - 1;
|
|
114
|
-
const data = await this.fetchRange(url, rangeStart, rangeEnd, signal);
|
|
115
|
-
for (let i = run.start; i <= run.end; i++) {
|
|
116
|
-
const offset = (i - run.start) * CHUNK_SIZE;
|
|
117
|
-
putCached(cacheKey(url, startChunk + i), data.subarray(offset, offset + CHUNK_SIZE));
|
|
118
|
-
}
|
|
119
|
-
})));
|
|
120
|
-
const offsetInFirstChunk = start - startChunk * CHUNK_SIZE;
|
|
121
|
-
const result = new Uint8Array(length);
|
|
122
|
-
let written = 0;
|
|
123
|
-
for (let i = 0; i < chunkCount; i++) {
|
|
124
|
-
const chunk = getCached(cacheKey(url, startChunk + i));
|
|
125
|
-
const sourceStart = i === 0 ? offsetInFirstChunk : 0;
|
|
126
|
-
const available = chunk.length - sourceStart;
|
|
127
|
-
const needed = length - written;
|
|
128
|
-
const copyLen = Math.min(available, needed);
|
|
129
|
-
result.set(chunk.subarray(sourceStart, sourceStart + copyLen), written);
|
|
130
|
-
written += copyLen;
|
|
131
|
-
}
|
|
132
|
-
return result.subarray(0, written);
|
|
133
|
-
}
|
|
134
|
-
async fetch(url, init) {
|
|
135
|
-
const range = new Headers(init?.headers).get('range');
|
|
136
|
-
if (range) {
|
|
137
|
-
const rangeParse = /bytes=(\d+)-(\d+)/.exec(range);
|
|
138
|
-
if (rangeParse) {
|
|
139
|
-
const [, startStr, endStr] = rangeParse;
|
|
140
|
-
const s = Number.parseInt(startStr, 10);
|
|
141
|
-
const e = Number.parseInt(endStr, 10);
|
|
142
|
-
const buffer = await this.getCachedRange(String(url), s, e - s + 1, init?.signal);
|
|
143
|
-
return new Response(buffer, { status: 206 });
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
return super.fetch(url, init);
|
|
147
|
-
}
|
|
148
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* The chunk cache now lives in `@gmod/range-cache-filehandle`, extracted from
|
|
3
|
+
* this file so the @gmod parsers can use it without depending on
|
|
4
|
+
* `@jbrowse/core`, react and mobx-state-tree.
|
|
5
|
+
*
|
|
6
|
+
* Kept as a re-export rather than deleted: `products/jbrowse-web/src/tests`
|
|
7
|
+
* imports `clearCache` from this path directly, and `@jbrowse/core/util/io`
|
|
8
|
+
* re-exports the two classes from here.
|
|
9
|
+
*/
|
|
10
|
+
export { CachedFilehandle, RemoteFileWithRangeCache, clearCache, sweepIdleCache, } from '@gmod/range-cache-filehandle';
|
package/esm/util/io/index.d.ts
CHANGED
|
@@ -1,7 +1,44 @@
|
|
|
1
1
|
import type PluginManager from '../../PluginManager.ts';
|
|
2
|
-
import type { FileLocation, UriLocation } from '../types/
|
|
2
|
+
import type { FileLocation, UriLocation } from '../types/data.ts';
|
|
3
3
|
import type { Fetcher, GenericFilehandle } from 'generic-filehandle2';
|
|
4
|
+
/** if a UriLocation has a baseUri, resolves its uri with respect to that base */
|
|
4
5
|
export declare function resolveUriLocation(location: UriLocation): UriLocation;
|
|
5
6
|
export declare function openLocation(location: FileLocation, pluginManager?: PluginManager): GenericFilehandle;
|
|
7
|
+
/**
|
|
8
|
+
* Open a tabix-style index (TBI or CSI) and return it under the correct
|
|
9
|
+
* filehandle key for `new TabixIndexedFile(...)`. Centralizes the CSI-vs-TBI
|
|
10
|
+
* branch so callers can't mismatch the two — e.g. writing `=== 'CSI'` on both
|
|
11
|
+
* the csi and tbi lines, which silently yields no index at all.
|
|
12
|
+
*/
|
|
13
|
+
export declare function openTabixIndexFilehandle(location: FileLocation, indexType: string | undefined, pluginManager?: PluginManager): {
|
|
14
|
+
csiFilehandle: GenericFilehandle;
|
|
15
|
+
tbiFilehandle?: undefined;
|
|
16
|
+
} | {
|
|
17
|
+
csiFilehandle?: undefined;
|
|
18
|
+
tbiFilehandle: GenericFilehandle;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* A fetch that presents `location`'s credentials — and only for urls that
|
|
22
|
+
* credential covers.
|
|
23
|
+
*
|
|
24
|
+
* An account's own fetcher signs whatever url it is handed: the location it was
|
|
25
|
+
* built from decides which token to mint, not where the token may go. That is
|
|
26
|
+
* fine for a caller holding one url, which is what `openLocation` is, and wrong
|
|
27
|
+
* for one that fetches urls a *server* names. Htsget is the second kind — a
|
|
28
|
+
* ticket request answers with data-block urls that can point anywhere — and it
|
|
29
|
+
* had no way to ask whether a given url was still in scope.
|
|
30
|
+
*
|
|
31
|
+
* So ask here. Every url other than the one the fetcher was requested for goes
|
|
32
|
+
* back through the account's `handlesLocation`, which is the same
|
|
33
|
+
* `uriMatchesDomains` test that chose the account in the first place. Both
|
|
34
|
+
* directions matter: `domains` entries scope to a path as well as a host
|
|
35
|
+
* (`data.mylab.org/private`, and the origin-plus-directory form every ephemeral
|
|
36
|
+
* HTTP Basic account is minted with), and one account routinely spans several
|
|
37
|
+
* hosts (Dropbox lists seven). An origin comparison is wrong for both.
|
|
38
|
+
*
|
|
39
|
+
* Anything out of scope gets a plain fetch rather than `checkAuthNeededFetch`:
|
|
40
|
+
* a 401 from a url the config never named should not raise a credential prompt
|
|
41
|
+
* for a host the server picked.
|
|
42
|
+
*/
|
|
6
43
|
export declare function getFetcher(location: FileLocation, pluginManager?: PluginManager): Fetcher;
|
|
7
|
-
export { RemoteFileWithRangeCache } from './RemoteFileWithRangeCache.ts';
|
|
44
|
+
export { CachedFilehandle, RemoteFileWithRangeCache, } from './RemoteFileWithRangeCache.ts';
|
package/esm/util/io/index.js
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import isNode from 'detect-node';
|
|
2
1
|
import { BlobFile, LocalFile } from 'generic-filehandle2';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
2
|
+
import { isElectron, isNode } from '../environment.js';
|
|
3
|
+
import { getBlob, getFileFromCache } from '../tracks.js';
|
|
4
|
+
import { AuthNeededError, isRootModelWithInternetAccounts, isUriLocation, } from '../types/index.js';
|
|
5
|
+
import { CachedFilehandle, RemoteFileWithRangeCache, } from './RemoteFileWithRangeCache.js';
|
|
7
6
|
function isLocalPathLocation(location) {
|
|
8
7
|
return 'localPath' in location;
|
|
9
8
|
}
|
|
@@ -13,71 +12,172 @@ function isBlobLocation(location) {
|
|
|
13
12
|
function isFileHandleLocationLocal(location) {
|
|
14
13
|
return 'handleId' in location;
|
|
15
14
|
}
|
|
15
|
+
/** if a UriLocation has a baseUri, resolves its uri with respect to that base */
|
|
16
16
|
export function resolveUriLocation(location) {
|
|
17
17
|
return location.baseUri
|
|
18
18
|
? { ...location, uri: new URL(location.uri, location.baseUri).href }
|
|
19
19
|
: location;
|
|
20
20
|
}
|
|
21
|
+
/**
|
|
22
|
+
* The local path a `file:` URI names, or undefined for any other scheme. A
|
|
23
|
+
* Windows URL parses as `/C:/data/x.bam`, whose leading slash is part of the URL
|
|
24
|
+
* grammar rather than the path.
|
|
25
|
+
*/
|
|
26
|
+
function fileUrlToLocalPath(uri) {
|
|
27
|
+
if (!uri.startsWith('file:')) {
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
30
|
+
try {
|
|
31
|
+
const { pathname } = new URL(uri);
|
|
32
|
+
const decoded = decodeURIComponent(pathname);
|
|
33
|
+
return /^\/[a-z]:/i.test(decoded) ? decoded.slice(1) : decoded;
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return undefined;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
21
39
|
export function openLocation(location, pluginManager) {
|
|
22
40
|
if (isLocalPathLocation(location)) {
|
|
23
41
|
if (!location.localPath) {
|
|
24
42
|
throw new Error('No local path provided');
|
|
25
43
|
}
|
|
26
44
|
if (isNode || isElectron) {
|
|
27
|
-
|
|
45
|
+
// Same chunk cache the remote path has always had. A local read is not
|
|
46
|
+
// free — desktop re-read every byte of every pan — and the layer above
|
|
47
|
+
// does not care where the bytes came from.
|
|
48
|
+
return new CachedFilehandle(new LocalFile(location.localPath), `file://${location.localPath}`);
|
|
28
49
|
}
|
|
29
50
|
else {
|
|
30
51
|
throw new Error("can't use local files in the browser");
|
|
31
52
|
}
|
|
32
53
|
}
|
|
33
54
|
if (isBlobLocation(location)) {
|
|
55
|
+
// special case where blob is not directly stored on the model, use a getter
|
|
34
56
|
const blob = getBlob(location.blobId);
|
|
35
57
|
if (!blob) {
|
|
36
58
|
throw new Error(`file ("${location.name}") was opened locally from a previous session. To restore it, go to track settings and reopen the file`);
|
|
37
59
|
}
|
|
38
|
-
|
|
60
|
+
// keyed on the blobId rather than anything derived from the Blob: two
|
|
61
|
+
// handles for the same session-stored blob should share chunks, and two
|
|
62
|
+
// unrelated blobs must not
|
|
63
|
+
return new CachedFilehandle(new BlobFile(blob), `blob://${location.blobId}`);
|
|
39
64
|
}
|
|
40
65
|
if (isFileHandleLocationLocal(location)) {
|
|
66
|
+
// FileHandleLocation uses an in-memory cache of File objects
|
|
67
|
+
// The cache is populated asynchronously via ensureFileHandleReady
|
|
41
68
|
const file = getFileFromCache(location.handleId);
|
|
42
69
|
if (!file) {
|
|
43
70
|
throw new Error(`file ("${location.name}") requires permission. Please reopen the file from track settings`);
|
|
44
71
|
}
|
|
45
|
-
return new BlobFile(file);
|
|
72
|
+
return new CachedFilehandle(new BlobFile(file), `filehandle://${location.handleId}`);
|
|
46
73
|
}
|
|
47
74
|
if (isUriLocation(location)) {
|
|
75
|
+
// Check for empty string
|
|
48
76
|
if (!location.uri) {
|
|
49
77
|
throw new Error('No URI provided');
|
|
50
78
|
}
|
|
79
|
+
// Resolve any relative URLs to absolute URLs. Before *choosing* the account
|
|
80
|
+
// and not only before opening: an account is matched on the location's host
|
|
81
|
+
// or URL prefix, which a uri relative to a baseUri does not carry yet — so
|
|
82
|
+
// a config that names its files relative to itself found no account at all
|
|
83
|
+
// and read every one of them unauthenticated.
|
|
51
84
|
const absoluteLocation = resolveUriLocation(location);
|
|
85
|
+
// A file: URI names a path on this machine, not something to fetch. Desktop
|
|
86
|
+
// reaches this by way of the shorthand forms: a config.json opened from disk
|
|
87
|
+
// carries a baseUri of its own directory, so `{ type: 'BamAdapter', uri:
|
|
88
|
+
// 'reads.bam' }` resolves here as file:///dir/reads.bam — and so does every
|
|
89
|
+
// sibling the shorthand derived from it (.bai, .fai, .gzi). Reading them as
|
|
90
|
+
// localPath keeps that whole chain on the one code path that can open a
|
|
91
|
+
// local file, instead of a fetch that no range request survives.
|
|
92
|
+
const localPath = fileUrlToLocalPath(absoluteLocation.uri);
|
|
93
|
+
if (localPath !== undefined && (isNode || isElectron)) {
|
|
94
|
+
return openLocation({ localPath, locationType: 'LocalPathLocation' });
|
|
95
|
+
}
|
|
96
|
+
// If there is a plugin manager, we can try internet accounts
|
|
52
97
|
if (pluginManager) {
|
|
53
|
-
const internetAccount = getInternetAccount(
|
|
98
|
+
const internetAccount = getInternetAccount(absoluteLocation, pluginManager);
|
|
99
|
+
// If an internetAccount was found, use it to open the location
|
|
54
100
|
if (internetAccount) {
|
|
55
101
|
return internetAccount.openLocation(absoluteLocation);
|
|
56
102
|
}
|
|
57
103
|
}
|
|
104
|
+
// Otherwise fall back on usual open
|
|
58
105
|
return new RemoteFileWithRangeCache(absoluteLocation.uri, {
|
|
59
106
|
fetch: checkAuthNeededFetch,
|
|
60
107
|
});
|
|
61
108
|
}
|
|
62
109
|
throw new Error('invalid fileLocation');
|
|
63
110
|
}
|
|
111
|
+
/**
|
|
112
|
+
* Open a tabix-style index (TBI or CSI) and return it under the correct
|
|
113
|
+
* filehandle key for `new TabixIndexedFile(...)`. Centralizes the CSI-vs-TBI
|
|
114
|
+
* branch so callers can't mismatch the two — e.g. writing `=== 'CSI'` on both
|
|
115
|
+
* the csi and tbi lines, which silently yields no index at all.
|
|
116
|
+
*/
|
|
117
|
+
export function openTabixIndexFilehandle(location, indexType, pluginManager) {
|
|
118
|
+
const filehandle = openLocation(location, pluginManager);
|
|
119
|
+
return indexType === 'CSI'
|
|
120
|
+
? { csiFilehandle: filehandle }
|
|
121
|
+
: { tbiFilehandle: filehandle };
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* A fetch that presents `location`'s credentials — and only for urls that
|
|
125
|
+
* credential covers.
|
|
126
|
+
*
|
|
127
|
+
* An account's own fetcher signs whatever url it is handed: the location it was
|
|
128
|
+
* built from decides which token to mint, not where the token may go. That is
|
|
129
|
+
* fine for a caller holding one url, which is what `openLocation` is, and wrong
|
|
130
|
+
* for one that fetches urls a *server* names. Htsget is the second kind — a
|
|
131
|
+
* ticket request answers with data-block urls that can point anywhere — and it
|
|
132
|
+
* had no way to ask whether a given url was still in scope.
|
|
133
|
+
*
|
|
134
|
+
* So ask here. Every url other than the one the fetcher was requested for goes
|
|
135
|
+
* back through the account's `handlesLocation`, which is the same
|
|
136
|
+
* `uriMatchesDomains` test that chose the account in the first place. Both
|
|
137
|
+
* directions matter: `domains` entries scope to a path as well as a host
|
|
138
|
+
* (`data.mylab.org/private`, and the origin-plus-directory form every ephemeral
|
|
139
|
+
* HTTP Basic account is minted with), and one account routinely spans several
|
|
140
|
+
* hosts (Dropbox lists seven). An origin comparison is wrong for both.
|
|
141
|
+
*
|
|
142
|
+
* Anything out of scope gets a plain fetch rather than `checkAuthNeededFetch`:
|
|
143
|
+
* a 401 from a url the config never named should not raise a credential prompt
|
|
144
|
+
* for a host the server picked.
|
|
145
|
+
*/
|
|
64
146
|
export function getFetcher(location, pluginManager) {
|
|
65
147
|
if (!isUriLocation(location)) {
|
|
66
148
|
throw new Error(`Not a valid UriLocation: ${JSON.stringify(location)}`);
|
|
67
149
|
}
|
|
68
150
|
if (pluginManager) {
|
|
69
|
-
|
|
151
|
+
// resolved for the same reason openLocation resolves before matching
|
|
152
|
+
const absoluteLocation = resolveUriLocation(location);
|
|
153
|
+
const internetAccount = getInternetAccount(absoluteLocation, pluginManager);
|
|
70
154
|
if (internetAccount) {
|
|
71
|
-
|
|
155
|
+
const authorized = internetAccount.getFetcher(absoluteLocation);
|
|
156
|
+
return (input, init) => {
|
|
157
|
+
const url = typeof input === 'string' ? input : input.url;
|
|
158
|
+
// The requested url passes on identity, so a location matched by
|
|
159
|
+
// something other than `domains` — the same-app-origin exception a
|
|
160
|
+
// relative uri needs — still authenticates the file it was resolved for
|
|
161
|
+
return url === absoluteLocation.uri ||
|
|
162
|
+
internetAccount.handlesLocation({
|
|
163
|
+
uri: url,
|
|
164
|
+
locationType: 'UriLocation',
|
|
165
|
+
})
|
|
166
|
+
? authorized(input, init)
|
|
167
|
+
: fetch(input, init);
|
|
168
|
+
};
|
|
72
169
|
}
|
|
73
170
|
}
|
|
74
171
|
return checkAuthNeededFetch;
|
|
75
172
|
}
|
|
76
173
|
function getInternetAccount(location, pluginManager) {
|
|
77
174
|
const { rootModel } = pluginManager;
|
|
175
|
+
// If there is an appRootModel, use it to find the internetAccount
|
|
78
176
|
if (rootModel && isRootModelWithInternetAccounts(rootModel)) {
|
|
79
177
|
return rootModel.findAppropriateInternetAccount(location);
|
|
80
178
|
}
|
|
179
|
+
// If there is no appRootModel, but there is pre-auth, create a temporary
|
|
180
|
+
// internetAccount. This is typical in a worker.
|
|
81
181
|
if (location.internetAccountPreAuthorization) {
|
|
82
182
|
if (!location.internetAccountPreAuthorization.authInfo.token) {
|
|
83
183
|
throw new Error('Failed to obtain token from internet account. Try reloading the page');
|
|
@@ -91,6 +191,9 @@ function getInternetAccount(location, pluginManager) {
|
|
|
91
191
|
}
|
|
92
192
|
return undefined;
|
|
93
193
|
}
|
|
194
|
+
// This fetch throws a special error if the response is "401" and includes a
|
|
195
|
+
// "WWW-Authenticate: Basic" header. This is so downstream code can retry if
|
|
196
|
+
// needed with HTTP Basic authentication included
|
|
94
197
|
async function checkAuthNeededFetch(url, opts) {
|
|
95
198
|
const response = await fetch(url, opts);
|
|
96
199
|
if (response.status === 401 &&
|
|
@@ -99,4 +202,4 @@ async function checkAuthNeededFetch(url, opts) {
|
|
|
99
202
|
}
|
|
100
203
|
return response;
|
|
101
204
|
}
|
|
102
|
-
export { RemoteFileWithRangeCache } from
|
|
205
|
+
export { CachedFilehandle, RemoteFileWithRangeCache, } from './RemoteFileWithRangeCache.js';
|