@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,50 @@
|
|
|
1
|
+
import type { FileLocation } from './types/data.ts';
|
|
2
|
+
/**
|
|
3
|
+
* Every conventional spelling of an index file, for the docs that describe this
|
|
4
|
+
* behavior. Kept beside {@link indexCandidateNames}, which is the list actually
|
|
5
|
+
* probed, so the two are edited together.
|
|
6
|
+
*/
|
|
7
|
+
export declare const indexSpellings: {
|
|
8
|
+
name: string;
|
|
9
|
+
writtenBy: string;
|
|
10
|
+
}[];
|
|
11
|
+
/**
|
|
12
|
+
* The index filenames worth looking for beside `fileName`, best guess first.
|
|
13
|
+
*
|
|
14
|
+
* One data file has several names its index might carry, and picking only the
|
|
15
|
+
* first left everyone else with a missing-file error naming a path they never
|
|
16
|
+
* wrote:
|
|
17
|
+
*
|
|
18
|
+
* - `<file>.bai` / `.crai` / `.tbi` is what samtools and tabix write
|
|
19
|
+
* - `<file>.csi` is what htslib writes for a reference over 512 Mb, and on
|
|
20
|
+
* request at any size
|
|
21
|
+
* - `reads.bai` beside `reads.bam` is what Picard and GATK write, in place of
|
|
22
|
+
* samtools' `reads.bam.bai`
|
|
23
|
+
*
|
|
24
|
+
* Empty for a file type that carries no sibling index (BigWig, BigBed, hic),
|
|
25
|
+
* which is how a caller knows not to go looking.
|
|
26
|
+
*
|
|
27
|
+
* `jbrowse-cli` answers the same question in `siblingSidecar`
|
|
28
|
+
* (`commands/add-track-utils/adapter-utils.ts`) rather than calling this: it
|
|
29
|
+
* carries no `@jbrowse/core` dependency, so `npm i -g @jbrowse/cli` stays a CLI
|
|
30
|
+
* rather than a copy of the app. Change one, change the other.
|
|
31
|
+
*/
|
|
32
|
+
export declare function indexCandidateNames(fileName: string): string[];
|
|
33
|
+
/**
|
|
34
|
+
* `location` with its filename replaced, i.e. the sibling of a data file.
|
|
35
|
+
*
|
|
36
|
+
* Only a URI and a local path have a sibling at all. A Blob or a FileHandle is
|
|
37
|
+
* whatever the user picked out of a file dialog and there is no directory
|
|
38
|
+
* around it to look in, so those get `undefined` — the honest answer, and the
|
|
39
|
+
* reason index detection cannot work from a browser file picker.
|
|
40
|
+
*/
|
|
41
|
+
export declare function siblingLocation(location: FileLocation, fileName: string): FileLocation | undefined;
|
|
42
|
+
/**
|
|
43
|
+
* The index sitting beside `location`, or undefined when none of the
|
|
44
|
+
* conventional spellings is there.
|
|
45
|
+
*
|
|
46
|
+
* `exists` is injected rather than reached for, because what "exists" costs is
|
|
47
|
+
* the caller's business and differs by host: a local path is a stat, a URL is a
|
|
48
|
+
* request, and a Blob cannot be asked at all.
|
|
49
|
+
*/
|
|
50
|
+
export declare function detectIndexLocation(location: FileLocation, exists: (location: FileLocation) => Promise<boolean>): Promise<FileLocation | undefined>;
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { getFileName } from './getFileName.js';
|
|
2
|
+
/**
|
|
3
|
+
* Every conventional spelling of an index file, for the docs that describe this
|
|
4
|
+
* behavior. Kept beside {@link indexCandidateNames}, which is the list actually
|
|
5
|
+
* probed, so the two are edited together.
|
|
6
|
+
*/
|
|
7
|
+
export const indexSpellings = [
|
|
8
|
+
{
|
|
9
|
+
name: '`<file>.tbi`, `<file>.bai`, `<file>.crai`',
|
|
10
|
+
writtenBy: 'samtools, tabix',
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
name: '`<file>.csi`',
|
|
14
|
+
writtenBy: 'htslib, for a reference over 512 Mb and on request at any size',
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
name: '`reads.bai` beside `reads.bam`',
|
|
18
|
+
writtenBy: 'Picard, GATK',
|
|
19
|
+
},
|
|
20
|
+
];
|
|
21
|
+
/**
|
|
22
|
+
* The index filenames worth looking for beside `fileName`, best guess first.
|
|
23
|
+
*
|
|
24
|
+
* One data file has several names its index might carry, and picking only the
|
|
25
|
+
* first left everyone else with a missing-file error naming a path they never
|
|
26
|
+
* wrote:
|
|
27
|
+
*
|
|
28
|
+
* - `<file>.bai` / `.crai` / `.tbi` is what samtools and tabix write
|
|
29
|
+
* - `<file>.csi` is what htslib writes for a reference over 512 Mb, and on
|
|
30
|
+
* request at any size
|
|
31
|
+
* - `reads.bai` beside `reads.bam` is what Picard and GATK write, in place of
|
|
32
|
+
* samtools' `reads.bam.bai`
|
|
33
|
+
*
|
|
34
|
+
* Empty for a file type that carries no sibling index (BigWig, BigBed, hic),
|
|
35
|
+
* which is how a caller knows not to go looking.
|
|
36
|
+
*
|
|
37
|
+
* `jbrowse-cli` answers the same question in `siblingSidecar`
|
|
38
|
+
* (`commands/add-track-utils/adapter-utils.ts`) rather than calling this: it
|
|
39
|
+
* carries no `@jbrowse/core` dependency, so `npm i -g @jbrowse/cli` stays a CLI
|
|
40
|
+
* rather than a copy of the app. Change one, change the other.
|
|
41
|
+
*/
|
|
42
|
+
export function indexCandidateNames(fileName) {
|
|
43
|
+
const lower = fileName.toLowerCase();
|
|
44
|
+
if (lower.endsWith('.bam')) {
|
|
45
|
+
return [
|
|
46
|
+
`${fileName}.bai`,
|
|
47
|
+
`${fileName}.csi`,
|
|
48
|
+
fileName.replace(/\.bam$/i, '.bai'),
|
|
49
|
+
];
|
|
50
|
+
}
|
|
51
|
+
if (lower.endsWith('.cram')) {
|
|
52
|
+
return [`${fileName}.crai`, fileName.replace(/\.cram$/i, '.crai')];
|
|
53
|
+
}
|
|
54
|
+
// the tabix family is spelled by its compression, not its content: a .gz here
|
|
55
|
+
// is a bgzipped VCF/GFF/BED/SAM, all of which index the same two ways. `.bgz`
|
|
56
|
+
// is the same file under the name htslib's own tools give it, so it takes the
|
|
57
|
+
// same candidates — every format guesser accepts `\.b?gz$`, and matching only
|
|
58
|
+
// `.gz` left a `calls.vcf.bgz` with no detection at all
|
|
59
|
+
if (/\.b?gz$/.test(lower)) {
|
|
60
|
+
return [`${fileName}.tbi`, `${fileName}.csi`];
|
|
61
|
+
}
|
|
62
|
+
return [];
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* `location` with its filename replaced, i.e. the sibling of a data file.
|
|
66
|
+
*
|
|
67
|
+
* Only a URI and a local path have a sibling at all. A Blob or a FileHandle is
|
|
68
|
+
* whatever the user picked out of a file dialog and there is no directory
|
|
69
|
+
* around it to look in, so those get `undefined` — the honest answer, and the
|
|
70
|
+
* reason index detection cannot work from a browser file picker.
|
|
71
|
+
*/
|
|
72
|
+
export function siblingLocation(location, fileName) {
|
|
73
|
+
const replaceLast = (path) =>
|
|
74
|
+
// the separator is kept: a Windows local path uses backslashes and a URI
|
|
75
|
+
// never does, so rebuilding with '/' would corrupt one of them
|
|
76
|
+
path.replace(/[^/\\]*$/, fileName);
|
|
77
|
+
if (location.locationType === 'UriLocation') {
|
|
78
|
+
return { ...location, uri: replaceLast(location.uri) };
|
|
79
|
+
}
|
|
80
|
+
if (location.locationType === 'LocalPathLocation') {
|
|
81
|
+
return { ...location, localPath: replaceLast(location.localPath) };
|
|
82
|
+
}
|
|
83
|
+
return undefined;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* The index sitting beside `location`, or undefined when none of the
|
|
87
|
+
* conventional spellings is there.
|
|
88
|
+
*
|
|
89
|
+
* `exists` is injected rather than reached for, because what "exists" costs is
|
|
90
|
+
* the caller's business and differs by host: a local path is a stat, a URL is a
|
|
91
|
+
* request, and a Blob cannot be asked at all.
|
|
92
|
+
*/
|
|
93
|
+
export async function detectIndexLocation(location, exists) {
|
|
94
|
+
for (const name of indexCandidateNames(getFileName(location))) {
|
|
95
|
+
const candidate = siblingLocation(location, name);
|
|
96
|
+
if (candidate && (await exists(candidate))) {
|
|
97
|
+
return candidate;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return undefined;
|
|
101
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { IStateTreeNode } from '@jbrowse/mobx-state-tree';
|
|
2
|
+
/**
|
|
3
|
+
* Drop a shared surface's stored hover whenever the content moves under a
|
|
4
|
+
* stationary cursor.
|
|
5
|
+
*
|
|
6
|
+
* A stored hover is only as good as its invalidation, and the pointer handlers
|
|
7
|
+
* answer one axis of it: the pointer moving. The other axis is the content
|
|
8
|
+
* moving instead, which fires no pointer event at all — a wheel zoom, a drag
|
|
9
|
+
* pan, a locstring navigation, a plot resize. Left uncleared, the hover goes on
|
|
10
|
+
* naming the feature the cursor *used* to be over, which is exactly what the
|
|
11
|
+
* tooltip renders and the highlight outlines.
|
|
12
|
+
*
|
|
13
|
+
* `transform` is the one value carrying every number that moves the picture —
|
|
14
|
+
* synteny's `bandTransformKey`, dotplot's `plotTransform`, the breakpoint split
|
|
15
|
+
* view's `overlayTransformKey`. Watching that value instead of listing entry
|
|
16
|
+
* points is the design: the wheel was the entry point nobody had written a
|
|
17
|
+
* clear for. Each caller documents beside its transform getter what the key
|
|
18
|
+
* covers.
|
|
19
|
+
*
|
|
20
|
+
* `clear` rather than a duck-typed action name, because the three owners store
|
|
21
|
+
* three different things: a synteny pick hit, a dotplot feature index, an
|
|
22
|
+
* overlay curve id. The omission the per-display installer guards against
|
|
23
|
+
* (`installClearHoverOnViewportChange`, which a mixin installs on six displays'
|
|
24
|
+
* behalf) cannot happen here — a surface owner writes this call itself, and the
|
|
25
|
+
* clear is the line above it.
|
|
26
|
+
*
|
|
27
|
+
* A `reaction`, not an `autorun`: the effect writes the hover, and an autorun
|
|
28
|
+
* body that both read and wrote it would re-fire itself.
|
|
29
|
+
*
|
|
30
|
+
* The LGV family answers the same question through
|
|
31
|
+
* `installClearHoverOnViewportChange`, which its fetch foundation installs for
|
|
32
|
+
* every per-region display; a view that owns a canvas or an overlay spanning
|
|
33
|
+
* several of them has no such foundation, so it installs this one. A new
|
|
34
|
+
* shared-surface container owes the same call (SHARED_CANVAS_VIEWS.md).
|
|
35
|
+
*/
|
|
36
|
+
export declare function installClearHoverOnSurfaceMove(self: IStateTreeNode, opts: {
|
|
37
|
+
transform: () => unknown;
|
|
38
|
+
clear: () => void;
|
|
39
|
+
name: string;
|
|
40
|
+
}): void;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { addDisposer } from '@jbrowse/mobx-state-tree';
|
|
2
|
+
import { reaction } from 'mobx';
|
|
3
|
+
/**
|
|
4
|
+
* Drop a shared surface's stored hover whenever the content moves under a
|
|
5
|
+
* stationary cursor.
|
|
6
|
+
*
|
|
7
|
+
* A stored hover is only as good as its invalidation, and the pointer handlers
|
|
8
|
+
* answer one axis of it: the pointer moving. The other axis is the content
|
|
9
|
+
* moving instead, which fires no pointer event at all — a wheel zoom, a drag
|
|
10
|
+
* pan, a locstring navigation, a plot resize. Left uncleared, the hover goes on
|
|
11
|
+
* naming the feature the cursor *used* to be over, which is exactly what the
|
|
12
|
+
* tooltip renders and the highlight outlines.
|
|
13
|
+
*
|
|
14
|
+
* `transform` is the one value carrying every number that moves the picture —
|
|
15
|
+
* synteny's `bandTransformKey`, dotplot's `plotTransform`, the breakpoint split
|
|
16
|
+
* view's `overlayTransformKey`. Watching that value instead of listing entry
|
|
17
|
+
* points is the design: the wheel was the entry point nobody had written a
|
|
18
|
+
* clear for. Each caller documents beside its transform getter what the key
|
|
19
|
+
* covers.
|
|
20
|
+
*
|
|
21
|
+
* `clear` rather than a duck-typed action name, because the three owners store
|
|
22
|
+
* three different things: a synteny pick hit, a dotplot feature index, an
|
|
23
|
+
* overlay curve id. The omission the per-display installer guards against
|
|
24
|
+
* (`installClearHoverOnViewportChange`, which a mixin installs on six displays'
|
|
25
|
+
* behalf) cannot happen here — a surface owner writes this call itself, and the
|
|
26
|
+
* clear is the line above it.
|
|
27
|
+
*
|
|
28
|
+
* A `reaction`, not an `autorun`: the effect writes the hover, and an autorun
|
|
29
|
+
* body that both read and wrote it would re-fire itself.
|
|
30
|
+
*
|
|
31
|
+
* The LGV family answers the same question through
|
|
32
|
+
* `installClearHoverOnViewportChange`, which its fetch foundation installs for
|
|
33
|
+
* every per-region display; a view that owns a canvas or an overlay spanning
|
|
34
|
+
* several of them has no such foundation, so it installs this one. A new
|
|
35
|
+
* shared-surface container owes the same call (SHARED_CANVAS_VIEWS.md).
|
|
36
|
+
*/
|
|
37
|
+
export function installClearHoverOnSurfaceMove(self, opts) {
|
|
38
|
+
addDisposer(self, reaction(opts.transform, () => {
|
|
39
|
+
opts.clear();
|
|
40
|
+
}, { name: opts.name }));
|
|
41
|
+
}
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
import type { ActiveFetch, StatusReporter, StopTokenRotation } from './createStopTokenRotation.ts';
|
|
2
|
+
import type { FetchContext } from './fetchContext.ts';
|
|
3
|
+
import type { FetchPhases } from './fetchPhases.ts';
|
|
4
|
+
import type { StopToken } from './stopToken.ts';
|
|
5
|
+
import type { IStateTreeNode } from '@jbrowse/mobx-state-tree';
|
|
6
|
+
/**
|
|
7
|
+
* The bookkeeping a family hangs off one fetch, beside the phases. Each of the
|
|
8
|
+
* five fetches in the tree fills a different subset, and that subset is the
|
|
9
|
+
* only thing about them that genuinely differs.
|
|
10
|
+
*/
|
|
11
|
+
export interface FetchLifecycle {
|
|
12
|
+
/**
|
|
13
|
+
* Where the fetch's error lands, and the **clear-at-start rule** in the same
|
|
14
|
+
* parameter: it is called with `undefined` the moment a run begins, so a
|
|
15
|
+
* banner from a failed attempt cannot stand over the result a retriggered
|
|
16
|
+
* run commits — a fetch re-fires on reads that never pass through `reload()`'s
|
|
17
|
+
* own clear (an adapter edit, an un-minimize, a pan). One function rather
|
|
18
|
+
* than a clear plus an `onError`, because a caller given two can supply one.
|
|
19
|
+
*
|
|
20
|
+
* A host with no error state of its own answers only the failure (the
|
|
21
|
+
* breakpoint overlay raises a session notification), which is why the
|
|
22
|
+
* argument is optional rather than the call being conditional.
|
|
23
|
+
*/
|
|
24
|
+
setError: (error?: unknown) => void;
|
|
25
|
+
/**
|
|
26
|
+
* Runs synchronously as the fetch starts, after the rotation has superseded
|
|
27
|
+
* whatever it replaced: the loading flag (`FetchMixin`'s `activeStopToken`,
|
|
28
|
+
* the comparative family's `fetching`), and anything a display blanks
|
|
29
|
+
* because it has no freshness signature to keep stale data honest with
|
|
30
|
+
* (chord's refName map).
|
|
31
|
+
*
|
|
32
|
+
* Takes the token rather than the whole {@link ActiveFetch}: publishing it is
|
|
33
|
+
* the only thing any implementation does with the fetch, and the guard and
|
|
34
|
+
* the status slot are the skeleton's to hand out — through `ctx`, where a
|
|
35
|
+
* `run` gets them pre-wired.
|
|
36
|
+
*/
|
|
37
|
+
onBegin?: (stopToken: StopToken) => void;
|
|
38
|
+
/**
|
|
39
|
+
* Runs in the `finally`, before the rotation's `end()`. `current` is this
|
|
40
|
+
* run's own guard, already evaluated: a **superseded** run must not clear the
|
|
41
|
+
* loading flag the run that replaced it just set, and it is the only exit
|
|
42
|
+
* that reaches here without having gone through either the commit or the
|
|
43
|
+
* error path.
|
|
44
|
+
*/
|
|
45
|
+
onEnd?: (current: boolean) => void;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* One fetch, once: **begin → clear the error → run → commit if still current →
|
|
49
|
+
* {@link handleFetchError} → end**.
|
|
50
|
+
*
|
|
51
|
+
* That sequence was written five times — `FetchMixin.runFetch`, the
|
|
52
|
+
* prerequisite skeleton, the comparative installer, the circular view's chord
|
|
53
|
+
* fetch and the breakpoint split view's overlay fetch — and each copy was
|
|
54
|
+
* missing a different rule: no rotation at all, an error publish guarded on
|
|
55
|
+
* liveness but not currency, no clear at the start, a `finally` that stranded
|
|
56
|
+
* the loading flag on an abort. The rules only pay for themselves by being the
|
|
57
|
+
* same everywhere, so they live here and the differences are parameters.
|
|
58
|
+
*
|
|
59
|
+
* `active` comes from a {@link createStopTokenRotation} `begin()` the caller
|
|
60
|
+
* already made, because who owns the rotation is one of the real differences: a
|
|
61
|
+
* display's *primary* fetch rotates through `FetchMixin`, so `cancelFetch` can
|
|
62
|
+
* reach it, while every other fetch's rotation lives in its installer's closure
|
|
63
|
+
* ({@link installFetch}).
|
|
64
|
+
*
|
|
65
|
+
* **Called synchronously by every caller**, so its own prefix down to the first
|
|
66
|
+
* `await` — and `run`'s prefix with it — executes wherever the caller was.
|
|
67
|
+
* `installFetch` puts that inside `untracked`; `FetchMixin.runFetch` is an MST
|
|
68
|
+
* flow, and so an action, which MobX runs untracked already.
|
|
69
|
+
*/
|
|
70
|
+
export declare function runFetchOnce<TArgs, TResult>(self: IStateTreeNode, active: ActiveFetch, args: TArgs, { run, commit, setError, onBegin, onEnd, }: Pick<FetchPhases<TArgs, TResult, FetchContext>, 'run' | 'commit'> & FetchLifecycle): Promise<void>;
|
|
71
|
+
/**
|
|
72
|
+
* The host members {@link installFetch}'s autorun body reads for itself, above
|
|
73
|
+
* everything the family supplies.
|
|
74
|
+
*
|
|
75
|
+
* `IStateTreeNode`, never `IAnyStateTreeNode` — the latter resolves to `any`
|
|
76
|
+
* and silently turns off checking for every member below.
|
|
77
|
+
*/
|
|
78
|
+
export interface FetchSkeletonHost extends IStateTreeNode {
|
|
79
|
+
/**
|
|
80
|
+
* The pure "go again" signal, read unconditionally above every gate. After a
|
|
81
|
+
* failure every other fetch input is unchanged, so nothing but this can
|
|
82
|
+
* rewake the body — and a read placed under a gate drops out of the
|
|
83
|
+
* dependency set on the run that declines, which is a Retry button that
|
|
84
|
+
* works until the first time it is needed.
|
|
85
|
+
*/
|
|
86
|
+
reloadCounter: number;
|
|
87
|
+
/**
|
|
88
|
+
* The states where this host deliberately fetches nothing, read only by the
|
|
89
|
+
* retry contract check. A decline there is not a dead Retry.
|
|
90
|
+
*/
|
|
91
|
+
fetchInert: boolean;
|
|
92
|
+
/**
|
|
93
|
+
* A standing user cancel, and the one durability rule for all of them: **a
|
|
94
|
+
* cancel is durable — no fetch trigger un-cancels it.** Read tracked, under
|
|
95
|
+
* `reloadCounter` and above every other gate, so the gesture that reopens it
|
|
96
|
+
* (Retry, or the LGV foundations' clear-on-viewport-change) is in the
|
|
97
|
+
* dependency set of the run it closed.
|
|
98
|
+
*
|
|
99
|
+
* Optional because a host with no cancel affordance has no cancel to be
|
|
100
|
+
* durable — the circular view's chord fetch and the breakpoint overlay fetch
|
|
101
|
+
* offer no Cancel button, so they declare nothing rather than a constant
|
|
102
|
+
* `false`.
|
|
103
|
+
*/
|
|
104
|
+
fetchCanceled?: boolean;
|
|
105
|
+
}
|
|
106
|
+
interface InstallFetchOptionsBase<TArgs, TResult> extends FetchPhases<TArgs, TResult, FetchContext>, FetchLifecycle {
|
|
107
|
+
/** autorun name, for the MobX devtools/spy stream */
|
|
108
|
+
name: string;
|
|
109
|
+
/** how long to coalesce reruns once the body has started work once */
|
|
110
|
+
delay: number;
|
|
111
|
+
/**
|
|
112
|
+
* An extra skip above `prepare`, reported as `gated` rather than `declined`:
|
|
113
|
+
* the skeleton decided before the family's own gate was consulted, so it is
|
|
114
|
+
* not the dead Retry the contract check hunts for. Must be a *tracked* read
|
|
115
|
+
* that flips on the transition to wake on — a minimized track, a view that
|
|
116
|
+
* is not initialized.
|
|
117
|
+
*/
|
|
118
|
+
gate?: () => boolean;
|
|
119
|
+
/**
|
|
120
|
+
* The freshness signature of a run's args — the freshness gate, declared here
|
|
121
|
+
* rather than folded into `prepare` because **the skeleton owns the half of it
|
|
122
|
+
* that keeps being got wrong.**
|
|
123
|
+
*
|
|
124
|
+
* A run whose key equals the committed one declines, so a gate flip
|
|
125
|
+
* (minimize→expand, a view initializing) re-runs nothing against unchanged
|
|
126
|
+
* inputs. The law is ARCHITECTURE.md's: a gate on a freshness signal must
|
|
127
|
+
* also be invalidated by `reload()`, or Retry re-runs the body straight into
|
|
128
|
+
* the same decline and the button is dead. Every layer that has one made
|
|
129
|
+
* that pairing structural in the end — the global family after arc shipped
|
|
130
|
+
* the bug (`GlobalFetchMixin.reload` drops `loadedFetchSignature` in the same
|
|
131
|
+
* action as the bump) — and this is that move for the skeleton: a run whose
|
|
132
|
+
* `reloadCounter` has advanced since the run that last ISSUED a fetch ignores
|
|
133
|
+
* this gate, so nothing has to remember to clear anything. The multi-way
|
|
134
|
+
* synteny display's two dependent fetches shipped the same dead Retry from
|
|
135
|
+
* spelling the comparison in `prepare` with no override to match, which is
|
|
136
|
+
* what this exists to make unspellable.
|
|
137
|
+
*
|
|
138
|
+
* Separate from `prepare` because they answer different questions and only one
|
|
139
|
+
* of them can strand a display: `prepare` returning `undefined` is "nothing to
|
|
140
|
+
* fetch" (an empty viewport, no gene track configured), which is a legitimate
|
|
141
|
+
* decline forever and no amount of retrying should change it. This is "I have
|
|
142
|
+
* exactly this already", which a retry must be able to override.
|
|
143
|
+
*
|
|
144
|
+
* Omit it where the fetch holds no committed state to compare against — most
|
|
145
|
+
* of them, whose `prepare` returns args unconditionally.
|
|
146
|
+
*/
|
|
147
|
+
fetchKey?: (args: TArgs) => string;
|
|
148
|
+
/**
|
|
149
|
+
* The key of the data already committed, when the host keeps one — the
|
|
150
|
+
* comparative displays stamp `loadedFetchKey`, which their `dataCurrent`
|
|
151
|
+
* flag reads too, so a second stamp would be one more thing to disagree with
|
|
152
|
+
* it. Omitted, the skeleton stamps its own at commit.
|
|
153
|
+
*
|
|
154
|
+
* **Either way the stamp is observable**, and the read is tracked. Zoom A→B
|
|
155
|
+
* issues a fetch for B; zoom back to A before B commits and the re-run
|
|
156
|
+
* declines against the still-A stamp; B then commits and stamps B, and that
|
|
157
|
+
* write is what wakes the autorun to fetch A again. A closure variable would
|
|
158
|
+
* leave data B under viewport A until the next input moved.
|
|
159
|
+
*/
|
|
160
|
+
committedKey?: () => string | undefined;
|
|
161
|
+
/**
|
|
162
|
+
* Install the two display-contract checks under this name. Omitted
|
|
163
|
+
* by a **secondary** fetch on a host whose primary foundation already
|
|
164
|
+
* installed them: `assertDisplayContract` would report the second install as
|
|
165
|
+
* the double-attach it is built to catch, and a second retry check would
|
|
166
|
+
* consume the same `reloadCounter` bumps as the first.
|
|
167
|
+
*/
|
|
168
|
+
contract?: string;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* The rotation half is either/or: `report` says where a rotation this installer
|
|
172
|
+
* creates for itself reports, and `rotation` lends the host's own instead — a
|
|
173
|
+
* display composing `FetchMixin` passes its `fetchRotation`, so `cancelFetch`
|
|
174
|
+
* and `cancelFetchByUser` reach the fetch this installs rather than a second
|
|
175
|
+
* rotation they cannot see. A lent rotation already carries its status window,
|
|
176
|
+
* so `report` would be dead beside it — the same either/or `StatusReporter`
|
|
177
|
+
* itself is a union for.
|
|
178
|
+
*/
|
|
179
|
+
export type InstallFetchOptions<TArgs, TResult> = InstallFetchOptionsBase<TArgs, TResult> & ({
|
|
180
|
+
/**
|
|
181
|
+
* Where this fetch's status lands. A display passes itself — its status
|
|
182
|
+
* fields are part of its own API, and one composing `FetchMixin` lends
|
|
183
|
+
* the model-wide window so this fetch takes a slot on the one field
|
|
184
|
+
* beside the display's other operations rather than opening a second
|
|
185
|
+
* writer over it. Anything with one operation to narrate passes a
|
|
186
|
+
* `createStatusChannel`.
|
|
187
|
+
*/
|
|
188
|
+
report: StatusReporter;
|
|
189
|
+
rotation?: never;
|
|
190
|
+
} | {
|
|
191
|
+
/** the host's own latest-wins rotation, lent whole — see above */
|
|
192
|
+
rotation: StopTokenRotation;
|
|
193
|
+
report?: never;
|
|
194
|
+
});
|
|
195
|
+
/**
|
|
196
|
+
* A whole fetch, installed: the rotation, the leading-edge autorun, the
|
|
197
|
+
* unconditional trigger reads, the gates, and {@link runFetchOnce} under them.
|
|
198
|
+
*
|
|
199
|
+
* Every fetch in the tree is this shape except one family — the prerequisite
|
|
200
|
+
* reads (HiC's header, the multi-sample sample list), the LGV global family
|
|
201
|
+
* (`installGlobalFetchAutorun`, which lends `FetchMixin`'s rotation through the
|
|
202
|
+
* `rotation` option so `cancelFetch` reaches the fetch it installs), both
|
|
203
|
+
* comparative displays, the circular view's chord fetch, the breakpoint overlay
|
|
204
|
+
* fetch and the multi-way synteny display's two DEPENDENT fetches (lane genes,
|
|
205
|
+
* lane links, each gated on the key its own commit stamps) all take it. The
|
|
206
|
+
* exception is the per-region family's `FetchMixin.runFetch`: its trigger is
|
|
207
|
+
* `planRegionFetch`'s autorun and its commits stream per region through
|
|
208
|
+
* `ctx.commitRegion`, so it holds `runFetchOnce` directly and the autorun above
|
|
209
|
+
* it is that foundation's.
|
|
210
|
+
*
|
|
211
|
+
* What a caller supplies is exactly what differs between them: which reads wake
|
|
212
|
+
* it (`prepare`, plus `gate`), what a round trip commits, where the loading
|
|
213
|
+
* flag lives (`onBegin` / `onEnd`) and where the status goes (`report`).
|
|
214
|
+
*
|
|
215
|
+
* Returns the rotation's `cancel`, for a family whose model owns the user-facing
|
|
216
|
+
* Cancel button: the flag alone is not a cancel — nothing rotates the token, the
|
|
217
|
+
* stopped RPC stays current, and it commits over the load the user just stopped.
|
|
218
|
+
*/
|
|
219
|
+
export declare function installFetch<TArgs, TResult>(self: FetchSkeletonHost, opts: InstallFetchOptions<TArgs, TResult>): () => void;
|
|
220
|
+
export {};
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
import { addDisposer, isAlive } from '@jbrowse/mobx-state-tree';
|
|
2
|
+
import { observable, runInAction, untracked } from 'mobx';
|
|
3
|
+
import { assertDisplayContract, makeRetryContractCheck, } from '../pluggableElementTypes/models/assertDisplayContract.js';
|
|
4
|
+
import { handleFetchError } from './aborting.js';
|
|
5
|
+
import { createStopTokenRotation } from './createStopTokenRotation.js';
|
|
6
|
+
import { makeFetchContext } from './fetchContext.js';
|
|
7
|
+
import { isDataCurrent } from './isDataCurrent.js';
|
|
8
|
+
import { leadingEdgeAutorun } from './leadingEdgeAutorun.js';
|
|
9
|
+
/**
|
|
10
|
+
* One fetch, once: **begin → clear the error → run → commit if still current →
|
|
11
|
+
* {@link handleFetchError} → end**.
|
|
12
|
+
*
|
|
13
|
+
* That sequence was written five times — `FetchMixin.runFetch`, the
|
|
14
|
+
* prerequisite skeleton, the comparative installer, the circular view's chord
|
|
15
|
+
* fetch and the breakpoint split view's overlay fetch — and each copy was
|
|
16
|
+
* missing a different rule: no rotation at all, an error publish guarded on
|
|
17
|
+
* liveness but not currency, no clear at the start, a `finally` that stranded
|
|
18
|
+
* the loading flag on an abort. The rules only pay for themselves by being the
|
|
19
|
+
* same everywhere, so they live here and the differences are parameters.
|
|
20
|
+
*
|
|
21
|
+
* `active` comes from a {@link createStopTokenRotation} `begin()` the caller
|
|
22
|
+
* already made, because who owns the rotation is one of the real differences: a
|
|
23
|
+
* display's *primary* fetch rotates through `FetchMixin`, so `cancelFetch` can
|
|
24
|
+
* reach it, while every other fetch's rotation lives in its installer's closure
|
|
25
|
+
* ({@link installFetch}).
|
|
26
|
+
*
|
|
27
|
+
* **Called synchronously by every caller**, so its own prefix down to the first
|
|
28
|
+
* `await` — and `run`'s prefix with it — executes wherever the caller was.
|
|
29
|
+
* `installFetch` puts that inside `untracked`; `FetchMixin.runFetch` is an MST
|
|
30
|
+
* flow, and so an action, which MobX runs untracked already.
|
|
31
|
+
*/
|
|
32
|
+
export async function runFetchOnce(self, active, args, { run, commit, setError, onBegin, onEnd, }) {
|
|
33
|
+
const { stopToken, isCurrent, statusCallback, end } = active;
|
|
34
|
+
// synchronous, so it lands while this run is by construction the current one
|
|
35
|
+
setError(undefined);
|
|
36
|
+
onBegin?.(stopToken);
|
|
37
|
+
try {
|
|
38
|
+
const result = await run(args, makeFetchContext(self, {
|
|
39
|
+
stopToken,
|
|
40
|
+
isStale: () => !isCurrent(),
|
|
41
|
+
statusCallback,
|
|
42
|
+
}));
|
|
43
|
+
// `undefined` is "nothing to commit" — a pre-flight that stopped this
|
|
44
|
+
// fetch — so it is not a result to record
|
|
45
|
+
if (result !== undefined && isCurrent()) {
|
|
46
|
+
commit(result, args);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
catch (e) {
|
|
50
|
+
handleFetchError(e, isCurrent, setError);
|
|
51
|
+
}
|
|
52
|
+
finally {
|
|
53
|
+
// Both `onEnd` implementations are MST actions on `self`, and a display
|
|
54
|
+
// destroyed mid-fetch — a track closed, a display type switched out from
|
|
55
|
+
// under a load — still resumes here. `beforeDestroy` already stopped the
|
|
56
|
+
// token, so the bookkeeping is moot on a dead node; calling the action
|
|
57
|
+
// anyway only warns.
|
|
58
|
+
if (isAlive(self)) {
|
|
59
|
+
onEnd?.(isCurrent());
|
|
60
|
+
}
|
|
61
|
+
// last, because it closes the guard `onEnd` reads, and unconditional
|
|
62
|
+
// because a superseded run's status slot goes on voting for a phase that
|
|
63
|
+
// is over until it is retired
|
|
64
|
+
end();
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* The two contract checks every fetch installer owes, together because they are
|
|
69
|
+
* the same doctrine: one reports a foundation attached twice, the other reports
|
|
70
|
+
* a `reload()` the gate still declines — the dead Retry button.
|
|
71
|
+
*/
|
|
72
|
+
function installContractChecks(self, contract) {
|
|
73
|
+
assertDisplayContract(self, contract);
|
|
74
|
+
return makeRetryContractCheck(self);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* The rotation for an installation that was lent none: created here, so
|
|
78
|
+
* disposed here — a lent one is the host's, and resetting its status window
|
|
79
|
+
* would drop a write the host's other operations are still owed.
|
|
80
|
+
*/
|
|
81
|
+
function ownRotation(self, report) {
|
|
82
|
+
const rotation = createStopTokenRotation(self, report);
|
|
83
|
+
addDisposer(self, () => {
|
|
84
|
+
rotation.dispose();
|
|
85
|
+
});
|
|
86
|
+
return rotation;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* A whole fetch, installed: the rotation, the leading-edge autorun, the
|
|
90
|
+
* unconditional trigger reads, the gates, and {@link runFetchOnce} under them.
|
|
91
|
+
*
|
|
92
|
+
* Every fetch in the tree is this shape except one family — the prerequisite
|
|
93
|
+
* reads (HiC's header, the multi-sample sample list), the LGV global family
|
|
94
|
+
* (`installGlobalFetchAutorun`, which lends `FetchMixin`'s rotation through the
|
|
95
|
+
* `rotation` option so `cancelFetch` reaches the fetch it installs), both
|
|
96
|
+
* comparative displays, the circular view's chord fetch, the breakpoint overlay
|
|
97
|
+
* fetch and the multi-way synteny display's two DEPENDENT fetches (lane genes,
|
|
98
|
+
* lane links, each gated on the key its own commit stamps) all take it. The
|
|
99
|
+
* exception is the per-region family's `FetchMixin.runFetch`: its trigger is
|
|
100
|
+
* `planRegionFetch`'s autorun and its commits stream per region through
|
|
101
|
+
* `ctx.commitRegion`, so it holds `runFetchOnce` directly and the autorun above
|
|
102
|
+
* it is that foundation's.
|
|
103
|
+
*
|
|
104
|
+
* What a caller supplies is exactly what differs between them: which reads wake
|
|
105
|
+
* it (`prepare`, plus `gate`), what a round trip commits, where the loading
|
|
106
|
+
* flag lives (`onBegin` / `onEnd`) and where the status goes (`report`).
|
|
107
|
+
*
|
|
108
|
+
* Returns the rotation's `cancel`, for a family whose model owns the user-facing
|
|
109
|
+
* Cancel button: the flag alone is not a cancel — nothing rotates the token, the
|
|
110
|
+
* stopped RPC stays current, and it commits over the load the user just stopped.
|
|
111
|
+
*/
|
|
112
|
+
export function installFetch(self, opts) {
|
|
113
|
+
const { name, delay, gate, contract, fetchKey, committedKey, prepare, run, commit, setError, onBegin, onEnd, } = opts;
|
|
114
|
+
const noteFetchAutorunRun = contract === undefined ? undefined : installContractChecks(self, contract);
|
|
115
|
+
const lent = opts.rotation;
|
|
116
|
+
const rotation = lent === undefined ? ownRotation(self, opts.report) : lent;
|
|
117
|
+
// The `reloadCounter` this installation last issued a fetch at. Per
|
|
118
|
+
// installation and per instance, so a host with several fetches gives each its
|
|
119
|
+
// own — and a closure rather than model state, because nothing outside reads
|
|
120
|
+
// it and a volatile would be one more thing a host has to declare.
|
|
121
|
+
let issuedEpoch;
|
|
122
|
+
// The skeleton's own stamp exists only where there is a key to stamp — a
|
|
123
|
+
// fetch with no `fetchKey` never reads it, so allocating one would only feed
|
|
124
|
+
// it `undefined` on every commit.
|
|
125
|
+
const stamp = committedKey === undefined && fetchKey !== undefined
|
|
126
|
+
? observable.box()
|
|
127
|
+
: undefined;
|
|
128
|
+
const heldKey = committedKey ?? (() => stamp?.get());
|
|
129
|
+
const commitAndStamp = stamp
|
|
130
|
+
? (result, args) => {
|
|
131
|
+
runInAction(() => {
|
|
132
|
+
commit(result, args);
|
|
133
|
+
stamp.set(fetchKey?.(args));
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
: commit;
|
|
137
|
+
leadingEdgeAutorun(self,
|
|
138
|
+
// #region voidTracking
|
|
139
|
+
() => {
|
|
140
|
+
// the pure "go again" signal, read unconditionally above every gate so a
|
|
141
|
+
// Retry click re-runs the body even when nothing else moved
|
|
142
|
+
const reloadEpoch = self.reloadCounter;
|
|
143
|
+
// Tracked in the same breath and for the same reason, but the mirror
|
|
144
|
+
// image: this one CLOSES the gate below, so a run that returned before
|
|
145
|
+
// the counter read would drop the one observable that can reopen it and
|
|
146
|
+
// Cancel would be a one-way door with a Retry button on it. Order, not
|
|
147
|
+
// just position: counter first, then this, then the gates.
|
|
148
|
+
const canceled = self.fetchCanceled === true;
|
|
149
|
+
// Above the gate, not only above `prepare`: teardown mutates the
|
|
150
|
+
// observables this body reads before the disposers run, and every `gate`
|
|
151
|
+
// but the breakpoint view's reaches the containing view or track through a
|
|
152
|
+
// parent walk (`host.initialized`, `isMinimized`, `getContainingView`),
|
|
153
|
+
// which throws once the node has left the tree. This catches the destroyed
|
|
154
|
+
// node; the detached-and-still-alive window (ADR-069) is covered only by
|
|
155
|
+
// the walk's own cache. Nothing is reported for a dead node — there is no
|
|
156
|
+
// Retry button left to be dead, and the check would read three more
|
|
157
|
+
// members of a corpse to decide it.
|
|
158
|
+
if (!isAlive(self)) {
|
|
159
|
+
return false;
|
|
160
|
+
}
|
|
161
|
+
if (canceled || gate?.() === false) {
|
|
162
|
+
noteFetchAutorunRun?.('gated');
|
|
163
|
+
return false;
|
|
164
|
+
}
|
|
165
|
+
const args = prepare();
|
|
166
|
+
if (args === undefined) {
|
|
167
|
+
noteFetchAutorunRun?.('declined');
|
|
168
|
+
return false;
|
|
169
|
+
}
|
|
170
|
+
// The freshness gate, and the reload that overrides it. The epoch is
|
|
171
|
+
// stamped at ISSUE where the key is stamped at commit: a fetch that fails
|
|
172
|
+
// leaves nothing current, so this gate is open anyway on the next run and
|
|
173
|
+
// consuming the retry here costs nothing — while a reload landing
|
|
174
|
+
// mid-flight is answered by the re-run the counter read above already
|
|
175
|
+
// guarantees.
|
|
176
|
+
if (fetchKey !== undefined &&
|
|
177
|
+
isDataCurrent(heldKey(), fetchKey(args)) &&
|
|
178
|
+
reloadEpoch === issuedEpoch) {
|
|
179
|
+
noteFetchAutorunRun?.('declined');
|
|
180
|
+
return false;
|
|
181
|
+
}
|
|
182
|
+
issuedEpoch = reloadEpoch;
|
|
183
|
+
noteFetchAutorunRun?.('fetched');
|
|
184
|
+
// `run` is called synchronously, so its prefix down to its first await
|
|
185
|
+
// executes in this derivation; `FetchPhases.run` promises those reads are
|
|
186
|
+
// untracked, and unlike the MST flow the LGV side hides behind, nothing
|
|
187
|
+
// here makes it so. Whatever the run needs tracked belongs in `prepare`.
|
|
188
|
+
// eslint-disable-next-line no-restricted-syntax -- effect input: run's prefix reads are the fetch's, prepare is the trigger list
|
|
189
|
+
untracked(() => {
|
|
190
|
+
void runFetchOnce(self, rotation.begin(), args, {
|
|
191
|
+
run,
|
|
192
|
+
commit: commitAndStamp,
|
|
193
|
+
setError,
|
|
194
|
+
onBegin,
|
|
195
|
+
onEnd,
|
|
196
|
+
});
|
|
197
|
+
});
|
|
198
|
+
// arms the debounce; the runs that bail above return false and stay on
|
|
199
|
+
// the leading edge, so the first real fetch is immediate while a
|
|
200
|
+
// zoom/pan refetch debounces
|
|
201
|
+
return true;
|
|
202
|
+
},
|
|
203
|
+
// #endregion
|
|
204
|
+
{ name, delay });
|
|
205
|
+
return rotation.cancel;
|
|
206
|
+
}
|