@jbrowse/core 4.3.0 → 5.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +822 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.d.ts +13 -3
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.js +33 -22
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.d.ts +8 -3
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.js +117 -19
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseAttributes.d.ts +2 -8
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseAttributes.js +4 -4
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCard.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCard.js +2 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCoreDetails.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCoreDetails.js +4 -4
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BasicValue.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BasicValue.js +12 -5
- package/esm/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.js +28 -17
- package/esm/BaseFeatureWidget/BaseFeatureDetail/DataGridDetails.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/DataGridDetails.js +19 -40
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.d.ts +6 -4
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.js +46 -30
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureWash.d.ts +20 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureWash.js +66 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldName.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldName.js +2 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Formatter.d.ts +3 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Formatter.js +17 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Position.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Position.js +3 -9
- package/esm/BaseFeatureWidget/BaseFeatureDetail/SimpleField.d.ts +3 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/SimpleField.js +3 -3
- package/esm/BaseFeatureWidget/BaseFeatureDetail/UriField.d.ts +3 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/UriField.js +7 -14
- package/esm/BaseFeatureWidget/BaseFeatureDetail/index.d.ts +2 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/index.js +19 -13
- package/esm/BaseFeatureWidget/BaseFeatureDetail/types.d.ts +5 -4
- package/esm/BaseFeatureWidget/BaseFeatureDetail/util.d.ts +8 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/util.js +32 -10
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceBody.d.ts +18 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceBody.js +10 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceContents.d.ts +7 -4
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceContents.js +62 -24
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureDetails.d.ts +10 -5
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureDetails.js +64 -41
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeaturePanel.d.ts +1 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeaturePanel.js +17 -8
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceLegend.d.ts +6 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceLegend.js +19 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceName.d.ts +5 -4
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceName.js +15 -18
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequencePanel.d.ts +1 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequencePanel.js +33 -17
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/consts.d.ts +3 -3
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/consts.js +7 -3
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/FeatureSequenceDialog.d.ts +11 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/FeatureSequenceDialog.js +29 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/HelpDialog.d.ts +1 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/HelpDialog.js +4 -6
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceDialog.d.ts +18 -6
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceDialog.js +11 -29
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceFeatureMenu.d.ts +9 -2
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceFeatureMenu.js +63 -58
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceTypeSelector.d.ts +7 -3
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceTypeSelector.js +38 -51
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SettingsDialog.d.ts +1 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SettingsDialog.js +19 -27
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/TranscriptSelector.d.ts +6 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/TranscriptSelector.js +18 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/featureTypeUtil.d.ts +12 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/featureTypeUtil.js +97 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/index.js +1 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/model.d.ts +50 -63
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/model.js +62 -59
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/panelAssemblyName.d.ts +21 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/panelAssemblyName.js +24 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDNASequence.d.ts +5 -3
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDNASequence.js +93 -75
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDSSequence.d.ts +1 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDSSequence.js +4 -11
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/GenomicSequence.d.ts +5 -2
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/GenomicSequence.js +21 -48
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/PlainSequence.d.ts +8 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/PlainSequence.js +20 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/ProteinSequence.d.ts +6 -3
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/ProteinSequence.js +33 -13
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/SequenceDisplay.d.ts +7 -4
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/SequenceDisplay.js +67 -11
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/renderSequenceSegments.d.ts +14 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/renderSequenceSegments.js +42 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/DLGAP3.d.ts +1 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/NCDN.d.ts +7 -7
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/types.d.ts +8 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/useSequenceData.d.ts +9 -9
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/useSequenceData.js +28 -44
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/useSequenceFetch.d.ts +23 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/useSequenceFetch.js +31 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/util.d.ts +90 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/util.js +145 -23
- package/esm/BaseFeatureWidget/configSchema.js +1 -1
- package/esm/BaseFeatureWidget/formatDetails.d.ts +38 -0
- package/esm/BaseFeatureWidget/formatDetails.js +103 -0
- package/esm/BaseFeatureWidget/index.d.ts +3 -1
- package/esm/BaseFeatureWidget/index.js +2 -2
- package/esm/BaseFeatureWidget/stateModelFactory.d.ts +80 -62
- package/esm/BaseFeatureWidget/stateModelFactory.js +128 -29
- package/esm/BaseFeatureWidget/types.d.ts +4 -3
- package/esm/BaseFeatureWidget/util.d.ts +4 -29
- package/esm/BaseFeatureWidget/util.js +20 -84
- package/esm/CorePlugin.js +11 -6
- package/esm/PhasedScheduler.d.ts +4 -2
- package/esm/PhasedScheduler.js +18 -2
- package/esm/Plugin.d.ts +6 -1
- package/esm/Plugin.js +7 -0
- package/esm/PluginLoader.d.ts +41 -40
- package/esm/PluginLoader.js +206 -78
- package/esm/PluginManager.d.ts +421 -55
- package/esm/PluginManager.js +461 -89
- package/esm/ReExports/BaseFeatureDetails.js +7 -6
- package/esm/ReExports/MuiDataGridReExports.d.ts +2 -2
- package/esm/ReExports/MuiDataGridReExports.js +58 -130
- package/esm/ReExports/MuiReExports.d.ts +3 -134
- package/esm/ReExports/MuiReExports.js +43 -16
- package/esm/ReExports/MuiStylesReExports.d.ts +66 -0
- package/esm/ReExports/MuiStylesReExports.js +55 -0
- package/esm/ReExports/index.js +1 -1
- package/esm/ReExports/lazify.d.ts +2 -2
- package/esm/ReExports/lazify.js +16 -3
- package/esm/ReExports/list.js +54 -229
- package/esm/ReExports/modules.js +62 -93
- package/esm/ReExports/muiComponentNames.d.ts +18 -0
- package/esm/ReExports/muiComponentNames.js +130 -0
- package/esm/ReExports/publicUtil.d.ts +1 -0
- package/esm/ReExports/publicUtil.js +28 -0
- package/esm/ReExports/registry.d.ts +2 -0
- package/esm/ReExports/registry.js +28 -0
- package/esm/ReExports/sharedModules.d.ts +96 -0
- package/esm/ReExports/sharedModules.js +59 -0
- package/esm/ReExports/uiStub.d.ts +1 -0
- package/esm/ReExports/uiStub.js +13 -0
- package/esm/ReExports/workerModules.d.ts +2 -0
- package/esm/ReExports/workerModules.js +10 -0
- package/esm/TextSearch/BaseResults.d.ts +20 -21
- package/esm/TextSearch/BaseResults.js +8 -33
- package/esm/TextSearch/TextSearchManager.d.ts +14 -34
- package/esm/TextSearch/TextSearchManager.js +87 -34
- package/esm/assemblyManager/assembly.d.ts +307 -34
- package/esm/assemblyManager/assembly.js +551 -262
- package/esm/assemblyManager/assemblyAdapters.d.ts +12 -0
- package/esm/assemblyManager/assemblyAdapters.js +18 -0
- package/esm/assemblyManager/assemblyConfigSchema.d.ts +192 -17
- package/esm/assemblyManager/assemblyConfigSchema.js +213 -19
- package/esm/assemblyManager/assemblyManager.d.ts +711 -303
- package/esm/assemblyManager/assemblyManager.js +351 -46
- package/esm/assemblyManager/expandAssemblyConfigShorthand.d.ts +32 -0
- package/esm/assemblyManager/expandAssemblyConfigShorthand.js +85 -0
- package/esm/assemblyManager/geneticCodes.d.ts +21 -0
- package/esm/assemblyManager/geneticCodes.js +47 -0
- package/esm/assemblyManager/getSequenceAdapterConfig.d.ts +9 -0
- package/esm/assemblyManager/getSequenceAdapterConfig.js +12 -0
- package/esm/assemblyManager/index.d.ts +1 -1
- package/esm/assemblyManager/index.js +2 -2
- package/esm/assemblyManager/loadRefNameMap.d.ts +5 -0
- package/esm/assemblyManager/loadRefNameMap.js +80 -0
- package/esm/assemblyManager/refNameColors.d.ts +1 -0
- package/esm/assemblyManager/refNameColors.js +32 -0
- package/esm/assemblyManager/refNameMaps.d.ts +26 -0
- package/esm/assemblyManager/refNameMaps.js +87 -0
- package/esm/assemblyManager/refNameMismatch.d.ts +54 -0
- package/esm/assemblyManager/refNameMismatch.js +66 -0
- package/esm/checkPlugins.d.ts +11 -0
- package/esm/checkPlugins.js +77 -0
- package/esm/configuration/configurationSchema.d.ts +122 -20
- package/esm/configuration/configurationSchema.js +374 -140
- package/esm/configuration/configurationSlot.d.ts +283 -30
- package/esm/configuration/configurationSlot.js +205 -226
- package/esm/configuration/formatAboutConfigSchema.d.ts +55 -0
- package/esm/configuration/formatAboutConfigSchema.js +58 -0
- package/esm/configuration/formatDetailsConfigSchema.d.ts +80 -0
- package/esm/configuration/formatDetailsConfigSchema.js +90 -0
- package/esm/configuration/fullConfSnapshot.d.ts +28 -0
- package/esm/configuration/fullConfSnapshot.js +66 -0
- package/esm/configuration/getConf.d.ts +88 -0
- package/esm/configuration/getConf.js +74 -0
- package/esm/configuration/index.d.ts +19 -3
- package/esm/configuration/index.js +19 -2
- package/esm/configuration/mergeFormatCallbacks.d.ts +15 -0
- package/esm/configuration/mergeFormatCallbacks.js +24 -0
- package/esm/configuration/promotableDefaults.d.ts +199 -0
- package/esm/configuration/promotableDefaults.js +332 -0
- package/esm/configuration/promotablePin.d.ts +55 -0
- package/esm/configuration/promotableResolve.d.ts +108 -0
- package/esm/configuration/promotableResolve.js +117 -0
- package/esm/configuration/promotableSlots.d.ts +12 -0
- package/esm/configuration/promotableSlots.js +45 -0
- package/esm/configuration/readConfObject.d.ts +56 -0
- package/esm/configuration/readConfObject.js +161 -0
- package/esm/configuration/schemaRegistry.d.ts +35 -0
- package/esm/configuration/schemaRegistry.js +50 -0
- package/esm/configuration/schemaTypes.d.ts +23 -0
- package/esm/configuration/schemaTypes.js +94 -0
- package/esm/configuration/slotFacade.d.ts +82 -0
- package/esm/configuration/slotFacade.js +89 -0
- package/esm/configuration/slotShape.d.ts +12 -0
- package/esm/configuration/slotShape.js +84 -0
- package/esm/configuration/slotValueUtils.d.ts +17 -0
- package/esm/configuration/slotValueUtils.js +25 -0
- package/esm/configuration/tabixIndexFields.d.ts +44 -0
- package/esm/configuration/tabixIndexFields.js +45 -0
- package/esm/configuration/tabixShorthand.d.ts +34 -0
- package/esm/configuration/tabixShorthand.js +45 -0
- package/esm/configuration/types.d.ts +170 -7
- package/esm/data_adapters/BaseAdapter/BaseAdapter.d.ts +24 -10
- package/esm/data_adapters/BaseAdapter/BaseAdapter.js +23 -15
- package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.d.ts +132 -7
- package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.js +136 -25
- package/esm/data_adapters/BaseAdapter/BaseRefNameAliasAdapter.d.ts +1 -0
- package/esm/data_adapters/BaseAdapter/BaseSequenceAdapter.d.ts +13 -5
- package/esm/data_adapters/BaseAdapter/BaseSequenceAdapter.js +9 -7
- package/esm/data_adapters/BaseAdapter/BaseTextSearchAdapter.d.ts +2 -1
- package/esm/data_adapters/BaseAdapter/CytobandAdapter.d.ts +7 -0
- package/esm/data_adapters/BaseAdapter/RegionsAdapter.d.ts +2 -1
- package/esm/data_adapters/BaseAdapter/featureDensity.d.ts +29 -0
- package/esm/data_adapters/BaseAdapter/featureDensity.js +17 -0
- package/esm/data_adapters/BaseAdapter/getAdapterId.d.ts +2 -0
- package/esm/data_adapters/BaseAdapter/getAdapterId.js +9 -0
- package/esm/data_adapters/BaseAdapter/index.d.ts +7 -4
- package/esm/data_adapters/BaseAdapter/index.js +6 -5
- package/esm/data_adapters/BaseAdapter/stats.d.ts +37 -5
- package/esm/data_adapters/BaseAdapter/stats.js +89 -24
- package/esm/data_adapters/BaseAdapter/types.d.ts +11 -8
- package/esm/data_adapters/BaseAdapter/types.js +1 -0
- package/esm/data_adapters/BaseAdapter/util.d.ts +5 -1
- package/esm/data_adapters/BaseAdapter/util.js +14 -3
- package/esm/data_adapters/CytobandAdapter/CytobandAdapter.d.ts +1 -1
- package/esm/data_adapters/CytobandAdapter/CytobandAdapter.js +4 -4
- package/esm/data_adapters/CytobandAdapter/configSchema.d.ts +36 -4
- package/esm/data_adapters/CytobandAdapter/configSchema.js +46 -2
- package/esm/data_adapters/CytobandAdapter/index.js +3 -3
- package/esm/data_adapters/adapterSessionRefcount.d.ts +61 -0
- package/esm/data_adapters/adapterSessionRefcount.js +96 -0
- package/esm/data_adapters/dataAdapterCache.d.ts +35 -1
- package/esm/data_adapters/dataAdapterCache.js +62 -22
- package/esm/data_adapters/getFeatureAdapter.d.ts +22 -0
- package/esm/data_adapters/getFeatureAdapter.js +27 -0
- package/esm/data_adapters/getSequenceSubAdapter.d.ts +21 -0
- package/esm/data_adapters/getSequenceSubAdapter.js +44 -0
- package/esm/pluggableElementTypes/AdapterType.d.ts +52 -2
- package/esm/pluggableElementTypes/AdapterType.js +44 -5
- package/esm/pluggableElementTypes/AddTrackWorkflowType.d.ts +6 -1
- package/esm/pluggableElementTypes/AddTrackWorkflowType.js +3 -1
- package/esm/pluggableElementTypes/ConnectionType.d.ts +5 -5
- package/esm/pluggableElementTypes/ConnectionType.js +1 -1
- package/esm/pluggableElementTypes/DisplayType.d.ts +19 -10
- package/esm/pluggableElementTypes/DisplayType.js +53 -5
- package/esm/pluggableElementTypes/InternetAccountType.js +1 -1
- package/esm/pluggableElementTypes/PluggableElementBase.d.ts +13 -0
- package/esm/pluggableElementTypes/PluggableElementBase.js +13 -0
- package/esm/pluggableElementTypes/RpcMethodType.d.ts +132 -12
- package/esm/pluggableElementTypes/RpcMethodType.js +263 -98
- package/esm/pluggableElementTypes/RpcMethodTypeWithFiltersAndRenameRegions.d.ts +19 -9
- package/esm/pluggableElementTypes/RpcMethodTypeWithFiltersAndRenameRegions.js +26 -20
- package/esm/pluggableElementTypes/RpcMethodTypeWithRenameRegion.d.ts +5 -0
- package/esm/pluggableElementTypes/RpcMethodTypeWithRenameRegion.js +18 -0
- package/esm/pluggableElementTypes/RpcMethodTypeWithRenameRegions.d.ts +5 -0
- package/esm/pluggableElementTypes/RpcMethodTypeWithRenameRegions.js +10 -0
- package/esm/pluggableElementTypes/TextSearchAdapterType.d.ts +3 -3
- package/esm/pluggableElementTypes/TextSearchAdapterType.js +3 -1
- package/esm/pluggableElementTypes/TrackType.d.ts +2 -1
- package/esm/pluggableElementTypes/TrackType.js +1 -1
- package/esm/pluggableElementTypes/ViewType.d.ts +27 -3
- package/esm/pluggableElementTypes/ViewType.js +84 -4
- package/esm/pluggableElementTypes/WidgetType.d.ts +2 -2
- package/esm/pluggableElementTypes/WidgetType.js +1 -1
- package/esm/pluggableElementTypes/addMenuItems.d.ts +87 -0
- package/esm/pluggableElementTypes/addMenuItems.js +82 -0
- package/esm/pluggableElementTypes/extendElementType.d.ts +30 -0
- package/esm/pluggableElementTypes/extendElementType.js +73 -0
- package/esm/pluggableElementTypes/index.d.ts +7 -7
- package/esm/pluggableElementTypes/index.js +24 -14
- package/esm/pluggableElementTypes/models/BaseConnectionModelFactory.d.ts +70 -15
- package/esm/pluggableElementTypes/models/BaseConnectionModelFactory.js +90 -10
- package/esm/pluggableElementTypes/models/BaseDisplayModel.d.ts +646 -84
- package/esm/pluggableElementTypes/models/BaseDisplayModel.js +241 -60
- package/esm/pluggableElementTypes/models/BaseTrackModel.d.ts +216 -35
- package/esm/pluggableElementTypes/models/BaseTrackModel.js +365 -83
- package/esm/pluggableElementTypes/models/BaseViewModel.d.ts +216 -16
- package/esm/pluggableElementTypes/models/BaseViewModel.js +150 -16
- package/esm/pluggableElementTypes/models/HighlightsMixin.d.ts +51 -0
- package/esm/pluggableElementTypes/models/HighlightsMixin.js +78 -0
- package/esm/pluggableElementTypes/models/InternetAccountModel.d.ts +163 -29
- package/esm/pluggableElementTypes/models/InternetAccountModel.js +218 -48
- package/esm/pluggableElementTypes/models/assertDisplayContract.d.ts +177 -0
- package/esm/pluggableElementTypes/models/assertDisplayContract.js +239 -0
- package/esm/pluggableElementTypes/models/baseConnectionConfig.d.ts +22 -8
- package/esm/pluggableElementTypes/models/baseConnectionConfig.js +18 -2
- package/esm/pluggableElementTypes/models/baseInternetAccountConfig.d.ts +39 -20
- package/esm/pluggableElementTypes/models/baseInternetAccountConfig.js +23 -2
- package/esm/pluggableElementTypes/models/baseTrackConfig.d.ts +181 -65
- package/esm/pluggableElementTypes/models/baseTrackConfig.js +191 -89
- package/esm/pluggableElementTypes/models/components/SaveTrackData.d.ts +3 -8
- package/esm/pluggableElementTypes/models/components/SaveTrackData.js +113 -139
- package/esm/pluggableElementTypes/models/components/fetchTrackData.d.ts +55 -0
- package/esm/pluggableElementTypes/models/components/fetchTrackData.js +83 -0
- package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.d.ts +40 -0
- package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.js +115 -0
- package/esm/pluggableElementTypes/models/index.d.ts +6 -3
- package/esm/pluggableElementTypes/models/index.js +10 -8
- package/esm/pluggableElementTypes/models/migrateTrackConfig.d.ts +34 -0
- package/esm/pluggableElementTypes/models/migrateTrackConfig.js +54 -0
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/bed.js +75 -7
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.d.ts +9 -3
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.js +153 -103
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/gff3.d.ts +6 -1
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/gff3.js +70 -74
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/types.d.ts +9 -1
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/util.d.ts +21 -0
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/util.js +51 -0
- package/esm/pluggableElementTypes/models/uriMatchesDomains.d.ts +29 -0
- package/esm/pluggableElementTypes/models/uriMatchesDomains.js +62 -0
- package/esm/pluggableElementTypes/renderers/util/serializableFilterChain.d.ts +5 -4
- package/esm/pluggableElementTypes/renderers/util/serializableFilterChain.js +20 -10
- package/esm/pluginDefinitions.d.ts +198 -0
- package/esm/pluginDefinitions.js +220 -0
- package/esm/rpc/BaseRpcDriver.d.ts +27 -35
- package/esm/rpc/BaseRpcDriver.js +74 -107
- package/esm/rpc/MainThreadRpcDriver.d.ts +9 -10
- package/esm/rpc/MainThreadRpcDriver.js +18 -29
- package/esm/rpc/RpcClient.d.ts +38 -0
- package/esm/rpc/RpcClient.js +154 -0
- package/esm/rpc/RpcManager.d.ts +116 -27
- package/esm/rpc/RpcManager.js +177 -50
- package/esm/rpc/RpcRegistry.d.ts +275 -0
- package/esm/rpc/RpcRegistry.js +1 -0
- package/esm/rpc/RpcServer.d.ts +41 -0
- package/esm/rpc/RpcServer.js +235 -0
- package/esm/rpc/WebWorkerRpcDriver.d.ts +71 -24
- package/esm/rpc/WebWorkerRpcDriver.js +312 -27
- package/esm/rpc/byteBudget.d.ts +58 -0
- package/esm/rpc/byteBudget.js +50 -0
- package/esm/rpc/configSchema.d.ts +27 -5
- package/esm/rpc/configSchema.js +40 -16
- package/esm/rpc/coreRpcMethods.d.ts +3 -5
- package/esm/rpc/coreRpcMethods.js +10 -12
- package/esm/rpc/explainTransferError.d.ts +35 -0
- package/esm/rpc/explainTransferError.js +158 -0
- package/esm/rpc/methods/CoreFreeResources.d.ts +19 -4
- package/esm/rpc/methods/CoreFreeResources.js +17 -6
- package/esm/rpc/methods/CoreGetExportData.d.ts +5 -18
- package/esm/rpc/methods/CoreGetExportData.js +26 -15
- package/esm/rpc/methods/CoreGetFeatureDensity.d.ts +11 -0
- package/esm/rpc/methods/CoreGetFeatureDensity.js +22 -0
- package/esm/rpc/methods/CoreGetFeatures.d.ts +6 -15
- package/esm/rpc/methods/CoreGetFeatures.js +15 -17
- package/esm/rpc/methods/CoreGetInfo.d.ts +6 -0
- package/esm/rpc/methods/CoreGetInfo.js +12 -0
- package/esm/rpc/methods/CoreGetMetadata.d.ts +4 -7
- package/esm/rpc/methods/CoreGetMetadata.js +6 -9
- package/esm/rpc/methods/CoreGetRefNames.d.ts +4 -8
- package/esm/rpc/methods/CoreGetRefNames.js +24 -13
- package/esm/rpc/methods/CoreGetRegionByteEstimate.d.ts +6 -0
- package/esm/rpc/methods/CoreGetRegionByteEstimate.js +19 -0
- package/esm/rpc/methods/CoreGetRegions.d.ts +4 -6
- package/esm/rpc/methods/CoreGetRegions.js +6 -9
- package/esm/rpc/methods/CoreGetSequence.d.ts +4 -11
- package/esm/rpc/methods/CoreGetSequence.js +12 -13
- package/esm/rpc/serializeError/index.d.ts +9 -0
- package/esm/rpc/serializeError/index.js +86 -0
- package/esm/svg/SvgExport.d.ts +30 -0
- package/esm/svg/SvgExport.js +53 -0
- package/esm/svg/constants.d.ts +1 -0
- package/esm/svg/constants.js +5 -0
- package/esm/svg/saveSvgAsImage.d.ts +6 -0
- package/esm/svg/saveSvgAsImage.js +90 -0
- package/esm/svg/svgId.d.ts +42 -0
- package/esm/svg/svgId.js +84 -0
- package/esm/svg/svgReady.d.ts +137 -0
- package/esm/svg/svgReady.js +164 -0
- package/esm/svg/trackNames.d.ts +27 -0
- package/esm/svg/trackNames.js +31 -0
- package/esm/svg/wrapSvgExport.d.ts +12 -0
- package/esm/svg/wrapSvgExport.js +78 -0
- package/esm/ui/ActionLink.d.ts +7 -0
- package/esm/ui/ActionLink.js +9 -0
- package/esm/ui/AddCustomPluginDialog.d.ts +14 -0
- package/esm/ui/AddCustomPluginDialog.js +61 -0
- package/esm/ui/AddGenomePane.d.ts +8 -0
- package/esm/ui/AddGenomePane.js +228 -0
- package/esm/ui/AdvancedOptions.d.ts +6 -0
- package/esm/ui/AdvancedOptions.js +17 -0
- package/esm/ui/AppLogo.d.ts +1 -1
- package/esm/ui/AppLogo.js +2 -2
- package/esm/ui/AssemblySelector.d.ts +5 -8
- package/esm/ui/AssemblySelector.js +8 -26
- package/esm/ui/BaseExportSvgDialog.d.ts +16 -0
- package/esm/ui/BaseExportSvgDialog.js +84 -0
- package/esm/ui/BaseTooltip.d.ts +14 -3
- package/esm/ui/BaseTooltip.js +151 -34
- package/esm/ui/CascadingMenu.d.ts +9 -18
- package/esm/ui/CascadingMenu.js +390 -41
- package/esm/ui/CascadingMenuButton.d.ts +9 -11
- package/esm/ui/CascadingMenuButton.js +36 -18
- package/esm/ui/CascadingMenuHelpDialog.d.ts +2 -2
- package/esm/ui/CascadingMenuHelpDialog.js +4 -5
- package/esm/ui/CascadingMenuHelpIconButton.d.ts +2 -1
- package/esm/ui/CascadingMenuHelpIconButton.js +18 -9
- package/esm/ui/ColorPicker.d.ts +6 -9
- package/esm/ui/ColorPicker.js +36 -39
- package/esm/ui/ConfirmDialog.d.ts +2 -9
- package/esm/ui/ConfirmDialog.js +6 -9
- package/esm/ui/ContextMenu.d.ts +50 -0
- package/esm/ui/ContextMenu.js +55 -0
- package/esm/ui/CopyToClipboardButton.d.ts +10 -0
- package/esm/ui/CopyToClipboardButton.js +14 -0
- package/esm/ui/Crosshairs.d.ts +10 -0
- package/esm/ui/Crosshairs.js +15 -0
- package/esm/ui/DOMPurifySanitizedHTML.d.ts +1 -1
- package/esm/ui/DOMPurifySanitizedHTML.js +5 -5
- package/esm/ui/DataGridFlexContainer.d.ts +9 -2
- package/esm/ui/DataGridFlexContainer.js +4 -3
- package/esm/ui/Dialog.d.ts +5 -2
- package/esm/ui/Dialog.js +35 -27
- package/esm/ui/DraggableDialog.d.ts +3 -3
- package/esm/ui/DraggableDialog.js +50 -12
- package/esm/ui/DropDownMenu.d.ts +4 -2
- package/esm/ui/DropDownMenu.js +4 -4
- package/esm/ui/EditableTypography.d.ts +3 -1
- package/esm/ui/EditableTypography.js +34 -26
- package/esm/ui/ErrorActions.d.ts +24 -0
- package/esm/ui/ErrorActions.js +20 -0
- package/esm/ui/ErrorBanner.d.ts +7 -0
- package/esm/ui/ErrorBanner.js +35 -0
- package/esm/ui/ErrorBar.d.ts +6 -0
- package/esm/ui/ErrorBar.js +35 -0
- package/esm/ui/ErrorBoundary.d.ts +29 -5
- package/esm/ui/ErrorBoundary.js +32 -2
- package/esm/ui/ErrorMessage.d.ts +2 -4
- package/esm/ui/ErrorMessage.js +17 -52
- package/esm/ui/ErrorMessageStackTraceContents.d.ts +1 -1
- package/esm/ui/ErrorMessageStackTraceContents.js +3 -3
- package/esm/ui/ErrorMessageStackTraceDialog.d.ts +1 -1
- package/esm/ui/ErrorMessageStackTraceDialog.js +57 -96
- package/esm/ui/ErrorOverlay.d.ts +8 -0
- package/esm/ui/ErrorOverlay.js +5 -0
- package/esm/ui/ExportSvgDialog.d.ts +7 -0
- package/esm/ui/ExportSvgDialog.js +9 -0
- package/esm/ui/ExternalLink.d.ts +1 -1
- package/esm/ui/FactoryResetDialog.d.ts +1 -1
- package/esm/ui/FactoryResetDialog.js +6 -15
- package/esm/ui/FatalErrorDialog.d.ts +3 -2
- package/esm/ui/FatalErrorDialog.js +6 -5
- package/esm/ui/FileDropZone.d.ts +25 -0
- package/esm/ui/FileDropZone.js +128 -0
- package/esm/ui/FileSelector/FileSelector.d.ts +1 -1
- package/esm/ui/FileSelector/FileSelector.js +59 -30
- package/esm/ui/FileSelector/LocalFileChooser.d.ts +7 -2
- package/esm/ui/FileSelector/LocalFileChooser.js +61 -47
- package/esm/ui/FileSelector/LocationInput.d.ts +1 -1
- package/esm/ui/FileSelector/LocationInput.js +8 -12
- package/esm/ui/FileSelector/SourceTypeSelector.d.ts +5 -5
- package/esm/ui/FileSelector/SourceTypeSelector.js +9 -7
- package/esm/ui/FileSelector/UrlChooser.d.ts +1 -1
- package/esm/ui/FileSelector/UrlChooser.js +26 -2
- package/esm/ui/FileSelector/emptySourceType.d.ts +2 -0
- package/esm/ui/FileSelector/emptySourceType.js +14 -0
- package/esm/ui/FileSelector/useInternetAccounts.d.ts +383 -71
- package/esm/ui/FileSelector/useInternetAccounts.js +13 -6
- package/esm/ui/FileSelector/util.d.ts +58 -3
- package/esm/ui/FileSelector/util.js +128 -11
- package/esm/ui/GpuFallbackButton.d.ts +12 -0
- package/esm/ui/GpuFallbackButton.js +20 -0
- package/esm/ui/HoverMenu.d.ts +12 -3
- package/esm/ui/HoverMenu.js +31 -9
- package/esm/ui/HoverTooltip.d.ts +27 -0
- package/esm/ui/HoverTooltip.js +24 -0
- package/esm/ui/Icons.d.ts +6 -4
- package/esm/ui/Icons.js +9 -0
- package/esm/ui/InfoDialog.d.ts +7 -0
- package/esm/ui/InfoDialog.js +16 -0
- package/esm/ui/InlineMenuControls.d.ts +6 -0
- package/esm/ui/InlineMenuControls.js +17 -0
- package/esm/ui/JexlFilterDialog.d.ts +23 -0
- package/esm/ui/JexlFilterDialog.js +94 -0
- package/esm/ui/LabeledCheckbox.d.ts +9 -0
- package/esm/ui/LabeledCheckbox.js +7 -0
- package/esm/ui/LegendSwatchGlyph.d.ts +7 -0
- package/esm/ui/LegendSwatchGlyph.js +25 -0
- package/esm/ui/LoadingDots.d.ts +1 -0
- package/esm/ui/LoadingDots.js +30 -0
- package/esm/ui/LoadingEllipses.d.ts +17 -1
- package/esm/ui/LoadingEllipses.js +20 -29
- package/esm/ui/LoadingOverlay.d.ts +23 -0
- package/esm/ui/LoadingOverlay.js +137 -0
- package/esm/ui/LoadingProgress.d.ts +16 -0
- package/esm/ui/LoadingProgress.js +16 -0
- package/esm/ui/Logo.d.ts +2 -2
- package/esm/ui/Logo.js +23 -24
- package/esm/ui/Menu.js +1 -1
- package/esm/ui/MenuItemChevron.d.ts +3 -0
- package/esm/ui/MenuItemChevron.js +19 -0
- package/esm/ui/MenuItemEndDecoration.d.ts +4 -0
- package/esm/ui/MenuItemEndDecoration.js +28 -0
- package/esm/ui/MenuItemTrailing.d.ts +12 -0
- package/esm/ui/MenuItemTrailing.js +42 -0
- package/esm/ui/MenuTypes.d.ts +134 -5
- package/esm/ui/MenuTypes.js +16 -1
- package/esm/ui/MonospaceTextField.d.ts +9 -0
- package/esm/ui/MonospaceTextField.js +37 -0
- package/esm/ui/NumberTextField.d.ts +31 -0
- package/esm/ui/NumberTextField.js +33 -0
- package/esm/ui/PaletteContext.d.ts +92 -0
- package/esm/ui/PaletteContext.js +133 -0
- package/esm/ui/PinAdornment.d.ts +5 -0
- package/esm/ui/PinAdornment.js +85 -0
- package/esm/ui/PluggableComponent.d.ts +10 -0
- package/esm/ui/PluggableComponent.js +19 -0
- package/esm/ui/PluggableComponents.d.ts +29 -0
- package/esm/ui/PluggableComponents.js +28 -0
- package/esm/ui/PluggableElements.d.ts +23 -0
- package/esm/ui/PluggableElements.js +24 -0
- package/esm/ui/PluginStoreCard.d.ts +17 -0
- package/esm/ui/PluginStoreCard.js +45 -0
- package/esm/ui/PopoverPicker.d.ts +6 -0
- package/esm/ui/PopoverPicker.js +25 -0
- package/esm/ui/PrerenderedCanvas.d.ts +1 -1
- package/esm/ui/PrerenderedCanvas.js +5 -4
- package/esm/ui/ProgressChip.d.ts +37 -0
- package/esm/ui/ProgressChip.js +66 -0
- package/esm/ui/RedErrorMessageBox.d.ts +1 -1
- package/esm/ui/RedErrorMessageBox.js +9 -3
- package/esm/ui/RefNameAutocomplete/EndAdornment.d.ts +5 -0
- package/esm/ui/RefNameAutocomplete/EndAdornment.js +31 -0
- package/esm/ui/RefNameAutocomplete/HelpDialog.d.ts +3 -0
- package/esm/ui/RefNameAutocomplete/HelpDialog.js +7 -0
- package/esm/ui/RefNameAutocomplete/index.d.ts +22 -0
- package/esm/ui/RefNameAutocomplete/index.js +78 -0
- package/esm/ui/RefNameAutocomplete/util.d.ts +49 -0
- package/esm/ui/RefNameAutocomplete/util.js +168 -0
- package/esm/ui/ReplaceCurrentViewButton.d.ts +19 -0
- package/esm/ui/ReplaceCurrentViewButton.js +22 -0
- package/esm/ui/ResizeHandle.d.ts +13 -7
- package/esm/ui/ResizeHandle.js +42 -55
- package/esm/ui/ReturnToImportFormDialog.d.ts +1 -1
- package/esm/ui/ReturnToImportFormDialog.js +7 -9
- package/esm/ui/SanitizedHTML.d.ts +6 -1
- package/esm/ui/SanitizedHTML.js +7 -47
- package/esm/ui/ScrollEdgeShadow.d.ts +44 -0
- package/esm/ui/ScrollEdgeShadow.js +98 -0
- package/esm/ui/ScrollZoomToggle.d.ts +38 -0
- package/esm/ui/ScrollZoomToggle.js +92 -0
- package/esm/ui/SequenceAdapterInputs.d.ts +9 -0
- package/esm/ui/SequenceAdapterInputs.js +30 -0
- package/esm/ui/SettingsChangesTable.d.ts +14 -0
- package/esm/ui/SettingsChangesTable.js +49 -0
- package/esm/ui/ShareLinkField.d.ts +6 -0
- package/esm/ui/ShareLinkField.js +42 -0
- package/esm/ui/SingleSlider.d.ts +8 -0
- package/esm/ui/SingleSlider.js +11 -0
- package/esm/ui/SizeSliderRow.d.ts +16 -0
- package/esm/ui/SizeSliderRow.js +50 -0
- package/esm/ui/SliderTooltip.d.ts +2 -0
- package/esm/ui/SliderTooltip.js +17 -0
- package/esm/ui/Snackbar.d.ts +4 -2
- package/esm/ui/Snackbar.js +11 -8
- package/esm/ui/SnackbarContents.d.ts +1 -1
- package/esm/ui/SnackbarContents.js +21 -3
- package/esm/ui/SnackbarModel.d.ts +40 -0
- package/esm/ui/SnackbarModel.js +43 -11
- package/esm/ui/StackTraceButton.d.ts +5 -0
- package/esm/ui/StackTraceButton.js +16 -0
- package/esm/ui/StatusProgressBar.d.ts +37 -0
- package/esm/ui/StatusProgressBar.js +76 -0
- package/esm/ui/SubmitDialog.d.ts +6 -0
- package/esm/ui/SubmitDialog.js +9 -0
- package/esm/ui/SubmitForm.d.ts +23 -0
- package/esm/ui/SubmitForm.js +23 -0
- package/esm/ui/SvgColorLegend.d.ts +13 -0
- package/esm/ui/SvgColorLegend.js +65 -0
- package/esm/ui/SvgGradientLegend.d.ts +26 -0
- package/esm/ui/SvgGradientLegend.js +26 -0
- package/esm/ui/TagTextField.d.ts +40 -0
- package/esm/ui/TagTextField.js +32 -0
- package/esm/ui/VerticalScrollbar.d.ts +45 -0
- package/esm/ui/VerticalScrollbar.js +158 -0
- package/esm/ui/ViewLoadingScreen.d.ts +24 -0
- package/esm/ui/ViewLoadingScreen.js +76 -0
- package/esm/ui/addExtensionElement.d.ts +18 -0
- package/esm/ui/addExtensionElement.js +23 -0
- package/esm/ui/buildExtraTrackMenuItems.d.ts +22 -0
- package/esm/ui/buildExtraTrackMenuItems.js +14 -0
- package/esm/ui/colorSwatchStyle.d.ts +9 -0
- package/esm/ui/colorSwatchStyle.js +11 -0
- package/esm/ui/colors.d.ts +61 -8
- package/esm/ui/colors.js +135 -1
- package/esm/ui/extensionSelectors.d.ts +38 -0
- package/esm/ui/extensionSelectors.js +49 -0
- package/esm/ui/filterMenuItems.d.ts +112 -0
- package/esm/ui/filterMenuItems.js +86 -0
- package/esm/ui/formatErrorStack.d.ts +1 -0
- package/esm/ui/formatErrorStack.js +56 -0
- package/esm/ui/gpuFallback.d.ts +33 -0
- package/esm/ui/gpuFallback.js +39 -0
- package/esm/ui/highlightChipReveal.d.ts +32 -0
- package/esm/ui/highlightChipReveal.js +39 -0
- package/esm/ui/hoverBoxStyle.d.ts +11 -0
- package/esm/ui/hoverBoxStyle.js +13 -0
- package/esm/ui/index.d.ts +76 -4
- package/esm/ui/index.js +90 -19
- package/esm/ui/inlineMenuRowWidth.d.ts +1 -0
- package/esm/ui/inlineMenuRowWidth.js +8 -0
- package/esm/ui/launchTargetsMenuItem.d.ts +18 -0
- package/esm/ui/launchTargetsMenuItem.js +24 -0
- package/esm/ui/launchViewMenu.d.ts +4 -0
- package/esm/ui/launchViewMenu.js +42 -0
- package/esm/ui/legendMenuItem.d.ts +38 -0
- package/esm/ui/legendMenuItem.js +44 -0
- package/esm/ui/legendSpec.d.ts +62 -0
- package/esm/ui/legendSpec.js +78 -0
- package/esm/ui/loadingDotKeyframes.d.ts +18 -0
- package/esm/ui/loadingDotKeyframes.js +17 -0
- package/esm/ui/makeSizeMenu.d.ts +30 -0
- package/esm/ui/makeSizeMenu.js +82 -0
- package/esm/ui/mapStackTrace.d.ts +8 -0
- package/esm/ui/mapStackTrace.js +108 -0
- package/esm/ui/measureLegendText.d.ts +1 -0
- package/esm/ui/measureLegendText.js +8 -0
- package/esm/ui/menuItemAdornment.d.ts +33 -0
- package/esm/ui/menuItemAdornment.js +50 -0
- package/esm/ui/menuItems.d.ts +28 -0
- package/esm/ui/menuItems.js +26 -0
- package/esm/ui/menuLabels.d.ts +41 -0
- package/esm/ui/menuLabels.js +43 -0
- package/esm/ui/multiTrackMenuItems.d.ts +19 -0
- package/esm/ui/multiTrackMenuItems.js +15 -0
- package/esm/ui/palette.d.ts +559 -0
- package/esm/ui/palette.js +746 -0
- package/esm/ui/parseError.d.ts +4 -0
- package/esm/ui/parseError.js +18 -0
- package/esm/ui/persistentScrollbarStyle.d.ts +49 -0
- package/esm/ui/persistentScrollbarStyle.js +53 -0
- package/esm/ui/promotableMenuItems.d.ts +19 -0
- package/esm/ui/promotableMenuItems.js +91 -0
- package/esm/ui/promotablePinCoverage.d.ts +44 -0
- package/esm/ui/promotablePinCoverage.js +88 -0
- package/esm/ui/radioSubMenu.d.ts +33 -0
- package/esm/ui/radioSubMenu.js +32 -0
- package/esm/ui/react-colorful.js +5 -1
- package/esm/ui/replaceViewAction.d.ts +31 -0
- package/esm/ui/replaceViewAction.js +39 -0
- package/esm/ui/rewriteExternalAnchors.d.ts +1 -0
- package/esm/ui/rewriteExternalAnchors.js +8 -0
- package/esm/ui/scrollZoomLabels.d.ts +17 -0
- package/esm/ui/scrollZoomLabels.js +22 -0
- package/esm/ui/showSubMenu.d.ts +19 -0
- package/esm/ui/showSubMenu.js +30 -0
- package/esm/ui/sliderScale.d.ts +6 -0
- package/esm/ui/sliderScale.js +30 -0
- package/esm/ui/statusProgressKeyframes.d.ts +6 -0
- package/esm/ui/statusProgressKeyframes.js +14 -0
- package/esm/ui/stripStackTraceMessage.d.ts +1 -0
- package/esm/ui/stripStackTraceMessage.js +9 -0
- package/esm/ui/styleTheme.d.ts +158 -0
- package/esm/ui/styleTheme.js +115 -0
- package/esm/ui/submenuAim.d.ts +30 -0
- package/esm/ui/submenuAim.js +37 -0
- package/esm/ui/theme.d.ts +343 -29
- package/esm/ui/theme.js +258 -342
- package/esm/ui/toggleMenuItems.d.ts +42 -0
- package/esm/ui/toggleMenuItems.js +60 -0
- package/esm/ui/useAssemblySelection.d.ts +153 -0
- package/esm/ui/useAssemblySelection.js +54 -0
- package/esm/ui/useCoalescedPointer.d.ts +36 -0
- package/esm/ui/useCoalescedPointer.js +60 -0
- package/esm/ui/useCopyToClipboard.d.ts +15 -0
- package/esm/ui/useCopyToClipboard.js +41 -0
- package/esm/ui/useExportSvgPreference.d.ts +1 -0
- package/esm/ui/useExportSvgPreference.js +4 -0
- package/esm/ui/useMouseTracking.d.ts +71 -0
- package/esm/ui/useMouseTracking.js +179 -0
- package/esm/ui/useRecentLocations.d.ts +28 -0
- package/esm/ui/useRecentLocations.js +31 -0
- package/esm/ui/wrapComponent.d.ts +47 -0
- package/esm/ui/wrapComponent.js +58 -0
- package/esm/ui/zIndexes.d.ts +28 -0
- package/esm/ui/zIndexes.js +38 -0
- package/esm/util/Base1DUtils.d.ts +204 -16
- package/esm/util/Base1DUtils.js +310 -175
- package/esm/util/Base1DViewModel.d.ts +97 -20
- package/esm/util/Base1DViewModel.js +148 -39
- package/esm/util/FileSaver/index.d.ts +1 -0
- package/esm/util/FileSaver/index.js +27 -0
- package/esm/util/IntervalTree.d.ts +18 -39
- package/esm/util/IntervalTree.js +63 -244
- package/esm/util/SvgCanvas.d.ts +81 -0
- package/esm/util/SvgCanvas.js +500 -0
- package/esm/util/TimeTraveller.d.ts +12 -0
- package/esm/util/TimeTraveller.js +130 -27
- package/esm/util/aborting.d.ts +17 -4
- package/esm/util/aborting.js +30 -25
- package/esm/util/adapterMetadata.d.ts +20 -0
- package/esm/util/adapterMetadata.js +39 -0
- package/esm/util/addAndShowTrack.d.ts +22 -0
- package/esm/util/addAndShowTrack.js +27 -0
- package/esm/util/addRelativeUris.d.ts +17 -0
- package/esm/util/addRelativeUris.js +42 -0
- package/esm/util/addTrackComponent.d.ts +72 -0
- package/esm/util/addTrackComponent.js +53 -0
- package/esm/util/addTrackFromWidget.d.ts +94 -0
- package/esm/util/addTrackFromWidget.js +90 -0
- package/esm/util/analytics.d.ts +32 -3
- package/esm/util/analytics.js +102 -49
- package/esm/util/animationAllowed.d.ts +17 -0
- package/esm/util/animationAllowed.js +22 -0
- package/esm/util/applyRowResizeWheel.d.ts +10 -0
- package/esm/util/applyRowResizeWheel.js +34 -0
- package/esm/util/assemblyConfigUtils.d.ts +144 -0
- package/esm/util/assemblyConfigUtils.js +498 -0
- package/esm/util/bandHeight.d.ts +53 -0
- package/esm/util/bandHeight.js +56 -0
- package/esm/util/bandLayout.d.ts +51 -0
- package/esm/util/bandLayout.js +36 -0
- package/esm/util/bezierConnector.d.ts +14 -0
- package/esm/util/bezierConnector.js +108 -0
- package/esm/util/bgzfWorkerPool.d.ts +78 -0
- package/esm/util/bgzfWorkerPool.js +81 -0
- package/esm/util/blockTypes.d.ts +64 -45
- package/esm/util/blockTypes.js +67 -74
- package/esm/util/bpUtils.d.ts +81 -0
- package/esm/util/bpUtils.js +103 -0
- package/esm/util/cacheBudgets.d.ts +55 -0
- package/esm/util/cacheBudgets.js +55 -0
- package/esm/util/cachedSetup.d.ts +51 -0
- package/esm/util/cachedSetup.js +87 -0
- package/esm/util/calculateDynamicBlocks.d.ts +5 -0
- package/esm/util/calculateDynamicBlocks.js +85 -82
- package/esm/util/calculateStaticBlocks.d.ts +2 -3
- package/esm/util/calculateStaticBlocks.js +48 -71
- package/esm/util/chooseGridPitch.d.ts +9 -0
- package/esm/util/chooseGridPitch.js +31 -0
- package/esm/util/clampToContig.d.ts +26 -0
- package/esm/util/clampToContig.js +28 -0
- package/esm/util/cmpStr.d.ts +1 -0
- package/esm/util/cmpStr.js +7 -0
- package/esm/util/coarseStripHTML.js +3 -15
- package/esm/util/color/cssColorsLevel4.js +6 -2
- package/esm/util/color/index.d.ts +81 -2
- package/esm/util/color/index.js +194 -25
- package/esm/util/color-bits/bit.d.ts +4 -0
- package/esm/util/color-bits/bit.js +37 -0
- package/esm/util/color-bits/convert.d.ts +23 -0
- package/esm/util/color-bits/convert.js +294 -0
- package/esm/util/color-bits/core.d.ts +34 -0
- package/esm/util/color-bits/core.js +67 -0
- package/esm/util/color-bits/format.d.ts +24 -0
- package/esm/util/color-bits/format.js +82 -0
- package/esm/util/color-bits/functions.d.ts +33 -0
- package/esm/util/color-bits/functions.js +70 -0
- package/esm/util/color-bits/index.d.ts +5 -0
- package/esm/util/color-bits/index.js +4 -0
- package/esm/util/color-bits/parse.d.ts +17 -0
- package/esm/util/color-bits/parse.js +382 -0
- package/esm/util/colorBits.d.ts +39 -0
- package/esm/util/colorBits.js +180 -0
- package/esm/util/colorRamp.d.ts +37 -0
- package/esm/util/colorRamp.js +93 -0
- package/esm/util/colord.d.ts +8 -0
- package/esm/util/colord.js +43 -191
- package/esm/util/convertCodingSequenceToPeptides.d.ts +17 -3
- package/esm/util/convertCodingSequenceToPeptides.js +51 -4
- package/esm/util/copyText.d.ts +18 -0
- package/esm/util/copyText.js +30 -0
- package/esm/util/copyToClipboard.d.ts +4 -0
- package/esm/util/copyToClipboard.js +58 -0
- package/esm/util/createStopTokenRotation.d.ts +118 -0
- package/esm/util/createStopTokenRotation.js +127 -0
- package/esm/util/createSvgRasterCanvas.d.ts +7 -0
- package/esm/util/createSvgRasterCanvas.js +22 -0
- package/esm/util/crypto.d.ts +24 -0
- package/esm/util/crypto.js +85 -2
- package/esm/util/dataGridUtils.d.ts +9 -0
- package/esm/util/dataGridUtils.js +36 -0
- package/esm/util/dedupe.js +1 -0
- package/esm/util/deepEqual.d.ts +8 -0
- package/esm/util/deepEqual.js +22 -0
- package/esm/util/deepMerge.d.ts +20 -0
- package/esm/util/deepMerge.js +44 -0
- package/esm/util/diagonalizeRegions.d.ts +23 -0
- package/esm/util/diagonalizeRegions.js +192 -0
- package/esm/util/environment.d.ts +4 -0
- package/esm/util/environment.js +43 -0
- package/esm/util/eventPoint.d.ts +32 -0
- package/esm/util/eventPoint.js +28 -0
- package/esm/util/fetchAndMaybeUnzip.d.ts +6 -0
- package/esm/util/fetchAndMaybeUnzip.js +64 -0
- package/esm/util/fetchContext.d.ts +82 -0
- package/esm/util/fetchContext.js +59 -0
- package/esm/util/fetchHub.d.ts +15 -0
- package/esm/util/fetchHub.js +31 -0
- package/esm/util/fetchJson.d.ts +1 -0
- package/esm/util/fetchJson.js +7 -0
- package/esm/util/fetchPhases.d.ts +77 -0
- package/esm/util/fetchPhases.js +1 -0
- package/esm/util/fetchSeq.d.ts +5 -1
- package/esm/util/fetchSeq.js +18 -6
- package/esm/util/fileHandleStore.d.ts +19 -2
- package/esm/util/fileHandleStore.js +95 -35
- package/esm/util/flatbush/index.d.ts +27 -6
- package/esm/util/flatbush/index.js +194 -218
- package/esm/util/formatBytes.d.ts +9 -0
- package/esm/util/formatBytes.js +18 -0
- package/esm/util/formatFastaStrings.d.ts +13 -0
- package/esm/util/formatFastaStrings.js +13 -0
- package/esm/util/formatGuessers.d.ts +30 -0
- package/esm/util/formatGuessers.js +69 -0
- package/esm/util/formatRelativeTime.d.ts +1 -0
- package/esm/util/formatRelativeTime.js +25 -0
- package/esm/util/frameCoalescer.d.ts +30 -0
- package/esm/util/frameCoalescer.js +22 -0
- package/esm/util/freezeDeep.d.ts +28 -0
- package/esm/util/freezeDeep.js +41 -0
- package/esm/util/geneticCodes.d.ts +56 -0
- package/esm/util/geneticCodes.js +371 -0
- package/esm/util/getFileName.d.ts +11 -0
- package/esm/util/getFileName.js +34 -0
- package/esm/util/getLocationUri.d.ts +49 -0
- package/esm/util/getLocationUri.js +63 -0
- package/esm/util/getRelativeX.d.ts +4 -0
- package/esm/util/getRelativeX.js +7 -0
- package/esm/util/getStr.d.ts +6 -0
- package/esm/util/getStr.js +15 -0
- package/esm/util/highlights.d.ts +21 -0
- package/esm/util/highlights.js +100 -0
- package/esm/util/hooks.d.ts +168 -0
- package/esm/util/hooks.js +443 -0
- package/esm/util/htmlText.d.ts +13 -0
- package/esm/util/htmlText.js +66 -0
- package/esm/util/idMaker.d.ts +1 -1
- package/esm/util/idMaker.js +31 -18
- package/esm/util/index.d.ts +81 -268
- package/esm/util/index.js +135 -853
- package/esm/util/indexCandidates.d.ts +50 -0
- package/esm/util/indexCandidates.js +101 -0
- package/esm/util/installClearHoverOnSurfaceMove.d.ts +40 -0
- package/esm/util/installClearHoverOnSurfaceMove.js +41 -0
- package/esm/util/installFetch.d.ts +220 -0
- package/esm/util/installFetch.js +206 -0
- package/esm/util/installInitAutorun.d.ts +62 -0
- package/esm/util/installInitAutorun.js +107 -0
- package/esm/util/intervals.d.ts +20 -0
- package/esm/util/intervals.js +37 -0
- package/esm/util/io/RemoteFileWithRangeCache.d.ts +10 -11
- package/esm/util/io/RemoteFileWithRangeCache.js +10 -148
- package/esm/util/io/index.d.ts +39 -2
- package/esm/util/io/index.js +115 -12
- package/esm/util/isDataCurrent.d.ts +7 -0
- package/esm/util/isDataCurrent.js +9 -0
- package/esm/util/isWebWorker.js +1 -2
- package/esm/util/iupac.d.ts +4 -0
- package/esm/util/iupac.js +59 -0
- package/esm/util/jexl.js +141 -17
- package/esm/util/jexlFilters.d.ts +75 -0
- package/esm/util/jexlFilters.js +49 -0
- package/esm/util/jexlStrings.d.ts +22 -1
- package/esm/util/jexlStrings.js +21 -14
- package/esm/util/layouts/GranularRectLayout.d.ts +13 -25
- package/esm/util/layouts/GranularRectLayout.js +99 -356
- package/esm/util/layouts/index.d.ts +1 -7
- package/esm/util/layouts/index.js +2 -6
- package/esm/util/layouts/intervalUtils.d.ts +12 -1
- package/esm/util/layouts/intervalUtils.js +13 -31
- package/esm/util/layouts/placeRect.d.ts +50 -0
- package/esm/util/layouts/placeRect.js +97 -0
- package/esm/util/lazyAfterAttach.d.ts +13 -0
- package/esm/util/lazyAfterAttach.js +31 -0
- package/esm/util/leadingEdgeAutorun.d.ts +40 -0
- package/esm/util/leadingEdgeAutorun.js +51 -0
- package/esm/util/legendCandidates.d.ts +50 -0
- package/esm/util/legendCandidates.js +87 -0
- package/esm/util/librpc.d.ts +5 -2
- package/esm/util/librpc.js +6 -1
- package/esm/util/linkify.js +2 -0
- package/esm/util/locString.d.ts +72 -0
- package/esm/util/locString.js +178 -7
- package/esm/util/locStringsToRegions.d.ts +10 -0
- package/esm/util/locStringsToRegions.js +35 -0
- package/esm/util/localStorage.d.ts +36 -0
- package/esm/util/localStorage.js +137 -0
- package/esm/util/makeAssembly.d.ts +54 -0
- package/esm/util/makeAssembly.js +52 -0
- package/esm/util/makeTrackId.d.ts +14 -0
- package/esm/util/makeTrackId.js +14 -0
- package/esm/util/matchTrackId.d.ts +11 -0
- package/esm/util/matchTrackId.js +14 -0
- package/esm/util/measureText.d.ts +24 -0
- package/esm/util/measureText.js +51 -0
- package/esm/util/mst-reflection.d.ts +14 -4
- package/esm/util/mst-reflection.js +33 -32
- package/esm/util/mstUtils.d.ts +100 -0
- package/esm/util/mstUtils.js +140 -0
- package/esm/util/nanoid.d.ts +0 -4
- package/esm/util/nanoid.js +10 -20
- package/esm/util/numericUtils.d.ts +20 -0
- package/esm/util/numericUtils.js +127 -0
- package/esm/util/objectUtils.d.ts +2 -0
- package/esm/util/objectUtils.js +9 -0
- package/esm/util/offscreenCanvasPonyfill.d.ts +5 -4
- package/esm/util/offscreenCanvasPonyfill.js +5 -47
- package/esm/util/openDisplays.d.ts +23 -0
- package/esm/util/openDisplays.js +79 -0
- package/esm/util/openFeatureWidget.d.ts +33 -0
- package/esm/util/openFeatureWidget.js +64 -0
- package/esm/util/paintLayer.d.ts +32 -0
- package/esm/util/paintLayer.js +33 -0
- package/esm/util/parentWalk.d.ts +32 -0
- package/esm/util/parentWalk.js +84 -0
- package/esm/util/parseLineByLine.d.ts +45 -2
- package/esm/util/parseLineByLine.js +156 -15
- package/esm/util/parseMotifList.d.ts +17 -0
- package/esm/util/parseMotifList.js +69 -0
- package/esm/util/pluginStore.d.ts +114 -0
- package/esm/util/pluginStore.js +260 -0
- package/esm/util/pointerPresence.d.ts +5 -0
- package/esm/util/pointerPresence.js +21 -0
- package/esm/util/progress.d.ts +459 -0
- package/esm/util/progress.js +820 -0
- package/esm/util/range.d.ts +46 -1
- package/esm/util/range.js +68 -2
- package/esm/util/renameRegions.d.ts +21 -0
- package/esm/util/renameRegions.js +129 -0
- package/esm/util/renderToStaticMarkup.d.ts +2 -0
- package/esm/util/renderToStaticMarkup.js +50 -0
- package/esm/util/reorder.d.ts +35 -0
- package/esm/util/reorder.js +83 -0
- package/esm/util/resolveRowHeight.d.ts +27 -0
- package/esm/util/resolveRowHeight.js +30 -0
- package/esm/util/revlist.d.ts +13 -0
- package/esm/util/revlist.js +14 -0
- package/esm/util/rowStackGeometry.d.ts +66 -0
- package/esm/util/rowStackGeometry.js +70 -0
- package/esm/util/rpc.d.ts +16 -1
- package/esm/util/rpc.js +12 -1
- package/esm/util/rxjs.d.ts +30 -1
- package/esm/util/rxjs.js +88 -10
- package/esm/util/sameStrings.d.ts +16 -0
- package/esm/util/sameStrings.js +20 -0
- package/esm/util/scrollLatch.d.ts +4 -0
- package/esm/util/scrollLatch.js +59 -0
- package/esm/util/selectNamedRegions.d.ts +136 -0
- package/esm/util/selectNamedRegions.js +222 -0
- package/esm/util/seqUtils.d.ts +17 -0
- package/esm/util/seqUtils.js +80 -0
- package/esm/util/sessionServices.d.ts +29 -0
- package/esm/util/sessionServices.js +46 -0
- package/esm/util/sessionSharing.d.ts +38 -0
- package/esm/util/sessionSharing.js +154 -0
- package/esm/util/sessionStorage.d.ts +1 -0
- package/esm/util/sessionStorage.js +15 -0
- package/esm/util/setStackTraceLimit.d.ts +6 -0
- package/esm/util/setStackTraceLimit.js +20 -0
- package/esm/util/simpleFeature.d.ts +112 -4
- package/esm/util/simpleFeature.js +181 -29
- package/esm/util/springAnimate.d.ts +20 -0
- package/esm/util/springAnimate.js +80 -0
- package/esm/util/stats.d.ts +25 -2
- package/esm/util/stats.js +39 -8
- package/esm/util/stopToken.d.ts +207 -15
- package/esm/util/stopToken.js +403 -55
- package/esm/util/stringUtils.d.ts +5 -0
- package/esm/util/stringUtils.js +34 -0
- package/esm/util/svgColorProps.d.ts +7 -0
- package/esm/util/svgColorProps.js +28 -0
- package/esm/util/tabix.d.ts +126 -0
- package/esm/util/tabix.js +149 -0
- package/esm/util/tags.d.ts +2 -0
- package/esm/util/tags.js +5 -0
- package/esm/util/temporaryAssembly.d.ts +21 -0
- package/esm/util/temporaryAssembly.js +29 -0
- package/esm/util/tickLabels.d.ts +36 -0
- package/esm/util/tickLabels.js +45 -0
- package/esm/util/timeGate.d.ts +26 -0
- package/esm/util/timeGate.js +79 -0
- package/esm/util/trackConfigDelta.d.ts +84 -0
- package/esm/util/trackConfigDelta.js +190 -0
- package/esm/util/tracks.d.ts +398 -30
- package/esm/util/tracks.js +699 -191
- package/esm/util/tss-react/cssAndCx.js +11 -66
- package/esm/util/tss-react/index.d.ts +11 -2
- package/esm/util/tss-react/index.js +9 -2
- package/esm/util/tss-react/makeStyles.js +7 -4
- package/esm/util/tss-react/mergeClasses.js +1 -0
- package/esm/util/tss-react/tools/classnames.d.ts +3 -0
- package/esm/util/tss-react/tools/classnames.js +3 -0
- package/esm/util/tss-react/tools/getDependencyArrayRef.d.ts +18 -0
- package/esm/util/tss-react/tools/getDependencyArrayRef.js +19 -0
- package/esm/util/tss-react/types.d.ts +1 -1
- package/esm/util/tss-react/types.js +1 -6
- package/esm/util/types/ElementId.js +1 -1
- package/esm/util/types/data.d.ts +75 -0
- package/esm/util/types/data.js +41 -0
- package/esm/util/types/index.d.ts +402 -120
- package/esm/util/types/index.js +90 -64
- package/esm/util/types/isAny.d.ts +11 -0
- package/esm/util/types/isAny.js +1 -0
- package/esm/util/types/mst.d.ts +71 -47
- package/esm/util/types/mst.js +27 -22
- package/esm/util/types/predicate.d.ts +9 -0
- package/esm/util/types/predicate.js +1 -0
- package/esm/util/types/renderingServices.d.ts +16 -0
- package/esm/util/types/renderingServices.js +1 -0
- package/esm/util/types/services.d.ts +55 -0
- package/esm/util/types/services.js +10 -0
- package/esm/util/types/util.d.ts +8 -2
- package/esm/util/unknownSnapshotKeys.d.ts +36 -0
- package/esm/util/unknownSnapshotKeys.js +69 -0
- package/esm/util/unzip.d.ts +1 -0
- package/esm/util/unzip.js +6 -0
- package/esm/util/useEventCallback.d.ts +1 -0
- package/esm/util/useEventCallback.js +16 -0
- package/esm/util/useFeatureSequence.d.ts +13 -7
- package/esm/util/useFeatureSequence.js +56 -78
- package/esm/util/useFetch.d.ts +56 -0
- package/esm/util/useFetch.js +188 -0
- package/esm/util/useFetchPlugins.d.ts +12 -0
- package/esm/util/useFetchPlugins.js +14 -0
- package/esm/util/useMeasure.d.ts +11 -1
- package/esm/util/useMeasure.js +20 -6
- package/esm/util/usePanZoom.d.ts +75 -0
- package/esm/util/usePanZoom.js +175 -0
- package/esm/util/usePanelVirtualScroll.d.ts +37 -0
- package/esm/util/usePanelVirtualScroll.js +42 -0
- package/esm/util/usePointerDrag.d.ts +37 -0
- package/esm/util/usePointerDrag.js +61 -0
- package/esm/util/useRafCommit.d.ts +4 -0
- package/esm/util/useRafCommit.js +50 -0
- package/esm/util/useResizeDrag.d.ts +91 -0
- package/esm/util/useResizeDrag.js +105 -0
- package/esm/util/useRowVirtualScroll.d.ts +32 -0
- package/esm/util/useRowVirtualScroll.js +63 -0
- package/esm/util/useVirtualScrollWheel.d.ts +7 -0
- package/esm/util/useVirtualScrollWheel.js +108 -0
- package/esm/util/viewStatus.d.ts +81 -0
- package/esm/util/viewStatus.js +37 -0
- package/esm/util/virtualRange.d.ts +36 -0
- package/esm/util/virtualRange.js +26 -0
- package/esm/util/webStorage.d.ts +26 -0
- package/esm/util/webStorage.js +92 -0
- package/esm/util/wheelZoom.d.ts +59 -0
- package/esm/util/wheelZoom.js +231 -0
- package/esm/util/whenViewSettled.d.ts +40 -0
- package/esm/util/whenViewSettled.js +41 -0
- package/esm/util/withFeatureDetails.d.ts +34 -0
- package/esm/util/withFeatureDetails.js +59 -0
- package/esm/util/withLaunchInput.d.ts +123 -0
- package/esm/util/withLaunchInput.js +228 -0
- package/package.json +243 -820
- package/esm/ReExports/DataGrid.d.ts +0 -1
- package/esm/ReExports/DataGrid.js +0 -1
- package/esm/configuration/util.d.ts +0 -10
- package/esm/configuration/util.js +0 -123
- package/esm/data_adapters/BaseAdapter/BaseOptions.d.ts +0 -18
- package/esm/data_adapters/util.d.ts +0 -1
- package/esm/data_adapters/util.js +0 -6
- package/esm/pluggableElementTypes/GlyphType.d.ts +0 -43
- package/esm/pluggableElementTypes/GlyphType.js +0 -18
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/fetchSequence.d.ts +0 -5
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/fetchSequence.js +0 -17
- package/esm/pluggableElementTypes/renderers/BoxRendererType.d.ts +0 -52
- package/esm/pluggableElementTypes/renderers/BoxRendererType.js +0 -78
- package/esm/pluggableElementTypes/renderers/CircularChordRendererType.d.ts +0 -4
- package/esm/pluggableElementTypes/renderers/CircularChordRendererType.js +0 -4
- package/esm/pluggableElementTypes/renderers/FeatureRendererType.d.ts +0 -58
- package/esm/pluggableElementTypes/renderers/FeatureRendererType.js +0 -77
- package/esm/pluggableElementTypes/renderers/LayoutSession.d.ts +0 -31
- package/esm/pluggableElementTypes/renderers/LayoutSession.js +0 -40
- package/esm/pluggableElementTypes/renderers/RendererType.d.ts +0 -28
- package/esm/pluggableElementTypes/renderers/RendererType.js +0 -20
- package/esm/pluggableElementTypes/renderers/ServerSideRendererType.d.ts +0 -58
- package/esm/pluggableElementTypes/renderers/ServerSideRendererType.js +0 -108
- package/esm/pluggableElementTypes/renderers/index.d.ts +0 -6
- package/esm/pluggableElementTypes/renderers/index.js +0 -6
- package/esm/pluggableElementTypes/renderers/util.d.ts +0 -3
- package/esm/pluggableElementTypes/renderers/util.js +0 -14
- package/esm/rpc/baseRpcConfig.d.ts +0 -8
- package/esm/rpc/baseRpcConfig.js +0 -10
- package/esm/rpc/mainThreadRpcConfig.d.ts +0 -8
- package/esm/rpc/mainThreadRpcConfig.js +0 -8
- package/esm/rpc/methods/CoreGetFeatureDensityStats.d.ts +0 -17
- package/esm/rpc/methods/CoreGetFeatureDensityStats.js +0 -25
- package/esm/rpc/methods/CoreGetFeatureDetails.d.ts +0 -11
- package/esm/rpc/methods/CoreGetFeatureDetails.js +0 -24
- package/esm/rpc/methods/CoreGetFileInfo.d.ts +0 -9
- package/esm/rpc/methods/CoreGetFileInfo.js +0 -15
- package/esm/rpc/methods/CoreRender.d.ts +0 -14
- package/esm/rpc/methods/CoreRender.js +0 -40
- package/esm/rpc/methods/CoreSaveFeatureData.d.ts +0 -16
- package/esm/rpc/methods/CoreSaveFeatureData.js +0 -32
- package/esm/rpc/methods/util.d.ts +0 -15
- package/esm/rpc/methods/util.js +0 -7
- package/esm/rpc/webWorkerRpcConfig.d.ts +0 -8
- package/esm/rpc/webWorkerRpcConfig.js +0 -8
- package/esm/ui/MenuButton.d.ts +0 -1
- package/esm/ui/MenuButton.js +0 -1
- package/esm/ui/MenuItems.d.ts +0 -15
- package/esm/ui/MenuItems.js +0 -59
- package/esm/ui/useEvent.d.ts +0 -1
- package/esm/ui/useEvent.js +0 -10
- package/esm/util/blobToDataURL.d.ts +0 -1
- package/esm/util/blobToDataURL.js +0 -14
- package/esm/util/compositeMap.d.ts +0 -11
- package/esm/util/compositeMap.js +0 -59
- package/esm/util/flatqueue/index.d.ts +0 -11
- package/esm/util/flatqueue/index.js +0 -61
- package/esm/util/layouts/BaseLayout.d.ts +0 -30
- package/esm/util/layouts/MultiLayout.d.ts +0 -12
- package/esm/util/layouts/MultiLayout.js +0 -40
- package/esm/util/layouts/PileupLayout.d.ts +0 -41
- package/esm/util/layouts/PileupLayout.js +0 -202
- package/esm/util/layouts/PrecomputedLayout.d.ts +0 -30
- package/esm/util/layouts/PrecomputedLayout.js +0 -71
- package/esm/util/layouts/SceneGraph.d.ts +0 -31
- package/esm/util/layouts/SceneGraph.js +0 -121
- package/esm/util/makeAbortableReaction.d.ts +0 -3
- package/esm/util/makeAbortableReaction.js +0 -47
- package/esm/util/map-obj/index.d.ts +0 -13
- package/esm/util/map-obj/index.js +0 -92
- package/esm/util/nextTick.d.ts +0 -1
- package/esm/util/nextTick.js +0 -3
- package/esm/util/offscreenCanvasGetSerializingSvg.d.ts +0 -5
- package/esm/util/offscreenCanvasGetSerializingSvg.js +0 -9
- package/esm/util/offscreenCanvasUtils.d.ts +0 -12
- package/esm/util/offscreenCanvasUtils.js +0 -19
- package/esm/util/renderToAbstractCanvas.d.ts +0 -17
- package/esm/util/renderToAbstractCanvas.js +0 -53
- package/esm/util/transferables.d.ts +0 -2
- package/esm/util/transferables.js +0 -35
- package/esm/util/tss-react/mui/index.d.ts +0 -1
- package/esm/util/tss-react/mui/index.js +0 -1
- package/esm/util/tss-react/mui/mui.d.ts +0 -10
- package/esm/util/tss-react/mui/mui.js +0 -5
- package/esm/util/when.d.ts +0 -1
- package/esm/util/when.js +0 -1
- /package/esm/{data_adapters/BaseAdapter/BaseOptions.js → configuration/promotablePin.js} +0 -0
- /package/esm/{util/layouts/BaseLayout.js → data_adapters/BaseAdapter/CytobandAdapter.js} +0 -0
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module
|
|
3
|
+
* Session-wide "promoted defaults" for display-type config slots — the UI /
|
|
4
|
+
* control layer over the read-time cascade in `promotableResolve.ts`, whose
|
|
5
|
+
* `SlotResolution` every function here reads a field off. The session store
|
|
6
|
+
* (`get/setDisplayTypeDefault`) holds the promoted value.
|
|
7
|
+
*/
|
|
8
|
+
import { getSnapshot, isAlive } from '@jbrowse/mobx-state-tree';
|
|
9
|
+
import { deepEqual } from '../util/deepEqual.js';
|
|
10
|
+
import { getSession } from '../util/mstUtils.js';
|
|
11
|
+
import { isObject } from '../util/objectUtils.js';
|
|
12
|
+
import { openPromotableDisplays } from '../util/openDisplays.js';
|
|
13
|
+
import { pluralize } from '../util/stringUtils.js';
|
|
14
|
+
import { fullConfSnapshot } from './fullConfSnapshot.js';
|
|
15
|
+
import { setConf } from './getConf.js';
|
|
16
|
+
import { cascadeContextFor, isPromotableValue, resolveSlot, resolveSlotIn, storedSlotValue, } from './promotableResolve.js';
|
|
17
|
+
import { promotableSlotNames } from './promotableSlots.js';
|
|
18
|
+
import { isConfigurationModel } from './schemaTypes.js';
|
|
19
|
+
/**
|
|
20
|
+
* #api core/configuration
|
|
21
|
+
* Whether this track has customized the slot (holds a non-default value of its
|
|
22
|
+
* own) rather than following the display type's default. The correct "reset to
|
|
23
|
+
* default" predicate for a promotable slot: comparing the resolved value to the
|
|
24
|
+
* base instead reads as at-default for a track merely *following* a non-base
|
|
25
|
+
* promoted default, so the reset control lights up on a no-op.
|
|
26
|
+
*
|
|
27
|
+
* `SLOT` is constrained the way `getConf`'s is. A pin or a reset over a slot
|
|
28
|
+
* name the schema does not declare is inert and silent — `resolveSlot` answers
|
|
29
|
+
* about nothing, so the control draws outline forever — and a widened `self`
|
|
30
|
+
* switches the check off (`HostChecksSlotNames`).
|
|
31
|
+
*/
|
|
32
|
+
export function isSlotCustomized(self, slot) {
|
|
33
|
+
return resolveSlot(self, slot).customized;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* #api core/configuration
|
|
37
|
+
* The display's full config snapshot with every `promotable`
|
|
38
|
+
* slot overwritten by its resolved value in place. For building a worker payload:
|
|
39
|
+
* a promotable slot serializes as its raw inherit sentinel (`undefined`, since
|
|
40
|
+
* they're all `maybe*` types), which the worker can't interpret — it has no
|
|
41
|
+
* session to resolve against. This hands it concrete values instead, with no per-slot
|
|
42
|
+
* bookkeeping, so adding a promotable worker-consumed slot needs no rpcProps
|
|
43
|
+
* change and can't silently ship a sentinel. Main-thread only (the cascade
|
|
44
|
+
* consults the session). Display-only promotable slots the worker never reads
|
|
45
|
+
* (e.g. displayMode) are still excluded by the caller — resolving them here is a
|
|
46
|
+
* harmless no-op since they're dropped anyway.
|
|
47
|
+
*
|
|
48
|
+
* The return type is branded (`ResolvedConfigSnapshot`) so a payload builder can
|
|
49
|
+
* demand a snapshot that has been through here. The assertion below is the one
|
|
50
|
+
* place the brand is applied, and it sits on the line after the resolve.
|
|
51
|
+
*/
|
|
52
|
+
export function getConfigSnapshotWithPromotables(self) {
|
|
53
|
+
// the unresolved walk: this is the one place allowed to snapshot a promotable
|
|
54
|
+
// config, because `resolvePromotablesInto` is what resolves every such slot
|
|
55
|
+
const snap = fullConfSnapshot(self.configuration);
|
|
56
|
+
resolvePromotablesInto(cascadeContextFor(self), snap);
|
|
57
|
+
return snap;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* The subsystem's one resolve loop: every promotable slot of `ctx.config`
|
|
61
|
+
* written into `snap` in place, returning the slots whose value came from a
|
|
62
|
+
* promoted default rather than from the config. Both serialization boundaries
|
|
63
|
+
* are this function over a different context — a display state node for the
|
|
64
|
+
* worker payload, a bare display config for the About dialog's copy.
|
|
65
|
+
*/
|
|
66
|
+
function resolvePromotablesInto(ctx, snap) {
|
|
67
|
+
const inherited = [];
|
|
68
|
+
for (const slot of promotableSlotNames(ctx.config)) {
|
|
69
|
+
const res = resolveSlotIn(ctx, slot);
|
|
70
|
+
snap[slot] = res.value;
|
|
71
|
+
if (res.inherited) {
|
|
72
|
+
inherited.push(slot);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return inherited;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* #api core/configuration
|
|
79
|
+
* See {@link TrackConfigWithPromotables}.
|
|
80
|
+
*/
|
|
81
|
+
export function getTrackConfigWithPromotables(session, trackConfig) {
|
|
82
|
+
const config = structuredClone(getSnapshot(trackConfig));
|
|
83
|
+
const fromDisplayTypeDefaults = [];
|
|
84
|
+
const displayConfigs = trackConfig.displays;
|
|
85
|
+
const displaySnaps = config.displays;
|
|
86
|
+
// a config with no `displays` (an assembly, a plain customized About config)
|
|
87
|
+
// has no promotable slot to resolve — every one of them is display-level
|
|
88
|
+
if (Array.isArray(displayConfigs) && Array.isArray(displaySnaps)) {
|
|
89
|
+
for (const [i, displayConfig] of displayConfigs.entries()) {
|
|
90
|
+
const snap = displaySnaps[i];
|
|
91
|
+
if (!isConfigurationModel(displayConfig) || !isObject(snap)) {
|
|
92
|
+
continue;
|
|
93
|
+
}
|
|
94
|
+
// off the live config node, not off `snap` — the snapshot is what this
|
|
95
|
+
// function *writes*, so the key it resolves against shouldn't depend on
|
|
96
|
+
// what survived `stripDefault` on the way out. A display schema is
|
|
97
|
+
// `explicitlyTyped`, so the node always carries `type`; reading the
|
|
98
|
+
// snapshot's copy meant a display whose `type` ever stopped being emitted
|
|
99
|
+
// got skipped whole, and a skipped display is a copied config that
|
|
100
|
+
// silently isn't flattened. Same source `cascadeContextFor` reads.
|
|
101
|
+
const displayType = displayConfig.type;
|
|
102
|
+
if (typeof displayType === 'string') {
|
|
103
|
+
const ctx = { config: displayConfig, displayType, defaults: session };
|
|
104
|
+
for (const slot of resolvePromotablesInto(ctx, snap)) {
|
|
105
|
+
fromDisplayTypeDefaults.push(`${displayType}.${slot}`);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return { config, fromDisplayTypeDefaults };
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Open displays of this display's type, **one entry per track** — the set the
|
|
114
|
+
* pin's click writes. Module-internal (exercised by promotableDefaults.test.ts);
|
|
115
|
+
* not part of the public barrel.
|
|
116
|
+
*
|
|
117
|
+
* A track open in two views is two display *models* over one display *config* —
|
|
118
|
+
* `TrackConfigurationReference` resolves both through the hydration cache
|
|
119
|
+
* (ADR-031) — so the raw walk yields it twice. That is the ordinary case in a
|
|
120
|
+
* breakpoint-split view, which shows the same track in both halves and is one of
|
|
121
|
+
* the composite shapes `openPromotableDisplays` recurses into. The count reaches
|
|
122
|
+
* the user in the snackbar and the set gets written, and both
|
|
123
|
+
* go wrong on a duplicate: the toast offered to act on "2 tracks" over a single
|
|
124
|
+
* track, and the second write was a no-op against a node the first had already
|
|
125
|
+
* set.
|
|
126
|
+
*
|
|
127
|
+
* Keying on the config node rather than on `trackId` is what keeps this
|
|
128
|
+
* cast-free: the node is a member of `ResolvableDisplay`, and within one display
|
|
129
|
+
* type it is 1:1 with the track.
|
|
130
|
+
*/
|
|
131
|
+
export function openTracksOfType(self) {
|
|
132
|
+
// seeded with the clicked display so it is in the set by construction rather
|
|
133
|
+
// than by the walk happening to reach it. A display the walk misses used to
|
|
134
|
+
// cost nothing — the click wrote only the session default — and would now be
|
|
135
|
+
// the whole of the click. A duplicate from the walk lands on the same config
|
|
136
|
+
// key, so this adds no entry.
|
|
137
|
+
const byTrack = new Map([
|
|
138
|
+
[self.configuration, self],
|
|
139
|
+
]);
|
|
140
|
+
for (const display of openPromotableDisplays(getSession(self))) {
|
|
141
|
+
if (display.type === self.type) {
|
|
142
|
+
byTrack.set(display.configuration, display);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return [...byTrack.values()];
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Whether `value` is the current session default for `slot`. The live state the
|
|
149
|
+
* pin's filled/outline reflects — a session-wide fact, so it reads the raw
|
|
150
|
+
* promoted default rather than what this display resolves to (a customized track
|
|
151
|
+
* can be showing something else entirely). The named form of the comparison
|
|
152
|
+
* {@link makePin} inlines off a resolution it already holds. Module-internal
|
|
153
|
+
* (exercised by promotableDefaults.test.ts); not part of the public barrel.
|
|
154
|
+
*/
|
|
155
|
+
export function isPromotableDefault(self, slot, value) {
|
|
156
|
+
return deepEqual(resolveSlot(self, slot).promoted, value);
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Write `value` into each display's own config for `slot`, so the track *holds*
|
|
160
|
+
* it rather than resolving it through the cascade. The pin's click, over every
|
|
161
|
+
* open track of the display type.
|
|
162
|
+
*
|
|
163
|
+
* **A track already showing `value` still has to be written**, which is why this
|
|
164
|
+
* compares the *stored* value and not the resolved one: a follower stores
|
|
165
|
+
* nothing and is showing `value` only by way of some promoted default, so
|
|
166
|
+
* skipping it would leave it to move again the moment that default changed.
|
|
167
|
+
* Comparing the stored value is also what lets a `jexl:` value answer "is this
|
|
168
|
+
* already what we would write?" without being evaluated.
|
|
169
|
+
*
|
|
170
|
+
* Skips dead displays, since the caller supplies the list and MST throws on any
|
|
171
|
+
* read or write to a destroyed node.
|
|
172
|
+
*/
|
|
173
|
+
export function applySlotToOpenTracks(displays, slot, value) {
|
|
174
|
+
for (const display of displays.filter(display => isAlive(display))) {
|
|
175
|
+
if (!deepEqual(storedSlotValue(display.configuration, slot), value)) {
|
|
176
|
+
setConf(display, slot, value);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* The pin's click. Two branches, chosen by whether this value is *already* the
|
|
182
|
+
* display type's promoted default:
|
|
183
|
+
*
|
|
184
|
+
* - **It isn't** — write `value` into every open track of the type, and offer
|
|
185
|
+
* the promotion as a snackbar action. Applying to the tracks in front of the
|
|
186
|
+
* user is the click they mean far more often, so it is the one that needs no
|
|
187
|
+
* second click; a default outlives the tracks it was set for and governs every
|
|
188
|
+
* track of the type opened later, so it is the escalation (ADR-048).
|
|
189
|
+
* - **It is** — clear it, touching no track. The open tracks hold their values
|
|
190
|
+
* because the user applied them, so reverting them here would make a toggle
|
|
191
|
+
* into a bulk discard.
|
|
192
|
+
*
|
|
193
|
+
* The apply is one operation over *every* open track, not a labeled pair over
|
|
194
|
+
* the tracks that differ and the tracks that follow. Overwriting a customized
|
|
195
|
+
* track is the same write as filling in a follower, and the distinction the two
|
|
196
|
+
* actions drew is not one the user has any reason to see.
|
|
197
|
+
*
|
|
198
|
+
* The snackbar outlives the click that raised it, so the promotion closes over
|
|
199
|
+
* the display TYPE — a string — rather than reaching back through `self`. A
|
|
200
|
+
* promoted default is keyed by display type and governs tracks opened later, so
|
|
201
|
+
* it has nothing to do with the clicked display still being open; guarding on
|
|
202
|
+
* `self` instead meant a user who applied a value, closed the track, then took
|
|
203
|
+
* the offer got a silent no-op. What is still guarded is the session, which owns
|
|
204
|
+
* the map the write lands in. ADR-048 has the decisions this does not change:
|
|
205
|
+
* no track set and no apply/promote decision may be closed over.
|
|
206
|
+
*/
|
|
207
|
+
function applyPinClick(self, slot, value, isDefault) {
|
|
208
|
+
const session = getSession(self);
|
|
209
|
+
const displayType = self.type;
|
|
210
|
+
if (isDefault) {
|
|
211
|
+
session.setDisplayTypeDefault(displayType, slot, undefined);
|
|
212
|
+
session.notify('Cleared the default', 'info');
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
const open = openTracksOfType(self);
|
|
216
|
+
applySlotToOpenTracks(open, slot, value);
|
|
217
|
+
session.notify(`Applied to ${open.length} open ${pluralize(open.length, 'track')}`, 'info', {
|
|
218
|
+
name: 'Set as the default',
|
|
219
|
+
onClick: () => {
|
|
220
|
+
if (isAlive(session)) {
|
|
221
|
+
session.setDisplayTypeDefault(displayType, slot, value);
|
|
222
|
+
}
|
|
223
|
+
},
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* #api core/configuration
|
|
229
|
+
* The pin for one promotable slot: "apply this value to every open track of this
|
|
230
|
+
* display type", and — via the snackbar it raises — "keep it as the default for
|
|
231
|
+
* the ones opened later".
|
|
232
|
+
*
|
|
233
|
+
* `value` chooses between the subsystem's two meanings, which are otherwise
|
|
234
|
+
* identical:
|
|
235
|
+
*
|
|
236
|
+
* - **Give it** for a per-value pin — "make *arcs* the default" — independent of
|
|
237
|
+
* what the track currently shows. Use on an always-visible pin so it can never
|
|
238
|
+
* promote a meaningless value, and so two rows sharing one slot (arcs `'arc'`
|
|
239
|
+
* vs read cloud `'cloud'`; sashimi `'down'` vs `'auto'`) stay independent.
|
|
240
|
+
* - **Omit it** for "whatever I'm showing", resolved through the cascade. Use for
|
|
241
|
+
* a symmetric or continuous setting where no fixed on-value makes sense
|
|
242
|
+
* (wiggle point size, arc line width, `mismatchAlpha`).
|
|
243
|
+
*
|
|
244
|
+
* One function with an optional argument, rather than the two exported builders
|
|
245
|
+
* it replaces — a per-value one and a `…CurrentValue…` one, the second of which
|
|
246
|
+
* was exactly the first applied to `resolveSlot(self, slot).value`. The pair was
|
|
247
|
+
* one function plus a doc section explaining which name to reach for; omitting
|
|
248
|
+
* the argument now says what the longer name said.
|
|
249
|
+
*/
|
|
250
|
+
export function makePin(self, slot, ...value) {
|
|
251
|
+
// One walk of the cascade feeds both halves. The value-omitted form's
|
|
252
|
+
// on-value IS the settled value, and `active` compares against the raw
|
|
253
|
+
// promoted default of that same resolution — taking the two from separate
|
|
254
|
+
// `resolveSlot` calls read as though they could disagree, and cost a second
|
|
255
|
+
// walk per pin on a menu that builds a dozen of them.
|
|
256
|
+
const res = resolveSlot(self, slot);
|
|
257
|
+
// rest-tuple, not `value?: unknown`: the promote-current case has to stay
|
|
258
|
+
// distinguishable from an explicit `undefined` rather than collapsing into it.
|
|
259
|
+
const onValue = value.length ? value[0] : res.value;
|
|
260
|
+
// The value-omitted form can't fail this — the cascade only ever settles on a
|
|
261
|
+
// usable value — so this is entirely about a caller-supplied one. An on-value
|
|
262
|
+
// the cascade would refuse builds a pin that is inert *and* silent: clicking
|
|
263
|
+
// it stores a key `resolveSlotIn` then drops, so no track moves and the pin
|
|
264
|
+
// draws outline forever. The reachable mistakes are the inherit sentinel
|
|
265
|
+
// itself (`makePin(self, slot, undefined)`, which additionally reads as the
|
|
266
|
+
// default the moment nothing is promoted, so it draws *filled* and does
|
|
267
|
+
// nothing), a non-finite number, and a value outside a `maybeStringEnum`'s
|
|
268
|
+
// vocabulary. The `value` parameter's type catches those wherever the slot
|
|
269
|
+
// resolves to a real value type; what is left for runtime is the slot whose
|
|
270
|
+
// schema widened to `any` — a `frozen`/`maybeFrozen` one by design, or a
|
|
271
|
+
// display whose config model was not narrowed. Same bargain `ConfigSlot`
|
|
272
|
+
// strikes over `promotedBase`, which is this gate at the other end.
|
|
273
|
+
if (!isPromotableValue(self.configuration, slot, onValue)) {
|
|
274
|
+
throw new Error(`cannot pin ${JSON.stringify(onValue)} as the default for config slot "${slot}": the cascade refuses it, so the pin could never light up`);
|
|
275
|
+
}
|
|
276
|
+
// `isPromotableDefault` off the resolution already in hand — same comparison,
|
|
277
|
+
// same `deepEqual`, no second walk.
|
|
278
|
+
const active = deepEqual(res.promoted, onValue);
|
|
279
|
+
return {
|
|
280
|
+
slot,
|
|
281
|
+
onValue,
|
|
282
|
+
active,
|
|
283
|
+
toggle: () => {
|
|
284
|
+
applyPinClick(self, slot, onValue, active);
|
|
285
|
+
},
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* #api core/configuration
|
|
290
|
+
* Effective differences a track following the default inherits from session-wide
|
|
291
|
+
* defaults, one per promotable slot whose inherited value differs from its schema
|
|
292
|
+
* default. Drives the track-selector "affected by a session default" badge.
|
|
293
|
+
*/
|
|
294
|
+
export function getDisplayTypeDefaultChanges(self) {
|
|
295
|
+
const changes = [];
|
|
296
|
+
for (const slot of promotableSlotNames(self.configuration)) {
|
|
297
|
+
const res = resolveSlot(self, slot);
|
|
298
|
+
if (res.inherited) {
|
|
299
|
+
changes.push({
|
|
300
|
+
path: [slot],
|
|
301
|
+
// a cascade value is `unknown` here but JSON by contract — it has to
|
|
302
|
+
// survive `postMessage` to a worker. Asserted per field rather than on
|
|
303
|
+
// the whole entry, so `path` stays type-checked.
|
|
304
|
+
from: res.base,
|
|
305
|
+
to: res.value,
|
|
306
|
+
});
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
return changes;
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* #api core/configuration
|
|
313
|
+
* Clear the named promoted defaults for this display type, so every track
|
|
314
|
+
* following one reverts to its own config value. Backs the badge's "clear
|
|
315
|
+
* session default" action, which passes the slots it actually listed
|
|
316
|
+
* (`getDisplayTypeDefaultChanges`).
|
|
317
|
+
*
|
|
318
|
+
* **`slots` is required, and an all-slots default is not the convenience it
|
|
319
|
+
* looks like.** It reaches further than any list a dialog can have shown: a
|
|
320
|
+
* promoted default the track *customized* over, or one promoted to a value
|
|
321
|
+
* equal to `promotedBase`, is `inherited: false` and so appears in no row, yet
|
|
322
|
+
* still governs sibling tracks — so clearing it from a dialog that never showed
|
|
323
|
+
* it moves tracks other than the one whose badge was clicked. Clearing every
|
|
324
|
+
* promoted default at once is a preferences-scope action, and Preferences →
|
|
325
|
+
* "Reset to defaults" is where it lives (`clearPreferenceOverrides`).
|
|
326
|
+
*/
|
|
327
|
+
export function clearPromotedDefaults(self, slots) {
|
|
328
|
+
const session = getSession(self);
|
|
329
|
+
for (const slot of slots) {
|
|
330
|
+
session.setDisplayTypeDefault(self.type, slot, undefined);
|
|
331
|
+
}
|
|
332
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* #api core/configuration
|
|
3
|
+
* The "apply this to every open track of this type" affordance on a menu row —
|
|
4
|
+
* the trailing `PushPin`, bundled so the row consumes it as one prop. Built by
|
|
5
|
+
* {@link makePin}.
|
|
6
|
+
*
|
|
7
|
+
* `active` = this value is currently the session default (a filled pin), which
|
|
8
|
+
* is the state, not the click. `toggle` **applies the value to every open track
|
|
9
|
+
* of the display type** and raises a snackbar whose one action promotes it to
|
|
10
|
+
* the display type's default; on an already-promoted value it clears that
|
|
11
|
+
* default instead, touching no track (see `applyPinClick`).
|
|
12
|
+
*
|
|
13
|
+
* **`toggle` rather than an `apply`/`clear` pair**, which was tried and dropped:
|
|
14
|
+
* the sole renderer is a MUI `ToggleButton` whose `onChange` means exactly
|
|
15
|
+
* "flip", so splitting it adds a member *and* a branch at the one call site that
|
|
16
|
+
* never needed one. `active` is already public for a caller that wants to state a
|
|
17
|
+
* direction. (The house preference for explicit setters over toggles is about MST
|
|
18
|
+
* actions, where a toggle destroys the ability to set a known state; nothing here
|
|
19
|
+
* stores a value.)
|
|
20
|
+
*
|
|
21
|
+
* Lives here, alone and with no imports, rather than beside `makePin` in
|
|
22
|
+
* `promotableDefaults.ts`: the menu types describe a pin without building one,
|
|
23
|
+
* and `MenuTypes.ts` taking this one interface from that module gave a
|
|
24
|
+
* React-free type file a type closure of 374 files. See
|
|
25
|
+
* `agent-docs/ideas/barrels-block-extraction.md` and `scripts/moduleClosure.ts`.
|
|
26
|
+
*/
|
|
27
|
+
export interface Pin {
|
|
28
|
+
/**
|
|
29
|
+
* The promotable slot this pin promotes a value of. Nothing in the UI reads
|
|
30
|
+
* it — a pin renders from `active`, `onValue` and the toggle. It is here so a
|
|
31
|
+
* *built menu* can be asked which promotable slots it offers a pin for, which
|
|
32
|
+
* is the only way that question has an answer: declaring `promotedBase` is a
|
|
33
|
+
* schema fact and the pin is a menu fact, and a display that inherits the slot
|
|
34
|
+
* but never builds a row has a slot nothing can ever promote, silently
|
|
35
|
+
* (`promotableSlotsWithoutPin`, guarded by
|
|
36
|
+
* `products/jbrowse-web/src/tests/PromotablePinCoverage.test.ts`).
|
|
37
|
+
*/
|
|
38
|
+
slot: string;
|
|
39
|
+
/**
|
|
40
|
+
* The value `toggle` promotes — the on-value {@link makePin} was given, or the
|
|
41
|
+
* track's current resolved value for the value-omitted form.
|
|
42
|
+
*
|
|
43
|
+
* `PinAdornment` words itself from this, and has to: a **boolean** on-value
|
|
44
|
+
* promotes a *state*, so a row whose label names the setting rather than a
|
|
45
|
+
* value ("Show legend") gets a pin that promotes hiding the legend as often as
|
|
46
|
+
* showing it. Every other on-value IS what the row's label says — a radio
|
|
47
|
+
* option, a slider's current size — so those keep the value-shaped copy.
|
|
48
|
+
*
|
|
49
|
+
* Required, like `slot`: a pin that cannot say what it promotes is what let
|
|
50
|
+
* that copy state the opposite of what the click does.
|
|
51
|
+
*/
|
|
52
|
+
onValue: unknown;
|
|
53
|
+
active: boolean;
|
|
54
|
+
toggle: () => void;
|
|
55
|
+
}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import type { AnyConfigurationModel } from './types.ts';
|
|
2
|
+
import type { IStateTreeNode } from '@jbrowse/mobx-state-tree';
|
|
3
|
+
/**
|
|
4
|
+
* Everything the cascade needs to read a promotable slot: the display type it
|
|
5
|
+
* keys the session-wide default on, and the config holding the track's own
|
|
6
|
+
* value. Every entry point takes this — `resolveConf`, the control builders,
|
|
7
|
+
* the worker snapshot, the badge diff — so each can take a display state node
|
|
8
|
+
* directly rather than through a cast.
|
|
9
|
+
*
|
|
10
|
+
* Read-only, and there is no write-capable variant. A `PromotableDisplay` used
|
|
11
|
+
* to exist for the one member the subsystem wrote (`setIgnorePromotedDefaults`,
|
|
12
|
+
* the received-session opt-out); with that flag gone the subsystem writes
|
|
13
|
+
* nothing to a display but a config slot, which `setConf` reaches through
|
|
14
|
+
* `configuration`.
|
|
15
|
+
*
|
|
16
|
+
* **`CONF` is a parameter rather than always `AnyConfigurationModel` because
|
|
17
|
+
* intersecting is not narrowing.** A caller wanting the cascade's members *and*
|
|
18
|
+
* a concrete schema — a mixin casting to reach its host — writes
|
|
19
|
+
* `ResolvableDisplay<XConfigModel>`. Spelling it
|
|
20
|
+
* `ResolvableDisplay & { configuration: XConfigModel }` instead reads identical
|
|
21
|
+
* and silently does the opposite: the intersected `configuration` is
|
|
22
|
+
* `AnyConfigurationModel & XConfigModel`, `ConfigurationSchemaForModel` infers
|
|
23
|
+
* the widened brand off it, and every slot name typechecks again. Two mixins
|
|
24
|
+
* shipped that spelling and only a sabotage found it.
|
|
25
|
+
*/
|
|
26
|
+
export type ResolvableDisplay<CONF extends AnyConfigurationModel = AnyConfigurationModel> = IStateTreeNode & {
|
|
27
|
+
type: string;
|
|
28
|
+
configuration: CONF;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Where the session-wide tier of the cascade is read from. Narrowed to the one
|
|
32
|
+
* method so the resolver doesn't depend on the whole session type — and exported
|
|
33
|
+
* for the same reason, so an entry point taking the store directly
|
|
34
|
+
* (`getTrackConfigWithPromotables`) can ask for what it uses instead of for a
|
|
35
|
+
* whole session a test then has to fake.
|
|
36
|
+
*/
|
|
37
|
+
export interface PromotedDefaultStore {
|
|
38
|
+
getDisplayTypeDefault: (displayType: string, slot: string) => unknown;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* The cascade's inputs, stated directly rather than read off a display state
|
|
42
|
+
* node. `ResolvableDisplay` is the usual way to supply them (see
|
|
43
|
+
* `cascadeContextFor`), but nothing here *needs* a state node: the About
|
|
44
|
+
* dialog's "Copy config" resolves a track's display configs directly, which is
|
|
45
|
+
* what lets it answer "what would this render as" for a track that was never
|
|
46
|
+
* opened. Reaching for the open display instead buys nothing — its
|
|
47
|
+
* `configuration` is the same node, and its `type` is that config's own.
|
|
48
|
+
*/
|
|
49
|
+
export interface CascadeContext {
|
|
50
|
+
config: AnyConfigurationModel;
|
|
51
|
+
displayType: string;
|
|
52
|
+
defaults: PromotedDefaultStore;
|
|
53
|
+
}
|
|
54
|
+
export declare function cascadeContextFor(self: ResolvableDisplay): CascadeContext;
|
|
55
|
+
/**
|
|
56
|
+
* What the slot literally holds, unevaluated — a stray `jexl:` string yields the
|
|
57
|
+
* raw string rather than running it. Both callers ask "is the slot set, and to
|
|
58
|
+
* what kind of thing?", which has to be answerable with no feature context.
|
|
59
|
+
*
|
|
60
|
+
* Deliberately not `readConfObject`: for a promotable slot this is the whole
|
|
61
|
+
* stored read, and both of that reader's extra behaviors are unwanted here — it
|
|
62
|
+
* evaluates a `jexl:` string (which `isUsableValue` refuses anyway) and it
|
|
63
|
+
* snapshots an MST-node value, which a `maybe*` slot never holds.
|
|
64
|
+
*/
|
|
65
|
+
export declare function storedSlotValue(config: AnyConfigurationModel, slot: string): unknown;
|
|
66
|
+
/**
|
|
67
|
+
* Whether `value` could actually become this slot's promoted default — the same
|
|
68
|
+
* `isUsableValue` gate the cascade puts both tiers through, asked ahead of time
|
|
69
|
+
* about a value a caller is about to offer as a pin's on-value.
|
|
70
|
+
*
|
|
71
|
+
* Exists because a pin built over a value the gate refuses is inert in a way
|
|
72
|
+
* nothing reports: `applyPinClick` writes it to the session store happily,
|
|
73
|
+
* `resolveSlotIn` then drops it and every track keeps resolving to the tier
|
|
74
|
+
* below, and `isPromotableDefault` compares the *raw* stored value, so the pin
|
|
75
|
+
* draws outline forever while a dead key sits in the user's localStorage. See
|
|
76
|
+
* `makePin`, which is the one caller.
|
|
77
|
+
*/
|
|
78
|
+
export declare function isPromotableValue(config: AnyConfigurationModel, slot: string, value: unknown): boolean;
|
|
79
|
+
/**
|
|
80
|
+
* The outcome of walking the cascade for one slot: the two tiers that fed it,
|
|
81
|
+
* whether the track customized it, and the settled value.
|
|
82
|
+
*
|
|
83
|
+
* There is deliberately **no callback case** — a `jexl:` value fails
|
|
84
|
+
* `isUsableValue` like any other unusable value and degrades to the inherited
|
|
85
|
+
* one, so `value` is always readable. See `isUsableValue`.
|
|
86
|
+
*/
|
|
87
|
+
export interface SlotResolution {
|
|
88
|
+
/** value a track following the default shows with nothing promoted (CSS `initial`) */
|
|
89
|
+
base: unknown;
|
|
90
|
+
/** the raw session-wide promoted default, if any */
|
|
91
|
+
promoted: unknown;
|
|
92
|
+
/** track holds its own value rather than following the default */
|
|
93
|
+
customized: boolean;
|
|
94
|
+
/**
|
|
95
|
+
* the value came from the session-wide tier — the track follows the default
|
|
96
|
+
* *and* that default moves it off `base`. The "this display picked something
|
|
97
|
+
* up from the session" predicate, for the badge diff and the About dialog's
|
|
98
|
+
* copy-config note. A field rather than a `!customized && !deepEqual(value,
|
|
99
|
+
* base)` at each call site, because getting either half wrong is silent:
|
|
100
|
+
* dropping `customized` reports a customized track as inheriting, dropping
|
|
101
|
+
* the `base` compare flags a promoted default that changes nothing.
|
|
102
|
+
*/
|
|
103
|
+
inherited: boolean;
|
|
104
|
+
/** the final cascaded value (never the `undefined` inherit sentinel) */
|
|
105
|
+
value: unknown;
|
|
106
|
+
}
|
|
107
|
+
export declare function resolveSlot(self: ResolvableDisplay, slot: string): SlotResolution;
|
|
108
|
+
export declare function resolveSlotIn(ctx: CascadeContext, slot: string): SlotResolution;
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module
|
|
3
|
+
* The read-time resolver behind `promotable` config slots — a small CSS cascade
|
|
4
|
+
* for one slot: the track's own set value -> the session-wide default for its
|
|
5
|
+
* display type -> the slot's `promotedBase`. `resolveSlotIn` is the whole of it;
|
|
6
|
+
* `resolveConf` and the control builders in `promotableDefaults.ts` each read a
|
|
7
|
+
* field off the `SlotResolution` it returns.
|
|
8
|
+
*
|
|
9
|
+
* Mechanism: `agent-docs/reference/DISPLAY_TYPE_DEFAULTS.md`. Two decisions this
|
|
10
|
+
* file rests on: resolution is named at its call sites rather than folded into
|
|
11
|
+
* `getConf` (ADR-046), and unset is the only inherit sentinel — so declaring
|
|
12
|
+
* `promotedBase` is what makes a slot promotable (ADR-047, enforced by
|
|
13
|
+
* `ConfigSlot`).
|
|
14
|
+
*
|
|
15
|
+
* Every comparison against a promoted or base value is `deepEqual`, never `===`:
|
|
16
|
+
* an object-valued slot (`maybeFrozen`, e.g. alignments `colorBy`) reconstructs a
|
|
17
|
+
* fresh value out of MST that is never `===` its stored twin, so `===` would read
|
|
18
|
+
* it as permanently differing and no pin would ever light up.
|
|
19
|
+
*
|
|
20
|
+
* The gate a candidate value passes to count at all is `isUsableValue`, in
|
|
21
|
+
* `slotShape.ts` — shared with `ConfigSlot`, which applies it to `promotedBase`
|
|
22
|
+
* at construction so the tier this file falls back to is usable by construction.
|
|
23
|
+
*/
|
|
24
|
+
import { deepEqual } from '../util/deepEqual.js';
|
|
25
|
+
import { getSession } from '../util/mstUtils.js';
|
|
26
|
+
import { getSlotDefinition } from './slotFacade.js';
|
|
27
|
+
import { isUsableValue } from './slotShape.js';
|
|
28
|
+
export function cascadeContextFor(self) {
|
|
29
|
+
return {
|
|
30
|
+
config: self.configuration,
|
|
31
|
+
displayType: self.type,
|
|
32
|
+
defaults: getSession(self),
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* What the slot literally holds, unevaluated — a stray `jexl:` string yields the
|
|
37
|
+
* raw string rather than running it. Both callers ask "is the slot set, and to
|
|
38
|
+
* what kind of thing?", which has to be answerable with no feature context.
|
|
39
|
+
*
|
|
40
|
+
* Deliberately not `readConfObject`: for a promotable slot this is the whole
|
|
41
|
+
* stored read, and both of that reader's extra behaviors are unwanted here — it
|
|
42
|
+
* evaluates a `jexl:` string (which `isUsableValue` refuses anyway) and it
|
|
43
|
+
* snapshots an MST-node value, which a `maybe*` slot never holds.
|
|
44
|
+
*/
|
|
45
|
+
export function storedSlotValue(config, slot) {
|
|
46
|
+
return config[slot];
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Whether `value` could actually become this slot's promoted default — the same
|
|
50
|
+
* `isUsableValue` gate the cascade puts both tiers through, asked ahead of time
|
|
51
|
+
* about a value a caller is about to offer as a pin's on-value.
|
|
52
|
+
*
|
|
53
|
+
* Exists because a pin built over a value the gate refuses is inert in a way
|
|
54
|
+
* nothing reports: `applyPinClick` writes it to the session store happily,
|
|
55
|
+
* `resolveSlotIn` then drops it and every track keeps resolving to the tier
|
|
56
|
+
* below, and `isPromotableDefault` compares the *raw* stored value, so the pin
|
|
57
|
+
* draws outline forever while a dead key sits in the user's localStorage. See
|
|
58
|
+
* `makePin`, which is the one caller.
|
|
59
|
+
*/
|
|
60
|
+
export function isPromotableValue(config, slot, value) {
|
|
61
|
+
return isUsableValue(getSlotDefinition(config, slot), value);
|
|
62
|
+
}
|
|
63
|
+
// The whole three-tier cascade for one slot, in one place. `resolveConf` is the
|
|
64
|
+
// public reader over it, and the control builders in `promotableDefaults.ts`
|
|
65
|
+
// read a field off it.
|
|
66
|
+
export function resolveSlot(self, slot) {
|
|
67
|
+
return resolveSlotIn(cascadeContextFor(self), slot);
|
|
68
|
+
}
|
|
69
|
+
// The cascade over explicit inputs. `resolveSlot` is the display-state spelling
|
|
70
|
+
// of this and the one nearly every consumer wants; the direct form exists for
|
|
71
|
+
// the config-only path (a track that isn't open has no display state — see
|
|
72
|
+
// `CascadeContext`).
|
|
73
|
+
export function resolveSlotIn(ctx, slot) {
|
|
74
|
+
const def = getSlotDefinition(ctx.config, slot);
|
|
75
|
+
// A plain slot would otherwise resolve silently wrong here — with no
|
|
76
|
+
// `promotedBase` every tier collapses to `undefined` — and, through a control
|
|
77
|
+
// builder, write a promoted default nothing ever reads. `getSlotDefinition`
|
|
78
|
+
// already throws on a slot name that doesn't exist at all.
|
|
79
|
+
//
|
|
80
|
+
// Declaring `promotedBase` is what makes a slot promotable, so its absence is
|
|
81
|
+
// the whole test; there is no separate flag that could disagree with it.
|
|
82
|
+
if (def.promotedBase === undefined) {
|
|
83
|
+
throw new Error(`config slot "${slot}" is not promotable`);
|
|
84
|
+
}
|
|
85
|
+
// the slot's CSS `initial`
|
|
86
|
+
const base = def.promotedBase;
|
|
87
|
+
// a session-wide fact, and `isPromotableDefault` (the pin's filled/outline
|
|
88
|
+
// state) reports on the session, not on one display's view of it
|
|
89
|
+
const promoted = ctx.defaults.getDisplayTypeDefault(ctx.displayType, slot);
|
|
90
|
+
const own = storedSlotValue(ctx.config, slot);
|
|
91
|
+
// A track is customized exactly when it holds a *usable* value — being unset
|
|
92
|
+
// is the inherit sentinel, so "set to something the slot could hold" is the
|
|
93
|
+
// whole test. Routing `own` through the same gate as a promoted default is
|
|
94
|
+
// what makes a malformed or stale own value (a saved `colorBy` naming a
|
|
95
|
+
// since-removed scheme) read as not-customized and degrade in lockstep,
|
|
96
|
+
// instead of reaching a consumer that trusts every value it sees.
|
|
97
|
+
const customized = isUsableValue(def, own);
|
|
98
|
+
const inheritedValue = isUsableValue(def, promoted) ? promoted : base;
|
|
99
|
+
// A customized value wins unconditionally, which is what makes the share bake
|
|
100
|
+
// sufficient on its own: a baked value lands in the track's config, so the
|
|
101
|
+
// recipient reads it as customized and their own promoted default never gets
|
|
102
|
+
// consulted. The one case a bake cannot cover is the sender sitting at `base`
|
|
103
|
+
// while the recipient has promoted something — nothing is baked (the value
|
|
104
|
+
// *is* base, and `stripDefault` drops it from the snapshot), so the recipient
|
|
105
|
+
// resolves it from their own cascade. That is accepted: a promoted default is
|
|
106
|
+
// personal and local, exactly like the theme a session is viewed in, and the
|
|
107
|
+
// alternative was a per-display `ignorePromotedDefaults` flag that also
|
|
108
|
+
// detached received tracks from the recipient's own pins for good.
|
|
109
|
+
const value = customized ? own : inheritedValue;
|
|
110
|
+
return {
|
|
111
|
+
base,
|
|
112
|
+
customized,
|
|
113
|
+
promoted,
|
|
114
|
+
inherited: !customized && !deepEqual(value, base),
|
|
115
|
+
value,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { AnyConfigurationModel } from './types.ts';
|
|
2
|
+
import type { IAnyType } from '@jbrowse/mobx-state-tree';
|
|
3
|
+
/**
|
|
4
|
+
* Takes a live config node *or* the schema type itself, for the reason
|
|
5
|
+
* `getConfigurationSchemaDefinition` does: every resolver here holds a node,
|
|
6
|
+
* while a caller enumerating registered display types
|
|
7
|
+
* (`displayTypesWithPromotableSlots`) holds only `DisplayType.configSchema` and
|
|
8
|
+
* has nothing to create a node from. Caching under whichever handle it was
|
|
9
|
+
* given is safe — a schema registers both its outer `stripDefault` wrapper and
|
|
10
|
+
* its inner model against the same slot table, so the two entries agree.
|
|
11
|
+
*/
|
|
12
|
+
export declare function promotableSlotNames(configOrType: AnyConfigurationModel | IAnyType): ReadonlySet<string>;
|