@jbrowse/core 4.3.0 → 5.0.0-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1994 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.d.ts +14 -3
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.js +36 -23
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.d.ts +10 -7
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.js +124 -21
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseAttributes.d.ts +2 -8
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseAttributes.js +4 -4
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCard.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCard.js +2 -5
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCoreDetails.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCoreDetails.js +4 -4
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BasicValue.d.ts +12 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BasicValue.js +19 -5
- package/esm/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.js +18 -23
- package/esm/BaseFeatureWidget/BaseFeatureDetail/DataGridDetails.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/DataGridDetails.js +19 -40
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.d.ts +9 -6
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.js +33 -30
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetailsFrame.d.ts +11 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetailsFrame.js +11 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureWash.d.ts +20 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureWash.js +66 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldActionsButton.d.ts +8 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldActionsButton.js +24 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldName.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldName.js +2 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Formatter.d.ts +3 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Formatter.js +19 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ParentFeatureLine.d.ts +4 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ParentFeatureLine.js +17 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/SimpleField.d.ts +5 -3
- package/esm/BaseFeatureWidget/BaseFeatureDetail/SimpleField.js +8 -6
- package/esm/BaseFeatureWidget/BaseFeatureDetail/UriField.d.ts +3 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/UriField.js +7 -14
- package/esm/BaseFeatureWidget/BaseFeatureDetail/index.d.ts +7 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/index.js +15 -20
- package/esm/BaseFeatureWidget/BaseFeatureDetail/jexlFilterActions.d.ts +16 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/jexlFilterActions.js +50 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/util.d.ts +0 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/util.js +9 -10
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceBody.d.ts +18 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceBody.js +10 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceContents.d.ts +7 -4
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceContents.js +35 -24
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureDetails.d.ts +10 -5
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureDetails.js +64 -41
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeaturePanel.d.ts +3 -3
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeaturePanel.js +17 -8
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceLegend.d.ts +6 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceLegend.js +19 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceName.d.ts +5 -4
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceName.js +15 -18
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequencePanel.d.ts +1 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequencePanel.js +33 -17
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/consts.d.ts +3 -3
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/consts.js +7 -3
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/FeatureSequenceDialog.d.ts +11 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/FeatureSequenceDialog.js +29 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/HelpDialog.d.ts +1 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/HelpDialog.js +4 -6
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceDialog.d.ts +18 -6
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceDialog.js +11 -29
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceFeatureMenu.d.ts +9 -2
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceFeatureMenu.js +63 -58
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceTypeSelector.d.ts +7 -3
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceTypeSelector.js +38 -51
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SettingsDialog.d.ts +1 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SettingsDialog.js +19 -27
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/TranscriptSelector.d.ts +6 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/TranscriptSelector.js +20 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/featureTypeUtil.d.ts +12 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/featureTypeUtil.js +97 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/index.js +1 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/model.d.ts +62 -63
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/model.js +69 -59
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/panelAssemblyName.d.ts +21 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/panelAssemblyName.js +24 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDNASequence.d.ts +5 -3
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDNASequence.js +93 -75
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDSSequence.d.ts +1 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDSSequence.js +4 -11
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/GenomicSequence.d.ts +5 -2
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/GenomicSequence.js +21 -48
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/PlainSequence.d.ts +8 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/PlainSequence.js +20 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/ProteinSequence.d.ts +6 -3
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/ProteinSequence.js +33 -13
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/SequenceDisplay.d.ts +7 -4
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/SequenceDisplay.js +67 -11
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/renderSequenceSegments.d.ts +14 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/renderSequenceSegments.js +42 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/types.d.ts +8 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/useSequenceData.d.ts +9 -9
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/useSequenceData.js +28 -44
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/useSequenceFetch.d.ts +23 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/useSequenceFetch.js +31 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/util.d.ts +90 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/util.js +145 -23
- package/esm/BaseFeatureWidget/configSchema.d.ts +1 -1
- package/esm/BaseFeatureWidget/configSchema.js +1 -1
- package/esm/BaseFeatureWidget/formatDetails.d.ts +22 -0
- package/esm/BaseFeatureWidget/formatDetails.js +82 -0
- package/esm/BaseFeatureWidget/index.d.ts +4 -1
- package/esm/BaseFeatureWidget/index.js +2 -2
- package/esm/BaseFeatureWidget/stateModelFactory.d.ts +102 -71
- package/esm/BaseFeatureWidget/stateModelFactory.js +162 -63
- package/esm/BaseFeatureWidget/types.d.ts +15 -8
- package/esm/BaseFeatureWidget/util.d.ts +2 -37
- package/esm/BaseFeatureWidget/util.js +4 -85
- package/esm/CorePlugin.js +12 -7
- package/esm/PhasedScheduler.d.ts +4 -2
- package/esm/PhasedScheduler.js +18 -2
- package/esm/Plugin.d.ts +6 -1
- package/esm/Plugin.js +7 -0
- package/esm/PluginLoader.d.ts +55 -44
- package/esm/PluginLoader.js +290 -90
- package/esm/PluginManager.d.ts +476 -57
- package/esm/PluginManager.js +480 -91
- package/esm/ReExports/MuiDataGridReExports.d.ts +3 -2
- package/esm/ReExports/MuiDataGridReExports.js +58 -130
- package/esm/ReExports/MuiReExports.d.ts +3 -134
- package/esm/ReExports/MuiReExports.js +43 -16
- package/esm/ReExports/MuiStylesReExports.d.ts +66 -0
- package/esm/ReExports/MuiStylesReExports.js +55 -0
- package/esm/ReExports/coreModules.generated.d.ts +2 -0
- package/esm/ReExports/coreModules.generated.js +528 -0
- package/esm/ReExports/coreWorkerModules.generated.d.ts +2 -0
- package/esm/ReExports/coreWorkerModules.generated.js +488 -0
- package/esm/ReExports/frameworkModules.d.ts +2 -0
- package/esm/ReExports/frameworkModules.js +68 -0
- package/esm/ReExports/frameworkShared.d.ts +12 -0
- package/esm/ReExports/frameworkShared.js +16 -0
- package/esm/ReExports/frameworkWorkerModules.generated.d.ts +2 -0
- package/esm/ReExports/frameworkWorkerModules.generated.js +130 -0
- package/esm/ReExports/lazify.d.ts +2 -2
- package/esm/ReExports/lazify.js +16 -3
- package/esm/ReExports/list.js +433 -160
- package/esm/ReExports/modules.d.ts +1 -1
- package/esm/ReExports/modules.js +10 -146
- package/esm/ReExports/muiComponentNames.d.ts +18 -0
- package/esm/ReExports/muiComponentNames.js +130 -0
- package/esm/ReExports/registry.d.ts +3 -0
- package/esm/ReExports/registry.js +46 -0
- package/esm/ReExports/uiStub.d.ts +3 -0
- package/esm/ReExports/uiStub.js +33 -0
- package/esm/ReExports/workerModules.d.ts +2 -0
- package/esm/ReExports/workerModules.js +11 -0
- package/esm/TextSearch/BaseResults.d.ts +20 -21
- package/esm/TextSearch/BaseResults.js +8 -33
- package/esm/TextSearch/TextSearchManager.d.ts +30 -36
- package/esm/TextSearch/TextSearchManager.js +138 -44
- package/esm/TextSearch/places.d.ts +12 -0
- package/esm/TextSearch/places.js +94 -0
- package/esm/assemblyManager/assembly.d.ts +310 -35
- package/esm/assemblyManager/assembly.js +554 -263
- package/esm/assemblyManager/assemblyAdapters.d.ts +12 -0
- package/esm/assemblyManager/assemblyAdapters.js +24 -0
- package/esm/assemblyManager/assemblyConfigSchema.d.ts +135 -19
- package/esm/assemblyManager/assemblyConfigSchema.js +205 -23
- package/esm/assemblyManager/assemblyManager.d.ts +586 -323
- package/esm/assemblyManager/assemblyManager.js +352 -51
- package/esm/assemblyManager/expandAssemblyConfigShorthand.d.ts +39 -0
- package/esm/assemblyManager/expandAssemblyConfigShorthand.js +114 -0
- package/esm/assemblyManager/geneticCodes.d.ts +21 -0
- package/esm/assemblyManager/geneticCodes.js +44 -0
- package/esm/assemblyManager/getSequenceAdapterConfig.d.ts +19 -0
- package/esm/assemblyManager/getSequenceAdapterConfig.js +22 -0
- package/esm/assemblyManager/index.d.ts +1 -1
- package/esm/assemblyManager/index.js +2 -2
- package/esm/assemblyManager/indexAssemblyNames.d.ts +9 -0
- package/esm/assemblyManager/indexAssemblyNames.js +22 -0
- package/esm/assemblyManager/loadRefNameMap.d.ts +5 -0
- package/esm/assemblyManager/loadRefNameMap.js +75 -0
- package/esm/assemblyManager/refNameColors.d.ts +1 -0
- package/esm/assemblyManager/refNameColors.js +32 -0
- package/esm/assemblyManager/refNameMapKey.d.ts +7 -0
- package/esm/assemblyManager/refNameMapKey.js +12 -0
- package/esm/assemblyManager/refNameMaps.d.ts +26 -0
- package/esm/assemblyManager/refNameMaps.js +87 -0
- package/esm/assemblyManager/refNameMismatch.d.ts +54 -0
- package/esm/assemblyManager/refNameMismatch.js +66 -0
- package/esm/checkPlugins.d.ts +13 -0
- package/esm/checkPlugins.js +98 -0
- package/esm/configuration/bamIndexFields.d.ts +49 -0
- package/esm/configuration/bamIndexFields.js +41 -0
- package/esm/configuration/configurationSchema.d.ts +194 -29
- package/esm/configuration/configurationSchema.js +439 -145
- package/esm/configuration/configurationSchemaUnion.d.ts +39 -0
- package/esm/configuration/configurationSchemaUnion.js +56 -0
- package/esm/configuration/configurationSlot.d.ts +373 -30
- package/esm/configuration/configurationSlot.js +231 -224
- package/esm/configuration/fillLocations.d.ts +14 -0
- package/esm/configuration/fillLocations.js +14 -0
- package/esm/configuration/formatAboutConfigSchema.d.ts +41 -0
- package/esm/configuration/formatAboutConfigSchema.js +58 -0
- package/esm/configuration/formatDetailsConfigSchema.d.ts +54 -0
- package/esm/configuration/formatDetailsConfigSchema.js +87 -0
- package/esm/configuration/fullConfSnapshot.d.ts +13 -0
- package/esm/configuration/fullConfSnapshot.js +44 -0
- package/esm/configuration/getConf.d.ts +92 -0
- package/esm/configuration/getConf.js +141 -0
- package/esm/configuration/index.d.ts +32 -3
- package/esm/configuration/index.js +27 -2
- package/esm/configuration/indexType.d.ts +26 -0
- package/esm/configuration/indexType.js +38 -0
- package/esm/configuration/mergeFormatCallbacks.d.ts +14 -0
- package/esm/configuration/mergeFormatCallbacks.js +27 -0
- package/esm/configuration/readConfObject.d.ts +34 -0
- package/esm/configuration/readConfObject.js +118 -0
- package/esm/configuration/requirements.d.ts +37 -0
- package/esm/configuration/requirements.js +88 -0
- package/esm/configuration/schemaRegistry.d.ts +52 -0
- package/esm/configuration/schemaRegistry.js +48 -0
- package/esm/configuration/schemaTypes.d.ts +39 -0
- package/esm/configuration/schemaTypes.js +105 -0
- package/esm/configuration/slotFacade.d.ts +65 -0
- package/esm/configuration/slotFacade.js +110 -0
- package/esm/configuration/slotValueUtils.d.ts +17 -0
- package/esm/configuration/slotValueUtils.js +25 -0
- package/esm/configuration/snapshotPreprocess.d.ts +43 -0
- package/esm/configuration/snapshotPreprocess.js +161 -0
- package/esm/configuration/tabixIndexFields.d.ts +70 -0
- package/esm/configuration/tabixIndexFields.js +62 -0
- package/esm/configuration/tabixShorthand.d.ts +51 -0
- package/esm/configuration/tabixShorthand.js +72 -0
- package/esm/configuration/types.d.ts +315 -13
- package/esm/configuration/uriShorthand.d.ts +9 -0
- package/esm/configuration/uriShorthand.js +16 -0
- package/esm/data_adapters/BaseAdapter/BaseAdapter.d.ts +19 -11
- package/esm/data_adapters/BaseAdapter/BaseAdapter.js +19 -18
- package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.d.ts +158 -7
- package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.js +164 -29
- package/esm/data_adapters/BaseAdapter/BaseRefNameAliasAdapter.d.ts +1 -0
- package/esm/data_adapters/BaseAdapter/BaseSequenceAdapter.d.ts +13 -5
- package/esm/data_adapters/BaseAdapter/BaseSequenceAdapter.js +9 -7
- package/esm/data_adapters/BaseAdapter/BaseTextSearchAdapter.d.ts +2 -1
- package/esm/data_adapters/BaseAdapter/CytobandAdapter.d.ts +7 -0
- package/esm/data_adapters/BaseAdapter/RegionsAdapter.d.ts +2 -1
- package/esm/data_adapters/BaseAdapter/featureDensity.d.ts +40 -0
- package/esm/data_adapters/BaseAdapter/featureDensity.js +31 -0
- package/esm/data_adapters/BaseAdapter/getAdapterId.d.ts +2 -0
- package/esm/data_adapters/BaseAdapter/getAdapterId.js +9 -0
- package/esm/data_adapters/BaseAdapter/index.d.ts +28 -6
- package/esm/data_adapters/BaseAdapter/index.js +6 -5
- package/esm/data_adapters/BaseAdapter/rowSources.d.ts +37 -0
- package/esm/data_adapters/BaseAdapter/rowSources.js +7 -0
- package/esm/data_adapters/BaseAdapter/stats.d.ts +37 -5
- package/esm/data_adapters/BaseAdapter/stats.js +89 -24
- package/esm/data_adapters/BaseAdapter/types.d.ts +11 -13
- package/esm/data_adapters/BaseAdapter/types.js +1 -0
- package/esm/data_adapters/BaseAdapter/util.d.ts +5 -1
- package/esm/data_adapters/BaseAdapter/util.js +14 -3
- package/esm/data_adapters/BaseAdapter/zoomRange.d.ts +10 -0
- package/esm/data_adapters/CytobandAdapter/CytobandAdapter.d.ts +1 -1
- package/esm/data_adapters/CytobandAdapter/CytobandAdapter.js +5 -5
- package/esm/data_adapters/CytobandAdapter/configSchema.d.ts +34 -6
- package/esm/data_adapters/CytobandAdapter/configSchema.js +47 -17
- package/esm/data_adapters/CytobandAdapter/index.js +3 -3
- package/esm/data_adapters/adapterSessionRefcount.d.ts +61 -0
- package/esm/data_adapters/adapterSessionRefcount.js +96 -0
- package/esm/data_adapters/dataAdapterCache.d.ts +53 -2
- package/esm/data_adapters/dataAdapterCache.js +99 -25
- package/esm/data_adapters/getFeatureAdapter.d.ts +24 -0
- package/esm/data_adapters/getFeatureAdapter.js +27 -0
- package/esm/data_adapters/getSequenceSubAdapter.d.ts +19 -0
- package/esm/data_adapters/getSequenceSubAdapter.js +42 -0
- package/esm/pluggableElementTypes/AdapterType.d.ts +57 -7
- package/esm/pluggableElementTypes/AdapterType.js +44 -5
- package/esm/pluggableElementTypes/AddTrackWorkflowType.d.ts +6 -1
- package/esm/pluggableElementTypes/AddTrackWorkflowType.js +3 -1
- package/esm/pluggableElementTypes/ConnectionType.d.ts +5 -5
- package/esm/pluggableElementTypes/ConnectionType.js +1 -1
- package/esm/pluggableElementTypes/DisplayType.d.ts +54 -14
- package/esm/pluggableElementTypes/DisplayType.js +30 -7
- package/esm/pluggableElementTypes/InternetAccountType.js +1 -1
- package/esm/pluggableElementTypes/LazyStateModelElement.d.ts +32 -0
- package/esm/pluggableElementTypes/LazyStateModelElement.js +77 -0
- package/esm/pluggableElementTypes/PluggableElementBase.d.ts +11 -0
- package/esm/pluggableElementTypes/PluggableElementBase.js +11 -0
- package/esm/pluggableElementTypes/RpcMethodType.d.ts +142 -12
- package/esm/pluggableElementTypes/RpcMethodType.js +279 -98
- package/esm/pluggableElementTypes/RpcMethodTypeWithFiltersAndRenameRegions.d.ts +18 -9
- package/esm/pluggableElementTypes/RpcMethodTypeWithFiltersAndRenameRegions.js +26 -20
- package/esm/pluggableElementTypes/RpcMethodTypeWithRenameRegion.d.ts +5 -0
- package/esm/pluggableElementTypes/RpcMethodTypeWithRenameRegion.js +18 -0
- package/esm/pluggableElementTypes/RpcMethodTypeWithRenameRegions.d.ts +5 -0
- package/esm/pluggableElementTypes/RpcMethodTypeWithRenameRegions.js +10 -0
- package/esm/pluggableElementTypes/TextSearchAdapterType.d.ts +7 -7
- package/esm/pluggableElementTypes/TextSearchAdapterType.js +3 -1
- package/esm/pluggableElementTypes/TrackType.d.ts +2 -1
- package/esm/pluggableElementTypes/TrackType.js +1 -1
- package/esm/pluggableElementTypes/ViewType.d.ts +22 -5
- package/esm/pluggableElementTypes/ViewType.js +40 -5
- package/esm/pluggableElementTypes/WidgetType.d.ts +2 -2
- package/esm/pluggableElementTypes/WidgetType.js +1 -1
- package/esm/pluggableElementTypes/addMenuItems.d.ts +88 -0
- package/esm/pluggableElementTypes/addMenuItems.js +82 -0
- package/esm/pluggableElementTypes/extendElementType.d.ts +29 -0
- package/esm/pluggableElementTypes/extendElementType.js +72 -0
- package/esm/pluggableElementTypes/index.d.ts +8 -7
- package/esm/pluggableElementTypes/index.js +24 -14
- package/esm/pluggableElementTypes/models/BaseConnectionModelFactory.d.ts +80 -15
- package/esm/pluggableElementTypes/models/BaseConnectionModelFactory.js +90 -10
- package/esm/pluggableElementTypes/models/BaseDisplayModel.d.ts +643 -84
- package/esm/pluggableElementTypes/models/BaseDisplayModel.js +230 -60
- package/esm/pluggableElementTypes/models/BaseTrackModel.d.ts +246 -37
- package/esm/pluggableElementTypes/models/BaseTrackModel.js +416 -107
- package/esm/pluggableElementTypes/models/BaseViewModel.d.ts +236 -16
- package/esm/pluggableElementTypes/models/BaseViewModel.js +154 -16
- package/esm/pluggableElementTypes/models/InternetAccountModel.d.ts +169 -25
- package/esm/pluggableElementTypes/models/InternetAccountModel.js +218 -48
- package/esm/pluggableElementTypes/models/assertDisplayContract.d.ts +178 -0
- package/esm/pluggableElementTypes/models/assertDisplayContract.js +239 -0
- package/esm/pluggableElementTypes/models/baseConnectionConfig.d.ts +26 -8
- package/esm/pluggableElementTypes/models/baseConnectionConfig.js +18 -2
- package/esm/pluggableElementTypes/models/baseInternetAccountConfig.d.ts +31 -17
- package/esm/pluggableElementTypes/models/baseInternetAccountConfig.js +23 -2
- package/esm/pluggableElementTypes/models/baseTrackConfig.d.ts +142 -65
- package/esm/pluggableElementTypes/models/baseTrackConfig.js +215 -90
- package/esm/pluggableElementTypes/models/components/SaveTrackData.d.ts +3 -8
- package/esm/pluggableElementTypes/models/components/SaveTrackData.js +111 -139
- package/esm/pluggableElementTypes/models/components/fetchTrackData.d.ts +54 -0
- package/esm/pluggableElementTypes/models/components/fetchTrackData.js +83 -0
- package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.d.ts +50 -0
- package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.js +147 -0
- package/esm/pluggableElementTypes/models/index.d.ts +5 -3
- package/esm/pluggableElementTypes/models/index.js +9 -8
- package/esm/pluggableElementTypes/models/migrateTrackConfig.d.ts +48 -0
- package/esm/pluggableElementTypes/models/migrateTrackConfig.js +114 -0
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/bed.js +75 -7
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.d.ts +10 -3
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.js +272 -100
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/gff3.d.ts +6 -1
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/gff3.js +70 -74
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/types.d.ts +9 -1
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/util.d.ts +21 -0
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/util.js +51 -0
- package/esm/pluggableElementTypes/models/uriMatchesDomains.d.ts +29 -0
- package/esm/pluggableElementTypes/models/uriMatchesDomains.js +62 -0
- package/esm/pluggableElementTypes/renderers/util/serializableFilterChain.d.ts +5 -4
- package/esm/pluggableElementTypes/renderers/util/serializableFilterChain.js +20 -10
- package/esm/pluginDefinitions.d.ts +225 -0
- package/esm/pluginDefinitions.js +254 -0
- package/esm/rpc/BaseRpcDriver.d.ts +27 -35
- package/esm/rpc/BaseRpcDriver.js +68 -106
- package/esm/rpc/MainThreadRpcDriver.d.ts +9 -10
- package/esm/rpc/MainThreadRpcDriver.js +23 -29
- package/esm/rpc/RpcClient.d.ts +50 -0
- package/esm/rpc/RpcClient.js +189 -0
- package/esm/rpc/RpcManager.d.ts +120 -27
- package/esm/rpc/RpcManager.js +187 -50
- package/esm/rpc/RpcRegistry.d.ts +298 -0
- package/esm/rpc/RpcServer.d.ts +43 -0
- package/esm/rpc/RpcServer.js +242 -0
- package/esm/rpc/WebWorkerRpcDriver.d.ts +78 -24
- package/esm/rpc/WebWorkerRpcDriver.js +311 -30
- package/esm/rpc/byteBudget.d.ts +64 -0
- package/esm/rpc/byteBudget.js +61 -0
- package/esm/rpc/configSchema.d.ts +13 -5
- package/esm/rpc/configSchema.js +40 -16
- package/esm/rpc/coreRpcMethods.d.ts +6 -5
- package/esm/rpc/coreRpcMethods.js +13 -12
- package/esm/rpc/explainTransferError.d.ts +35 -0
- package/esm/rpc/explainTransferError.js +158 -0
- package/esm/rpc/methods/CoreFreeResources.d.ts +19 -4
- package/esm/rpc/methods/CoreFreeResources.js +17 -6
- package/esm/rpc/methods/CoreGetEncodedFeature.d.ts +13 -0
- package/esm/rpc/methods/CoreGetEncodedFeature.js +32 -0
- package/esm/rpc/methods/CoreGetEncodedLayers.d.ts +16 -0
- package/esm/rpc/methods/CoreGetEncodedLayers.js +59 -0
- package/esm/rpc/methods/CoreGetExportData.d.ts +5 -18
- package/esm/rpc/methods/CoreGetExportData.js +25 -15
- package/esm/rpc/methods/CoreGetFeatureDensity.d.ts +11 -0
- package/esm/rpc/methods/CoreGetFeatureDensity.js +22 -0
- package/esm/rpc/methods/CoreGetFeatures.d.ts +6 -15
- package/esm/rpc/methods/CoreGetFeatures.js +14 -18
- package/esm/rpc/methods/CoreGetInfo.d.ts +6 -0
- package/esm/rpc/methods/CoreGetInfo.js +12 -0
- package/esm/rpc/methods/CoreGetMetadata.d.ts +4 -7
- package/esm/rpc/methods/CoreGetMetadata.js +6 -9
- package/esm/rpc/methods/CoreGetRefNames.d.ts +4 -8
- package/esm/rpc/methods/CoreGetRefNames.js +16 -15
- package/esm/rpc/methods/CoreGetRegionByteEstimate.d.ts +6 -0
- package/esm/rpc/methods/CoreGetRegionByteEstimate.js +19 -0
- package/esm/rpc/methods/CoreGetRegions.d.ts +4 -6
- package/esm/rpc/methods/CoreGetRegions.js +6 -9
- package/esm/rpc/methods/CoreGetSequence.d.ts +4 -11
- package/esm/rpc/methods/CoreGetSequence.js +12 -13
- package/esm/rpc/methods/CoreLoadAdapterCode.d.ts +13 -0
- package/esm/rpc/methods/CoreLoadAdapterCode.js +16 -0
- package/esm/rpc/methods/layerFeatures.d.ts +33 -0
- package/esm/rpc/methods/layerFeatures.js +29 -0
- package/esm/rpc/serializeError/index.d.ts +9 -0
- package/esm/rpc/serializeError/index.js +86 -0
- package/esm/svg/SvgExport.d.ts +30 -0
- package/esm/svg/SvgExport.js +52 -0
- package/esm/svg/SvgThemeProviders.d.ts +12 -0
- package/esm/svg/SvgThemeProviders.js +15 -0
- package/esm/svg/constants.d.ts +1 -0
- package/esm/svg/constants.js +5 -0
- package/esm/svg/exportViewSvg.d.ts +28 -0
- package/esm/svg/exportViewSvg.js +13 -0
- package/esm/svg/normalizeSvgMarkup.d.ts +7 -0
- package/esm/svg/normalizeSvgMarkup.js +99 -0
- package/esm/svg/saveSvgAsImage.d.ts +6 -0
- package/esm/svg/saveSvgAsImage.js +90 -0
- package/esm/svg/serializeSvg.d.ts +7 -0
- package/esm/svg/serializeSvg.js +11 -0
- package/esm/svg/svgId.d.ts +42 -0
- package/esm/svg/svgId.js +84 -0
- package/esm/svg/svgReady.d.ts +138 -0
- package/esm/svg/svgReady.js +165 -0
- package/esm/svg/trackNames.d.ts +29 -0
- package/esm/svg/trackNames.js +34 -0
- package/esm/svg/wrapSvgExport.d.ts +12 -0
- package/esm/svg/wrapSvgExport.js +10 -0
- package/esm/ui/ActionLink.d.ts +7 -0
- package/esm/ui/ActionLink.js +9 -0
- package/esm/ui/AddCustomPluginDialog.d.ts +14 -0
- package/esm/ui/AddCustomPluginDialog.js +56 -0
- package/esm/ui/AddGenomePane.d.ts +8 -0
- package/esm/ui/AddGenomePane.js +228 -0
- package/esm/ui/AdvancedOptions.d.ts +6 -0
- package/esm/ui/AdvancedOptions.js +17 -0
- package/esm/ui/AppLogo.d.ts +1 -1
- package/esm/ui/AppLogo.js +2 -2
- package/esm/ui/AppReadyMarker.d.ts +45 -0
- package/esm/ui/AppReadyMarker.js +89 -0
- package/esm/ui/AssemblySelector.d.ts +5 -8
- package/esm/ui/AssemblySelector.js +8 -26
- package/esm/ui/BaseExportSvgDialog.d.ts +16 -0
- package/esm/ui/BaseExportSvgDialog.js +84 -0
- package/esm/ui/BaseTooltip.d.ts +14 -3
- package/esm/ui/BaseTooltip.js +151 -34
- package/esm/ui/CascadingMenu.d.ts +9 -18
- package/esm/ui/CascadingMenu.js +446 -42
- package/esm/ui/CascadingMenuButton.d.ts +9 -11
- package/esm/ui/CascadingMenuButton.js +36 -18
- package/esm/ui/CascadingMenuHelpDialog.d.ts +2 -2
- package/esm/ui/CascadingMenuHelpDialog.js +4 -5
- package/esm/ui/CascadingMenuHelpIconButton.d.ts +2 -1
- package/esm/ui/CascadingMenuHelpIconButton.js +18 -9
- package/esm/ui/ColorPicker.d.ts +6 -9
- package/esm/ui/ColorPicker.js +36 -39
- package/esm/ui/ConfirmDialog.d.ts +2 -9
- package/esm/ui/ConfirmDialog.js +6 -9
- package/esm/ui/ContextMenu.d.ts +50 -0
- package/esm/ui/ContextMenu.js +55 -0
- package/esm/ui/CopyToClipboardButton.d.ts +10 -0
- package/esm/ui/CopyToClipboardButton.js +14 -0
- package/esm/ui/Crosshairs.d.ts +10 -0
- package/esm/ui/Crosshairs.js +15 -0
- package/esm/ui/DOMPurifySanitizedHTML.d.ts +1 -1
- package/esm/ui/DOMPurifySanitizedHTML.js +5 -5
- package/esm/ui/DataGridFlexContainer.d.ts +9 -2
- package/esm/ui/DataGridFlexContainer.js +4 -3
- package/esm/ui/Dialog.d.ts +5 -2
- package/esm/ui/Dialog.js +35 -27
- package/esm/ui/DraggableDialog.d.ts +3 -3
- package/esm/ui/DraggableDialog.js +50 -12
- package/esm/ui/DropDownMenu.d.ts +4 -2
- package/esm/ui/DropDownMenu.js +6 -5
- package/esm/ui/EditableTypography.d.ts +3 -1
- package/esm/ui/EditableTypography.js +34 -26
- package/esm/ui/ErrorActions.d.ts +24 -0
- package/esm/ui/ErrorActions.js +20 -0
- package/esm/ui/ErrorBanner.d.ts +7 -0
- package/esm/ui/ErrorBanner.js +35 -0
- package/esm/ui/ErrorBar.d.ts +6 -0
- package/esm/ui/ErrorBar.js +35 -0
- package/esm/ui/ErrorBoundary.d.ts +29 -5
- package/esm/ui/ErrorBoundary.js +32 -2
- package/esm/ui/ErrorMessage.d.ts +2 -4
- package/esm/ui/ErrorMessage.js +17 -52
- package/esm/ui/ErrorMessageStackTraceContents.d.ts +1 -1
- package/esm/ui/ErrorMessageStackTraceContents.js +5 -4
- package/esm/ui/ErrorMessageStackTraceDialog.d.ts +1 -1
- package/esm/ui/ErrorMessageStackTraceDialog.js +51 -96
- package/esm/ui/ErrorOverlay.d.ts +8 -0
- package/esm/ui/ErrorOverlay.js +5 -0
- package/esm/ui/ExportSvgDialog.d.ts +7 -0
- package/esm/ui/ExportSvgDialog.js +9 -0
- package/esm/ui/ExternalLink.d.ts +1 -1
- package/esm/ui/FactoryResetDialog.d.ts +1 -1
- package/esm/ui/FactoryResetDialog.js +6 -15
- package/esm/ui/FatalErrorDialog.d.ts +3 -2
- package/esm/ui/FatalErrorDialog.js +6 -5
- package/esm/ui/FileDropZone.d.ts +25 -0
- package/esm/ui/FileDropZone.js +129 -0
- package/esm/ui/FileSelector/FileSelector.d.ts +1 -1
- package/esm/ui/FileSelector/FileSelector.js +59 -30
- package/esm/ui/FileSelector/LocalFileChooser.d.ts +7 -2
- package/esm/ui/FileSelector/LocalFileChooser.js +61 -47
- package/esm/ui/FileSelector/LocationInput.d.ts +1 -1
- package/esm/ui/FileSelector/LocationInput.js +8 -12
- package/esm/ui/FileSelector/SourceTypeSelector.d.ts +5 -5
- package/esm/ui/FileSelector/SourceTypeSelector.js +9 -7
- package/esm/ui/FileSelector/UrlChooser.d.ts +1 -1
- package/esm/ui/FileSelector/UrlChooser.js +26 -2
- package/esm/ui/FileSelector/emptySourceType.d.ts +2 -0
- package/esm/ui/FileSelector/emptySourceType.js +14 -0
- package/esm/ui/FileSelector/useInternetAccounts.d.ts +436 -64
- package/esm/ui/FileSelector/useInternetAccounts.js +13 -6
- package/esm/ui/FileSelector/util.d.ts +58 -3
- package/esm/ui/FileSelector/util.js +128 -11
- package/esm/ui/GpuFallbackButton.d.ts +12 -0
- package/esm/ui/GpuFallbackButton.js +20 -0
- package/esm/ui/HoverMenu.d.ts +11 -3
- package/esm/ui/HoverMenu.js +34 -9
- package/esm/ui/HoverTooltip.d.ts +27 -0
- package/esm/ui/HoverTooltip.js +24 -0
- package/esm/ui/Icons.d.ts +6 -4
- package/esm/ui/Icons.js +9 -0
- package/esm/ui/InfoDialog.d.ts +7 -0
- package/esm/ui/InfoDialog.js +16 -0
- package/esm/ui/InlineMenuControls.d.ts +6 -0
- package/esm/ui/InlineMenuControls.js +17 -0
- package/esm/ui/JexlFilterDialog.d.ts +26 -0
- package/esm/ui/JexlFilterDialog.js +167 -0
- package/esm/ui/JexlFilterRowEditors.d.ts +15 -0
- package/esm/ui/JexlFilterRowEditors.js +90 -0
- package/esm/ui/LabeledCheckbox.d.ts +9 -0
- package/esm/ui/LabeledCheckbox.js +7 -0
- package/esm/ui/LazyBaseTooltip.d.ts +4 -0
- package/esm/ui/LazyBaseTooltip.js +9 -0
- package/esm/ui/LegendSwatchGlyph.d.ts +7 -0
- package/esm/ui/LegendSwatchGlyph.js +30 -0
- package/esm/ui/LoadingDots.d.ts +1 -0
- package/esm/ui/LoadingDots.js +30 -0
- package/esm/ui/LoadingEllipses.d.ts +17 -1
- package/esm/ui/LoadingEllipses.js +20 -29
- package/esm/ui/LoadingOverlay.d.ts +23 -0
- package/esm/ui/LoadingOverlay.js +139 -0
- package/esm/ui/LoadingProgress.d.ts +16 -0
- package/esm/ui/LoadingProgress.js +16 -0
- package/esm/ui/Logo.d.ts +2 -2
- package/esm/ui/Logo.js +23 -24
- package/esm/ui/Menu.js +1 -1
- package/esm/ui/MenuItemChevron.d.ts +3 -0
- package/esm/ui/MenuItemChevron.js +19 -0
- package/esm/ui/MenuItemEndDecoration.d.ts +4 -0
- package/esm/ui/MenuItemEndDecoration.js +28 -0
- package/esm/ui/MenuItemTrailing.d.ts +12 -0
- package/esm/ui/MenuItemTrailing.js +42 -0
- package/esm/ui/MenuTypes.d.ts +95 -5
- package/esm/ui/MenuTypes.js +16 -1
- package/esm/ui/MonospaceTextField.d.ts +10 -0
- package/esm/ui/MonospaceTextField.js +40 -0
- package/esm/ui/NumberTextField.d.ts +31 -0
- package/esm/ui/NumberTextField.js +33 -0
- package/esm/ui/PaletteContext.d.ts +90 -0
- package/esm/ui/PaletteContext.js +142 -0
- package/esm/ui/PluggableComponent.d.ts +10 -0
- package/esm/ui/PluggableComponent.js +19 -0
- package/esm/ui/PluggableComponents.d.ts +29 -0
- package/esm/ui/PluggableComponents.js +28 -0
- package/esm/ui/PluggableElements.d.ts +23 -0
- package/esm/ui/PluggableElements.js +24 -0
- package/esm/ui/PluginStoreCard.d.ts +17 -0
- package/esm/ui/PluginStoreCard.js +45 -0
- package/esm/ui/PopoverPicker.d.ts +6 -0
- package/esm/ui/PopoverPicker.js +25 -0
- package/esm/ui/PrerenderedCanvas.d.ts +1 -1
- package/esm/ui/PrerenderedCanvas.js +5 -4
- package/esm/ui/ProgressChip.d.ts +37 -0
- package/esm/ui/ProgressChip.js +66 -0
- package/esm/ui/RedErrorMessageBox.d.ts +1 -1
- package/esm/ui/RedErrorMessageBox.js +9 -3
- package/esm/ui/RefNameAutocomplete/EndAdornment.d.ts +5 -0
- package/esm/ui/RefNameAutocomplete/EndAdornment.js +31 -0
- package/esm/ui/RefNameAutocomplete/HelpDialog.d.ts +3 -0
- package/esm/ui/RefNameAutocomplete/HelpDialog.js +7 -0
- package/esm/ui/RefNameAutocomplete/SearchOption.d.ts +13 -0
- package/esm/ui/RefNameAutocomplete/SearchOption.js +45 -0
- package/esm/ui/RefNameAutocomplete/index.d.ts +21 -0
- package/esm/ui/RefNameAutocomplete/index.js +84 -0
- package/esm/ui/RefNameAutocomplete/util.d.ts +62 -0
- package/esm/ui/RefNameAutocomplete/util.js +209 -0
- package/esm/ui/ReplaceCurrentViewButton.d.ts +19 -0
- package/esm/ui/ReplaceCurrentViewButton.js +22 -0
- package/esm/ui/ResizeHandle.d.ts +15 -7
- package/esm/ui/ResizeHandle.js +73 -53
- package/esm/ui/ReturnToImportFormDialog.d.ts +1 -1
- package/esm/ui/ReturnToImportFormDialog.js +7 -9
- package/esm/ui/SanitizedHTML.d.ts +6 -1
- package/esm/ui/SanitizedHTML.js +7 -47
- package/esm/ui/ScrollChrome.d.ts +13 -0
- package/esm/ui/ScrollChrome.js +11 -0
- package/esm/ui/ScrollEdgeShadow.d.ts +41 -0
- package/esm/ui/ScrollEdgeShadow.js +77 -0
- package/esm/ui/ScrollZoomToggle.d.ts +15 -0
- package/esm/ui/ScrollZoomToggle.js +75 -0
- package/esm/ui/SequenceAdapterInputs.d.ts +9 -0
- package/esm/ui/SequenceAdapterInputs.js +30 -0
- package/esm/ui/SessionJsonPanel.d.ts +3 -0
- package/esm/ui/SessionJsonPanel.js +14 -0
- package/esm/ui/SettingsChangesTable.d.ts +15 -0
- package/esm/ui/SettingsChangesTable.js +87 -0
- package/esm/ui/ShareLinkField.d.ts +4 -0
- package/esm/ui/ShareLinkField.js +15 -0
- package/esm/ui/SingleSlider.d.ts +8 -0
- package/esm/ui/SingleSlider.js +11 -0
- package/esm/ui/SizeSliderRow.d.ts +14 -0
- package/esm/ui/SizeSliderRow.js +48 -0
- package/esm/ui/SliderTooltip.d.ts +2 -0
- package/esm/ui/SliderTooltip.js +17 -0
- package/esm/ui/Snackbar.d.ts +4 -2
- package/esm/ui/Snackbar.js +11 -8
- package/esm/ui/SnackbarContents.d.ts +1 -1
- package/esm/ui/SnackbarContents.js +21 -3
- package/esm/ui/SnackbarModel.d.ts +40 -0
- package/esm/ui/SnackbarModel.js +96 -52
- package/esm/ui/StackTraceButton.d.ts +5 -0
- package/esm/ui/StackTraceButton.js +16 -0
- package/esm/ui/StatusProgressBar.d.ts +37 -0
- package/esm/ui/StatusProgressBar.js +76 -0
- package/esm/ui/SubmitDialog.d.ts +6 -0
- package/esm/ui/SubmitDialog.js +9 -0
- package/esm/ui/SubmitForm.d.ts +23 -0
- package/esm/ui/SubmitForm.js +23 -0
- package/esm/ui/SvgColorLegend.d.ts +18 -0
- package/esm/ui/SvgColorLegend.js +106 -0
- package/esm/ui/TagTextField.d.ts +40 -0
- package/esm/ui/TagTextField.js +32 -0
- package/esm/ui/VerticalScrollbar.d.ts +24 -0
- package/esm/ui/VerticalScrollbar.js +104 -0
- package/esm/ui/ViewLoadingScreen.d.ts +25 -0
- package/esm/ui/ViewLoadingScreen.js +52 -0
- package/esm/ui/addExtensionElement.d.ts +18 -0
- package/esm/ui/addExtensionElement.js +23 -0
- package/esm/ui/buildExtraTrackMenuItems.d.ts +22 -0
- package/esm/ui/buildExtraTrackMenuItems.js +14 -0
- package/esm/ui/colorScale.d.ts +92 -0
- package/esm/ui/colorScale.js +72 -0
- package/esm/ui/colorSwatchStyle.d.ts +9 -0
- package/esm/ui/colorSwatchStyle.js +11 -0
- package/esm/ui/colors.d.ts +125 -8
- package/esm/ui/colors.js +364 -1
- package/esm/ui/extensionSelectors.d.ts +38 -0
- package/esm/ui/extensionSelectors.js +49 -0
- package/esm/ui/filterMenuItems.d.ts +112 -0
- package/esm/ui/filterMenuItems.js +86 -0
- package/esm/ui/formatErrorStack.d.ts +1 -0
- package/esm/ui/formatErrorStack.js +56 -0
- package/esm/ui/gpuFallback.d.ts +33 -0
- package/esm/ui/gpuFallback.js +39 -0
- package/esm/ui/hoverBoxStyle.d.ts +23 -0
- package/esm/ui/hoverBoxStyle.js +28 -0
- package/esm/ui/index.d.ts +77 -5
- package/esm/ui/index.js +83 -20
- package/esm/ui/inlineMenuRowWidth.d.ts +1 -0
- package/esm/ui/inlineMenuRowWidth.js +8 -0
- package/esm/ui/launchTargetsMenuItem.d.ts +18 -0
- package/esm/ui/launchTargetsMenuItem.js +24 -0
- package/esm/ui/launchViewMenu.d.ts +4 -0
- package/esm/ui/launchViewMenu.js +46 -0
- package/esm/ui/legendMenuItem.d.ts +16 -0
- package/esm/ui/legendMenuItem.js +17 -0
- package/esm/ui/legendSpec.d.ts +69 -0
- package/esm/ui/legendSpec.js +69 -0
- package/esm/ui/loadingDotKeyframes.d.ts +18 -0
- package/esm/ui/loadingDotKeyframes.js +17 -0
- package/esm/ui/makeSizeMenu.d.ts +24 -0
- package/esm/ui/makeSizeMenu.js +58 -0
- package/esm/ui/mapStackTrace.d.ts +8 -0
- package/esm/ui/mapStackTrace.js +108 -0
- package/esm/ui/measureLegendText.d.ts +1 -0
- package/esm/ui/measureLegendText.js +8 -0
- package/esm/ui/menuItemAdornment.d.ts +22 -0
- package/esm/ui/menuItemAdornment.js +28 -0
- package/esm/ui/menuItems.d.ts +23 -0
- package/esm/ui/menuItems.js +21 -0
- package/esm/ui/menuLabels.d.ts +41 -0
- package/esm/ui/menuLabels.js +43 -0
- package/esm/ui/multiTrackMenuItems.d.ts +25 -0
- package/esm/ui/multiTrackMenuItems.js +15 -0
- package/esm/ui/palette.d.ts +561 -0
- package/esm/ui/palette.js +785 -0
- package/esm/ui/parseError.d.ts +4 -0
- package/esm/ui/parseError.js +18 -0
- package/esm/ui/persistentScrollbarStyle.d.ts +49 -0
- package/esm/ui/persistentScrollbarStyle.js +53 -0
- package/esm/ui/radioSubMenu.d.ts +33 -0
- package/esm/ui/radioSubMenu.js +32 -0
- package/esm/ui/react-colorful.js +5 -1
- package/esm/ui/replaceViewAction.d.ts +31 -0
- package/esm/ui/replaceViewAction.js +39 -0
- package/esm/ui/rewriteExternalAnchors.d.ts +1 -0
- package/esm/ui/rewriteExternalAnchors.js +8 -0
- package/esm/ui/scrollZoomLabels.d.ts +17 -0
- package/esm/ui/scrollZoomLabels.js +22 -0
- package/esm/ui/showSubMenu.d.ts +19 -0
- package/esm/ui/showSubMenu.js +30 -0
- package/esm/ui/sliderScale.d.ts +6 -0
- package/esm/ui/sliderScale.js +30 -0
- package/esm/ui/statusProgressKeyframes.d.ts +6 -0
- package/esm/ui/statusProgressKeyframes.js +14 -0
- package/esm/ui/stripStackTraceMessage.d.ts +1 -0
- package/esm/ui/stripStackTraceMessage.js +9 -0
- package/esm/ui/styleTheme.d.ts +158 -0
- package/esm/ui/styleTheme.js +115 -0
- package/esm/ui/submenuAim.d.ts +30 -0
- package/esm/ui/submenuAim.js +37 -0
- package/esm/ui/theme.d.ts +268 -30
- package/esm/ui/theme.js +250 -350
- package/esm/ui/toggleMenuItems.d.ts +42 -0
- package/esm/ui/toggleMenuItems.js +61 -0
- package/esm/ui/useAssemblySelection.d.ts +153 -0
- package/esm/ui/useAssemblySelection.js +54 -0
- package/esm/ui/useCoalescedPointer.d.ts +36 -0
- package/esm/ui/useCoalescedPointer.js +60 -0
- package/esm/ui/useCopyToClipboard.d.ts +15 -0
- package/esm/ui/useCopyToClipboard.js +41 -0
- package/esm/ui/useExportSvgPreference.d.ts +1 -0
- package/esm/ui/useExportSvgPreference.js +4 -0
- package/esm/ui/useMouseTracking.d.ts +71 -0
- package/esm/ui/useMouseTracking.js +179 -0
- package/esm/ui/useRecentLocations.d.ts +28 -0
- package/esm/ui/useRecentLocations.js +31 -0
- package/esm/ui/viewHeaderHeight.d.ts +1 -0
- package/esm/ui/viewHeaderHeight.js +1 -0
- package/esm/ui/wrapComponent.d.ts +47 -0
- package/esm/ui/wrapComponent.js +58 -0
- package/esm/ui/zIndexes.d.ts +28 -0
- package/esm/ui/zIndexes.js +38 -0
- package/esm/util/Base1DUtils.d.ts +207 -17
- package/esm/util/Base1DUtils.js +316 -173
- package/esm/util/Base1DViewModel.d.ts +99 -21
- package/esm/util/Base1DViewModel.js +151 -41
- package/esm/util/FileSaver/index.d.ts +1 -0
- package/esm/util/FileSaver/index.js +27 -0
- package/esm/util/IntervalTree.d.ts +18 -39
- package/esm/util/IntervalTree.js +63 -244
- package/esm/util/SvgCanvas.d.ts +83 -0
- package/esm/util/SvgCanvas.js +520 -0
- package/esm/util/TimeTraveller.d.ts +12 -0
- package/esm/util/TimeTraveller.js +130 -27
- package/esm/util/aborting.d.ts +56 -4
- package/esm/util/aborting.js +112 -25
- package/esm/util/adapterMetadata.d.ts +20 -0
- package/esm/util/adapterMetadata.js +40 -0
- package/esm/util/addAndShowTrack.d.ts +19 -0
- package/esm/util/addAndShowTrack.js +27 -0
- package/esm/util/addRelativeUris.d.ts +29 -0
- package/esm/util/addRelativeUris.js +78 -0
- package/esm/util/addTrackComponent.d.ts +72 -0
- package/esm/util/addTrackComponent.js +53 -0
- package/esm/util/addTrackFromWidget.d.ts +91 -0
- package/esm/util/addTrackFromWidget.js +91 -0
- package/esm/util/aggregateFieldName.d.ts +10 -0
- package/esm/util/aggregateFieldName.js +8 -0
- package/esm/util/analytics.d.ts +32 -3
- package/esm/util/analytics.js +135 -49
- package/esm/util/animationAllowed.d.ts +26 -0
- package/esm/util/animationAllowed.js +35 -0
- package/esm/util/applyRowResizeWheel.d.ts +15 -0
- package/esm/util/applyRowResizeWheel.js +23 -0
- package/esm/util/assemblyConfigUtils.d.ts +144 -0
- package/esm/util/assemblyConfigUtils.js +498 -0
- package/esm/util/bandHeight.d.ts +63 -0
- package/esm/util/bandHeight.js +85 -0
- package/esm/util/bandLayout.d.ts +51 -0
- package/esm/util/bandLayout.js +36 -0
- package/esm/util/bezierConnector.d.ts +15 -0
- package/esm/util/bezierConnector.js +101 -0
- package/esm/util/bgzfWorkerPool.d.ts +24 -0
- package/esm/util/bgzfWorkerPool.js +27 -0
- package/esm/util/binnedAggregate.d.ts +17 -0
- package/esm/util/binnedAggregate.js +275 -0
- package/esm/util/blockTypes.d.ts +64 -45
- package/esm/util/blockTypes.js +67 -74
- package/esm/util/bpUtils.d.ts +81 -0
- package/esm/util/bpUtils.js +103 -0
- package/esm/util/cacheBudgets.d.ts +55 -0
- package/esm/util/cacheBudgets.js +55 -0
- package/esm/util/cachedSetup.d.ts +51 -0
- package/esm/util/cachedSetup.js +87 -0
- package/esm/util/calculateDynamicBlocks.d.ts +5 -0
- package/esm/util/calculateDynamicBlocks.js +85 -82
- package/esm/util/calculateStaticBlocks.d.ts +2 -3
- package/esm/util/calculateStaticBlocks.js +48 -71
- package/esm/util/categoricalField.d.ts +56 -0
- package/esm/util/categoricalField.js +73 -0
- package/esm/util/chooseGridPitch.d.ts +9 -0
- package/esm/util/chooseGridPitch.js +31 -0
- package/esm/util/clampToContig.d.ts +43 -0
- package/esm/util/clampToContig.js +47 -0
- package/esm/util/cmpStr.d.ts +1 -0
- package/esm/util/cmpStr.js +7 -0
- package/esm/util/coarseStripHTML.js +2 -15
- package/esm/util/color/cssColorsLevel4.d.ts +1 -0
- package/esm/util/color/cssColorsLevel4.js +7 -2
- package/esm/util/color/index.d.ts +84 -3
- package/esm/util/color/index.js +197 -25
- package/esm/util/color-bits/bit.d.ts +4 -0
- package/esm/util/color-bits/bit.js +37 -0
- package/esm/util/color-bits/convert.d.ts +23 -0
- package/esm/util/color-bits/convert.js +294 -0
- package/esm/util/color-bits/core.d.ts +34 -0
- package/esm/util/color-bits/core.js +67 -0
- package/esm/util/color-bits/format.d.ts +24 -0
- package/esm/util/color-bits/format.js +82 -0
- package/esm/util/color-bits/functions.d.ts +33 -0
- package/esm/util/color-bits/functions.js +70 -0
- package/esm/util/color-bits/index.d.ts +5 -0
- package/esm/util/color-bits/index.js +4 -0
- package/esm/util/color-bits/parse.d.ts +17 -0
- package/esm/util/color-bits/parse.js +382 -0
- package/esm/util/colorBits.d.ts +39 -0
- package/esm/util/colorBits.js +155 -0
- package/esm/util/colorRamp.d.ts +81 -0
- package/esm/util/colorRamp.js +244 -0
- package/esm/util/colorScale.d.ts +156 -0
- package/esm/util/colorScale.js +243 -0
- package/esm/util/colorSchemes.d.ts +21 -0
- package/esm/util/colorSchemes.js +30 -0
- package/esm/util/colord.d.ts +8 -0
- package/esm/util/colord.js +43 -191
- package/esm/util/convertCodingSequenceToPeptides.d.ts +17 -3
- package/esm/util/convertCodingSequenceToPeptides.js +51 -4
- package/esm/util/copyText.d.ts +18 -0
- package/esm/util/copyText.js +30 -0
- package/esm/util/copyToClipboard.d.ts +4 -0
- package/esm/util/copyToClipboard.js +58 -0
- package/esm/util/createAbortRotation.d.ts +115 -0
- package/esm/util/createAbortRotation.js +116 -0
- package/esm/util/createSvgRasterCanvas.d.ts +17 -0
- package/esm/util/createSvgRasterCanvas.js +22 -0
- package/esm/util/crypto.d.ts +24 -0
- package/esm/util/crypto.js +85 -2
- package/esm/util/cssColorParse.d.ts +15 -0
- package/esm/util/cssColorParse.js +53 -0
- package/esm/util/dataGridUtils.d.ts +9 -0
- package/esm/util/dataGridUtils.js +36 -0
- package/esm/util/dedupe.js +1 -0
- package/esm/util/deepEqual.d.ts +8 -0
- package/esm/util/deepEqual.js +22 -0
- package/esm/util/deepMerge.d.ts +20 -0
- package/esm/util/deepMerge.js +44 -0
- package/esm/util/diagonalizeRegions.d.ts +22 -0
- package/esm/util/diagonalizeRegions.js +187 -0
- package/esm/util/environment.d.ts +4 -0
- package/esm/util/environment.js +43 -0
- package/esm/util/eventPoint.d.ts +32 -0
- package/esm/util/eventPoint.js +28 -0
- package/esm/util/expandLooseSearchIndex.d.ts +19 -0
- package/esm/util/expandLooseSearchIndex.js +29 -0
- package/esm/util/featureTable.d.ts +224 -0
- package/esm/util/featureTable.js +366 -0
- package/esm/util/featureTransforms.d.ts +80 -0
- package/esm/util/featureTransforms.js +1579 -0
- package/esm/util/featureTypes.d.ts +24 -0
- package/esm/util/featureTypes.js +35 -0
- package/esm/util/fetchAndMaybeUnzip.d.ts +6 -0
- package/esm/util/fetchAndMaybeUnzip.js +71 -0
- package/esm/util/fetchContext.d.ts +81 -0
- package/esm/util/fetchContext.js +59 -0
- package/esm/util/fetchHub.d.ts +17 -0
- package/esm/util/fetchHub.js +31 -0
- package/esm/util/fetchJson.d.ts +1 -0
- package/esm/util/fetchJson.js +7 -0
- package/esm/util/fetchPhases.d.ts +77 -0
- package/esm/util/fetchPhases.js +1 -0
- package/esm/util/fetchSeq.d.ts +4 -1
- package/esm/util/fetchSeq.js +18 -6
- package/esm/util/fieldReader.d.ts +17 -0
- package/esm/util/fieldReader.js +62 -0
- package/esm/util/fileHandleStore.d.ts +19 -2
- package/esm/util/fileHandleStore.js +95 -35
- package/esm/util/flatbush/index.d.ts +27 -6
- package/esm/util/flatbush/index.js +194 -218
- package/esm/util/formatBytes.d.ts +9 -0
- package/esm/util/formatBytes.js +18 -0
- package/esm/util/formatFastaStrings.d.ts +13 -0
- package/esm/util/formatFastaStrings.js +13 -0
- package/esm/util/formatGuessers.d.ts +30 -0
- package/esm/util/formatGuessers.js +69 -0
- package/esm/util/formatRelativeTime.d.ts +1 -0
- package/esm/util/formatRelativeTime.js +25 -0
- package/esm/util/frameCoalescer.d.ts +30 -0
- package/esm/util/frameCoalescer.js +22 -0
- package/esm/util/freezeDeep.d.ts +26 -0
- package/esm/util/freezeDeep.js +39 -0
- package/esm/util/geneticCodes.d.ts +56 -0
- package/esm/util/geneticCodes.js +371 -0
- package/esm/util/getFileName.d.ts +11 -0
- package/esm/util/getFileName.js +34 -0
- package/esm/util/getLocationUri.d.ts +49 -0
- package/esm/util/getLocationUri.js +63 -0
- package/esm/util/getRelativeX.d.ts +4 -0
- package/esm/util/getRelativeX.js +7 -0
- package/esm/util/getStr.d.ts +6 -0
- package/esm/util/getStr.js +15 -0
- package/esm/util/groupKeys.d.ts +77 -0
- package/esm/util/groupKeys.js +155 -0
- package/esm/util/highlights.d.ts +25 -0
- package/esm/util/highlights.js +87 -0
- package/esm/util/hooks.d.ts +189 -0
- package/esm/util/hooks.js +485 -0
- package/esm/util/htmlText.d.ts +13 -0
- package/esm/util/htmlText.js +66 -0
- package/esm/util/idMaker.d.ts +1 -1
- package/esm/util/idMaker.js +31 -18
- package/esm/util/index.d.ts +82 -268
- package/esm/util/index.js +137 -853
- package/esm/util/indexCandidates.d.ts +20 -0
- package/esm/util/indexCandidates.js +43 -0
- package/esm/util/installClearHoverOnSurfaceMove.d.ts +40 -0
- package/esm/util/installClearHoverOnSurfaceMove.js +41 -0
- package/esm/util/installFetch.d.ts +234 -0
- package/esm/util/installFetch.js +205 -0
- package/esm/util/installInitAutorun.d.ts +63 -0
- package/esm/util/installInitAutorun.js +107 -0
- package/esm/util/installPrerequisiteFetch.d.ts +115 -0
- package/esm/util/installPrerequisiteFetch.js +111 -0
- package/esm/util/intervals.d.ts +20 -0
- package/esm/util/intervals.js +37 -0
- package/esm/util/io/RemoteFileWithRangeCache.d.ts +10 -11
- package/esm/util/io/RemoteFileWithRangeCache.js +10 -148
- package/esm/util/io/index.d.ts +39 -2
- package/esm/util/io/index.js +120 -12
- package/esm/util/isDataCurrent.d.ts +9 -0
- package/esm/util/isDataCurrent.js +12 -0
- package/esm/util/isTextEntryFocused.d.ts +7 -0
- package/esm/util/isTextEntryFocused.js +16 -0
- package/esm/util/isWebWorker.js +1 -2
- package/esm/util/iupac.d.ts +4 -0
- package/esm/util/iupac.js +59 -0
- package/esm/util/jexl.js +146 -19
- package/esm/util/jexlFilterRows.d.ts +89 -0
- package/esm/util/jexlFilterRows.js +252 -0
- package/esm/util/jexlFilters.d.ts +68 -0
- package/esm/util/jexlFilters.js +61 -0
- package/esm/util/jexlStrings.d.ts +21 -1
- package/esm/util/jexlStrings.js +20 -14
- package/esm/util/layouts/GranularRectLayout.d.ts +20 -25
- package/esm/util/layouts/GranularRectLayout.js +116 -356
- package/esm/util/layouts/index.d.ts +1 -7
- package/esm/util/layouts/index.js +2 -6
- package/esm/util/layouts/intervalUtils.d.ts +12 -1
- package/esm/util/layouts/intervalUtils.js +13 -31
- package/esm/util/layouts/placeRect.d.ts +50 -0
- package/esm/util/layouts/placeRect.js +97 -0
- package/esm/util/lazyAfterAttach.d.ts +13 -0
- package/esm/util/lazyAfterAttach.js +31 -0
- package/esm/util/lazyWithPreload.d.ts +19 -0
- package/esm/util/lazyWithPreload.js +27 -0
- package/esm/util/leadingEdgeAutorun.d.ts +40 -0
- package/esm/util/leadingEdgeAutorun.js +51 -0
- package/esm/util/legendCandidates.d.ts +72 -0
- package/esm/util/legendCandidates.js +138 -0
- package/esm/util/librpc.d.ts +5 -2
- package/esm/util/librpc.js +6 -1
- package/esm/util/linkify.js +2 -0
- package/esm/util/locString.d.ts +72 -0
- package/esm/util/locString.js +178 -7
- package/esm/util/locStringsToRegions.d.ts +10 -0
- package/esm/util/locStringsToRegions.js +35 -0
- package/esm/util/localStorage.d.ts +36 -0
- package/esm/util/localStorage.js +137 -0
- package/esm/util/makeAssembly.d.ts +54 -0
- package/esm/util/makeAssembly.js +52 -0
- package/esm/util/makeTrackId.d.ts +14 -0
- package/esm/util/makeTrackId.js +14 -0
- package/esm/util/markEncoding.d.ts +150 -0
- package/esm/util/markEncoding.js +845 -0
- package/esm/util/markEncodingTypes.d.ts +588 -0
- package/esm/util/markEncodingTypes.js +8 -0
- package/esm/util/matchTrackId.d.ts +11 -0
- package/esm/util/matchTrackId.js +14 -0
- package/esm/util/measureText.d.ts +24 -0
- package/esm/util/measureText.js +51 -0
- package/esm/util/mst-reflection.d.ts +3 -11
- package/esm/util/mst-reflection.js +3 -52
- package/esm/util/mstUtils.d.ts +97 -0
- package/esm/util/mstUtils.js +137 -0
- package/esm/util/nanoid.d.ts +0 -4
- package/esm/util/nanoid.js +10 -20
- package/esm/util/numericUtils.d.ts +27 -0
- package/esm/util/numericUtils.js +143 -0
- package/esm/util/numericValue.d.ts +14 -0
- package/esm/util/numericValue.js +34 -0
- package/esm/util/objectUtils.d.ts +2 -0
- package/esm/util/objectUtils.js +9 -0
- package/esm/util/offscreenCanvasPonyfill.d.ts +5 -4
- package/esm/util/offscreenCanvasPonyfill.js +5 -47
- package/esm/util/openFeatureWidget.d.ts +38 -0
- package/esm/util/openFeatureWidget.js +64 -0
- package/esm/util/openViews.d.ts +17 -0
- package/esm/util/openViews.js +22 -0
- package/esm/util/paintLayer.d.ts +32 -0
- package/esm/util/paintLayer.js +33 -0
- package/esm/util/parentWalk.d.ts +32 -0
- package/esm/util/parentWalk.js +84 -0
- package/esm/util/parseLineByLine.d.ts +44 -2
- package/esm/util/parseLineByLine.js +150 -15
- package/esm/util/parseMotifList.d.ts +17 -0
- package/esm/util/parseMotifList.js +69 -0
- package/esm/util/pluginStore.d.ts +111 -0
- package/esm/util/pluginStore.js +254 -0
- package/esm/util/pointerPresence.d.ts +5 -0
- package/esm/util/pointerPresence.js +21 -0
- package/esm/util/preloadComponent.d.ts +5 -0
- package/esm/util/preloadComponent.js +11 -0
- package/esm/util/progress.d.ts +459 -0
- package/esm/util/progress.js +821 -0
- package/esm/util/quantileExtent.d.ts +49 -0
- package/esm/util/quantileExtent.js +162 -0
- package/esm/util/range.d.ts +46 -1
- package/esm/util/range.js +68 -2
- package/esm/util/renameRegions.d.ts +41 -0
- package/esm/util/renameRegions.js +143 -0
- package/esm/util/renderToStaticMarkup.d.ts +2 -0
- package/esm/util/renderToStaticMarkup.js +60 -0
- package/esm/util/reorder.d.ts +35 -0
- package/esm/util/reorder.js +83 -0
- package/esm/util/resolveRowHeight.d.ts +27 -0
- package/esm/util/resolveRowHeight.js +30 -0
- package/esm/util/revlist.d.ts +13 -0
- package/esm/util/revlist.js +14 -0
- package/esm/util/rowStackGeometry.d.ts +66 -0
- package/esm/util/rowStackGeometry.js +70 -0
- package/esm/util/rpc.d.ts +16 -1
- package/esm/util/rpc.js +12 -1
- package/esm/util/rxjs.d.ts +30 -2
- package/esm/util/rxjs.js +85 -10
- package/esm/util/sameStrings.d.ts +16 -0
- package/esm/util/sameStrings.js +20 -0
- package/esm/util/samplesTsv.d.ts +49 -0
- package/esm/util/samplesTsv.js +86 -0
- package/esm/util/scheduleDetachedDestroy.d.ts +18 -0
- package/esm/util/scheduleDetachedDestroy.js +24 -0
- package/esm/util/scrollLatch.d.ts +5 -0
- package/esm/util/scrollLatch.js +67 -0
- package/esm/util/selectEncodedFeature.d.ts +16 -0
- package/esm/util/selectEncodedFeature.js +34 -0
- package/esm/util/selectNamedRegions.d.ts +136 -0
- package/esm/util/selectNamedRegions.js +222 -0
- package/esm/util/seqUtils.d.ts +17 -0
- package/esm/util/seqUtils.js +80 -0
- package/esm/util/sessionServices.d.ts +29 -0
- package/esm/util/sessionServices.js +46 -0
- package/esm/util/sessionSharing.d.ts +40 -0
- package/esm/util/sessionSharing.js +154 -0
- package/esm/util/sessionStorage.d.ts +1 -0
- package/esm/util/sessionStorage.js +15 -0
- package/esm/util/setStackTraceLimit.d.ts +6 -0
- package/esm/util/setStackTraceLimit.js +20 -0
- package/esm/util/shapeNameList.d.ts +2 -0
- package/esm/util/shapeNameList.js +6 -0
- package/esm/util/shapeNames.d.ts +7 -0
- package/esm/util/shapeNames.js +11 -0
- package/esm/util/simpleFeature.d.ts +111 -4
- package/esm/util/simpleFeature.js +181 -29
- package/esm/util/springAnimate.d.ts +20 -0
- package/esm/util/springAnimate.js +80 -0
- package/esm/util/starFusion.d.ts +26 -0
- package/esm/util/starFusion.js +37 -0
- package/esm/util/stats.d.ts +25 -2
- package/esm/util/stats.js +39 -8
- package/esm/util/stepTables.d.ts +82 -0
- package/esm/util/stepTables.js +243 -0
- package/esm/util/stringUtils.d.ts +5 -0
- package/esm/util/stringUtils.js +34 -0
- package/esm/util/svAlt.d.ts +145 -0
- package/esm/util/svAlt.js +364 -0
- package/esm/util/svgColorProps.d.ts +18 -0
- package/esm/util/svgColorProps.js +55 -0
- package/esm/util/systemColorScheme.d.ts +12 -0
- package/esm/util/systemColorScheme.js +27 -0
- package/esm/util/tabix.d.ts +125 -0
- package/esm/util/tabix.js +148 -0
- package/esm/util/tags.d.ts +2 -0
- package/esm/util/tags.js +5 -0
- package/esm/util/temporaryAssembly.d.ts +21 -0
- package/esm/util/temporaryAssembly.js +29 -0
- package/esm/util/thresholdScale.d.ts +91 -0
- package/esm/util/thresholdScale.js +166 -0
- package/esm/util/tickLabels.d.ts +36 -0
- package/esm/util/tickLabels.js +45 -0
- package/esm/util/timeGate.d.ts +25 -0
- package/esm/util/timeGate.js +78 -0
- package/esm/util/trackConfigDelta.d.ts +84 -0
- package/esm/util/trackConfigDelta.js +206 -0
- package/esm/util/tracks.d.ts +431 -30
- package/esm/util/tracks.js +952 -185
- package/esm/util/translateTranscript.d.ts +44 -0
- package/esm/util/translateTranscript.js +102 -0
- package/esm/util/tss-react/cssAndCx.js +11 -66
- package/esm/util/tss-react/index.d.ts +11 -2
- package/esm/util/tss-react/index.js +9 -2
- package/esm/util/tss-react/makeStyles.js +7 -4
- package/esm/util/tss-react/mergeClasses.js +1 -0
- package/esm/util/tss-react/tools/classnames.d.ts +3 -0
- package/esm/util/tss-react/tools/classnames.js +3 -0
- package/esm/util/tss-react/tools/getDependencyArrayRef.d.ts +18 -0
- package/esm/util/tss-react/tools/getDependencyArrayRef.js +19 -0
- package/esm/util/tss-react/types.d.ts +1 -1
- package/esm/util/tss-react/types.js +1 -6
- package/esm/util/types/ElementId.js +1 -1
- package/esm/util/types/data.d.ts +73 -0
- package/esm/util/types/data.js +41 -0
- package/esm/util/types/index.d.ts +459 -121
- package/esm/util/types/index.js +96 -64
- package/esm/util/types/isAny.d.ts +11 -0
- package/esm/util/types/isAny.js +1 -0
- package/esm/util/types/mst.d.ts +74 -47
- package/esm/util/types/mst.js +31 -22
- package/esm/util/types/predicate.d.ts +9 -0
- package/esm/util/types/predicate.js +1 -0
- package/esm/util/types/renameIds.d.ts +1 -0
- package/esm/util/types/renameIds.js +29 -0
- package/esm/util/types/renderingServices.d.ts +16 -0
- package/esm/util/types/renderingServices.js +1 -0
- package/esm/util/types/services.d.ts +55 -0
- package/esm/util/types/services.js +10 -0
- package/esm/util/types/util.d.ts +8 -2
- package/esm/util/unknownSnapshotKeys.d.ts +51 -0
- package/esm/util/unknownSnapshotKeys.js +82 -0
- package/esm/util/unzip.d.ts +1 -0
- package/esm/util/unzip.js +6 -0
- package/esm/util/useEventCallback.d.ts +1 -0
- package/esm/util/useEventCallback.js +16 -0
- package/esm/util/useFeatureSequence.d.ts +13 -7
- package/esm/util/useFeatureSequence.js +55 -77
- package/esm/util/useFetch.d.ts +55 -0
- package/esm/util/useFetch.js +197 -0
- package/esm/util/useFetchPlugins.d.ts +16 -0
- package/esm/util/useFetchPlugins.js +18 -0
- package/esm/util/useMeasure.d.ts +11 -1
- package/esm/util/useMeasure.js +20 -6
- package/esm/util/usePanZoom.d.ts +75 -0
- package/esm/util/usePanZoom.js +175 -0
- package/esm/util/usePanelVirtualScroll.d.ts +9 -0
- package/esm/util/usePanelVirtualScroll.js +15 -0
- package/esm/util/usePointerDrag.d.ts +37 -0
- package/esm/util/usePointerDrag.js +61 -0
- package/esm/util/useRafCommit.d.ts +4 -0
- package/esm/util/useRafCommit.js +50 -0
- package/esm/util/useResizeDrag.d.ts +91 -0
- package/esm/util/useResizeDrag.js +105 -0
- package/esm/util/useRowVirtualScroll.d.ts +9 -0
- package/esm/util/useRowVirtualScroll.js +22 -0
- package/esm/util/useVirtualScrollWheel.d.ts +23 -0
- package/esm/util/useVirtualScrollWheel.js +74 -0
- package/esm/util/viewHighlights.d.ts +3 -0
- package/esm/util/viewHighlights.js +5 -0
- package/esm/util/viewStatus.d.ts +90 -0
- package/esm/util/viewStatus.js +54 -0
- package/esm/util/virtualRange.d.ts +36 -0
- package/esm/util/virtualRange.js +26 -0
- package/esm/util/webStorage.d.ts +26 -0
- package/esm/util/webStorage.js +92 -0
- package/esm/util/wheelZoom.d.ts +65 -0
- package/esm/util/wheelZoom.js +297 -0
- package/esm/util/whenViewSettled.d.ts +74 -0
- package/esm/util/whenViewSettled.js +77 -0
- package/esm/util/withFeatureDetails.d.ts +34 -0
- package/esm/util/withFeatureDetails.js +59 -0
- package/esm/util/withLaunchInput.d.ts +174 -0
- package/esm/util/withLaunchInput.js +274 -0
- package/package.json +290 -820
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Position.d.ts +0 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Position.js +0 -14
- package/esm/BaseFeatureWidget/BaseFeatureDetail/types.d.ts +0 -7
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/DLGAP3.d.ts +0 -80
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/DLGAP3.js +0 -583
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/NCDN.d.ts +0 -141
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/NCDN.js +0 -1116
- package/esm/ReExports/BaseFeatureDetails.d.ts +0 -1
- package/esm/ReExports/BaseFeatureDetails.js +0 -9
- package/esm/ReExports/DataGrid.d.ts +0 -1
- package/esm/ReExports/DataGrid.js +0 -1
- package/esm/ReExports/index.d.ts +0 -1
- package/esm/ReExports/index.js +0 -1
- package/esm/configuration/util.d.ts +0 -10
- package/esm/configuration/util.js +0 -123
- package/esm/data_adapters/BaseAdapter/BaseOptions.d.ts +0 -18
- package/esm/data_adapters/util.d.ts +0 -1
- package/esm/data_adapters/util.js +0 -6
- package/esm/pluggableElementTypes/GlyphType.d.ts +0 -43
- package/esm/pluggableElementTypes/GlyphType.js +0 -18
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/fetchSequence.d.ts +0 -5
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/fetchSequence.js +0 -17
- package/esm/pluggableElementTypes/renderers/BoxRendererType.d.ts +0 -52
- package/esm/pluggableElementTypes/renderers/BoxRendererType.js +0 -78
- package/esm/pluggableElementTypes/renderers/CircularChordRendererType.d.ts +0 -4
- package/esm/pluggableElementTypes/renderers/CircularChordRendererType.js +0 -4
- package/esm/pluggableElementTypes/renderers/FeatureRendererType.d.ts +0 -58
- package/esm/pluggableElementTypes/renderers/FeatureRendererType.js +0 -77
- package/esm/pluggableElementTypes/renderers/LayoutSession.d.ts +0 -31
- package/esm/pluggableElementTypes/renderers/LayoutSession.js +0 -40
- package/esm/pluggableElementTypes/renderers/RendererType.d.ts +0 -28
- package/esm/pluggableElementTypes/renderers/RendererType.js +0 -20
- package/esm/pluggableElementTypes/renderers/ServerSideRendererType.d.ts +0 -58
- package/esm/pluggableElementTypes/renderers/ServerSideRendererType.js +0 -108
- package/esm/pluggableElementTypes/renderers/index.d.ts +0 -6
- package/esm/pluggableElementTypes/renderers/index.js +0 -6
- package/esm/pluggableElementTypes/renderers/util.d.ts +0 -3
- package/esm/pluggableElementTypes/renderers/util.js +0 -14
- package/esm/rpc/baseRpcConfig.d.ts +0 -8
- package/esm/rpc/baseRpcConfig.js +0 -10
- package/esm/rpc/mainThreadRpcConfig.d.ts +0 -8
- package/esm/rpc/mainThreadRpcConfig.js +0 -8
- package/esm/rpc/methods/CoreGetFeatureDensityStats.d.ts +0 -17
- package/esm/rpc/methods/CoreGetFeatureDensityStats.js +0 -25
- package/esm/rpc/methods/CoreGetFeatureDetails.d.ts +0 -11
- package/esm/rpc/methods/CoreGetFeatureDetails.js +0 -24
- package/esm/rpc/methods/CoreGetFileInfo.d.ts +0 -9
- package/esm/rpc/methods/CoreGetFileInfo.js +0 -15
- package/esm/rpc/methods/CoreRender.d.ts +0 -14
- package/esm/rpc/methods/CoreRender.js +0 -40
- package/esm/rpc/methods/CoreSaveFeatureData.d.ts +0 -16
- package/esm/rpc/methods/CoreSaveFeatureData.js +0 -32
- package/esm/rpc/methods/util.d.ts +0 -15
- package/esm/rpc/methods/util.js +0 -7
- package/esm/rpc/webWorkerRpcConfig.d.ts +0 -8
- package/esm/rpc/webWorkerRpcConfig.js +0 -8
- package/esm/ui/MenuButton.d.ts +0 -1
- package/esm/ui/MenuButton.js +0 -1
- package/esm/ui/MenuItems.d.ts +0 -15
- package/esm/ui/MenuItems.js +0 -59
- package/esm/ui/useEvent.d.ts +0 -1
- package/esm/ui/useEvent.js +0 -10
- package/esm/util/blobToDataURL.d.ts +0 -1
- package/esm/util/blobToDataURL.js +0 -14
- package/esm/util/compositeMap.d.ts +0 -11
- package/esm/util/compositeMap.js +0 -59
- package/esm/util/flatqueue/index.d.ts +0 -11
- package/esm/util/flatqueue/index.js +0 -61
- package/esm/util/layouts/BaseLayout.d.ts +0 -30
- package/esm/util/layouts/MultiLayout.d.ts +0 -12
- package/esm/util/layouts/MultiLayout.js +0 -40
- package/esm/util/layouts/PileupLayout.d.ts +0 -41
- package/esm/util/layouts/PileupLayout.js +0 -202
- package/esm/util/layouts/PrecomputedLayout.d.ts +0 -30
- package/esm/util/layouts/PrecomputedLayout.js +0 -71
- package/esm/util/layouts/SceneGraph.d.ts +0 -31
- package/esm/util/layouts/SceneGraph.js +0 -121
- package/esm/util/makeAbortableReaction.d.ts +0 -3
- package/esm/util/makeAbortableReaction.js +0 -47
- package/esm/util/map-obj/index.d.ts +0 -13
- package/esm/util/map-obj/index.js +0 -92
- package/esm/util/nextTick.d.ts +0 -1
- package/esm/util/nextTick.js +0 -3
- package/esm/util/offscreenCanvasGetSerializingSvg.d.ts +0 -5
- package/esm/util/offscreenCanvasGetSerializingSvg.js +0 -9
- package/esm/util/offscreenCanvasUtils.d.ts +0 -12
- package/esm/util/offscreenCanvasUtils.js +0 -19
- package/esm/util/renderToAbstractCanvas.d.ts +0 -17
- package/esm/util/renderToAbstractCanvas.js +0 -53
- package/esm/util/stopToken.d.ts +0 -19
- package/esm/util/stopToken.js +0 -90
- package/esm/util/transferables.d.ts +0 -2
- package/esm/util/transferables.js +0 -35
- package/esm/util/tss-react/mui/index.d.ts +0 -1
- package/esm/util/tss-react/mui/index.js +0 -1
- package/esm/util/tss-react/mui/mui.d.ts +0 -10
- package/esm/util/tss-react/mui/mui.js +0 -5
- package/esm/util/when.d.ts +0 -1
- package/esm/util/when.js +0 -1
- /package/esm/{BaseFeatureWidget/BaseFeatureDetail/types.js → data_adapters/BaseAdapter/CytobandAdapter.js} +0 -0
- /package/esm/data_adapters/BaseAdapter/{BaseOptions.js → zoomRange.js} +0 -0
- /package/esm/{util/layouts/BaseLayout.js → rpc/RpcRegistry.js} +0 -0
package/esm/PluginManager.js
CHANGED
|
@@ -1,28 +1,50 @@
|
|
|
1
1
|
import { isModelType, isType, types } from '@jbrowse/mobx-state-tree';
|
|
2
|
-
import CorePlugin from
|
|
3
|
-
import PhasedScheduler from
|
|
4
|
-
import
|
|
5
|
-
import { ConfigurationSchema, isBareConfigurationSchemaType, } from
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
2
|
+
import CorePlugin from './CorePlugin.js';
|
|
3
|
+
import PhasedScheduler from './PhasedScheduler.js';
|
|
4
|
+
import { getReExportRegistry } from './ReExports/registry.js';
|
|
5
|
+
import { ConfigurationSchema, isBareConfigurationSchemaType, } from './configuration/index.js';
|
|
6
|
+
import LazyStateModelElement from './pluggableElementTypes/LazyStateModelElement.js';
|
|
7
|
+
import createJexlInstance from './util/jexl.js';
|
|
8
|
+
import { expandLooseTrackConfig } from './util/tracks.js';
|
|
9
|
+
/**
|
|
10
|
+
* Every pluggable element group, in the order `elementCreationSchedule` builds
|
|
11
|
+
* them. The array is the declaration and the union is derived from it, so a
|
|
12
|
+
* consumer that has to visit every group — `pruneUnbuildableNodes` walking a
|
|
13
|
+
* session snapshot for containers of a pluggable union — enumerates them at
|
|
14
|
+
* runtime instead of keeping a second hand-written list that goes stale.
|
|
15
|
+
*/
|
|
16
|
+
export const pluggableElementTypeGroups = [
|
|
17
|
+
'adapter',
|
|
18
|
+
'text search adapter',
|
|
19
|
+
'display',
|
|
20
|
+
'track',
|
|
21
|
+
'connection',
|
|
22
|
+
'view',
|
|
23
|
+
'widget',
|
|
24
|
+
'rpc method',
|
|
25
|
+
'internet account',
|
|
26
|
+
'add track workflow',
|
|
27
|
+
];
|
|
28
|
+
function pluggableUnionName(groupName, fieldName) {
|
|
29
|
+
return `pluggable(${groupName} ${fieldName})`;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* The group a `pluggableMstType(group, 'stateModel')` union holds, read off
|
|
33
|
+
* its name: with every member a lazy model not yet loaded, the union has no
|
|
34
|
+
* members to recognise it by.
|
|
35
|
+
*/
|
|
36
|
+
export function pluggableStateModelGroup(type) {
|
|
37
|
+
return pluggableElementTypeGroups.find(group => type.name === pluggableUnionName(group, 'stateModel'));
|
|
38
|
+
}
|
|
39
|
+
function isUnloadedLazyElement(element) {
|
|
40
|
+
return element instanceof LazyStateModelElement && !element.isStateModelLoaded;
|
|
41
|
+
}
|
|
42
|
+
/** internal class that holds the info for a certain element type */
|
|
19
43
|
class TypeRecord {
|
|
20
|
-
typeName;
|
|
21
|
-
baseClass;
|
|
22
44
|
registeredTypes = {};
|
|
23
|
-
|
|
45
|
+
typeName;
|
|
46
|
+
constructor(typeName) {
|
|
24
47
|
this.typeName = typeName;
|
|
25
|
-
this.baseClass = baseClass;
|
|
26
48
|
}
|
|
27
49
|
add(name, t) {
|
|
28
50
|
this.registeredTypes[name] = t;
|
|
@@ -30,44 +52,137 @@ class TypeRecord {
|
|
|
30
52
|
has(name) {
|
|
31
53
|
return name in this.registeredTypes;
|
|
32
54
|
}
|
|
55
|
+
// The message a build with the wrong plugin set gets, and usually the ONLY
|
|
56
|
+
// one. The lookups that reach here are mostly registration-time and
|
|
57
|
+
// cross-plugin — `pm.getDisplayType('LinearAlignmentsDisplay')` from a track's
|
|
58
|
+
// install — so in an embedded product, whose consumer supplies the plugin
|
|
59
|
+
// array, this throw is what lands in `pluginManagerError` and replaces the
|
|
60
|
+
// whole app. Naming the missing type alone still leaves "which plugin" to
|
|
61
|
+
// guess, which is what the registered list answers: a build short one plugin
|
|
62
|
+
// is visibly short that plugin's group of names.
|
|
33
63
|
get(name) {
|
|
34
|
-
|
|
35
|
-
|
|
64
|
+
const type = this.registeredTypes[name];
|
|
65
|
+
if (!type) {
|
|
66
|
+
throw new Error(`${this.typeName} '${name}' is not registered: a plugin providing it either failed to load or is not in this build's plugin list. Registered ${this.typeName}s: ${this.registeredNames()}`);
|
|
36
67
|
}
|
|
37
|
-
return
|
|
68
|
+
return type;
|
|
69
|
+
}
|
|
70
|
+
registeredNames() {
|
|
71
|
+
const names = Object.keys(this.registeredTypes).sort();
|
|
72
|
+
if (names.length === 0) {
|
|
73
|
+
// distinguishable from "the plugin is missing", and a different bug: a
|
|
74
|
+
// getter called before createPluggableElements() sees every record empty
|
|
75
|
+
return 'none at all, so this ran before createPluggableElements()';
|
|
76
|
+
}
|
|
77
|
+
const shown = names.slice(0, 25);
|
|
78
|
+
const rest = names.length - shown.length;
|
|
79
|
+
return rest > 0 ? `${shown.join(', ')}, and ${rest} more` : shown.join(', ');
|
|
38
80
|
}
|
|
39
81
|
all() {
|
|
40
82
|
return Object.values(this.registeredTypes);
|
|
41
83
|
}
|
|
42
84
|
}
|
|
85
|
+
/**
|
|
86
|
+
* Marks a component built by wrapping the one the extension point accumulated
|
|
87
|
+
* so far, so {@link PluginManager.evaluateComponentExtensionPoint} can tell
|
|
88
|
+
* composition (two plugins each wrapping, both still visible) from a genuine
|
|
89
|
+
* clobber (a second plugin discarding the first). Set by `wrapComponent`.
|
|
90
|
+
*/
|
|
91
|
+
export const wrappedComponent = Symbol.for('jbrowse.wrappedComponent');
|
|
92
|
+
// a callback that forgets to return hands `undefined` to every later callback
|
|
93
|
+
// and to the producer, which is a silent no-op the author has no way to see —
|
|
94
|
+
// the accumulator survives instead, since "return what you were passed" is the
|
|
95
|
+
// documented way to opt out
|
|
96
|
+
function nextAccumulator(name, accumulator, result) {
|
|
97
|
+
let next = result;
|
|
98
|
+
if (result === undefined && accumulator !== undefined) {
|
|
99
|
+
console.warn(`a ${name} extension point callback returned undefined instead of the value it was passed, so its result was ignored`);
|
|
100
|
+
next = accumulator;
|
|
101
|
+
}
|
|
102
|
+
return next;
|
|
103
|
+
}
|
|
104
|
+
// a bare stack from minified plugin code names nothing, so say which point
|
|
105
|
+
function logCallbackError(name, error) {
|
|
106
|
+
console.error(`error in a ${name} extension point callback`, error);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Instantiate an application's bundled plugin list as `isCore` load records —
|
|
110
|
+
* what tells the plugin store these came with the bundle rather than being
|
|
111
|
+
* installed by the user, so `InstalledPluginsList` filters them out and the
|
|
112
|
+
* About widget lists them. Every product and every test harness builds its
|
|
113
|
+
* manager from one of these lists, and a harness that passed bare instances
|
|
114
|
+
* silently disagreed with the app it was testing.
|
|
115
|
+
*/
|
|
116
|
+
export function corePluginRecords(plugins) {
|
|
117
|
+
return plugins.map(P => ({ plugin: new P(), metadata: { isCore: true } }));
|
|
118
|
+
}
|
|
43
119
|
export default class PluginManager {
|
|
44
120
|
plugins = [];
|
|
45
121
|
jexl = createJexlInstance();
|
|
46
122
|
pluginMetadata = {};
|
|
47
123
|
runtimePluginDefinitions = [];
|
|
48
|
-
elementCreationSchedule = new PhasedScheduler(
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
internetAccountTypes = new TypeRecord('InternetAccountType', InternetAccountType);
|
|
124
|
+
elementCreationSchedule = new PhasedScheduler(...pluggableElementTypeGroups);
|
|
125
|
+
pluggableElementsCreated = false;
|
|
126
|
+
adapterTypes = new TypeRecord('AdapterType');
|
|
127
|
+
textSearchAdapterTypes = new TypeRecord('TextSearchAdapterType');
|
|
128
|
+
trackTypes = new TypeRecord('TrackType');
|
|
129
|
+
displayTypes = new TypeRecord('DisplayType');
|
|
130
|
+
connectionTypes = new TypeRecord('ConnectionType');
|
|
131
|
+
viewTypes = new TypeRecord('ViewType');
|
|
132
|
+
widgetTypes = new TypeRecord('WidgetType');
|
|
133
|
+
rpcMethods = new TypeRecord('RpcMethodType');
|
|
134
|
+
addTrackWidgets = new TypeRecord('AddTrackWorkflow');
|
|
135
|
+
internetAccountTypes = new TypeRecord('InternetAccountType');
|
|
61
136
|
configured = false;
|
|
62
137
|
rootModel;
|
|
63
138
|
extensionPoints = new Map();
|
|
139
|
+
// singular component points are re-evaluated on every render, so the
|
|
140
|
+
// clobber warning is emitted once per point per app
|
|
141
|
+
warnedClobber = new Set();
|
|
142
|
+
#trackConfigHydrationCache = new WeakMap();
|
|
143
|
+
/**
|
|
144
|
+
* The lazily-hydrated MST config node for one frozen track config, built by
|
|
145
|
+
* `build` on first ask and returned by identity after that.
|
|
146
|
+
* `configuration/configurationSchema.ts` is the only caller.
|
|
147
|
+
*
|
|
148
|
+
* `jbrowse.tracks` is `types.frozen` for large-tracklist performance, so a
|
|
149
|
+
* track config is a plain JS object until first referenced; hydrating it into
|
|
150
|
+
* an MST node is deferred to that read. MST's custom-reference `getValue` has
|
|
151
|
+
* no memoization of its own — it reruns on every property access — so without
|
|
152
|
+
* this, every read of `track.configuration` would fabricate a fresh,
|
|
153
|
+
* non-identical node. Keyed by schemaType (each track type's config schema is
|
|
154
|
+
* rebuilt fresh per PluginManager instance, see addTrackType) then by the
|
|
155
|
+
* frozen object, so a hit can only ever come from this same instance and this
|
|
156
|
+
* same track type. See ADR-031.
|
|
157
|
+
*
|
|
158
|
+
* The node is never mutated: admin edits replace the frozen entry (new
|
|
159
|
+
* identity drops the WeakMap entry), and a non-admin's edits go to a private
|
|
160
|
+
* session working copy, not here (ADR-032). Both levels are `WeakMap`s so
|
|
161
|
+
* entries collect normally — no manual invalidation needed, which is why this
|
|
162
|
+
* is a memo and not a cache with a lifecycle to expose.
|
|
163
|
+
*/
|
|
164
|
+
hydratedTrackConfig(schemaType, frozen, build) {
|
|
165
|
+
let byFrozen = this.#trackConfigHydrationCache.get(schemaType);
|
|
166
|
+
if (!byFrozen) {
|
|
167
|
+
byFrozen = new WeakMap();
|
|
168
|
+
this.#trackConfigHydrationCache.set(schemaType, byFrozen);
|
|
169
|
+
}
|
|
170
|
+
let node = byFrozen.get(frozen);
|
|
171
|
+
if (!node) {
|
|
172
|
+
node = build();
|
|
173
|
+
byFrozen.set(frozen, node);
|
|
174
|
+
}
|
|
175
|
+
return node;
|
|
176
|
+
}
|
|
64
177
|
constructor(initialPlugins = []) {
|
|
178
|
+
// add the core plugin
|
|
65
179
|
this.addPlugin({
|
|
66
180
|
plugin: new CorePlugin(),
|
|
67
181
|
metadata: {
|
|
68
182
|
isCore: true,
|
|
69
183
|
},
|
|
70
184
|
});
|
|
185
|
+
// add all the initial plugins
|
|
71
186
|
for (const plugin of initialPlugins) {
|
|
72
187
|
this.addPlugin(plugin);
|
|
73
188
|
}
|
|
@@ -82,25 +197,19 @@ export default class PluginManager {
|
|
|
82
197
|
return configurationSchemas;
|
|
83
198
|
}
|
|
84
199
|
pluginConfigurationUnnamespacedSchemas() {
|
|
85
|
-
|
|
200
|
+
const configurationSchemas = {};
|
|
86
201
|
for (const plugin of this.plugins) {
|
|
87
202
|
if (plugin.configurationSchemaUnnamespaced) {
|
|
88
|
-
configurationSchemas
|
|
89
|
-
...configurationSchemas,
|
|
90
|
-
...plugin.configurationSchemaUnnamespaced,
|
|
91
|
-
};
|
|
203
|
+
Object.assign(configurationSchemas, plugin.configurationSchemaUnnamespaced);
|
|
92
204
|
}
|
|
93
205
|
}
|
|
94
206
|
return configurationSchemas;
|
|
95
207
|
}
|
|
96
208
|
pluginConfigurationRootSchemas() {
|
|
97
|
-
|
|
209
|
+
const configurationSchemas = {};
|
|
98
210
|
for (const plugin of this.plugins) {
|
|
99
211
|
if (plugin.rootConfigurationSchema) {
|
|
100
|
-
configurationSchemas
|
|
101
|
-
...configurationSchemas,
|
|
102
|
-
...plugin.rootConfigurationSchema(this),
|
|
103
|
-
};
|
|
212
|
+
Object.assign(configurationSchemas, plugin.rootConfigurationSchema(this));
|
|
104
213
|
}
|
|
105
214
|
}
|
|
106
215
|
return configurationSchemas;
|
|
@@ -109,11 +218,29 @@ export default class PluginManager {
|
|
|
109
218
|
if (this.configured) {
|
|
110
219
|
throw new Error('JBrowse already configured, cannot add plugins');
|
|
111
220
|
}
|
|
112
|
-
const [plugin, metadata
|
|
113
|
-
? [load, {}]
|
|
114
|
-
: [load
|
|
115
|
-
|
|
116
|
-
|
|
221
|
+
const [plugin, metadata] = 'plugin' in load
|
|
222
|
+
? [load.plugin, load.metadata ?? {}]
|
|
223
|
+
: [load, {}];
|
|
224
|
+
// Refuse a second copy of the same plugin, matched by name rather than by
|
|
225
|
+
// object identity: the two copies of a plugin a product bundles AND a
|
|
226
|
+
// config names are different classes from different bundles, so an
|
|
227
|
+
// identity check never sees them.
|
|
228
|
+
//
|
|
229
|
+
// The pluggable-element registry has its own first-wins guard, but a
|
|
230
|
+
// plugin's install()/configure() side effects have none — appendToMenu is a
|
|
231
|
+
// plain push, so a second copy silently doubles that plugin's menu items.
|
|
232
|
+
// Enforcing it here means a product does not have to remember to drop the
|
|
233
|
+
// config entry for everything it vendors.
|
|
234
|
+
//
|
|
235
|
+
// Warn and skip rather than throw. A config naming a plugin some product
|
|
236
|
+
// bundles is a legitimate config — jbrowse.org's hub configs do exactly
|
|
237
|
+
// that, so Web (which bundles less than Desktop) still gets the plugin —
|
|
238
|
+
// and failing the whole session over it would be worse than the duplicate
|
|
239
|
+
// this prevents. First registration wins, which is the core copy, since
|
|
240
|
+
// core plugins are added before a config's.
|
|
241
|
+
if (this.plugins.some(p => p.name === plugin.name)) {
|
|
242
|
+
console.warn(`plugin ${plugin.name} is already installed, ignoring the second copy`);
|
|
243
|
+
return this;
|
|
117
244
|
}
|
|
118
245
|
this.pluginMetadata[plugin.name] = metadata;
|
|
119
246
|
if ('definition' in load) {
|
|
@@ -129,10 +256,23 @@ export default class PluginManager {
|
|
|
129
256
|
hasPlugin(name) {
|
|
130
257
|
return this.getPlugin(name) !== undefined;
|
|
131
258
|
}
|
|
259
|
+
removePlugin(pluginName) {
|
|
260
|
+
const plugin = this.getPlugin(pluginName);
|
|
261
|
+
if (!plugin) {
|
|
262
|
+
throw new Error(`Plugin '${pluginName}' not found`);
|
|
263
|
+
}
|
|
264
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
265
|
+
plugin.uninstall?.(this);
|
|
266
|
+
this.plugins = this.plugins.filter(p => p.name !== pluginName);
|
|
267
|
+
delete this.pluginMetadata[pluginName];
|
|
268
|
+
return this;
|
|
269
|
+
}
|
|
132
270
|
createPluggableElements() {
|
|
133
|
-
|
|
271
|
+
// run the creation callbacks for each element type in order.
|
|
272
|
+
// see elementCreationSchedule above for the creation order
|
|
273
|
+
if (!this.pluggableElementsCreated) {
|
|
134
274
|
this.elementCreationSchedule.run();
|
|
135
|
-
this.
|
|
275
|
+
this.pluggableElementsCreated = true;
|
|
136
276
|
}
|
|
137
277
|
return this;
|
|
138
278
|
}
|
|
@@ -160,8 +300,6 @@ export default class PluginManager {
|
|
|
160
300
|
return this.connectionTypes;
|
|
161
301
|
case 'widget':
|
|
162
302
|
return this.widgetTypes;
|
|
163
|
-
case 'renderer':
|
|
164
|
-
return this.rendererTypes;
|
|
165
303
|
case 'display':
|
|
166
304
|
return this.displayTypes;
|
|
167
305
|
case 'track':
|
|
@@ -174,8 +312,6 @@ export default class PluginManager {
|
|
|
174
312
|
return this.internetAccountTypes;
|
|
175
313
|
case 'add track workflow':
|
|
176
314
|
return this.addTrackWidgets;
|
|
177
|
-
case 'glyph':
|
|
178
|
-
return this.glyphTypes;
|
|
179
315
|
default:
|
|
180
316
|
throw new Error(`invalid element type '${groupName}'`);
|
|
181
317
|
}
|
|
@@ -184,8 +320,11 @@ export default class PluginManager {
|
|
|
184
320
|
if (typeof creationCallback !== 'function') {
|
|
185
321
|
throw new Error('must provide a callback function that returns the new type object');
|
|
186
322
|
}
|
|
323
|
+
if (this.pluggableElementsCreated) {
|
|
324
|
+
throw new Error(`Cannot add element type after createPluggableElements() has been called`);
|
|
325
|
+
}
|
|
187
326
|
const typeRecord = this.getElementTypeRecord(groupName);
|
|
188
|
-
this.elementCreationSchedule
|
|
327
|
+
this.elementCreationSchedule.add(groupName, () => {
|
|
189
328
|
const newElement = creationCallback(this);
|
|
190
329
|
if (!newElement.name) {
|
|
191
330
|
throw new Error(`cannot add a ${groupName} with no name`);
|
|
@@ -194,7 +333,28 @@ export default class PluginManager {
|
|
|
194
333
|
console.warn(`${groupName} ${newElement.name} already registered, cannot register it again`);
|
|
195
334
|
}
|
|
196
335
|
else {
|
|
197
|
-
|
|
336
|
+
const extend = () => this.evaluateExtensionPoint(
|
|
337
|
+
/** #extensionPoint Core-extendPluggableElement | sync | Mutate any pluggable element after it is created */
|
|
338
|
+
'Core-extendPluggableElement', newElement, { group: groupName });
|
|
339
|
+
// A lazily registered state model is not there for a callback to
|
|
340
|
+
// extend yet, so the point fires when the loader resolves instead.
|
|
341
|
+
// agent-docs/reference/EAGER_BUNDLE.md
|
|
342
|
+
if (isUnloadedLazyElement(newElement)) {
|
|
343
|
+
newElement.onStateModelLoaded = () => {
|
|
344
|
+
const extended = extend();
|
|
345
|
+
if (extended !== newElement) {
|
|
346
|
+
typeRecord.add(newElement.name, extended);
|
|
347
|
+
if (extended instanceof LazyStateModelElement &&
|
|
348
|
+
extended.isStateModelLoaded) {
|
|
349
|
+
newElement.stateModel = extended.stateModel;
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
};
|
|
353
|
+
typeRecord.add(newElement.name, newElement);
|
|
354
|
+
}
|
|
355
|
+
else {
|
|
356
|
+
typeRecord.add(newElement.name, extend());
|
|
357
|
+
}
|
|
198
358
|
}
|
|
199
359
|
});
|
|
200
360
|
return this;
|
|
@@ -226,17 +386,43 @@ export default class PluginManager {
|
|
|
226
386
|
getAdapterElements() {
|
|
227
387
|
return this.getElementTypesInGroup('adapter');
|
|
228
388
|
}
|
|
389
|
+
/**
|
|
390
|
+
* get a MST type for the union of all specified pluggable MST types.
|
|
391
|
+
* Membership is late-bound, so a lazily registered state model joins when
|
|
392
|
+
* its loader resolves; a snapshot naming one cannot be cast until then.
|
|
393
|
+
*/
|
|
229
394
|
pluggableMstType(groupName, fieldName, fallback = types.maybe(types.null)) {
|
|
230
|
-
const
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
395
|
+
const record = this.getElementTypeRecord(groupName);
|
|
396
|
+
const fieldOf = (t) => isUnloadedLazyElement(t)
|
|
397
|
+
? undefined
|
|
398
|
+
: t[fieldName];
|
|
399
|
+
const anyMember = record.all().some(t => {
|
|
400
|
+
const field = fieldOf(t);
|
|
401
|
+
return ((isType(field) && isModelType(field)) ||
|
|
402
|
+
typeof t[`${fieldName}Loader`] === 'function');
|
|
403
|
+
});
|
|
404
|
+
if (!anyMember) {
|
|
236
405
|
return fallback;
|
|
237
406
|
}
|
|
238
|
-
|
|
407
|
+
const modelsOf = () => record
|
|
408
|
+
.all()
|
|
409
|
+
.map(t => fieldOf(t))
|
|
410
|
+
.filter(t => isType(t) && isModelType(t));
|
|
411
|
+
let members = modelsOf();
|
|
412
|
+
return types.union({
|
|
413
|
+
name: pluggableUnionName(groupName, fieldName),
|
|
414
|
+
members: () => {
|
|
415
|
+
if (members.length !== modelsOf().length) {
|
|
416
|
+
members = modelsOf();
|
|
417
|
+
}
|
|
418
|
+
return members;
|
|
419
|
+
},
|
|
420
|
+
});
|
|
239
421
|
}
|
|
422
|
+
/**
|
|
423
|
+
* The union of every registered config schema of a pluggable element group,
|
|
424
|
+
* whose instance reads as a config node naming its `type`.
|
|
425
|
+
*/
|
|
240
426
|
pluggableConfigSchemaType(typeGroup, fieldName = 'configSchema') {
|
|
241
427
|
const pluggableTypes = this.getElementTypeRecord(typeGroup)
|
|
242
428
|
.all()
|
|
@@ -245,42 +431,68 @@ export default class PluginManager {
|
|
|
245
431
|
if (pluggableTypes.length === 0) {
|
|
246
432
|
pluggableTypes.push(ConfigurationSchema('Null', {}));
|
|
247
433
|
}
|
|
248
|
-
|
|
434
|
+
// a union, not a model type: claiming model-ness here is what made a
|
|
435
|
+
// schema taking its base from this look concrete while its own slot reads
|
|
436
|
+
// had already degraded to `any` — see configuration/CLAUDE.md.
|
|
437
|
+
const union = types.union(...pluggableTypes);
|
|
438
|
+
// A track union dispatches on `type`, so the loose `{ trackId, uri }` form
|
|
439
|
+
// has to become a full config before the union sees it. Here rather than
|
|
440
|
+
// at each array that holds tracks, so a session track, a connection track
|
|
441
|
+
// and a direct `create` all take it.
|
|
442
|
+
return (typeGroup === 'track'
|
|
443
|
+
? types.snapshotProcessor(union, {
|
|
444
|
+
preProcessor: (snap) => expandLooseTrackConfig(snap, this),
|
|
445
|
+
})
|
|
446
|
+
: union);
|
|
249
447
|
}
|
|
250
448
|
jbrequireCache = new Map();
|
|
251
|
-
|
|
449
|
+
// populated by PluginLoader once a runtime plugin is actually being loaded,
|
|
450
|
+
// which is the only thing that can call jbrequire — see ReExports/registry.ts
|
|
451
|
+
get lib() {
|
|
452
|
+
return getReExportRegistry();
|
|
453
|
+
}
|
|
252
454
|
load = (lib) => {
|
|
253
455
|
if (!this.jbrequireCache.has(lib)) {
|
|
254
456
|
this.jbrequireCache.set(lib, lib(this));
|
|
255
457
|
}
|
|
256
458
|
return this.jbrequireCache.get(lib);
|
|
257
459
|
};
|
|
460
|
+
/**
|
|
461
|
+
* Get the re-exported version of the given package name.
|
|
462
|
+
* Throws an error if the package is not re-exported by the plugin manager.
|
|
463
|
+
*
|
|
464
|
+
* @returns the library's default export
|
|
465
|
+
*/
|
|
258
466
|
jbrequire = (lib) => {
|
|
259
467
|
if (typeof lib === 'string') {
|
|
260
468
|
const pack = this.lib[lib];
|
|
261
469
|
if (!pack) {
|
|
262
|
-
throw new TypeError(`No jbrequire re-export defined for
|
|
470
|
+
throw new TypeError(`No jbrequire re-export defined for '${lib}'. The host serves what @jbrowse/core/ReExports/list names: the framework singletons, Material UI, and every subpath the bundled @jbrowse packages publish. Anything else, bundle into the plugin.`);
|
|
263
471
|
}
|
|
264
472
|
return pack;
|
|
265
473
|
}
|
|
266
474
|
else if (typeof lib === 'function') {
|
|
267
475
|
return this.load(lib);
|
|
268
476
|
}
|
|
477
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
269
478
|
else if (lib.default) {
|
|
270
479
|
console.warn('initiated jbrequire on a {default:Function}');
|
|
271
480
|
return this.jbrequire(lib.default);
|
|
272
481
|
}
|
|
273
482
|
throw new TypeError('lib passed to jbrequire must be either a string or a function');
|
|
274
483
|
};
|
|
275
|
-
getRendererType(typeName) {
|
|
276
|
-
return this.rendererTypes.get(typeName);
|
|
277
|
-
}
|
|
278
|
-
getRendererTypes() {
|
|
279
|
-
return this.rendererTypes.all();
|
|
280
|
-
}
|
|
281
484
|
getAdapterType(typeName) {
|
|
282
485
|
return this.adapterTypes.get(typeName);
|
|
283
486
|
}
|
|
487
|
+
/**
|
|
488
|
+
* Whether an adapter type is registered, for a caller walking a config where
|
|
489
|
+
* `type` names a track, a display and an adapter alike — `getAdapterType`
|
|
490
|
+
* throws on a miss, which is right when the name came from a config that
|
|
491
|
+
* claims to be an adapter and wrong when you are asking whether it is one.
|
|
492
|
+
*/
|
|
493
|
+
hasAdapterType(typeName) {
|
|
494
|
+
return this.adapterTypes.has(typeName);
|
|
495
|
+
}
|
|
284
496
|
getTextSearchAdapterType(typeName) {
|
|
285
497
|
return this.textSearchAdapterTypes.get(typeName);
|
|
286
498
|
}
|
|
@@ -293,6 +505,71 @@ export default class PluginManager {
|
|
|
293
505
|
getViewType(typeName) {
|
|
294
506
|
return this.viewTypes.get(typeName);
|
|
295
507
|
}
|
|
508
|
+
/**
|
|
509
|
+
* The registered view and display types a snapshot names, from every `type`
|
|
510
|
+
* string anywhere in it — `heldForMissingPlugins` included. Over-collection
|
|
511
|
+
* is harmless: a name that resolves to neither is dropped here.
|
|
512
|
+
*/
|
|
513
|
+
sessionElementTypes(sessionSnapshot) {
|
|
514
|
+
const names = new Set();
|
|
515
|
+
const walk = (node) => {
|
|
516
|
+
if (Array.isArray(node)) {
|
|
517
|
+
for (const item of node) {
|
|
518
|
+
walk(item);
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
else if (node && typeof node === 'object') {
|
|
522
|
+
for (const [key, value] of Object.entries(node)) {
|
|
523
|
+
if (key === 'type' && typeof value === 'string') {
|
|
524
|
+
names.add(value);
|
|
525
|
+
}
|
|
526
|
+
else {
|
|
527
|
+
walk(value);
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
};
|
|
532
|
+
walk(sessionSnapshot);
|
|
533
|
+
return [...names].flatMap(name => {
|
|
534
|
+
const display = this.resolveDisplayTypeRecord(name);
|
|
535
|
+
return [
|
|
536
|
+
...(this.viewTypes.has(name) ? [this.getViewType(name)] : []),
|
|
537
|
+
...(display ? [display] : []),
|
|
538
|
+
];
|
|
539
|
+
});
|
|
540
|
+
}
|
|
541
|
+
/**
|
|
542
|
+
* Every async code path that hands a snapshot to a synchronous session
|
|
543
|
+
* instantiation (`setSession`, `cast`) must await this first.
|
|
544
|
+
*/
|
|
545
|
+
async preloadSessionTypes(sessionSnapshot) {
|
|
546
|
+
await Promise.all(this.sessionElementTypes(sessionSnapshot).map(t => t.loadStateModel()));
|
|
547
|
+
}
|
|
548
|
+
unloadedSessionTypes(sessionSnapshot) {
|
|
549
|
+
return this.sessionElementTypes(sessionSnapshot)
|
|
550
|
+
.filter(t => !t.isStateModelLoaded)
|
|
551
|
+
.map(t => t.name);
|
|
552
|
+
}
|
|
553
|
+
/**
|
|
554
|
+
* Without this, a snapshot naming an unloaded lazy type fails inside MST as
|
|
555
|
+
* a union mismatch that reads like a corrupt snapshot.
|
|
556
|
+
*/
|
|
557
|
+
assertSessionTypesLoaded(sessionSnapshot) {
|
|
558
|
+
const unloaded = this.unloadedSessionTypes(sessionSnapshot);
|
|
559
|
+
if (unloaded.length > 0) {
|
|
560
|
+
throw new Error(`session names lazily loaded types that are not loaded yet: ${unloaded.join(', ')}. Await pluginManager.preloadSessionTypes(snapshot) before setting the session`);
|
|
561
|
+
}
|
|
562
|
+
}
|
|
563
|
+
/**
|
|
564
|
+
* Aliases resolve here because a legacy session names the alias, and the
|
|
565
|
+
* model that remaps it cannot be consulted before it is loaded.
|
|
566
|
+
*/
|
|
567
|
+
resolveDisplayTypeRecord(name) {
|
|
568
|
+
if (this.displayTypes.has(name)) {
|
|
569
|
+
return this.getDisplayType(name);
|
|
570
|
+
}
|
|
571
|
+
return this.getDisplayElements().find(d => d.aliases?.includes(name));
|
|
572
|
+
}
|
|
296
573
|
getAddTrackWorkflow(typeName) {
|
|
297
574
|
return this.addTrackWidgets.get(typeName);
|
|
298
575
|
}
|
|
@@ -308,9 +585,6 @@ export default class PluginManager {
|
|
|
308
585
|
getInternetAccountType(name) {
|
|
309
586
|
return this.internetAccountTypes.get(name);
|
|
310
587
|
}
|
|
311
|
-
addRendererType(cb) {
|
|
312
|
-
return this.addElementType('renderer', cb);
|
|
313
|
-
}
|
|
314
588
|
addAdapterType(cb) {
|
|
315
589
|
return this.addElementType('adapter', cb);
|
|
316
590
|
}
|
|
@@ -318,11 +592,14 @@ export default class PluginManager {
|
|
|
318
592
|
return this.addElementType('text search adapter', cb);
|
|
319
593
|
}
|
|
320
594
|
addTrackType(cb) {
|
|
595
|
+
// Goes through the already-created displays and registers the ones that
|
|
596
|
+
// specify this track type
|
|
321
597
|
const callback = () => {
|
|
322
598
|
const track = cb(this);
|
|
323
599
|
const displays = this.getElementTypesInGroup('display');
|
|
324
600
|
for (const display of displays) {
|
|
325
|
-
|
|
601
|
+
// track may have already added the displayType in its cb
|
|
602
|
+
if ([display.trackType].flat().includes(track.name) &&
|
|
326
603
|
!track.displayTypes.includes(display)) {
|
|
327
604
|
track.addDisplayType(display);
|
|
328
605
|
}
|
|
@@ -339,6 +616,8 @@ export default class PluginManager {
|
|
|
339
616
|
const newView = cb(this);
|
|
340
617
|
const displays = this.getElementTypesInGroup('display');
|
|
341
618
|
for (const display of displays) {
|
|
619
|
+
// view may have already added the displayType in its callback
|
|
620
|
+
// see ViewType for description of extendedName
|
|
342
621
|
if ((display.viewType === newView.name ||
|
|
343
622
|
display.viewType === newView.extendedName) &&
|
|
344
623
|
!newView.displayTypes.includes(display)) {
|
|
@@ -364,16 +643,82 @@ export default class PluginManager {
|
|
|
364
643
|
addAddTrackWorkflowType(cb) {
|
|
365
644
|
return this.addElementType('add track workflow', cb);
|
|
366
645
|
}
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
646
|
+
/**
|
|
647
|
+
* Contribute entries to an accumulating point.
|
|
648
|
+
*
|
|
649
|
+
* The callback is handed only the props and returns what it wants to add —
|
|
650
|
+
* one entry, several, or `undefined` to add nothing. It never receives the
|
|
651
|
+
* array, which is the whole point: the concatenation happens here, once, so
|
|
652
|
+
* no plugin can write the `[MyEntry]` that silently drops every other
|
|
653
|
+
* plugin's entries. That mistake looked correct to whoever made it, because
|
|
654
|
+
* with one plugin registered there is nothing to drop.
|
|
655
|
+
*/
|
|
656
|
+
contributeToExtensionPoint(extensionPointName, callback) {
|
|
657
|
+
this.pushExtensionPointCallback(extensionPointName, (entries, props) => {
|
|
658
|
+
const contributed = callback(props);
|
|
659
|
+
const accumulated = entries;
|
|
660
|
+
return contributed === undefined
|
|
661
|
+
? accumulated
|
|
662
|
+
: [
|
|
663
|
+
...accumulated,
|
|
664
|
+
...(Array.isArray(contributed) ? contributed : [contributed]),
|
|
665
|
+
];
|
|
666
|
+
});
|
|
372
667
|
}
|
|
373
|
-
|
|
374
|
-
|
|
668
|
+
/**
|
|
669
|
+
* Listen to a notification point — one that carries its payload in `props`
|
|
670
|
+
* and whose return value nothing reads. The callback returns nothing;
|
|
671
|
+
* `addToExtensionPoint` rejects these names, so this is the only way in.
|
|
672
|
+
*
|
|
673
|
+
* The reason it is the only way in is the async join below, not the shorter
|
|
674
|
+
* callback. A handler that works asynchronously states so by returning a
|
|
675
|
+
* promise, and the producer waits on the folded value; written by hand
|
|
676
|
+
* through `addToExtensionPoint`, the second async handler's promise silently
|
|
677
|
+
* replaced the first's, so the producer stopped waiting as soon as the
|
|
678
|
+
* *last*-registered handler finished rather than when they all had. That is
|
|
679
|
+
* not a mistake a plugin author can see, which is why it is not left to them.
|
|
680
|
+
*/
|
|
681
|
+
listenToExtensionPoint(extensionPointName, callback) {
|
|
682
|
+
this.pushExtensionPointCallback(extensionPointName, (extendee, props) => {
|
|
683
|
+
const ret = callback(props);
|
|
684
|
+
// An async handler is awaited — by evaluateAsyncExtensionPoint, or by a
|
|
685
|
+
// producer that checks the folded value for a thenable to learn when
|
|
686
|
+
// handlers have finished. A sync one passes through whatever an earlier
|
|
687
|
+
// handler left, so its promise is not dropped on the way past.
|
|
688
|
+
//
|
|
689
|
+
// Two async ones are joined rather than the later replacing the earlier;
|
|
690
|
+
// under the sync runner nothing awaits between callbacks. waitForAssembly
|
|
691
|
+
// is the producer that depends on it.
|
|
692
|
+
if (!(ret instanceof Promise)) {
|
|
693
|
+
return extendee;
|
|
694
|
+
}
|
|
695
|
+
return extendee instanceof Promise
|
|
696
|
+
? Promise.all([extendee, ret]).then(() => undefined)
|
|
697
|
+
: ret.then(() => undefined);
|
|
698
|
+
});
|
|
375
699
|
}
|
|
376
700
|
addToExtensionPoint(extensionPointName, callback) {
|
|
701
|
+
this.pushExtensionPointCallback(extensionPointName, callback);
|
|
702
|
+
}
|
|
703
|
+
/**
|
|
704
|
+
* The one place a callback joins a point's chain. The three public
|
|
705
|
+
* registration methods go through this rather than through each other:
|
|
706
|
+
* `contributeToExtensionPoint` and `listenToExtensionPoint` register on exactly
|
|
707
|
+
* the point names their own signatures reject, so routing them via
|
|
708
|
+
* `addToExtensionPoint` would either fail to compile or force its guard to be
|
|
709
|
+
* loose enough to let a plugin do the same thing by hand.
|
|
710
|
+
*/
|
|
711
|
+
pushExtensionPointCallback(extensionPointName, callback) {
|
|
712
|
+
// `Core-extendPluggableElement` fires once per element, inside
|
|
713
|
+
// createPluggableElements(). Registering after that run joins a fold that
|
|
714
|
+
// has already happened, so the extension never applies — the same mistake
|
|
715
|
+
// `addElementType` throws on, and the reason it throws: from `configure()`
|
|
716
|
+
// instead of `install()`, an extendViewType call compiles, runs, and
|
|
717
|
+
// silently extends nothing.
|
|
718
|
+
if (extensionPointName === 'Core-extendPluggableElement' &&
|
|
719
|
+
this.pluggableElementsCreated) {
|
|
720
|
+
throw new Error("Cannot register on Core-extendPluggableElement after createPluggableElements() has been called: the point has already fired for every element, so this callback would never run. Register it from a plugin's install(), not configure().");
|
|
721
|
+
}
|
|
377
722
|
let callbacks = this.extensionPoints.get(extensionPointName);
|
|
378
723
|
if (!callbacks) {
|
|
379
724
|
callbacks = [];
|
|
@@ -387,28 +732,72 @@ export default class PluginManager {
|
|
|
387
732
|
if (callbacks) {
|
|
388
733
|
for (const callback of callbacks) {
|
|
389
734
|
try {
|
|
390
|
-
accumulator = callback(accumulator, props);
|
|
735
|
+
accumulator = nextAccumulator(extensionPointName, accumulator, callback(accumulator, props));
|
|
736
|
+
}
|
|
737
|
+
catch (error) {
|
|
738
|
+
logCallbackError(extensionPointName, error);
|
|
739
|
+
}
|
|
740
|
+
}
|
|
741
|
+
}
|
|
742
|
+
return accumulator;
|
|
743
|
+
}
|
|
744
|
+
evaluateComponentExtensionPoint(extensionPointName, extendee, props) {
|
|
745
|
+
const callbacks = this.extensionPoints.get(extensionPointName);
|
|
746
|
+
let accumulator = extendee;
|
|
747
|
+
let claims = 0;
|
|
748
|
+
if (callbacks) {
|
|
749
|
+
for (const callback of callbacks) {
|
|
750
|
+
try {
|
|
751
|
+
const result = nextAccumulator(extensionPointName, accumulator, callback(accumulator, props));
|
|
752
|
+
if (result !== accumulator &&
|
|
753
|
+
result?.[wrappedComponent] !== accumulator) {
|
|
754
|
+
claims++;
|
|
755
|
+
}
|
|
756
|
+
accumulator = result;
|
|
391
757
|
}
|
|
392
758
|
catch (error) {
|
|
393
|
-
|
|
759
|
+
logCallbackError(extensionPointName, error);
|
|
394
760
|
}
|
|
395
761
|
}
|
|
396
762
|
}
|
|
763
|
+
if (claims > 1 && !this.warnedClobber.has(extensionPointName)) {
|
|
764
|
+
this.warnedClobber.add(extensionPointName);
|
|
765
|
+
console.warn(`more than one plugin replaced the ${extensionPointName} slot; only the last one registered is visible. Use a wrapper if the intent was to add to the default rather than replace it`);
|
|
766
|
+
}
|
|
397
767
|
return accumulator;
|
|
398
768
|
}
|
|
769
|
+
/**
|
|
770
|
+
* How many callbacks are registered on `extensionPointName`. For a caller
|
|
771
|
+
* that has to tell "every handler declined" apart from "nobody was
|
|
772
|
+
* listening" — the two look identical in the folded result, and
|
|
773
|
+
* assemblyManager waits out the first but not the second.
|
|
774
|
+
*/
|
|
775
|
+
extensionPointCallbackCount(extensionPointName) {
|
|
776
|
+
return this.extensionPoints.get(extensionPointName)?.length ?? 0;
|
|
777
|
+
}
|
|
399
778
|
async evaluateAsyncExtensionPoint(extensionPointName, extendee, props) {
|
|
400
779
|
const callbacks = this.extensionPoints.get(extensionPointName);
|
|
401
780
|
let accumulator = extendee;
|
|
402
781
|
if (callbacks) {
|
|
403
782
|
for (const callback of callbacks) {
|
|
404
783
|
try {
|
|
405
|
-
accumulator = await callback(accumulator, props);
|
|
784
|
+
accumulator = nextAccumulator(extensionPointName, accumulator, await callback(accumulator, props));
|
|
406
785
|
}
|
|
407
786
|
catch (error) {
|
|
408
|
-
|
|
787
|
+
logCallbackError(extensionPointName, error);
|
|
409
788
|
}
|
|
410
789
|
}
|
|
411
790
|
}
|
|
412
791
|
return accumulator;
|
|
413
792
|
}
|
|
793
|
+
async evaluateAsyncExtensionPointStrict(extensionPointName, extendee, props) {
|
|
794
|
+
const callbacks = this.extensionPoints.get(extensionPointName);
|
|
795
|
+
let accumulator = extendee;
|
|
796
|
+
if (callbacks) {
|
|
797
|
+
for (const callback of callbacks) {
|
|
798
|
+
accumulator = nextAccumulator(extensionPointName, accumulator, await callback(accumulator, props));
|
|
799
|
+
}
|
|
800
|
+
}
|
|
801
|
+
return accumulator;
|
|
802
|
+
}
|
|
414
803
|
}
|