@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,175 @@
|
|
|
1
|
+
// Navigation gestures for a linear view, as two hooks a host can bind to an
|
|
2
|
+
// element it owns.
|
|
3
|
+
//
|
|
4
|
+
// This is the wiring between a pointing device and `zoomTo`/`horizontalScroll`,
|
|
5
|
+
// and it is the part of embedding a view that has no interesting variants: a
|
|
6
|
+
// wheel means the same thing in every genome browser, and getting it wrong is
|
|
7
|
+
// mostly invisible until a trackpad or a touchscreen is involved. JBrowse's own
|
|
8
|
+
// LinearGenomeView binds `useWheelZoom` to its tracks area, and an embedder
|
|
9
|
+
// building their own chrome around a view binds `usePanZoom` to theirs — same
|
|
10
|
+
// gestures, same feel, one implementation.
|
|
11
|
+
//
|
|
12
|
+
// Bind these to the data, not to the whole view. The chrome you leave out is
|
|
13
|
+
// the only surface a scroll-to-zoom user has left for scrolling the page: no
|
|
14
|
+
// modifier can serve as one, because browsers turn shift+wheel into horizontal
|
|
15
|
+
// scroll, ctrl/meta+wheel is how a trackpad reports a pinch, and Firefox binds
|
|
16
|
+
// alt+wheel to history navigation.
|
|
17
|
+
//
|
|
18
|
+
// The wheel half is `createWheelZoomController` (wheelZoom.ts), which is where
|
|
19
|
+
// the gesture decision matrix, the rAF batching and the zoom rate limit live.
|
|
20
|
+
//
|
|
21
|
+
// Scroll-to-zoom is off by default and so has to be found: what says so is the
|
|
22
|
+
// labelled toggle every view header carries (`ui/ScrollZoomToggle`), whose
|
|
23
|
+
// tooltip is also where ctrl/⌘+scroll — which zooms whatever the preference
|
|
24
|
+
// says — is named.
|
|
25
|
+
import { useEffect, useRef } from 'react';
|
|
26
|
+
import { createWheelZoomController } from './wheelZoom.js';
|
|
27
|
+
/**
|
|
28
|
+
* Wheel zoom and side-scroll, bound to `ref` for as long as the component
|
|
29
|
+
* lives.
|
|
30
|
+
*
|
|
31
|
+
* The listener is registered on the element directly and non-passively, which
|
|
32
|
+
* is not a style preference: React registers `wheel` at the root as a *passive*
|
|
33
|
+
* listener, so a handler installed through the `onWheel` prop cannot
|
|
34
|
+
* `preventDefault`, and the gesture would drive the page out from under you at
|
|
35
|
+
* the same time as it drove the view.
|
|
36
|
+
*/
|
|
37
|
+
export function useWheelZoom(ref, view) {
|
|
38
|
+
useEffect(() => {
|
|
39
|
+
const element = ref.current;
|
|
40
|
+
return element
|
|
41
|
+
? createWheelZoomController({
|
|
42
|
+
element,
|
|
43
|
+
// the view fills its own area and doesn't move under the cursor, so a
|
|
44
|
+
// mouseleave here really means the gesture belongs to the page now
|
|
45
|
+
releaseOnPointerLeave: true,
|
|
46
|
+
resolveTarget: () => ({
|
|
47
|
+
views: [view],
|
|
48
|
+
scrollZoom: !!view.scrollZoom,
|
|
49
|
+
originElement: () => element,
|
|
50
|
+
}),
|
|
51
|
+
})
|
|
52
|
+
: undefined;
|
|
53
|
+
}, [ref, view]);
|
|
54
|
+
}
|
|
55
|
+
// How far the pointer has to travel before a press counts as a pan rather than
|
|
56
|
+
// a click. Under this, the gesture is still a click and whatever is underneath
|
|
57
|
+
// gets to keep it.
|
|
58
|
+
const DRAG_THRESHOLD_PX = 4;
|
|
59
|
+
/**
|
|
60
|
+
* Every navigation gesture for a view, on one element: wheel zoom, side-scroll,
|
|
61
|
+
* and click-drag panning.
|
|
62
|
+
*
|
|
63
|
+
* ```tsx
|
|
64
|
+
* const ref = useWidthSetter(view)
|
|
65
|
+
* const { containerProps } = usePanZoom(ref, view)
|
|
66
|
+
* return (
|
|
67
|
+
* <div ref={ref} {...containerProps}>
|
|
68
|
+
* …tracks…
|
|
69
|
+
* </div>
|
|
70
|
+
* )
|
|
71
|
+
* ```
|
|
72
|
+
*
|
|
73
|
+
* **`touch-action: none` comes with it**, written onto `ref`'s element. Without
|
|
74
|
+
* it a browser claims a touch drag as a page scroll, the pointer stream never
|
|
75
|
+
* arrives, and the gestures below are bound and dead — on a phone only, so a
|
|
76
|
+
* demo written and tested on a desktop is inert with nothing in the console.
|
|
77
|
+
* Asking the host for it was one line of documentation against a silent failure
|
|
78
|
+
* on half the devices there are.
|
|
79
|
+
*
|
|
80
|
+
* Set imperatively rather than handed back as a style, because a host that
|
|
81
|
+
* spreads its own `style` on the same element would drop it. React writes only
|
|
82
|
+
* the style properties its own `style` prop names, so this survives every
|
|
83
|
+
* render that does not mention `touchAction` — and a host that does name one
|
|
84
|
+
* wins, which is the escape hatch. `touchAction` here is the other:
|
|
85
|
+
* `'pan-y'` for a view inside a long document that should still scroll the
|
|
86
|
+
* page vertically, or `false` to leave the property alone entirely.
|
|
87
|
+
*
|
|
88
|
+
* JBrowse's own view splits these across two elements (the wheel on the whole
|
|
89
|
+
* view, the drag on the tracks area, so a drag over the header does nothing) and
|
|
90
|
+
* so binds `useWheelZoom` plus its own `useSideScroll`. One element is the
|
|
91
|
+
* normal case for an embedder, and this is it.
|
|
92
|
+
*/
|
|
93
|
+
export function usePanZoom(ref, view, { touchAction = 'none', } = {}) {
|
|
94
|
+
// `x` is the last position a pan was applied from; `panning` is whether the
|
|
95
|
+
// press has travelled far enough to be a drag at all
|
|
96
|
+
const dragRef = useRef(undefined);
|
|
97
|
+
useWheelZoom(ref, view);
|
|
98
|
+
// restores rather than clears on the way out: the element may outlive this
|
|
99
|
+
// hook (a host that stops binding gestures without unmounting its container),
|
|
100
|
+
// and clearing would take a `touch-action` the host set for itself
|
|
101
|
+
useEffect(() => {
|
|
102
|
+
const element = ref.current;
|
|
103
|
+
if (!element || touchAction === false) {
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
// `|| ''` because a CSSOM that does not implement `touch-action` answers
|
|
107
|
+
// `undefined` (jsdom does), and writing that back is a write of the string
|
|
108
|
+
// "undefined" rather than a clear
|
|
109
|
+
const previous = element.style.touchAction || '';
|
|
110
|
+
element.style.touchAction = touchAction;
|
|
111
|
+
return () => {
|
|
112
|
+
element.style.touchAction = previous;
|
|
113
|
+
};
|
|
114
|
+
}, [ref, touchAction]);
|
|
115
|
+
function endDrag(event) {
|
|
116
|
+
dragRef.current = undefined;
|
|
117
|
+
// release only what the move handler took — a press that stayed under the
|
|
118
|
+
// threshold never captured anything
|
|
119
|
+
if (event.currentTarget.hasPointerCapture(event.pointerId)) {
|
|
120
|
+
event.currentTarget.releasePointerCapture(event.pointerId);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return {
|
|
124
|
+
containerProps: {
|
|
125
|
+
onPointerDown(event) {
|
|
126
|
+
// Leave the press alone when something else owns it: a control that
|
|
127
|
+
// claimed it (`[data-gesture-owner]`, JBrowse's marker on the parts
|
|
128
|
+
// that drag on their own — a display's vertical scrollbar, a resize
|
|
129
|
+
// handle), a button (the track-sizing button a display draws in its own
|
|
130
|
+
// corner), or a draggable element. `closest`, because the press usually
|
|
131
|
+
// lands on an icon inside the control. Shift is left alone too: it is
|
|
132
|
+
// what a range-select of the host's own would want, and it is what
|
|
133
|
+
// JBrowse's own view uses it for.
|
|
134
|
+
if (event.button !== 0 || event.shiftKey) {
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
if (event.target instanceof Element &&
|
|
138
|
+
event.target.closest('button, [data-gesture-owner], [draggable="true"]')) {
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
// Note what this does *not* do: capture the pointer. See onPointerMove.
|
|
142
|
+
dragRef.current = { x: event.clientX, panning: false };
|
|
143
|
+
},
|
|
144
|
+
onPointerMove(event) {
|
|
145
|
+
const drag = dragRef.current;
|
|
146
|
+
if (!drag) {
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
if (!drag.panning) {
|
|
150
|
+
if (Math.abs(event.clientX - drag.x) < DRAG_THRESHOLD_PX) {
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
// Past the threshold this is a pan, so take the pointer: the gesture
|
|
154
|
+
// has to keep panning when the cursor leaves the element, and end
|
|
155
|
+
// even if it is released outside the window.
|
|
156
|
+
//
|
|
157
|
+
// Capturing is deferred to here because it retargets the whole rest
|
|
158
|
+
// of the gesture — including the `click` that ends it — at this
|
|
159
|
+
// element. Capture on pointerdown instead and every click inside the
|
|
160
|
+
// view lands here, so nothing underneath ever sees one: a display's
|
|
161
|
+
// click-to-select-a-feature stops selecting. A press that never moves
|
|
162
|
+
// never captures, and stays the click it looks like.
|
|
163
|
+
drag.panning = true;
|
|
164
|
+
event.currentTarget.setPointerCapture(event.pointerId);
|
|
165
|
+
}
|
|
166
|
+
view.horizontalScroll(drag.x - event.clientX);
|
|
167
|
+
drag.x = event.clientX;
|
|
168
|
+
},
|
|
169
|
+
// pointercancel as well as pointerup: a touch drag interrupted by the
|
|
170
|
+
// browser never fires `up`, and the drag would stay latched
|
|
171
|
+
onPointerUp: endDrag,
|
|
172
|
+
onPointerCancel: endDrag,
|
|
173
|
+
},
|
|
174
|
+
};
|
|
175
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
interface PanelScrollTarget {
|
|
2
|
+
scrollTop: number;
|
|
3
|
+
scrollableHeight: number;
|
|
4
|
+
setScrollTop: (n: number) => void;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Wheel gestures over a **scrolled canvas panel** — the alignments pileup and
|
|
8
|
+
* the canvas basic display: a plain wheel scrolls it, `shift` keeps scrolling it
|
|
9
|
+
* once `scrollZoom` has claimed the plain wheel for the view, and ctrl/meta is
|
|
10
|
+
* left to the browser and the view's pinch-zoom. Nothing here resizes anything.
|
|
11
|
+
*
|
|
12
|
+
* These panels paint a fixed-size canvas at `-scrollTop` rather than living in a
|
|
13
|
+
* DOM overflow container, so nothing scrolls them without this. The latch (inside
|
|
14
|
+
* `applyScroll`) owns `preventDefault` but never `stopPropagation`, so a diagonal
|
|
15
|
+
* wheel still bubbles its horizontal component to the LGV for panning.
|
|
16
|
+
*
|
|
17
|
+
* ADR-027 keeps wheel-*intent* dispatch per handler, because the panels do not
|
|
18
|
+
* agree on what a gesture means. This is the second of the two rules that
|
|
19
|
+
* survived that split — the row-stack rule (`useRowVirtualScroll`, where `shift`
|
|
20
|
+
* resizes) is the other — and the two displays sharing it had byte-identical
|
|
21
|
+
* copies differing only in which getter named the viewport. The canvas display
|
|
22
|
+
* converged here when it moved off a native overflow container; the ADR's table
|
|
23
|
+
* still described its pre-virtual-scroll rule and has been corrected.
|
|
24
|
+
*
|
|
25
|
+
* `scrollZoom` and `viewportHeight` are inputs rather than reads off the model,
|
|
26
|
+
* so core needs no view typing and each display keeps naming its own viewport
|
|
27
|
+
* (the pileup's excludes the sticky coverage band; the canvas display's is the
|
|
28
|
+
* whole track).
|
|
29
|
+
*
|
|
30
|
+
* `panel` is the element wrapping the canvas AND the DOM overlays drawn over it,
|
|
31
|
+
* never the canvas alone — see `useVirtualScrollWheel`, which says why.
|
|
32
|
+
*/
|
|
33
|
+
export declare function usePanelVirtualScroll(panel: HTMLElement | null, model: PanelScrollTarget, { viewportHeight, scrollZoom, }: {
|
|
34
|
+
viewportHeight: number;
|
|
35
|
+
scrollZoom: boolean;
|
|
36
|
+
}): void;
|
|
37
|
+
export {};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { useVirtualScrollWheel } from './useVirtualScrollWheel.js';
|
|
2
|
+
/**
|
|
3
|
+
* Wheel gestures over a **scrolled canvas panel** — the alignments pileup and
|
|
4
|
+
* the canvas basic display: a plain wheel scrolls it, `shift` keeps scrolling it
|
|
5
|
+
* once `scrollZoom` has claimed the plain wheel for the view, and ctrl/meta is
|
|
6
|
+
* left to the browser and the view's pinch-zoom. Nothing here resizes anything.
|
|
7
|
+
*
|
|
8
|
+
* These panels paint a fixed-size canvas at `-scrollTop` rather than living in a
|
|
9
|
+
* DOM overflow container, so nothing scrolls them without this. The latch (inside
|
|
10
|
+
* `applyScroll`) owns `preventDefault` but never `stopPropagation`, so a diagonal
|
|
11
|
+
* wheel still bubbles its horizontal component to the LGV for panning.
|
|
12
|
+
*
|
|
13
|
+
* ADR-027 keeps wheel-*intent* dispatch per handler, because the panels do not
|
|
14
|
+
* agree on what a gesture means. This is the second of the two rules that
|
|
15
|
+
* survived that split — the row-stack rule (`useRowVirtualScroll`, where `shift`
|
|
16
|
+
* resizes) is the other — and the two displays sharing it had byte-identical
|
|
17
|
+
* copies differing only in which getter named the viewport. The canvas display
|
|
18
|
+
* converged here when it moved off a native overflow container; the ADR's table
|
|
19
|
+
* still described its pre-virtual-scroll rule and has been corrected.
|
|
20
|
+
*
|
|
21
|
+
* `scrollZoom` and `viewportHeight` are inputs rather than reads off the model,
|
|
22
|
+
* so core needs no view typing and each display keeps naming its own viewport
|
|
23
|
+
* (the pileup's excludes the sticky coverage band; the canvas display's is the
|
|
24
|
+
* whole track).
|
|
25
|
+
*
|
|
26
|
+
* `panel` is the element wrapping the canvas AND the DOM overlays drawn over it,
|
|
27
|
+
* never the canvas alone — see `useVirtualScrollWheel`, which says why.
|
|
28
|
+
*/
|
|
29
|
+
export function usePanelVirtualScroll(panel, model, { viewportHeight, scrollZoom, }) {
|
|
30
|
+
useVirtualScrollWheel(panel, (e, applyScroll) => {
|
|
31
|
+
if ((scrollZoom && !e.shiftKey) || e.ctrlKey || e.metaKey) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
applyScroll(e, {
|
|
35
|
+
scrollTop: model.scrollTop,
|
|
36
|
+
viewportHeight,
|
|
37
|
+
scrollableHeight: model.scrollableHeight,
|
|
38
|
+
}, n => {
|
|
39
|
+
model.setScrollTop(n);
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type React from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Pointer-capture drag lifecycle shared by draggable UI (resize handles,
|
|
4
|
+
* scrollbars, rubberbands, pan). On pointerdown it captures the pointer on the
|
|
5
|
+
* event's element, so the returned `onPointerMove`/`onPointerUp` fire on that
|
|
6
|
+
* same element even when the pointer leaves it — no window/document listeners,
|
|
7
|
+
* and the capture auto-releases if the element unmounts mid-drag.
|
|
8
|
+
*
|
|
9
|
+
* `onDrag` gets the live React pointer event. React nulls `event.currentTarget`
|
|
10
|
+
* after the handler returns, so snapshot `clientX`/`clientY` (and any target
|
|
11
|
+
* geometry) into locals synchronously before deferring work into a
|
|
12
|
+
* requestAnimationFrame.
|
|
13
|
+
*
|
|
14
|
+
* **One drag belongs to one pointer, and only a primary press starts it.**
|
|
15
|
+
* `pointerdown` fires for a right-click and for every extra finger, and a
|
|
16
|
+
* handler that takes them all reads as two different bugs: a right-press starts
|
|
17
|
+
* a drag that then runs under its own context menu, and a second finger landing
|
|
18
|
+
* mid-drag re-anchors the gesture, so the next move jumps by the distance
|
|
19
|
+
* between the two fingers. Tracking which pointer owns the drag is also what
|
|
20
|
+
* makes the move handler safe, since an uncaptured second pointer over the same
|
|
21
|
+
* element reports moves to it. `usePanZoom` guards its own pan the same way.
|
|
22
|
+
*
|
|
23
|
+
* The caller still owns `touch-action: none` on the element — without it the
|
|
24
|
+
* browser claims a touch drag as a page scroll and no pointer stream arrives at
|
|
25
|
+
* all. It stays a style rather than riding in the returned props because a
|
|
26
|
+
* caller's own `style` would silently replace it.
|
|
27
|
+
*/
|
|
28
|
+
export declare function usePointerDrag({ onDragStart, onDrag, onDragEnd, }: {
|
|
29
|
+
onDragStart?: (event: React.PointerEvent) => void;
|
|
30
|
+
onDrag: (event: React.PointerEvent) => void;
|
|
31
|
+
onDragEnd?: (event: React.PointerEvent) => void;
|
|
32
|
+
}): {
|
|
33
|
+
onPointerDown: (event: React.PointerEvent) => void;
|
|
34
|
+
onPointerMove: (event: React.PointerEvent) => void;
|
|
35
|
+
onPointerUp: (event: React.PointerEvent) => void;
|
|
36
|
+
onPointerCancel: (event: React.PointerEvent) => void;
|
|
37
|
+
};
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { useRef } from 'react';
|
|
2
|
+
import { useEventCallback } from './useEventCallback.js';
|
|
3
|
+
/**
|
|
4
|
+
* Pointer-capture drag lifecycle shared by draggable UI (resize handles,
|
|
5
|
+
* scrollbars, rubberbands, pan). On pointerdown it captures the pointer on the
|
|
6
|
+
* event's element, so the returned `onPointerMove`/`onPointerUp` fire on that
|
|
7
|
+
* same element even when the pointer leaves it — no window/document listeners,
|
|
8
|
+
* and the capture auto-releases if the element unmounts mid-drag.
|
|
9
|
+
*
|
|
10
|
+
* `onDrag` gets the live React pointer event. React nulls `event.currentTarget`
|
|
11
|
+
* after the handler returns, so snapshot `clientX`/`clientY` (and any target
|
|
12
|
+
* geometry) into locals synchronously before deferring work into a
|
|
13
|
+
* requestAnimationFrame.
|
|
14
|
+
*
|
|
15
|
+
* **One drag belongs to one pointer, and only a primary press starts it.**
|
|
16
|
+
* `pointerdown` fires for a right-click and for every extra finger, and a
|
|
17
|
+
* handler that takes them all reads as two different bugs: a right-press starts
|
|
18
|
+
* a drag that then runs under its own context menu, and a second finger landing
|
|
19
|
+
* mid-drag re-anchors the gesture, so the next move jumps by the distance
|
|
20
|
+
* between the two fingers. Tracking which pointer owns the drag is also what
|
|
21
|
+
* makes the move handler safe, since an uncaptured second pointer over the same
|
|
22
|
+
* element reports moves to it. `usePanZoom` guards its own pan the same way.
|
|
23
|
+
*
|
|
24
|
+
* The caller still owns `touch-action: none` on the element — without it the
|
|
25
|
+
* browser claims a touch drag as a page scroll and no pointer stream arrives at
|
|
26
|
+
* all. It stays a style rather than riding in the returned props because a
|
|
27
|
+
* caller's own `style` would silently replace it.
|
|
28
|
+
*/
|
|
29
|
+
export function usePointerDrag({ onDragStart, onDrag, onDragEnd, }) {
|
|
30
|
+
const activePointerRef = useRef(undefined);
|
|
31
|
+
const startStable = useEventCallback((event) => {
|
|
32
|
+
onDragStart?.(event);
|
|
33
|
+
});
|
|
34
|
+
const dragStable = useEventCallback(onDrag);
|
|
35
|
+
const endStable = useEventCallback((event) => {
|
|
36
|
+
onDragEnd?.(event);
|
|
37
|
+
});
|
|
38
|
+
function stop(event) {
|
|
39
|
+
if (activePointerRef.current === event.pointerId) {
|
|
40
|
+
activePointerRef.current = undefined;
|
|
41
|
+
endStable(event);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return {
|
|
45
|
+
onPointerDown: (event) => {
|
|
46
|
+
if (event.button !== 0 || activePointerRef.current !== undefined) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
activePointerRef.current = event.pointerId;
|
|
50
|
+
event.currentTarget.setPointerCapture(event.pointerId);
|
|
51
|
+
startStable(event);
|
|
52
|
+
},
|
|
53
|
+
onPointerMove: (event) => {
|
|
54
|
+
if (activePointerRef.current === event.pointerId) {
|
|
55
|
+
dragStable(event);
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
onPointerUp: stop,
|
|
59
|
+
onPointerCancel: stop,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { useCallback, useEffect, useRef } from 'react';
|
|
2
|
+
import { useEventCallback } from './useEventCallback.js';
|
|
3
|
+
// Coalesce rapid value writes to a single commit per animation frame. High-
|
|
4
|
+
// frequency DOM events (a thumb drag's pointermove, plus the browser's
|
|
5
|
+
// coalesced pointer batches) can fire faster than the frame rate; committing
|
|
6
|
+
// each synchronously reruns the downstream work — a canvas repaint, an overlay
|
|
7
|
+
// reconciliation — several times per frame, all but the last discarded.
|
|
8
|
+
//
|
|
9
|
+
// Values are absolute, so it's last-write-wins: a later `schedule` in the same
|
|
10
|
+
// frame overwrites the pending value. `flush` commits the pending value now
|
|
11
|
+
// (e.g. the gesture ended, so the resting position must be exact) and cancels
|
|
12
|
+
// the frame; the pending frame is also canceled on unmount so a late commit
|
|
13
|
+
// can't fire into a torn-down tree.
|
|
14
|
+
export function useRafCommit(commit) {
|
|
15
|
+
const stableCommit = useEventCallback(commit);
|
|
16
|
+
const pendingRef = useRef(undefined);
|
|
17
|
+
useEffect(() => () => {
|
|
18
|
+
const pending = pendingRef.current;
|
|
19
|
+
if (pending) {
|
|
20
|
+
cancelAnimationFrame(pending.id);
|
|
21
|
+
}
|
|
22
|
+
}, []);
|
|
23
|
+
const schedule = useCallback((value) => {
|
|
24
|
+
const pending = pendingRef.current;
|
|
25
|
+
if (pending) {
|
|
26
|
+
pending.value = value;
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
pendingRef.current = {
|
|
30
|
+
value,
|
|
31
|
+
id: requestAnimationFrame(() => {
|
|
32
|
+
const cur = pendingRef.current;
|
|
33
|
+
pendingRef.current = undefined;
|
|
34
|
+
if (cur) {
|
|
35
|
+
stableCommit(cur.value);
|
|
36
|
+
}
|
|
37
|
+
}),
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
}, [stableCommit]);
|
|
41
|
+
const flush = useCallback(() => {
|
|
42
|
+
const pending = pendingRef.current;
|
|
43
|
+
if (pending) {
|
|
44
|
+
cancelAnimationFrame(pending.id);
|
|
45
|
+
pendingRef.current = undefined;
|
|
46
|
+
stableCommit(pending.value);
|
|
47
|
+
}
|
|
48
|
+
}, [stableCommit]);
|
|
49
|
+
return { schedule, flush };
|
|
50
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import type React from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* A pointer drag along one axis, reported as a distance per animation frame.
|
|
4
|
+
*
|
|
5
|
+
* This is the whole gesture behind a resize handle with no opinion about how the
|
|
6
|
+
* handle looks. `ui/ResizeHandle` is this hook plus JBrowse's own 4px bar, and an
|
|
7
|
+
* app drawing its own divider spreads the returned props onto it. That is the
|
|
8
|
+
* per-track resize story for an embedder who mounts displays themselves: the
|
|
9
|
+
* track row is the host's box, so the bar has to be theirs, but the gesture and
|
|
10
|
+
* the two model calls are not.
|
|
11
|
+
*
|
|
12
|
+
* ```tsx
|
|
13
|
+
* const handleProps = useResizeDrag({
|
|
14
|
+
* onDrag: distance => {
|
|
15
|
+
* display.resizeHeight(distance)
|
|
16
|
+
* },
|
|
17
|
+
* onDragStart: () => {
|
|
18
|
+
* track.setResizing(true)
|
|
19
|
+
* },
|
|
20
|
+
* onDragEnd: () => {
|
|
21
|
+
* track.setResizing(false)
|
|
22
|
+
* },
|
|
23
|
+
* })
|
|
24
|
+
* return (
|
|
25
|
+
* <div
|
|
26
|
+
* {...handleProps}
|
|
27
|
+
* style={{ height: 4, cursor: 'row-resize', touchAction: 'none' }}
|
|
28
|
+
* />
|
|
29
|
+
* )
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* `touchAction: 'none'` is the caller's half of the deal: without it the browser
|
|
33
|
+
* claims a touch drag as a page scroll and the pointer stream never arrives.
|
|
34
|
+
* `usePanZoom` writes the same property itself and this cannot — that one is
|
|
35
|
+
* handed the element as a ref, while this returns props and never sees a node.
|
|
36
|
+
* It stays out of those props because a caller's own `style` would silently
|
|
37
|
+
* replace it.
|
|
38
|
+
*
|
|
39
|
+
* Three things a hand-rolled version gets wrong, none of which fails loudly:
|
|
40
|
+
*
|
|
41
|
+
* - **One commit per frame.** A pointermove stream (plus the browser's own
|
|
42
|
+
* coalesced batches) outruns the frame rate, and each commit reruns whatever
|
|
43
|
+
* the resize drives. Committing per event relayouts a pileup several times a
|
|
44
|
+
* frame and throws all but the last away.
|
|
45
|
+
* - **The distance is measured from the last commit**, not from where the press
|
|
46
|
+
* started, so a dropped intermediate position costs nothing and a drag that
|
|
47
|
+
* runs into a clamp (`resizeHeight` stops at the display's minimum) does not
|
|
48
|
+
* bank a debt the pointer has to pay back on the way out.
|
|
49
|
+
* - **`data-gesture-owner` rides in the props.** It is the marker ancestor
|
|
50
|
+
* gestures test for (`closest('[data-gesture-owner]')`, in the LGV's own pan
|
|
51
|
+
* and in `usePanZoom`) before starting a drag of their own, so without it
|
|
52
|
+
* dragging a resize bar pans the view sideways instead. A `stopPropagation` is
|
|
53
|
+
* not a substitute: those ancestors listen on *mouse* events while this runs
|
|
54
|
+
* on *pointer* events, so there is no shared event to stop, and stopping the
|
|
55
|
+
* mousedown would also cost focus-on-click, whose document-level listener
|
|
56
|
+
* (`useFocusOnInteraction`) React's stopPropagation does block.
|
|
57
|
+
*/
|
|
58
|
+
export declare function useResizeDrag({ onDrag, onDragStart, onDragEnd, vertical, gain, }: {
|
|
59
|
+
/**
|
|
60
|
+
* How far the pointer has travelled since the last committed frame, in px —
|
|
61
|
+
* divided by `gain`, and whole.
|
|
62
|
+
*/
|
|
63
|
+
onDrag: (distance: number) => void;
|
|
64
|
+
onDragStart?: () => void;
|
|
65
|
+
onDragEnd?: () => void;
|
|
66
|
+
/**
|
|
67
|
+
* A vertical divider, dragged left/right (so the distance comes off `clientX`).
|
|
68
|
+
* The default is a horizontal divider dragged up/down, which is a track
|
|
69
|
+
* resize.
|
|
70
|
+
*/
|
|
71
|
+
vertical?: boolean;
|
|
72
|
+
/**
|
|
73
|
+
* How many px this handle's own position moves per px the dragged value
|
|
74
|
+
* changes. The default 1 is a divider that moves with what it sizes.
|
|
75
|
+
*
|
|
76
|
+
* It is more than 1 whenever the value is SHARED by several stacked copies and
|
|
77
|
+
* this handle sits below more than one of them: the second of three synteny
|
|
78
|
+
* ribbons, or the second group's coverage band in a grouped pileup, moves 2px
|
|
79
|
+
* for every 1px of height, so an undivided drag ran the bar away at twice the
|
|
80
|
+
* pointer's speed and slid it out from under the cursor. Divide by the number
|
|
81
|
+
* of copies at or above the handle and the bar stays put; the value then
|
|
82
|
+
* changes by a fraction of the drag, which is what sharing it means.
|
|
83
|
+
*/
|
|
84
|
+
gain?: number;
|
|
85
|
+
}): {
|
|
86
|
+
onPointerMove: (event: React.PointerEvent) => void;
|
|
87
|
+
onPointerUp: (event: React.PointerEvent) => void;
|
|
88
|
+
onPointerCancel: (event: React.PointerEvent) => void;
|
|
89
|
+
onPointerDown: (event: React.PointerEvent) => void;
|
|
90
|
+
'data-gesture-owner': string;
|
|
91
|
+
};
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { useRef } from 'react';
|
|
2
|
+
import { usePointerDrag } from './usePointerDrag.js';
|
|
3
|
+
import { useRafCommit } from './useRafCommit.js';
|
|
4
|
+
/**
|
|
5
|
+
* A pointer drag along one axis, reported as a distance per animation frame.
|
|
6
|
+
*
|
|
7
|
+
* This is the whole gesture behind a resize handle with no opinion about how the
|
|
8
|
+
* handle looks. `ui/ResizeHandle` is this hook plus JBrowse's own 4px bar, and an
|
|
9
|
+
* app drawing its own divider spreads the returned props onto it. That is the
|
|
10
|
+
* per-track resize story for an embedder who mounts displays themselves: the
|
|
11
|
+
* track row is the host's box, so the bar has to be theirs, but the gesture and
|
|
12
|
+
* the two model calls are not.
|
|
13
|
+
*
|
|
14
|
+
* ```tsx
|
|
15
|
+
* const handleProps = useResizeDrag({
|
|
16
|
+
* onDrag: distance => {
|
|
17
|
+
* display.resizeHeight(distance)
|
|
18
|
+
* },
|
|
19
|
+
* onDragStart: () => {
|
|
20
|
+
* track.setResizing(true)
|
|
21
|
+
* },
|
|
22
|
+
* onDragEnd: () => {
|
|
23
|
+
* track.setResizing(false)
|
|
24
|
+
* },
|
|
25
|
+
* })
|
|
26
|
+
* return (
|
|
27
|
+
* <div
|
|
28
|
+
* {...handleProps}
|
|
29
|
+
* style={{ height: 4, cursor: 'row-resize', touchAction: 'none' }}
|
|
30
|
+
* />
|
|
31
|
+
* )
|
|
32
|
+
* ```
|
|
33
|
+
*
|
|
34
|
+
* `touchAction: 'none'` is the caller's half of the deal: without it the browser
|
|
35
|
+
* claims a touch drag as a page scroll and the pointer stream never arrives.
|
|
36
|
+
* `usePanZoom` writes the same property itself and this cannot — that one is
|
|
37
|
+
* handed the element as a ref, while this returns props and never sees a node.
|
|
38
|
+
* It stays out of those props because a caller's own `style` would silently
|
|
39
|
+
* replace it.
|
|
40
|
+
*
|
|
41
|
+
* Three things a hand-rolled version gets wrong, none of which fails loudly:
|
|
42
|
+
*
|
|
43
|
+
* - **One commit per frame.** A pointermove stream (plus the browser's own
|
|
44
|
+
* coalesced batches) outruns the frame rate, and each commit reruns whatever
|
|
45
|
+
* the resize drives. Committing per event relayouts a pileup several times a
|
|
46
|
+
* frame and throws all but the last away.
|
|
47
|
+
* - **The distance is measured from the last commit**, not from where the press
|
|
48
|
+
* started, so a dropped intermediate position costs nothing and a drag that
|
|
49
|
+
* runs into a clamp (`resizeHeight` stops at the display's minimum) does not
|
|
50
|
+
* bank a debt the pointer has to pay back on the way out.
|
|
51
|
+
* - **`data-gesture-owner` rides in the props.** It is the marker ancestor
|
|
52
|
+
* gestures test for (`closest('[data-gesture-owner]')`, in the LGV's own pan
|
|
53
|
+
* and in `usePanZoom`) before starting a drag of their own, so without it
|
|
54
|
+
* dragging a resize bar pans the view sideways instead. A `stopPropagation` is
|
|
55
|
+
* not a substitute: those ancestors listen on *mouse* events while this runs
|
|
56
|
+
* on *pointer* events, so there is no shared event to stop, and stopping the
|
|
57
|
+
* mousedown would also cost focus-on-click, whose document-level listener
|
|
58
|
+
* (`useFocusOnInteraction`) React's stopPropagation does block.
|
|
59
|
+
*/
|
|
60
|
+
export function useResizeDrag({ onDrag, onDragStart, onDragEnd, vertical = false, gain = 1, }) {
|
|
61
|
+
const prevPosRef = useRef(0);
|
|
62
|
+
const getPos = (event) => vertical ? event.clientX : event.clientY;
|
|
63
|
+
// The scheduled value is the absolute pointer position, last-write-wins, and
|
|
64
|
+
// the delta against the previous commit is derived here.
|
|
65
|
+
//
|
|
66
|
+
// Whole px, and the remainder stays in the baseline rather than in a second
|
|
67
|
+
// ref: a divided delta has a sub-pixel tail, and every consumer rounds (a band
|
|
68
|
+
// height is whole px), so rounding it away each frame instead made a gain-2
|
|
69
|
+
// drag travel 4/3 of the pointer. Leaving the unspent fraction ahead of
|
|
70
|
+
// `prevPos` is the same mechanism that keeps a drag into a clamp from banking
|
|
71
|
+
// debt — the distance is always measured from what was last committed.
|
|
72
|
+
const { schedule, flush } = useRafCommit(pos => {
|
|
73
|
+
const distance = Math.trunc((pos - prevPosRef.current) / gain);
|
|
74
|
+
if (distance !== 0) {
|
|
75
|
+
prevPosRef.current += distance * gain;
|
|
76
|
+
onDrag(distance);
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
const handlers = usePointerDrag({
|
|
80
|
+
onDragStart: event => {
|
|
81
|
+
prevPosRef.current = getPos(event);
|
|
82
|
+
onDragStart?.();
|
|
83
|
+
},
|
|
84
|
+
onDrag: event => {
|
|
85
|
+
event.preventDefault();
|
|
86
|
+
// read the position synchronously: the deferred commit runs after React
|
|
87
|
+
// has nulled the event
|
|
88
|
+
schedule(getPos(event));
|
|
89
|
+
},
|
|
90
|
+
onDragEnd: () => {
|
|
91
|
+
// land the resting size exactly, rather than a frame late
|
|
92
|
+
flush();
|
|
93
|
+
onDragEnd?.();
|
|
94
|
+
},
|
|
95
|
+
});
|
|
96
|
+
return {
|
|
97
|
+
...handlers,
|
|
98
|
+
onPointerDown: (event) => {
|
|
99
|
+
// stops the press from starting a text selection that follows the drag
|
|
100
|
+
event.preventDefault();
|
|
101
|
+
handlers.onPointerDown(event);
|
|
102
|
+
},
|
|
103
|
+
'data-gesture-owner': 'true',
|
|
104
|
+
};
|
|
105
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
interface RowScrollTarget {
|
|
2
|
+
effectiveRowHeight: number;
|
|
3
|
+
scrollTop: number;
|
|
4
|
+
nrow: number;
|
|
5
|
+
scrollableHeight: number;
|
|
6
|
+
setRowHeight: (n: number) => void;
|
|
7
|
+
setScrollTop: (n: number) => void;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Wheel gestures over a **row-stack** panel — the multi-sample variant displays
|
|
11
|
+
* and MAF: `shift`+wheel resizes the rows (a vertical-zoom that keeps the row
|
|
12
|
+
* under the cursor put), a plain wheel scrolls them, and anything the panel
|
|
13
|
+
* can't consume is left to bubble to the view.
|
|
14
|
+
*
|
|
15
|
+
* These panels paint a fixed-size canvas at `-scrollTop` rather than living in a
|
|
16
|
+
* DOM overflow container, so nothing scrolls them without this.
|
|
17
|
+
*
|
|
18
|
+
* ADR-027 keeps wheel-*intent* dispatch per handler, because the four panels do
|
|
19
|
+
* not agree on what a gesture means — and that still holds. This is the one rule
|
|
20
|
+
* two of them genuinely share, which the ADR states outright ("same rule as the
|
|
21
|
+
* variant displays, and deliberately so: same sample-row shape, same coupled
|
|
22
|
+
* row-height axis"). It is unified for exactly that reason, and no further: the
|
|
23
|
+
* pileup / canvas-basic rule (`shift` scrolls, nothing resizes) stays where it
|
|
24
|
+
* is. `scrollZoom` and `viewportHeight` are inputs rather than reads off the
|
|
25
|
+
* model, so core needs no view typing and each display keeps naming its own
|
|
26
|
+
* rows-area height.
|
|
27
|
+
*/
|
|
28
|
+
export declare function useRowVirtualScroll(el: HTMLElement | null, model: RowScrollTarget, { viewportHeight, scrollZoom, }: {
|
|
29
|
+
viewportHeight: number;
|
|
30
|
+
scrollZoom: boolean;
|
|
31
|
+
}): void;
|
|
32
|
+
export {};
|