@jbrowse/core 4.3.0 → 5.0.0-beta.1
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 +783 -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 +40 -40
- package/esm/PluginLoader.js +166 -82
- package/esm/PluginManager.d.ts +368 -55
- package/esm/PluginManager.js +326 -85
- 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 +84 -65
- 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/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 +154 -19
- package/esm/configuration/configurationSchema.js +359 -138
- 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 +326 -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 +120 -7
- package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.js +99 -27
- 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/getAdapterId.d.ts +2 -0
- package/esm/data_adapters/BaseAdapter/getAdapterId.js +9 -0
- package/esm/data_adapters/BaseAdapter/index.d.ts +6 -4
- package/esm/data_adapters/BaseAdapter/index.js +5 -5
- package/esm/data_adapters/BaseAdapter/stats.d.ts +5 -5
- package/esm/data_adapters/BaseAdapter/stats.js +48 -22
- package/esm/data_adapters/BaseAdapter/types.d.ts +10 -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 +10 -0
- package/esm/pluggableElementTypes/DisplayType.js +14 -1
- 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 +2 -1
- package/esm/pluggableElementTypes/ViewType.js +9 -2
- 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 +68 -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 +605 -84
- package/esm/pluggableElementTypes/models/BaseDisplayModel.js +172 -64
- package/esm/pluggableElementTypes/models/BaseTrackModel.d.ts +195 -35
- package/esm/pluggableElementTypes/models/BaseTrackModel.js +332 -85
- package/esm/pluggableElementTypes/models/BaseViewModel.d.ts +167 -16
- package/esm/pluggableElementTypes/models/BaseViewModel.js +111 -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 +174 -0
- package/esm/pluggableElementTypes/models/assertDisplayContract.js +246 -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 +265 -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 +49 -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 +2 -5
- package/esm/rpc/coreRpcMethods.js +9 -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/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 +136 -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 +368 -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 +9 -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 +124 -4
- package/esm/ui/MenuTypes.js +13 -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 +85 -0
- package/esm/ui/PaletteContext.js +104 -0
- package/esm/ui/PinAdornment.d.ts +5 -0
- package/esm/ui/PinAdornment.js +79 -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 +36 -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 +89 -0
- package/esm/ui/promotablePinCoverage.d.ts +44 -0
- package/esm/ui/promotablePinCoverage.js +87 -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 +44 -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 +23 -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/applyInitSettings.d.ts +79 -0
- package/esm/util/applyInitSettings.js +91 -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 +52 -0
- package/esm/util/cacheBudgets.js +52 -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 +117 -0
- package/esm/util/createStopTokenRotation.js +147 -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 +160 -0
- package/esm/util/hooks.js +416 -0
- package/esm/util/htmlText.d.ts +13 -0
- package/esm/util/htmlText.js +66 -0
- package/esm/util/idMaker.d.ts +1 -1
- package/esm/util/idMaker.js +31 -18
- package/esm/util/index.d.ts +82 -268
- package/esm/util/index.js +136 -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 +194 -0
- package/esm/util/installFetch.js +178 -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/leadingEdgeAutorun.d.ts +40 -0
- package/esm/util/leadingEdgeAutorun.js +51 -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 +89 -0
- package/esm/util/mstUtils.js +122 -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 +113 -0
- package/esm/util/pluginStore.js +253 -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 +42 -1
- package/esm/util/range.js +59 -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 +14 -1
- package/esm/util/rxjs.js +39 -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 +120 -0
- package/esm/util/tabix.js +143 -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 +350 -30
- package/esm/util/tracks.js +574 -192
- 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 +358 -119
- package/esm/util/types/index.js +87 -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/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 +58 -0
- package/esm/util/viewStatus.js +20 -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 +27 -0
- package/esm/util/whenViewSettled.js +28 -0
- package/esm/util/withFeatureDetails.d.ts +34 -0
- package/esm/util/withFeatureDetails.js +59 -0
- package/package.json +240 -820
- package/esm/ReExports/DataGrid.d.ts +0 -1
- package/esm/ReExports/DataGrid.js +0 -1
- package/esm/configuration/util.d.ts +0 -10
- package/esm/configuration/util.js +0 -123
- package/esm/data_adapters/BaseAdapter/BaseOptions.d.ts +0 -18
- package/esm/data_adapters/util.d.ts +0 -1
- package/esm/data_adapters/util.js +0 -6
- package/esm/pluggableElementTypes/GlyphType.d.ts +0 -43
- package/esm/pluggableElementTypes/GlyphType.js +0 -18
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/fetchSequence.d.ts +0 -5
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/fetchSequence.js +0 -17
- package/esm/pluggableElementTypes/renderers/BoxRendererType.d.ts +0 -52
- package/esm/pluggableElementTypes/renderers/BoxRendererType.js +0 -78
- package/esm/pluggableElementTypes/renderers/CircularChordRendererType.d.ts +0 -4
- package/esm/pluggableElementTypes/renderers/CircularChordRendererType.js +0 -4
- package/esm/pluggableElementTypes/renderers/FeatureRendererType.d.ts +0 -58
- package/esm/pluggableElementTypes/renderers/FeatureRendererType.js +0 -77
- package/esm/pluggableElementTypes/renderers/LayoutSession.d.ts +0 -31
- package/esm/pluggableElementTypes/renderers/LayoutSession.js +0 -40
- package/esm/pluggableElementTypes/renderers/RendererType.d.ts +0 -28
- package/esm/pluggableElementTypes/renderers/RendererType.js +0 -20
- package/esm/pluggableElementTypes/renderers/ServerSideRendererType.d.ts +0 -58
- package/esm/pluggableElementTypes/renderers/ServerSideRendererType.js +0 -108
- package/esm/pluggableElementTypes/renderers/index.d.ts +0 -6
- package/esm/pluggableElementTypes/renderers/index.js +0 -6
- package/esm/pluggableElementTypes/renderers/util.d.ts +0 -3
- package/esm/pluggableElementTypes/renderers/util.js +0 -14
- package/esm/rpc/baseRpcConfig.d.ts +0 -8
- package/esm/rpc/baseRpcConfig.js +0 -10
- package/esm/rpc/mainThreadRpcConfig.d.ts +0 -8
- package/esm/rpc/mainThreadRpcConfig.js +0 -8
- package/esm/rpc/methods/CoreGetFeatureDensityStats.d.ts +0 -17
- package/esm/rpc/methods/CoreGetFeatureDensityStats.js +0 -25
- package/esm/rpc/methods/CoreGetFeatureDetails.d.ts +0 -11
- package/esm/rpc/methods/CoreGetFeatureDetails.js +0 -24
- package/esm/rpc/methods/CoreGetFileInfo.d.ts +0 -9
- package/esm/rpc/methods/CoreGetFileInfo.js +0 -15
- package/esm/rpc/methods/CoreRender.d.ts +0 -14
- package/esm/rpc/methods/CoreRender.js +0 -40
- package/esm/rpc/methods/CoreSaveFeatureData.d.ts +0 -16
- package/esm/rpc/methods/CoreSaveFeatureData.js +0 -32
- package/esm/rpc/methods/util.d.ts +0 -15
- package/esm/rpc/methods/util.js +0 -7
- package/esm/rpc/webWorkerRpcConfig.d.ts +0 -8
- package/esm/rpc/webWorkerRpcConfig.js +0 -8
- package/esm/ui/MenuButton.d.ts +0 -1
- package/esm/ui/MenuButton.js +0 -1
- package/esm/ui/MenuItems.d.ts +0 -15
- package/esm/ui/MenuItems.js +0 -59
- package/esm/ui/useEvent.d.ts +0 -1
- package/esm/ui/useEvent.js +0 -10
- package/esm/util/blobToDataURL.d.ts +0 -1
- package/esm/util/blobToDataURL.js +0 -14
- package/esm/util/compositeMap.d.ts +0 -11
- package/esm/util/compositeMap.js +0 -59
- package/esm/util/flatqueue/index.d.ts +0 -11
- package/esm/util/flatqueue/index.js +0 -61
- package/esm/util/layouts/BaseLayout.d.ts +0 -30
- package/esm/util/layouts/MultiLayout.d.ts +0 -12
- package/esm/util/layouts/MultiLayout.js +0 -40
- package/esm/util/layouts/PileupLayout.d.ts +0 -41
- package/esm/util/layouts/PileupLayout.js +0 -202
- package/esm/util/layouts/PrecomputedLayout.d.ts +0 -30
- package/esm/util/layouts/PrecomputedLayout.js +0 -71
- package/esm/util/layouts/SceneGraph.d.ts +0 -31
- package/esm/util/layouts/SceneGraph.js +0 -121
- package/esm/util/makeAbortableReaction.d.ts +0 -3
- package/esm/util/makeAbortableReaction.js +0 -47
- package/esm/util/map-obj/index.d.ts +0 -13
- package/esm/util/map-obj/index.js +0 -92
- package/esm/util/nextTick.d.ts +0 -1
- package/esm/util/nextTick.js +0 -3
- package/esm/util/offscreenCanvasGetSerializingSvg.d.ts +0 -5
- package/esm/util/offscreenCanvasGetSerializingSvg.js +0 -9
- package/esm/util/offscreenCanvasUtils.d.ts +0 -12
- package/esm/util/offscreenCanvasUtils.js +0 -19
- package/esm/util/renderToAbstractCanvas.d.ts +0 -17
- package/esm/util/renderToAbstractCanvas.js +0 -53
- package/esm/util/transferables.d.ts +0 -2
- package/esm/util/transferables.js +0 -35
- package/esm/util/tss-react/mui/index.d.ts +0 -1
- package/esm/util/tss-react/mui/index.js +0 -1
- package/esm/util/tss-react/mui/mui.d.ts +0 -10
- package/esm/util/tss-react/mui/mui.js +0 -5
- package/esm/util/when.d.ts +0 -1
- package/esm/util/when.js +0 -1
- /package/esm/{data_adapters/BaseAdapter/BaseOptions.js → configuration/promotablePin.js} +0 -0
- /package/esm/{util/layouts/BaseLayout.js → data_adapters/BaseAdapter/CytobandAdapter.js} +0 -0
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import type { AssemblyNameResolver } from './tracks.ts';
|
|
2
|
+
import type { AbstractSessionModel, SessionWithPublishTrackConf, TrackContainer } from './types/index.ts';
|
|
3
|
+
import type { IStateTreeNode } from '@jbrowse/mobx-state-tree';
|
|
4
|
+
/**
|
|
5
|
+
* Whether the target track list currently displays any of the track's
|
|
6
|
+
* assemblies, i.e. the track can be shown there after adding it.
|
|
7
|
+
*
|
|
8
|
+
* Both sides resolve through the aliases, because the two names meeting here
|
|
9
|
+
* come from different places: the container holds whatever the session opened
|
|
10
|
+
* the view on, and the config holds whatever its author wrote. `===` read a
|
|
11
|
+
* track configured against `hg38` as undisplayable in a view on `GRCh38`, so
|
|
12
|
+
* the add landed and nothing appeared, under a snackbar naming the assembly the
|
|
13
|
+
* user was looking at as one this view does not have open.
|
|
14
|
+
*/
|
|
15
|
+
export declare function containerDisplaysAssembly(container: {
|
|
16
|
+
assemblyNames?: readonly string[];
|
|
17
|
+
} | undefined, assemblyNames: readonly (string | undefined)[] | undefined, assemblyManager: AssemblyNameResolver): boolean;
|
|
18
|
+
/** the slice of the add-track widget every workflow's submit path writes to */
|
|
19
|
+
export interface AddTrackWidgetSelf extends IStateTreeNode {
|
|
20
|
+
/**
|
|
21
|
+
* Where a submitted track opens: the view, or one track list within it when
|
|
22
|
+
* the widget was opened from a synteny level's track selector. Not the same
|
|
23
|
+
* as `view` — a workflow reaching past this for `view` adds the track to the
|
|
24
|
+
* wrong list.
|
|
25
|
+
*/
|
|
26
|
+
trackContainer: TrackContainer | undefined;
|
|
27
|
+
clearData: () => void;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* The slice of the add-track widget a whole workflow gets: the submit path
|
|
31
|
+
* above plus the assembly it writes into. Structural rather than the widget's
|
|
32
|
+
* own model type, so a plugin contributing a workflow doesn't take a package
|
|
33
|
+
* dependency on the plugin that owns the widget.
|
|
34
|
+
*/
|
|
35
|
+
export interface AddTrackWorkflowModel extends AddTrackWidgetSelf {
|
|
36
|
+
assembly: string | undefined;
|
|
37
|
+
setAssembly: (arg: string) => void;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Reset the form and dismiss the widget after a successful add.
|
|
41
|
+
*
|
|
42
|
+
* Only ever on an add that landed something: finishing throws away what the
|
|
43
|
+
* user assembled, so doing it when every config was rejected buries the
|
|
44
|
+
* snackbars explaining why behind an empty form with nothing to retry from.
|
|
45
|
+
*/
|
|
46
|
+
export declare function finishAddTrack(model: AddTrackWidgetSelf, session: AbstractSessionModel): void;
|
|
47
|
+
/**
|
|
48
|
+
* Add one track config from an add-track workflow, reveal it, and dismiss the
|
|
49
|
+
* widget — the tail every workflow shares, so all of them decide "show vs.
|
|
50
|
+
* warn vs. dismiss" the same way.
|
|
51
|
+
*
|
|
52
|
+
* Three things a workflow doing this by hand has got wrong:
|
|
53
|
+
*
|
|
54
|
+
* - It shows the track in `model.view`, which is the wrong list when the widget
|
|
55
|
+
* was opened from a synteny level's track selector. `trackContainer` is the
|
|
56
|
+
* target.
|
|
57
|
+
* - It shows a track whose assembly the container doesn't display, which is
|
|
58
|
+
* silently nothing on screen. Say so instead.
|
|
59
|
+
* - It dismisses the widget even when `publishTrackConf` rejected the config,
|
|
60
|
+
* wiping the form behind the error snackbar.
|
|
61
|
+
*
|
|
62
|
+
* **A track on an assembly the view synthesized takes neither destination.** The
|
|
63
|
+
* widget reads its assembly off the containing view and offers no choice of one
|
|
64
|
+
* outside it (`setAssembly` lists `session.assemblyNames`, which excludes the
|
|
65
|
+
* temporary ones), so a user opening a file in a read-vs-ref panel arrives here
|
|
66
|
+
* naming an assembly that goes back when that view closes — and a session list
|
|
67
|
+
* would keep the config, once per file, in the snapshot they save and share.
|
|
68
|
+
* That is ADR-084's leak reached through the widget rather than through a
|
|
69
|
+
* launcher, so it takes ADR-084's answer: the config rides on the track as
|
|
70
|
+
* `showTrack`'s `inlineConf`, works for the life of the view, and goes out with
|
|
71
|
+
* it. The container is the one this assembly came from, so it displays it.
|
|
72
|
+
*
|
|
73
|
+
* Returns the added config, or undefined when `publishTrackConf` rejected it — it
|
|
74
|
+
* has already surfaced its own error, and a second, vaguer snackbar on top of
|
|
75
|
+
* that helps nobody.
|
|
76
|
+
*/
|
|
77
|
+
export declare function addTrackFromWidget({ model, session, conf, }: {
|
|
78
|
+
model: AddTrackWidgetSelf;
|
|
79
|
+
session: AbstractSessionModel;
|
|
80
|
+
conf: Parameters<SessionWithPublishTrackConf['publishTrackConf']>[0] & {
|
|
81
|
+
trackId: string;
|
|
82
|
+
name?: string;
|
|
83
|
+
assemblyNames?: (string | undefined)[];
|
|
84
|
+
};
|
|
85
|
+
}): (import("@jbrowse/mobx-state-tree").$EmptyObjectBrand & Partial<{
|
|
86
|
+
[x: string]: any;
|
|
87
|
+
}> & {
|
|
88
|
+
trackId: string;
|
|
89
|
+
name?: string;
|
|
90
|
+
assemblyNames?: (string | undefined)[];
|
|
91
|
+
}) | (import("@jbrowse/mobx-state-tree").ModelInstanceTypeProps<Record<string, any>> & {
|
|
92
|
+
setSubschema(slotName: string, data: Record<string, unknown>): any;
|
|
93
|
+
setSlot(slotName: string, value: unknown): void;
|
|
94
|
+
} & IStateTreeNode<import("../configuration/types.ts").AnyConfigurationSchemaType>) | undefined;
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { namesTemporaryAssembly } from './temporaryAssembly.js';
|
|
2
|
+
import { isSameAssemblyName } from './tracks.js';
|
|
3
|
+
import { isSessionModelWithWidgets, isSessionWithPublishTrackConf, } from './types/index.js';
|
|
4
|
+
/**
|
|
5
|
+
* Whether the target track list currently displays any of the track's
|
|
6
|
+
* assemblies, i.e. the track can be shown there after adding it.
|
|
7
|
+
*
|
|
8
|
+
* Both sides resolve through the aliases, because the two names meeting here
|
|
9
|
+
* come from different places: the container holds whatever the session opened
|
|
10
|
+
* the view on, and the config holds whatever its author wrote. `===` read a
|
|
11
|
+
* track configured against `hg38` as undisplayable in a view on `GRCh38`, so
|
|
12
|
+
* the add landed and nothing appeared, under a snackbar naming the assembly the
|
|
13
|
+
* user was looking at as one this view does not have open.
|
|
14
|
+
*/
|
|
15
|
+
export function containerDisplaysAssembly(container, assemblyNames, assemblyManager) {
|
|
16
|
+
return !!container?.assemblyNames?.some(a => assemblyNames?.some(b => isSameAssemblyName(a, b, assemblyManager)));
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Reset the form and dismiss the widget after a successful add.
|
|
20
|
+
*
|
|
21
|
+
* Only ever on an add that landed something: finishing throws away what the
|
|
22
|
+
* user assembled, so doing it when every config was rejected buries the
|
|
23
|
+
* snackbars explaining why behind an empty form with nothing to retry from.
|
|
24
|
+
*/
|
|
25
|
+
export function finishAddTrack(model, session) {
|
|
26
|
+
model.clearData();
|
|
27
|
+
if (isSessionModelWithWidgets(session)) {
|
|
28
|
+
session.hideWidget(model);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Add one track config from an add-track workflow, reveal it, and dismiss the
|
|
33
|
+
* widget — the tail every workflow shares, so all of them decide "show vs.
|
|
34
|
+
* warn vs. dismiss" the same way.
|
|
35
|
+
*
|
|
36
|
+
* Three things a workflow doing this by hand has got wrong:
|
|
37
|
+
*
|
|
38
|
+
* - It shows the track in `model.view`, which is the wrong list when the widget
|
|
39
|
+
* was opened from a synteny level's track selector. `trackContainer` is the
|
|
40
|
+
* target.
|
|
41
|
+
* - It shows a track whose assembly the container doesn't display, which is
|
|
42
|
+
* silently nothing on screen. Say so instead.
|
|
43
|
+
* - It dismisses the widget even when `publishTrackConf` rejected the config,
|
|
44
|
+
* wiping the form behind the error snackbar.
|
|
45
|
+
*
|
|
46
|
+
* **A track on an assembly the view synthesized takes neither destination.** The
|
|
47
|
+
* widget reads its assembly off the containing view and offers no choice of one
|
|
48
|
+
* outside it (`setAssembly` lists `session.assemblyNames`, which excludes the
|
|
49
|
+
* temporary ones), so a user opening a file in a read-vs-ref panel arrives here
|
|
50
|
+
* naming an assembly that goes back when that view closes — and a session list
|
|
51
|
+
* would keep the config, once per file, in the snapshot they save and share.
|
|
52
|
+
* That is ADR-084's leak reached through the widget rather than through a
|
|
53
|
+
* launcher, so it takes ADR-084's answer: the config rides on the track as
|
|
54
|
+
* `showTrack`'s `inlineConf`, works for the life of the view, and goes out with
|
|
55
|
+
* it. The container is the one this assembly came from, so it displays it.
|
|
56
|
+
*
|
|
57
|
+
* Returns the added config, or undefined when `publishTrackConf` rejected it — it
|
|
58
|
+
* has already surfaced its own error, and a second, vaguer snackbar on top of
|
|
59
|
+
* that helps nobody.
|
|
60
|
+
*/
|
|
61
|
+
export function addTrackFromWidget({ model, session, conf, }) {
|
|
62
|
+
if (!isSessionWithPublishTrackConf(session)) {
|
|
63
|
+
throw new Error("Can't add tracks to this session");
|
|
64
|
+
}
|
|
65
|
+
const { trackContainer } = model;
|
|
66
|
+
if (namesTemporaryAssembly(session, conf)) {
|
|
67
|
+
if (!trackContainer) {
|
|
68
|
+
session.notify(`Could not add "${conf.name ?? conf.trackId}": the view it was being added to has closed, and it uses an assembly that only that view had.`, 'warning');
|
|
69
|
+
return undefined;
|
|
70
|
+
}
|
|
71
|
+
trackContainer.showTrack(conf.trackId, {}, {}, conf);
|
|
72
|
+
finishAddTrack(model, session);
|
|
73
|
+
return conf;
|
|
74
|
+
}
|
|
75
|
+
const added = session.publishTrackConf(conf);
|
|
76
|
+
if (!added) {
|
|
77
|
+
return undefined;
|
|
78
|
+
}
|
|
79
|
+
if (containerDisplaysAssembly(trackContainer, conf.assemblyNames, session.assemblyManager)) {
|
|
80
|
+
trackContainer?.showTrack(conf.trackId);
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
const assemblies = conf.assemblyNames?.filter(a => !!a) ?? [];
|
|
84
|
+
session.notify(`Added track "${conf.name ?? conf.trackId}" to the session, but it was not displayed because it uses ${assemblies.length
|
|
85
|
+
? `assembly "${assemblies.join('", "')}"`
|
|
86
|
+
: 'an assembly'}, which is not open in this view. Open a view for that assembly and use its track selector to display it.`, 'warning');
|
|
87
|
+
}
|
|
88
|
+
finishAddTrack(model, session);
|
|
89
|
+
return added;
|
|
90
|
+
}
|
package/esm/util/analytics.d.ts
CHANGED
|
@@ -1,3 +1,32 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import type { AnyConfigurationModel } from '../configuration/index.ts';
|
|
2
|
+
declare global {
|
|
3
|
+
interface Window {
|
|
4
|
+
ga?: (...args: unknown[]) => void;
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
type TrackConfig = AnyConfigurationModel & {
|
|
8
|
+
type: string;
|
|
9
|
+
};
|
|
10
|
+
interface AnalyticsRootModel {
|
|
11
|
+
jbrowse: {
|
|
12
|
+
tracks: TrackConfig[];
|
|
13
|
+
assemblies: unknown[];
|
|
14
|
+
plugins?: {
|
|
15
|
+
name?: string;
|
|
16
|
+
}[];
|
|
17
|
+
};
|
|
18
|
+
session?: {
|
|
19
|
+
sessionTracks: TrackConfig[];
|
|
20
|
+
views: unknown[];
|
|
21
|
+
};
|
|
22
|
+
version: string;
|
|
23
|
+
}
|
|
24
|
+
type AnalyticsRootModelWithConfig = AnalyticsRootModel & {
|
|
25
|
+
jbrowse: {
|
|
26
|
+
configuration: AnyConfigurationModel;
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
export declare function writeAWSAnalytics(rootModel: AnalyticsRootModel, initialTimestamp: number, sessionQuery?: string | null): Promise<void>;
|
|
30
|
+
export declare function writeGAAnalytics(rootModel: AnalyticsRootModel, initialTimestamp: number): Promise<void>;
|
|
31
|
+
export declare function doAnalytics(rootModel: AnalyticsRootModelWithConfig | undefined, initialTimestamp: number, initialSessionQuery: string | null | undefined): void;
|
|
32
|
+
export {};
|
package/esm/util/analytics.js
CHANGED
|
@@ -1,80 +1,133 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
1
|
+
import { effectiveRenderer, getGraphicsCapabilities, } from '@jbrowse/render-core/graphicsCapabilities';
|
|
2
|
+
import { readConfObject } from '../configuration/index.js';
|
|
3
|
+
import { isElectron, rIC } from '../util/index.js';
|
|
4
|
+
// Both writers are fire-and-forget from several call sites, so they swallow
|
|
5
|
+
// their own failures rather than rejecting: a floating rejected promise trips
|
|
6
|
+
// the webpack-dev-server overlay (it listens for unhandledrejection), and an
|
|
7
|
+
// analytics ping is never worth interrupting a session for.
|
|
8
|
+
export async function writeAWSAnalytics(rootModel, initialTimestamp, sessionQuery) {
|
|
4
9
|
try {
|
|
5
10
|
const url = 'https://analytics.jbrowse.org/api/v1';
|
|
6
|
-
const multiAssemblyTracks = rootModel.jbrowse.tracks.filter(
|
|
7
|
-
|
|
11
|
+
const multiAssemblyTracks = rootModel.jbrowse.tracks.filter(track => readConfObject(track, 'assemblyNames').length > 1).length;
|
|
12
|
+
// which rendering backend is actually drawing (WebGPU/WebGL2/Canvas2D) —
|
|
13
|
+
// capabilities *and* any page-wide pin, so a session that fell back to
|
|
14
|
+
// Canvas2D is counted as Canvas2D rather than as what the hardware could
|
|
15
|
+
// have done. Reporting the capability answer here is what made "how many
|
|
16
|
+
// users end up on Canvas2D" unanswerable.
|
|
17
|
+
const capabilities = await getGraphicsCapabilities();
|
|
18
|
+
const renderer = effectiveRenderer(capabilities);
|
|
19
|
+
// The coarse bit only. `glRenderer` names the exact driver and stays local
|
|
20
|
+
// to the stack-trace dialog, the same line vendor/architecture hold — this
|
|
21
|
+
// says whether a WebGL2 user is on a rasterizer, which is the population
|
|
22
|
+
// that pays ~25x Canvas2D on the main thread and the number that decides
|
|
23
|
+
// whether the ladder should route around it. 'unknown' where nothing probed
|
|
24
|
+
// or the browser withholds the extension, which must not read as 'false'.
|
|
25
|
+
const softwareRendering = capabilities.softwareWebgl ?? 'unknown';
|
|
8
26
|
const { jbrowse: config, session, version: ver } = rootModel;
|
|
9
27
|
const { tracks, assemblies, plugins } = config;
|
|
28
|
+
// stats to be recorded in db
|
|
10
29
|
const stats = {
|
|
11
30
|
ver,
|
|
12
|
-
'plugins-count': plugins?.length
|
|
13
|
-
'plugin-names': plugins?.map(
|
|
31
|
+
'plugins-count': plugins?.length ?? 0,
|
|
32
|
+
'plugin-names': plugins?.map(p => p.name).join(','),
|
|
14
33
|
'assemblies-count': assemblies.length,
|
|
15
34
|
'tracks-count': tracks.length,
|
|
16
|
-
'session-tracks-count': session?.sessionTracks.length
|
|
17
|
-
'open-views': session?.views.length
|
|
35
|
+
'session-tracks-count': session?.sessionTracks.length ?? 0,
|
|
36
|
+
'open-views': session?.views.length ?? 0,
|
|
18
37
|
'synteny-tracks-count': multiAssemblyTracks,
|
|
19
|
-
|
|
20
|
-
|
|
38
|
+
// No `saved-sessions-count`: it counted localStorage keys matching
|
|
39
|
+
// `localSaved-`, a format nothing has written since autosaved sessions
|
|
40
|
+
// moved to IndexedDB (`sessionsDB`), so it reported 0 for every user. The
|
|
41
|
+
// live count is `savedSessionMetadata`, which is web-only and populated by
|
|
42
|
+
// an async open — reporting it here would race the boot rather than
|
|
43
|
+
// measure anything, so the field is gone instead of re-sourced.
|
|
44
|
+
// field if existing session param in query before autogenerated param
|
|
45
|
+
'existing-session-param-type': sessionQuery?.split('-', 1)[0] || 'none',
|
|
46
|
+
// screen geometry
|
|
21
47
|
'scn-h': window.screen.height,
|
|
22
48
|
'scn-w': window.screen.width,
|
|
49
|
+
// window geometry
|
|
23
50
|
'win-h': window.innerHeight,
|
|
24
51
|
'win-w': window.innerWidth,
|
|
52
|
+
dpr: window.devicePixelRatio,
|
|
25
53
|
electron: isElectron,
|
|
26
|
-
|
|
54
|
+
renderer,
|
|
55
|
+
'software-rendering': softwareRendering,
|
|
56
|
+
loadTime: (Date.now() - initialTimestamp) / 1000,
|
|
27
57
|
jb2: true,
|
|
28
58
|
};
|
|
29
|
-
|
|
59
|
+
// tallies get processed in the lambda, keyed as e.g. track-types-FeatureTrack
|
|
60
|
+
const trackTypeCounts = {};
|
|
61
|
+
for (const track of tracks) {
|
|
30
62
|
const key = `track-types-${track.type}`;
|
|
31
|
-
|
|
32
|
-
}
|
|
33
|
-
|
|
63
|
+
trackTypeCounts[key] = (trackTypeCounts[key] ?? 0) + 1;
|
|
64
|
+
}
|
|
65
|
+
const sessionTrackTypeCounts = {};
|
|
66
|
+
for (const track of session?.sessionTracks ?? []) {
|
|
34
67
|
const key = `sessionTrack-types-${track.type}`;
|
|
35
|
-
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
.join('&');
|
|
68
|
+
sessionTrackTypeCounts[key] = (sessionTrackTypeCounts[key] ?? 0) + 1;
|
|
69
|
+
}
|
|
70
|
+
Object.assign(stats, trackTypeCounts, sessionTrackTypeCounts);
|
|
71
|
+
const qs = new URLSearchParams(Object.entries(stats).map(([key, value]) => [key, String(value)])).toString();
|
|
40
72
|
await fetch(`${url}?${qs}`);
|
|
41
73
|
}
|
|
42
74
|
catch (e) {
|
|
43
|
-
console.
|
|
75
|
+
console.warn('Failed to write analytics to AWS.', e);
|
|
44
76
|
}
|
|
45
77
|
}
|
|
46
78
|
export async function writeGAAnalytics(rootModel, initialTimestamp) {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
electron
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
79
|
+
try {
|
|
80
|
+
const jbrowseUser = 'UA-7115575-5';
|
|
81
|
+
const loadTime = Date.now() - initialTimestamp;
|
|
82
|
+
// custom dimension/metric indices are wired up on the GA property side, so
|
|
83
|
+
// this order (tracks-count, ver, electron, loadTime, pluginNames) must stay
|
|
84
|
+
// dimension1..5
|
|
85
|
+
const gaData = {
|
|
86
|
+
dimension1: rootModel.jbrowse.tracks.length, // this is all possible tracks
|
|
87
|
+
dimension2: rootModel.version,
|
|
88
|
+
dimension3: isElectron,
|
|
89
|
+
dimension4: loadTime,
|
|
90
|
+
dimension5: rootModel.jbrowse.plugins?.map(p => p.name).join(',') ?? '',
|
|
91
|
+
metric1: Math.round(loadTime),
|
|
92
|
+
};
|
|
93
|
+
// Plugin names come from the loaded config and are not trusted content (a
|
|
94
|
+
// config can be loaded from an arbitrary URL). Only this static bootstrap,
|
|
95
|
+
// with no interpolated data, is ever parsed as script source; gaData is
|
|
96
|
+
// handed to ga() as a real JS value afterward so untrusted strings can never
|
|
97
|
+
// break out of the <script> tag the way interpolating them into it would.
|
|
98
|
+
const analyticsBootstrap = "(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){" +
|
|
99
|
+
'(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),' +
|
|
100
|
+
'm=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)' +
|
|
101
|
+
"})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');";
|
|
102
|
+
const analyticsScriptNode = document.createElement('script');
|
|
103
|
+
analyticsScriptNode.innerHTML = analyticsBootstrap;
|
|
104
|
+
document.head.append(analyticsScriptNode);
|
|
105
|
+
window.ga?.('create', jbrowseUser, 'auto', 'jbrowseTracker');
|
|
106
|
+
window.ga?.('jbrowseTracker.send', 'pageview', gaData);
|
|
107
|
+
}
|
|
108
|
+
catch (e) {
|
|
109
|
+
console.warn('Failed to write analytics to GA.', e);
|
|
67
110
|
}
|
|
68
|
-
gaData.metric1 = Math.round(stats.loadTime);
|
|
69
|
-
analyticsScript += `ga('jbrowseTracker.send', 'pageview',${JSON.stringify(gaData)});`;
|
|
70
|
-
const analyticsScriptNode = document.createElement('script');
|
|
71
|
-
analyticsScriptNode.innerHTML = analyticsScript;
|
|
72
|
-
document.getElementsByTagName('head')[0].append(analyticsScriptNode);
|
|
73
111
|
}
|
|
112
|
+
// One pageview per page load, not per pluginManager. jbrowse-web rebuilds the
|
|
113
|
+
// whole pluginManager (and rootModel) whenever plugins change, and StrictMode
|
|
114
|
+
// builds it twice on mount — without this guard each rebuild re-pings AWS and
|
|
115
|
+
// appends another Google Analytics <script> to <head>, inflating pageviews and
|
|
116
|
+
// growing the document on every plugin install.
|
|
117
|
+
let analyticsSent = false;
|
|
74
118
|
export function doAnalytics(rootModel, initialTimestamp, initialSessionQuery) {
|
|
75
119
|
if (rootModel &&
|
|
120
|
+
!analyticsSent &&
|
|
76
121
|
!readConfObject(rootModel.jbrowse.configuration, 'disableAnalytics')) {
|
|
77
|
-
|
|
78
|
-
writeGAAnalytics
|
|
122
|
+
analyticsSent = true;
|
|
123
|
+
// Defer off the critical load path: writeGAAnalytics injects a third-party
|
|
124
|
+
// Google Analytics script and writeAWSAnalytics probes graphics
|
|
125
|
+
// capabilities, together ~hundreds of ms of main-thread work at startup.
|
|
126
|
+
// loadTime is still measured from initialTimestamp, so the reported metric
|
|
127
|
+
// is unaffected by running these when the browser is idle.
|
|
128
|
+
rIC(() => {
|
|
129
|
+
void writeAWSAnalytics(rootModel, initialTimestamp, initialSessionQuery);
|
|
130
|
+
void writeGAAnalytics(rootModel, initialTimestamp);
|
|
131
|
+
});
|
|
79
132
|
}
|
|
80
133
|
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { AnimationMode } from './types/index.ts';
|
|
2
|
+
/**
|
|
3
|
+
* Whether a motion may play at all, before anything about what would move is
|
|
4
|
+
* consulted: a frame clock has to exist, and the resolved animation mode has to
|
|
5
|
+
* allow motion — 'enabled' always does, 'disabled' never does, and 'system'
|
|
6
|
+
* honors the OS prefers-reduced-motion setting, so reduced-motion users get
|
|
7
|
+
* instant snaps unless they explicitly opt in. The mode comes from the session
|
|
8
|
+
* preference (`configuration.preferences.animationMode` + user override), which
|
|
9
|
+
* is `getSession(self).animationMode`.
|
|
10
|
+
*
|
|
11
|
+
* In core rather than beside either caller because the two that ask are a
|
|
12
|
+
* feature-layout morph in the canvas plugin and a viewport flight in the LGV,
|
|
13
|
+
* and a second copy of this check is a second answer to "does this user want
|
|
14
|
+
* motion" — the one a reduced-motion reader notices when only half the app
|
|
15
|
+
* honors it.
|
|
16
|
+
*/
|
|
17
|
+
export declare function animationAllowed(mode: AnimationMode): boolean;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether a motion may play at all, before anything about what would move is
|
|
3
|
+
* consulted: a frame clock has to exist, and the resolved animation mode has to
|
|
4
|
+
* allow motion — 'enabled' always does, 'disabled' never does, and 'system'
|
|
5
|
+
* honors the OS prefers-reduced-motion setting, so reduced-motion users get
|
|
6
|
+
* instant snaps unless they explicitly opt in. The mode comes from the session
|
|
7
|
+
* preference (`configuration.preferences.animationMode` + user override), which
|
|
8
|
+
* is `getSession(self).animationMode`.
|
|
9
|
+
*
|
|
10
|
+
* In core rather than beside either caller because the two that ask are a
|
|
11
|
+
* feature-layout morph in the canvas plugin and a viewport flight in the LGV,
|
|
12
|
+
* and a second copy of this check is a second answer to "does this user want
|
|
13
|
+
* motion" — the one a reduced-motion reader notices when only half the app
|
|
14
|
+
* honors it.
|
|
15
|
+
*/
|
|
16
|
+
export function animationAllowed(mode) {
|
|
17
|
+
const hasFrameClock = typeof requestAnimationFrame === 'function';
|
|
18
|
+
const prefersReduced = typeof matchMedia === 'function' &&
|
|
19
|
+
matchMedia('(prefers-reduced-motion: reduce)').matches;
|
|
20
|
+
return (hasFrameClock &&
|
|
21
|
+
(mode === 'enabled' || (mode === 'system' && !prefersReduced)));
|
|
22
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import type { IAnyModelType, IStateTreeNode, SnapshotIn } from '@jbrowse/mobx-state-tree';
|
|
2
|
+
/**
|
|
3
|
+
* A view's init type, derived: the keys its launcher interprets (`Commands`)
|
|
4
|
+
* plus every declared property of its state model, optional, in the property's
|
|
5
|
+
* own snapshot type. Nothing is restated, so a property is authorable — and
|
|
6
|
+
* TYPED — from the line that declares it.
|
|
7
|
+
*
|
|
8
|
+
* ```ts
|
|
9
|
+
* export type LinearSyntenyViewInit = ViewInit<
|
|
10
|
+
* LinearSyntenyViewStateModel,
|
|
11
|
+
* LinearSyntenyViewCommands
|
|
12
|
+
* >
|
|
13
|
+
* ```
|
|
14
|
+
*
|
|
15
|
+
* THE ONE RULE THIS DEPENDS ON: the model's own `init` property must be typed
|
|
16
|
+
* as the `Commands`, not as this. `init` is a property, so an `init` typed as
|
|
17
|
+
* the whole thing makes the whole thing depend on itself — TS7023 on the
|
|
18
|
+
* factory, then implicit-any across every file that touches the view (ADR-055,
|
|
19
|
+
* same failure the view/display instance pair has). Commands never mention the
|
|
20
|
+
* model, so typing `init` as those breaks the loop, and it costs nothing: the
|
|
21
|
+
* view's own code reads the commands out of `self.init`, and the settings half
|
|
22
|
+
* is read only by `applyInitSettings`, which asks the model rather than a type.
|
|
23
|
+
*/
|
|
24
|
+
export type ViewInit<M extends IAnyModelType, Commands> = Commands & Partial<Omit<SnapshotIn<M>, keyof Commands | (typeof RESERVED_KEYS)[number]>>;
|
|
25
|
+
export declare const RESERVED_KEYS: readonly ['id', 'type', 'init'];
|
|
26
|
+
export interface InitSettingsReport {
|
|
27
|
+
/** keys applied, in the order they were found */
|
|
28
|
+
applied: string[];
|
|
29
|
+
/** keys naming no declared property — a typo, or a prop that never existed */
|
|
30
|
+
unknown: string[];
|
|
31
|
+
/** declared keys whose value the property's own type rejected */
|
|
32
|
+
invalid: string[];
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Apply the plain-settings half of an `init` blob: every key naming a declared
|
|
36
|
+
* MST property of `self` is written straight to it, and the caller handles only
|
|
37
|
+
* the keys it names in `commands`.
|
|
38
|
+
*
|
|
39
|
+
* THE POINT IS THAT THERE IS NO PER-SETTING CODE. A view used to need a
|
|
40
|
+
* hand-written `if (init.x !== undefined) self.setX(init.x)` arm per property,
|
|
41
|
+
* so a new toggle worked from its menu the moment it was declared and was
|
|
42
|
+
* dropped in silence from every authored surface — a session spec, a share
|
|
43
|
+
* link, a config `defaultSession` — until someone remembered the second edit.
|
|
44
|
+
* Nobody did: `drawLocationMarkers` shipped unauthorable, and DotplotView's
|
|
45
|
+
* `alpha`/`drawCigar`/`lineWidth`/`lockAspectRatio` never had an arm at all.
|
|
46
|
+
* Reading the property list off the model at runtime means declaring the
|
|
47
|
+
* property IS declaring it authorable, including properties a composed mixin
|
|
48
|
+
* brings in (colorBy, showColorLegend), and there is nothing left to keep in
|
|
49
|
+
* sync.
|
|
50
|
+
*
|
|
51
|
+
* `commands` is what a launcher genuinely has to interpret: keys with no
|
|
52
|
+
* property behind them (`loc`, `autoDiagonalize`), keys whose name collides
|
|
53
|
+
* with a property meaning something else (a spec's `views` is a list of
|
|
54
|
+
* assemblies to open; the model's `views` is the built rows), and keys with an
|
|
55
|
+
* ordering constraint (`levelHeights` must land after the auto-scale pass).
|
|
56
|
+
* Listing one is a decision to write code for it; everything else needs none.
|
|
57
|
+
*
|
|
58
|
+
* WRITTEN AS A PATCH, not through `setX`. Applying init is state restoration,
|
|
59
|
+
* and the authority on that is MST: `applyPatch` validates each value against
|
|
60
|
+
* the property's own type and touches nothing else, where `applySnapshot`
|
|
61
|
+
* would rebuild the view's children. That it skips the setters is correct
|
|
62
|
+
* rather than a shortcut — a session reload restores the same state from a
|
|
63
|
+
* snapshot and calls no setters either, so a property needing a setter's side
|
|
64
|
+
* effect to be correct is already broken on reload, and the effect belongs in a
|
|
65
|
+
* reaction on the property.
|
|
66
|
+
*
|
|
67
|
+
* A value the property's type rejects is dropped and reported rather than
|
|
68
|
+
* thrown: init blobs come from URLs, and one bad number should not cost the
|
|
69
|
+
* reader the whole view.
|
|
70
|
+
*/
|
|
71
|
+
export declare function applyInitSettings(self: IStateTreeNode, init: object | undefined, { commands }?: {
|
|
72
|
+
commands?: readonly string[];
|
|
73
|
+
}): InitSettingsReport;
|
|
74
|
+
/**
|
|
75
|
+
* Say what `applyInitSettings` refused, naming the surface. Split from the
|
|
76
|
+
* apply so a caller under test can assert the report without a console, and so
|
|
77
|
+
* the two messages read the same wherever they come from.
|
|
78
|
+
*/
|
|
79
|
+
export declare function warnInitSettings(surface: string, report: InitSettingsReport): void;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { applyPatch, getPropertyMembers } from '@jbrowse/mobx-state-tree';
|
|
2
|
+
// Keys that are a view's identity or its plumbing rather than a setting. A
|
|
3
|
+
// launch spec never gets to write these: `type` picks the view, `id` is passed
|
|
4
|
+
// top-level so MST's optional identifier honors it, and `init` inside `init` is
|
|
5
|
+
// the nesting mistake loadSessionSpec already reports.
|
|
6
|
+
export const RESERVED_KEYS = ['id', 'type', 'init'];
|
|
7
|
+
const RESERVED = new Set(RESERVED_KEYS);
|
|
8
|
+
/**
|
|
9
|
+
* Apply the plain-settings half of an `init` blob: every key naming a declared
|
|
10
|
+
* MST property of `self` is written straight to it, and the caller handles only
|
|
11
|
+
* the keys it names in `commands`.
|
|
12
|
+
*
|
|
13
|
+
* THE POINT IS THAT THERE IS NO PER-SETTING CODE. A view used to need a
|
|
14
|
+
* hand-written `if (init.x !== undefined) self.setX(init.x)` arm per property,
|
|
15
|
+
* so a new toggle worked from its menu the moment it was declared and was
|
|
16
|
+
* dropped in silence from every authored surface — a session spec, a share
|
|
17
|
+
* link, a config `defaultSession` — until someone remembered the second edit.
|
|
18
|
+
* Nobody did: `drawLocationMarkers` shipped unauthorable, and DotplotView's
|
|
19
|
+
* `alpha`/`drawCigar`/`lineWidth`/`lockAspectRatio` never had an arm at all.
|
|
20
|
+
* Reading the property list off the model at runtime means declaring the
|
|
21
|
+
* property IS declaring it authorable, including properties a composed mixin
|
|
22
|
+
* brings in (colorBy, showColorLegend), and there is nothing left to keep in
|
|
23
|
+
* sync.
|
|
24
|
+
*
|
|
25
|
+
* `commands` is what a launcher genuinely has to interpret: keys with no
|
|
26
|
+
* property behind them (`loc`, `autoDiagonalize`), keys whose name collides
|
|
27
|
+
* with a property meaning something else (a spec's `views` is a list of
|
|
28
|
+
* assemblies to open; the model's `views` is the built rows), and keys with an
|
|
29
|
+
* ordering constraint (`levelHeights` must land after the auto-scale pass).
|
|
30
|
+
* Listing one is a decision to write code for it; everything else needs none.
|
|
31
|
+
*
|
|
32
|
+
* WRITTEN AS A PATCH, not through `setX`. Applying init is state restoration,
|
|
33
|
+
* and the authority on that is MST: `applyPatch` validates each value against
|
|
34
|
+
* the property's own type and touches nothing else, where `applySnapshot`
|
|
35
|
+
* would rebuild the view's children. That it skips the setters is correct
|
|
36
|
+
* rather than a shortcut — a session reload restores the same state from a
|
|
37
|
+
* snapshot and calls no setters either, so a property needing a setter's side
|
|
38
|
+
* effect to be correct is already broken on reload, and the effect belongs in a
|
|
39
|
+
* reaction on the property.
|
|
40
|
+
*
|
|
41
|
+
* A value the property's type rejects is dropped and reported rather than
|
|
42
|
+
* thrown: init blobs come from URLs, and one bad number should not cost the
|
|
43
|
+
* reader the whole view.
|
|
44
|
+
*/
|
|
45
|
+
export function applyInitSettings(self,
|
|
46
|
+
// `object` rather than a keyed record: an init blob's static type is the
|
|
47
|
+
// view's own `ViewInit`, which has named members and no index signature — by
|
|
48
|
+
// design, so a typo is a compile error there — and that is not assignable to
|
|
49
|
+
// `Record<string, unknown>`. This reads it by enumeration anyway.
|
|
50
|
+
init, { commands = [] } = {}) {
|
|
51
|
+
const report = { applied: [], unknown: [], invalid: [] };
|
|
52
|
+
if (!init) {
|
|
53
|
+
return report;
|
|
54
|
+
}
|
|
55
|
+
const skip = new Set(commands);
|
|
56
|
+
const { properties } = getPropertyMembers(self);
|
|
57
|
+
const patch = [];
|
|
58
|
+
for (const [key, value] of Object.entries(init)) {
|
|
59
|
+
if (skip.has(key) || RESERVED.has(key) || value === undefined) {
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
const propType = properties[key];
|
|
63
|
+
if (!propType) {
|
|
64
|
+
report.unknown.push(key);
|
|
65
|
+
}
|
|
66
|
+
else if (!propType.is(value)) {
|
|
67
|
+
report.invalid.push(key);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
patch.push({ op: 'replace', path: `/${key}`, value });
|
|
71
|
+
report.applied.push(key);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
if (patch.length) {
|
|
75
|
+
applyPatch(self, patch);
|
|
76
|
+
}
|
|
77
|
+
return report;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Say what `applyInitSettings` refused, naming the surface. Split from the
|
|
81
|
+
* apply so a caller under test can assert the report without a console, and so
|
|
82
|
+
* the two messages read the same wherever they come from.
|
|
83
|
+
*/
|
|
84
|
+
export function warnInitSettings(surface, report) {
|
|
85
|
+
if (report.unknown.length) {
|
|
86
|
+
console.warn(`${surface} ignored unknown key(s): ${report.unknown.join(', ')}`);
|
|
87
|
+
}
|
|
88
|
+
if (report.invalid.length) {
|
|
89
|
+
console.warn(`${surface} ignored key(s) with an invalid value: ${report.invalid.join(', ')}`);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
interface RowResizeTarget {
|
|
2
|
+
effectiveRowHeight: number;
|
|
3
|
+
scrollTop: number;
|
|
4
|
+
nrow: number;
|
|
5
|
+
viewportHeight: number;
|
|
6
|
+
setRowHeight: (n: number) => void;
|
|
7
|
+
setScrollTop: (n: number) => void;
|
|
8
|
+
}
|
|
9
|
+
export declare function applyRowResizeWheel(e: WheelEvent, el: HTMLElement, model: RowResizeTarget): void;
|
|
10
|
+
export {};
|