@jbrowse/core 4.3.0 → 5.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +783 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.d.ts +13 -3
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.js +33 -22
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.d.ts +8 -3
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.js +117 -19
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseAttributes.d.ts +2 -8
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseAttributes.js +4 -4
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCard.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCard.js +2 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCoreDetails.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCoreDetails.js +4 -4
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BasicValue.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BasicValue.js +12 -5
- package/esm/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.js +28 -17
- package/esm/BaseFeatureWidget/BaseFeatureDetail/DataGridDetails.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/DataGridDetails.js +19 -40
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.d.ts +6 -4
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.js +46 -30
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureWash.d.ts +20 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureWash.js +66 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldName.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldName.js +2 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Formatter.d.ts +3 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Formatter.js +17 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Position.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Position.js +3 -9
- package/esm/BaseFeatureWidget/BaseFeatureDetail/SimpleField.d.ts +3 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/SimpleField.js +3 -3
- package/esm/BaseFeatureWidget/BaseFeatureDetail/UriField.d.ts +3 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/UriField.js +7 -14
- package/esm/BaseFeatureWidget/BaseFeatureDetail/index.d.ts +2 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/index.js +19 -13
- package/esm/BaseFeatureWidget/BaseFeatureDetail/types.d.ts +5 -4
- package/esm/BaseFeatureWidget/BaseFeatureDetail/util.d.ts +8 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/util.js +32 -10
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceBody.d.ts +18 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceBody.js +10 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceContents.d.ts +7 -4
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceContents.js +62 -24
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureDetails.d.ts +10 -5
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureDetails.js +64 -41
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeaturePanel.d.ts +1 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeaturePanel.js +17 -8
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceLegend.d.ts +6 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceLegend.js +19 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceName.d.ts +5 -4
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceName.js +15 -18
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequencePanel.d.ts +1 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequencePanel.js +33 -17
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/consts.d.ts +3 -3
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/consts.js +7 -3
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/FeatureSequenceDialog.d.ts +11 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/FeatureSequenceDialog.js +29 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/HelpDialog.d.ts +1 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/HelpDialog.js +4 -6
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceDialog.d.ts +18 -6
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceDialog.js +11 -29
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceFeatureMenu.d.ts +9 -2
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceFeatureMenu.js +63 -58
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceTypeSelector.d.ts +7 -3
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceTypeSelector.js +38 -51
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SettingsDialog.d.ts +1 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SettingsDialog.js +19 -27
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/TranscriptSelector.d.ts +6 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/TranscriptSelector.js +18 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/featureTypeUtil.d.ts +12 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/featureTypeUtil.js +97 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/index.js +1 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/model.d.ts +50 -63
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/model.js +62 -59
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/panelAssemblyName.d.ts +21 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/panelAssemblyName.js +24 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDNASequence.d.ts +5 -3
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDNASequence.js +93 -75
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDSSequence.d.ts +1 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDSSequence.js +4 -11
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/GenomicSequence.d.ts +5 -2
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/GenomicSequence.js +21 -48
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/PlainSequence.d.ts +8 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/PlainSequence.js +20 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/ProteinSequence.d.ts +6 -3
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/ProteinSequence.js +33 -13
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/SequenceDisplay.d.ts +7 -4
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/SequenceDisplay.js +67 -11
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/renderSequenceSegments.d.ts +14 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/renderSequenceSegments.js +42 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/DLGAP3.d.ts +1 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/NCDN.d.ts +7 -7
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/types.d.ts +8 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/useSequenceData.d.ts +9 -9
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/useSequenceData.js +28 -44
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/useSequenceFetch.d.ts +23 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/useSequenceFetch.js +31 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/util.d.ts +90 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/util.js +145 -23
- package/esm/BaseFeatureWidget/configSchema.js +1 -1
- package/esm/BaseFeatureWidget/formatDetails.d.ts +38 -0
- package/esm/BaseFeatureWidget/formatDetails.js +103 -0
- package/esm/BaseFeatureWidget/index.d.ts +3 -1
- package/esm/BaseFeatureWidget/index.js +2 -2
- package/esm/BaseFeatureWidget/stateModelFactory.d.ts +80 -62
- package/esm/BaseFeatureWidget/stateModelFactory.js +128 -29
- package/esm/BaseFeatureWidget/types.d.ts +4 -3
- package/esm/BaseFeatureWidget/util.d.ts +4 -29
- package/esm/BaseFeatureWidget/util.js +20 -84
- package/esm/CorePlugin.js +11 -6
- package/esm/PhasedScheduler.d.ts +4 -2
- package/esm/PhasedScheduler.js +18 -2
- package/esm/Plugin.d.ts +6 -1
- package/esm/Plugin.js +7 -0
- package/esm/PluginLoader.d.ts +40 -40
- package/esm/PluginLoader.js +166 -82
- package/esm/PluginManager.d.ts +368 -55
- package/esm/PluginManager.js +326 -85
- package/esm/ReExports/BaseFeatureDetails.js +7 -6
- package/esm/ReExports/MuiDataGridReExports.d.ts +2 -2
- package/esm/ReExports/MuiDataGridReExports.js +58 -130
- package/esm/ReExports/MuiReExports.d.ts +3 -134
- package/esm/ReExports/MuiReExports.js +43 -16
- package/esm/ReExports/MuiStylesReExports.d.ts +66 -0
- package/esm/ReExports/MuiStylesReExports.js +55 -0
- package/esm/ReExports/index.js +1 -1
- package/esm/ReExports/lazify.d.ts +2 -2
- package/esm/ReExports/lazify.js +16 -3
- package/esm/ReExports/list.js +54 -229
- package/esm/ReExports/modules.js +84 -65
- package/esm/ReExports/muiComponentNames.d.ts +18 -0
- package/esm/ReExports/muiComponentNames.js +130 -0
- package/esm/ReExports/publicUtil.d.ts +1 -0
- package/esm/ReExports/publicUtil.js +28 -0
- package/esm/ReExports/registry.d.ts +2 -0
- package/esm/ReExports/registry.js +28 -0
- package/esm/TextSearch/BaseResults.d.ts +20 -21
- package/esm/TextSearch/BaseResults.js +8 -33
- package/esm/TextSearch/TextSearchManager.d.ts +14 -34
- package/esm/TextSearch/TextSearchManager.js +87 -34
- package/esm/assemblyManager/assembly.d.ts +307 -34
- package/esm/assemblyManager/assembly.js +551 -262
- package/esm/assemblyManager/assemblyAdapters.d.ts +12 -0
- package/esm/assemblyManager/assemblyAdapters.js +18 -0
- package/esm/assemblyManager/assemblyConfigSchema.d.ts +192 -17
- package/esm/assemblyManager/assemblyConfigSchema.js +213 -19
- package/esm/assemblyManager/assemblyManager.d.ts +711 -303
- package/esm/assemblyManager/assemblyManager.js +351 -46
- package/esm/assemblyManager/expandAssemblyConfigShorthand.d.ts +32 -0
- package/esm/assemblyManager/expandAssemblyConfigShorthand.js +85 -0
- package/esm/assemblyManager/geneticCodes.d.ts +21 -0
- package/esm/assemblyManager/geneticCodes.js +47 -0
- package/esm/assemblyManager/getSequenceAdapterConfig.d.ts +9 -0
- package/esm/assemblyManager/getSequenceAdapterConfig.js +12 -0
- package/esm/assemblyManager/index.d.ts +1 -1
- package/esm/assemblyManager/index.js +2 -2
- package/esm/assemblyManager/loadRefNameMap.d.ts +5 -0
- package/esm/assemblyManager/loadRefNameMap.js +80 -0
- package/esm/assemblyManager/refNameColors.d.ts +1 -0
- package/esm/assemblyManager/refNameColors.js +32 -0
- package/esm/assemblyManager/refNameMaps.d.ts +26 -0
- package/esm/assemblyManager/refNameMaps.js +87 -0
- package/esm/assemblyManager/refNameMismatch.d.ts +54 -0
- package/esm/assemblyManager/refNameMismatch.js +66 -0
- package/esm/checkPlugins.d.ts +11 -0
- package/esm/checkPlugins.js +77 -0
- package/esm/configuration/configurationSchema.d.ts +154 -19
- package/esm/configuration/configurationSchema.js +359 -138
- package/esm/configuration/configurationSlot.d.ts +283 -30
- package/esm/configuration/configurationSlot.js +205 -226
- package/esm/configuration/formatAboutConfigSchema.d.ts +55 -0
- package/esm/configuration/formatAboutConfigSchema.js +58 -0
- package/esm/configuration/formatDetailsConfigSchema.d.ts +80 -0
- package/esm/configuration/formatDetailsConfigSchema.js +90 -0
- package/esm/configuration/fullConfSnapshot.d.ts +28 -0
- package/esm/configuration/fullConfSnapshot.js +66 -0
- package/esm/configuration/getConf.d.ts +88 -0
- package/esm/configuration/getConf.js +74 -0
- package/esm/configuration/index.d.ts +19 -3
- package/esm/configuration/index.js +19 -2
- package/esm/configuration/mergeFormatCallbacks.d.ts +15 -0
- package/esm/configuration/mergeFormatCallbacks.js +24 -0
- package/esm/configuration/promotableDefaults.d.ts +199 -0
- package/esm/configuration/promotableDefaults.js +326 -0
- package/esm/configuration/promotablePin.d.ts +55 -0
- package/esm/configuration/promotableResolve.d.ts +108 -0
- package/esm/configuration/promotableResolve.js +117 -0
- package/esm/configuration/promotableSlots.d.ts +12 -0
- package/esm/configuration/promotableSlots.js +45 -0
- package/esm/configuration/readConfObject.d.ts +56 -0
- package/esm/configuration/readConfObject.js +161 -0
- package/esm/configuration/schemaRegistry.d.ts +35 -0
- package/esm/configuration/schemaRegistry.js +50 -0
- package/esm/configuration/schemaTypes.d.ts +23 -0
- package/esm/configuration/schemaTypes.js +94 -0
- package/esm/configuration/slotFacade.d.ts +82 -0
- package/esm/configuration/slotFacade.js +89 -0
- package/esm/configuration/slotShape.d.ts +12 -0
- package/esm/configuration/slotShape.js +84 -0
- package/esm/configuration/slotValueUtils.d.ts +17 -0
- package/esm/configuration/slotValueUtils.js +25 -0
- package/esm/configuration/tabixIndexFields.d.ts +44 -0
- package/esm/configuration/tabixIndexFields.js +45 -0
- package/esm/configuration/tabixShorthand.d.ts +34 -0
- package/esm/configuration/tabixShorthand.js +45 -0
- package/esm/configuration/types.d.ts +170 -7
- package/esm/data_adapters/BaseAdapter/BaseAdapter.d.ts +24 -10
- package/esm/data_adapters/BaseAdapter/BaseAdapter.js +23 -15
- package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.d.ts +120 -7
- package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.js +99 -27
- package/esm/data_adapters/BaseAdapter/BaseRefNameAliasAdapter.d.ts +1 -0
- package/esm/data_adapters/BaseAdapter/BaseSequenceAdapter.d.ts +13 -5
- package/esm/data_adapters/BaseAdapter/BaseSequenceAdapter.js +9 -7
- package/esm/data_adapters/BaseAdapter/BaseTextSearchAdapter.d.ts +2 -1
- package/esm/data_adapters/BaseAdapter/CytobandAdapter.d.ts +7 -0
- package/esm/data_adapters/BaseAdapter/RegionsAdapter.d.ts +2 -1
- package/esm/data_adapters/BaseAdapter/getAdapterId.d.ts +2 -0
- package/esm/data_adapters/BaseAdapter/getAdapterId.js +9 -0
- package/esm/data_adapters/BaseAdapter/index.d.ts +6 -4
- package/esm/data_adapters/BaseAdapter/index.js +5 -5
- package/esm/data_adapters/BaseAdapter/stats.d.ts +5 -5
- package/esm/data_adapters/BaseAdapter/stats.js +48 -22
- package/esm/data_adapters/BaseAdapter/types.d.ts +10 -8
- package/esm/data_adapters/BaseAdapter/types.js +1 -0
- package/esm/data_adapters/BaseAdapter/util.d.ts +5 -1
- package/esm/data_adapters/BaseAdapter/util.js +14 -3
- package/esm/data_adapters/CytobandAdapter/CytobandAdapter.d.ts +1 -1
- package/esm/data_adapters/CytobandAdapter/CytobandAdapter.js +4 -4
- package/esm/data_adapters/CytobandAdapter/configSchema.d.ts +36 -4
- package/esm/data_adapters/CytobandAdapter/configSchema.js +46 -2
- package/esm/data_adapters/CytobandAdapter/index.js +3 -3
- package/esm/data_adapters/adapterSessionRefcount.d.ts +61 -0
- package/esm/data_adapters/adapterSessionRefcount.js +96 -0
- package/esm/data_adapters/dataAdapterCache.d.ts +35 -1
- package/esm/data_adapters/dataAdapterCache.js +62 -22
- package/esm/data_adapters/getFeatureAdapter.d.ts +22 -0
- package/esm/data_adapters/getFeatureAdapter.js +27 -0
- package/esm/data_adapters/getSequenceSubAdapter.d.ts +21 -0
- package/esm/data_adapters/getSequenceSubAdapter.js +44 -0
- package/esm/pluggableElementTypes/AdapterType.d.ts +52 -2
- package/esm/pluggableElementTypes/AdapterType.js +44 -5
- package/esm/pluggableElementTypes/AddTrackWorkflowType.d.ts +6 -1
- package/esm/pluggableElementTypes/AddTrackWorkflowType.js +3 -1
- package/esm/pluggableElementTypes/ConnectionType.d.ts +5 -5
- package/esm/pluggableElementTypes/ConnectionType.js +1 -1
- package/esm/pluggableElementTypes/DisplayType.d.ts +10 -0
- package/esm/pluggableElementTypes/DisplayType.js +14 -1
- package/esm/pluggableElementTypes/InternetAccountType.js +1 -1
- package/esm/pluggableElementTypes/PluggableElementBase.d.ts +13 -0
- package/esm/pluggableElementTypes/PluggableElementBase.js +13 -0
- package/esm/pluggableElementTypes/RpcMethodType.d.ts +132 -12
- package/esm/pluggableElementTypes/RpcMethodType.js +263 -98
- package/esm/pluggableElementTypes/RpcMethodTypeWithFiltersAndRenameRegions.d.ts +19 -9
- package/esm/pluggableElementTypes/RpcMethodTypeWithFiltersAndRenameRegions.js +26 -20
- package/esm/pluggableElementTypes/RpcMethodTypeWithRenameRegion.d.ts +5 -0
- package/esm/pluggableElementTypes/RpcMethodTypeWithRenameRegion.js +18 -0
- package/esm/pluggableElementTypes/RpcMethodTypeWithRenameRegions.d.ts +5 -0
- package/esm/pluggableElementTypes/RpcMethodTypeWithRenameRegions.js +10 -0
- package/esm/pluggableElementTypes/TextSearchAdapterType.d.ts +3 -3
- package/esm/pluggableElementTypes/TextSearchAdapterType.js +3 -1
- package/esm/pluggableElementTypes/TrackType.d.ts +2 -1
- package/esm/pluggableElementTypes/TrackType.js +1 -1
- package/esm/pluggableElementTypes/ViewType.d.ts +2 -1
- package/esm/pluggableElementTypes/ViewType.js +9 -2
- package/esm/pluggableElementTypes/WidgetType.d.ts +2 -2
- package/esm/pluggableElementTypes/WidgetType.js +1 -1
- package/esm/pluggableElementTypes/addMenuItems.d.ts +87 -0
- package/esm/pluggableElementTypes/addMenuItems.js +82 -0
- package/esm/pluggableElementTypes/extendElementType.d.ts +30 -0
- package/esm/pluggableElementTypes/extendElementType.js +68 -0
- package/esm/pluggableElementTypes/index.d.ts +7 -7
- package/esm/pluggableElementTypes/index.js +24 -14
- package/esm/pluggableElementTypes/models/BaseConnectionModelFactory.d.ts +70 -15
- package/esm/pluggableElementTypes/models/BaseConnectionModelFactory.js +90 -10
- package/esm/pluggableElementTypes/models/BaseDisplayModel.d.ts +605 -84
- package/esm/pluggableElementTypes/models/BaseDisplayModel.js +172 -64
- package/esm/pluggableElementTypes/models/BaseTrackModel.d.ts +195 -35
- package/esm/pluggableElementTypes/models/BaseTrackModel.js +332 -85
- package/esm/pluggableElementTypes/models/BaseViewModel.d.ts +167 -16
- package/esm/pluggableElementTypes/models/BaseViewModel.js +111 -16
- package/esm/pluggableElementTypes/models/HighlightsMixin.d.ts +51 -0
- package/esm/pluggableElementTypes/models/HighlightsMixin.js +78 -0
- package/esm/pluggableElementTypes/models/InternetAccountModel.d.ts +163 -29
- package/esm/pluggableElementTypes/models/InternetAccountModel.js +218 -48
- package/esm/pluggableElementTypes/models/assertDisplayContract.d.ts +174 -0
- package/esm/pluggableElementTypes/models/assertDisplayContract.js +246 -0
- package/esm/pluggableElementTypes/models/baseConnectionConfig.d.ts +22 -8
- package/esm/pluggableElementTypes/models/baseConnectionConfig.js +18 -2
- package/esm/pluggableElementTypes/models/baseInternetAccountConfig.d.ts +39 -20
- package/esm/pluggableElementTypes/models/baseInternetAccountConfig.js +23 -2
- package/esm/pluggableElementTypes/models/baseTrackConfig.d.ts +181 -65
- package/esm/pluggableElementTypes/models/baseTrackConfig.js +191 -89
- package/esm/pluggableElementTypes/models/components/SaveTrackData.d.ts +3 -8
- package/esm/pluggableElementTypes/models/components/SaveTrackData.js +113 -139
- package/esm/pluggableElementTypes/models/components/fetchTrackData.d.ts +55 -0
- package/esm/pluggableElementTypes/models/components/fetchTrackData.js +83 -0
- package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.d.ts +40 -0
- package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.js +115 -0
- package/esm/pluggableElementTypes/models/index.d.ts +6 -3
- package/esm/pluggableElementTypes/models/index.js +10 -8
- package/esm/pluggableElementTypes/models/migrateTrackConfig.d.ts +34 -0
- package/esm/pluggableElementTypes/models/migrateTrackConfig.js +54 -0
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/bed.js +75 -7
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.d.ts +9 -3
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.js +153 -103
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/gff3.d.ts +6 -1
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/gff3.js +70 -74
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/types.d.ts +9 -1
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/util.d.ts +21 -0
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/util.js +51 -0
- package/esm/pluggableElementTypes/models/uriMatchesDomains.d.ts +29 -0
- package/esm/pluggableElementTypes/models/uriMatchesDomains.js +62 -0
- package/esm/pluggableElementTypes/renderers/util/serializableFilterChain.d.ts +5 -4
- package/esm/pluggableElementTypes/renderers/util/serializableFilterChain.js +20 -10
- package/esm/pluginDefinitions.d.ts +198 -0
- package/esm/pluginDefinitions.js +220 -0
- package/esm/rpc/BaseRpcDriver.d.ts +27 -35
- package/esm/rpc/BaseRpcDriver.js +74 -107
- package/esm/rpc/MainThreadRpcDriver.d.ts +9 -10
- package/esm/rpc/MainThreadRpcDriver.js +18 -29
- package/esm/rpc/RpcClient.d.ts +38 -0
- package/esm/rpc/RpcClient.js +154 -0
- package/esm/rpc/RpcManager.d.ts +116 -27
- package/esm/rpc/RpcManager.js +177 -50
- package/esm/rpc/RpcRegistry.d.ts +265 -0
- package/esm/rpc/RpcRegistry.js +1 -0
- package/esm/rpc/RpcServer.d.ts +41 -0
- package/esm/rpc/RpcServer.js +235 -0
- package/esm/rpc/WebWorkerRpcDriver.d.ts +71 -24
- package/esm/rpc/WebWorkerRpcDriver.js +312 -27
- package/esm/rpc/byteBudget.d.ts +49 -0
- package/esm/rpc/byteBudget.js +50 -0
- package/esm/rpc/configSchema.d.ts +27 -5
- package/esm/rpc/configSchema.js +40 -16
- package/esm/rpc/coreRpcMethods.d.ts +2 -5
- package/esm/rpc/coreRpcMethods.js +9 -12
- package/esm/rpc/explainTransferError.d.ts +35 -0
- package/esm/rpc/explainTransferError.js +158 -0
- package/esm/rpc/methods/CoreFreeResources.d.ts +19 -4
- package/esm/rpc/methods/CoreFreeResources.js +17 -6
- package/esm/rpc/methods/CoreGetExportData.d.ts +5 -18
- package/esm/rpc/methods/CoreGetExportData.js +26 -15
- package/esm/rpc/methods/CoreGetFeatures.d.ts +6 -15
- package/esm/rpc/methods/CoreGetFeatures.js +15 -17
- package/esm/rpc/methods/CoreGetInfo.d.ts +6 -0
- package/esm/rpc/methods/CoreGetInfo.js +12 -0
- package/esm/rpc/methods/CoreGetMetadata.d.ts +4 -7
- package/esm/rpc/methods/CoreGetMetadata.js +6 -9
- package/esm/rpc/methods/CoreGetRefNames.d.ts +4 -8
- package/esm/rpc/methods/CoreGetRefNames.js +24 -13
- package/esm/rpc/methods/CoreGetRegionByteEstimate.d.ts +6 -0
- package/esm/rpc/methods/CoreGetRegionByteEstimate.js +19 -0
- package/esm/rpc/methods/CoreGetRegions.d.ts +4 -6
- package/esm/rpc/methods/CoreGetRegions.js +6 -9
- package/esm/rpc/methods/CoreGetSequence.d.ts +4 -11
- package/esm/rpc/methods/CoreGetSequence.js +12 -13
- package/esm/rpc/serializeError/index.d.ts +9 -0
- package/esm/rpc/serializeError/index.js +86 -0
- package/esm/svg/SvgExport.d.ts +30 -0
- package/esm/svg/SvgExport.js +53 -0
- package/esm/svg/constants.d.ts +1 -0
- package/esm/svg/constants.js +5 -0
- package/esm/svg/saveSvgAsImage.d.ts +6 -0
- package/esm/svg/saveSvgAsImage.js +90 -0
- package/esm/svg/svgId.d.ts +42 -0
- package/esm/svg/svgId.js +84 -0
- package/esm/svg/svgReady.d.ts +136 -0
- package/esm/svg/svgReady.js +164 -0
- package/esm/svg/trackNames.d.ts +27 -0
- package/esm/svg/trackNames.js +31 -0
- package/esm/svg/wrapSvgExport.d.ts +12 -0
- package/esm/svg/wrapSvgExport.js +78 -0
- package/esm/ui/ActionLink.d.ts +7 -0
- package/esm/ui/ActionLink.js +9 -0
- package/esm/ui/AddCustomPluginDialog.d.ts +14 -0
- package/esm/ui/AddCustomPluginDialog.js +61 -0
- package/esm/ui/AddGenomePane.d.ts +8 -0
- package/esm/ui/AddGenomePane.js +228 -0
- package/esm/ui/AdvancedOptions.d.ts +6 -0
- package/esm/ui/AdvancedOptions.js +17 -0
- package/esm/ui/AppLogo.d.ts +1 -1
- package/esm/ui/AppLogo.js +2 -2
- package/esm/ui/AssemblySelector.d.ts +5 -8
- package/esm/ui/AssemblySelector.js +8 -26
- package/esm/ui/BaseExportSvgDialog.d.ts +16 -0
- package/esm/ui/BaseExportSvgDialog.js +84 -0
- package/esm/ui/BaseTooltip.d.ts +14 -3
- package/esm/ui/BaseTooltip.js +151 -34
- package/esm/ui/CascadingMenu.d.ts +9 -18
- package/esm/ui/CascadingMenu.js +368 -41
- package/esm/ui/CascadingMenuButton.d.ts +9 -11
- package/esm/ui/CascadingMenuButton.js +36 -18
- package/esm/ui/CascadingMenuHelpDialog.d.ts +2 -2
- package/esm/ui/CascadingMenuHelpDialog.js +4 -5
- package/esm/ui/CascadingMenuHelpIconButton.d.ts +2 -1
- package/esm/ui/CascadingMenuHelpIconButton.js +18 -9
- package/esm/ui/ColorPicker.d.ts +6 -9
- package/esm/ui/ColorPicker.js +36 -39
- package/esm/ui/ConfirmDialog.d.ts +2 -9
- package/esm/ui/ConfirmDialog.js +6 -9
- package/esm/ui/ContextMenu.d.ts +50 -0
- package/esm/ui/ContextMenu.js +55 -0
- package/esm/ui/CopyToClipboardButton.d.ts +10 -0
- package/esm/ui/CopyToClipboardButton.js +14 -0
- package/esm/ui/Crosshairs.d.ts +10 -0
- package/esm/ui/Crosshairs.js +15 -0
- package/esm/ui/DOMPurifySanitizedHTML.d.ts +1 -1
- package/esm/ui/DOMPurifySanitizedHTML.js +5 -5
- package/esm/ui/DataGridFlexContainer.d.ts +9 -2
- package/esm/ui/DataGridFlexContainer.js +4 -3
- package/esm/ui/Dialog.d.ts +5 -2
- package/esm/ui/Dialog.js +35 -27
- package/esm/ui/DraggableDialog.d.ts +3 -3
- package/esm/ui/DraggableDialog.js +50 -12
- package/esm/ui/DropDownMenu.d.ts +4 -2
- package/esm/ui/DropDownMenu.js +4 -4
- package/esm/ui/EditableTypography.d.ts +3 -1
- package/esm/ui/EditableTypography.js +34 -26
- package/esm/ui/ErrorActions.d.ts +24 -0
- package/esm/ui/ErrorActions.js +20 -0
- package/esm/ui/ErrorBanner.d.ts +7 -0
- package/esm/ui/ErrorBanner.js +35 -0
- package/esm/ui/ErrorBar.d.ts +6 -0
- package/esm/ui/ErrorBar.js +35 -0
- package/esm/ui/ErrorBoundary.d.ts +29 -5
- package/esm/ui/ErrorBoundary.js +32 -2
- package/esm/ui/ErrorMessage.d.ts +2 -4
- package/esm/ui/ErrorMessage.js +17 -52
- package/esm/ui/ErrorMessageStackTraceContents.d.ts +1 -1
- package/esm/ui/ErrorMessageStackTraceContents.js +3 -3
- package/esm/ui/ErrorMessageStackTraceDialog.d.ts +1 -1
- package/esm/ui/ErrorMessageStackTraceDialog.js +57 -96
- package/esm/ui/ErrorOverlay.d.ts +8 -0
- package/esm/ui/ErrorOverlay.js +5 -0
- package/esm/ui/ExportSvgDialog.d.ts +7 -0
- package/esm/ui/ExportSvgDialog.js +9 -0
- package/esm/ui/ExternalLink.d.ts +1 -1
- package/esm/ui/FactoryResetDialog.d.ts +1 -1
- package/esm/ui/FactoryResetDialog.js +6 -15
- package/esm/ui/FatalErrorDialog.d.ts +3 -2
- package/esm/ui/FatalErrorDialog.js +6 -5
- package/esm/ui/FileDropZone.d.ts +25 -0
- package/esm/ui/FileDropZone.js +128 -0
- package/esm/ui/FileSelector/FileSelector.d.ts +1 -1
- package/esm/ui/FileSelector/FileSelector.js +59 -30
- package/esm/ui/FileSelector/LocalFileChooser.d.ts +7 -2
- package/esm/ui/FileSelector/LocalFileChooser.js +61 -47
- package/esm/ui/FileSelector/LocationInput.d.ts +1 -1
- package/esm/ui/FileSelector/LocationInput.js +8 -12
- package/esm/ui/FileSelector/SourceTypeSelector.d.ts +5 -5
- package/esm/ui/FileSelector/SourceTypeSelector.js +9 -7
- package/esm/ui/FileSelector/UrlChooser.d.ts +1 -1
- package/esm/ui/FileSelector/UrlChooser.js +26 -2
- package/esm/ui/FileSelector/emptySourceType.d.ts +2 -0
- package/esm/ui/FileSelector/emptySourceType.js +14 -0
- package/esm/ui/FileSelector/useInternetAccounts.d.ts +383 -71
- package/esm/ui/FileSelector/useInternetAccounts.js +13 -6
- package/esm/ui/FileSelector/util.d.ts +58 -3
- package/esm/ui/FileSelector/util.js +128 -11
- package/esm/ui/GpuFallbackButton.d.ts +12 -0
- package/esm/ui/GpuFallbackButton.js +20 -0
- package/esm/ui/HoverMenu.d.ts +12 -3
- package/esm/ui/HoverMenu.js +31 -9
- package/esm/ui/HoverTooltip.d.ts +27 -0
- package/esm/ui/HoverTooltip.js +24 -0
- package/esm/ui/Icons.d.ts +6 -4
- package/esm/ui/Icons.js +9 -0
- package/esm/ui/InfoDialog.d.ts +7 -0
- package/esm/ui/InfoDialog.js +16 -0
- package/esm/ui/InlineMenuControls.d.ts +6 -0
- package/esm/ui/InlineMenuControls.js +17 -0
- package/esm/ui/JexlFilterDialog.d.ts +23 -0
- package/esm/ui/JexlFilterDialog.js +94 -0
- package/esm/ui/LabeledCheckbox.d.ts +9 -0
- package/esm/ui/LabeledCheckbox.js +7 -0
- package/esm/ui/LegendSwatchGlyph.d.ts +7 -0
- package/esm/ui/LegendSwatchGlyph.js +25 -0
- package/esm/ui/LoadingDots.d.ts +1 -0
- package/esm/ui/LoadingDots.js +30 -0
- package/esm/ui/LoadingEllipses.d.ts +17 -1
- package/esm/ui/LoadingEllipses.js +20 -29
- package/esm/ui/LoadingOverlay.d.ts +9 -0
- package/esm/ui/LoadingOverlay.js +137 -0
- package/esm/ui/LoadingProgress.d.ts +16 -0
- package/esm/ui/LoadingProgress.js +16 -0
- package/esm/ui/Logo.d.ts +2 -2
- package/esm/ui/Logo.js +23 -24
- package/esm/ui/Menu.js +1 -1
- package/esm/ui/MenuItemChevron.d.ts +3 -0
- package/esm/ui/MenuItemChevron.js +19 -0
- package/esm/ui/MenuItemEndDecoration.d.ts +4 -0
- package/esm/ui/MenuItemEndDecoration.js +28 -0
- package/esm/ui/MenuItemTrailing.d.ts +12 -0
- package/esm/ui/MenuItemTrailing.js +42 -0
- package/esm/ui/MenuTypes.d.ts +124 -4
- package/esm/ui/MenuTypes.js +13 -1
- package/esm/ui/MonospaceTextField.d.ts +9 -0
- package/esm/ui/MonospaceTextField.js +37 -0
- package/esm/ui/NumberTextField.d.ts +31 -0
- package/esm/ui/NumberTextField.js +33 -0
- package/esm/ui/PaletteContext.d.ts +85 -0
- package/esm/ui/PaletteContext.js +104 -0
- package/esm/ui/PinAdornment.d.ts +5 -0
- package/esm/ui/PinAdornment.js +79 -0
- package/esm/ui/PluggableComponent.d.ts +10 -0
- package/esm/ui/PluggableComponent.js +19 -0
- package/esm/ui/PluggableComponents.d.ts +29 -0
- package/esm/ui/PluggableComponents.js +28 -0
- package/esm/ui/PluggableElements.d.ts +23 -0
- package/esm/ui/PluggableElements.js +24 -0
- package/esm/ui/PluginStoreCard.d.ts +17 -0
- package/esm/ui/PluginStoreCard.js +45 -0
- package/esm/ui/PopoverPicker.d.ts +6 -0
- package/esm/ui/PopoverPicker.js +25 -0
- package/esm/ui/PrerenderedCanvas.d.ts +1 -1
- package/esm/ui/PrerenderedCanvas.js +5 -4
- package/esm/ui/ProgressChip.d.ts +37 -0
- package/esm/ui/ProgressChip.js +66 -0
- package/esm/ui/RedErrorMessageBox.d.ts +1 -1
- package/esm/ui/RedErrorMessageBox.js +9 -3
- package/esm/ui/RefNameAutocomplete/EndAdornment.d.ts +5 -0
- package/esm/ui/RefNameAutocomplete/EndAdornment.js +31 -0
- package/esm/ui/RefNameAutocomplete/HelpDialog.d.ts +3 -0
- package/esm/ui/RefNameAutocomplete/HelpDialog.js +7 -0
- package/esm/ui/RefNameAutocomplete/index.d.ts +22 -0
- package/esm/ui/RefNameAutocomplete/index.js +78 -0
- package/esm/ui/RefNameAutocomplete/util.d.ts +49 -0
- package/esm/ui/RefNameAutocomplete/util.js +168 -0
- package/esm/ui/ReplaceCurrentViewButton.d.ts +19 -0
- package/esm/ui/ReplaceCurrentViewButton.js +22 -0
- package/esm/ui/ResizeHandle.d.ts +13 -7
- package/esm/ui/ResizeHandle.js +42 -55
- package/esm/ui/ReturnToImportFormDialog.d.ts +1 -1
- package/esm/ui/ReturnToImportFormDialog.js +7 -9
- package/esm/ui/SanitizedHTML.d.ts +6 -1
- package/esm/ui/SanitizedHTML.js +7 -47
- package/esm/ui/ScrollEdgeShadow.d.ts +44 -0
- package/esm/ui/ScrollEdgeShadow.js +98 -0
- package/esm/ui/ScrollZoomToggle.d.ts +38 -0
- package/esm/ui/ScrollZoomToggle.js +92 -0
- package/esm/ui/SequenceAdapterInputs.d.ts +9 -0
- package/esm/ui/SequenceAdapterInputs.js +30 -0
- package/esm/ui/SettingsChangesTable.d.ts +14 -0
- package/esm/ui/SettingsChangesTable.js +49 -0
- package/esm/ui/ShareLinkField.d.ts +6 -0
- package/esm/ui/ShareLinkField.js +42 -0
- package/esm/ui/SingleSlider.d.ts +8 -0
- package/esm/ui/SingleSlider.js +11 -0
- package/esm/ui/SizeSliderRow.d.ts +16 -0
- package/esm/ui/SizeSliderRow.js +50 -0
- package/esm/ui/SliderTooltip.d.ts +2 -0
- package/esm/ui/SliderTooltip.js +17 -0
- package/esm/ui/Snackbar.d.ts +4 -2
- package/esm/ui/Snackbar.js +11 -8
- package/esm/ui/SnackbarContents.d.ts +1 -1
- package/esm/ui/SnackbarContents.js +21 -3
- package/esm/ui/SnackbarModel.d.ts +40 -0
- package/esm/ui/SnackbarModel.js +43 -11
- package/esm/ui/StackTraceButton.d.ts +5 -0
- package/esm/ui/StackTraceButton.js +16 -0
- package/esm/ui/StatusProgressBar.d.ts +37 -0
- package/esm/ui/StatusProgressBar.js +76 -0
- package/esm/ui/SubmitDialog.d.ts +6 -0
- package/esm/ui/SubmitDialog.js +9 -0
- package/esm/ui/SubmitForm.d.ts +23 -0
- package/esm/ui/SubmitForm.js +23 -0
- package/esm/ui/SvgColorLegend.d.ts +13 -0
- package/esm/ui/SvgColorLegend.js +65 -0
- package/esm/ui/SvgGradientLegend.d.ts +26 -0
- package/esm/ui/SvgGradientLegend.js +26 -0
- package/esm/ui/TagTextField.d.ts +40 -0
- package/esm/ui/TagTextField.js +32 -0
- package/esm/ui/VerticalScrollbar.d.ts +45 -0
- package/esm/ui/VerticalScrollbar.js +158 -0
- package/esm/ui/ViewLoadingScreen.d.ts +24 -0
- package/esm/ui/ViewLoadingScreen.js +76 -0
- package/esm/ui/addExtensionElement.d.ts +18 -0
- package/esm/ui/addExtensionElement.js +23 -0
- package/esm/ui/buildExtraTrackMenuItems.d.ts +22 -0
- package/esm/ui/buildExtraTrackMenuItems.js +14 -0
- package/esm/ui/colorSwatchStyle.d.ts +9 -0
- package/esm/ui/colorSwatchStyle.js +11 -0
- package/esm/ui/colors.d.ts +61 -8
- package/esm/ui/colors.js +135 -1
- package/esm/ui/extensionSelectors.d.ts +38 -0
- package/esm/ui/extensionSelectors.js +49 -0
- package/esm/ui/filterMenuItems.d.ts +112 -0
- package/esm/ui/filterMenuItems.js +86 -0
- package/esm/ui/formatErrorStack.d.ts +1 -0
- package/esm/ui/formatErrorStack.js +56 -0
- package/esm/ui/gpuFallback.d.ts +33 -0
- package/esm/ui/gpuFallback.js +39 -0
- package/esm/ui/highlightChipReveal.d.ts +32 -0
- package/esm/ui/highlightChipReveal.js +39 -0
- package/esm/ui/hoverBoxStyle.d.ts +11 -0
- package/esm/ui/hoverBoxStyle.js +13 -0
- package/esm/ui/index.d.ts +76 -4
- package/esm/ui/index.js +90 -19
- package/esm/ui/inlineMenuRowWidth.d.ts +1 -0
- package/esm/ui/inlineMenuRowWidth.js +8 -0
- package/esm/ui/launchTargetsMenuItem.d.ts +18 -0
- package/esm/ui/launchTargetsMenuItem.js +24 -0
- package/esm/ui/launchViewMenu.d.ts +4 -0
- package/esm/ui/launchViewMenu.js +36 -0
- package/esm/ui/legendMenuItem.d.ts +38 -0
- package/esm/ui/legendMenuItem.js +44 -0
- package/esm/ui/legendSpec.d.ts +62 -0
- package/esm/ui/legendSpec.js +78 -0
- package/esm/ui/loadingDotKeyframes.d.ts +18 -0
- package/esm/ui/loadingDotKeyframes.js +17 -0
- package/esm/ui/makeSizeMenu.d.ts +30 -0
- package/esm/ui/makeSizeMenu.js +82 -0
- package/esm/ui/mapStackTrace.d.ts +8 -0
- package/esm/ui/mapStackTrace.js +108 -0
- package/esm/ui/measureLegendText.d.ts +1 -0
- package/esm/ui/measureLegendText.js +8 -0
- package/esm/ui/menuItemAdornment.d.ts +33 -0
- package/esm/ui/menuItemAdornment.js +50 -0
- package/esm/ui/menuItems.d.ts +28 -0
- package/esm/ui/menuItems.js +26 -0
- package/esm/ui/menuLabels.d.ts +41 -0
- package/esm/ui/menuLabels.js +43 -0
- package/esm/ui/multiTrackMenuItems.d.ts +19 -0
- package/esm/ui/multiTrackMenuItems.js +15 -0
- package/esm/ui/palette.d.ts +559 -0
- package/esm/ui/palette.js +746 -0
- package/esm/ui/parseError.d.ts +4 -0
- package/esm/ui/parseError.js +18 -0
- package/esm/ui/persistentScrollbarStyle.d.ts +49 -0
- package/esm/ui/persistentScrollbarStyle.js +53 -0
- package/esm/ui/promotableMenuItems.d.ts +19 -0
- package/esm/ui/promotableMenuItems.js +89 -0
- package/esm/ui/promotablePinCoverage.d.ts +44 -0
- package/esm/ui/promotablePinCoverage.js +87 -0
- package/esm/ui/radioSubMenu.d.ts +33 -0
- package/esm/ui/radioSubMenu.js +32 -0
- package/esm/ui/react-colorful.js +5 -1
- package/esm/ui/replaceViewAction.d.ts +31 -0
- package/esm/ui/replaceViewAction.js +39 -0
- package/esm/ui/rewriteExternalAnchors.d.ts +1 -0
- package/esm/ui/rewriteExternalAnchors.js +8 -0
- package/esm/ui/scrollZoomLabels.d.ts +17 -0
- package/esm/ui/scrollZoomLabels.js +22 -0
- package/esm/ui/showSubMenu.d.ts +19 -0
- package/esm/ui/showSubMenu.js +30 -0
- package/esm/ui/sliderScale.d.ts +6 -0
- package/esm/ui/sliderScale.js +30 -0
- package/esm/ui/statusProgressKeyframes.d.ts +6 -0
- package/esm/ui/statusProgressKeyframes.js +14 -0
- package/esm/ui/stripStackTraceMessage.d.ts +1 -0
- package/esm/ui/stripStackTraceMessage.js +9 -0
- package/esm/ui/styleTheme.d.ts +158 -0
- package/esm/ui/styleTheme.js +115 -0
- package/esm/ui/submenuAim.d.ts +30 -0
- package/esm/ui/submenuAim.js +37 -0
- package/esm/ui/theme.d.ts +343 -29
- package/esm/ui/theme.js +258 -342
- package/esm/ui/toggleMenuItems.d.ts +44 -0
- package/esm/ui/toggleMenuItems.js +60 -0
- package/esm/ui/useAssemblySelection.d.ts +153 -0
- package/esm/ui/useAssemblySelection.js +54 -0
- package/esm/ui/useCoalescedPointer.d.ts +36 -0
- package/esm/ui/useCoalescedPointer.js +60 -0
- package/esm/ui/useCopyToClipboard.d.ts +15 -0
- package/esm/ui/useCopyToClipboard.js +41 -0
- package/esm/ui/useExportSvgPreference.d.ts +1 -0
- package/esm/ui/useExportSvgPreference.js +4 -0
- package/esm/ui/useMouseTracking.d.ts +71 -0
- package/esm/ui/useMouseTracking.js +179 -0
- package/esm/ui/useRecentLocations.d.ts +28 -0
- package/esm/ui/useRecentLocations.js +31 -0
- package/esm/ui/wrapComponent.d.ts +47 -0
- package/esm/ui/wrapComponent.js +58 -0
- package/esm/ui/zIndexes.d.ts +28 -0
- package/esm/ui/zIndexes.js +38 -0
- package/esm/util/Base1DUtils.d.ts +204 -16
- package/esm/util/Base1DUtils.js +310 -175
- package/esm/util/Base1DViewModel.d.ts +97 -20
- package/esm/util/Base1DViewModel.js +148 -39
- package/esm/util/FileSaver/index.d.ts +1 -0
- package/esm/util/FileSaver/index.js +27 -0
- package/esm/util/IntervalTree.d.ts +18 -39
- package/esm/util/IntervalTree.js +63 -244
- package/esm/util/SvgCanvas.d.ts +81 -0
- package/esm/util/SvgCanvas.js +500 -0
- package/esm/util/TimeTraveller.d.ts +12 -0
- package/esm/util/TimeTraveller.js +130 -27
- package/esm/util/aborting.d.ts +17 -4
- package/esm/util/aborting.js +30 -25
- package/esm/util/adapterMetadata.d.ts +20 -0
- package/esm/util/adapterMetadata.js +39 -0
- package/esm/util/addAndShowTrack.d.ts +22 -0
- package/esm/util/addAndShowTrack.js +23 -0
- package/esm/util/addRelativeUris.d.ts +17 -0
- package/esm/util/addRelativeUris.js +42 -0
- package/esm/util/addTrackComponent.d.ts +72 -0
- package/esm/util/addTrackComponent.js +53 -0
- package/esm/util/addTrackFromWidget.d.ts +94 -0
- package/esm/util/addTrackFromWidget.js +90 -0
- package/esm/util/analytics.d.ts +32 -3
- package/esm/util/analytics.js +102 -49
- package/esm/util/animationAllowed.d.ts +17 -0
- package/esm/util/animationAllowed.js +22 -0
- package/esm/util/applyInitSettings.d.ts +79 -0
- package/esm/util/applyInitSettings.js +91 -0
- package/esm/util/applyRowResizeWheel.d.ts +10 -0
- package/esm/util/applyRowResizeWheel.js +34 -0
- package/esm/util/assemblyConfigUtils.d.ts +144 -0
- package/esm/util/assemblyConfigUtils.js +498 -0
- package/esm/util/bandHeight.d.ts +53 -0
- package/esm/util/bandHeight.js +56 -0
- package/esm/util/bandLayout.d.ts +51 -0
- package/esm/util/bandLayout.js +36 -0
- package/esm/util/bezierConnector.d.ts +14 -0
- package/esm/util/bezierConnector.js +108 -0
- package/esm/util/bgzfWorkerPool.d.ts +78 -0
- package/esm/util/bgzfWorkerPool.js +81 -0
- package/esm/util/blockTypes.d.ts +64 -45
- package/esm/util/blockTypes.js +67 -74
- package/esm/util/bpUtils.d.ts +81 -0
- package/esm/util/bpUtils.js +103 -0
- package/esm/util/cacheBudgets.d.ts +52 -0
- package/esm/util/cacheBudgets.js +52 -0
- package/esm/util/cachedSetup.d.ts +51 -0
- package/esm/util/cachedSetup.js +87 -0
- package/esm/util/calculateDynamicBlocks.d.ts +5 -0
- package/esm/util/calculateDynamicBlocks.js +85 -82
- package/esm/util/calculateStaticBlocks.d.ts +2 -3
- package/esm/util/calculateStaticBlocks.js +48 -71
- package/esm/util/chooseGridPitch.d.ts +9 -0
- package/esm/util/chooseGridPitch.js +31 -0
- package/esm/util/clampToContig.d.ts +26 -0
- package/esm/util/clampToContig.js +28 -0
- package/esm/util/cmpStr.d.ts +1 -0
- package/esm/util/cmpStr.js +7 -0
- package/esm/util/coarseStripHTML.js +3 -15
- package/esm/util/color/cssColorsLevel4.js +6 -2
- package/esm/util/color/index.d.ts +81 -2
- package/esm/util/color/index.js +194 -25
- package/esm/util/color-bits/bit.d.ts +4 -0
- package/esm/util/color-bits/bit.js +37 -0
- package/esm/util/color-bits/convert.d.ts +23 -0
- package/esm/util/color-bits/convert.js +294 -0
- package/esm/util/color-bits/core.d.ts +34 -0
- package/esm/util/color-bits/core.js +67 -0
- package/esm/util/color-bits/format.d.ts +24 -0
- package/esm/util/color-bits/format.js +82 -0
- package/esm/util/color-bits/functions.d.ts +33 -0
- package/esm/util/color-bits/functions.js +70 -0
- package/esm/util/color-bits/index.d.ts +5 -0
- package/esm/util/color-bits/index.js +4 -0
- package/esm/util/color-bits/parse.d.ts +17 -0
- package/esm/util/color-bits/parse.js +382 -0
- package/esm/util/colorBits.d.ts +39 -0
- package/esm/util/colorBits.js +180 -0
- package/esm/util/colorRamp.d.ts +37 -0
- package/esm/util/colorRamp.js +93 -0
- package/esm/util/colord.d.ts +8 -0
- package/esm/util/colord.js +43 -191
- package/esm/util/convertCodingSequenceToPeptides.d.ts +17 -3
- package/esm/util/convertCodingSequenceToPeptides.js +51 -4
- package/esm/util/copyText.d.ts +18 -0
- package/esm/util/copyText.js +30 -0
- package/esm/util/copyToClipboard.d.ts +4 -0
- package/esm/util/copyToClipboard.js +58 -0
- package/esm/util/createStopTokenRotation.d.ts +117 -0
- package/esm/util/createStopTokenRotation.js +147 -0
- package/esm/util/createSvgRasterCanvas.d.ts +7 -0
- package/esm/util/createSvgRasterCanvas.js +22 -0
- package/esm/util/crypto.d.ts +24 -0
- package/esm/util/crypto.js +85 -2
- package/esm/util/dataGridUtils.d.ts +9 -0
- package/esm/util/dataGridUtils.js +36 -0
- package/esm/util/dedupe.js +1 -0
- package/esm/util/deepEqual.d.ts +8 -0
- package/esm/util/deepEqual.js +22 -0
- package/esm/util/deepMerge.d.ts +20 -0
- package/esm/util/deepMerge.js +44 -0
- package/esm/util/diagonalizeRegions.d.ts +23 -0
- package/esm/util/diagonalizeRegions.js +192 -0
- package/esm/util/environment.d.ts +4 -0
- package/esm/util/environment.js +43 -0
- package/esm/util/eventPoint.d.ts +32 -0
- package/esm/util/eventPoint.js +28 -0
- package/esm/util/fetchAndMaybeUnzip.d.ts +6 -0
- package/esm/util/fetchAndMaybeUnzip.js +64 -0
- package/esm/util/fetchContext.d.ts +82 -0
- package/esm/util/fetchContext.js +59 -0
- package/esm/util/fetchHub.d.ts +15 -0
- package/esm/util/fetchHub.js +31 -0
- package/esm/util/fetchJson.d.ts +1 -0
- package/esm/util/fetchJson.js +7 -0
- package/esm/util/fetchPhases.d.ts +77 -0
- package/esm/util/fetchPhases.js +1 -0
- package/esm/util/fetchSeq.d.ts +5 -1
- package/esm/util/fetchSeq.js +18 -6
- package/esm/util/fileHandleStore.d.ts +19 -2
- package/esm/util/fileHandleStore.js +95 -35
- package/esm/util/flatbush/index.d.ts +27 -6
- package/esm/util/flatbush/index.js +194 -218
- package/esm/util/formatBytes.d.ts +9 -0
- package/esm/util/formatBytes.js +18 -0
- package/esm/util/formatFastaStrings.d.ts +13 -0
- package/esm/util/formatFastaStrings.js +13 -0
- package/esm/util/formatGuessers.d.ts +30 -0
- package/esm/util/formatGuessers.js +69 -0
- package/esm/util/formatRelativeTime.d.ts +1 -0
- package/esm/util/formatRelativeTime.js +25 -0
- package/esm/util/frameCoalescer.d.ts +30 -0
- package/esm/util/frameCoalescer.js +22 -0
- package/esm/util/freezeDeep.d.ts +28 -0
- package/esm/util/freezeDeep.js +41 -0
- package/esm/util/geneticCodes.d.ts +56 -0
- package/esm/util/geneticCodes.js +371 -0
- package/esm/util/getFileName.d.ts +11 -0
- package/esm/util/getFileName.js +34 -0
- package/esm/util/getLocationUri.d.ts +49 -0
- package/esm/util/getLocationUri.js +63 -0
- package/esm/util/getRelativeX.d.ts +4 -0
- package/esm/util/getRelativeX.js +7 -0
- package/esm/util/getStr.d.ts +6 -0
- package/esm/util/getStr.js +15 -0
- package/esm/util/highlights.d.ts +21 -0
- package/esm/util/highlights.js +100 -0
- package/esm/util/hooks.d.ts +160 -0
- package/esm/util/hooks.js +416 -0
- package/esm/util/htmlText.d.ts +13 -0
- package/esm/util/htmlText.js +66 -0
- package/esm/util/idMaker.d.ts +1 -1
- package/esm/util/idMaker.js +31 -18
- package/esm/util/index.d.ts +82 -268
- package/esm/util/index.js +136 -853
- package/esm/util/indexCandidates.d.ts +50 -0
- package/esm/util/indexCandidates.js +101 -0
- package/esm/util/installClearHoverOnSurfaceMove.d.ts +40 -0
- package/esm/util/installClearHoverOnSurfaceMove.js +41 -0
- package/esm/util/installFetch.d.ts +194 -0
- package/esm/util/installFetch.js +178 -0
- package/esm/util/installInitAutorun.d.ts +62 -0
- package/esm/util/installInitAutorun.js +107 -0
- package/esm/util/intervals.d.ts +20 -0
- package/esm/util/intervals.js +37 -0
- package/esm/util/io/RemoteFileWithRangeCache.d.ts +10 -11
- package/esm/util/io/RemoteFileWithRangeCache.js +10 -148
- package/esm/util/io/index.d.ts +39 -2
- package/esm/util/io/index.js +115 -12
- package/esm/util/isDataCurrent.d.ts +7 -0
- package/esm/util/isDataCurrent.js +9 -0
- package/esm/util/isWebWorker.js +1 -2
- package/esm/util/iupac.d.ts +4 -0
- package/esm/util/iupac.js +59 -0
- package/esm/util/jexl.js +141 -17
- package/esm/util/jexlFilters.d.ts +75 -0
- package/esm/util/jexlFilters.js +49 -0
- package/esm/util/jexlStrings.d.ts +22 -1
- package/esm/util/jexlStrings.js +21 -14
- package/esm/util/layouts/GranularRectLayout.d.ts +13 -25
- package/esm/util/layouts/GranularRectLayout.js +99 -356
- package/esm/util/layouts/index.d.ts +1 -7
- package/esm/util/layouts/index.js +2 -6
- package/esm/util/layouts/intervalUtils.d.ts +12 -1
- package/esm/util/layouts/intervalUtils.js +13 -31
- package/esm/util/layouts/placeRect.d.ts +50 -0
- package/esm/util/layouts/placeRect.js +97 -0
- package/esm/util/leadingEdgeAutorun.d.ts +40 -0
- package/esm/util/leadingEdgeAutorun.js +51 -0
- package/esm/util/librpc.d.ts +5 -2
- package/esm/util/librpc.js +6 -1
- package/esm/util/linkify.js +2 -0
- package/esm/util/locString.d.ts +72 -0
- package/esm/util/locString.js +178 -7
- package/esm/util/locStringsToRegions.d.ts +10 -0
- package/esm/util/locStringsToRegions.js +35 -0
- package/esm/util/localStorage.d.ts +36 -0
- package/esm/util/localStorage.js +137 -0
- package/esm/util/makeAssembly.d.ts +54 -0
- package/esm/util/makeAssembly.js +52 -0
- package/esm/util/makeTrackId.d.ts +14 -0
- package/esm/util/makeTrackId.js +14 -0
- package/esm/util/matchTrackId.d.ts +11 -0
- package/esm/util/matchTrackId.js +14 -0
- package/esm/util/measureText.d.ts +24 -0
- package/esm/util/measureText.js +51 -0
- package/esm/util/mst-reflection.d.ts +14 -4
- package/esm/util/mst-reflection.js +33 -32
- package/esm/util/mstUtils.d.ts +89 -0
- package/esm/util/mstUtils.js +122 -0
- package/esm/util/nanoid.d.ts +0 -4
- package/esm/util/nanoid.js +10 -20
- package/esm/util/numericUtils.d.ts +20 -0
- package/esm/util/numericUtils.js +127 -0
- package/esm/util/objectUtils.d.ts +2 -0
- package/esm/util/objectUtils.js +9 -0
- package/esm/util/offscreenCanvasPonyfill.d.ts +5 -4
- package/esm/util/offscreenCanvasPonyfill.js +5 -47
- package/esm/util/openDisplays.d.ts +23 -0
- package/esm/util/openDisplays.js +79 -0
- package/esm/util/openFeatureWidget.d.ts +33 -0
- package/esm/util/openFeatureWidget.js +64 -0
- package/esm/util/paintLayer.d.ts +32 -0
- package/esm/util/paintLayer.js +33 -0
- package/esm/util/parentWalk.d.ts +32 -0
- package/esm/util/parentWalk.js +84 -0
- package/esm/util/parseLineByLine.d.ts +45 -2
- package/esm/util/parseLineByLine.js +156 -15
- package/esm/util/parseMotifList.d.ts +17 -0
- package/esm/util/parseMotifList.js +69 -0
- package/esm/util/pluginStore.d.ts +113 -0
- package/esm/util/pluginStore.js +253 -0
- package/esm/util/pointerPresence.d.ts +5 -0
- package/esm/util/pointerPresence.js +21 -0
- package/esm/util/progress.d.ts +459 -0
- package/esm/util/progress.js +820 -0
- package/esm/util/range.d.ts +42 -1
- package/esm/util/range.js +59 -2
- package/esm/util/renameRegions.d.ts +21 -0
- package/esm/util/renameRegions.js +129 -0
- package/esm/util/renderToStaticMarkup.d.ts +2 -0
- package/esm/util/renderToStaticMarkup.js +50 -0
- package/esm/util/reorder.d.ts +35 -0
- package/esm/util/reorder.js +83 -0
- package/esm/util/resolveRowHeight.d.ts +27 -0
- package/esm/util/resolveRowHeight.js +30 -0
- package/esm/util/revlist.d.ts +13 -0
- package/esm/util/revlist.js +14 -0
- package/esm/util/rowStackGeometry.d.ts +66 -0
- package/esm/util/rowStackGeometry.js +70 -0
- package/esm/util/rpc.d.ts +16 -1
- package/esm/util/rpc.js +12 -1
- package/esm/util/rxjs.d.ts +14 -1
- package/esm/util/rxjs.js +39 -10
- package/esm/util/sameStrings.d.ts +16 -0
- package/esm/util/sameStrings.js +20 -0
- package/esm/util/scrollLatch.d.ts +4 -0
- package/esm/util/scrollLatch.js +59 -0
- package/esm/util/selectNamedRegions.d.ts +136 -0
- package/esm/util/selectNamedRegions.js +222 -0
- package/esm/util/seqUtils.d.ts +17 -0
- package/esm/util/seqUtils.js +80 -0
- package/esm/util/sessionServices.d.ts +29 -0
- package/esm/util/sessionServices.js +46 -0
- package/esm/util/sessionSharing.d.ts +38 -0
- package/esm/util/sessionSharing.js +154 -0
- package/esm/util/sessionStorage.d.ts +1 -0
- package/esm/util/sessionStorage.js +15 -0
- package/esm/util/setStackTraceLimit.d.ts +6 -0
- package/esm/util/setStackTraceLimit.js +20 -0
- package/esm/util/simpleFeature.d.ts +112 -4
- package/esm/util/simpleFeature.js +181 -29
- package/esm/util/springAnimate.d.ts +20 -0
- package/esm/util/springAnimate.js +80 -0
- package/esm/util/stats.d.ts +25 -2
- package/esm/util/stats.js +39 -8
- package/esm/util/stopToken.d.ts +207 -15
- package/esm/util/stopToken.js +403 -55
- package/esm/util/stringUtils.d.ts +5 -0
- package/esm/util/stringUtils.js +34 -0
- package/esm/util/svgColorProps.d.ts +7 -0
- package/esm/util/svgColorProps.js +28 -0
- package/esm/util/tabix.d.ts +120 -0
- package/esm/util/tabix.js +143 -0
- package/esm/util/tags.d.ts +2 -0
- package/esm/util/tags.js +5 -0
- package/esm/util/temporaryAssembly.d.ts +21 -0
- package/esm/util/temporaryAssembly.js +29 -0
- package/esm/util/tickLabels.d.ts +36 -0
- package/esm/util/tickLabels.js +45 -0
- package/esm/util/timeGate.d.ts +26 -0
- package/esm/util/timeGate.js +79 -0
- package/esm/util/trackConfigDelta.d.ts +84 -0
- package/esm/util/trackConfigDelta.js +190 -0
- package/esm/util/tracks.d.ts +350 -30
- package/esm/util/tracks.js +574 -192
- package/esm/util/tss-react/cssAndCx.js +11 -66
- package/esm/util/tss-react/index.d.ts +11 -2
- package/esm/util/tss-react/index.js +9 -2
- package/esm/util/tss-react/makeStyles.js +7 -4
- package/esm/util/tss-react/mergeClasses.js +1 -0
- package/esm/util/tss-react/tools/classnames.d.ts +3 -0
- package/esm/util/tss-react/tools/classnames.js +3 -0
- package/esm/util/tss-react/tools/getDependencyArrayRef.d.ts +18 -0
- package/esm/util/tss-react/tools/getDependencyArrayRef.js +19 -0
- package/esm/util/tss-react/types.d.ts +1 -1
- package/esm/util/tss-react/types.js +1 -6
- package/esm/util/types/ElementId.js +1 -1
- package/esm/util/types/data.d.ts +75 -0
- package/esm/util/types/data.js +41 -0
- package/esm/util/types/index.d.ts +358 -119
- package/esm/util/types/index.js +87 -64
- package/esm/util/types/isAny.d.ts +11 -0
- package/esm/util/types/isAny.js +1 -0
- package/esm/util/types/mst.d.ts +71 -47
- package/esm/util/types/mst.js +27 -22
- package/esm/util/types/predicate.d.ts +9 -0
- package/esm/util/types/predicate.js +1 -0
- package/esm/util/types/renderingServices.d.ts +16 -0
- package/esm/util/types/renderingServices.js +1 -0
- package/esm/util/types/services.d.ts +55 -0
- package/esm/util/types/services.js +10 -0
- package/esm/util/types/util.d.ts +8 -2
- package/esm/util/unzip.d.ts +1 -0
- package/esm/util/unzip.js +6 -0
- package/esm/util/useEventCallback.d.ts +1 -0
- package/esm/util/useEventCallback.js +16 -0
- package/esm/util/useFeatureSequence.d.ts +13 -7
- package/esm/util/useFeatureSequence.js +56 -78
- package/esm/util/useFetch.d.ts +56 -0
- package/esm/util/useFetch.js +188 -0
- package/esm/util/useFetchPlugins.d.ts +12 -0
- package/esm/util/useFetchPlugins.js +14 -0
- package/esm/util/useMeasure.d.ts +11 -1
- package/esm/util/useMeasure.js +20 -6
- package/esm/util/usePanZoom.d.ts +75 -0
- package/esm/util/usePanZoom.js +175 -0
- package/esm/util/usePanelVirtualScroll.d.ts +37 -0
- package/esm/util/usePanelVirtualScroll.js +42 -0
- package/esm/util/usePointerDrag.d.ts +37 -0
- package/esm/util/usePointerDrag.js +61 -0
- package/esm/util/useRafCommit.d.ts +4 -0
- package/esm/util/useRafCommit.js +50 -0
- package/esm/util/useResizeDrag.d.ts +91 -0
- package/esm/util/useResizeDrag.js +105 -0
- package/esm/util/useRowVirtualScroll.d.ts +32 -0
- package/esm/util/useRowVirtualScroll.js +63 -0
- package/esm/util/useVirtualScrollWheel.d.ts +7 -0
- package/esm/util/useVirtualScrollWheel.js +108 -0
- package/esm/util/viewStatus.d.ts +58 -0
- package/esm/util/viewStatus.js +20 -0
- package/esm/util/virtualRange.d.ts +36 -0
- package/esm/util/virtualRange.js +26 -0
- package/esm/util/webStorage.d.ts +26 -0
- package/esm/util/webStorage.js +92 -0
- package/esm/util/wheelZoom.d.ts +59 -0
- package/esm/util/wheelZoom.js +231 -0
- package/esm/util/whenViewSettled.d.ts +27 -0
- package/esm/util/whenViewSettled.js +28 -0
- package/esm/util/withFeatureDetails.d.ts +34 -0
- package/esm/util/withFeatureDetails.js +59 -0
- package/package.json +240 -820
- package/esm/ReExports/DataGrid.d.ts +0 -1
- package/esm/ReExports/DataGrid.js +0 -1
- package/esm/configuration/util.d.ts +0 -10
- package/esm/configuration/util.js +0 -123
- package/esm/data_adapters/BaseAdapter/BaseOptions.d.ts +0 -18
- package/esm/data_adapters/util.d.ts +0 -1
- package/esm/data_adapters/util.js +0 -6
- package/esm/pluggableElementTypes/GlyphType.d.ts +0 -43
- package/esm/pluggableElementTypes/GlyphType.js +0 -18
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/fetchSequence.d.ts +0 -5
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/fetchSequence.js +0 -17
- package/esm/pluggableElementTypes/renderers/BoxRendererType.d.ts +0 -52
- package/esm/pluggableElementTypes/renderers/BoxRendererType.js +0 -78
- package/esm/pluggableElementTypes/renderers/CircularChordRendererType.d.ts +0 -4
- package/esm/pluggableElementTypes/renderers/CircularChordRendererType.js +0 -4
- package/esm/pluggableElementTypes/renderers/FeatureRendererType.d.ts +0 -58
- package/esm/pluggableElementTypes/renderers/FeatureRendererType.js +0 -77
- package/esm/pluggableElementTypes/renderers/LayoutSession.d.ts +0 -31
- package/esm/pluggableElementTypes/renderers/LayoutSession.js +0 -40
- package/esm/pluggableElementTypes/renderers/RendererType.d.ts +0 -28
- package/esm/pluggableElementTypes/renderers/RendererType.js +0 -20
- package/esm/pluggableElementTypes/renderers/ServerSideRendererType.d.ts +0 -58
- package/esm/pluggableElementTypes/renderers/ServerSideRendererType.js +0 -108
- package/esm/pluggableElementTypes/renderers/index.d.ts +0 -6
- package/esm/pluggableElementTypes/renderers/index.js +0 -6
- package/esm/pluggableElementTypes/renderers/util.d.ts +0 -3
- package/esm/pluggableElementTypes/renderers/util.js +0 -14
- package/esm/rpc/baseRpcConfig.d.ts +0 -8
- package/esm/rpc/baseRpcConfig.js +0 -10
- package/esm/rpc/mainThreadRpcConfig.d.ts +0 -8
- package/esm/rpc/mainThreadRpcConfig.js +0 -8
- package/esm/rpc/methods/CoreGetFeatureDensityStats.d.ts +0 -17
- package/esm/rpc/methods/CoreGetFeatureDensityStats.js +0 -25
- package/esm/rpc/methods/CoreGetFeatureDetails.d.ts +0 -11
- package/esm/rpc/methods/CoreGetFeatureDetails.js +0 -24
- package/esm/rpc/methods/CoreGetFileInfo.d.ts +0 -9
- package/esm/rpc/methods/CoreGetFileInfo.js +0 -15
- package/esm/rpc/methods/CoreRender.d.ts +0 -14
- package/esm/rpc/methods/CoreRender.js +0 -40
- package/esm/rpc/methods/CoreSaveFeatureData.d.ts +0 -16
- package/esm/rpc/methods/CoreSaveFeatureData.js +0 -32
- package/esm/rpc/methods/util.d.ts +0 -15
- package/esm/rpc/methods/util.js +0 -7
- package/esm/rpc/webWorkerRpcConfig.d.ts +0 -8
- package/esm/rpc/webWorkerRpcConfig.js +0 -8
- package/esm/ui/MenuButton.d.ts +0 -1
- package/esm/ui/MenuButton.js +0 -1
- package/esm/ui/MenuItems.d.ts +0 -15
- package/esm/ui/MenuItems.js +0 -59
- package/esm/ui/useEvent.d.ts +0 -1
- package/esm/ui/useEvent.js +0 -10
- package/esm/util/blobToDataURL.d.ts +0 -1
- package/esm/util/blobToDataURL.js +0 -14
- package/esm/util/compositeMap.d.ts +0 -11
- package/esm/util/compositeMap.js +0 -59
- package/esm/util/flatqueue/index.d.ts +0 -11
- package/esm/util/flatqueue/index.js +0 -61
- package/esm/util/layouts/BaseLayout.d.ts +0 -30
- package/esm/util/layouts/MultiLayout.d.ts +0 -12
- package/esm/util/layouts/MultiLayout.js +0 -40
- package/esm/util/layouts/PileupLayout.d.ts +0 -41
- package/esm/util/layouts/PileupLayout.js +0 -202
- package/esm/util/layouts/PrecomputedLayout.d.ts +0 -30
- package/esm/util/layouts/PrecomputedLayout.js +0 -71
- package/esm/util/layouts/SceneGraph.d.ts +0 -31
- package/esm/util/layouts/SceneGraph.js +0 -121
- package/esm/util/makeAbortableReaction.d.ts +0 -3
- package/esm/util/makeAbortableReaction.js +0 -47
- package/esm/util/map-obj/index.d.ts +0 -13
- package/esm/util/map-obj/index.js +0 -92
- package/esm/util/nextTick.d.ts +0 -1
- package/esm/util/nextTick.js +0 -3
- package/esm/util/offscreenCanvasGetSerializingSvg.d.ts +0 -5
- package/esm/util/offscreenCanvasGetSerializingSvg.js +0 -9
- package/esm/util/offscreenCanvasUtils.d.ts +0 -12
- package/esm/util/offscreenCanvasUtils.js +0 -19
- package/esm/util/renderToAbstractCanvas.d.ts +0 -17
- package/esm/util/renderToAbstractCanvas.js +0 -53
- package/esm/util/transferables.d.ts +0 -2
- package/esm/util/transferables.js +0 -35
- package/esm/util/tss-react/mui/index.d.ts +0 -1
- package/esm/util/tss-react/mui/index.js +0 -1
- package/esm/util/tss-react/mui/mui.d.ts +0 -10
- package/esm/util/tss-react/mui/mui.js +0 -5
- package/esm/util/when.d.ts +0 -1
- package/esm/util/when.js +0 -1
- /package/esm/{data_adapters/BaseAdapter/BaseOptions.js → configuration/promotablePin.js} +0 -0
- /package/esm/{util/layouts/BaseLayout.js → data_adapters/BaseAdapter/CytobandAdapter.js} +0 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// shift+wheel resizes the sample rows (a vertical-zoom gesture) rather than
|
|
2
|
+
// scrolling, keeping the row under the cursor pinned in place as the height
|
|
3
|
+
// changes. Shared by every row-stack display — both variant displays and MAF —
|
|
4
|
+
// so the gesture stays identical wherever rows have a resolved height and a
|
|
5
|
+
// scroll offset. setScrollTop clamps to the new scrollableHeight, so the raw
|
|
6
|
+
// target is passed through unclamped.
|
|
7
|
+
import { normalizeWheelDelta } from './wheelZoom.js';
|
|
8
|
+
const MAX_ROW_HEIGHT = 20;
|
|
9
|
+
// px of row-height change per pixel of normalized wheel scroll. A mouse notch
|
|
10
|
+
// (~100px) nudges the height ~0.4px; a trackpad's small continuous deltas
|
|
11
|
+
// accumulate smoothly instead of the old sign-based ±1-per-event, which flew
|
|
12
|
+
// through the whole range on a trackpad's event flood.
|
|
13
|
+
const RESIZE_PX_PER_WHEEL_PX = 1 / 240;
|
|
14
|
+
export function applyRowResizeWheel(e, el, model) {
|
|
15
|
+
e.preventDefault();
|
|
16
|
+
// scroll up (deltaY < 0) grows rows; proportional to the normalized delta so
|
|
17
|
+
// the speed is consistent across mice/trackpads and finer than ±1/event.
|
|
18
|
+
const delta = -normalizeWheelDelta(e.deltaY, e.deltaMode) * RESIZE_PX_PER_WHEEL_PX;
|
|
19
|
+
// guard nrow=0 (no samples) so the auto-fit floor stays finite
|
|
20
|
+
const minRowHeight = model.viewportHeight / Math.max(1, model.nrow);
|
|
21
|
+
// The cap may stop the gesture going further; it may never move the rows on
|
|
22
|
+
// its own. So both heights that can already sit above MAX_ROW_HEIGHT raise
|
|
23
|
+
// it: the auto-fit floor (few samples), and the current height (a pinned
|
|
24
|
+
// `rowHeight` — the config slot and the "Custom..." dialog are both
|
|
25
|
+
// unbounded, and MAF's own docs example is 12 while a bases-mode row wants
|
|
26
|
+
// more). Without the second, a 40px pinned row met `min(20, 40.4)` on the
|
|
27
|
+
// first notch of a *grow* gesture and halved.
|
|
28
|
+
const maxRowHeight = Math.max(MAX_ROW_HEIGHT, minRowHeight, model.effectiveRowHeight);
|
|
29
|
+
const newRowHeight = Math.max(minRowHeight, Math.min(maxRowHeight, model.effectiveRowHeight + delta));
|
|
30
|
+
const mouseY = e.clientY - el.getBoundingClientRect().top;
|
|
31
|
+
const rowUnderMouse = (mouseY + model.scrollTop) / model.effectiveRowHeight;
|
|
32
|
+
model.setRowHeight(newRowHeight);
|
|
33
|
+
model.setScrollTop(rowUnderMouse * newRowHeight - mouseY);
|
|
34
|
+
}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import type { FileLocation } from './types/data.ts';
|
|
2
|
+
export declare const adapterTypes: readonly ['IndexedFastaAdapter', 'BgzipFastaAdapter', 'FastaAdapter', 'TwoBitAdapter', 'ChromSizesAdapter'];
|
|
3
|
+
export type AdapterType = (typeof adapterTypes)[number];
|
|
4
|
+
export declare const adapterLabels: Record<AdapterType, string>;
|
|
5
|
+
export declare function adapterHasSequence(adapterSelection: AdapterType): adapterSelection is "BgzipFastaAdapter" | "FastaAdapter" | "IndexedFastaAdapter" | "TwoBitAdapter";
|
|
6
|
+
export interface FormState {
|
|
7
|
+
adapterSelection: AdapterType;
|
|
8
|
+
assemblyName: string;
|
|
9
|
+
assemblyDisplayName: string;
|
|
10
|
+
fastaLocation: FileLocation;
|
|
11
|
+
faiLocation: FileLocation;
|
|
12
|
+
gziLocation: FileLocation;
|
|
13
|
+
twoBitLocation: FileLocation;
|
|
14
|
+
chromSizesLocation: FileLocation;
|
|
15
|
+
refNameAliasesLocation: FileLocation;
|
|
16
|
+
cytobandsLocation: FileLocation;
|
|
17
|
+
}
|
|
18
|
+
export type LocationField = {
|
|
19
|
+
[K in keyof FormState]: FormState[K] extends FileLocation ? K : never;
|
|
20
|
+
}[keyof FormState];
|
|
21
|
+
export declare const sidecarRoles: readonly ['fai', 'gzi'];
|
|
22
|
+
export type SidecarRole = (typeof sidecarRoles)[number];
|
|
23
|
+
export declare const sidecars: {
|
|
24
|
+
readonly fai: {
|
|
25
|
+
readonly field: 'faiLocation';
|
|
26
|
+
readonly ext: '.fai';
|
|
27
|
+
readonly label: 'FASTA index (.fai) file';
|
|
28
|
+
};
|
|
29
|
+
readonly gzi: {
|
|
30
|
+
readonly field: 'gziLocation';
|
|
31
|
+
readonly ext: '.gzi';
|
|
32
|
+
readonly label: 'FASTA gzip index (.gzi) file';
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
export declare function makeSetField(setForm: (update: (prev: FormState) => FormState) => void): <K extends keyof FormState>(key: K) => (value: FormState[K]) => void;
|
|
36
|
+
export declare function initialFormState(): FormState;
|
|
37
|
+
export declare function applyPrimaryFile(state: FormState, location: FileLocation): FormState;
|
|
38
|
+
export declare function applyTwoBitFile(state: FormState, location: FileLocation): FormState;
|
|
39
|
+
export declare function clearFormFields(state: FormState): FormState;
|
|
40
|
+
export declare function clearSequenceFiles(state: FormState): FormState;
|
|
41
|
+
export declare function getBaseAssemblyConfig(state: FormState): {
|
|
42
|
+
name: string;
|
|
43
|
+
displayName?: string | undefined;
|
|
44
|
+
refNameAliases?: {
|
|
45
|
+
adapter: {
|
|
46
|
+
type: string;
|
|
47
|
+
location: FileLocation;
|
|
48
|
+
};
|
|
49
|
+
} | undefined;
|
|
50
|
+
cytobands?: {
|
|
51
|
+
adapter: {
|
|
52
|
+
type: string;
|
|
53
|
+
cytobandLocation: FileLocation;
|
|
54
|
+
};
|
|
55
|
+
} | undefined;
|
|
56
|
+
};
|
|
57
|
+
export type AssemblyAdapter = {
|
|
58
|
+
type: 'IndexedFastaAdapter';
|
|
59
|
+
fastaLocation: FileLocation;
|
|
60
|
+
faiLocation: FileLocation;
|
|
61
|
+
} | {
|
|
62
|
+
type: 'BgzipFastaAdapter';
|
|
63
|
+
fastaLocation: FileLocation;
|
|
64
|
+
faiLocation: FileLocation;
|
|
65
|
+
gziLocation: FileLocation;
|
|
66
|
+
} | {
|
|
67
|
+
type: 'UnindexedFastaAdapter';
|
|
68
|
+
fastaLocation: FileLocation;
|
|
69
|
+
} | {
|
|
70
|
+
type: 'TwoBitAdapter';
|
|
71
|
+
twoBitLocation: FileLocation;
|
|
72
|
+
chromSizesLocation?: FileLocation;
|
|
73
|
+
} | {
|
|
74
|
+
type: 'ChromSizesAdapter';
|
|
75
|
+
chromSizesLocation: FileLocation;
|
|
76
|
+
};
|
|
77
|
+
export type AssemblyConf = ReturnType<typeof getBaseAssemblyConfig> & {
|
|
78
|
+
sequence: {
|
|
79
|
+
type: 'ReferenceSequenceTrack';
|
|
80
|
+
trackId: string;
|
|
81
|
+
adapter: AssemblyAdapter;
|
|
82
|
+
};
|
|
83
|
+
};
|
|
84
|
+
export declare function isBlank(location: FileLocation): boolean;
|
|
85
|
+
export declare function formHasSequence(form: FormState): boolean;
|
|
86
|
+
export declare function getAssemblyName(form: FormState): string;
|
|
87
|
+
export declare function getMissingSidecars(form: FormState): ({
|
|
88
|
+
readonly field: 'faiLocation';
|
|
89
|
+
readonly ext: '.fai';
|
|
90
|
+
readonly label: 'FASTA index (.fai) file';
|
|
91
|
+
} | {
|
|
92
|
+
readonly field: 'gziLocation';
|
|
93
|
+
readonly ext: '.gzi';
|
|
94
|
+
readonly label: 'FASTA gzip index (.gzi) file';
|
|
95
|
+
})[];
|
|
96
|
+
export declare function isFormReady(form: FormState): boolean;
|
|
97
|
+
export declare function isFormDirty(form: FormState): boolean;
|
|
98
|
+
export declare function partitionExtraLocations(form: FormState): {
|
|
99
|
+
used: FileLocation[];
|
|
100
|
+
unused: FileLocation[];
|
|
101
|
+
};
|
|
102
|
+
export declare function getAssemblyNameFromFilename(filename: string): string;
|
|
103
|
+
export declare function detectAdapterType(filename: string): AdapterType | undefined;
|
|
104
|
+
export type FileRole = 'fasta' | 'fastaGz' | 'fai' | 'gzi' | 'twoBit' | 'chromSizes' | 'cytobands' | 'refNameAliases';
|
|
105
|
+
export declare function classifyFilename(filename: string): FileRole | undefined;
|
|
106
|
+
export declare function classifyAssemblyFiles(locations: FileLocation[]): Partial<FormState>;
|
|
107
|
+
export declare function isSequenceRole(role: FileRole | undefined): boolean;
|
|
108
|
+
export interface ClassifiedLocation {
|
|
109
|
+
location: FileLocation;
|
|
110
|
+
role: FileRole | undefined;
|
|
111
|
+
}
|
|
112
|
+
export declare function classifyLocations(locations: FileLocation[]): ClassifiedLocation[];
|
|
113
|
+
/**
|
|
114
|
+
* Rebuild the file-location fields (plus adapter/name) of `state` from a freshly
|
|
115
|
+
* classified set of dropped/pasted files.
|
|
116
|
+
*
|
|
117
|
+
* The file set is authoritative: a field it says nothing about resets, so
|
|
118
|
+
* deleting a URL from the box clears the slot it filled. `edited` is the way out
|
|
119
|
+
* — the fields the user set by hand, which the classifier never gets to answer
|
|
120
|
+
* for. Without it, typing a .fai into the "this format needs its index" input
|
|
121
|
+
* and then adding one more URL wiped the .fai and the pane re-asked for it.
|
|
122
|
+
*
|
|
123
|
+
* refName aliases and cytobands merge instead of resetting even when untouched:
|
|
124
|
+
* they are the two slots "More options" also fills, and no file set that omits
|
|
125
|
+
* them is making a claim about them.
|
|
126
|
+
*/
|
|
127
|
+
export declare function applyClassifiedFiles(state: FormState, locations: FileLocation[], edited: ReadonlySet<keyof FormState>): FormState;
|
|
128
|
+
export declare function buildAssemblyConf(form: FormState, resolveFastaAdapter: (fastaLocation: FileLocation) => Promise<AssemblyAdapter> | AssemblyAdapter): Promise<AssemblyConf>;
|
|
129
|
+
export declare function urlTextToLocations(text: string): FileLocation[];
|
|
130
|
+
export type AdapterConfigResult = {
|
|
131
|
+
kind: 'ready';
|
|
132
|
+
adapter: AssemblyAdapter;
|
|
133
|
+
} | {
|
|
134
|
+
kind: 'needsFastaIndex';
|
|
135
|
+
fastaLocation: FileLocation;
|
|
136
|
+
};
|
|
137
|
+
export declare function getAdapterConfig({ adapterSelection, fastaLocation, faiLocation, gziLocation, twoBitLocation, chromSizesLocation, }: {
|
|
138
|
+
adapterSelection: AdapterType;
|
|
139
|
+
fastaLocation: FileLocation;
|
|
140
|
+
faiLocation: FileLocation;
|
|
141
|
+
gziLocation: FileLocation;
|
|
142
|
+
twoBitLocation: FileLocation;
|
|
143
|
+
chromSizesLocation: FileLocation;
|
|
144
|
+
}): AdapterConfigResult;
|
|
@@ -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
|
+
}
|