@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,13 +1,6 @@
|
|
|
1
1
|
import RpcMethodType from '../../pluggableElementTypes/RpcMethodType.ts';
|
|
2
|
-
import type {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
serializeArguments(args: RenderArgs, rpcDriver: string): Promise<RenderArgs>;
|
|
7
|
-
execute(args: {
|
|
8
|
-
sessionId: string;
|
|
9
|
-
region: Region;
|
|
10
|
-
adapterConfig: Record<string, unknown>;
|
|
11
|
-
stopToken?: string;
|
|
12
|
-
}, rpcDriver: string): Promise<string | undefined>;
|
|
2
|
+
import type { RpcExecuteArgs } from '../RpcRegistry.ts';
|
|
3
|
+
export default class CoreGetSequence extends RpcMethodType<'CoreGetSequence'> {
|
|
4
|
+
name: 'CoreGetSequence';
|
|
5
|
+
execute(args: RpcExecuteArgs<'CoreGetSequence'>): Promise<string | undefined>;
|
|
13
6
|
}
|
|
@@ -1,17 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import
|
|
1
|
+
import { isSequenceAdapter } from '../../data_adapters/BaseAdapter/index.js';
|
|
2
|
+
import { getAdapter } from '../../data_adapters/dataAdapterCache.js';
|
|
3
|
+
import RpcMethodType from '../../pluggableElementTypes/RpcMethodType.js';
|
|
4
|
+
// CoreGetSequence takes a single region whose refName fetchSeq() has already
|
|
5
|
+
// resolved to the sequence adapter's name, so no region renaming is needed here
|
|
4
6
|
export default class CoreGetSequence extends RpcMethodType {
|
|
5
7
|
name = 'CoreGetSequence';
|
|
6
|
-
async
|
|
7
|
-
const {
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const { stopToken, sessionId, adapterConfig, region } = await this.deserializeArguments(args, rpcDriver);
|
|
14
|
-
const dataAdapter = (await getAdapter(this.pluginManager, sessionId, adapterConfig)).dataAdapter;
|
|
15
|
-
return dataAdapter.getSequence(region, { stopToken });
|
|
8
|
+
async execute(args) {
|
|
9
|
+
const { stopToken, statusCallback, sessionId, adapterConfig, region } = args;
|
|
10
|
+
const { dataAdapter } = await getAdapter(this.pluginManager, sessionId, adapterConfig);
|
|
11
|
+
if (!isSequenceAdapter(dataAdapter)) {
|
|
12
|
+
throw new Error('Adapter does not support retrieving sequences');
|
|
13
|
+
}
|
|
14
|
+
return dataAdapter.getSequence(region, { stopToken, statusCallback });
|
|
16
15
|
}
|
|
17
16
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface ErrorObject {
|
|
2
|
+
name?: string;
|
|
3
|
+
message: string;
|
|
4
|
+
stack?: string;
|
|
5
|
+
cause?: unknown;
|
|
6
|
+
[key: string]: unknown;
|
|
7
|
+
}
|
|
8
|
+
export declare function serializeError(value: unknown): ErrorObject;
|
|
9
|
+
export declare function deserializeError(value: unknown): Error;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
// Error's core fields (name/message/stack) are non-enumerable, so they're
|
|
2
|
+
// copied explicitly; `cause` is non-enumerable too and recursed separately. Any
|
|
3
|
+
// other own-enumerable props (AuthNeededError.url, a Node-style .code, etc.) are
|
|
4
|
+
// copied generically so custom error data survives the worker boundary.
|
|
5
|
+
const coreProperties = new Set(['name', 'message', 'stack', 'cause']);
|
|
6
|
+
function stringify(value) {
|
|
7
|
+
if (typeof value === 'string') {
|
|
8
|
+
return value;
|
|
9
|
+
}
|
|
10
|
+
// JSON.stringify returns undefined (not a string) for undefined, functions,
|
|
11
|
+
// and symbols, despite its type signature claiming otherwise
|
|
12
|
+
if (value === undefined ||
|
|
13
|
+
typeof value === 'function' ||
|
|
14
|
+
typeof value === 'symbol') {
|
|
15
|
+
return String(value);
|
|
16
|
+
}
|
|
17
|
+
try {
|
|
18
|
+
return JSON.stringify(value);
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return String(value);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function isSerializedError(value) {
|
|
25
|
+
return (!!value &&
|
|
26
|
+
typeof value === 'object' &&
|
|
27
|
+
!Array.isArray(value) &&
|
|
28
|
+
typeof value.message === 'string');
|
|
29
|
+
}
|
|
30
|
+
function errorToObject(error, seen) {
|
|
31
|
+
const obj = {
|
|
32
|
+
name: error.name,
|
|
33
|
+
message: error.message,
|
|
34
|
+
stack: error.stack,
|
|
35
|
+
};
|
|
36
|
+
// copy custom own-enumerable data (url, code, ...); skip functions since they
|
|
37
|
+
// aren't structured-cloneable and postMessage would throw on them
|
|
38
|
+
for (const [key, value] of Object.entries(error)) {
|
|
39
|
+
if (!coreProperties.has(key) && typeof value !== 'function') {
|
|
40
|
+
obj[key] = value;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
const { cause } = error;
|
|
44
|
+
if (cause !== undefined && !seen.has(cause)) {
|
|
45
|
+
seen.add(cause);
|
|
46
|
+
obj.cause = cause instanceof Error ? errorToObject(cause, seen) : cause;
|
|
47
|
+
}
|
|
48
|
+
return obj;
|
|
49
|
+
}
|
|
50
|
+
export function serializeError(value) {
|
|
51
|
+
if (value instanceof Error) {
|
|
52
|
+
return errorToObject(value, new Set([value]));
|
|
53
|
+
}
|
|
54
|
+
// a thrown non-Error value (string, object, ...) still travels as an Error so
|
|
55
|
+
// the other side can reject with something error-shaped
|
|
56
|
+
return { name: 'NonError', message: stringify(value) };
|
|
57
|
+
}
|
|
58
|
+
export function deserializeError(value) {
|
|
59
|
+
if (value instanceof Error) {
|
|
60
|
+
return value;
|
|
61
|
+
}
|
|
62
|
+
if (typeof value === 'string') {
|
|
63
|
+
return new Error(value);
|
|
64
|
+
}
|
|
65
|
+
if (isSerializedError(value)) {
|
|
66
|
+
// reconstructed as a plain Error carrying the original name (nothing in the
|
|
67
|
+
// app branches on `instanceof TypeError` etc. across the worker boundary)
|
|
68
|
+
const error = new Error(value.message);
|
|
69
|
+
error.name = value.name ?? 'Error';
|
|
70
|
+
if (value.stack) {
|
|
71
|
+
error.stack = value.stack;
|
|
72
|
+
}
|
|
73
|
+
for (const [key, val] of Object.entries(value)) {
|
|
74
|
+
if (!coreProperties.has(key)) {
|
|
75
|
+
error[key] = val;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
if (value.cause !== undefined) {
|
|
79
|
+
error.cause = isSerializedError(value.cause)
|
|
80
|
+
? deserializeError(value.cause)
|
|
81
|
+
: value.cause;
|
|
82
|
+
}
|
|
83
|
+
return error;
|
|
84
|
+
}
|
|
85
|
+
return new Error(stringify(value));
|
|
86
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export declare function SVGBackground({ width, height, }: {
|
|
2
|
+
width: number;
|
|
3
|
+
height: number;
|
|
4
|
+
}): import("react").JSX.Element;
|
|
5
|
+
export declare function SVGExportRoot({ width, height, margin, fontFamily, children, }: {
|
|
6
|
+
width: number;
|
|
7
|
+
height: number;
|
|
8
|
+
margin?: number;
|
|
9
|
+
fontFamily?: string;
|
|
10
|
+
children: React.ReactNode;
|
|
11
|
+
}): import("react").JSX.Element;
|
|
12
|
+
export declare function SVGMessageBox({ message, width, height, }: {
|
|
13
|
+
message: string;
|
|
14
|
+
width: number;
|
|
15
|
+
height: number;
|
|
16
|
+
}): import("react").JSX.Element;
|
|
17
|
+
export declare function SvgChrome({ regionTooLarge, width, height, children, }: {
|
|
18
|
+
regionTooLarge?: boolean;
|
|
19
|
+
width: number;
|
|
20
|
+
height: number;
|
|
21
|
+
children: React.ReactNode;
|
|
22
|
+
}): import("react").JSX.Element;
|
|
23
|
+
export declare function SvgClipRect({ id, x, y, width, height, children, }: {
|
|
24
|
+
id: string;
|
|
25
|
+
x?: number;
|
|
26
|
+
y?: number;
|
|
27
|
+
width: number;
|
|
28
|
+
height: number;
|
|
29
|
+
children: React.ReactNode;
|
|
30
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
// Reusable SVG-export building blocks, usable by any plugin without pulling in
|
|
3
|
+
// the linear-genome-view plugin. Non-component members live in sibling files
|
|
4
|
+
// (`constants.ts`, `svgReady.ts`) so this stays component-only for
|
|
5
|
+
// react-refresh.
|
|
6
|
+
import { useTheme } from '@mui/material';
|
|
7
|
+
import { stripAlpha } from '../util/index.js';
|
|
8
|
+
import { exportMargin } from './constants.js';
|
|
9
|
+
import { svgSafeId } from './svgId.js';
|
|
10
|
+
// Full-bleed background rect. `width`/`height` are the *total* SVG dimensions.
|
|
11
|
+
export function SVGBackground({ width, height, }) {
|
|
12
|
+
const theme = useTheme();
|
|
13
|
+
return (_jsx("rect", { width: width, height: height, fill: stripAlpha(theme.palette.background.default) }));
|
|
14
|
+
}
|
|
15
|
+
// Root <svg> for an image export. Owns the xmlns/viewBox boilerplate, widens
|
|
16
|
+
// the canvas by `margin` on each side, and paints the themed background.
|
|
17
|
+
// `width`/`height` are the content dimensions (the rendered canvas is
|
|
18
|
+
// `width + margin * 2` wide); views translate their content by `margin` to sit
|
|
19
|
+
// inside the gutter.
|
|
20
|
+
export function SVGExportRoot({ width, height, margin = exportMargin, fontFamily, children, }) {
|
|
21
|
+
const totalWidth = width + margin * 2;
|
|
22
|
+
return (_jsxs("svg", { width: totalWidth, height: height, xmlns: "http://www.w3.org/2000/svg", xmlnsXlink: "http://www.w3.org/1999/xlink", viewBox: `0 0 ${totalWidth} ${height}`, fontFamily: fontFamily ? fontFamily : undefined, children: [_jsx(SVGBackground, { width: totalWidth, height: height }), children] }));
|
|
23
|
+
}
|
|
24
|
+
// Informational box for a soft terminal state (region too large). Keeps the
|
|
25
|
+
// track's reserved height and labels a state that would otherwise export as a
|
|
26
|
+
// silent blank.
|
|
27
|
+
//
|
|
28
|
+
// There is deliberately no error counterpart. A failed track fails the export
|
|
29
|
+
// (`throwOnExportErrors`) rather than painting its error into the figure, so the
|
|
30
|
+
// only terminal an export draws is one the user asked for by zooming out.
|
|
31
|
+
export function SVGMessageBox({ message, width, height, }) {
|
|
32
|
+
return (_jsxs(_Fragment, { children: [_jsx("rect", { x: 0, y: 0, width: width, height: height, fill: "#f2f2f2" }), _jsx("text", { x: 10, y: height / 2, fill: "#555555", fontSize: 14, children: message })] }));
|
|
33
|
+
}
|
|
34
|
+
// SVG-export counterpart of DisplayChrome (BaseLinearDisplay/components): the
|
|
35
|
+
// terminal-state gate every display's `renderSvg` ends in. It renders the
|
|
36
|
+
// terminal state itself — a "region too large" message — and only paints the
|
|
37
|
+
// children when the display has renderable data. The body is an ordinary child
|
|
38
|
+
// component, so it never runs in a terminal state and no `renderSvg` re-detects
|
|
39
|
+
// one from empty/absent data. The readiness wait stays an explicit
|
|
40
|
+
// `await awaitSvgReady(model)` in each `renderSvg` (the one genuinely async
|
|
41
|
+
// step), so this component is sync.
|
|
42
|
+
//
|
|
43
|
+
// One terminal, not two, and the asymmetry is the point: over-budget is a state
|
|
44
|
+
// the user navigated to on purpose, and a figure saying so is the honest export
|
|
45
|
+
// of it. A fetch that failed is not — it is the export being unable to answer,
|
|
46
|
+
// which `throwOnExportErrors` reports by failing rather than by drawing.
|
|
47
|
+
export function SvgChrome({ regionTooLarge, width, height, children, }) {
|
|
48
|
+
return regionTooLarge ? (_jsx(SVGMessageBox, { message: "Region too large to render", width: width, height: height })) : (_jsx(_Fragment, { children: children }));
|
|
49
|
+
}
|
|
50
|
+
export function SvgClipRect({ id, x = 0, y = 0, width, height, children, }) {
|
|
51
|
+
const safeId = svgSafeId(id);
|
|
52
|
+
return (_jsxs(_Fragment, { children: [_jsx("defs", { children: _jsx("clipPath", { id: safeId, children: _jsx("rect", { x: x, y: y, width: width, height: height }) }) }), _jsx("g", { clipPath: `url(#${safeId})`, children: children })] }));
|
|
53
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const exportMargin = 50;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
// Fixed horizontal gutter (CSS px) added to the left and right of every image
|
|
2
|
+
// export, giving ruler ticks and track-label backgrounds room to bleed past
|
|
3
|
+
// the genome content area. Lives apart from `SvgExport.tsx` so that file stays
|
|
4
|
+
// component-only for react-refresh.
|
|
5
|
+
export const exportMargin = 50;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export interface SaveSvgAsImageOptions {
|
|
2
|
+
format?: string;
|
|
3
|
+
filename?: string;
|
|
4
|
+
}
|
|
5
|
+
export declare function svgHtmlToPngBlob(html: string, scale?: number): Promise<Blob>;
|
|
6
|
+
export declare function saveSvgAsImage(html: string, opts?: SaveSvgAsImageOptions): Promise<void>;
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { saveAs } from '../util/FileSaver/index.js';
|
|
2
|
+
// Supersample factor for PNG rasterization. The vector text/gridlines/rulers
|
|
3
|
+
// rasterize crisply at this scale, and the heavy track layers are already
|
|
4
|
+
// embedded as 2× rasters (see createSvgRasterCanvas), so a 1× output canvas
|
|
5
|
+
// would otherwise *downsample* them back to screen resolution. Kept at 2× to
|
|
6
|
+
// match that embedded DPR: a higher factor sharpens vector text further but
|
|
7
|
+
// upscales the 2× rasters (blur), and inflates the canvas toward browser size
|
|
8
|
+
// limits.
|
|
9
|
+
const PNG_SCALE = 2;
|
|
10
|
+
// Bump the root <svg> width/height by `scale` while leaving viewBox alone, so
|
|
11
|
+
// the browser re-rasterizes the *vector* content natively at the higher
|
|
12
|
+
// resolution. Drawing the unscaled <img> with drawImage(...,w*scale,h*scale)
|
|
13
|
+
// instead would only stretch the 1×-rasterized bitmap (blurry text, resample
|
|
14
|
+
// artifacts on the embedded rasters).
|
|
15
|
+
function scaleSvgMarkup(html, scale) {
|
|
16
|
+
return html.replace(/<svg\b[^>]*>/, tag => tag
|
|
17
|
+
.replace(/(\bwidth=")([\d.]+)(")/, (_m, p, n, s) => `${p}${+n * scale}${s}`)
|
|
18
|
+
.replace(/(\bheight=")([\d.]+)(")/, (_m, p, n, s) => `${p}${+n * scale}${s}`));
|
|
19
|
+
}
|
|
20
|
+
// Rasterizes an SVG string to a PNG Blob by routing through a hidden <img>
|
|
21
|
+
// + Canvas2D. Rejects with the actual underlying cause so bug reports
|
|
22
|
+
// distinguish "SVG failed to load" (usually malformed markup) from
|
|
23
|
+
// "canvas.toBlob returned null" (rasterized image exceeded browser limits).
|
|
24
|
+
export function svgHtmlToPngBlob(html, scale = PNG_SCALE) {
|
|
25
|
+
return new Promise((resolve, reject) => {
|
|
26
|
+
const img = new Image();
|
|
27
|
+
const svgBlob = new Blob([scaleSvgMarkup(html, scale)], {
|
|
28
|
+
type: 'image/svg+xml',
|
|
29
|
+
});
|
|
30
|
+
const url = URL.createObjectURL(svgBlob);
|
|
31
|
+
img.onload = () => {
|
|
32
|
+
// Everything here runs in an event handler, so a throw would escape the
|
|
33
|
+
// promise instead of rejecting it and leave the export dialog spinning
|
|
34
|
+
// forever with nothing said — the hang `awaitViewInitialized` cures on
|
|
35
|
+
// the other end of this pipeline. Reject explicitly instead.
|
|
36
|
+
try {
|
|
37
|
+
const canvas = document.createElement('canvas');
|
|
38
|
+
const w = img.width;
|
|
39
|
+
const h = img.height;
|
|
40
|
+
// stated once: both the context and the blob give out at this size,
|
|
41
|
+
// and both failures are silent (a null, not a throw)
|
|
42
|
+
const tooLarge = `The image may be too large (${w}x${h}). Try reducing the view size or use SVG format.`;
|
|
43
|
+
canvas.width = w;
|
|
44
|
+
canvas.height = h;
|
|
45
|
+
const ctx = canvas.getContext('2d');
|
|
46
|
+
if (!ctx) {
|
|
47
|
+
// browsers hand back a null 2d context rather than throwing once the
|
|
48
|
+
// canvas exceeds their area limit, which PNG_SCALE makes 4x easier to
|
|
49
|
+
// hit than the on-screen canvases
|
|
50
|
+
throw new Error(`Failed to create PNG rendering context. ${tooLarge}`);
|
|
51
|
+
}
|
|
52
|
+
ctx.imageSmoothingEnabled = true;
|
|
53
|
+
ctx.imageSmoothingQuality = 'high';
|
|
54
|
+
ctx.drawImage(img, 0, 0);
|
|
55
|
+
canvas.toBlob(blob => {
|
|
56
|
+
if (blob) {
|
|
57
|
+
resolve(blob);
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
reject(new Error(`Failed to create PNG. ${tooLarge}`));
|
|
61
|
+
}
|
|
62
|
+
}, 'image/png');
|
|
63
|
+
}
|
|
64
|
+
catch (e) {
|
|
65
|
+
reject(e instanceof Error ? e : new Error(`${e}`));
|
|
66
|
+
}
|
|
67
|
+
finally {
|
|
68
|
+
URL.revokeObjectURL(url);
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
img.onerror = event => {
|
|
72
|
+
URL.revokeObjectURL(url);
|
|
73
|
+
const detail = typeof event === 'string' ? event : 'image load failed';
|
|
74
|
+
reject(new Error(`Failed to load SVG for PNG conversion: ${detail}`));
|
|
75
|
+
};
|
|
76
|
+
img.src = url;
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
// Shared "save the rendered SVG" sink used by every view's `exportSvg`
|
|
80
|
+
// action. `format: 'png'` rasterizes through svgHtmlToPngBlob; anything else
|
|
81
|
+
// (default) saves the raw SVG markup.
|
|
82
|
+
export async function saveSvgAsImage(html, opts = {}) {
|
|
83
|
+
if (opts.format === 'png') {
|
|
84
|
+
const blob = await svgHtmlToPngBlob(html);
|
|
85
|
+
saveAs(blob, opts.filename ?? 'image.png');
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
saveAs(new Blob([html], { type: 'image/svg+xml' }), opts.filename ?? 'image.svg');
|
|
89
|
+
}
|
|
90
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Make an SVG id safe to both carry in an `id` attribute and point at with
|
|
3
|
+
* `url(#...)`.
|
|
4
|
+
*
|
|
5
|
+
* Injective but NOT idempotent — escaping the marker is what buys injectivity,
|
|
6
|
+
* so a second pass re-escapes the `~`s the first one wrote. Apply it exactly
|
|
7
|
+
* once, at the place that emits both the id and the reference to it
|
|
8
|
+
* (`SvgClipRect` and `SvgGradientLegend` already do; a hand-rolled `<clipPath>`
|
|
9
|
+
* must). Double-applying is harmless to correctness — the id and its `url()`
|
|
10
|
+
* still agree, since both are derived from one call — but it produces noisy ids
|
|
11
|
+
* for no reason.
|
|
12
|
+
*/
|
|
13
|
+
export declare function svgSafeId(id: string): string;
|
|
14
|
+
/**
|
|
15
|
+
* The id to build a view's or display's SVG ids out of. It has to be two things
|
|
16
|
+
* at once, and each rules out the obvious answer to the other.
|
|
17
|
+
*
|
|
18
|
+
* **Unique within the document.** The configured `displayId` is not: a synteny
|
|
19
|
+
* or breakpoint split view exports several LGVs into one file, and a track
|
|
20
|
+
* shown in more than one of them instantiates a display from the *same* config
|
|
21
|
+
* in each, so both emitted the identical
|
|
22
|
+
* `alignments-clip-volvox_inv_indels-LGVSyntenyDisplay`. A duplicate id is
|
|
23
|
+
* silent — `url(#id)` resolves to the first match, so the second display simply
|
|
24
|
+
* renders unclipped and paints over its neighbours. `assertNoDuplicateSvgIds`
|
|
25
|
+
* in the web tests catches it.
|
|
26
|
+
*
|
|
27
|
+
* **Stable across session loads.** `model.id` is not: it is a `nanoid(10)`
|
|
28
|
+
* minted when the MST node is created, so two exports of the same unchanged
|
|
29
|
+
* view differ in every clip-path id. That is why the checked-in export
|
|
30
|
+
* snapshots churned on `wiggle-clip-5GfQp_z8Ji` → `-FePoZy7IhS` without a
|
|
31
|
+
* pixel moving, and why diffing two saved SVGs shows changes that aren't real.
|
|
32
|
+
*
|
|
33
|
+
* The state tree path is both. It is unique by construction — two nodes cannot
|
|
34
|
+
* occupy one path — and it is a function of where the node sits in the session
|
|
35
|
+
* rather than of when it was created, so the same session exports to the same
|
|
36
|
+
* bytes. Only the numeric indices are kept (`/views/0/tracks/2/displays/0` →
|
|
37
|
+
* `0-2-0`), since the property names in between are fixed by the schema and
|
|
38
|
+
* just make the id long.
|
|
39
|
+
*/
|
|
40
|
+
export declare function svgNodeId(model: {
|
|
41
|
+
id: string;
|
|
42
|
+
}): string;
|
package/esm/svg/svgId.js
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { getPath, isStateTreeNode } from '@jbrowse/mobx-state-tree';
|
|
2
|
+
/**
|
|
3
|
+
* SVG ids in an export are routinely built out of config data — a `trackId`, a
|
|
4
|
+
* `displayId`, a block key carrying a refName. All three are arbitrary strings
|
|
5
|
+
* from a config file or a FASTA header, and an id is not just an attribute: it
|
|
6
|
+
* is pointed at by `clip-path="url(#id)"` / `fill="url(#id)"`, which is a CSS
|
|
7
|
+
* `url()` token. An unquoted `url()` cannot hold whitespace, parentheses or
|
|
8
|
+
* quotes, so a track named `Genes (curated)` or a refName like
|
|
9
|
+
* `gi|123|ref|NC_000001|` silently produced an unresolvable reference: the clip
|
|
10
|
+
* never applied and the track painted over its neighbours, or the gradient fill
|
|
11
|
+
* came out transparent.
|
|
12
|
+
*
|
|
13
|
+
* Percent-encoding is the wrong tool here even though the characters line up —
|
|
14
|
+
* a fragment reference is percent-*decoded* before it is matched against an id,
|
|
15
|
+
* so `url(#a%20b)` looks for the id `a b`, not `a%20b`, and encoding both ends
|
|
16
|
+
* just moves the mismatch.
|
|
17
|
+
*
|
|
18
|
+
* So: escape to a safe alphabet instead. `~` is the marker because it is legal
|
|
19
|
+
* in both an id and a `url()`, and essentially never appears in a real trackId
|
|
20
|
+
* — which means ordinary ids pass through byte-for-byte and no existing export
|
|
21
|
+
* changes.
|
|
22
|
+
*/
|
|
23
|
+
// Everything outside this set is escaped. `\w` is [A-Za-z0-9_]; `.`, `-` and
|
|
24
|
+
// `:` are added because existing ids (block keys are `refName:start:end:idx`)
|
|
25
|
+
// are full of them and all three are safe in an id and in a `url()`. `~` is
|
|
26
|
+
// deliberately NOT in the set, so it escapes itself and the mapping stays
|
|
27
|
+
// injective — two ids that differ only in an unsafe character must not collide
|
|
28
|
+
// into one, or the second element silently steals the first's clip.
|
|
29
|
+
const UNSAFE_ID_CHAR = /[^\w.:-]/g;
|
|
30
|
+
/**
|
|
31
|
+
* Make an SVG id safe to both carry in an `id` attribute and point at with
|
|
32
|
+
* `url(#...)`.
|
|
33
|
+
*
|
|
34
|
+
* Injective but NOT idempotent — escaping the marker is what buys injectivity,
|
|
35
|
+
* so a second pass re-escapes the `~`s the first one wrote. Apply it exactly
|
|
36
|
+
* once, at the place that emits both the id and the reference to it
|
|
37
|
+
* (`SvgClipRect` and `SvgGradientLegend` already do; a hand-rolled `<clipPath>`
|
|
38
|
+
* must). Double-applying is harmless to correctness — the id and its `url()`
|
|
39
|
+
* still agree, since both are derived from one call — but it produces noisy ids
|
|
40
|
+
* for no reason.
|
|
41
|
+
*/
|
|
42
|
+
export function svgSafeId(id) {
|
|
43
|
+
return id.replaceAll(UNSAFE_ID_CHAR, c => `~${c.codePointAt(0).toString(16)}~`);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* The id to build a view's or display's SVG ids out of. It has to be two things
|
|
47
|
+
* at once, and each rules out the obvious answer to the other.
|
|
48
|
+
*
|
|
49
|
+
* **Unique within the document.** The configured `displayId` is not: a synteny
|
|
50
|
+
* or breakpoint split view exports several LGVs into one file, and a track
|
|
51
|
+
* shown in more than one of them instantiates a display from the *same* config
|
|
52
|
+
* in each, so both emitted the identical
|
|
53
|
+
* `alignments-clip-volvox_inv_indels-LGVSyntenyDisplay`. A duplicate id is
|
|
54
|
+
* silent — `url(#id)` resolves to the first match, so the second display simply
|
|
55
|
+
* renders unclipped and paints over its neighbours. `assertNoDuplicateSvgIds`
|
|
56
|
+
* in the web tests catches it.
|
|
57
|
+
*
|
|
58
|
+
* **Stable across session loads.** `model.id` is not: it is a `nanoid(10)`
|
|
59
|
+
* minted when the MST node is created, so two exports of the same unchanged
|
|
60
|
+
* view differ in every clip-path id. That is why the checked-in export
|
|
61
|
+
* snapshots churned on `wiggle-clip-5GfQp_z8Ji` → `-FePoZy7IhS` without a
|
|
62
|
+
* pixel moving, and why diffing two saved SVGs shows changes that aren't real.
|
|
63
|
+
*
|
|
64
|
+
* The state tree path is both. It is unique by construction — two nodes cannot
|
|
65
|
+
* occupy one path — and it is a function of where the node sits in the session
|
|
66
|
+
* rather than of when it was created, so the same session exports to the same
|
|
67
|
+
* bytes. Only the numeric indices are kept (`/views/0/tracks/2/displays/0` →
|
|
68
|
+
* `0-2-0`), since the property names in between are fixed by the schema and
|
|
69
|
+
* just make the id long.
|
|
70
|
+
*/
|
|
71
|
+
export function svgNodeId(model) {
|
|
72
|
+
// getPath throws on anything that is not a live MST node, and unit tests
|
|
73
|
+
// render these components against plain object stand-ins. Their own id is
|
|
74
|
+
// unique, which is the half that matters when there is no tree to place them
|
|
75
|
+
// in — a detached node is not in a document with anything to collide with.
|
|
76
|
+
// Narrowed through a widened alias so that the guard doesn't also narrow
|
|
77
|
+
// `model` itself, whose `id` the fallback still needs.
|
|
78
|
+
const node = model;
|
|
79
|
+
if (!isStateTreeNode(node)) {
|
|
80
|
+
return model.id;
|
|
81
|
+
}
|
|
82
|
+
const indices = getPath(node).match(/\d+/g);
|
|
83
|
+
return indices ? indices.join('-') : model.id;
|
|
84
|
+
}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The contract every GPU display's `renderSvg` relies on: a `svgReady` gate
|
|
3
|
+
* (the per-display terminal-state getter — see MultiRegionDisplayMixin /
|
|
4
|
+
* GlobalFetchMixin) and the `error` it fails the export on.
|
|
5
|
+
* Duck-typed `renderSvg` model interfaces extend this so the compiler catches a
|
|
6
|
+
* missing field instead of it surfacing as a runtime hang or a silent blank.
|
|
7
|
+
*/
|
|
8
|
+
export interface SvgExportable {
|
|
9
|
+
svgReady: boolean;
|
|
10
|
+
error: unknown;
|
|
11
|
+
regionTooLarge: boolean;
|
|
12
|
+
fetchCanceled?: boolean;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* The terminal states that let an export proceed with no current data. Mirrors
|
|
16
|
+
* `DisplayPhaseInputs`: named fields, all required, so adding a state is a
|
|
17
|
+
* compile error at every call site rather than a silently missing branch.
|
|
18
|
+
*
|
|
19
|
+
* `extraTerminal` is the display-specific escape hatch — sequence sets it when
|
|
20
|
+
* zoomed past base resolution, where it renders a static "zoom in" message and
|
|
21
|
+
* fetches nothing, so a data-only gate would never resolve.
|
|
22
|
+
*
|
|
23
|
+
* `fetchCanceled` is the user's own resting state: a standing cancel holds the
|
|
24
|
+
* fetch gate shut until Retry or a viewport change, and an export causes
|
|
25
|
+
* neither, so without this terminal `awaitSvgReady` waits out its whole bound
|
|
26
|
+
* with the dialog up and nothing said, then fails. A display family with no
|
|
27
|
+
* cancel affordance answers it `false`.
|
|
28
|
+
*/
|
|
29
|
+
export interface SvgReadyTerminals {
|
|
30
|
+
error: unknown;
|
|
31
|
+
regionTooLarge: boolean;
|
|
32
|
+
extraTerminal: boolean;
|
|
33
|
+
fetchCanceled: boolean;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Whether an off-screen (SVG) export can read this display's data now: the held
|
|
37
|
+
* data is current for what is on screen, or the fetch reached a terminal state.
|
|
38
|
+
*
|
|
39
|
+
* Single-sourced for the same reason as `computeDisplayPhase`: every display
|
|
40
|
+
* family expresses freshness differently — spatial coverage (per-region),
|
|
41
|
+
* viewport-snapshot compare (global), signature compare (arc / dotplot /
|
|
42
|
+
* synteny) — but the *policy* wrapping it is identical, and each of the five
|
|
43
|
+
* hand-written copies this replaced was one place to forget a terminal and hang
|
|
44
|
+
* the export, or to forget freshness and capture a stale viewport (both have
|
|
45
|
+
* shipped; see agent-docs/reference/SVG_EXPORT.md).
|
|
46
|
+
*
|
|
47
|
+
* `dataCurrent` is a **thunk**, evaluated only after the terminals are ruled
|
|
48
|
+
* out, for the same MobX reason `computeDisplayPhase`'s `loading` is: freshness
|
|
49
|
+
* typically reads the containing view's `visibleRegions` / `loadedRegions`, and
|
|
50
|
+
* the `when()` in `awaitSvgReady` shouldn't subscribe to that churn while a
|
|
51
|
+
* banner is up.
|
|
52
|
+
*/
|
|
53
|
+
export declare function computeSvgReady({ error, regionTooLarge, extraTerminal, fetchCanceled }: SvgReadyTerminals, dataCurrent: () => boolean): boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Off-screen renderers (SVG export, headless jbrowse-img) must wait until the
|
|
56
|
+
* display reaches a terminal state before reading its data. That whole policy
|
|
57
|
+
* lives in `svgReady`; this is the one shared way to await it, so renderers
|
|
58
|
+
* never re-inline `data != null || error || …`. No time bound: `svgReady` is a
|
|
59
|
+
* terminal state (data loaded, or error / too-large), so it resolves once the
|
|
60
|
+
* fetch it observes settles. If a throwing `svgReady` getter rejects the wait,
|
|
61
|
+
* that error propagates faithfully rather than being masked.
|
|
62
|
+
*
|
|
63
|
+
* It then fails the export if the terminal it settled on was the error
|
|
64
|
+
* (`throwOnExportErrors`, below, for why that is fatal), making this the exact
|
|
65
|
+
* display-level twin of `awaitViewInitialized`: both wait for `settled || error`
|
|
66
|
+
* and both refuse to continue on the error, so the postcondition of each is
|
|
67
|
+
* "there is something to draw". Folded in rather than left to the caller because
|
|
68
|
+
* `svgReady` is *true* on error, so a caller that awaits and stops there gets a
|
|
69
|
+
* display with nothing to draw and no sign of why.
|
|
70
|
+
*
|
|
71
|
+
* Every display uses this one, including the ones with nowhere to draw an error
|
|
72
|
+
* (dotplot, synteny) — a display never has to know whether it owns the surface
|
|
73
|
+
* it paints, because the thing that made that distinction matter, reporting all
|
|
74
|
+
* the failures rather than one, is `awaitSvgRenders`'s job.
|
|
75
|
+
*
|
|
76
|
+
* A standing user cancel fails the export the same way an error does, and for
|
|
77
|
+
* the same reason the error is folded in rather than left to the caller: the
|
|
78
|
+
* cancel terminal makes `svgReady` *true* over a display with nothing to draw,
|
|
79
|
+
* so a caller that awaits and stops there exports that track blank in silence.
|
|
80
|
+
* On screen the same state shows "Loading canceled / Retry", so the loud
|
|
81
|
+
* failure matches what the user is looking at.
|
|
82
|
+
*/
|
|
83
|
+
export declare function awaitSvgReady(model: Pick<SvgExportable, 'svgReady' | 'error' | 'fetchCanceled'>, timeoutMs?: number): Promise<void>;
|
|
84
|
+
/**
|
|
85
|
+
* The view-level counterpart, for the wait every `renderToSvg` opens with:
|
|
86
|
+
* `whenViewSettled` in the export's own vocabulary. Why the bare
|
|
87
|
+
* `when(() => view.initialized)` it replaced could not fail — only hang — is
|
|
88
|
+
* documented there.
|
|
89
|
+
*
|
|
90
|
+
* Only a view that never initialized is fatal *here*. A track error on an
|
|
91
|
+
* initialized view is fatal too, but it is the displays' readiness waits that
|
|
92
|
+
* report it (`throwOnExportErrors`), after this one has let the export start.
|
|
93
|
+
*/
|
|
94
|
+
export declare function awaitViewInitialized(view: {
|
|
95
|
+
initialized: boolean;
|
|
96
|
+
error: unknown;
|
|
97
|
+
pendingLaunch?: unknown;
|
|
98
|
+
}): Promise<void>;
|
|
99
|
+
/**
|
|
100
|
+
* How the export answers "a track failed": by failing. A track whose data won't
|
|
101
|
+
* load has its error caught by the fetch layer and stored on the display, so the
|
|
102
|
+
* render itself still returns — with that track blank.
|
|
103
|
+
*
|
|
104
|
+
* An export is a standalone artifact, so a failed track is fatal: the dialog
|
|
105
|
+
* shows its error banner and saves nothing, and a headless caller (jbrowse-img)
|
|
106
|
+
* exits nonzero instead of writing a broken image. Drawing the error into the
|
|
107
|
+
* figure instead costs more than the red rect it leaves in the picture: on a
|
|
108
|
+
* shared surface (dotplot plot rect, synteny band) the box covers the tracks
|
|
109
|
+
* that *did* render, and a snapshot regenerated while a display is broken
|
|
110
|
+
* absorbs the stack trace as expected output — which is how a real crash sat
|
|
111
|
+
* inside two committed goldens without turning anything red.
|
|
112
|
+
*
|
|
113
|
+
* `regionTooLarge` is deliberately not routed here — see `SvgChrome`.
|
|
114
|
+
*
|
|
115
|
+
* The failures are kept on the thrown error so that nesting one `awaitSvgRenders`
|
|
116
|
+
* inside another (synteny: rows of tracks *and* levels of ribbons) still reports
|
|
117
|
+
* every leaf rather than one per group.
|
|
118
|
+
*/
|
|
119
|
+
export declare function throwOnExportErrors(errors: unknown[]): void;
|
|
120
|
+
/**
|
|
121
|
+
* `Promise.all` for the renders a view fans out, differing in the one way an
|
|
122
|
+
* export needs: it fails with **every** failure instead of whichever rejected
|
|
123
|
+
* first. Exporting a session with three broken tracks should not mean finding
|
|
124
|
+
* the second one by fixing the first and exporting again. Nest it freely — an
|
|
125
|
+
* inner fan-out's failures are flattened into the outer one's report.
|
|
126
|
+
*
|
|
127
|
+
* That is also what lets every display await through the plain `awaitSvgReady`.
|
|
128
|
+
* A display on a shared surface (the dotplot's plot rect, a synteny level's
|
|
129
|
+
* band) has nowhere to draw an error and nothing complete to say alone; the
|
|
130
|
+
* alternative is for it to stay silent and let its view read the combined error
|
|
131
|
+
* back *after* the waits, which nothing enforces and every new shared-surface
|
|
132
|
+
* view has to rediscover. Here the display just throws, and being complete is
|
|
133
|
+
* the fan-out's job rather than the display's.
|
|
134
|
+
*/
|
|
135
|
+
export declare function awaitSvgRenders<T extends readonly unknown[] | []>(renders: T): Promise<{
|
|
136
|
+
-readonly [K in keyof T]: Awaited<T[K]>;
|
|
137
|
+
}>;
|