@jbrowse/core 4.3.0 → 5.0.0-beta.10
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 +1994 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.d.ts +14 -3
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.js +36 -23
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.d.ts +10 -7
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.js +124 -21
- 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 -5
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCoreDetails.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCoreDetails.js +4 -4
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BasicValue.d.ts +12 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BasicValue.js +19 -5
- package/esm/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.js +18 -23
- package/esm/BaseFeatureWidget/BaseFeatureDetail/DataGridDetails.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/DataGridDetails.js +19 -40
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.d.ts +9 -6
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.js +33 -30
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetailsFrame.d.ts +11 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetailsFrame.js +11 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureWash.d.ts +20 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureWash.js +66 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldActionsButton.d.ts +8 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldActionsButton.js +24 -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 +19 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ParentFeatureLine.d.ts +4 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ParentFeatureLine.js +17 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/SimpleField.d.ts +5 -3
- package/esm/BaseFeatureWidget/BaseFeatureDetail/SimpleField.js +8 -6
- package/esm/BaseFeatureWidget/BaseFeatureDetail/UriField.d.ts +3 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/UriField.js +7 -14
- package/esm/BaseFeatureWidget/BaseFeatureDetail/index.d.ts +7 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/index.js +15 -20
- package/esm/BaseFeatureWidget/BaseFeatureDetail/jexlFilterActions.d.ts +16 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/jexlFilterActions.js +50 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/util.d.ts +0 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/util.js +9 -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 +35 -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 +3 -3
- 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 +20 -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 +62 -63
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/model.js +69 -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/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.d.ts +1 -1
- package/esm/BaseFeatureWidget/configSchema.js +1 -1
- package/esm/BaseFeatureWidget/formatDetails.d.ts +22 -0
- package/esm/BaseFeatureWidget/formatDetails.js +82 -0
- package/esm/BaseFeatureWidget/index.d.ts +4 -1
- package/esm/BaseFeatureWidget/index.js +2 -2
- package/esm/BaseFeatureWidget/stateModelFactory.d.ts +102 -71
- package/esm/BaseFeatureWidget/stateModelFactory.js +162 -63
- package/esm/BaseFeatureWidget/types.d.ts +15 -8
- package/esm/BaseFeatureWidget/util.d.ts +2 -37
- package/esm/BaseFeatureWidget/util.js +4 -85
- package/esm/CorePlugin.js +12 -7
- 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 +55 -44
- package/esm/PluginLoader.js +290 -90
- package/esm/PluginManager.d.ts +476 -57
- package/esm/PluginManager.js +480 -91
- package/esm/ReExports/MuiDataGridReExports.d.ts +3 -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/coreModules.generated.d.ts +2 -0
- package/esm/ReExports/coreModules.generated.js +528 -0
- package/esm/ReExports/coreWorkerModules.generated.d.ts +2 -0
- package/esm/ReExports/coreWorkerModules.generated.js +488 -0
- package/esm/ReExports/frameworkModules.d.ts +2 -0
- package/esm/ReExports/frameworkModules.js +68 -0
- package/esm/ReExports/frameworkShared.d.ts +12 -0
- package/esm/ReExports/frameworkShared.js +16 -0
- package/esm/ReExports/frameworkWorkerModules.generated.d.ts +2 -0
- package/esm/ReExports/frameworkWorkerModules.generated.js +130 -0
- package/esm/ReExports/lazify.d.ts +2 -2
- package/esm/ReExports/lazify.js +16 -3
- package/esm/ReExports/list.js +433 -160
- package/esm/ReExports/modules.d.ts +1 -1
- package/esm/ReExports/modules.js +10 -146
- package/esm/ReExports/muiComponentNames.d.ts +18 -0
- package/esm/ReExports/muiComponentNames.js +130 -0
- package/esm/ReExports/registry.d.ts +3 -0
- package/esm/ReExports/registry.js +46 -0
- package/esm/ReExports/uiStub.d.ts +3 -0
- package/esm/ReExports/uiStub.js +33 -0
- package/esm/ReExports/workerModules.d.ts +2 -0
- package/esm/ReExports/workerModules.js +11 -0
- package/esm/TextSearch/BaseResults.d.ts +20 -21
- package/esm/TextSearch/BaseResults.js +8 -33
- package/esm/TextSearch/TextSearchManager.d.ts +30 -36
- package/esm/TextSearch/TextSearchManager.js +138 -44
- package/esm/TextSearch/places.d.ts +12 -0
- package/esm/TextSearch/places.js +94 -0
- package/esm/assemblyManager/assembly.d.ts +310 -35
- package/esm/assemblyManager/assembly.js +554 -263
- package/esm/assemblyManager/assemblyAdapters.d.ts +12 -0
- package/esm/assemblyManager/assemblyAdapters.js +24 -0
- package/esm/assemblyManager/assemblyConfigSchema.d.ts +135 -19
- package/esm/assemblyManager/assemblyConfigSchema.js +205 -23
- package/esm/assemblyManager/assemblyManager.d.ts +586 -323
- package/esm/assemblyManager/assemblyManager.js +352 -51
- package/esm/assemblyManager/expandAssemblyConfigShorthand.d.ts +39 -0
- package/esm/assemblyManager/expandAssemblyConfigShorthand.js +114 -0
- package/esm/assemblyManager/geneticCodes.d.ts +21 -0
- package/esm/assemblyManager/geneticCodes.js +44 -0
- package/esm/assemblyManager/getSequenceAdapterConfig.d.ts +19 -0
- package/esm/assemblyManager/getSequenceAdapterConfig.js +22 -0
- package/esm/assemblyManager/index.d.ts +1 -1
- package/esm/assemblyManager/index.js +2 -2
- package/esm/assemblyManager/indexAssemblyNames.d.ts +9 -0
- package/esm/assemblyManager/indexAssemblyNames.js +22 -0
- package/esm/assemblyManager/loadRefNameMap.d.ts +5 -0
- package/esm/assemblyManager/loadRefNameMap.js +75 -0
- package/esm/assemblyManager/refNameColors.d.ts +1 -0
- package/esm/assemblyManager/refNameColors.js +32 -0
- package/esm/assemblyManager/refNameMapKey.d.ts +7 -0
- package/esm/assemblyManager/refNameMapKey.js +12 -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 +13 -0
- package/esm/checkPlugins.js +98 -0
- package/esm/configuration/bamIndexFields.d.ts +49 -0
- package/esm/configuration/bamIndexFields.js +41 -0
- package/esm/configuration/configurationSchema.d.ts +194 -29
- package/esm/configuration/configurationSchema.js +439 -145
- package/esm/configuration/configurationSchemaUnion.d.ts +39 -0
- package/esm/configuration/configurationSchemaUnion.js +56 -0
- package/esm/configuration/configurationSlot.d.ts +373 -30
- package/esm/configuration/configurationSlot.js +231 -224
- package/esm/configuration/fillLocations.d.ts +14 -0
- package/esm/configuration/fillLocations.js +14 -0
- package/esm/configuration/formatAboutConfigSchema.d.ts +41 -0
- package/esm/configuration/formatAboutConfigSchema.js +58 -0
- package/esm/configuration/formatDetailsConfigSchema.d.ts +54 -0
- package/esm/configuration/formatDetailsConfigSchema.js +87 -0
- package/esm/configuration/fullConfSnapshot.d.ts +13 -0
- package/esm/configuration/fullConfSnapshot.js +44 -0
- package/esm/configuration/getConf.d.ts +92 -0
- package/esm/configuration/getConf.js +141 -0
- package/esm/configuration/index.d.ts +32 -3
- package/esm/configuration/index.js +27 -2
- package/esm/configuration/indexType.d.ts +26 -0
- package/esm/configuration/indexType.js +38 -0
- package/esm/configuration/mergeFormatCallbacks.d.ts +14 -0
- package/esm/configuration/mergeFormatCallbacks.js +27 -0
- package/esm/configuration/readConfObject.d.ts +34 -0
- package/esm/configuration/readConfObject.js +118 -0
- package/esm/configuration/requirements.d.ts +37 -0
- package/esm/configuration/requirements.js +88 -0
- package/esm/configuration/schemaRegistry.d.ts +52 -0
- package/esm/configuration/schemaRegistry.js +48 -0
- package/esm/configuration/schemaTypes.d.ts +39 -0
- package/esm/configuration/schemaTypes.js +105 -0
- package/esm/configuration/slotFacade.d.ts +65 -0
- package/esm/configuration/slotFacade.js +110 -0
- package/esm/configuration/slotValueUtils.d.ts +17 -0
- package/esm/configuration/slotValueUtils.js +25 -0
- package/esm/configuration/snapshotPreprocess.d.ts +43 -0
- package/esm/configuration/snapshotPreprocess.js +161 -0
- package/esm/configuration/tabixIndexFields.d.ts +70 -0
- package/esm/configuration/tabixIndexFields.js +62 -0
- package/esm/configuration/tabixShorthand.d.ts +51 -0
- package/esm/configuration/tabixShorthand.js +72 -0
- package/esm/configuration/types.d.ts +315 -13
- package/esm/configuration/uriShorthand.d.ts +9 -0
- package/esm/configuration/uriShorthand.js +16 -0
- package/esm/data_adapters/BaseAdapter/BaseAdapter.d.ts +19 -11
- package/esm/data_adapters/BaseAdapter/BaseAdapter.js +19 -18
- package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.d.ts +158 -7
- package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.js +164 -29
- package/esm/data_adapters/BaseAdapter/BaseRefNameAliasAdapter.d.ts +1 -0
- package/esm/data_adapters/BaseAdapter/BaseSequenceAdapter.d.ts +13 -5
- package/esm/data_adapters/BaseAdapter/BaseSequenceAdapter.js +9 -7
- package/esm/data_adapters/BaseAdapter/BaseTextSearchAdapter.d.ts +2 -1
- package/esm/data_adapters/BaseAdapter/CytobandAdapter.d.ts +7 -0
- package/esm/data_adapters/BaseAdapter/RegionsAdapter.d.ts +2 -1
- package/esm/data_adapters/BaseAdapter/featureDensity.d.ts +40 -0
- package/esm/data_adapters/BaseAdapter/featureDensity.js +31 -0
- package/esm/data_adapters/BaseAdapter/getAdapterId.d.ts +2 -0
- package/esm/data_adapters/BaseAdapter/getAdapterId.js +9 -0
- package/esm/data_adapters/BaseAdapter/index.d.ts +28 -6
- package/esm/data_adapters/BaseAdapter/index.js +6 -5
- package/esm/data_adapters/BaseAdapter/rowSources.d.ts +37 -0
- package/esm/data_adapters/BaseAdapter/rowSources.js +7 -0
- package/esm/data_adapters/BaseAdapter/stats.d.ts +37 -5
- package/esm/data_adapters/BaseAdapter/stats.js +89 -24
- package/esm/data_adapters/BaseAdapter/types.d.ts +11 -13
- 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/BaseAdapter/zoomRange.d.ts +10 -0
- package/esm/data_adapters/CytobandAdapter/CytobandAdapter.d.ts +1 -1
- package/esm/data_adapters/CytobandAdapter/CytobandAdapter.js +5 -5
- package/esm/data_adapters/CytobandAdapter/configSchema.d.ts +34 -6
- package/esm/data_adapters/CytobandAdapter/configSchema.js +47 -17
- 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 +53 -2
- package/esm/data_adapters/dataAdapterCache.js +99 -25
- package/esm/data_adapters/getFeatureAdapter.d.ts +24 -0
- package/esm/data_adapters/getFeatureAdapter.js +27 -0
- package/esm/data_adapters/getSequenceSubAdapter.d.ts +19 -0
- package/esm/data_adapters/getSequenceSubAdapter.js +42 -0
- package/esm/pluggableElementTypes/AdapterType.d.ts +57 -7
- 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 +54 -14
- package/esm/pluggableElementTypes/DisplayType.js +30 -7
- package/esm/pluggableElementTypes/InternetAccountType.js +1 -1
- package/esm/pluggableElementTypes/LazyStateModelElement.d.ts +32 -0
- package/esm/pluggableElementTypes/LazyStateModelElement.js +77 -0
- package/esm/pluggableElementTypes/PluggableElementBase.d.ts +11 -0
- package/esm/pluggableElementTypes/PluggableElementBase.js +11 -0
- package/esm/pluggableElementTypes/RpcMethodType.d.ts +142 -12
- package/esm/pluggableElementTypes/RpcMethodType.js +279 -98
- package/esm/pluggableElementTypes/RpcMethodTypeWithFiltersAndRenameRegions.d.ts +18 -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 +7 -7
- 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 +22 -5
- package/esm/pluggableElementTypes/ViewType.js +40 -5
- package/esm/pluggableElementTypes/WidgetType.d.ts +2 -2
- package/esm/pluggableElementTypes/WidgetType.js +1 -1
- package/esm/pluggableElementTypes/addMenuItems.d.ts +88 -0
- package/esm/pluggableElementTypes/addMenuItems.js +82 -0
- package/esm/pluggableElementTypes/extendElementType.d.ts +29 -0
- package/esm/pluggableElementTypes/extendElementType.js +72 -0
- package/esm/pluggableElementTypes/index.d.ts +8 -7
- package/esm/pluggableElementTypes/index.js +24 -14
- package/esm/pluggableElementTypes/models/BaseConnectionModelFactory.d.ts +80 -15
- package/esm/pluggableElementTypes/models/BaseConnectionModelFactory.js +90 -10
- package/esm/pluggableElementTypes/models/BaseDisplayModel.d.ts +643 -84
- package/esm/pluggableElementTypes/models/BaseDisplayModel.js +230 -60
- package/esm/pluggableElementTypes/models/BaseTrackModel.d.ts +246 -37
- package/esm/pluggableElementTypes/models/BaseTrackModel.js +416 -107
- package/esm/pluggableElementTypes/models/BaseViewModel.d.ts +236 -16
- package/esm/pluggableElementTypes/models/BaseViewModel.js +154 -16
- package/esm/pluggableElementTypes/models/InternetAccountModel.d.ts +169 -25
- package/esm/pluggableElementTypes/models/InternetAccountModel.js +218 -48
- package/esm/pluggableElementTypes/models/assertDisplayContract.d.ts +178 -0
- package/esm/pluggableElementTypes/models/assertDisplayContract.js +239 -0
- package/esm/pluggableElementTypes/models/baseConnectionConfig.d.ts +26 -8
- package/esm/pluggableElementTypes/models/baseConnectionConfig.js +18 -2
- package/esm/pluggableElementTypes/models/baseInternetAccountConfig.d.ts +31 -17
- package/esm/pluggableElementTypes/models/baseInternetAccountConfig.js +23 -2
- package/esm/pluggableElementTypes/models/baseTrackConfig.d.ts +142 -65
- package/esm/pluggableElementTypes/models/baseTrackConfig.js +215 -90
- package/esm/pluggableElementTypes/models/components/SaveTrackData.d.ts +3 -8
- package/esm/pluggableElementTypes/models/components/SaveTrackData.js +111 -139
- package/esm/pluggableElementTypes/models/components/fetchTrackData.d.ts +54 -0
- package/esm/pluggableElementTypes/models/components/fetchTrackData.js +83 -0
- package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.d.ts +50 -0
- package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.js +147 -0
- package/esm/pluggableElementTypes/models/index.d.ts +5 -3
- package/esm/pluggableElementTypes/models/index.js +9 -8
- package/esm/pluggableElementTypes/models/migrateTrackConfig.d.ts +48 -0
- package/esm/pluggableElementTypes/models/migrateTrackConfig.js +114 -0
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/bed.js +75 -7
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.d.ts +10 -3
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.js +272 -100
- 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 +225 -0
- package/esm/pluginDefinitions.js +254 -0
- package/esm/rpc/BaseRpcDriver.d.ts +27 -35
- package/esm/rpc/BaseRpcDriver.js +68 -106
- package/esm/rpc/MainThreadRpcDriver.d.ts +9 -10
- package/esm/rpc/MainThreadRpcDriver.js +23 -29
- package/esm/rpc/RpcClient.d.ts +50 -0
- package/esm/rpc/RpcClient.js +189 -0
- package/esm/rpc/RpcManager.d.ts +120 -27
- package/esm/rpc/RpcManager.js +187 -50
- package/esm/rpc/RpcRegistry.d.ts +298 -0
- package/esm/rpc/RpcServer.d.ts +43 -0
- package/esm/rpc/RpcServer.js +242 -0
- package/esm/rpc/WebWorkerRpcDriver.d.ts +78 -24
- package/esm/rpc/WebWorkerRpcDriver.js +311 -30
- package/esm/rpc/byteBudget.d.ts +64 -0
- package/esm/rpc/byteBudget.js +61 -0
- package/esm/rpc/configSchema.d.ts +13 -5
- package/esm/rpc/configSchema.js +40 -16
- package/esm/rpc/coreRpcMethods.d.ts +6 -5
- package/esm/rpc/coreRpcMethods.js +13 -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/CoreGetEncodedFeature.d.ts +13 -0
- package/esm/rpc/methods/CoreGetEncodedFeature.js +32 -0
- package/esm/rpc/methods/CoreGetEncodedLayers.d.ts +16 -0
- package/esm/rpc/methods/CoreGetEncodedLayers.js +59 -0
- package/esm/rpc/methods/CoreGetExportData.d.ts +5 -18
- package/esm/rpc/methods/CoreGetExportData.js +25 -15
- package/esm/rpc/methods/CoreGetFeatureDensity.d.ts +11 -0
- package/esm/rpc/methods/CoreGetFeatureDensity.js +22 -0
- package/esm/rpc/methods/CoreGetFeatures.d.ts +6 -15
- package/esm/rpc/methods/CoreGetFeatures.js +14 -18
- 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 +16 -15
- 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/methods/CoreLoadAdapterCode.d.ts +13 -0
- package/esm/rpc/methods/CoreLoadAdapterCode.js +16 -0
- package/esm/rpc/methods/layerFeatures.d.ts +33 -0
- package/esm/rpc/methods/layerFeatures.js +29 -0
- 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 +52 -0
- package/esm/svg/SvgThemeProviders.d.ts +12 -0
- package/esm/svg/SvgThemeProviders.js +15 -0
- package/esm/svg/constants.d.ts +1 -0
- package/esm/svg/constants.js +5 -0
- package/esm/svg/exportViewSvg.d.ts +28 -0
- package/esm/svg/exportViewSvg.js +13 -0
- package/esm/svg/normalizeSvgMarkup.d.ts +7 -0
- package/esm/svg/normalizeSvgMarkup.js +99 -0
- package/esm/svg/saveSvgAsImage.d.ts +6 -0
- package/esm/svg/saveSvgAsImage.js +90 -0
- package/esm/svg/serializeSvg.d.ts +7 -0
- package/esm/svg/serializeSvg.js +11 -0
- package/esm/svg/svgId.d.ts +42 -0
- package/esm/svg/svgId.js +84 -0
- package/esm/svg/svgReady.d.ts +138 -0
- package/esm/svg/svgReady.js +165 -0
- package/esm/svg/trackNames.d.ts +29 -0
- package/esm/svg/trackNames.js +34 -0
- package/esm/svg/wrapSvgExport.d.ts +12 -0
- package/esm/svg/wrapSvgExport.js +10 -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 +56 -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/AppReadyMarker.d.ts +45 -0
- package/esm/ui/AppReadyMarker.js +89 -0
- 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 +446 -42
- 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 +6 -5
- 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 +5 -4
- package/esm/ui/ErrorMessageStackTraceDialog.d.ts +1 -1
- package/esm/ui/ErrorMessageStackTraceDialog.js +51 -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 +129 -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 +436 -64
- 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 +11 -3
- package/esm/ui/HoverMenu.js +34 -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 +26 -0
- package/esm/ui/JexlFilterDialog.js +167 -0
- package/esm/ui/JexlFilterRowEditors.d.ts +15 -0
- package/esm/ui/JexlFilterRowEditors.js +90 -0
- package/esm/ui/LabeledCheckbox.d.ts +9 -0
- package/esm/ui/LabeledCheckbox.js +7 -0
- package/esm/ui/LazyBaseTooltip.d.ts +4 -0
- package/esm/ui/LazyBaseTooltip.js +9 -0
- package/esm/ui/LegendSwatchGlyph.d.ts +7 -0
- package/esm/ui/LegendSwatchGlyph.js +30 -0
- package/esm/ui/LoadingDots.d.ts +1 -0
- package/esm/ui/LoadingDots.js +30 -0
- package/esm/ui/LoadingEllipses.d.ts +17 -1
- package/esm/ui/LoadingEllipses.js +20 -29
- package/esm/ui/LoadingOverlay.d.ts +23 -0
- package/esm/ui/LoadingOverlay.js +139 -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 +95 -5
- package/esm/ui/MenuTypes.js +16 -1
- package/esm/ui/MonospaceTextField.d.ts +10 -0
- package/esm/ui/MonospaceTextField.js +40 -0
- package/esm/ui/NumberTextField.d.ts +31 -0
- package/esm/ui/NumberTextField.js +33 -0
- package/esm/ui/PaletteContext.d.ts +90 -0
- package/esm/ui/PaletteContext.js +142 -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/SearchOption.d.ts +13 -0
- package/esm/ui/RefNameAutocomplete/SearchOption.js +45 -0
- package/esm/ui/RefNameAutocomplete/index.d.ts +21 -0
- package/esm/ui/RefNameAutocomplete/index.js +84 -0
- package/esm/ui/RefNameAutocomplete/util.d.ts +62 -0
- package/esm/ui/RefNameAutocomplete/util.js +209 -0
- package/esm/ui/ReplaceCurrentViewButton.d.ts +19 -0
- package/esm/ui/ReplaceCurrentViewButton.js +22 -0
- package/esm/ui/ResizeHandle.d.ts +15 -7
- package/esm/ui/ResizeHandle.js +73 -53
- 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/ScrollChrome.d.ts +13 -0
- package/esm/ui/ScrollChrome.js +11 -0
- package/esm/ui/ScrollEdgeShadow.d.ts +41 -0
- package/esm/ui/ScrollEdgeShadow.js +77 -0
- package/esm/ui/ScrollZoomToggle.d.ts +15 -0
- package/esm/ui/ScrollZoomToggle.js +75 -0
- package/esm/ui/SequenceAdapterInputs.d.ts +9 -0
- package/esm/ui/SequenceAdapterInputs.js +30 -0
- package/esm/ui/SessionJsonPanel.d.ts +3 -0
- package/esm/ui/SessionJsonPanel.js +14 -0
- package/esm/ui/SettingsChangesTable.d.ts +15 -0
- package/esm/ui/SettingsChangesTable.js +87 -0
- package/esm/ui/ShareLinkField.d.ts +4 -0
- package/esm/ui/ShareLinkField.js +15 -0
- package/esm/ui/SingleSlider.d.ts +8 -0
- package/esm/ui/SingleSlider.js +11 -0
- package/esm/ui/SizeSliderRow.d.ts +14 -0
- package/esm/ui/SizeSliderRow.js +48 -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 +96 -52
- 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 +18 -0
- package/esm/ui/SvgColorLegend.js +106 -0
- package/esm/ui/TagTextField.d.ts +40 -0
- package/esm/ui/TagTextField.js +32 -0
- package/esm/ui/VerticalScrollbar.d.ts +24 -0
- package/esm/ui/VerticalScrollbar.js +104 -0
- package/esm/ui/ViewLoadingScreen.d.ts +25 -0
- package/esm/ui/ViewLoadingScreen.js +52 -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/colorScale.d.ts +92 -0
- package/esm/ui/colorScale.js +72 -0
- package/esm/ui/colorSwatchStyle.d.ts +9 -0
- package/esm/ui/colorSwatchStyle.js +11 -0
- package/esm/ui/colors.d.ts +125 -8
- package/esm/ui/colors.js +364 -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/hoverBoxStyle.d.ts +23 -0
- package/esm/ui/hoverBoxStyle.js +28 -0
- package/esm/ui/index.d.ts +77 -5
- package/esm/ui/index.js +83 -20
- 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 +46 -0
- package/esm/ui/legendMenuItem.d.ts +16 -0
- package/esm/ui/legendMenuItem.js +17 -0
- package/esm/ui/legendSpec.d.ts +69 -0
- package/esm/ui/legendSpec.js +69 -0
- package/esm/ui/loadingDotKeyframes.d.ts +18 -0
- package/esm/ui/loadingDotKeyframes.js +17 -0
- package/esm/ui/makeSizeMenu.d.ts +24 -0
- package/esm/ui/makeSizeMenu.js +58 -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 +22 -0
- package/esm/ui/menuItemAdornment.js +28 -0
- package/esm/ui/menuItems.d.ts +23 -0
- package/esm/ui/menuItems.js +21 -0
- package/esm/ui/menuLabels.d.ts +41 -0
- package/esm/ui/menuLabels.js +43 -0
- package/esm/ui/multiTrackMenuItems.d.ts +25 -0
- package/esm/ui/multiTrackMenuItems.js +15 -0
- package/esm/ui/palette.d.ts +561 -0
- package/esm/ui/palette.js +785 -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/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 +268 -30
- package/esm/ui/theme.js +250 -350
- package/esm/ui/toggleMenuItems.d.ts +42 -0
- package/esm/ui/toggleMenuItems.js +61 -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/viewHeaderHeight.d.ts +1 -0
- package/esm/ui/viewHeaderHeight.js +1 -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 +207 -17
- package/esm/util/Base1DUtils.js +316 -173
- package/esm/util/Base1DViewModel.d.ts +99 -21
- package/esm/util/Base1DViewModel.js +151 -41
- 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 +83 -0
- package/esm/util/SvgCanvas.js +520 -0
- package/esm/util/TimeTraveller.d.ts +12 -0
- package/esm/util/TimeTraveller.js +130 -27
- package/esm/util/aborting.d.ts +56 -4
- package/esm/util/aborting.js +112 -25
- package/esm/util/adapterMetadata.d.ts +20 -0
- package/esm/util/adapterMetadata.js +40 -0
- package/esm/util/addAndShowTrack.d.ts +19 -0
- package/esm/util/addAndShowTrack.js +27 -0
- package/esm/util/addRelativeUris.d.ts +29 -0
- package/esm/util/addRelativeUris.js +78 -0
- package/esm/util/addTrackComponent.d.ts +72 -0
- package/esm/util/addTrackComponent.js +53 -0
- package/esm/util/addTrackFromWidget.d.ts +91 -0
- package/esm/util/addTrackFromWidget.js +91 -0
- package/esm/util/aggregateFieldName.d.ts +10 -0
- package/esm/util/aggregateFieldName.js +8 -0
- package/esm/util/analytics.d.ts +32 -3
- package/esm/util/analytics.js +135 -49
- package/esm/util/animationAllowed.d.ts +26 -0
- package/esm/util/animationAllowed.js +35 -0
- package/esm/util/applyRowResizeWheel.d.ts +15 -0
- package/esm/util/applyRowResizeWheel.js +23 -0
- package/esm/util/assemblyConfigUtils.d.ts +144 -0
- package/esm/util/assemblyConfigUtils.js +498 -0
- package/esm/util/bandHeight.d.ts +63 -0
- package/esm/util/bandHeight.js +85 -0
- package/esm/util/bandLayout.d.ts +51 -0
- package/esm/util/bandLayout.js +36 -0
- package/esm/util/bezierConnector.d.ts +15 -0
- package/esm/util/bezierConnector.js +101 -0
- package/esm/util/bgzfWorkerPool.d.ts +24 -0
- package/esm/util/bgzfWorkerPool.js +27 -0
- package/esm/util/binnedAggregate.d.ts +17 -0
- package/esm/util/binnedAggregate.js +275 -0
- package/esm/util/blockTypes.d.ts +64 -45
- package/esm/util/blockTypes.js +67 -74
- package/esm/util/bpUtils.d.ts +81 -0
- package/esm/util/bpUtils.js +103 -0
- package/esm/util/cacheBudgets.d.ts +55 -0
- package/esm/util/cacheBudgets.js +55 -0
- package/esm/util/cachedSetup.d.ts +51 -0
- package/esm/util/cachedSetup.js +87 -0
- package/esm/util/calculateDynamicBlocks.d.ts +5 -0
- package/esm/util/calculateDynamicBlocks.js +85 -82
- package/esm/util/calculateStaticBlocks.d.ts +2 -3
- package/esm/util/calculateStaticBlocks.js +48 -71
- package/esm/util/categoricalField.d.ts +56 -0
- package/esm/util/categoricalField.js +73 -0
- package/esm/util/chooseGridPitch.d.ts +9 -0
- package/esm/util/chooseGridPitch.js +31 -0
- package/esm/util/clampToContig.d.ts +43 -0
- package/esm/util/clampToContig.js +47 -0
- package/esm/util/cmpStr.d.ts +1 -0
- package/esm/util/cmpStr.js +7 -0
- package/esm/util/coarseStripHTML.js +2 -15
- package/esm/util/color/cssColorsLevel4.d.ts +1 -0
- package/esm/util/color/cssColorsLevel4.js +7 -2
- package/esm/util/color/index.d.ts +84 -3
- package/esm/util/color/index.js +197 -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 +155 -0
- package/esm/util/colorRamp.d.ts +81 -0
- package/esm/util/colorRamp.js +244 -0
- package/esm/util/colorScale.d.ts +156 -0
- package/esm/util/colorScale.js +243 -0
- package/esm/util/colorSchemes.d.ts +21 -0
- package/esm/util/colorSchemes.js +30 -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/createAbortRotation.d.ts +115 -0
- package/esm/util/createAbortRotation.js +116 -0
- package/esm/util/createSvgRasterCanvas.d.ts +17 -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/cssColorParse.d.ts +15 -0
- package/esm/util/cssColorParse.js +53 -0
- 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 +22 -0
- package/esm/util/diagonalizeRegions.js +187 -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/expandLooseSearchIndex.d.ts +19 -0
- package/esm/util/expandLooseSearchIndex.js +29 -0
- package/esm/util/featureTable.d.ts +224 -0
- package/esm/util/featureTable.js +366 -0
- package/esm/util/featureTransforms.d.ts +80 -0
- package/esm/util/featureTransforms.js +1579 -0
- package/esm/util/featureTypes.d.ts +24 -0
- package/esm/util/featureTypes.js +35 -0
- package/esm/util/fetchAndMaybeUnzip.d.ts +6 -0
- package/esm/util/fetchAndMaybeUnzip.js +71 -0
- package/esm/util/fetchContext.d.ts +81 -0
- package/esm/util/fetchContext.js +59 -0
- package/esm/util/fetchHub.d.ts +17 -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 +4 -1
- package/esm/util/fetchSeq.js +18 -6
- package/esm/util/fieldReader.d.ts +17 -0
- package/esm/util/fieldReader.js +62 -0
- 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 +26 -0
- package/esm/util/freezeDeep.js +39 -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/groupKeys.d.ts +77 -0
- package/esm/util/groupKeys.js +155 -0
- package/esm/util/highlights.d.ts +25 -0
- package/esm/util/highlights.js +87 -0
- package/esm/util/hooks.d.ts +189 -0
- package/esm/util/hooks.js +485 -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 +137 -853
- package/esm/util/indexCandidates.d.ts +20 -0
- package/esm/util/indexCandidates.js +43 -0
- package/esm/util/installClearHoverOnSurfaceMove.d.ts +40 -0
- package/esm/util/installClearHoverOnSurfaceMove.js +41 -0
- package/esm/util/installFetch.d.ts +234 -0
- package/esm/util/installFetch.js +205 -0
- package/esm/util/installInitAutorun.d.ts +63 -0
- package/esm/util/installInitAutorun.js +107 -0
- package/esm/util/installPrerequisiteFetch.d.ts +115 -0
- package/esm/util/installPrerequisiteFetch.js +111 -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 +120 -12
- package/esm/util/isDataCurrent.d.ts +9 -0
- package/esm/util/isDataCurrent.js +12 -0
- package/esm/util/isTextEntryFocused.d.ts +7 -0
- package/esm/util/isTextEntryFocused.js +16 -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 +146 -19
- package/esm/util/jexlFilterRows.d.ts +89 -0
- package/esm/util/jexlFilterRows.js +252 -0
- package/esm/util/jexlFilters.d.ts +68 -0
- package/esm/util/jexlFilters.js +61 -0
- package/esm/util/jexlStrings.d.ts +21 -1
- package/esm/util/jexlStrings.js +20 -14
- package/esm/util/layouts/GranularRectLayout.d.ts +20 -25
- package/esm/util/layouts/GranularRectLayout.js +116 -356
- package/esm/util/layouts/index.d.ts +1 -7
- package/esm/util/layouts/index.js +2 -6
- package/esm/util/layouts/intervalUtils.d.ts +12 -1
- package/esm/util/layouts/intervalUtils.js +13 -31
- package/esm/util/layouts/placeRect.d.ts +50 -0
- package/esm/util/layouts/placeRect.js +97 -0
- package/esm/util/lazyAfterAttach.d.ts +13 -0
- package/esm/util/lazyAfterAttach.js +31 -0
- package/esm/util/lazyWithPreload.d.ts +19 -0
- package/esm/util/lazyWithPreload.js +27 -0
- package/esm/util/leadingEdgeAutorun.d.ts +40 -0
- package/esm/util/leadingEdgeAutorun.js +51 -0
- package/esm/util/legendCandidates.d.ts +72 -0
- package/esm/util/legendCandidates.js +138 -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/markEncoding.d.ts +150 -0
- package/esm/util/markEncoding.js +845 -0
- package/esm/util/markEncodingTypes.d.ts +588 -0
- package/esm/util/markEncodingTypes.js +8 -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 +3 -11
- package/esm/util/mst-reflection.js +3 -52
- package/esm/util/mstUtils.d.ts +97 -0
- package/esm/util/mstUtils.js +137 -0
- package/esm/util/nanoid.d.ts +0 -4
- package/esm/util/nanoid.js +10 -20
- package/esm/util/numericUtils.d.ts +27 -0
- package/esm/util/numericUtils.js +143 -0
- package/esm/util/numericValue.d.ts +14 -0
- package/esm/util/numericValue.js +34 -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/openFeatureWidget.d.ts +38 -0
- package/esm/util/openFeatureWidget.js +64 -0
- package/esm/util/openViews.d.ts +17 -0
- package/esm/util/openViews.js +22 -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 +44 -2
- package/esm/util/parseLineByLine.js +150 -15
- package/esm/util/parseMotifList.d.ts +17 -0
- package/esm/util/parseMotifList.js +69 -0
- package/esm/util/pluginStore.d.ts +111 -0
- package/esm/util/pluginStore.js +254 -0
- package/esm/util/pointerPresence.d.ts +5 -0
- package/esm/util/pointerPresence.js +21 -0
- package/esm/util/preloadComponent.d.ts +5 -0
- package/esm/util/preloadComponent.js +11 -0
- package/esm/util/progress.d.ts +459 -0
- package/esm/util/progress.js +821 -0
- package/esm/util/quantileExtent.d.ts +49 -0
- package/esm/util/quantileExtent.js +162 -0
- package/esm/util/range.d.ts +46 -1
- package/esm/util/range.js +68 -2
- package/esm/util/renameRegions.d.ts +41 -0
- package/esm/util/renameRegions.js +143 -0
- package/esm/util/renderToStaticMarkup.d.ts +2 -0
- package/esm/util/renderToStaticMarkup.js +60 -0
- package/esm/util/reorder.d.ts +35 -0
- package/esm/util/reorder.js +83 -0
- package/esm/util/resolveRowHeight.d.ts +27 -0
- package/esm/util/resolveRowHeight.js +30 -0
- package/esm/util/revlist.d.ts +13 -0
- package/esm/util/revlist.js +14 -0
- package/esm/util/rowStackGeometry.d.ts +66 -0
- package/esm/util/rowStackGeometry.js +70 -0
- package/esm/util/rpc.d.ts +16 -1
- package/esm/util/rpc.js +12 -1
- package/esm/util/rxjs.d.ts +30 -2
- package/esm/util/rxjs.js +85 -10
- package/esm/util/sameStrings.d.ts +16 -0
- package/esm/util/sameStrings.js +20 -0
- package/esm/util/samplesTsv.d.ts +49 -0
- package/esm/util/samplesTsv.js +86 -0
- package/esm/util/scheduleDetachedDestroy.d.ts +18 -0
- package/esm/util/scheduleDetachedDestroy.js +24 -0
- package/esm/util/scrollLatch.d.ts +5 -0
- package/esm/util/scrollLatch.js +67 -0
- package/esm/util/selectEncodedFeature.d.ts +16 -0
- package/esm/util/selectEncodedFeature.js +34 -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 +40 -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/shapeNameList.d.ts +2 -0
- package/esm/util/shapeNameList.js +6 -0
- package/esm/util/shapeNames.d.ts +7 -0
- package/esm/util/shapeNames.js +11 -0
- package/esm/util/simpleFeature.d.ts +111 -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/starFusion.d.ts +26 -0
- package/esm/util/starFusion.js +37 -0
- package/esm/util/stats.d.ts +25 -2
- package/esm/util/stats.js +39 -8
- package/esm/util/stepTables.d.ts +82 -0
- package/esm/util/stepTables.js +243 -0
- package/esm/util/stringUtils.d.ts +5 -0
- package/esm/util/stringUtils.js +34 -0
- package/esm/util/svAlt.d.ts +145 -0
- package/esm/util/svAlt.js +364 -0
- package/esm/util/svgColorProps.d.ts +18 -0
- package/esm/util/svgColorProps.js +55 -0
- package/esm/util/systemColorScheme.d.ts +12 -0
- package/esm/util/systemColorScheme.js +27 -0
- package/esm/util/tabix.d.ts +125 -0
- package/esm/util/tabix.js +148 -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/thresholdScale.d.ts +91 -0
- package/esm/util/thresholdScale.js +166 -0
- package/esm/util/tickLabels.d.ts +36 -0
- package/esm/util/tickLabels.js +45 -0
- package/esm/util/timeGate.d.ts +25 -0
- package/esm/util/timeGate.js +78 -0
- package/esm/util/trackConfigDelta.d.ts +84 -0
- package/esm/util/trackConfigDelta.js +206 -0
- package/esm/util/tracks.d.ts +431 -30
- package/esm/util/tracks.js +952 -185
- package/esm/util/translateTranscript.d.ts +44 -0
- package/esm/util/translateTranscript.js +102 -0
- 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 +73 -0
- package/esm/util/types/data.js +41 -0
- package/esm/util/types/index.d.ts +459 -121
- package/esm/util/types/index.js +96 -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 +74 -47
- package/esm/util/types/mst.js +31 -22
- package/esm/util/types/predicate.d.ts +9 -0
- package/esm/util/types/predicate.js +1 -0
- package/esm/util/types/renameIds.d.ts +1 -0
- package/esm/util/types/renameIds.js +29 -0
- package/esm/util/types/renderingServices.d.ts +16 -0
- package/esm/util/types/renderingServices.js +1 -0
- package/esm/util/types/services.d.ts +55 -0
- package/esm/util/types/services.js +10 -0
- package/esm/util/types/util.d.ts +8 -2
- package/esm/util/unknownSnapshotKeys.d.ts +51 -0
- package/esm/util/unknownSnapshotKeys.js +82 -0
- package/esm/util/unzip.d.ts +1 -0
- package/esm/util/unzip.js +6 -0
- package/esm/util/useEventCallback.d.ts +1 -0
- package/esm/util/useEventCallback.js +16 -0
- package/esm/util/useFeatureSequence.d.ts +13 -7
- package/esm/util/useFeatureSequence.js +55 -77
- package/esm/util/useFetch.d.ts +55 -0
- package/esm/util/useFetch.js +197 -0
- package/esm/util/useFetchPlugins.d.ts +16 -0
- package/esm/util/useFetchPlugins.js +18 -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 +9 -0
- package/esm/util/usePanelVirtualScroll.js +15 -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 +9 -0
- package/esm/util/useRowVirtualScroll.js +22 -0
- package/esm/util/useVirtualScrollWheel.d.ts +23 -0
- package/esm/util/useVirtualScrollWheel.js +74 -0
- package/esm/util/viewHighlights.d.ts +3 -0
- package/esm/util/viewHighlights.js +5 -0
- package/esm/util/viewStatus.d.ts +90 -0
- package/esm/util/viewStatus.js +54 -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 +65 -0
- package/esm/util/wheelZoom.js +297 -0
- package/esm/util/whenViewSettled.d.ts +74 -0
- package/esm/util/whenViewSettled.js +77 -0
- package/esm/util/withFeatureDetails.d.ts +34 -0
- package/esm/util/withFeatureDetails.js +59 -0
- package/esm/util/withLaunchInput.d.ts +174 -0
- package/esm/util/withLaunchInput.js +274 -0
- package/package.json +290 -820
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Position.d.ts +0 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Position.js +0 -14
- package/esm/BaseFeatureWidget/BaseFeatureDetail/types.d.ts +0 -7
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/DLGAP3.d.ts +0 -80
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/DLGAP3.js +0 -583
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/NCDN.d.ts +0 -141
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/NCDN.js +0 -1116
- package/esm/ReExports/BaseFeatureDetails.d.ts +0 -1
- package/esm/ReExports/BaseFeatureDetails.js +0 -9
- package/esm/ReExports/DataGrid.d.ts +0 -1
- package/esm/ReExports/DataGrid.js +0 -1
- package/esm/ReExports/index.d.ts +0 -1
- package/esm/ReExports/index.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/stopToken.d.ts +0 -19
- package/esm/util/stopToken.js +0 -90
- 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/{BaseFeatureWidget/BaseFeatureDetail/types.js → data_adapters/BaseAdapter/CytobandAdapter.js} +0 -0
- /package/esm/data_adapters/BaseAdapter/{BaseOptions.js → zoomRange.js} +0 -0
- /package/esm/{util/layouts/BaseLayout.js → rpc/RpcRegistry.js} +0 -0
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module
|
|
3
|
+
* The config **readers**: `readConfObject` off a live MST config node, and
|
|
4
|
+
* `readConfigValue` off a plain snapshot object in a worker or a renderer. Both
|
|
5
|
+
* exist to evaluate a slot's `jexl:...` callback on read; they differ only in
|
|
6
|
+
* where the jexl instance comes from, the node's env or an explicit argument.
|
|
7
|
+
* A `featureField` slot's `jexl:` expression is the display's to evaluate per
|
|
8
|
+
* feature, so `readConfObject` hands it over as written.
|
|
9
|
+
*/
|
|
10
|
+
import { getEnv, getSnapshot, getType, isStateTreeNode, } from '@jbrowse/mobx-state-tree';
|
|
11
|
+
import { getConfigurationSchemaMetadata } from './schemaRegistry.js';
|
|
12
|
+
import { evaluateJexl, isCallbackValue } from './slotValueUtils.js';
|
|
13
|
+
// Evaluate a slot's `jexl:...` callback string against the realm's single jexl
|
|
14
|
+
// instance (carrying plugin-registered functions), read from the config node's
|
|
15
|
+
// env. readConfObject only ever operates on live MST configs — nested sub-config
|
|
16
|
+
// reads stay MST (env resolves to the root), and frozen track configs hydrate to
|
|
17
|
+
// MST before any callback is read — so the env instance is always present here.
|
|
18
|
+
function evalConfigCallback(expr, args, confObject) {
|
|
19
|
+
if (!isStateTreeNode(confObject)) {
|
|
20
|
+
// A jexl slot needs the realm's jexl instance, which is read from a live
|
|
21
|
+
// config node's env. A plain config snapshot (e.g. an un-hydrated
|
|
22
|
+
// session.tracks entry) carries no env — read it through a hydrated model,
|
|
23
|
+
// or use readConfigValue(config, key, feature, jexl) which takes jexl
|
|
24
|
+
// explicitly.
|
|
25
|
+
throw new Error(`cannot evaluate jexl config callback ${JSON.stringify(expr)}: config is a plain snapshot, not a live model (no env to resolve the jexl instance)`);
|
|
26
|
+
}
|
|
27
|
+
const jexl = getEnv(confObject)
|
|
28
|
+
.pluginManager?.jexl;
|
|
29
|
+
if (!jexl) {
|
|
30
|
+
throw new Error(`cannot evaluate jexl config callback ${JSON.stringify(expr)}: no pluginManager jexl instance in config env`);
|
|
31
|
+
}
|
|
32
|
+
return evaluateJexl(expr, args, jexl);
|
|
33
|
+
}
|
|
34
|
+
function isFeatureField(confObject, slotName) {
|
|
35
|
+
return (isStateTreeNode(confObject) &&
|
|
36
|
+
!!getConfigurationSchemaMetadata(getType(confObject))?.featureFields.has(slotName));
|
|
37
|
+
}
|
|
38
|
+
// Read and resolve a single slot: raw value, jexl callback evaluation, then a
|
|
39
|
+
// referentially-stable snapshot for sub-config nodes.
|
|
40
|
+
function readSlot(confObject, slotName, args) {
|
|
41
|
+
// strict undefined check, not truthiness — a slot value can legitimately be
|
|
42
|
+
// falsy (0, '', false, null)
|
|
43
|
+
const value = confObject[slotName];
|
|
44
|
+
if (value === undefined) {
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
const val = isCallbackValue(value) && !isFeatureField(confObject, slotName)
|
|
48
|
+
? evalConfigCallback(value, args, confObject)
|
|
49
|
+
: value;
|
|
50
|
+
// Fast path for primitives (most common case)
|
|
51
|
+
if (val === null || typeof val !== 'object') {
|
|
52
|
+
return val;
|
|
53
|
+
}
|
|
54
|
+
// Return the live, referentially-stable snapshot (frozen in dev) rather than
|
|
55
|
+
// a per-read clone: stable identity lets downstream computeds memoize, and
|
|
56
|
+
// the old structuredClone was both a hot-path allocation and a source of
|
|
57
|
+
// spurious recomputation. Treat as read-only.
|
|
58
|
+
return isStateTreeNode(val) ? getSnapshot(val) : val;
|
|
59
|
+
}
|
|
60
|
+
// loose implementation signature: the body returns values that are `any` by
|
|
61
|
+
// nature (raw slot values, snapshots); the typed overloads above are what
|
|
62
|
+
// callers see. No looser overload admits the model: one that did was a
|
|
63
|
+
// catch-all a slot-name typo fell through to, compiling clean as `any`.
|
|
64
|
+
export function readConfObject(confObject, slotPath, args = {}) {
|
|
65
|
+
// the single-slot read, first and allocation-free: it is the shape of nearly
|
|
66
|
+
// every one of the ~1300 call sites, so it doesn't get normalized into a
|
|
67
|
+
// one-element array on the way past
|
|
68
|
+
if (typeof slotPath === 'string') {
|
|
69
|
+
return readSlot(confObject, slotPath, args);
|
|
70
|
+
}
|
|
71
|
+
if (slotPath !== undefined && !Array.isArray(slotPath)) {
|
|
72
|
+
throw new TypeError('slotPath must be a string or array');
|
|
73
|
+
}
|
|
74
|
+
// No path, or an empty one — which means the same thing, and used not to: `[]`
|
|
75
|
+
// is truthy, so it reached the walk below and read `confObject[undefined]`.
|
|
76
|
+
//
|
|
77
|
+
// Returns the whole config as a plain object: the live, referentially-stable
|
|
78
|
+
// snapshot (frozen in dev), not a fresh clone — treat as read-only.
|
|
79
|
+
if (!slotPath?.length) {
|
|
80
|
+
return isStateTreeNode(confObject) ? getSnapshot(confObject) : confObject;
|
|
81
|
+
}
|
|
82
|
+
// every segment but the last names a sub-config, and only the last is a slot
|
|
83
|
+
// read — which is where jexl evaluation and snapshotting happen, and nowhere
|
|
84
|
+
// else. Iterative rather than a self-call per segment, which re-entered the
|
|
85
|
+
// whole argument-shape preamble above at each level.
|
|
86
|
+
let conf = confObject;
|
|
87
|
+
for (let i = 0; i < slotPath.length - 1; i++) {
|
|
88
|
+
const subConf = conf[slotPath[i]];
|
|
89
|
+
if (subConf === undefined) {
|
|
90
|
+
return undefined;
|
|
91
|
+
}
|
|
92
|
+
conf = subConf;
|
|
93
|
+
}
|
|
94
|
+
return readSlot(conf, slotPath[slotPath.length - 1], args);
|
|
95
|
+
}
|
|
96
|
+
// The plain-object half of the slot walk, for readConfigValue. The MST half is
|
|
97
|
+
// readSlot/rawSlotValue above. A plain object has no map entries and no
|
|
98
|
+
// sub-config nodes to snapshot, so it is just a path reduce.
|
|
99
|
+
function resolveConfigValue(config, key) {
|
|
100
|
+
if (Array.isArray(key)) {
|
|
101
|
+
let val = config;
|
|
102
|
+
for (const k of key) {
|
|
103
|
+
val = val?.[k];
|
|
104
|
+
}
|
|
105
|
+
return val;
|
|
106
|
+
}
|
|
107
|
+
return config[key];
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Read a value from a plain config snapshot object. Automatically evaluates
|
|
111
|
+
* "jexl:..." strings per-feature. Works without MST — intended for use in
|
|
112
|
+
* rendering code (GPU, Canvas2D, workers). Pass the realm's `pluginManager.jexl`
|
|
113
|
+
* so plugin-registered functions (e.g. in a custom `mouseover` slot) resolve.
|
|
114
|
+
*/
|
|
115
|
+
export function readConfigValue(config, key, feature, jexl) {
|
|
116
|
+
const raw = resolveConfigValue(config, key);
|
|
117
|
+
return (isCallbackValue(raw) ? evaluateJexl(raw, { feature }, jexl) : raw);
|
|
118
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { ConfigurationSchemaDefinition } from './configurationSchema.ts';
|
|
2
|
+
import type { IAnyType } from '@jbrowse/mobx-state-tree';
|
|
3
|
+
/**
|
|
4
|
+
* A combination one config object cannot mean, declared once: when every slot
|
|
5
|
+
* named in `when` holds one of the listed values, each dotted path in `slots`
|
|
6
|
+
* has to name a value — a non-empty string, or a sub-schema a string lifts
|
|
7
|
+
* into. `message` says why, and `id` is the stable name a report carries.
|
|
8
|
+
* `requirementProblems` reads it for a display's notice, and the generated
|
|
9
|
+
* JSON Schema carries it as `if`/`then` with the message, which the CLI
|
|
10
|
+
* validator and an editor report.
|
|
11
|
+
*
|
|
12
|
+
* `ConfigurationSchema()` types `when`, its values and `slots` off the
|
|
13
|
+
* definition and throws at construction for what the types cannot reach: a
|
|
14
|
+
* misspelt `when` key or value would never fire, and a misspelt path would
|
|
15
|
+
* require a key `closed` then refuses.
|
|
16
|
+
*/
|
|
17
|
+
export interface ConfigurationSchemaRequirement<WHEN extends Partial<Record<string, string[]>> = Partial<Record<string, string[]>>, PATH extends string = string> {
|
|
18
|
+
id: string;
|
|
19
|
+
when: WHEN;
|
|
20
|
+
slots: PATH[];
|
|
21
|
+
message: string;
|
|
22
|
+
}
|
|
23
|
+
/** A requirement a snapshot does not meet: the slot path left empty, and why. */
|
|
24
|
+
export interface RequirementProblem {
|
|
25
|
+
id: string;
|
|
26
|
+
slot: string;
|
|
27
|
+
message: string;
|
|
28
|
+
}
|
|
29
|
+
export declare function checkRequirements(modelName: string, definition: ConfigurationSchemaDefinition, requires: ConfigurationSchemaRequirement[]): void;
|
|
30
|
+
/**
|
|
31
|
+
* #api core/configuration
|
|
32
|
+
* The `requires` entries of a configuration schema that `snapshot` does not
|
|
33
|
+
* meet, as a config file or `getSnapshot` spells it: a slot left off reads as
|
|
34
|
+
* its default, so a `when` value that is the default fires for an absent slot,
|
|
35
|
+
* which is what the generated JSON Schema's `if` does.
|
|
36
|
+
*/
|
|
37
|
+
export declare function requirementProblems(type: IAnyType, snapshot: Record<string, unknown>): RequirementProblem[];
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { getConfigurationSchemaMetadata } from './schemaRegistry.js';
|
|
2
|
+
import { isBareConfigurationSchemaType, isSlotDefinitionEntry, shorthandTargets, } from './schemaTypes.js';
|
|
3
|
+
function memberOf(definition, name) {
|
|
4
|
+
return Object.hasOwn(definition, name) ? definition[name] : undefined;
|
|
5
|
+
}
|
|
6
|
+
function subSchemaOf(entry) {
|
|
7
|
+
return isBareConfigurationSchemaType(entry)
|
|
8
|
+
? getConfigurationSchemaMetadata(entry)
|
|
9
|
+
: undefined;
|
|
10
|
+
}
|
|
11
|
+
function requiredPathProblem(modelName, definition, path) {
|
|
12
|
+
const [head = '', ...rest] = path;
|
|
13
|
+
const entry = memberOf(definition, head);
|
|
14
|
+
const sub = subSchemaOf(entry);
|
|
15
|
+
return entry === undefined
|
|
16
|
+
? `${modelName} declares no "${head}"`
|
|
17
|
+
: rest.length > 0
|
|
18
|
+
? sub
|
|
19
|
+
? requiredPathProblem(sub.name, sub.definition, rest)
|
|
20
|
+
: `"${head}" is not a single sub-schema, so no path runs through it`
|
|
21
|
+
: isSlotDefinitionEntry(entry)
|
|
22
|
+
? entry.defaultValue === undefined ||
|
|
23
|
+
typeof entry.defaultValue === 'string'
|
|
24
|
+
? undefined
|
|
25
|
+
: `"${head}" holds no string, and a requirement is met by naming one`
|
|
26
|
+
: sub?.options.shorthand !== undefined
|
|
27
|
+
? undefined
|
|
28
|
+
: `"${head}" is neither a slot nor a sub-schema a string lifts into`;
|
|
29
|
+
}
|
|
30
|
+
export function checkRequirements(modelName, definition, requires) {
|
|
31
|
+
for (const { when, slots } of requires) {
|
|
32
|
+
for (const [slot, values = []] of Object.entries(when)) {
|
|
33
|
+
const entry = memberOf(definition, slot);
|
|
34
|
+
if (!isSlotDefinitionEntry(entry)) {
|
|
35
|
+
throw new Error(`${modelName} requires something when "${slot}" holds a value, and declares no such slot`);
|
|
36
|
+
}
|
|
37
|
+
const refused = values.filter(value => entry.model?.is(value) === false);
|
|
38
|
+
if (refused.length > 0) {
|
|
39
|
+
throw new Error(`${modelName} requires something when "${slot}" holds ${refused.join(', ')}, which the slot does not take`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
for (const path of slots) {
|
|
43
|
+
const problem = requiredPathProblem(modelName, definition, path.split('.'));
|
|
44
|
+
if (problem) {
|
|
45
|
+
throw new Error(`${modelName} requires "${path}", and ${problem}`);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
function namesAValue(definition, snapshot, path) {
|
|
51
|
+
const [head = '', ...rest] = path;
|
|
52
|
+
const value = typeof snapshot === 'object' && snapshot !== null
|
|
53
|
+
? snapshot[head]
|
|
54
|
+
: undefined;
|
|
55
|
+
const sub = subSchemaOf(memberOf(definition, head));
|
|
56
|
+
const named = sub && shorthandTargets(sub).string;
|
|
57
|
+
return rest.length > 0
|
|
58
|
+
? sub !== undefined && namesAValue(sub.definition, value, rest)
|
|
59
|
+
: typeof value === 'string'
|
|
60
|
+
? value !== ''
|
|
61
|
+
: sub !== undefined &&
|
|
62
|
+
named !== undefined &&
|
|
63
|
+
namesAValue(sub.definition, value, [named]);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* #api core/configuration
|
|
67
|
+
* The `requires` entries of a configuration schema that `snapshot` does not
|
|
68
|
+
* meet, as a config file or `getSnapshot` spells it: a slot left off reads as
|
|
69
|
+
* its default, so a `when` value that is the default fires for an absent slot,
|
|
70
|
+
* which is what the generated JSON Schema's `if` does.
|
|
71
|
+
*/
|
|
72
|
+
export function requirementProblems(type, snapshot) {
|
|
73
|
+
const schema = getConfigurationSchemaMetadata(type);
|
|
74
|
+
if (!schema) {
|
|
75
|
+
return [];
|
|
76
|
+
}
|
|
77
|
+
const { definition } = schema;
|
|
78
|
+
return (schema.options.requires ?? [])
|
|
79
|
+
.filter(({ when }) => Object.entries(when).every(([slot, values]) => {
|
|
80
|
+
const entry = memberOf(definition, slot);
|
|
81
|
+
const held = snapshot[slot] ??
|
|
82
|
+
(isSlotDefinitionEntry(entry) ? entry.defaultValue : undefined);
|
|
83
|
+
return typeof held === 'string' && values?.includes(held);
|
|
84
|
+
}))
|
|
85
|
+
.flatMap(({ id, slots, message }) => slots
|
|
86
|
+
.filter(path => !namesAValue(definition, snapshot, path.split('.')))
|
|
87
|
+
.map(slot => ({ id, slot, message })));
|
|
88
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { ConfigurationSchemaDefinition, MergedConfigurationSchemaOptions } from './configurationSchema.ts';
|
|
2
|
+
import type { AnyConfigurationModel, AnyConfigurationSchemaType } from './types.ts';
|
|
3
|
+
import type { IAnyType } from '@jbrowse/mobx-state-tree';
|
|
4
|
+
export interface ConfigurationSchemaMetadata {
|
|
5
|
+
/** the name `ConfigurationSchema` was given, e.g. `FeatureColor` */
|
|
6
|
+
name: string;
|
|
7
|
+
/** the raw slot/sub-schema/constant table, also carrying per-slot editor metadata */
|
|
8
|
+
definition: ConfigurationSchemaDefinition;
|
|
9
|
+
/**
|
|
10
|
+
* construction options (identifier kind, baseConfiguration, etc.) as stored,
|
|
11
|
+
* i.e. with any `baseConfiguration`'s hooks already composed in
|
|
12
|
+
*/
|
|
13
|
+
options: MergedConfigurationSchemaOptions<any, any>;
|
|
14
|
+
/** the frozen-family slots, the only members a snapshot's `null` is stored in */
|
|
15
|
+
storesNull: ReadonlySet<string>;
|
|
16
|
+
/** the `featureField` slots, which the reader hands over as written */
|
|
17
|
+
featureFields: ReadonlySet<string>;
|
|
18
|
+
/** the slots that refuse a `jexl:` string: every one but a callback and a featureField */
|
|
19
|
+
takesNoCallback: ReadonlyMap<string, string>;
|
|
20
|
+
}
|
|
21
|
+
export declare function registerConfigurationSchema(type: IAnyType, metadata: ConfigurationSchemaMetadata): void;
|
|
22
|
+
/**
|
|
23
|
+
* A schema's metadata, by the schema type or a live node of it. Undefined for
|
|
24
|
+
* anything `ConfigurationSchema` did not build — a pluggable union, an array
|
|
25
|
+
* of schemas.
|
|
26
|
+
*/
|
|
27
|
+
export declare function getConfigurationSchemaMetadata(nodeOrType: AnyConfigurationModel | IAnyType): ConfigurationSchemaMetadata | undefined;
|
|
28
|
+
export declare function isRegisteredConfigurationSchema(type: IAnyType): boolean;
|
|
29
|
+
export interface ConfigurationSchemaUnionMetadata {
|
|
30
|
+
/** the name `ConfigurationSchemaUnion` was given, e.g. `MarkTransform` */
|
|
31
|
+
name: string;
|
|
32
|
+
/** each member schema, keyed by the `type` it answers to */
|
|
33
|
+
members: Record<string, AnyConfigurationSchemaType>;
|
|
34
|
+
}
|
|
35
|
+
export declare function registerConfigurationSchemaUnion(type: IAnyType, metadata: ConfigurationSchemaUnionMetadata): void;
|
|
36
|
+
/**
|
|
37
|
+
* The name and members of a union `ConfigurationSchemaUnion` built, or
|
|
38
|
+
* undefined for any other type — a pluggable element union included.
|
|
39
|
+
*/
|
|
40
|
+
export declare function getConfigurationSchemaUnion(type: IAnyType): ConfigurationSchemaUnionMetadata | undefined;
|
|
41
|
+
/**
|
|
42
|
+
* The slot/sub-schema/constant table for a config (includes slots merged in from
|
|
43
|
+
* `baseConfiguration` at schema construction). Undefined when the argument isn't
|
|
44
|
+
* a registered configuration schema. The single accessor for "what are this
|
|
45
|
+
* config's slots?" — shared by the slot facade and `fullConfSnapshot`.
|
|
46
|
+
*
|
|
47
|
+
* Takes a live node *or* the schema type itself: a caller enumerating
|
|
48
|
+
* registered element types (`ConfigSlotDefaults.test.ts`) holds only the type,
|
|
49
|
+
* and for a track schema it cannot get a node — `explicitIdentifier` makes
|
|
50
|
+
* `trackId` a required MST identifier, so there is nothing to `create({})`.
|
|
51
|
+
*/
|
|
52
|
+
export declare function getConfigurationSchemaDefinition(nodeOrType: AnyConfigurationModel | IAnyType): ConfigurationSchemaDefinition | undefined;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { getType, isType, unwrapType } from '@jbrowse/mobx-state-tree';
|
|
2
|
+
// Per-schema metadata keyed by the model type `ConfigurationSchema` builds. A
|
|
3
|
+
// lookup arrives by any handle on it — the stripDefault wrapper the factory
|
|
4
|
+
// returns and a sub-schema property holds, an `optional` or `snapshotProcessor`
|
|
5
|
+
// around that, a resolved `types.late`, or `getType(node)` — and `unwrapType`
|
|
6
|
+
// takes each to the model. The type stays a plain MST type, "is this a config
|
|
7
|
+
// schema" is registry membership, and the map is weak, so a discarded schema
|
|
8
|
+
// type is collected normally.
|
|
9
|
+
const schemaRegistry = new WeakMap();
|
|
10
|
+
export function registerConfigurationSchema(type, metadata) {
|
|
11
|
+
schemaRegistry.set(type, metadata);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* A schema's metadata, by the schema type or a live node of it. Undefined for
|
|
15
|
+
* anything `ConfigurationSchema` did not build — a pluggable union, an array
|
|
16
|
+
* of schemas.
|
|
17
|
+
*/
|
|
18
|
+
export function getConfigurationSchemaMetadata(nodeOrType) {
|
|
19
|
+
return schemaRegistry.get(unwrapType(isType(nodeOrType) ? nodeOrType : getType(nodeOrType)));
|
|
20
|
+
}
|
|
21
|
+
export function isRegisteredConfigurationSchema(type) {
|
|
22
|
+
return schemaRegistry.has(unwrapType(type));
|
|
23
|
+
}
|
|
24
|
+
const unionRegistry = new WeakMap();
|
|
25
|
+
export function registerConfigurationSchemaUnion(type, metadata) {
|
|
26
|
+
unionRegistry.set(type, metadata);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* The name and members of a union `ConfigurationSchemaUnion` built, or
|
|
30
|
+
* undefined for any other type — a pluggable element union included.
|
|
31
|
+
*/
|
|
32
|
+
export function getConfigurationSchemaUnion(type) {
|
|
33
|
+
return unionRegistry.get(type);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* The slot/sub-schema/constant table for a config (includes slots merged in from
|
|
37
|
+
* `baseConfiguration` at schema construction). Undefined when the argument isn't
|
|
38
|
+
* a registered configuration schema. The single accessor for "what are this
|
|
39
|
+
* config's slots?" — shared by the slot facade and `fullConfSnapshot`.
|
|
40
|
+
*
|
|
41
|
+
* Takes a live node *or* the schema type itself: a caller enumerating
|
|
42
|
+
* registered element types (`ConfigSlotDefaults.test.ts`) holds only the type,
|
|
43
|
+
* and for a track schema it cannot get a node — `explicitIdentifier` makes
|
|
44
|
+
* `trackId` a required MST identifier, so there is nothing to `create({})`.
|
|
45
|
+
*/
|
|
46
|
+
export function getConfigurationSchemaDefinition(nodeOrType) {
|
|
47
|
+
return getConfigurationSchemaMetadata(nodeOrType)?.definition;
|
|
48
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { ConfigSlotDefinition } from './configurationSlot.ts';
|
|
2
|
+
import type { ConfigurationSchemaMetadata } from './schemaRegistry.ts';
|
|
3
|
+
import type { AnyConfigurationModel, AnyConfigurationSchemaType } from './types.ts';
|
|
4
|
+
/**
|
|
5
|
+
* The names an explicitly typed union's members answer to, each the name its
|
|
6
|
+
* schema was given, read through whatever wraps the union — a pluggable
|
|
7
|
+
* union's `snapshotProcessor`, a `maybe`, a `types.late`. A member that is
|
|
8
|
+
* itself a union contributes its own; a member with no type of its own throws.
|
|
9
|
+
*/
|
|
10
|
+
export declare function getTypeNamesFromExplicitlyTypedUnion(maybeUnionType: unknown): string[];
|
|
11
|
+
/** The type `ConfigurationSchema()` built, by any handle on it (`schemaRegistry.ts`). */
|
|
12
|
+
export declare function isBareConfigurationSchemaType(thing: unknown): thing is AnyConfigurationSchemaType;
|
|
13
|
+
/** A schema, or a union, array or map of them. */
|
|
14
|
+
export declare function isConfigurationSchemaType(thing: unknown): thing is AnyConfigurationSchemaType;
|
|
15
|
+
/**
|
|
16
|
+
* A configuration schema definition maps each key to exactly one of three kinds
|
|
17
|
+
* of entry:
|
|
18
|
+
*
|
|
19
|
+
* - constant → a bare string/number (becomes a volatile instance constant)
|
|
20
|
+
* - slot → a ConfigSlotDefinition object (has a `type` field, not a type)
|
|
21
|
+
* - sub-schema → an MST configuration-schema type, see isConfigurationSchemaType
|
|
22
|
+
*/
|
|
23
|
+
export declare function isConstantEntry(def: unknown): def is string | number;
|
|
24
|
+
export declare function isSlotDefinitionEntry(def: unknown): def is ConfigSlotDefinition;
|
|
25
|
+
export declare function isConfigurationModel(thing: unknown): thing is AnyConfigurationModel;
|
|
26
|
+
/** A bare value a schema's `shorthand` lifts. */
|
|
27
|
+
export type ShorthandForm = 'string' | 'number';
|
|
28
|
+
/**
|
|
29
|
+
* The slot a bare value of each form lifts into, off a `shorthand` option:
|
|
30
|
+
* each slot it names takes the form its own type holds, a number where it
|
|
31
|
+
* holds one (`rules: [7.3]`) and a string otherwise (`color: 'red'`), so a
|
|
32
|
+
* width naming `value` and `field` reads `size: 3` as the one and
|
|
33
|
+
* `size: 'score'` as the other.
|
|
34
|
+
*/
|
|
35
|
+
export declare function shorthandTargetsOf(definition: Record<string, unknown>, shorthand: string | readonly string[] | undefined): Partial<Record<ShorthandForm, string>>;
|
|
36
|
+
/** The shorthand form of a bare value, or undefined for any other value. */
|
|
37
|
+
export declare function bareFormOf(value: unknown): ShorthandForm | undefined;
|
|
38
|
+
/** {@link shorthandTargetsOf} a registered schema. */
|
|
39
|
+
export declare function shorthandTargets({ definition, options, }: ConfigurationSchemaMetadata): Partial<Record<ShorthandForm, string>>;
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module
|
|
3
|
+
* Recognizing configuration schemas and classifying the entries in one. These
|
|
4
|
+
* predicates are the single source of truth for both questions — shared by
|
|
5
|
+
* schema construction, every reader, and the config editor — so "is this a
|
|
6
|
+
* config schema?" and "what kind of entry is this?" have one answer everywhere.
|
|
7
|
+
*/
|
|
8
|
+
import { asArrayType, asMapType, getType, getUnionSubtypes, isStateTreeNode, isType, isUnionType, } from '@jbrowse/mobx-state-tree';
|
|
9
|
+
import { getConfigurationSchemaMetadata, isRegisteredConfigurationSchema, } from './schemaRegistry.js';
|
|
10
|
+
/**
|
|
11
|
+
* The names an explicitly typed union's members answer to, each the name its
|
|
12
|
+
* schema was given, read through whatever wraps the union — a pluggable
|
|
13
|
+
* union's `snapshotProcessor`, a `maybe`, a `types.late`. A member that is
|
|
14
|
+
* itself a union contributes its own; a member with no type of its own throws.
|
|
15
|
+
*/
|
|
16
|
+
export function getTypeNamesFromExplicitlyTypedUnion(maybeUnionType) {
|
|
17
|
+
if (!isType(maybeUnionType) || !isUnionType(maybeUnionType)) {
|
|
18
|
+
return [];
|
|
19
|
+
}
|
|
20
|
+
return getUnionSubtypes(maybeUnionType).flatMap(member => {
|
|
21
|
+
const meta = getConfigurationSchemaMetadata(member);
|
|
22
|
+
if (meta?.options.explicitlyTyped) {
|
|
23
|
+
return [meta.name];
|
|
24
|
+
}
|
|
25
|
+
if (isUnionType(member)) {
|
|
26
|
+
return getTypeNamesFromExplicitlyTypedUnion(member);
|
|
27
|
+
}
|
|
28
|
+
// the branch a `maybe`-like union adds so the slot can be absent
|
|
29
|
+
if (member.name === 'undefined') {
|
|
30
|
+
return [];
|
|
31
|
+
}
|
|
32
|
+
throw new Error(`invalid config schema type ${member.name}`);
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
/** The type `ConfigurationSchema()` built, by any handle on it (`schemaRegistry.ts`). */
|
|
36
|
+
export function isBareConfigurationSchemaType(thing) {
|
|
37
|
+
return isType(thing) && isRegisteredConfigurationSchema(thing);
|
|
38
|
+
}
|
|
39
|
+
/** A schema, or a union, array or map of them. */
|
|
40
|
+
export function isConfigurationSchemaType(thing) {
|
|
41
|
+
if (!isType(thing)) {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
if (isBareConfigurationSchemaType(thing)) {
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
if (isUnionType(thing)) {
|
|
48
|
+
return getUnionSubtypes(thing).every(t => isConfigurationSchemaType(t) || t.name === 'undefined');
|
|
49
|
+
}
|
|
50
|
+
const collection = asArrayType(thing) ?? asMapType(thing);
|
|
51
|
+
return !!collection && isConfigurationSchemaType(collection.getChildType());
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* A configuration schema definition maps each key to exactly one of three kinds
|
|
55
|
+
* of entry:
|
|
56
|
+
*
|
|
57
|
+
* - constant → a bare string/number (becomes a volatile instance constant)
|
|
58
|
+
* - slot → a ConfigSlotDefinition object (has a `type` field, not a type)
|
|
59
|
+
* - sub-schema → an MST configuration-schema type, see isConfigurationSchemaType
|
|
60
|
+
*/
|
|
61
|
+
export function isConstantEntry(def) {
|
|
62
|
+
return typeof def === 'string' || typeof def === 'number';
|
|
63
|
+
}
|
|
64
|
+
export function isSlotDefinitionEntry(def) {
|
|
65
|
+
return (typeof def === 'object' && def !== null && !isType(def) && 'type' in def);
|
|
66
|
+
}
|
|
67
|
+
export function isConfigurationModel(thing) {
|
|
68
|
+
return isStateTreeNode(thing) && isConfigurationSchemaType(getType(thing));
|
|
69
|
+
}
|
|
70
|
+
const NUMBER_SLOT_TYPES = new Set(['number', 'integer', 'maybeNumber']);
|
|
71
|
+
/**
|
|
72
|
+
* The slot a bare value of each form lifts into, off a `shorthand` option:
|
|
73
|
+
* each slot it names takes the form its own type holds, a number where it
|
|
74
|
+
* holds one (`rules: [7.3]`) and a string otherwise (`color: 'red'`), so a
|
|
75
|
+
* width naming `value` and `field` reads `size: 3` as the one and
|
|
76
|
+
* `size: 'score'` as the other.
|
|
77
|
+
*/
|
|
78
|
+
export function shorthandTargetsOf(definition, shorthand) {
|
|
79
|
+
const slots = shorthand === undefined
|
|
80
|
+
? []
|
|
81
|
+
: typeof shorthand === 'string'
|
|
82
|
+
? [shorthand]
|
|
83
|
+
: shorthand;
|
|
84
|
+
return Object.fromEntries(slots.map(slot => {
|
|
85
|
+
const entry = definition[slot];
|
|
86
|
+
return [
|
|
87
|
+
isSlotDefinitionEntry(entry) && NUMBER_SLOT_TYPES.has(entry.type)
|
|
88
|
+
? 'number'
|
|
89
|
+
: 'string',
|
|
90
|
+
slot,
|
|
91
|
+
];
|
|
92
|
+
}));
|
|
93
|
+
}
|
|
94
|
+
/** The shorthand form of a bare value, or undefined for any other value. */
|
|
95
|
+
export function bareFormOf(value) {
|
|
96
|
+
return typeof value === 'string'
|
|
97
|
+
? 'string'
|
|
98
|
+
: typeof value === 'number'
|
|
99
|
+
? 'number'
|
|
100
|
+
: undefined;
|
|
101
|
+
}
|
|
102
|
+
/** {@link shorthandTargetsOf} a registered schema. */
|
|
103
|
+
export function shorthandTargets({ definition, options, }) {
|
|
104
|
+
return shorthandTargetsOf(definition, options.shorthand);
|
|
105
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type PluginManager from '../PluginManager.ts';
|
|
2
|
+
import type { ConfigSlotDefinition, ConfigSlotType } from './configurationSlot.ts';
|
|
3
|
+
import type { AnyConfigurationModel } from './types.ts';
|
|
4
|
+
import type { IAnyType } from '@jbrowse/mobx-state-tree';
|
|
5
|
+
/**
|
|
6
|
+
* Whether `slotName` on a config node is a slot (vs a nested sub-schema or a
|
|
7
|
+
* string/number constant).
|
|
8
|
+
*/
|
|
9
|
+
export declare function isConfigurationSlot(node: AnyConfigurationModel, slotName: string): boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Why a config of type `schema` cannot hold `value` at `key`, or undefined
|
|
12
|
+
* when it can: the schema's own lift first, then the slot's type, or a
|
|
13
|
+
* sub-schema's lift and checks. Also undefined for a key the schema does not
|
|
14
|
+
* declare, which is a question for its caller.
|
|
15
|
+
*/
|
|
16
|
+
export declare function slotValueRefusal(schema: IAnyType, key: string, value: unknown): string | undefined;
|
|
17
|
+
/**
|
|
18
|
+
* The duck-typed object the config editor's leaf components consume. They never
|
|
19
|
+
* touch MST internals — only this shape (see ColorEditor.test.tsx, which passes
|
|
20
|
+
* a plain object). It is built from `(parentNode, slotName)` + the schema
|
|
21
|
+
* metadata table. Collection editors edit immutably via `set` (build a new
|
|
22
|
+
* array/map and assign it).
|
|
23
|
+
*/
|
|
24
|
+
export interface SlotFacade {
|
|
25
|
+
name: string;
|
|
26
|
+
description: string;
|
|
27
|
+
type: ConfigSlotType;
|
|
28
|
+
contextVariable: string[];
|
|
29
|
+
defaultValue: unknown;
|
|
30
|
+
/**
|
|
31
|
+
* enum choices, present only for the enum slot types; a `stringEnumArray`'s
|
|
32
|
+
* are the choices of each entry
|
|
33
|
+
*/
|
|
34
|
+
choices?: string[];
|
|
35
|
+
pluginManager: PluginManager;
|
|
36
|
+
readonly value: unknown;
|
|
37
|
+
/**
|
|
38
|
+
* Whether the slot holds a non-default value. Each slot is `stripDefault`-
|
|
39
|
+
* wrapped, so an at-default slot is omitted from the config snapshot — the
|
|
40
|
+
* same signal the persistence/delta layer uses (robust for map/array slots
|
|
41
|
+
* where a live-value `deepEqual` against the plain default would misfire).
|
|
42
|
+
*/
|
|
43
|
+
readonly modified: boolean;
|
|
44
|
+
set: (val: unknown) => void;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* The vocabulary an enum slot offers, or undefined for any other slot. Reads the
|
|
48
|
+
* author's own `types.enumeration` off `model` — the enum types are the only
|
|
49
|
+
* ones the editor takes choices from, so a slot typed anything else renders as
|
|
50
|
+
* free text however valid its `model` is.
|
|
51
|
+
*
|
|
52
|
+
* Shared by the config editor's facade below and by
|
|
53
|
+
* `ConfigSlotDefaults.test.ts`, which snapshots every schema's vocabularies:
|
|
54
|
+
* dropping a member is a silent compatibility break, since a saved session
|
|
55
|
+
* holding it fails MST validation and the track then fails to hydrate.
|
|
56
|
+
*/
|
|
57
|
+
export declare function slotChoices(def: ConfigSlotDefinition): string[] | undefined;
|
|
58
|
+
/**
|
|
59
|
+
* Look up a slot's metadata (type/description/defaultValue/contextVariable/
|
|
60
|
+
* model) from the schema-type table stashed by ConfigurationSchema. Includes
|
|
61
|
+
* slots inherited via `baseConfiguration`, which are merged into the table at
|
|
62
|
+
* schema construction.
|
|
63
|
+
*/
|
|
64
|
+
export declare function getSlotDefinition(node: AnyConfigurationModel, slotName: string): ConfigSlotDefinition;
|
|
65
|
+
export declare function makeSlotFacade(node: AnyConfigurationModel, slotName: string): SlotFacade;
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { asModelType, getSnapshot } from '@jbrowse/mobx-state-tree';
|
|
2
|
+
import { getEnumerationValues } from '../util/mst-reflection.js';
|
|
3
|
+
import { getEnv } from '../util/mstUtils.js';
|
|
4
|
+
import { slotWriteRefusal } from './configurationSlot.js';
|
|
5
|
+
import { setConf } from './getConf.js';
|
|
6
|
+
import { getConfigurationSchemaDefinition, getConfigurationSchemaMetadata, } from './schemaRegistry.js';
|
|
7
|
+
import { isConfigurationSchemaType, isSlotDefinitionEntry, } from './schemaTypes.js';
|
|
8
|
+
import { preProcessSnapshotWith } from './snapshotPreprocess.js';
|
|
9
|
+
/**
|
|
10
|
+
* The slot's metadata entry, or undefined when `slotName` names a nested
|
|
11
|
+
* sub-schema or a string/number constant rather than a slot.
|
|
12
|
+
*/
|
|
13
|
+
function slotDefinition(node, slotName) {
|
|
14
|
+
const def = getConfigurationSchemaDefinition(node)?.[slotName];
|
|
15
|
+
return isSlotDefinitionEntry(def) ? def : undefined;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Whether `slotName` on a config node is a slot (vs a nested sub-schema or a
|
|
19
|
+
* string/number constant).
|
|
20
|
+
*/
|
|
21
|
+
export function isConfigurationSlot(node, slotName) {
|
|
22
|
+
return !!slotDefinition(node, slotName);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Why a config of type `schema` cannot hold `value` at `key`, or undefined
|
|
26
|
+
* when it can: the schema's own lift first, then the slot's type, or a
|
|
27
|
+
* sub-schema's lift and checks. Also undefined for a key the schema does not
|
|
28
|
+
* declare, which is a question for its caller.
|
|
29
|
+
*/
|
|
30
|
+
export function slotValueRefusal(schema, key, value) {
|
|
31
|
+
const meta = getConfigurationSchemaMetadata(schema);
|
|
32
|
+
const entry = meta?.definition[key];
|
|
33
|
+
if (!meta || entry === undefined) {
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
const subSchema = isConfigurationSchemaType(entry)
|
|
37
|
+
? entry
|
|
38
|
+
: undefined;
|
|
39
|
+
// the slot's own property type, built once with the schema: what `setSlot`
|
|
40
|
+
// checks a write against
|
|
41
|
+
const slotType = asModelType(schema)?.properties[key];
|
|
42
|
+
try {
|
|
43
|
+
const lifted = preProcessSnapshotWith(meta, { [key]: value })[key];
|
|
44
|
+
if (subSchema) {
|
|
45
|
+
subSchema.create(lifted);
|
|
46
|
+
}
|
|
47
|
+
else if (isSlotDefinitionEntry(entry) && !slotType?.is(lifted)) {
|
|
48
|
+
return slotWriteRefusal(`${meta.name}.${key}`, entry.type, value);
|
|
49
|
+
}
|
|
50
|
+
return undefined;
|
|
51
|
+
}
|
|
52
|
+
catch (e) {
|
|
53
|
+
return e instanceof Error ? e.message : String(e);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* The vocabulary an enum slot offers, or undefined for any other slot. Reads the
|
|
58
|
+
* author's own `types.enumeration` off `model` — the enum types are the only
|
|
59
|
+
* ones the editor takes choices from, so a slot typed anything else renders as
|
|
60
|
+
* free text however valid its `model` is.
|
|
61
|
+
*
|
|
62
|
+
* Shared by the config editor's facade below and by
|
|
63
|
+
* `ConfigSlotDefaults.test.ts`, which snapshots every schema's vocabularies:
|
|
64
|
+
* dropping a member is a silent compatibility break, since a saved session
|
|
65
|
+
* holding it fails MST validation and the track then fails to hydrate.
|
|
66
|
+
*/
|
|
67
|
+
export function slotChoices(def) {
|
|
68
|
+
const { type, model } = def;
|
|
69
|
+
return (type === 'stringEnum' ||
|
|
70
|
+
type === 'maybeStringEnum' ||
|
|
71
|
+
type === 'stringEnumArray') &&
|
|
72
|
+
model
|
|
73
|
+
? getEnumerationValues(model)
|
|
74
|
+
: undefined;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Look up a slot's metadata (type/description/defaultValue/contextVariable/
|
|
78
|
+
* model) from the schema-type table stashed by ConfigurationSchema. Includes
|
|
79
|
+
* slots inherited via `baseConfiguration`, which are merged into the table at
|
|
80
|
+
* schema construction.
|
|
81
|
+
*/
|
|
82
|
+
export function getSlotDefinition(node, slotName) {
|
|
83
|
+
const def = slotDefinition(node, slotName);
|
|
84
|
+
if (!def) {
|
|
85
|
+
throw new Error(`no slot metadata for ${slotName}`);
|
|
86
|
+
}
|
|
87
|
+
return def;
|
|
88
|
+
}
|
|
89
|
+
export function makeSlotFacade(node, slotName) {
|
|
90
|
+
const definition = getSlotDefinition(node, slotName);
|
|
91
|
+
const { type, description = '', defaultValue, contextVariable = [], } = definition;
|
|
92
|
+
return {
|
|
93
|
+
name: slotName,
|
|
94
|
+
description,
|
|
95
|
+
type,
|
|
96
|
+
contextVariable,
|
|
97
|
+
defaultValue,
|
|
98
|
+
choices: slotChoices(definition),
|
|
99
|
+
pluginManager: getEnv(node).pluginManager,
|
|
100
|
+
get value() {
|
|
101
|
+
return node[slotName];
|
|
102
|
+
},
|
|
103
|
+
get modified() {
|
|
104
|
+
return slotName in getSnapshot(node);
|
|
105
|
+
},
|
|
106
|
+
set(val) {
|
|
107
|
+
setConf(node, slotName, val);
|
|
108
|
+
},
|
|
109
|
+
};
|
|
110
|
+
}
|