@jbrowse/core 4.3.0 → 5.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +822 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.d.ts +13 -3
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.js +33 -22
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.d.ts +8 -3
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.js +117 -19
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseAttributes.d.ts +2 -8
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseAttributes.js +4 -4
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCard.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCard.js +2 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCoreDetails.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCoreDetails.js +4 -4
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BasicValue.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BasicValue.js +12 -5
- package/esm/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.js +28 -17
- package/esm/BaseFeatureWidget/BaseFeatureDetail/DataGridDetails.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/DataGridDetails.js +19 -40
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.d.ts +6 -4
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.js +46 -30
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureWash.d.ts +20 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureWash.js +66 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldName.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldName.js +2 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Formatter.d.ts +3 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Formatter.js +17 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Position.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Position.js +3 -9
- package/esm/BaseFeatureWidget/BaseFeatureDetail/SimpleField.d.ts +3 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/SimpleField.js +3 -3
- package/esm/BaseFeatureWidget/BaseFeatureDetail/UriField.d.ts +3 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/UriField.js +7 -14
- package/esm/BaseFeatureWidget/BaseFeatureDetail/index.d.ts +2 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/index.js +19 -13
- package/esm/BaseFeatureWidget/BaseFeatureDetail/types.d.ts +5 -4
- package/esm/BaseFeatureWidget/BaseFeatureDetail/util.d.ts +8 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/util.js +32 -10
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceBody.d.ts +18 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceBody.js +10 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceContents.d.ts +7 -4
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceContents.js +62 -24
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureDetails.d.ts +10 -5
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureDetails.js +64 -41
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeaturePanel.d.ts +1 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeaturePanel.js +17 -8
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceLegend.d.ts +6 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceLegend.js +19 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceName.d.ts +5 -4
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceName.js +15 -18
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequencePanel.d.ts +1 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequencePanel.js +33 -17
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/consts.d.ts +3 -3
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/consts.js +7 -3
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/FeatureSequenceDialog.d.ts +11 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/FeatureSequenceDialog.js +29 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/HelpDialog.d.ts +1 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/HelpDialog.js +4 -6
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceDialog.d.ts +18 -6
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceDialog.js +11 -29
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceFeatureMenu.d.ts +9 -2
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceFeatureMenu.js +63 -58
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceTypeSelector.d.ts +7 -3
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceTypeSelector.js +38 -51
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SettingsDialog.d.ts +1 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SettingsDialog.js +19 -27
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/TranscriptSelector.d.ts +6 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/TranscriptSelector.js +18 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/featureTypeUtil.d.ts +12 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/featureTypeUtil.js +97 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/index.js +1 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/model.d.ts +50 -63
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/model.js +62 -59
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/panelAssemblyName.d.ts +21 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/panelAssemblyName.js +24 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDNASequence.d.ts +5 -3
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDNASequence.js +93 -75
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDSSequence.d.ts +1 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDSSequence.js +4 -11
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/GenomicSequence.d.ts +5 -2
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/GenomicSequence.js +21 -48
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/PlainSequence.d.ts +8 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/PlainSequence.js +20 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/ProteinSequence.d.ts +6 -3
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/ProteinSequence.js +33 -13
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/SequenceDisplay.d.ts +7 -4
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/SequenceDisplay.js +67 -11
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/renderSequenceSegments.d.ts +14 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/renderSequenceSegments.js +42 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/DLGAP3.d.ts +1 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/NCDN.d.ts +7 -7
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/types.d.ts +8 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/useSequenceData.d.ts +9 -9
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/useSequenceData.js +28 -44
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/useSequenceFetch.d.ts +23 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/useSequenceFetch.js +31 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/util.d.ts +90 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/util.js +145 -23
- package/esm/BaseFeatureWidget/configSchema.js +1 -1
- package/esm/BaseFeatureWidget/formatDetails.d.ts +38 -0
- package/esm/BaseFeatureWidget/formatDetails.js +103 -0
- package/esm/BaseFeatureWidget/index.d.ts +3 -1
- package/esm/BaseFeatureWidget/index.js +2 -2
- package/esm/BaseFeatureWidget/stateModelFactory.d.ts +80 -62
- package/esm/BaseFeatureWidget/stateModelFactory.js +128 -29
- package/esm/BaseFeatureWidget/types.d.ts +4 -3
- package/esm/BaseFeatureWidget/util.d.ts +4 -29
- package/esm/BaseFeatureWidget/util.js +20 -84
- package/esm/CorePlugin.js +11 -6
- package/esm/PhasedScheduler.d.ts +4 -2
- package/esm/PhasedScheduler.js +18 -2
- package/esm/Plugin.d.ts +6 -1
- package/esm/Plugin.js +7 -0
- package/esm/PluginLoader.d.ts +41 -40
- package/esm/PluginLoader.js +206 -78
- package/esm/PluginManager.d.ts +421 -55
- package/esm/PluginManager.js +461 -89
- package/esm/ReExports/BaseFeatureDetails.js +7 -6
- package/esm/ReExports/MuiDataGridReExports.d.ts +2 -2
- package/esm/ReExports/MuiDataGridReExports.js +58 -130
- package/esm/ReExports/MuiReExports.d.ts +3 -134
- package/esm/ReExports/MuiReExports.js +43 -16
- package/esm/ReExports/MuiStylesReExports.d.ts +66 -0
- package/esm/ReExports/MuiStylesReExports.js +55 -0
- package/esm/ReExports/index.js +1 -1
- package/esm/ReExports/lazify.d.ts +2 -2
- package/esm/ReExports/lazify.js +16 -3
- package/esm/ReExports/list.js +54 -229
- package/esm/ReExports/modules.js +62 -93
- package/esm/ReExports/muiComponentNames.d.ts +18 -0
- package/esm/ReExports/muiComponentNames.js +130 -0
- package/esm/ReExports/publicUtil.d.ts +1 -0
- package/esm/ReExports/publicUtil.js +28 -0
- package/esm/ReExports/registry.d.ts +2 -0
- package/esm/ReExports/registry.js +28 -0
- package/esm/ReExports/sharedModules.d.ts +96 -0
- package/esm/ReExports/sharedModules.js +59 -0
- package/esm/ReExports/uiStub.d.ts +1 -0
- package/esm/ReExports/uiStub.js +13 -0
- package/esm/ReExports/workerModules.d.ts +2 -0
- package/esm/ReExports/workerModules.js +10 -0
- package/esm/TextSearch/BaseResults.d.ts +20 -21
- package/esm/TextSearch/BaseResults.js +8 -33
- package/esm/TextSearch/TextSearchManager.d.ts +14 -34
- package/esm/TextSearch/TextSearchManager.js +87 -34
- package/esm/assemblyManager/assembly.d.ts +307 -34
- package/esm/assemblyManager/assembly.js +551 -262
- package/esm/assemblyManager/assemblyAdapters.d.ts +12 -0
- package/esm/assemblyManager/assemblyAdapters.js +18 -0
- package/esm/assemblyManager/assemblyConfigSchema.d.ts +192 -17
- package/esm/assemblyManager/assemblyConfigSchema.js +213 -19
- package/esm/assemblyManager/assemblyManager.d.ts +711 -303
- package/esm/assemblyManager/assemblyManager.js +351 -46
- package/esm/assemblyManager/expandAssemblyConfigShorthand.d.ts +32 -0
- package/esm/assemblyManager/expandAssemblyConfigShorthand.js +85 -0
- package/esm/assemblyManager/geneticCodes.d.ts +21 -0
- package/esm/assemblyManager/geneticCodes.js +47 -0
- package/esm/assemblyManager/getSequenceAdapterConfig.d.ts +9 -0
- package/esm/assemblyManager/getSequenceAdapterConfig.js +12 -0
- package/esm/assemblyManager/index.d.ts +1 -1
- package/esm/assemblyManager/index.js +2 -2
- package/esm/assemblyManager/loadRefNameMap.d.ts +5 -0
- package/esm/assemblyManager/loadRefNameMap.js +80 -0
- package/esm/assemblyManager/refNameColors.d.ts +1 -0
- package/esm/assemblyManager/refNameColors.js +32 -0
- package/esm/assemblyManager/refNameMaps.d.ts +26 -0
- package/esm/assemblyManager/refNameMaps.js +87 -0
- package/esm/assemblyManager/refNameMismatch.d.ts +54 -0
- package/esm/assemblyManager/refNameMismatch.js +66 -0
- package/esm/checkPlugins.d.ts +11 -0
- package/esm/checkPlugins.js +77 -0
- package/esm/configuration/configurationSchema.d.ts +122 -20
- package/esm/configuration/configurationSchema.js +374 -140
- package/esm/configuration/configurationSlot.d.ts +283 -30
- package/esm/configuration/configurationSlot.js +205 -226
- package/esm/configuration/formatAboutConfigSchema.d.ts +55 -0
- package/esm/configuration/formatAboutConfigSchema.js +58 -0
- package/esm/configuration/formatDetailsConfigSchema.d.ts +80 -0
- package/esm/configuration/formatDetailsConfigSchema.js +90 -0
- package/esm/configuration/fullConfSnapshot.d.ts +28 -0
- package/esm/configuration/fullConfSnapshot.js +66 -0
- package/esm/configuration/getConf.d.ts +88 -0
- package/esm/configuration/getConf.js +74 -0
- package/esm/configuration/index.d.ts +19 -3
- package/esm/configuration/index.js +19 -2
- package/esm/configuration/mergeFormatCallbacks.d.ts +15 -0
- package/esm/configuration/mergeFormatCallbacks.js +24 -0
- package/esm/configuration/promotableDefaults.d.ts +199 -0
- package/esm/configuration/promotableDefaults.js +332 -0
- package/esm/configuration/promotablePin.d.ts +55 -0
- package/esm/configuration/promotableResolve.d.ts +108 -0
- package/esm/configuration/promotableResolve.js +117 -0
- package/esm/configuration/promotableSlots.d.ts +12 -0
- package/esm/configuration/promotableSlots.js +45 -0
- package/esm/configuration/readConfObject.d.ts +56 -0
- package/esm/configuration/readConfObject.js +161 -0
- package/esm/configuration/schemaRegistry.d.ts +35 -0
- package/esm/configuration/schemaRegistry.js +50 -0
- package/esm/configuration/schemaTypes.d.ts +23 -0
- package/esm/configuration/schemaTypes.js +94 -0
- package/esm/configuration/slotFacade.d.ts +82 -0
- package/esm/configuration/slotFacade.js +89 -0
- package/esm/configuration/slotShape.d.ts +12 -0
- package/esm/configuration/slotShape.js +84 -0
- package/esm/configuration/slotValueUtils.d.ts +17 -0
- package/esm/configuration/slotValueUtils.js +25 -0
- package/esm/configuration/tabixIndexFields.d.ts +44 -0
- package/esm/configuration/tabixIndexFields.js +45 -0
- package/esm/configuration/tabixShorthand.d.ts +34 -0
- package/esm/configuration/tabixShorthand.js +45 -0
- package/esm/configuration/types.d.ts +170 -7
- package/esm/data_adapters/BaseAdapter/BaseAdapter.d.ts +24 -10
- package/esm/data_adapters/BaseAdapter/BaseAdapter.js +23 -15
- package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.d.ts +132 -7
- package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.js +136 -25
- package/esm/data_adapters/BaseAdapter/BaseRefNameAliasAdapter.d.ts +1 -0
- package/esm/data_adapters/BaseAdapter/BaseSequenceAdapter.d.ts +13 -5
- package/esm/data_adapters/BaseAdapter/BaseSequenceAdapter.js +9 -7
- package/esm/data_adapters/BaseAdapter/BaseTextSearchAdapter.d.ts +2 -1
- package/esm/data_adapters/BaseAdapter/CytobandAdapter.d.ts +7 -0
- package/esm/data_adapters/BaseAdapter/RegionsAdapter.d.ts +2 -1
- package/esm/data_adapters/BaseAdapter/featureDensity.d.ts +29 -0
- package/esm/data_adapters/BaseAdapter/featureDensity.js +17 -0
- package/esm/data_adapters/BaseAdapter/getAdapterId.d.ts +2 -0
- package/esm/data_adapters/BaseAdapter/getAdapterId.js +9 -0
- package/esm/data_adapters/BaseAdapter/index.d.ts +7 -4
- package/esm/data_adapters/BaseAdapter/index.js +6 -5
- package/esm/data_adapters/BaseAdapter/stats.d.ts +37 -5
- package/esm/data_adapters/BaseAdapter/stats.js +89 -24
- package/esm/data_adapters/BaseAdapter/types.d.ts +11 -8
- package/esm/data_adapters/BaseAdapter/types.js +1 -0
- package/esm/data_adapters/BaseAdapter/util.d.ts +5 -1
- package/esm/data_adapters/BaseAdapter/util.js +14 -3
- package/esm/data_adapters/CytobandAdapter/CytobandAdapter.d.ts +1 -1
- package/esm/data_adapters/CytobandAdapter/CytobandAdapter.js +4 -4
- package/esm/data_adapters/CytobandAdapter/configSchema.d.ts +36 -4
- package/esm/data_adapters/CytobandAdapter/configSchema.js +46 -2
- package/esm/data_adapters/CytobandAdapter/index.js +3 -3
- package/esm/data_adapters/adapterSessionRefcount.d.ts +61 -0
- package/esm/data_adapters/adapterSessionRefcount.js +96 -0
- package/esm/data_adapters/dataAdapterCache.d.ts +35 -1
- package/esm/data_adapters/dataAdapterCache.js +62 -22
- package/esm/data_adapters/getFeatureAdapter.d.ts +22 -0
- package/esm/data_adapters/getFeatureAdapter.js +27 -0
- package/esm/data_adapters/getSequenceSubAdapter.d.ts +21 -0
- package/esm/data_adapters/getSequenceSubAdapter.js +44 -0
- package/esm/pluggableElementTypes/AdapterType.d.ts +52 -2
- package/esm/pluggableElementTypes/AdapterType.js +44 -5
- package/esm/pluggableElementTypes/AddTrackWorkflowType.d.ts +6 -1
- package/esm/pluggableElementTypes/AddTrackWorkflowType.js +3 -1
- package/esm/pluggableElementTypes/ConnectionType.d.ts +5 -5
- package/esm/pluggableElementTypes/ConnectionType.js +1 -1
- package/esm/pluggableElementTypes/DisplayType.d.ts +19 -10
- package/esm/pluggableElementTypes/DisplayType.js +53 -5
- package/esm/pluggableElementTypes/InternetAccountType.js +1 -1
- package/esm/pluggableElementTypes/PluggableElementBase.d.ts +13 -0
- package/esm/pluggableElementTypes/PluggableElementBase.js +13 -0
- package/esm/pluggableElementTypes/RpcMethodType.d.ts +132 -12
- package/esm/pluggableElementTypes/RpcMethodType.js +263 -98
- package/esm/pluggableElementTypes/RpcMethodTypeWithFiltersAndRenameRegions.d.ts +19 -9
- package/esm/pluggableElementTypes/RpcMethodTypeWithFiltersAndRenameRegions.js +26 -20
- package/esm/pluggableElementTypes/RpcMethodTypeWithRenameRegion.d.ts +5 -0
- package/esm/pluggableElementTypes/RpcMethodTypeWithRenameRegion.js +18 -0
- package/esm/pluggableElementTypes/RpcMethodTypeWithRenameRegions.d.ts +5 -0
- package/esm/pluggableElementTypes/RpcMethodTypeWithRenameRegions.js +10 -0
- package/esm/pluggableElementTypes/TextSearchAdapterType.d.ts +3 -3
- package/esm/pluggableElementTypes/TextSearchAdapterType.js +3 -1
- package/esm/pluggableElementTypes/TrackType.d.ts +2 -1
- package/esm/pluggableElementTypes/TrackType.js +1 -1
- package/esm/pluggableElementTypes/ViewType.d.ts +27 -3
- package/esm/pluggableElementTypes/ViewType.js +84 -4
- package/esm/pluggableElementTypes/WidgetType.d.ts +2 -2
- package/esm/pluggableElementTypes/WidgetType.js +1 -1
- package/esm/pluggableElementTypes/addMenuItems.d.ts +87 -0
- package/esm/pluggableElementTypes/addMenuItems.js +82 -0
- package/esm/pluggableElementTypes/extendElementType.d.ts +30 -0
- package/esm/pluggableElementTypes/extendElementType.js +73 -0
- package/esm/pluggableElementTypes/index.d.ts +7 -7
- package/esm/pluggableElementTypes/index.js +24 -14
- package/esm/pluggableElementTypes/models/BaseConnectionModelFactory.d.ts +70 -15
- package/esm/pluggableElementTypes/models/BaseConnectionModelFactory.js +90 -10
- package/esm/pluggableElementTypes/models/BaseDisplayModel.d.ts +646 -84
- package/esm/pluggableElementTypes/models/BaseDisplayModel.js +241 -60
- package/esm/pluggableElementTypes/models/BaseTrackModel.d.ts +216 -35
- package/esm/pluggableElementTypes/models/BaseTrackModel.js +365 -83
- package/esm/pluggableElementTypes/models/BaseViewModel.d.ts +216 -16
- package/esm/pluggableElementTypes/models/BaseViewModel.js +150 -16
- package/esm/pluggableElementTypes/models/HighlightsMixin.d.ts +51 -0
- package/esm/pluggableElementTypes/models/HighlightsMixin.js +78 -0
- package/esm/pluggableElementTypes/models/InternetAccountModel.d.ts +163 -29
- package/esm/pluggableElementTypes/models/InternetAccountModel.js +218 -48
- package/esm/pluggableElementTypes/models/assertDisplayContract.d.ts +177 -0
- package/esm/pluggableElementTypes/models/assertDisplayContract.js +239 -0
- package/esm/pluggableElementTypes/models/baseConnectionConfig.d.ts +22 -8
- package/esm/pluggableElementTypes/models/baseConnectionConfig.js +18 -2
- package/esm/pluggableElementTypes/models/baseInternetAccountConfig.d.ts +39 -20
- package/esm/pluggableElementTypes/models/baseInternetAccountConfig.js +23 -2
- package/esm/pluggableElementTypes/models/baseTrackConfig.d.ts +181 -65
- package/esm/pluggableElementTypes/models/baseTrackConfig.js +191 -89
- package/esm/pluggableElementTypes/models/components/SaveTrackData.d.ts +3 -8
- package/esm/pluggableElementTypes/models/components/SaveTrackData.js +113 -139
- package/esm/pluggableElementTypes/models/components/fetchTrackData.d.ts +55 -0
- package/esm/pluggableElementTypes/models/components/fetchTrackData.js +83 -0
- package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.d.ts +40 -0
- package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.js +115 -0
- package/esm/pluggableElementTypes/models/index.d.ts +6 -3
- package/esm/pluggableElementTypes/models/index.js +10 -8
- package/esm/pluggableElementTypes/models/migrateTrackConfig.d.ts +34 -0
- package/esm/pluggableElementTypes/models/migrateTrackConfig.js +54 -0
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/bed.js +75 -7
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.d.ts +9 -3
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.js +153 -103
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/gff3.d.ts +6 -1
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/gff3.js +70 -74
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/types.d.ts +9 -1
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/util.d.ts +21 -0
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/util.js +51 -0
- package/esm/pluggableElementTypes/models/uriMatchesDomains.d.ts +29 -0
- package/esm/pluggableElementTypes/models/uriMatchesDomains.js +62 -0
- package/esm/pluggableElementTypes/renderers/util/serializableFilterChain.d.ts +5 -4
- package/esm/pluggableElementTypes/renderers/util/serializableFilterChain.js +20 -10
- package/esm/pluginDefinitions.d.ts +198 -0
- package/esm/pluginDefinitions.js +220 -0
- package/esm/rpc/BaseRpcDriver.d.ts +27 -35
- package/esm/rpc/BaseRpcDriver.js +74 -107
- package/esm/rpc/MainThreadRpcDriver.d.ts +9 -10
- package/esm/rpc/MainThreadRpcDriver.js +18 -29
- package/esm/rpc/RpcClient.d.ts +38 -0
- package/esm/rpc/RpcClient.js +154 -0
- package/esm/rpc/RpcManager.d.ts +116 -27
- package/esm/rpc/RpcManager.js +177 -50
- package/esm/rpc/RpcRegistry.d.ts +275 -0
- package/esm/rpc/RpcRegistry.js +1 -0
- package/esm/rpc/RpcServer.d.ts +41 -0
- package/esm/rpc/RpcServer.js +235 -0
- package/esm/rpc/WebWorkerRpcDriver.d.ts +71 -24
- package/esm/rpc/WebWorkerRpcDriver.js +312 -27
- package/esm/rpc/byteBudget.d.ts +58 -0
- package/esm/rpc/byteBudget.js +50 -0
- package/esm/rpc/configSchema.d.ts +27 -5
- package/esm/rpc/configSchema.js +40 -16
- package/esm/rpc/coreRpcMethods.d.ts +3 -5
- package/esm/rpc/coreRpcMethods.js +10 -12
- package/esm/rpc/explainTransferError.d.ts +35 -0
- package/esm/rpc/explainTransferError.js +158 -0
- package/esm/rpc/methods/CoreFreeResources.d.ts +19 -4
- package/esm/rpc/methods/CoreFreeResources.js +17 -6
- package/esm/rpc/methods/CoreGetExportData.d.ts +5 -18
- package/esm/rpc/methods/CoreGetExportData.js +26 -15
- package/esm/rpc/methods/CoreGetFeatureDensity.d.ts +11 -0
- package/esm/rpc/methods/CoreGetFeatureDensity.js +22 -0
- package/esm/rpc/methods/CoreGetFeatures.d.ts +6 -15
- package/esm/rpc/methods/CoreGetFeatures.js +15 -17
- package/esm/rpc/methods/CoreGetInfo.d.ts +6 -0
- package/esm/rpc/methods/CoreGetInfo.js +12 -0
- package/esm/rpc/methods/CoreGetMetadata.d.ts +4 -7
- package/esm/rpc/methods/CoreGetMetadata.js +6 -9
- package/esm/rpc/methods/CoreGetRefNames.d.ts +4 -8
- package/esm/rpc/methods/CoreGetRefNames.js +24 -13
- package/esm/rpc/methods/CoreGetRegionByteEstimate.d.ts +6 -0
- package/esm/rpc/methods/CoreGetRegionByteEstimate.js +19 -0
- package/esm/rpc/methods/CoreGetRegions.d.ts +4 -6
- package/esm/rpc/methods/CoreGetRegions.js +6 -9
- package/esm/rpc/methods/CoreGetSequence.d.ts +4 -11
- package/esm/rpc/methods/CoreGetSequence.js +12 -13
- package/esm/rpc/serializeError/index.d.ts +9 -0
- package/esm/rpc/serializeError/index.js +86 -0
- package/esm/svg/SvgExport.d.ts +30 -0
- package/esm/svg/SvgExport.js +53 -0
- package/esm/svg/constants.d.ts +1 -0
- package/esm/svg/constants.js +5 -0
- package/esm/svg/saveSvgAsImage.d.ts +6 -0
- package/esm/svg/saveSvgAsImage.js +90 -0
- package/esm/svg/svgId.d.ts +42 -0
- package/esm/svg/svgId.js +84 -0
- package/esm/svg/svgReady.d.ts +137 -0
- package/esm/svg/svgReady.js +164 -0
- package/esm/svg/trackNames.d.ts +27 -0
- package/esm/svg/trackNames.js +31 -0
- package/esm/svg/wrapSvgExport.d.ts +12 -0
- package/esm/svg/wrapSvgExport.js +78 -0
- package/esm/ui/ActionLink.d.ts +7 -0
- package/esm/ui/ActionLink.js +9 -0
- package/esm/ui/AddCustomPluginDialog.d.ts +14 -0
- package/esm/ui/AddCustomPluginDialog.js +61 -0
- package/esm/ui/AddGenomePane.d.ts +8 -0
- package/esm/ui/AddGenomePane.js +228 -0
- package/esm/ui/AdvancedOptions.d.ts +6 -0
- package/esm/ui/AdvancedOptions.js +17 -0
- package/esm/ui/AppLogo.d.ts +1 -1
- package/esm/ui/AppLogo.js +2 -2
- package/esm/ui/AssemblySelector.d.ts +5 -8
- package/esm/ui/AssemblySelector.js +8 -26
- package/esm/ui/BaseExportSvgDialog.d.ts +16 -0
- package/esm/ui/BaseExportSvgDialog.js +84 -0
- package/esm/ui/BaseTooltip.d.ts +14 -3
- package/esm/ui/BaseTooltip.js +151 -34
- package/esm/ui/CascadingMenu.d.ts +9 -18
- package/esm/ui/CascadingMenu.js +390 -41
- package/esm/ui/CascadingMenuButton.d.ts +9 -11
- package/esm/ui/CascadingMenuButton.js +36 -18
- package/esm/ui/CascadingMenuHelpDialog.d.ts +2 -2
- package/esm/ui/CascadingMenuHelpDialog.js +4 -5
- package/esm/ui/CascadingMenuHelpIconButton.d.ts +2 -1
- package/esm/ui/CascadingMenuHelpIconButton.js +18 -9
- package/esm/ui/ColorPicker.d.ts +6 -9
- package/esm/ui/ColorPicker.js +36 -39
- package/esm/ui/ConfirmDialog.d.ts +2 -9
- package/esm/ui/ConfirmDialog.js +6 -9
- package/esm/ui/ContextMenu.d.ts +50 -0
- package/esm/ui/ContextMenu.js +55 -0
- package/esm/ui/CopyToClipboardButton.d.ts +10 -0
- package/esm/ui/CopyToClipboardButton.js +14 -0
- package/esm/ui/Crosshairs.d.ts +10 -0
- package/esm/ui/Crosshairs.js +15 -0
- package/esm/ui/DOMPurifySanitizedHTML.d.ts +1 -1
- package/esm/ui/DOMPurifySanitizedHTML.js +5 -5
- package/esm/ui/DataGridFlexContainer.d.ts +9 -2
- package/esm/ui/DataGridFlexContainer.js +4 -3
- package/esm/ui/Dialog.d.ts +5 -2
- package/esm/ui/Dialog.js +35 -27
- package/esm/ui/DraggableDialog.d.ts +3 -3
- package/esm/ui/DraggableDialog.js +50 -12
- package/esm/ui/DropDownMenu.d.ts +4 -2
- package/esm/ui/DropDownMenu.js +4 -4
- package/esm/ui/EditableTypography.d.ts +3 -1
- package/esm/ui/EditableTypography.js +34 -26
- package/esm/ui/ErrorActions.d.ts +24 -0
- package/esm/ui/ErrorActions.js +20 -0
- package/esm/ui/ErrorBanner.d.ts +7 -0
- package/esm/ui/ErrorBanner.js +35 -0
- package/esm/ui/ErrorBar.d.ts +6 -0
- package/esm/ui/ErrorBar.js +35 -0
- package/esm/ui/ErrorBoundary.d.ts +29 -5
- package/esm/ui/ErrorBoundary.js +32 -2
- package/esm/ui/ErrorMessage.d.ts +2 -4
- package/esm/ui/ErrorMessage.js +17 -52
- package/esm/ui/ErrorMessageStackTraceContents.d.ts +1 -1
- package/esm/ui/ErrorMessageStackTraceContents.js +3 -3
- package/esm/ui/ErrorMessageStackTraceDialog.d.ts +1 -1
- package/esm/ui/ErrorMessageStackTraceDialog.js +57 -96
- package/esm/ui/ErrorOverlay.d.ts +8 -0
- package/esm/ui/ErrorOverlay.js +5 -0
- package/esm/ui/ExportSvgDialog.d.ts +7 -0
- package/esm/ui/ExportSvgDialog.js +9 -0
- package/esm/ui/ExternalLink.d.ts +1 -1
- package/esm/ui/FactoryResetDialog.d.ts +1 -1
- package/esm/ui/FactoryResetDialog.js +6 -15
- package/esm/ui/FatalErrorDialog.d.ts +3 -2
- package/esm/ui/FatalErrorDialog.js +6 -5
- package/esm/ui/FileDropZone.d.ts +25 -0
- package/esm/ui/FileDropZone.js +128 -0
- package/esm/ui/FileSelector/FileSelector.d.ts +1 -1
- package/esm/ui/FileSelector/FileSelector.js +59 -30
- package/esm/ui/FileSelector/LocalFileChooser.d.ts +7 -2
- package/esm/ui/FileSelector/LocalFileChooser.js +61 -47
- package/esm/ui/FileSelector/LocationInput.d.ts +1 -1
- package/esm/ui/FileSelector/LocationInput.js +8 -12
- package/esm/ui/FileSelector/SourceTypeSelector.d.ts +5 -5
- package/esm/ui/FileSelector/SourceTypeSelector.js +9 -7
- package/esm/ui/FileSelector/UrlChooser.d.ts +1 -1
- package/esm/ui/FileSelector/UrlChooser.js +26 -2
- package/esm/ui/FileSelector/emptySourceType.d.ts +2 -0
- package/esm/ui/FileSelector/emptySourceType.js +14 -0
- package/esm/ui/FileSelector/useInternetAccounts.d.ts +383 -71
- package/esm/ui/FileSelector/useInternetAccounts.js +13 -6
- package/esm/ui/FileSelector/util.d.ts +58 -3
- package/esm/ui/FileSelector/util.js +128 -11
- package/esm/ui/GpuFallbackButton.d.ts +12 -0
- package/esm/ui/GpuFallbackButton.js +20 -0
- package/esm/ui/HoverMenu.d.ts +12 -3
- package/esm/ui/HoverMenu.js +31 -9
- package/esm/ui/HoverTooltip.d.ts +27 -0
- package/esm/ui/HoverTooltip.js +24 -0
- package/esm/ui/Icons.d.ts +6 -4
- package/esm/ui/Icons.js +9 -0
- package/esm/ui/InfoDialog.d.ts +7 -0
- package/esm/ui/InfoDialog.js +16 -0
- package/esm/ui/InlineMenuControls.d.ts +6 -0
- package/esm/ui/InlineMenuControls.js +17 -0
- package/esm/ui/JexlFilterDialog.d.ts +23 -0
- package/esm/ui/JexlFilterDialog.js +94 -0
- package/esm/ui/LabeledCheckbox.d.ts +9 -0
- package/esm/ui/LabeledCheckbox.js +7 -0
- package/esm/ui/LegendSwatchGlyph.d.ts +7 -0
- package/esm/ui/LegendSwatchGlyph.js +25 -0
- package/esm/ui/LoadingDots.d.ts +1 -0
- package/esm/ui/LoadingDots.js +30 -0
- package/esm/ui/LoadingEllipses.d.ts +17 -1
- package/esm/ui/LoadingEllipses.js +20 -29
- package/esm/ui/LoadingOverlay.d.ts +23 -0
- package/esm/ui/LoadingOverlay.js +137 -0
- package/esm/ui/LoadingProgress.d.ts +16 -0
- package/esm/ui/LoadingProgress.js +16 -0
- package/esm/ui/Logo.d.ts +2 -2
- package/esm/ui/Logo.js +23 -24
- package/esm/ui/Menu.js +1 -1
- package/esm/ui/MenuItemChevron.d.ts +3 -0
- package/esm/ui/MenuItemChevron.js +19 -0
- package/esm/ui/MenuItemEndDecoration.d.ts +4 -0
- package/esm/ui/MenuItemEndDecoration.js +28 -0
- package/esm/ui/MenuItemTrailing.d.ts +12 -0
- package/esm/ui/MenuItemTrailing.js +42 -0
- package/esm/ui/MenuTypes.d.ts +134 -5
- package/esm/ui/MenuTypes.js +16 -1
- package/esm/ui/MonospaceTextField.d.ts +9 -0
- package/esm/ui/MonospaceTextField.js +37 -0
- package/esm/ui/NumberTextField.d.ts +31 -0
- package/esm/ui/NumberTextField.js +33 -0
- package/esm/ui/PaletteContext.d.ts +92 -0
- package/esm/ui/PaletteContext.js +133 -0
- package/esm/ui/PinAdornment.d.ts +5 -0
- package/esm/ui/PinAdornment.js +85 -0
- package/esm/ui/PluggableComponent.d.ts +10 -0
- package/esm/ui/PluggableComponent.js +19 -0
- package/esm/ui/PluggableComponents.d.ts +29 -0
- package/esm/ui/PluggableComponents.js +28 -0
- package/esm/ui/PluggableElements.d.ts +23 -0
- package/esm/ui/PluggableElements.js +24 -0
- package/esm/ui/PluginStoreCard.d.ts +17 -0
- package/esm/ui/PluginStoreCard.js +45 -0
- package/esm/ui/PopoverPicker.d.ts +6 -0
- package/esm/ui/PopoverPicker.js +25 -0
- package/esm/ui/PrerenderedCanvas.d.ts +1 -1
- package/esm/ui/PrerenderedCanvas.js +5 -4
- package/esm/ui/ProgressChip.d.ts +37 -0
- package/esm/ui/ProgressChip.js +66 -0
- package/esm/ui/RedErrorMessageBox.d.ts +1 -1
- package/esm/ui/RedErrorMessageBox.js +9 -3
- package/esm/ui/RefNameAutocomplete/EndAdornment.d.ts +5 -0
- package/esm/ui/RefNameAutocomplete/EndAdornment.js +31 -0
- package/esm/ui/RefNameAutocomplete/HelpDialog.d.ts +3 -0
- package/esm/ui/RefNameAutocomplete/HelpDialog.js +7 -0
- package/esm/ui/RefNameAutocomplete/index.d.ts +22 -0
- package/esm/ui/RefNameAutocomplete/index.js +78 -0
- package/esm/ui/RefNameAutocomplete/util.d.ts +49 -0
- package/esm/ui/RefNameAutocomplete/util.js +168 -0
- package/esm/ui/ReplaceCurrentViewButton.d.ts +19 -0
- package/esm/ui/ReplaceCurrentViewButton.js +22 -0
- package/esm/ui/ResizeHandle.d.ts +13 -7
- package/esm/ui/ResizeHandle.js +42 -55
- package/esm/ui/ReturnToImportFormDialog.d.ts +1 -1
- package/esm/ui/ReturnToImportFormDialog.js +7 -9
- package/esm/ui/SanitizedHTML.d.ts +6 -1
- package/esm/ui/SanitizedHTML.js +7 -47
- package/esm/ui/ScrollEdgeShadow.d.ts +44 -0
- package/esm/ui/ScrollEdgeShadow.js +98 -0
- package/esm/ui/ScrollZoomToggle.d.ts +38 -0
- package/esm/ui/ScrollZoomToggle.js +92 -0
- package/esm/ui/SequenceAdapterInputs.d.ts +9 -0
- package/esm/ui/SequenceAdapterInputs.js +30 -0
- package/esm/ui/SettingsChangesTable.d.ts +14 -0
- package/esm/ui/SettingsChangesTable.js +49 -0
- package/esm/ui/ShareLinkField.d.ts +6 -0
- package/esm/ui/ShareLinkField.js +42 -0
- package/esm/ui/SingleSlider.d.ts +8 -0
- package/esm/ui/SingleSlider.js +11 -0
- package/esm/ui/SizeSliderRow.d.ts +16 -0
- package/esm/ui/SizeSliderRow.js +50 -0
- package/esm/ui/SliderTooltip.d.ts +2 -0
- package/esm/ui/SliderTooltip.js +17 -0
- package/esm/ui/Snackbar.d.ts +4 -2
- package/esm/ui/Snackbar.js +11 -8
- package/esm/ui/SnackbarContents.d.ts +1 -1
- package/esm/ui/SnackbarContents.js +21 -3
- package/esm/ui/SnackbarModel.d.ts +40 -0
- package/esm/ui/SnackbarModel.js +43 -11
- package/esm/ui/StackTraceButton.d.ts +5 -0
- package/esm/ui/StackTraceButton.js +16 -0
- package/esm/ui/StatusProgressBar.d.ts +37 -0
- package/esm/ui/StatusProgressBar.js +76 -0
- package/esm/ui/SubmitDialog.d.ts +6 -0
- package/esm/ui/SubmitDialog.js +9 -0
- package/esm/ui/SubmitForm.d.ts +23 -0
- package/esm/ui/SubmitForm.js +23 -0
- package/esm/ui/SvgColorLegend.d.ts +13 -0
- package/esm/ui/SvgColorLegend.js +65 -0
- package/esm/ui/SvgGradientLegend.d.ts +26 -0
- package/esm/ui/SvgGradientLegend.js +26 -0
- package/esm/ui/TagTextField.d.ts +40 -0
- package/esm/ui/TagTextField.js +32 -0
- package/esm/ui/VerticalScrollbar.d.ts +45 -0
- package/esm/ui/VerticalScrollbar.js +158 -0
- package/esm/ui/ViewLoadingScreen.d.ts +24 -0
- package/esm/ui/ViewLoadingScreen.js +76 -0
- package/esm/ui/addExtensionElement.d.ts +18 -0
- package/esm/ui/addExtensionElement.js +23 -0
- package/esm/ui/buildExtraTrackMenuItems.d.ts +22 -0
- package/esm/ui/buildExtraTrackMenuItems.js +14 -0
- package/esm/ui/colorSwatchStyle.d.ts +9 -0
- package/esm/ui/colorSwatchStyle.js +11 -0
- package/esm/ui/colors.d.ts +61 -8
- package/esm/ui/colors.js +135 -1
- package/esm/ui/extensionSelectors.d.ts +38 -0
- package/esm/ui/extensionSelectors.js +49 -0
- package/esm/ui/filterMenuItems.d.ts +112 -0
- package/esm/ui/filterMenuItems.js +86 -0
- package/esm/ui/formatErrorStack.d.ts +1 -0
- package/esm/ui/formatErrorStack.js +56 -0
- package/esm/ui/gpuFallback.d.ts +33 -0
- package/esm/ui/gpuFallback.js +39 -0
- package/esm/ui/highlightChipReveal.d.ts +32 -0
- package/esm/ui/highlightChipReveal.js +39 -0
- package/esm/ui/hoverBoxStyle.d.ts +11 -0
- package/esm/ui/hoverBoxStyle.js +13 -0
- package/esm/ui/index.d.ts +76 -4
- package/esm/ui/index.js +90 -19
- package/esm/ui/inlineMenuRowWidth.d.ts +1 -0
- package/esm/ui/inlineMenuRowWidth.js +8 -0
- package/esm/ui/launchTargetsMenuItem.d.ts +18 -0
- package/esm/ui/launchTargetsMenuItem.js +24 -0
- package/esm/ui/launchViewMenu.d.ts +4 -0
- package/esm/ui/launchViewMenu.js +42 -0
- package/esm/ui/legendMenuItem.d.ts +38 -0
- package/esm/ui/legendMenuItem.js +44 -0
- package/esm/ui/legendSpec.d.ts +62 -0
- package/esm/ui/legendSpec.js +78 -0
- package/esm/ui/loadingDotKeyframes.d.ts +18 -0
- package/esm/ui/loadingDotKeyframes.js +17 -0
- package/esm/ui/makeSizeMenu.d.ts +30 -0
- package/esm/ui/makeSizeMenu.js +82 -0
- package/esm/ui/mapStackTrace.d.ts +8 -0
- package/esm/ui/mapStackTrace.js +108 -0
- package/esm/ui/measureLegendText.d.ts +1 -0
- package/esm/ui/measureLegendText.js +8 -0
- package/esm/ui/menuItemAdornment.d.ts +33 -0
- package/esm/ui/menuItemAdornment.js +50 -0
- package/esm/ui/menuItems.d.ts +28 -0
- package/esm/ui/menuItems.js +26 -0
- package/esm/ui/menuLabels.d.ts +41 -0
- package/esm/ui/menuLabels.js +43 -0
- package/esm/ui/multiTrackMenuItems.d.ts +19 -0
- package/esm/ui/multiTrackMenuItems.js +15 -0
- package/esm/ui/palette.d.ts +559 -0
- package/esm/ui/palette.js +746 -0
- package/esm/ui/parseError.d.ts +4 -0
- package/esm/ui/parseError.js +18 -0
- package/esm/ui/persistentScrollbarStyle.d.ts +49 -0
- package/esm/ui/persistentScrollbarStyle.js +53 -0
- package/esm/ui/promotableMenuItems.d.ts +19 -0
- package/esm/ui/promotableMenuItems.js +91 -0
- package/esm/ui/promotablePinCoverage.d.ts +44 -0
- package/esm/ui/promotablePinCoverage.js +88 -0
- package/esm/ui/radioSubMenu.d.ts +33 -0
- package/esm/ui/radioSubMenu.js +32 -0
- package/esm/ui/react-colorful.js +5 -1
- package/esm/ui/replaceViewAction.d.ts +31 -0
- package/esm/ui/replaceViewAction.js +39 -0
- package/esm/ui/rewriteExternalAnchors.d.ts +1 -0
- package/esm/ui/rewriteExternalAnchors.js +8 -0
- package/esm/ui/scrollZoomLabels.d.ts +17 -0
- package/esm/ui/scrollZoomLabels.js +22 -0
- package/esm/ui/showSubMenu.d.ts +19 -0
- package/esm/ui/showSubMenu.js +30 -0
- package/esm/ui/sliderScale.d.ts +6 -0
- package/esm/ui/sliderScale.js +30 -0
- package/esm/ui/statusProgressKeyframes.d.ts +6 -0
- package/esm/ui/statusProgressKeyframes.js +14 -0
- package/esm/ui/stripStackTraceMessage.d.ts +1 -0
- package/esm/ui/stripStackTraceMessage.js +9 -0
- package/esm/ui/styleTheme.d.ts +158 -0
- package/esm/ui/styleTheme.js +115 -0
- package/esm/ui/submenuAim.d.ts +30 -0
- package/esm/ui/submenuAim.js +37 -0
- package/esm/ui/theme.d.ts +343 -29
- package/esm/ui/theme.js +258 -342
- package/esm/ui/toggleMenuItems.d.ts +42 -0
- package/esm/ui/toggleMenuItems.js +60 -0
- package/esm/ui/useAssemblySelection.d.ts +153 -0
- package/esm/ui/useAssemblySelection.js +54 -0
- package/esm/ui/useCoalescedPointer.d.ts +36 -0
- package/esm/ui/useCoalescedPointer.js +60 -0
- package/esm/ui/useCopyToClipboard.d.ts +15 -0
- package/esm/ui/useCopyToClipboard.js +41 -0
- package/esm/ui/useExportSvgPreference.d.ts +1 -0
- package/esm/ui/useExportSvgPreference.js +4 -0
- package/esm/ui/useMouseTracking.d.ts +71 -0
- package/esm/ui/useMouseTracking.js +179 -0
- package/esm/ui/useRecentLocations.d.ts +28 -0
- package/esm/ui/useRecentLocations.js +31 -0
- package/esm/ui/wrapComponent.d.ts +47 -0
- package/esm/ui/wrapComponent.js +58 -0
- package/esm/ui/zIndexes.d.ts +28 -0
- package/esm/ui/zIndexes.js +38 -0
- package/esm/util/Base1DUtils.d.ts +204 -16
- package/esm/util/Base1DUtils.js +310 -175
- package/esm/util/Base1DViewModel.d.ts +97 -20
- package/esm/util/Base1DViewModel.js +148 -39
- package/esm/util/FileSaver/index.d.ts +1 -0
- package/esm/util/FileSaver/index.js +27 -0
- package/esm/util/IntervalTree.d.ts +18 -39
- package/esm/util/IntervalTree.js +63 -244
- package/esm/util/SvgCanvas.d.ts +81 -0
- package/esm/util/SvgCanvas.js +500 -0
- package/esm/util/TimeTraveller.d.ts +12 -0
- package/esm/util/TimeTraveller.js +130 -27
- package/esm/util/aborting.d.ts +17 -4
- package/esm/util/aborting.js +30 -25
- package/esm/util/adapterMetadata.d.ts +20 -0
- package/esm/util/adapterMetadata.js +39 -0
- package/esm/util/addAndShowTrack.d.ts +22 -0
- package/esm/util/addAndShowTrack.js +27 -0
- package/esm/util/addRelativeUris.d.ts +17 -0
- package/esm/util/addRelativeUris.js +42 -0
- package/esm/util/addTrackComponent.d.ts +72 -0
- package/esm/util/addTrackComponent.js +53 -0
- package/esm/util/addTrackFromWidget.d.ts +94 -0
- package/esm/util/addTrackFromWidget.js +90 -0
- package/esm/util/analytics.d.ts +32 -3
- package/esm/util/analytics.js +102 -49
- package/esm/util/animationAllowed.d.ts +17 -0
- package/esm/util/animationAllowed.js +22 -0
- package/esm/util/applyRowResizeWheel.d.ts +10 -0
- package/esm/util/applyRowResizeWheel.js +34 -0
- package/esm/util/assemblyConfigUtils.d.ts +144 -0
- package/esm/util/assemblyConfigUtils.js +498 -0
- package/esm/util/bandHeight.d.ts +53 -0
- package/esm/util/bandHeight.js +56 -0
- package/esm/util/bandLayout.d.ts +51 -0
- package/esm/util/bandLayout.js +36 -0
- package/esm/util/bezierConnector.d.ts +14 -0
- package/esm/util/bezierConnector.js +108 -0
- package/esm/util/bgzfWorkerPool.d.ts +78 -0
- package/esm/util/bgzfWorkerPool.js +81 -0
- package/esm/util/blockTypes.d.ts +64 -45
- package/esm/util/blockTypes.js +67 -74
- package/esm/util/bpUtils.d.ts +81 -0
- package/esm/util/bpUtils.js +103 -0
- package/esm/util/cacheBudgets.d.ts +55 -0
- package/esm/util/cacheBudgets.js +55 -0
- package/esm/util/cachedSetup.d.ts +51 -0
- package/esm/util/cachedSetup.js +87 -0
- package/esm/util/calculateDynamicBlocks.d.ts +5 -0
- package/esm/util/calculateDynamicBlocks.js +85 -82
- package/esm/util/calculateStaticBlocks.d.ts +2 -3
- package/esm/util/calculateStaticBlocks.js +48 -71
- package/esm/util/chooseGridPitch.d.ts +9 -0
- package/esm/util/chooseGridPitch.js +31 -0
- package/esm/util/clampToContig.d.ts +26 -0
- package/esm/util/clampToContig.js +28 -0
- package/esm/util/cmpStr.d.ts +1 -0
- package/esm/util/cmpStr.js +7 -0
- package/esm/util/coarseStripHTML.js +3 -15
- package/esm/util/color/cssColorsLevel4.js +6 -2
- package/esm/util/color/index.d.ts +81 -2
- package/esm/util/color/index.js +194 -25
- package/esm/util/color-bits/bit.d.ts +4 -0
- package/esm/util/color-bits/bit.js +37 -0
- package/esm/util/color-bits/convert.d.ts +23 -0
- package/esm/util/color-bits/convert.js +294 -0
- package/esm/util/color-bits/core.d.ts +34 -0
- package/esm/util/color-bits/core.js +67 -0
- package/esm/util/color-bits/format.d.ts +24 -0
- package/esm/util/color-bits/format.js +82 -0
- package/esm/util/color-bits/functions.d.ts +33 -0
- package/esm/util/color-bits/functions.js +70 -0
- package/esm/util/color-bits/index.d.ts +5 -0
- package/esm/util/color-bits/index.js +4 -0
- package/esm/util/color-bits/parse.d.ts +17 -0
- package/esm/util/color-bits/parse.js +382 -0
- package/esm/util/colorBits.d.ts +39 -0
- package/esm/util/colorBits.js +180 -0
- package/esm/util/colorRamp.d.ts +37 -0
- package/esm/util/colorRamp.js +93 -0
- package/esm/util/colord.d.ts +8 -0
- package/esm/util/colord.js +43 -191
- package/esm/util/convertCodingSequenceToPeptides.d.ts +17 -3
- package/esm/util/convertCodingSequenceToPeptides.js +51 -4
- package/esm/util/copyText.d.ts +18 -0
- package/esm/util/copyText.js +30 -0
- package/esm/util/copyToClipboard.d.ts +4 -0
- package/esm/util/copyToClipboard.js +58 -0
- package/esm/util/createStopTokenRotation.d.ts +118 -0
- package/esm/util/createStopTokenRotation.js +127 -0
- package/esm/util/createSvgRasterCanvas.d.ts +7 -0
- package/esm/util/createSvgRasterCanvas.js +22 -0
- package/esm/util/crypto.d.ts +24 -0
- package/esm/util/crypto.js +85 -2
- package/esm/util/dataGridUtils.d.ts +9 -0
- package/esm/util/dataGridUtils.js +36 -0
- package/esm/util/dedupe.js +1 -0
- package/esm/util/deepEqual.d.ts +8 -0
- package/esm/util/deepEqual.js +22 -0
- package/esm/util/deepMerge.d.ts +20 -0
- package/esm/util/deepMerge.js +44 -0
- package/esm/util/diagonalizeRegions.d.ts +23 -0
- package/esm/util/diagonalizeRegions.js +192 -0
- package/esm/util/environment.d.ts +4 -0
- package/esm/util/environment.js +43 -0
- package/esm/util/eventPoint.d.ts +32 -0
- package/esm/util/eventPoint.js +28 -0
- package/esm/util/fetchAndMaybeUnzip.d.ts +6 -0
- package/esm/util/fetchAndMaybeUnzip.js +64 -0
- package/esm/util/fetchContext.d.ts +82 -0
- package/esm/util/fetchContext.js +59 -0
- package/esm/util/fetchHub.d.ts +15 -0
- package/esm/util/fetchHub.js +31 -0
- package/esm/util/fetchJson.d.ts +1 -0
- package/esm/util/fetchJson.js +7 -0
- package/esm/util/fetchPhases.d.ts +77 -0
- package/esm/util/fetchPhases.js +1 -0
- package/esm/util/fetchSeq.d.ts +5 -1
- package/esm/util/fetchSeq.js +18 -6
- package/esm/util/fileHandleStore.d.ts +19 -2
- package/esm/util/fileHandleStore.js +95 -35
- package/esm/util/flatbush/index.d.ts +27 -6
- package/esm/util/flatbush/index.js +194 -218
- package/esm/util/formatBytes.d.ts +9 -0
- package/esm/util/formatBytes.js +18 -0
- package/esm/util/formatFastaStrings.d.ts +13 -0
- package/esm/util/formatFastaStrings.js +13 -0
- package/esm/util/formatGuessers.d.ts +30 -0
- package/esm/util/formatGuessers.js +69 -0
- package/esm/util/formatRelativeTime.d.ts +1 -0
- package/esm/util/formatRelativeTime.js +25 -0
- package/esm/util/frameCoalescer.d.ts +30 -0
- package/esm/util/frameCoalescer.js +22 -0
- package/esm/util/freezeDeep.d.ts +28 -0
- package/esm/util/freezeDeep.js +41 -0
- package/esm/util/geneticCodes.d.ts +56 -0
- package/esm/util/geneticCodes.js +371 -0
- package/esm/util/getFileName.d.ts +11 -0
- package/esm/util/getFileName.js +34 -0
- package/esm/util/getLocationUri.d.ts +49 -0
- package/esm/util/getLocationUri.js +63 -0
- package/esm/util/getRelativeX.d.ts +4 -0
- package/esm/util/getRelativeX.js +7 -0
- package/esm/util/getStr.d.ts +6 -0
- package/esm/util/getStr.js +15 -0
- package/esm/util/highlights.d.ts +21 -0
- package/esm/util/highlights.js +100 -0
- package/esm/util/hooks.d.ts +168 -0
- package/esm/util/hooks.js +443 -0
- package/esm/util/htmlText.d.ts +13 -0
- package/esm/util/htmlText.js +66 -0
- package/esm/util/idMaker.d.ts +1 -1
- package/esm/util/idMaker.js +31 -18
- package/esm/util/index.d.ts +81 -268
- package/esm/util/index.js +135 -853
- package/esm/util/indexCandidates.d.ts +50 -0
- package/esm/util/indexCandidates.js +101 -0
- package/esm/util/installClearHoverOnSurfaceMove.d.ts +40 -0
- package/esm/util/installClearHoverOnSurfaceMove.js +41 -0
- package/esm/util/installFetch.d.ts +220 -0
- package/esm/util/installFetch.js +206 -0
- package/esm/util/installInitAutorun.d.ts +62 -0
- package/esm/util/installInitAutorun.js +107 -0
- package/esm/util/intervals.d.ts +20 -0
- package/esm/util/intervals.js +37 -0
- package/esm/util/io/RemoteFileWithRangeCache.d.ts +10 -11
- package/esm/util/io/RemoteFileWithRangeCache.js +10 -148
- package/esm/util/io/index.d.ts +39 -2
- package/esm/util/io/index.js +115 -12
- package/esm/util/isDataCurrent.d.ts +7 -0
- package/esm/util/isDataCurrent.js +9 -0
- package/esm/util/isWebWorker.js +1 -2
- package/esm/util/iupac.d.ts +4 -0
- package/esm/util/iupac.js +59 -0
- package/esm/util/jexl.js +141 -17
- package/esm/util/jexlFilters.d.ts +75 -0
- package/esm/util/jexlFilters.js +49 -0
- package/esm/util/jexlStrings.d.ts +22 -1
- package/esm/util/jexlStrings.js +21 -14
- package/esm/util/layouts/GranularRectLayout.d.ts +13 -25
- package/esm/util/layouts/GranularRectLayout.js +99 -356
- package/esm/util/layouts/index.d.ts +1 -7
- package/esm/util/layouts/index.js +2 -6
- package/esm/util/layouts/intervalUtils.d.ts +12 -1
- package/esm/util/layouts/intervalUtils.js +13 -31
- package/esm/util/layouts/placeRect.d.ts +50 -0
- package/esm/util/layouts/placeRect.js +97 -0
- package/esm/util/lazyAfterAttach.d.ts +13 -0
- package/esm/util/lazyAfterAttach.js +31 -0
- package/esm/util/leadingEdgeAutorun.d.ts +40 -0
- package/esm/util/leadingEdgeAutorun.js +51 -0
- package/esm/util/legendCandidates.d.ts +50 -0
- package/esm/util/legendCandidates.js +87 -0
- package/esm/util/librpc.d.ts +5 -2
- package/esm/util/librpc.js +6 -1
- package/esm/util/linkify.js +2 -0
- package/esm/util/locString.d.ts +72 -0
- package/esm/util/locString.js +178 -7
- package/esm/util/locStringsToRegions.d.ts +10 -0
- package/esm/util/locStringsToRegions.js +35 -0
- package/esm/util/localStorage.d.ts +36 -0
- package/esm/util/localStorage.js +137 -0
- package/esm/util/makeAssembly.d.ts +54 -0
- package/esm/util/makeAssembly.js +52 -0
- package/esm/util/makeTrackId.d.ts +14 -0
- package/esm/util/makeTrackId.js +14 -0
- package/esm/util/matchTrackId.d.ts +11 -0
- package/esm/util/matchTrackId.js +14 -0
- package/esm/util/measureText.d.ts +24 -0
- package/esm/util/measureText.js +51 -0
- package/esm/util/mst-reflection.d.ts +14 -4
- package/esm/util/mst-reflection.js +33 -32
- package/esm/util/mstUtils.d.ts +100 -0
- package/esm/util/mstUtils.js +140 -0
- package/esm/util/nanoid.d.ts +0 -4
- package/esm/util/nanoid.js +10 -20
- package/esm/util/numericUtils.d.ts +20 -0
- package/esm/util/numericUtils.js +127 -0
- package/esm/util/objectUtils.d.ts +2 -0
- package/esm/util/objectUtils.js +9 -0
- package/esm/util/offscreenCanvasPonyfill.d.ts +5 -4
- package/esm/util/offscreenCanvasPonyfill.js +5 -47
- package/esm/util/openDisplays.d.ts +23 -0
- package/esm/util/openDisplays.js +79 -0
- package/esm/util/openFeatureWidget.d.ts +33 -0
- package/esm/util/openFeatureWidget.js +64 -0
- package/esm/util/paintLayer.d.ts +32 -0
- package/esm/util/paintLayer.js +33 -0
- package/esm/util/parentWalk.d.ts +32 -0
- package/esm/util/parentWalk.js +84 -0
- package/esm/util/parseLineByLine.d.ts +45 -2
- package/esm/util/parseLineByLine.js +156 -15
- package/esm/util/parseMotifList.d.ts +17 -0
- package/esm/util/parseMotifList.js +69 -0
- package/esm/util/pluginStore.d.ts +114 -0
- package/esm/util/pluginStore.js +260 -0
- package/esm/util/pointerPresence.d.ts +5 -0
- package/esm/util/pointerPresence.js +21 -0
- package/esm/util/progress.d.ts +459 -0
- package/esm/util/progress.js +820 -0
- package/esm/util/range.d.ts +46 -1
- package/esm/util/range.js +68 -2
- package/esm/util/renameRegions.d.ts +21 -0
- package/esm/util/renameRegions.js +129 -0
- package/esm/util/renderToStaticMarkup.d.ts +2 -0
- package/esm/util/renderToStaticMarkup.js +50 -0
- package/esm/util/reorder.d.ts +35 -0
- package/esm/util/reorder.js +83 -0
- package/esm/util/resolveRowHeight.d.ts +27 -0
- package/esm/util/resolveRowHeight.js +30 -0
- package/esm/util/revlist.d.ts +13 -0
- package/esm/util/revlist.js +14 -0
- package/esm/util/rowStackGeometry.d.ts +66 -0
- package/esm/util/rowStackGeometry.js +70 -0
- package/esm/util/rpc.d.ts +16 -1
- package/esm/util/rpc.js +12 -1
- package/esm/util/rxjs.d.ts +30 -1
- package/esm/util/rxjs.js +88 -10
- package/esm/util/sameStrings.d.ts +16 -0
- package/esm/util/sameStrings.js +20 -0
- package/esm/util/scrollLatch.d.ts +4 -0
- package/esm/util/scrollLatch.js +59 -0
- package/esm/util/selectNamedRegions.d.ts +136 -0
- package/esm/util/selectNamedRegions.js +222 -0
- package/esm/util/seqUtils.d.ts +17 -0
- package/esm/util/seqUtils.js +80 -0
- package/esm/util/sessionServices.d.ts +29 -0
- package/esm/util/sessionServices.js +46 -0
- package/esm/util/sessionSharing.d.ts +38 -0
- package/esm/util/sessionSharing.js +154 -0
- package/esm/util/sessionStorage.d.ts +1 -0
- package/esm/util/sessionStorage.js +15 -0
- package/esm/util/setStackTraceLimit.d.ts +6 -0
- package/esm/util/setStackTraceLimit.js +20 -0
- package/esm/util/simpleFeature.d.ts +112 -4
- package/esm/util/simpleFeature.js +181 -29
- package/esm/util/springAnimate.d.ts +20 -0
- package/esm/util/springAnimate.js +80 -0
- package/esm/util/stats.d.ts +25 -2
- package/esm/util/stats.js +39 -8
- package/esm/util/stopToken.d.ts +207 -15
- package/esm/util/stopToken.js +403 -55
- package/esm/util/stringUtils.d.ts +5 -0
- package/esm/util/stringUtils.js +34 -0
- package/esm/util/svgColorProps.d.ts +7 -0
- package/esm/util/svgColorProps.js +28 -0
- package/esm/util/tabix.d.ts +126 -0
- package/esm/util/tabix.js +149 -0
- package/esm/util/tags.d.ts +2 -0
- package/esm/util/tags.js +5 -0
- package/esm/util/temporaryAssembly.d.ts +21 -0
- package/esm/util/temporaryAssembly.js +29 -0
- package/esm/util/tickLabels.d.ts +36 -0
- package/esm/util/tickLabels.js +45 -0
- package/esm/util/timeGate.d.ts +26 -0
- package/esm/util/timeGate.js +79 -0
- package/esm/util/trackConfigDelta.d.ts +84 -0
- package/esm/util/trackConfigDelta.js +190 -0
- package/esm/util/tracks.d.ts +398 -30
- package/esm/util/tracks.js +699 -191
- package/esm/util/tss-react/cssAndCx.js +11 -66
- package/esm/util/tss-react/index.d.ts +11 -2
- package/esm/util/tss-react/index.js +9 -2
- package/esm/util/tss-react/makeStyles.js +7 -4
- package/esm/util/tss-react/mergeClasses.js +1 -0
- package/esm/util/tss-react/tools/classnames.d.ts +3 -0
- package/esm/util/tss-react/tools/classnames.js +3 -0
- package/esm/util/tss-react/tools/getDependencyArrayRef.d.ts +18 -0
- package/esm/util/tss-react/tools/getDependencyArrayRef.js +19 -0
- package/esm/util/tss-react/types.d.ts +1 -1
- package/esm/util/tss-react/types.js +1 -6
- package/esm/util/types/ElementId.js +1 -1
- package/esm/util/types/data.d.ts +75 -0
- package/esm/util/types/data.js +41 -0
- package/esm/util/types/index.d.ts +402 -120
- package/esm/util/types/index.js +90 -64
- package/esm/util/types/isAny.d.ts +11 -0
- package/esm/util/types/isAny.js +1 -0
- package/esm/util/types/mst.d.ts +71 -47
- package/esm/util/types/mst.js +27 -22
- package/esm/util/types/predicate.d.ts +9 -0
- package/esm/util/types/predicate.js +1 -0
- package/esm/util/types/renderingServices.d.ts +16 -0
- package/esm/util/types/renderingServices.js +1 -0
- package/esm/util/types/services.d.ts +55 -0
- package/esm/util/types/services.js +10 -0
- package/esm/util/types/util.d.ts +8 -2
- package/esm/util/unknownSnapshotKeys.d.ts +36 -0
- package/esm/util/unknownSnapshotKeys.js +69 -0
- package/esm/util/unzip.d.ts +1 -0
- package/esm/util/unzip.js +6 -0
- package/esm/util/useEventCallback.d.ts +1 -0
- package/esm/util/useEventCallback.js +16 -0
- package/esm/util/useFeatureSequence.d.ts +13 -7
- package/esm/util/useFeatureSequence.js +56 -78
- package/esm/util/useFetch.d.ts +56 -0
- package/esm/util/useFetch.js +188 -0
- package/esm/util/useFetchPlugins.d.ts +12 -0
- package/esm/util/useFetchPlugins.js +14 -0
- package/esm/util/useMeasure.d.ts +11 -1
- package/esm/util/useMeasure.js +20 -6
- package/esm/util/usePanZoom.d.ts +75 -0
- package/esm/util/usePanZoom.js +175 -0
- package/esm/util/usePanelVirtualScroll.d.ts +37 -0
- package/esm/util/usePanelVirtualScroll.js +42 -0
- package/esm/util/usePointerDrag.d.ts +37 -0
- package/esm/util/usePointerDrag.js +61 -0
- package/esm/util/useRafCommit.d.ts +4 -0
- package/esm/util/useRafCommit.js +50 -0
- package/esm/util/useResizeDrag.d.ts +91 -0
- package/esm/util/useResizeDrag.js +105 -0
- package/esm/util/useRowVirtualScroll.d.ts +32 -0
- package/esm/util/useRowVirtualScroll.js +63 -0
- package/esm/util/useVirtualScrollWheel.d.ts +7 -0
- package/esm/util/useVirtualScrollWheel.js +108 -0
- package/esm/util/viewStatus.d.ts +81 -0
- package/esm/util/viewStatus.js +37 -0
- package/esm/util/virtualRange.d.ts +36 -0
- package/esm/util/virtualRange.js +26 -0
- package/esm/util/webStorage.d.ts +26 -0
- package/esm/util/webStorage.js +92 -0
- package/esm/util/wheelZoom.d.ts +59 -0
- package/esm/util/wheelZoom.js +231 -0
- package/esm/util/whenViewSettled.d.ts +40 -0
- package/esm/util/whenViewSettled.js +41 -0
- package/esm/util/withFeatureDetails.d.ts +34 -0
- package/esm/util/withFeatureDetails.js +59 -0
- package/esm/util/withLaunchInput.d.ts +123 -0
- package/esm/util/withLaunchInput.js +228 -0
- package/package.json +243 -820
- package/esm/ReExports/DataGrid.d.ts +0 -1
- package/esm/ReExports/DataGrid.js +0 -1
- package/esm/configuration/util.d.ts +0 -10
- package/esm/configuration/util.js +0 -123
- package/esm/data_adapters/BaseAdapter/BaseOptions.d.ts +0 -18
- package/esm/data_adapters/util.d.ts +0 -1
- package/esm/data_adapters/util.js +0 -6
- package/esm/pluggableElementTypes/GlyphType.d.ts +0 -43
- package/esm/pluggableElementTypes/GlyphType.js +0 -18
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/fetchSequence.d.ts +0 -5
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/fetchSequence.js +0 -17
- package/esm/pluggableElementTypes/renderers/BoxRendererType.d.ts +0 -52
- package/esm/pluggableElementTypes/renderers/BoxRendererType.js +0 -78
- package/esm/pluggableElementTypes/renderers/CircularChordRendererType.d.ts +0 -4
- package/esm/pluggableElementTypes/renderers/CircularChordRendererType.js +0 -4
- package/esm/pluggableElementTypes/renderers/FeatureRendererType.d.ts +0 -58
- package/esm/pluggableElementTypes/renderers/FeatureRendererType.js +0 -77
- package/esm/pluggableElementTypes/renderers/LayoutSession.d.ts +0 -31
- package/esm/pluggableElementTypes/renderers/LayoutSession.js +0 -40
- package/esm/pluggableElementTypes/renderers/RendererType.d.ts +0 -28
- package/esm/pluggableElementTypes/renderers/RendererType.js +0 -20
- package/esm/pluggableElementTypes/renderers/ServerSideRendererType.d.ts +0 -58
- package/esm/pluggableElementTypes/renderers/ServerSideRendererType.js +0 -108
- package/esm/pluggableElementTypes/renderers/index.d.ts +0 -6
- package/esm/pluggableElementTypes/renderers/index.js +0 -6
- package/esm/pluggableElementTypes/renderers/util.d.ts +0 -3
- package/esm/pluggableElementTypes/renderers/util.js +0 -14
- package/esm/rpc/baseRpcConfig.d.ts +0 -8
- package/esm/rpc/baseRpcConfig.js +0 -10
- package/esm/rpc/mainThreadRpcConfig.d.ts +0 -8
- package/esm/rpc/mainThreadRpcConfig.js +0 -8
- package/esm/rpc/methods/CoreGetFeatureDensityStats.d.ts +0 -17
- package/esm/rpc/methods/CoreGetFeatureDensityStats.js +0 -25
- package/esm/rpc/methods/CoreGetFeatureDetails.d.ts +0 -11
- package/esm/rpc/methods/CoreGetFeatureDetails.js +0 -24
- package/esm/rpc/methods/CoreGetFileInfo.d.ts +0 -9
- package/esm/rpc/methods/CoreGetFileInfo.js +0 -15
- package/esm/rpc/methods/CoreRender.d.ts +0 -14
- package/esm/rpc/methods/CoreRender.js +0 -40
- package/esm/rpc/methods/CoreSaveFeatureData.d.ts +0 -16
- package/esm/rpc/methods/CoreSaveFeatureData.js +0 -32
- package/esm/rpc/methods/util.d.ts +0 -15
- package/esm/rpc/methods/util.js +0 -7
- package/esm/rpc/webWorkerRpcConfig.d.ts +0 -8
- package/esm/rpc/webWorkerRpcConfig.js +0 -8
- package/esm/ui/MenuButton.d.ts +0 -1
- package/esm/ui/MenuButton.js +0 -1
- package/esm/ui/MenuItems.d.ts +0 -15
- package/esm/ui/MenuItems.js +0 -59
- package/esm/ui/useEvent.d.ts +0 -1
- package/esm/ui/useEvent.js +0 -10
- package/esm/util/blobToDataURL.d.ts +0 -1
- package/esm/util/blobToDataURL.js +0 -14
- package/esm/util/compositeMap.d.ts +0 -11
- package/esm/util/compositeMap.js +0 -59
- package/esm/util/flatqueue/index.d.ts +0 -11
- package/esm/util/flatqueue/index.js +0 -61
- package/esm/util/layouts/BaseLayout.d.ts +0 -30
- package/esm/util/layouts/MultiLayout.d.ts +0 -12
- package/esm/util/layouts/MultiLayout.js +0 -40
- package/esm/util/layouts/PileupLayout.d.ts +0 -41
- package/esm/util/layouts/PileupLayout.js +0 -202
- package/esm/util/layouts/PrecomputedLayout.d.ts +0 -30
- package/esm/util/layouts/PrecomputedLayout.js +0 -71
- package/esm/util/layouts/SceneGraph.d.ts +0 -31
- package/esm/util/layouts/SceneGraph.js +0 -121
- package/esm/util/makeAbortableReaction.d.ts +0 -3
- package/esm/util/makeAbortableReaction.js +0 -47
- package/esm/util/map-obj/index.d.ts +0 -13
- package/esm/util/map-obj/index.js +0 -92
- package/esm/util/nextTick.d.ts +0 -1
- package/esm/util/nextTick.js +0 -3
- package/esm/util/offscreenCanvasGetSerializingSvg.d.ts +0 -5
- package/esm/util/offscreenCanvasGetSerializingSvg.js +0 -9
- package/esm/util/offscreenCanvasUtils.d.ts +0 -12
- package/esm/util/offscreenCanvasUtils.js +0 -19
- package/esm/util/renderToAbstractCanvas.d.ts +0 -17
- package/esm/util/renderToAbstractCanvas.js +0 -53
- package/esm/util/transferables.d.ts +0 -2
- package/esm/util/transferables.js +0 -35
- package/esm/util/tss-react/mui/index.d.ts +0 -1
- package/esm/util/tss-react/mui/index.js +0 -1
- package/esm/util/tss-react/mui/mui.d.ts +0 -10
- package/esm/util/tss-react/mui/mui.js +0 -5
- package/esm/util/when.d.ts +0 -1
- package/esm/util/when.js +0 -1
- /package/esm/{data_adapters/BaseAdapter/BaseOptions.js → configuration/promotablePin.js} +0 -0
- /package/esm/{util/layouts/BaseLayout.js → data_adapters/BaseAdapter/CytobandAdapter.js} +0 -0
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `*` is the only metacharacter; everything else in a name is matched literally,
|
|
3
|
+
* so a refName containing regex punctuation (`chr1.1`, `scaffold[2]`) can't turn
|
|
4
|
+
* into an accidental pattern. Anchored, so a pattern names whole refNames.
|
|
5
|
+
*
|
|
6
|
+
* Case-INSENSITIVE, and not optionally: the literal reading beside it resolves
|
|
7
|
+
* through getCanonicalRefName, which falls back to `lowerCaseRefNameAliases`, so
|
|
8
|
+
* `CHR1` has always found `chr1`. A case-sensitive glob meant `CHR1*` found
|
|
9
|
+
* nothing on the same assembly — literal working where pattern silently fails,
|
|
10
|
+
* which is the same split the alias fix removed and is no more tellable apart
|
|
11
|
+
* from "this assembly has no such contigs" here than it was there. No caller
|
|
12
|
+
* wants the other behaviour, so it is baked in rather than passed.
|
|
13
|
+
*
|
|
14
|
+
* Module-private, and worth keeping that way: both readings of `*` — the
|
|
15
|
+
* resolver's and the search box's — live in this file precisely so a pattern
|
|
16
|
+
* that selects a set in a session spec selects the same set typed into the box.
|
|
17
|
+
* A third caller reaching in from elsewhere is how that stops being true.
|
|
18
|
+
*/
|
|
19
|
+
function globToRegExp(pattern) {
|
|
20
|
+
const escaped = pattern.replaceAll(/[.*+?^${}()|[\]\\]/g, m => m === '*' ? '.*' : `\\${m}`);
|
|
21
|
+
return new RegExp(`^${escaped}$`, 'i');
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Resolve caller-supplied region names against an assembly's own regions,
|
|
25
|
+
* preserving the requested order and dropping names that match nothing.
|
|
26
|
+
*
|
|
27
|
+
* An entry containing `*` is a glob matched against the refName, which is what
|
|
28
|
+
* makes a fragmented assembly tractable: a haplotype-resolved genome wants "all
|
|
29
|
+
* of hap1" (`*_hap1`), not a hand-maintained list of its 16 scaffolds that goes
|
|
30
|
+
* stale the moment the assembly is rebuilt. A glob contributes its matches in
|
|
31
|
+
* the ASSEMBLY's order (the only order it can mean); exact names contribute in
|
|
32
|
+
* the CALLER's order, so an explicit list still controls layout. Duplicates
|
|
33
|
+
* across entries are dropped, so `['chr1_hap1', '*_hap1']` is chr1 first then
|
|
34
|
+
* the rest.
|
|
35
|
+
*
|
|
36
|
+
* AN EXACT REFNAME BEATS THE GLOB READING, which is the only reason `*` is safe
|
|
37
|
+
* to hand a user as a syntax: `*` is a legal character in a real contig name and
|
|
38
|
+
* the names carrying it are the ones nobody would think to escape. GRCh38's ALT
|
|
39
|
+
* decoys are HLA allele names — `HLA-A*01:01:01:01` — so a pattern typed to name
|
|
40
|
+
* one allele was compiled to `^HLA-A.*01:01:01:01$`, which matches that contig
|
|
41
|
+
* (hence it looked fine) and every other HLA-A allele with the same last four
|
|
42
|
+
* fields. Trying the literal lookup first costs one Map hit and means a name
|
|
43
|
+
* that IS a contig always resolves to that contig; only a name matching nothing
|
|
44
|
+
* is reinterpreted as a pattern.
|
|
45
|
+
*
|
|
46
|
+
* Selecting from the assembly's own region objects (rather than synthesizing
|
|
47
|
+
* them) keeps coordinates and lengths correct.
|
|
48
|
+
*
|
|
49
|
+
* THERE IS DELIBERATELY NO CEILING on how many regions a glob may resolve to.
|
|
50
|
+
* `["*"]` on a scaffold-level assembly really does mean every contig, which is
|
|
51
|
+
* no more than `showAllRegionsInAssembly` already hands to `setDisplayedRegions`.
|
|
52
|
+
* A cap here could only truncate — silently returning some of what was asked
|
|
53
|
+
* for, which is the failure mode this file keeps being fixed for. The search
|
|
54
|
+
* box's picker does bound its bulk-select row, and that is a different thing: it
|
|
55
|
+
* withholds an OFFER, leaving every match still pickable one at a time, rather
|
|
56
|
+
* than quietly resolving a list to a prefix of itself.
|
|
57
|
+
*
|
|
58
|
+
* BOTH READINGS GO THROUGH THE ASSEMBLY'S ALIASES, and they have to, because
|
|
59
|
+
* only one of them used to. An exact name has always resolved via
|
|
60
|
+
* `getCanonicalRefName`, so `['chr1']` picks out a contig an Ensembl-named
|
|
61
|
+
* assembly calls `1` — but the glob was tested against `region.refName`, the
|
|
62
|
+
* canonical name alone, so `['chr*']` on that same assembly matched nothing at
|
|
63
|
+
* all. The literal working where the pattern silently fails is the worst
|
|
64
|
+
* possible split: the caller has no way to tell "this assembly has no such
|
|
65
|
+
* contigs" from "globs don't see the names you're using". Pass `allRefNames`
|
|
66
|
+
* (canonical names AND aliases — `buildRefNameMaps` identity-maps every region,
|
|
67
|
+
* so it is a strict superset) and a pattern sees what a literal sees.
|
|
68
|
+
*
|
|
69
|
+
* It is optional ONLY because this is published ABI and the three-argument form
|
|
70
|
+
* predates it; an external plugin still calling that gets the canonical-only
|
|
71
|
+
* matching it always got. It is not optional because there is a state where an
|
|
72
|
+
* assembly has regions but not yet names — `setLoaded` writes `volatileRegions`
|
|
73
|
+
* and `refNameAliases` in one action, so no such state exists, and every
|
|
74
|
+
* in-tree caller (all of them through `resolveNamedRegions`) passes both.
|
|
75
|
+
*/
|
|
76
|
+
export function selectNamedRegions(regions, names, getCanonicalRefName, allRefNames) {
|
|
77
|
+
const byRefName = new Map(regions.map(r => [r.refName, r]));
|
|
78
|
+
// every name a glob may match on — see above for why the absent case is a
|
|
79
|
+
// legacy call rather than an unloaded assembly
|
|
80
|
+
const candidates = allRefNames?.length
|
|
81
|
+
? allRefNames
|
|
82
|
+
: regions.map(r => r.refName);
|
|
83
|
+
const out = [];
|
|
84
|
+
const seen = new Set();
|
|
85
|
+
const take = (r) => {
|
|
86
|
+
if (r && !seen.has(r.refName)) {
|
|
87
|
+
seen.add(r.refName);
|
|
88
|
+
out.push(r);
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
for (const name of names) {
|
|
92
|
+
const exact = byRefName.get(getCanonicalRefName(name) ?? name);
|
|
93
|
+
if (exact) {
|
|
94
|
+
take(exact);
|
|
95
|
+
}
|
|
96
|
+
else if (name.includes('*')) {
|
|
97
|
+
const re = globToRegExp(name);
|
|
98
|
+
// Resolve every matching NAME to the region it names, then walk `regions`
|
|
99
|
+
// to emit them — the two passes are what keeps a glob's contribution in
|
|
100
|
+
// ASSEMBLY order. Matching over `candidates` directly would order by the
|
|
101
|
+
// alias map instead, which is the order the alias file happened to list.
|
|
102
|
+
const hits = new Set();
|
|
103
|
+
for (const candidate of candidates) {
|
|
104
|
+
if (re.test(candidate)) {
|
|
105
|
+
hits.add(getCanonicalRefName(candidate) ?? candidate);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
for (const r of regions) {
|
|
109
|
+
if (hits.has(r.refName)) {
|
|
110
|
+
take(r);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return out;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Split a user-typed or URL-supplied region list into the entries
|
|
119
|
+
* `selectNamedRegions` takes. Comma-separated, because the two things anyone
|
|
120
|
+
* writes here are one glob (`*_MATERNAL`) or a short explicit list
|
|
121
|
+
* (`chr1, chr2`), and neither wants punctuation ceremony. Only the comma
|
|
122
|
+
* splits, so an HLA allele name — which carries both `*` and `:` — survives
|
|
123
|
+
* intact.
|
|
124
|
+
*
|
|
125
|
+
* Whitespace-trimmed and empties dropped, so a trailing comma, a box holding
|
|
126
|
+
* only spaces, and a bare `®ions=` all mean the same thing as nothing at
|
|
127
|
+
* all: no restriction, whole assembly. That last one is why this lives in core
|
|
128
|
+
* beside the matcher rather than next to the text box that first needed it —
|
|
129
|
+
* `®ions=` was reading the same syntax through a bare `split(',')`, so
|
|
130
|
+
* `®ions=chr1,%20chr2` dropped chr2 on the floor without a word and
|
|
131
|
+
* `®ions=` warned that a list of one empty name had matched nothing.
|
|
132
|
+
*/
|
|
133
|
+
export function parseRegionNames(value) {
|
|
134
|
+
return value
|
|
135
|
+
.split(',')
|
|
136
|
+
.map(s => s.trim())
|
|
137
|
+
.filter(s => s !== '');
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* `selectNamedRegions` plus the report a miss owes the user, which each of the
|
|
141
|
+
* four views taking `displayedRegionNames` had written out for itself — and two
|
|
142
|
+
* of them had not written at all, so a typo there showed the whole assembly and
|
|
143
|
+
* read as the field being ignored. A typo is no longer only a hand-authored-JSON
|
|
144
|
+
* mistake either: the dotplot and synteny import forms put this syntax in a text
|
|
145
|
+
* box.
|
|
146
|
+
*
|
|
147
|
+
* `undefined` means "this list picks out nothing" — the caller's cue to apply
|
|
148
|
+
* its own fallback, which is the part that genuinely differs between them: the
|
|
149
|
+
* LGV keeps a defaultSession's existing navigation, the circular view and a
|
|
150
|
+
* synteny row draw the whole assembly, and a dotplot axis is left as the
|
|
151
|
+
* regions autorun populated it.
|
|
152
|
+
*/
|
|
153
|
+
export function resolveNamedRegions({ regions, names, assemblyName, getCanonicalRefName, allRefNames, notify, }) {
|
|
154
|
+
const picked = selectNamedRegions(regions, names, getCanonicalRefName, allRefNames);
|
|
155
|
+
if (picked.length) {
|
|
156
|
+
return picked;
|
|
157
|
+
}
|
|
158
|
+
notify(`displayedRegionNames matched no regions in ${assemblyName}: ${names.join(', ')}`);
|
|
159
|
+
return undefined;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* How many regions an INTERACTIVE glob will open at once. Displaying a few
|
|
163
|
+
* hundred whole chromosomes is ordinary — GRCh38 with its alts and decoys is
|
|
164
|
+
* ~640 refNames, and showAllRegionsInAssembly lays out every one — so this sits
|
|
165
|
+
* well above any real chromosome set and well below a scaffold-level assembly's
|
|
166
|
+
* contig count. Past it the offer is WITHHELD, never truncated: a bulk action
|
|
167
|
+
* reading "all of them" that opens the first thousand is the one behaviour not
|
|
168
|
+
* worth having.
|
|
169
|
+
*
|
|
170
|
+
* `selectNamedRegions` itself is deliberately unbounded — see its docstring.
|
|
171
|
+
* The bound belongs to the surfaces a person types at, not to the resolver a
|
|
172
|
+
* session spec goes through, because only the former has a way to say "too
|
|
173
|
+
* many, narrow it" and only the latter is a written-down intention.
|
|
174
|
+
*/
|
|
175
|
+
export const MAX_GLOB_REGIONS = 1000;
|
|
176
|
+
/**
|
|
177
|
+
* The canonical refNames a search-box query picks out, in ASSEMBLY order.
|
|
178
|
+
*
|
|
179
|
+
* Shared by the dropdown's option list and by what Enter does, which is the
|
|
180
|
+
* whole point of it being one function: those two answer for the same typed
|
|
181
|
+
* text, and a surface-by-surface reading of one syntax is the split this file
|
|
182
|
+
* keeps being fixed for. A substring match (what the box has always done) and,
|
|
183
|
+
* when the text contains `*`, an anchored glob — union, never one instead of
|
|
184
|
+
* the other, since `*` is a legal refName character and a literal hit must
|
|
185
|
+
* survive the pattern reading of the same text.
|
|
186
|
+
*
|
|
187
|
+
* Matching runs over every name the assembly answers to, aliases included, and
|
|
188
|
+
* resolves hits to the canonical name — the name the view will display, and the
|
|
189
|
+
* same choice `searchRefNames` makes. Emitting by walking `regions` is what
|
|
190
|
+
* keeps assembly order rather than alias-file order.
|
|
191
|
+
*
|
|
192
|
+
* Bounded: matching stops one hit past `ceiling`, so a caller can tell "at the
|
|
193
|
+
* limit" from "under it" without the scan being unbounded.
|
|
194
|
+
*/
|
|
195
|
+
export function matchRefNames(assembly, inputValue, ceiling) {
|
|
196
|
+
const regions = assembly?.regions ?? [];
|
|
197
|
+
const query = inputValue.toLowerCase();
|
|
198
|
+
const glob = query.includes('*') ? globToRegExp(query) : undefined;
|
|
199
|
+
// getCanonicalRefName THROWS before aliases load, and is only ever reached
|
|
200
|
+
// for a name that came out of this list, which is empty in that state
|
|
201
|
+
const candidates = assembly?.allRefNames ?? [];
|
|
202
|
+
const hits = new Set();
|
|
203
|
+
for (const name of candidates) {
|
|
204
|
+
if (name.toLowerCase().includes(query) || glob?.test(name)) {
|
|
205
|
+
hits.add(assembly?.getCanonicalRefName(name) ?? name);
|
|
206
|
+
if (hits.size > ceiling) {
|
|
207
|
+
break;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
const out = [];
|
|
212
|
+
for (const { refName } of regions) {
|
|
213
|
+
if (hits.has(refName)) {
|
|
214
|
+
out.push(refName);
|
|
215
|
+
// every hit is placed, so nothing later in `regions` can match
|
|
216
|
+
if (out.length === hits.size) {
|
|
217
|
+
break;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
return out;
|
|
222
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare const complementTable: Record<string, string>;
|
|
2
|
+
export declare function revcom(str: string): string;
|
|
3
|
+
export declare function reverse(str: string): string;
|
|
4
|
+
export declare function complement(str: string): string;
|
|
5
|
+
export type Frame = 1 | 2 | 3 | -1 | -2 | -3;
|
|
6
|
+
export declare function getFrame(start: number, end: number, strand: 1 | -1, phase: 0 | 1 | 2): Frame;
|
|
7
|
+
/**
|
|
8
|
+
* The start codon the sequence track highlights. Deliberately NOT
|
|
9
|
+
* `getGeneticCode(1).starts`, which is `['TTG','CTG','ATG']` — NCBI marks the
|
|
10
|
+
* alternative initiators, but highlighting every TTG and CTG in a reference
|
|
11
|
+
* sequence would be noise. This is a display convention, not the genetic code.
|
|
12
|
+
*/
|
|
13
|
+
export declare const defaultStarts: string[];
|
|
14
|
+
export declare function stitch(subfeats: {
|
|
15
|
+
start: number;
|
|
16
|
+
end: number;
|
|
17
|
+
}[], sequence: string): string;
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
// from bioperl: tr/acgtrymkswhbvdnxACGTRYMKSWHBVDNX/tgcayrkmswdvbhnxTGCAYRKMSWDVBHNX/
|
|
2
|
+
// generated with:
|
|
3
|
+
// perl -MJSON -E '@l = split "","acgtrymkswhbvdnxACGTRYMKSWHBVDNX"; print to_json({ map { my $in = $_; tr/acgtrymkswhbvdnxACGTRYMKSWHBVDNX/tgcayrkmswdvbhnxTGCAYRKMSWDVBHNX/; $in => $_ } @l})'
|
|
4
|
+
export const complementTable = {
|
|
5
|
+
S: 'S',
|
|
6
|
+
w: 'w',
|
|
7
|
+
T: 'A',
|
|
8
|
+
r: 'y',
|
|
9
|
+
a: 't',
|
|
10
|
+
N: 'N',
|
|
11
|
+
K: 'M',
|
|
12
|
+
x: 'x',
|
|
13
|
+
d: 'h',
|
|
14
|
+
Y: 'R',
|
|
15
|
+
V: 'B',
|
|
16
|
+
y: 'r',
|
|
17
|
+
M: 'K',
|
|
18
|
+
h: 'd',
|
|
19
|
+
k: 'm',
|
|
20
|
+
C: 'G',
|
|
21
|
+
g: 'c',
|
|
22
|
+
t: 'a',
|
|
23
|
+
A: 'T',
|
|
24
|
+
n: 'n',
|
|
25
|
+
W: 'W',
|
|
26
|
+
X: 'X',
|
|
27
|
+
m: 'k',
|
|
28
|
+
v: 'b',
|
|
29
|
+
B: 'V',
|
|
30
|
+
s: 's',
|
|
31
|
+
H: 'D',
|
|
32
|
+
c: 'g',
|
|
33
|
+
D: 'H',
|
|
34
|
+
b: 'v',
|
|
35
|
+
R: 'Y',
|
|
36
|
+
G: 'C',
|
|
37
|
+
};
|
|
38
|
+
export function revcom(str) {
|
|
39
|
+
const n = str.length;
|
|
40
|
+
const arr = new Array(n);
|
|
41
|
+
for (let i = 0; i < n; i++) {
|
|
42
|
+
const c = str[n - 1 - i];
|
|
43
|
+
arr[i] = complementTable[c] ?? c;
|
|
44
|
+
}
|
|
45
|
+
return arr.join('');
|
|
46
|
+
}
|
|
47
|
+
export function reverse(str) {
|
|
48
|
+
// index loop rather than [...str] spread: sequences can be large and the
|
|
49
|
+
// spread's code-point iterator is markedly slower than raw UTF-16 access
|
|
50
|
+
const n = str.length;
|
|
51
|
+
const arr = new Array(n);
|
|
52
|
+
for (let i = 0; i < n; i++) {
|
|
53
|
+
arr[i] = str[n - 1 - i];
|
|
54
|
+
}
|
|
55
|
+
return arr.join('');
|
|
56
|
+
}
|
|
57
|
+
export function complement(str) {
|
|
58
|
+
const n = str.length;
|
|
59
|
+
const arr = new Array(n);
|
|
60
|
+
for (let i = 0; i < n; i++) {
|
|
61
|
+
const c = str[i];
|
|
62
|
+
arr[i] = complementTable[c] ?? c;
|
|
63
|
+
}
|
|
64
|
+
return arr.join('');
|
|
65
|
+
}
|
|
66
|
+
export function getFrame(start, end, strand, phase) {
|
|
67
|
+
return strand === 1
|
|
68
|
+
? (((start + phase) % 3) + 1)
|
|
69
|
+
: (-1 * ((end - phase) % 3) - 1);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* The start codon the sequence track highlights. Deliberately NOT
|
|
73
|
+
* `getGeneticCode(1).starts`, which is `['TTG','CTG','ATG']` — NCBI marks the
|
|
74
|
+
* alternative initiators, but highlighting every TTG and CTG in a reference
|
|
75
|
+
* sequence would be noise. This is a display convention, not the genetic code.
|
|
76
|
+
*/
|
|
77
|
+
export const defaultStarts = ['ATG'];
|
|
78
|
+
export function stitch(subfeats, sequence) {
|
|
79
|
+
return subfeats.map(sub => sequence.slice(sub.start, sub.end)).join('');
|
|
80
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { DialogHost, NotificationSink, PaletteHost, RpcHost, SessionServices } from './types/services.ts';
|
|
2
|
+
import type { IAnyStateTreeNode } from '@jbrowse/mobx-state-tree';
|
|
3
|
+
/**
|
|
4
|
+
* #api core/util
|
|
5
|
+
* The services a session offers that cost nothing application-shaped to name.
|
|
6
|
+
* Prefer one of the narrower accessors below, which say which of them the
|
|
7
|
+
* calling module actually uses.
|
|
8
|
+
*/
|
|
9
|
+
export declare function getSessionServices(node: IAnyStateTreeNode): SessionServices;
|
|
10
|
+
/**
|
|
11
|
+
* #api core/util
|
|
12
|
+
* The host's RPC entry point, for a module that issues RPCs and nothing else.
|
|
13
|
+
*/
|
|
14
|
+
export declare function getRpcHost(node: IAnyStateTreeNode): RpcHost;
|
|
15
|
+
/**
|
|
16
|
+
* #api core/util
|
|
17
|
+
* Where a display puts a message it cannot draw itself.
|
|
18
|
+
*/
|
|
19
|
+
export declare function getNotificationSink(node: IAnyStateTreeNode): NotificationSink;
|
|
20
|
+
/**
|
|
21
|
+
* #api core/util
|
|
22
|
+
* Where a display puts a dialog it cannot mount itself.
|
|
23
|
+
*/
|
|
24
|
+
export declare function getDialogHost(node: IAnyStateTreeNode): DialogHost;
|
|
25
|
+
/**
|
|
26
|
+
* #api core/util
|
|
27
|
+
* The colors to draw with, and the args that rebuild them in a worker.
|
|
28
|
+
*/
|
|
29
|
+
export declare function getPaletteHost(node: IAnyStateTreeNode): PaletteHost;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { cachedParent, findParentThatIs } from './parentWalk.js';
|
|
2
|
+
import { isSessionServices } from './types/services.js';
|
|
3
|
+
// `getSession(self).notify(...)` and `getNotificationSink(self).notify(...)`
|
|
4
|
+
// find the same object; the difference is what the calling module then has in
|
|
5
|
+
// its type graph, which is the whole session interface in the first case and
|
|
6
|
+
// four function signatures in the second. The return annotations are therefore
|
|
7
|
+
// deliberate rather than inferred — widening one back to `SessionServices`
|
|
8
|
+
// would undo the point of the accessor.
|
|
9
|
+
const sessionServicesCache = new WeakMap();
|
|
10
|
+
/**
|
|
11
|
+
* #api core/util
|
|
12
|
+
* The services a session offers that cost nothing application-shaped to name.
|
|
13
|
+
* Prefer one of the narrower accessors below, which say which of them the
|
|
14
|
+
* calling module actually uses.
|
|
15
|
+
*/
|
|
16
|
+
export function getSessionServices(node) {
|
|
17
|
+
return cachedParent(sessionServicesCache, node, () => findParentThatIs(node, isSessionServices), 'no session model found!');
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* #api core/util
|
|
21
|
+
* The host's RPC entry point, for a module that issues RPCs and nothing else.
|
|
22
|
+
*/
|
|
23
|
+
export function getRpcHost(node) {
|
|
24
|
+
return getSessionServices(node);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* #api core/util
|
|
28
|
+
* Where a display puts a message it cannot draw itself.
|
|
29
|
+
*/
|
|
30
|
+
export function getNotificationSink(node) {
|
|
31
|
+
return getSessionServices(node);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* #api core/util
|
|
35
|
+
* Where a display puts a dialog it cannot mount itself.
|
|
36
|
+
*/
|
|
37
|
+
export function getDialogHost(node) {
|
|
38
|
+
return getSessionServices(node);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* #api core/util
|
|
42
|
+
* The colors to draw with, and the args that rebuild them in a worker.
|
|
43
|
+
*/
|
|
44
|
+
export function getPaletteHost(node) {
|
|
45
|
+
return getSessionServices(node);
|
|
46
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export declare function b64PadSuffix(b64: string): string;
|
|
2
|
+
/**
|
|
3
|
+
* Decode and inflate a url-safe base64 to a string
|
|
4
|
+
* See {@link https://en.wikipedia.org/wiki/Base64#URL_applications}
|
|
5
|
+
*/
|
|
6
|
+
export declare function fromUrlSafeB64(b64: string): Promise<string>;
|
|
7
|
+
/**
|
|
8
|
+
* Compress and encode a string as url-safe base64
|
|
9
|
+
* See {@link https://en.wikipedia.org/wiki/Base64#URL_applications}
|
|
10
|
+
*/
|
|
11
|
+
export declare function toUrlSafeB64(str: string): Promise<string>;
|
|
12
|
+
/**
|
|
13
|
+
* The `?session=` value prefixes, named here because this module is what
|
|
14
|
+
* produces them. The decoder half (jbrowse-web's SessionLoader) has its own
|
|
15
|
+
* list covering the two prefixes nothing here writes (`spec-`, `local-`).
|
|
16
|
+
*/
|
|
17
|
+
export declare const SHARE_PREFIX = "share-";
|
|
18
|
+
export declare const ENCODED_PREFIX = "encoded-";
|
|
19
|
+
export declare const JSON_PREFIX = "json-";
|
|
20
|
+
/**
|
|
21
|
+
* Joins a configured `shareURL` with one of the share service's two endpoints.
|
|
22
|
+
* A plain `${shareURL}share` silently produced `https://host/api/v1share` for
|
|
23
|
+
* the (natural) configured value without a trailing slash, and the 404 that
|
|
24
|
+
* followed read as "the share service is down". An empty shareURL is left
|
|
25
|
+
* alone: web honors an explicit empty string as "resolve relative to the page".
|
|
26
|
+
*/
|
|
27
|
+
export declare function shareEndpoint(shareURL: string, path: 'share' | 'load'): string;
|
|
28
|
+
export type SessionShareMode = 'short' | 'long' | 'json';
|
|
29
|
+
export interface EncodedSessionParam {
|
|
30
|
+
sessionParam: string;
|
|
31
|
+
password?: string;
|
|
32
|
+
plaintext?: string;
|
|
33
|
+
}
|
|
34
|
+
export declare function encodeSessionParam(mode: SessionShareMode, session: unknown, options: {
|
|
35
|
+
shareURL: string;
|
|
36
|
+
referer: string;
|
|
37
|
+
}): Promise<EncodedSessionParam>;
|
|
38
|
+
export declare function readSessionFromDynamo(loadUrl: string, sessionQueryParam: string, password: string, signal?: AbortSignal): Promise<string>;
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { aesDecrypt, aesEncrypt } from './crypto.js';
|
|
2
|
+
function bytesToBinaryString(bytes) {
|
|
3
|
+
return Array.from(bytes, b => String.fromCharCode(b)).join('');
|
|
4
|
+
}
|
|
5
|
+
// from https://stackoverflow.com/questions/1349404/
|
|
6
|
+
// crypto.getRandomValues is available in non-secure contexts per MDN,
|
|
7
|
+
// unlike crypto.subtle which requires HTTPS.
|
|
8
|
+
function generateUID(length) {
|
|
9
|
+
return window
|
|
10
|
+
.btoa(bytesToBinaryString(crypto.getRandomValues(new Uint8Array(length * 2))))
|
|
11
|
+
.replaceAll(/[+/]/g, '')
|
|
12
|
+
.slice(0, length);
|
|
13
|
+
}
|
|
14
|
+
function getErrorMsg(err) {
|
|
15
|
+
try {
|
|
16
|
+
const obj = JSON.parse(err);
|
|
17
|
+
return obj.message ?? err;
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return err;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export function b64PadSuffix(b64) {
|
|
24
|
+
let num;
|
|
25
|
+
const mo = b64.length % 4;
|
|
26
|
+
switch (mo) {
|
|
27
|
+
case 3:
|
|
28
|
+
num = 1;
|
|
29
|
+
break;
|
|
30
|
+
case 2:
|
|
31
|
+
num = 2;
|
|
32
|
+
break;
|
|
33
|
+
case 0:
|
|
34
|
+
num = 0;
|
|
35
|
+
break;
|
|
36
|
+
default:
|
|
37
|
+
throw new Error('Illegal base64url string!');
|
|
38
|
+
}
|
|
39
|
+
return b64 + '='.repeat(num);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Decode and inflate a url-safe base64 to a string
|
|
43
|
+
* See {@link https://en.wikipedia.org/wiki/Base64#URL_applications}
|
|
44
|
+
*/
|
|
45
|
+
export async function fromUrlSafeB64(b64) {
|
|
46
|
+
const originalB64 = b64PadSuffix(b64.replaceAll('-', '+').replaceAll('_', '/'));
|
|
47
|
+
const { inflate } = await import('pako-esm2');
|
|
48
|
+
const bytes = Uint8Array.from(atob(originalB64), c => c.charCodeAt(0));
|
|
49
|
+
const inflated = inflate(bytes, undefined);
|
|
50
|
+
return new TextDecoder('utf8').decode(inflated);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Compress and encode a string as url-safe base64
|
|
54
|
+
* See {@link https://en.wikipedia.org/wiki/Base64#URL_applications}
|
|
55
|
+
*/
|
|
56
|
+
export async function toUrlSafeB64(str) {
|
|
57
|
+
const bytes = new TextEncoder().encode(str);
|
|
58
|
+
const { deflate } = await import('pako-esm2');
|
|
59
|
+
const deflated = deflate(bytes, undefined);
|
|
60
|
+
const encoded = btoa(bytesToBinaryString(deflated)).replace(/=+$/, '');
|
|
61
|
+
return encoded.replaceAll('+', '-').replaceAll('/', '_');
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* The `?session=` value prefixes, named here because this module is what
|
|
65
|
+
* produces them. The decoder half (jbrowse-web's SessionLoader) has its own
|
|
66
|
+
* list covering the two prefixes nothing here writes (`spec-`, `local-`).
|
|
67
|
+
*/
|
|
68
|
+
export const SHARE_PREFIX = 'share-';
|
|
69
|
+
export const ENCODED_PREFIX = 'encoded-';
|
|
70
|
+
export const JSON_PREFIX = 'json-';
|
|
71
|
+
/**
|
|
72
|
+
* Joins a configured `shareURL` with one of the share service's two endpoints.
|
|
73
|
+
* A plain `${shareURL}share` silently produced `https://host/api/v1share` for
|
|
74
|
+
* the (natural) configured value without a trailing slash, and the 404 that
|
|
75
|
+
* followed read as "the share service is down". An empty shareURL is left
|
|
76
|
+
* alone: web honors an explicit empty string as "resolve relative to the page".
|
|
77
|
+
*/
|
|
78
|
+
export function shareEndpoint(shareURL, path) {
|
|
79
|
+
return shareURL && !shareURL.endsWith('/')
|
|
80
|
+
? `${shareURL}/${path}`
|
|
81
|
+
: `${shareURL}${path}`;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* writes the encrypted session, current datetime, and referer to DynamoDB
|
|
85
|
+
*/
|
|
86
|
+
async function shareSessionToDynamo(session, shareURL, referer) {
|
|
87
|
+
const sess = await toUrlSafeB64(JSON.stringify(session));
|
|
88
|
+
const password = generateUID(5);
|
|
89
|
+
const data = new FormData();
|
|
90
|
+
data.append('session', await aesEncrypt(sess, password));
|
|
91
|
+
data.append('dateShared', `${Date.now()}`);
|
|
92
|
+
data.append('referer', referer);
|
|
93
|
+
const response = await fetch(shareEndpoint(shareURL, 'share'), {
|
|
94
|
+
method: 'POST',
|
|
95
|
+
mode: 'cors',
|
|
96
|
+
body: data,
|
|
97
|
+
});
|
|
98
|
+
if (!response.ok) {
|
|
99
|
+
throw new Error(getErrorMsg(await response.text()));
|
|
100
|
+
}
|
|
101
|
+
const { sessionId } = (await response.json());
|
|
102
|
+
return { sessionId, password };
|
|
103
|
+
}
|
|
104
|
+
// Encodes a session snapshot into the `?session=` value jbrowse-web decodes:
|
|
105
|
+
// `share-<id>` (uploaded + encrypted), `encoded-<b64>` (compressed inline), or
|
|
106
|
+
// `json-<json>` (plaintext inline). Single source of these prefixes, shared by
|
|
107
|
+
// jbrowse-web's ShareDialog and jbrowse-desktop's ExportToWebDialog so the two
|
|
108
|
+
// producers can't drift from the decoder.
|
|
109
|
+
export async function encodeSessionParam(mode, session, options) {
|
|
110
|
+
if (mode === 'short') {
|
|
111
|
+
const { sessionId, password } = await shareSessionToDynamo(session, options.shareURL, options.referer);
|
|
112
|
+
return { sessionParam: `${SHARE_PREFIX}${sessionId}`, password };
|
|
113
|
+
}
|
|
114
|
+
else if (mode === 'json') {
|
|
115
|
+
// compact in the link (this mode's URL is the longest of the three
|
|
116
|
+
// already), indented in the dialog's readable-JSON panel
|
|
117
|
+
return {
|
|
118
|
+
sessionParam: `${JSON_PREFIX}${JSON.stringify({ session })}`,
|
|
119
|
+
plaintext: JSON.stringify({ session }, null, 2),
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
const encoded = await toUrlSafeB64(JSON.stringify(session));
|
|
124
|
+
return { sessionParam: `${ENCODED_PREFIX}${encoded}` };
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
export async function readSessionFromDynamo(loadUrl, sessionQueryParam, password, signal) {
|
|
128
|
+
const sessionId = sessionQueryParam.startsWith(SHARE_PREFIX)
|
|
129
|
+
? sessionQueryParam.slice(SHARE_PREFIX.length)
|
|
130
|
+
: sessionQueryParam;
|
|
131
|
+
// The password never reaches the server — it lives only in the link — so a
|
|
132
|
+
// link that lost its `&password=` (a chat client that clipped the URL, a
|
|
133
|
+
// hand-edited link) fetches fine and then fails in the cipher, where the
|
|
134
|
+
// browser's message is "The operation failed for an operation-specific
|
|
135
|
+
// reason". Say what actually went wrong instead.
|
|
136
|
+
if (!password) {
|
|
137
|
+
throw new Error('This shared session link is missing its "password" URL parameter, which is the only thing that can decrypt it');
|
|
138
|
+
}
|
|
139
|
+
const url = `${loadUrl}?sessionId=${encodeURIComponent(sessionId)}`;
|
|
140
|
+
const response = await fetch(url, { signal });
|
|
141
|
+
if (!response.ok) {
|
|
142
|
+
throw new Error(getErrorMsg(await response.text()));
|
|
143
|
+
}
|
|
144
|
+
const json = (await response.json());
|
|
145
|
+
if (typeof json.session !== 'string') {
|
|
146
|
+
throw new Error('Shared session not found — the link may have expired or the id is wrong');
|
|
147
|
+
}
|
|
148
|
+
try {
|
|
149
|
+
return await aesDecrypt(json.session, password);
|
|
150
|
+
}
|
|
151
|
+
catch (e) {
|
|
152
|
+
throw new Error('Could not decrypt the shared session — the "password" in the link is wrong or the link was truncated', { cause: e });
|
|
153
|
+
}
|
|
154
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const sessionStorageAvailable: () => boolean, sessionStorageGetItem: (key: string) => string | undefined, sessionStorageSetItem: (key: string, value: string) => boolean, sessionStorageRemoveItem: (key: string) => boolean;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// sessionStorage, guarded exactly as localStorage is — see webStorage.ts for
|
|
2
|
+
// the three ways a Web Storage store fails.
|
|
3
|
+
//
|
|
4
|
+
// This store holds the internet-account access tokens, which is a per-tab cache
|
|
5
|
+
// of something the user can always be asked for again. So a store that refuses
|
|
6
|
+
// to be read or written costs an extra auth prompt, and a throw out of
|
|
7
|
+
// `storeToken` takes the whole auth flow down instead — in the embedded
|
|
8
|
+
// products, on someone else's page, which is where third-party storage is
|
|
9
|
+
// blocked in the first place.
|
|
10
|
+
//
|
|
11
|
+
// Deliberately no `sessionStorageSetJSON` / `…GetJSON` twins: jbrowse-web's
|
|
12
|
+
// session mirror is the other caller, and it *wants* the quota throw so it can
|
|
13
|
+
// tell the user its autosave has stopped working.
|
|
14
|
+
import { guardedSessionStorage } from './webStorage.js';
|
|
15
|
+
export const { available: sessionStorageAvailable, getItem: sessionStorageGetItem, setItem: sessionStorageSetItem, removeItem: sessionStorageRemoveItem, } = guardedSessionStorage;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// V8 records only the top 10 frames of any Error by default, and the RPC,
|
|
2
|
+
// React and MST plumbing can consume all 10 before reaching JBrowse code —
|
|
3
|
+
// truncating bug reports right above the actual fault. 50 gets through the
|
|
4
|
+
// wrappers. Costs ~34µs extra per Error constructed, which is irrelevant here:
|
|
5
|
+
// JBrowse throws exceptionally, not as control flow (MST's typecheck failures
|
|
6
|
+
// are plain objects, not Errors).
|
|
7
|
+
//
|
|
8
|
+
// Only *applications* should call this. It mutates a global, so the embeddable
|
|
9
|
+
// products (@jbrowse/react-app, react-linear-genome-view, ...) must not impose
|
|
10
|
+
// it on their host page. Worker entry points are fair game: that scope is ours,
|
|
11
|
+
// and a worker error's stack is captured in the worker, so the limit has to be
|
|
12
|
+
// raised there to have any effect on it.
|
|
13
|
+
//
|
|
14
|
+
// No-op outside V8 — firefox and safari have no equivalent knob and ignore the
|
|
15
|
+
// assignment.
|
|
16
|
+
export function setStackTraceLimit() {
|
|
17
|
+
// setting this V8-only property is the entire point; engines without it ignore it
|
|
18
|
+
// eslint-disable-next-line unicorn/no-nonstandard-builtin-properties
|
|
19
|
+
Error.stackTraceLimit = 50;
|
|
20
|
+
}
|