@jbrowse/core 4.3.0 → 5.0.0-beta.10
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 +1994 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.d.ts +14 -3
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.js +36 -23
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.d.ts +10 -7
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.js +124 -21
- 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 -5
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCoreDetails.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCoreDetails.js +4 -4
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BasicValue.d.ts +12 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BasicValue.js +19 -5
- package/esm/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.js +18 -23
- package/esm/BaseFeatureWidget/BaseFeatureDetail/DataGridDetails.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/DataGridDetails.js +19 -40
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.d.ts +9 -6
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.js +33 -30
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetailsFrame.d.ts +11 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetailsFrame.js +11 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureWash.d.ts +20 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureWash.js +66 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldActionsButton.d.ts +8 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldActionsButton.js +24 -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 +19 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ParentFeatureLine.d.ts +4 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ParentFeatureLine.js +17 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/SimpleField.d.ts +5 -3
- package/esm/BaseFeatureWidget/BaseFeatureDetail/SimpleField.js +8 -6
- package/esm/BaseFeatureWidget/BaseFeatureDetail/UriField.d.ts +3 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/UriField.js +7 -14
- package/esm/BaseFeatureWidget/BaseFeatureDetail/index.d.ts +7 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/index.js +15 -20
- package/esm/BaseFeatureWidget/BaseFeatureDetail/jexlFilterActions.d.ts +16 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/jexlFilterActions.js +50 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/util.d.ts +0 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/util.js +9 -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 +35 -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 +3 -3
- 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 +20 -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 +62 -63
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/model.js +69 -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/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.d.ts +1 -1
- package/esm/BaseFeatureWidget/configSchema.js +1 -1
- package/esm/BaseFeatureWidget/formatDetails.d.ts +22 -0
- package/esm/BaseFeatureWidget/formatDetails.js +82 -0
- package/esm/BaseFeatureWidget/index.d.ts +4 -1
- package/esm/BaseFeatureWidget/index.js +2 -2
- package/esm/BaseFeatureWidget/stateModelFactory.d.ts +102 -71
- package/esm/BaseFeatureWidget/stateModelFactory.js +162 -63
- package/esm/BaseFeatureWidget/types.d.ts +15 -8
- package/esm/BaseFeatureWidget/util.d.ts +2 -37
- package/esm/BaseFeatureWidget/util.js +4 -85
- package/esm/CorePlugin.js +12 -7
- 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 +55 -44
- package/esm/PluginLoader.js +290 -90
- package/esm/PluginManager.d.ts +476 -57
- package/esm/PluginManager.js +480 -91
- package/esm/ReExports/MuiDataGridReExports.d.ts +3 -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/coreModules.generated.d.ts +2 -0
- package/esm/ReExports/coreModules.generated.js +528 -0
- package/esm/ReExports/coreWorkerModules.generated.d.ts +2 -0
- package/esm/ReExports/coreWorkerModules.generated.js +488 -0
- package/esm/ReExports/frameworkModules.d.ts +2 -0
- package/esm/ReExports/frameworkModules.js +68 -0
- package/esm/ReExports/frameworkShared.d.ts +12 -0
- package/esm/ReExports/frameworkShared.js +16 -0
- package/esm/ReExports/frameworkWorkerModules.generated.d.ts +2 -0
- package/esm/ReExports/frameworkWorkerModules.generated.js +130 -0
- package/esm/ReExports/lazify.d.ts +2 -2
- package/esm/ReExports/lazify.js +16 -3
- package/esm/ReExports/list.js +433 -160
- package/esm/ReExports/modules.d.ts +1 -1
- package/esm/ReExports/modules.js +10 -146
- package/esm/ReExports/muiComponentNames.d.ts +18 -0
- package/esm/ReExports/muiComponentNames.js +130 -0
- package/esm/ReExports/registry.d.ts +3 -0
- package/esm/ReExports/registry.js +46 -0
- package/esm/ReExports/uiStub.d.ts +3 -0
- package/esm/ReExports/uiStub.js +33 -0
- package/esm/ReExports/workerModules.d.ts +2 -0
- package/esm/ReExports/workerModules.js +11 -0
- package/esm/TextSearch/BaseResults.d.ts +20 -21
- package/esm/TextSearch/BaseResults.js +8 -33
- package/esm/TextSearch/TextSearchManager.d.ts +30 -36
- package/esm/TextSearch/TextSearchManager.js +138 -44
- package/esm/TextSearch/places.d.ts +12 -0
- package/esm/TextSearch/places.js +94 -0
- package/esm/assemblyManager/assembly.d.ts +310 -35
- package/esm/assemblyManager/assembly.js +554 -263
- package/esm/assemblyManager/assemblyAdapters.d.ts +12 -0
- package/esm/assemblyManager/assemblyAdapters.js +24 -0
- package/esm/assemblyManager/assemblyConfigSchema.d.ts +135 -19
- package/esm/assemblyManager/assemblyConfigSchema.js +205 -23
- package/esm/assemblyManager/assemblyManager.d.ts +586 -323
- package/esm/assemblyManager/assemblyManager.js +352 -51
- package/esm/assemblyManager/expandAssemblyConfigShorthand.d.ts +39 -0
- package/esm/assemblyManager/expandAssemblyConfigShorthand.js +114 -0
- package/esm/assemblyManager/geneticCodes.d.ts +21 -0
- package/esm/assemblyManager/geneticCodes.js +44 -0
- package/esm/assemblyManager/getSequenceAdapterConfig.d.ts +19 -0
- package/esm/assemblyManager/getSequenceAdapterConfig.js +22 -0
- package/esm/assemblyManager/index.d.ts +1 -1
- package/esm/assemblyManager/index.js +2 -2
- package/esm/assemblyManager/indexAssemblyNames.d.ts +9 -0
- package/esm/assemblyManager/indexAssemblyNames.js +22 -0
- package/esm/assemblyManager/loadRefNameMap.d.ts +5 -0
- package/esm/assemblyManager/loadRefNameMap.js +75 -0
- package/esm/assemblyManager/refNameColors.d.ts +1 -0
- package/esm/assemblyManager/refNameColors.js +32 -0
- package/esm/assemblyManager/refNameMapKey.d.ts +7 -0
- package/esm/assemblyManager/refNameMapKey.js +12 -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 +13 -0
- package/esm/checkPlugins.js +98 -0
- package/esm/configuration/bamIndexFields.d.ts +49 -0
- package/esm/configuration/bamIndexFields.js +41 -0
- package/esm/configuration/configurationSchema.d.ts +194 -29
- package/esm/configuration/configurationSchema.js +439 -145
- package/esm/configuration/configurationSchemaUnion.d.ts +39 -0
- package/esm/configuration/configurationSchemaUnion.js +56 -0
- package/esm/configuration/configurationSlot.d.ts +373 -30
- package/esm/configuration/configurationSlot.js +231 -224
- package/esm/configuration/fillLocations.d.ts +14 -0
- package/esm/configuration/fillLocations.js +14 -0
- package/esm/configuration/formatAboutConfigSchema.d.ts +41 -0
- package/esm/configuration/formatAboutConfigSchema.js +58 -0
- package/esm/configuration/formatDetailsConfigSchema.d.ts +54 -0
- package/esm/configuration/formatDetailsConfigSchema.js +87 -0
- package/esm/configuration/fullConfSnapshot.d.ts +13 -0
- package/esm/configuration/fullConfSnapshot.js +44 -0
- package/esm/configuration/getConf.d.ts +92 -0
- package/esm/configuration/getConf.js +141 -0
- package/esm/configuration/index.d.ts +32 -3
- package/esm/configuration/index.js +27 -2
- package/esm/configuration/indexType.d.ts +26 -0
- package/esm/configuration/indexType.js +38 -0
- package/esm/configuration/mergeFormatCallbacks.d.ts +14 -0
- package/esm/configuration/mergeFormatCallbacks.js +27 -0
- package/esm/configuration/readConfObject.d.ts +34 -0
- package/esm/configuration/readConfObject.js +118 -0
- package/esm/configuration/requirements.d.ts +37 -0
- package/esm/configuration/requirements.js +88 -0
- package/esm/configuration/schemaRegistry.d.ts +52 -0
- package/esm/configuration/schemaRegistry.js +48 -0
- package/esm/configuration/schemaTypes.d.ts +39 -0
- package/esm/configuration/schemaTypes.js +105 -0
- package/esm/configuration/slotFacade.d.ts +65 -0
- package/esm/configuration/slotFacade.js +110 -0
- package/esm/configuration/slotValueUtils.d.ts +17 -0
- package/esm/configuration/slotValueUtils.js +25 -0
- package/esm/configuration/snapshotPreprocess.d.ts +43 -0
- package/esm/configuration/snapshotPreprocess.js +161 -0
- package/esm/configuration/tabixIndexFields.d.ts +70 -0
- package/esm/configuration/tabixIndexFields.js +62 -0
- package/esm/configuration/tabixShorthand.d.ts +51 -0
- package/esm/configuration/tabixShorthand.js +72 -0
- package/esm/configuration/types.d.ts +315 -13
- package/esm/configuration/uriShorthand.d.ts +9 -0
- package/esm/configuration/uriShorthand.js +16 -0
- package/esm/data_adapters/BaseAdapter/BaseAdapter.d.ts +19 -11
- package/esm/data_adapters/BaseAdapter/BaseAdapter.js +19 -18
- package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.d.ts +158 -7
- package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.js +164 -29
- package/esm/data_adapters/BaseAdapter/BaseRefNameAliasAdapter.d.ts +1 -0
- package/esm/data_adapters/BaseAdapter/BaseSequenceAdapter.d.ts +13 -5
- package/esm/data_adapters/BaseAdapter/BaseSequenceAdapter.js +9 -7
- package/esm/data_adapters/BaseAdapter/BaseTextSearchAdapter.d.ts +2 -1
- package/esm/data_adapters/BaseAdapter/CytobandAdapter.d.ts +7 -0
- package/esm/data_adapters/BaseAdapter/RegionsAdapter.d.ts +2 -1
- package/esm/data_adapters/BaseAdapter/featureDensity.d.ts +40 -0
- package/esm/data_adapters/BaseAdapter/featureDensity.js +31 -0
- package/esm/data_adapters/BaseAdapter/getAdapterId.d.ts +2 -0
- package/esm/data_adapters/BaseAdapter/getAdapterId.js +9 -0
- package/esm/data_adapters/BaseAdapter/index.d.ts +28 -6
- package/esm/data_adapters/BaseAdapter/index.js +6 -5
- package/esm/data_adapters/BaseAdapter/rowSources.d.ts +37 -0
- package/esm/data_adapters/BaseAdapter/rowSources.js +7 -0
- package/esm/data_adapters/BaseAdapter/stats.d.ts +37 -5
- package/esm/data_adapters/BaseAdapter/stats.js +89 -24
- package/esm/data_adapters/BaseAdapter/types.d.ts +11 -13
- 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/BaseAdapter/zoomRange.d.ts +10 -0
- package/esm/data_adapters/CytobandAdapter/CytobandAdapter.d.ts +1 -1
- package/esm/data_adapters/CytobandAdapter/CytobandAdapter.js +5 -5
- package/esm/data_adapters/CytobandAdapter/configSchema.d.ts +34 -6
- package/esm/data_adapters/CytobandAdapter/configSchema.js +47 -17
- 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 +53 -2
- package/esm/data_adapters/dataAdapterCache.js +99 -25
- package/esm/data_adapters/getFeatureAdapter.d.ts +24 -0
- package/esm/data_adapters/getFeatureAdapter.js +27 -0
- package/esm/data_adapters/getSequenceSubAdapter.d.ts +19 -0
- package/esm/data_adapters/getSequenceSubAdapter.js +42 -0
- package/esm/pluggableElementTypes/AdapterType.d.ts +57 -7
- 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 +54 -14
- package/esm/pluggableElementTypes/DisplayType.js +30 -7
- package/esm/pluggableElementTypes/InternetAccountType.js +1 -1
- package/esm/pluggableElementTypes/LazyStateModelElement.d.ts +32 -0
- package/esm/pluggableElementTypes/LazyStateModelElement.js +77 -0
- package/esm/pluggableElementTypes/PluggableElementBase.d.ts +11 -0
- package/esm/pluggableElementTypes/PluggableElementBase.js +11 -0
- package/esm/pluggableElementTypes/RpcMethodType.d.ts +142 -12
- package/esm/pluggableElementTypes/RpcMethodType.js +279 -98
- package/esm/pluggableElementTypes/RpcMethodTypeWithFiltersAndRenameRegions.d.ts +18 -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 +7 -7
- 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 +22 -5
- package/esm/pluggableElementTypes/ViewType.js +40 -5
- package/esm/pluggableElementTypes/WidgetType.d.ts +2 -2
- package/esm/pluggableElementTypes/WidgetType.js +1 -1
- package/esm/pluggableElementTypes/addMenuItems.d.ts +88 -0
- package/esm/pluggableElementTypes/addMenuItems.js +82 -0
- package/esm/pluggableElementTypes/extendElementType.d.ts +29 -0
- package/esm/pluggableElementTypes/extendElementType.js +72 -0
- package/esm/pluggableElementTypes/index.d.ts +8 -7
- package/esm/pluggableElementTypes/index.js +24 -14
- package/esm/pluggableElementTypes/models/BaseConnectionModelFactory.d.ts +80 -15
- package/esm/pluggableElementTypes/models/BaseConnectionModelFactory.js +90 -10
- package/esm/pluggableElementTypes/models/BaseDisplayModel.d.ts +643 -84
- package/esm/pluggableElementTypes/models/BaseDisplayModel.js +230 -60
- package/esm/pluggableElementTypes/models/BaseTrackModel.d.ts +246 -37
- package/esm/pluggableElementTypes/models/BaseTrackModel.js +416 -107
- package/esm/pluggableElementTypes/models/BaseViewModel.d.ts +236 -16
- package/esm/pluggableElementTypes/models/BaseViewModel.js +154 -16
- package/esm/pluggableElementTypes/models/InternetAccountModel.d.ts +169 -25
- package/esm/pluggableElementTypes/models/InternetAccountModel.js +218 -48
- package/esm/pluggableElementTypes/models/assertDisplayContract.d.ts +178 -0
- package/esm/pluggableElementTypes/models/assertDisplayContract.js +239 -0
- package/esm/pluggableElementTypes/models/baseConnectionConfig.d.ts +26 -8
- package/esm/pluggableElementTypes/models/baseConnectionConfig.js +18 -2
- package/esm/pluggableElementTypes/models/baseInternetAccountConfig.d.ts +31 -17
- package/esm/pluggableElementTypes/models/baseInternetAccountConfig.js +23 -2
- package/esm/pluggableElementTypes/models/baseTrackConfig.d.ts +142 -65
- package/esm/pluggableElementTypes/models/baseTrackConfig.js +215 -90
- package/esm/pluggableElementTypes/models/components/SaveTrackData.d.ts +3 -8
- package/esm/pluggableElementTypes/models/components/SaveTrackData.js +111 -139
- package/esm/pluggableElementTypes/models/components/fetchTrackData.d.ts +54 -0
- package/esm/pluggableElementTypes/models/components/fetchTrackData.js +83 -0
- package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.d.ts +50 -0
- package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.js +147 -0
- package/esm/pluggableElementTypes/models/index.d.ts +5 -3
- package/esm/pluggableElementTypes/models/index.js +9 -8
- package/esm/pluggableElementTypes/models/migrateTrackConfig.d.ts +48 -0
- package/esm/pluggableElementTypes/models/migrateTrackConfig.js +114 -0
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/bed.js +75 -7
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.d.ts +10 -3
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.js +272 -100
- 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 +225 -0
- package/esm/pluginDefinitions.js +254 -0
- package/esm/rpc/BaseRpcDriver.d.ts +27 -35
- package/esm/rpc/BaseRpcDriver.js +68 -106
- package/esm/rpc/MainThreadRpcDriver.d.ts +9 -10
- package/esm/rpc/MainThreadRpcDriver.js +23 -29
- package/esm/rpc/RpcClient.d.ts +50 -0
- package/esm/rpc/RpcClient.js +189 -0
- package/esm/rpc/RpcManager.d.ts +120 -27
- package/esm/rpc/RpcManager.js +187 -50
- package/esm/rpc/RpcRegistry.d.ts +298 -0
- package/esm/rpc/RpcServer.d.ts +43 -0
- package/esm/rpc/RpcServer.js +242 -0
- package/esm/rpc/WebWorkerRpcDriver.d.ts +78 -24
- package/esm/rpc/WebWorkerRpcDriver.js +311 -30
- package/esm/rpc/byteBudget.d.ts +64 -0
- package/esm/rpc/byteBudget.js +61 -0
- package/esm/rpc/configSchema.d.ts +13 -5
- package/esm/rpc/configSchema.js +40 -16
- package/esm/rpc/coreRpcMethods.d.ts +6 -5
- package/esm/rpc/coreRpcMethods.js +13 -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/CoreGetEncodedFeature.d.ts +13 -0
- package/esm/rpc/methods/CoreGetEncodedFeature.js +32 -0
- package/esm/rpc/methods/CoreGetEncodedLayers.d.ts +16 -0
- package/esm/rpc/methods/CoreGetEncodedLayers.js +59 -0
- package/esm/rpc/methods/CoreGetExportData.d.ts +5 -18
- package/esm/rpc/methods/CoreGetExportData.js +25 -15
- package/esm/rpc/methods/CoreGetFeatureDensity.d.ts +11 -0
- package/esm/rpc/methods/CoreGetFeatureDensity.js +22 -0
- package/esm/rpc/methods/CoreGetFeatures.d.ts +6 -15
- package/esm/rpc/methods/CoreGetFeatures.js +14 -18
- 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 +16 -15
- 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/methods/CoreLoadAdapterCode.d.ts +13 -0
- package/esm/rpc/methods/CoreLoadAdapterCode.js +16 -0
- package/esm/rpc/methods/layerFeatures.d.ts +33 -0
- package/esm/rpc/methods/layerFeatures.js +29 -0
- 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 +52 -0
- package/esm/svg/SvgThemeProviders.d.ts +12 -0
- package/esm/svg/SvgThemeProviders.js +15 -0
- package/esm/svg/constants.d.ts +1 -0
- package/esm/svg/constants.js +5 -0
- package/esm/svg/exportViewSvg.d.ts +28 -0
- package/esm/svg/exportViewSvg.js +13 -0
- package/esm/svg/normalizeSvgMarkup.d.ts +7 -0
- package/esm/svg/normalizeSvgMarkup.js +99 -0
- package/esm/svg/saveSvgAsImage.d.ts +6 -0
- package/esm/svg/saveSvgAsImage.js +90 -0
- package/esm/svg/serializeSvg.d.ts +7 -0
- package/esm/svg/serializeSvg.js +11 -0
- package/esm/svg/svgId.d.ts +42 -0
- package/esm/svg/svgId.js +84 -0
- package/esm/svg/svgReady.d.ts +138 -0
- package/esm/svg/svgReady.js +165 -0
- package/esm/svg/trackNames.d.ts +29 -0
- package/esm/svg/trackNames.js +34 -0
- package/esm/svg/wrapSvgExport.d.ts +12 -0
- package/esm/svg/wrapSvgExport.js +10 -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 +56 -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/AppReadyMarker.d.ts +45 -0
- package/esm/ui/AppReadyMarker.js +89 -0
- 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 +446 -42
- 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 +6 -5
- 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 +5 -4
- package/esm/ui/ErrorMessageStackTraceDialog.d.ts +1 -1
- package/esm/ui/ErrorMessageStackTraceDialog.js +51 -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 +129 -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 +436 -64
- 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 +11 -3
- package/esm/ui/HoverMenu.js +34 -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 +26 -0
- package/esm/ui/JexlFilterDialog.js +167 -0
- package/esm/ui/JexlFilterRowEditors.d.ts +15 -0
- package/esm/ui/JexlFilterRowEditors.js +90 -0
- package/esm/ui/LabeledCheckbox.d.ts +9 -0
- package/esm/ui/LabeledCheckbox.js +7 -0
- package/esm/ui/LazyBaseTooltip.d.ts +4 -0
- package/esm/ui/LazyBaseTooltip.js +9 -0
- package/esm/ui/LegendSwatchGlyph.d.ts +7 -0
- package/esm/ui/LegendSwatchGlyph.js +30 -0
- package/esm/ui/LoadingDots.d.ts +1 -0
- package/esm/ui/LoadingDots.js +30 -0
- package/esm/ui/LoadingEllipses.d.ts +17 -1
- package/esm/ui/LoadingEllipses.js +20 -29
- package/esm/ui/LoadingOverlay.d.ts +23 -0
- package/esm/ui/LoadingOverlay.js +139 -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 +95 -5
- package/esm/ui/MenuTypes.js +16 -1
- package/esm/ui/MonospaceTextField.d.ts +10 -0
- package/esm/ui/MonospaceTextField.js +40 -0
- package/esm/ui/NumberTextField.d.ts +31 -0
- package/esm/ui/NumberTextField.js +33 -0
- package/esm/ui/PaletteContext.d.ts +90 -0
- package/esm/ui/PaletteContext.js +142 -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/SearchOption.d.ts +13 -0
- package/esm/ui/RefNameAutocomplete/SearchOption.js +45 -0
- package/esm/ui/RefNameAutocomplete/index.d.ts +21 -0
- package/esm/ui/RefNameAutocomplete/index.js +84 -0
- package/esm/ui/RefNameAutocomplete/util.d.ts +62 -0
- package/esm/ui/RefNameAutocomplete/util.js +209 -0
- package/esm/ui/ReplaceCurrentViewButton.d.ts +19 -0
- package/esm/ui/ReplaceCurrentViewButton.js +22 -0
- package/esm/ui/ResizeHandle.d.ts +15 -7
- package/esm/ui/ResizeHandle.js +73 -53
- 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/ScrollChrome.d.ts +13 -0
- package/esm/ui/ScrollChrome.js +11 -0
- package/esm/ui/ScrollEdgeShadow.d.ts +41 -0
- package/esm/ui/ScrollEdgeShadow.js +77 -0
- package/esm/ui/ScrollZoomToggle.d.ts +15 -0
- package/esm/ui/ScrollZoomToggle.js +75 -0
- package/esm/ui/SequenceAdapterInputs.d.ts +9 -0
- package/esm/ui/SequenceAdapterInputs.js +30 -0
- package/esm/ui/SessionJsonPanel.d.ts +3 -0
- package/esm/ui/SessionJsonPanel.js +14 -0
- package/esm/ui/SettingsChangesTable.d.ts +15 -0
- package/esm/ui/SettingsChangesTable.js +87 -0
- package/esm/ui/ShareLinkField.d.ts +4 -0
- package/esm/ui/ShareLinkField.js +15 -0
- package/esm/ui/SingleSlider.d.ts +8 -0
- package/esm/ui/SingleSlider.js +11 -0
- package/esm/ui/SizeSliderRow.d.ts +14 -0
- package/esm/ui/SizeSliderRow.js +48 -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 +96 -52
- 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 +18 -0
- package/esm/ui/SvgColorLegend.js +106 -0
- package/esm/ui/TagTextField.d.ts +40 -0
- package/esm/ui/TagTextField.js +32 -0
- package/esm/ui/VerticalScrollbar.d.ts +24 -0
- package/esm/ui/VerticalScrollbar.js +104 -0
- package/esm/ui/ViewLoadingScreen.d.ts +25 -0
- package/esm/ui/ViewLoadingScreen.js +52 -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/colorScale.d.ts +92 -0
- package/esm/ui/colorScale.js +72 -0
- package/esm/ui/colorSwatchStyle.d.ts +9 -0
- package/esm/ui/colorSwatchStyle.js +11 -0
- package/esm/ui/colors.d.ts +125 -8
- package/esm/ui/colors.js +364 -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/hoverBoxStyle.d.ts +23 -0
- package/esm/ui/hoverBoxStyle.js +28 -0
- package/esm/ui/index.d.ts +77 -5
- package/esm/ui/index.js +83 -20
- 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 +46 -0
- package/esm/ui/legendMenuItem.d.ts +16 -0
- package/esm/ui/legendMenuItem.js +17 -0
- package/esm/ui/legendSpec.d.ts +69 -0
- package/esm/ui/legendSpec.js +69 -0
- package/esm/ui/loadingDotKeyframes.d.ts +18 -0
- package/esm/ui/loadingDotKeyframes.js +17 -0
- package/esm/ui/makeSizeMenu.d.ts +24 -0
- package/esm/ui/makeSizeMenu.js +58 -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 +22 -0
- package/esm/ui/menuItemAdornment.js +28 -0
- package/esm/ui/menuItems.d.ts +23 -0
- package/esm/ui/menuItems.js +21 -0
- package/esm/ui/menuLabels.d.ts +41 -0
- package/esm/ui/menuLabels.js +43 -0
- package/esm/ui/multiTrackMenuItems.d.ts +25 -0
- package/esm/ui/multiTrackMenuItems.js +15 -0
- package/esm/ui/palette.d.ts +561 -0
- package/esm/ui/palette.js +785 -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/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 +268 -30
- package/esm/ui/theme.js +250 -350
- package/esm/ui/toggleMenuItems.d.ts +42 -0
- package/esm/ui/toggleMenuItems.js +61 -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/viewHeaderHeight.d.ts +1 -0
- package/esm/ui/viewHeaderHeight.js +1 -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 +207 -17
- package/esm/util/Base1DUtils.js +316 -173
- package/esm/util/Base1DViewModel.d.ts +99 -21
- package/esm/util/Base1DViewModel.js +151 -41
- 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 +83 -0
- package/esm/util/SvgCanvas.js +520 -0
- package/esm/util/TimeTraveller.d.ts +12 -0
- package/esm/util/TimeTraveller.js +130 -27
- package/esm/util/aborting.d.ts +56 -4
- package/esm/util/aborting.js +112 -25
- package/esm/util/adapterMetadata.d.ts +20 -0
- package/esm/util/adapterMetadata.js +40 -0
- package/esm/util/addAndShowTrack.d.ts +19 -0
- package/esm/util/addAndShowTrack.js +27 -0
- package/esm/util/addRelativeUris.d.ts +29 -0
- package/esm/util/addRelativeUris.js +78 -0
- package/esm/util/addTrackComponent.d.ts +72 -0
- package/esm/util/addTrackComponent.js +53 -0
- package/esm/util/addTrackFromWidget.d.ts +91 -0
- package/esm/util/addTrackFromWidget.js +91 -0
- package/esm/util/aggregateFieldName.d.ts +10 -0
- package/esm/util/aggregateFieldName.js +8 -0
- package/esm/util/analytics.d.ts +32 -3
- package/esm/util/analytics.js +135 -49
- package/esm/util/animationAllowed.d.ts +26 -0
- package/esm/util/animationAllowed.js +35 -0
- package/esm/util/applyRowResizeWheel.d.ts +15 -0
- package/esm/util/applyRowResizeWheel.js +23 -0
- package/esm/util/assemblyConfigUtils.d.ts +144 -0
- package/esm/util/assemblyConfigUtils.js +498 -0
- package/esm/util/bandHeight.d.ts +63 -0
- package/esm/util/bandHeight.js +85 -0
- package/esm/util/bandLayout.d.ts +51 -0
- package/esm/util/bandLayout.js +36 -0
- package/esm/util/bezierConnector.d.ts +15 -0
- package/esm/util/bezierConnector.js +101 -0
- package/esm/util/bgzfWorkerPool.d.ts +24 -0
- package/esm/util/bgzfWorkerPool.js +27 -0
- package/esm/util/binnedAggregate.d.ts +17 -0
- package/esm/util/binnedAggregate.js +275 -0
- package/esm/util/blockTypes.d.ts +64 -45
- package/esm/util/blockTypes.js +67 -74
- package/esm/util/bpUtils.d.ts +81 -0
- package/esm/util/bpUtils.js +103 -0
- package/esm/util/cacheBudgets.d.ts +55 -0
- package/esm/util/cacheBudgets.js +55 -0
- package/esm/util/cachedSetup.d.ts +51 -0
- package/esm/util/cachedSetup.js +87 -0
- package/esm/util/calculateDynamicBlocks.d.ts +5 -0
- package/esm/util/calculateDynamicBlocks.js +85 -82
- package/esm/util/calculateStaticBlocks.d.ts +2 -3
- package/esm/util/calculateStaticBlocks.js +48 -71
- package/esm/util/categoricalField.d.ts +56 -0
- package/esm/util/categoricalField.js +73 -0
- package/esm/util/chooseGridPitch.d.ts +9 -0
- package/esm/util/chooseGridPitch.js +31 -0
- package/esm/util/clampToContig.d.ts +43 -0
- package/esm/util/clampToContig.js +47 -0
- package/esm/util/cmpStr.d.ts +1 -0
- package/esm/util/cmpStr.js +7 -0
- package/esm/util/coarseStripHTML.js +2 -15
- package/esm/util/color/cssColorsLevel4.d.ts +1 -0
- package/esm/util/color/cssColorsLevel4.js +7 -2
- package/esm/util/color/index.d.ts +84 -3
- package/esm/util/color/index.js +197 -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 +155 -0
- package/esm/util/colorRamp.d.ts +81 -0
- package/esm/util/colorRamp.js +244 -0
- package/esm/util/colorScale.d.ts +156 -0
- package/esm/util/colorScale.js +243 -0
- package/esm/util/colorSchemes.d.ts +21 -0
- package/esm/util/colorSchemes.js +30 -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/createAbortRotation.d.ts +115 -0
- package/esm/util/createAbortRotation.js +116 -0
- package/esm/util/createSvgRasterCanvas.d.ts +17 -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/cssColorParse.d.ts +15 -0
- package/esm/util/cssColorParse.js +53 -0
- 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 +22 -0
- package/esm/util/diagonalizeRegions.js +187 -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/expandLooseSearchIndex.d.ts +19 -0
- package/esm/util/expandLooseSearchIndex.js +29 -0
- package/esm/util/featureTable.d.ts +224 -0
- package/esm/util/featureTable.js +366 -0
- package/esm/util/featureTransforms.d.ts +80 -0
- package/esm/util/featureTransforms.js +1579 -0
- package/esm/util/featureTypes.d.ts +24 -0
- package/esm/util/featureTypes.js +35 -0
- package/esm/util/fetchAndMaybeUnzip.d.ts +6 -0
- package/esm/util/fetchAndMaybeUnzip.js +71 -0
- package/esm/util/fetchContext.d.ts +81 -0
- package/esm/util/fetchContext.js +59 -0
- package/esm/util/fetchHub.d.ts +17 -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 +4 -1
- package/esm/util/fetchSeq.js +18 -6
- package/esm/util/fieldReader.d.ts +17 -0
- package/esm/util/fieldReader.js +62 -0
- 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 +26 -0
- package/esm/util/freezeDeep.js +39 -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/groupKeys.d.ts +77 -0
- package/esm/util/groupKeys.js +155 -0
- package/esm/util/highlights.d.ts +25 -0
- package/esm/util/highlights.js +87 -0
- package/esm/util/hooks.d.ts +189 -0
- package/esm/util/hooks.js +485 -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 +137 -853
- package/esm/util/indexCandidates.d.ts +20 -0
- package/esm/util/indexCandidates.js +43 -0
- package/esm/util/installClearHoverOnSurfaceMove.d.ts +40 -0
- package/esm/util/installClearHoverOnSurfaceMove.js +41 -0
- package/esm/util/installFetch.d.ts +234 -0
- package/esm/util/installFetch.js +205 -0
- package/esm/util/installInitAutorun.d.ts +63 -0
- package/esm/util/installInitAutorun.js +107 -0
- package/esm/util/installPrerequisiteFetch.d.ts +115 -0
- package/esm/util/installPrerequisiteFetch.js +111 -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 +120 -12
- package/esm/util/isDataCurrent.d.ts +9 -0
- package/esm/util/isDataCurrent.js +12 -0
- package/esm/util/isTextEntryFocused.d.ts +7 -0
- package/esm/util/isTextEntryFocused.js +16 -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 +146 -19
- package/esm/util/jexlFilterRows.d.ts +89 -0
- package/esm/util/jexlFilterRows.js +252 -0
- package/esm/util/jexlFilters.d.ts +68 -0
- package/esm/util/jexlFilters.js +61 -0
- package/esm/util/jexlStrings.d.ts +21 -1
- package/esm/util/jexlStrings.js +20 -14
- package/esm/util/layouts/GranularRectLayout.d.ts +20 -25
- package/esm/util/layouts/GranularRectLayout.js +116 -356
- package/esm/util/layouts/index.d.ts +1 -7
- package/esm/util/layouts/index.js +2 -6
- package/esm/util/layouts/intervalUtils.d.ts +12 -1
- package/esm/util/layouts/intervalUtils.js +13 -31
- package/esm/util/layouts/placeRect.d.ts +50 -0
- package/esm/util/layouts/placeRect.js +97 -0
- package/esm/util/lazyAfterAttach.d.ts +13 -0
- package/esm/util/lazyAfterAttach.js +31 -0
- package/esm/util/lazyWithPreload.d.ts +19 -0
- package/esm/util/lazyWithPreload.js +27 -0
- package/esm/util/leadingEdgeAutorun.d.ts +40 -0
- package/esm/util/leadingEdgeAutorun.js +51 -0
- package/esm/util/legendCandidates.d.ts +72 -0
- package/esm/util/legendCandidates.js +138 -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/markEncoding.d.ts +150 -0
- package/esm/util/markEncoding.js +845 -0
- package/esm/util/markEncodingTypes.d.ts +588 -0
- package/esm/util/markEncodingTypes.js +8 -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 +3 -11
- package/esm/util/mst-reflection.js +3 -52
- package/esm/util/mstUtils.d.ts +97 -0
- package/esm/util/mstUtils.js +137 -0
- package/esm/util/nanoid.d.ts +0 -4
- package/esm/util/nanoid.js +10 -20
- package/esm/util/numericUtils.d.ts +27 -0
- package/esm/util/numericUtils.js +143 -0
- package/esm/util/numericValue.d.ts +14 -0
- package/esm/util/numericValue.js +34 -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/openFeatureWidget.d.ts +38 -0
- package/esm/util/openFeatureWidget.js +64 -0
- package/esm/util/openViews.d.ts +17 -0
- package/esm/util/openViews.js +22 -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 +44 -2
- package/esm/util/parseLineByLine.js +150 -15
- package/esm/util/parseMotifList.d.ts +17 -0
- package/esm/util/parseMotifList.js +69 -0
- package/esm/util/pluginStore.d.ts +111 -0
- package/esm/util/pluginStore.js +254 -0
- package/esm/util/pointerPresence.d.ts +5 -0
- package/esm/util/pointerPresence.js +21 -0
- package/esm/util/preloadComponent.d.ts +5 -0
- package/esm/util/preloadComponent.js +11 -0
- package/esm/util/progress.d.ts +459 -0
- package/esm/util/progress.js +821 -0
- package/esm/util/quantileExtent.d.ts +49 -0
- package/esm/util/quantileExtent.js +162 -0
- package/esm/util/range.d.ts +46 -1
- package/esm/util/range.js +68 -2
- package/esm/util/renameRegions.d.ts +41 -0
- package/esm/util/renameRegions.js +143 -0
- package/esm/util/renderToStaticMarkup.d.ts +2 -0
- package/esm/util/renderToStaticMarkup.js +60 -0
- package/esm/util/reorder.d.ts +35 -0
- package/esm/util/reorder.js +83 -0
- package/esm/util/resolveRowHeight.d.ts +27 -0
- package/esm/util/resolveRowHeight.js +30 -0
- package/esm/util/revlist.d.ts +13 -0
- package/esm/util/revlist.js +14 -0
- package/esm/util/rowStackGeometry.d.ts +66 -0
- package/esm/util/rowStackGeometry.js +70 -0
- package/esm/util/rpc.d.ts +16 -1
- package/esm/util/rpc.js +12 -1
- package/esm/util/rxjs.d.ts +30 -2
- package/esm/util/rxjs.js +85 -10
- package/esm/util/sameStrings.d.ts +16 -0
- package/esm/util/sameStrings.js +20 -0
- package/esm/util/samplesTsv.d.ts +49 -0
- package/esm/util/samplesTsv.js +86 -0
- package/esm/util/scheduleDetachedDestroy.d.ts +18 -0
- package/esm/util/scheduleDetachedDestroy.js +24 -0
- package/esm/util/scrollLatch.d.ts +5 -0
- package/esm/util/scrollLatch.js +67 -0
- package/esm/util/selectEncodedFeature.d.ts +16 -0
- package/esm/util/selectEncodedFeature.js +34 -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 +40 -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/shapeNameList.d.ts +2 -0
- package/esm/util/shapeNameList.js +6 -0
- package/esm/util/shapeNames.d.ts +7 -0
- package/esm/util/shapeNames.js +11 -0
- package/esm/util/simpleFeature.d.ts +111 -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/starFusion.d.ts +26 -0
- package/esm/util/starFusion.js +37 -0
- package/esm/util/stats.d.ts +25 -2
- package/esm/util/stats.js +39 -8
- package/esm/util/stepTables.d.ts +82 -0
- package/esm/util/stepTables.js +243 -0
- package/esm/util/stringUtils.d.ts +5 -0
- package/esm/util/stringUtils.js +34 -0
- package/esm/util/svAlt.d.ts +145 -0
- package/esm/util/svAlt.js +364 -0
- package/esm/util/svgColorProps.d.ts +18 -0
- package/esm/util/svgColorProps.js +55 -0
- package/esm/util/systemColorScheme.d.ts +12 -0
- package/esm/util/systemColorScheme.js +27 -0
- package/esm/util/tabix.d.ts +125 -0
- package/esm/util/tabix.js +148 -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/thresholdScale.d.ts +91 -0
- package/esm/util/thresholdScale.js +166 -0
- package/esm/util/tickLabels.d.ts +36 -0
- package/esm/util/tickLabels.js +45 -0
- package/esm/util/timeGate.d.ts +25 -0
- package/esm/util/timeGate.js +78 -0
- package/esm/util/trackConfigDelta.d.ts +84 -0
- package/esm/util/trackConfigDelta.js +206 -0
- package/esm/util/tracks.d.ts +431 -30
- package/esm/util/tracks.js +952 -185
- package/esm/util/translateTranscript.d.ts +44 -0
- package/esm/util/translateTranscript.js +102 -0
- 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 +73 -0
- package/esm/util/types/data.js +41 -0
- package/esm/util/types/index.d.ts +459 -121
- package/esm/util/types/index.js +96 -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 +74 -47
- package/esm/util/types/mst.js +31 -22
- package/esm/util/types/predicate.d.ts +9 -0
- package/esm/util/types/predicate.js +1 -0
- package/esm/util/types/renameIds.d.ts +1 -0
- package/esm/util/types/renameIds.js +29 -0
- package/esm/util/types/renderingServices.d.ts +16 -0
- package/esm/util/types/renderingServices.js +1 -0
- package/esm/util/types/services.d.ts +55 -0
- package/esm/util/types/services.js +10 -0
- package/esm/util/types/util.d.ts +8 -2
- package/esm/util/unknownSnapshotKeys.d.ts +51 -0
- package/esm/util/unknownSnapshotKeys.js +82 -0
- package/esm/util/unzip.d.ts +1 -0
- package/esm/util/unzip.js +6 -0
- package/esm/util/useEventCallback.d.ts +1 -0
- package/esm/util/useEventCallback.js +16 -0
- package/esm/util/useFeatureSequence.d.ts +13 -7
- package/esm/util/useFeatureSequence.js +55 -77
- package/esm/util/useFetch.d.ts +55 -0
- package/esm/util/useFetch.js +197 -0
- package/esm/util/useFetchPlugins.d.ts +16 -0
- package/esm/util/useFetchPlugins.js +18 -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 +9 -0
- package/esm/util/usePanelVirtualScroll.js +15 -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 +9 -0
- package/esm/util/useRowVirtualScroll.js +22 -0
- package/esm/util/useVirtualScrollWheel.d.ts +23 -0
- package/esm/util/useVirtualScrollWheel.js +74 -0
- package/esm/util/viewHighlights.d.ts +3 -0
- package/esm/util/viewHighlights.js +5 -0
- package/esm/util/viewStatus.d.ts +90 -0
- package/esm/util/viewStatus.js +54 -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 +65 -0
- package/esm/util/wheelZoom.js +297 -0
- package/esm/util/whenViewSettled.d.ts +74 -0
- package/esm/util/whenViewSettled.js +77 -0
- package/esm/util/withFeatureDetails.d.ts +34 -0
- package/esm/util/withFeatureDetails.js +59 -0
- package/esm/util/withLaunchInput.d.ts +174 -0
- package/esm/util/withLaunchInput.js +274 -0
- package/package.json +290 -820
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Position.d.ts +0 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Position.js +0 -14
- package/esm/BaseFeatureWidget/BaseFeatureDetail/types.d.ts +0 -7
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/DLGAP3.d.ts +0 -80
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/DLGAP3.js +0 -583
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/NCDN.d.ts +0 -141
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/NCDN.js +0 -1116
- package/esm/ReExports/BaseFeatureDetails.d.ts +0 -1
- package/esm/ReExports/BaseFeatureDetails.js +0 -9
- package/esm/ReExports/DataGrid.d.ts +0 -1
- package/esm/ReExports/DataGrid.js +0 -1
- package/esm/ReExports/index.d.ts +0 -1
- package/esm/ReExports/index.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/stopToken.d.ts +0 -19
- package/esm/util/stopToken.js +0 -90
- 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/{BaseFeatureWidget/BaseFeatureDetail/types.js → data_adapters/BaseAdapter/CytobandAdapter.js} +0 -0
- /package/esm/data_adapters/BaseAdapter/{BaseOptions.js → zoomRange.js} +0 -0
- /package/esm/{util/layouts/BaseLayout.js → rpc/RpcRegistry.js} +0 -0
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { when } from 'mobx';
|
|
2
|
+
import { whenViewSettled } from '../util/whenViewSettled.js';
|
|
3
|
+
// Elapsed, not idle. An idle bound would be the better instrument — a slow
|
|
4
|
+
// export progresses, a stuck one does not — but there is no signal to hang it
|
|
5
|
+
// on: `svgReady` is a computed that stays false for the whole fetch, so mobx
|
|
6
|
+
// never re-evaluates the predicate to say work is still landing, and only one
|
|
7
|
+
// of the five display families exposes `isLoading`.
|
|
8
|
+
//
|
|
9
|
+
// So the number carries the whole argument, and it is picked to make a false
|
|
10
|
+
// failure implausible rather than merely unlikely: half an hour, against real
|
|
11
|
+
// exports over remote 1000 Genomes data that finish in about ten seconds and a
|
|
12
|
+
// worst measured case in low minutes. A caller that knows it is slower than
|
|
13
|
+
// that passes its own bound; nothing here fails an export that is merely slow.
|
|
14
|
+
const SVG_READY_TIMEOUT_MS = 1_800_000;
|
|
15
|
+
/**
|
|
16
|
+
* Whether an off-screen (SVG) export can read this display's data now: the held
|
|
17
|
+
* data is current for what is on screen, or the fetch reached a terminal state.
|
|
18
|
+
*
|
|
19
|
+
* Single-sourced for the same reason as `computeDisplayPhase`: every display
|
|
20
|
+
* family expresses freshness differently — spatial coverage (per-region), a
|
|
21
|
+
* signature compare (global, dotplot, synteny) — but the *policy* wrapping it
|
|
22
|
+
* is identical, and each of the five
|
|
23
|
+
* hand-written copies this replaced was one place to forget a terminal and hang
|
|
24
|
+
* the export, or to forget freshness and capture a stale viewport (both have
|
|
25
|
+
* shipped; see agent-docs/reference/SVG_EXPORT.md).
|
|
26
|
+
*
|
|
27
|
+
* `dataCurrent` is a **thunk**, evaluated only after the terminals are ruled
|
|
28
|
+
* out, for the same MobX reason `computeDisplayPhase`'s `loading` is: freshness
|
|
29
|
+
* typically reads the containing view's `visibleRegions` / `loadedRegions`, and
|
|
30
|
+
* the `when()` in `awaitSvgReady` shouldn't subscribe to that churn while a
|
|
31
|
+
* banner is up.
|
|
32
|
+
*/
|
|
33
|
+
export function computeSvgReady({ error, regionTooLarge, extraTerminal, fetchCanceled }, dataCurrent) {
|
|
34
|
+
return (!!error || regionTooLarge || extraTerminal || fetchCanceled || dataCurrent());
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Off-screen renderers (SVG export, headless jbrowse-img) must wait until the
|
|
38
|
+
* display reaches a terminal state before reading its data. That whole policy
|
|
39
|
+
* lives in `svgReady`; this is the one shared way to await it, so renderers
|
|
40
|
+
* never re-inline `data != null || error || …`. `svgReady` is a terminal state
|
|
41
|
+
* (data loaded, or error / too-large / canceled), so it resolves once the fetch
|
|
42
|
+
* it observes settles; the half-hour `timeoutMs` is only a backstop for a gate
|
|
43
|
+
* that cannot converge. If a throwing `svgReady` getter rejects the wait, that
|
|
44
|
+
* error propagates faithfully rather than being masked.
|
|
45
|
+
*
|
|
46
|
+
* It then fails the export if the terminal it settled on was the error
|
|
47
|
+
* (`throwOnExportErrors`, below, for why that is fatal), making this the exact
|
|
48
|
+
* display-level twin of `awaitViewInitialized`: both wait for `settled || error`
|
|
49
|
+
* and both refuse to continue on the error, so the postcondition of each is
|
|
50
|
+
* "there is something to draw". Folded in rather than left to the caller because
|
|
51
|
+
* `svgReady` is *true* on error, so a caller that awaits and stops there gets a
|
|
52
|
+
* display with nothing to draw and no sign of why.
|
|
53
|
+
*
|
|
54
|
+
* Every display uses this one, including the ones with nowhere to draw an error
|
|
55
|
+
* (dotplot, synteny) — a display never has to know whether it owns the surface
|
|
56
|
+
* it paints, because the thing that made that distinction matter, reporting all
|
|
57
|
+
* the failures rather than one, is `awaitSvgRenders`'s job.
|
|
58
|
+
*
|
|
59
|
+
* A standing user cancel fails the export the same way an error does, and for
|
|
60
|
+
* the same reason the error is folded in rather than left to the caller: the
|
|
61
|
+
* cancel terminal makes `svgReady` *true* over a display with nothing to draw,
|
|
62
|
+
* so a caller that awaits and stops there exports that track blank in silence.
|
|
63
|
+
* On screen the same state shows "Loading canceled / Retry", so the loud
|
|
64
|
+
* failure matches what the user is looking at.
|
|
65
|
+
*/
|
|
66
|
+
export async function awaitSvgReady(model, timeoutMs = SVG_READY_TIMEOUT_MS) {
|
|
67
|
+
// Only the bound is rewritten. A `svgReady` getter that throws rejects here
|
|
68
|
+
// too, and that error is the caller's answer, not a timeout.
|
|
69
|
+
await when(() => model.svgReady, { timeout: timeoutMs }).catch((e) => {
|
|
70
|
+
throw e instanceof Error && e.message === 'WHEN_TIMEOUT'
|
|
71
|
+
? new Error(`a display never became ready to export, after ${Math.round(timeoutMs / 60_000)} minutes. ` +
|
|
72
|
+
'Every wait here ends on data, an error or a cancel, so this is ' +
|
|
73
|
+
'none of the three: a gate that cannot converge. Pass a longer ' +
|
|
74
|
+
'timeoutMs if this export really does take longer than that.')
|
|
75
|
+
: e;
|
|
76
|
+
});
|
|
77
|
+
throwOnExportErrors([
|
|
78
|
+
model.error == null && model.fetchCanceled
|
|
79
|
+
? new Error('data loading was canceled — Retry the track, then export')
|
|
80
|
+
: model.error,
|
|
81
|
+
]);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* The view-level counterpart, for the wait every `renderToSvg` opens with:
|
|
85
|
+
* `whenViewSettled` in the export's own vocabulary. Why the bare
|
|
86
|
+
* `when(() => view.initialized)` it replaced could not fail — only hang — is
|
|
87
|
+
* documented there.
|
|
88
|
+
*
|
|
89
|
+
* Only a view that never initialized is fatal *here*. A track error on an
|
|
90
|
+
* initialized view is fatal too, but it is the displays' readiness waits that
|
|
91
|
+
* report it (`throwOnExportErrors`), after this one has let the export start.
|
|
92
|
+
*/
|
|
93
|
+
export async function awaitViewInitialized(view) {
|
|
94
|
+
if (!(await whenViewSettled(view))) {
|
|
95
|
+
// the wait only resolves on one of the two, so `error` is set here — and
|
|
96
|
+
// routing it through the shared thrower keeps one wording for "the export
|
|
97
|
+
// failed", whichever half of the export noticed
|
|
98
|
+
throwOnExportErrors([view.error]);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* How the export answers "a track failed": by failing. A track whose data won't
|
|
103
|
+
* load has its error caught by the fetch layer and stored on the display, so the
|
|
104
|
+
* render itself still returns — with that track blank.
|
|
105
|
+
*
|
|
106
|
+
* An export is a standalone artifact, so a failed track is fatal: the dialog
|
|
107
|
+
* shows its error banner and saves nothing, and a headless caller (jbrowse-img)
|
|
108
|
+
* exits nonzero instead of writing a broken image. Drawing the error into the
|
|
109
|
+
* figure instead costs more than the red rect it leaves in the picture: on a
|
|
110
|
+
* shared surface (dotplot plot rect, synteny band) the box covers the tracks
|
|
111
|
+
* that *did* render, and a snapshot regenerated while a display is broken
|
|
112
|
+
* absorbs the stack trace as expected output — which is how a real crash sat
|
|
113
|
+
* inside two committed goldens without turning anything red.
|
|
114
|
+
*
|
|
115
|
+
* `regionTooLarge` is deliberately not routed here — see `SvgChrome`.
|
|
116
|
+
*
|
|
117
|
+
* The failures are kept on the thrown error so that nesting one `awaitSvgRenders`
|
|
118
|
+
* inside another (synteny: rows of tracks *and* levels of ribbons) still reports
|
|
119
|
+
* every leaf rather than one per group.
|
|
120
|
+
*/
|
|
121
|
+
export function throwOnExportErrors(errors) {
|
|
122
|
+
const failed = errors.filter(e => e != null);
|
|
123
|
+
if (failed.length > 0) {
|
|
124
|
+
throw Object.assign(new Error(`Cannot export: ${failed.join('\n')}`, { cause: failed[0] }), { exportFailures: failed });
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* The individual failures behind one rejection: the list `throwOnExportErrors`
|
|
129
|
+
* attached, or the rejection itself for anything else (a body that threw, which
|
|
130
|
+
* is a failure the same way a 404 is).
|
|
131
|
+
*/
|
|
132
|
+
function leafFailures(error) {
|
|
133
|
+
return error !== null &&
|
|
134
|
+
typeof error === 'object' &&
|
|
135
|
+
'exportFailures' in error &&
|
|
136
|
+
Array.isArray(error.exportFailures)
|
|
137
|
+
? error.exportFailures
|
|
138
|
+
: [error];
|
|
139
|
+
}
|
|
140
|
+
async function settledOrThrow(renders) {
|
|
141
|
+
const settled = await Promise.allSettled(renders);
|
|
142
|
+
throwOnExportErrors(settled.flatMap(r => r.status === 'rejected' ? leafFailures(r.reason) : []));
|
|
143
|
+
return settled.flatMap(r => (r.status === 'fulfilled' ? [r.value] : []));
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* `Promise.all` for the renders a view fans out, differing in the one way an
|
|
147
|
+
* export needs: it fails with **every** failure instead of whichever rejected
|
|
148
|
+
* first. Exporting a session with three broken tracks should not mean finding
|
|
149
|
+
* the second one by fixing the first and exporting again. Nest it freely — an
|
|
150
|
+
* inner fan-out's failures are flattened into the outer one's report.
|
|
151
|
+
*
|
|
152
|
+
* That is also what lets every display await through the plain `awaitSvgReady`.
|
|
153
|
+
* A display on a shared surface (the dotplot's plot rect, a synteny level's
|
|
154
|
+
* band) has nowhere to draw an error and nothing complete to say alone; the
|
|
155
|
+
* alternative is for it to stay silent and let its view read the combined error
|
|
156
|
+
* back *after* the waits, which nothing enforces and every new shared-surface
|
|
157
|
+
* view has to rediscover. Here the display just throws, and being complete is
|
|
158
|
+
* the fan-out's job rather than the display's.
|
|
159
|
+
*/
|
|
160
|
+
export async function awaitSvgRenders(renders) {
|
|
161
|
+
// the mapped-tuple return type `Promise.all` also declares, and also can't
|
|
162
|
+
// produce from a value-level `map`. Past the throw inside, every entry is
|
|
163
|
+
// fulfilled, so the array really is that tuple.
|
|
164
|
+
return (await settledOrThrow(renders));
|
|
165
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { AnyConfigurationModel } from '../configuration/index.ts';
|
|
2
|
+
import type { NotificationSink, TrackCatalog } from '../util/index.ts';
|
|
3
|
+
/**
|
|
4
|
+
* The name an export writes for a track. HTML in a config's name is stripped
|
|
5
|
+
* before it is measured or drawn, so the reserved gutter matches the glyphs.
|
|
6
|
+
*
|
|
7
|
+
* In core rather than in the LGV plugin because the skip notification below has
|
|
8
|
+
* to name tracks the same way the labels do, and the views that need to send it
|
|
9
|
+
* are not all LGV-family — a circular view depends on neither.
|
|
10
|
+
*/
|
|
11
|
+
export declare function svgTrackName(track: {
|
|
12
|
+
configuration: AnyConfigurationModel;
|
|
13
|
+
}, session: TrackCatalog): string;
|
|
14
|
+
/**
|
|
15
|
+
* Tell the user which visible tracks the export left out, by default because
|
|
16
|
+
* their display type implements no `renderSvg`. Called once per reason per
|
|
17
|
+
* export, after the renders — the stacked views flatten every row's
|
|
18
|
+
* `skippedTracks` into one call rather than notifying per row.
|
|
19
|
+
*
|
|
20
|
+
* A track shown in several rows is named once.
|
|
21
|
+
*
|
|
22
|
+
* Skipping is deliberate (see `SvgExportTrack.renderSvg`), so this is
|
|
23
|
+
* informational rather than an error. But it is not silent: a figure that is
|
|
24
|
+
* quietly short a track is worse than one whose author was told why, and the
|
|
25
|
+
* reader of the file has no way to tell the difference afterwards.
|
|
26
|
+
*/
|
|
27
|
+
export declare function notifySkippedSvgTracks(session: NotificationSink & TrackCatalog, skipped: {
|
|
28
|
+
configuration: AnyConfigurationModel;
|
|
29
|
+
}[], reason?: string): void;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { coarseStripHTML } from '../util/index.js';
|
|
2
|
+
import { getTrackName } from '../util/tracks.js';
|
|
3
|
+
/**
|
|
4
|
+
* The name an export writes for a track. HTML in a config's name is stripped
|
|
5
|
+
* before it is measured or drawn, so the reserved gutter matches the glyphs.
|
|
6
|
+
*
|
|
7
|
+
* In core rather than in the LGV plugin because the skip notification below has
|
|
8
|
+
* to name tracks the same way the labels do, and the views that need to send it
|
|
9
|
+
* are not all LGV-family — a circular view depends on neither.
|
|
10
|
+
*/
|
|
11
|
+
export function svgTrackName(track, session) {
|
|
12
|
+
return coarseStripHTML(getTrackName(track.configuration, session));
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Tell the user which visible tracks the export left out, by default because
|
|
16
|
+
* their display type implements no `renderSvg`. Called once per reason per
|
|
17
|
+
* export, after the renders — the stacked views flatten every row's
|
|
18
|
+
* `skippedTracks` into one call rather than notifying per row.
|
|
19
|
+
*
|
|
20
|
+
* A track shown in several rows is named once.
|
|
21
|
+
*
|
|
22
|
+
* Skipping is deliberate (see `SvgExportTrack.renderSvg`), so this is
|
|
23
|
+
* informational rather than an error. But it is not silent: a figure that is
|
|
24
|
+
* quietly short a track is worse than one whose author was told why, and the
|
|
25
|
+
* reader of the file has no way to tell the difference afterwards.
|
|
26
|
+
*/
|
|
27
|
+
export function notifySkippedSvgTracks(session, skipped, reason) {
|
|
28
|
+
const names = [...new Set(skipped.map(t => svgTrackName(t, session)))];
|
|
29
|
+
if (names.length > 0) {
|
|
30
|
+
const why = reason ??
|
|
31
|
+
`${names.length === 1 ? 'Its display type does' : 'Their display types do'} not support SVG export.`;
|
|
32
|
+
session.notify(`Not included in the SVG: ${names.join(', ')}. ${why}`, 'info');
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ThemeOptions } from '@mui/material';
|
|
2
|
+
export declare function wrapSvgExport({ theme, width, height, margin, fontFamily, Wrapper, children, }: {
|
|
3
|
+
theme: ThemeOptions | undefined;
|
|
4
|
+
width: number;
|
|
5
|
+
height: number;
|
|
6
|
+
margin?: number;
|
|
7
|
+
fontFamily?: string;
|
|
8
|
+
Wrapper?: React.FC<{
|
|
9
|
+
children: React.ReactNode;
|
|
10
|
+
}>;
|
|
11
|
+
children: React.ReactNode;
|
|
12
|
+
}): string;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { SVGExportRoot } from './SvgExport.js';
|
|
3
|
+
import { SvgThemeProviders } from './SvgThemeProviders.js';
|
|
4
|
+
import { serializeSvg } from './serializeSvg.js';
|
|
5
|
+
// The identical tail every view's `renderToSvg` ends in: the export theme's
|
|
6
|
+
// providers, the caller-supplied Wrapper, the root <svg>, and serialization to
|
|
7
|
+
// a file's markup. Callers keep their own layout math and children.
|
|
8
|
+
export function wrapSvgExport({ theme, width, height, margin, fontFamily, Wrapper = ({ children }) => children, children, }) {
|
|
9
|
+
return serializeSvg(_jsx(SvgThemeProviders, { theme: theme, children: _jsx(Wrapper, { children: _jsx(SVGExportRoot, { width: width, height: height, margin: margin, fontFamily: fontFamily, children: children }) }) }));
|
|
10
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** A Link that acts as a button — no real navigation, just calls onClick. */
|
|
2
|
+
export default function ActionLink({ onClick, children, className, title, }: {
|
|
3
|
+
onClick: () => void;
|
|
4
|
+
children: React.ReactNode;
|
|
5
|
+
className?: string;
|
|
6
|
+
title?: string;
|
|
7
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Link } from '@mui/material';
|
|
3
|
+
/** A Link that acts as a button — no real navigation, just calls onClick. */
|
|
4
|
+
export default function ActionLink({ onClick, children, className, title, }) {
|
|
5
|
+
return (_jsx(Link, { href: "#", className: className, title: title, onClick: (e) => {
|
|
6
|
+
e.preventDefault();
|
|
7
|
+
onClick();
|
|
8
|
+
}, children: children }));
|
|
9
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { PluginDefinition } from '../pluginDefinitions.ts';
|
|
2
|
+
/**
|
|
3
|
+
* The "add a plugin by url" form, shared by every place a plugin can be
|
|
4
|
+
* installed from outside the store — the in-session plugin store widget and
|
|
5
|
+
* Desktop's global plugins dialog — so both mint the same definition shapes
|
|
6
|
+
* from the same fields.
|
|
7
|
+
*
|
|
8
|
+
* `onAdd` returns false to reject the definition and keep the dialog open (the
|
|
9
|
+
* plugin store rejects a name already installed).
|
|
10
|
+
*/
|
|
11
|
+
export default function AddCustomPluginDialog({ onClose, onAdd, }: {
|
|
12
|
+
onClose: () => void;
|
|
13
|
+
onAdd: (definition: PluginDefinition) => boolean;
|
|
14
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
|
|
4
|
+
import { Collapse, DialogContentText, IconButton, TextField, } from '@mui/material';
|
|
5
|
+
import { cx, makeStyles } from '../util/tss-react/index.js';
|
|
6
|
+
import SubmitDialog from './SubmitDialog.js';
|
|
7
|
+
const useStyles = makeStyles()({
|
|
8
|
+
dialogContent: {
|
|
9
|
+
display: 'flex',
|
|
10
|
+
flexDirection: 'column',
|
|
11
|
+
},
|
|
12
|
+
expand: {
|
|
13
|
+
transform: 'rotate(0deg)',
|
|
14
|
+
marginLeft: 'auto',
|
|
15
|
+
// Material's `shortest` duration and default easing, spelled out
|
|
16
|
+
transition: 'transform 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms',
|
|
17
|
+
},
|
|
18
|
+
expandOpen: {
|
|
19
|
+
transform: 'rotate(180deg)',
|
|
20
|
+
},
|
|
21
|
+
});
|
|
22
|
+
/**
|
|
23
|
+
* The "add a plugin by url" form, shared by every place a plugin can be
|
|
24
|
+
* installed from outside the store — the in-session plugin store widget and
|
|
25
|
+
* Desktop's global plugins dialog — so both mint the same definition shapes
|
|
26
|
+
* from the same fields.
|
|
27
|
+
*
|
|
28
|
+
* `onAdd` returns false to reject the definition and keep the dialog open (the
|
|
29
|
+
* plugin store rejects a name already installed).
|
|
30
|
+
*/
|
|
31
|
+
export default function AddCustomPluginDialog({ onClose, onAdd, }) {
|
|
32
|
+
const { classes } = useStyles();
|
|
33
|
+
const [umdPluginName, setUMDPluginName] = useState('');
|
|
34
|
+
const [umdPluginUrl, setUMDPluginUrl] = useState('');
|
|
35
|
+
const [esmPluginUrl, setESMPluginUrl] = useState('');
|
|
36
|
+
const [advancedOptionsOpen, setAdvancedOptionsOpen] = useState(false);
|
|
37
|
+
const ready = Boolean((umdPluginName && umdPluginUrl) || esmPluginUrl);
|
|
38
|
+
return (_jsx(SubmitDialog, { open: true, maxWidth: "sm", fullWidth: true, title: "Add custom plugin", submitDisabled: !ready, onCancel: onClose, onSubmit: () => {
|
|
39
|
+
const definition = umdPluginName && umdPluginUrl
|
|
40
|
+
? { name: umdPluginName, umdUrl: umdPluginUrl }
|
|
41
|
+
: { esmUrl: esmPluginUrl };
|
|
42
|
+
if (onAdd(definition)) {
|
|
43
|
+
onClose();
|
|
44
|
+
}
|
|
45
|
+
}, children: _jsxs("div", { className: classes.dialogContent, children: [_jsx(DialogContentText, { children: "Enter the name of the plugin and its URL. The name should match what is defined in the plugin's build." }), _jsx(TextField, { label: "Plugin name", variant: "outlined", fullWidth: true, margin: "dense", value: umdPluginName, onChange: event => {
|
|
46
|
+
setUMDPluginName(event.target.value);
|
|
47
|
+
} }), _jsx(TextField, { label: "Plugin URL", variant: "outlined", fullWidth: true, margin: "dense", value: umdPluginUrl, onChange: event => {
|
|
48
|
+
setUMDPluginUrl(event.target.value);
|
|
49
|
+
} }), _jsxs(DialogContentText, { onClick: () => {
|
|
50
|
+
setAdvancedOptionsOpen(!advancedOptionsOpen);
|
|
51
|
+
}, children: [_jsx(IconButton, { className: cx(classes.expand, {
|
|
52
|
+
[classes.expandOpen]: advancedOptionsOpen,
|
|
53
|
+
}), "aria-expanded": advancedOptionsOpen, "aria-label": "show more", children: _jsx(ExpandMoreIcon, {}) }), "Advanced options"] }), _jsx(Collapse, { in: advancedOptionsOpen, children: _jsxs("div", { className: classes.dialogContent, children: [_jsx(DialogContentText, { children: "The above fields assume that the plugin is built in UMD format. For an ESM build, enter its URL here instead; it carries its own name, so the fields above stay empty." }), _jsx(TextField, { label: "ESM build URL", variant: "outlined", fullWidth: true, margin: "dense", value: esmPluginUrl, onChange: event => {
|
|
54
|
+
setESMPluginUrl(event.target.value);
|
|
55
|
+
} })] }) })] }) }));
|
|
56
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { FormState } from '../util/assemblyConfigUtils.ts';
|
|
2
|
+
declare const AddGenomePane: ({ form, setForm, loading, onStageAnother, }: {
|
|
3
|
+
form: FormState;
|
|
4
|
+
setForm: (update: (prev: FormState) => FormState) => void;
|
|
5
|
+
loading?: string;
|
|
6
|
+
onStageAnother?: () => Promise<boolean>;
|
|
7
|
+
}) => import("react").JSX.Element;
|
|
8
|
+
export default AddGenomePane;
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import CheckCircleIcon from '@mui/icons-material/CheckCircle';
|
|
4
|
+
import ExpandLessIcon from '@mui/icons-material/ExpandLess';
|
|
5
|
+
import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
|
|
6
|
+
import { Alert, Button, Link, TextField, Typography } from '@mui/material';
|
|
7
|
+
import { observer } from 'mobx-react';
|
|
8
|
+
import { adapterHasSequence, applyClassifiedFiles, applyPrimaryFile, applyTwoBitFile, classifyLocations, clearSequenceFiles, formHasSequence, getMissingSidecars, isBlank, isFormReady, isSequenceRole, partitionExtraLocations, urlTextToLocations, } from '../util/assemblyConfigUtils.js';
|
|
9
|
+
import { getFileName } from '../util/getFileName.js';
|
|
10
|
+
import { fileToLocation } from '../util/index.js';
|
|
11
|
+
import { makeStyles } from '../util/tss-react/index.js';
|
|
12
|
+
import AdvancedOptions from './AdvancedOptions.js';
|
|
13
|
+
import FileDropZone from './FileDropZone.js';
|
|
14
|
+
import FileSelector from './FileSelector/FileSelector.js';
|
|
15
|
+
import { EmptySourceTypeProvider } from './FileSelector/emptySourceType.js';
|
|
16
|
+
import SequenceAdapterInputs from './SequenceAdapterInputs.js';
|
|
17
|
+
const shortAdapterLabels = {
|
|
18
|
+
IndexedFastaAdapter: 'Indexed FASTA',
|
|
19
|
+
BgzipFastaAdapter: 'Compressed FASTA',
|
|
20
|
+
FastaAdapter: 'FASTA',
|
|
21
|
+
TwoBitAdapter: '2bit',
|
|
22
|
+
ChromSizesAdapter: 'chrom.sizes, no sequence',
|
|
23
|
+
};
|
|
24
|
+
const useStyles = makeStyles()(theme => ({
|
|
25
|
+
intro: {
|
|
26
|
+
marginBottom: theme.spacing(1),
|
|
27
|
+
},
|
|
28
|
+
links: {
|
|
29
|
+
marginTop: theme.spacing(1),
|
|
30
|
+
display: 'flex',
|
|
31
|
+
gap: theme.spacing(2),
|
|
32
|
+
},
|
|
33
|
+
recognized: {
|
|
34
|
+
marginTop: theme.spacing(2),
|
|
35
|
+
},
|
|
36
|
+
recognizedRow: {
|
|
37
|
+
display: 'flex',
|
|
38
|
+
alignItems: 'center',
|
|
39
|
+
gap: theme.spacing(1),
|
|
40
|
+
},
|
|
41
|
+
check: {
|
|
42
|
+
color: theme.palette.success.main,
|
|
43
|
+
},
|
|
44
|
+
filename: {
|
|
45
|
+
flexGrow: 1,
|
|
46
|
+
},
|
|
47
|
+
muted: {
|
|
48
|
+
color: theme.palette.text.secondary,
|
|
49
|
+
},
|
|
50
|
+
name: {
|
|
51
|
+
marginTop: theme.spacing(2),
|
|
52
|
+
},
|
|
53
|
+
advanced: {
|
|
54
|
+
marginTop: theme.spacing(1),
|
|
55
|
+
},
|
|
56
|
+
extras: {
|
|
57
|
+
marginTop: theme.spacing(1),
|
|
58
|
+
color: theme.palette.text.secondary,
|
|
59
|
+
},
|
|
60
|
+
}));
|
|
61
|
+
// The "More options" expander revealing AdvancedOptions (display name, refName
|
|
62
|
+
// aliases, cytobands). Shared by the recognition card and the manual form so the
|
|
63
|
+
// optional extras always hide behind the same affordance.
|
|
64
|
+
const MoreOptions = observer(function MoreOptions({ form, setForm, showMore, setShowMore, }) {
|
|
65
|
+
const { classes } = useStyles();
|
|
66
|
+
return (_jsxs("div", { className: classes.advanced, children: [_jsx(Button, { variant: "text", size: "small", startIcon: showMore ? _jsx(ExpandLessIcon, {}) : _jsx(ExpandMoreIcon, {}), onClick: () => {
|
|
67
|
+
setShowMore(!showMore);
|
|
68
|
+
}, children: showMore ? 'Fewer options' : 'More options' }), showMore ? _jsx(AdvancedOptions, { form: form, setForm: setForm }) : null] }));
|
|
69
|
+
});
|
|
70
|
+
// A required index for the chosen adapter that the drop didn't include, so we
|
|
71
|
+
// give the user a place to point at it inline. Plain-FASTA auto-indexing has no
|
|
72
|
+
// required input, so it's surfaced as a caption by the caller instead.
|
|
73
|
+
const RequiredIndexInputs = observer(function RequiredIndexInputs({ form, setForm, onEdit, }) {
|
|
74
|
+
const { classes } = useStyles();
|
|
75
|
+
const missing = getMissingSidecars(form);
|
|
76
|
+
return missing.length ? (_jsxs("div", { className: classes.advanced, children: [_jsx(Alert, { severity: "warning", children: "This format needs its index file(s). Add them below." }), missing.map(({ field, label }) => (_jsx(FileSelector, { inline: true, name: label, location: form[field], setLocation: (loc) => {
|
|
77
|
+
onEdit(field);
|
|
78
|
+
setForm(f => ({ ...f, [field]: loc }));
|
|
79
|
+
} }, field)))] })) : null;
|
|
80
|
+
});
|
|
81
|
+
// The compact confirmation shown once a sequence is recognized: name (editable),
|
|
82
|
+
// a one-line summary of what was detected, and required index inputs. Everything
|
|
83
|
+
// else lives behind "More options".
|
|
84
|
+
const RecognitionCard = observer(function RecognitionCard({ form, setForm, onEdit, onChangeFile, showMore, setShowMore, }) {
|
|
85
|
+
const { classes } = useStyles();
|
|
86
|
+
const primaryLoc = isBlank(form.twoBitLocation)
|
|
87
|
+
? form.fastaLocation
|
|
88
|
+
: form.twoBitLocation;
|
|
89
|
+
const { used, unused } = partitionExtraLocations(form);
|
|
90
|
+
const autoIndex = form.adapterSelection === 'FastaAdapter';
|
|
91
|
+
return (_jsxs("div", { className: classes.recognized, children: [_jsxs("div", { className: classes.recognizedRow, children: [_jsx(CheckCircleIcon, { fontSize: "small", className: classes.check }), _jsxs(Typography, { variant: "body2", className: classes.filename, children: [_jsx("b", { children: getFileName(primaryLoc) }), _jsxs("span", { className: classes.muted, children: [' · ', shortAdapterLabels[form.adapterSelection]] })] }), _jsx(Link, { component: "button", type: "button", variant: "body2", onClick: () => {
|
|
92
|
+
onChangeFile();
|
|
93
|
+
}, children: "change" })] }), _jsx(TextField, { className: classes.name, label: "Genome name", variant: "outlined", size: "small", fullWidth: true, value: form.assemblyName, onChange: event => {
|
|
94
|
+
onEdit('assemblyName');
|
|
95
|
+
const { value } = event.target;
|
|
96
|
+
setForm(f => ({ ...f, assemblyName: value }));
|
|
97
|
+
}, slotProps: { htmlInput: { 'data-testid': 'assembly-name' } } }), used.length ? (_jsxs(Typography, { variant: "caption", component: "div", className: classes.extras, children: ["Also loading: ", used.map(loc => getFileName(loc)).join(', ')] })) : null, unused.length ? (_jsxs(Typography, { variant: "caption", component: "div", className: classes.extras, children: [shortAdapterLabels[form.adapterSelection], " does not use", ' ', unused.map(loc => getFileName(loc)).join(', '), ", so it will be ignored."] })) : null, autoIndex ? (_jsx(Typography, { variant: "caption", component: "div", className: classes.extras, children: "A FASTA index will be built on open (may take a minute for large or remote files)." })) : null, _jsx(RequiredIndexInputs, { form: form, setForm: setForm, onEdit: onEdit }), _jsx(MoreOptions, { form: form, setForm: setForm, showMore: showMore, setShowMore: setShowMore })] }));
|
|
98
|
+
});
|
|
99
|
+
// The escape hatch: pick the format and every file slot by hand, for assemblies
|
|
100
|
+
// whose filenames don't follow the conventions we auto-detect.
|
|
101
|
+
const ManualEntry = observer(function ManualEntry({ form, setForm, showMore, setShowMore, onBack, }) {
|
|
102
|
+
const { classes } = useStyles();
|
|
103
|
+
return (_jsxs(_Fragment, { children: [_jsx(TextField, { label: "Genome name", helperText: "The genome name e.g. hg38", variant: "outlined", fullWidth: true, value: form.assemblyName, onChange: event => {
|
|
104
|
+
const { value } = event.target;
|
|
105
|
+
setForm(f => ({ ...f, assemblyName: value }));
|
|
106
|
+
}, slotProps: { htmlInput: { 'data-testid': 'assembly-name' } } }), _jsx(SequenceAdapterInputs, { form: form, setForm: setForm, setPrimaryFile: (loc) => {
|
|
107
|
+
setForm(f => applyPrimaryFile(f, loc));
|
|
108
|
+
}, setTwoBitFile: (loc) => {
|
|
109
|
+
setForm(f => applyTwoBitFile(f, loc));
|
|
110
|
+
} }), _jsx(MoreOptions, { form: form, setForm: setForm, showMore: showMore, setShowMore: setShowMore }), _jsx("div", { className: classes.links, children: _jsx(Link, { component: "button", type: "button", variant: "body2", onClick: () => {
|
|
111
|
+
onBack();
|
|
112
|
+
}, children: "\u2190 Use automatic file detection" }) })] }));
|
|
113
|
+
});
|
|
114
|
+
// Where the files come from: a drop zone or a box of URLs, with a link to swap
|
|
115
|
+
// between them. It stays mounted for the whole flow, including after a sequence
|
|
116
|
+
// is recognized, so that more files can be added to the same genome — and so
|
|
117
|
+
// that the box someone is typing a URL into cannot be unmounted out from under
|
|
118
|
+
// them the moment a prefix of that URL looks like a FASTA.
|
|
119
|
+
const SourceInput = observer(function SourceInput({ source, setSource, urls, setUrls, hasSequence, onDropFiles, }) {
|
|
120
|
+
const { classes } = useStyles();
|
|
121
|
+
return (_jsxs(_Fragment, { children: [source === 'files' ? (_jsx(FileDropZone, { message: hasSequence
|
|
122
|
+
? 'Drop any other files for this genome here — index, refName aliases, cytobands'
|
|
123
|
+
: 'Drop your genome files here — FASTA, .fa.gz, or .2bit, plus any .fai/.gzi index — or click to browse', onDrop: onDropFiles })) : (_jsxs(_Fragment, { children: [_jsx(Typography, { variant: "body2", className: classes.intro, children: "Paste a URL to a sequence file (FASTA, .fa.gz, or .2bit) or a .chrom.sizes, plus any index files, one per line. We fill in the rest." }), _jsx(TextField, { variant: "outlined", placeholder: [
|
|
124
|
+
'https://example.com/hg38.fa.gz',
|
|
125
|
+
'https://example.com/hg38.fa.gz.fai',
|
|
126
|
+
'https://example.com/hg38.fa.gz.gzi',
|
|
127
|
+
].join('\n'), multiline: true, rows: 5, fullWidth: true, value: urls, onChange: event => {
|
|
128
|
+
setUrls(event.target.value);
|
|
129
|
+
}, slotProps: { htmlInput: { 'data-testid': 'genome-urls' } } })] })), _jsx("div", { className: classes.links, children: _jsx(Link, { component: "button", type: "button", variant: "body2", onClick: () => {
|
|
130
|
+
setSource(source === 'files' ? 'urls' : 'files');
|
|
131
|
+
}, children: source === 'files' ? 'Open from a URL' : 'Use local files' }) })] }));
|
|
132
|
+
});
|
|
133
|
+
// What the current file set says about itself: what couldn't be placed, whether
|
|
134
|
+
// it holds more than one genome, and what is still missing. Every file that
|
|
135
|
+
// arrives is accounted for in one of these — a set that silently produces no
|
|
136
|
+
// notice and no recognition card reads as a dead drop zone.
|
|
137
|
+
const FileNotices = observer(function FileNotices({ locations, hasSequence, canStageAnother, onEnterManually, }) {
|
|
138
|
+
const { classes } = useStyles();
|
|
139
|
+
const classified = classifyLocations(locations);
|
|
140
|
+
const placed = classified.filter(f => f.role).map(f => f.location);
|
|
141
|
+
const unrecognized = classified.filter(f => !f.role).map(f => f.location);
|
|
142
|
+
const sequences = classified.filter(f => isSequenceRole(f.role));
|
|
143
|
+
const primary = sequences.at(-1)?.location;
|
|
144
|
+
return (_jsxs(_Fragment, { children: [unrecognized.length ? (_jsxs(Alert, { severity: "warning", className: classes.intro, action: _jsx(Button, { color: "inherit", size: "small", onClick: onEnterManually, children: "Enter details manually" }), children: ["Couldn't place: ", unrecognized.map(loc => getFileName(loc)).join(', ')] })) : null, sequences.length > 1 && primary ? (_jsxs(Alert, { severity: "warning", className: classes.intro, children: ["This is more than one genome. The form holds one at a time, so only", ' ', getFileName(primary), " is being read", canStageAnother
|
|
145
|
+
? ' — open the rest one at a time with "Add another genome".'
|
|
146
|
+
: '.'] })) : null, !hasSequence && placed.length ? (_jsxs(Alert, { severity: "info", className: classes.intro, children: ["Got ", placed.map(loc => getFileName(loc)).join(', '), ". Add the sequence itself \u2014 a FASTA, .fa.gz, or .2bit \u2014 to go with it."] })) : null] }));
|
|
147
|
+
});
|
|
148
|
+
// What a sequence-free assembly costs, said where the choice is made rather
|
|
149
|
+
// than left for the empty track to imply. A .chrom.sizes is the right input for
|
|
150
|
+
// a whole-genome or synteny view and the wrong one for everything that reads a
|
|
151
|
+
// base, and the two are not obvious from the file itself.
|
|
152
|
+
const NoSequenceWarning = observer(function NoSequenceWarning() {
|
|
153
|
+
const { classes } = useStyles();
|
|
154
|
+
return (_jsxs(Alert, { severity: "warning", className: classes.intro, children: ["This genome will have no sequence \u2014 a ", _jsx("code", { children: ".chrom.sizes" }), " carries reference names and lengths and nothing else. The sequence track and GC content draw nothing, CRAM tracks cannot decode without the reference, and a feature's DNA or protein sequence is unavailable. Whole-genome and synteny views read no bases, which is what the format is for; open a FASTA or 2bit instead if you need any of the above."] }));
|
|
155
|
+
});
|
|
156
|
+
// Drop/paste a genome's files, auto-detect the format, and confirm. Falls back
|
|
157
|
+
// to a manual format picker when filenames don't match our conventions. Produces
|
|
158
|
+
// a FormState the caller turns into an assembly config (desktop indexes plain
|
|
159
|
+
// FASTA via faidx; web keeps it unindexed). Pass onStageAnother to allow queuing
|
|
160
|
+
// several genomes before submitting (desktop multi-assembly open).
|
|
161
|
+
const AddGenomePane = observer(function AddGenomePane({ form, setForm, loading = '', onStageAnother, }) {
|
|
162
|
+
const { classes } = useStyles();
|
|
163
|
+
const [source, setSource] = useState('files');
|
|
164
|
+
const [manual, setManual] = useState(false);
|
|
165
|
+
const [dropped, setDropped] = useState([]);
|
|
166
|
+
const [urls, setUrls] = useState('');
|
|
167
|
+
const [showMore, setShowMore] = useState(false);
|
|
168
|
+
// fields the user filled in themselves, which the file set does not overwrite
|
|
169
|
+
const [edited, setEdited] = useState(() => new Set());
|
|
170
|
+
const markEdited = (field) => {
|
|
171
|
+
setEdited(prev => new Set(prev).add(field));
|
|
172
|
+
};
|
|
173
|
+
const reclassify = (next, nextUrls) => {
|
|
174
|
+
setForm(f => applyClassifiedFiles(f, [...next, ...urlTextToLocations(nextUrls)], edited));
|
|
175
|
+
};
|
|
176
|
+
const all = [...dropped, ...urlTextToLocations(urls)];
|
|
177
|
+
const hasSequence = formHasSequence(form);
|
|
178
|
+
const resetInputs = () => {
|
|
179
|
+
setDropped([]);
|
|
180
|
+
setUrls('');
|
|
181
|
+
setEdited(new Set());
|
|
182
|
+
setShowMore(false);
|
|
183
|
+
};
|
|
184
|
+
// Swap the sequence file but keep the name/advanced fields the user entered.
|
|
185
|
+
// A hand-edited name stays marked so it survives the next drop; the sidecars
|
|
186
|
+
// do not, because clearSequenceFiles just blanked them and a mark would stop
|
|
187
|
+
// the replacement file set from filling them back in.
|
|
188
|
+
const changeFile = () => {
|
|
189
|
+
setForm(clearSequenceFiles);
|
|
190
|
+
setDropped([]);
|
|
191
|
+
setUrls('');
|
|
192
|
+
setShowMore(false);
|
|
193
|
+
setEdited(prev => new Set([...prev].filter(f => f === 'assemblyName')));
|
|
194
|
+
};
|
|
195
|
+
// The pane's inputs are cleared by the staging actually landing, not by the
|
|
196
|
+
// click: on desktop a plain FASTA is indexed first, which takes as long as it
|
|
197
|
+
// takes and can still fail on a name already in use. Clearing up front left
|
|
198
|
+
// the recognition card describing a genome whose files had vanished from the
|
|
199
|
+
// box, and erased anything typed while the index ran.
|
|
200
|
+
const stageAnother = async () => {
|
|
201
|
+
if (await onStageAnother?.()) {
|
|
202
|
+
resetInputs();
|
|
203
|
+
}
|
|
204
|
+
};
|
|
205
|
+
return (_jsxs(EmptySourceTypeProvider, { value: source === 'urls' ? 'url' : 'file', children: [adapterHasSequence(form.adapterSelection) ? null : _jsx(NoSequenceWarning, {}), manual ? (_jsx(ManualEntry, { form: form, setForm: setForm, showMore: showMore, setShowMore: setShowMore, onBack: () => {
|
|
206
|
+
setManual(false);
|
|
207
|
+
setShowMore(false);
|
|
208
|
+
} })) : (_jsxs(_Fragment, { children: [_jsx(SourceInput, { source: source, setSource: setSource, urls: urls, hasSequence: hasSequence, setUrls: value => {
|
|
209
|
+
setUrls(value);
|
|
210
|
+
reclassify(dropped, value);
|
|
211
|
+
}, onDropFiles: files => {
|
|
212
|
+
const next = [...dropped, ...files.map(f => fileToLocation(f))];
|
|
213
|
+
setDropped(next);
|
|
214
|
+
reclassify(next, urls);
|
|
215
|
+
} }), _jsx(FileNotices, { locations: all, hasSequence: hasSequence, canStageAnother: !!onStageAnother, onEnterManually: () => {
|
|
216
|
+
setManual(true);
|
|
217
|
+
setShowMore(false);
|
|
218
|
+
} }), hasSequence ? (_jsxs(_Fragment, { children: [_jsx(RecognitionCard, { form: form, setForm: setForm, onEdit: markEdited, onChangeFile: () => {
|
|
219
|
+
changeFile();
|
|
220
|
+
}, showMore: showMore, setShowMore: setShowMore }), onStageAnother ? (_jsx("div", { className: classes.links, children: _jsx(Button, { variant: "text", size: "small",
|
|
221
|
+
// the same gate the caller's submit button uses: staging a
|
|
222
|
+
// form the config builder will refuse only reports its
|
|
223
|
+
// internal "FASTA, FAI, and GZI locations are all required"
|
|
224
|
+
disabled: !!loading || !isFormReady(form), onClick: () => {
|
|
225
|
+
void stageAnother();
|
|
226
|
+
}, children: "Add another genome" }) })) : null] })) : null] }))] }));
|
|
227
|
+
});
|
|
228
|
+
export default AddGenomePane;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { FormState } from '../util/assemblyConfigUtils.ts';
|
|
2
|
+
declare const AdvancedOptions: ({ form, setForm, }: {
|
|
3
|
+
form: FormState;
|
|
4
|
+
setForm: (update: (prev: FormState) => FormState) => void;
|
|
5
|
+
}) => import("react").JSX.Element;
|
|
6
|
+
export default AdvancedOptions;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { TextField } from '@mui/material';
|
|
3
|
+
import { observer } from 'mobx-react';
|
|
4
|
+
import { makeSetField } from '../util/assemblyConfigUtils.js';
|
|
5
|
+
import FileSelector from './FileSelector/FileSelector.js';
|
|
6
|
+
// Display name plus the optional refName-aliases and cytobands files. Shared by
|
|
7
|
+
// every add-assembly surface (desktop Open genome dialog, in-app Assembly
|
|
8
|
+
// manager) behind a "More options" expander so it never adds to the up-front
|
|
9
|
+
// load.
|
|
10
|
+
const AdvancedOptions = observer(function AdvancedOptions({ form, setForm, }) {
|
|
11
|
+
const setField = makeSetField(setForm);
|
|
12
|
+
return (_jsxs(_Fragment, { children: [_jsx(TextField, { label: "Assembly display name", helperText: '(optional) A human readable display name e.g. "Homo sapiens (hg38)"', variant: "outlined", fullWidth: true, value: form.assemblyDisplayName, onChange: event => {
|
|
13
|
+
const { value } = event.target;
|
|
14
|
+
setForm(f => ({ ...f, assemblyDisplayName: value }));
|
|
15
|
+
} }), _jsx(FileSelector, { inline: true, name: "refName aliases", description: "Remap equivalent refNames (e.g. chr1 and 1). Tab-separated file such as a UCSC .chromAliases file.", location: form.refNameAliasesLocation, setLocation: setField('refNameAliasesLocation') }), _jsx(FileSelector, { inline: true, name: "Cytobands", description: "UCSC cytoBand.txt / cytoBandIdeo.txt format (.gz allowed).", location: form.cytobandsLocation, setLocation: setField('cytobandsLocation') })] }));
|
|
16
|
+
});
|
|
17
|
+
export default AdvancedOptions;
|
package/esm/ui/AppLogo.d.ts
CHANGED
package/esm/ui/AppLogo.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { observer } from 'mobx-react';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { readConfObject } from '../configuration/index.js';
|
|
4
|
+
import { LogoFull } from './Logo.js';
|
|
5
5
|
const Logo = observer(function Logo({ session, }) {
|
|
6
6
|
const { configuration } = session;
|
|
7
7
|
const logoPath = readConfObject(configuration, 'logoPath');
|