@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
|
@@ -1,22 +1,163 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { IntervalTree } from './IntervalTree.js';
|
|
2
|
+
import { createProgressReporter } from './progress.js';
|
|
3
|
+
/**
|
|
4
|
+
* Scan a tab-delimited genomic flat file (GFF3, GTF, BED, …), grouping
|
|
5
|
+
* feature lines by reference name (first tab-delimited column).
|
|
6
|
+
* Stops at an embedded FASTA section (`>`). Lines starting with `#` are
|
|
7
|
+
* collected as header lines.
|
|
8
|
+
*/
|
|
9
|
+
export function groupLinesByRef(buffer, statusCallback) {
|
|
10
|
+
const headerLines = [];
|
|
11
|
+
const linesByRef = {};
|
|
12
|
+
parseLineByLine(buffer, line => {
|
|
13
|
+
if (line.startsWith('#')) {
|
|
14
|
+
headerLines.push(line);
|
|
15
|
+
}
|
|
16
|
+
else if (line.startsWith('>')) {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
// a line with no tab has no coordinate columns either, so it cannot be
|
|
21
|
+
// a feature line; keying it by its own text would publish it through
|
|
22
|
+
// getRefNames as a phantom refName
|
|
23
|
+
const tab = line.indexOf('\t');
|
|
24
|
+
if (tab !== -1) {
|
|
25
|
+
;
|
|
26
|
+
(linesByRef[line.slice(0, tab)] ??= []).push(line);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return true;
|
|
30
|
+
}, statusCallback);
|
|
31
|
+
return { headerLines, linesByRef };
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Build a `refName -> lazy IntervalTree` map from feature lines grouped by ref
|
|
35
|
+
* (the output of {@link groupLinesByRef}). Each ref's lines are parsed and
|
|
36
|
+
* indexed into an interval tree on first access, then the raw lines are
|
|
37
|
+
* released. Shared scaffolding for the plain-text GFF3 and GTF adapters, which
|
|
38
|
+
* differ only in how they parse a ref's lines into features.
|
|
39
|
+
*/
|
|
40
|
+
export function makeFeatureIntervalTreeMap(linesByRef, parse, parsingStatusMessage) {
|
|
41
|
+
const cache = {};
|
|
42
|
+
return Object.fromEntries(Object.entries(linesByRef).map(([refName, refLines]) => {
|
|
43
|
+
let lines = refLines;
|
|
44
|
+
return [
|
|
45
|
+
refName,
|
|
46
|
+
(statusCallback) => {
|
|
47
|
+
if (!cache[refName]) {
|
|
48
|
+
statusCallback?.(parsingStatusMessage);
|
|
49
|
+
const intervalTree = new IntervalTree();
|
|
50
|
+
for (const feature of parse(lines, refName)) {
|
|
51
|
+
intervalTree.insert([feature.start, feature.end], feature);
|
|
52
|
+
}
|
|
53
|
+
lines = null;
|
|
54
|
+
cache[refName] = intervalTree;
|
|
55
|
+
}
|
|
56
|
+
return cache[refName];
|
|
57
|
+
},
|
|
58
|
+
];
|
|
59
|
+
}));
|
|
60
|
+
}
|
|
61
|
+
// Decode window. Deliberately small: the win over per-line decoding is in
|
|
62
|
+
// amortizing the per-call cost, which is already gone by a few KB, and a small
|
|
63
|
+
// window keeps the decoded string in cache and the extra memory bounded. A
|
|
64
|
+
// whole-buffer decode measured no faster and has two failure modes this avoids
|
|
65
|
+
// — it doubles peak memory, and V8 caps a string at ~512MB, which a large
|
|
66
|
+
// uncompressed GFF3 can exceed.
|
|
67
|
+
const DECODE_CHUNK_SIZE = 64 * 1024;
|
|
68
|
+
const NEWLINE = 10;
|
|
69
|
+
/**
|
|
70
|
+
* End of the decode chunk starting at `start`: the nominal window extended
|
|
71
|
+
* *forward* to just past the next newline, so a chunk never ends mid-line and
|
|
72
|
+
* therefore never ends mid-character either (a newline byte cannot occur inside
|
|
73
|
+
* a UTF-8 multi-byte sequence, whose continuation bytes are all >= 0x80). That
|
|
74
|
+
* is what lets each chunk be decoded independently, without `{stream: true}`.
|
|
75
|
+
*
|
|
76
|
+
* Extending forward rather than trimming back to the previous newline matters
|
|
77
|
+
* for a line longer than the window: trimming back has no newline to find and
|
|
78
|
+
* would either split the line or stall, while extending simply makes one
|
|
79
|
+
* oversized chunk and moves on.
|
|
80
|
+
*/
|
|
81
|
+
function chunkBoundary(buffer, start) {
|
|
82
|
+
const nominal = start + DECODE_CHUNK_SIZE;
|
|
83
|
+
if (nominal >= buffer.length) {
|
|
84
|
+
return buffer.length;
|
|
85
|
+
}
|
|
86
|
+
const nl = buffer.indexOf(NEWLINE, nominal);
|
|
87
|
+
return nl === -1 ? buffer.length : nl + 1;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Parse buffer line by line, calling a callback for each line
|
|
91
|
+
* @param buffer - The buffer to parse
|
|
92
|
+
* @param lineCallback - Callback function called for each line. Return false to stop parsing.
|
|
93
|
+
* @param statusCallback - Progress channel, or `undefined` for none. A required
|
|
94
|
+
* parameter with a nullable value rather than an optional one, so a caller
|
|
95
|
+
* states which it means; `undefined` is the value the rest of this module's
|
|
96
|
+
* contract is built on ("no channel, skip the bookkeeping"), and it used to
|
|
97
|
+
* default to `() => {}`, which says the opposite.
|
|
98
|
+
* @param opts - `label` names the phase on the progress bar (a multi-phase
|
|
99
|
+
* adapter wants "Parsing PAF", not another "Loading" indistinguishable from
|
|
100
|
+
* the download that preceded it); `stopToken` makes a multi-GB parse
|
|
101
|
+
* interruptible instead of running to completion after a cancel.
|
|
102
|
+
*/
|
|
103
|
+
export function parseLineByLine(buffer, lineCallback, statusCallback, opts = {}) {
|
|
104
|
+
const { label = 'Loading', stopToken } = opts;
|
|
3
105
|
const decoder = new TextDecoder('utf8');
|
|
4
|
-
|
|
106
|
+
// Time-gated, not gated on a line counter: a file of few but very expensive
|
|
107
|
+
// lines would never reach a count mask, freezing the bar at 0% for the whole
|
|
108
|
+
// parse (the failure createProgressReporter documents). The stop-token check
|
|
109
|
+
// rides the same tick, so cancellation lands within one window.
|
|
110
|
+
const report = createProgressReporter({
|
|
111
|
+
label,
|
|
112
|
+
total: buffer.length,
|
|
113
|
+
statusCallback,
|
|
114
|
+
stopToken,
|
|
115
|
+
});
|
|
116
|
+
let chunkStart = 0;
|
|
5
117
|
let i = 0;
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
118
|
+
let stopped = false;
|
|
119
|
+
try {
|
|
120
|
+
while (chunkStart < buffer.length) {
|
|
121
|
+
const chunkEnd = chunkBoundary(buffer, chunkStart);
|
|
122
|
+
// One decode per chunk rather than one per line. TextDecoder.decode costs
|
|
123
|
+
// roughly a microsecond per call regardless of length, which a per-line
|
|
124
|
+
// decode pays once per line: ~100ms of a 12MB/157k-line GFF3 was this
|
|
125
|
+
// call alone, and the cost scales with line *count*, so the files that
|
|
126
|
+
// suffer most are the dense ones. Slicing the decoded chunk instead is
|
|
127
|
+
// ~4x faster over the same bytes.
|
|
128
|
+
const text = decoder.decode(buffer.subarray(chunkStart, chunkEnd));
|
|
129
|
+
let p = 0;
|
|
130
|
+
while (p < text.length) {
|
|
131
|
+
const n = text.indexOf('\n', p);
|
|
132
|
+
// the final chunk of a file with no trailing newline ends without one
|
|
133
|
+
const lineEnd = n === -1 ? text.length : n;
|
|
134
|
+
const line = text.slice(p, lineEnd).trim();
|
|
135
|
+
if (line) {
|
|
136
|
+
const shouldContinue = lineCallback(line, i);
|
|
137
|
+
if (shouldContinue === false) {
|
|
138
|
+
stopped = true;
|
|
139
|
+
break;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
i++;
|
|
143
|
+
// Chunk-granular position, not line-granular: `report` is called every
|
|
144
|
+
// line so cancellation still lands within one throttle window, but the
|
|
145
|
+
// byte offset it publishes only advances per chunk. Interpolating
|
|
146
|
+
// within the chunk would mean converting a UTF-16 offset back to a byte
|
|
147
|
+
// offset, and at 64KB the bar already moves in sub-percent steps.
|
|
148
|
+
report(chunkStart);
|
|
149
|
+
p = lineEnd + 1;
|
|
150
|
+
}
|
|
151
|
+
if (stopped) {
|
|
14
152
|
break;
|
|
15
153
|
}
|
|
154
|
+
chunkStart = chunkEnd;
|
|
16
155
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
156
|
+
}
|
|
157
|
+
finally {
|
|
158
|
+
// Cleared in a finally: on the happy path so the finished parse's last
|
|
159
|
+
// percentage doesn't sit on screen through whatever unlabelled phase runs
|
|
160
|
+
// next, and on a throw (or a cancel) so it doesn't sit under the error.
|
|
161
|
+
statusCallback?.('');
|
|
21
162
|
}
|
|
22
163
|
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface ParsedMotif {
|
|
2
|
+
name: string;
|
|
3
|
+
site: string;
|
|
4
|
+
line: string;
|
|
5
|
+
cutOffset?: number;
|
|
6
|
+
cutOffsetBottom?: number;
|
|
7
|
+
}
|
|
8
|
+
export interface MotifParseError {
|
|
9
|
+
line: number;
|
|
10
|
+
text: string;
|
|
11
|
+
message: string;
|
|
12
|
+
}
|
|
13
|
+
export interface MotifListParse {
|
|
14
|
+
motifs: ParsedMotif[];
|
|
15
|
+
errors: MotifParseError[];
|
|
16
|
+
}
|
|
17
|
+
export declare function parseMotifList(text: string): MotifListParse;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { IUPAC_MOTIF_REGEX } from './iupac.js';
|
|
2
|
+
// REBASE writes an enzyme that cuts OUTSIDE its recognition site as
|
|
3
|
+
// `GGTCTC(1/5)`: the two numbers are the top- and bottom-strand cuts counted
|
|
4
|
+
// from the site's 3' end (negative counts back into the site). Every type IIS
|
|
5
|
+
// enzyme — BsaI, BsmBI, BbsI, SapI, AarI, the whole Golden Gate set — is written
|
|
6
|
+
// this way, so a pasted REBASE list is largely unusable without it.
|
|
7
|
+
const CUT_OFFSET_NOTATION = /\((-?\d+)\/(-?\d+)\)$/;
|
|
8
|
+
// Parses a pasted list of named motifs, one per line, in the notation REBASE
|
|
9
|
+
// already uses for restriction enzymes:
|
|
10
|
+
//
|
|
11
|
+
// EcoRI G^AATTC name + site, '^' marks the top-strand cut
|
|
12
|
+
// BsaI GGTCTC(1/5) cuts downstream of the site, top/bottom
|
|
13
|
+
// GGTNACC bare site, name defaults to the site
|
|
14
|
+
// # comment
|
|
15
|
+
//
|
|
16
|
+
// The cut notation is the whole reason this format is worth honoring: it carries
|
|
17
|
+
// the cut positions, so no per-enzyme table needs to be baked in — a user can
|
|
18
|
+
// paste any enzyme set (or any motif set at all) straight from their own source.
|
|
19
|
+
export function parseMotifList(text) {
|
|
20
|
+
const motifs = [];
|
|
21
|
+
const errors = [];
|
|
22
|
+
for (const [idx, rawLine] of text.split('\n').entries()) {
|
|
23
|
+
const line = rawLine.trim();
|
|
24
|
+
if (line && !line.startsWith('#')) {
|
|
25
|
+
const tokens = line.split(/[\s,]+/);
|
|
26
|
+
const fail = (message) => {
|
|
27
|
+
errors.push({ line: idx + 1, text: line, message });
|
|
28
|
+
};
|
|
29
|
+
if (tokens.length > 2) {
|
|
30
|
+
fail('Expected "<name> <site>" or "<site>"');
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
const rawSite = (tokens.length === 2 ? tokens[1] : tokens[0]).toUpperCase();
|
|
34
|
+
const offsets = CUT_OFFSET_NOTATION.exec(rawSite);
|
|
35
|
+
const marked = offsets ? rawSite.slice(0, offsets.index) : rawSite;
|
|
36
|
+
const caretIdx = marked.indexOf('^');
|
|
37
|
+
const site = marked.replaceAll('^', '');
|
|
38
|
+
const name = tokens.length === 2 ? tokens[0] : site;
|
|
39
|
+
if (offsets && caretIdx !== -1) {
|
|
40
|
+
fail('Use either ^ or (n/m) to mark the cut, not both');
|
|
41
|
+
}
|
|
42
|
+
else if (caretIdx !== marked.lastIndexOf('^')) {
|
|
43
|
+
fail('Use at most one ^ to mark the cut position');
|
|
44
|
+
}
|
|
45
|
+
else if (!site) {
|
|
46
|
+
fail('Missing sequence');
|
|
47
|
+
}
|
|
48
|
+
else if (!IUPAC_MOTIF_REGEX.test(site)) {
|
|
49
|
+
fail(`"${site}" contains non-IUPAC characters`);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
motifs.push({
|
|
53
|
+
name,
|
|
54
|
+
site,
|
|
55
|
+
line,
|
|
56
|
+
...(caretIdx === -1 ? {} : { cutOffset: caretIdx }),
|
|
57
|
+
...(offsets
|
|
58
|
+
? {
|
|
59
|
+
cutOffset: site.length + Number(offsets[1]),
|
|
60
|
+
cutOffsetBottom: site.length + Number(offsets[2]),
|
|
61
|
+
}
|
|
62
|
+
: {}),
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return { motifs, errors };
|
|
69
|
+
}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import type { PluginDefinition } from '../pluginDefinitions.ts';
|
|
2
|
+
import type { JBrowsePlugin } from './types/data.ts';
|
|
3
|
+
/**
|
|
4
|
+
* The store entries a product can install at all, before any user filter. Both
|
|
5
|
+
* surfaces that list the store go through this — the in-session plugin store
|
|
6
|
+
* widget and Desktop's global plugins dialog — because an entry one of them
|
|
7
|
+
* offers and the loader behind the other drops is a silent install: the button
|
|
8
|
+
* says Installed (or stays live, and every click appends another dead entry) and
|
|
9
|
+
* nothing about the running app changes.
|
|
10
|
+
*
|
|
11
|
+
* Two independent reasons to hide an entry:
|
|
12
|
+
*
|
|
13
|
+
* - **No build this product can load.** Web runs ESM/UMD; a CJS-only entry needs
|
|
14
|
+
* Node's `require`, so only Desktop can install it. Asked of every build the
|
|
15
|
+
* entry publishes rather than only the top-level urls — an entry that pins urls
|
|
16
|
+
* per version, which `resolvePlugin`'s fallback exists to accommodate, used to
|
|
17
|
+
* vanish from Web's list with no diagnostic. An entry whose *resolved* build is
|
|
18
|
+
* the CJS-only one is still shown, since that is a fact about this JBrowse
|
|
19
|
+
* version rather than about the product, and PluginStoreCard already has a
|
|
20
|
+
* place to say so.
|
|
21
|
+
* - **Already vendored into this product's core bundle**, where installing does
|
|
22
|
+
* nothing because `dropVendoredPlugins` drops the definition at load. Desktop's
|
|
23
|
+
* half of that list counts too, and is the half both surfaces were missing.
|
|
24
|
+
*/
|
|
25
|
+
export declare function installablePlugins(plugins: JBrowsePlugin[], isElectron: boolean): JBrowsePlugin[];
|
|
26
|
+
export interface ResolvedPlugin {
|
|
27
|
+
compatible: boolean;
|
|
28
|
+
pluginVersion?: string;
|
|
29
|
+
supportedRanges: string[];
|
|
30
|
+
definition: PluginDefinition | undefined;
|
|
31
|
+
}
|
|
32
|
+
export interface PluginUpdate {
|
|
33
|
+
pluginVersion: string;
|
|
34
|
+
name: string;
|
|
35
|
+
definition: PluginDefinition;
|
|
36
|
+
}
|
|
37
|
+
export declare function releaseVersion(jbrowseVersion: string): string;
|
|
38
|
+
export declare function resolvePlugin(plugin: JBrowsePlugin, jbrowseVersion: string): ResolvedPlugin;
|
|
39
|
+
export declare function installedVersionFromUrl(url: string | undefined, packageName: string | undefined): string | undefined;
|
|
40
|
+
/**
|
|
41
|
+
* Whether a store entry is already among `installed`.
|
|
42
|
+
*
|
|
43
|
+
* Matched by packageName rather than by the resolved url wherever the store
|
|
44
|
+
* publishes one: once a newer compatible version appears the resolved url
|
|
45
|
+
* changes, and a url match would report "not installed" and let the user add a
|
|
46
|
+
* second copy of the same plugin (same UMD global name) alongside the one
|
|
47
|
+
* already there, which then fails to load with duplicate pluggable-element
|
|
48
|
+
* registrations. Moving to a newer version is a separate, explicit action.
|
|
49
|
+
*/
|
|
50
|
+
export declare function isPluginInstalled(plugin: JBrowsePlugin, resolved: ResolvedPlugin, installed: PluginDefinition[]): boolean;
|
|
51
|
+
export declare function getPluginUpdate(plugin: JBrowsePlugin, jbrowseVersion: string, installedVersion: string | undefined): PluginUpdate | undefined;
|
|
52
|
+
/**
|
|
53
|
+
* A definition whose store ref could not be turned into something loadable,
|
|
54
|
+
* with the reason.
|
|
55
|
+
*
|
|
56
|
+
* Structurally identical to `PluginLoader`'s `PluginLoadFailure`, and
|
|
57
|
+
* deliberately re-declared rather than imported: that module pulls in ReExports
|
|
58
|
+
* — effectively all of core — which is the whole reason inspecting a definition
|
|
59
|
+
* lives apart from running one. Matching the shape lets a product report a
|
|
60
|
+
* plugin that could not be resolved and one that could not be loaded through a
|
|
61
|
+
* single path, which is what its user sees anyway.
|
|
62
|
+
*/
|
|
63
|
+
export interface StorePluginFailure {
|
|
64
|
+
definition: PluginDefinition;
|
|
65
|
+
error: unknown;
|
|
66
|
+
}
|
|
67
|
+
export interface StorePluginResolution {
|
|
68
|
+
definitions: PluginDefinition[];
|
|
69
|
+
failures: StorePluginFailure[];
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Replaces every store ref in `defs` with the concrete definition the store
|
|
73
|
+
* publishes for this JBrowse version, and passes everything else through
|
|
74
|
+
* untouched.
|
|
75
|
+
*
|
|
76
|
+
* A ref names the store's `name`, not the npm package — the store owns the
|
|
77
|
+
* former and can repoint it at a different package without breaking a config
|
|
78
|
+
* that named it years ago (jbrowse-plugin-list ADR 0008). `packageName` stays
|
|
79
|
+
* the key on the install side, where pinning is the point.
|
|
80
|
+
*
|
|
81
|
+
* `storePlugins` is `undefined` when the manifest could not be read at all.
|
|
82
|
+
* That is a different situation from a name the manifest does not list, but it
|
|
83
|
+
* gets the same answer, and the split that matters is elsewhere:
|
|
84
|
+
*
|
|
85
|
+
* - **No answer from the store** — unreachable, or the name is not listed
|
|
86
|
+
* (retired, renamed, never published). A ref that also carries a url falls
|
|
87
|
+
* back to it: that url is what a JBrowse without ref support loads from the
|
|
88
|
+
* same config today, so falling back is exactly no worse than not having
|
|
89
|
+
* tried. A ref with no url has nothing to fall back on and fails.
|
|
90
|
+
* - **An answer of "not for this JBrowse"** — the package is listed and no
|
|
91
|
+
* published version's `jbrowseRange` covers the running version. This does
|
|
92
|
+
* NOT fall back. The store has an opinion and the opinion is that the bundle
|
|
93
|
+
* does not work here; loading the url anyway is the hole ADR 0007 describes,
|
|
94
|
+
* where narrowing a range hid a broken plugin from careful clients and left
|
|
95
|
+
* it armed for everyone else.
|
|
96
|
+
*
|
|
97
|
+
* The resolved definition keeps `storePlugin`. It is the only one of the three
|
|
98
|
+
* identity keys that survives resolution, so it is what lets `samePlugin` match
|
|
99
|
+
* a config's resolved entry against a session's still-unresolved ref for the
|
|
100
|
+
* same plugin. It ends up equal to the definition's `name`, because the store's
|
|
101
|
+
* `name` is what both are.
|
|
102
|
+
*/
|
|
103
|
+
export declare function resolveStoreRefs(defs: PluginDefinition[], storePlugins: JBrowsePlugin[] | undefined, jbrowseVersion: string): StorePluginResolution;
|
|
104
|
+
/**
|
|
105
|
+
* `resolveStoreRefs` with the manifest fetched for it — the form a product
|
|
106
|
+
* calls, immediately before it drops vendored plugins and loads what is left.
|
|
107
|
+
*
|
|
108
|
+
* Fetches nothing when no definition is a ref, which is every config that
|
|
109
|
+
* predates them and every session a user assembled by hand. The store is on the
|
|
110
|
+
* boot path only for the configs that opted in.
|
|
111
|
+
*/
|
|
112
|
+
export declare function resolveStorePluginRefs(defs: PluginDefinition[], jbrowseVersion: string, fetchStore?: () => Promise<{
|
|
113
|
+
plugins: JBrowsePlugin[];
|
|
114
|
+
}>): Promise<StorePluginResolution>;
|
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
import { compareVersions, satisfies } from 'compare-versions';
|
|
2
|
+
import { fetchPlugins } from '../checkPlugins.js';
|
|
3
|
+
import { desktopVendoredPluginNames, isStorePluginDefinition, maybePluginUrl, samePlugin, storePluginName, vendoredPluginNames, } from '../pluginDefinitions.js';
|
|
4
|
+
// Every build an entry publishes: the top-level one plus each version-pinned
|
|
5
|
+
// one, which is the same set resolvePlugin picks from.
|
|
6
|
+
function publishedBuilds(plugin) {
|
|
7
|
+
return [plugin, ...(plugin.versions ?? [])];
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* The store entries a product can install at all, before any user filter. Both
|
|
11
|
+
* surfaces that list the store go through this — the in-session plugin store
|
|
12
|
+
* widget and Desktop's global plugins dialog — because an entry one of them
|
|
13
|
+
* offers and the loader behind the other drops is a silent install: the button
|
|
14
|
+
* says Installed (or stays live, and every click appends another dead entry) and
|
|
15
|
+
* nothing about the running app changes.
|
|
16
|
+
*
|
|
17
|
+
* Two independent reasons to hide an entry:
|
|
18
|
+
*
|
|
19
|
+
* - **No build this product can load.** Web runs ESM/UMD; a CJS-only entry needs
|
|
20
|
+
* Node's `require`, so only Desktop can install it. Asked of every build the
|
|
21
|
+
* entry publishes rather than only the top-level urls — an entry that pins urls
|
|
22
|
+
* per version, which `resolvePlugin`'s fallback exists to accommodate, used to
|
|
23
|
+
* vanish from Web's list with no diagnostic. An entry whose *resolved* build is
|
|
24
|
+
* the CJS-only one is still shown, since that is a fact about this JBrowse
|
|
25
|
+
* version rather than about the product, and PluginStoreCard already has a
|
|
26
|
+
* place to say so.
|
|
27
|
+
* - **Already vendored into this product's core bundle**, where installing does
|
|
28
|
+
* nothing because `dropVendoredPlugins` drops the definition at load. Desktop's
|
|
29
|
+
* half of that list counts too, and is the half both surfaces were missing.
|
|
30
|
+
*/
|
|
31
|
+
export function installablePlugins(plugins, isElectron) {
|
|
32
|
+
const vendored = new Set([
|
|
33
|
+
...vendoredPluginNames,
|
|
34
|
+
...(isElectron ? desktopVendoredPluginNames : []),
|
|
35
|
+
]);
|
|
36
|
+
return plugins.filter(plugin => !vendored.has(plugin.name) &&
|
|
37
|
+
(isElectron ||
|
|
38
|
+
publishedBuilds(plugin).some(b => b.esmUrl ?? b.url ?? b.umdUrl)));
|
|
39
|
+
}
|
|
40
|
+
// A prerelease host is its release for compatibility purposes. Under semver
|
|
41
|
+
// 5.0.0-beta.1 sorts below 5.0.0, so a range written to keep a plugin off v5
|
|
42
|
+
// (`<5.0.0`) would serve it to every beta host and a v5-only range (`>=5.0.0`)
|
|
43
|
+
// would hide it from them. Store ranges are written against release versions.
|
|
44
|
+
export function releaseVersion(jbrowseVersion) {
|
|
45
|
+
return jbrowseVersion.split('-')[0];
|
|
46
|
+
}
|
|
47
|
+
// `*` (and empty) mean "any JBrowse version"; compare-versions throws on those,
|
|
48
|
+
// so handle them directly. A malformed range simply fails to match rather than
|
|
49
|
+
// breaking the store UI — producer-side validation is the place to reject those.
|
|
50
|
+
function rangeMatches(jbrowseVersion, range) {
|
|
51
|
+
let matched = range === '*' || range === '';
|
|
52
|
+
if (!matched) {
|
|
53
|
+
try {
|
|
54
|
+
matched = satisfies(releaseVersion(jbrowseVersion), range);
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
matched = false;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return matched;
|
|
61
|
+
}
|
|
62
|
+
// undefined rather than a throw: an entry that lists urls only per version has
|
|
63
|
+
// none to offer once no version matched, and throwing there took out the whole
|
|
64
|
+
// plugin-store list instead of rendering that one card as incompatible.
|
|
65
|
+
function definitionFrom(name, src) {
|
|
66
|
+
const integrity = src.integrity ? { integrity: src.integrity } : {};
|
|
67
|
+
return src.umdUrl !== undefined
|
|
68
|
+
? { name, umdUrl: src.umdUrl, ...integrity }
|
|
69
|
+
: src.esmUrl !== undefined
|
|
70
|
+
? { esmUrl: src.esmUrl }
|
|
71
|
+
: src.cjsUrl !== undefined
|
|
72
|
+
? { cjsUrl: src.cjsUrl }
|
|
73
|
+
: src.url !== undefined
|
|
74
|
+
? { name, url: src.url, ...integrity }
|
|
75
|
+
: undefined;
|
|
76
|
+
}
|
|
77
|
+
function highestVersion(versions) {
|
|
78
|
+
return [...versions].sort((a, b) => compareVersions(b.pluginVersion, a.pluginVersion))[0];
|
|
79
|
+
}
|
|
80
|
+
// compareVersions throws on non-semver input; an unparsable installed version
|
|
81
|
+
// simply means "can't tell", so treat it as no-update-available rather than
|
|
82
|
+
// breaking the installed-plugins list.
|
|
83
|
+
function isNewer(candidate, installed) {
|
|
84
|
+
let newer;
|
|
85
|
+
try {
|
|
86
|
+
newer = compareVersions(candidate, installed) > 0;
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
newer = false;
|
|
90
|
+
}
|
|
91
|
+
return newer;
|
|
92
|
+
}
|
|
93
|
+
// Picks the newest plugin version whose declared JBrowse range covers the
|
|
94
|
+
// running JBrowse version. Plugins with no versions[] use their top-level url
|
|
95
|
+
// for all JBrowse versions.
|
|
96
|
+
export function resolvePlugin(plugin, jbrowseVersion) {
|
|
97
|
+
const versions = plugin.versions ?? [];
|
|
98
|
+
const supportedRanges = versions.map(v => v.jbrowseRange);
|
|
99
|
+
const matching = versions.filter(v => rangeMatches(jbrowseVersion, v.jbrowseRange));
|
|
100
|
+
const best = matching.length > 0 ? highestVersion(matching) : undefined;
|
|
101
|
+
// no declared versions → the top-level url covers every JBrowse version; with
|
|
102
|
+
// versions declared, compatible only if one of their ranges matched.
|
|
103
|
+
const compatible = versions.length === 0 || best !== undefined;
|
|
104
|
+
// install the matched version's pinned build; when nothing matched (or nothing
|
|
105
|
+
// was declared) fall back to the plugin's top-level definition.
|
|
106
|
+
const source = best ?? plugin;
|
|
107
|
+
return {
|
|
108
|
+
compatible,
|
|
109
|
+
pluginVersion: best?.pluginVersion,
|
|
110
|
+
supportedRanges,
|
|
111
|
+
definition: definitionFrom(plugin.name, source),
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
// The store mints version-pinned install urls as
|
|
115
|
+
// `<base>/<packageName>/<version>/<umdPath>`, so the installed version is the
|
|
116
|
+
// path segment immediately after the package name. This is authoritative (the
|
|
117
|
+
// store put it there at install time) unlike a plugin's self-declared version.
|
|
118
|
+
// Returns undefined for custom or pre-versioning urls that don't follow this
|
|
119
|
+
// layout, which correctly surfaces as "no update available".
|
|
120
|
+
export function installedVersionFromUrl(url, packageName) {
|
|
121
|
+
let version;
|
|
122
|
+
if (url !== undefined && packageName !== undefined) {
|
|
123
|
+
const marker = `/${packageName}/`;
|
|
124
|
+
const start = url.indexOf(marker);
|
|
125
|
+
if (start !== -1) {
|
|
126
|
+
const [segment] = url.slice(start + marker.length).split('/');
|
|
127
|
+
version = segment ? segment : undefined;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return version;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Whether a store entry is already among `installed`.
|
|
134
|
+
*
|
|
135
|
+
* Matched by packageName rather than by the resolved url wherever the store
|
|
136
|
+
* publishes one: once a newer compatible version appears the resolved url
|
|
137
|
+
* changes, and a url match would report "not installed" and let the user add a
|
|
138
|
+
* second copy of the same plugin (same UMD global name) alongside the one
|
|
139
|
+
* already there, which then fails to load with duplicate pluggable-element
|
|
140
|
+
* registrations. Moving to a newer version is a separate, explicit action.
|
|
141
|
+
*/
|
|
142
|
+
export function isPluginInstalled(plugin, resolved, installed) {
|
|
143
|
+
const { packageName } = plugin;
|
|
144
|
+
const { definition } = resolved;
|
|
145
|
+
return installed.some(d => packageName === undefined
|
|
146
|
+
? definition !== undefined && samePlugin(d, definition)
|
|
147
|
+
: installedVersionFromUrl(maybePluginUrl(d), packageName) !== undefined);
|
|
148
|
+
}
|
|
149
|
+
// Given the store entry for an already-installed plugin and the version it is
|
|
150
|
+
// currently running, returns the newest compatible published version when one
|
|
151
|
+
// exists that is strictly newer than installed, else undefined. Installs pin a
|
|
152
|
+
// version-immutable url, so an installed plugin never auto-updates; this is what
|
|
153
|
+
// surfaces a manual "update available" affordance. Entries without a resolvable
|
|
154
|
+
// pluginVersion (no versions[]) yield undefined since their version is unknown.
|
|
155
|
+
export function getPluginUpdate(plugin, jbrowseVersion, installedVersion) {
|
|
156
|
+
const resolved = resolvePlugin(plugin, jbrowseVersion);
|
|
157
|
+
const { definition } = resolved;
|
|
158
|
+
return resolved.compatible &&
|
|
159
|
+
definition !== undefined &&
|
|
160
|
+
resolved.pluginVersion !== undefined &&
|
|
161
|
+
installedVersion !== undefined &&
|
|
162
|
+
isNewer(resolved.pluginVersion, installedVersion)
|
|
163
|
+
? { pluginVersion: resolved.pluginVersion, name: plugin.name, definition }
|
|
164
|
+
: undefined;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Replaces every store ref in `defs` with the concrete definition the store
|
|
168
|
+
* publishes for this JBrowse version, and passes everything else through
|
|
169
|
+
* untouched.
|
|
170
|
+
*
|
|
171
|
+
* A ref names the store's `name`, not the npm package — the store owns the
|
|
172
|
+
* former and can repoint it at a different package without breaking a config
|
|
173
|
+
* that named it years ago (jbrowse-plugin-list ADR 0008). `packageName` stays
|
|
174
|
+
* the key on the install side, where pinning is the point.
|
|
175
|
+
*
|
|
176
|
+
* `storePlugins` is `undefined` when the manifest could not be read at all.
|
|
177
|
+
* That is a different situation from a name the manifest does not list, but it
|
|
178
|
+
* gets the same answer, and the split that matters is elsewhere:
|
|
179
|
+
*
|
|
180
|
+
* - **No answer from the store** — unreachable, or the name is not listed
|
|
181
|
+
* (retired, renamed, never published). A ref that also carries a url falls
|
|
182
|
+
* back to it: that url is what a JBrowse without ref support loads from the
|
|
183
|
+
* same config today, so falling back is exactly no worse than not having
|
|
184
|
+
* tried. A ref with no url has nothing to fall back on and fails.
|
|
185
|
+
* - **An answer of "not for this JBrowse"** — the package is listed and no
|
|
186
|
+
* published version's `jbrowseRange` covers the running version. This does
|
|
187
|
+
* NOT fall back. The store has an opinion and the opinion is that the bundle
|
|
188
|
+
* does not work here; loading the url anyway is the hole ADR 0007 describes,
|
|
189
|
+
* where narrowing a range hid a broken plugin from careful clients and left
|
|
190
|
+
* it armed for everyone else.
|
|
191
|
+
*
|
|
192
|
+
* The resolved definition keeps `storePlugin`. It is the only one of the three
|
|
193
|
+
* identity keys that survives resolution, so it is what lets `samePlugin` match
|
|
194
|
+
* a config's resolved entry against a session's still-unresolved ref for the
|
|
195
|
+
* same plugin. It ends up equal to the definition's `name`, because the store's
|
|
196
|
+
* `name` is what both are.
|
|
197
|
+
*/
|
|
198
|
+
export function resolveStoreRefs(defs, storePlugins, jbrowseVersion) {
|
|
199
|
+
const definitions = [];
|
|
200
|
+
const failures = [];
|
|
201
|
+
for (const definition of defs) {
|
|
202
|
+
const ref = storePluginName(definition);
|
|
203
|
+
if (ref === undefined) {
|
|
204
|
+
definitions.push(definition);
|
|
205
|
+
continue;
|
|
206
|
+
}
|
|
207
|
+
const entry = storePlugins?.find(p => p.name === ref);
|
|
208
|
+
if (entry === undefined) {
|
|
209
|
+
const fallback = maybePluginUrl(definition);
|
|
210
|
+
if (fallback === undefined) {
|
|
211
|
+
failures.push({
|
|
212
|
+
definition,
|
|
213
|
+
error: new Error(storePlugins === undefined
|
|
214
|
+
? `Could not read the plugin store, so "${ref}" could not be resolved, and it names no url to fall back on.`
|
|
215
|
+
: `"${ref}" is not in the plugin store, and it names no url to fall back on.`),
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
console.warn(`Loading "${ref}" from ${fallback} — ${storePlugins === undefined
|
|
220
|
+
? 'the plugin store could not be read'
|
|
221
|
+
: 'it is not in the plugin store'}.`);
|
|
222
|
+
definitions.push(definition);
|
|
223
|
+
}
|
|
224
|
+
continue;
|
|
225
|
+
}
|
|
226
|
+
const resolved = resolvePlugin(entry, jbrowseVersion);
|
|
227
|
+
if (!resolved.compatible || resolved.definition === undefined) {
|
|
228
|
+
failures.push({
|
|
229
|
+
definition,
|
|
230
|
+
error: new Error(`The plugin store publishes no build of "${ref}" for JBrowse ${jbrowseVersion}${resolved.supportedRanges.length > 0
|
|
231
|
+
? ` (it supports ${resolved.supportedRanges.join(' or ')}).`
|
|
232
|
+
: '.'}`),
|
|
233
|
+
});
|
|
234
|
+
continue;
|
|
235
|
+
}
|
|
236
|
+
definitions.push({ ...resolved.definition, storePlugin: ref });
|
|
237
|
+
}
|
|
238
|
+
return { definitions, failures };
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* `resolveStoreRefs` with the manifest fetched for it — the form a product
|
|
242
|
+
* calls, immediately before it drops vendored plugins and loads what is left.
|
|
243
|
+
*
|
|
244
|
+
* Fetches nothing when no definition is a ref, which is every config that
|
|
245
|
+
* predates them and every session a user assembled by hand. The store is on the
|
|
246
|
+
* boot path only for the configs that opted in.
|
|
247
|
+
*/
|
|
248
|
+
export async function resolveStorePluginRefs(defs, jbrowseVersion, fetchStore = fetchPlugins) {
|
|
249
|
+
if (!defs.some(isStorePluginDefinition)) {
|
|
250
|
+
return { definitions: defs, failures: [] };
|
|
251
|
+
}
|
|
252
|
+
let storePlugins;
|
|
253
|
+
try {
|
|
254
|
+
storePlugins = (await fetchStore()).plugins;
|
|
255
|
+
}
|
|
256
|
+
catch (error) {
|
|
257
|
+
console.error(error);
|
|
258
|
+
}
|
|
259
|
+
return resolveStoreRefs(defs, storePlugins, jbrowseVersion);
|
|
260
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export function trackPointerPresence(el, onLeave) {
|
|
2
|
+
let over = true;
|
|
3
|
+
const enter = () => {
|
|
4
|
+
over = true;
|
|
5
|
+
};
|
|
6
|
+
const leave = () => {
|
|
7
|
+
over = false;
|
|
8
|
+
onLeave?.();
|
|
9
|
+
};
|
|
10
|
+
el.addEventListener('mouseenter', enter);
|
|
11
|
+
el.addEventListener('mouseleave', leave);
|
|
12
|
+
return {
|
|
13
|
+
get isOver() {
|
|
14
|
+
return over;
|
|
15
|
+
},
|
|
16
|
+
dispose() {
|
|
17
|
+
el.removeEventListener('mouseenter', enter);
|
|
18
|
+
el.removeEventListener('mouseleave', leave);
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
}
|