@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,498 @@
|
|
|
1
|
+
import { getFileName } from './getFileName.js';
|
|
2
|
+
import { isLocalPathLocation, isUriLocation } from './types/data.js';
|
|
3
|
+
// Shared assembly "add sequence" form logic used by both the jbrowse-desktop
|
|
4
|
+
// Open genome(s) dialog and the in-app data-management Assembly manager. Pure
|
|
5
|
+
// (no React, no MST, no product wiring) so it can live in core and be reused by
|
|
6
|
+
// both surfaces. The one product-specific step — turning a plain FASTA into a
|
|
7
|
+
// usable adapter — is injected into buildAssemblyConf (desktop runs samtools
|
|
8
|
+
// faidx to produce an IndexedFastaAdapter; web keeps an UnindexedFastaAdapter).
|
|
9
|
+
export const adapterTypes = [
|
|
10
|
+
'IndexedFastaAdapter',
|
|
11
|
+
'BgzipFastaAdapter',
|
|
12
|
+
'FastaAdapter',
|
|
13
|
+
'TwoBitAdapter',
|
|
14
|
+
'ChromSizesAdapter',
|
|
15
|
+
];
|
|
16
|
+
export const adapterLabels = {
|
|
17
|
+
IndexedFastaAdapter: 'FASTA with index (.fa + .fai)',
|
|
18
|
+
BgzipFastaAdapter: 'Compressed FASTA (.fa.gz + .fai + .gzi)',
|
|
19
|
+
FastaAdapter: 'FASTA (automatically indexed)',
|
|
20
|
+
TwoBitAdapter: '2bit file (.2bit)',
|
|
21
|
+
ChromSizesAdapter: 'Chromosome sizes, no sequence (.chrom.sizes)',
|
|
22
|
+
};
|
|
23
|
+
// The formats that bring bases with them. ChromSizesAdapter is the one that
|
|
24
|
+
// does not: it names the assembly's sequences and their lengths and stops
|
|
25
|
+
// there, which is the whole point of it (six wheat genomes are tens of
|
|
26
|
+
// gigabytes as sequence and a few kilobytes as names and lengths) and also
|
|
27
|
+
// everything a caller has to warn about. `jbrowse add-assembly` has taken
|
|
28
|
+
// `--type chromSizes` since long before this pane offered it.
|
|
29
|
+
export function adapterHasSequence(adapterSelection) {
|
|
30
|
+
return adapterSelection !== 'ChromSizesAdapter';
|
|
31
|
+
}
|
|
32
|
+
export const sidecarRoles = ['fai', 'gzi'];
|
|
33
|
+
// What each index sidecar is called, where it lives on the form, and the
|
|
34
|
+
// extension it takes next to its sequence file.
|
|
35
|
+
export const sidecars = {
|
|
36
|
+
fai: {
|
|
37
|
+
field: 'faiLocation',
|
|
38
|
+
ext: '.fai',
|
|
39
|
+
label: 'FASTA index (.fai) file',
|
|
40
|
+
},
|
|
41
|
+
gzi: {
|
|
42
|
+
field: 'gziLocation',
|
|
43
|
+
ext: '.gzi',
|
|
44
|
+
label: 'FASTA gzip index (.gzi) file',
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
// The sidecars each format cannot load without. One table because the same
|
|
48
|
+
// condition was written out at four sites and they drifted: the staging button
|
|
49
|
+
// gated on a copy that let a .fa.gz through with neither index, straight into
|
|
50
|
+
// getAdapterConfig's "FASTA, FAI, and GZI locations are all required".
|
|
51
|
+
const requiredSidecars = {
|
|
52
|
+
IndexedFastaAdapter: ['fai'],
|
|
53
|
+
BgzipFastaAdapter: ['fai', 'gzi'],
|
|
54
|
+
FastaAdapter: [],
|
|
55
|
+
TwoBitAdapter: [],
|
|
56
|
+
ChromSizesAdapter: [],
|
|
57
|
+
};
|
|
58
|
+
// The file each format is opened by. A table rather than an `=== 'TwoBit'` test
|
|
59
|
+
// per site, because chrom.sizes is the primary for one format and a 2bit's
|
|
60
|
+
// optional sidecar for another, and the two answers were about to be spelled
|
|
61
|
+
// out at three call sites.
|
|
62
|
+
const primaryFields = {
|
|
63
|
+
IndexedFastaAdapter: 'fastaLocation',
|
|
64
|
+
BgzipFastaAdapter: 'fastaLocation',
|
|
65
|
+
FastaAdapter: 'fastaLocation',
|
|
66
|
+
TwoBitAdapter: 'twoBitLocation',
|
|
67
|
+
ChromSizesAdapter: 'chromSizesLocation',
|
|
68
|
+
};
|
|
69
|
+
// Curried field setter for the add-assembly form:
|
|
70
|
+
// makeSetField(setForm)('faiLocation') returns a value setter that merges just
|
|
71
|
+
// that field. Shared by AdvancedOptions and SequenceAdapterInputs so the
|
|
72
|
+
// immutable-update logic lives in one place.
|
|
73
|
+
export function makeSetField(setForm) {
|
|
74
|
+
return (key) => (value) => {
|
|
75
|
+
setForm(f => ({ ...f, [key]: value }));
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
const blank = { uri: '', locationType: 'UriLocation' };
|
|
79
|
+
export function initialFormState() {
|
|
80
|
+
return {
|
|
81
|
+
adapterSelection: adapterTypes[0],
|
|
82
|
+
assemblyName: '',
|
|
83
|
+
assemblyDisplayName: '',
|
|
84
|
+
fastaLocation: blank,
|
|
85
|
+
faiLocation: blank,
|
|
86
|
+
gziLocation: blank,
|
|
87
|
+
twoBitLocation: blank,
|
|
88
|
+
chromSizesLocation: blank,
|
|
89
|
+
refNameAliasesLocation: blank,
|
|
90
|
+
cytobandsLocation: blank,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
export function applyPrimaryFile(state, location) {
|
|
94
|
+
const filename = getFileName(location);
|
|
95
|
+
const detected = filename ? detectAdapterType(filename) : undefined;
|
|
96
|
+
const assemblyName = filename && !state.assemblyName
|
|
97
|
+
? getAssemblyNameFromFilename(filename)
|
|
98
|
+
: state.assemblyName;
|
|
99
|
+
if (detected === 'TwoBitAdapter' || detected === 'ChromSizesAdapter') {
|
|
100
|
+
return {
|
|
101
|
+
...state,
|
|
102
|
+
[primaryFields[detected]]: location,
|
|
103
|
+
adapterSelection: detected,
|
|
104
|
+
assemblyName,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
const adapterSelection = detected ?? state.adapterSelection;
|
|
108
|
+
return {
|
|
109
|
+
...state,
|
|
110
|
+
fastaLocation: location,
|
|
111
|
+
adapterSelection,
|
|
112
|
+
assemblyName,
|
|
113
|
+
...guessSidecarLocations(state, location, adapterSelection),
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
// Prefill conventional .fai/.gzi sidecars sitting next to the chosen FASTA,
|
|
117
|
+
// leaving any field the user already set untouched. Spreading the source
|
|
118
|
+
// location carries over its baseUri/auth so the sidecars use the same access.
|
|
119
|
+
function guessSidecarLocations(state, location, adapterSelection) {
|
|
120
|
+
const guesses = {};
|
|
121
|
+
for (const role of requiredSidecars[adapterSelection]) {
|
|
122
|
+
const { field, ext } = sidecars[role];
|
|
123
|
+
const guess = isBlank(state[field]) ? sidecar(location, ext) : undefined;
|
|
124
|
+
if (guess) {
|
|
125
|
+
guesses[field] = guess;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return guesses;
|
|
129
|
+
}
|
|
130
|
+
function sidecar(location, ext) {
|
|
131
|
+
if (isUriLocation(location)) {
|
|
132
|
+
return { ...location, uri: `${location.uri}${ext}` };
|
|
133
|
+
}
|
|
134
|
+
if (isLocalPathLocation(location)) {
|
|
135
|
+
return { ...location, localPath: `${location.localPath}${ext}` };
|
|
136
|
+
}
|
|
137
|
+
return undefined;
|
|
138
|
+
}
|
|
139
|
+
export function applyTwoBitFile(state, location) {
|
|
140
|
+
const filename = getFileName(location);
|
|
141
|
+
const assemblyName = filename && !state.assemblyName
|
|
142
|
+
? getAssemblyNameFromFilename(filename)
|
|
143
|
+
: state.assemblyName;
|
|
144
|
+
return { ...state, twoBitLocation: location, assemblyName };
|
|
145
|
+
}
|
|
146
|
+
// Everything about the genome just staged, gone, so the next one starts clean.
|
|
147
|
+
// The chosen format survives on purpose: in the manual form it is what the user
|
|
148
|
+
// picked, and the guided path overwrites it from the next file set anyway.
|
|
149
|
+
export function clearFormFields(state) {
|
|
150
|
+
return { ...initialFormState(), adapterSelection: state.adapterSelection };
|
|
151
|
+
}
|
|
152
|
+
// Clear only the sequence-file fields (and their required index sidecars),
|
|
153
|
+
// keeping assembly-level metadata the user already entered — name, display name,
|
|
154
|
+
// refName aliases, cytobands. Used by the recognition card's "change" link so
|
|
155
|
+
// swapping a mis-picked sequence file doesn't discard everything else.
|
|
156
|
+
export function clearSequenceFiles(state) {
|
|
157
|
+
return {
|
|
158
|
+
...state,
|
|
159
|
+
fastaLocation: blank,
|
|
160
|
+
faiLocation: blank,
|
|
161
|
+
gziLocation: blank,
|
|
162
|
+
twoBitLocation: blank,
|
|
163
|
+
chromSizesLocation: blank,
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
export function getBaseAssemblyConfig(state) {
|
|
167
|
+
return {
|
|
168
|
+
name: state.assemblyName,
|
|
169
|
+
...(state.assemblyDisplayName
|
|
170
|
+
? { displayName: state.assemblyDisplayName }
|
|
171
|
+
: {}),
|
|
172
|
+
...(!isBlank(state.refNameAliasesLocation)
|
|
173
|
+
? {
|
|
174
|
+
refNameAliases: {
|
|
175
|
+
adapter: {
|
|
176
|
+
type: 'RefNameAliasAdapter',
|
|
177
|
+
location: state.refNameAliasesLocation,
|
|
178
|
+
},
|
|
179
|
+
},
|
|
180
|
+
}
|
|
181
|
+
: {}),
|
|
182
|
+
...(!isBlank(state.cytobandsLocation)
|
|
183
|
+
? {
|
|
184
|
+
cytobands: {
|
|
185
|
+
adapter: {
|
|
186
|
+
type: 'CytobandAdapter',
|
|
187
|
+
cytobandLocation: state.cytobandsLocation,
|
|
188
|
+
},
|
|
189
|
+
},
|
|
190
|
+
}
|
|
191
|
+
: {}),
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
export function isBlank(location) {
|
|
195
|
+
return 'uri' in location && location.uri === '';
|
|
196
|
+
}
|
|
197
|
+
// The form can be opened only once the chosen format's primary file is there.
|
|
198
|
+
// Secondary files (.fai/.gzi) are validated later in getAdapterConfig.
|
|
199
|
+
export function formHasSequence(form) {
|
|
200
|
+
return !isBlank(form[primaryFields[form.adapterSelection]]);
|
|
201
|
+
}
|
|
202
|
+
// The name the assembly is saved under. Trimmed because surrounding whitespace
|
|
203
|
+
// is never intentional and would otherwise create near-duplicate assemblies
|
|
204
|
+
// ("hg38" vs "hg38 ") that a caller's duplicate check can't catch.
|
|
205
|
+
export function getAssemblyName(form) {
|
|
206
|
+
return form.assemblyName.trim();
|
|
207
|
+
}
|
|
208
|
+
// The index files the chosen format requires that the form doesn't have yet.
|
|
209
|
+
// getAdapterConfig throws on the same condition; asking first is what lets a
|
|
210
|
+
// caller disable its submit button instead of letting the user click it and
|
|
211
|
+
// read a stack trace back, and lets the pane offer an input for each one.
|
|
212
|
+
export function getMissingSidecars(form) {
|
|
213
|
+
return requiredSidecars[form.adapterSelection]
|
|
214
|
+
.map(role => sidecars[role])
|
|
215
|
+
.filter(({ field }) => isBlank(form[field]));
|
|
216
|
+
}
|
|
217
|
+
// Whether the form can be submitted/staged: a primary sequence file, everything
|
|
218
|
+
// that file's format requires, and a (non-whitespace) name. Shared so every
|
|
219
|
+
// add-assembly surface gates its submit button the same way.
|
|
220
|
+
export function isFormReady(form) {
|
|
221
|
+
return (formHasSequence(form) &&
|
|
222
|
+
!!getAssemblyName(form) &&
|
|
223
|
+
!getMissingSidecars(form).length);
|
|
224
|
+
}
|
|
225
|
+
// Whether the user has put anything in the form. A caller that submits a
|
|
226
|
+
// separate list (desktop stages several genomes) uses this to refuse rather
|
|
227
|
+
// than silently drop a genome the user was halfway through entering.
|
|
228
|
+
export function isFormDirty(form) {
|
|
229
|
+
return formHasSequence(form) || !!getAssemblyName(form);
|
|
230
|
+
}
|
|
231
|
+
// The non-primary files the built config will actually reference, and the ones
|
|
232
|
+
// it won't. chrom.sizes reaches a TwoBitAdapter and nothing else, so listing it
|
|
233
|
+
// under a FASTA promises a file getAdapterConfig drops on the floor.
|
|
234
|
+
export function partitionExtraLocations(form) {
|
|
235
|
+
const { adapterSelection } = form;
|
|
236
|
+
const required = requiredSidecars[adapterSelection];
|
|
237
|
+
// it is the primary file for ChromSizesAdapter and listed by the row above
|
|
238
|
+
// the extras, so it belongs in neither list there
|
|
239
|
+
const chromSizesReaches = adapterSelection === 'TwoBitAdapter' ||
|
|
240
|
+
adapterSelection === 'ChromSizesAdapter';
|
|
241
|
+
const sidecarLocation = (role) => form[sidecars[role].field];
|
|
242
|
+
const used = [
|
|
243
|
+
...required.map(sidecarLocation),
|
|
244
|
+
...(adapterSelection === 'TwoBitAdapter' ? [form.chromSizesLocation] : []),
|
|
245
|
+
form.refNameAliasesLocation,
|
|
246
|
+
form.cytobandsLocation,
|
|
247
|
+
].filter(loc => !isBlank(loc));
|
|
248
|
+
const unused = [
|
|
249
|
+
...sidecarRoles
|
|
250
|
+
.filter(role => !required.includes(role))
|
|
251
|
+
.map(sidecarLocation),
|
|
252
|
+
...(chromSizesReaches ? [] : [form.chromSizesLocation]),
|
|
253
|
+
].filter(loc => !isBlank(loc));
|
|
254
|
+
return { used, unused };
|
|
255
|
+
}
|
|
256
|
+
// The FASTA extensions the sequence plugin's adapter guessers accept, so the
|
|
257
|
+
// add-genome pane places exactly the files that load everywhere else. Its own
|
|
258
|
+
// table used to be `(fa|fasta|fna).gz`, case-sensitive, which silently refused
|
|
259
|
+
// .fas, .mfa, .FA and .fa.bgz.
|
|
260
|
+
const FASTA_EXT = /\.(fa|fasta|fas|fna|mfa)$/i;
|
|
261
|
+
const FASTA_GZ_EXT = /\.(fa|fasta|fas|fna|mfa)\.b?gz$/i;
|
|
262
|
+
const TWOBIT_EXT = /\.2bit$/i;
|
|
263
|
+
// the same pattern `jbrowse add-assembly` infers `--type chromSizes` from, so a
|
|
264
|
+
// file that works there is recognized here
|
|
265
|
+
const CHROM_SIZES_EXT = /\.chrom\.sizes$/i;
|
|
266
|
+
// Every pattern here anchors to the end of the name, which is why getFileName
|
|
267
|
+
// drops a URI's query string — a presigned link's few hundred characters of
|
|
268
|
+
// signature would otherwise be what these match against.
|
|
269
|
+
export function getAssemblyNameFromFilename(filename) {
|
|
270
|
+
return filename
|
|
271
|
+
.replace(FASTA_GZ_EXT, '')
|
|
272
|
+
.replace(FASTA_EXT, '')
|
|
273
|
+
.replace(TWOBIT_EXT, '')
|
|
274
|
+
.replace(CHROM_SIZES_EXT, '');
|
|
275
|
+
}
|
|
276
|
+
export function detectAdapterType(filename) {
|
|
277
|
+
return FASTA_GZ_EXT.test(filename)
|
|
278
|
+
? 'BgzipFastaAdapter'
|
|
279
|
+
: TWOBIT_EXT.test(filename)
|
|
280
|
+
? 'TwoBitAdapter'
|
|
281
|
+
: CHROM_SIZES_EXT.test(filename)
|
|
282
|
+
? 'ChromSizesAdapter'
|
|
283
|
+
: undefined;
|
|
284
|
+
}
|
|
285
|
+
// Classify a single filename into the assembly slot it belongs to, by
|
|
286
|
+
// extension. Returns undefined for files we can't place. Order matters: index
|
|
287
|
+
// sidecars (.fai/.gzi) are checked before the fasta patterns they share a stem
|
|
288
|
+
// with, and the fasta patterns before the looser cytoband/alias name matches.
|
|
289
|
+
export function classifyFilename(filename) {
|
|
290
|
+
return /\.fai$/i.test(filename)
|
|
291
|
+
? 'fai'
|
|
292
|
+
: /\.gzi$/i.test(filename)
|
|
293
|
+
? 'gzi'
|
|
294
|
+
: TWOBIT_EXT.test(filename)
|
|
295
|
+
? 'twoBit'
|
|
296
|
+
: FASTA_GZ_EXT.test(filename)
|
|
297
|
+
? 'fastaGz'
|
|
298
|
+
: FASTA_EXT.test(filename)
|
|
299
|
+
? 'fasta'
|
|
300
|
+
: /\.chrom\.sizes$/i.test(filename)
|
|
301
|
+
? 'chromSizes'
|
|
302
|
+
: /cytoband/i.test(filename)
|
|
303
|
+
? 'cytobands'
|
|
304
|
+
: /alias/i.test(filename)
|
|
305
|
+
? 'refNameAliases'
|
|
306
|
+
: undefined;
|
|
307
|
+
}
|
|
308
|
+
// Sort a dropped/pasted set of files into the assembly form fields, picking the
|
|
309
|
+
// adapter and assembly name from whichever file is the primary sequence.
|
|
310
|
+
//
|
|
311
|
+
// The primary is chosen once, up front, and then answers for the adapter, the
|
|
312
|
+
// sequence field and the name together. Letting each branch overwrite as it went
|
|
313
|
+
// ran two independent last-wins rules that could disagree: a .2bit ahead of a .fa
|
|
314
|
+
// took the adapter while the .fa took the name, so the form opened one genome's
|
|
315
|
+
// sequence under the other genome's name, and the "more than one genome" notice
|
|
316
|
+
// named the file it was not reading.
|
|
317
|
+
export function classifyAssemblyFiles(locations) {
|
|
318
|
+
const result = {};
|
|
319
|
+
const classified = classifyLocations(locations);
|
|
320
|
+
for (const { location, role } of classified) {
|
|
321
|
+
const field = role && extraFields[role];
|
|
322
|
+
if (field) {
|
|
323
|
+
result[field] = location;
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
const primary = classified.filter(f => isSequenceRole(f.role)).at(-1);
|
|
327
|
+
// A chrom.sizes leads only when nothing that carries bases is in the set: it
|
|
328
|
+
// is the 2bit's optional sequence-name sidecar in every other drop, and
|
|
329
|
+
// promoting it would silently downgrade `hg38.2bit + hg38.chrom.sizes` to an
|
|
330
|
+
// assembly with no sequence.
|
|
331
|
+
if (!primary && !isBlank(result.chromSizesLocation ?? blank)) {
|
|
332
|
+
return {
|
|
333
|
+
...result,
|
|
334
|
+
adapterSelection: 'ChromSizesAdapter',
|
|
335
|
+
assemblyName: getAssemblyNameFromFilename(getFileName(result.chromSizesLocation)),
|
|
336
|
+
};
|
|
337
|
+
}
|
|
338
|
+
if (primary) {
|
|
339
|
+
result.assemblyName = getAssemblyNameFromFilename(getFileName(primary.location));
|
|
340
|
+
if (primary.role === 'twoBit') {
|
|
341
|
+
result.twoBitLocation = primary.location;
|
|
342
|
+
result.adapterSelection = 'TwoBitAdapter';
|
|
343
|
+
}
|
|
344
|
+
else {
|
|
345
|
+
result.fastaLocation = primary.location;
|
|
346
|
+
result.adapterSelection =
|
|
347
|
+
primary.role === 'fastaGz'
|
|
348
|
+
? 'BgzipFastaAdapter'
|
|
349
|
+
: // a plain FASTA with no .fai in the set indexes itself on submit
|
|
350
|
+
result.faiLocation
|
|
351
|
+
? 'IndexedFastaAdapter'
|
|
352
|
+
: 'FastaAdapter';
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
return result;
|
|
356
|
+
}
|
|
357
|
+
// The roles that describe the sequence itself. Exactly one of these is the
|
|
358
|
+
// genome being added, so a set holding two holds two genomes and the caller
|
|
359
|
+
// warns about it.
|
|
360
|
+
const sequenceRoles = new Set([
|
|
361
|
+
'fasta',
|
|
362
|
+
'fastaGz',
|
|
363
|
+
'twoBit',
|
|
364
|
+
]);
|
|
365
|
+
export function isSequenceRole(role) {
|
|
366
|
+
return role !== undefined && sequenceRoles.has(role);
|
|
367
|
+
}
|
|
368
|
+
// Where each non-sequence role lands on the form. The sequence roles map to
|
|
369
|
+
// nothing on purpose: which field they fill depends on which one is the primary,
|
|
370
|
+
// so classifyAssemblyFiles decides that in one place rather than per file.
|
|
371
|
+
const extraFields = {
|
|
372
|
+
fai: 'faiLocation',
|
|
373
|
+
gzi: 'gziLocation',
|
|
374
|
+
chromSizes: 'chromSizesLocation',
|
|
375
|
+
cytobands: 'cytobandsLocation',
|
|
376
|
+
refNameAliases: 'refNameAliasesLocation',
|
|
377
|
+
fasta: undefined,
|
|
378
|
+
fastaGz: undefined,
|
|
379
|
+
twoBit: undefined,
|
|
380
|
+
};
|
|
381
|
+
// Every location paired with the slot it belongs in, `undefined` for the ones
|
|
382
|
+
// that could not be placed. Callers needing more than one answer about the same
|
|
383
|
+
// set — what was placed, what wasn't, which files are sequences — get all of
|
|
384
|
+
// them out of this one pass.
|
|
385
|
+
export function classifyLocations(locations) {
|
|
386
|
+
return locations.map(location => ({
|
|
387
|
+
location,
|
|
388
|
+
role: classifyFilename(getFileName(location)),
|
|
389
|
+
}));
|
|
390
|
+
}
|
|
391
|
+
/**
|
|
392
|
+
* Rebuild the file-location fields (plus adapter/name) of `state` from a freshly
|
|
393
|
+
* classified set of dropped/pasted files.
|
|
394
|
+
*
|
|
395
|
+
* The file set is authoritative: a field it says nothing about resets, so
|
|
396
|
+
* deleting a URL from the box clears the slot it filled. `edited` is the way out
|
|
397
|
+
* — the fields the user set by hand, which the classifier never gets to answer
|
|
398
|
+
* for. Without it, typing a .fai into the "this format needs its index" input
|
|
399
|
+
* and then adding one more URL wiped the .fai and the pane re-asked for it.
|
|
400
|
+
*
|
|
401
|
+
* refName aliases and cytobands merge instead of resetting even when untouched:
|
|
402
|
+
* they are the two slots "More options" also fills, and no file set that omits
|
|
403
|
+
* them is making a claim about them.
|
|
404
|
+
*/
|
|
405
|
+
export function applyClassifiedFiles(state, locations, edited) {
|
|
406
|
+
const classified = classifyAssemblyFiles(locations);
|
|
407
|
+
const pick = (key, reset) => edited.has(key) ? state[key] : (classified[key] ?? reset);
|
|
408
|
+
return {
|
|
409
|
+
...state,
|
|
410
|
+
fastaLocation: pick('fastaLocation', blank),
|
|
411
|
+
faiLocation: pick('faiLocation', blank),
|
|
412
|
+
gziLocation: pick('gziLocation', blank),
|
|
413
|
+
twoBitLocation: pick('twoBitLocation', blank),
|
|
414
|
+
chromSizesLocation: pick('chromSizesLocation', blank),
|
|
415
|
+
refNameAliasesLocation: pick('refNameAliasesLocation', state.refNameAliasesLocation),
|
|
416
|
+
cytobandsLocation: pick('cytobandsLocation', state.cytobandsLocation),
|
|
417
|
+
adapterSelection: pick('adapterSelection', state.adapterSelection),
|
|
418
|
+
assemblyName: pick('assemblyName', ''),
|
|
419
|
+
};
|
|
420
|
+
}
|
|
421
|
+
// Build a full assembly config from the form. A plain FASTA has no index, so
|
|
422
|
+
// the caller supplies a resolveFastaAdapter callback (desktop runs an
|
|
423
|
+
// out-of-process samtools faidx to make an IndexedFastaAdapter; web keeps an
|
|
424
|
+
// UnindexedFastaAdapter) used only for the needsFastaIndex case. The name is
|
|
425
|
+
// trimmed and reused for a unique-per-open sequence trackId.
|
|
426
|
+
export async function buildAssemblyConf(form, resolveFastaAdapter) {
|
|
427
|
+
const name = getAssemblyName(form);
|
|
428
|
+
const result = getAdapterConfig(form);
|
|
429
|
+
const adapter = result.kind === 'needsFastaIndex'
|
|
430
|
+
? await resolveFastaAdapter(result.fastaLocation)
|
|
431
|
+
: result.adapter;
|
|
432
|
+
return {
|
|
433
|
+
...getBaseAssemblyConfig({ ...form, assemblyName: name }),
|
|
434
|
+
sequence: {
|
|
435
|
+
type: 'ReferenceSequenceTrack',
|
|
436
|
+
trackId: `${name}-${Date.now()}`,
|
|
437
|
+
adapter,
|
|
438
|
+
},
|
|
439
|
+
};
|
|
440
|
+
}
|
|
441
|
+
export function urlTextToLocations(text) {
|
|
442
|
+
return text
|
|
443
|
+
.split('\n')
|
|
444
|
+
.map(line => line.trim())
|
|
445
|
+
.filter(Boolean)
|
|
446
|
+
.map(uri => ({ uri, locationType: 'UriLocation' }));
|
|
447
|
+
}
|
|
448
|
+
export function getAdapterConfig({ adapterSelection, fastaLocation, faiLocation, gziLocation, twoBitLocation, chromSizesLocation, }) {
|
|
449
|
+
if (adapterSelection === 'FastaAdapter') {
|
|
450
|
+
if (isBlank(fastaLocation)) {
|
|
451
|
+
throw new Error('FASTA location is required');
|
|
452
|
+
}
|
|
453
|
+
return { kind: 'needsFastaIndex', fastaLocation };
|
|
454
|
+
}
|
|
455
|
+
if (adapterSelection === 'IndexedFastaAdapter') {
|
|
456
|
+
if (isBlank(fastaLocation) || isBlank(faiLocation)) {
|
|
457
|
+
throw new Error('Both FASTA and FAI locations are required');
|
|
458
|
+
}
|
|
459
|
+
return {
|
|
460
|
+
kind: 'ready',
|
|
461
|
+
adapter: { type: 'IndexedFastaAdapter', fastaLocation, faiLocation },
|
|
462
|
+
};
|
|
463
|
+
}
|
|
464
|
+
if (adapterSelection === 'BgzipFastaAdapter') {
|
|
465
|
+
if (isBlank(fastaLocation) ||
|
|
466
|
+
isBlank(faiLocation) ||
|
|
467
|
+
isBlank(gziLocation)) {
|
|
468
|
+
throw new Error('FASTA, FAI, and GZI locations are all required');
|
|
469
|
+
}
|
|
470
|
+
return {
|
|
471
|
+
kind: 'ready',
|
|
472
|
+
adapter: {
|
|
473
|
+
type: 'BgzipFastaAdapter',
|
|
474
|
+
fastaLocation,
|
|
475
|
+
faiLocation,
|
|
476
|
+
gziLocation,
|
|
477
|
+
},
|
|
478
|
+
};
|
|
479
|
+
}
|
|
480
|
+
if (adapterSelection === 'ChromSizesAdapter') {
|
|
481
|
+
if (isBlank(chromSizesLocation)) {
|
|
482
|
+
throw new Error('Chromosome sizes location is required');
|
|
483
|
+
}
|
|
484
|
+
return {
|
|
485
|
+
kind: 'ready',
|
|
486
|
+
adapter: { type: 'ChromSizesAdapter', chromSizesLocation },
|
|
487
|
+
};
|
|
488
|
+
}
|
|
489
|
+
if (isBlank(twoBitLocation)) {
|
|
490
|
+
throw new Error('2bit location is required');
|
|
491
|
+
}
|
|
492
|
+
return {
|
|
493
|
+
kind: 'ready',
|
|
494
|
+
adapter: isBlank(chromSizesLocation)
|
|
495
|
+
? { type: 'TwoBitAdapter', twoBitLocation }
|
|
496
|
+
: { type: 'TwoBitAdapter', twoBitLocation, chromSizesLocation },
|
|
497
|
+
};
|
|
498
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export declare const MIN_BAND_HEIGHT = 20;
|
|
2
|
+
/** The legal range for one band. Both ends are optional and both are px. */
|
|
3
|
+
export interface BandBounds {
|
|
4
|
+
/** Defaults to {@link MIN_BAND_HEIGHT}. */
|
|
5
|
+
min?: number;
|
|
6
|
+
/** Defaults to unbounded. A band above a plot should always state one. */
|
|
7
|
+
max?: number;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* #api core/util
|
|
11
|
+
* Bound a band height to its legal range — a config value, a menu choice, or a
|
|
12
|
+
* slider position, i.e. anywhere the number is being *stated* rather than
|
|
13
|
+
* dragged.
|
|
14
|
+
*
|
|
15
|
+
* The **floor** keeps the band operable at its smallest: for a drag-resized
|
|
16
|
+
* band that means keeping the handle grabbable, for a menu-sized one it is the
|
|
17
|
+
* height below which its content stops reading. The **ceiling** stops a band
|
|
18
|
+
* from swallowing the plot it sits over — every display floors its plot area at
|
|
19
|
+
* 0, so an unbounded band takes the rows to zero height rather than to a
|
|
20
|
+
* scrollbar, and takes the band's own handle off-screen with them.
|
|
21
|
+
*
|
|
22
|
+
* The bounds differ per band and the rule does not, which is why this takes them
|
|
23
|
+
* rather than each band re-deriving the reasoning — that is how the two
|
|
24
|
+
* `clampBandHeight`s in this repo drifted apart, each ending up with one half of
|
|
25
|
+
* this rule and a doc comment claiming to be the whole of it.
|
|
26
|
+
*/
|
|
27
|
+
export declare function boundBandHeight(n: number, { min, max }?: BandBounds): number;
|
|
28
|
+
/**
|
|
29
|
+
* #api core/util
|
|
30
|
+
* Clamp one *resize* of a drag-resizable band: {@link boundBandHeight}, plus the
|
|
31
|
+
* one rule a resize needs that a stated height does not.
|
|
32
|
+
*
|
|
33
|
+
* The floor becomes `min(bounds.min, current)`, never the bare bound: a band
|
|
34
|
+
* whose config declares it smaller than the floor must stay where it is. Taking
|
|
35
|
+
* the bare floor instead made the *first* drag on such a band jump it up to the
|
|
36
|
+
* floor before honoring the delta. A band at or above the floor is unaffected,
|
|
37
|
+
* one below it can still be dragged but never smaller than it already is, and
|
|
38
|
+
* one dragged back past the floor regains it.
|
|
39
|
+
*
|
|
40
|
+
* The ceiling is not relaxed the same way — a band already over its ceiling is
|
|
41
|
+
* the state the user is trying to escape, so a resize brings it back inside.
|
|
42
|
+
*
|
|
43
|
+
* `ResizeHandle` emits one delta per animation frame, so callers driving a drag
|
|
44
|
+
* pass `current + distance` as the target and read `current` inside the action —
|
|
45
|
+
* a component computing the target from a rendered height drops every tick that
|
|
46
|
+
* lands before React re-renders.
|
|
47
|
+
*
|
|
48
|
+
* @param current - the band's height right now, in px
|
|
49
|
+
* @param target - the height this resize is asking for, in px
|
|
50
|
+
* @param bounds - the band's legal range; `max` should be derived from the
|
|
51
|
+
* display height so the plot below cannot be squashed to nothing
|
|
52
|
+
*/
|
|
53
|
+
export declare function clampBandHeight(current: number, target: number, bounds?: BandBounds): number;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
// Default floor for a user-resizable band (an alignments coverage / arc /
|
|
2
|
+
// sashimi band, a MAF coverage / conservation band), in px. It exists so the
|
|
3
|
+
// drag handle stays grabbable, which is a constraint on dragging, not on what
|
|
4
|
+
// config may declare. Bands with their own vocabulary of "too small" pass their
|
|
5
|
+
// own (the variant lane's 8 is where a record stops reading as a mark).
|
|
6
|
+
export const MIN_BAND_HEIGHT = 20;
|
|
7
|
+
/**
|
|
8
|
+
* #api core/util
|
|
9
|
+
* Bound a band height to its legal range — a config value, a menu choice, or a
|
|
10
|
+
* slider position, i.e. anywhere the number is being *stated* rather than
|
|
11
|
+
* dragged.
|
|
12
|
+
*
|
|
13
|
+
* The **floor** keeps the band operable at its smallest: for a drag-resized
|
|
14
|
+
* band that means keeping the handle grabbable, for a menu-sized one it is the
|
|
15
|
+
* height below which its content stops reading. The **ceiling** stops a band
|
|
16
|
+
* from swallowing the plot it sits over — every display floors its plot area at
|
|
17
|
+
* 0, so an unbounded band takes the rows to zero height rather than to a
|
|
18
|
+
* scrollbar, and takes the band's own handle off-screen with them.
|
|
19
|
+
*
|
|
20
|
+
* The bounds differ per band and the rule does not, which is why this takes them
|
|
21
|
+
* rather than each band re-deriving the reasoning — that is how the two
|
|
22
|
+
* `clampBandHeight`s in this repo drifted apart, each ending up with one half of
|
|
23
|
+
* this rule and a doc comment claiming to be the whole of it.
|
|
24
|
+
*/
|
|
25
|
+
export function boundBandHeight(n, { min = MIN_BAND_HEIGHT, max = Number.POSITIVE_INFINITY } = {}) {
|
|
26
|
+
return Math.min(max, Math.max(min, Math.round(n)));
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* #api core/util
|
|
30
|
+
* Clamp one *resize* of a drag-resizable band: {@link boundBandHeight}, plus the
|
|
31
|
+
* one rule a resize needs that a stated height does not.
|
|
32
|
+
*
|
|
33
|
+
* The floor becomes `min(bounds.min, current)`, never the bare bound: a band
|
|
34
|
+
* whose config declares it smaller than the floor must stay where it is. Taking
|
|
35
|
+
* the bare floor instead made the *first* drag on such a band jump it up to the
|
|
36
|
+
* floor before honoring the delta. A band at or above the floor is unaffected,
|
|
37
|
+
* one below it can still be dragged but never smaller than it already is, and
|
|
38
|
+
* one dragged back past the floor regains it.
|
|
39
|
+
*
|
|
40
|
+
* The ceiling is not relaxed the same way — a band already over its ceiling is
|
|
41
|
+
* the state the user is trying to escape, so a resize brings it back inside.
|
|
42
|
+
*
|
|
43
|
+
* `ResizeHandle` emits one delta per animation frame, so callers driving a drag
|
|
44
|
+
* pass `current + distance` as the target and read `current` inside the action —
|
|
45
|
+
* a component computing the target from a rendered height drops every tick that
|
|
46
|
+
* lands before React re-renders.
|
|
47
|
+
*
|
|
48
|
+
* @param current - the band's height right now, in px
|
|
49
|
+
* @param target - the height this resize is asking for, in px
|
|
50
|
+
* @param bounds - the band's legal range; `max` should be derived from the
|
|
51
|
+
* display height so the plot below cannot be squashed to nothing
|
|
52
|
+
*/
|
|
53
|
+
export function clampBandHeight(current, target, bounds = {}) {
|
|
54
|
+
const { min = MIN_BAND_HEIGHT } = bounds;
|
|
55
|
+
return boundBandHeight(target, { ...bounds, min: Math.min(min, current) });
|
|
56
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { BandBounds } from './bandHeight.ts';
|
|
2
|
+
/**
|
|
3
|
+
* #api core/util
|
|
4
|
+
* One band of a display's vertical stack — a coverage histogram, an arc strip,
|
|
5
|
+
* a conservation row, a variant lane. The contract is the pair: `active` is
|
|
6
|
+
* whether the band exists right now (the display pre-ANDs its settings half,
|
|
7
|
+
* `showX`, with its data half, "some lane has ink"), and `height` is the stated
|
|
8
|
+
* height when it does. Consumers read pixels through {@link reservedPx} or
|
|
9
|
+
* {@link stackBands}, never by re-combining the pair — the re-combination is
|
|
10
|
+
* where the reserver and the painter historically drifted.
|
|
11
|
+
*/
|
|
12
|
+
export interface Band {
|
|
13
|
+
active: boolean;
|
|
14
|
+
/** The stated height in px, meaningful only while `active`. */
|
|
15
|
+
height: number;
|
|
16
|
+
/**
|
|
17
|
+
* Present ⇒ `height` is bound at read time ({@link boundBandHeight}), for a
|
|
18
|
+
* band whose stored value may be stale or hand-edited. Absent ⇒ the stated
|
|
19
|
+
* height is trusted as-is; the setters are the only gate.
|
|
20
|
+
*/
|
|
21
|
+
bounds?: BandBounds;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* #api core/util
|
|
25
|
+
* The pixels a band takes from the plot below it: 0 when off, the (optionally
|
|
26
|
+
* bound) stated height when on. This is the single spelling of "off spends
|
|
27
|
+
* 0 px".
|
|
28
|
+
*/
|
|
29
|
+
export declare function reservedPx(band: Band): number;
|
|
30
|
+
/** What {@link stackBands} derives: one top per band, and where the stack ends. */
|
|
31
|
+
export interface BandStack<K extends string> {
|
|
32
|
+
/** Content-space y where each band begins, in stack order. */
|
|
33
|
+
top: Record<K, number>;
|
|
34
|
+
/** Each band's {@link reservedPx}. */
|
|
35
|
+
reserved: Record<K, number>;
|
|
36
|
+
/** Where the content below the stack begins — the sum of every reserved px. */
|
|
37
|
+
bottom: number;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* #api core/util
|
|
41
|
+
* Fold an ordered set of bands into tops and a bottom. The order is the
|
|
42
|
+
* argument, so a display states its band order exactly once; reserve, paint
|
|
43
|
+
* and pick all read the same fold, which is what keeps "the reserver and the
|
|
44
|
+
* painter read one function" true by construction rather than by prose.
|
|
45
|
+
*
|
|
46
|
+
* Only the fold is shared. What varies per display stays there: per-lane
|
|
47
|
+
* iteration runs this once per lane, sticky-vs-scrolling is a property of how
|
|
48
|
+
* the result is projected to the screen, and a band drawn outside its
|
|
49
|
+
* reservation (an overlay) carries its own draw rect beside the stack.
|
|
50
|
+
*/
|
|
51
|
+
export declare function stackBands<K extends string>(order: readonly K[], bands: Record<K, Band>): BandStack<K>;
|