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